專利名稱:一種處理單發(fā)射流水線數(shù)據(jù)相關(guān)的動態(tài)調(diào)度控制器和方法
技術(shù)領(lǐng)域:
本發(fā)明屬微電子技術(shù)領(lǐng)域,具體涉及一種流水線動態(tài)調(diào)度控制器及動態(tài)調(diào)度方法,尤其涉及一種處理單發(fā)射流水線數(shù)據(jù)相關(guān)的動態(tài)調(diào)度控制器和動態(tài)調(diào)度方法。
背景技術(shù):
在現(xiàn)代的微處理器設(shè)計中通常采用流水線技術(shù)以提高處理器的速度。但是,流水線技術(shù)的采用也會帶來數(shù)據(jù)相關(guān)的問題。隨著當前對微處理器速度要求越來越高,設(shè)計中流水線深度的不斷增加,數(shù)據(jù)相關(guān)所造成的性能損失越來越嚴重。為了解決這一問題,許多多發(fā)射、多級功能部件的復雜處理器采用Tomasulo算法來減少數(shù)據(jù)相關(guān),提升其性能,而附加硬件相比于性能的提高則顯得相對次要。對于為嵌入式系統(tǒng)所專門設(shè)計的處理器,基于面積和性能的折中考慮,這類處理器大多采用較簡單的單發(fā)射、單級功能部件的流水線。對于這種類型的流水線,若采用Tomasulo算法,所帶來的性能提升非常有限,并且由于算法的復雜性,附加面積很大,不符合嵌入式處理器對于面積的要求。
目前嵌入式處理器大多采用停流水線的方法來解決數(shù)據(jù)相關(guān)的問題,典型的停流水線方法如圖1所示。
典型的停流水線的流程為,在譯碼階段譯碼出被譯碼指令i2所需要的硬件資源,檢測在流水線上是否有指令使用該硬件資源,判斷流水線上正在被使用得硬件資源與即將用到的硬件資源是否有沖突。若有沖突,判斷為數(shù)據(jù)相關(guān)。由于i2所需要的數(shù)據(jù)與之前的指令有沖突,因此將i2停在譯碼階段,i2之前的指令繼續(xù)執(zhí)行,等到i2之前的指令執(zhí)行完之后,i2才執(zhí)行。
在這種典型的停流水線流程中,可以看到,由于i2與之前的指令發(fā)生了數(shù)據(jù)相關(guān),因此i2不能繼續(xù)執(zhí)行,需要在譯碼階段停頓,只有等到前面的指令執(zhí)行完之后,i2才能繼續(xù)執(zhí)行。這種解決數(shù)據(jù)相關(guān)的方式導致處理器不能全速運行,頻繁出現(xiàn)等待過程,嚴重影響了處理器的性能。
由于對現(xiàn)代的嵌入式處理器的速度要求越來越高,這種停流水線的方法已經(jīng)不能適用于嵌入式系統(tǒng)的應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種處理單發(fā)射流水線數(shù)據(jù)相關(guān)的動態(tài)調(diào)度控制器,以及一種為解決單發(fā)射流水線數(shù)據(jù)相關(guān)的動態(tài)調(diào)度算法,以提高流水線的利用率,減少流水線停頓的次數(shù),提高處理器的性能,最大化的減少由附加硬件造成的面積損失。
本發(fā)明提供的動態(tài)調(diào)度控制器,結(jié)構(gòu)如圖2所示。包括一個譯碼控制單元201,用于對指令進行譯碼,并完成動態(tài)調(diào)度的控制。
一個指令緩沖器202,用于存放發(fā)生數(shù)據(jù)相關(guān)受到阻塞的指令。
一個數(shù)據(jù)相關(guān)檢測單元203,用于檢測未發(fā)射指令,流水線上指令,以及指令緩沖器內(nèi)指令之間的數(shù)據(jù)相關(guān)。
一個指令發(fā)射的切換控制單元204,用于選擇指令發(fā)射的來源。
多個與各控制模塊和寄存器相連的控制信號線,配合傳輸數(shù)據(jù)對各設(shè)備通信模塊進行控制。
上述數(shù)據(jù)相關(guān)檢測單元,對流水線上標志位、緩沖器中的標志位以及譯碼器的譯碼結(jié)果進行比較,分析出未發(fā)射指令、流水線上指令、以及緩沖器內(nèi)指令之間的數(shù)據(jù)相關(guān),判斷的結(jié)果作為動態(tài)調(diào)度控制的控制條件。
上述指令緩沖器中的標志位用于判斷緩沖器是否為空。
上述指令緩沖器,在數(shù)據(jù)檢測單元檢測到數(shù)據(jù)相關(guān)時,用于存放經(jīng)譯碼器譯碼之后的指令控制及運算信息,指令數(shù)為一條。
上述動態(tài)調(diào)度控制由狀態(tài)機實現(xiàn),根據(jù)數(shù)據(jù)相關(guān)檢測結(jié)果以控制譯碼后指令的發(fā)射情況。
上述的指令發(fā)射情況為譯碼后的指令可以選擇發(fā)射到流水線,指令緩沖器或者不發(fā)射三種請況。
一種處理單發(fā)射流水線數(shù)據(jù)相關(guān)的動態(tài)調(diào)度算法,以譯碼控制單元為核心,在發(fā)生數(shù)據(jù)相關(guān)時進行指令發(fā)射的動態(tài)調(diào)度,該算法的調(diào)度步驟如下指令進入譯碼控制單元201,檢測指令緩沖器202中是否為空;1、若發(fā)現(xiàn)指令緩沖器為空,則繼續(xù)檢測該指令是否與正在流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān);1.1若該指令與流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān),則將該指令譯碼后的控制信號放入指令寄存器;1.2若該指令與流水線上運行的指令沒有發(fā)生數(shù)據(jù)相關(guān),則將該指令發(fā)射,進入下一級流水線;2、若指令緩沖器不為空,則判斷指令緩沖器中的指令是否還有數(shù)據(jù)相關(guān)的問題;2.1若指令緩沖器中的指令仍然有數(shù)據(jù)相關(guān)的問題,則檢測譯碼控制單元中的指令是否與正在流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān);
2.2若指令緩沖器中的指令已經(jīng)沒有數(shù)據(jù)相關(guān)的問題,則將指令緩沖器中的指令發(fā)射,進入下一級流水線;3、若譯碼控制單元中的指令與正在流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān),則插入NOP,停流水線。
4、若譯碼控制單元中的指令與正在流水線上運行的指令沒有數(shù)據(jù)相關(guān),則將該指令發(fā)射,進入下一級流水線;本發(fā)明的獨到優(yōu)勢在于對于單發(fā)射流水線,若發(fā)生數(shù)據(jù)相關(guān),利用動態(tài)調(diào)度算法,將發(fā)生數(shù)據(jù)相關(guān)的指令存放在數(shù)據(jù)緩沖器中,同時使后續(xù)指令繼續(xù)執(zhí)行,以減少流水線停頓次數(shù),提高處理器性能,由于緩沖器中只存儲一條指令,附加硬件面積小,最大程度的減少了由于附加硬件而造成的面積損失。
圖1為傳統(tǒng)的流水線停頓示意圖。
圖2為本文的動態(tài)調(diào)度控制器的結(jié)構(gòu)示意圖。
圖3為為解決單發(fā)射,單級功能部件流水線數(shù)據(jù)相關(guān)的動態(tài)調(diào)度算法示意圖。
圖中標號如下101為預(yù)取指階段,102為取指階段,103為譯碼階段,104為地址發(fā)生階段,105為數(shù)據(jù)讀取階段,106為執(zhí)行階段,107為數(shù)據(jù)寫回階段,201為譯碼控制單元,202為指令緩沖器,203為數(shù)據(jù)相關(guān)檢測單元,204為切換控制單元,205為地址發(fā)生器。
具體實施例方式
以下參照附圖詳細描述本發(fā)明的具體實施方式
。
圖2為本發(fā)明的動態(tài)調(diào)度控制器的結(jié)構(gòu)示意圖。
在本發(fā)明中,動態(tài)調(diào)度控制器包含一個譯碼控制單元201,用于對指令進行譯碼,該單元獲得寄存器使用情況信息后,發(fā)出寄存器使用標志位,動態(tài)調(diào)度控制利用狀態(tài)機以數(shù)據(jù)相關(guān)檢測單元的檢測結(jié)果為條件,利用狀態(tài)的跳轉(zhuǎn)來完成指令的發(fā)射和指令的存貯。
在本發(fā)明中,動態(tài)調(diào)度控制器包含一個指令緩沖器202,用于存放發(fā)生數(shù)據(jù)相關(guān)的指令。
在本發(fā)明中,動態(tài)調(diào)度控制器包含一個數(shù)據(jù)相關(guān)檢測單元203,用于檢測未發(fā)射指令、流水線上指令,以及指令緩沖器內(nèi)指令之間的數(shù)據(jù)相關(guān)。
在本發(fā)明中,動態(tài)調(diào)度控制器包含一個指令發(fā)射的切換控制單元204,用于選擇指令發(fā)射的來源。
在本發(fā)明中,動態(tài)調(diào)度控制器包含多個與各控制模塊和寄存器相連的控制信號線,配合傳輸數(shù)據(jù)對各設(shè)備通信模塊進行控制。
在本發(fā)明中,動態(tài)調(diào)度控制器包含一個數(shù)據(jù)緩沖器,用于數(shù)據(jù)檢測單元檢測到數(shù)據(jù)相關(guān)時,存放經(jīng)譯碼器譯碼之后的指令控制及運算信息,并且該數(shù)據(jù)緩沖期僅存放一條指令的信息。
圖4為為解決單發(fā)射流水線數(shù)據(jù)相關(guān)的動態(tài)調(diào)度算法,其工作的步驟如下401指令進入譯碼控制單元,檢測指令緩沖器中是否為空;402若發(fā)現(xiàn)指令緩沖器為空則繼續(xù)檢測該指令是否與正在流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān)。
403若該指令與流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān),則將該指令譯碼后的控制信號放入指令寄存器。
404若該指令與流水線上運行的指令沒有發(fā)生數(shù)據(jù)相關(guān),則將該指令發(fā)射,進入下一級流水線。
405若指令緩沖器不為空,則判斷指令緩沖器中的指令是否還有數(shù)據(jù)相關(guān)的問題。
406若指令緩沖器中的指令仍然有數(shù)據(jù)相關(guān)的問題,則檢測譯碼控制單元中的指令是否與正在流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān)。
407若指令緩沖器中的指令已經(jīng)沒有數(shù)據(jù)相關(guān)的問題,則將指令緩沖器中的指令發(fā)射,進入下一級流水線。
408若譯碼控制單元中的指令與正在流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān),則插入NOP,停流水線。
409若譯碼控制單元中的指令與正在流水線上運行的指令沒有數(shù)據(jù)相關(guān),則將該指令發(fā)射,進入下一級流水線。
權(quán)利要求
1.一種處理單發(fā)射流水線數(shù)據(jù)相關(guān)的動態(tài)調(diào)度控制器,其特征在于,包括一個譯碼控制單元,用于對指令進行譯碼,并完成動態(tài)調(diào)度的控制;一個指令緩沖器,用于存放發(fā)生數(shù)據(jù)相關(guān)受到阻塞的指令;一個數(shù)據(jù)相關(guān)檢測單元,用于檢測未發(fā)射指令,流水線上指令,以及緩沖器內(nèi)指令之間的數(shù)據(jù)相關(guān);一個指令發(fā)射的切換控制單元,用于選擇指令發(fā)射的來源;多個與各控制模塊和寄存器相連的控制信號線,配合傳輸數(shù)據(jù)對各設(shè)備通信模塊進行控制。
2.根據(jù)權(quán)利要求1所述的動態(tài)調(diào)度控制器,其特征在于所述的數(shù)據(jù)相關(guān)檢測單元對流水線上標志位、緩沖器中的標志位以及譯碼器的譯碼結(jié)果進行比較,分析出未發(fā)射指令,流水線上指令,以及緩沖器內(nèi)指令之間的數(shù)據(jù)相關(guān),判斷的結(jié)果作為動態(tài)調(diào)度控制的控制條件。
3.根據(jù)權(quán)利要求2所述的動態(tài)調(diào)度控制器,其特征在于所述的緩沖器中的標志位用于判斷緩沖器是否為空。
4.根據(jù)權(quán)利要求1所述的動態(tài)調(diào)度控制器,其特征在于所述的數(shù)據(jù)緩沖器在數(shù)據(jù)檢測單元檢測到數(shù)據(jù)相關(guān)時,存放經(jīng)譯碼器譯碼之后的指令控制及運算信息,指令數(shù)為一條。
5.根據(jù)權(quán)利要求1所述的動態(tài)調(diào)度控制器,其特征在于動態(tài)調(diào)度由狀態(tài)機實現(xiàn),根據(jù)數(shù)據(jù)相關(guān)檢測結(jié)果以控制譯碼后指令的發(fā)射情況。
6.根據(jù)權(quán)利要求5所述的動態(tài)調(diào)度控制器,其特征在于所述指令發(fā)射情況為選擇發(fā)射到流水線或指令緩沖器,或者不發(fā)射三種請況。
7.一種處理單發(fā)射流水線數(shù)據(jù)相關(guān)的動態(tài)調(diào)度方法,以譯碼控制單元為核心,在發(fā)生數(shù)據(jù)相關(guān)時進行指令發(fā)射的動態(tài)調(diào)度,該算法的調(diào)度步驟如下(1)指令進入譯碼控制單元,檢測指令緩沖器中是否為空;(2)若發(fā)現(xiàn)指令緩沖器為空則繼續(xù)檢測該指令是否與正在流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān);(3)若該指令與流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān),則將該指令譯碼后的控制信號放入指令寄存器;(4)若該指令與流水線上運行的指令沒有發(fā)生數(shù)據(jù)相關(guān),則將該指令發(fā)射,進入下一級流水線;(5)若指令緩沖器不為空,則判斷指令緩沖器中的指令是否還有數(shù)據(jù)相關(guān)的問題;(6)若指令緩沖器中的指令仍然有數(shù)據(jù)相關(guān)的問題,則檢測譯碼控制單元中的指令是否與正在流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān);(7)若指令緩沖器中的指令已經(jīng)沒有數(shù)據(jù)相關(guān)的問題,則將指令緩沖器中的指令發(fā)射,進入下一級流水線;(8)若譯碼控制單元中的指令與正在流水線上運行的指令發(fā)生數(shù)據(jù)相關(guān),則插入NOP,停流水線;(9)若譯碼控制單元中的指令與正在流水線上運行的指令沒有數(shù)據(jù)相關(guān),則將該指令發(fā)射,進入下一級流水線。
全文摘要
本發(fā)明屬于微電子技術(shù)領(lǐng)域,具體公開了一種處理單發(fā)射流水線數(shù)據(jù)相關(guān)的動態(tài)調(diào)度控制器及動態(tài)調(diào)度方法。通過利用單指令緩沖器存放由于數(shù)據(jù)相關(guān)而受阻塞的指令使后續(xù)指令繼續(xù)執(zhí)行的方法,減少了由于數(shù)據(jù)相關(guān)造成的流水線停頓。動態(tài)調(diào)度算法在硬件上由一個譯碼控制單元實現(xiàn),數(shù)據(jù)相關(guān)檢測單元檢測所譯碼指令、流水線上指令以及單指令緩沖器內(nèi)指令是否發(fā)生數(shù)據(jù)相關(guān),根據(jù)檢測結(jié)果,由譯碼控制單元利用狀態(tài)機發(fā)出控制信號,控制譯碼器中指令發(fā)射、進入指令緩沖器及插入空閑狀態(tài)等操作。該動態(tài)調(diào)度算法可以有效的提高流水線的利用率,減少流水線的停頓,提高處理器的性能。
文檔編號G06F9/38GK101030134SQ200710038630
公開日2007年9月5日 申請日期2007年3月29日 優(yōu)先權(quán)日2007年3月29日
發(fā)明者陸佳晶, 周曉方, 王俊宇 申請人:復旦大學