JPWO2008062768A1 - 命令オペコード生成システム - Google Patents

命令オペコード生成システム Download PDF

Info

Publication number
JPWO2008062768A1
JPWO2008062768A1 JP2008545398A JP2008545398A JPWO2008062768A1 JP WO2008062768 A1 JPWO2008062768 A1 JP WO2008062768A1 JP 2008545398 A JP2008545398 A JP 2008545398A JP 2008545398 A JP2008545398 A JP 2008545398A JP WO2008062768 A1 JPWO2008062768 A1 JP WO2008062768A1
Authority
JP
Japan
Prior art keywords
opcode
instruction
value
length
operation code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008545398A
Other languages
English (en)
Other versions
JP5218063B2 (ja
Inventor
孝寛 久村
孝寛 久村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008545398A priority Critical patent/JP5218063B2/ja
Publication of JPWO2008062768A1 publication Critical patent/JPWO2008062768A1/ja
Application granted granted Critical
Publication of JP5218063B2 publication Critical patent/JP5218063B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

プロセッサの命令セット設計の作業効率を向上させ、命令セットの検討における設計者の負担を軽減する。命令オペコード生成システムは、オペコードビット幅決定手段、命令並び替え手段、及びオペコード値決定手段を有する。オペコードビット幅決定手段は、プロセッサの命令セットに関する仕様データにもとづいて、各命令のオペコードに割り当て可能なビット幅を決める。命令並び替え手段は、オペコードのビット幅にしたがって命令を並び替える。オペコード値決定手段は、各命令のオペコードの値を決定する。

Description

本発明は、プロセッサを設計するツールで用いられる命令オペコード生成システムに関し、特にプロセッサの命令セットの設計において命令オペコードを自動的に決定する技術に関する。
従来、プロセッサの設計を効率良く行なうためにさまざまなツールが開発されている。そのようなツールの一つにプロセッサの設計仕様からプロセッサのハードウェア構成やソフトウェア開発ツールを生成するツールがある。そうしたツールをここでは「プロセッサ設計ツール」と呼ぶことにする。従来のプロセッサ設計ツールでは、命令語長やオペコードやオペランドなどの情報を全て設計者が定義する。一つの命令を定義する際に、その命令の語長を定義したり、その命令がもつオペランドの種類や数を定義したりする。
従来のプロセッサ設計ツールが非特許文献1、2、特許文献1〜3で紹介されている。例えば、非特許文献1のツールは、プロセッサの命令セットを定義し、そのプロセッサのシミュレータを生成することができる。非特許文献1のツールでは、以下のように命令のビットパターンを定義する。
CODING {Dest Src1 Src2 0b010000 0b10000}
ここでは、'{'と'}'で囲まれた部分がビットパターンを表す。DestとSrc1とSrc2は、それぞれレジスタの番号を表す。その後の0b010000と0b10000は、命令のオペコードを表す2進数である。このように命令のビットパターンを構成する情報を全て設計者が定義する必要がある。他の文献で紹介されているツールでも同様である。
命令のオペコードは、その命令を他の命令と区別するための命令フィールドである。命令セットがあらかじめ決まっている場合、命令のオペコードを初めに一度だけ定義すればよい。しかし、どんな命令を命令セットへ追加するべきかを検討する場合には、命令のオペコードを何度か修正する必要がある。
もし命令のオペコードを定義したり修正したりする必要がなければ、設計者が定義する項目が減る。オペコードがどんな値をもつかは重要ではなく、各命令を識別可能なようにオペコードが定義されればよい。命令のオペコードを自動的に定義できるようにすれば、設計者が定義する項目が減り、設計効率の向上につながる。
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. 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. 米国特許第6477683号明細書 米国特許第6862563号明細書 特表2003−518280号公報 特開2003−323463号公報
従来の命令セット生成ツールでは、命令のオペコードを定義するという作業が必要で効率が悪いという問題があった。命令セットの内容を検討して何度も試行錯誤を繰り返す際には、設計者が入力しなければならない項目が少ない方が効率的である。
本発明は、オペコードを自動的に生成できるような命令オペコード自動生成方式を提供することによって、プロセッサの命令セット設計の作業効率を向上させ、命令セットの検討における設計者の負担を軽減することを目的とする。
上記目的を達成するため、本発明に係る命令オペコード生成システムは、プロセッサの命令セットに関する仕様データにもとづいて、前記命令セットの各命令のオペコードに割り当てるビット幅を決めるオペコードビット幅決定手段と、前記オペコードのビット幅にしたがって前記各命令を分類する命令分類手段と、前記各命令の分類にもとづいて、その各命令のオペコードの値を決定するオペコード値決定手段と、を備える。
また、本発明に係るシステムは、プロセッサの命令に関する仕様データにもとづいて、そのプロセッサのハードウェア構成定義又はソフトウェア開発ツールを生成するシステムであって、上記に記載の命令オペコード生成システムを用いて、前記命令セットを構成する各命令のオペコードの値を決定することを特徴とする。
本発明に係る命令オペコード生成方法は、プロセッサの命令セットに関する仕様データにもとづいて、前記仕様データを解釈するための仕様データ解析ステップと、前記命令セットの各命令のオペコードに割り当てるビット幅を決めるステップと、前記オペコードのビット幅にしたがって前記各命令を分類するステップと、前記各命令の分類にもとづいて、その各命令のオペコードの値を決定するステップと、を備えることを特徴とする。
本発明によれば、プロセッサの命令セットに関する仕様データにもとづいてオペコードの値が自動的に生成されるため、設計者がオペコードを定義する必要が無くなり、その分、命令セット設計の作業効率を向上させ、命令セットの検討における設計者の負担を軽減することができる。
本発明の第一の実施の形態に係る命令オペコード生成システムを表す図である。 本発明の第二の実施の形態に係る命令オペコード生成システムを表す図である。 本発明の実施例におけるオペコード割り当て方法のフローチャートである。 (a)はオペコードを命令のビットパターンのMSB側に配置する方法を示す図で、(b)はオペコードを命令のビットパターンのLSB側に配置する方法を示す図である。 第一のオペコード決定方法のフローチャートである。 仕様データとなる命令の例である。 第一のオペコード決定方法によるオペコード割り当ての例である。 第二のオペコード決定方法のフローチャートである。 第二のオペコード決定方法によるオペコード割り当ての例である。 第三のオペコード決定方法のフローチャートである。 第三のオペコード決定方法によるオペコード割り当ての例である。 第四のオペコード決定方法のフローチャートである。 第四のオペコード決定方法のインデックス・サブフィールド決定方法のフローチャートである。 第四のオペコード決定方法のグループ・サブフィールド決定方法のフローチャートである。 仕様データとなる命令の例である。 第四のオペコード決定方法によるインデックス・サブフィールドの割り当ての例である。 第四のオペコード決定方法におけるグループ・サブフィールドのビット幅にもとづく命令並び替え実施後の命令の例である。 第四のオペコード決定方法によるグループ・サブフィールドの割り当ての例である。
符号の説明
100 オペコードビット幅決定手段
200 命令並べ替え手段
300 オペコード値決定手段
400 第1のオペコードサブフィールド値決定手段
500 第2のオペコードサブフィールド値決定手段
600 仕様データ解析手段
700 オペコード出力手段
800 中間データ記憶手段
次に、本発明に係る命令オペコード生成システムを実施するための最良の形態について、図面を参照して詳細に説明する。
(第一の実施の形態)
図1は、本発明の第一の実施の形態に係る命令オペコード生成システムの構成を示す。図1に示す命令オペコード生成システムは、プロセッサの命令セットに関する仕様データにもとづいて、仕様データを解釈する仕様データ解析手段600と、各命令のオペコードに割り当て可能なビット幅を決めるオペコードビット幅決定手段100と、オペコードのビット幅にしたがって命令を並び替える命令並び替え手段200と、各命令のオペコードの値を決定するオペコード値決定手段300と、命令オペコードを出力するオペコード出力手段700と、仕様データ解析手段600とオペコードビット幅決定手段100と命令並び替え手段200とオペコード値決定手段300とオペコード出力手段700が使用するデータを記憶するための中間データ記憶手段800と、を備える。
この構成により、プロセッサの命令セットに関する仕様データにもとづいて各命令のオペコードの値が自動的に生成されるため、設計者がオペコードを定義する必要が無くなり、その分、プロセッサの命令セット設計の作業効率を向上させ、命令セットの検討における設計者の負担を軽減することができる。
(第二の実施の形態)
図2は、本発明の第二の実施の形態に係る命令オペコード生成システムの構成を示す。図2に示す命令オペコード生成システムは、プロセッサの命令セットに関する仕様データにもとづいて、仕様データを解釈する仕様データ解析手段600と、各命令のオペコードに割り当て可能なビット幅を決めるオペコードビット幅決定手段100と、オペコードのビット幅にしたがって命令を並び替える命令並び替え手段200と、オペコードを二つのサブフィールドで構成してそれぞれのサブフィールドの値をオペコードのビット幅にもとづいて決定する二つの手段、すなわち第一のオペコードサブフィールド値決定手段400と、第二のオペコードサブフィールド値決定手段500と、命令オペコードを出力するオペコード出力手段700と、仕様データ解析手段600とオペコードビット幅決定手段100と命令並び替え手段200とオペコード値決定手段300と第一のオペコードサブフィールド値決定手段400と第二のオペコードサブフィールド値決定手段500とオペコード出力手段700が使用するデータを記憶するための中間データ記憶手段800と、を備える。
この構成により、第一の実施の形態と同様に、プロセッサの命令セットに関する仕様データにもとづいて各命令のオペコードの値が自動的に生成されるため、設計者がオペコードを定義する必要が無くなり、その分、プロセッサの命令セット設計の作業効率を向上させ、命令セットの検討における設計者の負担を軽減することができる。さらに、第一の実施の形態の命令オペコード生成システムと比較して、第二の実施の形態の命令オペコード生成システムには生成されたオペコードがデコードし易いという特徴がある。
なお、第一および第二の実施の形態に係る命令オペコード生成システムは、いずれもコンピュータ上で動作するプログラムで実現してもよい。この場合、命令オペコード生成システムを構成するプログラムは、コンピュータを上記の各手段100〜800として機能させるものである。これにより、命令オペコード生成システムは、コンピュータを制御して、コンピュータの記憶装置からプロセッサの命令セットに関する仕様データを読みだし、その仕様データにもとづいて各命令のオペコードを決定する。
以下、図3〜図18を参照して、第一および第二の実施の形態に係る命令オペコード生成システムの実施例について、具体的に説明する。なお、以下の実施例では、前述の図1及び図2に示す各手段100〜800は、コンピュータ機のプロセッサ(CPU:central processing unit)がその記録媒体に配置された命令オペコード生成システム用のプログラムコードを実行することにより実現される。
最初に、プロセッサの命令はどのように定義されるかについて説明する。
プロセッサの命令は、0と1のビットパターンとして表される。命令のビットパターンのどのビットがどのような意味をもつかを予め定義しておいて、プロセッサが命令のビットパターンを読み込んでその命令を解釈する。
命令のビットパターンには、オペコードとオペランドの二種類のフィールドがある。オペコードは、命令の名前や種類を表すフィールドである。命令の名前や種類を表すために、命令には、必ずオペコードが一つ必要である。オペコードは命令の名前や種類を表すので、異なる名前や種類の命令は異なるオペコードをもつ。オペランドは、命令へ与えられるパラメータを表すフィールドである。命令が複数のオペランドをもつこともあるし、一つもオペランドをもたない命令もある。
プロセッサが命令を解釈するには、まず命令のオペコードからその命令の名前や種類を知る。次に命令の名前や種類からオペランドの数や意味を知る。命令の名前や種類とオペランドの数や意味とは一対一の関係にあるので、オペコードを解釈し易いか否かが命令の解釈し易さに直接関係する。
例えば、命令語長が一定で、オペコードの開始ビット位置が一定で、オペコードのビット幅が一定であるなら、非常に簡単にオペコードを解釈できる。しかし、一般的にはオペコードのビット幅は一定ではないし、命令語長やオペコードの開始ビット位置が一定ではないかも知れない。オペコードの解釈を容易にするには、オペコードの開始ビット位置を一定にして、オペコードのビット幅の種類をできるだけ少なくすればよい。
[オペコード生成方法]
次に、命令のオペコードをどのように決定するかについて説明する。なお、本明細書で用いる各種の演算子(=、+=、==、<<、&、~、+、-、等)の意味は、C言語で一般に使用されている意味と同じとする。例えば、「x=y」は、xにyを代入する代入演算を意味する。また「x+=y」は、xにx+yを代入する代入演算を意味する(x=x+yと同じ意味である)。「x==y」は、xとyとの等値性を判断する関係演算を意味し、等しければ真、等しくなければ偽を返す。「x<<y」は、xをy分だけ左にシフトさせるシフト演算を意味する。「x&y」は、xとyとの論理積を計算する論理演算を意味する。「~x」はxの全てのビットを反転する演算を意味する。
まず、以降の説明で使用する言葉について定義しておく。以下のうち、(仕様)と書かれているものは、オペコードを生成するために設計者が定義するべき情報(仕様データ)を意味する。
[定義1]命令の番号をkあるいはiで表す。
[定義2]命令の総数をSとする(仕様)。
[定義3]命令の語長をNとする(仕様)。
[定義4]命令kの全てのオペランドを表すために使用するビットパターンの幅を、total_operands_length[k]とする(仕様)。
[定義5]命令kのオペコードフィールドの長さを、opcode_length[k]ビットとする。
[定義6]命令kのオペコードフィールドの値を、opcode_value[k]とする。opcode_value[k]は、符号無し整数とする。
[定義7]オペコードフィールドの長さがxビットである命令の数を、num_of_inst_having_opcode_length(x)とする。
[定義8]値x以上の2のべき乗の最小値を、min_power_of_2(x)とする。
[定義9]ビット幅がlengthである値xのビットリバースした値を、bitrev(x,length)とする。
次に、上記の定義1〜9を前提にして命令のオペコードを割り当てる方法を以下に示す。以下の方法に対応するフローチャートを図3に示す。
(0)まず、仕様データを読込む(ステップSt0)。
ここでは、仕様データから命令kの全てのオペランドを表すために使用するビットパターンの幅total_operands_length[k]を読み取る。この処理は図1及び図2に示す仕様データ解析手段600により実行される。
(1)次に、命令のオペコードフィールドのビット幅を決定する(ステップSt1)。
ここでは、命令kのオペコードフィールドのビット幅opcode_length[k]を以下のように定義する。
opcode_length[k]=N-total_operands_length[k](k=0,1,...,S-1)
この処理は、図1及び図2に示すオペコードビット幅決定手段100により実行される。
(2)次に、命令をソートする(ステップSt2)。
ここでは、total_operands_length[k]にもとづいて、全ての命令をソートする。ソート後の命令の番号をiで表す。最も多くのビットをオペランドに使用する命令の番号iを0とする。最も少ないビットをオペランドに使用する命令の番号iをS-1とする。
この処理は、図1及び図2に示す命令並び替え手段200により実行される。
(3)次に、命令のオペコードフィールドの値を決定する(ステップSt3)。
ここでは、0番目の命令から順番にオペコードフィールドの値opcode_value[i]を決定する。この処理は、図1に示すオペコード値決定手段300、又は図2に示す第1のオペコードサブフィールド値決定手段400と第2のオペコードサブフィールド値決定手段500によりそれぞれ実行される。
上記の手順において、オペコードフィールドを命令のビットパターンのMost Significant Bit(MSB)側に配置する場合、図4(a)のようにオペコードフィールドを配置する。一方、オペコードフィールドを命令のビットパターンのLeast Significant Bit(LSB)側に配置する場合、図4(b)のようにオペコードフィールドの値をビットリバースした値を配置する。
図4(a)及び(b)において、opcode_length[i]は命令iのオペコードのビット幅を、opcode_value[i]は命令iのオペコードの値を、operand_0[i]は命令iの0番目のオペランドの内容を、operand_1[i]は命令iの1番目のオペランドの内容を、operand_q[i]は命令iのq番目のオペランドの内容を、bitrev(X,Y)はXの下位Yビットをビットリバースした値を、それぞれ表す。
上記の手順のうち、(3)オペコードフィールドの値を決定する方法(ステップSt3)はいくつかある。以降でその方法について説明する。
[第一のオペコード決定方法]
最初に、第一のオペコード決定方法について説明する。
このオペコード決定方法では、まず、前述の方法にしたがって、(1)オペコードフィールドのビット幅の決定、(2)命令のソート、を行なう。その後で、以下のようにして、(3)各命令のオペコードの値opcode_value[i]を決定する。
このオペコード決定方法のフローチャートを図5に示す。図5において、iは命令の番号を、Sは命令の総数を、opcode_value[i]は命令iのオペコードの値を、opcode_length[i]は命令iのオペコードのビット幅を、それぞれ表す。
まず、opcode_value[0]へ0を代入する(ステップSt11)。
続いて、命令の番号iを1からS-1まで順番に変えながら、opcode_value[i]を以下のように決定する(ステップSt12〜St15)。
opcode_value[i]=((opcode_value[i-1]+1)<<(opcode_length[i]-opcode_length[i-1]))
すなわち、opcode_value[i-1]に1を加算する演算を行う一方、opcode_length[i]からopcode_length[i-1]を減算する演算を行う。そして、前者の演算値を後者の演算値分だけ左にシフトさせる演算を行い、その演算値をopcode_value[i]に代入する。このようにして、各命令のオペコードの値を決定する。
上記の第一のオペコード決定方法によるオペコード割り当ての例を図6と図7に示す。図6は14個の命令のビットパターンを表す(S=14)。図6において、Ra、Rb、Rcはレジスタの番号を表すオペランド・フィールドである。IMM6、IMM4、IMM2は数値を表すオペランド・フィールドである。図6において、各命令の語長は16ビットである(N=16)。図6において、ビットパターンのMSB側に書かれた0や1のビットパターンがオペコードを表す。
図6のような命令の語長とオペランド・フィールドのビット幅をもつ命令セットの仕様データが与えられたとして、第一のオペコード決定方法により命令U、V、W、A、B、C、D、E、F、G、H、P、Q、Tのオペコードの値を決定する。
図6の命令をopcode_length[i]にもとづいて並び替え、図5のステップSt11からSt15までの処理を実行すると図7が得られる。図7に示すように、各命令のオペコードの値opcode_value[i](i=0、…、13)は、他のどの命令のオペコードの値とも重複していない。したがって、第一のオペコード決定方法で生成されたオペコードによって、各命令を正しく識別することができる。
図6は命令の仕様データの一つの表現形態である。必ずしも仕様データを図6のように記述する必要はない。テキストファイルとして仕様データを記述してもよい。
上記のように第一のオペコード決定方法は、非常に単純であることが特徴である。さらに、このオペコード決定方法には、下記の他のオペコード決定方法よりも多くの種類のオペコードを表現できるという利点がある。
なお、第一のオペコード決定方法で生成されたオペコードは、そのデコードが多少複雑になる。すなわち、上記のオペコードをデコードするには引き算と比較演算が必要になる。命令を1サイクルでデコードするには、複数の引き算と比較演算を同時に実行する必要があるので、下記の他のオペコード決定方法に比べてオペコードのデコード回路の規模が大きくなる。
[第二のオペコード決定方法]
次に、第二のオペコード決定方法について説明する。
このオペコード決定方法では、まず、前述の方法にしたがって、(1)オペコードフィールドのビット幅の決定(ステップSt1)、(2)命令のソート(ステップSt2)、を行なう。その後で、以下のようにして、(3)各命令のオペコードの値opcode_value[i]を決定する。
このオペコード決定方法のフローチャートを図8に示す。図8において、iは命令の番号を、Sは命令の総数を、opcode_value[i]は命令iのオペコードの値を、opcode_length[i]は命令iのオペコードのビット幅を、それぞれ表す。
まず、opcode_value[0]へ0を代入する(ステップSt21)。
続いて、命令の番号iを1からS-1まで順番に変えながら、命令iのオペコードの値opcode_value[i]を以下のように決定する(ステップSt22〜St30)。
ステップSt23において、opcode_length[i]がopcode_length[i-1]と同じかどうかを
判断する。
opcode_length[i]がopcode_length[i-1]と同じなら(ステップSt23:YES)、opcode_value[i-1]に1を加算する演算を行い、その演算値をopcode_value[i]へ代入する(ステップSt24)。すなわち、opcode_value[i-1]に1を加算した値をopcode_length[i]とする。
一方、opcode_length[i]がopcode_length[i-1]と異なるなら(ステップSt23:NO)、opcode_value[i]=(opcode_value[i-1]<<(opcode_length[i]-opcode_length[i-1]))とする(ステップSt25)。すなわち、opcode_length[i]からopcode_length[i-1]を減算する演算を行う。そして、その演算値分だけ、opcode_value[i-1]を左にシフトさせる演算を行い、その演算値をopcode_value[i]へ代入する。つづいて、ステップSt26を実行する。
ステップSt26において、(1<<(opcode_length[i]-opcode_length[i-1]))という値よりも、命令iと同じオペコード長をもつ命令の数以上の最小の2のべき乗の値(min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i])))が大きいかどうか判断し、大きい方の値をZとする。
ステップSt26の判定がYESの場合、Z=min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i]))として、opcode_value[i]=(opcode_value[i]+Z)&(~(Z-1))という計算式によってopcode_value[i]を求める。
一方、ステップSt26の判定がNOの場合、Z=(1<<(opvode_length[i]-opcode_length[i-1]))として、opcode_value[i]=(opcode_value[i]+Z)&(~(Z-1))という計算式によってopcode_value[i]を求める(ステップSt28)。
以上のようにして、各命令のオペコードの値を決定する。
上記の第二のオペコード決定方法によるオペコード割り当ての例を図6と図9に示す。図6の命令を仕様データとして、それらの命令をopcode_length[i]にもとづいて並び替え、図8のステップSt21からSt30までの処理を実行すると図9が得られる。
図9に示すように、各命令のオペコードの値opcode_value[i](i=0、…、13)は、他のどの命令のオペコードの値とも重複していない。したがって、このオペコード決定方法で生成されたオペコードを使って、各命令を正しく識別することができる。
上記のように第二のオペコード決定方法は、第一のオペコード決定方法よりも多少複雑である。しかし、第二のオペコード決定方法は第一のオペコード決定方法よりも、生成されたオペコードをデコードするのが簡単である。なぜなら、第二のオペコード決定方法によって生成されたオペコードは、同じオペコードのビット幅をもつオペコードのグループを表すビット列と、そのグループの中における命令のインデックスを表すビット列とから構成されているためである。これにより、オペコードを二つのビット列に分けて考えることができるため、オペコードを階層的にデコードできる。
すなわち、第二のオペコード決定方法で生成されたオペコードをデコードする際には、まず同じオペコードのビット幅をもつオペコードのグループを表すビット列をデコードする。そして、最も長いビット列をもつグループを選択し、次にそのグループの中における命令のインデックスを表すビット列をデコードする。第二のオペコード決定方法で生成されたオペコードをデコードする際には、引き算が必要ない。よって、論理演算とシフト演算だけでデコード回路を作ることができるので、第一のオペコード決定方法に比べて第二のオペコード決定方法のデコード回路は簡単になる。
[第三のオペコード決定方法]
次に、第三のオペコード決定方法について説明する。
このオペコード決定方法では、まず、前述の方法にしたがって、(1)オペコードフィールドのビット幅の決定(ステップSt1)、(2)命令のソート(ステップSt2)、を行なう。その後で、以下のようにして、(3)各命令のオペコードの値opcode_value[i]を決定する。
このオペコード決定方法のフローチャートを図10に示す。図10において、iは命令の番号を、Sは命令の総数を、opcode_value[i]は命令iのオペコードの値を、opcode_length[i]は命令iのオペコードのビット幅を、それぞれ表す。
まず、opcode_value[0]へ0を代入する(ステップSt31)。
続いて、命令の番号iを1からS-1まで順番に変えながら、opcode_value[i]を以下のようにして決定する(ステップSt32〜St38)。
ステップSt23において、opcode_length[i]がopcode_length[i-1]と同じかどうか判断する。
opcode_length[i]がopcode_length[i-1]と同じなら(ステップSt23:YES)、opcode_value[i-1]に1を加算する演算を行い、その演算値をopcode_value[i]へ代入する(ステップSt24)。
一方、opcode_length[i]がopcode_length[i-1]と異なるなら(ステップSt23:NO)、命令iと同じオペコード長をもつ命令の数以上の最小の2のべき乗の値(min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i-1]))をZとする(ステップSt35)。つづいてステップ36を実行する。
ステップ36において、opcode_value[i]=((opcode_value[i-1]+Z)<<(opcode_length[i]-opcode_length[i-1]))という計算式にもとづいてopcode_value[i]を求める。
以上のようにして、各命令のオペコードの値を決定する。
上記の第三のオペコード決定方法によるオペコード割り当ての例を図6と図11に示す。図6の命令を仕様データとして、それらの命令をopcode_length[i]にもとづいて並び替え、図8のステップSt31からSt38までの処理を実行すると図11が得られる。
図11に示すように、各命令のオペコードの値opcode_value[i](i=0、…、13)は、他のどの命令のオペコードの値とも重複していない。したがって、このオペコード決定方法で生成されたオペコードを使って、各命令を正しく識別することができる。
第三のオペコード決定方法によって生成されたオペコードをデコードするには、引き算と比較演算が必要になる。この点は第一のオペコード決定方法と同様である。
なお、第三のオペコード決定方法は、第一や第二のオペコード決定方法に比べると、第一のオペコード決定方法よりもオペコード決定方法が単純でなく、第二のオペコード決定方法よりもオペコードのデコードが簡単ではない。
[第四のオペコード決定方法]
次に、第四のオペコード決定方法について説明する。
このオペコード決定方法では、オペコードフィールドを二つのサブフィールドに分ける。一つはグループ・サブフィールドで、もう一つはインデックス・サブフィールドとする。グループ・サブフィールドをMSB側に配置し、インデックス・サブフィールドをLSB側に配置する。この方法では、インデックス・サブフィールドとグループ・サブフィールドを別々に決定する。
このオペコード決定方法のフローチャートを図12に示す。同図に示すように、この方法は、インデックス・サブフィールドのビット幅を決定する手順と(ステップSt41)、インデックス・サブフィールドの値を決定する手順と(ステップSt42)、グループ・サブフィールドのビット幅を決定する手順と(ステップSt43)、グループ・サブフィールドのビット幅にもとづいて命令を並び替える手順と(ステップSt44)、グループ・サブフィールドの値を決定する手順と(ステップSt45)、から構成される。
ここで、二つのサブフィールドに関する記号を以下のように定義する。
[定義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に示す。図13において、iは命令の番号を、Sは命令の総数を、opcode_value[i]は命令iのオペコードの値を、opcode_length[i]は命令iのオペコードのビット幅を、opcode_sub_idx_value[i]は命令iのインデックス・サブフィールドの値を、それぞれ表す。
まず、opcode_sub_idx_value[0]へ0を代入する(ステップSt51)。
続いて、命令の番号iを1からS-1まで順番に変えながら、opcode_sub_idx_value[i]を以下のようにして決定する(ステップSt52〜St57)。
ステップSt53において、opcode_length[i]がopcode_length[i-1]と同じかどうか判断する。
opcode_length[i]がopcode_length[i-1]と同じなら(ステップSt53:YES)、opcode_sub_idx_value[i-1]に1を加算する演算を行い、その演算値をopcode_sub_idx_value[i]へ代入する(ステップSt54)。
一方、opcode_length[i]がopcode_length[i-1]と異なるなら(ステップSt53:NO)、opcode_sub_idx_value[i]へ0を代入する(ステップSt55)。
次に、グループ・サブフィールドのビット幅にもとづいて命令を並び替える手順について説明する。命令iのグループ・サブフィールドの長さopcode_sub_grp_length[i]にもとづいて全ての命令を並び替える。並び替えられた後の命令の番号をnとする。最も多くのビットをグループ・サブフィールドに使用する命令の番号nを0、最も少ないビットをグループ・サブフィールドに使用する命令の番号nをS-1とする。
次に、グループ・サブフィールドの値を決定する手順を以下に示す。この手順に対応するフローチャートを図14に示す。図14において、nは命令の番号を、Sは命令の総数を、opcode_value[n]は命令nのオペコードの値を、opcode_length[n]は命令nのオペコードのビット幅を、opcode_sub_grp_value[n]は命令nのグループ・サブフィールドの値を、opcode_sub_grp_length[n]は命令nのグループ・サブフィールドのビット幅を、それぞれ表す。
まず、opcode_sub_grp_value[0]へ0を代入する(ステップSt61)。
続いて、命令の番号nを1からS-1まで順番に変えながら、opcode_sub_grp_value[n]を以下のようにして決定する(ステップSt62〜St66)。
ステップSt63において、opcode_length[n]がopcode_length[n-1]と同じかどうか判断する。
opcode_length[n]がopcode_length[n-1]と同じなら(ステップSt63:YES)、opcode_sub_grp_value[n-1]をopcode_sub_grp_value[n]へ代入する(ステップSt64)。
一方、opcode_length[n]がopcode_length[n-1]と異なるなら(ステップSt63:NO)、opcode_sub_grp_value[n]=((opcode_sub_grp_value[n-1]+1)<<(opcode_sub_grp_length[n]-opcode_sub_grp_length[n-1]))という計算式にもとづいてopcode_sub_grp_value[n]を求める(ステップSt65)。
以上のようにして、各命令のオペコードの値を決定する。
上記の第四のオペコード決定方法によるオペコード割り当ての例を図15から図18に示す。
図15は14個の命令のビットパターンを表す(S=14)。図15において、Ra、Rb、Rcはレジスタの番号を表すオペランド・フィールドである。IMM6、IMM4、IMM2は数値を表すオペランド・フィールドである。各命令の語長は16ビットである(N=16)。命令ビットパターンのLSB側にオペランドを配置し、命令ビットパターンのMSB側にオペコードフィールドを配置する。
図15の命令を仕様データとして、それらの命令をopcode_length[i]にもとづいて並び替え、図13のステップSt51からSt57までの処理を実行すると図16が得られる。図16は図15の命令に対するインデックス・サブフィールドの値を表す。
つづいて、インデックス・サブフィールドの値が求まった図16の命令を使って、それらの命令のグループ・サブフィールドのビット幅を求める。そして、グループ・サブフィールドのビット幅にもとづいて命令を並び替えると図17が得られる。
つづいて、図17の命令に対して図14のステップSt61からステップSt67までの処理を実行すると図18が得られる。図18は図17の命令に対するグループ・サブフィールドの値を表す。以上の処理によって、各命令のインデックス・サブフィールドとグループ・サブフィールドの値が求まる。そして、インデックス・サブフィールドとグループ・サブフィールドとを連結したビット列がオペコードの値となる。
図18に示すように、グループ・サブフィールドの値opcode_sub_grp_value[i](i=0、…、13)と、インデックス・サブフィールドの値opcode_sub_idx_value[i](i=0、…、13)とで構成される各命令のオペコードの値は、他のどの命令のオペコードの値とも重複していない。したがって、このオペコード決定方法を使って、各命令をオペコードによって正しく識別することができる。
第四のオペコード決定方法は、同じオペコードのビット幅をもつオペコードのグループを表すビット列と、そのグループの中における命令のインデックスを表すビット列とから構成される。これは、第二のオペコードと同じ特徴である。したがって、第二のオペコードと同様に、オペコードをデコードするのが簡単である。オペコードのデコード処理には引き算が必要無く、論理演算とシフト演算だけでオペコードをデコードできる。
さらに、第四のオペコード決定方法によって生成されたオペコードには、短いオペコードのグループ・サブフィールドが別の長いオペコードのグループ・サブフィールドに部分的に一致することがない、という特徴がある。これは第二のオペコード決定方法にはない特徴である。この特徴によって、第二のオペコード決定方法よりもデコード処理が簡単になる。
すなわち、第二のオペコード決定方法で生成されたオペコードをデコードする際には、まず同じオペコードのビット幅をもつオペコードのグループを表すビット列をデコードし、最も長いビット列をもつグループを選択する必要がある。なぜなら、同じオペコードのビット幅をもつオペコードのグループを表すビット列が部分的に一致しているため、それらの中から最もふさわしいグループを選択しなければならないからである。第二のオペコード決定方法に比べて、第四のオペコード決定方法は、表現できるオペコードの種類が少ない。命令語長が24ビットや32ビットなどの場合には、この点はあまり問題にならないだろう。
次に、上記第一〜第四のオペコード決定方法のうち、何れのオペコード決定方法を選択するかについて説明する。
一般的には、デコード処理が簡単になるようなオペコード決定方法を選択するべきである。これまでに述べたオペコード決定方法の中では、第四のオペコード決定方法のデコード処理が最も容易である。もし、表現可能なオペコードの数を多くしたい場合には、第二のオペコード決定方法を選択してもよい。
以上、本発明の実施例を詳細に説明したが、本発明は、代表的に例示した上述の実施例に限定されるものではなく、当業者であれば、特許請求の範囲の記載内容に基づき、本発明の要旨を逸脱しない範囲内で種々の態様に変形、変更、応用することができ、これらの変形例、変更例、応用例も本発明の権利範囲に属するものである。
[変形例]
これまでに述べた実施例では、命令のビットパターンのMSB側にオペコードが配置される。しかし、オペコードの位置はMSB側である必要はない。命令のビットパターンのLSB側にオペコードを配置してもよい。あるいは、命令のビットパターンの中間的な位置にオペコードを配置してもよい。あるいは、オペコードをいくつかの断片に分けて命令のビットパターンの中に配置してもよい。
[応用例]
本発明の実施例を特許文献3にあるようなプロセッサのハードウェア構成生成ツールやソフトウェア開発ツール生成ツールに応用することも可能である。こうしたツールはプロセッサの仕様からハードウェア構成あるいはソフトウェア開発ツールを生成する。プロセッサの仕様には命令セットの仕様も含まれる。特許文献3では命令セットの仕様にオペコードのビット幅や値が含まれていたが、本発明の実施例を使えばオペコードのビット幅と値を自動的に決定することができる。そして決定されたオペコードを正しくデコードしたりエンコードしたりするためのハードウェア構成やソフトウェア開発ツールを生成するといった応用も可能になる。
本発明の実施例に係る命令オペコード生成システムを構成する各手段の少なくとも一部の機能を、コンピュータのプログラムコードを用いて実現する場合、かかるプログラムコード及びこれを記録するコンピュータ読み取り可能な記録媒体は、本発明の範疇に含まれる。この場合のプログラムコードは、上記の機能をコンピュータに実現させるものであればよい。例えば、オペレーティングシステム(OS)等の他のプログラムコードと連携して上記の機能が実現されてもよい。また、このようなプログラムコードを記録するコンピュータ読み取り可能な記録媒体としては、例えばROM(read only memory)等の半導体メモリ、ディスク型の記録媒体(ハードディスク等の磁気ディスク、光ディスク、光磁気ディスク等)、テープ型の記録媒体等、いずれの形態の記録媒体でも適用可能である。
また、本発明の実施例に係る命令オペコード生成システムを構成するプログラムコードの命令を実行するコンピュータ機についても、本発明の範疇に含まれる。このコンピュータ機は、プログラム制御で動作するプロセッサ(CPU)と、制御プログラムや制御データ等を格納する記憶領域を有するメモリと、各種入出力装置(例えば、ハードディスク等の外部記録装置、通信モデムやLAN(local area network)インタフェース等の通信装置、CRT(cathode ray tube)や液晶ディスプレイ等の表示装置、キーボードやマウス等の入力装置等の各種周辺装置の少なくとも一部とを用いて実現することが可能である。この場合、上記各手段の機能を実現するために用いられるプロセッサ、メモリ、及び各種入出力装置は、本発明の範疇に含まれる。このコンピュータ機は、スタンドアロン型のものでも、ネットワークに通信可能に接続された複数のコンピュータ機から構成されるものでも、いずれの形態でも適用可能である。
この出願は、2006年11月21日に出願された日本出願特願2006−314260号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明を使用すれば、命令セットの仕様記述から各命令のオペコードを自動的に生成することができる。プロセッサの仕様記述からプロセッサのハードウェア記述を生成するようなシステムにおいて本発明を使用することが可能である。あるいは、命令セットの使用記述からアセンブラやコンパイラなどのソフトウェア開発ツールを生成するようなシステムにおいても本発明を使用することが可能である。

Claims (15)

  1. プロセッサの命令セットに関する仕様データにもとづいて、前記命令セットの各命令のオペコードに割り当てるビット幅を決めるオペコードビット幅決定手段と、
    前記オペコードのビット幅にしたがって前記各命令を分類する命令分類手段と、
    前記各命令の分類にもとづいて、その各命令のオペコードの値を決定するオペコード値決定手段と、
    を備えることを特徴とする命令オペコード生成システム。
  2. 請求項1に記載の命令オペコード生成システムであって、
    前記仕様データを解釈するための仕様データ解析手段と、
    前記仕様データ解析手段と前記オペコードビット幅決定手段と前記命令分類手段と前記オペコード値決定手段とが出力するデータを記憶するための中間データ記憶手段と、
    をさらに備えることを特徴とする命令オペコード生成システム。
  3. 請求項2に記載の命令オペコード生成システムにおいて、
    前記オペコード値決定手段は、
    前記オペコードを二つのサブフィールドで構成してそれぞれのサブフィールドの値を前記各命令の分類にもとづいて決定する手段、
    を備えることを特徴とする命令オペコード生成システム。
  4. 請求項2または請求項3に記載の命令オペコード生成システムであって、
    前記プロセッサの命令セットに関する仕様データには、命令の語長と、命令がもつオペランドの個数と、各オペランドのビット幅と、が含まれ、
    前記オペコード値決定手段は、前記命令の語長と、前記命令がもつオペランドの個数と、前記各オペランドのビット幅とを含む前記プロセッサの命令セットに関する仕様データにもとづいて、各命令のオペコードを決定することを特徴とする命令オペコード生成システム。
  5. 請求項4に記載の命令オペコード生成システムにおいて、
    前記命令の番号をkとし、前記命令の総数をSとし、前記命令の語長をNとし、前記命令kの全てのオペランドを表すために使用するビットパターンの幅total_operands_length[k]とし、前記命令kのオペコードフィールドの長さをopcode_length[k]ビットとし、前記命令kのオペコードフィールドの値をopcode_value[k]とし、前記オペコードフィールドの長さがxビットである命令の数をnum_of_inst_having_opcode_length(x)とし、値x以上の2のべき乗の最小値をmin_power_of_2(x)としたとき、
    前記オペコードビット幅決定手段は、前記命令kのオペコードフィールドのビット幅opcode_length[k]を、
    opcode_length[k]=N-total_operands_length[k](k=0,1,...,S-1)
    により求め、
    前記命令分類手段は、前記命令kの全てのオペランドを表すために使用するビットパターンの幅total_operands_length[k]にもとづいて全ての前記命令を並び替え、
    並び替えられた後の前記命令の番号をiとし、最も多くのビットをオペランドに使用する命令の番号iを0とし、最も少ないビットをオペランドに使用する命令の番号iをS-1としたとき、
    前記オペコード値決定手段は、0番目の命令からS-1番目の命令まで順番に命令iのオペコードフィールドの値opcode_value[i]を決定する、ことを特徴とする命令オペコード生成システム。
  6. 請求項5に記載の命令オペコード生成システムにおいて、
    前記命令iのオペコードフィールドの値opcode_value[i]を決定する手段は、
    opcode_value[0]へ0を代入後、前記命令の番号iを1からS-1まで順番に変えながら、opcode_value[i]を、
    opcode_value[i]=((opcode_value[i-1]+1)<<(opcode_length[i]-opcode_length[i-1]))
    により決定することを特徴とする命令オペコード生成システム。
  7. 請求項5に記載の命令オペコード生成システムにおいて、
    前記命令iのオペコードフィールドの値opcode_value[i]を決定する手段は、
    opcode_value[0]へ0を代入後、前記命令の番号iを1からS-1まで順番に変えながら、opcode_value[i]を、
    (1)opcode_length[i]がopcode_length[i-1]と同じときに、opcode_value[i]=opcode
    _value[i-1]+1により決定し、
    (2)opcode_length[i]がopcode_length[i-1]と異なるときに、
    (1<<(opcode_length[i]-opcode_length[i-1]))と、命令iと同じオペコード長をもつ命令の数以上の最小の2のべき乗min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i]))との大きい方の値をZとして、opcode_value[i]=((opcode_value[i-1]<<(opcode_length[i]-opcode_length[i-1]))+Z)&(~(Z-1))により決定することを特徴とする命令
    オペコード生成システム。
  8. 請求項5に記載の命令オペコード生成システムにおいて、
    前記命令iのオペコードフィールドの値opcode_value[i]を決定する手段は、
    opcode_value[0]へ0を代入後、命令の番号iを1からS-1まで順番に変えながら、opcode_value[i]を、
    (1)opcode_length[i]がopcode_length[i-1]と同じときに、opcode_value[i]=opcode_value[i-1]+1により決定し、
    (2)opcode_length[i]がopcode_length[i-1]と異なるときに、命令iと同じオペコード長をもつ命令の数以上の最小の2のべき乗(min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i-1]))をZとして、opcode_value[i]=((opcode_value[i-1]+Z)<<(opcode_length[i]-opcode_length[i-1]))により決定することを特徴とする命令オペコード生成システム。
  9. 請求項5に記載の命令オペコード生成システムにおいて、
    前記オペコードフィールドはグループ・サブフィールドとインデックス・サブフィールドとに区分され、
    前記命令iのオペコードフィールドの値opcode_value[i]を決定する手段は、前記インデックス・サブフィールドの値を決定する手段と、前記グループ・サブフィールドの値を決定する手段とを有し、
    前記命令iのインデックス・サブフィールドの長さをopcode_sub_idx_length[i]とし、前記命令iのインデックス・サブフィールドの値をopcode_sub_idx_value[i]とし、全ての
    命令についてインデックス・サブフィールドの長さをopcode_sub_idx_length[i]=min_power_of_2(num_of_inst_having_opcode_length(opcode_length[i]))とし、前記命令iのグループ・サブフィールドの長さをopcode_sub_grp_length[i]とし、前記命令iのグループ・サブフィールドの値をopcode_sub_grp_value[i]とし、全ての命令についてグループ・サブフィールドの長さを opcode_sub_grp_length[i]=opcode_length[i]-opcode_sub_idx_length[i]としたとき、
    前記インデックス・サブフィールドの値を決定する手段は、
    opcode_sub_idx_value[0]へ0を代入後、命令の番号iを1からS-1まで順番に変えながら、opcode_sub_idx_value[i]を、
    (1)opcode_length[i]がopcode_length[i-1]と同じときに、opcode_sub_idx_value[i]=opcode_sub_idx_value[i-1]+1により決定し、
    (2)opcode_length[i]がopcode_length[i-1]と異なるときに、opcode_sub_idx_value[i]=0により決定し、
    前記命令iのグループ・サブフィールドの長さopcode_sub_grp_length[i]にもとづいて全ての前記命令を並び替え、並び替えられた後の前記命令の番号をnとし、最も多くのビットをグループ・サブフィールドに使用する命令の番号nを0とし、最も少ないビットをグループ・サブフィールドに使用する命令の番号nをS-1とし、
    前記グループ・サブフィールドの値を決定する手段は、
    opcode_sub_grp_value[0]へ0を代入後、命令の番号nを1からS-1まで順番に変えながら、opcode_sub_grp_value[n]を、
    (1)opcode_length[n]がopcode_length[n-1]と同じときに、
    opcode_sub_grp_value[n]=opcode_sub_grp_value[n-1]により決定し、
    (2)opcode_length[n]がopcode_length[n-1]と異なるときに、
    opcode_sub_grp_value[n]=((opcode_sub_grp_value[n-1]+1)<<(opcode_sub_grp_length[n]-opcode_sub_grp_length[n-1]))により決定することを特徴とする命令オペコード生成システム。
  10. プロセッサの命令に関する仕様データにもとづいて、そのプロセッサのハードウェア構成定義又はソフトウェア開発ツールを生成するシステムであって、
    請求項1から9のいずれかに記載の命令オペコード生成システムを用いて、前記プロセッサの命令セットに関する仕様データにもとづいて、前記命令セットを構成する各命令のオペコードの値を決定することを特徴とするシステム。
  11. プロセッサの命令セットに関する仕様データにもとづいて、
    前記仕様データを解釈するための仕様データ解析ステップと、
    前記命令セットの各命令のオペコードに割り当てるビット幅を決めるステップと、
    前記オペコードのビット幅にしたがって前記各命令を分類するステップと、
    前記各命令の分類にもとづいて、その各命令のオペコードの値を決定するステップと、
    を備えることを特徴とする命令オペコード生成方法。
  12. 請求項11に記載の命令オペコード生成方法において、
    前記オペコード値決定ステップは、
    前記オペコードを二つのサブフィールドで構成してそれぞれのサブフィールドの値を前記各命令の分類にもとづいて決定するステップと、
    を備えることを特徴とする命令オペコード生成方法。
  13. 請求項11または請求項12に記載の命令オペコード生成方法であって、
    前記プロセッサの命令セットに関する仕様データには、命令の語長と、命令がもつオペランドの個数と、各オペランドのビット幅と、が含まれ、
    前記オペコード値決定ステップは、前記命令の語長と、前記命令がもつオペランドの個数と、前記各オペランドのビット幅とを含む前記プロセッサの命令セットに関する仕様データにもとづいて、各命令のオペコードを決定することを特徴とする命令オペコード生成方法。
  14. 請求項11から請求項13のいずれかに記載の命令オペコード生成方法をコンピュータに実行させることを特徴とする命令オペコード生成プログラム。
  15. プロセッサの命令に関する仕様データにもとづいて、そのプロセッサのハードウェア構成定義又はソフトウェア開発ツールをコンピュータに生成させるプログラムであって、
    請求項14に記載の命令オペコード生成プログラムを用いて、前記プロセッサの命令セットに関する仕様データにもとづいて、前記命令セットを構成する各命令のオペコードの値を決定することを特徴とするプログラム。
