專利名稱:一種具有動(dòng)態(tài)提交流水線功能的數(shù)字信號(hào)處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到一種通用數(shù)字信號(hào)處理器,特別是一種具有動(dòng)態(tài)提交流水線功能的數(shù)字信號(hào)處理器。
背景技術(shù):
當(dāng)前,在高性能數(shù)字信號(hào)處理器的設(shè)計(jì)中,流水線技術(shù)在性能表現(xiàn)中占有很重要的位置。在目前流行的處理器中,基于Tomasulo算法的調(diào)度和預(yù)測(cè)執(zhí)行相結(jié)合的方法得到廣泛的應(yīng)用(如PowerPC 620,MIPS R10000等)。
實(shí)現(xiàn)這種方法的重要思想是允許指令亂序執(zhí)行但是必須按序提交,并且在指令提交前應(yīng)避免任何無法恢復(fù)的行為發(fā)生。與一般的DLX流水線不同,實(shí)現(xiàn)這種方法需加入一個(gè)額外的步驟即指令提交。加入提交狀態(tài)不盡要求指令執(zhí)行序列能夠變動(dòng),而且要求增加一套硬件緩沖站以保存指令結(jié)果直到指令被提交。
當(dāng)然這種方法與普通的流水線相比在性能上得到了很大的提升,這也是目前處理器普遍采用這種方法的原因。但是由于其實(shí)現(xiàn)的思想內(nèi)最重要的一條是必須按序提交,在一定程度上限制了性能的進(jìn)一步提升,也降低了資源的利用率。
導(dǎo)致上述技術(shù)局限的原因是該方法會(huì)產(chǎn)生等待提交狀態(tài)。舉例說來,參見圖1,該圖是采用基于Tomasulo算法的動(dòng)態(tài)調(diào)度和預(yù)測(cè)執(zhí)行相結(jié)合的方法的流水線執(zhí)行程序1的流水線時(shí)序。
圖中執(zhí)行的程序1包含5條指令,程序內(nèi)容如下DIV AR1,AR2;指令1MOV *AR3+,AR4 ;指令2MOV *AR3+,AR5 ;指令3MOV *AR3+,AR6 ;指令4MOV *AR3+,AR7 ;指令5
該圖中,IS表示指令發(fā)射周期,ID是指令譯碼周期,EX是指令執(zhí)行周期,WB是結(jié)果寫回周期,CT是指令提交周期,WT是等待提交周期。
根據(jù)我們假設(shè),程序1中指令1是一條除法指令,在處理器中一般除法的執(zhí)行周期都相對(duì)較長(zhǎng),這與位數(shù)有關(guān)。雖然依據(jù)目前支持動(dòng)態(tài)執(zhí)行的流水線的執(zhí)行單元都包含多個(gè)可以并行執(zhí)行的功能部件(如乘除單元,算術(shù)邏輯單元,存取單元等),指令2在指令1的執(zhí)行過程中就可以發(fā)射、譯碼、執(zhí)行,并在指令1執(zhí)行結(jié)束前就寫回。但是由于基于Tomasulo算法的動(dòng)態(tài)調(diào)度和預(yù)測(cè)執(zhí)行相結(jié)合的方法一個(gè)最重要的原則是動(dòng)態(tài)執(zhí)行,按序提交因此指令2寫回的結(jié)果必須等指令1提交后才能提交。這是由于系統(tǒng)的物理資源是有限的,指令5因?yàn)槲锢砑拇嫫鞑蛔惚仨毜却懊嬗兄噶钐峤徊⑨尫盼锢砑拇嫫骱蟛拍芾^續(xù)發(fā)射,因此等待發(fā)射的時(shí)間也就相對(duì)要長(zhǎng)。
現(xiàn)在假設(shè)執(zhí)行除法指令需要8個(gè)執(zhí)行周期,硬件還有8個(gè)虛擬寄存器閑置,可以看到執(zhí)行這段程序需花費(fèi)17個(gè)指令周期,而在指令2、3、4、5的執(zhí)行中出現(xiàn)了大量的等待狀態(tài)。
如果能夠在指令1提交前允許其它指令的提交,減少諸如上述指令2、3、4、5的執(zhí)行中出現(xiàn)了大量的等待狀態(tài),那么將很大程度上提高指令的執(zhí)行效率,減少程序的運(yùn)行時(shí)間。出于上述技術(shù)解決思路的考慮,我們提出了本發(fā)明。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種具有動(dòng)態(tài)提交流水線功能的數(shù)字信號(hào)處理器。該處理器具備縮短等待時(shí)間,提高指令效率的功能。
如圖2所示,同樣以背景技術(shù)中的例子為例,該處理器在執(zhí)行指令1的過程中,指令2在指令周期5完成執(zhí)行寫回,允許在指令周期6就提交,這樣指令5的指令周期也就2個(gè)指令周期,因此程序的整體執(zhí)行周期只要12個(gè)指令周期。與基于Tomasulo算法的動(dòng)態(tài)調(diào)度和預(yù)測(cè)執(zhí)行相結(jié)合的方法的17個(gè)指令周期相比節(jié)省了5個(gè)指令周期,以此達(dá)到了提高指令效率的目的。
為實(shí)現(xiàn)上述技術(shù)效果,本發(fā)明所述的具有動(dòng)態(tài)提交流水線功能的數(shù)字信號(hào)處理器,內(nèi)核構(gòu)架包括程序控制單元、指令譯碼單元、寄存器文件、執(zhí)行單元;其特征在于,構(gòu)架中還包括用來管理指令動(dòng)態(tài)提交的提交控制臺(tái);所述內(nèi)核框架中程序控制單元分別與譯碼單元和提交控制臺(tái)數(shù)據(jù)連接;提交控制臺(tái)與寄存器文件數(shù)據(jù)連接;譯碼單元分別與執(zhí)行單元和寄存器文件連接;執(zhí)行單元與寄存器文件數(shù)據(jù)連接。
對(duì)于上述處理器中提到的提交控制臺(tái),在處理器運(yùn)行時(shí)用來記錄包括條件執(zhí)行指令標(biāo)記、條件的內(nèi)容、預(yù)測(cè)的內(nèi)容、需要提交的寄存器的數(shù)目等。
另外,還須指出的是該處理器中的執(zhí)行單元包含乘除單元、算術(shù)邏輯單元和存儲(chǔ)單元等功能部件,允許多個(gè)部件同時(shí)執(zhí)行。
根據(jù)上述內(nèi)核構(gòu)架,其中的程序控制單元負(fù)責(zé)指令的預(yù)取、指令的發(fā)射、跳轉(zhuǎn)預(yù)測(cè)、中斷管理、調(diào)試控制等功能。指令譯碼單元負(fù)責(zé)指令譯碼以及硬件資源調(diào)度。寄存器文件是一個(gè)多級(jí)映射的架構(gòu),負(fù)責(zé)邏輯寄存器和物理寄存器的管理、調(diào)度。提交控制臺(tái)是本發(fā)明的核心,用于管理指令的動(dòng)態(tài)提交。
對(duì)于上述發(fā)明的原理而言,是因?yàn)橐粋€(gè)確定指令集的處理器會(huì)發(fā)生條件跳轉(zhuǎn)預(yù)測(cè)和指令異常的指令是確定的,是譯碼單元可以分辨的,其它指令的程序流正常執(zhí)行的,因此在下一條帶條件跳轉(zhuǎn)預(yù)測(cè)或指令可能會(huì)發(fā)生異常的指令前的所有指令結(jié)果是必然發(fā)生的,也因此這些指令的結(jié)果是可以動(dòng)態(tài)提交的。局部動(dòng)態(tài)提交就是指兩條條件指令間的其它指令是動(dòng)態(tài)提交的。
本發(fā)明在一般處理器體系結(jié)構(gòu)的基礎(chǔ)上添加指令提交控制臺(tái),使得處理器在指令發(fā)射后進(jìn)入譯碼單元,譯碼單元如果識(shí)別出當(dāng)前指令是條件執(zhí)行指令或者有可能產(chǎn)生異常,在將提交命令送往提交控制臺(tái)時(shí)額外添加標(biāo)記,并將指令類型也送入提交控制臺(tái)保存直到指令被提交。
在提交時(shí),在提交控制臺(tái)中第一條有標(biāo)記的提交命令前的所有指令可以通盤考慮,如果其中的某條指令已經(jīng)滿足提交條件就可以先提交。這樣一來既可以提高指令的執(zhí)行效率又可以確保指令執(zhí)行的正確性。
圖1為基于Tomasulo算法在執(zhí)行流水線程序1時(shí)的執(zhí)行圖。
圖2為本發(fā)明在執(zhí)行流水線程序1時(shí)的執(zhí)行圖。
圖3為本發(fā)明所提供的數(shù)字信號(hào)處理器的內(nèi)部結(jié)構(gòu)圖。
圖4為本發(fā)明所提供的數(shù)字信號(hào)處理器中執(zhí)行單元結(jié)構(gòu)框圖。
圖5為實(shí)施例中Tomasulo算法在執(zhí)行流水線程序2時(shí)的執(zhí)行圖。
圖6為實(shí)施例中本發(fā)明在執(zhí)行流水線程序2時(shí)的執(zhí)行圖。
具體實(shí)施例方式下面將結(jié)合相關(guān)附圖通過實(shí)施例進(jìn)一步闡述本發(fā)明。
如圖3所示,本發(fā)明所提供的數(shù)字信號(hào)處理器中,程序控制單元與譯碼單元和提交控制臺(tái)相連,譯碼單元與其它四部分都有密切的關(guān)系,執(zhí)行單元與寄存器文件和譯碼單元相連,提交控制臺(tái)會(huì)影響程序流控制單元及寄存器文件。
在工作處理時(shí),程序流單元從指令存儲(chǔ)器中獲取指令、分析指令,如果是條件執(zhí)行指令則進(jìn)行轉(zhuǎn)移預(yù)測(cè),預(yù)測(cè)結(jié)果結(jié)合指令發(fā)送給譯碼單元。譯碼單元獲得程序控制單元給出的指令,加以分析,并向執(zhí)行單元的各個(gè)功能部件、寄存器文件以及提交控制臺(tái)申請(qǐng)所需資源,如果剩余資源能夠滿足指令需求,就向?qū)τ诘膱?zhí)行單元功能部件發(fā)送指令,同時(shí)將指令信息送入提交控制臺(tái)。寫入提交控制臺(tái)的內(nèi)容應(yīng)該包括條件執(zhí)行指令標(biāo)記(本發(fā)明最重要的執(zhí)行條件)、條件的內(nèi)容、預(yù)測(cè)的內(nèi)容、需要提交的寄存器的數(shù)目等。指令在譯碼并寫入功能部件的同時(shí),向寄存器申請(qǐng)指令所需的寄存器包括讀寄存器以及標(biāo)記指令所要修改的寄存器。如果是條件執(zhí)行指令的要修改寄存器,也需加以特殊的標(biāo)記。
如圖4所示,執(zhí)行單元包含乘除單元、算術(shù)邏輯單元和存儲(chǔ)單元等功能部件,允許多個(gè)部件同時(shí)執(zhí)行。當(dāng)功能部件中的指令在滿足執(zhí)行條件(這里指指令所需的操作數(shù)準(zhǔn)備就緒)之后就可以真正執(zhí)行指令,功能部件可以緩存多條同類型的指令,其中的任意一條指令性在滿足執(zhí)行條件之后都可以先執(zhí)行,與進(jìn)入功能部件的順序無關(guān),實(shí)現(xiàn)動(dòng)態(tài)執(zhí)行。
在功能部件中獲得指令的執(zhí)行結(jié)果后,將結(jié)果寫回物理寄存器等待提交,提交控制臺(tái)如果發(fā)現(xiàn)其中的某條指令所需的提交內(nèi)容包括在指令前沒有條件預(yù)測(cè)指令時(shí),允許指令提交。利用在第一條條件預(yù)測(cè)指令前的指令可以亂序提交的特性實(shí)現(xiàn)局部亂序提交。
下面具體舉例說明。
如圖2所示,就程序1為例(程序內(nèi)容見背景技術(shù)),使用本發(fā)明后單條指令的執(zhí)行周期是相同的,指令1的執(zhí)行周期還是8個(gè)周期,指令2在指令周期2發(fā)射在指令周期5寫回,由于指令2前沒有條件預(yù)測(cè)指令,因此指令2在節(jié)拍2就提交,同時(shí)釋放出兩個(gè)物理寄存器的空間。指令3、指令4的情況基本相同,指令5在資源充分的情況下應(yīng)該在指令周期5發(fā)射,但是由于處理器寄存器資源有限,因此需等到有其它指令釋放寄存器資源后才能發(fā)射,又由于基于Tomasulo算法的動(dòng)態(tài)調(diào)度和預(yù)測(cè)執(zhí)行相結(jié)合的方法如附圖1需到指令周期12才有指令釋放寄存器,因此在指令周期13才發(fā)射指令5。而利用本發(fā)明執(zhí)行該程序時(shí),指令2在指令周期6就提交并釋放了寄存器資源,因此在指令周期7就可以發(fā)射指令5。利用本發(fā)明,程序1只需要12個(gè)指令周期就完成運(yùn)行。比基于Tomasulo算法的動(dòng)態(tài)調(diào)度和預(yù)測(cè)執(zhí)行相結(jié)合的方法快許多。
當(dāng)然,由于程序1中沒包含條件預(yù)測(cè)指令,因此只能看出動(dòng)態(tài)提交的優(yōu)勢(shì)而沒有體現(xiàn)局部提交的特性。下面通過列舉程序2來詳細(xì)說明。
程序2包含9條指令,程序內(nèi)容如下DIV AR1,AR2 ;指令1MOV *AR3+,AR4;指令2MOV *AR3+,AR5;指令3MOV *AR3+,AR6;指令4BCC L1,AR6==#0 ;指令5假設(shè)條件不成立DIV AR1,AR2 ;指令6MOV *AR3+,AR4;指令7MOV *AR3+,AR5;指令8MOV *AR3+,AR6;指令9如圖5、圖6所示,可以看出基于Tomasulo算法的動(dòng)態(tài)調(diào)度和預(yù)測(cè)執(zhí)行相結(jié)合的方法花費(fèi)了26個(gè)指令周期,而采用本發(fā)明的方法只花費(fèi)了17個(gè)指令周期,優(yōu)勢(shì)依然明顯。
其原因?yàn)槌绦?中指令1、2、3、4的指令譯碼按正常處理,由于指令5是條件預(yù)測(cè)指令,因此在譯碼時(shí)應(yīng)將標(biāo)記以及指令的類型寫入提交控制臺(tái)。提交控制臺(tái)一直檢測(cè)控制臺(tái)內(nèi)的指令是否可以提交,在指令周期6發(fā)現(xiàn)指令2可以提交,并且在其沒有條件指令,因此在指令周期6完成提交。同理,指令3、4、1也完成亂序提交。雖然指令5的結(jié)果先于指令1寫回,但是由于指令5是條件預(yù)測(cè)指令,為了保證指令執(zhí)行的正確性,指令5必須在處于它之前的指令全部提交結(jié)束后才能提交指令5,因此指令5需等待指令1提交后提交結(jié)果。同理,指令6、7、8、9只有等指令5提交后才可以亂序提交。亂序提交以條件預(yù)測(cè)的指令為界,實(shí)現(xiàn)局部亂序提交。
以上是基于本發(fā)明原理的相關(guān)實(shí)施方式之一,對(duì)于本領(lǐng)域內(nèi)的一般技術(shù)人員,不花費(fèi)創(chuàng)造性的勞動(dòng),在上述實(shí)施例的基礎(chǔ)上可以做多種變化,同樣能夠?qū)崿F(xiàn)本發(fā)明的目的。但是,這種變化顯然應(yīng)該在本發(fā)明的權(quán)利要求書的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種具有動(dòng)態(tài)提交流水線功能的數(shù)字信號(hào)處理器,內(nèi)核構(gòu)架包括程序控制單元、指令譯碼單元、寄存器文件、執(zhí)行單元;其特征在于,構(gòu)架中還包括用來管理指令動(dòng)態(tài)提交的提交控制臺(tái);所述內(nèi)核框架中程序控制單元分別與譯碼單元和提交控制臺(tái)數(shù)據(jù)連接;提交控制臺(tái)與寄存器文件數(shù)據(jù)連接;譯碼單元分別與執(zhí)行單元和寄存器文件連接;執(zhí)行單元與寄存器文件數(shù)據(jù)連接。
2.根據(jù)權(quán)利要求1的具有動(dòng)態(tài)提交流水線功能的數(shù)字信號(hào)處理器,其特征在于,流水線中的指令順序發(fā)射,亂序執(zhí)行,局部亂序提交。
3.根據(jù)權(quán)利要求1的具有動(dòng)態(tài)提交流水線功能的數(shù)字信號(hào)處理器,其特征在于,所述處理器中的提交控制臺(tái)用來記錄包括條件執(zhí)行指令標(biāo)記、條件的內(nèi)容、預(yù)測(cè)的內(nèi)容、需要提交的寄存器的數(shù)目等。
4.根據(jù)權(quán)利要求1的具有動(dòng)態(tài)提交流水線功能的數(shù)字信號(hào)處理器,其特征在于,處理器中的執(zhí)行單元包含乘除單元、算術(shù)邏輯單元和存儲(chǔ)單元等功能部件,并允許多個(gè)部件同時(shí)執(zhí)行。
全文摘要
本發(fā)明公開了一種具有動(dòng)態(tài)提交流水線功能的數(shù)字信號(hào)處理器,內(nèi)核構(gòu)架包括程序控制單元、指令譯碼單元、寄存器文件、執(zhí)行單元,還包括用來管理指令動(dòng)態(tài)提交的提交控制臺(tái);所述內(nèi)核框架中程序控制單元分別與譯碼單元和提交控制臺(tái)數(shù)據(jù)連接;提交控制臺(tái)與寄存器文件數(shù)據(jù)連接;譯碼單元分別與執(zhí)行單元和寄存器文件連接;執(zhí)行單元與寄存器文件數(shù)據(jù)連接。本發(fā)明在一般處理器體系結(jié)構(gòu)的基礎(chǔ)上添加指令提交控制臺(tái),使得處理器在指令發(fā)射后進(jìn)入譯碼單元,譯碼單元如果識(shí)別出當(dāng)前指令是條件執(zhí)行指令或者有可能產(chǎn)生異常,在將提交命令送往提交控制臺(tái)時(shí)額外添加標(biāo)記,并將指令類型也送入提交控制臺(tái)保存直到指令被提交。
文檔編號(hào)G06F9/38GK101042641SQ20071003986
公開日2007年9月26日 申請(qǐng)日期2007年4月24日 優(yōu)先權(quán)日2007年4月24日
發(fā)明者金榮偉, 李興仁, 劉春暉, 林錦麟, 張達(dá)文, 楊一茜 申請(qǐng)人:上海華龍信息技術(shù)開發(fā)中心