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