JP2008545398A 2006-11-21 2007-11-19 命令オペコード生成システム Expired - Fee Related JP5218063B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008545398A JP5218063B2 (ja) 2006-11-21 2007-11-19 命令オペコード生成システム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2006314260 2006-11-21
JP2006314260 2006-11-21
JP2008545398A JP5218063B2 (ja) 2006-11-21 2007-11-19 命令オペコード生成システム
PCT/JP2007/072413 WO2008062768A1 (fr) 2006-11-21 2007-11-19 Système de génération de code d'opération de commande

Publications (2)

Publication Number Publication Date
JPWO2008062768A1 true JPWO2008062768A1 (ja) 2010-03-04
JP5218063B2 JP5218063B2 (ja) 2013-06-26

Family

ID=39429698

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008545398A Expired - Fee Related JP5218063B2 (ja) 2006-11-21 2007-11-19 命令オペコード生成システム

Country Status (6)

Country Link
US (1) US8935512B2 (ja)
EP (1) EP2096533A4 (ja)
JP (1) JP5218063B2 (ja)
CN (1) CN101542434A (ja)
TW (1) TWI381309B (ja)
WO (1) WO2008062768A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI513282B (zh) * 2013-11-21 2015-12-11 Mstar Semiconductor Inc 快取記憶體管理裝置及應用該快取記憶體管理裝置之動態影像系統及方法
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
US10831478B2 (en) * 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
CN111258633B (zh) * 2018-11-30 2022-08-09 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备
CN110007962A (zh) * 2019-03-08 2019-07-12 浙江大学 一种基于代码自动生成的指令集模拟方法
CN113656071B (zh) * 2021-10-18 2022-02-08 深圳市智想科技有限公司 一种基于risc架构的cpu指令集系统及cpu系统

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03271829A (ja) * 1990-03-20 1991-12-03 Fujitsu Ltd 情報処理装置
DE69431998T2 (de) * 1993-11-05 2004-08-05 Intergraph Hardware Technologies Co., Las Vegas Superskalare Rechnerarchitektur mit Softwarescheduling
US5493508A (en) * 1994-06-01 1996-02-20 Lsi Logic Corporation Specification and design of complex digital systems
US5636352A (en) * 1994-12-16 1997-06-03 International Business Machines Corporation Method and apparatus for utilizing condensed instructions
US5809273A (en) * 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
GB2308470B (en) * 1995-12-22 2000-02-16 Nokia Mobile Phones Ltd Program memory scheme for processors
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
JP2003518280A (ja) 1999-02-05 2003-06-03 テンシリカ インコーポレイテッド 構成可能なプロセッサを設計するための自動プロセッサ生成システムおよび生成方法
US6477683B1 (en) 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6385757B1 (en) * 1999-08-20 2002-05-07 Hewlett-Packard Company Auto design of VLIW processors
US6457173B1 (en) * 1999-08-20 2002-09-24 Hewlett-Packard Company Automatic design of VLIW instruction formats
US7036106B1 (en) 2000-02-17 2006-04-25 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
AU2001245720A1 (en) * 2000-03-15 2001-09-24 Arc International Plc Method and apparatus for processor code optimization using code compression
US7069420B1 (en) * 2000-09-28 2006-06-27 Intel Corporation Decode and dispatch of multi-issue and multiple width instructions
US6948051B2 (en) * 2001-05-15 2005-09-20 International Business Machines Corporation Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width
JP2003241975A (ja) * 2002-02-21 2003-08-29 Matsushita Electric Ind Co Ltd コンパイラ装置および半導体集積回路
JP2003288203A (ja) * 2002-03-27 2003-10-10 Asahi Kasei Corp プロセッサの開発支援装置
JP4202673B2 (ja) 2002-04-26 2008-12-24 株式会社東芝 システムlsi開発環境生成方法及びそのプログラム
US7162617B2 (en) * 2003-02-14 2007-01-09 Fine Arc Incorporated Data processor with changeable architecture
US7299460B2 (en) * 2003-05-29 2007-11-20 Nec Corporation Method and computer program for converting an assembly language program for one processor to another
JP2005293448A (ja) 2004-04-05 2005-10-20 Renesas Technology Corp データ処理装置の開発方法、データプロセッサの開発支援プログラム、設計データの提供方法、及びデータ処理システムの開発方法
JP4464316B2 (ja) 2005-05-13 2010-05-19 明治乳業株式会社 チロシン含有飲料の結晶析出の抑制方法
US20070038984A1 (en) * 2005-08-12 2007-02-15 Gschwind Michael K Methods for generating code for an architecture encoding an extended register specification
JP2007122626A (ja) * 2005-10-31 2007-05-17 Matsushita Electric Ind Co Ltd マイクロプロセッサ

Also Published As

Publication number Publication date
EP2096533A4 (en) 2011-06-22
CN101542434A (zh) 2009-09-23
WO2008062768A1 (fr) 2008-05-29
JP5218063B2 (ja) 2013-06-26
EP2096533A1 (en) 2009-09-02
TW200839610A (en) 2008-10-01
US20100037039A1 (en) 2010-02-11
TWI381309B (en) 2013-01-01
US8935512B2 (en) 2015-01-13

Similar Documents

Publication Publication Date Title
JP5218063B2 (ja) 命令オペコード生成システム
Agerwala Microprogram optimization: A survey
US5918035A (en) Method for processor modeling in code generation and instruction set simulation
JP5646737B2 (ja) 条件付き比較命令
US20040154006A1 (en) Compiler apparatus and compilation method
JPH096609A (ja) プログラム実行装置およびプログラム変換方法
EP1253515A2 (en) Method for verifying basic instruction arrangement in VLIW instructions for variable length VLIW processor
US5964861A (en) Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set
JP3246438B2 (ja) 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体
KR20010024576A (ko) 기계 기술로부터의 명령군 구조의 시뮬레이터 및 어셈블러생성 방법
JPH0877221A (ja) 消費電力を低減する有限状態マシンを設計するシステム及び方法
JP2001005675A (ja) プログラム変換装置及びプロセッサ
Britton MIPS assembly language programming
US8645758B2 (en) Determining page faulting behavior of a memory operation
JP7295469B2 (ja) 関数生成プログラム、関数生成方法、及び情報処理装置
JP5399601B2 (ja) 実装コード開発システム、及び実装コード開発プログラム
CN114791811B (zh) 一种基于元函数模板的汇编器实现方法
CN104126169A (zh) 用于在两个向量寄存器的相应打包数据元素之间执行绝对差计算的系统、装置和方法
JP3464019B2 (ja) レジスタの割付方式
Harper Stream fusion on Haskell Unicode strings
Zimmermann On the correctness of transformations in compiler back-ends
JP2831697B2 (ja) アーキテクチャ合成装置
JP2006079494A (ja) コンパイラ
JP6243619B2 (ja) プログラム解析装置及びプログラム解析方法
Metrolho et al. A language for automatic generation of fast instruction-set compiled simulators

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101015

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20101019

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20101019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121121

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130218

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160315

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees