專利名稱:用于雙數(shù)據(jù)路徑處理的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)處理器,一種操作該計(jì)算機(jī)處理器的方法,以及一種包括計(jì)算機(jī)用的指令集的計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
為了提高計(jì)算機(jī)處理器的速度,現(xiàn)有技術(shù)結(jié)構(gòu)已使用了雙執(zhí)行路徑用于執(zhí)行指令。雙執(zhí)行路徑處理器可以根據(jù)單指令多數(shù)據(jù)(SIMD)原理操作,利用操作的并行性用于提高處理器速度。
然而,雖然使用雙執(zhí)行路徑和SIMD處理,但是仍不斷的需要提高處理器速度。典型的雙執(zhí)行路徑處理器使用兩個(gè)大致類似的通路,因此每個(gè)通路都處理控制代碼和數(shù)據(jù)路徑代碼。雖然公知的處理器支持32位標(biāo)準(zhǔn)編碼和16位“密集”編碼的組合,但是該方案承受著許多不足,包括缺少在16位格式中少數(shù)可用位中的語義內(nèi)容。
此外,常規(guī)的通用數(shù)字信號(hào)處理器不能匹配用于許多目的的應(yīng)用特定算法,包括執(zhí)行諸如卷積、快速傅立葉變換、Trellis/Viterbi編碼、相關(guān)性、有限脈沖響應(yīng)過濾和其他操作的專用操作。
發(fā)明內(nèi)容
在根據(jù)本發(fā)明的一個(gè)實(shí)施例中,提供一種具有控制和數(shù)據(jù)處理能力的計(jì)算機(jī)處理器。該計(jì)算機(jī)處理器包括用于解碼指令的解碼單元;包括第一數(shù)據(jù)執(zhí)行路徑和第二數(shù)據(jù)執(zhí)行路徑的數(shù)據(jù)處理設(shè)備,所述第一數(shù)據(jù)執(zhí)行路徑包括固定操作符,所述第二數(shù)據(jù)執(zhí)行路徑至少包括可配置操作符,所述可配置操作符具有多個(gè)預(yù)定義的配置,通過數(shù)據(jù)處理指令的操作碼部分可選擇所述配置中的至少一些;其中所述解碼單元可操作用于檢測(cè)數(shù)據(jù)處理指令是定義固定數(shù)據(jù)處理操作還是可配置數(shù)據(jù)處理操作,所述解碼單元使計(jì)算機(jī)系統(tǒng)將用于處理的數(shù)據(jù)在檢測(cè)到所述固定數(shù)據(jù)處理指令時(shí)提供給所述第一數(shù)據(jù)執(zhí)行路徑,而在檢測(cè)到可配置數(shù)據(jù)處理指令時(shí)提供給所述可配置數(shù)據(jù)執(zhí)行路徑。
在另一相關(guān)實(shí)施例中,解碼單元能夠解碼來自存儲(chǔ)器的指令包流,每個(gè)包包括多個(gè)指令。解碼單元也可操作用于檢測(cè)指令包是否包含數(shù)據(jù)處理指令??膳渲貌僮鞣远辔恢档募?jí)別、或者以字的級(jí)別可配置,其中多位值包括具有四個(gè)或更多位的多位值。根據(jù)單指令多數(shù)據(jù)原理,第一數(shù)據(jù)執(zhí)行路徑的多個(gè)固定操作符可以被布置用于在獨(dú)立通道中執(zhí)行多個(gè)固定操作。同樣,根據(jù)單指令多數(shù)據(jù)原理,第二數(shù)據(jù)執(zhí)行路徑的多個(gè)可配置操作符可以被布置用于在不同通道中執(zhí)行多個(gè)操作。
在另一相關(guān)實(shí)施例中,第二執(zhí)行路徑的可配置操作符可以被布置用于接收確定所執(zhí)行的操作的特性的配置信息。可以從定義可配置數(shù)據(jù)處理操作的指令的字段接收該信息。第二執(zhí)行路徑的可配置操作符可以被布置用于接收包括控制相關(guān)的互連性的信息的可配置信息。該計(jì)算機(jī)處理器進(jìn)一步包括與第二數(shù)據(jù)執(zhí)行路徑的可配置操作符相關(guān)聯(lián)的控制映射,所述控制映射可操作用于從可配置數(shù)據(jù)處理指令接收至少一個(gè)配置位,并給響應(yīng)于此的可配置操作符提供配置信息。該配置信息可以通過所述可配置操作符確定操作的特性;并且控制兩個(gè)或多個(gè)所述配置操作符之間的互連性。
在另一相關(guān)實(shí)施例中,第二執(zhí)行路徑的可配置操作符可被布置用于從源而不是從可配置數(shù)據(jù)處理指令來接收確定待執(zhí)行的操作的特性的配置信息、或者控制互連性的配置信息。第二數(shù)據(jù)執(zhí)行路徑的至少一個(gè)可配置操作符能夠在向結(jié)果存儲(chǔ)器返回結(jié)果之前以比兩個(gè)計(jì)算大的執(zhí)行深度來執(zhí)行數(shù)據(jù)處理指令。該計(jì)算機(jī)處理器可以包括轉(zhuǎn)換裝置,其用于從可配置數(shù)據(jù)處理指令接收數(shù)據(jù)處理操作數(shù)并在適當(dāng)時(shí)轉(zhuǎn)換所述數(shù)據(jù)處理操作數(shù)用于提供給一個(gè)或多個(gè)所述可配置操作符。計(jì)算機(jī)處理器也可以包括以下轉(zhuǎn)換裝置,其用于從一個(gè)或多個(gè)所述可配置操作符接收結(jié)果,并在適當(dāng)時(shí)轉(zhuǎn)換所述結(jié)果用于提供給結(jié)果存儲(chǔ)器和反饋循環(huán)中的一個(gè)或多個(gè)。該計(jì)算機(jī)處理器也包括多個(gè)控制映射,其用于將從可配置數(shù)據(jù)處理指令所接收的配置位映射成用于提供給第二數(shù)據(jù)執(zhí)行路徑的可配置操作符的配置信息。同樣,該計(jì)算機(jī)處理器可以包括以下轉(zhuǎn)換裝置,其用于從控制映射接收配置信息,并在適當(dāng)時(shí)轉(zhuǎn)換該配置信息用于提供給第二數(shù)據(jù)執(zhí)行路徑的可配置操作符。該計(jì)算機(jī)處理器也可以包括從一個(gè)或多個(gè)以下項(xiàng)所選擇的可配置操作符乘累加操作符;算術(shù)操作符;狀態(tài)操作符;和交叉通道換碼器。同樣,該計(jì)算機(jī)處理器可以包括能執(zhí)行從如下項(xiàng)中所選擇的一個(gè)或多個(gè)操作的操作符和指令集快速傅立葉變換;反向快速傅立葉變換;Viterbi編碼/解碼;Turbo編碼/解碼;和有限脈沖響應(yīng)計(jì)算;以及任何其他相關(guān)性或卷積。
在根據(jù)本發(fā)明的另一實(shí)施例中,提供一種操作具有控制和數(shù)據(jù)處理能力的計(jì)算機(jī)處理器的方法,所述計(jì)算機(jī)處理器包括第一數(shù)據(jù)執(zhí)行路徑和第二數(shù)據(jù)執(zhí)行路徑,所述第一數(shù)據(jù)執(zhí)行路徑包括固定操作符,所述第二數(shù)據(jù)執(zhí)行路徑包括可配置操作符,所述可配置操作符具有多個(gè)預(yù)定義的配置,所述配置中的至少一些可通過數(shù)據(jù)處理指令的操作碼部分來選擇。該方法包括解碼多個(gè)指令以檢測(cè)所述多個(gè)指令的至少一個(gè)數(shù)據(jù)處理指令是定義固定數(shù)據(jù)處理操作還是可配置數(shù)據(jù)處理操作;使計(jì)算機(jī)處理器將用于處理的數(shù)據(jù)在檢測(cè)到固定數(shù)據(jù)處理指令時(shí)提供給所述第一數(shù)據(jù)執(zhí)行路徑,而在檢測(cè)可配置數(shù)據(jù)處理指令時(shí)提供給所述可配置數(shù)據(jù)執(zhí)行路徑;以及輸出結(jié)果。
在根據(jù)本發(fā)明的另一實(shí)施例中,提供一種包括程序代碼裝置的計(jì)算機(jī)程序產(chǎn)品,所述程序代碼裝置用于使計(jì)算機(jī)處理器執(zhí)行以下步驟,其中所述計(jì)算機(jī)處理器包括第一數(shù)據(jù)執(zhí)行路徑和第二數(shù)據(jù)執(zhí)行路徑,所述第一數(shù)據(jù)執(zhí)行路徑包括固定操作符,所述第二數(shù)據(jù)執(zhí)行路徑包括可配置操作符,所述可配置操作符具有多個(gè)預(yù)定義的配置,所述配置中的至少一些可通過數(shù)據(jù)處理指令的操作碼部分來選擇,即解碼多個(gè)指令以檢測(cè)所述多個(gè)指令的至少一個(gè)數(shù)據(jù)處理指令是定義固定數(shù)據(jù)處理操作還是可配置數(shù)據(jù)處理操作;使計(jì)算機(jī)處理器將用于處理的數(shù)據(jù)在檢測(cè)到固定數(shù)據(jù)處理指令時(shí)提供給所述第一數(shù)據(jù)執(zhí)行路徑,而在檢測(cè)可配置數(shù)據(jù)處理指令時(shí)提供給所述可配置數(shù)據(jù)執(zhí)行路徑;以及輸出結(jié)果。
在根據(jù)本發(fā)明的另一實(shí)施例中,提供一種包括第一多個(gè)指令和第二多個(gè)指令的數(shù)據(jù)處理指令集,所述第一多個(gè)指令具有指示數(shù)據(jù)處理操作的固定類型的字段,所述第二多個(gè)指令具有指示數(shù)據(jù)處理操作的可配置類型的字段。
在根據(jù)本發(fā)明的另一實(shí)施例中,提供一種包含可配置操作符的數(shù)據(jù)執(zhí)行路徑的計(jì)算機(jī)處理器,其中可配置操作符包括操作符配置的多個(gè)預(yù)定義的組,每個(gè)組包括來自獨(dú)立的操作符類的操作符。操作符類可以包括從一個(gè)或多個(gè)如下項(xiàng)中所選擇的類乘累加操作符;算術(shù)操作符;狀態(tài)操作符;和換碼器。從操作符配置的每個(gè)預(yù)定義的組內(nèi)所選擇的操作符之間的連接能夠通過由計(jì)算機(jī)處理器所執(zhí)行的指令內(nèi)的操作碼部分來配置。同樣,從操作符配置的多于一個(gè)的預(yù)定義的組所選擇的操作符之間的連接能夠通過由計(jì)算機(jī)處理器所執(zhí)行的指令內(nèi)的操作碼部分來配置。
本發(fā)明的其他優(yōu)點(diǎn)和新穎特性在如下說明中將會(huì)部分地被提出,并且依據(jù)下面的審查和附圖,對(duì)于本領(lǐng)域技術(shù)人員而言部分地是顯然的;或者可以通過實(shí)施本發(fā)明被學(xué)習(xí)到。
為了更好的理解本發(fā)明,并說明可以如何同樣實(shí)施本發(fā)明,現(xiàn)在將僅通過示例參考附圖,其中圖1是根據(jù)本發(fā)明實(shí)施例的不對(duì)稱的雙執(zhí)行路徑計(jì)算機(jī)處理器的框圖;圖2表示根據(jù)本發(fā)明實(shí)施例的用于圖1的處理器的指令的示例性類;以及圖3是表示根據(jù)本發(fā)明實(shí)施例的可配置深執(zhí)行單元的組件的示意圖;具體實(shí)施方式
圖1是根據(jù)本發(fā)明實(shí)施例的不對(duì)稱的雙路徑計(jì)算機(jī)處理器的框圖。圖1的處理器將單指令流100的處理在兩個(gè)不同的硬件執(zhí)行路徑之間劃分即用于處理控制代碼的控制執(zhí)行路徑102、和用于處理數(shù)據(jù)代碼的數(shù)據(jù)執(zhí)行路徑103。兩個(gè)執(zhí)行路徑102、103的數(shù)據(jù)寬度、操作符和其他特征根據(jù)控制代碼和數(shù)據(jù)路徑代碼的不同特征而不同。典型地,控制代碼支持較少、較窄的寄存器,難于并行化,典型地(但不是唯一地)用C代碼或另一高級(jí)語言來寫,并且它的代碼密度一般比它的速度性能更重要。相反,數(shù)據(jù)路徑代碼典型地支持寬寄存器的大文件,可高度并行化,以匯編語言來寫,并且它的性能比它的代碼密度更重要。在圖1的處理器中,兩個(gè)不同的執(zhí)行路徑102和103專用于處理兩種不同類型的代碼,每側(cè)都具有其自己的結(jié)構(gòu)寄存器文件(諸如控制寄存器文件104和數(shù)據(jù)寄存器文件105),在寄存器寬度和數(shù)量方面是不同的;控制寄存器具有較窄的寬度,以位數(shù)計(jì)(在一個(gè)示例中,32位),而數(shù)據(jù)寄存器具有較寬的寬度(在一個(gè)示例中,64位)。因?yàn)榧拇嫫鞯膬蓚€(gè)執(zhí)行路徑執(zhí)行不同的專門功能而具有不同的位寬度,因此該處理器是不對(duì)稱的。
在圖1的處理器中,指令流100由指令包的序列組成。所提供的每個(gè)指令包由指令解碼單元101解碼,其從數(shù)據(jù)指令中分離控制指令,如下進(jìn)一步所述??刂茍?zhí)行路徑102為指令流處理控制流操作,并利用分支單元106、執(zhí)行單元107、和載入存儲(chǔ)單元108管理機(jī)器的狀態(tài)寄存器,其中在該實(shí)施例中所述載入存儲(chǔ)單元108被數(shù)據(jù)執(zhí)行路徑103共享。只有處理器的控制側(cè)需要對(duì)編譯器(諸如對(duì)于C、C++、或Java語言的編譯器、或另一高級(jí)語言編譯器)可視。在控制側(cè)內(nèi),分支單元106和執(zhí)行單元107的操作依照本領(lǐng)域普通技術(shù)人員公知的常規(guī)處理器設(shè)計(jì)。
在固定執(zhí)行單元109和可配置深度執(zhí)行單元110中,數(shù)據(jù)執(zhí)行路徑103使用SIMD(單指令多數(shù)據(jù))并行性。就像將在下面進(jìn)一步描述的那樣,除了常規(guī)的SIMD處理器所使用的寬度以外,為了增加每指令工作,可配置深度執(zhí)行單元110提供處理的深度。
如果被解碼的指令定義控制指令,則其被施加給機(jī)器的控制執(zhí)行路徑上的適當(dāng)?shù)墓δ軉卧?例如分支單元106、執(zhí)行單元107和載入/存儲(chǔ)單元108)。如果被解碼的指令定義具有固定或者可配置數(shù)據(jù)處理操作的指令,則其被供應(yīng)給數(shù)據(jù)處理執(zhí)行路徑。在指令包的數(shù)據(jù)指令部分內(nèi),指定位表示指令是固定還是可配置數(shù)據(jù)處理指令,以及在可配置指令的情況下,另外的指定位定義配置信息。根據(jù)被解碼的數(shù)據(jù)處理指令的子類型,將數(shù)據(jù)提供給機(jī)器的數(shù)據(jù)處理路徑的固定或可配置執(zhí)行子路徑。
這里,“可配置”表示從多個(gè)預(yù)定義的(“偽靜態(tài)”)操作符配置中選擇操作符配置的能力。操作符的偽靜態(tài)配置是有效的用以使操作符(i)執(zhí)行特定類型的操作或者(ii)以特定形式與相關(guān)元件互連或者(iii)上述(i)和(ii)的組合。實(shí)際上,所選的偽靜態(tài)配置每次可以確定許多操作符元素的特性和互連性。它也能控制與數(shù)據(jù)路徑相關(guān)聯(lián)的轉(zhuǎn)換配置。在優(yōu)選的實(shí)施例中,至少部分多個(gè)偽靜態(tài)操作符配置通過數(shù)據(jù)處理指令的操作代碼部分是可選擇的,這將在下面進(jìn)一步描述。同樣根據(jù)這里的實(shí)施例,“可配置指令”允許以多位值的級(jí)別執(zhí)行定制的操作;例如以四個(gè)或多個(gè)位多位值的級(jí)別,或者以字的級(jí)別。
需要指出的是,控制和數(shù)據(jù)處理指令可以定義存儲(chǔ)器訪問(載入/存儲(chǔ))和基本算術(shù)操作,所述控制和數(shù)據(jù)處理指令在機(jī)器的它們的相應(yīng)不同的側(cè)上被執(zhí)行。用于控制操作的輸入/操作數(shù)可被提供給控制寄存器文件104/從控制寄存器文件104提供,而用于數(shù)據(jù)處理操作的數(shù)據(jù)/操作數(shù)被提供給寄存器文件105/從寄存器文件105提供。
根據(jù)本發(fā)明的實(shí)施例,每個(gè)數(shù)據(jù)處理操作的至少一個(gè)輸入可以是矢量。在這方面,可以認(rèn)為可配置數(shù)據(jù)路徑的可配置操作符和/或轉(zhuǎn)換電路是可配置的,以利用所執(zhí)行的操作的特性和/或其間的互連性執(zhí)行矢量操作。例如,對(duì)數(shù)據(jù)處理操作的64位矢量輸入可以包括四個(gè)16位的標(biāo)量操作數(shù)。這里,“矢量”是標(biāo)量操作數(shù)的集合。矢量算術(shù)可以在多個(gè)標(biāo)量操作數(shù)上執(zhí)行,并可以包括標(biāo)量元素的轉(zhuǎn)向、移動(dòng)和置換。不是矢量操作的所有操作數(shù)都需要是矢量;例如,矢量操作可以有標(biāo)量和至少一個(gè)矢量作為輸入;并且輸出或者是標(biāo)量或者是矢量的結(jié)果。
這里,“控制指令”包括專用于程序流和分支以及地址產(chǎn)生的指令;但不是數(shù)據(jù)處理?!皵?shù)據(jù)處理指令”包括用于邏輯操作或算術(shù)操作的指令,對(duì)于該算術(shù)操作,至少一個(gè)輸入是矢量。數(shù)據(jù)處理指令可以在多個(gè)數(shù)據(jù)指令上操作,例如在SIMD處理中,或在處理數(shù)據(jù)元素的寬的、短的矢量中。上述的控制指令和數(shù)據(jù)處理指令的基本功能并不重疊;然而,共性在于兩種類型的代碼都具有邏輯和標(biāo)量算術(shù)能力。
圖2示出用于圖1的處理器的指令包的三種類型。指令包的每種類型都是64位長。指令包211是3標(biāo)量類型,用于密集控制代碼,并包括三個(gè)21位控制指令(c21)。指令包212和213是LIW(長指令字)類型,用于數(shù)據(jù)路徑代碼的并行執(zhí)行。在該示例中,每個(gè)指令包212、213都包括兩個(gè)指令,但是如果需要可以包括不同的數(shù)目。指令包212包括34位數(shù)據(jù)指令(d34)和28位存儲(chǔ)器指令(m28);并且被用于并行執(zhí)行具有數(shù)據(jù)側(cè)載入存儲(chǔ)操作(m28指令)的數(shù)據(jù)側(cè)算術(shù)(d34指令)。存儲(chǔ)器類指令(m28)可以利用來自控制側(cè)的地址從處理器的控制側(cè)或數(shù)據(jù)側(cè)讀出,或?qū)懭胩幚砥鞯目刂苽?cè)或數(shù)據(jù)側(cè)。指令包213包括34位數(shù)據(jù)指令(d34)和21位控制指令(c21);并被用于并行執(zhí)行具有控制側(cè)操作(c21指令)(例如控制側(cè)算術(shù)、分支或者載入存儲(chǔ)操作)的數(shù)據(jù)側(cè)算術(shù)(d34指令)。
圖1的實(shí)施例的指令解碼單元101使用每個(gè)指令包的初始識(shí)別位、或者在預(yù)定位位置處的某些其他指定的識(shí)別位,用于確定正在解碼哪一種類型的包。例如,如圖2所示,初始位“1”表示指令包是標(biāo)量控制指令類型,具有3個(gè)控制指令;而初始位“01”和“00”表示類型212和213的指令包,在包212中具有數(shù)據(jù)和存儲(chǔ)器指令或者在包213中具有數(shù)據(jù)和控制指令。已經(jīng)解碼了每個(gè)指令包的初始位,圖1的解碼單元101根據(jù)指令包的類型將每個(gè)包的指令適當(dāng)?shù)貍鬟f到控制執(zhí)行路徑102或者數(shù)據(jù)執(zhí)行路徑103。
為了執(zhí)行圖2的指令包,圖1的實(shí)施例的處理器的指令解碼單元101從存儲(chǔ)器順序地取得程序包;并程序包順序地被執(zhí)行。在指令包內(nèi),順序地執(zhí)行包211的指令,其中首先執(zhí)行64位字的最低有效端的21位控制指令,然后是接下來的21位控制指令,以及然后是最高有效端的21位控制指令。在指令包212和213內(nèi),可以同時(shí)執(zhí)行指令(在根據(jù)本發(fā)明的實(shí)施例中,雖然這不是必需的情況)。因此,以圖1的實(shí)施例的處理器的程序順序,程序包被順序地執(zhí)行;但是包內(nèi)的指令可以或者順序地被執(zhí)行(對(duì)于包類型211),或同時(shí)被執(zhí)行(對(duì)于包212和213)。下面,將類型212和213的指令包分別簡(jiǎn)稱為MD和CD包(分別包含一個(gè)存儲(chǔ)器和一個(gè)數(shù)據(jù)指令;以及一個(gè)控制指令和一個(gè)數(shù)據(jù)指令)。
通過使用21位控制指令,圖1的實(shí)施例克服了許多在具有其他長度指令的處理器中以及特別是在支持?jǐn)?shù)據(jù)指令用的32位標(biāo)準(zhǔn)編碼和控制代碼用的16位“密集”編碼的組合的處理器中所發(fā)現(xiàn)的缺陷。在這種雙16/32位處理器中,由于使用每條指令用的雙編碼、或者使用具有通過分支、提取地址在編碼方案之間轉(zhuǎn)換的裝置或其他裝置的兩個(gè)獨(dú)立的解碼器而引起冗余。根據(jù)本發(fā)明實(shí)施例,通過使用單21位長度用于所有控制指令來消除該冗余。此外,使用21位控制指令消除在16位“密集”編碼方案中不充分的語義內(nèi)容所產(chǎn)生的缺陷。由于不充分的語義內(nèi)容,使用16位方案的處理器典型地需要設(shè)計(jì)折衷的某些混合,諸如使用兩操作數(shù)破壞性操作,其中相應(yīng)的代碼膨脹(code bloat)用于復(fù)制;使用對(duì)寄存器文件的子集的有窗口訪問,其中代碼膨脹用于溢出/填充或者窗口指針操作;或頻繁逆轉(zhuǎn)為32位格式,因?yàn)椴皇撬械牟僮鞫伎梢砸?6位格式中很少可用的操作碼位來表示。在本發(fā)明實(shí)施例中,通過使用21位控制指令減輕這些缺陷。
根據(jù)本發(fā)明實(shí)施例,可以使用大量指令。例如,指令簽名可以是如下任一種,其中C格式、M格式、和D格式分別表示控制、存儲(chǔ)器訪問和數(shù)據(jù)格式
同樣,根據(jù)本發(fā)明一個(gè)實(shí)施例,C格式指令都提供SISD(單指令單數(shù)據(jù))操作,而M格式和D格式指令提供SISD或SIMD操作。例如,控制指令可以提供一般的算術(shù)、比較和邏輯指令;控制流指令;存儲(chǔ)器載入和存儲(chǔ)指令;以及其他。數(shù)據(jù)指令可以提供一般的算術(shù)、移位、邏輯和比較指令;清洗(shuffle)、分類、字節(jié)擴(kuò)展和置換指令;線性反饋偏移寄存指令;以及經(jīng)由可配置深度執(zhí)行單元110(如下所述)由用戶定義的指令。存儲(chǔ)器指令可以提供存儲(chǔ)器載入和存儲(chǔ);將所選擇的數(shù)據(jù)寄存器復(fù)制到控制寄存器;將廣播控制寄存器復(fù)制到數(shù)據(jù)寄存器;以及立即到寄存器指令。
根據(jù)本發(fā)明一個(gè)實(shí)施例,圖1的處理器的特征在于第一固定數(shù)據(jù)執(zhí)行路徑和第二可配置數(shù)據(jù)執(zhí)行路徑。第一數(shù)據(jù)路徑具有以與常規(guī)的SIMD處理設(shè)計(jì)類似的形式被分裂為通道的固定SIMD執(zhí)行單元。第二數(shù)據(jù)路徑具有可配置深度執(zhí)行單元110。“深度執(zhí)行”指的是在向寄存器文件返回結(jié)果之前在由單個(gè)發(fā)布的指令所提供的數(shù)據(jù)上執(zhí)行多個(gè)連續(xù)操作的處理器能力。深度執(zhí)行的一個(gè)示例在于常規(guī)的MAC操作(乘和累加),其在來自單個(gè)指令的數(shù)據(jù)上執(zhí)行兩個(gè)操作(乘法和加法),因此具有數(shù)量級(jí)2的深度。深度執(zhí)行也可以以操作數(shù)輸入的數(shù)目等于結(jié)果輸出的數(shù)目為特征;或等同地,價(jià)進(jìn)(valency-in)等于價(jià)出(valency-out)。因此,例如具有一個(gè)結(jié)果的常規(guī)兩操作數(shù)加法不是優(yōu)選的深度執(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í)行順序深度最多為數(shù)量級(jí)2的指令。相反,圖1的處理器提供寄存器映射通用處理器,其能夠深度執(zhí)行數(shù)量級(jí)大于2的動(dòng)態(tài)可配置的字級(jí)指令。在圖1的處理器中,深度執(zhí)行指令的特性(待執(zhí)行的數(shù)學(xué)函數(shù)的圖表)可以由指令本身中的配置信息調(diào)節(jié)/定制。在優(yōu)選實(shí)施例中,格式指令包括被分配給配置信息的位位置。為了提供這個(gè)能力,深度執(zhí)行單元110具有可配置執(zhí)行資源,其意味著可以上載操作符模式、互連性和常數(shù)以適合每個(gè)應(yīng)用。深度執(zhí)行對(duì)執(zhí)行的并行性添加深度,其正交于由SIMD和LIW處理的早期構(gòu)思所提供的寬度;因此它表示用于增加目標(biāo)處理器的每指令工作(work-per-instruction)的其他尺度。
圖3示出根據(jù)本發(fā)明實(shí)施例的可配置深度執(zhí)行單元310的組件。如圖1所示,可配置深度執(zhí)行單元110是數(shù)據(jù)執(zhí)行路徑103的一部分,并因此可以由來自圖2的MD和CD指令包212和213的數(shù)據(jù)側(cè)指令指示。在圖3中,從圖1的指令解碼單元101和數(shù)據(jù)寄存器文件105將指令314和操作數(shù)315提供到深度執(zhí)行單元310。被解碼的指令314中的多位配置代碼被用于訪問控制映射316,其將多位代碼擴(kuò)展為比較復(fù)雜的配置信號(hào)集用于配置深度執(zhí)行單元的操作符。例如,控制映射316可以被實(shí)施為查詢表,其中將指令的不同的可能多位代碼映射為深度執(zhí)行單元的不同的可能操作符配置。根據(jù)對(duì)控制映射316的查詢表查詢的結(jié)果,交叉互連317配置一組操作符318-321,在任何布置中對(duì)于執(zhí)行由多位指令代碼所表示的操作符配置都是必要的。例如,該操作符可以包括乘法操作符318、算術(shù)邏輯單元(ALU)操作符319、狀態(tài)操作符320、或交叉通道換碼器321。在一個(gè)實(shí)施例中,深度執(zhí)行單元包含15個(gè)操作符一個(gè)乘法操作符318、八個(gè)ALU操作符319、四個(gè)狀態(tài)操作符320、和兩個(gè)交叉通道換碼器321;盡管其他操作符數(shù)目也是可能的。被提供到深度執(zhí)行單元的操作數(shù)315可以是例如16位操作數(shù);將這些操作數(shù)提供到第二交叉互連322,其可以將操作數(shù)提供給合適的操作符318-321。第二交叉互連322也從操作符318-321接收中間結(jié)果的反饋324,所述反饋接著又同樣可以由第二交叉互連322提供給合適的操作符318-321。第三交叉互連323多路復(fù)用來自操作符318-321的結(jié)果,并輸出最后結(jié)果325。各種控制信號(hào)可以被用于配置操作符;例如,圖3的實(shí)施例的控制映射316不必要被實(shí)施為單個(gè)查詢表,而是可以被實(shí)施為兩個(gè)或更多級(jí)聯(lián)查詢表的序列。第一查詢表中的項(xiàng)目可以從給出的多位指令代碼指向第二查詢表,因此減少了在每個(gè)查詢表中用于復(fù)雜操作符配置所需的存儲(chǔ)量。例如,第一查詢表可以被組織為配置種類的庫,使得多個(gè)多位指令代碼在第一查詢表中被組合在一起,其中每組指向提供該組的每個(gè)多位代碼的特定配置的隨后的查詢表。
根據(jù)圖3的實(shí)施例,操作符優(yōu)選地被預(yù)配置為各種操作符類。實(shí)際上,這通過硬布線的策略層來實(shí)現(xiàn)。該方法的優(yōu)勢(shì)在于,意味著需要存儲(chǔ)更少的預(yù)定義的配置,并且控制電路可以更簡(jiǎn)單。例如,將操作符318預(yù)配置在乘法操作符的類中;將操作符319預(yù)配置為ALU操作符;將操作符320預(yù)配置為狀態(tài)操作符;以及將操作符321預(yù)配置為交叉通道換碼器;而且其他預(yù)配置的類是可能的。然而,即使操作符的類被預(yù)配置,對(duì)于用于實(shí)施所給出的算法的特定配置的最終布置,指令的運(yùn)行時(shí)間靈活性能夠布置至少以下項(xiàng)(i)在每類中的操作符的連接性;(ii)與來自其他類的操作符的連接性;(iii)任何相關(guān)轉(zhuǎn)換裝置的連接性。
技術(shù)人員應(yīng)當(dāng)理解,雖然上面已描述了什么被認(rèn)為是本發(fā)明的最佳模式以及在什么情況下執(zhí)行本發(fā)明的其他模式是適當(dāng)?shù)?,但是本發(fā)明不應(yīng)局限于在優(yōu)選實(shí)施例的所述描述中公開的特定裝置配置或方法步驟。本領(lǐng)域技術(shù)人員同樣應(yīng)當(dāng)認(rèn)識(shí)到,本發(fā)明具有廣泛的應(yīng)用,并且實(shí)施例允許在不偏離本發(fā)明構(gòu)思的情況下具有廣范的不同的實(shí)施和修改。特別是,這里提及的示例性位寬不是限制性的,也不是被稱為半字、字、長等的位寬的任意選擇。
權(quán)利要求
1.一種具有控制和數(shù)據(jù)處理能力的計(jì)算機(jī)處理器,包括用于解碼指令的解碼單元;包括第一數(shù)據(jù)執(zhí)行路徑和第二數(shù)據(jù)執(zhí)行路徑的數(shù)據(jù)處理設(shè)備,所述第一數(shù)據(jù)執(zhí)行路徑包括固定操作符,所述第二數(shù)據(jù)執(zhí)行路徑至少包括可配置操作符,所述可配置操作符具有多個(gè)預(yù)定義的配置,所述配置中的至少一些可通過數(shù)據(jù)處理指令的操作碼部分來選擇;其中所述解碼單元可操作用于檢測(cè)數(shù)據(jù)處理指令是定義固定數(shù)據(jù)處理操作還是可配置數(shù)據(jù)處理操作,所述解碼單元使計(jì)算機(jī)系統(tǒng)將用于處理的數(shù)據(jù)在檢測(cè)到固定數(shù)據(jù)處理指令時(shí)提供給所述第一數(shù)據(jù)執(zhí)行路徑,而在檢測(cè)到可配置數(shù)據(jù)處理指令時(shí)提供給所述可配置數(shù)據(jù)執(zhí)行路徑。
2.如權(quán)利要求1所述的計(jì)算機(jī)處理器,其中解碼單元能夠解碼來自存儲(chǔ)器的指令包流,每個(gè)包包括多個(gè)指令。
3.如權(quán)利要求1或2所述的計(jì)算機(jī)處理器,其中解碼單元可操作用于檢測(cè)指令包是否包含數(shù)據(jù)處理指令。
4.如前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,其中可配置操作符以多位值的級(jí)別可配置。
5.如權(quán)利要求4所述的計(jì)算機(jī)處理器,其中可配置操作符以包括四個(gè)或更多位的多位值的級(jí)別可配置。
6.如權(quán)利要求4所述的計(jì)算機(jī)處理器,其中可配置操作符以字的級(jí)別可配置。
7.如前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,其中根據(jù)單指令多數(shù)據(jù)原理,第一數(shù)據(jù)執(zhí)行路徑的多個(gè)固定操作符被布置用于在獨(dú)立通道中執(zhí)行多個(gè)固定操作。
8.如前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,其中根據(jù)單指令多數(shù)據(jù)原理,第二數(shù)據(jù)執(zhí)行路徑的多個(gè)可配置操作符被布置用于在不同通道中執(zhí)行多個(gè)操作。
9.如前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,其中第二執(zhí)行路徑的可配置操作符被布置用于接收確定所執(zhí)行的操作的特性的配置信息。
10.如權(quán)利要求9所述的計(jì)算機(jī)處理器,其中第二執(zhí)行路徑的可配置操作符被布置用于從定義可配置數(shù)據(jù)處理操作的指令的字段接收確定所執(zhí)行的操作的特性的配置信息。
11.如前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,其中第二執(zhí)行路徑的可配置操作符被布置用于接收包括控制相關(guān)的互連生的信息的配置信息。
12.如前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,包括與第二數(shù)據(jù)執(zhí)行路徑的可配置操作符相關(guān)聯(lián)的控制映射,所述控制映射可操作用于從可配置數(shù)據(jù)處理指令接收至少一個(gè)配置位,并給響應(yīng)于此的可配置操作符提供配置信息。
13.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)處理器,其中所述配置信息控制兩個(gè)或更多所述可配置操作符之間的互連性。
14.根據(jù)前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,其中第二執(zhí)行路徑的可配置操作符被布置用于從源而不是從可配置數(shù)據(jù)處理指令接收確定待執(zhí)行的操作的特性的配置信息、或者控制互連性的配置信息。
15.根據(jù)前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,其中第二數(shù)據(jù)執(zhí)行路徑的至少一個(gè)可配置操作符能夠在向結(jié)果存儲(chǔ)器返回結(jié)果之前以比兩個(gè)計(jì)算大的執(zhí)行深度執(zhí)行數(shù)據(jù)處理指令。
16.根據(jù)前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,包括轉(zhuǎn)換裝置,其用于從可配置數(shù)據(jù)處理指令接收數(shù)據(jù)處理操作數(shù),并在適當(dāng)時(shí)轉(zhuǎn)換所述數(shù)據(jù)處理操作數(shù)用于提供給一個(gè)或多個(gè)所述可配置操作符。
17.根據(jù)前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,包括轉(zhuǎn)換裝置,其用于從一個(gè)或多個(gè)所述可配置操作符接收結(jié)果,并在適當(dāng)時(shí)轉(zhuǎn)換所述結(jié)果用于提供給結(jié)果存儲(chǔ)器和反饋循環(huán)中的一個(gè)或多個(gè)。
18.根據(jù)前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,包括多個(gè)控制映射,其用于將從可配置數(shù)據(jù)處理指令所接收的配置位映射成用于提供給第二數(shù)據(jù)執(zhí)行路徑的可配置操作符的配置信息。
19.根據(jù)前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,包括轉(zhuǎn)換裝置,其用于從控制映射接收配置信息,并在適當(dāng)時(shí)轉(zhuǎn)換該配置信息用于提供給第二數(shù)據(jù)執(zhí)行路徑的可配置操作符。
20.根據(jù)前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,包括可配置操作符,其從一個(gè)或多個(gè)如下項(xiàng)中選出乘累加操作符;算術(shù)操作符;狀態(tài)操作符;以及交叉通道換碼器。
21.根據(jù)前述權(quán)利要求之一所述的計(jì)算機(jī)處理器,包括能執(zhí)行從如下項(xiàng)選擇的一個(gè)或多個(gè)操作的操作符、指令集快速傅立葉變換;反向快速傅立葉變換;Viterbi編碼/解碼;Turbo編碼/解碼;和有限脈沖響應(yīng)計(jì)算;以及任何其他相關(guān)生或卷積。
22.操作具有控制和數(shù)據(jù)處理能力的計(jì)算機(jī)處理器的方法,所述計(jì)算機(jī)處理器包括第一數(shù)據(jù)執(zhí)行路徑和第二數(shù)據(jù)執(zhí)行路徑,所述第一數(shù)據(jù)執(zhí)行路徑包括固定操作符,所述第二數(shù)據(jù)執(zhí)行路徑包括可配置操作符,所述可配置操作符具有多個(gè)預(yù)定義的配置,所述配置中的至少一些可通過數(shù)據(jù)處理指令的操作碼部分來選擇,該方法包括解碼多個(gè)指令以檢測(cè)所述多個(gè)指令的至少一個(gè)數(shù)據(jù)處理指令是定義固定數(shù)據(jù)處理操作還是可配置數(shù)據(jù)處理操作;使計(jì)算機(jī)處理器將用于處理的數(shù)據(jù)在檢測(cè)到固定數(shù)據(jù)處理指令時(shí)提供給所述第一數(shù)據(jù)執(zhí)行路徑,而在檢測(cè)到可配置數(shù)據(jù)處理指令時(shí)提供給所述可配置數(shù)據(jù)執(zhí)行路徑;以及輸出結(jié)果。
23.包括程序代碼裝置的計(jì)算機(jī)程序產(chǎn)品,所述程序代碼裝置用于使計(jì)算機(jī)處理器執(zhí)行以下步驟,其中所述計(jì)算機(jī)處理器包括第一數(shù)據(jù)執(zhí)行路徑和第二數(shù)據(jù)執(zhí)行路徑,所述第一數(shù)據(jù)執(zhí)行路徑包括固定操作符,所述第二數(shù)據(jù)執(zhí)行路徑包括可配置操作符,所述可配置操作符具有多個(gè)預(yù)定義的配置,所述配置中的至少一些可通過數(shù)據(jù)處理指令的操作碼部分來選擇,即解碼多個(gè)指令以檢測(cè)所述多個(gè)指令的至少一個(gè)數(shù)據(jù)處理指令是定義固定數(shù)據(jù)處理操作還是可配置數(shù)據(jù)處理操作;使計(jì)算機(jī)處理器將用于處理的數(shù)據(jù)在檢測(cè)到固定數(shù)據(jù)處理指令時(shí)提供給所述第一數(shù)據(jù)執(zhí)行路徑,而在檢測(cè)到可配置數(shù)據(jù)處理指令時(shí)提供給所述可配置數(shù)據(jù)執(zhí)行路徑;以及輸出結(jié)果。
24.包括第一多個(gè)指令和第二多個(gè)指令的數(shù)據(jù)處理指令集,所述第一多個(gè)指令具有指示數(shù)據(jù)處理操作的固定類型的字段,所述第二多個(gè)指令具有指示數(shù)據(jù)處理操作的可配置類型的字段。
25.一種具有包含可配置操作符的數(shù)據(jù)執(zhí)行路徑的計(jì)算機(jī)處理器,其中可配置操作符包括操作符配置的多個(gè)預(yù)定義的組,每個(gè)組包括來自獨(dú)立的操作符類的操作符。
26.如權(quán)利要求25所述的計(jì)算機(jī)處理器,其中操作符類包括從一個(gè)或多個(gè)如下項(xiàng)所選擇的類乘累加操作符;算術(shù)操作符;狀態(tài)操作符;以及換碼器。
27.如權(quán)利要求25所述的計(jì)算機(jī)處理器,其中從操作符配置的一個(gè)或多個(gè)預(yù)定義的組內(nèi)所選擇的操作符之間的連接能夠通過由計(jì)算機(jī)處理器所執(zhí)行的指令內(nèi)的操作碼部分來配置。
28.如權(quán)利要求25所述的計(jì)算機(jī)處理器,其中從操作符配置的多于一個(gè)的預(yù)定義的組所選擇的操作符之間的連接能夠通過由計(jì)算機(jī)處理器所執(zhí)行的指令內(nèi)的操作碼部分來配置。
全文摘要
一種具有控制和數(shù)據(jù)處理能力的計(jì)算機(jī)處理器,包括用于解碼指令的解碼單元。數(shù)據(jù)處理裝置包括第一數(shù)據(jù)執(zhí)行路徑和第二數(shù)據(jù)執(zhí)行路徑,所述第一數(shù)據(jù)執(zhí)行路徑包括固定操作符,所述第二數(shù)據(jù)執(zhí)行路徑至少包括可配置操作符,所述可配置操作符具有多個(gè)預(yù)定義的配置,所述配置中的至少一些可通過數(shù)據(jù)處理指令的操作碼部分來選擇。解碼單元可操作用于檢測(cè)數(shù)據(jù)處理指令是定義固定數(shù)據(jù)處理操作還是可配置數(shù)據(jù)處理操作,所述解碼單元使計(jì)算機(jī)系統(tǒng)將用于處理的數(shù)據(jù)在檢測(cè)到所述固定數(shù)據(jù)處理指令時(shí)提供給所述第一數(shù)據(jù)執(zhí)行路徑,而在檢測(cè)到可配置數(shù)據(jù)處理指令時(shí)提供給所述可配置數(shù)據(jù)執(zhí)行路徑。
文檔編號(hào)G06F9/318GK1989485SQ200580010665
公開日2007年6月27日 申請(qǐng)日期2005年3月22日 優(yōu)先權(quán)日2004年3月31日
發(fā)明者S·諾勒斯 申請(qǐng)人:艾色拉公司