亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

自動(dòng)指令集體系結(jié)構(gòu)的產(chǎn)生的制作方法

文檔序號(hào):6429767閱讀:238來源:國(guó)知局
專利名稱:自動(dòng)指令集體系結(jié)構(gòu)的產(chǎn)生的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)字計(jì)算機(jī)系統(tǒng)。更確切的,本發(fā)明涉及數(shù)字計(jì)算機(jī)系統(tǒng)中程序員可視特征的自動(dòng)確定。
背景技術(shù)
一個(gè)指令集體系結(jié)構(gòu)(ISA)描述了對(duì)程序員可視的處理器的指令、操作以及寄存器文件(Hennessy等人,computer architecture,AQuantitative Approach,第二版,第二章)。一個(gè)用于一般目的的處理器的ISA會(huì)被設(shè)計(jì)成對(duì)很多應(yīng)用提供一個(gè)合理水平的性能。與此相反,對(duì)于一個(gè)嵌入式或者專用處理器,其ISA就必須被設(shè)計(jì)成對(duì)一組特殊的應(yīng)用提供盡可能多的性能改善,或者滿足一個(gè)最小性能要求。例如,一個(gè)用來對(duì)視頻數(shù)據(jù)流進(jìn)行解碼的應(yīng)用的性能就必須滿足實(shí)時(shí)解碼視頻這樣的最低要求。所以,用于執(zhí)行視頻數(shù)據(jù)流解碼應(yīng)用的處理器的ISA就必須提供應(yīng)用所需要的最低水平的性能需求,而這是不用考慮該ISA對(duì)其它應(yīng)用的性能水平的。
同時(shí),我們希望能夠?qū)?shí)施ISA所需的處理器硬件開銷達(dá)到最小。所以,ISA設(shè)計(jì)者需要在所需的應(yīng)用性能與實(shí)施ISA的處理器硬件開銷之間做出權(quán)衡。
在設(shè)計(jì)ISA時(shí),設(shè)計(jì)者可以采用多種技術(shù),它們中的每一個(gè)在潛在的性能改善和硬件開銷方面都具有不同的折衷。這些技術(shù)包括超長(zhǎng)指令字(VLIW)(Hennessy等人,computer architecture,A QuantitativeApproach,第二版,4.4節(jié),284-285頁(yè))、矢量操作(Hennessy等人,computer architecture,A Quantitative Approach,第二版,附錄B)、混合操作以及專用。
A.VLIW
VLIW技術(shù)允許單個(gè)指令包括多個(gè)獨(dú)立操作。一個(gè)VLIW指令被分成多個(gè)時(shí)隙,每個(gè)時(shí)隙可以包括一個(gè)操作。要描述一個(gè)VLIW指令只需確定每個(gè)時(shí)隙中可能發(fā)生的指令即可。例如,一個(gè)兩時(shí)隙VLIW指令允許在第一時(shí)隙內(nèi)是一個(gè)加載操作,而在第二時(shí)隙內(nèi)是一個(gè)乘法操作。
如果ISA被設(shè)計(jì)來使用VLIW,一個(gè)源程序編譯器(例如,C或C++編譯器)可以采用軟件流水線以及指令調(diào)度技術(shù)來把多個(gè)操作打包到單個(gè)VLIW指令中,這將有可能提高性能(Lam,“軟件流水線一個(gè)VLIW機(jī)器的有效調(diào)度技術(shù)(Software PipeliningAn EffectiveScheduling Technique for VLIW Machines)”,Proceedings of theSIGPLAN 1988 Conference on Programming Language Design andImplementation;Krishnamurthy,“對(duì)流水線處理器調(diào)度的論文回顧(A Brief Survey of Papers on Scheduling for Pipelined Processors)”,SIGPLAN Notices,25卷,#7,1990年7月)。然而,設(shè)計(jì)一個(gè)使用VLIW的ISA與不使用VLIW相比會(huì)增加硬件開銷。由于一個(gè)VLIW指令會(huì)并行發(fā)出和執(zhí)行多個(gè)獨(dú)立的操作,所以硬件必須包括多個(gè)并行的解碼器。同樣,如果同一個(gè)VLIW指令中的多個(gè)操作訪問同一個(gè)寄存器文件,那么該寄存器文件就必須有足夠的端口來滿足這些訪問。此外,如果VLIW指令允許在該指令中出現(xiàn)一個(gè)操作多次出現(xiàn),那么實(shí)施該操作的硬件就必須被復(fù)制以使得該操作的這些情形可以并行執(zhí)行。
所以,每個(gè)VLIW指令中的時(shí)隙數(shù)、滿足每個(gè)VLIW指令操作所需的寄存器文件端口數(shù)、以及每個(gè)VLIW指令所允許的操作組合會(huì)影響到指令所帶來的性能改善以及實(shí)施指令所需的邏輯的硬件開銷。例如,一個(gè)允許在兩個(gè)時(shí)隙中都出現(xiàn)一個(gè)整數(shù)加法操作的兩時(shí)隙VLIW指令就需要整數(shù)寄存器文件具有至少四個(gè)讀取端口(每個(gè)加法需要兩個(gè)整數(shù)寄存器作為輸入),至少兩個(gè)寫入端口(每個(gè)加法產(chǎn)生一個(gè)寫入到整數(shù)寄存器中的結(jié)果),以及需要加法邏輯的兩個(gè)復(fù)本。和一個(gè)非VLIW指令相比,這樣加上的解碼邏輯、寄存器文件端口以及加法邏輯就會(huì)增加很多硬件開銷,然而,如果能夠并行執(zhí)行兩個(gè)加法指令從而提高應(yīng)用的性能,那么這樣的硬件開銷就是合理的。
為了簡(jiǎn)化包括VLIW指令的ISA設(shè)計(jì),現(xiàn)有技術(shù)的PICO系統(tǒng)(Aditya等人,“VLIW和EPIC處理器的自動(dòng)體系綜合(AutomaticArchitectural Synthesis of VLIW and EPIC Processors)”,Proc.International Symposium on System Synthesis,ISSS’99,San Jose,CA,1999年11月,107-113頁(yè))會(huì)通過搜索VLIW處理器空間并評(píng)價(jià)每個(gè)ISA的開銷和性能來自動(dòng)建立一個(gè)VLIW ISA。在PICO所搜索的設(shè)計(jì)空間中,一個(gè)VLIW處理器的特征在于寄存器文件的大小和類型、指令中的操作以及允許的操作組合。通過使用搜索的結(jié)果,設(shè)計(jì)者就可以選擇一個(gè)滿足性能和硬件開銷要求的VLIW ISA。
B.矢量操作矢量操作技術(shù)通過建立能夠一次作用在多于一個(gè)數(shù)據(jù)元素上的矢量操作來增加數(shù)據(jù)的吞吐量(矢量操作也被稱為SIMD操作)。矢量操作的特征在于它作用在每個(gè)數(shù)據(jù)元素上的操作,以及它所并行操作的數(shù)據(jù)元素的個(gè)數(shù),也就是矢量長(zhǎng)度。
例如,一個(gè)寬度為四的矢量整數(shù)加法操作會(huì)將各自包含四個(gè)整數(shù)的兩個(gè)輸入矢量相加,然后產(chǎn)生一個(gè)包含四個(gè)整數(shù)的結(jié)果矢量。如果ISA被設(shè)計(jì)來使用矢量操作,那么源程序編譯器就可能會(huì)使用自動(dòng)并行處理以及矢量化技術(shù)(Wolfe,優(yōu)化超級(jí)計(jì)算機(jī)的超級(jí)編譯器(Optimizing Supercompilers for Supercomputers),MIT出版社,Cambridge,MA,1989;Zima、Hans等人,用于并行和矢量機(jī)器的超級(jí)編譯器(Supercompilers for Parallel and Vector Machines),ACM出版社/Addison-Wesley,Reading,MA 1991)來提高一個(gè)或者多個(gè)應(yīng)用循環(huán)的性能。然而,就如同VLIW,使用矢量操作會(huì)增加硬件開銷,這是因?yàn)槭噶坎僮餍枰軌虿⑿凶饔迷诙鄠€(gè)數(shù)據(jù)元素上的邏輯。同樣,矢量操作需要能夠容納數(shù)據(jù)元素矢量的矢量寄存器文件。
例如,一個(gè)寬度為四的矢量整數(shù)加法操作需要能夠并行將四個(gè)整數(shù)相加的邏輯,以及需要一個(gè)能夠容納包含四個(gè)整數(shù)值的矢量的矢量寄存器文件。所以,設(shè)計(jì)一個(gè)使用矢量操作的ISA就需要設(shè)計(jì)者確定一組矢量操作、矢量操作所作用的數(shù)據(jù)元素?cái)?shù)、以及矢量操作所訪問的矢量寄存器文件中的寄存器數(shù),從而在應(yīng)用性能和硬件開銷之間做出權(quán)衡。為了簡(jiǎn)化使用了矢量操作的ISA的設(shè)計(jì),技術(shù)上就需要一種自動(dòng)的ISA產(chǎn)生系統(tǒng),它產(chǎn)生的矢量操作能夠在權(quán)衡硬件開銷的同時(shí)提高應(yīng)用性能。
C.混合操作混合操作(fused operation)產(chǎn)生的操作包含多個(gè)簡(jiǎn)單操作。混合操作技術(shù)與混合乘法-加法(Hennessy等人,computer architecture,A Quantitative Approach,第二版,A.7部分)的本質(zhì)類似,但與混合乘法-加法不同,混合操作的語(yǔ)義與簡(jiǎn)單操作語(yǔ)義的組合相同。
用混合操作來代替簡(jiǎn)單操作可以減小代碼的規(guī)模以及發(fā)出指令的帶寬,還可以減小對(duì)寄存器文件端口的要求。同時(shí),混合操作的等待時(shí)間可以比簡(jiǎn)單操作的組合的等待時(shí)間要小?;旌喜僮鞯囊粋€(gè)例子就是Tensilica的Xtensa體系結(jié)構(gòu)(Xtensa Instruction Set ArchitectureReference Manual,第5章,170頁(yè))中的移位1加法(add-with-shift-by-1)操作。移位1加法會(huì)將一個(gè)值左移一位,然后與另外一個(gè)值相加,所以它是一個(gè)由左移操作和一個(gè)加法操作組成的混合操作。一個(gè)移位1加法操作代替了兩個(gè)簡(jiǎn)單操作,并且仍然在一個(gè)周期中執(zhí)行。
如果混合操作需要附加的邏輯或者混合操作需要附加的寄存器文件端口來訪問它的操作數(shù)(operand),那么使用混合操作就會(huì)增加硬件開銷。確定一組能夠給一組應(yīng)用帶來性能改善的混合操作,并對(duì)性能改善與實(shí)施混合操作的硬件開銷進(jìn)行權(quán)衡是一項(xiàng)很難的任務(wù)。所以,為了簡(jiǎn)化使用了混合操作的ISA的設(shè)計(jì),技術(shù)上就需要一個(gè)自動(dòng)ISA建立系統(tǒng),它所建立的混合操作可以在權(quán)衡硬件開銷的同時(shí)提高應(yīng)用的性能。
D.專用專用技術(shù)所建立的操作總是對(duì)它的一個(gè)或多個(gè)操作數(shù)使用一個(gè)比原操作更小范圍的值。例如,如果一個(gè)應(yīng)用不需要原始操作的所有通用性,那么一個(gè)16位的乘法操作就有可能被轉(zhuǎn)用化成一個(gè)對(duì)常數(shù)的乘法,或者被轉(zhuǎn)用化成一個(gè)8位乘法。由于操作是作用在一個(gè)更加有限的輸入集上的,所以實(shí)現(xiàn)該專用操作所需的邏輯就有可能比原操作所需的邏輯簡(jiǎn)單得多。
例如,一個(gè)總是進(jìn)行與3相乘的操作的專用乘法就會(huì)比一個(gè)通用乘法操作所需的邏輯少得多。然而,應(yīng)用也許除了專用版本外還需要操作的通用版本,那么增加一個(gè)專用操作就會(huì)增加硬件開銷。由于常值操作數(shù)不需要在執(zhí)行操作之前被調(diào)入寄存器,所以一個(gè)專用操作能夠提高性能。
例如,使用通用乘法來進(jìn)行乘以3的操作需要將常數(shù)“3”載入寄存器,然后再被用作乘法的輸入(假設(shè)乘法讀取兩個(gè)寄存器作為輸入),而專用的乘以3操作就不需要寄存器載入這一步。
確定一組能夠給一組應(yīng)用帶來性能改善的專用操作,并對(duì)性能改善與實(shí)施專用操作的硬件開銷進(jìn)行權(quán)衡是一項(xiàng)很難的任務(wù)。所以,為了簡(jiǎn)化使用了專用操作的ISA的設(shè)計(jì),技術(shù)上就需要一個(gè)自動(dòng)ISA建立系統(tǒng),它所建立的專用操作可以在權(quán)衡硬件開銷的同時(shí)提高應(yīng)用的性能。
為了在給定硬件開銷的條件下將性能改善最大化,或者在給定性能改善的條件下將硬件開銷最小化,設(shè)計(jì)者所必須考慮的ISA應(yīng)該能夠包括矢量操作、混合操作、專用操作以及包含了這些技術(shù)的操作(例如,一個(gè)操作可以對(duì)兩個(gè)四整數(shù)矢量進(jìn)行四個(gè)并行累積乘3計(jì)算,從而產(chǎn)生一個(gè)四整數(shù)矢量結(jié)果)的任何組合。此外,設(shè)計(jì)者必須考慮使用VLIW來允許并行發(fā)出和處理多個(gè)獨(dú)立操作。在設(shè)計(jì)一個(gè)性能與硬件開銷相平衡的ISA時(shí),同時(shí)考慮四種技術(shù)是一個(gè)非常困難的任務(wù)。所以,技術(shù)上就需要一個(gè)自動(dòng)ISA建立系統(tǒng),它使用VLIW、矢量操作、混合操作以及專用操作來建立一個(gè)在權(quán)衡硬件開銷的同時(shí)還會(huì)提高應(yīng)用性能的ISA。

發(fā)明內(nèi)容
鑒于現(xiàn)有技術(shù)中的上述問題,本發(fā)明的優(yōu)選實(shí)施例會(huì)自動(dòng)產(chǎn)生一個(gè)指令集體系結(jié)構(gòu)(ISA),該指令集體系結(jié)構(gòu)潛在的運(yùn)用了VLIM指令、矢量操作、混合操作以及專用操作,其目的在于提高一組應(yīng)用的性能,同時(shí)又能將硬件開銷保持在設(shè)計(jì)者所設(shè)定的限度以下,或者是在給定所需的性能的條件下減小硬件開銷。


通過閱讀對(duì)優(yōu)選實(shí)施例的詳細(xì)描述,以及附圖,本發(fā)明實(shí)施例的這些以及其它方面將會(huì)變得更加明了,在附圖中圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的vec4配置;圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的流程圖;圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的標(biāo)量配置;圖4A和4B是根據(jù)本發(fā)明一個(gè)實(shí)施例的C代碼的一個(gè)區(qū)域以及相應(yīng)的依賴關(guān)系圖;圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的一個(gè)修改的vec4依賴關(guān)系圖;圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的四周期調(diào)度;圖7是根據(jù)本發(fā)明一個(gè)實(shí)施例的混合操作的依賴關(guān)系圖;圖8A和8B是根據(jù)本發(fā)明一個(gè)實(shí)施例的一個(gè)依賴關(guān)系圖以及使用混合圖所導(dǎo)致的調(diào)度;圖9是根據(jù)本發(fā)明一個(gè)實(shí)施例的專用操作的依賴關(guān)系圖;圖10是根據(jù)本發(fā)明一個(gè)實(shí)施例的一個(gè)ISA設(shè)計(jì)過程,它被用來在不超過給定開銷預(yù)算的情況下將性能改善最大化;以及圖11是一個(gè)ISA設(shè)計(jì)過程,它被用來在達(dá)到或超過改善目標(biāo)的情況下將開銷最小化。
具體實(shí)施例方式
本發(fā)明的優(yōu)選實(shí)施例會(huì)自動(dòng)產(chǎn)生一個(gè)指令集體系結(jié)構(gòu)(ISA),該指令集體系結(jié)構(gòu)潛在的運(yùn)用了VLIM指令、矢量操作、混合操作以及專用操作,其目的在于提高一組應(yīng)用的性能,同時(shí)又能將硬件開銷保持在設(shè)計(jì)者所設(shè)定的限度以下,或者是在給定所需的性能的條件下減小硬件開銷。
本發(fā)明從一組原始操作中得到由ISA所執(zhí)行的操作。在優(yōu)選實(shí)施例中,原始操作包括支持原始ISA上的應(yīng)用語(yǔ)言所必需的操作,也可以包括用戶明確定義的操作,這里所說的原始ISA例如Xtensa ISA的配置。在優(yōu)選實(shí)施例中,用戶定義新操作所使用的是Tensilica指令擴(kuò)展(TIE)語(yǔ)言(如Killian等人的美國(guó)專利No.6,282,633,以及申請(qǐng)序列No.09/246,047和09/506,502中所描述的內(nèi)容,這兩篇文獻(xiàn)在這里被用作參考)。如果想知道TIE的進(jìn)一步信息,請(qǐng)參閱《Tensilica應(yīng)用專用微處理器解決方案綜述手冊(cè)》(Tensilica Application SpecificMicroprocessor Solutions Overview Handbook)的第4章,該書可以在網(wǎng)上獲得http//www.tensilica.com/technology_pdf.html。如下所述,本發(fā)明將通過對(duì)原始操作采用矢量操作、混合操作以及專用操作技術(shù)來產(chǎn)生新的操作。接著,本發(fā)明使用VLIM來產(chǎn)生包含一個(gè)或多個(gè)原始或者新操作的新指令。
1.操作類本發(fā)明將原始操作和新操作分成操作類(operation classes)。理想情況下,一個(gè)操作類代表了由共享硬件所實(shí)施的、需要相同寄存器文件資源的操作。例如,一個(gè)32位整數(shù)加法操作和一個(gè)32位整數(shù)減法操作都是從兩個(gè)輸入寄存器讀取然后對(duì)一個(gè)輸出寄存器寫入。同時(shí),實(shí)施加法和減法操作所需的邏輯是共享的;所以加法和減法操作應(yīng)該放在同一個(gè)操作類中。然而,本發(fā)明并不要求操作類是按這種方式來形成的。優(yōu)選實(shí)施例采用了下面的操作類MEMORY(存儲(chǔ)器)該操作類包括了所有訪問存儲(chǔ)器的原始操作,這包括用戶定義的加載和存儲(chǔ)。MEMORY操作類還包括使用矢量操作、混合操作和/或?qū)S貌僮鲝脑即鎯?chǔ)器操作得到的所有新操作。
USER、USER’、USER”…(用戶,用戶’,用戶”…)這些操作類包含除了用戶定義的加載和存儲(chǔ)以外的所有原始用戶定義操作,以及使用矢量操作、混合操作和/或?qū)S貌僮鲝挠脩舳x操作得到的所有新操作。由一個(gè)MEMORY類操作以及一個(gè)USER類操作組成的混合操作不包含在USER類中。所有用戶定義操作被基于它們的操作數(shù)(operand)的用途而被分為不同的USER類,從而所有具有相同操作數(shù)用途的用戶定義操作都被放在相同的USER操作類中。
MULT(乘法)該操作類包括除了用戶定義操作以外的所有進(jìn)行乘法的原始操作。該操作類也包括使用矢量操作、混合操作和/或?qū)S貌僮鲝脑汲朔ú僮鞯玫降乃行虏僮?。由一個(gè)MEMORY類操作和/或一個(gè)USER類操作,以及一個(gè)MULT類操作組成的混合操作不屬于MULT類。
ALU該操作類包括了沒有被MEMORY、MULT或USER操作類所包含的所有原始操作和新操作。這些原始操作例如加法、減法、移位等等。
每個(gè)操作都產(chǎn)生了或者使用了由一個(gè)或多個(gè)類型所代表的值。原始操作會(huì)產(chǎn)生和使用原始類型。一個(gè)原始類型表示了應(yīng)用程序語(yǔ)言中的內(nèi)部類型,或者表示了在優(yōu)選實(shí)施例中通過現(xiàn)有TIE ctype構(gòu)建來指定的用戶定義類型。在優(yōu)選實(shí)施例中,應(yīng)用是通過C以及C++程序語(yǔ)言來表達(dá)的,所以,內(nèi)部類型就指的是有符號(hào)和無符號(hào)型字符char(字符)、short(短整型)、int(整型)以及l(fā)ong(長(zhǎng)整型),還有float(浮點(diǎn)型)和double(雙精度型)。用戶可以手動(dòng)的限制一個(gè)操作類中的原始操作,使它們只作用在某些類型上。例如,如果應(yīng)用不需要對(duì)浮點(diǎn)型或者雙精度型值的操作,那么這些操作就可以從操作類中刪除,從而就減少了實(shí)施操作類所需的硬件。
本發(fā)明所建立的新操作會(huì)產(chǎn)生和使用原始類型以及新類型。新類型是由本發(fā)明建立的,它代表了一個(gè)原始類型的矢量形式。例如,一個(gè)新類型可以表示帶有四個(gè)整型值的矢量。從使用原始整型值的原始加法操作出發(fā),本發(fā)明可以建立一個(gè)能夠使用四整型矢量這樣的新類型的寬度為四的新矢量加法操作。
每個(gè)原始類型都被包含在一個(gè)寄存器文件中。多種類型可以共享相同的寄存器文件。在優(yōu)選實(shí)施例中,一個(gè)寄存器文件被用來包含所有的原始內(nèi)部整型類型(有符號(hào)和無符號(hào)的字符、短整型、整型以及長(zhǎng)整型),而一個(gè)寄存器文件被用來包含所有的原始實(shí)型類型(浮點(diǎn)和雙精度)。在優(yōu)選實(shí)施例中,對(duì)于每個(gè)原始用戶定義類型,用戶會(huì)通過使用現(xiàn)有技術(shù)TIE regfile構(gòu)建來指定寄存器文件包含該類型。
如下所述,每個(gè)新類型都包含在由本發(fā)明所建立的一個(gè)新寄存器文件中。在優(yōu)選實(shí)施例中,如果建立了代表內(nèi)部整型類型的矢量形式的新類型,那么一個(gè)新寄存器文件就被用來包含所有這些新類型,如果建立了代表內(nèi)部實(shí)型類型的矢量形式的新類型,那么也會(huì)有一個(gè)新寄存器文件被用來包括所有這些類型。為了使用戶定義寄存器文件中包含用戶定義類型的矢量形式,本發(fā)明還為每個(gè)用戶定義寄存器文件建立了一個(gè)新寄存器文件。
在下面的例子中,我們假定MULT和ALU類包含作用在整型類型(也就是有符號(hào)和無符號(hào)的字符、短整型、整型以及長(zhǎng)整型)上的原始操作,而不包括作用在實(shí)型類型上的原始操作(也就是浮點(diǎn)和雙精度)。存在一個(gè)單個(gè)的USER類,它包括一個(gè)用戶定義操作,MUL24,它將兩個(gè)用戶定義的代表24位整數(shù)的int24類型相乘,然后產(chǎn)生一個(gè)整型結(jié)果。MEMORY類包含了用來加載和存儲(chǔ)整型類型以及int24類型的原始操作。
2.ISA配置ISA的特性是通過一個(gè)或多個(gè)ISA配置來描述的。ISA中所包含的操作、指令以及寄存器文件是由組成ISA的每個(gè)ISA配置所需的操作、指令以及寄存器文件所形成的集合。在優(yōu)選實(shí)施例中,一個(gè)ISA配置包括下面這些參數(shù)1.矢量長(zhǎng)度(VL)??赡艿娜≈禐榇笥诹愕恼麛?shù)。該參數(shù)表示了由配置所代表的操作的矢量寬度,從而也就給出了每個(gè)矢量單元中所含的標(biāo)量單元的數(shù)量。VL=1表示該操作是作用在一個(gè)標(biāo)量上的,也就是說該配置沒有使用矢量操作。
2.發(fā)出寬度(IW)。可能的取值為大于零的整數(shù)。該參數(shù)表示了每個(gè)VLIW指令中所能包含的操作的數(shù)量。IW=1表示每個(gè)指令包含一個(gè)操作,也就是說該配置沒有使用VLIW。
3.操作類(OC)。配置實(shí)施一組一個(gè)或多個(gè)操作類。如果一個(gè)配置實(shí)施了一個(gè)操作類,那么該配置就會(huì)支持該操作類中的所有操作,并且包括執(zhí)行這些操作所必需的硬件。
4.指令模板集(ITS)。一組包含一個(gè)或多個(gè)指令模板的集合,它們一起描述了將操作類組合到一個(gè)VLIW指令中可能的所有方式。每個(gè)指令模板通過對(duì)每個(gè)指令時(shí)隙指定一個(gè)操作類來描述一個(gè)可能的組合。例如,要表示一個(gè)兩時(shí)隙VLIW指令在時(shí)隙0具有一個(gè)存儲(chǔ)器操作,且在時(shí)隙1有一個(gè)乘法操作,那么這樣的一個(gè)指令模板就是{MEMORY,MULT}。一個(gè)指令模板集表示了所有可能的模板,這樣,ITS={{MEMORY,MULT},{ALU,ALU}}就表示每個(gè)指令可以包括一個(gè)存儲(chǔ)器操作以及一個(gè)乘法操作(分別在時(shí)隙0和1),或者可以包括兩個(gè)ALU操作(每個(gè)時(shí)隙中一個(gè))。
5.操作寬度(OW)。可能的取值為1/n,其中‘n’是VL的一個(gè)因子。對(duì)于每個(gè)操作類,該參數(shù)表示了操作所作用的元素占被操作矢量元素個(gè)數(shù)的分?jǐn)?shù)。例如,在一個(gè)矢量長(zhǎng)度為4的配置中,一個(gè)滿(OW=1)寬度的乘法會(huì)并行進(jìn)行4個(gè)乘法,也就是對(duì)矢量中每個(gè)元素各做一次乘法。一個(gè)半(OW=0.5)寬度的乘法會(huì)并行進(jìn)行2個(gè)乘法,該乘法只會(huì)對(duì)矢量的4個(gè)元素中的兩個(gè)作用(所以要進(jìn)行兩次乘法操作才能完成對(duì)4個(gè)元素的乘法)。
6.組合操作集(COS)。如下所述,通過使用混合操作技術(shù)和/或?qū)S眉夹g(shù)所形成的一組包含一個(gè)或多個(gè)新操作的集合。
例如,圖1中所示的vec4配置表示了能夠最多并行對(duì)4個(gè)標(biāo)量進(jìn)行操作的一個(gè)操作集,其中MEMORY類和ALU類操作是對(duì)所有的四個(gè)元素并行操作,而MULT類和USER類是對(duì)兩個(gè)元素并行操作。該配置包括了來自所有操作類的操作,并且允許在每個(gè)指令中編碼兩個(gè)操作,其指令模板表示了所允許的操作時(shí)隙安排。該配置沒有實(shí)施組合操作。
實(shí)施ISA配置所需的硬件僅僅是為了實(shí)現(xiàn)配置參數(shù)所描述的特征而必須的寄存器文件和邏輯。在優(yōu)選實(shí)施例中,一個(gè)配置的硬件開銷包括操作發(fā)出和解碼邏輯、操作執(zhí)行邏輯、寄存器文件入口和寄存器文件端口的開銷。
配置的IW和ITS決定了需要多少操作解碼和發(fā)出邏輯的并行實(shí)體。ITS中的指令模板表示了每個(gè)解碼器必須能夠解碼。用于發(fā)出時(shí)隙的解碼器必須對(duì)任何模板出現(xiàn)在該時(shí)隙的每個(gè)操作類中的所有操作進(jìn)行解碼。對(duì)于vec4的例子,時(shí)隙0中的解碼器必須對(duì)MEMORY和ALU類操作進(jìn)行解碼,時(shí)隙1中的解碼器必須對(duì)MULT、ALU以及USER類操作進(jìn)行解碼。
配置的VL、OC、ITS以及OW決定了實(shí)行配置所需的操作所必需的邏輯。OC表示了在配置的邏輯中必須實(shí)施什么操作類,也就是什么操作。VL和OW表示了每個(gè)操作所作用的數(shù)據(jù)元素的個(gè)數(shù),也就表示了執(zhí)行邏輯必須并行進(jìn)行的計(jì)算數(shù)量。ITS表示了能夠并行發(fā)出并執(zhí)行的操作類,從而也就表示了每個(gè)操作所需的執(zhí)行邏輯的并行實(shí)體數(shù)量。
例如,vec4配置實(shí)施了所有的操作類,所以配置所需要的硬件就包括實(shí)現(xiàn)包含在所有操作類中所有操作所必需的邏輯。由于VL=4,OW[MEMORY]=OW[ALU]=1,所以MEMORY和ALU操作類中的每個(gè)操作都會(huì)并行操作四個(gè)數(shù)據(jù)元素,從而實(shí)現(xiàn)每個(gè)操作的邏輯就必須并行進(jìn)行四個(gè)計(jì)算。由于VL=4,OW[MUL]=OW[USER]=0.5,所以MULT和USER操作類中的每個(gè)操作都會(huì)并行操作兩個(gè)數(shù)據(jù)元素,從而實(shí)現(xiàn)每個(gè)操作的邏輯就必須并行進(jìn)行兩個(gè)計(jì)算。vec4配置的{ALU,ALU}模板表示兩個(gè)ALU類操作可以被同時(shí)執(zhí)行,所以實(shí)現(xiàn)配置所需要的邏輯必須包含ALU類操作所需邏輯的兩份復(fù)制。
配置的IW和ITS決定了每個(gè)寄存器文件所需的寄存器文件端口數(shù)。每個(gè)寄存器文件的寄存器文件端口數(shù)指的是在任何指令模板中可能發(fā)生的操作所需要的最大端口數(shù)量。對(duì)于vec4的例子,{ALU,ALU}模板表示了兩個(gè)ALU類操作會(huì)同時(shí)執(zhí)行。假設(shè)ALU操作類中任何操作所需的最多整數(shù)寄存器文件訪問是兩個(gè)整數(shù)寄存器文件讀取和一個(gè)整數(shù)寄存器文件寫入,那么{ALU,ALU}模板就需要四個(gè)整數(shù)寄存器文件讀取端口和兩個(gè)整數(shù)寄存器文件寫入端口。所有指令模板中最大寄存器文件要求就是該配置的要求。
如下所述,配置所需的每個(gè)寄存器文件中的入口數(shù)是在ISA被建立時(shí)確定的。一旦知道了寄存器文件入口的數(shù)量,那么這些寄存器文件入口的硬件開銷就會(huì)被加到配置的初始硬件開銷中。
3.建立和使用一個(gè)新的ISA如圖2所示,本發(fā)明的一個(gè)優(yōu)選實(shí)施例將采用下面的步驟來建立一個(gè)用于一組應(yīng)用的ISA。
1.建立一組ISA配置,這些配置一起描述了將有可能被用來提高應(yīng)用性能的所有操作、指令以及寄存器文件。
2.給每個(gè)配置分配一定的開銷,如上所述,這些開銷代表了要實(shí)現(xiàn)配置要求的操作、指令以及寄存器文件所需要的硬件開銷。
3.分析應(yīng)用并搜集應(yīng)用中每個(gè)區(qū)域的信息,其中所建立的ISA將會(huì)為所述應(yīng)用的區(qū)域提供性能改善。
4.對(duì)于一組ISA配置中的每個(gè)配置,評(píng)價(jià)每個(gè)應(yīng)用區(qū)域,從而確定配置中所包含的操作、指令以及寄存器文件所提供的性能改善。如果需要,還會(huì)建立包含混合和/或?qū)S貌僮鞯男翴SA配置,并把它們加到這一組ISA配置中。
5.確定一起定義一個(gè)ISA的一個(gè)或多個(gè)配置,這里的ISA是為了將應(yīng)用的性能最優(yōu)化,同時(shí)還要使硬件開銷低于一個(gè)設(shè)定的預(yù)算,或者,這里的ISA是為了將硬件開銷最小化,同時(shí)還提供一個(gè)必需的性能水平。
6.產(chǎn)生ISA所需的硬件。
4.建立ISA配置本發(fā)明的一個(gè)實(shí)施例通過枚舉VL、IW、OC、ITS以及OW參數(shù)值的所有組合來建立一組ISA配置。如下所述,包含混合或者專用操作的配置將在稍后建立(也就是說每個(gè)建立的配置的COS參數(shù)是空的)。為了避免建立過多的配置,將會(huì)基于目標(biāo)處理器的極限以及用戶的引導(dǎo)來給允許的參數(shù)值加上限制。例如,發(fā)出寬度將通過在指令的每個(gè)時(shí)隙中對(duì)操作的opcodes以及操作數(shù)進(jìn)行編碼所需的比特?cái)?shù)來進(jìn)行限制。此外,如果目標(biāo)處理器最多允許一個(gè)存儲(chǔ)器接口,那么MEMORY操作類就最多只能在一個(gè)指令模板的一個(gè)時(shí)隙中出現(xiàn)。
作為對(duì)自動(dòng)產(chǎn)生ISA配置的一個(gè)替換,用戶也可以專門的來選擇那些需要被考慮到的配置集。
一個(gè)被稱為SCALAR(標(biāo)量)的特殊ISA配置總是會(huì)被建立。SCALAR表示的指令集在每個(gè)指令中只允許一個(gè)操作,并且只進(jìn)行標(biāo)量操作。SCALAR配置被用作一個(gè)供其它配置進(jìn)行對(duì)比的基準(zhǔn)。圖3表示了一個(gè)可能的SCALAR配置。
每個(gè)ISA配置都被分配有一個(gè)初始開銷,該初始開銷表示了要實(shí)現(xiàn)組成配置的指令、操作以及寄存器文件所需的邏輯的硬件開銷??梢酝ㄟ^建立實(shí)際的用來實(shí)現(xiàn)配置所需的邏輯,然后檢測(cè)所用硬件的大小來得到最確切的硬件開銷。該邏輯可以通過使用像Synopsys’DesignCompiler中所提供的那些邏輯合成技術(shù)來自動(dòng)產(chǎn)生。然而,這是相當(dāng)耗時(shí)的,從而也是不切實(shí)際的。取而代之,可以從有限數(shù)量的配置所綜合的內(nèi)容中搜集出一個(gè)典型硬件開銷的數(shù)據(jù)庫(kù)。
例如,該數(shù)據(jù)庫(kù)可以記錄一個(gè)加法器、一個(gè)乘法器、一個(gè)寄存器文件端口、一個(gè)存儲(chǔ)器接口等等的開銷。通過使用該數(shù)據(jù)庫(kù),就可以從配置的組成部分的開銷來快速估計(jì)出配置的初始開銷。一個(gè)配置的初始開銷沒有包括任何組合操作的開銷或者寄存器文件入口的開銷。這些開銷將會(huì)在后來按下文所述加到配置中。
5.評(píng)價(jià)ISA配置帶來的改善本發(fā)明的一個(gè)優(yōu)選實(shí)施例下面將會(huì)對(duì)應(yīng)用的每個(gè)區(qū)域確定每個(gè)ISA配置所帶來的改善,以及寄存器文件的需求。在優(yōu)選實(shí)施例中,一個(gè)區(qū)域(region)是一個(gè)沒有包含在任何循環(huán)中的循環(huán)套(loop nest)或者簡(jiǎn)單基本塊(Aho等人,CompilersPrinciple,Techniques,andTools,9.4節(jié),528-529頁(yè))代碼。對(duì)于每個(gè)配置,該改善就是相對(duì)于SCALAR配置而言該配置所能帶來的循環(huán)次數(shù)的減少。
對(duì)每個(gè)區(qū)域,本發(fā)明搜集了被用來確定配置對(duì)該區(qū)域帶來的改善的分析信息。該分析信息包括下面的內(nèi)容1.DEP_GRAPH區(qū)域中操作的依賴關(guān)系圖(Morgan,Buildingan Optimizing Compiler,242頁(yè))。
2.EXEC_CNT該區(qū)域的執(zhí)行計(jì)數(shù)。在優(yōu)選實(shí)施例中,該執(zhí)行計(jì)數(shù)來自真實(shí)或者估計(jì)的分布圖(profile)(Wall,“利用真實(shí)或者估計(jì)的分布圖來預(yù)測(cè)程序特性(Predicting Program Behavior Using Real orEstimated Profiles)”,Proceedings of the ACM SIGPLAN 1991Conference on Programming Language Design and Implementation),或者來自用戶提供的指示。真實(shí)分布圖是從應(yīng)用的真實(shí)執(zhí)行過程中搜集的,而估計(jì)的分布圖則是通過觀察循環(huán)的結(jié)構(gòu)或者應(yīng)用的其它性質(zhì)而得到的。用戶提供的指示被插到應(yīng)用中,通過諸如編譯指示這樣的信息來確定一個(gè)區(qū)域的執(zhí)行計(jì)數(shù)。
3.VL一組可以用于本區(qū)域操作的矢量長(zhǎng)度,它們與短長(zhǎng)度矢量相比可以潛在的提供性能改善。本發(fā)明采用傳統(tǒng)的依賴性分析(Maydan等人,“提取數(shù)據(jù)依賴性分析的一個(gè)有效方法(An EfficientMethod for Extract Data Dependence Analysis)”,PLDI 1991,1-14頁(yè))循環(huán)變換(Wolf等人,“考慮了高速緩存與調(diào)度的組合循環(huán)變換(Combining Loop Transformations Considering Caches AndScheduling)”,Proc.MICRO’96,274-286頁(yè),1996)以及矢量化技術(shù)來確定該區(qū)域是否被矢量化,從而就可以開發(fā)矢量操作。如果該區(qū)域是矢量化的,那么VL就表示了該區(qū)域可以使用什么矢量長(zhǎng)度,從而提供相對(duì)于短矢量的性能改善。如果該區(qū)域不能夠被矢量化,也就是VL={1},那么該區(qū)域就只能使用非矢量操作。
例如,圖4A和4B分別表示了一個(gè)C代碼的區(qū)域和相應(yīng)的依賴關(guān)系圖。該代碼使用了用戶定義的int24類型以及用戶定義的MUL24操作,這兩者都在上面定義過。load const操作是一個(gè)ALU類操作,它將一個(gè)整數(shù)寄存器設(shè)定成一個(gè)特定的常值。該區(qū)域執(zhí)行100次,且可以被矢量化來開發(fā)寬度為2或者寬度為4的矢量操作。
對(duì)于每個(gè)區(qū)域,優(yōu)選實(shí)施例都通過使用分析信息來評(píng)價(jià)每個(gè)ISA配置所帶來的改善。一些配置沒有提供執(zhí)行該區(qū)域所必需的操作,所以它們就被分配以負(fù)的改善。這些配置沒有實(shí)現(xiàn)區(qū)域所要求的操作類,或者它們的矢量長(zhǎng)度與短矢量長(zhǎng)度相比沒有帶來性能的改善。示例中的區(qū)域包括用戶定義的MUL24操作,所以只有能實(shí)現(xiàn)USER操作類的ISA配置才能夠被用來實(shí)現(xiàn)該區(qū)域。類似的,VL=8的配置和一個(gè)VL=4而其它都一樣的配置相比,不會(huì)帶來任何性能的改善。
如果一個(gè)配置可以被用來實(shí)施該區(qū)域,那么確定該配置給該區(qū)域帶來的好處的第一步驟就在于使用一個(gè)指令調(diào)度算法來準(zhǔn)確確定執(zhí)行該區(qū)域所需要的循環(huán)次數(shù)以及該區(qū)域所需的最小寄存器數(shù)。優(yōu)選實(shí)施例對(duì)表示循環(huán)的區(qū)域使用了任何現(xiàn)有技術(shù)的軟件流水線算法,而對(duì)其它區(qū)域使用了任何現(xiàn)有技術(shù)的調(diào)度算法。
作為對(duì)軟件流水線或者調(diào)度算法的一個(gè)替換,可以像軟件流水線中那樣通過使用資源界限來估計(jì)執(zhí)行區(qū)域所需要的循環(huán)數(shù)。調(diào)度算法確定了用最少循環(huán)數(shù)來實(shí)現(xiàn)區(qū)域所需的指令,并且確定了要保存指令所操作的所有值所需要的最小寄存器數(shù)。
在啟用調(diào)度算法之前,每個(gè)屬于一個(gè)操作寬度小于一的操作類的操作必須作為一個(gè)迭代操作來實(shí)施,或者必須被復(fù)制。如果該操作是作為一個(gè)迭代操作來實(shí)現(xiàn)的,那么就使用同樣的邏輯來產(chǎn)生結(jié)果的多個(gè)部分。由于是反復(fù)使用同樣的邏輯來產(chǎn)生整個(gè)結(jié)果,所以迭代操作的等待時(shí)間就長(zhǎng)于非迭代操作。如果操作是被復(fù)制的,那么就會(huì)產(chǎn)生操作的多個(gè)版本來產(chǎn)生整個(gè)輸出。每個(gè)版本的操作使用相同的輸入。每個(gè)版本的操作使用相同的輸入,但產(chǎn)生輸出的不同部分。例如,上面的vec4配置會(huì)進(jìn)行半寬度MUL24操作。所以,要計(jì)算一個(gè)四MUL24結(jié)果的矢量就需要兩個(gè)操作,MUL24_0操作計(jì)算兩個(gè)矢量元素,MUL24_1操作計(jì)算另外兩個(gè)矢量元素。
由于一個(gè)操作所有的復(fù)制都依賴相同的輸入,產(chǎn)生同一輸出的不同部分,所以依賴關(guān)系圖就被修改來表示復(fù)制的操作為形成輸入操作數(shù)和輸出操作數(shù)之間的一個(gè)依賴鏈。例如,vec4配置就需要圖5中所示的修改的依賴關(guān)系圖。
接著,調(diào)度算法將被用來修改依賴關(guān)系圖。例如,在示例區(qū)域使用現(xiàn)有技術(shù)軟件流水線算法以及ISA配置將會(huì)產(chǎn)生圖6中所示的四周期調(diào)度。由于vec4配置允許時(shí)隙0中的MEMORY類操作與時(shí)隙1中的一個(gè)USER或者一個(gè)ALU操作結(jié)成一組,所以該調(diào)度是可能的。
可以通過使用混合操作和/或?qū)S眉夹g(shù)來進(jìn)一步減少循環(huán)次數(shù)。混合操作技術(shù)將兩個(gè)或者更多的獨(dú)立操作組合到一個(gè)新的操作中。由于混合操作比原始操作需要更少的發(fā)出時(shí)隙,并且混合操作的等待時(shí)間可以比原始操作的整個(gè)等待時(shí)間要短,所以用混合操作來取代原始操作就可以減少循環(huán)次數(shù)。
一組候選的獨(dú)立操作就可以是依賴關(guān)系途中任何相連的部分,其中該部分中的操作可以作為單個(gè)的混合操作來實(shí)施??梢詫?duì)能夠作為一個(gè)混合操作的操作個(gè)數(shù)和類進(jìn)行限制,還可以對(duì)混合操作中操作數(shù)的個(gè)數(shù)進(jìn)行限制。對(duì)操作類的限制是為了限制混合操作所需的硬件資源。
例如,將混合操作中的MEMORY類操作限制成一就確保了實(shí)施混合操作所需的硬件最多需要一個(gè)存儲(chǔ)器接口。限制操作數(shù)的個(gè)數(shù)可以確?;旌喜僮魇前丛试S的比特?cái)?shù)來編碼的。一個(gè)操作可以使用的比特?cái)?shù)依賴于指令的大小以及配置的IW(也就是在指令中編碼的操作的個(gè)數(shù))。對(duì)于本例,我們假設(shè)混合操作被限制成最多包含一個(gè)MEMORY類操作,而對(duì)MULT、ALU以及USER類操作個(gè)數(shù)沒有限制,并且操作數(shù)被限制成最多四個(gè)。
示例的依賴關(guān)系圖中存在一個(gè)包含所有操作的依賴關(guān)系圖的相連部分;然而,將所有操作都組合到一個(gè)混合操作中將會(huì)需要多個(gè)MEMORY類操作。由于這將會(huì)超過一個(gè)MEMORY類操作的限制,所以這樣的一個(gè)相連部分將不會(huì)被考慮采用。類似的,其它的相連的部分也被排除在考慮范圍之外。
對(duì)于每個(gè)候選的混合操作,依賴關(guān)系圖會(huì)被修改來使用該候選混合操作,然后被重新調(diào)度來確認(rèn)該操作是否能帶來循環(huán)的減少。在優(yōu)選實(shí)施例中,混合操作的等待時(shí)間是從一個(gè)保存了實(shí)現(xiàn)每個(gè)操作的邏輯所需的時(shí)間的數(shù)據(jù)庫(kù)來確定的,這一時(shí)間不包括對(duì)操作解碼、或者對(duì)操作數(shù)讀取或?qū)懭胨玫臅r(shí)間。一個(gè)混合操作所需的時(shí)間就是在表示混合操作的依賴關(guān)系圖的部分中,沿任何依賴鏈的操作所需的時(shí)間總和的最大值,再加上對(duì)操作解碼以及對(duì)操作數(shù)讀取和寫入所用的時(shí)間。對(duì)于每個(gè)帶來循環(huán)減少的混合操作,會(huì)建立一個(gè)ISA配置的復(fù)本,混合操作會(huì)被加入到配置的組合操作集中,配置的開銷會(huì)由于混合操作的開銷而增加。確定每個(gè)混合操作的開銷的方法與確定ISA配置開銷的方法一樣。優(yōu)選實(shí)施例會(huì)查閱組成部分硬件開銷的數(shù)據(jù)庫(kù),從而混合操作的開銷就是各個(gè)操作開銷的總和。例如,使用了帶有vec4配置的示例依賴關(guān)系圖,圖7中依賴關(guān)系圖的連接部分就代表了一個(gè)候選混合操作。該混合操作的等待時(shí)間是一個(gè)周期。
圖8A和8B表示了為使用混合操作以及相應(yīng)的調(diào)度而修改的依賴關(guān)系圖。由于采用混合操作會(huì)將周期數(shù)從四降到三,所以就會(huì)建立ISA配置的一個(gè)復(fù)本,混合操作會(huì)被加入到ISA配置復(fù)本中,ISA配置復(fù)本的開銷會(huì)由于進(jìn)一步包括混合操作的開銷而增加。
假設(shè)對(duì)于圖4A中區(qū)域,SCALAR配置需要六周期調(diào)度,那么圖8B中的調(diào)度就會(huì)提供一個(gè)三周期的改進(jìn)。如果配置采用矢量操作來減少區(qū)域的執(zhí)行頻率,那么就可以進(jìn)一步減少周期。例如,由于vec4配置是作用在長(zhǎng)度為四的矢量上的,所以示例區(qū)域中的循環(huán)只須執(zhí)行25次而不是100次,這樣指令的執(zhí)行頻率就只有SCALAR配置的四分之一。每個(gè)配置帶來的改善是通過獲得相對(duì)于SCALAR配置的周期數(shù)的減少而得到的。
調(diào)度算法還確定了每種類型所需要的最少寄存器數(shù)。所有區(qū)域中,每種類型所需的最多寄存器數(shù)與每個(gè)配置記錄在一起。同時(shí),每個(gè)配置的開銷會(huì)由于考慮了配置所需的寄存器開銷而增加。
在發(fā)現(xiàn)每個(gè)配置給每個(gè)區(qū)域所帶來的好處之后,每個(gè)配置會(huì)再次被檢驗(yàn)以確認(rèn)是否可以通過使用專用技術(shù)來減少配置的硬件開銷,所述專用技術(shù)是通過將一個(gè)普通操作用一個(gè)作用在一個(gè)或多個(gè)常值上或者作用在一個(gè)更小范圍的值上的操作來代替。對(duì)于每個(gè)配置,專用技術(shù)會(huì)檢測(cè)每個(gè)區(qū)域的依賴關(guān)系圖來發(fā)現(xiàn)候選專用操作。依賴關(guān)系圖中一個(gè)或多個(gè)輸入是常值或小范圍值的任何操作都是一個(gè)專用候選。例如,圖5(A)中的依賴關(guān)系圖就具有圖9中依賴關(guān)系圖所代表的候選專用操作。
如果一個(gè)專用候選能夠用一個(gè)專用操作來替代通用版本,那么它就可以降低硬件開銷。所以,如果任何區(qū)域都不需要專用候選中通用操作,那么通用操作就可以被專用操作所代替,從而潛在的降低硬件開銷。例如,在沒有區(qū)域需要混合操作的通用版本(store c[i],add)的情況下,圖9中依賴關(guān)系圖所表示的專用候選就會(huì)潛在的降低硬件開銷。
如果一個(gè)通用操作可以被專用操作所代替,那么就會(huì)建立ISA配置的一個(gè)復(fù)本,專用操作會(huì)被加入到配置的組合操作組中(如果通用操作是一個(gè)混合操作,就取代相應(yīng)的混合操作),從而配置的開銷就會(huì)被降低,降低的量就是專用操作開銷與相應(yīng)通用操作開銷之間的差值。例如,假設(shè)任何區(qū)域都不需要混合操作的通用版本(store c[i],add),那么它就會(huì)在配置中被專用混合(store c[i],add 12)操作所代替,從而配置的開銷就會(huì)由于專用和通用操作開銷之間的差別而降低。
6.確定組成ISA的ISA配置優(yōu)選實(shí)施例現(xiàn)在就具有了每個(gè)ISA配置的開銷和寄存器要求,以及該配置對(duì)每個(gè)區(qū)域所帶來的性能改善。接下來,本發(fā)明將搜集包括一個(gè)或多個(gè)配置的解決方案集,從而滿足下面的兩個(gè)條件之一。解決方案集中的配置一起組成了ISA。
1.給定硬件開銷預(yù)算,在解決方案集中的配置的總開銷不超過預(yù)算的條件下,希望將解決方案集中的配置所帶來的改善最大化。
2.給定性能改善目標(biāo),在配置所帶來的性能改善能夠達(dá)到或超過該目標(biāo)的前提下,希望將解決方案集中的配置的總硬件開銷最小化。
下面的步驟(也表示在圖10中)被用來在不超過給定的開銷預(yù)算的同時(shí)將性能改善最大化。
1.對(duì)于每個(gè)配置,通過把配置給每個(gè)區(qū)域所帶來的改善相加來計(jì)算配置帶來的總的性能改善。
2.將帶來最大總性能改善(如果有多個(gè)配置都具有最大總性能改善,那就選開銷最小的)且開銷不超過預(yù)算的配置,也就是配置MAX,加到解決方案集中。
3.預(yù)算減去MAX配置的開銷。
4.對(duì)于剩下的每個(gè)配置,在假設(shè)解決方案集中的配置所提供的指令、操作以及寄存器文件也可以使用的情況下,重新計(jì)算該配置給每個(gè)區(qū)域帶來的性能改善。
5.對(duì)于剩下的每個(gè)配置,在解決方案集中的配置所需的邏輯和寄存器已經(jīng)存在的情況下,降低該配置的開銷以使得它代表了為實(shí)現(xiàn)該配置所必需的邏輯和寄存器而增加的開銷。在優(yōu)選實(shí)施例中,一個(gè)配置增加的開銷是通過只計(jì)算沒有存在于解決方案集配置中的那些配置部分而得到的。和前面一樣,每個(gè)部分的硬件開銷是通過使用硬件開銷數(shù)據(jù)庫(kù)來估計(jì)的。例如,假設(shè)解決方案集包括一個(gè)實(shí)施一寬度為4的ALU操作類的配置。如果某個(gè)配置A需要一個(gè)寬度為1、2或4的ALU操作類,那么由于一個(gè)解決方案集配置已經(jīng)提供了該類所需的邏輯,所以該類所需的邏輯的開銷就會(huì)從配置A的開銷中被刪除。類似的,如果配置A需要一個(gè)寬度為8的ALU操作類,該類所需的邏輯的開銷就是寬度為4的ALU操作類所需的邏輯的開銷與寬度為8的ALU操作類所需的邏輯的開銷的差。所以,配置A的開銷就被降低到考慮寬度為8的ALU操作類邏輯的硬件開銷與增加開銷之間的差值。
6.如果剩下的開銷預(yù)算大于零,那么就回到步驟1。
下面的步驟(也表示在圖11中)被用來在達(dá)到或超過改善目標(biāo)的同時(shí)將開銷最小化。
1.對(duì)于每個(gè)配置,通過把配置給每個(gè)區(qū)域所帶來的改善相加來計(jì)算配置帶來的總的性能改善。
2.選擇開銷最低但同時(shí)帶來的改善大于或等于改善目標(biāo)的配置。如果沒有任何一個(gè)配置帶來的改善大于或等于改善目標(biāo),那么就選擇改善最大的配置(如果多個(gè)配置都具有最大性能改善,那就選擇開銷最小的)。將該配置,也就是配置MIN,加到解決方案集中。
3.改善目標(biāo)減去MIN配置的改善。
4.將配置MAX換成配置MIN,其它與上文的步驟4一樣。
5.與上文的步驟5一樣。
6.如果剩下的改善目標(biāo)大于零,那么就回到步驟1。
7.產(chǎn)生描述ISA的硬件解決方案集表示了描述本發(fā)明正在建立的ISA的一組ISA配置?,F(xiàn)在就必須明確要實(shí)施ISA所需的硬件。這一部分就列出了要實(shí)施已建立的ISA所必需的硬件。
要保存解決方案集中的每一種類型所需的寄存器數(shù)就是解決方案集中每個(gè)配置所需的寄存器數(shù)的最大值。對(duì)寄存器的需求還可以進(jìn)一步組合以考慮不同類型之間寄存器的共享。例如,在優(yōu)選實(shí)施例中,一個(gè)單個(gè)寄存器文件就被用于所有矢量整數(shù)類型。所以,矢量整數(shù)寄存器文件中的寄存器數(shù)就是任何整數(shù)矢量類型所需的最大寄存器數(shù)。
每個(gè)寄存器文件入口的寬度是由寄存器文件所包含的最大類型的寬度所決定的。例如,vec4配置就需要矢量整數(shù)寄存器文件足夠?qū)?,以保存四個(gè)最大整數(shù)類型,也就是長(zhǎng)整型;并且需要矢量用戶寄存器文件必須足夠?qū)捯匀菁{四個(gè)int24類型值。假設(shè)任何區(qū)域所需的最小矢量整數(shù)寄存器的數(shù)量是十六,并且任何區(qū)域所需的最小矢量用戶寄存器數(shù)是四,那么ISA的硬件就必須實(shí)施一個(gè)十六入口矢量寄存器文件以容納四個(gè)整數(shù)值的矢量(也就是每個(gè)入口128位),并且必須實(shí)施一個(gè)四入口矢量寄存器文件來容納用戶定義的四int24類型的矢量(也就是每個(gè)入口96位)。
每個(gè)寄存器文件上所需的讀取和寫入端口數(shù)是通過考察描述ISA的所有配置的指令模板而得到的。每個(gè)寄存器文件所需的寄存器文件讀取和寫入端口數(shù)就是發(fā)生在任何指令模板中的操作所需的最大讀取和寫入端口數(shù)。
ISA的硬件還必須包括實(shí)施每個(gè)配置所需的操作的邏輯。例如,vec4配置的邏輯必須實(shí)施所有MEMORY和ALU類操作的寬度為四的矢量版本(因?yàn)閂L=4,以及OW[MEMORY]=OW[ALU]=1),以及必須實(shí)施所有MULT和USER類操作的寬度為二的矢量版本(因?yàn)閂L=4,以及OW[MULT]=OW[USER]=0.5)。
上述的優(yōu)選實(shí)施例只是為了解釋本發(fā)明,而本發(fā)明并不僅限于此。本發(fā)明各種變形對(duì)于已經(jīng)閱讀了本說明書的熟悉技術(shù)的人士是明了的,本發(fā)明以及所附的權(quán)利要求書就是為了也包括這些變形。
權(quán)利要求書(按照條約第19條的修改)1.一種系統(tǒng),包括用于接收至少一個(gè)用高級(jí)語(yǔ)言編寫的軟件程序的裝置;以及用于自動(dòng)生成一個(gè)被優(yōu)化以執(zhí)行所述程序的指令集體系結(jié)構(gòu)的裝置,其中所述指令集體系結(jié)構(gòu)被表示成一組包括一個(gè)或多個(gè)擴(kuò)展指令的配置,所述擴(kuò)展指令基于現(xiàn)存標(biāo)準(zhǔn)或現(xiàn)存的用戶定義的指令集體系結(jié)構(gòu)中的指令。
2.根據(jù)權(quán)利要求1的系統(tǒng),其中所述擴(kuò)展指令在現(xiàn)存標(biāo)準(zhǔn)或現(xiàn)存的用戶定義的指令集體系結(jié)構(gòu)中的狀態(tài)和寄存器文件上操作。
3.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括現(xiàn)存指令的矢量化版本。
4.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括現(xiàn)存指令的VLIW組合。
5.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括現(xiàn)存指令的混合組合。
6.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括現(xiàn)存指令的專用版本。
7.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括高級(jí)語(yǔ)言所支持的操作的矢量版本。
8.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括高級(jí)語(yǔ)言所支持的操作的VLIW組合。
9.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括高級(jí)語(yǔ)言所支持的操作的混合組合。
10.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括高級(jí)語(yǔ)言所支持的操作的專用版本。
11.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括現(xiàn)存指令的矢量化、VLIW、混合以及專用版本中的至少兩個(gè)。
12.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括高級(jí)語(yǔ)言所支持的操作的矢量化、VLIW、混合以及專用版本中的至少兩個(gè)。
13.權(quán)利要求2中的系統(tǒng),其中指令集體系結(jié)構(gòu)的產(chǎn)生是受從所述至少一個(gè)軟件程序中所搜集的分析信息引導(dǎo)的;以及對(duì)于能從所產(chǎn)生的指令集算法中得到性能改善的每個(gè)代碼區(qū)域都進(jìn)行分析信息的搜集。
14.權(quán)利要求13中的系統(tǒng),其中分析信息包括從實(shí)際或估計(jì)的分布圖信息來得到的每個(gè)區(qū)域的執(zhí)行計(jì)數(shù)。
15.權(quán)利要求13中的系統(tǒng),其中分析信息包括從用戶提供的提示得到的每個(gè)區(qū)域的執(zhí)行計(jì)數(shù)。
16.權(quán)利要求13中的系統(tǒng),其中的分析信息包括每個(gè)區(qū)域的依賴關(guān)系圖。
17.權(quán)利要求13中的系統(tǒng),其中的分析信息包括能被用來提高每個(gè)區(qū)域性能的一組操作矢量長(zhǎng)度。
18.權(quán)利要求13中的系統(tǒng),其中每個(gè)區(qū)域被一組指令集體系結(jié)構(gòu)配置進(jìn)行評(píng)價(jià),以確定在該配置所表示的指令、操作、寄存器文件以及狀態(tài)可以用于該區(qū)域的情況下所產(chǎn)生的性能改善。
19.權(quán)利要求18中的系統(tǒng),其中指令集體系結(jié)構(gòu)的產(chǎn)生是使用對(duì)每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷的估計(jì)作為指導(dǎo),所述硬件開銷包括實(shí)現(xiàn)配置所代表的指令、操作、寄存器文件以及狀態(tài)所必需的邏輯開銷;以及對(duì)每個(gè)區(qū)域的每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷和性能改善被用來確定一起描述所產(chǎn)生的指令集體系結(jié)構(gòu)的一組指令集體系結(jié)構(gòu)配置,從而就可以使軟件程序的性能盡可能提高,而所產(chǎn)生的指令集體系結(jié)構(gòu)的硬件開銷又不會(huì)超出開銷預(yù)算。
20.權(quán)利要求18中的系統(tǒng),其中指令集體系結(jié)構(gòu)的產(chǎn)生是使用對(duì)每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷的估計(jì)作為指導(dǎo),所述硬件開銷包括實(shí)現(xiàn)配置所代表的指令、操作、寄存器文件以及狀態(tài)所必需的邏輯開銷;以及對(duì)每個(gè)區(qū)域的每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷和性能改善被用來確定一起描述所產(chǎn)生的指令集體系結(jié)構(gòu)的一組指令集體系結(jié)構(gòu)配置,從而使得所產(chǎn)生的指令集體系結(jié)構(gòu)的硬件開銷盡可能小,而又能提供一個(gè)大于或等于性能目標(biāo)的性能改善。
21.權(quán)利要求18中的系統(tǒng),其中對(duì)每個(gè)區(qū)域的每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷和性能改善被用來確定一起描述所產(chǎn)生的指令集體系結(jié)構(gòu)的一組指令集體系結(jié)構(gòu)配置,從而使得所產(chǎn)生的指令集體系結(jié)構(gòu)的硬件開銷小于性能改善的一個(gè)預(yù)設(shè)的函數(shù)。
22.權(quán)利要求18中的系統(tǒng),其中一個(gè)特定指令集體系結(jié)構(gòu)配置對(duì)一個(gè)特定區(qū)域的性能改善是通過一個(gè)作用在該區(qū)域的修改的依賴關(guān)系圖上的指令調(diào)度算法來決定的。
23.權(quán)利要求22中的系統(tǒng),其中所述依賴關(guān)系圖被修改以將操作寬度小于一的操作進(jìn)行復(fù)制。
24.權(quán)利要求22中的系統(tǒng),其中所述依賴關(guān)系圖被修改以將一組操作用一個(gè)單個(gè)混合操作來代替。
25.權(quán)利要求18中的系統(tǒng),其中一個(gè)特定指令集體系結(jié)構(gòu)配置對(duì)一個(gè)特定區(qū)域的性能改善是通過使用資源界限來確定的。
26.權(quán)利要求2中的系統(tǒng),指令集體系結(jié)構(gòu)的產(chǎn)生是使用對(duì)每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷的估計(jì)作為指導(dǎo),所述硬件開銷包括實(shí)現(xiàn)配置所代表的指令、操作、寄存器文件以及狀態(tài)所必需的邏輯開銷。
27.權(quán)利要求26中的系統(tǒng),其中硬件開銷是通過將指令集體系結(jié)構(gòu)配置中存在的多個(gè)部分的硬件開銷相加來估計(jì)的。
28.權(quán)利要求26中的系統(tǒng),其中硬件開銷被減小以代表當(dāng)專用操作代替通用操作時(shí)的減少后的必需邏輯。
29.一種系統(tǒng),包括用于接收至少一個(gè)用高級(jí)語(yǔ)言編寫的軟件程序的裝置;以及用于自動(dòng)生成一個(gè)被優(yōu)化以執(zhí)行所述至少一個(gè)程序的指令集體系結(jié)構(gòu)的裝置,其中基于對(duì)所述至少一個(gè)程序的分析增加一個(gè)或多個(gè)新的擴(kuò)展指令到現(xiàn)存的指令集體系結(jié)構(gòu)的指令中,其中所述新的指令包含現(xiàn)存指令的矢量化版本。
30.一種系統(tǒng),包括用于接收至少一個(gè)用高級(jí)語(yǔ)言編寫的軟件程序的裝置;以及用于自動(dòng)生成一個(gè)被優(yōu)化以執(zhí)行所述至少一個(gè)程序的指令集體系結(jié)構(gòu)的裝置,其中基于對(duì)所述至少一個(gè)程序的分析增加一個(gè)或多個(gè)新的寄存器文件,其中所述新的寄存器文件是現(xiàn)存標(biāo)準(zhǔn)或現(xiàn)存的用戶定義的指令集體系結(jié)構(gòu)的矢量化版本。
31.一種系統(tǒng),包括用于接收至少一個(gè)用高級(jí)語(yǔ)言編寫的軟件程序的裝置;以及用于自動(dòng)生成一個(gè)被優(yōu)化以執(zhí)行所述至少一個(gè)程序的指令集體系結(jié)構(gòu)的裝置,其中基于對(duì)所述至少一個(gè)程序的分析增加一個(gè)或多個(gè)新的擴(kuò)展指令到現(xiàn)存的指令集體系結(jié)構(gòu)的指令中,其中所述新的指令包含現(xiàn)存標(biāo)準(zhǔn)或現(xiàn)存指令體系結(jié)構(gòu)中用戶定義的指令的專用版本。
32.一種系統(tǒng),包括用于接收至少一個(gè)用高級(jí)語(yǔ)言編寫的軟件程序的裝置;以及用于自動(dòng)生成一個(gè)被優(yōu)化以執(zhí)行所述至少一個(gè)程序的指令集體系結(jié)構(gòu)的裝置,其中基于對(duì)所述至少一個(gè)程序的分析增加一個(gè)或多個(gè)新的擴(kuò)展指令到現(xiàn)存的指令集體系結(jié)構(gòu)的指令中,其中一個(gè)單個(gè)新的指令包含現(xiàn)存標(biāo)準(zhǔn)或現(xiàn)存指令體系結(jié)構(gòu)中用戶定義的指令的混合、專用和矢量化組合之一。
權(quán)利要求
1.一個(gè)系統(tǒng),用來取得至少一個(gè)用高級(jí)語(yǔ)言編寫的軟件程序,以及產(chǎn)生一個(gè)被優(yōu)化來執(zhí)行該程序的指令集體系結(jié)構(gòu)。
2.權(quán)利要求1中的系統(tǒng),其中指令集體系結(jié)構(gòu)被表示成一組配置,其中包括一個(gè)或多個(gè)擴(kuò)展指令到現(xiàn)存標(biāo)準(zhǔn)或者現(xiàn)存用戶定義指令集體系結(jié)構(gòu)中的指令;以及所述擴(kuò)展指令操作在預(yù)先存在的或者自動(dòng)產(chǎn)生的狀態(tài)和寄存器文件上。
3.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括現(xiàn)存指令的矢量化版本。
4.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括現(xiàn)存指令的VLIW組合。
5.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括現(xiàn)存指令的混合組合。
6.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括現(xiàn)存指令的專用版本。
7.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展包括高級(jí)語(yǔ)言所支持的操作的矢量版本。
8.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括高級(jí)語(yǔ)言所支持的操作的VLIW組合。
9.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括高級(jí)語(yǔ)言所支持的操作的混合組合。
10.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括高級(jí)語(yǔ)言所支持的操作的專用版本。
11.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括現(xiàn)存指令的矢量化、VLIW、混合以及專用版本中的至少兩個(gè)。
12.權(quán)利要求2中的系統(tǒng),其中的擴(kuò)展指令包括高級(jí)語(yǔ)言所支持的操作的矢量化、VLIW、混合以及專用版本中的至少兩個(gè)。
13.權(quán)利要求2中的系統(tǒng),其中一個(gè)或多個(gè)擴(kuò)展指令是使用擴(kuò)展語(yǔ)言描述的其它用戶定義指令的矢量化、VLIW、混合或者專用版本。
14.權(quán)利要求2中的系統(tǒng),其中指令集體系結(jié)構(gòu)的產(chǎn)生是受從至少一個(gè)軟件程序中所搜集的分析信息引導(dǎo)的;以及對(duì)于能從所產(chǎn)生的指令集算法中得到性能改善的每個(gè)代碼區(qū)域都進(jìn)行分析信息的搜集。
15.權(quán)利要求14中的系統(tǒng),其中分析信息包括從實(shí)際或估計(jì)的分布圖信息來得到的每個(gè)區(qū)域的執(zhí)行計(jì)數(shù)。
16.權(quán)利要求14中的系統(tǒng),其中分析信息包括從用戶提供的提示得到的每個(gè)區(qū)域的執(zhí)行計(jì)數(shù)。
17.權(quán)利要求14中的系統(tǒng),其中的分析信息包括每個(gè)區(qū)域的依賴關(guān)系圖。
18.權(quán)利要求14中的系統(tǒng),其中的分析信息包括能被用來提高每個(gè)區(qū)域性能的一組操作矢量長(zhǎng)度。
19.權(quán)利要求14中的系統(tǒng),其中每個(gè)區(qū)域被一組指令集體系結(jié)構(gòu)配置進(jìn)行評(píng)價(jià),以確定在該配置所表示的指令、操作、寄存器文件以及狀態(tài)可以用于該區(qū)域的情況下所產(chǎn)生的性能改善。
20.權(quán)利要求19中的系統(tǒng),其中指令集體系結(jié)構(gòu)的產(chǎn)生是受對(duì)每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷的估計(jì)所引導(dǎo)的,所述硬件開銷包括實(shí)現(xiàn)配置所代表的指令、操作、寄存器文件以及狀態(tài)所必需的邏輯開銷;以及對(duì)每個(gè)區(qū)域的每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷和性能改善被用來確定一起描述所產(chǎn)生的指令集體系結(jié)構(gòu)的一組指令集體系結(jié)構(gòu)配置,從而就可以使軟件程序的性能盡可能提高,而所產(chǎn)生的指令集體系結(jié)構(gòu)的硬件開銷又不會(huì)超出開銷預(yù)算。
21.權(quán)利要求19中的系統(tǒng),其中指令集體系結(jié)構(gòu)的產(chǎn)生是受對(duì)每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷的估計(jì)所引導(dǎo)的,所述硬件開銷包括實(shí)現(xiàn)配置所代表的指令、操作、寄存器文件以及狀態(tài)所必需的邏輯開銷;以及對(duì)每個(gè)區(qū)域的每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷和性能改善被用來確定一起描述所產(chǎn)生的指令集體系結(jié)構(gòu)的一組指令集體系結(jié)構(gòu)配置,從而使得所產(chǎn)生的指令集體系結(jié)構(gòu)的硬件開銷盡可能小,而又能提供一個(gè)大于或等于性能目標(biāo)的性能改善。
22.權(quán)利要求19中的系統(tǒng),其中對(duì)每個(gè)區(qū)域的每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷和性能改善被用來確定一起描述所產(chǎn)生的指令集體系結(jié)構(gòu)的一組指令集體系結(jié)構(gòu)配置,從而使得所產(chǎn)生的指令集體系結(jié)構(gòu)的硬件開銷小于性能改善的一個(gè)預(yù)設(shè)的函數(shù)。
23.權(quán)利要求19中的系統(tǒng),其中一個(gè)特定指令集體系結(jié)構(gòu)配置對(duì)一個(gè)特定區(qū)域的性能改善是通過一個(gè)作用在該區(qū)域的修改的依賴關(guān)系圖上的指令調(diào)度算法來決定的。
24.權(quán)利要求23中的系統(tǒng),其中所述依賴關(guān)系圖被修改以將操作寬度小于一的操作進(jìn)行復(fù)制。
25.權(quán)利要求23中的系統(tǒng),其中所述依賴關(guān)系圖被修改以將一組操作用一個(gè)單個(gè)混合操作來代替。
26.權(quán)利要求19中的系統(tǒng),其中一個(gè)特定指令集體系結(jié)構(gòu)配置對(duì)一個(gè)特定區(qū)域的性能改善是通過使用資源界限來確定的。
27.權(quán)利要求2中的系統(tǒng),指令集體系結(jié)構(gòu)的產(chǎn)生是受對(duì)每個(gè)指令集體系結(jié)構(gòu)配置的硬件開銷的估計(jì)所引導(dǎo)的,所述硬件開銷包括實(shí)現(xiàn)配置所代表的指令、操作、寄存器文件以及狀態(tài)所必需的邏輯開銷。
28.權(quán)利要求27中的系統(tǒng),其中硬件開銷是通過將指令集體系結(jié)構(gòu)配置中存在的多個(gè)部分的硬件開銷相加來估計(jì)的。
29.權(quán)利要求27中的系統(tǒng),其中硬件開銷被減小以代表當(dāng)專用操作代替通用操作時(shí)的減少后的必需邏輯。
30.一個(gè)系統(tǒng),用來取得至少一個(gè)用高級(jí)語(yǔ)言編寫的軟件程序,以及通過在分析了所述至少一個(gè)程序的基礎(chǔ)上增加一個(gè)或多個(gè)新指令來產(chǎn)生一個(gè)被優(yōu)化以執(zhí)行所述至少一個(gè)程序的指令集體系結(jié)構(gòu)。
31.一個(gè)系統(tǒng),用來取得至少一個(gè)用高級(jí)語(yǔ)言編寫的軟件程序,以及通過在分析了所述至少一個(gè)程序的基礎(chǔ)上增加一個(gè)或多個(gè)新寄存器文件來產(chǎn)生一個(gè)被優(yōu)化以執(zhí)行所述至少一個(gè)程序的指令集體系結(jié)構(gòu)。
全文摘要
一個(gè)自動(dòng)建立指令集體系結(jié)構(gòu)(ISA)的數(shù)字計(jì)算機(jī)系統(tǒng),它潛在的利用了VLIW指令、矢量操作、混合操作以及專用操作,從而在保持硬件開銷低于設(shè)計(jì)者預(yù)設(shè)極限的條件下提高一組應(yīng)用的性能,或者在給定所需的性能水平的條件下將硬件開銷最小化。
文檔編號(hào)G06F17/50GK1608247SQ02820604
公開日2005年4月20日 申請(qǐng)日期2002年9月10日 優(yōu)先權(quán)日2001年10月16日
發(fā)明者戴維·威廉·古德溫, 德羅·梅丹, 陳定凱, 達(dá)里恩·斯塔米諾夫·匹特科夫, 史蒂文·永強(qiáng)·張, 屠鵬, 克里斯托弗·羅恩 申請(qǐng)人:坦斯利卡公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1