專利名稱:具有功率節(jié)省的vliw處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)處理設(shè)備,諸如VLIW(超長指令字)處理器,它能夠并行執(zhí)行指令字中的多個指令。
背景技術(shù):
VLIW處理器使之能夠以高度的指令平行性執(zhí)行程序。常規(guī)地,在每個指令周期內(nèi),VLIW處理器提取包含固定數(shù)目的大于一個的指令(通常稱作操作)的指令字。VLIW處理器在同一指令周期(或多個周期)內(nèi)并行執(zhí)行這些操作。為此目的,VLIW處理器包含多個功能單元,每個都能夠一次執(zhí)行指令字中的操作之一。通常提供不同類型的功能單元,例如ALU(算術(shù)邏輯單元)、乘法器、轉(zhuǎn)移(branch)控制單元和存儲器存取單元等。通常還包括專用的功能單元,被設(shè)計為加速特定應(yīng)用的程序。因而,例如,可以添加用于執(zhí)行MPEG編碼或解碼的多個部分的功能單元。
在先進(jìn)的VLIW處理器中,可能存在成百個功能單元。原理上,指令字可以包含并行的用于所有這些功能單元的指令。通常,將功能單元組織成一個或多個功能單元的組,指令字每組提供一個指令。當(dāng)至少一些組包含一個以上的功能單元時,分組限制了指令字的長度而不減少功能單元的數(shù)量。
所有的功能單元都不可避免地消耗電源電流。當(dāng)VLIW處理器包括并行操作的許多功能單元時,因而,出現(xiàn)相當(dāng)大的功率消耗。這與電池操作設(shè)備的要求是不一致的。由于與功耗相關(guān)的加熱,這還可能增加在單個封裝內(nèi)操作VLIW處理器所需要的冷卻措施的成本。
美國專利US 5,815,725描述了使用時鐘選通來降低微處理器內(nèi)的功耗。監(jiān)視器電路監(jiān)視微處理器是否進(jìn)入低活動性操作狀態(tài),并且如果是如此的話,它將時鐘信號選通到微處理器。在US 5,815,725中,時鐘選通涉及在唯一部分的時鐘周期內(nèi)禁止時鐘信號,因為微處理器必須繼續(xù)操作。美國專利US 5,661,751描述了期間完全禁止到微處理器的外圍設(shè)備(UART)的時鐘信號的時鐘選通。類似地,美國專利US6,345,336描述了部分超高速緩沖存儲器的時鐘信號的禁止。
時鐘選通降低了功耗,但是當(dāng)應(yīng)用于處理器的指令執(zhí)行部分時,其缺點在于,它降低了執(zhí)行指令的能力。顯著地,US 5,661,751和US6,345,336將時鐘選通應(yīng)用于外圍設(shè)備或輔助電路,而不應(yīng)用于指令執(zhí)行電路或整個指令存儲器。US 5,815,725試圖通過僅在部分時鐘周期內(nèi)禁止時鐘信號來消除完全禁止微處理器的時鐘信號的問題。
發(fā)明內(nèi)容
特別地,本發(fā)明的一個目的是提供一種數(shù)據(jù)處理設(shè)備,其在指令執(zhí)行期間使用功率節(jié)省措施來降低電源消耗,而不降低可以執(zhí)行指令的速率。
本發(fā)明提供一種根據(jù)權(quán)利要求1的數(shù)據(jù)處理設(shè)備。該數(shù)據(jù)處理設(shè)備是這樣一種類型的諸如VLIW處理器,它處理均包含多個指令的指令字。不同的功能單元并行執(zhí)行指令字中的指令。根據(jù)本發(fā)明,構(gòu)建該處理設(shè)備,以使之有可能應(yīng)用功率節(jié)省措施,根據(jù)程序執(zhí)行,例如選擇性地時鐘選通到部分的功能單元和/或存儲單元,將指令提供給功能單元或功能單元組中的相應(yīng)功能單元。在存儲單元,尤其能夠節(jié)省很多功率。
本發(fā)明基于這樣的見識,即存在有用的應(yīng)用程序,其中功能單元的使用隨程序段而改變。在這樣的應(yīng)用中,可以事先確定在哪個程序段中將使用哪一些功能單元。例如,在涉及MPEG編碼的程序中,僅在特定的程序段內(nèi)使用用于這種編碼內(nèi)的特定任務(wù)的專用功能單元。當(dāng)處理器執(zhí)行來自程序段的指令字時,可以使用功率節(jié)省來禁止已知在該程序段內(nèi)將不使用的功能單元和/或存儲單元的時鐘信號。
當(dāng)指令字包含專用于其中應(yīng)用功率節(jié)省措施的一個功能單元的指令的字段時,該設(shè)備也可以自動地將功率節(jié)省措施應(yīng)用于指令存儲器部分,當(dāng)將時鐘選通應(yīng)用于該功能單元時所述指令存儲器部分提供該字段。更普遍地,處理設(shè)備可以將功率節(jié)省措施應(yīng)用于任何資源,例如專用于應(yīng)用功率節(jié)省措施的功能單元的寄存器堆或外圍電路。
已經(jīng)發(fā)現(xiàn)在許多有用的應(yīng)用程序中,不同功能單元的使用是相關(guān)的。在不使用一個功能單元的程序段內(nèi),也不使用某些相關(guān)的功能單元。因此,將這樣的功能單元組合成一組并設(shè)置電路以致于時鐘選通禁止時鐘信號到該組內(nèi)所有的功能單元是有利的。當(dāng)該組不包含在一個程序段內(nèi)使用的功能單元時,可以使用時鐘選通來禁止時鐘信號到該組的所有功能單元。而且,當(dāng)在每組處理器中共享資源時,還可以將時鐘選通應(yīng)用于資源。
將參考圖1更詳細(xì)地描述根據(jù)本發(fā)明的處理設(shè)備和處理方法的這些和其它的目的與優(yōu)點,其中圖1圖示一種處理設(shè)備。
具體實施例方式
圖1圖示一種處理設(shè)備,它包含具有存儲單元12a-g的存儲器系統(tǒng)10、控制器14和指令執(zhí)行單元7,其中指令執(zhí)行單元7包含功能單元18a-c的組70a-g、寄存器堆72和指令地址計數(shù)器單元74。指令地址計數(shù)器單元74具有耦合到控制器14的指令地址輸出??刂破?4具有耦合到存儲單元12a-g和組70a-g的選擇輸出16。此外,控制器14具有耦合到存儲單元12a-g的地址輸出。存儲單元12a-g具有耦合到相應(yīng)組70a-g和寄存器堆72的指令輸出。寄存器堆具有耦合到組70a-g的操作數(shù)/結(jié)果輸出/輸入端口(未單獨圖示)。組70a-g均包含一個或多個功能單元18a-c(僅明確圖示一組功能單元),所有功能單元均具有耦合到控制器14的選擇輸出16的時鐘選通輸入、耦合到存儲單元12a-g的操作代碼輸入、耦合到寄存器堆72的操作數(shù)輸入和耦合到寄存器堆72的結(jié)果輸出(除了用存儲單元12a-g、功能單元18a-c的組70a-g和寄存器堆72之間的單個連接表示的時鐘選通輸入之外,全部未圖示)。這些組中的一組70a-g具有耦合到指令地址計數(shù)器單元74的轉(zhuǎn)移地址輸出。
在操作中,處理設(shè)備操作在連續(xù)指令周期內(nèi)。在連續(xù)的指令周期內(nèi),地址計數(shù)器單元74將連續(xù)指令的地址輸出給控制器14(這些指令將被稱為“連續(xù)的”,因為連續(xù)地執(zhí)行相應(yīng)的指令,盡管在轉(zhuǎn)移的情況下地址可能是不連續(xù)的)??刂破鲗闹噶畹刂分型茖?dǎo)出的進(jìn)一步指令地址輸出到存儲單元12a-g。這些進(jìn)一步指令地址尋址在存儲單元12a-g內(nèi)的指令存儲位置(memory location)。存儲單元12a-g將來自這些地址的指令輸出給指令執(zhí)行單元7。從存儲單元12a-g輸出的指令的組合構(gòu)成具有用于各種指令的字段的指令字。
控制器14還輸出被應(yīng)用于存儲單元12a-g的選擇信號。每個選擇信號表示來自相應(yīng)存儲單元12a-g的指令是否是當(dāng)前指令周期所需要的。當(dāng)選擇信號表示不需要來自特定存儲單元12a-g的指令時,將該存儲單元切換到功率節(jié)省狀態(tài),例如通過禁止在該特定存儲單元12a-g內(nèi)的時鐘信號。這些時鐘信號包括例如通知存儲單元的輸出驅(qū)動器改變從特定存儲單元12a-g輸出的指令的時鐘信號,或者用于預(yù)先充電比特線和/或字線等的時鐘信號。當(dāng)禁止這些時鐘信號時,節(jié)省了功率,例如因為不需要充電電流用于輸出、比特線和/或字線。其它的節(jié)省功率的方式包括從功率節(jié)省期間不需要保持狀態(tài)的電路中斷開電源。
功能單元18a-c的每一組70a-g接收來自相應(yīng)一個存儲單元12a-g的指令和被應(yīng)用于那個存儲單元12a-c的選擇信號。該選擇信號控制是否將該組功能單元切換到功率節(jié)省狀態(tài),例如通過禁止在組70a-g中的功能單元18a-c內(nèi)的時鐘信號。被禁止的時鐘信號包括例如在來自功能單元18a-c的輸出驅(qū)動器的輸出信號中引起邏輯轉(zhuǎn)換的時鐘信號,或者在預(yù)先充電的信號線內(nèi)涉及的時鐘信號。而且,某個功能單元包含在禁止時鐘時消耗較少功率的數(shù)據(jù)存儲器。當(dāng)禁止這些時鐘信號時,節(jié)省了功率,例如因為不需要用于輸出或信號線的充電電流。
在其中選擇信號并不表示應(yīng)當(dāng)禁止時鐘信號的那些組中,該組70a-g的功能單元18a-c確定該組70a-g的哪一個功能單元18a-c應(yīng)當(dāng)執(zhí)行來自相應(yīng)存儲單元12a-g的指令,并且該功能單元讀取通過來自寄存器堆72(如果有的話)的指令所尋址的操作數(shù),并將結(jié)果提供給寄存器堆72(如果有的話)。
盡管最好在協(xié)作存儲單元12a-g和組70a-g內(nèi)禁止時鐘,但將理解當(dāng)僅在它們之一內(nèi)禁止時鐘信號時,已經(jīng)獲得功率優(yōu)點。
控制器14能夠獨立于其它存儲單元12a-g和/或組70a-g選擇和取消選擇存儲單元12a-g和/或組70a-g??梢砸远喾N方式來控制選擇。在一種實施例中,在執(zhí)行存儲單元12a-g中的指令字的程序之前,使用裝載到控制器14內(nèi)的控制存儲器(未圖示)中的存儲映射信息。在這種情況下,存儲映射信息表示對于來自指令地址計數(shù)器單元74的指令地址的多個地址范圍來說應(yīng)當(dāng)啟動哪一個選擇信號。當(dāng)控制器14接收來自指令地址計數(shù)器單元74的指令地址時,它檢測包含該指令地址的地址范圍,并提供為該地址存儲的選擇信號。
在另一種實施例中,從由執(zhí)行單元7執(zhí)行的指令字中命令選定的選擇信號的后續(xù)關(guān)閉或開啟。為此目的,可以在組70a-c之一內(nèi)提供特殊的選擇控制功能單元,它執(zhí)行包含應(yīng)當(dāng)接收選擇信號的組70a-g的指示的指示。這樣的指令的形式例如可以是帶有用于不同組的相應(yīng)比特的掩碼(mark)以表示是否應(yīng)當(dāng)選擇該組,或者形式是表示應(yīng)當(dāng)啟動或停止其選擇的組的編號。因而,可以選擇其中將禁止時鐘信號的不同子集(組)的功能單元。在一個極其簡單的實施例中,其中可以僅在一個這樣的子集內(nèi)禁止時鐘信號,該命令不需要指定子集。
盡管圖1圖示所有的組70a-g接收選擇信號,但將理解本發(fā)明并不限于對所有組使用選擇信號。實際上,控制器14可以不具有用于一些組70a-g的選擇輸出,并且這些組中的一些組可以不具有選擇輸入。因而,這些組始終是活動的。優(yōu)選地,至少一個組始終是活動的。而且,盡管圖示每組接收它自己的可獨立設(shè)置的選擇信號,但將理解實際上一些組可以接收共享的選擇信號。此外,盡管已經(jīng)無區(qū)別地圖示所有的組,但將理解這些組實際上可以是不同的在一些組內(nèi)的功能單元可以接收文字?jǐn)?shù)據(jù),例如來自存儲單元12a-g的轉(zhuǎn)移地址或常數(shù),而其它的組僅接收從寄存器堆72提供的操作代碼、數(shù)據(jù),一些組可以比其他組接收更大數(shù)量的操作數(shù),或者產(chǎn)生更大數(shù)量的結(jié)果。
如圖所示,組70a-g之一具有來自轉(zhuǎn)移功能單元(未圖示)的連接,以響應(yīng)于指令而更新指令地址計數(shù)器單元74內(nèi)的指令地址。轉(zhuǎn)移功能單元例如在它確定已經(jīng)滿足某個條件時執(zhí)行這個更新。更新可以是絕對的(替換地址計數(shù)器單元74內(nèi)的程序計數(shù)器值)或相對的(對程序計數(shù)器值的增加)。這通過例子來圖示。實際上,一個以上的組70a-g可以包含耦合到指令地址計數(shù)器單元74的一個或多個轉(zhuǎn)移功能單元。
此外,盡管對于相應(yīng)組的功能單元70a-g圖示了單獨的存儲單元12a-g,但將理解一些組可以共享存儲單元12a-g,所以存儲單元并行地生成用于這些組的指令(通常,這些存儲單元將具有比其它存儲單元12a-g更寬的指令輸出)。當(dāng)然,僅當(dāng)連接到存儲單元12a-g的功能單元組70a-g中沒有一個需要指令時,才在這樣一個存儲單元內(nèi)完全禁止時鐘信號。這可以使用檢測器來確定是否沒有一個相關(guān)組的功能單元需要指令來實現(xiàn),或者可以通過來自程序的指令來表示。
此外,在一些設(shè)計中,可以將寄存器堆72劃分成多個寄存器堆,其中一些僅耦合到功能單元18a-c的組70a-g的子集,有時甚至僅耦合到一組70a-g,在這種情況下,可以將寄存器堆視為相關(guān)組的一部分。在后一情況下,可以將功率節(jié)省應(yīng)用于僅連接到當(dāng)前未被選擇的組70a-g之一的寄存器堆,例如通過禁止在該寄存器堆內(nèi)的時鐘信號。當(dāng)一個以上的組訪問寄存器堆時,在來自控制器14的選擇信號禁止在已訪問該寄存器堆的所有組內(nèi)的時鐘信號時,可以將功率節(jié)省應(yīng)用于該寄存器堆。為此目的,控制器14可以提供有用于此寄存器堆的單獨選擇輸出,以便能夠清楚地控制該寄存器堆內(nèi)的功率節(jié)省。可選擇地,可以提供檢測電路,以檢測所有涉及的組70a-g的選擇信號是否通知應(yīng)當(dāng)應(yīng)用功率節(jié)省,并且如果是的話,則檢測電路還通知應(yīng)當(dāng)將功率節(jié)省也應(yīng)用于該寄存器堆。
實際上,處理設(shè)備可以使用指令執(zhí)行的流水線操作。即,在同一指令周期內(nèi),控制器14可以處理一個指令地址,存儲單元12a-g可以檢索用于在前指令地址的指令,并且功能單元18a-c可以處理用于一個或多個其他另外的前面的指令地址的一個或多個處理級。在這種情況下,功率節(jié)省或更具體地說時鐘信號的禁止也可以進(jìn)行流水線操作,例如通過將來自控制器14的選擇信號對于存儲單元12a-g和功能單元18a-c的不同流水線級延遲不同數(shù)量的指令周期。
在程序執(zhí)行之前,最好應(yīng)當(dāng)確定哪一些程序部分需要哪一些組70a-g的功能單元。這是考慮功能單元18a-c的專用功能的問題,但是這還可以取決于在程序的不同部分內(nèi)不同要求的平行性的數(shù)量。例如,在內(nèi)部循環(huán)中可能需要更高數(shù)量的平行性。
數(shù)據(jù)處理設(shè)備的程序設(shè)計開始于確定例如從高級計算機語言的程序中編譯得出的必須執(zhí)行的操作的描述。隨后,執(zhí)行步驟,以便將這些操作映射到功能單元。這一映射步驟允許某種映射自由度。例如,可以在一個算術(shù)邏輯功能單元上順序地或者在不同的算術(shù)邏輯功能單元上并行地執(zhí)行一些算術(shù)和邏輯操作。在映射步驟期間,可以識別出內(nèi)部循環(huán)和程序的周圍部分(這在每次執(zhí)行程序時可以分別被執(zhí)行許多次、僅一次或若干次)。在這種情況下,最好映射內(nèi)部循環(huán)的操作,以允許不同功能單元內(nèi)的并行執(zhí)行,而最好使用順序執(zhí)行將來自周圍部分的操作映射到一個或有限子集的功能單元。而且,在映射步驟期間,可以僅將一些操作映射到專用功能單元或一組功能單元。某些MPEG編碼或編碼功能是這樣的示例。
在選擇步驟中,識別在程序的相應(yīng)段內(nèi)使用的功能單元(組)的組合,并編譯表示在哪一些段內(nèi)使用哪一些組合的信息。隨后,在程序的執(zhí)行期間使用此信息來選擇性地在執(zhí)行來自一個程序段的指令時在該程序段內(nèi)不被使用的那些功能單元(組)內(nèi)禁止時鐘信號,例如以存儲映射信息的形式,或者以命令的形式,以禁止或啟用在選定的功能單元內(nèi)的時鐘信號。
權(quán)利要求
1.一種數(shù)據(jù)處理設(shè)備,該設(shè)備包括指令存儲器系統(tǒng),被安排為輸出指令字,能夠包含多個指令,相應(yīng)的指令字響應(yīng)于相應(yīng)的指令地址而被輸出;指令執(zhí)行單元,包括多個功能單元,每個功能單元能夠與通過其他功能單元對指令字中的其它指令的執(zhí)行并行執(zhí)行該指令字中的相應(yīng)指令;功率節(jié)省電路,被安排為在程序執(zhí)行期間將可選擇子集的功能單元和/或?qū)⒅噶钭种械闹噶钐峁┙o功能單元的指令存儲器的部分切換到功率節(jié)省狀態(tài),該功率節(jié)省電路被安排為根據(jù)程序執(zhí)行來選擇該子集內(nèi)的功能單元和/或指令存儲器的部分。
2.根據(jù)權(quán)利要求1的數(shù)據(jù)處理設(shè)備,其中在所述功率節(jié)省狀態(tài)中禁止時鐘信號到該子集內(nèi)的功能單元和/或指令存儲器的部分。
3.根據(jù)權(quán)利要求1的數(shù)據(jù)處理設(shè)備,其中功能單元被組成一個或多個功能單元的組,在每個相應(yīng)組內(nèi)的一個或多個功能單元從指令字內(nèi)的相應(yīng)指令字段接收指令,每次對于通過該組內(nèi)的功能單元之一的執(zhí)行,該功率節(jié)省電路選擇每組中被切換到功率節(jié)省狀態(tài)的功能單元。
4.根據(jù)權(quán)利要求1的數(shù)據(jù)處理設(shè)備,其中指令存儲器系統(tǒng)包括多個存儲單元,每個存儲單元對于相應(yīng)功能單元或功能單元組提供指令的指令字內(nèi)相應(yīng)的指令字段,時鐘選通電路被安排為將這樣的存儲單元切換到功率節(jié)省狀態(tài),其中這樣的存儲單元對于被切換到功率節(jié)省狀態(tài)的可選擇功能單元提供指令字段。
5.根據(jù)權(quán)利要求4的數(shù)據(jù)處理設(shè)備,其中僅對于相應(yīng)指令地址范圍內(nèi)的指令字,存儲單元均包括用于每個指令字的至少一部分的存儲位置,該指令存儲器系統(tǒng)允許不同存儲單元的相應(yīng)范圍的部分重疊。
6.根據(jù)權(quán)利要求1的數(shù)據(jù)處理設(shè)備,其中該功率節(jié)省電路被安排為根據(jù)與指令字相關(guān)的指令地址來選擇子集。
7.根據(jù)權(quán)利要求1的數(shù)據(jù)處理設(shè)備,其中該功率節(jié)省電路被安排為在由該數(shù)據(jù)處理設(shè)備執(zhí)行的程序內(nèi)包含的一個或多個指令的控制下選擇該子集。
8.根據(jù)權(quán)利要求7的數(shù)據(jù)處理設(shè)備,其中所述一個或多個指令指定該子集。
9.一種使用根據(jù)權(quán)利要求1的數(shù)據(jù)處理設(shè)備執(zhí)行指令程序的方法,該方法包括識別程序的一部分,其中指令字并不包含用于特定一組內(nèi)的功能單元的指令;和在執(zhí)行該程序的所述識別部分期間,使用功率節(jié)省電路將并未包含在特定一組內(nèi)的功能單元和/或耦合到該特定一組的存儲單元切換到功率節(jié)省狀態(tài)。
全文摘要
一種數(shù)據(jù)處理設(shè)備具有指令存儲器系統(tǒng),其被安排為輸出能夠包含多個指令的指令字,相應(yīng)的指令字響應(yīng)于相應(yīng)的指令地址而被輸出。指令執(zhí)行單元包括多個功能單元,每個能夠單元能夠與其他的功能單元對指令字中的其它指令的執(zhí)行并行地執(zhí)行指令字中的相應(yīng)指令。提供功率節(jié)省電路,以便在其它的功能單元和指令存儲器的部分在正常的功率消耗狀態(tài)內(nèi)繼續(xù)處理指令時,將可選擇子集的功能單元和/或指令存儲器部分切換到功率節(jié)省狀態(tài)。功率節(jié)省電路根據(jù)程序執(zhí)行來選擇功能單元和/或指令存儲器部分。
文檔編號G06F1/32GK1688965SQ03823968
公開日2005年10月26日 申請日期2003年9月17日 優(yōu)先權(quán)日2002年10月11日
發(fā)明者C·A·阿巴平托, R·塞圖拉曼, B·斯里尼瓦桑, H·J·A·M·佩特斯, R·佩塞特洛皮斯 申請人:皇家飛利浦電子股份有限公司