專利名稱:用于在雙通道處理器中控制處理的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)處理器、操作所述處理器的方法以及包含用于所述計(jì)算機(jī)的指令集合的計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
為了提高計(jì)算機(jī)處理器的速度,現(xiàn)有技術(shù)中的結(jié)構(gòu)已經(jīng)使用了雙執(zhí)行通道來執(zhí)行指令。雙執(zhí)行通道處理器能依據(jù)單指令多數(shù)據(jù)(SIMD)的原則進(jìn)行操作,利用并行操作來提高處理器的速度。
然而,盡管使用了雙執(zhí)行通道和SIMD處理,現(xiàn)在仍存在提高處理器速度的需求。典型的雙執(zhí)行通道處理器使用兩個(gè)基本上相同的通道,所以每個(gè)通道都處理控制代碼和數(shù)據(jù)路徑(data path)代碼。雖然已知的處理器支持32位標(biāo)準(zhǔn)編碼和16位“緊湊”編碼的組合,但這樣的方案存在幾個(gè)缺點(diǎn),包括在16位格式中可用的少數(shù)幾位信息中缺乏語義內(nèi)容。
此外,常規(guī)的通用數(shù)字信號(hào)處理器不能匹配在很多場(chǎng)合下的應(yīng)用程序?qū)S盟惴?,其中包括?zhí)行例如卷積、快速傅立葉變換、Trellis/Viterbi編碼、相關(guān)和有限脈沖響應(yīng)濾波的特殊操作以及其它操作。
發(fā)明內(nèi)容
在根據(jù)本發(fā)明的一個(gè)實(shí)施例中,提供了一計(jì)算機(jī)處理器。所述計(jì)算機(jī)處理器包括(a)解碼單元,用于解碼來自于存儲(chǔ)器的一串指令包,其中每個(gè)指令包包括多條指令;(b)第一處理通道,其包括多個(gè)功能單元并可操作用于執(zhí)行控制處理操作;以及(c)第二處理通道,其包括多個(gè)功能單元并可操作用于執(zhí)行數(shù)據(jù)處理操作;其中所述解碼單元可操作用于接收一指令包,并檢測(cè)所述指令包是否定義了(i)多個(gè)控制指令或(ii)其中的一個(gè)或多個(gè)指令為數(shù)據(jù)處理指令的多個(gè)指令,并且其中當(dāng)所述解碼單元檢測(cè)到所述指令包包括多個(gè)控制指令時(shí),所述控制指令被提供給所述第一處理通道以按照程序的順序執(zhí)行。
在相關(guān)的實(shí)施例中,所述計(jì)算機(jī)處理器的解碼單元可操作用于檢測(cè)包含三個(gè)控制指令的指令包以及用于控制執(zhí)行所述三個(gè)控制指令中的每一個(gè)的控制過程,所述執(zhí)行以所述指令在所述指令包中出現(xiàn)的順序進(jìn)行。所述解碼單元也可操作用于檢測(cè)包含多個(gè)長度相等的控制指令的指令包,或用于檢測(cè)在指令包中的位長(bit length)在18位到24位之間的控制指令,以及特別用于檢測(cè)每個(gè)均具有21位位長的多個(gè)控制指令。所述解碼單元可操作用于接收并解碼位長為64位的指令包。
在進(jìn)一步的相關(guān)實(shí)施例中,所述解碼單元可操作用于檢測(cè)何時(shí)在所述指令包中存在至少一數(shù)據(jù)處理指令,并且作為響應(yīng),使相關(guān)的數(shù)據(jù)被提供給所述數(shù)據(jù)處理通道。所述解碼單元也可操作用于檢測(cè)所述指令包包括至少一數(shù)據(jù)處理指令以及從一個(gè)或多個(gè)存儲(chǔ)器存取指令、控制指令以及數(shù)據(jù)處理指令中選出的一個(gè)進(jìn)一步的指令。所述至少一數(shù)據(jù)處理指令和所述進(jìn)一步的指令可被同時(shí)執(zhí)行。所述第二處理通道可專門用于數(shù)據(jù)處理操作的執(zhí)行,并且數(shù)據(jù)處理指令可以匯編語言的形式提供。所述控制處理操作可基于直到第一預(yù)定義位寬的操作數(shù)執(zhí)行,而所述數(shù)據(jù)處理操作可基于直到第二預(yù)定義位寬的數(shù)據(jù)執(zhí)行,所述第二預(yù)定義位寬大于所述第一預(yù)定義位寬。
在進(jìn)一步的相關(guān)實(shí)施例中,所述第一處理通道可包括從一個(gè)或多個(gè)控制寄存器文件,控制執(zhí)行單元,分支執(zhí)行單元和裝載/存儲(chǔ)單元中選出的單元。所述第二處理通道可包括數(shù)據(jù)執(zhí)行路徑,所述路徑包括可配置的數(shù)據(jù)執(zhí)行單元。所述第二處理通道也可包括數(shù)據(jù)執(zhí)行路徑,所述路徑包括固定的數(shù)據(jù)執(zhí)行單元。在使用中,一個(gè)或多個(gè)所述可配置的和固定的數(shù)據(jù)執(zhí)行單元可根據(jù)單指令多數(shù)據(jù)的原則進(jìn)行操作。所述數(shù)據(jù)處理通道可包括一個(gè)或多個(gè)數(shù)據(jù)寄存器文件和裝載/存儲(chǔ)單元。一單個(gè)的裝載/存儲(chǔ)單元可被所述控制處理通道和所述數(shù)據(jù)處理通道通過各自的端口進(jìn)行存取。
在進(jìn)一步的相關(guān)實(shí)施例中,所述解碼單元可操作用于檢測(cè)包含至少一數(shù)據(jù)處理指令的指令包,其中所述至少一數(shù)據(jù)處理指令的位長在30至38位之間,例如,所述位長可為34位。所述解碼單元也可操作用于檢測(cè)包含數(shù)據(jù)處理操作和存儲(chǔ)器存取指令的指令包。所述存儲(chǔ)器存取指令的位長可為,例如28位。所述解碼單元也可操作用于檢測(cè)包含數(shù)據(jù)處理指令和控制處理指令的指令包。所述控制處理指令可以是C代碼或其變型。所述解碼單元也可操作用于檢測(cè)匯編語言形式的數(shù)據(jù)處理指令。
在根據(jù)本發(fā)明的另一個(gè)實(shí)施例中,提供了一操作計(jì)算機(jī)處理器的方法,所述計(jì)算機(jī)處理器包括第一和第二處理通道,每一個(gè)處理通道具有多個(gè)功能單元,其中所述第一處理通道可操作用于執(zhí)行控制處理操作而所述第二處理通道可操作用于執(zhí)行數(shù)據(jù)處理操作。所述方法包括(a)從存儲(chǔ)器中接收一系列指令包,每一個(gè)所述指令包包括多個(gè)定義操作的指令;(b)通過確定所述指令包是否定義了(i)多個(gè)控制指令或(ii)至少一個(gè)數(shù)據(jù)處理指令,來依次解碼每一個(gè)指令包;并且其中當(dāng)所述解碼單元檢測(cè)到所述指令包包括多個(gè)控制指令時(shí),提供所述多個(gè)控制指令給所述第一處理通道以按照序列執(zhí)行。
在根據(jù)本發(fā)明的另一個(gè)實(shí)施例中,提供了一計(jì)算機(jī)程序產(chǎn)品,其中包括用于使計(jì)算機(jī)按照前述的方法進(jìn)行操作的程序代碼裝置。
在根據(jù)本發(fā)明的進(jìn)一步的實(shí)施例中,提供了計(jì)算機(jī)程序代碼,其中包括用于使計(jì)算機(jī)按照前述的方法進(jìn)行操作的一系列指令。
在根據(jù)本發(fā)明的另一個(gè)實(shí)施例中,提供了一計(jì)算機(jī)指令集合,其中包括第一類指令包和第二類指令包,所述第一類指令包中的每一個(gè)指令包包括順序執(zhí)行的多個(gè)控制指令,所述第二類指令包中的每一個(gè)指令包包括同時(shí)執(zhí)行的至少一數(shù)據(jù)處理指令和一進(jìn)一步的指令,所述進(jìn)一步的指令從一個(gè)或多個(gè)存儲(chǔ)器存取指令、控制指令和數(shù)據(jù)處理指令中選擇得出。
本發(fā)明的其它優(yōu)點(diǎn)和新穎的特征部分地將在下面的描述中闡明,并且部分地通過下面的說明和附圖的檢驗(yàn),對(duì)本領(lǐng)域的技術(shù)人員變得顯而易見,或者可以通過實(shí)踐本發(fā)明而被了解。
為了更好地理解本發(fā)明,以及說明可以怎樣實(shí)現(xiàn)上述內(nèi)容,將通過舉例的方式參考附圖進(jìn)行說明,其中圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的非對(duì)稱雙執(zhí)行通道計(jì)算機(jī)處理器的結(jié)構(gòu)圖;圖2顯示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于圖1中的處理器的典型的指令類;以及圖3是顯示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的可配置的深度(deep)執(zhí)行單元的部件的示意圖。
具體實(shí)施例方式
圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的非對(duì)稱雙通道計(jì)算機(jī)處理器的結(jié)構(gòu)圖。圖1中的處理器在兩個(gè)不同的硬件執(zhí)行通道之間分割一單指令流100的處理專門用于處理控制代碼的控制執(zhí)行通道102和專門用于處理數(shù)據(jù)代碼的數(shù)據(jù)執(zhí)行通道103。依照控制代碼和數(shù)據(jù)路徑代碼的不同特征,所述兩個(gè)執(zhí)行通道102、103的數(shù)據(jù)寬度、操作符和其它特征也不同。典型地,控制代碼可能使用更少、更窄的寄存器,難以并行,典型地(但非排他地)被編寫為C代碼或另一高級(jí)語言的格式,以及其代碼密度通常比其速度性能更重要。相反地,數(shù)據(jù)路徑代碼典型地可能使用寬的寄存器的大文件,高度并行,被編寫為匯編語言的格式,以及其性能比其代碼密度更重要。在圖1中的處理器中,所述兩個(gè)不同的執(zhí)行通道102和103專門用于處理所述兩種不同類型的代碼,每一側(cè)具有由寄存器的寬度和數(shù)目所區(qū)分的其固有結(jié)構(gòu)的寄存器文件,例如控制寄存器文件104和數(shù)據(jù)寄存器文件105;所述控制寄存器按照位數(shù)計(jì)算,寬度較窄(在一個(gè)例子中,32位),而所述數(shù)據(jù)寄存器寬度較寬(在一個(gè)例子中,64位)。因此所述處理器是非對(duì)稱的,由于其兩個(gè)執(zhí)行通道執(zhí)行不同的專用功能的事實(shí),其兩個(gè)執(zhí)行通道的位寬不同。
在圖1中的處理器中,所述指令流100由一系列指令包組成。提供的每一個(gè)指令包被指令解碼單元101解碼,所述指令解碼單元101將控制指令與數(shù)據(jù)指令分開,這一點(diǎn)將在下面被進(jìn)一步地描述。所述控制執(zhí)行通道102使用分支單元106、執(zhí)行單元107和裝載存儲(chǔ)單元108來對(duì)所述指令流進(jìn)行控制流操作的處理,并管理所述機(jī)器的狀態(tài)寄存器,所述裝載存儲(chǔ)單元108在該實(shí)施例中被所述數(shù)據(jù)執(zhí)行通道103所共享。對(duì)于C、C++或Java語言的編譯器,或另一高級(jí)語言編譯器而言,只有所述處理器的控制側(cè)需要是可見的。在所述控制側(cè)中,分支單元106和執(zhí)行單元107的操作與本領(lǐng)域普通技術(shù)人員所知的常規(guī)的處理器設(shè)計(jì)是一致的。
所述數(shù)據(jù)執(zhí)行通道103在固定的執(zhí)行單元109和可配置的深度執(zhí)行單元110中均使用SIMD(單指令多數(shù)據(jù))并行操作。如下面將進(jìn)一步描述的,所述可配置的深度執(zhí)行單元110除了常規(guī)的SIMD處理器所使用的寬度維,還提供處理的深度維(depth dimension),以增加每條指令的工作量。
如果所述解碼的指令定義了一控制指令,其被應(yīng)用于所述機(jī)器的控制執(zhí)行通道上的適當(dāng)?shù)墓δ軉卧?例如,分支單元106、執(zhí)行單元107和裝載/存儲(chǔ)單元108)。如果所述解碼的指令定義了具有固定的或者可配置的數(shù)據(jù)處理操作的指令,其被提供給所述數(shù)據(jù)處理執(zhí)行通道。在所述指令包的數(shù)據(jù)指令部分中,指定的位指示出所述指令是否是固定的或者可配置的數(shù)據(jù)處理指令,并且在可配置的指令的情況下,指定的位進(jìn)一步定義配置信息?;诮獯a的數(shù)據(jù)處理指令的子類型,數(shù)據(jù)被提供給所述機(jī)器的數(shù)據(jù)處理通道中的固定的或者可配置的執(zhí)行子通道。
在這里,“可配置的”表示從多個(gè)預(yù)定義的(“偽靜態(tài)的”)操作符配置中選擇一操作符配置的能力。操作符的偽靜態(tài)配置能使操作符(i)執(zhí)行特定類型的操作,或(ii)以特定的方式與相關(guān)聯(lián)的元素互連,或(iii)上面所述的(i)或(ii)的組合。在實(shí)踐中,一選定的偽靜態(tài)配置可同時(shí)確定許多操作符元素的行為和互連。也能控制與所述數(shù)據(jù)通道相關(guān)的切換配置。在一更佳的實(shí)施例中,至少所述多個(gè)偽靜態(tài)操作符配置中的某些配置由數(shù)據(jù)處理指令的操作碼部分進(jìn)行選擇,這一點(diǎn)將在下面被進(jìn)一步地描述。依照這里的實(shí)施例,“可配置的指令”允許在多位值的級(jí)別執(zhí)行定制的操作,例如在4位或更多位的多位值的級(jí)別或在字的級(jí)別。
應(yīng)該指出,在所述機(jī)器的各自不同端執(zhí)行的控制和數(shù)據(jù)處理指令能定義存儲(chǔ)器存取(裝載/存儲(chǔ))和基本的算術(shù)操作。控制操作的輸入/操作數(shù)可被提供給/提供自控制寄存器文件104,然而,數(shù)據(jù)處理操作的數(shù)據(jù)/操作數(shù)可被提供給/提供自寄存器文件105。
依照本發(fā)明的實(shí)施例,每個(gè)數(shù)據(jù)處理操作的至少一個(gè)輸入可以是向量。在這方面,所述可配置操作符和/或可配置的數(shù)據(jù)包的切換電路能被認(rèn)為是可配置用于借助所執(zhí)行的操作和/或其中的互連的特性執(zhí)行向量操作。例如,數(shù)據(jù)處理操作的一個(gè)64位向量輸入可包括4個(gè)16位標(biāo)量操作數(shù)。其中,“向量”是標(biāo)量操作數(shù)的組合。向量算術(shù)可在多個(gè)標(biāo)量操作數(shù)上執(zhí)行,并可包括標(biāo)量元素的操縱、移動(dòng)和置換。不是向量操作的所有操作數(shù)都需要是向量,例如向量操作可以同時(shí)具有標(biāo)量和至少一個(gè)向量作為輸入,并且輸出一個(gè)不是標(biāo)量就是向量的結(jié)果。
在這里,“控制指令”包括專門用于程序流、分支和地址生成的指令,但不包括用于數(shù)據(jù)處理的指令。“數(shù)據(jù)處理指令”包括用于邏輯操作或算術(shù)操作的指令,所述算術(shù)操作的至少一個(gè)輸入是向量。數(shù)據(jù)處理指令可對(duì)多個(gè)數(shù)據(jù)指令進(jìn)行操作,例如在SIMD處理中,或在處理更寬的、短的數(shù)據(jù)元素的向量過程中。剛剛提到的控制指令和數(shù)據(jù)指令的基本功能并不重疊,但是一個(gè)共同的性質(zhì)是兩種類型的代碼都具有邏輯和標(biāo)量算術(shù)的能力。
圖2顯示了用于圖1中的處理器的三種類型的指令包。每種類型的指令包為64位長。指令包211是用于緊湊的控制代碼的3標(biāo)量類型,并包括三個(gè)21位的控制指令(c21)。指令包212和213是用于并行執(zhí)行數(shù)據(jù)路徑代碼的LIW(長指令字)類型。在該實(shí)施例中每個(gè)指令包212和213包括兩個(gè)指令,但如果需要可以包括不同數(shù)目的指令。指令包212包括一個(gè)34位的數(shù)據(jù)指令(d34)和一個(gè)28位的存儲(chǔ)器指令(m28);并且其被用于和數(shù)據(jù)端的裝載-存儲(chǔ)操作(所述m28指令)一起并行執(zhí)行數(shù)據(jù)端的算術(shù)操作(所述d34指令)。使用來自于所述控制端的地址,存儲(chǔ)器類的指令(m28)能被讀取自,或被寫到,所述處理器的或者控制端或者數(shù)據(jù)端。指令包213包括一個(gè)34位的數(shù)據(jù)指令(d34)和一個(gè)21位的控制指令(c21);并且其被用于并行執(zhí)行數(shù)據(jù)端的算術(shù)操作(所述d34指令)和控制端的操作(所述c21指令),例如控制端的算術(shù)、分支或裝載-存儲(chǔ)操作。
圖1中實(shí)施例的指令解碼單元101使用每個(gè)指令包的初始標(biāo)識(shí)位、或在預(yù)定義的比特位置的一些其它的指定標(biāo)識(shí)位來確定哪一種類型的包正在被解碼。例如如圖2中所示,初始位“1”指明指令包是具有三個(gè)控制指令的標(biāo)量控制指令類型;然而初始位“01”和“00”指明了指令包的類型212和213,其中包212中有數(shù)據(jù)和存儲(chǔ)器指令,或者在包213中有數(shù)據(jù)和控制指令。解碼每個(gè)指令包的初始位后,圖1中的解碼單元101根據(jù)指令包的類型,將每個(gè)包中的指令適當(dāng)?shù)貍魉偷剿隹刂茍?zhí)行通道102或所述數(shù)據(jù)執(zhí)行通道103。
為了執(zhí)行圖2中的指令包,所述圖1的實(shí)施例中的處理器的指令解碼單元101從存儲(chǔ)器順序地取出程序包,并且所述程序包被順序執(zhí)行。在一指令包中,包211的指令被順序執(zhí)行,其中在所述64位字中最低端處的21位控制指令被首先執(zhí)行,然后是下一個(gè)21位的控制指令,接著是在最高端處的21位控制指令。在指令包212和213中,所述指令被同時(shí)執(zhí)行(盡管在根據(jù)本發(fā)明的實(shí)施例中,這不是必需的)。因而,按照?qǐng)D1的實(shí)施例中的處理器的程序順序,所述程序包被順序執(zhí)行,但在一個(gè)包中的指令可以被順序執(zhí)行,如包類型211,也可以同時(shí)執(zhí)行,如包類型212和213。下面,212和213類型的指令包分別簡寫為MD和CD包(分別為包含一個(gè)存儲(chǔ)器指令和一個(gè)數(shù)據(jù)指令,以及一個(gè)控制指令和一個(gè)數(shù)據(jù)指令)。
使用21位的控制指令,圖1中的實(shí)施例克服了在具有其它長度的指令的處理器中發(fā)現(xiàn)的許多缺點(diǎn),所述處理器特別是指支持用于數(shù)據(jù)指令的32位標(biāo)準(zhǔn)編碼和用于控制代碼的16位“緊湊”編碼的處理器。在這樣的雙16/32位處理器中,存在由于對(duì)每一條指令使用雙編碼,或者由于使用兩個(gè)分離的解碼器而產(chǎn)生冗余,其中所述的兩個(gè)分離的解碼器具有在分支編碼模式和取地址之間進(jìn)行切換的裝置,或其它裝置。根據(jù)本發(fā)明的實(shí)施例,該冗余可通過對(duì)所有控制指令使用一個(gè)單一的21位長度來消除。進(jìn)一步地,21位控制指令的使用消除了由于在16位“緊湊”編碼模式中語義內(nèi)容不足而引起的缺點(diǎn)。由于語義內(nèi)容不足,使用16位模式的處理器典型地需要混合一些設(shè)計(jì)的折衷,例如使用兩操作數(shù)的破壞操作,導(dǎo)致相應(yīng)的副本的代碼膨脹;使用對(duì)寄存器文件子集的窗口式訪問,導(dǎo)致代碼膨脹溢出/裝滿或窗口指針操作;或頻繁地恢復(fù)為32位格式,因?yàn)椴皇撬胁僮鞫寄鼙槐硎驹?6位格式中的非常少的可用操作代碼位中。在根據(jù)本發(fā)明的實(shí)施例中,這些缺點(diǎn)通過使用21位的控制指令被緩解了。
根據(jù)本發(fā)明的實(shí)施例,可以使用各種各樣的指令。例如,指令的識(shí)別標(biāo)志可以是下面中的任何一種,其中C格式、M格式和D格式分別表示控制格式、存儲(chǔ)器存取格式和數(shù)據(jù)格式
同樣根據(jù)本發(fā)明的實(shí)施例,C格式指令都提供SISD(單指令單數(shù)據(jù))操作,然而M格式和D格式指令提供SISD或SIMD操作。例如,控制指令可提供通用算術(shù)、比較和邏輯指令,控制流指令,存儲(chǔ)器裝載和存儲(chǔ)指令,以及其它指令。數(shù)據(jù)指令可提供常規(guī)的算術(shù)、移位、邏輯和比較指令,混洗、排序、字節(jié)擴(kuò)展和排列指令,線性反饋移位寄存器指令,以及通過可配置的深度執(zhí)行單元110(下面進(jìn)一步描述)的用戶定義的指令。存儲(chǔ)器指令可以提供存儲(chǔ)器裝載和存儲(chǔ),復(fù)制選定的數(shù)據(jù)寄存器到控制寄存器,復(fù)制廣播控制寄存器到數(shù)據(jù)寄存器,以及緊接著寄存器指令。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖1的處理器的特征在于第一固定的數(shù)據(jù)執(zhí)行通道和第二可配置的數(shù)據(jù)執(zhí)行通道。所述第一數(shù)據(jù)通道具有固定的SIMD執(zhí)行單元,所述單元被分割為具有與常規(guī)的SIMD處理設(shè)計(jì)相似的樣式的通道。所述第二數(shù)據(jù)通道具有可配置的深度執(zhí)行單元110?!吧疃葓?zhí)行”涉及處理器在返回結(jié)果給寄存器文件之前對(duì)由一單個(gè)的發(fā)出的指令提供的數(shù)據(jù)執(zhí)行多個(gè)連續(xù)操作的能力。深度執(zhí)行的一個(gè)例子可在常規(guī)的MAC操作(乘法和累加)中找到,所述MAC操作對(duì)來自于一單個(gè)指令的數(shù)據(jù)進(jìn)行兩個(gè)操作(乘法和加法),因此具有兩級(jí)的深度。深度執(zhí)行的特征在于操作數(shù)輸入的數(shù)目等于結(jié)果輸出的數(shù)目,或者同義地,入價(jià)(valency-in)等于出價(jià)(valency-out)。這樣,例如常規(guī)的只有一個(gè)結(jié)果的兩操作數(shù)加法不是深度執(zhí)行的例子,因?yàn)椴僮鲾?shù)的數(shù)目不等于結(jié)果的數(shù)目,但是卷積、快速傅立葉變換、Trellis/Viterbi編碼、相關(guān)、有限脈沖響應(yīng)濾波和其它信號(hào)處理算法是深度執(zhí)行的例子。專用數(shù)字信號(hào)處理(DSP)算法典型地在比特級(jí)和存儲(chǔ)器映射方式中執(zhí)行深度執(zhí)行。然而,常規(guī)的寄存器映射通用DSP不執(zhí)行深度執(zhí)行,改為在MAC操作中在至多兩次的深度執(zhí)行指令。作為對(duì)比,圖1的處理器提供能夠在大于兩次的深度來深度執(zhí)行動(dòng)態(tài)配置的字級(jí)指令的寄存器映射通用處理器。在圖1的處理器中,所述深度執(zhí)行指令(將被執(zhí)行的數(shù)學(xué)函數(shù)的圖表)的性質(zhì)能被指令本身中的配置信息調(diào)整/定制。在更佳的實(shí)施例中,格式指令包含分配給配置信息的比特位置。為了提供該能力,所述深度執(zhí)行單元110具有可配置的執(zhí)行資源,其意味著操作符模式、互連和常量能被加載以匹配每個(gè)應(yīng)用程序。深度執(zhí)行為并行執(zhí)行增加了一個(gè)深度維,所述深度維與早期的SIMD和LIW處理的概念所提供的寬度維正交,因此這表示了用于增加通用處理器的每條指令的工作量的一個(gè)附加維。
圖3顯示了根據(jù)本發(fā)明實(shí)施例的一個(gè)可配置的深度執(zhí)行單元310的組件。如圖1中所示,所述可配置的深度執(zhí)行單元110是數(shù)據(jù)執(zhí)行通道103的一部分,并且因此可以被來自于圖2中的MD和CD指令包212和213中的數(shù)據(jù)端指令所指示。在圖3中,指令314和操作數(shù)315被從圖1中的指令解碼單元101和數(shù)據(jù)寄存器文件105中提供給所述深度執(zhí)行單元310。在指令314中的多位配置代碼被用于訪問控制映射316,所述控制映射316擴(kuò)展所述多位代碼到用于配置所述深度執(zhí)行單元的操作符的一組相對(duì)復(fù)雜的配置信號(hào)中。所述控制映射316可以例如被具體表現(xiàn)為查找表,在所述查找表中所述指令的不同的可能存在的多位代碼被映射到所述深度執(zhí)行單元的不同的可能存在的操作符配置中?;诓殚喫隹刂朴成?16的查找表的結(jié)果,交叉開關(guān)互連317配置了一組操作符318-321,在所有的方案中,都必須執(zhí)行由所述多位指令代碼所指示的操作符配置。所述操作符可包括,例如乘法操作符318、算術(shù)邏輯部件(ALU)操作符319、狀態(tài)操作符320或交叉-通道序列改變器(cross-lane permuter)321。在一個(gè)實(shí)施例中,所述深度執(zhí)行單元包含15個(gè)操作符一個(gè)乘法操作符318、8個(gè)ALU操作符319、4個(gè)狀態(tài)操作符320和兩個(gè)交叉-通道序列改變器321;雖然其它數(shù)目的操作符也是可能的。提供給所述深度執(zhí)行單元的操作數(shù)315可以是,例如兩個(gè)16位的操作數(shù),這些操作數(shù)被提供給第二交叉開關(guān)互連322,所述第二交叉開關(guān)互連322可提供所述操作數(shù)給適當(dāng)?shù)牟僮鞣?18-321。所述第二交叉開關(guān)互連322也從所述操作符318-321接收中間結(jié)果的反饋324,所述反饋324也可接著由所述第二交叉開關(guān)互連322依次提供給適當(dāng)?shù)牟僮鞣?18-321。第三交叉開關(guān)互連323多路復(fù)用來自于所述操作符318-321的結(jié)果,并輸出一最終結(jié)果325。多種控制信號(hào)能被用于配置所述操作符,例如,圖3的實(shí)施例中的控制映射316不是必須實(shí)現(xiàn)為單個(gè)查找表的形式,而是可以實(shí)現(xiàn)為一系列兩個(gè)或多個(gè)串聯(lián)的查找表。第一查找表中的條目可以從給定的多位指令代碼指向第二查找表,從而減少用于復(fù)雜的操作符配置中的每個(gè)查找表所需的存儲(chǔ)量。例如,第一查找表可以被組織為配置類別的庫,因此多個(gè)多位指令代碼被一起分組在所述第一查找表中,其中每一組指向一隨后的查找表,所述隨后的查找表為該組中每一個(gè)多位代碼提供專用配置。
根據(jù)圖3的實(shí)施例,所述操作符被有利地預(yù)先設(shè)置進(jìn)不同的操作符類中。實(shí)際上,這可通過戰(zhàn)略層次的硬連線而實(shí)現(xiàn)。這種方法的一個(gè)優(yōu)點(diǎn)是其意味著更少的預(yù)定義配置需要被存儲(chǔ),并且所述控制電路能更簡單。例如,操作符318被預(yù)配置在乘法操作符類中,操作符319被預(yù)配置為ALU操作符,操作符320被預(yù)配置為狀態(tài)操作符,以及操作符321被預(yù)配置為交叉-通道序列改變器,而其它預(yù)配置操作符類也是可能的。然而,即使預(yù)先配置了操作符的類,仍存在運(yùn)行時(shí)靈活性使指令為了實(shí)現(xiàn)一給定算法的專用配置的最終布置,能夠至少布置(i)每一類中操作符的連接性;(ii)與其它類中的操作符的連接性;(iii)任一相關(guān)切換裝置間的連接性。
有技術(shù)的讀者將認(rèn)識(shí)到,雖然前述內(nèi)容描述了被認(rèn)為是最佳方式的內(nèi)容以及執(zhí)行本發(fā)明的其它適當(dāng)?shù)姆绞?,本發(fā)明不應(yīng)當(dāng)被限制為在所述較佳的實(shí)施例的說明中公開的特定裝置配置或方法步驟。本領(lǐng)域的技術(shù)人員也將認(rèn)識(shí)到本發(fā)明具有寬闊的應(yīng)用范圍,并且所述實(shí)施例容許不偏離于本發(fā)明概念的不同實(shí)現(xiàn)和修改的極大的變化范圍。特別地,其中提到的示例的位寬不是用來限制,涉及如半字、字、長整型等的位寬的任意選擇也不是用來限制。
權(quán)利要求
1.一種計(jì)算機(jī)處理器,所述處理器包括(a)解碼單元,用于解碼來自于一存儲(chǔ)器的一串指令包,其中每個(gè)指令包包括多條指令;(b)第一處理通道,其包括多個(gè)功能單元并可操作用于執(zhí)行控制處理操作;(c)第二處理通道,其包括多個(gè)功能單元并可操作用于執(zhí)行數(shù)據(jù)處理操作;其中所述解碼單元可操作用于接收指令包,并檢測(cè)所述指令包是否定義了(i)多個(gè)控制指令或(ii)其中的一個(gè)或多個(gè)指令為數(shù)據(jù)處理指令的多個(gè)指令,以及其中當(dāng)所述解碼單元檢測(cè)到所述指令包包括多個(gè)控制指令時(shí),所述控制指令被提供給所述第一處理通道以按照程序的順序執(zhí)行。
2.根據(jù)權(quán)利要求1的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)包含三個(gè)控制指令的指令包,并且可操作用于控制以所述指令在所述指令包中出現(xiàn)的順序來執(zhí)行所述三個(gè)控制指令中的每一個(gè)的控制過程。
3.根據(jù)權(quán)利要求1或2的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)包含多個(gè)長度相等的控制指令的指令包。
4.根據(jù)權(quán)利要求3的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)在指令包中的位長在18位到24位之間的控制指令。
5.根據(jù)權(quán)利要求4的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)在指令包中的每個(gè)指令均具有21位位長的多個(gè)控制指令。
6.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于接收并解碼位長為64位的指令包。
7.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)何時(shí)在所述指令包中存在至少一數(shù)據(jù)處理指令,并且作為相應(yīng),導(dǎo)致相關(guān)的數(shù)據(jù)被提供給所述數(shù)據(jù)處理通道。
8.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)所述指令包包括至少一數(shù)據(jù)處理指令以及從一個(gè)或多個(gè)存儲(chǔ)器存取指令、控制指令以及數(shù)據(jù)處理指令中選出的進(jìn)一步的指令。
9.根據(jù)權(quán)利要求8的計(jì)算機(jī)處理器,其中至少一數(shù)據(jù)處理指令和所述進(jìn)一步的指令被同時(shí)執(zhí)行
10.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述第二處理通道專門用于數(shù)據(jù)處理操作的執(zhí)行,并且數(shù)據(jù)處理指令被以匯編語言的形式提供。
11.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述控制處理操作基于直到第一預(yù)定義位寬的操作數(shù)執(zhí)行,而所述數(shù)據(jù)處理操作基于直到第二預(yù)定義位寬的數(shù)據(jù)執(zhí)行,所述第二預(yù)定義位寬大于所述第一預(yù)定義位寬。
12.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述第一處理通道包括從一個(gè)或多個(gè)控制寄存器文件,控制執(zhí)行單元,分支執(zhí)行單元和裝載/存儲(chǔ)單元中選出的單元。
13.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述第二處理通道包括數(shù)據(jù)執(zhí)行路徑,所述路徑包括可配置的數(shù)據(jù)執(zhí)行單元。
14.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述第二處理通道包括數(shù)據(jù)執(zhí)行路徑,所述路徑包括固定的數(shù)據(jù)執(zhí)行單元。
15.根據(jù)權(quán)利要求13的計(jì)算機(jī)處理器,其中在使用中,所述可配置的數(shù)據(jù)執(zhí)行單元根據(jù)單指令多數(shù)據(jù)的原則進(jìn)行操作。
16.根據(jù)權(quán)利要求14的計(jì)算機(jī)處理器,其中在使用中,所述固定的數(shù)據(jù)執(zhí)行單元根據(jù)單指令多數(shù)據(jù)的原則進(jìn)行操作。
17.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述數(shù)據(jù)處理通道包括一個(gè)或多個(gè)數(shù)據(jù)寄存器文件和裝載/存儲(chǔ)單元。
18.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中單個(gè)的裝載/存儲(chǔ)單元被所述控制處理通道和所述數(shù)據(jù)處理通道通過各自的端口進(jìn)行存取。
19.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)包含至少一數(shù)據(jù)處理指令的指令包,其中所述至少一數(shù)據(jù)處理指令的位長在30至38位之間。
20.根據(jù)權(quán)利要求19的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)包含至少一數(shù)據(jù)處理指令的指令包,其中所述至少一數(shù)據(jù)處理指令的位長為34位。
21.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)包含數(shù)據(jù)處理操作和存儲(chǔ)器存取指令的指令包。
22.根據(jù)權(quán)利要求21的計(jì)算機(jī)處理器,其中所述存儲(chǔ)器存取指令的位長為28位。
23.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)包含數(shù)據(jù)處理指令和控制處理指令的指令包。
24.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)形式為C代碼或其變型的控制處理指令。
25.根據(jù)前述任一權(quán)利要求的計(jì)算機(jī)處理器,其中所述解碼單元可操作用于檢測(cè)匯編語言形式的數(shù)據(jù)處理指令。
26.一種操作計(jì)算機(jī)處理器的方法,所述計(jì)算機(jī)處理器包括第一和第二處理通道,每一個(gè)處理通道具有多個(gè)功能單元,其中所述第一處理通道能夠執(zhí)行控制處理操作而所述第二處理通道能夠執(zhí)行數(shù)據(jù)處理操作,所述方法包括(a)從存儲(chǔ)器中接收一系列指令包,每一個(gè)所述指令包包括多個(gè)定義操作的指令;(b)依次解碼每一個(gè)指令包,通過確定所述指令包是否定義了(i)多個(gè)控制指令;或(ii)至少一個(gè)數(shù)據(jù)處理指令;以及其中當(dāng)所述解碼單元檢測(cè)到所述指令包包括多個(gè)控制指令時(shí),提供所述多個(gè)控制指令給所述第一處理通道以按照序列執(zhí)行。
27.一種計(jì)算機(jī)程序產(chǎn)品,包括用于使計(jì)算機(jī)根據(jù)權(quán)利要求26的方法進(jìn)行操作的程序代碼裝置。
28.一種計(jì)算機(jī)程序代碼,包括用于使計(jì)算機(jī)根據(jù)權(quán)利要求26的方法進(jìn)行操作的一系列指令。
29.一種計(jì)算機(jī)指令集合,包括第一類指令包和第二類指令包,所述第一類指令包中的每一個(gè)指令包包括順序執(zhí)行的多個(gè)控制指令,所述第二類指令包中的每一個(gè)指令包包括同時(shí)執(zhí)行的至少一數(shù)據(jù)處理指令和進(jìn)一步的指令,所述進(jìn)一步的指令從一個(gè)或多個(gè)存儲(chǔ)器存取指令、控制指令和數(shù)據(jù)處理指令中選擇得出。
全文摘要
根據(jù)本發(fā)明的實(shí)施例,公開了一計(jì)算機(jī)處理器結(jié)構(gòu);尤其是公開了一種計(jì)算機(jī)處理器、一種操作所述處理器的方法以及一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品利用用于所述計(jì)算機(jī)的指令集合。在根據(jù)本發(fā)明的一個(gè)實(shí)施例中,提供了一種計(jì)算機(jī)處理器,包括解碼單元,用于解碼來自于存儲(chǔ)器的一串指令包,其中每個(gè)指令包包括多條指令;第一處理通道,其包括多個(gè)功能單元并可操作用于執(zhí)行控制處理操作;第二處理通道,其包括多個(gè)功能單元并可操作用于執(zhí)行數(shù)據(jù)處理操作;其中所述解碼單元可操作用于接收指令包,并檢測(cè)所述指令包是否定義了(i)多個(gè)控制指令或(ii)其中的一個(gè)或多個(gè)指令為數(shù)據(jù)處理指令的多個(gè)指令,以及其中當(dāng)所述解碼單元檢測(cè)到所述指令包包括多個(gè)控制指令時(shí),所述控制指令被提供給第一處理通道以按照程序順序執(zhí)行。
文檔編號(hào)G06F9/38GK1950795SQ200580010660
公開日2007年4月18日 申請(qǐng)日期2005年3月22日 優(yōu)先權(quán)日2004年3月31日
發(fā)明者S·諾勒斯 申請(qǐng)人:艾色拉公司