專利名稱:用于可配置的處理的設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及具有可配置的執(zhí)行單元的計(jì)算機(jī)處理器、用于操作這樣 的計(jì)算機(jī)處理器和執(zhí)行單元的方法和使用計(jì)算機(jī)指令集的計(jì)算機(jī)程序;i 口廠口口 o背景技術(shù)由于在制造時(shí)使指令集被固定, 一些計(jì)算機(jī)處理器在有效處理某些 算法內(nèi)的不同類型的數(shù)據(jù)處理計(jì)算的能力和執(zhí)行不同的算法(例如從巻積、快速傅立葉變換、Trellis/Viterbi計(jì)算、相關(guān)、有限脈沖響應(yīng)濾 波等中選擇的算法)的能力上是有限的。特別地,已知的計(jì)算機(jī)處理器 不支持在多比特操作數(shù)值上運(yùn)行的軟件定制(software-customised) 的指令的執(zhí)行,例如對四比特或更多比特的操作數(shù)或者對計(jì)算機(jī)字(典 型的是16、 32或64比特)級別的操作數(shù)起作用的指令。已知的計(jì)算機(jī) 處理器不能響應(yīng)于構(gòu)成處理器指令集的一部分的單獨(dú)軟件定制處理器 指令而有效地執(zhí)行包含較簡單定制操作的序列的復(fù)雜軟件定制操作。本發(fā)明的實(shí)施例設(shè)法提供改進(jìn)的計(jì)算機(jī)處理器和操作計(jì)算機(jī)處理 器的方法等。發(fā)明內(nèi)容依照本發(fā)明的一個(gè)方面,提供了可配置的執(zhí)行單元,該可配置的執(zhí) 行單元包括能夠由指令在處理多比特操作數(shù)值的級別動(dòng)態(tài)配置的算子 (operator)。該可配置的執(zhí)行單元包括一個(gè)或多個(gè)可動(dòng)態(tài)配置的算子 模塊和可編程的查找表,所述模塊或每個(gè)模塊是可連接的以便接收在指 令中指示的輸入操作數(shù),所述可編程的查找表是可連接的以便接收根據(jù) 指令的操作碼部分確定的動(dòng)態(tài)配置信息并且能夠響應(yīng)于指令中的所述動(dòng)態(tài)配置信息而產(chǎn)生定義所述可配置的算子模塊的功能和/或行為的特 征的算子配置設(shè)置。在優(yōu)選實(shí)施例中,可編程的查找表包括可編程的邏輯陣列。更優(yōu)選 地,可編程的查找表包括級聯(lián)的可編程的邏輯陣列。在開的實(shí)施例中,所述可配置的執(zhí)行單元包括可配置的交換結(jié)構(gòu)(switching fabric),該交換結(jié)構(gòu)具有至少部分地由偽靜態(tài)控制信息 定義的連接性。另外,該可配置的交換結(jié)構(gòu)可以包含在所述可配置的算 子上游連接的一個(gè)或多個(gè)可配置的輸入互連裝置,和在該可配置的算子 下游連接的可配置的輸出互連裝置。優(yōu)選的實(shí)施例具有這二者。在提供可配置的輸入互連裝置的情況下, 一個(gè)或多個(gè)可配置的算子 模塊輸出可以被連接到所述可配置的輸入互連裝置。優(yōu)選地,至少 一個(gè)可配置的算子模塊被硬布線以支持預(yù)定的操作類 并且可以由算子配置設(shè)置來動(dòng)態(tài)配置以便在所述一般操作類內(nèi)調(diào)整算 子函數(shù)和/或行為。依賴于預(yù)期應(yīng)用,可以提供不同的算子函數(shù)。優(yōu)選 的實(shí)施例趨向于包含具有可配置的移位(shift)和/或置換(permute) 功能的模塊。更優(yōu)選地,某些實(shí)施例包括能夠保存中間結(jié)果的存儲算子。通常, 一個(gè)或多個(gè)可配置的部件包含獨(dú)立于攜帶所述動(dòng)態(tài)配置信息 的指令而提供的偽靜態(tài)控制信息。這樣的偽靜態(tài)控制信息可以由例如配 置設(shè)置指令建立,或者通過向所涉及部件的直接數(shù)據(jù)傳輸來建立。在大部分實(shí)施例中, 一個(gè)或多個(gè)可動(dòng)態(tài)配置的算子可以借助于在數(shù) 據(jù)處理指令中提供的配置信息來配置。但是,這里公開的原理也可以應(yīng) 用到其它類型的指令。優(yōu)選的可配置的執(zhí)行單元包括可以借助于在數(shù)據(jù)處理指令中提供 的配置信息來配置的多個(gè)可動(dòng)態(tài)配置的算子,其中,在使用中,依照所 述配置信息的算子配置對在所述數(shù)據(jù)處理操作中指示的操作數(shù)起作用。在其它實(shí)施例中,或者另外, 一個(gè)或多個(gè)可動(dòng)態(tài)配置的算子可以借 助于在數(shù)據(jù)處理指令中提供的配置信息來配置,其中,在使用中,依照 所述配置信息的算子配置對在隨后的指令中指示的操作數(shù)起作用。優(yōu)選的執(zhí)行單元被布置成能夠響應(yīng)于單個(gè)指令而在將結(jié)果輸出給 在該可配置的執(zhí)行路徑或單元之外的存儲裝置(store)(例如寄存器 堆(register file))之前,在一個(gè)操作數(shù)上執(zhí)行兩個(gè)或更多連續(xù)的、 可選擇性地配置的操作。在優(yōu)選的可配置的執(zhí)行單元中,所述可配置的 算子模塊中的一個(gè)或多個(gè)支持SIMD操作。通常,提供以下一個(gè)或多個(gè)算子類中的算子乘法器、算術(shù)邏輯、 存儲、移位和/或置換。但是,可以使用任何數(shù)目或類型的算子。在依照本發(fā)明的實(shí)施例中,術(shù)語"可編程的查找表"應(yīng)該被廣義地解釋為包括能夠響應(yīng)于指令中的信息而提供例如從以下一個(gè)或多個(gè)中選擇的算子配置設(shè)置的任何設(shè)備進(jìn)位輸入(carry-in)信號;多路復(fù) 用器選"f,;可協(xié)商的輸入(negotiable input);溢出設(shè)置;和其它合 適的算子輸入。另外,所述可編程的查找表可以有利地從(一個(gè)或多個(gè))可動(dòng)態(tài)配 置的算子模塊接收一個(gè)或多個(gè)輸入。這樣,來自所述算子的輸出能夠至 少部分地定義在隨后的周期中使用的算子的配置輸入。典型地,盡管不是排他地,來自可動(dòng)態(tài)配置的算子模塊的對可編程 的查找表的輸入是從以下一個(gè)或多個(gè)中選擇的溢出指示;FIFO滿信號; 算術(shù)比較的布爾結(jié)果;和其它合適的算子輸出。在某些實(shí)施例中,可以認(rèn)為可編程的查找表包括偽靜態(tài)控制信息, 該偽靜態(tài)控制信息是可預(yù)先設(shè)置的并且可以由指令中所攜帶的配置信 息進(jìn)行選擇。依照本發(fā)明的另 一方面,提供了用于操作可配置的執(zhí)行單元的方 法,該可配置的執(zhí)行單元包括能夠由指令在處理多比特操作數(shù)值的級別 動(dòng)態(tài)配置的算子,該方法包括對在操作碼中包括配置信息的指令進(jìn)行解碼;根據(jù)可編程的查找表,將該配置信息翻譯成用于至少一個(gè)可配置的算子的算子配置設(shè)置;將所述算子配置設(shè)置提供給所述至少一個(gè)可配置的算子,使得所述算子的功能和/或行為的特征從而在逐指令的基礎(chǔ)上可選擇性地調(diào)整。優(yōu)選的方法允許響應(yīng)于單個(gè)指令而串行地執(zhí)行兩個(gè)或更多操作的 序列??商鎿Q地,或者更可能另外的,兩個(gè)或更多操作可以響應(yīng)于該指 令而纟皮并行^U亍。優(yōu)選的實(shí)施例有助于響應(yīng)于單個(gè)指令而執(zhí)行串行和并行操作的組 合。這樣,軟件定制的指令能夠使操作數(shù)流過鏈接算子的網(wǎng)絡(luò),該鏈接 算子網(wǎng)絡(luò)響應(yīng)于單個(gè)指令而將整個(gè)相對復(fù)雜的計(jì)算作為相互關(guān)聯(lián)的操 作的集合來執(zhí)行。另外,在響應(yīng)于所述指令而執(zhí)行多個(gè)串行和/或并行操作的情況下, 在操作之間或者在將中間結(jié)果從該可配置的執(zhí)行單元輸出到結(jié)果存儲 裝置之前,在存儲算子中保存該中間結(jié)果。另外,在響應(yīng)于所述指令而執(zhí)行多個(gè)串行和/或并行操作的情況下,在操作之間或者在將中間結(jié)果從該可配置的執(zhí)行單元輸出到結(jié)果存儲 裝置之前,可以對中間結(jié)果進(jìn)行移位或置換。依照本發(fā)明的另一方面,提供了包括用于執(zhí)行前述任何一種方法的 程序代碼裝置的計(jì)算機(jī)程序產(chǎn)品。依照本發(fā)明的另一方面,提供了一種指令,該指令包括操作碼部分,定義一種類型的數(shù)據(jù)處理操作,其包含用于設(shè)置可配置的執(zhí)行單元的一個(gè)或多個(gè)算子的配置的動(dòng)態(tài)配置信息;配置信息字段,包含算子配置信息;和指示在該數(shù)據(jù)處理操作中使用的操作數(shù)的至少 一個(gè)字段。依照本發(fā)明的又一方面,提供了一種計(jì)算機(jī)處理器,所述計(jì)算機(jī)處 理器包括可配置的執(zhí)行單元,可選地其可以與固定執(zhí)行單元結(jié)合。優(yōu)選地,所述#^亍單元中的一個(gè)或多個(gè)能夠進(jìn)4亍SIMD處理。在以下說明中將部分陳述本發(fā)明的其它優(yōu)點(diǎn)和新穎特征,并且在研 究下文的公開內(nèi)容之后,所述優(yōu)點(diǎn)和新穎特征將對于本領(lǐng)域技術(shù)人員是 很明顯的,或者在本發(fā)明的實(shí)踐中可以獲悉所述優(yōu)點(diǎn)和新穎特征。
為了更好的理解本發(fā)明,以及為了示出如何實(shí)現(xiàn)本發(fā)明,將參考附 圖,這些附圖只是作為例子,其中圖1是體現(xiàn)了本發(fā)明的計(jì)算機(jī)處理器的框圖;圖2是示出圖1的計(jì)算機(jī)處理器的示例性可配置的執(zhí)行單元的示意 性框圖;圖3示意性地示出適合用于圖1的計(jì)算機(jī)系統(tǒng)的示例性指令格式。
具體實(shí)施方式
圖1的處理器100可以是計(jì)算機(jī)系統(tǒng)的一部分,在該計(jì)算機(jī)系統(tǒng)中 處理器通過通信總線耦合到主存儲器和外圍設(shè)備。如技術(shù)人員所理解 的,這樣的處理器系統(tǒng)可以支持屬于廣泛多種設(shè)備和應(yīng)用的外圍設(shè)備的范圍。處理器1Q0具有指令存儲器102、數(shù)據(jù)存儲器1Q4、指令取出和解 碼電路110、寄存器堆112、加載/存儲單元118、預(yù)定數(shù)目的固定執(zhí)行 單元120和預(yù)定數(shù)目的可配置的扭^f于單元126。指令存儲器1Q2借助于指令總線1Q8和地址總線1Q9耦合到指令取出和解碼電路iio。指令取出和解碼電3各110還通過地址總線111連^妻到寄存器堆112,并且通過控制總線系統(tǒng)113連接到加載/存儲單元118、 固定執(zhí)行單元120和可配置的執(zhí)行單元126。控制總線113用于例如把 根據(jù)指令解碼的操作配置信息運(yùn)送到加載/存儲單元118、固定執(zhí)行單元 120和可配置的執(zhí)行單元126的相關(guān)輸入。操作數(shù)總線系統(tǒng)115根據(jù)解 碼的指令為加載/存儲單元118、固定執(zhí)行單元120和可配置的執(zhí)行單元 126提供來自寄存器堆的操作數(shù)。加載/存儲單元118具有來自和去往數(shù)據(jù)存儲器104的連接121、 122,并且能夠?qū)⒔Y(jié)果輸出到結(jié)果總線128,該結(jié)果總線128還用于接收 固定執(zhí)行單元120和可配置的執(zhí)行單元126的輸出。結(jié)果總線128被反 饋回寄存器堆112的輸入。在這個(gè)實(shí)施例中,處理器100支持固定和可配置的執(zhí)行單元中的單 指令多數(shù)據(jù)(SIMD)處理。在其它實(shí)施例中,固定和可配置的執(zhí)行單元 中可能只有一個(gè)支持SIMD處理或者兩者都不支持SIMD處理。指令取出和解碼電路110中的控制電路通常負(fù)責(zé)從指令存儲器102 請求、接收和解碼指令序列,并且依照這些指令控制該處理器的各種部 件。典型的指令包括加載/存儲操作、控制功能操作、數(shù)據(jù)處理操作和/ 或由各種功能單元執(zhí)行的特定操作。加載/存儲指令用于訪問數(shù)據(jù)存儲器104中的數(shù)據(jù)以及用于在數(shù)據(jù) 存儲器104和寄存器堆112之間移動(dòng)數(shù)據(jù),其中緊接著對該數(shù)據(jù)執(zhí)行的 操作之前和之后駐留著數(shù)據(jù)??刂乒δ懿僮?,諸如分支,可以完全在指 令取出和解碼單元110內(nèi)運(yùn)行,例如,為了影響所取出的指令的序列, 或者在處理器的設(shè)置的計(jì)算中可以涉及固定和可配置的執(zhí)行單元中的 一個(gè)或多個(gè)。數(shù)據(jù)處理操作在算法的執(zhí)行中使用,并且同樣可以涉及固 定和/或可配置的執(zhí)行單元,下文將對此進(jìn)行更詳細(xì)的解釋。圖2是示例性執(zhí)行單元126的內(nèi)部部件的示意圖。參考圖2,可配 置的執(zhí)行單元126包括可編程的查找表210、可配置的算子級230、輸 入交叉互連240和輸出交叉互連25 0。可編程的查找表210和互連240、 250就依賴偽靜態(tài)控制信息而言 是可配置的,該偽靜態(tài)控制信息可以由專用指令預(yù)先設(shè)置,但是偽靜態(tài) 控制信息自身是不可以在逐周期(cycle-by-cycle)基礎(chǔ)上由數(shù)據(jù)處理 指令動(dòng)態(tài)配置的。這個(gè)可預(yù)先設(shè)置的控制信息在這里被稱為偽靜態(tài)控制信息(PSCI)并且在圖2中由附圖標(biāo)記249指示。該偽靜態(tài)控制信息249 以技術(shù)人員清楚的方式規(guī)定可編程的查找表210和交叉互連240、 250 的功能性和行為的特征。可配置的算子級230包括算子模塊202-208的集合,每個(gè)算子模塊 都被設(shè)計(jì)成執(zhí)行不同的操作類。算子模塊由操作數(shù)輸入總線242從輸入 交叉互連供應(yīng)。在這個(gè)示例性實(shí)施例中,提供了乘法算子202 、 ALU算 子2Q4、存儲算子2Q6和移位/置換算子208。技術(shù)人員將會理解,算子 的數(shù)目和功能將基于預(yù)期的應(yīng)用和/或該處理器的預(yù)期目的。有可能的 是,算子模塊202-208中的全部或一部分可以通過這里所描述的裝置被 動(dòng)態(tài)配置。算子模塊202-208被硬布線到這樣的程度,以使它們能高效執(zhí)行它 們被設(shè)計(jì)執(zhí)行的操作,但是同時(shí)具有各種控制輸入,所述控制輸入允許 在影響對多比特值的操作的性能的行為級別上的可配置性。這將支持算 子模塊在各自被設(shè)計(jì)執(zhí)行的操作類中的行為和/或類型的變化。例如, 加法單元可以支持減法和加法(一般算術(shù)類內(nèi)的不同類型的操作或函 數(shù)),它可以支持多種SIMD向量數(shù)據(jù)類型以及標(biāo)量類型(通用行為), 并且它可以支持多種舍入模式和/或溢出行為(可選擇的行為)。在優(yōu)選實(shí)施例中,算子級2 30上各種元件的互連和算子202-208的 控制輸入可配置到這樣的程度,使得允許高效執(zhí)行所需的各種算法,特 別是向量算法,其例子包括巻積、快速傅立葉變換、Trellis/Viterbi 計(jì)算、相關(guān)、有限脈沖響應(yīng)濾波等。在實(shí)踐中這個(gè)程度很容易由一般技 術(shù)人員確立,依照這樣的算法以及處理器的控制功能,技術(shù)人員還知道 指令集為支持相關(guān)計(jì)算所需的數(shù)據(jù)處理功能性的范圍。算子級230的算子可以在逐指令的基礎(chǔ)上被("動(dòng)態(tài)地")動(dòng)態(tài)配 置,以使包含配置信息的指令(例如,數(shù)據(jù)處理指令)能夠通過提供配 置信息作為當(dāng)在它的操作數(shù)上運(yùn)行時(shí)要應(yīng)用的控制設(shè)置而選擇性地改 變算子功能(操作類型)和/或行為??商鎿Q地,指令集可以被設(shè)計(jì)成 使得指令中的配置信息對在根據(jù)隨后的指令(例如隨后的數(shù)據(jù)處理操 作)處理操作數(shù)時(shí)要應(yīng)用的算子功能和/或行為進(jìn)行配置。從可編程的查找表210導(dǎo)出的算子的控制輸入279被提供給算子 級,例如為了提供控制輸入以控制算子204-208的功能和/或行為。這 些控制輸入的例子包括進(jìn)位輸入信號、多路復(fù)用器選擇、可協(xié)商的輸入和溢出行為控制設(shè)置。來自算子級230中的算子模塊202-208的控制輸 出281能夠被輸出到可編程的查找表210,并且因此接下來可以參與定 義控制輸入設(shè)置279??刂戚敵?81的例子包括溢出指示、FIFO滿信號 和算術(shù)比較的布爾結(jié)果。實(shí)際上,比如數(shù)據(jù)處理指令中的操作配置信息277被解碼并被提供 給可編程的查找表210。該配置信息277和控制信息281 —起被可編程 的查找表21Q翻譯成所述算子級的對應(yīng)的控制輸入279并且被提供給算 子級230。由查找表210執(zhí)行的翻譯功能由偽靜態(tài)控制信息249確定, 所述偽靜態(tài)控制信息249又可以由較早的控制指令設(shè)置。在優(yōu)選的實(shí)施例中,可編程的查找表210可以被認(rèn)為自身依賴于偽 靜態(tài)控制信息,該偽靜態(tài)控制信息是基于數(shù)據(jù)處理指令中的算子配置信 息可選擇的。可編程的查找表210因而能夠響應(yīng)于動(dòng)態(tài)配置信息277(其 從指令導(dǎo)出)產(chǎn)生對算子的輸入或來自算子281或PSCI 249的控制輸 出,或?qū)删幊痰牟檎冶?10的這些輸入的任意組合。因此偽靜態(tài)控制 信息不需要被直接輸入到算子級230,盡管在某些環(huán)境下希望如此。參考圖2A,可編程的查找表210能夠被實(shí)現(xiàn)為技術(shù)人員公知的一種 可編程的邏輯陣列(PLA),或者實(shí)現(xiàn)為如圖2B所示的這種PLA的級聯(lián)。 在圖2B的例子中,PLA1將來自所述指令的配置比特277翻譯成第一中 間代碼,PLA2將算子的控制輸出281翻譯成第二中間代碼,并且PLA3 組合這兩個(gè)中間代碼以產(chǎn)生用于算子的控制輸入集279。這樣的級聯(lián)布 置可能是期望的,因?yàn)榕c圖2A的單個(gè)PLA相比它可能需要較少的硬件。在優(yōu)選實(shí)施例中,交叉互連240、 250的連通性和級230中的算子 之間的互連不是基于數(shù)據(jù)處理指令中的控制信息可動(dòng)態(tài)配置的。作為代 替,這些部件24Q、 25Q在操作之前是可通過設(shè)置所述PSCI來配置的, 也可能通過上載或執(zhí)行控制設(shè)置操作來配置。輸入互連24 0為所述多個(gè)算子模塊2 02-2 08中的每一個(gè)提供操作數(shù) 輸入。輸入互連24Q能夠根據(jù)解碼的數(shù)據(jù)處理指令接收操作數(shù)224,并 且能夠經(jīng)由反饋總線225從算子202-204的輸出接收結(jié)果值。輸出互連2 5 0接收來自算子模塊2 02-2 08的輸出并且提供可配置的 執(zhí)行單元126的最后輸出結(jié)果290。借助于反饋總線225,交叉開關(guān)240 和可選地存儲算子206、筒單乘法運(yùn)算的串行和并行組合,在于執(zhí)行單 元外提供結(jié)果290之前,能夠響應(yīng)于單個(gè)數(shù)據(jù)處理指令而在輸入操作數(shù)224上執(zhí)行復(fù)雜的操作。筒言之,這些有利類型的"深度"執(zhí)行操作可以認(rèn)為是在將結(jié)果290被發(fā)送出去以寫入寄存器堆112中的結(jié)果寄存器 之前在操作數(shù)或操作數(shù)集上連續(xù)地執(zhí)行多個(gè)(一般是三個(gè)或更多)數(shù)學(xué) 運(yùn)算的操作。在這些類型的深度操作中,存儲算子206能夠保存中間結(jié) 果,以使得在將結(jié)果290輸出之前它們能夠參與后來的操作周期。這種 類型的串行和/或并行操作是新穎的。另外,用于構(gòu)建是基本算子的串 行-并行組合的網(wǎng)絡(luò)的可能性(facility)是有利的。并行類型的操作 的一個(gè)例子是范圍^企查AND(A〉min, A〈max),其中在共同的才喿作數(shù)A 上并行進(jìn)行了兩個(gè)比較計(jì)算。技術(shù)人員將會理解,圖2的整個(gè)結(jié)構(gòu)能夠被適當(dāng)?shù)毓芫€化,以便在 不損害處理器速度的情況下實(shí)現(xiàn)復(fù)雜的多級操作。因而,已經(jīng)描述了在使用中指令取出和解碼電路IIO如何解碼數(shù)據(jù) 處理指令和控制處理器100的各個(gè)部件,以使得來自該指令的配置信息 277被提供給可編程的查找表210并且所述操作數(shù)或每個(gè)操作數(shù)224被 從寄存器堆提供給輸入互連240。這樣,來自所述指令的配置信息277 通過可編程的查找表210選擇性地、動(dòng)態(tài)地修改一個(gè)或多個(gè)所述算子的 的功能和/或行為的特征。可配置的執(zhí)行單元126因而依賴于若干類型的控制。首先,存在著 在有利的硬布線級別例示的靜態(tài)控制,用以提供模塊202-208的各種算 子類。其次,存在著偽靜態(tài)控制信息(PSCI),其駐留在例如互連部件 240、 250和可編程的查找表210的預(yù)定配置中。如同上文所解釋的,偽 靜態(tài)控制信息被分配給某些可配置的部件(例如,查找表21Q和互連 240、 250 ),以便在執(zhí)行軟件定制的指令之前確定執(zhí)行單元200的功能 和/或行為的特征,所述軟件定制的指令本身能夠在逐指令的基礎(chǔ)上動(dòng) 態(tài)地配置算子(調(diào)整算子的配置)。另外,存在著能夠由指令在逐周期 的基礎(chǔ)上提供的動(dòng)態(tài)控制信息。指令集可以在制造之后定制,倘若它遵循某些保證指令集保持與處理器的操作兼容的 一般協(xié)議。能夠動(dòng)態(tài)地配 置算子和可以預(yù)先配置的其它部件的制造后軟件定制指令的組合允許寬范圍的處理和數(shù)學(xué)函數(shù),并且產(chǎn)生復(fù)雜算法的優(yōu)雅解決方案。在此上 下文中,優(yōu)雅可能意味著減少循環(huán)次數(shù)和功率要求。PSCI可以通過以下方式分配到部件,例如(i )從外部DMA端口直 接上載或(ii)通過執(zhí)行特別設(shè)計(jì)的PSCI設(shè)置指令,依照該指令的用于計(jì)算PSCI設(shè)置的數(shù)據(jù)將進(jìn)入單元作為操作數(shù)數(shù)據(jù)224并且結(jié)果設(shè)置 PSCI基于目的地地址。在處理器指令的操作碼部分中包含的動(dòng)態(tài)控制信息277 (包括算子 配置信息)用于訪問可編程的查找表210。在優(yōu)選的實(shí)施例中,該動(dòng)態(tài) 控制信息由所述指令中的多比特字段表示,并且從可編程的查找表210 發(fā)出的設(shè)置包括用于整個(gè)執(zhí)行單元230的控制輸入(設(shè)置)的擴(kuò)展集。在優(yōu)選實(shí)施例中,所述算子級230的各模塊202-208被設(shè)計(jì)成用于 處理數(shù)據(jù)處理操作,所述數(shù)據(jù)處理操作的至少一個(gè)輸入是多比特值,諸 如向量或向量的一個(gè)元素(標(biāo)量)。因此,優(yōu)選的算子模塊202-208在對多比特值的操作的級別上是可配置的。例如,數(shù)據(jù)處理操作的64-比 特的向量輸入可以包括4個(gè)16比特的標(biāo)量操作數(shù)。這里,向量可以被 認(rèn)為是標(biāo)量操作數(shù)的組合。因而,軟件可定制的向量算術(shù)可以在多個(gè)標(biāo) 量操作數(shù)上實(shí)現(xiàn),并且通常要求一定數(shù)量的標(biāo)量元素的置換。不是所有 向量操作的操作數(shù)都必須是向量;例如,向量操作可以具有標(biāo)量和向量 輸入,并且可以輸出為標(biāo)量或向量的結(jié)果。圖3示出了適合用于本發(fā)明的實(shí)施例的各種指令格式。在300,存 在著這樣的PSCI設(shè)置指令,它被特別設(shè)計(jì)用于為例如部件HO、 240和 /或250中的一個(gè)或多個(gè)執(zhí)行偽靜態(tài)控制設(shè)置操作。該P(yáng)SCI設(shè)置指令300 包括第一操作碼部分302和第二操作碼部分303,第一操作碼部分302 指示它是PSCI設(shè)置指令類型,第二操作碼部分303指示與意圖被配置 的部件210, 240, 250 (或每個(gè))相關(guān)聯(lián)的目的地。該指令的剩余部分 304可以用于攜帶或指向旨在用于該目的地的PSCI。關(guān)于指令格式400,公開了包括動(dòng)態(tài)配置設(shè)置信息的數(shù)據(jù)處理指令 類,根據(jù)它來參考可編程的查找表210。指令400包括第一操作碼部分 410,該第一操作碼部分410定義要執(zhí)行的數(shù)據(jù)處理操作并且優(yōu)選地包 括這樣的指示該指令是包含用于對可配置的執(zhí)行單元230的一個(gè)或多 個(gè)算子進(jìn)行配置的動(dòng)態(tài)配置設(shè)置信息的數(shù)據(jù)處理操作類型。指令400還 包括指向結(jié)果將被發(fā)送到的目的地地址的第二操作碼部分415,包含算 子配置信息420的第三才喿作碼部分420,和在該^:據(jù)處理才乘作中使用的 一個(gè)或多個(gè)操作數(shù)430。可替換地,字段430可以包含指向寄存器中的 一個(gè)或多個(gè)操作數(shù)的指針。技術(shù)人員將會理解,在其它實(shí)施例中可以組 合或省略所描述的一個(gè)或多個(gè)字段。如前所述,算子配置信息420用于訪問查找表210并且被翻譯以有 助于算子控制輸入設(shè)置279。優(yōu)選的實(shí)施例能夠特別高效地處理某些算法內(nèi)的不同類型的數(shù)據(jù) 處理計(jì)算,所述算法例如包括巻積、快速傅立葉變換、Trellis/Viterbi 計(jì)算、相關(guān)、有限脈沖響應(yīng)濾波等。此外,優(yōu)選的處理器支持在多比特 操作數(shù)值上運(yùn)行的軟件定制指令的執(zhí)行,例如,對4或更多比特的操作 數(shù)或?qū)τ?jì)算機(jī)字(通常是16、 32或64比特)的級別的操作數(shù)起作用的 指令。實(shí)施例因而能夠響應(yīng)于形成處理器指令集一部分的單獨(dú)軟件定制 的處理器指令而將復(fù)雜的軟件定制操作作為定制操作的集合來高效執(zhí) 4亍(串4亍和/或并4亍)。本領(lǐng)域的讀者將會理解,盡管前文已經(jīng)描述了所認(rèn)為的最佳模式和 執(zhí)行本發(fā)明的其它適當(dāng)模式,但是不應(yīng)該將本發(fā)明限制于在優(yōu)選實(shí)施例 的說明中公開的特定的設(shè)備配置或方法步驟。本領(lǐng)域的技術(shù)人員還將認(rèn) 識到,本發(fā)明具有廣泛的應(yīng)用范圍,并且所述實(shí)施例允許在不偏離發(fā)明 概念的情況下進(jìn)行寬范圍的修改。例如, 一個(gè)或多個(gè)算子模塊的任何特征可以被動(dòng)態(tài)配置??删幊痰?查找表可以是適用于將操作碼信息翻譯成算子控制設(shè)置的任何設(shè)備。在 其它實(shí)施例中,有可能的是,部件240、 25 0中的一個(gè)或多個(gè)可以借助 于指令中的控制信息被動(dòng)態(tài)配置,或者某些算子可以通過直接上載PSCI 而被預(yù)先配置。
權(quán)利要求
1.一種可配置的執(zhí)行單元,其包括能夠由指令在處理多比特操作數(shù)值的級別動(dòng)態(tài)配置的算子,該可配置的執(zhí)行單元包括一個(gè)或多個(gè)可動(dòng)態(tài)配置的算子模塊,所述一個(gè)或多個(gè)可動(dòng)態(tài)配置的算子模塊或每個(gè)模塊是可連接的以便接收在指令中指示的輸入操作數(shù);可編程的查找表,其是可連接的以便接收根據(jù)指令的操作碼部分確定的動(dòng)態(tài)配置信息,并且能夠響應(yīng)于該指令中的所述動(dòng)態(tài)配置信息而產(chǎn)生定義所述可配置的算子模塊的功能和/或行為的特征的算子配置設(shè)置。
2. 如圈權(quán)利要求1所述的可配置的執(zhí)行單元,其中所述可編程的查 找表包括可編程的邏輯陣列。
3. 如權(quán)利要求2所述的可配置的執(zhí)行單元,其中所述可編程的查 找表包括級聯(lián)的可編程的邏輯陣列。
4. 如權(quán)利要求1所述的可配置的執(zhí)行單元,其中所述執(zhí)行單元包 括可配置的交換結(jié)構(gòu),該交換結(jié)構(gòu)具有至少部分地由偽靜態(tài)控制信息定 義的連接性。
5. 如權(quán)利要求4所述的可配置的執(zhí)行單元,其中所述可配置的交 換結(jié)構(gòu)包括以下中的一個(gè)或多個(gè)在可配置的算子上游連接的可配置的 輸入互連裝置和在可配置的算子下游連接的可配置的輸出互連裝置。
6. 如權(quán)利要求5所述的可配置的執(zhí)行單元,其中所述可配置的交 換結(jié)構(gòu)包括在可配置的算子上游連接的可配置的輸入互連裝置和在所 述可配置的算子下游連接的可配置的輸出互連裝置。
7. 如權(quán)利要求6所述的可配置的執(zhí)行單元,其中一個(gè)或多個(gè)可配 置的算子模塊的一個(gè)或多個(gè)輸出被連接到所述可配置的輸入互連裝置。
8. 如權(quán)利要求1所述的可配置的執(zhí)行單元,其中至少一個(gè)可配置 的算子模塊被硬布線以支持預(yù)定的操作類,并且可以由算子配置設(shè)置進(jìn) 行動(dòng)態(tài)配置以便在所述一般操作類內(nèi)調(diào)整算子函數(shù)和/或行為。
9. 如權(quán)利要求1所述的可配置的執(zhí)行單元,其中所述可配置的算 子包括具有可配置的移位和/或置換功能的模塊。
10. 如權(quán)利要求1所述的可配置的^U亍單元,其中一個(gè)或多個(gè)部件 包括獨(dú)立于攜帶動(dòng)態(tài)配置信息的指令而提供的偽靜態(tài)控制信息。
11. 如權(quán)利要求10所述的可配置的^U亍單元,其中一個(gè)或多個(gè)部件包括由配置設(shè)置指令建立的偽靜態(tài)控制信息。
12. 如權(quán)利要求1所述的可配置的執(zhí)行單元,其中一個(gè)或多個(gè)可動(dòng) 態(tài)配置的算子是可以借助于在數(shù)據(jù)處理指令中提供的配置信息來配置 的。
13. 如權(quán)利要求1所述的可配置的執(zhí)行單元,包括可以借助于在數(shù)據(jù)處理指令中提供的配置信息來配置的多個(gè)可動(dòng)態(tài)配置的算子,其中, 在使用中,依照所述配置信息的算子配置對在所述數(shù)據(jù)處理操作中指示 的操作數(shù)起作用。
14. 如權(quán)利要求1所述的可配置的執(zhí)行單元,包括一個(gè)或多個(gè)可以 借助于在數(shù)據(jù)處理指令中提供的配置信息來配置的可動(dòng)態(tài)配置的算子, 其中,在使用中,依照所述配置信息的算子配置對在隨后的指令中指示 的操作數(shù)起作用。
15. 如權(quán)利要求1所述的執(zhí)行單元,能夠響應(yīng)于單個(gè)指令而在輸出 結(jié)果之前在操作數(shù)上執(zhí)行兩個(gè)或更多連續(xù)的、可選擇性地配置的操作。
16. 如權(quán)利要求1所述的執(zhí)行單元,其中所述可配置的算子模塊中 的一個(gè)或多個(gè)支持SIMD操作。
17. 如權(quán)利要求1所述的執(zhí)行單元,包括以下一個(gè)或多個(gè)算子類中 的算子乘法器、算術(shù)邏輯、存儲、移位和/或置換。
18. 如權(quán)利要求1所述的執(zhí)行單元,其中所述可編程的查找表產(chǎn)生 從以下一個(gè)或多個(gè)中選擇的算子配置設(shè)置進(jìn)位輸入信號;多路復(fù)用器 選擇;可協(xié)商的輸入;溢出設(shè)置;和其它合適的算子輸入。
19. 如^又利要求1所述的執(zhí)行單元,其中所述可編程的查找表從一 個(gè)或多個(gè)可動(dòng)態(tài)配置的算子模塊接收一個(gè)或多個(gè)輸入。
20. 如權(quán)利要求19所述的執(zhí)行單元,其中所述來自可動(dòng)態(tài)配置的 算子模塊的輸入包括從以下中選擇的一個(gè)或多個(gè)溢出指示;FIF0滿信 號;算術(shù)比較的布爾結(jié)果;和其它合適的算子輸出。
21. 如權(quán)利要求1所述的執(zhí)行單元,其中所述可編程的查找表包括 偽靜態(tài)控制信息。
22. —種用于操作可配置的執(zhí)行單元的方法,該可配置的執(zhí)行單元 包括能夠由指令在處理多比特操作數(shù)值的級別動(dòng)態(tài)配置的算子,該方法 包括對在操作碼中包括配置信息的指令進(jìn)行解碼;根據(jù)可編程的查找表,將該配置信息翻譯成用于至少一個(gè)可配置的算子的算子配置設(shè)置;將所述算子配置設(shè)置提供給所述至少一個(gè)可配置的算子,使得所述 算子的功能和/或行為的特征因而可以在逐指令的基礎(chǔ)上選擇性地調(diào)整。
23. 如權(quán)利要求22所述的方法,其中響應(yīng)于所述指令而串行執(zhí)行兩個(gè)或更多操作的序列。
24. 如權(quán)利要求22所述的方法,其中響應(yīng)于所述指令而并行執(zhí)行兩個(gè)或更多操作。
25. 如權(quán)利要求22所述的方法,其中響應(yīng)于所述指令而執(zhí)行串行 和并行4乘作的組合。
26. 如權(quán)利要求22所述的方法,其中響應(yīng)于所述指令而執(zhí)行多個(gè) 串行和/或并行操作,并且在操作之間或者將至少 一個(gè)中間結(jié)果從該可 配置的執(zhí)行單元輸出到結(jié)果存儲裝置之前在存儲算子中保存該至少一 個(gè)中間結(jié)果。
27. 如權(quán)利要求22所述的方法,其中響應(yīng)于所述指令而執(zhí)行多個(gè) 串行和/或并行操作,并且其中在操作之間或者將中間結(jié)果從該可配置 的執(zhí)行單元輸出到結(jié)果存儲裝置之前對中間結(jié)果進(jìn)行移位和/或置換。
28. —種包括用于執(zhí)行權(quán)利要求22的方法的程序代碼裝置的計(jì)算 機(jī)程序產(chǎn)品。
29. —種指令,包括操作碼部分,定義一種類型的數(shù)據(jù)處理操作,其包含用于設(shè)置可配 置的執(zhí)行單元的一個(gè)或多個(gè)算子的配置的動(dòng)態(tài)配置信息; 配置信息字段,包含算子配置信息;以及 指示在該數(shù)據(jù)處理操作中使用的操作數(shù)的至少一個(gè)字段。
全文摘要
一種可配置的執(zhí)行單元包括能夠由指令在處理多比特操作數(shù)值的級別動(dòng)態(tài)配置的算子。該單元包括一個(gè)或多個(gè)可動(dòng)態(tài)配置的算子模塊,所述模塊或每個(gè)模塊是可連接的以便接收在指令中指示的輸入操作數(shù);和可編程的查找表,該可編程的查找表是可連接的以便接收根據(jù)該指令的操作碼部分確定的動(dòng)態(tài)配置信息,并且能夠響應(yīng)于該指令中的所述動(dòng)態(tài)配置信息而產(chǎn)生定義可配置的算子模塊的功能或行為的特征的算子配置設(shè)置。
文檔編號G06F9/318GK101218560SQ200680024524
公開日2008年7月9日 申請日期2006年5月4日 優(yōu)先權(quán)日2005年5月5日
發(fā)明者S·諾爾斯 申請人:艾色拉公司