專利名稱:用于解碼指令序列的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種方法和設(shè)備,用于把數(shù)據(jù)處理程序的至少兩個(gè)指令的序列解碼成為用來(lái)控制例如數(shù)字信號(hào)處理器等裝置的數(shù)據(jù)路徑的碼字序列。
計(jì)算機(jī)體系結(jié)構(gòu)包括由控制字控制的一條固定數(shù)據(jù)路徑。此控制字由若干個(gè)部分組成,每個(gè)部分控制數(shù)據(jù)路徑的一部分。這些部分可以包括多路復(fù)用器、寄存器地址、算術(shù)邏輯單元(ALU)或其它功能單元的操作碼等等。通常,利用一個(gè)指令解碼器或者利用微存儲(chǔ)器,即直接包含控制字的一個(gè)存儲(chǔ)器,發(fā)出的每個(gè)指令生成一個(gè)新的控制字,其中所述指令解碼器把二進(jìn)制格式的指令翻譯成為相應(yīng)的控制字。
當(dāng)處理器執(zhí)行循環(huán)功能時(shí),相應(yīng)的過(guò)程不但可以被解釋為指令序列,而且可以被解釋為在時(shí)間上被仿真的一個(gè)流水線電路。在這樣一個(gè)流水線電路中,在每個(gè)時(shí)鐘周期數(shù)據(jù)在數(shù)據(jù)流圖的邊緣下移,其中,曲線圖邊緣由寄存器實(shí)現(xiàn)。另一方面,數(shù)據(jù)流圖可以由一個(gè)程序來(lái)實(shí)現(xiàn),其中,按照由指令調(diào)度器確定的某一順序來(lái)執(zhí)行不同的操作。指令可以一個(gè)一個(gè)地執(zhí)行,或者在處理器體系結(jié)構(gòu)支持并行處理的情況下按照所包括的一些并行操作來(lái)執(zhí)行。為了執(zhí)行這些操作,處理器中各自的控制字在每個(gè)指令處將配置數(shù)據(jù)流圖的一部分,而邊緣由通用處理器寄存器來(lái)實(shí)現(xiàn)。
可是,嵌入式系統(tǒng)就功耗和面積方面的成本在很大程度上由程序存儲(chǔ)所需的存儲(chǔ)器來(lái)確定。與手工匯編代碼相比,高級(jí)編譯通常在代碼規(guī)模方面導(dǎo)致一個(gè)惡化。為了把代碼規(guī)模保持在可接受的界限之內(nèi),有效的指令編碼和代碼壓縮是新型處理器核心設(shè)計(jì)中關(guān)鍵的一個(gè)重要因素。此外,關(guān)于程序不同部分的性能的不同約束的說(shuō)明允許代碼密度和性能之間的一個(gè)平衡。
文獻(xiàn)US 5862384公開(kāi)了一種裝備有優(yōu)化部分的編譯器優(yōu)化設(shè)備,所述優(yōu)化部分被安排來(lái)基于更新的可變控制表中識(shí)別的更新變量來(lái)將循環(huán)不變的表達(dá)式轉(zhuǎn)移到循環(huán)之外。這減少了執(zhí)行語(yǔ)句的總數(shù)并導(dǎo)致處理的有效優(yōu)化和加速的處理速度。
可是,諸如那些表示一個(gè)循環(huán)之類的某些指令序列,將導(dǎo)致一個(gè)具有固定部分和標(biāo)準(zhǔn)部分的控制字序列。雖然控制字的固定部分不變,但是在這樣一個(gè)不變序列的執(zhí)行時(shí)間所確定的大量周期期間,一個(gè)結(jié)構(gòu)存儲(chǔ)器環(huán)境被重新加載。這種時(shí)間代價(jià)導(dǎo)致降低的處理性能和增加的功耗。
因此,本發(fā)明的一個(gè)目的是提供一種用于編碼指令序列的解碼方法和設(shè)備,通過(guò)它能夠獲得一個(gè)增加的處理性能和降低的功耗。
此目的通過(guò)權(quán)利要求1中要求的方法以及通過(guò)權(quán)利要求20中要求的設(shè)備來(lái)實(shí)現(xiàn)。
因此,在固定電路實(shí)現(xiàn)和基于程序的執(zhí)行實(shí)現(xiàn)兩個(gè)極端之間的一種方式被提供來(lái)在進(jìn)入循環(huán)之前配置數(shù)據(jù)流圖的一部分,以使它在循環(huán)期間將被固定。這對(duì)應(yīng)于固定數(shù)據(jù)路徑部分,即固定控制字部分。因?yàn)檫@導(dǎo)致每個(gè)周期發(fā)出一個(gè)更窄的控制字,所以功耗和(微)代碼規(guī)模二者都降低。此技術(shù)可以被認(rèn)為是一種控制字提升(hoisting),在其中,編譯器術(shù)語(yǔ)“提升”意味著把循環(huán)不變的控制信號(hào)(例如操作碼,地址等等)移到循環(huán)之外??墒?,由于指令調(diào)度表不改變,因此相對(duì)于編譯器,此技術(shù)有一點(diǎn)點(diǎn)影響。只有各自碼字序列(例如循環(huán))內(nèi)的指令的編碼被影響。特別地,控制字的不變部分,即固定部分,不再出自指令解碼器或微存儲(chǔ)器,而是可以從其它地方得到,例如從一個(gè)單獨(dú)的存儲(chǔ)器中得到。作為一種替換方案,一個(gè)可重新配置硬件,例如嵌入式現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA),可用于維護(hù)不變部分的布線。
由于在每個(gè)控制字中控制字的不變部分不再被多余復(fù)制的這個(gè)事實(shí),則必要的微代碼存儲(chǔ)器規(guī)模降低了。
在專用存儲(chǔ)器替換方案中,專用存儲(chǔ)器可以被實(shí)現(xiàn)為一個(gè)查詢表或一個(gè)按內(nèi)容可尋址的存儲(chǔ)器。可以在數(shù)據(jù)路徑的多個(gè)功能單元之間共享專用存儲(chǔ)器,或者多個(gè)專用存儲(chǔ)器可以被分配給數(shù)據(jù)路徑各自的功能單元。
此外,不變碼字部分可用來(lái)尋址專用存儲(chǔ)器,以便獲得一個(gè)被用來(lái)控制數(shù)據(jù)路徑的擴(kuò)展了的新碼字。這可以通過(guò)使用與原始碼字序列相同的連接來(lái)達(dá)到。然后,可以經(jīng)由一個(gè)多路復(fù)用功能來(lái)選擇所述連接。
通過(guò)使用一個(gè)結(jié)構(gòu)掩碼,可以在碼字中規(guī)定不變碼字部分的比特位置。特別地,基于所述結(jié)構(gòu)掩碼可以控制一個(gè)控制字加載功能使得把所述碼字比特引導(dǎo)到一個(gè)控制寄存器的適當(dāng)位置。這可以通過(guò)使用結(jié)構(gòu)掩碼來(lái)達(dá)到,以便生成用于連接到控制寄存器的開(kāi)關(guān)信號(hào)。專用存儲(chǔ)器的規(guī)??梢詫?duì)應(yīng)于指令寄存器的規(guī)模。
在可重新配置硬件替換方案中,可以基于不變碼字部分選擇一個(gè)結(jié)構(gòu)環(huán)境。此外,通過(guò)把不變控制的一部分嵌入到結(jié)構(gòu)本身中,則可以降低控制映射到可重新配置硬件上的電路的控制比特?cái)?shù)目。因此,碼字的不變部分也同樣可以被提升,減低控制映射到可重新配置硬件上的電路所需要的指令字寬度。此外,可以從至少一個(gè)指令中選擇具有最大不變碼字部分的那些指令,并且選定的指令可以用于映射到可重新配置硬件上。因此,可重新配置硬件被用于能夠從提升中受益最多的那些指令或指令序列。
在從屬權(quán)利要求中定義了其它有利的發(fā)展。
在下面,將參考附圖基于優(yōu)選實(shí)施例更詳細(xì)地描述本發(fā)明,其中
圖1示出了根據(jù)第一優(yōu)選實(shí)施例表示兩個(gè)解碼替換方案的示意圖;圖2示出了寄存器堆基于多路復(fù)用器的選擇示例;圖3示出了根據(jù)第一優(yōu)選實(shí)施例表示從控制字的標(biāo)準(zhǔn)部分中簡(jiǎn)單切割分離一個(gè)結(jié)構(gòu)部分的原理圖;圖4示出了根據(jù)第一優(yōu)選實(shí)施例表示使用結(jié)構(gòu)掩碼和控制字加載器用于組合一個(gè)碼字的結(jié)構(gòu)部分和標(biāo)準(zhǔn)部分的原理圖;圖5示出了一個(gè)表示可被用于第一優(yōu)選實(shí)施例中的控制字加載器體系結(jié)構(gòu)的示意圖;圖6示出了可被用于根據(jù)圖5的控制字加載器體系結(jié)構(gòu)中的一個(gè)可編程交叉點(diǎn)開(kāi)關(guān)示例;圖7示出了根據(jù)第二優(yōu)選實(shí)施例,表示基于固定控制字用于控制可重新配置寄存器堆的方法的示意圖;和圖8A和8B示出了可以用在第二優(yōu)選實(shí)施例中的可重新配置邏輯單元的示意圖。
作為數(shù)字信號(hào)處理器中的一個(gè)代碼序列示例,現(xiàn)在將根據(jù)循環(huán)操作的解碼和處理來(lái)描述優(yōu)選實(shí)施例。根據(jù)優(yōu)選實(shí)施例,在進(jìn)入循環(huán)之前配置數(shù)據(jù)流圖的一部分,以使它在循環(huán)期間將被固定。這對(duì)應(yīng)于固定數(shù)據(jù)路徑的一部分,即固定控制字的一些部分。
總的來(lái)說(shuō),為一個(gè)循環(huán)不變的數(shù)據(jù)流圖固定控制字部分可能意味著固定功能單元和寄存器堆之間的連接;固定寄存器堆空間內(nèi)的地址;固定功能單元的操作碼。
與一個(gè)任意的循環(huán)不變的數(shù)據(jù)流圖相關(guān)的控制字固定部分的生成發(fā)生在那個(gè)循環(huán)的代碼生成或指令解碼期間。然后,在循環(huán)執(zhí)行期間,從一個(gè)本地指令解碼器或微存儲(chǔ)器中獲取控制字的標(biāo)準(zhǔn)或可變部分??刂谱值墓潭ɑ虿蛔儾糠直挥脕?lái)配置在該碼字序列期間被固定的數(shù)據(jù)路徑部分。
根據(jù)第一優(yōu)選實(shí)施例,碼字的固定部分從被實(shí)現(xiàn)為查詢表或按內(nèi)容可尋址的存儲(chǔ)器(CAM)的專用存儲(chǔ)塊中獲得。根據(jù)所考慮體系結(jié)構(gòu)中的指令分層結(jié)構(gòu),專用存儲(chǔ)塊可以在處理器體系結(jié)構(gòu)中被全局或局部地放置。
根據(jù)第二優(yōu)選實(shí)施例,控制字的固定部分可用來(lái)固定提供于處理器體系結(jié)構(gòu)中的可重新配置硬件或邏輯單元的可重新配置方面。
在下面,參考圖1到6說(shuō)明第一優(yōu)選實(shí)施例的實(shí)現(xiàn)示例。
圖1示出了利用用于放置專用存儲(chǔ)塊的以上兩種可能方法的數(shù)字信號(hào)處理器體系結(jié)構(gòu)的一部分示意圖。正如在圖1的左上部指出的,控制字10由一個(gè)標(biāo)準(zhǔn)或可變部分11以及一個(gè)固定或不變部分12組成。固定部分12在循環(huán)期間沒(méi)有變化。如圖1右上部所示,根據(jù)第一種方法,專用存儲(chǔ)塊26連接到第一功能單元群23的指令解碼器24,第一功能單元群23連接一個(gè)寄存器堆21。寄存器堆21可以經(jīng)由多路復(fù)用器22從互連線中訪問(wèn)。因此,在第一方法中,專用存儲(chǔ)塊26被全局放置,如此以使在許多功能單元群之間共享控制字的固定部分。應(yīng)該指出還可以從解碼器24中直接尋址寄存器堆21中的寄存器,而不必通過(guò)多路復(fù)用器22。此尋址部分將對(duì)應(yīng)于控制字的固定部分12并將在循環(huán)期間保持不變。
根據(jù)在圖1右下部表示的第二可能方法,專用存儲(chǔ)塊25被排列在一個(gè)給定功能單元群(例如功能單元群23)內(nèi)并對(duì)其是特定的。同樣,專用存儲(chǔ)塊25連接到功能單元群23的指令解碼器24??刂谱值墓潭ú糠?2在兩個(gè)方法中可以被編碼(例如通過(guò)編譯器或匯編器)以便縮短它的原始比特寬度。然后,它稍后在各自的專用存儲(chǔ)塊25、26中被擴(kuò)展或解碼為一個(gè)新的控制字,基于這個(gè)新的控制字,獲得一個(gè)修改了的指令類型。
圖2示出了能夠由標(biāo)準(zhǔn)的和修改了的指令類型控制的寄存器堆21的示例。經(jīng)由各自的專用存儲(chǔ)塊25、26,根據(jù)控制字10的標(biāo)準(zhǔn)部分11來(lái)獲得標(biāo)準(zhǔn)指令類型,而根據(jù)控制字10的固定部分12來(lái)獲得修改了的指令類型。特別地,在循環(huán)期間,由指令解碼器24生成標(biāo)準(zhǔn)和修改了的指令類型,以便提供循環(huán)所需要的處理和寄存器功能。應(yīng)當(dāng)指出控制字10的固定部分12和標(biāo)準(zhǔn)部分11分別到標(biāo)準(zhǔn)和修改了的指令類型的變換未在圖2中示出。為了降低總的實(shí)現(xiàn)成本,特別是布線,由各自的專用存儲(chǔ)塊25、26生成的這個(gè)新控制字可以使用與標(biāo)準(zhǔn)指令解碼器24相同的到受控資源的連接。正如圖2中所示,通過(guò)使用提供在寄存器堆21各自輸入處的本地多路復(fù)用器,可以實(shí)現(xiàn)選擇。因此,從控制字10的標(biāo)準(zhǔn)部分11和固定部分12中獲得的兩個(gè)控制信號(hào)都可用于控制寄存器堆21。
由于控制字10的循環(huán)不變或固定部分12與循環(huán)變化或標(biāo)準(zhǔn)部分11分開(kāi)的這個(gè)事實(shí),應(yīng)用程序的每個(gè)循環(huán)本身將具有一個(gè)循環(huán)不變部分或結(jié)構(gòu)。剩余部分在循環(huán)執(zhí)行期間可以改變。這降低了必要的微代碼存儲(chǔ)器規(guī)模,因?yàn)樵诿總€(gè)控制字中結(jié)構(gòu)部分在循環(huán)內(nèi)未被多余地復(fù)制。實(shí)際上,在循環(huán)執(zhí)行期間并未變化的控制比特可以任意地分布在控制字上。然后一個(gè)問(wèn)題是要在執(zhí)行期間把適當(dāng)?shù)慕Y(jié)構(gòu)和標(biāo)準(zhǔn)比特從微代碼存儲(chǔ)器中載入指令解碼器24處的控制寄存器的適當(dāng)比特位置中,處理器數(shù)據(jù)路徑的資源基于該適當(dāng)?shù)谋忍匚恢脕?lái)控制。這可以通過(guò)為應(yīng)用程序中的每個(gè)循環(huán)提供一個(gè)結(jié)構(gòu)掩碼而解決,結(jié)構(gòu)掩碼規(guī)定控制寄存器中的哪些比特位置是循環(huán)不變的,哪些不是。然后,在結(jié)構(gòu)掩碼的控制之下,控制字加載器將把結(jié)構(gòu)部分中的比特引導(dǎo)到控制寄存器的適當(dāng)位置。然后可以開(kāi)始循環(huán)的執(zhí)行。對(duì)于從標(biāo)準(zhǔn)部分11中導(dǎo)出的每個(gè)控制字,控制字加載器將把每個(gè)比特引導(dǎo)到它在控制寄存器中的適當(dāng)位置,而不改變由專用存儲(chǔ)塊25或26定義的那個(gè)循環(huán)中預(yù)先載入的結(jié)構(gòu)。
圖3示出了表示在控制數(shù)據(jù)中的某些點(diǎn)中通過(guò)一個(gè)簡(jiǎn)單的切斷而把結(jié)構(gòu)部分與標(biāo)準(zhǔn)部分分離、簡(jiǎn)單生成控制數(shù)據(jù)的一個(gè)簡(jiǎn)圖。根據(jù)圖3,控制寄存器50被提供用來(lái)控制一條處理器數(shù)據(jù)路徑41,其包括具有各自寄存器堆的兩個(gè)算術(shù)邏輯單元(ALU)54和兩個(gè)相乘/累加單元(MAC)53以及一個(gè)隨機(jī)存取存儲(chǔ)器(RAM)52。正如圖3中所示,在循環(huán)執(zhí)行期間沒(méi)有改變的控制比特,即結(jié)構(gòu)部分62的比特,被直接轉(zhuǎn)移到控制寄存器50的對(duì)應(yīng)部分,而儲(chǔ)存在微代碼存儲(chǔ)器51中的控制數(shù)據(jù)的標(biāo)準(zhǔn)部分11在循環(huán)執(zhí)行期間變化并被提供給控制寄存器50的剩余部分。雖然此簡(jiǎn)化情形能夠由該體系結(jié)構(gòu)強(qiáng)制實(shí)施并被編譯器利用,但是代價(jià)是損失一些提升可能性,在通常的情況下,不能保證循環(huán)不變的比特在直線序列中全部彼此相鄰,如圖3所示。為了充分地利用控制字提升的可能性,需要一個(gè)更通用的解決方案。
因此,圖4示出了一個(gè)通常的情況,在此,控制寄存器50中的出口(hatched)位置對(duì)應(yīng)于循環(huán)不變的或結(jié)構(gòu)比特。正如可以從圖4中搜集的那樣,在循環(huán)執(zhí)行期間不變的控制比特任意地分布在控制寄存器50中的控制字上,而沒(méi)有特定的次序。問(wèn)題是要在循環(huán)執(zhí)行期間把適當(dāng)?shù)慕Y(jié)構(gòu)和標(biāo)準(zhǔn)比特從微代碼存儲(chǔ)器51中載入控制寄存器的適當(dāng)比特位置中。為了實(shí)現(xiàn)這一點(diǎn),正如上面已經(jīng)提到的,和圖1的專用存儲(chǔ)塊25或26中的每個(gè)結(jié)構(gòu)一起提供一個(gè)結(jié)構(gòu)掩碼61。當(dāng)一個(gè)新的循環(huán)要被執(zhí)行時(shí),相應(yīng)的結(jié)構(gòu)掩碼61被載入到控制字加載器64的結(jié)構(gòu)掩碼寄存器63中,正如結(jié)構(gòu)掩碼寄存器63定義的那樣,其負(fù)責(zé)把控制數(shù)據(jù)從微代碼存儲(chǔ)器51中載入給控制寄存器50的適當(dāng)位置去。然后可以開(kāi)始循環(huán)的執(zhí)行。對(duì)于標(biāo)準(zhǔn)部分11的每個(gè)控制數(shù)據(jù),控制字加載器64將把每個(gè)比特引導(dǎo)到它在控制寄存器50中的適當(dāng)位置,而不改變從專用存儲(chǔ)塊25或26中獲得的預(yù)先載入的結(jié)構(gòu)62。
應(yīng)當(dāng)指出結(jié)構(gòu)掩碼寄存器63中的零和一的模式不是控制信號(hào),它僅僅只是規(guī)定控制字中的哪些比特位置是循環(huán)不變的,哪些不是。另一方面,循環(huán)結(jié)構(gòu)62中的零和一實(shí)際上是將要控制處理器數(shù)據(jù)路徑的控制信號(hào),例如功能單元的操作碼,寄存器地址,多路復(fù)用器選擇輸入等等。
圖5示出了表示如圖4所示的控制字加載器64的結(jié)構(gòu)的示意圖。正如圖5中所示,程序計(jì)數(shù)器PC指向控制字10儲(chǔ)存在微代碼存儲(chǔ)器51或指令存儲(chǔ)器或緩存中的實(shí)際標(biāo)準(zhǔn)部分11。正如已經(jīng)提到的,剩余的固定部分或結(jié)構(gòu)被儲(chǔ)存在專用存儲(chǔ)塊25或26中。因此,正常指令存儲(chǔ)器或微代碼存儲(chǔ)器51只包含控制字10的標(biāo)準(zhǔn)部分。然后,新的結(jié)構(gòu)在軟件控制之下被載入到控制寄存器50中??墒牵溯d入功能未在圖5中示出。專用存儲(chǔ)塊25或26中每個(gè)控制字的大小可以與處理器的指令寄存器50中的相同。這樣,和每個(gè)結(jié)構(gòu)62一起,對(duì)應(yīng)于相應(yīng)循環(huán)中的第一控制字或指令的標(biāo)準(zhǔn)部分11的比特還可以被儲(chǔ)存在專用存儲(chǔ)塊25或26中。由于字大小相同這個(gè)事實(shí),專用存儲(chǔ)塊25或26的字(結(jié)構(gòu))可以被直接載入處理器的指令寄存器中,完全繞過(guò)(by-passing)如圖5所示提供在控制字加載器64中的可編程交叉點(diǎn)開(kāi)關(guān)73。由此,循環(huán)的控制字的第一標(biāo)準(zhǔn)部分11被自動(dòng)并行載入。
可編程交叉點(diǎn)開(kāi)關(guān)73可以由多路復(fù)用器鏈路組成,每個(gè)多路復(fù)用器由出自掩碼解釋邏輯71中的一組比特控制。特別地,可編程交叉點(diǎn)開(kāi)關(guān)73還可以具有可控制的三態(tài)緩存器,而所有個(gè)體多路復(fù)用器和緩沖控制比特的集合組成開(kāi)關(guān)控制信號(hào)72。掩碼解釋邏輯71被安排來(lái)把結(jié)構(gòu)掩碼寄存器63的內(nèi)容翻譯成為開(kāi)關(guān)控制信號(hào)72。掩碼解釋邏輯71的使用提供如下兩個(gè)優(yōu)點(diǎn)。首先,它從循環(huán)結(jié)構(gòu)掩碼61的語(yǔ)義學(xué)中把特定的開(kāi)關(guān)體系結(jié)構(gòu)去耦合。這例如實(shí)現(xiàn)保留與前一版本的二進(jìn)制碼兼容性的開(kāi)關(guān)升級(jí)。其次,結(jié)構(gòu)掩碼寄存器63中的比特?cái)?shù)目通常將比組成開(kāi)關(guān)控制信號(hào)72的比特?cái)?shù)目小得多,從而允許環(huán)形結(jié)構(gòu)61所需存儲(chǔ)器規(guī)模的降低。然而,該系統(tǒng)可以如此安排以使不提供循環(huán)結(jié)構(gòu)掩碼63和掩碼解釋邏輯71。然后,循環(huán)結(jié)構(gòu)61的比特直接形成開(kāi)關(guān)控制信號(hào)72。
正如前面提到的那樣,在第一優(yōu)選實(shí)施例中,結(jié)構(gòu)掩碼中零和一的模式編碼控制字中的哪些比特位置是循環(huán)不變的,哪些不是。事實(shí)上,因?yàn)檠诖a解釋邏輯71從開(kāi)關(guān)體系結(jié)構(gòu)中去耦合循環(huán)結(jié)構(gòu)掩碼的語(yǔ)義,所以編碼結(jié)構(gòu)掩碼中信息的一些其它形式也同樣能被使用,這可以減少儲(chǔ)存該信息所要求的比特寬度。
可編程交叉點(diǎn)開(kāi)關(guān)73可以被完全連接,而不必須這樣。例如,標(biāo)準(zhǔn)部分11的第一比特可以被路由到控制寄存器50的任何比特位置,而標(biāo)準(zhǔn)部分11的第二比特位置不必可路由到控制寄存器50的第一比特位置。此外,標(biāo)準(zhǔn)部分11的第三比特位置不必可路由到控制寄存器50中的第一和第二比特位置等等。類似的推理可以被應(yīng)用到更高階比特。通過(guò)應(yīng)用此推理,可以從交叉點(diǎn)開(kāi)關(guān)73中物理上刪除某些連接,因?yàn)樗鼈儚牟槐皇褂谩?br>
圖6示出了一種簡(jiǎn)化情況的可編程交叉點(diǎn)開(kāi)關(guān)73的實(shí)施例示例,在此簡(jiǎn)化情況中,從微代碼存儲(chǔ)器51中獲得的指令的標(biāo)準(zhǔn)部分11只包括兩個(gè)比特,而受控處理器數(shù)據(jù)路徑需要控制寄存器50中的四比特控制字。因此,從微代碼存儲(chǔ)器51中獲得的指令包括兩個(gè)比特并且控制寄存器50包括四個(gè)比特。交叉點(diǎn)開(kāi)關(guān)73的連接路徑然后能夠基于開(kāi)關(guān)控制信號(hào)72經(jīng)由多路復(fù)用器和三態(tài)緩存器而被控制。在目前的情況下,指令的左比特,即標(biāo)準(zhǔn)部分11,可以被交換到控制寄存器50的除了最右邊的比特位置之外的所有比特位置,而指令的右比特可以被交換到控制寄存器50的除了最左邊的比特位置之外的所有比特位置。
圖7示出了根據(jù)第二優(yōu)選實(shí)施例的一個(gè)解碼體系結(jié)構(gòu)的示意圖,在此,控制字10的固定部分12被用來(lái)控制可重新配置寄存器堆31。由于可重新配置硬件資源的特定性質(zhì),更高靈活性是可以獲得的,其可以被利用來(lái)進(jìn)一步改善成本有效性??杀挥糜诘诙?yōu)選實(shí)施例中的一個(gè)可重新配置硬件單元示例是嵌入式FPGA。
當(dāng)寄存器堆31被實(shí)現(xiàn)在可重新配置邏輯中時(shí),全部資源被空間映射。通過(guò)結(jié)構(gòu)存儲(chǔ)器比特來(lái)實(shí)現(xiàn)對(duì)資源的控制。當(dāng)一個(gè)新類型的數(shù)據(jù)流圖要被執(zhí)行時(shí),結(jié)構(gòu)存儲(chǔ)器32載入一個(gè)新的結(jié)構(gòu)環(huán)境。內(nèi)部結(jié)構(gòu)控制器33基于控制字10的固定部分12來(lái)考慮選擇正確的結(jié)構(gòu)環(huán)境。由于控制字10的固定部分對(duì)于若干周期被保留不變,所以與結(jié)構(gòu)存儲(chǔ)器環(huán)境的重新加載相關(guān)的潛在重新配置時(shí)間代價(jià)是無(wú)關(guān)重要的。
如果可重新配置寄存器堆31被安排來(lái)使用標(biāo)準(zhǔn)控制字,則結(jié)構(gòu)環(huán)境必須被適合于它。
可重新配置寄存器堆31還包括基于結(jié)構(gòu)存儲(chǔ)器32中的比特狀態(tài)而被控制的可配置邏輯陣列34。從而,可配置接口35可以被配置,以便提供期望的輸入、輸出和/或控制字。因此,不但到功能單元的連接而且例如寄存器堆21的深度都可以是可編程的。此外,在可重新配置邏輯中,實(shí)現(xiàn)諸如FIFO(先入先出)和堆棧之類的專門(mén)寄存器堆體系結(jié)構(gòu)是可能的。由于類似FIFO和堆棧那樣的結(jié)構(gòu)所要求的簡(jiǎn)化的尋址方案,所以尋址寄存器堆所需要的控制字的標(biāo)準(zhǔn)部分11的大小可以減少頗大。
圖8A示出了根據(jù)第二優(yōu)選實(shí)施例的一個(gè)處理器體系結(jié)構(gòu),它具有一個(gè)處理器控制器40,用于控制一條數(shù)據(jù)路徑,此數(shù)據(jù)路徑包括處理器數(shù)據(jù)路徑41和作為可重新配置硬件的FPGA塊31。FPGA塊31被安排用來(lái)實(shí)現(xiàn)一個(gè)由應(yīng)用特定單元ASU和相關(guān)寄存器堆RF組成的電路。應(yīng)用特定單元ASU以一種足夠靈活的方式被構(gòu)造以便允許它被使用在應(yīng)用程序的不同循環(huán)內(nèi)。
在如圖8A所示的目前情況下,應(yīng)用特定單元ASU和寄存器堆RF被安排用來(lái)加速應(yīng)用程序的關(guān)鍵循環(huán),并且對(duì)于被使用于所有關(guān)鍵循環(huán)中的FPGA塊31,它們的體系結(jié)構(gòu)足夠靈活。應(yīng)當(dāng)指出不同循環(huán)可能需要應(yīng)用特定單元ASU執(zhí)行不同的操作,或者尋址它相關(guān)寄存器堆RF中的不同寄存器。為了允許此靈活性,相關(guān)寄存器堆RF和應(yīng)用特定單元ASU的端口由處理器數(shù)據(jù)路徑41中發(fā)出的指令或控制字比特控制。在圖8A中,需要十二個(gè)控制比特用于分別對(duì)相關(guān)寄存器堆RF提供讀地址、對(duì)相關(guān)寄存器堆RF提供寫(xiě)地址、以及對(duì)應(yīng)用特定單元ASU提供操作碼。
可是,這些控制參數(shù)中的許多在一個(gè)特定循環(huán)中不變化。因此,對(duì)于那個(gè)特定的循環(huán)或其它指令序列,不需要在指令字中提供十二個(gè)控制比特來(lái)控制映射到FPGA塊31上的電路。因此,可以降低指令字寬度,從而節(jié)省指令存儲(chǔ)器。
圖8B說(shuō)明了當(dāng)循環(huán)的控制字的循環(huán)不變部分被提升時(shí)FPGA塊31的結(jié)構(gòu)。特別地,在一個(gè)特定循環(huán)內(nèi),應(yīng)用特定單元ASU和相關(guān)寄存器堆RF之間的六個(gè)連接從不改變,因此這六個(gè)寄存器明顯不必尋址。這把讀地址的寬度從三個(gè)比特降低到一個(gè)比特。同時(shí),在該特定的循環(huán)內(nèi)只需要應(yīng)用特定單元ASU的一個(gè)操作子集,因此它們各自操作碼的某些比特在那個(gè)循環(huán)中是多余的,并且可以在FPGA結(jié)構(gòu)本身中被布線。結(jié)果,現(xiàn)在在指令字中總共只需要七個(gè)比特(三個(gè)寫(xiě)地址比特,一個(gè)讀地址比特以及三個(gè)操作碼比特)來(lái)控制那個(gè)特定循環(huán)內(nèi)的FPGA塊31。
由于FPGA塊31很靈活這個(gè)事實(shí),映射到它上面的不同硬件結(jié)構(gòu)可以被如此重新配置以便正確地解釋數(shù)目減少的控制比特。在圖8B中,例如,在此創(chuàng)建的相關(guān)寄存器堆RF的寄存器和應(yīng)用特定單元ASU之間的點(diǎn)到點(diǎn)連接(由六個(gè)相應(yīng)的箭頭表示),相關(guān)寄存器堆RF的地址解碼器多路復(fù)用器的規(guī)模被減少,并且應(yīng)用特定單元ASU的內(nèi)部結(jié)構(gòu)被改變以便正確解釋較小的3比特操作碼。潛在地,通過(guò)去掉應(yīng)用特定單元ASU中對(duì)應(yīng)于在那個(gè)給定循環(huán)內(nèi)從不執(zhí)行的那些軟電路部分,則可以使應(yīng)用特定單元ASU本身更小。
因此,總的策略是限制指令字中可用于控制FPGA塊31的比特?cái)?shù)目,因而節(jié)省指令存儲(chǔ)器。盡管有此減少,則通過(guò)使用提升概念,F(xiàn)PGA塊31仍然可以被應(yīng)用程序中的若干個(gè)不同的關(guān)鍵循環(huán)所使用。
另一總策略是調(diào)查應(yīng)用程序中哪些關(guān)鍵循環(huán)具有最大循環(huán)不變部分并且能夠從提升中受益最多。這些循環(huán)然后被選擇,用于映射到諸如FPGA塊31之類可以利用提升的可重新配置硬件單元上,而不是被映射到硬布線單元和處理器數(shù)據(jù)路徑41剩余部分的寄存器堆上。
應(yīng)當(dāng)指出本發(fā)明不局限于上面說(shuō)明的優(yōu)選實(shí)施例,并且可用于任何處理器環(huán)境中,其中數(shù)據(jù)處理程序的至少兩個(gè)指令的序列被解碼成為用于控制數(shù)據(jù)路徑的碼字序列。特別地,所建議的提升概念可以用于被解碼成具有易變和不變部分的碼字序列的其它指令序列。優(yōu)選實(shí)施例因此可以在所附權(quán)利要求的范圍內(nèi)變化。
權(quán)利要求
1.一種把數(shù)據(jù)處理程序的至少兩個(gè)指令的序列解碼成為用來(lái)控制數(shù)據(jù)路徑的碼字序列的方法,所述方法包括如下步驟a)分離所述碼字序列中沒(méi)有變化的不變碼字部分;和b)使用所述不變碼字部分來(lái)配置在所述碼字序列期間被固定的所述數(shù)據(jù)路徑的一部分。
2.根據(jù)權(quán)利要求1的方法,還包括使用所述分離的不變碼字部分來(lái)尋址一個(gè)專用存儲(chǔ)器的步驟。
3.根據(jù)權(quán)利要求2的方法,還包括步驟把所述專用存儲(chǔ)器實(shí)現(xiàn)為查詢表或可按內(nèi)容尋址的存儲(chǔ)器。
4.根據(jù)權(quán)利要求2或3的方法,還包括步驟在所述數(shù)據(jù)路徑的多個(gè)功能單元之間共享所述專用存儲(chǔ)器。
5.根據(jù)權(quán)利要求2到4任何一個(gè)的方法,還包括步驟提供分配給所述數(shù)據(jù)路徑各自功能單元的多個(gè)專用存儲(chǔ)器。
6.根據(jù)權(quán)利要求2到5任何一個(gè)的方法,還包括步驟把所述不變碼字部分?jǐn)U展為一個(gè)新的碼字并使用所述新碼字來(lái)控制所述數(shù)據(jù)路徑。
7.根據(jù)權(quán)利要求6的方法,還包括步驟通過(guò)所述新碼字使用與所述碼字序列相同的連接來(lái)控制所述數(shù)據(jù)路徑。
8.根據(jù)權(quán)利要求7的方法,還包括步驟經(jīng)由多路復(fù)用功能來(lái)選擇所述相同連接。
9.根據(jù)權(quán)利要求2到8任何一個(gè)的方法,還包括步驟使用一個(gè)結(jié)構(gòu)掩碼來(lái)規(guī)定控制字中所述不變碼字部分的比特位置。
10.根據(jù)權(quán)利要求9的方法,其中所述結(jié)構(gòu)掩碼被編碼。
11.根據(jù)權(quán)利要求10的方法,還包括步驟基于所述結(jié)構(gòu)掩碼來(lái)控制一個(gè)控制字加載功能使得把所述碼字的比特引導(dǎo)到控制寄存器的適當(dāng)位置。
12.根據(jù)權(quán)利要求10或11的方法,其中所述結(jié)構(gòu)掩碼是一種二進(jìn)制模式。
13.根據(jù)權(quán)利要求12的方法,還包括步驟使用所述結(jié)構(gòu)掩碼來(lái)生成用于連接到所述控制寄存器的開(kāi)關(guān)信號(hào)。
14.根據(jù)權(quán)利要求2到13任何一個(gè)的方法,還包括步驟選擇所述專用存儲(chǔ)器的規(guī)模對(duì)應(yīng)于指令寄存器的規(guī)模。
15.根據(jù)權(quán)利要求1的方法,還包括步驟通過(guò)使用可重新配置硬件來(lái)配置所述數(shù)據(jù)路徑的所述部分。
16.根據(jù)權(quán)利要求15的方法,還包括步驟基于所述不變碼字部分來(lái)選擇一個(gè)結(jié)構(gòu)環(huán)境。
17.根據(jù)權(quán)利要求15或16的方法,還包括步驟根據(jù)所述碼字序列所要求的結(jié)構(gòu)來(lái)減少控制所述可重新配置硬件的控制比特?cái)?shù)目。
18.根據(jù)權(quán)利要求15到17任何一個(gè)的方法,還包括步驟從所述至少兩個(gè)指令的序列中選擇具有最大不變碼字部分的那些指令并使用所述選定的指令用于映射到所述可重新配置硬件上。
19.根據(jù)前面權(quán)利要求任一個(gè)的方法,其中所述至少兩個(gè)指令的序列形成所述數(shù)據(jù)處理程序的一個(gè)循環(huán)體。
20.一種把數(shù)據(jù)處理程序的至少兩個(gè)指令的序列解碼成為用來(lái)控制數(shù)據(jù)路徑的碼字序列的設(shè)備,所述設(shè)備包括a)生成裝置,用于獨(dú)立地生成所述碼字序列中沒(méi)有變化的不變碼字部分;和b)配置裝置,用于接收所述不變碼字部分并用于配置在所述碼字序列期間被固定的所述數(shù)據(jù)路徑的一部分。
21.根據(jù)權(quán)利要求20的設(shè)備,其中所述配置裝置包括專用存儲(chǔ)器裝置,用于儲(chǔ)存對(duì)應(yīng)于所述不變碼字部分的新控制字。
22.根據(jù)權(quán)利要求21的設(shè)備,其中所述配置裝置還包括解碼裝置,用于把來(lái)自所述專用存儲(chǔ)器裝置中的所述新控制字解碼成為控制數(shù)據(jù)路徑的控制信號(hào)。
23.根據(jù)權(quán)利要求20的設(shè)備,還包括結(jié)構(gòu)掩碼寄存器,用于控制控制字加載裝置,使得把所述碼字序列的變碼部分中的比特載入控制寄存器的適當(dāng)比特位置中。
24.根據(jù)權(quán)利要求23的設(shè)備,其中所述控制字加載裝置包括可編程的交叉點(diǎn)開(kāi)關(guān)。
25.根據(jù)權(quán)利要求24的設(shè)備,其中所述控制字加載裝置還包括連接到所述可編程交叉點(diǎn)開(kāi)關(guān)和所述結(jié)構(gòu)掩碼寄存器的掩碼解釋邏輯。
26.根據(jù)權(quán)利要求20的設(shè)備,其中所述結(jié)構(gòu)裝置包括基于所述不變碼字部分配置的可重新配置硬件裝置。
全文摘要
本發(fā)明涉及一種用于把數(shù)據(jù)處理程序的至少兩個(gè)指令的序列解碼成為用來(lái)控制數(shù)據(jù)路徑的碼字序列的方法和設(shè)備,其中,在所述碼字序列中沒(méi)有改變的不變碼字部分被獨(dú)立地生成并用于配置在碼字序列期間被固定的數(shù)據(jù)路徑部分。因此,必要的微代碼存儲(chǔ)器規(guī)??梢员唤档筒⑶铱梢越档凸摹?br>
文檔編號(hào)G06F9/30GK1656444SQ03811413
公開(kāi)日2005年8月17日 申請(qǐng)日期2003年4月25日 優(yōu)先權(quán)日2002年5月22日
發(fā)明者A·奧古斯泰恩, K·萊坦-諾瓦克, B·德奧里維拉卡斯特魯普佩 申請(qǐng)人:皇家飛利浦電子股份有限公司