專利名稱:指令操作碼生成系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在處理器設(shè)計工具中使用的指令操作碼(instruction operation code)生成系統(tǒng),更具體地涉及在設(shè)計處理器的指令集時用于自 動決定指令操作碼的技術(shù)。
背景技術(shù):
為了實現(xiàn)處理器的高效設(shè)計,已經(jīng)開發(fā)出各種工具。作為這樣的工具 之一,已知一種根據(jù)處理器的設(shè)計技術(shù)規(guī)范(design specification)生成處 理器硬件配置或處理器軟件開發(fā)工具的工具。這樣的工具在下文中稱為 "處理器設(shè)計工具"。在傳統(tǒng)的處理器設(shè)計工具中,包括指令字長、操作 碼和操作數(shù)(operand)在內(nèi)的所有信息都由設(shè)計者定義。當定義一個指令 時,設(shè)計者定義該指令的字長以及在該指令中使用的操作數(shù)的類型和數(shù)目 兩者。
在非專利參考文件1和2和專利參考文件1到3中公開了傳統(tǒng)的處理 器設(shè)計工具。例如,非專利參考文件1的工具定義處理器的指令集從而生 成處理器的仿真器。在非專利參考文件1的工具中,指令位模式(bit pattern)定義如下。
CODING {Dest Srcl Src2 ObO 10000 0b 10000}
在"{"和"}"之間的部分表示位模式。Dest、 Srcl和Src2分別表示 登記號(register number)。在Dest、 Srcl禾n Src2之后的0b010000和 OblOOOO分別為表示指令的操作碼的二進制數(shù)位。以這種方式,構(gòu)成指令 的位模式的所有信息都需要由設(shè)計者定義。相似的原理適用于非專利參考 文件2以及專利參考文件1和2中公開的工具。
指令操作碼是用于區(qū)分各個指令的指令字段。在已經(jīng)預(yù)先設(shè)定 (settle)指令集的情況下,僅需要設(shè)計者在開始時定義指令操作碼一次。但是,在調(diào)查要向指令集添加何種指令時,設(shè)計者需要校正指令操作碼幾 次。
如果不需定義或校正指令操作碼,則要由設(shè)計者定義的項的數(shù)目減 少。操作碼具有什么值并不重要,而僅僅需要將操作碼定義為使得各個指 令可相互區(qū)分。當可自動定義指令操作碼的機制被實現(xiàn)時,要由設(shè)計者定 義的項的數(shù)目可以減少,從而提高設(shè)計效率。
非專利參考文件1: S. Pees et al., "LISA-Machine Description Language for Cycle-Accurate Models of Programmable DSP Architectures", 36th Design Automation Conference (DAC 99), June 1999, pp. 933-938
非專禾lj參考文件2: Andreas Hoffmann, et al., "A Survey on Modeling Issues Using the Machine Description Language Lisa," Proceedings of ICASSP 2001, VOL. 2, pp. 1137-1140, May 7-11 2001
專利參考文件1:美國專利No. 6,477,683
專利參考文件2:美國專利No. 6,862,563
專利參考文件3:日本的PCT國家公布No. 2003-518280
專利參考文件4: JP-A-2003-32346
發(fā)明內(nèi)容
[技術(shù)問題]
上面提及的傳統(tǒng)指令集生成工具具有以下問題由于設(shè)計者必需對指 令操作碼進行定義,所以效率被惡化。在設(shè)計者在調(diào)查指令集的內(nèi)容時必 須作出大量嘗試和錯誤的情況下,要設(shè)計者輸入的項的數(shù)目越少,則可實 現(xiàn)更高時效的設(shè)計。
本發(fā)明的一個目的是提供這樣一種指令操作碼自動生成方法,其能夠 實現(xiàn)操作碼的自動生成以便增大處理器指令集設(shè)計工作效率并減少設(shè)計者 在調(diào)査指令集時的工作量。 [技術(shù)方案]
為了解決以上目的,根據(jù)本發(fā)明第一方面,提供了一種指令操作碼生 成系統(tǒng),其包括操作碼位寬決定裝置,用于根據(jù)與處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)來決定要被指派給所述指令集的每一個指令的操作碼的位
寬;指令分類裝置,用于根據(jù)操作碼位寬對所述指令進行分類;以及操作 碼值決定裝置,用于根據(jù)對所述指令的分類來決定每一個指令的操作碼的 值。
此外,根據(jù)本發(fā)明第二方面,提供了一種用于基于與處理器的指令相 關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)生成處理器的硬件配置定義或者處理器的軟件開發(fā)工 具的系統(tǒng),其中所述系統(tǒng)使用如上所述的指令操作碼生成系統(tǒng)來決定構(gòu)成 所述指令集的每一個指令的操作碼的值。
此外,根據(jù)本發(fā)明第三方面,提供了一種指令操作碼生成方法,包 括對與處理器的指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)進行解釋的技術(shù)規(guī)范數(shù)據(jù) 分析步驟;決定要向所述指令集的每一個指令的操作碼指派的位寬的步 驟;根據(jù)操作碼位寬對所述指令進行分類的步驟;以及根據(jù)對所述指令的 分類來決定每一個指令的操作碼的值的步驟,以上各個步驟根據(jù)與所述處 理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)來操作。 [有利效果]
根據(jù)本發(fā)明,根據(jù)與處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)來自動生成 每一個指令的操作碼的值,從而消除設(shè)計者對操作碼進行定義的需要,這 相應(yīng)地增大了處理器指令集設(shè)計工作效率并減少了設(shè)計者在調(diào)查指令集時 的工作量。
圖1是示出根據(jù)本發(fā)明第一示例性實施例的指令操作碼生成系統(tǒng)的示
圖2是示出根據(jù)本發(fā)明第二示例性實施例的指令操作碼生成系統(tǒng)的示
圖3是示出作為本發(fā)明一個示例的操作碼賦值方法的流程圖4 (a)是示出將操作碼布置在指令的位模式的MSB側(cè)的方法的示
圖,圖4 (b)是示出將操作碼布置在指令的位模式的LSB側(cè)的方法的示
圖;圖5是示出第一操作碼決定方法的流程圖6是示出用作技術(shù)規(guī)范數(shù)據(jù)的指令的示例的示圖7是示出根據(jù)第一操作碼決定方法對操作碼進行賦值的示例的示
圖8是示出第二操作碼決定方法的流程圖9是示出根據(jù)第二操作碼決定方法對操作碼進行賦值的示例的示
圖IO是示出第三操作碼決定方法的流程圖11是示出根據(jù)第三操作碼決定方法對操作碼進行賦值的示例的示
圖12是示出第四操作碼決定方法的流程圖13是根據(jù)第四操作碼決定方法的索引子字段(index sub-field)決 定方法的流程圖14是根據(jù)第四操作碼決定方法的組子字段(group sub-field)決定
方法的流程圖15是示出用作技術(shù)規(guī)范數(shù)據(jù)的指令的示例的示圖16是示出根據(jù)第四操作碼決定方法對索引子字段進行賦值的示例
的示圖17是示出根據(jù)第四操作碼決定方法在基于組子字段的位寬進行排 序之后的指令的示例的示圖;以及
圖18是根據(jù)第四操作碼決定方法對組子字段進行賦值的示例。 標號說明
100:操作碼位寬決定裝置 200:指令排序裝置 300:操作碼值決定裝置
400:第一操作碼子字段值決定裝置 500:第二操作碼子字段值決定裝置 600:技術(shù)規(guī)范數(shù)據(jù)分析裝置 700:操作碼輸出裝置800:中間數(shù)據(jù)存儲裝置
具體實施例方式
以下將參考附圖詳細描述根據(jù)本發(fā)明、用于實施指令操作碼生成系統(tǒng) 的優(yōu)選示例性實施例。
(第一示例性實施例)
圖1示出了根據(jù)本發(fā)明第一示例性實施例的指令操作碼生成系統(tǒng)的配 置。圖1所示的指令操作碼生成系統(tǒng)包括基于與處理器的指令集相關(guān)聯(lián)的 技術(shù)規(guī)范數(shù)據(jù)操作的以下裝置技術(shù)規(guī)范數(shù)據(jù)分析裝置600,其對與處理
器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)進行解釋;操作碼位寬決定裝置100,其 決定可被分配給各個指令的操作碼的位寬;指令排序(sort)裝置200,其 根據(jù)操作碼位寬對指令進行排序;操作碼值決定裝置300,其決定各個指 令的操作碼的值;操作碼輸出裝置700,其輸出指令操作碼;以及中間數(shù) 據(jù)存儲裝置800,其存儲技術(shù)規(guī)范數(shù)據(jù)分析裝置600、操作碼位寬決定裝 置100、指令排序裝置200、操作碼值決定裝置300和操作碼輸出裝置700 所使用的數(shù)據(jù)。
利用以上配置,根據(jù)與處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)來自動生 成各個指令的操作碼值,從而消除由設(shè)計者定義操作碼的需要,這相應(yīng)地 增大了處理器指令集設(shè)計工作效率并減少了設(shè)計者在調(diào)查指令集時的工作
(第二示例性實施例)
圖2示出了根據(jù)本發(fā)明第二示例性實施例的指令操作碼生成系統(tǒng)的配 置。圖2所示的指令操作碼生成系統(tǒng)包括技術(shù)規(guī)范數(shù)據(jù)分析裝置600, 其對與處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)進行解釋;操作碼位寬決定裝 置100,其決定可被分配給各個指令的操作碼的位寬;指令排序裝置 200,其根據(jù)操作碼位寬對指令進行排序;第一和第二操作碼子字段值決 定裝置400和500,其根據(jù)操作碼位寬分別決定構(gòu)成操作碼的兩個子字段 的值;操作碼輸出裝置700,其輸出指令操作碼;以及中間數(shù)據(jù)存儲裝置 800,其存儲技術(shù)規(guī)范數(shù)據(jù)分析裝置600、操作碼位寬決定裝置100、指令排序裝置200、操作碼值決定裝置300、第一和第二操作碼子字段值決定 裝置400和500、以及操作碼輸出裝置700所使用的數(shù)據(jù)。
利用以上配置,與第一示例性實施例的情況一樣,根據(jù)與處理器指令 集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)來自動生成各個指令的操作碼值,從而消除由設(shè) 計者定義操作碼的需要,這相應(yīng)地增大了處理器指令集設(shè)計工作效率并減 少了設(shè)計者在調(diào)査指令集時的工作量。此外,與根據(jù)第一示例性實施例的 指令操作碼生成系統(tǒng)相比較,根據(jù)第二示例性實施例的指令操作碼生成系 統(tǒng)更容易對生成的操作碼進行解碼。
根據(jù)第一和第二示例性實施例的指令操作碼生成系統(tǒng)可通過在計算機 上操作的程序來實現(xiàn)。在這種情況下,構(gòu)成指令操作碼生成系統(tǒng)的程序允 許計算機用作以上各個裝置100到800。在這種配置中,指令操作碼生成 系統(tǒng)控制計算機讀出與處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù),并基于該技 術(shù)規(guī)范數(shù)據(jù)來決定各個指令的操作碼。
參考圖3到18,將具體描述根據(jù)第一和第二示例性實施例的指令操作 碼生成系統(tǒng)的示例。在以下示例中,圖l和2所示的以上各個裝置100到 800由計算機的處理器(CPU:中央處理單元)來實現(xiàn),該處理器執(zhí)行存 儲在計算機的存儲介質(zhì)中的指令操作碼生成系統(tǒng)的程序代碼。 [示例]
首先,將描述處理器指令是如何定義的。
處理器指令由0和1組成的位模式來表示。模式中的哪個位具有什么 含義是預(yù)先定義的,并且處理器讀出指令的位模式以對指令進行解釋。
指令的位模式包括兩個字段操作碼字段和操作數(shù)字段。操作碼字段 是表示指令的名稱或類型的字段。指令必然包括一個操作碼以表示指令的 名稱或類型。由于操作碼通過其自身表示指令的名稱或類型,所以操作碼 依據(jù)指令的名稱或類型而不同。操作數(shù)是表示賦予指令的參數(shù)的字段。某 些指令可能具有多個操作數(shù),而某些指令可能不具有任何操作數(shù)。
當解釋指令時,處理器首先從指令操作碼獲取指令的名稱或類型,然 后從指令的名稱或類型獲取操作數(shù)的數(shù)目或其含義。由于在指令的名稱或 類型與操作數(shù)的數(shù)目或其含義之間具有一一對應(yīng)關(guān)系,所以操作碼是否容
12易解釋直接影響指令解釋的容易度。
例如,如果指令字長、操作碼的起始位位置和操作碼位寬都恒定不 變,則可以很容易解釋操作碼。但是,操作碼位寬通常并不恒定,并且可 能存在指令字長或操作碼起始位位置并不恒定的情況。因此,為了更容易 解釋操作碼,有必要使操作碼的起始位位置恒定,并盡可能減少位寬數(shù)目 的變化。
接下來,將描述指令操作碼是如何決定的。在本說明書中使用的各種
運算符(=、+=、 ==、 <<、 &、 ~、 +、-等)的含義被假定為與c語言中定
義的一樣。例如,"x=y"意味著將y賦值給x的賦值運算,"x+=y"意 味著將x+y賦值給x的賦值運算(即,"x+=y"具有與"x=x+y"相同的 含義)。"x==y"意味著用于確定x和y之間的相等性的關(guān)系運算。在這 種運算中,當x與y彼此相等時,返回為真,而當x與y不相等時,返回 為假。"x y"意味著x被向左移位y值的移位運算。"x&y"意味著用 于計算x與y之間的邏輯AND的邏輯運算。" x"意味著對x的所有位 求反的運算。
首先,對以下描述中所使用的術(shù)語進行定義。在下文中,術(shù)語<技術(shù) 規(guī)范>意味著為了生成操作碼設(shè)計者應(yīng)當定義的信息,即,技術(shù)規(guī)范數(shù) 據(jù)。
指令總數(shù)由S〈技術(shù)規(guī)范〉表示。 [定義3]
指令字長由>^<技術(shù)規(guī)范>表示。 [定義4]
用于表示指令k的所有操作數(shù)的位模式寬度由 total—operands—length[k]〈,支術(shù)步見范〉表示。 [定義5]指令k的操作碼字段的長度由opcode—length[k]位表示。 [定義6]
指令k的操作碼字段的值由opcode—value[k]表示。opcode一value[k]是 無符號整數(shù)。 [定義7]
操作碼字段的長度為x位的指令的數(shù)目由mim of
從具有位寬"length"的值x的位反轉(zhuǎn)獲得的值由bitrev(x,length)表
接下來,將在以下描述基于以上定義1到9指派指令操作碼的方法。 圖3是與該方法相對應(yīng)的流程圖。
(0) 讀取技術(shù)規(guī)范數(shù)據(jù)(步驟St0)。
在這個步驟中,用于表示指令k的所有操作數(shù)的位模式寬度 total—operands—length[k]被從技術(shù)規(guī)范數(shù)據(jù)中讀出。這個處理由圖1禾Q 2所 示的技術(shù)規(guī)范數(shù)據(jù)分析裝置600來執(zhí)行。
(1) 決定指令的操作碼字段的位寬(步驟Stl)。 在這個步驟中,指令k的操作碼字段的位寬opcode—length[k]被定義如下。
opcode—length[k]=N-total—operands—length[k] (lc=0, 1,…,S-1) 這個處理由圖l和2所示的操作碼位寬決定裝置100來執(zhí)行。
(2) 隨后,對指令進行排序(步驟St2)。
在這個步驟中,基于total—operands—length[k]對所有指令進行排序。排 序之后的指令編號由i表示。對操作數(shù)使用最大位數(shù)的指令的編號i被設(shè) 為0。此外,對操作數(shù)使用最小位數(shù)的指令的編號i被設(shè)為S-l。
這個處理由圖l和2所示的指令排序裝置200執(zhí)行。
然后,決定指令的操作碼字段的值(步驟St3)。在這個步驟中,以從第0個指令開始的順序來決定操作碼字段的值
"opcode一value[i]"。這個處理由圖1所示的操作碼值決定裝置300或者 圖2所示的第一和第二操作碼子字段值決定裝置400和500來執(zhí)行。
在以上過程中在操作碼字段被布置在指令的位模式的最高有效位 (MSB)側(cè)的情況下,如圖4 (a)所示地布置操作碼字段。另一方面,在 操作碼字段被布置在指令的位模式的最低有效位(LSB)側(cè)的情況下,如 圖4 (b)所示地布置從操作碼字段的值的位反轉(zhuǎn)獲得的值。
在圖4 (a)和4 (b)中,opcodejength[i]表示指令[i]的操作碼的位 寬,opcode—value[i]表示指令[i]的操作碼的值,operand—O[i]表示指令[i]的 第0個操作數(shù)的內(nèi)容,operand—l[i]表示指令[i]的第1個操作數(shù)的內(nèi)容, 叩erand—q[i]表示指令[i]的的第q個操作數(shù)的內(nèi)容,并且bitrev(X,Y)表示從 X的低Y位的位反轉(zhuǎn)值獲得的值。
一些方法可用作用于決定操作碼字段的值的方法(步驟St3)。在下 文中,將描述操作碼決定方法。
將描述第一操作碼決定方法。
在該操作碼決定方法中,根據(jù)上面提及的過程執(zhí)行(1)操作碼字段 位寬的決定和(2)指令的排序。在此之后,(3)決定各個指令的操作碼 的值opcode—value[i],如下所示。
圖5示出了第一操作碼決定方法的流程圖。在圖5中,i表示指令編 號,S表示指令總數(shù),opcodejalue[i]表示指令i的操作碼的值,并且 opcode一length[i]表示指令i的操作碼的位寬。
將0賦值給opcode—value[O](步驟Stl 1)。
然后,如下所示地順序決定opcode—value[i],其中指令編號i在從0 到S-1的范圍內(nèi)(步驟Stl2到St15)。
opcode—value[i]=((opcode—value[i-1 ]+1 )《(opcode—lengthW-opcode—length"- 1 ])
艮卩,opcode—value[i-l]與1的和被向左移位opcode—length[i]與 opcode一length[i-l]之差的值,并且從移位操作獲得的值被賦值給
15opcode—value[i]。以這種方式來決定各個指令的操作碼的值。
在圖6和7中示出了根據(jù)第一操作碼決定方法來對操作碼賦值的示 例。圖6表示14個指令(S=14)的位模式。在圖6中,Ra、 Rb和Rc是 各自表示登記號的操作數(shù)字段。IMM6、 IMM4和IMM2是各自表示數(shù)值 的操作數(shù)字段。在圖6中,每一個指令的字長為16位(N=16)。此外, 在圖6中,寫在各個位模式的MSB側(cè)的由0和1組成的位模式表示操作 碼。
指令U、 V、 W、 A、 B、 C、 D、 E、 F、 G、 H、 P、 Q和T的操作碼 的值是在以下假設(shè)下決定的假定給出了指令集的技術(shù)規(guī)范數(shù)據(jù),其中每 一個指令的字長和每一個操作數(shù)字段的位寬被設(shè)置為如圖6所示。
基于叩code—length[i]對圖6所示的指令進行排序,并執(zhí)行圖5的從 Stll到Stl5的處理,由此獲得圖7。如圖7所示,每一個指令的值 "opcode—value[i](i=0,...,13)"都不與任何其它指令的操作碼的值重疊。因 此,可以利用根據(jù)第一操作碼決定方法生成的操作碼正確地識別各個指 令。
注意,圖6僅僅是一個代表性模型,并且不一定總是如圖6所示地描 述技術(shù)規(guī)范數(shù)據(jù)。技術(shù)規(guī)范數(shù)據(jù)可以被描述為文本文件。
從上面可見,第一操作碼決定方法非常簡單。此外,第一操作碼決定 方法具有以下優(yōu)點與下面的操作碼決定方法相比,第一操作碼決定方法 可以表示大量的操作碼。
對以第一操作碼決定方法生成的操作碼的解碼稍微復(fù)雜一些。即,需 要減法和比較運算來解碼以第一操作碼決定方法生成的操作碼。需要同時 執(zhí)行多個減法和比較運算,以對一個周期中的指令進行解碼,因此,與使 用以下操作碼決定方法的情況相比,不可避免地增加了用于對操作碼進行 解碼的解碼電路的占位(footprint)。
接下來,將描述第二操作碼決定方法。
在該操作碼決定方法中,根據(jù)上面提及的過程執(zhí)行(1)操作碼字段 位寬的決定(步驟Stl)和(2)指令的排序(步驟St2)。在此之后,(3)決定每一個指令的操作碼的值"opcode—value[i]",如下所示。
圖8示出了第二操作碼決定方法的流程圖。在圖8中,i表示指令編 號,S表示指令總數(shù),opcode一value[i]表示指令i的操作碼的值,并且 opcode一length[i]表示指令i的操作碼的位寬。 將0賦值給opcode—value[O](步驟St21)。
然后,如下所示地順序決定opcode_value[i],其中,指令編號i在從l 到S-1的范圍內(nèi)(步驟St22到St30)。
在步驟St23中,判斷opcode—length[i]是否等于opcode—length[i-l]。
當opcode—length[i]等于opcode—length[i-l](步驟St23中為是)時,將 opcode—value[i-l]加1,并且將從相加得到的值賦值給opcode_value[i](步 驟St24)。即,通過向opcode—value[i隱l]加1來獲得opcode—value[i]。
另一方面,當opcod^length[i]不等于opcodejength[i-l](步驟St23中 為否)時,將opcode_value [1]設(shè)置為(0口(;0(16—丫31116["1]<<((^(:0(16—lengths-opcode—leng郵-l])) (步驟 St25 )。艮卩,從 opcode—leng郵]減去 opcode—length[i-l]。然后,將opcode—value[i-l]左移從減法得到的值,并且 將從移位操作得到的值賦值給opcode—vahie[i]。隨后,執(zhí)行步驟St26。
在步驟St26中,判斷作為不小于與指令i具有相同操作碼長度的指令 數(shù) 目 的 、 2 的 冪 的 最 小 值 的 值 (min_power—of—2(num—of一inst一having一opcode—length(opcode一length[i])))是否 大于從(1 opcode—length[i]-opcode—length[i-1 ]))獲得的值,并將較大者設(shè) 置為Z。
當步驟 St26 中的判斷為是時,Z被設(shè)置為 min_power—of—2(num_of_inst—having—opcode一length(opcode—length[i])), 并 且根據(jù)以下計算公式來計算opcode—value[i]:
opcode—value[i]=(opcode—value[i]+Z)&(~(Z-1))
另 一 方面,當步驟St26中的判斷為否時,Z被設(shè)置為 (l (opcode—length[i]-opcode—length[i-l])),并且根據(jù)以下計算公式來計算 opcode—value[i]:
opcode—value[i]=(opcode_value[i]+Z)&( (Z-l))(步驟St28)。
17以這種方式,決定每一個指令的操作碼的值。
在圖6和9中示出了根據(jù)第二操作碼決定方法對操作碼進行賦值的示 例。基于opcode—length[i]對在圖6中被示作技術(shù)規(guī)范代碼的指令進行排 序,并執(zhí)行圖8的從St21到St30的處理,由此獲得圖9。
如圖9所示,每一個指令的值"opcode—value[i](i=0,..,13)"都不與任 何其它指令的操作碼的值重疊。因此,可以利用根據(jù)第二操作碼決定方法 生成的操作碼來正確地識別每一個指令。
從上面可見,第二操作碼決定方法比第一操作碼決定方法略微更復(fù) 雜。但是,對以第二操作碼決定方法生成的操作碼的解碼比第一操作碼決 定方法的情況容易。這是因為通過第二操作碼決定方法生成的操作碼是由 表示具有相同位寬的一組操作碼的位串和表示該組中的指令的索引的位串 構(gòu)成的。因此,可將操作碼分為兩個位串,從而允許分層地對操作碼進行 解碼。
艮P,當對以第二操作碼決定方法生成的操作碼進行解碼時,首先對表 示具有相同位寬的一組操作碼的位串進行解碼。然后,選擇具有最長位串 的一組,并對表示該組中的指令的索引的位串進行解碼。為了對以第二操 作碼決定方法生成的操作碼進行解碼不必執(zhí)行減法。因此,可以僅利用邏 輯運算和移位運算來構(gòu)建解碼電路。其結(jié)果是,在第二操作碼決定方法中 的解碼電路比第一操作碼決定方法中的解碼電路簡單。
將描述第三操作碼決定方法。
在該操作碼決定方法中,根據(jù)上面提及的過程執(zhí)行(1)操作碼字段 位寬的決定(步驟Stl)和(2)指令的排序(步驟St2)。在那之后, (3)決定每一個指令的操作碼的值"opcode—value[i]",如下所示。
圖IO示出了第三操作碼決定方法的流程圖。在圖10中,i表示指令編 號,S表示指令總數(shù),opcode—value[i]表示指令i的操作碼的值,并且 opcode—length[i]表示指令i的操作碼的位寬。
將0賦值給opcode—value[O](步驟St31)。
然后,如下所示地順序決定opcode一value[i],其中,指令編號i在從1到S-1的范圍內(nèi)(步驟St32到St38)。
在步驟St33中,判斷opcode—length[i]是否等于opcode—length[i-l]。 當opcode—length[i]等于opcode—length[i-l](步驟St33中為是)時,將
opcode—value[i-l]加1,并且將從相加得到的值賦值給opcode—value[i](步
驟St34)。
另一方面,當opcode—length[i]不等于opcode—length[i-l](在步驟St33 中為否)時,作為不小于具有與指令i相同的操作碼長度的指令的數(shù)目 的、 2 的冪的最小值的值 (min_power—of—2(num_of—inst_having—opcode一length(opcode—length[i-1 ])))被 設(shè)置為Z (步驟St35)。隨后,執(zhí)行步驟St36。
在步驟St36中,根據(jù)以下計算公式計算opcode—value[i]:
opcode—value[i]=((opcode—value[i-1 ]+Z) (opcode—lengthW-opcode—lengthfi- 1 ])
以這種方式,決定每一個指令的操作碼的值。
在圖6和11中示出了根據(jù)第三操作碼決定方法對操作碼的賦值的示 例。基于opcode一length[i]對在圖6中被示作技術(shù)規(guī)范代碼的指令進行排 序,并執(zhí)行圖10的從St31到St38的處理,由此獲得圖ll。
如圖11所示,每一個指令的值"opcode—value[i](i=0,...,13)"都不與任 何其它指令的操作碼的值重疊。因此,可以利用根據(jù)本操作碼決定方法生 成的操作碼來正確地識別每一個指令。
在第三操作碼決定方法中,需要減法和比較運算以對所生成的操作碼 進行解碼。這與第一操作碼決定方法的情況相同。
與第一和第二操作碼決定方法相比,第三操作碼決定方法在過程上不 像第一操作碼決定方法那么簡單,并且在對操作碼的解碼上不像第二操作 碼決定方法那么容易。
將描述第四操作碼決定方法。
在該操作碼決定方法中,操作碼字段被分為兩個子字段。 一個是組子 字段,另一個是索引子字段。組子字段被置于MSB側(cè),并且索引子字段
19被置于LSB側(cè)。在這種方法中,分別決定索引子字段的操作碼和組子字段 的操作碼。
圖12示出了第四操作碼決定方法的流程圖。如圖12所示,第四操作
碼決定方法包括以下步驟決定每一個索引子字段的位寬的步驟(步驟
St41),決定每一個索引子字段的值的步驟(St42),決定每一個組子字 段的位寬的步驟(步驟St43),基于每一個組子字段的位寬對指令進行排 序的步驟(步驟St44),以及決定每一個組子字段的值的步驟(步驟 St45)。
有關(guān)這兩個子字段的符號被定義如下。 [定義10]
指令i的組子字段的長度由opcode—sub一grp—length[i]表示。 [定義11]
指令i的組子字段的值由opcode—sub—grp一value[i]表示。 [定義12]
指令i的索引子字段的長度由opcode—sub—idx—length[i]表示。 [定義13]
指令i的索引子字段的值由opcode—sub—idx—value[i]表示。 [定義14]
為所有指令定義索引子字段的長度,如下所示(步驟St41)。 opcode—sub—idx—length[i]=min_power—of—2(num一of一inst—having—opcode —length(opcode—length[i])) [定義15]
為所有指令定義組子字段的長度,如下所示(步驟St43)。 opcode—sub—grp—length[i]=opcode—length[i]-opcode—sub—idx—length[i] 接下來,將描述決定索引子字段的值的過程。圖13是與該過程相對 應(yīng)的流程圖。在圖13中,i表示指令編號,S表示指令總數(shù), opcodejalue[i]表示指令i的操作碼的值,opcodejength[i]表示指令i的操 作碼的位寬,并且opcode一sub一idx一value[i]表示指令i的索引子字段的值。 將0賦值給opcode—sub—idx—value
(步驟St51)。然后,如下所示地順序決定opcode—sub—idx_value[i],其中,指令編 號i在從l到S-l的范圍內(nèi)(步驟St52到St57)。
在步驟St53中,判斷opcode—length[i]是否等于opcode—length[i-l]。
當opcode—length[i]等于叩code—length[i-l](步驟St53中為是)時,將 opcode—sub—idx—value [i-l〗力卩1 ,并且將從相加得到的值賦值給 opcode—sub—idx一value [i](步驟St54)。
另一方面,當opcodejength[i]不等于opcodejength[i-l](在步驟St53 中為否)時,將0賦值給opcode—sub—idx—value[i](步驟St55)。
接下來,將描述基于各個組子字段的位寬對指令進行排序的過程?;?于指令i的組子字段長度opcode—sub—grp—length[i]對所有指令進行排序。 排序之后的指令編號由n表示。令對組子字段使用最大位數(shù)目的指令的編 號n被設(shè)為0,并令對操作數(shù)使用最小位數(shù)目的指令的編號n被設(shè)為S-l 。
接下來,將描述決定組子字段的值的過程。圖14是與該過程相對應(yīng) 的流程圖。在圖14中,n表示指令編號,S表示指令的總數(shù), opcode—value[n]表示指令n的操作碼的值,opcode—length[n]表示指令n的 操作碼的位寬,opcodLSuLgrpjalue[n]表示指令n的組子字段的值。并且 opcode—sub—grp—length[n]表示指令n的組子字段的位寬。
將0賦值給opcode—sub_grp_value
(步驟St61)。
然后,如下所示地順序決定opcode—sub—grp—value[n],其中,指令編 號n在從l到S-l的范圍內(nèi)(步驟St62到St66)。
在步驟St63中,判斷opcode—length[n]是否等于opcode—length[n-l]。
當opcode—length[n]等于opcode—length[n-l](在步驟St63中為是) 時,將opcode—sub—grp—value[n-l]賦值給opcode—sub—grp一value[n](步驟 St64)。
另一方面,當opcode—length[n]不等于opcode—length[n-l](在步驟 St63中為否)時,根據(jù)以下計算公式計算opcode—sub—grp—value[n]:
opcode—sub—grp—value[n]=((opcode—sub—grp_value[n-1 ]+1 ) (opcode—sub—grp一length[n]陽opcode一sub一grp一length[n-1 ])
以這種方式,決定了每一個指令的操作碼的值。在圖15到18中示出了根據(jù)第四操作碼決定方法對操作碼賦值的示例。
圖15表示14個指令(S=14)的位模式。在圖15中,Ra、 Rb和Rc 是各自表示登記號的操作數(shù)字段。IMM6、 IMM4和IMM2是各自表示數(shù) 值的操作數(shù)字段。每一個指令的字長為16位(N=16)。操作數(shù)被布置在 指令位模式的LSB側(cè),并且操作碼字段被布置在指令位模式的MSB側(cè)。
基于叩code—length[i]對在圖15中被示作技術(shù)規(guī)范代碼的指令進行排 序,并執(zhí)行圖13的從St51到St57的處理,由此獲得圖16。圖16示出了 與圖15的指令相對應(yīng)的各個索引子字段的值。
隨后,使用圖16中已經(jīng)算出每一個索引子字段的值的指令來計算每 一個指令的組子字段的位寬。然后,基于每一個組子字段的位寬對指令進 行排序,從而獲得圖17。
隨后,針對圖17的指令執(zhí)行圖14中從步驟St61到步驟St67的處 理,從而獲得圖18。圖18示出了與圖17的指令相對應(yīng)的各個組子字段的 值。利用以上處理,計算得到每一個指令的索引子字段和組子字段的值。 然后,將索引子字段和組子字段相連接,由此獲得與操作碼的值相對應(yīng)的 位串。
如圖 18 所示, 由組子字段的值 "opcode—sub—grp—value[i](i=0,...,13)" 和索引子字段的值 "opcode_sub_idx_value[i](i=0,..., 13)"構(gòu)成的每 一個指令的操作碼的值不 與任何其它指令的操作碼的值重疊。因此,可以利用根據(jù)本操作碼決定方 法的操作碼來正確地識別每一個指令。
通過第四操作碼決定方法生成的操作碼由表示具有相同位寬的一組操 作碼的位串和表示該組中的指令的索引的位串構(gòu)成。這是與第二操作碼決 定方法相同的特征。因此,與第二操作碼決定方法的情況相同,可以很容 易地對操作碼進行解碼。為了對以第二操作碼決定方法生成的操作碼進行 解碼不必執(zhí)行減法,因而可以僅利用邏輯運算和移位運算來解碼操作碼。
此外,通過第四操作碼決定方法生成的操作碼具有以下特征較短操 作碼的組子字段與另一較長操作碼的組子字段的一部分不一致。這是第二操作碼決定方法不具有的特征。這使得解碼處理比第二操作碼決定方法的 情況更容易。
艮P,當對以第二操作碼決定方法生成的操作碼進行解碼時,首先對表 示具有相同位寬的一組操作碼的位串進行解碼,然后需要選擇具有最長位 串的組。這是因為表示具有相同位寬的一組操作碼的位串部分相互一致, 因而有必要從這些位串中選擇最適合的組。與使用第二操作碼決定方法的 情況相比,第四操作碼決定方法可以表達的操作碼的類型數(shù)目較少。但
是,在指令字長為24或32位的情況下,這不是主要問題。
將描述如何選擇以上第一到第四操作碼決定方法中的哪些。 一般而言,優(yōu)選地選擇可以容易地執(zhí)行解碼的操作碼決定方法。在第 一到第四操作碼決定方法中,在解碼處理方面第四操作碼最容易。在需要 增加操作碼數(shù)目的情況下,優(yōu)選地選擇第二操作碼決定方法。
雖然已經(jīng)參考以上示例詳細描述了本發(fā)明,但是應(yīng)當了解,本發(fā)明不 限于以上代表性示例。因此,在不脫離由權(quán)利要求限定的本發(fā)明的真實范 圍的情況下,本領(lǐng)域技術(shù)人員可以進行各種修改、改變和應(yīng)用。因此,所 有修改例及其等同物均包括在本發(fā)明的范圍內(nèi)。 [修改例]
雖然在以上示例中,操作碼被布置在各個指令的位模式的MSB側(cè), 但是操作碼可以被布置在各個指令的位模式的MSB側(cè)、LSB側(cè)或者中間 位置。此外,操作碼可以以分開的方式被布置在各個指令的位模式中。
本發(fā)明的示例可被應(yīng)用于處理器硬件配置生成工具或者處理器軟件開 發(fā)工具,如在專利參考文件3中所公開的。這樣的工具基于處理器的技術(shù) 規(guī)范來生成硬件配置或軟件開發(fā)工具。處理器技術(shù)規(guī)范包括指令集的技術(shù) 規(guī)范。雖然在專利參考文件3中指令集的技術(shù)規(guī)范包括操作碼的位寬或 值,但是使用本發(fā)明的示例允許自動決定位寬和值。這使得得到以下應(yīng) 用生成用于正確地對所決定的操作碼進行解碼或編碼的硬件配置或軟件 開發(fā)工具。
當構(gòu)成根據(jù)本發(fā)明的示例的指令操作碼生成系統(tǒng)的以上裝置的至少一部分功能是使用計算機程序代碼來實現(xiàn)的時,該程序代碼和用于記錄程序 的計算機可讀記錄介質(zhì)被包括在本發(fā)明的范疇內(nèi)。程序代碼可以具有任何 類型,只要其可以允許計算機實現(xiàn)以上裝置的功能即可。例如,程序代碼 可以與諸如OS (操作系統(tǒng))之類的另一程序代碼協(xié)同來實現(xiàn)這些功能。 用于記錄程序代碼的記錄介質(zhì)的示例包括任何類型的記錄介質(zhì),例如,諸
如ROM (只讀存儲器)之類的半導(dǎo)體存儲器以及盤狀記錄介質(zhì)(磁盤、
光盤、磁光盤等,例如硬盤驅(qū)動器)和帶狀記錄介質(zhì)。
此外,執(zhí)行構(gòu)成根據(jù)本發(fā)明示例的指令操作碼生成系統(tǒng)的程序代碼的 指令的計算機被包括在本發(fā)明的范疇內(nèi)。計算機可以通過使用以下各項的
至少一部分來構(gòu)成根據(jù)控制程序操作的處理器(CPU)、具有用于存儲 控制程序或控制數(shù)據(jù)的存儲區(qū)域的存儲器、以及各種外圍設(shè)備,外圍設(shè)備 包括各種I/O設(shè)備(例如,諸如硬盤之類的外部記錄設(shè)備)、諸如通信調(diào)
制解調(diào)器或LAN (局域網(wǎng))接口之類的通信設(shè)備、諸如CRT (陰極射線 管)和液晶顯示設(shè)備之類的顯示設(shè)備、以及諸如鍵盤和鼠標之類的輸入設(shè) 備。在這種情況下,用于實現(xiàn)以上裝置的功能的處理器、存儲器和各種 I/O設(shè)備包括在本發(fā)明的范疇內(nèi)。計算機可以具有任何類型,例如,獨立 式計算機、或者由可通信地連接到網(wǎng)絡(luò)的多個計算機構(gòu)成的計算機系統(tǒng)。
本申請基于并要求(2006年11月21日提交的)在先日本專利申請 No. 2006-314260的優(yōu)先權(quán),該申請的全部內(nèi)容通過引用而全部結(jié)合于此。
通過使用本發(fā)明,可以從指令集的技術(shù)規(guī)范描述中自動生成各個指令 的操作碼。本發(fā)明可被應(yīng)用于從處理器的技術(shù)規(guī)范描述生成處理器硬件描 述的系統(tǒng)。另外,本發(fā)明可被應(yīng)用于從指令集的技術(shù)規(guī)范描述生成諸如匯 編程序或編譯器之類的軟件開發(fā)工具的系統(tǒng)。
權(quán)利要求
1.一種指令操作碼生成系統(tǒng),包括操作碼位寬決定裝置,用于根據(jù)與處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)來決定要被指派給所述指令集的每一個指令的操作碼的位寬;指令分類裝置,用于根據(jù)所述操作碼位寬對所述指令進行分類;以及操作碼值決定裝置,用于根據(jù)對所述指令的分類來決定每一個指令的操作碼的值。
2. 根據(jù)權(quán)利要求1所述的指令操作碼生成系統(tǒng),還包括 技術(shù)規(guī)范數(shù)據(jù)分析裝置,用于解釋所述技術(shù)規(guī)范數(shù)據(jù);以及 中間數(shù)據(jù)存儲裝置,用于存儲由所述技術(shù)規(guī)范數(shù)據(jù)分析裝置、操作碼位寬決定裝置、指令分類裝置和操作碼值決定裝置輸出的數(shù)據(jù)。
3. 根據(jù)權(quán)利要求2所述的指令操作碼生成系統(tǒng),其中 所述操作碼值決定裝置包括用于將操作碼劃分成兩個子字段的裝置,并根據(jù)對所述指令的分類來決定每一個子字段的值。
4. 根據(jù)權(quán)利要求2或3所述的指令操作碼生成系統(tǒng),其中 與所述處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)包括指令的字長、指令中包括的操作數(shù)的數(shù)目、以及每一個操作數(shù)的位寬,并且所述操作碼值決定裝置根據(jù)包括指令的字長、指令中包括的操作數(shù)的 數(shù)目和每一個操作數(shù)的位寬在內(nèi)的與所述處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范 數(shù)據(jù)來確定每一個指令的操作碼。
5. 根據(jù)權(quán)利要求4所述的指令操作碼生成系統(tǒng),其中 假定各個指令的編號為k,指令總數(shù)為S,各個指令的字長為N,用于表示指令k的所有操作數(shù)的位模式的寬度為total—operands—length[k],指 令k的操作碼字段的長度為opcodejength[k]位,指令k的操作碼字段的值 為opcode—value[k],操作碼字段的長度為x位的指令數(shù)目為num_of inst_having_opcode_length(x),并且不小于值x的2的冪的最小值為 minjower—of—2(x),則操作碼位寬決定裝置根據(jù)以下計算公式計算指令k 的操作碼字段的位寬"opcodejength[k] " : opcode—length[k]= N-totaloperands_length[k](k=0, 1,…,S-l),指令分類裝置基于表示指令k的所有操作數(shù)的位模式的寬度 "total—operandsjength[k]"對所有指令進行排序,并且假定排序之后的指令編號為i,則對操作數(shù)使用最大位數(shù)的指令的編 號i為0,并且對操作數(shù)使用最小位數(shù)的指令的編號i為S-l ,操作碼值決定裝置以從第O個指令到第(S-l)個指令的順序來決定指 令i的操作碼字段的值"opcode—value[i]"。
6. 根據(jù)權(quán)利要求5所述的指令操作碼生成系統(tǒng),其中 用于決定指令i的操作碼的值"opcode—value[i]"的裝置將0賦值給opcode—value[O],隨后根據(jù)以下公式在從1到S-l地改變指令編號i的同時 順序決定值"opcode—value[i]":opcode—value[i]=((opcode—value[i-l ]+l )《(opcode一leng郵]-opcode一length[i-1 ])。
7. 根據(jù)權(quán)利要求5所述的指令操作碼生成系統(tǒng),其中 用于決定指令i的操作碼字段的值"叩cod^value[i]"的裝置將0賦值給opcode_value
,隨后如下所示地在從1到S-l地改變指令編號i的同 時順序決定值"opcode—value[i]":(1) 當opcode—length[i]等于opcode—length[i-l]時,該裝置根據(jù) opcode一value[i] = opcode一value[i-l]+l來決定值"opcode一value[i]"; 以及(2) 當opcode—length[i]不等于opcode」ength[i-l]時,該裝置對值 "min_power—of—2(num—of—inst—having—opcode—length(opcode—length[i]))"與從(l《opcode—length[i]-opcode—length[i-l])獲得的值進行比較,從而將較 大者設(shè)為Z,并根據(jù) "opcode—value[i〗=((opcode—value[i-l] (opcode—length[i]-opcode—length[i-l]))+Z)&( (Z-l))"來決定值 " opcode—value[i] " , 其 中 , 值"min_power—of一2(num—of—inst_having—opcode一length(opcode—length[i]))" 是不小于與指令i具有相同操作碼長度的指令的數(shù)目的、2的冪的最小 值。
8. 根據(jù)權(quán)利要求5所述的指令操作碼生成系統(tǒng),其中用于決定指令i的操作碼字段的值"opcode一value[i]"的裝置將0賦值 給opcode一value[O],隨后如下所示地在從1到S-l地改變指令編號i的同 時順序決定值"opcode—value[i]":(1) 當opcode—length[i]等于opcode—length[i-l]時,該裝置根據(jù) opcode—value[i] = opcode一value[i-l]+l來決定值"opcode—value[i]"; 以及(2) 當opcode—length[i]不等于opcode—length[i-l]時,該裝置將值 " (min_power_of—2(num_of_inst_having—opcode—length(opcode一length[i-l]))" 設(shè)為 Z ,并根據(jù) "opcode—value[i]=((opcode_value[i-l]+Z (opcode_length[i]-opcode—length[i-l])) " 來 決 定 值 " opcode—value[i〗" , 其中, 值" (min_power_of—2(num—of—inst—having—opcode—length(opcodejength[i-l]))"是不小于與指令i具有相同操作碼長度的指令的數(shù)目的、2的冪的最小值。
9.根據(jù)權(quán)利要求5所述的指令操作碼生成系統(tǒng),其中所述操作碼字段被劃分成組子字段和索引子字段,用于決定指令i的的操作碼字段的值"opcode—value[i]"的裝置包括用 于決定所述索引子字段的值的裝置和用于決定所述組子字段的值的裝置,假定指令i的索引子字段的長度為0pCode_SUb_idX—length[i],指令i的 索弓l子字段的值為 opcode—sub—idx—value[i], 通過 opcode—sub—idx—length[i]=min_power—of_2(num—of—inst—having—opcode—leng th(叩codeJength[i]))為所有指令定義所述索引子字段的長度,指令i的組子 字段的長度為opcode—sub—grp—length[i],指令i的組子字段的值為 opcode—sub一grp一value[i], 通過opcode—sub—grp—length[i]=opcode—lengths-opcode—sub—idx—length[i]為所有指令定義所述組子字段的長度 , 則用于決 定索引子字段的值的裝置將0賦值給opcode—sub—idx—value[O],隨后如下 所示地在從1到S-l地改變指令編號i的同時順序決定值 "opcode—sub—idx一value[i]":(1)當opcode—length[i]等于opcode—length[i-l]時,該裝置根據(jù) opcode—sub—idx_value[i] = opcode—sub一idx—value[i-l]+l 來決定值"opcode_sub—idx—value[i]"; 以及(2)當opcode—length[i]不等于opcode—length[i-l]時,該裝置根據(jù) opcode—sub—idx_value[i]=0來決定值"opcode—sub—idx—value[i]",基于指令i的組子字段的長度"opcodejub—grp一length[i]"對所有指令 進行排序,并且假定排序之后的指令編號為n,對操作數(shù)使用最大位數(shù)的指令的編號 n為0,并且對操作數(shù)使用最小位數(shù)的指令的編號n為S-l,則用于決定組子字段的值的裝置將0賦值給opcode—sub—grp—value[O], 隨后如下所示地在從1到S-l地改變指令編號n的同時順序決定值 "opcode_sub—grp—value[n]":(1) 當opcode—length[n]等于opcode—length[n-l]時,該裝置根據(jù) opcode—sub—grp—value[n]= opcode—sub_grp—value[n-l] 來 決 定 值"opcode_sub—grp—value[n]"; 以及(2) 當opcodejength[n]不等于opcode—length[n-l]時,該裝置根據(jù) opcode—sub—grp—value[n〗=((opcode—sub一grp—value[n-1 ]+1 )《(opcode一sub一grp—lengths-opcode—sub—grp—length[n-l]))來決定值 "opcode—sub—grp—value[n]"。
10. —種用于基于與處理器的指令相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)生成處理器 的硬件配置定義或者處理器的軟件開發(fā)工具的系統(tǒng),其中所述系統(tǒng)使用如權(quán)利要求1到9的任意一項所述的指令操作碼生成系 統(tǒng),基于所述處理器的指令集的技術(shù)規(guī)范數(shù)據(jù)來決定構(gòu)成所述指令集的每 一個指令的操作碼的值。
11. 一種指令操作碼生成方法,包括對與處理器的指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)進行解釋的技術(shù)規(guī)范數(shù)據(jù)分析步驟;決定要向所述指令集的每一個指令的操作碼指派的位寬的步驟; 根據(jù)操作碼位寬對所述指令進行分類的步驟;以及 根據(jù)對所述指令的分類來決定每一個指令的操作碼的值的步驟,以上 各個步驟根據(jù)與所述處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)來操作。
12. 根據(jù)權(quán)利要求ll所述的指令操作碼生成方法,其中 所述操作碼值決定步驟包括將操作碼劃分成兩個子字段并根據(jù)對所述指令的分類來決定每一個子字段的值的步驟。
13. 根據(jù)權(quán)利要求11或12所述的指令操作碼生成系統(tǒng),其中 與所述處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)包括指令的字長、指令中包括的操作數(shù)的數(shù)目、以及每一個操作數(shù)的位寬,并且所述操作碼值決定步驟根據(jù)包括指令的字長、指令中包括的操作數(shù)的 數(shù)目和每一個操作數(shù)的位寬在內(nèi)的與處理器指令集相關(guān)聯(lián)的所述技術(shù)規(guī)范 數(shù)據(jù)來確定每一個指令的操作碼。
14. 一種指令操作碼生成程序,其允許計算機執(zhí)行根據(jù)權(quán)利要求11 到13中的任意一項所述的指令操作碼生成方法。
15. —種用于允許計算機基于與處理器的指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù) 據(jù)來生成處理器的硬件配置定義或處理器的軟件開發(fā)工具的程序,其中所述程序使用根據(jù)權(quán)利要求14所述的指令操作碼生成程序,基于所 述處理器的指令集的技術(shù)規(guī)范數(shù)據(jù)來決定構(gòu)成所述指令集的每一個指令的 操作碼的值。
全文摘要
可以增大處理器指令集設(shè)計工作效率并減少設(shè)計者在調(diào)查指令集時的工作量。一種指令操作碼生成系統(tǒng)包括操作碼位寬決定裝置、指令排序裝置和操作碼值決定裝置。操作碼位寬決定裝置根據(jù)與處理器指令集相關(guān)聯(lián)的技術(shù)規(guī)范數(shù)據(jù)來決定要被指派給每一個指令的操作碼位寬。指令排序裝置根據(jù)操作碼位寬對指令進行排序。操作碼值決定裝置決定每一個指令的操作碼的值。
文檔編號G06F9/30GK101542434SQ20078004324
公開日2009年9月23日 申請日期2007年11月19日 優(yōu)先權(quán)日2006年11月21日
發(fā)明者久村孝寬 申請人:日本電氣株式會社