專利名稱:非完全鎖步的vliw處理器流水線控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種微處理器設(shè)計中流水線的控制方法,尤其是一種超長指令字VLIW(Very Long Instruction Word)處理器流水線的控制方法。
背景技術(shù):
現(xiàn)代微處理器通常采用流水線結(jié)構(gòu)來提高性能,無論是指令的獲取還是指令的譯碼執(zhí)行,都采用充分流水的部件來提升處理器性能。當深度流水的處理器發(fā)生分支指令轉(zhuǎn)移時,流水線中未完成的指令序列可能會作廢,使得分支轉(zhuǎn)移的代價非常大。分支延遲槽方法是減少分支轉(zhuǎn)移代價的常用方法之一,尤其在VLIW處理器中應(yīng)用非常普遍。
VLIW處理器要求指令間時序完全同步,即要維系指令序列的執(zhí)行順序和相對時間間隔不變。VLIW處理器采用分支延時槽方法時,分支指令后面填充M條不相關(guān)的VLIW指令,M為分支延時槽數(shù),其數(shù)值等于取指流水線長度。不管分支是否發(fā)生轉(zhuǎn)移,分支延遲槽中的M條VLIW指令都要執(zhí)行。如果發(fā)生轉(zhuǎn)移,分支指令之后的M條VLIW指令執(zhí)行之后,正好分支目標地址指向的新的指令序列流到執(zhí)行流水線,不需要作廢流水線中的指令。VLIW同步語義要求分支延遲槽中的指令必須全部執(zhí)行,并且要維持分支延時槽內(nèi)的指令序列和執(zhí)行節(jié)拍不能改變,隨后根據(jù)分支是否轉(zhuǎn)移而執(zhí)行正確的指令序列,這是VLIW的同步語義的要求。 傳統(tǒng)的VLIW處理器采用分支延遲槽方法時通常采用完全鎖步的方式來保證同步語義。鎖步方式的問題在于一個部件的暫停會導(dǎo)致所有部件的暫停,嚴重地影響了處理器的執(zhí)行效率。當前處理器內(nèi)核的執(zhí)行速度遠快于存儲器訪問速度,且兩者之間的差距還有越來越大的趨勢,從而存儲器阻塞對流水線性能的影響也在加大。完全鎖步控制使存儲器阻塞代價非常大。 圖1是采用完全鎖步方式控制的VLIW處理器結(jié)構(gòu),取指流水線訪問指令Cache取得超長指令字(每個時鐘周期取得的VLIW指令包稱為一個取指包),經(jīng)過指令派發(fā)部件將VLIW指令中各個指令派發(fā)到執(zhí)行流水線中的執(zhí)行部件(每個時鐘周期同時派發(fā)的VLIW指令稱為一個執(zhí)行包)。執(zhí)行流水線在執(zhí)行數(shù)據(jù)訪存指令時會訪問數(shù)據(jù)Cache,對數(shù)據(jù)Cache進行讀或?qū)懖僮鳌o論數(shù)據(jù)Cache訪問缺失還是指令Cache訪問缺失,其阻塞信號都會送往流水線控制器,流水線控制器發(fā)出暫停信號,暫停取指流水線和執(zhí)行流水線,即用停頓整條流水線的方法來保持同步語義,這種完全鎖步控制的方式這使得處理器的執(zhí)行效率大大降低。 采用非完全鎖步方式的VLIW流水線可以有效提升處理器的執(zhí)行效率,但必須解決維持指令同步語義的問題,至今還沒有公開技術(shù)資料涉及這方面的內(nèi)容。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種非完全鎖步的VLIW處理器流水線控制方法,采用本發(fā)明的VLIW處理器可以在非完全鎖步控制方式下保持指令同步語義,減少流水線暫停次數(shù),提高處理器執(zhí)行效率。
本發(fā)明的技術(shù)方案是 第一步,在傳統(tǒng)的VLIW處理器基礎(chǔ)上增加一個先進先出FIFO (Fist InFirst Out) 結(jié)構(gòu)的指令緩沖器,并將流水線控制器改為非鎖步流水線控制器。指令緩沖器與取指流水 線、指令派發(fā)部件、非鎖步流水線控制器相連。指令緩沖器的容量和VLIW處理器結(jié)構(gòu)相關(guān), 要求大于2N,N為VLIW處理器中VLIW指令包長度。取指流水線從指令Cache中取出VLIW 指令包,將VLIW指令包送到指令緩沖器。指令派發(fā)部件從指令緩沖器取出VLIW指令包,并 將指令包中的指令以執(zhí)行包為單位發(fā)送到執(zhí)行流水線。指令緩沖器中沒有指令包時向非鎖 步流水線控制器發(fā)Empty信號;指令緩沖器被指令包填滿沒有空閑存儲空間時向非鎖步流 水線控制器發(fā)Full信號。 采用FIFO結(jié)構(gòu)的指令緩沖器時,順序執(zhí)行的指令容易保持同步語義,只要不間斷 地按順序派發(fā)指令即可。但遇到分支指令時,分支轉(zhuǎn)移發(fā)生后如果取指流水線和執(zhí)行流水 線速度不匹配以及指令緩沖器中有分支延遲槽之后多余的指令,就會破壞VLIW同步語義, 必須有相應(yīng)的控制機制來保持同步語義。本發(fā)明的非鎖步流水線控制器可以保持VLIW同 步語義。 非鎖步流水線控制器由常規(guī)控制器和分支控制器組成。 常規(guī)控制器與取指流水線、執(zhí)行流水線、指令Cache、數(shù)據(jù)Cache、指令緩沖器以及 分支控制器相連。常規(guī)控制器收到指令Cache阻塞信號時,向取指流水線和分支控制器發(fā) 取指流水線暫停信號;收到數(shù)據(jù)Cache阻塞信號時,向執(zhí)行流水線和分支控制器發(fā)執(zhí)行流 水線暫停信號;收到指令緩沖器的Full信號時,向取指流水線和分支控制器發(fā)取指流水線 暫停信號;收到指令緩沖器的Empty信號時,向執(zhí)行流水線和分支控制器發(fā)執(zhí)行流水線暫 停信號。 分支控制器在分支轉(zhuǎn)移條件下和常規(guī)控制器一起控制流水線并維持VLIW同步語 義。分支控制器與取指流水線、執(zhí)行流水線、指令緩沖器、指令譯碼器以及常規(guī)控制器相連。 它從指令譯碼器接收分支轉(zhuǎn)移信號,從常規(guī)控制器接收取指流水線暫停信號和執(zhí)行流水線 暫停信號,根據(jù)分支轉(zhuǎn)移信號、取指流水線暫停信號和執(zhí)行流水線暫停信號向取指流水線 發(fā)取指流水線分支暫停信號,向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號,并向指令緩沖器 發(fā)Clear信號清除指令緩沖器中的指令。 分支控制器由取指計數(shù)器、派發(fā)計數(shù)器和同步仲裁器組成。取指計數(shù)器和派發(fā)計 數(shù)器都是標準的減一計數(shù)器。取指計數(shù)器與同步仲裁器、常規(guī)控制器和取指流水線相連,它 被同步仲裁器預(yù)置一個初始值,數(shù)值為M,即分支延遲槽數(shù)。取指計數(shù)器接收同步仲裁器發(fā) 來的計數(shù)開始信號后啟動計數(shù),它用取指流水線的時鐘信號作為計數(shù)時鐘。當未收到常規(guī) 控制器發(fā)來的取指流水線暫停信號時每個時鐘周期做減一計數(shù),取指計數(shù)器計數(shù)至零時停 止計數(shù),向同步仲裁器發(fā)取指計數(shù)結(jié)束信號。派發(fā)計數(shù)器與同步仲裁器、常規(guī)控制器和執(zhí)行 流水線相連,它被同步仲裁器預(yù)置一個初始值,數(shù)值為分支延遲槽數(shù)。派發(fā)計數(shù)器接收同步 仲裁器發(fā)來的計數(shù)開始信號后啟動計數(shù),它用執(zhí)行流水線的時鐘信號作為計數(shù)時鐘。當未 收到常規(guī)控制器發(fā)來的執(zhí)行流水線暫停信號時每個時鐘周期做減一計數(shù),派發(fā)計數(shù)器計數(shù) 至零時停止計數(shù),向同步仲裁器發(fā)派發(fā)計數(shù)結(jié)束信號。 同步仲裁器是一個狀態(tài)機,與指令譯碼器、取指計數(shù)器、派發(fā)計數(shù)器、取指流水線、執(zhí)行流水線相連。同步仲裁器接收指令譯碼器發(fā)送的分支轉(zhuǎn)移信號,向取指計數(shù)器發(fā)計數(shù)
開始信號,接收取指計數(shù)器發(fā)送的取指計數(shù)結(jié)束信號;向派發(fā)計數(shù)器發(fā)出計數(shù)開始信號,接
收派發(fā)計數(shù)器發(fā)送的派發(fā)計數(shù)結(jié)束信號;向指令緩沖器發(fā)Clear清除信號,向取指流水線
發(fā)送取指流水線分支暫停信號,向執(zhí)行流水線發(fā)送執(zhí)行流水線分支暫停信號。 同步仲裁器這個狀態(tài)機由初始狀態(tài)、計數(shù)啟動狀態(tài)、取指計數(shù)停止狀態(tài)、派發(fā)計數(shù)
停止狀態(tài)和清除狀態(tài)組成,狀態(tài)轉(zhuǎn)移過程如下 VLIW處理器復(fù)位后狀態(tài)機進入初始狀態(tài),同步仲裁器為取指計數(shù)器和派發(fā)計數(shù)器 預(yù)置一個等于分支延遲槽數(shù)的初始值。同步仲裁器收到指令譯碼器發(fā)來的分支轉(zhuǎn)移信號 后,狀態(tài)機進入計數(shù)啟動狀態(tài)。 在計數(shù)啟動狀態(tài),同步仲裁器向取指計數(shù)器和派發(fā)計數(shù)器發(fā)計數(shù)開始信號。取指 計數(shù)器在未收到取指流水線暫停信號的情況下每個時鐘周期減一,取指計數(shù)器減到零時停 止計數(shù)并向同步仲裁器發(fā)取指計數(shù)結(jié)束信號。派發(fā)計數(shù)器在未收到執(zhí)行流水線暫停信號的 情況下每個時鐘周期減一,派發(fā)計數(shù)器減到零時停止計數(shù)并向同步仲裁器發(fā)派發(fā)計數(shù)結(jié)束 信號。如果同步仲裁器只收到取指計數(shù)結(jié)束信號,狀態(tài)機進入取指計數(shù)停止狀態(tài),同步仲裁 器向取指流水線發(fā)取指流水線分支暫停信號;如果同步仲裁器只收到派發(fā)計數(shù)結(jié)束信號, 狀態(tài)機進入派發(fā)計數(shù)停止狀態(tài),同步仲裁器向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號;如 果同步仲裁器同時收到取指計數(shù)結(jié)束和派發(fā)計數(shù)結(jié)束信號,狀態(tài)機進入清空狀態(tài),同步仲 裁器既向取指流水線發(fā)取指流水線分支暫停信號,又向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停 信號。 在取指計數(shù)停止狀態(tài),如果同步仲裁器收到派發(fā)計數(shù)器發(fā)出的派發(fā)計數(shù)結(jié)束信
號,狀態(tài)機進入清空狀態(tài),同步仲裁器向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號。 在派發(fā)計數(shù)停止狀態(tài),如果同步仲裁器收到取指計數(shù)器發(fā)來的取指計數(shù)結(jié)束信
號,狀態(tài)機進入清空狀態(tài),同步仲裁器向取指流水線發(fā)取指流水線分支暫停信號。 在清空狀態(tài),同步仲裁器狀態(tài)機向指令緩沖器發(fā)Clear信號清除指令緩沖器中的
指令,然后取消取指流水線分支暫停信號和執(zhí)行流水線分支暫停信號,恢復(fù)取指流水線和
執(zhí)行流水線的運行,狀態(tài)機返回初始狀態(tài)。 第二步,采用非鎖步流水線控制器和指令緩沖器對流水線進行控制。非鎖步流水 線控制器和傳統(tǒng)VLIW處理器的流水線控制器控制機制不同傳統(tǒng)VLIW處理器的流水線控 制器采取鎖步方式控制整條流水線,它接收指令Cache或數(shù)據(jù)Cache的阻塞信號后都會暫 停整個流水線;而非鎖步流水線控制器可以分別控制取指流水線和執(zhí)行流水線。由于指令 緩沖器的存在,暫停取指流水線時,執(zhí)行流水線可以繼續(xù)執(zhí)行,直到指令緩沖器為空;暫停 執(zhí)行流水線時,取指流水線可以繼續(xù)運行,直至指令緩沖器滿。控制方法如下
1、程序順序執(zhí)行時,非鎖步流水線控制器利用常規(guī)控制器實現(xiàn)對流水線的非鎖步 方式的控制。 取指流水線將VLIW指令包從指令Cache取到指令緩沖器中,指令派發(fā)部件將VLIW 指令包從指令緩沖器中取出,派發(fā)到執(zhí)行流水線執(zhí)行。常規(guī)控制器控制流水線的運行如果 指令Cache發(fā)生阻塞,常規(guī)控制器接收到指令Cache阻塞信號后,向取指流水線發(fā)取指流水 線暫停信號暫停取指流水線;如果數(shù)據(jù)Cache發(fā)生阻塞,常規(guī)控制器接收到數(shù)據(jù)Cache阻 塞信號后,向執(zhí)行流水線發(fā)執(zhí)行流水線暫停信號暫停執(zhí)行流水線。由于取指流水線和執(zhí)行流水線是分離控制,指令緩沖器中的VLIW指令個數(shù)會不斷變化。當指令緩沖器中裝滿了指 令,沒有空閑空間存儲VLIW指令時,指令緩沖器向常規(guī)控制器發(fā)Full信號,常規(guī)控制器收 到Full信號后向取指流水線發(fā)取指流水線暫停信號暫停取指流水線;隨著指令派發(fā)部件 不斷從指令緩沖中將指令派發(fā)到執(zhí)行流水線,指令緩沖器又會有空閑空間,此時指令緩沖 器取消Full信號,常規(guī)控制器取消取指流水線暫停信號,取指流水線恢復(fù)取指。當指令緩 沖器中沒有VLIW指令時,指令緩沖器向非鎖步流水線控制器發(fā)Empty信號,常規(guī)控制器收 到Empty信號時向執(zhí)行流水線發(fā)執(zhí)行流水線暫停信號暫停執(zhí)行流水線;隨著取指流水線不 斷從指令Cache取得指令放到指令緩沖器,指令緩沖器又會有VLIW指令,此時指令緩沖器 取消Empty信號,常規(guī)控制器取消執(zhí)行流水線暫停信號,執(zhí)行流水線恢復(fù)執(zhí)行。
2、程序執(zhí)行遇到分支轉(zhuǎn)移情況時,非鎖步流水線控制器從指令譯碼器接收分支轉(zhuǎn) 移信號,非鎖步流水線控制器的分支控制器控制流水線運行并維持分支條件下VLIW的同 步語義。 分支控制器收到指令譯碼器發(fā)來的分支轉(zhuǎn)移信號時,同步仲裁器啟動取指計數(shù)器 和派發(fā)計數(shù)器。取指流水線在未收到取指流水線暫停信號的情況下,每個時鐘周期取得一 個指令包,它的時鐘信號驅(qū)動取指計數(shù)器進行減一計數(shù),取指計數(shù)器計數(shù)至零時停止計數(shù) 并向同步仲裁器發(fā)取指計數(shù)結(jié)束信號。執(zhí)行流水線在未收到執(zhí)行流水線暫停信號的情況 下,每個時鐘周期執(zhí)行一個執(zhí)行包,它的時鐘信號驅(qū)動派發(fā)計數(shù)器進行減一計數(shù),派發(fā)計數(shù) 器計數(shù)至零時停止計數(shù)并向同步仲裁器發(fā)派發(fā)計數(shù)結(jié)束信號。當同步仲裁器收到取指計數(shù) 器取指計數(shù)結(jié)束信號時,向取指流水線發(fā)取指流水線分支暫停信號暫停取指流水線;當同 步仲裁器收到派發(fā)計數(shù)器派發(fā)計數(shù)結(jié)束信號時,向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號 暫停執(zhí)行流水線;當同步仲裁器同時收到取指計數(shù)結(jié)束信號和派發(fā)計數(shù)結(jié)束信號時,向取 指流水線發(fā)取指流水線分支暫停信號并向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號。
采用本發(fā)明可以達到以下技術(shù)效果 1.采用本發(fā)明的處理器中含有指令緩沖器,可以用非鎖步的方式來控制處理器流 水線。只要指令緩沖器沒有滿,取指流水線就可以繼續(xù)運行,將VLIW指令包填入指令緩沖 器;只要指令緩沖器沒有空,執(zhí)行流水線就可以繼續(xù)從指令緩沖器中取出VLIW指令執(zhí)行。 這樣,指令Cache阻塞只暫停取指流水線而不會停止執(zhí)行流水線;數(shù)據(jù)Cache阻塞只暫停執(zhí) 行流水線而不會停止取指流水線。這種非鎖步的控制方式通過指令緩沖器使處理器的取指 和執(zhí)行分離,從而減少Cache阻塞對流水線性能的影響,提高了處理器執(zhí)行效率。
2.在分支轉(zhuǎn)移的情況下,非鎖步流水線控制器的同步仲裁器通過取指流水線分支 暫停信號、執(zhí)行流水線分支暫停信號控制取指流水線和執(zhí)行流水線的運行速度來保證VLIW 同步語義當取指流水線先取到M個指令包時就會等待執(zhí)行流水線執(zhí)行完分支延遲槽中的 M條VLIW指令,不會因為取指速度快而破壞分支延遲槽中的指令;執(zhí)行流水線執(zhí)行完分支 延遲槽中的M條VLIW指令后就會等待取指流水線取完M個取指包,不會因為執(zhí)行速度快而 多執(zhí)行了分支延遲槽之后的指令;最后同步仲裁器清空指令緩沖器,取指流水線和分支流 水線同步執(zhí)行,就保證了分支條件下的同步語義。
圖1是背景技術(shù)所述的采用完全鎖步方式控制的VLIW處理器結(jié)構(gòu)示意圖。
圖2是采用本發(fā)明設(shè)計的非完全鎖步控制的VLIW處理器結(jié)構(gòu)示意圖。
圖3是圖2所示VLIW處理器中非鎖步流水線控制器結(jié)構(gòu)圖。
圖4是圖3中同步仲裁器狀態(tài)轉(zhuǎn)移圖。 圖5采用本發(fā)明設(shè)計的非鎖步控制的VLIW處理器的效果分析圖。
具體實施例方式
圖1是背景技術(shù)所述的采用完全鎖步方式控制的VLIW處理器結(jié)構(gòu)示意圖。指令 派發(fā)部件連接取指流水線和執(zhí)行流水線,將VLIW中的多個指令派發(fā)到多條執(zhí)行流水線中。 流水線控制器采用完全鎖步方式控制,當流水線控制器接收到指令Cache阻塞信號或數(shù)據(jù) Cache阻塞信號時都發(fā)出暫停信號,同時停止取指流水線和執(zhí)行流水線。由于采用了分支延 遲槽方法,指令譯碼器在分支轉(zhuǎn)移發(fā)生時控制取指流水線獲取新地址指向的指令序列,不 需要清空或暫停處理器流水線。 圖2是采用本發(fā)明設(shè)計的非完全鎖步控制的VLIW處理器結(jié)構(gòu)示意圖。增加一個 指令緩沖器連接取指流水線和指令派發(fā)部件。指令包從取指流水線進入指令緩沖。指令派 發(fā)部件從指令緩沖中取出指令包派發(fā)到執(zhí)行流水線。采用非鎖步流水線控制器替代流水線 控制器對VLIW處理器進行控制,非鎖步流水線控制器接收指令緩沖器Empty和Full信號、 指令Cache和數(shù)據(jù)Cache的阻塞信號,發(fā)取指流水線暫停信號、取指流水線分支暫停信號暫 停取指流水線,發(fā)執(zhí)行流水線暫停信號、執(zhí)行流水線分支暫停信號暫停執(zhí)行流水線。
圖3是本發(fā)明的非鎖步流水線控制器邏輯結(jié)構(gòu)圖。非鎖步流水線控制器由常規(guī)控 制器和分支控制器組成。常規(guī)控制器與取指流水線、執(zhí)行流水線、指令Cache、數(shù)據(jù)Cache、 指令緩沖器以及分支控制器相連。常規(guī)控制器收到指令Cache阻塞信號時,向取指流水線 發(fā)取指流水線暫停信號;收到數(shù)據(jù)Cache阻塞信號時,向執(zhí)行流水線發(fā)執(zhí)行流水線暫停信 號;收到指令緩沖器的Full信號時,向取指流水線發(fā)取指流水線暫停信號;收到指令緩沖 器的Empty信號時,向執(zhí)行流水線發(fā)執(zhí)行流水線暫停信號。常規(guī)控制器發(fā)出的取指流水線 暫停信號和執(zhí)行流水線暫停信號也同時發(fā)往分支控制器。 分支控制器在分支轉(zhuǎn)移條件下和常規(guī)控制器一起控制流水線并維持VLIW同步語 義。分支控制器與取指流水線、執(zhí)行流水線及指令緩沖器、指令譯碼器以及常規(guī)控制器相 連。它從指令譯碼器接收分支轉(zhuǎn)移信號,從常規(guī)控制器接收取指流水線暫停信號和執(zhí)行流 水線暫停信號。分支控制器向取指流水線發(fā)取指流水線分支暫停信號,向執(zhí)行流水線發(fā)執(zhí) 行流水線分支暫停信號,并向指令緩沖器發(fā)Clear信號清除指令緩沖器中的指令。
分支控制器由取指計數(shù)器、派發(fā)計數(shù)器和同步仲裁器組成。取指計數(shù)器和派發(fā)計 數(shù)器都是標準的減一計數(shù)器。取指計數(shù)器與同步仲裁器和取指流水線相連,它被同步仲裁 器預(yù)置一個初始值,數(shù)值為分支延遲槽數(shù)。取指計數(shù)器接收同步仲裁器發(fā)來的計數(shù)開始信 號后啟動計數(shù),它用取指流水線的時鐘信號作為計數(shù)時鐘。當未收到取指流水線暫停信號 時每個時鐘周期做減一計數(shù),取指計數(shù)器計數(shù)至零時停止計數(shù),向同步仲裁器發(fā)取指計數(shù) 結(jié)束信號。派發(fā)計數(shù)器與同步仲裁器和執(zhí)行流水線相連,它被同步仲裁器預(yù)置一個初始值, 數(shù)值為分支延遲槽數(shù)。派發(fā)計數(shù)器接收同步仲裁器發(fā)來的計數(shù)開始信號后啟動計數(shù),它用 執(zhí)行流水線的時鐘信號作為計數(shù)時鐘。當未收到執(zhí)行流水線暫停信號時每個時鐘周期做減 一計數(shù),派發(fā)計數(shù)器計數(shù)至零時停止計數(shù),向同步仲裁器發(fā)派發(fā)計數(shù)結(jié)束信號。
同步仲裁器是一個狀態(tài)機,與指令譯碼器、取指計數(shù)器、派發(fā)計數(shù)器相連。接收指 令譯碼器發(fā)送的分支轉(zhuǎn)移信號,向取指計數(shù)器發(fā)出計數(shù)開始信號,接收取指計數(shù)器發(fā)送的 取指計數(shù)結(jié)束信號,向派發(fā)計數(shù)器發(fā)出計數(shù)開始信號,接收派發(fā)計數(shù)器發(fā)送的派發(fā)計數(shù)結(jié) 束信號,向指令緩沖器發(fā)Clear清除信號,向取指流水線發(fā)送取指流水線分支暫停信號,向 執(zhí)行流水線發(fā)送執(zhí)行流水線分支暫停信號。 圖4是本發(fā)明非鎖步流水線控制器中的同步仲裁器的狀態(tài)轉(zhuǎn)移圖。同步仲裁器狀 態(tài)機由初始狀態(tài)、計數(shù)啟動狀態(tài)、取指計數(shù)停止狀態(tài)、派發(fā)計數(shù)停止狀態(tài)和清除狀態(tài)組成, 狀態(tài)轉(zhuǎn)移過程如下 VLIW處理器復(fù)位后狀態(tài)機進入初始狀態(tài),同步仲裁器為取指計數(shù)器和派發(fā)計數(shù)器 預(yù)置一個等于分支延遲槽數(shù)的初始值。同步仲裁器收到指令譯碼器發(fā)來的分支轉(zhuǎn)移信號 后,狀態(tài)機進入計數(shù)啟動狀態(tài)。 在計數(shù)啟動狀態(tài),同步仲裁器向取指計數(shù)器和派發(fā)計數(shù)器發(fā)計數(shù)開始信號。取指 計數(shù)器在未收到取指流水線暫停信號的情況下每個時鐘周期減一,取指計數(shù)器減到零時停 止計數(shù)并向同步仲裁器發(fā)取指計數(shù)結(jié)束信號。派發(fā)計數(shù)器在未收到執(zhí)行流水線暫停信號的 情況下每個時鐘周期減一,派發(fā)計數(shù)器減到零時停止計數(shù)并向同步仲裁器發(fā)派發(fā)計數(shù)結(jié)束 信號。 在計數(shù)啟動狀態(tài),如果同步仲裁器只收到取指計數(shù)結(jié)束信號,狀態(tài)機進入取指計 數(shù)停止狀態(tài),同步仲裁器向取指流水線發(fā)取指流水線分支暫停信號;如果同步仲裁器只收 到派發(fā)計數(shù)結(jié)束信號,狀態(tài)機進入派發(fā)計數(shù)停止狀態(tài),同步仲裁器向執(zhí)行流水線發(fā)執(zhí)行流 水線分支暫停信號;如果同步仲裁器同時收到取指計數(shù)結(jié)束和派發(fā)計數(shù)結(jié)束信號,狀態(tài)機 進入清空狀態(tài),同步仲裁器既向取指流水線發(fā)取指流水線分支暫停信號,又向執(zhí)行流水線 發(fā)執(zhí)行流水線分支暫停信號。 在取指計數(shù)停止狀態(tài),如果同步仲裁器收到派發(fā)計數(shù)器發(fā)出的派發(fā)計數(shù)結(jié)束信
號,狀態(tài)機進入清空狀態(tài),同步仲裁器向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號。 在派發(fā)計數(shù)停止狀態(tài),如果同步仲裁器收到取指計數(shù)器發(fā)來的取指計數(shù)結(jié)束信
號,狀態(tài)機進入清空狀態(tài),同步仲裁器向取指流水線發(fā)取指流水線分支暫停信號。 在清空狀態(tài),同步仲裁器狀態(tài)機向指令緩沖器發(fā)Clear信號清除指令緩沖器中的
指令,然后取消取指流水線分支暫停信號和執(zhí)行流水線分支暫停信號,狀態(tài)機返回初始狀態(tài)。 圖5是采用本發(fā)明的VLIW處理器原型機相對于未采用本發(fā)明的VLIW處理器程 序執(zhí)行時間比較圖。圖5(a)表示未采用本發(fā)明完全鎖步方式的VLIW處理器執(zhí)行時間,圖 5(b)表示采用本發(fā)明非完全鎖步方式的VLIW處理器執(zhí)行時間。VLIW處理器指令包長度N =256位,分支延遲槽數(shù)M = 5 。圖中白色框表示程序正常執(zhí)行,橫線陰影框表示指令cache 失效導(dǎo)致的停頓,豎線陰影框表示數(shù)據(jù)cache失效導(dǎo)致的停頓,框內(nèi)的數(shù)字表示該過程持 續(xù)的時鐘周期。 從圖5(a)可以看出完全鎖步的VLIW處理器全局同步的方案,不管發(fā)生數(shù)據(jù)cache 失效,還是發(fā)生指令cache失效,整個流水線都需要停頓下來等待cache失效的解除,程序 執(zhí)行時間共為26個時鐘周期。而圖5(b)中由于加入指令緩沖器,采用非完全鎖步的控制 方案,指令cache失效時只暫停取指流水線,而執(zhí)行流水線繼續(xù)執(zhí)行;數(shù)據(jù)cache失效時只
10暫停執(zhí)行流水線,取指流水線繼續(xù)執(zhí)行。同樣的程序只需要18拍就可以執(zhí)行完畢,執(zhí)行周 期數(shù)約減少30%,提高了處理器執(zhí)行效率。
權(quán)利要求
一種非完全鎖步的VLIW處理器流水線控制方法,其特征在于包括以下步驟第一步,在傳統(tǒng)的VLIW處理器基礎(chǔ)上增加一個指令緩沖器,并將流水線控制器改為非鎖步流水線控制器;指令緩沖器與取指流水線、指令派發(fā)部件、非鎖步流水線控制器相連;取指流水線從指令Cache中取出VLIW指令包,將VLIW指令包送到指令緩沖器,指令派發(fā)部件從指令緩沖器取出VLIW指令包,并將指令包中的指令以執(zhí)行包為單位發(fā)送到執(zhí)行流水線;指令緩沖器中沒有指令包時向非鎖步流水線控制器發(fā)Empty信號;指令緩沖器被指令包填滿沒有空閑存儲空間時向非鎖步流水線控制器發(fā)Full信號;非鎖步流水線控制器由常規(guī)控制器和分支控制器組成常規(guī)控制器與取指流水線、執(zhí)行流水線、指令Cache、數(shù)據(jù)Cache、指令緩沖器以及分支控制器相連;常規(guī)控制器收到指令Cache阻塞信號時,向取指流水線和分支控制器發(fā)取指流水線暫停信號;收到數(shù)據(jù)Cache阻塞信號時,向執(zhí)行流水線和分支控制器發(fā)執(zhí)行流水線暫停信號;收到指令緩沖器的Full信號時,向取指流水線和分支控制器發(fā)取指流水線暫停信號;收到指令緩沖器的Empty信號時,向執(zhí)行流水線和分支控制器發(fā)執(zhí)行流水線暫停信號;分支控制器與取指流水線、執(zhí)行流水線、指令緩沖器、指令譯碼器以及常規(guī)控制器相連;它從指令譯碼器接收分支轉(zhuǎn)移信號,從常規(guī)控制器接收取指流水線暫停信號和執(zhí)行流水線暫停信號,根據(jù)分支轉(zhuǎn)移信號、取指流水線暫停信號和執(zhí)行流水線暫停信號向取指流水線發(fā)取指流水線分支暫停信號,向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號,并向指令緩沖器發(fā)Clear信號清除指令緩沖器中的指令;分支控制器由取指計數(shù)器、派發(fā)計數(shù)器和同步仲裁器組成取指計數(shù)器和派發(fā)計數(shù)器都是標準的減一計數(shù)器;取指計數(shù)器與同步仲裁器、常規(guī)控制器和取指流水線相連,它被同步仲裁器預(yù)置一個初始值;取指計數(shù)器接收同步仲裁器發(fā)來的計數(shù)開始信號后啟動計數(shù),它用取指流水線的時鐘信號作為計數(shù)時鐘,當未收到常規(guī)控制器發(fā)來的取指流水線暫停信號時每個時鐘周期做減一計數(shù),取指計數(shù)器計數(shù)至零時停止計數(shù),向同步仲裁器發(fā)取指計數(shù)結(jié)束信號;派發(fā)計數(shù)器與同步仲裁器、常規(guī)控制器和執(zhí)行流水線相連,它被同步仲裁器預(yù)置一個初始值;派發(fā)計數(shù)器接收同步仲裁器發(fā)來的計數(shù)開始信號后啟動計數(shù),它用執(zhí)行流水線的時鐘信號作為計數(shù)時鐘,當未收到常規(guī)控制器發(fā)來的執(zhí)行流水線暫停信號時每個時鐘周期做減一計數(shù),派發(fā)計數(shù)器計數(shù)至零時停止計數(shù),向同步仲裁器發(fā)派發(fā)計數(shù)結(jié)束信號;同步仲裁器是一個狀態(tài)機,與指令譯碼器、取指計數(shù)器、派發(fā)計數(shù)器、取指流水線、執(zhí)行流水線相連;同步仲裁器接收指令譯碼器發(fā)送的分支轉(zhuǎn)移信號,向取指計數(shù)器發(fā)計數(shù)開始信號,接收取指計數(shù)器發(fā)送的取指計數(shù)結(jié)束信號;向派發(fā)計數(shù)器發(fā)出計數(shù)開始信號,接收派發(fā)計數(shù)器發(fā)送的派發(fā)計數(shù)結(jié)束信號;向指令緩沖器發(fā)Clear清除信號,向取指流水線發(fā)送取指流水線分支暫停信號,向執(zhí)行流水線發(fā)送執(zhí)行流水線分支暫停信號;第二步,采用非鎖步流水線控制器和指令緩沖器對流水線進行控制,控制方法如下(1)程序順序執(zhí)行時,非鎖步流水線控制器利用常規(guī)控制器實現(xiàn)對流水線的非鎖步方式的控制如果指令Cache發(fā)生阻塞,常規(guī)控制器接收到指令Cache阻塞信號后,向取指流水線發(fā)取指流水線暫停信號暫停取指流水線;如果數(shù)據(jù)Cache發(fā)生阻塞,常規(guī)控制器接收到數(shù)據(jù)Cache阻塞信號后,向執(zhí)行流水線發(fā)執(zhí)行流水線暫停信號暫停執(zhí)行流水線;當指令緩沖器中裝滿了指令,沒有空閑空間存儲VLIW指令時,指令緩沖器向常規(guī)控制器發(fā)Full信號,常規(guī)控制器收到Full信號后向取指流水線發(fā)取指流水線暫停信號暫停取指流水線;隨著指令派發(fā)部件不斷從指令緩沖中將指令派發(fā)到執(zhí)行流水線,指令緩沖器又會有空閑空間,此時指令緩沖器取消Full信號,常規(guī)控制器取消取指流水線暫停信號,取指流水線恢復(fù)取指;當指令緩沖器中沒有VLIW指令時,指令緩沖器向非鎖步流水線控制器發(fā)Empty信號,常規(guī)控制器收到Empty信號時向執(zhí)行流水線發(fā)執(zhí)行流水線暫停信號暫停執(zhí)行流水線;隨著取指流水線不斷從指令Cache取得指令放到指令緩沖器,指令緩沖器又會有VLIW指令,此時指令緩沖器取消Empty信號,常規(guī)控制器取消執(zhí)行流水線暫停信號,執(zhí)行流水線恢復(fù)執(zhí)行。(2)程序執(zhí)行遇到分支轉(zhuǎn)移情況時,非鎖步流水線控制器從指令譯碼器接收分支轉(zhuǎn)移信號,非鎖步流水線控制器的分支控制器控制流水線運行并維持分支條件下VLIW的同步語義分支控制器收到指令譯碼器發(fā)來的分支轉(zhuǎn)移信號時,同步仲裁器啟動取指計數(shù)器和派發(fā)計數(shù)器;取指流水線在未收到取指流水線暫停信號的情況下,每個時鐘周期取得一個指令包,它的時鐘信號驅(qū)動取指計數(shù)器進行減一計數(shù),取指計數(shù)器計數(shù)至零時停止計數(shù)并向同步仲裁器發(fā)取指計數(shù)結(jié)束信號;執(zhí)行流水線在未收到執(zhí)行流水線暫停信號的情況下,每個時鐘周期執(zhí)行一個執(zhí)行包,它的時鐘信號驅(qū)動派發(fā)計數(shù)器進行減一計數(shù),派發(fā)計數(shù)器計數(shù)至零時停止計數(shù)并向同步仲裁器發(fā)派發(fā)計數(shù)結(jié)束信號;當同步仲裁器收到取指計數(shù)器取指計數(shù)結(jié)束信號時,向取指流水線發(fā)取指流水線分支暫停信號暫停取指流水線;當同步仲裁器收到派發(fā)計數(shù)器派發(fā)計數(shù)結(jié)束信號時,向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號暫停執(zhí)行流水線;當同步仲裁器同時收到取指計數(shù)結(jié)束信號和派發(fā)計數(shù)結(jié)束信號時,向取指流水線發(fā)取指流水線分支暫停信號并向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號。
2. 如權(quán)利要求l所述的非完全鎖步的VLIW處理器流水線控制方法,其特征在于所述指 令緩沖器采用先進先出結(jié)構(gòu)即FIFO結(jié)構(gòu)。
3. 如權(quán)利要求l所述的非完全鎖步的VLIW處理器流水線控制方法,其特征在于所述指 令緩沖器的容量和VLIW處理器結(jié)構(gòu)相關(guān),要求大于2N, N為VLIW處理器中VLIW指令包長 度。
4. 如權(quán)利要求l所述的非完全鎖步的VLIW處理器流水線控制方法,其特征在于所述同 步仲裁器這個狀態(tài)機由初始狀態(tài)、計數(shù)啟動狀態(tài)、取指計數(shù)停止狀態(tài)、派發(fā)計數(shù)停止狀態(tài)和 清除狀態(tài)組成,狀態(tài)轉(zhuǎn)移過程如下VLIW處理器復(fù)位后狀態(tài)機進入初始狀態(tài),同步仲裁器為取指計數(shù)器和派發(fā)計數(shù)器預(yù)置 一個初始值,同步仲裁器收到指令譯碼器發(fā)來的分支轉(zhuǎn)移信號后,狀態(tài)機進入計數(shù)啟動狀 態(tài);在計數(shù)啟動狀態(tài),同步仲裁器向取指計數(shù)器和派發(fā)計數(shù)器發(fā)計數(shù)開始信號;取指計數(shù) 器在未收到取指流水線暫停信號的情況下每個時鐘周期減一,取指計數(shù)器減到零時停止計 數(shù)并向同步仲裁器發(fā)取指計數(shù)結(jié)束信號;派發(fā)計數(shù)器在未收到執(zhí)行流水線暫停信號的情 況下每個時鐘周期減一,派發(fā)計數(shù)器減到零時停止計數(shù)并向同步仲裁器發(fā)派發(fā)計數(shù)結(jié)束信 號;如果同步仲裁器只收到取指計數(shù)結(jié)束信號,狀態(tài)機進入取指計數(shù)停止狀態(tài),同步仲裁器 向取指流水線發(fā)取指流水線分支暫停信號;如果同步仲裁器只收到派發(fā)計數(shù)結(jié)束信號,狀 態(tài)機進入派發(fā)計數(shù)停止狀態(tài),同步仲裁器向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號;如果同步仲裁器同時收到取指計數(shù)結(jié)束和派發(fā)計數(shù)結(jié)束信號,狀態(tài)機進入清空狀態(tài),同步仲裁 器既向取指流水線發(fā)取指流水線分支暫停信號,又向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信 號;在取指計數(shù)停止狀態(tài),如果同步仲裁器收到派發(fā)計數(shù)器發(fā)出的派發(fā)計數(shù)結(jié)束信號,狀 態(tài)機進入清空狀態(tài),同步仲裁器向執(zhí)行流水線發(fā)執(zhí)行流水線分支暫停信號;在派發(fā)計數(shù)停止狀態(tài),如果同步仲裁器收到取指計數(shù)器發(fā)來的取指計數(shù)結(jié)束信號,狀 態(tài)機進入清空狀態(tài),同步仲裁器向取指流水線發(fā)取指流水線分支暫停信號;在清空狀態(tài),同步仲裁器狀態(tài)機向指令緩沖器發(fā)Clear信號清除指令緩沖器中的指 令,然后取消取指流水線分支暫停信號和執(zhí)行流水線分支暫停信號,恢復(fù)取指流水線和執(zhí) 行流水線的運行,狀態(tài)機返回初始狀態(tài)。
5.如權(quán)利要求l所述的非完全鎖步的VLIW處理器流水線控制方法,其特征在于所述取 指計數(shù)器和派發(fā)計數(shù)器被同步仲裁器預(yù)置的初始值均為分支延遲槽數(shù)。
全文摘要
本發(fā)明公開了一種非完全鎖步的VLIW處理器流水線控制方法,目的是減少流水線暫停次數(shù),提高處理器執(zhí)行效率,同時在流水線控制中保持VLIW指令同步語義。技術(shù)方案是先在傳統(tǒng)的VLIW處理器基礎(chǔ)上增加一個指令緩沖器,并將流水線控制器改為由常規(guī)控制器和分支控制器組成的非鎖步流水線控制器;程序順序執(zhí)行時,由常規(guī)控制器實現(xiàn)對流水線的非鎖步方式的控制,程序執(zhí)行遇到分支轉(zhuǎn)移情況時,非鎖步流水線控制器從指令譯碼器接收分支轉(zhuǎn)移信號,由分支控制器控制流水線運行并維持分支條件下VLIW的同步語義。本發(fā)明采用非鎖步的方式來控制處理器流水線,使處理器的取指和執(zhí)行分離,從而減少Cache阻塞對流水線性能的影響,提高了處理器執(zhí)行效率。
文檔編號G06F9/38GK101702118SQ20091004474
公開日2010年5月5日 申請日期2009年11月12日 優(yōu)先權(quán)日2009年11月12日
發(fā)明者萬江華, 余再祥, 劉宗林, 劉蓬俠, 吳虎成, 孫書為, 李勇, 李振濤, 羅恒, 郭陽, 陳書明, 陳吉華, 魯建壯 申請人:中國人民解放軍國防科學技術(shù)大學