JP6529588B2 - 情報処理装置、情報処理方法及びプログラム - Google Patents
情報処理装置、情報処理方法及びプログラム Download PDFInfo
- Publication number
- JP6529588B2 JP6529588B2 JP2017528252A JP2017528252A JP6529588B2 JP 6529588 B2 JP6529588 B2 JP 6529588B2 JP 2017528252 A JP2017528252 A JP 2017528252A JP 2017528252 A JP2017528252 A JP 2017528252A JP 6529588 B2 JP6529588 B2 JP 6529588B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instruction table
- exception
- condition
- entries
- 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.)
- Active
Links
- 230000010365 information processing Effects 0.000 title claims description 20
- 238000003672 processing method Methods 0.000 title claims description 6
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 title 1
- 238000000034 method Methods 0.000 claims description 148
- 238000012545 processing Methods 0.000 description 94
- 238000012790 confirmation Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 11
- 238000007796 conventional method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
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)
Description
一般に、CPU(Central Processing Unit)の命令は、オペコードを含むビット列から構成される。命令のオペコードは、命令ビット列中で0又は1の固定の値を保持するビット群である。CPUの命令は一意なオペコードを持つため、命令デコーダは、命令を識別するためにオペコードを参照する。しかし、命令のオペコードは、ISA(Instruction Set Architecture)によって異なる。このため、複数のISAに対応した命令セットシミュレータ又はディスアセンブラを得るためには、ISA毎に命令デコード処理を開発する必要がある。
しかし、命令テーブルの検索時間は、命令テーブルのエントリ数、すなわちISAの命令数に比例して大きくなる。このため、命令デコードの処理効率が悪いという問題があった。
この問題に対し、従来技術は、命令テーブルからデコード用ツリーを生成し、命令テーブルのかわりにデコード用ツリーを用いることで、処理時間の短縮を図っている。デコード用ツリーを用いたデコード処理では、デコーダは、命令テーブルの線形探索の代わりにデコード用ツリーを探索する。一般にツリーの平均探索時間は、テーブルの線形探索に要する平均時間より短い。
このように従来のツリー作成方法は、例外条件が存在する命令セットに対して適用することができないという問題があった。
デコード用ツリー作成部100は、ツリー作成部101と、命令テーブル分割部104とを備える。デコード用ツリー作成部100は、例外条件付き命令テーブル110の入力を受けて、デコード用ツリー130を出力する。
ツリー作成部101は、ノード作成部102と、リーフ作成部103とを有する。
なお、本実施の形態に係る情報処理方法は、デコード用ツリー作成部100により実行される方法である。
本実施の形態では、オペコード情報は、オペコードマスク及びオペコードパターンの対で構成されているものとするが、これに限定されない。
例外条件集合は、エントリに対応する命令が例外条件を持たない場合は空である。また、例外条件集合は、エントリに対応する命令が例外条件を複数持つ場合、複数の要素を持つ。例えば、エントリEの例外条件は、命令ビット列の一部が特定のパターンに合致する場合に、この命令ビット列はエントリEに一致しないことを意味する。本実施の形態では例外条件は、例外マスク及び例外パターンの対で構成されているものとするが、これに限定されない。例外条件が例外マスクEMと例外パターンEPとの対である場合、ある命令ビット列Iについて、I&EM=EPが成り立つ場合、この命令ビット列Iは例外条件を満足する。ここで、「&」はビット毎の論理積を表す。
デコード用ツリー130のノードは、1つ以上の子を持ち、子はノード及びリーフのいずれかである。
ノードは、命令列のビット群を検査するための情報を持ち、ビット群が持つ値と子を関連付けて保持する。例えば、ノードは、後述するマスク及びビットパターンの組み合わせに子を関連付ける。なお、マスク及びビットパターンの組み合わせに関連付けられる子は、この組み合わせにより分割された命令テーブルにより作成されるノード又はリーフである。また、デコード用ツリー130のリーフは、子を持たない。本実施の形態での具体的なノードとリーフの保持方法については、ノード作成処理とリーフ作成処理の詳細と共に説明する。
以下では、従来のデコード用ツリー作成方法を、図2〜図4を用いて説明し、その具体例を図5〜図8を用いて説明する。
デコード用ツリー作成処理では、命令テーブルを入力とし、命令テーブルに対応したデコード用ツリーが再帰的に作成される。また、デコード用ツリー作成処理では、入力命令テーブルが1つ以上のエントリを持つことが前提とされる。
ステップS11では、リーフ作成部103は、リーフを作成する。リーフは属性として命令識別子を保持する。リーフ作成部103は、リーフ作成と同時に命令テーブルの唯一のエントリから命令識別子を取得し、取得された命令識別子をリーフの属性として設定する。
ステップS12では、ノード作成部102は、命令テーブルを入力としてツリーのノードを作成する。ノードの作成処理については、図3を用いて詳細を説明する。
ノード作成処理の入力は、命令テーブルであり、その出力は、2つ以上の子を持つノードである。ノード作成処理では、入力命令テーブルが2つ以上のエントリを持つことが前提とされる。
算出された値の中でi番目のビットが1の場合、入力命令テーブル中の全ての命令について、命令のi番目のビットはオペコードの一部であることを意味する。以降の処理では、命令テーブル分割部104は、この値で決定されるマスクから得られる値で命令テーブルを2つ以上に分割し、ツリー作成部101は、分割された命令テーブルに対してツリー作成処理(図2)を再帰的に適用することで、デコード用ツリーの全体が作成される。
ステップS22では、ノード作成部102は、有効に機能するマスクが算出できなかったため、処理の結果として作成に失敗したことを返し、処理を終了する。
なお、マスクm中で値が1のビットがN個存在する場合、マスクmと対応するパターン集合Pに含まれる要素の数は、2のN乗個である。例えば、マスクmの値が「0101」である場合、パターン集合Pの要素は、「0000」、「0001」「0100」及び「0101」の4つである。
ステップS26は、パターン一致命令テーブル作成処理である。パターン一致命令テーブル作成処理では、命令テーブル分割部104は、巡回中のビットパターンと一致する命令のみからなる新たな命令テーブルを作成する。パターン一致命令テーブル作成処理の詳細については、図4を用いて後述する。
ステップS28では、ノード作成部102は、巡回中のビットパターンと、ステップS27で作成されたツリーの対を、ステップS23で作成されたノードの子ノード集合属性の要素として追加する。
全てのビットパターンの巡回が終了すると、ノード作成部102は、ステップS30において作成成功であることと出力ノードとを処理の結果として返す。
次に、ステップS41〜S46は、ループ処理であり、命令テーブル分割部104は、入力された命令テーブルを巡回し、パターンに一致するエントリを出力命令テーブルに順に登録する。
OP & OM & m = p & OM & m (2)
ここでは、「&」はビット毎の論理積を意味する。
ステップS44では、命令テーブル分割部104は、巡回中の命令テーブルエントリのオペコードマスクOMから入力されたマスクmのビットをマスクオフした新しいオペコードマスクOM#を作成する。具体的には、命令テーブル分割部104は、下記の(3)式により、新しいオペコードマスクOM#を作成する。
OM & 〜M (3)
ここで、「&」はビット毎の論理積の二項演算、「〜」はビット毎の反転を意味する。
図3のステップS20では、ノード作成部102は、命令A〜Eのオペコードマスクの論理積を計算することでマスクの値「11000000」を得る。得られたマスクは、値が1のビットを含む。従って、図3のステップS21の分岐処理では、処理はステップS23に進む。
図3のステップS24では、命令テーブル分割部104は、マスクの値から4つのビットパターン、「00000000」、「01000000」、「10000000」及び「11000000」を生成する。図3のステップS25〜S29では、ステップS24で生成された4つのビットパターンを巡回する。
図6(a)に示されているパターン一致命令テーブル6aは、図5の命令テーブル5で、ビットパターン「00000000」、マスク「11000000」と一致する命令Aをエントリとして持つ。命令Aのエントリのオペコードマスクは、図3のステップS20で算出されたマスク「11000000」が除外されて、「00000000」となる。
図6(b)に示されているパターン一致命令テーブル6bは、図5の命令テーブル5で、ビットパターン「01000000」、マスク「11000000」と一致する命令B及び命令Cをエントリとして持つ。命令B及び命令Cのオペコードマスクも、命令Aと同様にマスク「11000000」が除外されて、「00000011」となる。
図6(c)に示されているパターン一致命令テーブル6cは、図5の命令テーブル5でビットパターン「10000000」、マスク「1100000」と一致する命令D及び命令Eをエントリとして持つ。命令D及び命令Eのオペコードマスクも、マスク「11000000」が除外されて、「00001100」となる。
パターン一致命令テーブル6aを入力とし、図2に示されているツリー作成処理が行われると、エントリ数が「1」であるため、処理はステップS11に進む。ステップS11では、パターン一致命令テーブル6a唯一のエントリである命令Aに対応するリーフが作成される。
なお、パターン一致命令テーブル6b及びパターン一致命令テーブル6cを入力とするツリー生成も上記と同様の繰返しである。
図7の符号7a、符号7b及び符号7cは、ノードであり、符号8a、符号8b、符号8c、符号8d及び符号8eは、リーフである。
リーフ8aは、図6(a)に示されている命令テーブル6aから、ツリー作成処理で作られるツリーである。
また、ノード7bをルートとするサブツリーは、図6(b)に示されている命令テーブル6bから作成されるツリーであり、ノード7cをルートとするサブツリーは、図6(c)に示されている命令テーブル6cから作成されるツリーである。
図8に示されている命令テーブル111では、1つの命令ビット列に対して2つ以上の命令のオペコードが一致する場合がある。例えば、命令ビット列「11000000」は、命令A及び命令Bのオペコードと一致する。しかし、命令Bの例外条件としてs=11が存在し、命令ビット列「11000000」は、例外条件s=11を満たす。このため、この命令ビット列は、命令Bではない。従って、命令ビット列は命令Aである。
命令テーブル111を入力として、ツリー作成処理が行われると、図3のステップS20で算出されるマスクは、「00000000」である。このマスクは、図8の命令A、命令B及び命令Cのオペコードマスク「11000000」、「00000011」、「00000011」の論理積の結果である。このため、図3のステップS21の分岐処理で、マスクの全ビットが「0」となり、処理はステップS22に進み、有効なマスクが算出されないため、ノード作成は失敗となる。また、このまま処理が図3のステップS23に進んだとしても、パターン集合を作成できないため、処理を正しく継続することができない。
ノード作成部102は、命令テーブルが複数のエントリからなる場合には、対応するノードを作成する。
リーフ作成部103は、命令テーブルが1つのエントリからなる場合には、対応するリーフを作成する。
例えば、命令テーブル分割部104は、命令テーブルに含まれている複数のエントリの内の少なくとも1つのエントリに一又は複数の例外条件が含まれており、かつ、これらの複数のエントリに含まれている全てのオペコード情報に共通するマスクを算出することができない場合に、命令テーブルを、一又は複数の例外条件の何れかにオペコード情報が一致するエントリからなる第1命令テーブルと、一又は複数の例外条件の何れにも前記オペコード情報が一致しないエントリからなる第2命令テーブルと、に分割する。
また、命令テーブル分割部104は、命令テーブルに含まれている複数のエントリの内の少なくとも1つのエントリに一又は複数の例外条件が含まれており、かつ、これらの複数のエントリに含まれている全てのオペコード情報に共通するマスクを算出することができた場合には、このマスクで識別することのできる複数のビットパターンから一つずつ順番にビットパターンを選択し、この選択された一つのビットパターンにオペコード情報が一致し、かつ、前記マスク及び前記選択されたビットパターンが例外条件に一致しないエントリを集めることで、命令テーブルをビットパターン毎に分割して、第3命令テーブルを生成する。
処理回路は、プロセッサ140と、メモリ141とにより構成される。
プロセッサ140は、メモリ141に格納されているプログラムを実行するCPU(中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ又はDSPともいう)である。
メモリ141は、RAM、ROM、フラッシュメモリ、EPROM、EEPROM等の不揮発性又は揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク又はDVD等である。なお、メモリ141は、例外条件付き命令テーブル110及びデコード用ツリー130も記憶する。
図10に示されている処理の内、図2に示されている処理と同様の処理については、図2と同じ符号が付されている。
なお、図1に示されているように、図10に示されているデコード用ツリー作成処理の入力は、例外条件付きの命令テーブル110であり、その出力は、デコード用ツリー130である。また、デコード用ツリー作成処理は、入力される命令テーブルが1つ以上のエントリを持つことを前提条件とする。
ステップS11では、リーフ作成部103は、リーフを作成する。リーフは属性として命令識別子を保持する。リーフ作成部103は、このリーフには属性として命令テーブルエントリの情報を関連付ける。
ステップS13では、ノード作成部102は、ノード作成処理を行う。ノード作成処理は、命令テーブルを入力とし、ノードを作成する。このノード作成処理の詳細については、後で説明する。
ステップS14は、ステップS13の結果としてノード作成に成功したか否かを判断する分岐処理である。ノードの作成に成功した場合(S14でYes)には、ステップS15の処理はスキップされ、ノードの作成に失敗した場合(S14でNo)には、処理はステップS15に進む。
図11に示されているノード作成処理は、図10のステップS13での処理の詳細である。
ここで、図11に示されている処理の内、図3に示されている従来のノード作成処理と同様の処理については、図3と同じ符号が付されている。図11に示されている処理は、ステップS31の処理を除いて、図3の処理と同様である。以下、ステップS31での処理について主に説明する。
なお、ステップS20では、図3を用いて説明したように、オペコードマスクの総論理積を計算することで、マスクを決定している。但し、マスクの決定方法は、これに限定されない。マスクは、ステップS31のパターン一致命令テーブル作成処理で作成される命令テーブルのエントリ数が、入力される命令テーブルの要素数より小さくすることができるビット列であれば、任意である。
図12に示されているパターン一致命令テーブル作成処理は、図11のステップS31での処理の詳細である。
ここで、図12に示されている処理の内、図4に示されている従来のパターン一致命令テーブル作成処理と同様の処理については、図4と同じ符号が付されている。図12に示されている処理は、ステップS47〜S49の処理を除いて、図4の処理と同様である。以下、ステップS47〜S49での処理について主に説明する。
本実施の形態におけるパターン一致命令テーブル作成処理の特徴は、命令テーブルがマスク及びビットパターン対と一致するか否かの判定に、ビットパターン以外に例外条件を用いる点である。
ステップS48は、パターン一致時の例外条件集合作成処理である。パターン一致時の例外条件集合作成処理では、命令テーブル分割部104は、出力命令テーブルのエントリ中の例外条件の集合を新たに作成する。パターン一致時の例外条件集合作成処理の入力は、パターン一致命令テーブル作成処理自体に入力されたマスク及びビットパターン対と、巡回中の命令テーブルのエントリの例外条件集合とである。また、出力は、新しい例外条件集合である。パターン一致時の例外条件集合作成処理の詳細については後で説明する。
ステップS49では、命令テーブル分割部104は、出力命令テーブルに現在巡回中の入力命令テーブルのエントリを追加する。このとき、新たらしいエントリのオペコードマスクと例外条件集合とには、それぞれステップS44で作成されたオペコードマスクとステップS48で作成された例外条件集合とが設定される。
図13に示されているパターン一致確認処理は、図12のステップS47での処理の詳細である。
パターン一致確認処理では、マスク及びビットパターン対と、命令テーブルのエントリとを入力とし、命令テーブル分割部104は、命令テーブルのエントリがマスク及びビットパターン対と一致するか否かを判定する。
OP & OM & m = p & OM & m (4)
ここで、「&」は、ビット毎の論理積を意味する。
ステップS52では、命令テーブル分割部104は、結果を不一致として処理を終了する。
ステップS55では、例外条件が満たされているため、命令テーブル分割部104は、結果を不一致として処理を終了する。
一方、ステップS56では、例外条件が満たされていないため、命令テーブル分割部104は、結果を一致として処理を終了する。
図14に示されている例外条件確認処理は、図13のステップS53での処理の詳細である。
例外条件確認処理の入力は、マスク及びビットパターン対と、例外条件集合とである。例外条件確認処理では、命令テーブル分割部104は、入力されたマスク及びビットパターン対が1つ以上の例外条件と一致するか否かを確認する。
次に、ステップS61〜ステップS65は、例外条件を巡回し、入力されたマスク及びビットパターン対と一致している例外条件があるか否かを確認するループである。途中1つでも入力されたマスク及びビットパターン対と一致する例外条件が見つかれば、例外条件確認処理の結果は一致となる。
(m & EM = EM) ∧ (p & EM = EP & EM) (5)
ここで、「&」は、ビット毎の論理積を意味する。
ステップS64では、命令テーブル分割部104は、例外条件確認処理の結果として一致したことをメモリに記憶する。ステップS61〜S65の例外条件巡回処理が完了した時点で、例外条件確認処理の結果として、一致又は不一致が得られる。
図15に示されているパターン一致時の例外条件集合作成処理は、図12におけるステップS48での処理の詳細である。
パターン一致時の例外条件集合作成処理における入力は、マスク及びビットパターン対と、例外条件集合とであり、出力は、入力された例外条件集合から無効な例外条件を除いた新しい例外条件集合である。
ステップS71〜S76は、例外条件を巡回するループ処理である。このループ処理では、命令テーブル分割部104は、必要な例外条件のみを出力例外条件集合に追加する。
入力されたマスクをm、入力されたビットパターンp、巡回中の例外条件における例外マスクをEM、巡回中の例外条件における例外パターンをEPとするとき、下記の(6)式を満たす場合に、命令テーブル分割部104は、巡回中の例外条件が有効であると判断する。
p & EM & m = EP & EM & m (6)
ここで、「&」は、ビット毎の論理積を意味する。
ステップS74では、命令テーブル分割部104は、新しい例外マスクを作成して、例外マスクを更新する。具体的には、命令テーブル分割部104は、新しい例外マスクEM#を、例外マスクEM及び入力されたマスクmを用いて、下記の(7)式で算出する。
EM & 〜M (7)
ここで、「&」は、ビット毎の論理積を意味し、「〜」は、ビット毎の反転を意味する。
ステップS75では、命令テーブル分割部104は、新しい例外条件を出力例外条件集合に追加する。この新しい例外条件は、巡回中の例外条件における例外パターンとステップS74で作成した例外マスクとの対である。
図16は、本実施の形態における条件ノード作成処理のフローチャートである。
図16に示されている条件ノード作成処理は、図10におけるステップS15での処理の詳細である。
条件ノード作成処理の入力は、例外条件付き命令テーブルであり、出力は条件ノードである。条件ノードは、属性として例外条件及び2つの子を持つ。例外条件の属性の実体は、マスク及びビットパターン対(例外マスク及び例外パターン対)である。条件ノードの子のうちの一方は、デコード対象のビット列が例外条件を満たす場合に対応し、他方はデコード対象のビット列が例外条件を満たさない場合に対応する。
次に、ノード作成部102は、ステップS80において例外条件が存在するか否かを確認する(S81)。例外条件が存在しない場合(S81でNo)には、処理はステップS82に進み、例外条件が存在する場合(S81でYes)には、処理はステップS83に進む。
ステップS81で例外条件が見つからない場合の原因は、入力された命令テーブルの誤りである。このため、ステップS82では、ノード作成部102は、入力命令テーブルに誤りがあることをユーザに知らせる。例えば、ノード作成部102は、図示されていないディスプレイ等の表示部にエラー画面を表示させる。または、ノード作成部102は、音声等によりエラーであることをユーザに知らせてもよい。
パターン不一致命令テーブル作成処理は、入力されたマスク及びビットパターン対に一致しないエントリのみからなる命令テーブルを作成する処理である。パターン不一致命令テーブル作成処理の詳細については後で説明する。
次に、ノード作成部102は、出力条件ノードを作成する(S87)。条件ノードの条件属性は、ステップS80で選択された例外条件である。また、条件が成立した場合に対応する子には、ステップS84で作成されたツリーが設定される。同様に条件が成立しなかった場合に対応する子にはステップS86で作成されたツリーが設定される。
図17に示されているパターン不一致命令テーブル作成処理は、図16におけるステップS85での処理の詳細である。
パターン不一致命令テーブル作成処理の入力は、マスク及びビットパターン対(例外マスク及び例外パターン対)と命令テーブルとであり、出力は、入力命令テーブルのうち入力されたマスク及びビットパターン対に一致しなかった命令のみからなる命令のテーブルである。
ステップS91〜ステップS96は、入力された命令テーブルを巡回するループ処理である。ここでは、命令テーブル分割部104は、入力されたマスク及びビットパターン対に一致しないエントリを選択して、出力命令テーブルに追加する。
ステップS93では、命令テーブル分割部104は、ステップS92の結果に基づき、巡回中の命令がマスク及びビットパターン対に一致しているか否かを確認する。そして、これらが一致していない場合(S93でNo)には、処理はステップS94に進み、これらが一致している場合(S93でYes)には、ステップS94及びS95をスキップして、処理はステップS96に進む。
ステップS95では、命令テーブル分割部104は、巡回中の命令テーブルのエントリを出力命令テーブルエントリに加える。このとき出力命令テーブルに追加するエントリの例外条件集合には、ステップS94で作成された例外条件集合が使用される。
図18に示されているパターン不一致時の例外条件作成処理は、図17のステップS94での処理の詳細である。
パターン不一致時の例外条件集合作成処理の入力は、マスク及びビットパターン対(例外マスク及び例外パターン対)と、例外条件集合とであり、出力は、入力例外条件集合のうち無効な例外条件のみからなる新しい例外条件集合である。
ステップS101〜ステップS105は、例外条件集合を巡回するループである。命令テーブル分割部104は、例外条件の巡回毎に例外条件が入力されたマスク及びビットパターン対に対して無効であれば、出力例外条件集合に巡回中の例外条件を追加する。
EP & m & EM = p & m & EM (9)
ここで、「&」は、ビット毎の論理積を意味する。
スキップS104は、命令テーブル分割部104は、ステップS100で作成した出力例外条件集合に、巡回中の例外条件を追加する。
ステップS101〜ステップS105のループ処理が完了した時点で、パターン不一致時の例外条件集合作成処理の結果が出力例外条件集合として得られる。
まず、図8の命令テーブル111を入力とする場合の効果について説明する。
図8に示されている命令テーブル111に対応する例外条件付き命令テーブルは、図19(a)に示されている例外条件付き命令テーブル112aである。
図19(a)に示されている例外条件付き命令テーブル112aは、例外条件「s=11」を例外マスク「11000000」と例外パターン「11000000」との対で保持する。
図10に示されているツリー作成処理では、図19に示されている例外条件付き命令テーブル122aが入力されると、ノード作成部102は、ステップS13のノード作成処理に失敗する。このため、ノード作成部102は、ステップS15の条件ノード作成処理、言い換えると、図16に示されている条件ノード作成処理を行う。
パターン一致命令テーブル112bには、命令B及び命令Cが含まれていない。これは、図12に示されているパターン一致命令テーブル作成処理において、命令テーブル分割部104は、例外条件を用いることによって命令Bと命令Cとを取り除いているためである(図12のステップS47及び図13のステップS53)。
そして、図16のステップS84で、ノード作成部102及びリーフ作成部103は、パターン一致命令テーブル112bを入力として、再度図10に示されているツリー作成処理を行うと、ステップ11のリーフ作成処理に成功する。同様に、図16のステップS85で、ノード作成部102及びリーフ作成部103は、パターン不一致命令テーブル112cを入力として、再度図10に示されているツリー作成処理を行うと、ステップS13のノード作成処理に成功する。
この場合、図8に示されている命令テーブル111を入力とし、図10に示されているツリー作成処理が行われると、ノード作成部102は、ステップS13を介して、図11に示されているノード作成処理を実行する。ここでは、ノード作成部102は、ステップS20において、マスクとして「11000000」を用いるものとする。
このマスクを入力として、ステップS31のパターン一致命令テーブル作成処理が行われると、命令テーブル分割部104は、入力された命令テーブル111を4つの命令テーブルに分割する。
図20(a)に示されている命令テーブル113aが入力されると、命令B及び命令Cは、「00000000」、「01000000」及び「10000000」の3つのビットパターンと一致するため、命令テーブル分割部104は、図20(b)に示されているパターン一致命令テーブル113b、図21(a)に示されているパターン一致命令テーブル113c及び図21(b)に示されているパターン一致命令テーブル113dを作成する。また、ビットパターン「11000000」には命令Aのみが一致するため、命令テーブル分割部104は、図21(c)に示されているパターン一致命令テーブル113eを作成する。
しかし、図19に示されている本実施の形態の例では、入力された命令テーブル112aは、パターン一致命令テーブル112b及びパターン不一致命令テーブル112cの2つに分割されるのに対し、図20及び図21に示された例では、パターン一致命令テーブル113b〜113eの4つに分割される。
図19のように分割された命令テーブルから生成されるデコード用ツリーのサイズは、図20及び図21のように分割された命令テーブルから生成されるデコード用ツリーのサイズよりも小さい。このように小さいサイズのツリーを生成できるのは、本実施の形態が、図10のステップS15で条件ノードを作成する処理を含むためである。このように条件ノード作成処理を含むことで、本実施の形態は、生成される命令デコードツリーのサイズを小さくすることができる。
図22(a)に示されている例外条件付き命令テーブル114aは、3つの命令A、命令B及び命令Cのエントリを含む。このうち命令B及び命令Cは、それぞれ例外条件「u=00」及び「v=00」を含む。
ノード作成部102は、ステップS80において、入力された命令テーブル中に存在する複数の例外条件「u=00」及び「v=00」の中から、例えば、「U=00」を選択する。
そして、ノード作成部102は、ステップS83とステップS85とで、選択された例外条件「u=00」を満たすか否かにより、図22に示されている命令テーブル114aを、図22(b)に示されているパターン一致命令テーブル114bと、図22(c)に示されているパターン不一致命令テーブル114cとに分割する。ノード作成部102及びリーフ作成部103は、分割された命令テーブル114b、114cに対して、再帰的に図10のツリー作成処理を適用することができる。
図23(a)に示されている条件付き命令テーブル115aは、命令A、命令B及び命令Cに対応する3つのエントリを含む。このうち命令Cのエントリは、「t=11」及び「t=00」の2つの例外条件を含む。
パターン一致命令テーブル115bを作成するときには、命令テーブル分割部104は、図12に示されているパターン一致時の例外条件作成処理におけるステップS48での例外条件の有効性チェック(図15のステップS72)で、例外条件「t=11」を有効と判断し、この例外条件を出力例外条件集合から除く。その結果として、パターン不一致命令テーブル115cの命令Cのエントリからは例外条件「t=11」が取り除かれる。
仮に、図15に示されているパターン一致時の例外条件作成処理において、例外条件「t=11」を除外する手段がないと、再帰的にツリー作成処理を行った際に、再度例外条件「t=11」を選択してしまい、正しく処理を継続することができなくなる。
図24(a)に示されている例外条件付き命令テーブル116aは、命令A、命令B及び命令Cに対応する3つのエントリを含む。命令Bは、例外条件「t=11∧v=00」を含み、命令Cは、例外条件「t=11」を含む。ここで「∧」は、論理積を意味する。このとき命令B及び命令Cは、例外条件「t=11」を共有している。
図25(a)に示されている例外条件付き命令テーブル117aは、命令A及び命令Bのエントリを含む。このうち命令Bは、例外条件「s=11」を含む。
この例外条件付き命令テーブル117aを入力として、図10に示されているツリー作成処理が行われると、ノード作成部102は、ステップS13において、図11に示されているノード作成処理を実行する。そして、命令テーブル分割部104は、ステップS31で、図25(b)に示されているパターン一致命令テーブル117bと、図25(c)に示されているパターン一致命令テーブル117cとを生成する。
本実施の形態では、リーフ作成時のステップS11において、リーフを命令テーブルBのエントリと関連付けている。このため、命令デコーダは、リーフ131bに到達した後、Bの例外条件を用いて命令列Iを検査することができる。これによって、命令デコーダは、不正な命令列Iを命令Bとして誤判定することを防ぐことができる。
即ち、本実施の形態は、デコード用ツリーのリーフに対して例外条件を関連付ける手段を持つことによって、命令テーブル分割には不要な例外条件を含む命令テーブルを入力とする場合であっても、命令デコーダが正常に命令を判定可能なデコード用ツリーを作成することができる。
図27は、本実施の形態で生成されるデコード用ツリーの一例を示す概略図である。
図27に示されているデコード用ツリー132は、図28に示されている例外条件付き命令テーブル118を入力として、図10に示されているツリー生成処理を実行した結果として得られる。
符号132a及び符号132iは、ノードである。符号132c、符号132d及び符号132eは、条件ノードである。符号132b、符号132f、符号132g、符号132h、符号132j及び符号132kは、リーフである。
以下では、図27に示されているデコード用ツリー132を用いた命令デコーダ(図示せず)に対して、図28に示されている例外条件付き命令テーブル118の命令Eに対応する命令ビット列I=10011110を入力とした場合のデコードの様子を説明する。
はじめに命令デコーダは、ツリーのルートであるノード132aを用いて、命令ビット列Iを検査する。ノード132aのマスクは、「11000000」であり、これを命令ビット列に適用すると結果としてパターン「100000000」が得られる。ノード132aでパターン「11000000」に対応する子は、ノード132cであるため、命令デコーダは、次にノード132cを用いて命令ビット列Iを検査する。
同様に、ノード123eでは、命令デコーダは、子ノード132iを選択する。
最後に、命令デコーダは、ノード132iのマスク「00000011」を命令ビット列に適用し、パターン「00000010」を得る。パターン「00000010」に対応した子は、リーフ132kである。リーフ132kには命令Eのテーブルエントリが関連けられているため、命令デコーダは、命令ビット列Iを命令Eとして判定する。
このように本実施の形態で生成したツリーを用いることにより、実用的な命令デコード処理を実現することができる。
デコード用ツリーの表現方法としては一般的なデータ構造として表現する以外にプログラムとして表現することもできる。さらにプログラムとして表現する場合、デコードツリーは命令デコーダそのものとすることも可能である。
図29は、デコード用ツリーのプログラム表現を示す概略図である。
図29に示されているデコード用ツリー133は、GNU Cコンパイラでコンパイル可能なC言語プログラムである。図27に示されているデコード用ツリー132の各ノード及びリーフとの対応については、プログラム中のコメントに示されている。
なお、パターンとマスクの可読性のため数値リテラルとして0bをプレフィックスとする二進数表記を用いているが、これはGCCの拡張記法である。図29に示されているプログラムは、デコード用ツリーの表現形態の1つであると同時に、命令デコーダのプログラムそのものでもある。関数Decodeは、命令ビット列iを入力とし、命令識別子を戻り値として返す。
Claims (11)
- 命令識別子及びビット列に対応する当該命令識別子を特定するためのオペコード情報を有する複数のエントリからなる命令テーブルを分割する命令テーブル分割部と、
前記命令テーブル分割部で分割された命令テーブルから、前記ビット列に対応する前記命令識別子を特定するためのデコード用ツリーを作成するツリー作成部と、を備え、
前記命令テーブル分割部は、前記複数のエントリの内の少なくとも1つのエントリに一又は複数の例外条件が含まれており、かつ、前記複数のエントリに含まれている全てのオペコード情報に共通するマスクを算出することができない場合に、前記命令テーブルを、前記一又は複数の例外条件のうちから選択された一つの例外条件に前記オペコード情報が一致するエントリからなる第1命令テーブルと、前記選択された一つの例外条件に前記オペコード情報が一致しないエントリからなる第2命令テーブルと、に分割すること
を特徴とする情報処理装置。 - 前記命令テーブル分割部は、前記一又は複数の例外条件から順番に一つずつ例外条件を選択し、当該選択された一つの例外条件に前記オペコード情報が一致するエントリを集めることで、前記例外条件毎に前記第1命令テーブルを生成すること
を特徴とする請求項1に記載の情報処理装置。 - 前記命令テーブル分割部は、前記命令テーブルから前記第1命令テーブルを分割する際に、前記例外条件が有効か否かを判断し、有効と判断されなかった例外条件を前記第1命令テーブルから除外すること
を特徴とする請求項1又は2に記載の情報処理装置。 - 前記命令テーブル分割部は、前記複数のエントリの内の少なくとも1つのエントリに前記一又は複数の例外条件が含まれており、かつ、前記マスクを算出することができた場合には、前記マスクで識別することのできる複数のビットパターンから順番に一つずつビットパターンを選択し、当該選択された一つのビットパターンに前記オペコード情報が一致し、かつ、前記マスク及び前記選択されたビットパターンが例外条件に一致しないエントリを集めることで、前記命令テーブルを前記ビットパターン毎に分割して、第3命令テーブルを生成すること
を特徴とする請求項1から3の何れか一項に記載の情報処理装置。 - 前記命令テーブル分割部は、前記命令テーブルから前記第3命令テーブルを分割する際に、前記例外条件が有効か否かを判断し、有効と判断されなかった例外条件を前記第3命令テーブルから除外すること
を特徴とする請求項4に記載の情報処理装置。 - 前記ツリー作成部は、前記命令テーブル分割部で分割された命令テーブルが複数のエントリからなる場合に、対応するノードを作成し、前記命令テーブル分割部で分割された命令テーブルが一つのエントリからなる場合に、対応するリーフを作成することで、前記デコード用ツリーを作成すること
を特徴とする請求項1から5の何れか一項に記載の情報処理装置。 - 前記ツリー作成部は、前記ノード又は前記リーフに前記例外条件を関連付けること
を特徴とする請求項6に記載の情報処理装置。 - 前記ツリー作成部は、前記例外条件に合致するか否かで子を選択することができる条件ノードを生成すること
を特徴とする請求項6又は7に記載の情報処理装置。 - 前記ツリー作成部は、前記命令テーブルの複数のエントリに含まれている全てのオペコード情報に共通するマスクを算出することができない場合であって、かつ、前記複数のエントリ何れにも前記例外条件が含まれていない場合には、入力エラーを報告すること
を特徴とする請求項1から8の何れか一項に記載の情報処理装置。 - 命令識別子及びビット列に対応する当該命令識別子を特定するためのオペコード情報を有する複数のエントリからなる命令テーブルを分割する過程と、
分割された命令テーブルから、前記ビット列に対応する前記命令識別子を特定するためのデコード用ツリーを作成する過程と、を有し、
前記複数のエントリの内の少なくとも1つのエントリに一又は複数の例外条件が含まれており、かつ、前記複数のエントリに含まれている全てのオペコード情報に共通するマスクを算出することができない場合に、前記命令テーブルを分割する過程では、前記命令テーブルを、前記一又は複数の例外条件のうちから選択された一つの例外条件に前記オペコード情報が一致するエントリからなる第1命令テーブルと、前記選択された一つの例外条件に前記オペコード情報が一致しないエントリからなる第2命令テーブルと、に分割すること
を特徴とする情報処理方法。 - コンピュータを、
命令識別子及びビット列に対応する当該命令識別子を特定するためのオペコード情報を有する複数のエントリからなる命令テーブルを分割する命令テーブル分割部と、
前記命令テーブル分割部で分割された命令テーブルから、前記ビット列に対応する前記命令識別子を特定するためのデコード用ツリーを作成するツリー作成部と、して機能させるプログラムであって、
前記命令テーブル分割部は、前記複数のエントリの内の少なくとも1つのエントリに一又は複数の例外条件が含まれており、かつ、前記複数のエントリに含まれている全てのオペコード情報に共通するマスクを算出することができない場合に、前記命令テーブルを、前記一又は複数の例外条件のうちから選択された一つの例外条件に前記オペコード情報が一致するエントリからなる第1命令テーブルと、前記選択された一つの例外条件に前記オペコード情報が一致しないエントリからなる第2命令テーブルと、に分割すること
を特徴とするプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/070395 WO2017009996A1 (ja) | 2015-07-16 | 2015-07-16 | 情報処理装置、情報処理方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2017009996A1 JPWO2017009996A1 (ja) | 2017-10-19 |
JP6529588B2 true JP6529588B2 (ja) | 2019-06-12 |
Family
ID=57757303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017528252A Active JP6529588B2 (ja) | 2015-07-16 | 2015-07-16 | 情報処理装置、情報処理方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6529588B2 (ja) |
WO (1) | WO2017009996A1 (ja) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3167305B2 (ja) * | 1989-12-28 | 2001-05-21 | 株式会社リコー | 可変長符号の復号化テーブルの自動作成方法 |
JP3156537B2 (ja) * | 1995-02-22 | 2001-04-16 | 松下電器産業株式会社 | 命令テーブル生成方法 |
WO2001090961A2 (en) * | 2000-05-24 | 2001-11-29 | Koninklijke Philips Electronics Nv | Enhancements to object-oriented electronic circuit design modeling and simulation environment |
KR100484137B1 (ko) * | 2002-02-28 | 2005-04-18 | 삼성전자주식회사 | 개선된 허프만 디코딩 방법 및 장치 |
US7219337B2 (en) * | 2003-03-06 | 2007-05-15 | Northrop Grumman Corporation | Direct instructions rendering emulation computer technique |
JP2005063165A (ja) * | 2003-08-13 | 2005-03-10 | Fujitsu Ltd | 仮想計算機の高速エミュレータ |
KR20050112890A (ko) * | 2004-05-28 | 2005-12-01 | 삼성전자주식회사 | 아키텍쳐 시뮬레이터에서의 명령 디코딩 방법 |
JP3938580B2 (ja) * | 2004-12-21 | 2007-06-27 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム |
-
2015
- 2015-07-16 JP JP2017528252A patent/JP6529588B2/ja active Active
- 2015-07-16 WO PCT/JP2015/070395 patent/WO2017009996A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2017009996A1 (ja) | 2017-01-19 |
JPWO2017009996A1 (ja) | 2017-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Korman et al. | Distributed verification of minimum spanning trees | |
US8788990B2 (en) | Reuse of circuit labels in subcircuit recognition | |
US10365902B2 (en) | Method for compiling a source code | |
WO2009116646A1 (ja) | マルチバイト処理向け文字列照合用有限オートマトン生成システム | |
JP5005510B2 (ja) | ソフトウェアの設計支援方法、設計支援装置及び設計支援プログラム | |
CN107545071B (zh) | 一种字符串匹配的方法和装置 | |
US9229691B2 (en) | Method and apparatus for programming assistance | |
US8539466B2 (en) | Determining suitable insertion points for string sanitizers in a computer code | |
US7861193B2 (en) | Reuse of circuit labels for verification of circuit recognition | |
KR20190089615A (ko) | 버그 정정 시스템 및 버그 정정 방법 | |
JP6529588B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
Schulte | Neutral networks of real-world programs and their application to automated software evolution | |
US7958468B2 (en) | Unidirectional relabeling for subcircuit recognition | |
US10545741B2 (en) | Information processing apparatus, method of compiling, and storage medium | |
US20130254201A1 (en) | Data structure, data structure generation method, information processing apparatus, information processing system, and computer-readable storage medium having stored therein information processing program | |
US8965826B2 (en) | Dynamic backjumping in constraint satisfaction problem solving | |
JP5275087B2 (ja) | プログラム生成装置およびブロック線図生成装置 | |
Renders et al. | Automated Design of Efficient Search Schemes for Lossless Approximate Pattern Matching | |
US20110023008A1 (en) | Method for optimizing an architectural model of a microprocessor | |
JP2010134598A (ja) | 論理検証装置 | |
JP6748357B2 (ja) | 解析装置、解析プログラムおよび解析方法 | |
CN110378457A (zh) | 一种码标的生成方法及装置 | |
JP6077694B1 (ja) | デシジョンテーブル生成装置、デシジョンテーブル生成方法およびデシジョンテーブル生成プログラム | |
Halm | Verification Of Practical Go Programs | |
US9582619B1 (en) | Simulation of a circuit design block using pattern matching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170713 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20181002 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181107 |
|
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: 20190416 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190514 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6529588 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |