專利名稱:低功率匯編器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于使用時間穩(wěn)定的多指令字處理設(shè)備來處理數(shù)據(jù)的方 法,以及一種執(zhí)行所述用于處理數(shù)據(jù)的方法的時間穩(wěn)定的多指令字?jǐn)?shù)據(jù)處理設(shè) 備。本發(fā)明還涉及一種用于生成二進(jìn)制程序代碼形式的多指令字集的方法,以 及一種使用所述用于生成多指令字集的方法的編譯器程序產(chǎn)品。
背景技術(shù):
可編程處理器可以是通用處理器或者專用的指令集處理器。它們可以用于 處理不同鄉(xiāng)的信息,包括聲音、圖像和視頻。如果是專用的指令集處理器, 處理器體系結(jié)構(gòu)和指令集是定制的,逸就顯著地降低了系統(tǒng)的成本和功耗。處 理器的體系結(jié)構(gòu)通常由固定數(shù)據(jù)通路組成,該固定數(shù)據(jù)通路受控制字集的控 制。每一個控制字控制數(shù)據(jù)通路的部分,這些部分可以包括寄存器地址和用于算術(shù)邏輯單元(ALU)或其它功能單元的操作代碼。通常借助于把指令的二進(jìn)制 格式翻譯成相應(yīng)的控制字的指令解碼器,或者借助于微存儲器,也就是直接包 含控制字的存儲器,每一指令集生成一新的控制字集。典型的是,控制字表示 像R1SC的操作,包括操作代碼、兩個操作數(shù)寄存器索弓l和結(jié)果寄存器索弓l。 操作數(shù)寄存器索弓l和結(jié)果寄存器索弓l弓照寄存器堆中的寄存器。
要是超長指令字(Very Large Instruction Word) (VLIW)處理器,多個指 令就被封裝成一個長的指令,所謂的VLIW指令。VLIW處理器使用多個、獨(dú) 立的功能單元來并,"也執(zhí)行所述多個指令。該處理器允許在程序中采用指令級 的并行性,因此允許一次執(zhí)行一個以上的指令。由于這種并行處理的形式,處 理器的性能得到改善。為了使軟件程序在VLIW處理器上運(yùn)行,它必須翻譯成 VLIW指令集。編譯器試圖ffl31優(yōu)化并行性而使執(zhí)衍呈序所需的時間減到最少。 編譯器在分配給單個VLIW指令的指令可以并行執(zhí)行的約束以及數(shù)據(jù)相關(guān)性的 約束下,將指令結(jié)合成VLIW指令。如果對于一個或者更多的功能單元來說沒 有任何有意義的處理能夠在一定時鐘周期里內(nèi)發(fā)生,所謂的空操作(NOP)指
令就在用于該特定的功能單元的VLIW指令中加以編碼。為了減小代碼長度, 并因而在要求的存儲器大小和要求的存儲器帶寬方面節(jié)省成本,在數(shù)據(jù)穩(wěn)定的 VLIW處理器中空操作(NOP)指令的緊湊表示可以使用,例如,該NOP操 作艦附在VLIW指令的前端的特殊首部中的一位加以編碼,導(dǎo)致壓縮的VLIW 指令。為了控制處理器的數(shù)據(jù)流水線中的操作,兩種不同的機(jī)制普遍地用在計(jì)算 機(jī)體系結(jié)構(gòu)中 穩(wěn)定的和時間穩(wěn)定的編碼,正如在1997年3月,正EE的 會議錄,第85巻,第3其月,G. Goossens、 J.vanPraet、 D丄anneer、 W. Geurts、 A. Kifli、 C. Liem禾口 P. Paulin的,"Embedded software in real-time signal processing systems: design technologies"中公開的那樣。要是數(shù)據(jù)穩(wěn)定的編碼,使處理器 的指令集的一部分的每一個指令控制必須在具體數(shù)據(jù)項(xiàng)遍歷(traversing)數(shù)據(jù) 流水線時在它上面執(zhí)行的一完整操作序列。 一旦指令已經(jīng)從程序讀取并被解 碼,處理器控制器硬件就將確保組成操作在正確的機(jī)器周期中執(zhí)行。要是時間 穩(wěn)定的編碼,使處理器的指令集的一部分的每一個指令控制必須在單個的機(jī)器 周期中執(zhí)行的一完整的操作集。這些操作可以應(yīng)用于遍歷數(shù)據(jù)流水線的幾個不 同的數(shù)據(jù)項(xiàng)。在該情況下設(shè)置和維護(hù)數(shù)據(jù)流水線是程序員或編譯器的職責(zé)。在 機(jī)器代碼程序中結(jié)果的流7jC線時間表是完全可見。時間穩(wěn)定的編碼經(jīng)常用在專 用的處理器中,因?yàn)樗愿蟮拇a長度為代價(jià),節(jié)省了為延遲存在于指令中 的控制信息所需的硬件開銷??删幊痰奶幚砥?,例如VLIW處理器,在NOP指令的執(zhí)行期間可能仍然 無謂地消耗功率。和NOP指令相關(guān)的問題特別地存在于平行處理器中,每當(dāng) 這些并行處理器需要執(zhí)行比較小的并行代碼的時候,例如控制占優(yōu)勢的代碼。 特別是在高度并行的VLIW處理器盼瞎況下,這在代碼中導(dǎo)致大量NOP指令, 并因而導(dǎo)致在NOP指令的執(zhí)行期間的不必要的功率消耗。傳統(tǒng)上,NOP指令 是使用處理設(shè)備認(rèn)可的專用值^it行編碼的,并不導(dǎo)致處理設(shè)備的狀態(tài)改變。 但是,由于NOP指令的默認(rèn)代碼顯然必須不同于有用的指令的,在有用的指 令之后或之前,這樣對NOP指令進(jìn)行編碼導(dǎo)致在NOP指令的執(zhí)行期間的信號 躍ii以及因之的不必要的功率消耗。為了降低在NOP指令的執(zhí)行期間的功率 消耗,可以使用一種稱為時鐘門控的技術(shù),該技術(shù)關(guān)閉沒使用的處理器數(shù)據(jù)通 道的部分。時鐘門控的使用不僅降低了未4頓的順序邏輯浪費(fèi)的功率量,而且
被時鐘門禁用的(流水線)寄存器還將防止信號躍遷波動到未使用的組合邏輯, 并因而進(jìn)一步地防止了不必要的功率消耗。然而,后者ffi51存在的(流水線) 寄存器的數(shù)量和這些寄存器的確切位置而得到很好的確定。低功率的處理器理 想的是具有不深的流水線,以避免需要解決不利的流水線效應(yīng),例如長分支等 待時間,所要求的附加的耗電硬件。后者特別適用于計(jì)算效率至關(guān)緊要的處理器,因?yàn)檫@些處理器常常高度并行,即具有許多魏槽(issue slot),并且創(chuàng)建深 的流水線會在每一個發(fā)起槽中加入相當(dāng)大的硬件開銷。出于使硬件的數(shù)量減到 最少的原因,這些高度并行的處理器常常使用時間穩(wěn)定的指令編碼,以使得根 據(jù)單個高度并行的指令來操縱大量的硬件資源而不用陷入主指令讀取和解碼的 瓶頸成為可能。
US6,535,984描述了一種基于所謂的代理NOP指令的使用的,用于VLIW 處理器的功率降低的技術(shù)。通過以VLIW處理器的相同發(fā)起槽的相鄰非NOP 指令來代替NOP指令,并同時使代替的指令的保護(hù)信息等于假,以働率碼電 路不發(fā)送任何執(zhí)行/使能信號給特定的功能單元,由NOP指令引起的信號躍遷 的數(shù)目得到P爭低。這些帶著假保護(hù)信息的代替的指令叫做代理NOP指令。所 述技術(shù)依賴于數(shù)據(jù)穩(wěn)定的指令編碼被使用的事實(shí),其中,與一指令相關(guān)的所有 信息都編碼在單個處理器周期中發(fā)起的單個VLIW指令的原子部分中。而且, 這種技術(shù)假定該VLIW處理器中的每一個發(fā)起槽都支持保護(hù)(guarding)。此外, 該技術(shù)假定由該VLIW處理器中任何一個發(fā)起槽支持的^操作都可以得到保 護(hù),即是有斜牛的。然而,這種技術(shù)不適合于時間穩(wěn)定的VLIW處理器。首先, 在時間穩(wěn)定的編碼中,與單個指令相關(guān)的信息典型的是散布在不同周期中發(fā)起 的幾個VLIW指令中,這意味著對應(yīng)單個指令的關(guān)于NOP指令的信息散布在 多個VLIW指令中。第二用于時間穩(wěn)定的處理器的指令常常不將操作編碼成 原子實(shí)體。作為替代的是,控制信息被編碼以直接操作處理器資源,例如功能 單元、寄存器堆、總線多路復(fù)用器等等。"抽象的"指令信息與實(shí)際資源操縱 的這種去耦,允許諸如多信道廣播此類的技術(shù),其中單個操作的結(jié)果可以在單 個處理器周期中隨意地寫入多個寄存器堆。例如,在數(shù)據(jù)穩(wěn)定的編碼中,回寫 信息,即將結(jié)果的繊回寫到寄存器堆中的控制信息,通常是按操作結(jié)果編碼 在分離的指令字段中。在該情況下每一個字段都包含一指定其中應(yīng)當(dāng)寫入相應(yīng) 結(jié)果的寄存器的目的地寄存器地址。在相同的結(jié)果要寫入多個寄存器堆的情況 下,要按操作結(jié)果編碼在多個字段中的多個目的地寄存器地址應(yīng)當(dāng)是必需的。 皿常不是以數(shù)據(jù)穩(wěn)定的指令格式來支持的,因?yàn)闆]有任何有效編碼存在,特 別是如果正接收相同結(jié)果的目的地的數(shù)目可以變化??晒┻x擇的是,分離的指 令需要加至暇序中以明確地將結(jié)果拷貝到其它寄存器堆。時間穩(wěn)定的編碼允許 使用分離的字段來按寄存器堆寫端口對回寫信息進(jìn)行編碼,而不是按操作結(jié) 果。因此,我們可以按寄存器堆寫端口來指定應(yīng)當(dāng)選擇明卜個操作結(jié)果來寫入 該寄存器堆,而不是按操作結(jié)果來指定結(jié)果應(yīng)當(dāng)寫入哪一個寄存器堆。用這個 概念,相同的結(jié)果可以在單個周期中寫入任意數(shù)目的寄存器堆,而不影響必需 的指令字段的數(shù)目。作為這種去耦的結(jié)果,時間穩(wěn)定的指令中相同的字段可以攜帶相應(yīng)于在不同時鐘周期在不同發(fā)起槽上執(zhí)行的操作的信息。在周期i+2 G =0, 1, 2……)發(fā)起的指令中給定的寄存器堆寫端口字段可以選擇由第一發(fā) 起槽產(chǎn)生的結(jié)果作為兩個周期前在周期i中發(fā)起的指令的結(jié)果,而在周期i+3 發(fā)起的下一個指令中它可以選擇由第二發(fā)起槽產(chǎn)生的結(jié)果作為在一個周期前在 周期i+2中魏的指令的結(jié)果。因此,我們不能按對屬于單個完整NOP操作 的所有控制信息進(jìn)4彌碼的指令來標(biāo)識單個指令位群。因此這禾中方法不能用于時間穩(wěn)定的處理器,是現(xiàn)有降低VLIW處理器的 功率用量的方法的缺點(diǎn)。發(fā)明內(nèi)容本發(fā)明的一個目的是提供一種用于使用時間穩(wěn)定的多指令字處理器來處理 數(shù)據(jù)的方法,該方法在維持指令的有效編碼和解碼的同時,降低了 NOP指令 的執(zhí)行期間的功耗。這個目的是以一種用于4柳被安排為并行地執(zhí)行多個指令的時間穩(wěn)定的多 指令字處理設(shè)備來處理數(shù)據(jù)的方法來實(shí)現(xiàn)的,所述方法包括下列步驟生成一 個多指令字集,其中每一個多指令字包括多個指令字段,其中每一個指令字段 對用于該處理設(shè)備的相應(yīng)資源的控制信息進(jìn)行編碼,并且其中與空操作指令相 關(guān)的指令字段以及相鄰多指令字的相應(yīng)指令字段之間的位改變被減到最少;在 寄存器堆中存儲輸入數(shù)據(jù);基于從多指令字集獲得的控制信息處理從該寄存器 堆中檢索的數(shù)據(jù);使用第一專用空操作代碼在空操作指令的執(zhí)行期間禁止將結(jié) 果數(shù)據(jù)回寫該寄存器堆。該指令字段是以這樣的方式來加以編碼的,如果與NOP
指令相關(guān)的控制信息被編碼,用于編碼這些NOP指令字段的值就盡可能地與 相鄰多指令字的相應(yīng)字段重復(fù)。結(jié)果,該處理設(shè)備中相應(yīng)的組合邏輯會攜帶與 在前面的或隨后的周期中的相同的值,因而出現(xiàn)比較小的數(shù)據(jù)躍遷的波動,因 此出現(xiàn)比較小的不必要的功耗。為了避免在NOP操作的執(zhí)行期間將結(jié)果數(shù)據(jù) 回寫到寄存器堆,專用的NOP代碼被用來禁止結(jié)果娜的回寫。因此,在NOP 指令的執(zhí)行期間該處理器的狀態(tài)沒有改變,但是功耗降低。在NOP指令的編 碼期間,對于一些指令字段,來自另一編碼指令的值被重復(fù),而對于其它指令 字段,使用專用的值,這使得編碼是高效的。至于其它任何指令,NOP指令的 解碼是以一致的方式來執(zhí)行的。一個根據(jù)本發(fā)明用于處理數(shù)據(jù)的方法的實(shí)施例,其特征在于本發(fā)明還包括 該步驟,4OT用于編碼操作碼的第二專用空操作代碼鄉(xiāng)一步防止在空操作指 令的執(zhí)行期間處理設(shè)備的狀態(tài)改變。對于一些發(fā)起槽,在通過重復(fù)相鄰多指令 字的相應(yīng)字段的操作碼5W NOP操作碼指令字段進(jìn)纟f編碼的時候,這可能在 NOP操作的執(zhí)行期間導(dǎo)致處理設(shè)備的狀態(tài)改變。ilil使用用于對上3^作碼進(jìn) 行編碼的專用NOP代碼,可以防止這種狀態(tài)改變。一禾種艮據(jù)本發(fā)明的用于處理數(shù)據(jù)的方法的實(shí)施例,其特征在于,在計(jì)算機(jī) 程序的編譯之后得到的多指令字集中,相鄰多指令字與所述包括與該空操作指 令相關(guān)的指令字段的多指令字相鄰。使相應(yīng)字段的值與相鄰多指令字重復(fù)是相 對容易的,僅僅需要記住在正在翻譯的當(dāng)前指令之前和之后的指令。直線代碼 形式的,即沒有跳轉(zhuǎn)的,NOP指令的執(zhí)行期間的功耗得到降低。一個根據(jù)本發(fā)明的用于處理數(shù)據(jù)的方法的實(shí)施例,其特征在于,正如從簿 記信息(profiling information)獲得的那樣,在多指令集的執(zhí)行期間,相鄰多指 令字很可能與所述包括與空操作指令相關(guān)的指令字段的多指令字相鄰。使用從 禾M^執(zhí)行獲得的簿記信息,在給定的程序中最經(jīng)常占用的通路可以得到分析, 并且可以確定在執(zhí)行期間哪一個指令很可能在給定的指令之前或之后。在編碼 期間重復(fù)用于對在給定多指令字之前或之后的多指令字的指令字段進(jìn)行編碼的 值,倘若與那些字段相關(guān)的控制信息沒有導(dǎo)致處理設(shè)備的狀態(tài)改變,f腿一步 降低了 NOP指令的執(zhí)行期間的功耗。根據(jù)本發(fā)明, 一種安排來執(zhí)行如權(quán)利要求1所述用于處理數(shù)據(jù)的方法的處 理設(shè)備,包括為多個指令的并行執(zhí)行安排的多個發(fā)起槽;可被所述多個發(fā)起
槽訪問的寄存器堆;用于耦合所述多個槽和所述寄存器堆的通信網(wǎng)絡(luò);被 安排來基于從多指令字集獲得的控制信息來控制處理設(shè)備的控制器。結(jié)果,處 理設(shè)備中相應(yīng)的組,輯會攜帶與之前或之后的周期中相同的值,因此比較小 的數(shù)據(jù)躍遷的波動出現(xiàn),因而比較小的不必要的功耗出現(xiàn)。因此,在NOP指 令的執(zhí)行期間,處理器的狀態(tài)不改變,而功耗得到了降低。該處理設(shè)備的一個實(shí)施例,其特征在于該寄存器堆是分布式寄存器堆。分 布式寄存器堆的優(yōu)點(diǎn)是按照寄存器堆段它要求比較少的讀和寫端口,導(dǎo)致在硅 面積方面更小的寄存器堆。此外,在與中央寄存器堆相比的時候,在分布式寄 存器堆中的寄存器要求比^4、的比特。該處理設(shè)備的一個實(shí)施例,其特征在于,該通信網(wǎng)絡(luò)是部分連接的通信網(wǎng) 絡(luò)。在與,接的通信網(wǎng)絡(luò)相比的時候,部分連接的網(wǎng)絡(luò)常常比較不時間關(guān)鍵 (time-cntical)并且就代碼長度、面積和功耗來說比較不貴,特別是在大數(shù)目 的執(zhí)行單元的情況下。該處理設(shè)備的一個實(shí)施例其特征在于,該處理設(shè)備是時間穩(wěn)定的超長指令 字處理器。時間穩(wěn)定的VLIW處理器允許并行地執(zhí)行多個指令,提高了操作的 整體速度,同時具有相對簡單的硬件。盡管這些處理器通常具有不深的流水線, M31組合邏輯的信號躍遷的波動,在NOP指令的執(zhí)行期間還是得到了降低, 因此功耗也在這期間得到了降低。根據(jù)本發(fā)明,在權(quán)利要求9中要求了一種用于生成二進(jìn)制程序代碼形式的 多指令字集的方法。該方法生成一指令集,該指令集允許在包括NOP指令的 多指令字集的執(zhí)行期間降低功耗,而同時對于給定的處理設(shè)備來說幾乎不要求 在指令解碼器方面的任何硬件改變。根據(jù)本發(fā)明,在權(quán)利要求10中要求了一種安排來4吏用用于生成指令集的 方法來生成1制禾游代碼形式的指令序歹啲編譯器禾聘產(chǎn)品。
圖1示出了根據(jù)本發(fā)明的第一 VLIW處理器的示意框圖。 圖2示出了可以由第一 VLIW處理器來執(zhí)行的多指令字集。 圖3示出了根據(jù)本發(fā)明的第二 VLIW處理器的示意框圖。 圖4示出了可以由第二 VLIW處理器來執(zhí)行的多指令字集。
具體實(shí)施例方式參考圖1和圖3,示意性框圖示出了一個VLIW處理器,包括兩個發(fā)起槽 IS。和IS,,以及兩個寄存器堆RF。和RF,。發(fā)起槽IS。和IS,經(jīng)由連接網(wǎng)絡(luò)CN 耦合到寄存器堆RF。和RF,。寄存器堆RFQ和RF,都各自具有八個寄存器。發(fā) 起槽IS。具有兩個功能單元,運(yùn)敦邏輯單元(ALU)以及乘法單元(MPU)。 功能單元ALU和MPU都經(jīng)由連接ipoo和rpQ1耦合到寄存器堆RF。。功能單元 ALU在內(nèi)部具有零流水線級,可以執(zhí)七個不同的操作力B、減、邏輯AND、 邏輯OR、邏輯XOR、邏輯左移位和邏輯右移位,這些可以分別通鵬作碼, 即操作代碼,0到6來控制。功能單元MPU在內(nèi)部具有一個流水線級,可以 執(zhí)行四個不同的操作有符號乘下半部結(jié)果(signed multiply lower half result)、 有符號乘上半部結(jié)果、無符號乘下半部結(jié)果、無符號乘上半部結(jié)果,這些是分 別M31t喿作碼7到10來控制的。寄存器堆RF。和RF,者P有一個周期的等待時 間,因此由功能單元ALU執(zhí)行的操作的總的等待時間是--個周期,由功能單 元MPU執(zhí)行的操作的總的等待時間是兩個周肌發(fā)起槽IS,包含一個功能單 元,加薪存儲單元LSU。加載存儲單元LSU經(jīng)由連接rp,。以及rpu和ip12耦 合在寄存器堆RF,上,也耦合在存儲器映^a MMIO上,其中只有在圖3 的情況中才經(jīng)由連接ip1Q彩禺合。功能單元ALU和MPU可以經(jīng)由連接《和 多路復(fù)用器MP。和將它們的結(jié)果數(shù)據(jù)分別傳給寄存器堆RF。和RF,。功能 單元LSU可以經(jīng)由連接rd,和多路復(fù)用器MP。和將它的結(jié)果數(shù)據(jù)分別傳給 寄存器堆RF。和RF,。在操作中,序列發(fā)生器SEQ從禾聘存儲器PM中檢索VLIW 指令字,并對這些指令字進(jìn)行解碼。 一般而言,這些指令包括像RISC那樣的 操作,要求兩個操作數(shù)并產(chǎn)生一個結(jié)果,以及可能消耗多于兩個的操作數(shù)并可 能產(chǎn)生多于一個的結(jié)果的自定義操作。 一些指令可能要求立即值作為操作數(shù)數(shù) 據(jù)。解碼步驟的結(jié)果是寫選擇索引wsoo和wsi。,寫寄存器索引wpoo和wpw讀 寄存器索引rpoo、 rp。p rp1Q (圖3)、 rpu和rpu,以及操作碼opcode。和opcode!。 潛在地,立即值也是從該指令中檢索的,但是,這些不包括在給定的實(shí)例中, 這不影響所提出的解決方案。經(jīng)由序列發(fā)生器SEQ和多路復(fù)用器MP。和MP, 之間的耦合,寫選擇索引wSoo和WSll被分別提供給多路復(fù)用器MP。和MP,。 寫選擇索弓I w^和WSll被相應(yīng)的多路復(fù)用器用 擇結(jié)果數(shù)據(jù)rdo和rd,的要求的輸AM道,結(jié)果f^rdo和rd,必須寫入寄存器堆RF。禾n/或RF,。序列發(fā)生器 SEQ耦合在寄存器堆RF。和RFj上用于分別提供寫寄存器索引wp^和wp1Q,以 從相應(yīng)寄存器堆中選擇必須寫入數(shù)據(jù)的寄存器。序列發(fā)生器SEQ還經(jīng)由連接ipQ 向寄存器堆RF。提供讀寄存器索弓I 和rpw,經(jīng)由連接rp,向寄存器堆RF,提 供讀寄存器索引ip,。、 rp 和ip12,用于從相應(yīng)的寄存器堆中選擇必須從中讀取 用于功能單元的輸入數(shù)據(jù)的寄存器。序列發(fā)生器SEQ耦合到來自發(fā)起槽ISQ的 操作解碼器OPDEC。,用于提供操作碼opcode。,并且序列發(fā)生器SEQ耦合在 來自發(fā)起槽g的操作解碼器OPDEq上,用于提供操作碼opcode"操作解碼 器OPDEC。和OPDEC,解碼它們各自的操作碼。操作解碼器OPDEC。分別向功 能單元ALU和功能單元MPU提供單元選擇信號s4。和sel^。操作解碼器 OPDEC。也分別向功能單元ALU和功能單元MPU提供操作語義opsem^和 opsem^。單^擇信號seU和sel^被分別用來i^活功能單元ALU和功能單元 MPU,如果該功能單元必須執(zhí)行一操作的話。在讀寄存器索引ipw和rp。,的控 制下,如果可用,從寄存器堆RF。中+僉索操作數(shù),并經(jīng)由連接ip。提供給該寄 存器堆。單^^擇信號sd^禾口 sel^是Mt作代碼叩code。的值獲得的。如果操 作代碼opcode。指示一個要由功能單元ALU執(zhí)行的操作,單元選擇信號seU就 被設(shè)置為真,否則設(shè)置為假。如果操作代碼opcode。指示一個要由功能單元MPU 執(zhí)行的操作,單遂擇信號s《就被設(shè)置為真,否則設(shè)置為假。操作語義opse 和opsemo,指示必須由相應(yīng)功能單元ALU和MPU執(zhí)行的操作的類型。單元選 擇信號seL被AND門101與輸出的有效索引ov。。進(jìn)行AND操作,而結(jié)果信 號被AND門103與結(jié)果數(shù)據(jù)r《,即由功能元件ALU產(chǎn)生的結(jié)果數(shù)據(jù)進(jìn)行AND 操作。單^擇信號s《根據(jù)功能單元MPU的流水線深度而加以延遲,即被 寄存器105延遲。經(jīng)延遲的單 擇信號se、被AND門107與輸出有效索引 ovQ1進(jìn)行AND操作,并且結(jié)果信號被AND門109與結(jié)果數(shù)據(jù)《,即由功能 單元MPU產(chǎn)生的結(jié)果 進(jìn)行AND操作。AND門103和109的輸出信號由 OR門lll加以O(shè)R。如果相應(yīng)的結(jié)果i^rd^和《是有效的輸出數(shù)據(jù),輸出 有效索引ovoo和o、就為真,否則它們就為假。如果功能單元ALU被選擇來 執(zhí)行操作,單元選擇i言號seU就設(shè)置為真,而單^擇信號se^設(shè)置為假。如 果輸出有效索弓I o、被功能單元ALU設(shè)置為真,結(jié)果 r《就被OR門111 輸出作為結(jié)果數(shù)據(jù)A。如果功能單元MPU被選擇來執(zhí)4亍操作,單7^擇信號seU就設(shè)置為假,而單元選擇信號sel^設(shè)置為等于真。如果輸出有效索引 被功能單元MPU設(shè)置為真,結(jié)果數(shù)據(jù)《就被OR門111輸出作為結(jié)果數(shù)據(jù)rc^。 ffl31解碼操作代碼opcode,,操作解碼器OPDEC,提供單^擇信號sel,。以及 操作語義opsem,。。單邀擇信號sel,。是A膽作代碼opcode,的值獲得的。操作 語義opsen^指示必須由功能單元LSU執(zhí)行的操作的類型。操作數(shù)數(shù)據(jù),如果 有的話,在讀寄存器索引ip,。、 ip 和rp,2的控制下,從寄存器堆RF,中檢索。 功能單元LSU支持兩種操作,g卩分別由操作代碼opcode,的值0和1指示的加 載操作和存儲操作。功能單元LSU ilil發(fā)送命令mmio—cmd到MMIO裝置來 控制存儲器映象的I/O裝置MMO, MMIO的有效性是通過有效信號 mmio_va!id來指示的。命令mmio—cmd包括指示必須在MMO ,上執(zhí)行的 是讀還是寫的標(biāo)志,其中在功能單元LSU的加載操作的情況中是讀,在功能 單元LSU的存儲操作的情況中是寫。命令mmio—cmd還包含存儲器地址,并 且在寫命令的情況下包含要寫的數(shù)據(jù)。如果讀命令被發(fā)起,MMIO裝置就將數(shù) 據(jù)mmio—rdata返回功能單元LSU。該MMO裝置可以是任何支持基于存儲器 鵬象的I/O的 通信和/或存儲的裝置。這些包括具有存儲器映象式聽存儲 位置或控制J/狀態(tài)/10寄存器的普通的存儲器、FIFO、以及外圍裝置。功能單元 LSU在執(zhí)行一操作的第一個周期中向MMO ,發(fā)送命令,并期望數(shù)據(jù),在 加載操作的情況中,在第三個周期中回來。在由功能單元LSU執(zhí)行的加載操 作的情況中,有效結(jié)果數(shù)據(jù)rd,會在加載操作執(zhí)行兩個周期之后輸出。作為上 述加載操作的結(jié)果,這些結(jié)果 rd,會題MMO體讀取的數(shù)據(jù)。在由功 能單元LSU執(zhí)行的存儲操作的情況中,沒有任何有效結(jié)果 ^輸出。結(jié)果 數(shù)據(jù)4和rd,,例如可以是32位的值,可以在寫選擇索引wSoo和ws,。以及寫 寄存器索弓I wp。。和wp1()的控制下,經(jīng)由連接網(wǎng)絡(luò)CN和多路復(fù)用器MP。和MP, 寫入寄存器堆RF。和RF"參考圖1,功能單元LSU也支持NOP指令。該NOP指令可以使用用于 操作代碼opcode,的專用值,即等于三的11 擇。操作解碼器OPDEC,對操 作代碼opcode,進(jìn)fi^軒馬,在加載或存儲操作的情況中,單^擇信號sdw設(shè) 置為等于真,而在專用的NOP操作碼的情況中,單^擇信號sel1Q設(shè)置為等 于假。單^擇信號sel,。被AND門113與mmio—valid信號進(jìn)行AND操作, 結(jié)果的信號被提供給MMO裝置。結(jié)果,在NOP指令的情況中,沒有任何讀
或?qū)懨钤贛MO裝置上執(zhí)行。如果沒有任何結(jié)果數(shù)據(jù)4和rd,必須寫回寄 存器堆RF。和RF,,寫寄存器索引wpoo和wp^就可以用鄉(xiāng)擇l^以寄存器,所 謂的"垃圾桶寄存器(trashcan register)"。出于這個目的,寄存器堆RF。和RF, 的具有索弓l七的寄存器被保留為垃圾桶寄存器。參考圖3,功能單元LSU還支持被保護(hù)的(guarded)存儲操作,其中第三個 參數(shù)用作保護(hù)信息gu1Q。支持劍牛操作的時間穩(wěn)定的多指令字處理器也在由本 申請人:在先提交的編號為No.03101038.2的歐洲專利申請[律師案巻號 PHNL030384EPP]中描述了。保護(hù)的存儲操作是通過用于操作代碼opcode,的兩 個€ 擇的。保護(hù)題過保護(hù)使能信號ge1Q來控制的。在保護(hù)的存儲操作的 情況中,操作解碼器OPDEC,將保護(hù)使能信號gei。的值設(shè)置為等于真,否則保 護(hù)使能信號ge1Q的值設(shè)置為假。如果保護(hù)使能信號g^等于真,保護(hù)信號gu,。 的值就被從寄存器堆RF1從讀寄存器索引rp,。引用的寄存器中讀取。如果保護(hù) 使能信號ge,。等于假,保護(hù)信號印1()就默認(rèn)地設(shè)置為真。功能單元LSU還支持 NOP指令。該NOP指令可以使用用于操作代碼opcode,的專用值,即等于三 的值來力口以選擇。在操作中,操作解碼器OPDEq對操作代碼opcode,進(jìn)fil軍 碼,在加載、存儲或保護(hù)的存儲操作的情況中,單元選擇信號sel,。設(shè)置為等于 真,而在專用的NOP操作碼的情況中,單元選擇信號sd1Q設(shè)置為等于假。單 ^擇信號sel,。被AND門115與保護(hù)信號gu,。進(jìn)行AND操作。結(jié)果的信號 被AND門113與mmio一valid信號進(jìn)行AND操作,結(jié)果的信號被提供給MMIO 裝置。結(jié)果,在NOP指令的情況中,沒有任何讀或?qū)懨钤贛MO裝置上執(zhí) 行。由AND門115輸出的信號,也根據(jù)功能單元LSU的流水線深度而被寄存 器119和121進(jìn)一步延遲,并被AND門117與功能單元LSU的輸出有效信號 ov,。進(jìn)行AND操作。結(jié)果的信號由AND門117輸出作為結(jié)果有效信號rv,。 由AND門101和107輸出的信號由OR門123來進(jìn)行OR操作。OR門123輸 出結(jié)果的^言號作為結(jié)果有效^言號rv。。例如,結(jié)果有效信號rv。和rv,可以是一 位的值。寫選擇索弓I wSoo和ws1Q也被相應(yīng)的多路鄉(xiāng)器MP。和MP,用鄉(xiāng)擇 結(jié)果有效信號rv?;騬v,。如果結(jié)果 通道4或rd,被多路OT器MP。和MP, 選擇,相應(yīng)于所選擇的結(jié)果數(shù)據(jù)通道的結(jié)果有效信號rvQ或rv,就被用于設(shè)置寫 使能信號we?;騱—用于對將結(jié)果 寫入寄存器堆的控制。如果多路復(fù)用 器MP。和已選擇相應(yīng)于結(jié)果數(shù)據(jù)4的輸AM道,結(jié)果有效信號rv。的值就被用于設(shè)置相應(yīng)于該多路復(fù)用器的寫使能信號,而在相應(yīng)于結(jié)果數(shù)據(jù)rd,的輸 Ail道被選擇的時候,結(jié)果有效信號"的值就被用于設(shè)置相應(yīng)的寫使能信號。 如果結(jié)果有效信號rv?;?yàn)檎?,適當(dāng)?shù)膶懯鼓苄盘杦e。或we,就被相應(yīng)的多 路復(fù)用器MP。和MP,設(shè)置為真。如果寫使能信號we。或we,等于真,結(jié)果數(shù)據(jù) H或rd,就分別ffiil寫數(shù)據(jù)wc^和wd,寫入寄存器堆RF?;騌F,,在fflil相應(yīng)于 該寄存器堆的寫寄存器索弓I wp^和wp1Q選擇的寄存器中。如果寫使能信號we。 或wei設(shè)置為假,那么盡管已經(jīng)通過相應(yīng)的寫選擇索弓I wSoo或ws1Q選擇了用于 將結(jié)結(jié)果數(shù)據(jù)4或4寫入相應(yīng)的寄存器堆RF?;騌F,的輸Ail道,還是沒有 任何數(shù)據(jù)會寫入該寄存器堆。寫選擇索弓I wSoo和Ws1Q可以用 擇默認(rèn)的輸入 通道125。如果該默認(rèn)的輸Affi道125是ilil寫選擇索引ws。?;騱s,。選擇的, 相應(yīng)的寫使能信號we?;騱e,就默認(rèn)地設(shè)置為假,因此沒有任何結(jié)果數(shù)據(jù)寫回 至湘應(yīng)的寄存器堆。使用保護(hù)信號guw,對于時間穩(wěn)定的VLIW處理器,結(jié)果 數(shù)據(jù)有條件的回寫得到允許。確定保護(hù)信號的值是例如通過在功能單元ALU 上執(zhí)行指令來計(jì)算的,并且該結(jié)果儲存在寄存器堆RF,中。在功能單元LSU 上執(zhí)行保護(hù)的存儲操作,并且保護(hù)信號gu,。等于真的時候,AND門113輸出 等于真的mmio一valid信號到MMIO裝置,并且該存儲命令是ffi51 MMIO 來執(zhí)行的。如果保護(hù)信號gu,。等于假,就沒有任何存儲命令由MMIO裝置來 執(zhí)行,因?yàn)锳ND門113輸出等于假的信號。如果保護(hù)信號gu,。等于假,結(jié)果 有效信號 就也設(shè)置為假,這意味著結(jié)果數(shù)據(jù)rd,到寄存器堆的回寫也被禁止。在下面示出了匯編代碼形式的小禾號段,該程序段要由根據(jù)圖l的VLIW 處理器執(zhí)行,并包括指令I(lǐng)NS(i)、 INS(i+l)以及INS(i+2)。INS(i) {akandCRFO^^RFOp]); /*在功能單元ALU上執(zhí)4斑輯AND,將在 RF。的寄存器2和3中存儲的值作為參數(shù)"RF1 [1]=3111.叩00; /*在的寄存器1中寫入功能單元ALU的邏輯AND操作的結(jié)果"lsu.load—0(RF1[5]); 嚴(yán)M功能單元LSU,'加載,位于RF,
的寄存器5中存儲的存儲器映彰也址上的 */INS(i+l) {alu,sub(RF0
JRF0[3]); /*通過功能單元ALU,從RF。的寄存器0 中的值減去RF。的寄存器3中的值*/RF0[6]=alu.op00; /*在RF。的寄存器6中通過功能單元ALU寫入減法的結(jié)果Vlsu.storeJ)(RFl[4],RFl[5]); 嚴(yán)i!31功能單元LSU,在RF,的寄存器4中存儲的存儲器映象他址上存儲RF,的寄存器5中的值*/INS(i+2) {RF1 [2]=lsu.loadJ.oplO; /*在RF,的寄存器2中存儲由功能單元LSU 加載的數(shù)據(jù)*/包括指令的時間穩(wěn)定的信息,在巻曲花括號中指定,并用分號分開了。用 于特定資源的信息,例如用于特定功能單元的操作碼或用于功能單元的輸入值的選擇的不存在,意味著用于這4it定資源的NOP代碼。該編譯器假定為明確地調(diào)度操作的每一流水線級。在該程序段中操作的流7K線數(shù)目n是通過'一n' 后綴來指示的,例如參見loadJ)和loacL2。在給定的實(shí)例中,加載指令的第二 流水線級(load_l)沒有出現(xiàn),既然對于這個流水線級不需要任何控制信息, 因?yàn)樵谶@個級中沒有參數(shù)被取樣,沒有結(jié)果產(chǎn)生或沒有操作碼被選擇。用于這 個禾聘段的二進(jìn)制編碼的實(shí)施例在圖2中顯示了。在圖2中,以二進(jìn)制的格式, 顯示了三個指令字INS(i)、 INS(i+l)以及INS(i+2)。該VLIW指令字的第一指
令字段對用于包含功能單元ALU和MPU的發(fā)起槽IS。的操作碼opcode。進(jìn)行 編碼,第二指令字段對用于包含功能單元LSU的發(fā)起槽IS,的操作碼opcode, 進(jìn)根扁碼,第三和第四指令字段分另樹寫選擇索引w^和ws,。進(jìn)行編碼。第五 和第六指令字段分別對寫寄存器索引wpoo和wp^進(jìn)行編碼。第七至第十指令 字段分別對讀寄存器索引iPoo、 rp。P iPn和iPu進(jìn)行編碼。該指令字中灰色字段 指示NOP信息被編碼。在將匯編碼形式的程序段翻譯成圖2中所示的二進(jìn)制 編碼的期間,為了在取和執(zhí)行與NOP指令相關(guān)的控制信息的時候最小化位變 化,在與NOP指令相關(guān)的控制信息的情況中,在相應(yīng)字段中的NOP代碼就是 在前的VLIW指令字的相應(yīng)字段的重復(fù)。例如,在對INS(i+2)的讀寄存器索引 iPoo進(jìn)fi^扁碼的字段中NOP代碼的二進(jìn)第U編碼是INS(W)的相同字段中的東西 的重復(fù),并且相同的適用于INS d+2)中與讀寄存器索引rpw、 rpw、,和。12 相關(guān)的字段,它們是來自INS0+1)的相應(yīng)字段的重復(fù)。然而,對于對寫寄存器 索弓I wpQ。和wp1Q進(jìn)fili碼的字段來說,專用的NOP代碼是所需的,以便在NOP 指令的執(zhí)行期間禁止結(jié)果M 4和A至嗨存器堆RFQ和RF,的回寫。如果結(jié) 果數(shù)據(jù)的回寫不能禁止,作為NOP指令的執(zhí)行結(jié)果VLIW處理器的狀態(tài)就可 能改變,也就是寄存器的內(nèi)容可能無意地改變。因此,在NOP指令的情況中, 對寫寄存器索引wp^和wp,。進(jìn)行編碼的字段是使用指向垃圾桶寄存器的值 "11'來加以編碼的,該垃圾桶寄存器也就是寄存器堆的虛擬寄存器,如同 所示的那樣,例如,在與INS(i+2)中的寫寄存器索引wpoo相關(guān)的字段以及與 INS(i+l)中的寫寄存器索引w^。相關(guān)的字段中。此外,對于對用于包含功能單 元LSU的發(fā)起槽IS,的操作代碼opcode,進(jìn)行編碼的字段來說,專用的NOP代 碼也是必需的,在NOP指令盼膚況中,以便防止VILIW處理器的狀態(tài)改變。 例如,加載操作會改變F正O緩沖器的內(nèi)容,F(xiàn)IFO緩沖器可以通過從該緩沖器 提取和除去數(shù)據(jù)而用于處理器的I/O。加載操作也可以通過當(dāng)無意的加載在該 高速緩存中導(dǎo)致未擊中時弓i起數(shù)據(jù)塊的無意的提取,改變可能存在的數(shù)據(jù)高速 緩存的內(nèi)容。因此,在NOP指令的情況中,對用于包含功能單元LSU的發(fā)起 槽IS,的操作代碼opcode,進(jìn)fi^碼的字段是使用專用的NOP操作碼來加以編 碼的,也就是,對于在與INS(i+2)中操作碼字段IS,相關(guān)的字段中所示的實(shí)例 來說,是值三。包含功能單元ALU和MPU的^fe槽IS。不需要用于對NOP 操作碼進(jìn)4彌碼的專用NOP代碼,因?yàn)樵谥貜?fù)在前的指令字的編碼的時候,
不存在改變VLIW處理器的狀態(tài)的風(fēng)險(xiǎn)。因此,在與INS(i+2)中操作碼字段IS。 相關(guān)的字段中,NOP操作碼是INS(i+l)的相應(yīng)字段中操作碼的重復(fù)。在下面示出了匯編碼形式的小程序段,該程序段要由根據(jù)圖3的VLIW 處理 行,并包括指令I(lǐng)NS(X)卿){al腿d(RF0[2]^RF0[3]);RF。的寄存器2和3作為參數(shù)*/RFl[l]=alu.opOO;邏輯AND操作的結(jié)果"lsu.load—0(RF1[5]);的寄存器5中存儲的存儲器映象地址上的數(shù)據(jù)*/INS(i+l) {ak.sub(RF0
^RF0[3]); /*從RF0的寄存器0中的值減去RF0的寄存器3中的值*/RF0問^u.op00; /*在RF0的寄存器6中寫入功能單元ALU的減法的結(jié)果*/if(RF1[7])lsu.store_0(RFl[4],RFl[5]);嚴(yán)如果在RF,的寄存器7中的值不是零, 那么就通過功能單元LSU,在RF,的寄存器4中存儲的存儲器映^i也址上存儲 RF,的寄存器5中的值^、INS(i+l)以及INS(i+2)。/*在功能單元ALU上執(zhí)碎,輯AND,將在 /*在RF,的寄存器1中寫入功能單元ALU的 /*艦功能單元LSU,'加載,位于RF,INS(i+2) {RFl[2]=lsu.load—2.opl0; /*在RF!的寄存器2中存儲由功能單元LSU 加載的數(shù)據(jù)V用于特定資源的信息,例如用于特定功能單元的操作碼或用于功能單元的 輸入值的選擇的不存在,意味著用于這4^寺定資源的NOP代碼。該編譯器假 定為明確地調(diào)度操作的每一流水線級,以便防止任何可能在不同的操作之間發(fā) 生的資源沖突,并且在該程序段中操作的流水線數(shù)目n是通過n,后綴來指 示的。用于這個禾號段的二進(jìn)制編碼的實(shí)例如圖4所示。在圖4中,以二進(jìn)制 的格式,顯示了三個指令字INS(i)、 INS(i+l)以及INS(i+2)。該指令字的第一指 令字段對用于包含功能單元ALU和MPU的發(fā)起槽IS。的操作碼opcode。進(jìn)行 編碼,第二指令字段對用于包含功能單元LSU的發(fā)起槽IS,的操作碼opcode, 進(jìn)很扁碼,第三和第四指令字段分另樹寫選擇索引w^和ws,。進(jìn)行編碼。第五 和第六指令字段分別對寫寄存器索引wpw和wp,。進(jìn)行編碼。第七至第十一指 令字段分別對讀寄存器索引IP, rpQ1、 ipu和ipu謝f^碼。該指令字中灰色字 段指示NOP信息被編碼。在將匯編碼形式的程序段翻譯成圖3中所示的二進(jìn) 制編碼的期間,為了在執(zhí)行與NOP指令相關(guān)的控制信息的時候最小化位變化, 在控制信息與NOP指令相關(guān)的情況中,在相應(yīng)字段中的NOP代碼就是在前的 VUW指令字的相應(yīng)字段的重復(fù)。例如,自INS(i+l)的寫寄存器索引wp,。進(jìn) ^ii碼的字段中NOP代碼的二進(jìn)制編碼是INS(i)的相同字段中的東西的重復(fù)。 同樣,INS(i+2)中與讀寄存器索引rp^、 ipQI、 rp1Q、 rpu和rpu相關(guān)的字段都是根 據(jù)INS(i+l)的相應(yīng)字段重復(fù)的。然而,對于對寫選擇索引ws。。和ws,。進(jìn)行編碼 的字段來說,需要專用的NOP代碼,以便在NOP指令的執(zhí)行期間禁止結(jié)果數(shù) 據(jù)4和rd,到寄存器堆RF。和RF,的回寫。如果結(jié)果M的回寫不能禁止,作 為NOP指令的執(zhí)行結(jié)果,VLIW處理器的狀態(tài)就可能改變。因此,在NOP指 令的情況中,對相應(yīng)的寫選擇索弓I wsoo和WSl。進(jìn)行編碼的字段是使用指向輸入 通道125的值'11'來加以編碼的,輸AiI道125默認(rèn)地將相應(yīng)的寫使能信號weQ和we,設(shè)置為假,參見例如,與INS(i+2)中的寫寄存器索引wsoo相關(guān)的字 段以及與INS(W)中的寫寄存器索引,1()相關(guān)的字段。此外,對于對用于包含 功能單元LSU的發(fā)起槽IS,的操作代碼opcode進(jìn)t,碼的字段來說,專用的 NOP代碼也是必需的,在NOP指令的情況中,以便防止VLIW處理器的狀態(tài) 改變。因此,對用于在INS(i+2)中的魏槽IS,的操作代碼opcode,進(jìn),彌碼的 字段是使用專用的NOP操作碼,即值三來加以編碼的。功能單元ALU不需要 專用NOP代碼,在INS(i+2)中NOP操作碼是INS(i+l)的相應(yīng)字段中操作碼的 重復(fù)。參考圖2和4,在執(zhí)行與NOP指令相關(guān)的控制信息的時候,位改變的數(shù) 目得至嘬小化。結(jié)果,在相應(yīng)的處理器中更多的組合邏輯將攜帶與在前周期中 相同的值,因此更小的數(shù)據(jù)躍遷波動出現(xiàn),因而發(fā)生更小的功率浪費(fèi)。在替換實(shí)施例中, 與NOP指令相關(guān)的控制信息進(jìn),彌碼的時候,相 應(yīng)字段中NOP代碼是隨后的指令字的相應(yīng)字段的重復(fù)。例如,參考圖2,在該 情況下在對INS(i)的讀寄存器索引卬12進(jìn),,碼的字段中NOP代碼的二進(jìn)制編碼是iNs d+i)的相同字段中東西的重復(fù),即值'ior,而不是圖2中所指示的'000,。在將編譯的或人工寫的匯編程序翻譯成二進(jìn)制程序代碼的時候,匯編器記 住在正在翻譯的當(dāng)前多指令字之前和/或之后的多指令字。在翻譯當(dāng)前指令的同 時,匯編器可以重復(fù)相應(yīng)的為之前或之后的多指令字的字段編碼的值,只要NOP 代碼必須為當(dāng)前指令的給定字段而加以編碼??商鎿Q地,對于具有更深的流水 線操作的,槽來說,專用的NOP操作碼值可以被編碼而不是重復(fù)為相鄰多 指令字的相應(yīng)字段編碼的值。特別是在具有更深流水線的發(fā)起槽的情況中,專 用的NOP操作碼可以用來控制流水線級的時鐘門控,以節(jié)省順序邏輯中的功 率并同時獲得數(shù)據(jù)門控。對于沒有任何流水線或不深的流水線的發(fā)起槽來說, NOP代碼的編碼可以M31重復(fù)為相鄰多指令字的相應(yīng)字段而加以編碼的itt完 成。在更進(jìn)一步的替換實(shí)施例中,NOP代碼的編碼可以3I51重復(fù)為實(shí)際執(zhí)行期 間最可能在正在翻譯的當(dāng)前多指令字之前或之后的多指令字的相應(yīng)字段而加以 編碼的值來完成。例如,最可能在之前或隨后的指令可以從簿記信息獲得。在另一實(shí)施例,通信網(wǎng)絡(luò)CN可以是部分連接的通信網(wǎng)絡(luò),即不是每一個 發(fā)起槽IS。和IS,都耦合在所有寄存器堆RF。和RF,上。在發(fā)起槽的數(shù)量很大的 情況中,,接的通信網(wǎng)絡(luò)的開銷在硅面積、延遲和功耗方面是相當(dāng)可觀的。在VLIW處理器的設(shè)計(jì)期間決定功能單元在什么程度上耦合在寄存器堆上,這 取決于必須執(zhí)行的應(yīng)用的范圍。在另一個實(shí)施例中,該處理器包括單個寄存器堆,而不是包括寄存器堆RF。 和的分布式寄存器堆。如果VLIW處理器的^槽的數(shù)目相對比較小,單 個寄存器堆的開銷也就相對比較小。在另一個實(shí)施例中,VLIW處理器可以具有不同數(shù)目的發(fā)起槽和/或發(fā)起 槽可以包括不同數(shù)目的功能單元。其中,功能單元的數(shù)目取決于VLIW處理器 必須執(zhí)行的應(yīng)用的類型。該處理器也可以具有不同數(shù)目的連接到所述發(fā)起槽的 寄存器堆。在另一實(shí)施例中,發(fā)起槽IS0和IS1可以具有不同數(shù)目的輸ASV或輸出端 口,這取決于該發(fā)起槽必須執(zhí)行的操作的,,也就是要求兩個以上操作數(shù)和/ 或產(chǎn)生一個以上結(jié)果的操作。寄存器堆RF。和RF,也可以具有不同數(shù)目的讀和/ 或?qū)懚丝?。?yīng)當(dāng)指出上述實(shí)施例說明而不是限制本發(fā)明,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)能夠 在不偏離所附權(quán)利要求的范圍的情況下設(shè)計(jì)許多替換實(shí)施例。在權(quán)利要求中, 任何在括號中放置的參考符號都不應(yīng)當(dāng)理解為限制該權(quán)利要求。詞"包括"不 排除除了在權(quán)利要求中列出的那些之外的元素或步驟的存在。在元素之前的詞 "一 (a)"或"一個(an)"并不排除多個上述元素的存在。在列舉幾個裝置 的設(shè)備權(quán)利要求中,這些裝置中幾個可以通過同一個硬件項(xiàng)目來加以實(shí)施。僅 僅某些措施在互不相同的從屬權(quán)利要求中弓間的事實(shí)并不表明這些措施的結(jié)合 不能用來提供良好效果。
權(quán)利要求
1 、 一種使用被安排來并行地執(zhí)行多個指令的時間穩(wěn)定的多指令字處理設(shè) 備來處理 的方法,所述方 跑括下列步驟生成一個多指令字集(INS(i),INS(i+l),INS(i+2)),其中每一個多指令字包 括多個指令字段,其中每一個指令字段對用于該處理設(shè)備的相應(yīng)資源的控制信 息進(jìn)4彌碼,并且其中與空操作指令相關(guān)的指令字段以及相鄰多指令字的相應(yīng) 指令字段之間的位改變被減到最少;在寄存器堆(RF。^RF,)中存儲輸入數(shù)據(jù);基于從該多指令字集獲得的控制f言息處理從該寄存器堆中檢索的數(shù)據(jù); 使用第一專用空操作代碼(w^,w^,wp^wp,。)在空操作指令的執(zhí)行期間 禁止將結(jié)果數(shù)據(jù)回寫到該寄存器堆。
2、 如權(quán)利要求1所述用于處理數(shù)據(jù)的方法,其特征在于該方法還包括.-使用用于編碼操作碼的第二專用空操作代碼^it一步防止在空操作指令的執(zhí)行期間處理設(shè)備的狀態(tài)改變。
3、 如權(quán)利要求1所述用于處理數(shù)據(jù)的方法,其特征在于,在計(jì)算機(jī)程序 的編譯之后得到的多指令字集中,所述相鄰多指令字與所述包括與該空操作指 令相關(guān)的指令字段的多指令字相鄰。
4、 如,權(quán)利要求1所述用于處理數(shù)據(jù)的方法,其特征在于,正如從簿記信 息獲得的那樣,在多指令字集的執(zhí)行期間,相鄰多指令字很可能與所述包括與 空操作指令相關(guān)的指令字段的多指令字相鄰。
5、 一種安排來執(zhí)行々tf又利要求1所述用于處理數(shù)據(jù)的方法的處理設(shè)備,包括被安排用于并行執(zhí)行多個指令的多個魏槽(IS。,IS。;可被所述多個發(fā)起槽訪問的寄存器堆(RF。^RF,); 用于耦合所述多個^槽和所述寄存器堆的通信網(wǎng)絡(luò)(CN); 被安排來基于從多指令字集獲得的控制信息來控制處理設(shè)備的控制器 (SEQ,OPDEC。,OPDEQ )。
6、 如,又利要求5所述的處理設(shè)備,其特征在于,該寄存器堆是分布式寄 存器堆。
7、 如權(quán)利要求5所述的處理設(shè)備,其特征在于,該通信網(wǎng)絡(luò)是部分連接 的31信網(wǎng)纟各。
8、 如權(quán)利要求5所述的處理設(shè)備,其特征在于,該處理設(shè)備是時間穩(wěn)定 的超長指令字處理器。
9、 一種用于根據(jù)相應(yīng)匯編語言形式的多指令字集生成二進(jìn)制程序代碼形 式的多指令字集(INS(i),INS(i+l),INS(i+2))的方法,其中每一個多指令字包括 多個指令字段,并且其中多指令字劇各被時間穩(wěn)定的處理設(shè)備執(zhí)行,該處理設(shè) 備具有多個發(fā)起槽(IS。,IS。以及耦合至U所述多個^槽的寄存器堆(RF。^RF,), 所述方法包括下列步驟在所述多指令字集中定序,確定對于相同指令字段是否存在從指令到空操作指令的改變, 將與空操作指令相關(guān)的指令字段與相鄰多指令字的相應(yīng)指令字段之間的位 改變減到最少,在該空操作指令的二進(jìn)制程序代碼中插入第一專用NOP代碼(wSoo,WSl。, wPoo,wp,。),以便在空操作指令的執(zhí)行期間禁止將結(jié)果娜回寫至U該寄存器堆。
10、 一種安排來使用如才又利要求9所述的方法來生成二進(jìn)制,,代碼形式 的指令序列的編譯器程序產(chǎn)品。
全文摘要
一種使用被安排來并行地執(zhí)行多個指令的時間穩(wěn)定的多指令字處理設(shè)備來處理數(shù)據(jù)的方法,所述方法包括下列步驟生成一個多指令字集(INS(i),INS(i+1),INS(i+2)),其中每一個多指令字包括多個指令字段,其中每一個指令字段對用于該處理設(shè)備的相應(yīng)資源的控制信息進(jìn)行編碼,并且其中與空操作指令相關(guān)的指令字段,以及相鄰多指令字的相應(yīng)指令字段之間的位改變被減到最少;在寄存器堆(RF<sub>0</sub>,F(xiàn)<sub>1</sub>)中存儲輸入數(shù)據(jù);基于從多指令字集獲得的控制信息處理從該寄存器堆中檢索的數(shù)據(jù);使用第一專用空操作代碼(ws<sub>00</sub>,ws<sub>10</sub>,wp<sub>00</sub>,wp<sub>10</sub>)在空操作指令的執(zhí)行期間禁止將結(jié)果數(shù)據(jù)回寫該寄存器堆。
文檔編號G06F9/30GK101124539SQ200580014853
公開日2008年2月13日 申請日期2005年5月9日 優(yōu)先權(quán)日2004年5月13日
發(fā)明者J·A·J·萊滕 申請人:皇家飛利浦電子股份有限公司