欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于生成指令精簡方案集的方法、用于根據(jù)所生成的集來精簡程序的方法,以及能夠執(zhí)行...的制作方法

文檔序號:6351048閱讀:122來源:國知局
專利名稱:用于生成指令精簡方案集的方法、用于根據(jù)所生成的集來精簡程序的方法,以及能夠執(zhí)行 ...的制作方法
技術領域
本發(fā)明涉及用于生成指令精簡方案集的方法。本發(fā)明還涉及用于根據(jù)所生成的指令精簡方案集來精簡程序的方法。本發(fā)明還涉及被適當編程以實現(xiàn)這些方法的裝置。本發(fā)明還涉及包括用于促使裝置實現(xiàn)這些方法中的一種或多種方法的程序的記錄載體。、本發(fā)明還涉及能夠執(zhí)行被如上精簡的程序的可編程處理器。
背景技術
US2002042909描述了一種用于生成在處理架構中使用的程序指令序列的編譯方法,所述處理架構具有用于執(zhí)行來自相應指令集的指令的架構資源。公知的編譯方法輸入包括多個源代碼指令語句的源文件,所述源代碼指令語句包含至少第一種類的指令語句和第二種類的指令語句。該方法選擇至少第一指令集和第二指令集。第二指令集是被設計成僅支持由第一指令集所支持的架構資源的子集的精簡指令集。通過使用具有不同大小的這至少兩個指令集,編譯器能夠降低被處理的平均代碼長度,因為精簡碼中需要更少的比特來對操作和寄存器進行編碼。在該公知的方法中,編譯器檢測源代碼的類型是時間關鍵代碼還是管理代碼。被分類為管理代碼的代碼由第一精簡指令集表示,而時間關鍵代碼由第二指令集表示。通過使用具有不同大小的這至少兩個指令集,編譯器能夠降低被處理的平均代碼長度,因為精簡碼中需要更少的比特來對操作和寄存器進行編碼。該公知編譯器的缺點在于第一和第二指令集的分配僅在時間關鍵代碼和管理代碼能夠被辨別的情況下才是可能的。本發(fā)明的目的是提供一種能夠也在更通用的環(huán)境中生成一個或多個指令集的方法。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提供一種用于生成針對要由可編程處理器處理的指令的子集的各個指令精簡方案的方法,其包括以下步驟a)接收代表要在可編程處理器上執(zhí)行的軟件的至少一個輸入代碼樣本,所述輸入代碼包括用于定義第一指令集的多個指令,b)將被移除指令集初始化為空,c)確定第一指令集的最精簡表示,d)將最精簡表示的大小與閾值進行比較,
e)如果所述大小大于閾值則執(zhí)行步驟el至e3,el)確定第一指令集的哪個指令具有最高的編碼成本,e2)從第一指令集中移除具有最高編碼成本的指令,以及e3)將所述指令添加到被移除指令集中,f)重復步驟b-f,其中第一指令集由被移除指令集形成。與公知方法相反的是,根據(jù)所述第一方面的該方法是通常可應用的。該方法有效地將具有大的互對應性的指令分組到公共群中。選擇具有高編碼成本的偏離指令(deviating instruction)來形成分離的群。該過程可以重復。 對于一些指令,最精簡表示可能是原始(未精簡)表示。這里使用的原始表示也將被稱為“全視圖”。指令精簡方案的數(shù)量以及針對每個指令精簡方案的需求壓縮可以是固定的??商鎿Q地,可以通過計算考慮多個指令中不同指令的數(shù)量以及用于指示最小需求壓縮因子的閾值來自動地確定指令精簡方案的數(shù)量和每個指令精簡方案的壓縮。在一個實施例中,請求用戶指定指令精簡方案的數(shù)量以及每個指令精簡方案的壓縮,以便用戶能夠控制精簡過程并試驗哪個規(guī)范提供最好的結(jié)果。在所述方法的實施例中,所述指令包括被單獨精簡的多個指令字段。通過精簡單獨的指令字段,與將指令作為整體進行精簡的情況相比能夠獲得更高的壓縮。如果兩個指令在特定的指令字段中具有相同的值但以其他方式不同,則那個指令字段的值可以由公共代碼精簡,但是將指令作為整體的精簡將需要不同的代碼。關于指令字段的知識優(yōu)選從處理器描述文件中獲得。精簡方案可以對應于可編程處理器的某個視圖。處理器視圖被定義為硅蜂窩(silicon hive)編譯器的目標,在該編譯器中僅處理器資源的子集才是可用的。關于處理器資源的知識從處理器描述文件中獲得。在所述實施例的變形中,被單獨精簡的指令字段至少包括操作碼、用于指示寫端口索引的字段以及用于指示讀端口索引的字段。精簡這些字段產(chǎn)生高的代碼大小降低。另夕卜,下面的字段也可以被單獨精簡用于指示結(jié)果端口(總線)的字段、用于指示寫端口選擇的字段以及包括立即值的字段。在一個實施例中,針對不同子集的指令精簡方案具有互不相同的碼字寬度,其中這些子集中的至少其中一個子集具有最小碼字寬度。在子集被允許具有互不相同的大小的情況中,一些子集可以通過使用更小的碼字進行精簡,從而節(jié)省編碼空間。一些子集可以具有互不相同的精簡方案,但是可以由具有互相相同大小的碼字進行編碼。在一個實施例中,針對每個子集的精簡方案的碼字的大小是大于或等于I的整數(shù)乘以最小碼字寬度。通過該措施簡化了指令的讀取。部分指令可以不被精簡。這些指令的長度可以等于從其中獲取被精簡或未被精簡的指令的指令存儲器的寬度,但是可以可替換地更小。優(yōu)選地,指令不大于指令存儲器的寬度以保持短的指令獲取時間。在一個實施例中,互不相同的子集以互不相同的方式進行精簡。例如,根據(jù)第一視圖而被精簡的指令可以使用采用編譯時間可編程寄存器的查找表解精簡(擴展),而根據(jù)第二視圖而被精簡的指令可以使用采用硬連線查找表的查找表。如果子集中的至少一個子集被精簡為可變長度代碼,則是有利的。通過將可變長度代碼(VLC)僅應用于指令的子集,一方面,優(yōu)點在于能夠在那個子集中獲得高的指令壓縮因子,而另一方面,能夠保持適中的代碼數(shù)量,從而該子集中的代碼能夠被容易地解精簡(被擴展)。精簡方案的唯一約束是同一視圖中的精簡后指令具有小于或等于特定最大長度的大小。因此,長度小于或等于“視圖”長度的VLC精簡后指令將適合于該視圖。根據(jù)本發(fā)明的第二方面,根據(jù)第一方面的方法進一步包括以下步驟-接收包括多個指令的程序,-對于每個指令,確定如步驟a-f 所確定的相應的指令精簡方案,-根據(jù)所述指令精簡方案來壓縮指令,-提供精簡后指令。

以此方式,被精簡的程序可以與用于定義指令精簡方案集的程序相同。精簡后指令可以存儲在特定地址范圍中,從而能夠根據(jù)指令地址而清楚地知道使用什么類型的精簡方案。在一個實施例中,根據(jù)第二方面的方法進一步包括將精簡后指令與用于指示使用的精簡方案類型的至少一個指示符一起提供的步驟。這使得能夠?qū)⒕喓笾噶畲鎯υ谂c用于促成處理的原始程序相同的序列中。另外,精簡后指令不需要被對準。在一個實施例中,精簡后指令存儲在包括多個分段的字中,而且每個分段至少包括用于指示所述分段是否是精簡后指令的第一分段的指示符。在另一實施例中,精簡后指令存儲在包括多個分段的字中,其中每個精簡后指令包括位于精簡后指令內(nèi)的預定位置處的指示符,所述指示符用于指示下一精簡后指令的視圖。其優(yōu)點在于,即使根據(jù)不同視圖的指令具有不同的大小,用于對精簡后指令進行解精簡的指令擴展器仍然能夠準確和及時地預獲取精簡后指令的下一碼字。根據(jù)本發(fā)明的第三方面,提供一種被適當編程以執(zhí)行根據(jù)第一方面或第二方面的方法的裝置。根據(jù)本發(fā)明的第四方面,提供一種包括程序的記錄載體,所述程序促使裝置執(zhí)行根據(jù)第一方面或第二方面的方法。根據(jù)本發(fā)明的第五方面,提供一種可編程處理器,其包括-程序存儲器,該程序存儲器包括被存儲為精簡后指令數(shù)據(jù)的指令序列,精簡后指令數(shù)據(jù)至少包括根據(jù)第一精簡方案而被精簡為具有N個存儲器字分段的第一碼字的第一指令,以及根據(jù)第二精簡方案而被精簡為具有M個存儲器字分段的第二碼字的第二指令,-指令解碼器,-至少一個寄存器文件,-稱合到所述寄存器文件的至少一個發(fā)布槽(issueslot),-指令擴展器,包括-精簡方案識別器,用于識別針對從程序存儲器中獲取的精簡后指令數(shù)據(jù)的指令精簡方案,-輸入,用于接收程序計數(shù)器,-存儲設備,用于臨時存儲至少一段程序存儲器字,-選擇設備,用于從程序存儲器和存儲設備中選擇精簡后指令數(shù)據(jù),-指令擴展單元,用于將所選擇的精簡后指令擴展成大小為K的擴展后指令,-控制設備,用于響應于程序計數(shù)器來生成程序存儲器的地址,并用于控制選擇設備,其中K、N、M是大于或等于I的整數(shù),整數(shù)N、M不大于K,并且其中N、M中的至少一者小于K。本發(fā)明的第一至第五方面是可以進一步包括設計和測試設備的環(huán)境的一部分。


下面將更詳細地描述本發(fā)明的這些和其他方面。其中
圖I示出了傳統(tǒng)可編程處理器,圖2示出了另一傳統(tǒng)可編程處理器的一部分,圖3示意性地示出了圖2中部分示出的處理器的程序存儲器的內(nèi)容,圖4示出了用于確定指令精簡方案集的方法,圖5示出了用于生成指令精簡方案集的工具,圖6示出了用于精簡程序的工具,圖7示意性地示出了根據(jù)本發(fā)明的可編程處理器的第一實施例,圖8更詳細地示出了圖7的一部分,圖9更詳細地示出了圖8的一部分,圖10更詳細地示出了圖9的一部分,圖11示出了用于在圖7的處理器中處理指令的方法,圖12示意性地示出了根據(jù)本發(fā)明的可編程處理器的第二實施例,圖13示出了用于在圖12的處理器中處理指令的方法,圖14示意性地示出了根據(jù)本發(fā)明的可編程處理器的第三實施例,圖15示意性地示出了根據(jù)本發(fā)明的用于生成可編程處理器的硬件描述的工具。
具體實施例方式在下面的詳細描述中,闡述了多個具體細節(jié)以提供對本發(fā)明的透徹理解。然而,本領域技術人員將理解,可以在沒有這些具體細節(jié)的情況下實踐本發(fā)明。在其他實例中,沒有詳細描述公知的方法、過程和部件,以便不模糊本發(fā)明的各個方面。下文中,將參照示出了本發(fā)明的實施例的附圖來更充分地描述本發(fā)明。然而,本發(fā)明可以被體現(xiàn)為許多不同的形式,并且不應當被解釋為局限于本文闡述的實施例。相反地,提供這些實施例,以使得本公開將透徹和完整以及將向本領域技術人員充分地傳達本發(fā)明的范圍。應當理解,當提及一個元件“連接”或“耦合”到另一元件時,該元件能夠直接連接或耦合到其他元件,或者可以存在中間元件。相對地,當提及一個元件“直接連接到”或“直接耦合到”另一元件時,不存在中間元件。通篇中,類似的標號指代類似的元件。如本文使用的,術語“和/或”包括被關聯(lián)列出的項中的一個或多個的項的任意和所有組合。應當理解,雖然術語“第一”、“第二”、“第三”等在本文中可以用于描述各種元件、部件和/或部分,但是這些元件、部件和/或部分不應當受到這些術語的限制。這些術語僅用于將一個元件、部件或部分與另一元件、部件和/或部分相區(qū)分。因此,下面討論的第一元件、部件和/或部分能夠用第二元件、部件和/或部分來表述,但是并不背離本發(fā)明的教導。
除非另有定義,否則本文使用的所有術語(包括技術和科技術語)都具有與本發(fā)明所屬技術領域中的普通技術人員所通常理解的相同的意義。還應當理解,諸如在普通使用的字典中所定義的那些術語之類的術語應當被解釋為具有與它們在相關領域的上下文中所具有的意義相一致的意義,并且不應當以理想或過于正式的意義進行解釋,除非在本文中明確地如此定義。本文提到的所有出版物、專利申請、專利和其他參考都通過引用而被全部合并到本文。萬一沖突,包括定義的本說明書將進行控制。另外,材料、方法和示例僅是說明性的,而且并非意欲進行限制。圖I示意性地示出了可編程處理器。在圖I所示的示例中,可編程處理器是VLIW處理器。VLIW處理器并行地處理被分組成VLIW指令字的多個指令字。這些通常由軟件開發(fā)工具來產(chǎn)生。圖I所示的VLIW處理器包括程序存儲器10和耦合到程序存儲器的指令解碼器20。程序存儲器10包含VLIW指令字。VLIW處理器還包括經(jīng)由第一選擇元件30a,. . .,30m耦合到多個總線70的多個寄存器文件40a,40n。寄存器文件具有一個或多個輸入端口和一個或多個輸出端口。寄存器端口由數(shù)據(jù)輸入或輸出和地址輸入構成。清楚起見,圖I僅示出了單個發(fā)布槽50。實際上,VLIW處理器將具有多個發(fā)布槽。 多個發(fā)布槽中的每個發(fā)布槽處理來自VLIW指令字的特定的指令字。發(fā)布槽包括能夠?qū)斎霐?shù)據(jù)執(zhí)行有限操作集的一個或多個功能單元。發(fā)布槽50具有指令解碼器51和多個功能單元FU 53a,...,53k,例如乘法器、加法器、移位器等。發(fā)布槽50還具有第二選擇元件52a,52k,用于選擇來自各種源(例如寄存器文件)的輸入數(shù)據(jù)和來自解碼器20的用于提供立即值的輸出。功能單元53a,53k和第二選擇元件52a,. . .,52k的操作由操作解碼器51控制。處理器還包括多個第三選擇元件60a,. . .,60k,用于選擇性地將功能單元53a, ,53k耦合到總線70。指令通常包括多個指令字段。每個字段控制可編程處理器的數(shù)據(jù)路徑的具體項。在該特別示例中,指令可以包括下面的用于操作碼、結(jié)果端口選擇的選擇(buS_SeleCt)、寫端口的選擇(wp_select)、寫端口的索引的規(guī)范(wp_index)、讀端口的索引的選擇(rp_index)和立即的規(guī)范等6種指令字段。通常,每個發(fā)布槽具有一個操作碼指令字段。該字段選擇要由發(fā)布槽執(zhí)行哪個操作。該操作由發(fā)布槽的其中一個功能單元執(zhí)行。操作碼被解碼成功能單元選擇信號和操作類型(optype),以激活特定的FU和那個FU的特定操作。在一些情況中,操作碼可以不存在,例如如果發(fā)布槽專用于處理僅一個操作,例如加載立即值。具有不止一個發(fā)布槽輸出的每個總線具有單獨的用于指示哪個發(fā)布槽輸出被連接到總線的bus_select字段。每個寄存器文件輸入端口連接到一個或多個總線。如果存在連接到一個寫端口的不止一個總線,則多路復用器選擇到寄存器文件的輸入端口的正確的總線。寫端口選擇(wp_Sel)指令字段包含用于該多路復用器的選擇值。專門的代碼wp_Sel= “11.. 11”用于指示在寫端口上不應當發(fā)生寫動作。該指令字段包含被寫入寄存器文件的寄存器地址。每個寄存器寫端口都具有單獨的 wp_index。該指令字段包含從寄存器文件讀取的寄存器地址。每個寄存器讀端口都具有單獨的 rp_index。
立即指令字段包含能夠被用作發(fā)布槽中的其中一個功能單元的輸入的值。并非根據(jù)本發(fā)明的、被稱為立即覆蓋(immediate overlaying)的代碼精簡方式依賴于這樣的事實,即發(fā)布槽中的功能單元的輸入可以使用寄存器文件輸出或立即字段作為輸入。optype確定輸入是什么,而且對于每個指令而言這可以不同。如果操作碼指示寄存器文件輸出被用于操作,則發(fā)布槽的立即字段是冗余的。因此,如果立即值被選擇作為輸入,則針對連接到發(fā)布槽的輸入的寄存器輸出端口的寄存器索引字段是冗余的。由于該立即字段和該寄存器索引字段從來不在同一指令中使用,所以兩個字段可以組合。立即和寄存器索引字段(的一部分)的組合將被稱為立即覆蓋。代碼精簡的另一方式利用不同視圖的使用。處理器視圖被定義為編譯器的目標,
在該編譯器中僅處理器資源的子集才是可用的。子集可通過以下約束來定義-寄存器文件屬性輸入/輸出端口的數(shù)量、地址范圍-功能單元屬性立即范圍、操作碼的數(shù)量-總線的數(shù)量-完整的發(fā)布槽、功能單元、寄存器文件,...等。就代碼精簡而言,如果用于控制子集的指令比特的數(shù)量明顯小于用于完整處理器的指令比特的數(shù)量,則處理器視圖是有用的。處理器能夠具有不止一個視圖。用于支持視圖機制的硬件如圖2所示。在第一視圖(視圖0)中,所有的處理器資源都是可用的。程序存儲器字包括單個指令。在第二視圖(視圖I)中,每個程序存儲器字包括2個精簡后指令。在第三視圖(視圖2)中,每個程序存儲器字包括4個精簡后指令,如圖3所示意性示出的那樣。注意,全視圖并非必須等于程序存儲器寬度。有時,選擇更寬的程序存儲器以使得更小視圖能夠更好的壓縮是有意義的。例如,假設處理器具有60比特的全寬,而且最小視圖具有16比特的寬度。通過采取60的程序存儲器寬度,最小視圖具有60/16=3. 75的壓縮。這必須被四舍五入成2的一次冪,這導致壓縮因子2。如果程序存儲器的寬度等于64,則壓縮變?yōu)橐蜃?。在圖3中,針對視圖0的指令以常規(guī)方式放置,從而從地址0開始。對于視圖0指令,PC等于程序存儲器地址。針對視圖I的指令從程序存儲器地址OxlB開始。針對視圖I的第一指令的程序計數(shù)器由具有值0的一個LSB (表明程序存儲器字OxlB的下半?yún)^(qū)包含指令)、具有值“01”的兩個MSB (表明該指令是視圖I指令)以及接著等于程序存儲器地址OxlB的中間比特形成。對于PC而言,結(jié)果是0x1036。隨后指令的PC值能夠通過遞增該PC而找到。從地址0x2A開始,針對視圖2的指令被布置。針對第一視圖2指令的PC值由具有值“00”的2個Isb (用于從所述字中的4個精簡后指令中選出存儲器地址為“0x2A”的第一個精簡后指令)和具有值2的2個MSB (表示視圖號)形成。結(jié)果是0x2150。如圖2所示,用于支持視圖機制的硬件包括第一精簡后指令選擇器22和第二精簡后指令選擇器23、第一指令解精簡單元24和第二指令解精簡單元25和全指令選擇器26。當運行程序時,處理器指示將用它的程序計數(shù)器(PC) 12來執(zhí)行指令。程序計數(shù)器12的輸出具有第一部分12a、第二部分12b和第三部分12c,其中第一部分12a用于控制第一指令解精簡單元24和第二指令解精簡單元25,第二部分12b用于處理所需的程序存儲器字,以及第三部分12c用于控制全指令選擇器26。部分12c指示視圖選擇。在全視圖模式中,PC等于程序存儲器地址。針對全視圖(視圖0)的程序存儲器字確切地包含一個全指令。全指令選擇器26僅將該指令傳遞給指令解碼器20。在“精簡后視圖”模式中,PC不能直接被映射到程序存儲器地址。在那種情況中,PC的部分12a指示程序存儲器字中的哪個指令需要被選擇。如果由部分12b中的地址所指示的程序存儲器字被讀取,則由被程序計數(shù)器的部分12a所控制的第一精簡后指令選擇器22和第二精簡后指令選擇器23所選擇的精簡后指令在指令解精簡單元24和25中被提取。指令解精簡單元24、25將精簡指令轉(zhuǎn)換成全指令。對于每個被實施的精簡方案而言,對應于處理器的特定視圖來實施指令解精簡器
24、25。解精簡器24、25的輸出是全指令選擇器26的輸入。PC的部分12c (view_select)確定全指令選擇器26的哪些輸入被選擇作為指令選擇器26的輸出。
在參照圖2和圖3所描述的代碼精簡方法中,編程器定義需要在哪個視圖中運行哪個代碼?;緲嫾K的所有指令應當以一個視圖為目標。視圖的切換僅能夠通過跳轉(zhuǎn)操作(jump operation)的方式來實現(xiàn)。這僅通過跳轉(zhuǎn)指令來實現(xiàn)。在指令選擇和調(diào)度之后,匯編器定義精簡后指令并確定多個精簡后指令如何被放置在一個程序存儲器字中。鏈接器定義每個被構建的字的程序存儲器地址。通常,針對一個視圖的指令被分組在一起。一個組的第一指令總是從程序存儲器字的比特0開始。同一基本構件塊中的隨后指令隨后被放置在程序存儲器字中,如果乘以壓縮因子的精簡后指令大小小于程序存儲器寬度,則在它們之間留下偽比特(dummy bit)。如果字滿了,則在下一程序存儲器字的比特零處放置下一指令。圖4示意性地示出了根據(jù)本發(fā)明的用于生成針對要由可編程處理器處理的指令子集的各個指令精簡方案的方法。該方法包括用于接收代表將在可編程處理器上執(zhí)行的軟件的至少一個輸入代碼樣本的第一步驟SI,所述輸入代碼包括用于定義第一指令集的多個指令(SI)。在所示的實施例中,該方法包括第二步驟S2,其中要求用戶指定指令精簡方案的數(shù)量以及針對每個指令精簡方案的最小需求壓縮。這樣,用戶能夠控制精簡過程,并試驗哪個規(guī)范提供最好的結(jié)果。步驟S2不是關鍵的??商鎿Q地,指令精簡方案的數(shù)量以及每個指令精簡方案的需求壓縮可以是固定的。在再一實施例中,可以通過計算考慮多個指令中不同指令的數(shù)量以及閾值來自動地確定指令精簡方案的數(shù)量和每個指令精簡方案的壓縮。在第三步驟(S3)中,定義被移除指令集,而且該被移除指令集被初始化為空集。之后在步驟S4中,確定弟一指令集的最精簡表不。在步驟S5中,將所述最精簡表示的大小與閾值進行比較。依賴于該比較的結(jié)果,在步驟S5之后執(zhí)行步驟S6至S8或者執(zhí)行步驟S9至S10。如果最精簡表示的大小大于所述閾值,則執(zhí)行步驟S6至S8,否則執(zhí)行步驟S9至S10。在步驟S6中,確定第一指令集的哪個指令具有最高的編碼成本。隨后在步驟S7中,從第一指令集中移除該指令并且在步驟S8中將其添加到移除指令集中。之后程序流轉(zhuǎn)到步驟S4。在確定最精簡表示的大小不大于所述閾值的情況中,第一指令集被重新定義為移除指令集(步驟S9),而且移除指令集被重新定義為空(步驟S10)。
根據(jù)本發(fā)明第一方面的該方法可以在如圖5所示的視圖生成工具VG中使用。如圖所示,視圖生成工具從例如ELF (執(zhí)行語言格式)的視圖無關可再定位對象文件115開始。視圖無關可再定位對象文件115能夠從必須由處理器執(zhí)行的典型軟件應用程序中獲得??稍俣ㄎ粚ο笪募?15在壓縮之后理想地確切容納在所選程序存儲器中。對象文件115是鏈接步驟的結(jié)果,其中在鏈接步驟中程序所需的所有模塊被合并。文件115包含針對跳轉(zhuǎn)目標和數(shù)據(jù)對象的符號。視圖生成工具VG應當將符號作為單獨值進行處理。應當假設兩個不同的符號總是指代不同的值,雖然這或許是不對的。在一個實施例中,視圖生成工具VG能夠執(zhí)行預再定位,以便識別具有相同值的符號。潛在地,這降低了表中的條目的數(shù)量,從而改善了壓縮因子。在所示的實施例中,另外地,還提供了處理器描述文件105。處理器描述文件105便于降低用于搜索最佳指令精簡方案集的搜索空間,因為其提供了關于能夠被單獨精簡的 指令如何被劃分成指令字段的信息。處理器的處理器描述文件105由第一架構參數(shù)提取(APEX)模塊120轉(zhuǎn)換成時間靜止指令格式(TSIF)數(shù)據(jù)結(jié)構125。APEX模塊120提供用于提取在處理器的硬件描述中定義的參數(shù)的應用編程接口(API)。當使用硬件構件塊庫來構建處理器的硬件時使用該API。TSIF數(shù)據(jù)結(jié)構125和視圖無關可再定位對象文件115被提供給視圖生成模塊130,這將在下面更詳細描述。視圖生成模塊130生成視圖定義文件135。視圖生成模塊130的實施例的典型實現(xiàn)方式在下面的偽代碼中示出。在該實施例中,唯一地根據(jù)可再定位對象文件115來確定指令精簡方案集。
權利要求
1.一種用于生成針對要由可編程處理器處理的指令的子集的各個指令精簡方案的方法,包括以下步驟 a)接收代表要在所述可編程處理器上執(zhí)行的軟件的至少一個輸入代碼樣本,所述輸入代碼包括用于定義第一指令集的多個指令(SI ), b)將被移除指令集初始化為空(S3), c)確定所述第一指令集的最精簡表示(S4), d)將所述最精簡表示的大小與閾值進行比較(S5), e)如果所述大小大于所述閾值則執(zhí)行步驟el至e3, el)確定所述第一指令集的哪個指令具有最高的編碼成本(S6), e2)從所述第一指令集中移除具有所述最高編碼成本的所述指令(S7) e3)將所述指令添加到所述被移除指令集中(S8), f)重復步驟b-f,其中所述第一指令集由所述被移除指令集形成(S9,S10)。
2.根據(jù)權利要求I所述的方法,包括請求多個指令精簡方案和每個指令精簡方案的壓縮的步驟(S2)。
3.根據(jù)權利要求I所述的方法,包括對多個指令精簡方案進行迭代并確定為每個指令精簡方案所獲得的壓縮量的步驟。
4.根據(jù)權利要求1-2中的其中一個權利要求所述的方法,其中,所述指令包括被單獨精< >簡的多個指令字段。
5.根據(jù)權利要求4所述的方法,其中,被單獨精簡的所述指令字段至少包括操作碼、指示寫端口索引的字段和指示讀端口索引的字段。
6.根據(jù)前述任一權利要求所述的方法,其中,針對不同子集的所述指令精簡方案具有 互不相同的碼字寬度,其中所述子集中的至少其中一個子集具有最小碼字寬度。
7.根據(jù)權利要求6所述的方法,其中,針對每個子集的所述精簡方案的碼字的大小是整數(shù)乘以最小碼字寬度,所述整數(shù)大于或等于I。
8.根據(jù)前述任一權利要求所述的方法,其中,互不相同的子集以互不相同的方式進行精簡。
9.根據(jù)前述任一權利要求所述的方法,其中,所述子集中的至少其中一個子集被精簡為可變長度代碼。
10.根據(jù)前述任一權利要求所述的方法,還包括以下步驟 -接收包括多個指令的程序, -對于每個指令,確定如步驟a-f所確定的相應的指令精簡, -根據(jù)所述指令精簡來壓縮所述指令, -提供精簡后指令。
11.根據(jù)權利要求10所述的方法,包括將所述精簡后指令與用于指示所使用的精簡類型的至少一個指示符一起提供的步驟。
12.根據(jù)權利要求10或11所述的方法,其中,所述精簡后指令存儲在包括多個分段的字中,而且其中每個分段至少包括用于指示所述分段是否是精簡后指令的第一分段的指示符。
13.根據(jù)權利要求10或11所述的方法,其中,所述精簡后指令存儲在包括多個分段的字中,其中每個精簡后指令包括位于所述精簡后指令內(nèi)的預定位置處的指示符,所述指示符指示用于下一精簡后指令的精簡類型。
14.根據(jù)權利要求I所述的方法,還包括以下步驟 -接收可編程處理器的規(guī)范, -使用所述規(guī)范和所生成的各個指令精簡方案來確定針對指令解精簡器的硬件規(guī)范。
15.被適當編程以實現(xiàn)根據(jù)權利要求I至14中任一權利要求所述的方法的裝置。
16.包括用于促使裝置實現(xiàn)根據(jù)權利要求I至14中任一權利要求所述的方法的程序的記錄載體。
17.一種可編程處理器,包括 -程序存儲器(10),所述程序存儲器包括被存儲為精簡后指令數(shù)據(jù)的指令序列,所述精簡后指令數(shù)據(jù)至少包括根據(jù)第一指令精簡方案而被精簡為具有N個存儲器字分段的第一碼字的第一指令,以及根據(jù)第二指令壓縮方案而被精簡為具有M個存儲器字分段的第二碼字的第二指令, -指令解碼器(20), -至少一個寄存器文件(40,40a), -耦合到所述寄存器文件(40a)的至少一個發(fā)布槽(50), -指令擴展器(80),所述指令擴展器包括 -精簡方案識別器(17),用于識別針對從所述程序存儲器中獲取的精簡后指令數(shù)據(jù)的所述指令精簡方案, -輸入,用于接收程序計數(shù)器(PC ), -存儲設備(14),用于臨時存儲至少一段程序存儲器字, -選擇設備(27),用于從所述程序存儲器(10)和所述存儲設備(14)中選擇精簡后指令數(shù)據(jù), -指令擴展單元(87),用于將所選擇的精簡后指令擴展成大小為K的擴展后指令, -控制設備(85),用于響應于所述程序計數(shù)器(PC)來生成所述程序存儲器的地址(AD),并用于控制所述選擇設備, 其中K、N和M是大于或等于I的整數(shù),所述整數(shù)N、M不大于K,并且其中N、M中的至少一者小于K。
18.根據(jù)權利要求17所述的可編程處理器,其中,所述存儲設備(14)是寄存器,并且其中所述選擇設備(27)包括多個多路復用模塊(27a,…,27d),其中每個多路復用模塊選擇精簡后指令數(shù)據(jù)的其中一個分段或零個分段。
全文摘要
用于生成針對要由可編程處理器處理的指令的子集的各個指令精簡方案的方法包括以下步驟a)接收代表要在所述可編程處理器上執(zhí)行的軟件的至少一個輸入代碼樣本,所述輸入代碼包括用于定義第一指令集的多個指令(S1),b)將被移除指令集初始化為空(S3),c)確定所述第一指令集的最精簡表示(S4),d)將所述最精簡表示的大小與閾值進行比較(S5),e)如果所述大小大于所述閾值則執(zhí)行步驟e1至e3,e1)確定所述第一指令集的哪個指令具有最高的編碼成本(S6),e2)從所述第一指令集中移除具有所述最高編碼成本的所述指令(S7),以及e3)將所述指令添加到所述被移除指令集中(S8),f)重復步驟b-f,其中所述第一指令集由所述被移除指令集形成(S9,S10)。
文檔編號G06F9/318GK102741817SQ201080050130
公開日2012年10月17日 申請日期2010年9月3日 優(yōu)先權日2009年9月4日
發(fā)明者A·奧古斯特伊恩, E·Y·M·勒特恩阿夫, H·T·J·茨瓦爾堅科特, J·A·J·萊特恩, J·馮厄特爾, 郭園青 申請人:英特爾貝內(nèi)盧克斯公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
平果县| 库车县| 鹤岗市| 汝南县| 衡山县| 汾阳市| 邮箱| 双柏县| 吉安市| 壤塘县| 镇雄县| 句容市| 济宁市| 云阳县| 寿光市| 叶城县| 扶绥县| 德兴市| 宜川县| 西昌市| 扶沟县| 晴隆县| 德保县| 丘北县| 克拉玛依市| 张掖市| 弋阳县| 临江市| 澜沧| 宽城| 安泽县| 新疆| 永善县| 象州县| 望都县| 揭西县| 平定县| 洛宁县| 习水县| 井研县| 开封县|