JP4542722B2 - 命令処理方法 - Google Patents
命令処理方法 Download PDFInfo
- Publication number
- JP4542722B2 JP4542722B2 JP2001128368A JP2001128368A JP4542722B2 JP 4542722 B2 JP4542722 B2 JP 4542722B2 JP 2001128368 A JP2001128368 A JP 2001128368A JP 2001128368 A JP2001128368 A JP 2001128368A JP 4542722 B2 JP4542722 B2 JP 4542722B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- basic
- slot
- vliw
- processor
- 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.)
- Expired - Fee Related
Links
- 238000003672 processing method Methods 0.000 title claims description 22
- 238000004422 calculation algorithm Methods 0.000 description 79
- 238000012790 confirmation Methods 0.000 description 59
- 238000010586 diagram Methods 0.000 description 32
- 238000012545 processing Methods 0.000 description 28
- 238000000034 method Methods 0.000 description 20
- 102100026693 FAS-associated death domain protein Human genes 0.000 description 14
- 101000911074 Homo sapiens FAS-associated death domain protein Proteins 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000015572 biosynthetic process Effects 0.000 description 5
- 238000012856 packing Methods 0.000 description 5
- 102220619379 Alpha-1,3-galactosyltransferase 2_S60A_mutation Human genes 0.000 description 4
- 102220612921 Putative uncharacterized protein PIK3CD-AS1_S13A_mutation Human genes 0.000 description 4
- 102220596165 Uncharacterized protein C1orf131_S52A_mutation Human genes 0.000 description 4
- 102220491290 Annexin A1_S34A_mutation Human genes 0.000 description 3
- 102220605052 Histone H4-like protein type G_S61A_mutation Human genes 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 102200033501 rs387907005 Human genes 0.000 description 2
- 102220484577 Protein NDNF_S43A_mutation Human genes 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
【発明の属する技術分野】
近年の計算機システムの処理能力の向上は、中央処理装置(CPU: Central Processing Unit)であるプロセッサの処理能力の向上により為されてきた。このプロセッサの処理能力を向上させる手法としては、命令レベル並列度(ILP: Instruction Level Parallelism)を向上する手法がある。このILPを向上させる手法としては、スーパスカラ アーキテクチャ(Super-scalar architecture)や、超長命令語アーキテクチャ(VLIW architecture:Very Long Instruction Word architecture)といった方式が知られている。
【0002】
一方、近年では、携帯電話、プリンタ、デジタルテレビといった機器にも、マイクロプロセッサが組み込まれている。このようにプロセッサが組み込まれた機器は組み込み機器(Embedded Application Equipment)と呼ばれ、このように組み込まれたプロセッサは、組み込みプロセッサ(Embedded Processor)と呼ばれている。
【0003】
近年では、このような組み込み機器に求められる処理能力が、年々高くなってきることから、組み込みプロセッサの処理能力も、年々高いものが求められるようになってきている。従って、組み込みプロセッサの実現方式として、ILPを向上させる手法を採用しているものもある。
【0004】
その一方で、組み込み機器の分野では、機器を安価に実現することと、機器の消費電力が低いことが求められている。よって、組み込みプロセッサとして、スーパスカラ・アーキテクチャを採用した場合、回路規模が大きくなり、その消費電力が高くなる。一方、超長命令語アーキテクチャを採用した場合、命令を配置しない命令スロットに対して、無操作命令(NOP Instruction:No-operation Instruction)を配置する必要がある為、プログラム規模が大きくなり、大容量な記憶装置が必要とされるといった課題があった。
【0005】
このため、特願平11―281957(平成11年10月1日出願)に示されるような可変長の超長命令語アーキテクチャを採用した組み込みプロセッサがある。
【0006】
本発明は、このようなプロセッサ向けの言語処理系において必要とされるVLIWにおける基本命令の並びを確認する技術に関するものである。
【0007】
【従来の技術】
図1に、超長命令語アーキテクチャに基づくプロセッサの構成を従来技術として示す。ここでは、このプロセッサをVLIWプロセッサと呼ぶ。
(構成)
図1に示される従来のプロセッサは、メモリ10、命令読出部11、命令レジスタ12、整数ユニット(IU:Integer Unit)であるIU0とIU1、浮動小数点数ユニット(FU:Floating Unit)であるFU0とFU1、分岐ユニット(BU:Branching Unit)であるBU0とBU1、汎用レジスタGR(General purpose Register)、浮動小数点レジスタFR(Floating Register)、プログラムカウンタPC(Program Counter)を備える。
【0008】
命令読出部11は、メモリ10上のPCが示すアドレスより1VLIW命令分のメモリ領域をメモリから読み出し、命令レジスタ12に書き込む。また、PCを1VLIW命令分だけインクリメントする。
【0009】
命令レジスタ12は、命令読出部11より書き込まれた命令を保持する。その命令をIU、FU,BUへ供給する。この供給は次の通りである。
【0010】
命令スロット0に保持されている基本命令はIU0へ供給される。命令スロット1に保持されている基本命令はFU0へ供給される。命令スロット2に保持されている基本命令はIU1へ供給される。命令スロット3に保持されている基本命令はFU2へ供給される。命令スロット4に保持されている基本命令はBU0へ供給される。命令スロット5に保持されている基本命令はBU1へ供給される。
【0011】
IU0、IU1は、整数演算命令、整数ロード命令、整数ストア命令、浮動小数点数ロード命令、浮動小数点ストア命令、無操作命令を実行する。
【0012】
整数演算命令が供給された場合、入力オペランドデータを汎用レジスタGRから読み出し、整数演算を行なった後、演算結果である出力オペランドデータを汎用レジスタGRに書き込む。
【0013】
整数ロード命令が供給された場合、入力オペランドデータをレジスタから読み出し、実効アドレスを計算した後、メモリ上の実効アドレスに対応する領域を読み出し、その値を汎用レジスタGRに書き込む。
【0014】
整数ストア命令が供給された場合、入力オペランドデータを汎用レジスタGRから読み出し、実効アドレスを計算した後、メモリ上の実効アドレスに対応する領域へストアデータを書き込む。
【0015】
浮動小数点数ロード命令が供給された場合、入力オペランドデータをレジスタから読み出し、実効アドレスを計算した後、メモリ上の実効アドレスに対応する領域を読み出し、その値を浮動小数点レジスタFRに書き込む。
【0016】
浮動小数点数ストア命令が供給された場合、入力オペランドデータを浮動小数点レジスタFRから読み出し、実効アドレスを計算した後、メモリ上の実効アドレスに対応する領域へストアデータを書き込む。
【0017】
無操作命令が供給された場合、何も操作をしない。
【0018】
FU0、FU1は、浮動小数点数演算命令、無操作命令を実行する。浮動小数点数演算命令が供給された場合、入力オペランドデータを浮動小数点レジスタFRから読み出し、浮動小数点演算演算を行なった後、演算結果である出力オペランドデータを浮動小数点レジスタFRに書き込む。無操作命令が供給された場合、何も操作をしない。
【0019】
BU0、BU1は、無条件分岐命令、条件分岐命令、無操作命令を実行する。
無条件分岐命令が供給された場合、入力オペランドデータをレジスタ(GR、PC)から読み出し、それらを用いてアドレス計算を行ない、その結果をプログラムカウンタPCに書き込む。条件分岐命令が供給された場合、分岐条件が成立するか否かを判定して、分岐が成立する場合には、入力オペランドデータをレジスタ(GR、PC)から読み出し、それらを用いてアドレス計算を行ない、その結果を分岐先の命令のアドレスとして、PCに書き込む。無操作命令が供給された場合、何も操作をしない。
【0020】
ここでは、IU、FU、BUを機能ユニットと呼ぶ。機能ユニットは、命令レジスタから供給された基本命令を実行する。
(動作)
次に、VLIWプロセッサの動作について説明する。
【0021】
図2のようなプログラムが与えられたときの、図1に示されるVLIWプロセッサの動作について、図3を用いて説明する。なお、図中において、ADDは加算を行なう整数演算命令、FADDは加算を行う浮動小数点数演算命令であり、NOPは無操作命令である。
(時刻1)
(A)命令読出部11では、PC内の命令アドレスを用いて、図2のようにメモリ10上に配置されたVLIW命令1をメモリ10から読み出し、命令レジスタ12に書き込む。このとき命令レジスタ12には、図3の時刻1のように格納される。
【0022】
(B)機能ユニットでは、供給された命令を実行する。命令スロット0のADDがIU0で実行される。命令スロット1のFADDがFU0で実行される。命令スロット2のADDがIU1で実行される。命令スロット3のFADDがFU1で実行される。命令スロット4のNOPがBU0で実行される。命令スロット5のNOPがBU1で実行される。
【0023】
各機能ユニットにおいて、基本命令の実行が完了することで、VLIW命令1の実行が完了する。
(時刻2)
(A)命令読出部11では、PC内の命令アドレスを用いて、図2のようにメモリ10上に配置されたVLIW命令2をメモリ10から読み出し、命令レジスタ12に書き込む。このとき命令レジスタ12には、図3の時刻2のように格納される。
【0024】
(B)機能ユニットでは、供給された命令を実行する。命令スロット0のADDがIU0で実行される。命令スロット1のNOPがFU0で実行される。命令スロット2のNOPがIU1で実行される。命令スロット3のNOPがFU1で実行される。命令スロット4のNOPがBU0で実行される。命令スロット5のNOPがBU1で実行される。
【0025】
各機能ユニットにおいて、基本命令の実行が完了することで、VLIW命令2の実行が完了する。
(時刻3)
(A)命令読出部11では、PC内の命令アドレスを用いて、図2のようにメモリ10上に配置されたVLIW命令3をメモリ10から読み出し、命令レジスタ12に書き込む。このとき命令レジスタ12には、図3の時刻3のように格納される。
【0026】
(B)機能ユニットでは、供給された命令を実行する。命令スロット0のNOPがIU0で実行される。命令スロット1のFADDがFU0で実行される。命令スロット2のNOPがIU1で実行される。命令スロット3のNOPがFU1で実行される。命令スロット4のNOPがBU0で実行される。命令スロット5のNOPがBU1で実行される。
【0027】
各機能ユニットにおいて、基本命令の実行が完了することで、VLIW命令3の実行が完了する。
【0028】
VLIWプロセッサでは、命令読出部11で読み出された1VLIW命令内の命令スロットの位置と、命令実行部で命令スロットが実行される機能ユニットとの関係は、1対1に定まる。すなわち、整数演算命令/整数ロード命令/整数ストア命令/浮動小数点数ロード命令、浮動小数点ストア命令は、整数ユニットであるIU0、IU1のみで実行されるためにVLIW命令内部の命令スロット0か命令スロット2に配置される必要がある。
【0029】
浮動小数点数演算命令は浮動小数点数ユニットであるFU0、FU1のみで実行されるために、VLIW命令内部の命令スロット1か命令スロット3に配置される必要がある。
【0030】
条件分岐命令、無条件分岐命令は、分岐ユニットであるBU0、BU1のみで実行されるためにVLIW命令内部の命令スロット4か命令スロット5に配置される必要がある。そのため、VLIWプロセッサの言語処理系では、VLIW命令を構成する基本命令と命令スロット番号の対応を確認する必要がある。このため、VLIWプロセッサの言語処理系であるアセンブラ及びコンパイラにVLIW確認部を設け、VLIW命令が実行可能な基本命令の並びで構成されているかどうかを確認する。そして、確認できたVLIW命令のみをメモリ10に書き込む。
(アセンブラ)
図4は、VLIWプロセッサの言語処理系であるアセンブラの従来例を示すフローチャートである。アセンブラは、図4のフローチャートに示すように、字句解析部S11、命令コード生成部S12、VLIW確認部S13、及びオブジェクト生成部S14からなる。
【0031】
字句解析部S11は、アセンブリ言語プログラムのソースコードのファイルから、テキストを前から順に読み込み、読み込んだソースコードのテキストの字句を解析する。命令コード生成部S12は、解析した字句を命令コードに変換する。VLIW確認部S13は、VLIW命令がプロセッサの命令発行部で、命令実行部に発行可能か否かを確認する。オブジェクト生成部S14は、発行可能なVLIW命令をオブジェクト形式に変換して、生成したオブジェクトをオブジェクトプログラムファイルに出力する。
【0032】
図5に、VLIW確認部S13のフローチャートを示す。VLIW確認部S13は、VLIW命令の命令スロット配置確認部S13−1と同一レジスタ書き込み確認部S13−2から構成される。
【0033】
VLIW命令の命令スロット配置確認部S13−1では、VLIW命令の各基本命令について配置可能な命令スロットに配置されているか否かを確認する。図6に、VLIW命令の命令スロット配置確認部S13−1のフローチャートを示す。
【0034】
同一レジスタ書き込み確認部S13−2では、1つのVLIW命令内の基本命令が、同時に同一レジスタに書き込むか否かを確認する。VLIW命令の命令スロット配置確認部S13−1において、注目するVLIW命令の基本命令が発行可能か否かを判定するアルゴリズムは、以下のとおりである。
【0035】
まず、ステップS22で、注目するVLIW命令より、基本命令を取り出す。
次に、ステップS23で、取り出した基本命令を配置している命令スロットを求める。次に、ステップS24で、配置可能命令スロットテーブルから取り出した基本命令を配置可能な命令スロットを求める。そして、ステップS25で、取り出した基本命令の命令スロットが配置可能な命令スロットとなっているか否かを確認する。上記ステップS22−S27を繰り返して、全ての命令スロットを処理する(ステップS21)。
【0036】
図7に、ステップS24で参照される配置可能命令スロットテーブルの構成を示す。配置可能命令スロットテーブルとは、VLIWプロセッサが有する各基本命令に対して、各命令スロット配置可能な否かの情報を保持する。
(コンパイラ)
図7は、VLIWプロセッサの言語処理系であるコンパイラの従来例を示すフローチャートである。図示するフローチャートに示すように、コンパイラは字句解析部S31、構文解析部S32、意味解析部S33、VLIW形成部S34、及びアセンブリ言語記述出力部S35からなる。
【0037】
字句解析部S31は、高級言語プログラムのソースコードのファイルから、テキストを前から順に読み込み、読み込んだソースコードのテキストの字句を解析する。構文解析部S32は、プログラムの論理的構造の解明や構文規則との対応づけを行なう。意味解析部S33では、各構成要素の意味の明確化と中間語への変換を行なう。VLIW形成部S34は中間語をVLIW命令に変換するもので、コンパイラのVLIW確認部として機能する。アセンブリ言語記述出力部S35は、VLIW命令のアセンブリ言語記述を出力する。
【0038】
図9は、コンパイラのVLIW形成部S34のフローチャートを示す。VLIW形成部34のVLIW確認アルゴリズムは、以下のとおりである。まず、ステップS41で、中間語表現から1基本命令を取り出せるかどうか判定する。可能であればステップS42に行き、不可能であれば、S48に行く。ステップS42で、中間言語から1基本命令を取り出す。ステップS43で、基本命令を命令配置テーブルに配置できるか確認する。可能であれば、ステップS45に行き、不可能であれば、ステップS46に行く。
【0039】
ステップS45で、命令配置テーブルに基本命令を配置し、ステップS41に戻る。ステップS44でNOの場合、ステップS46で命令配置テーブルに配置された基本命令のセットをVLIW命令として出力する。ステップs47で、命令配置テーブルのすべての配置済みエントリを未配置状態にし、ステップS43に戻る。
【0040】
ステップS41がNOの場合、命令配置テーブルに配置された基本命令のセットをVLIW命令として出力して終了する(ステップS48)。
【0041】
【発明が解決しようとする課題】
前述した特願平11―281957(平成11年10月1日出願)に示されるような可変長の超長命令語アーキテクチャを採用した組み込みプロセッサでは、VLIW命令の構成単位となる命令スロットと機能ユニットの対応関係が、1対多、あるいは、多対多となる。よって、言語処理系では、VLIW命令における(基本)命令の組み合せがプロセッサにおいて実行可能な組み合せとなっているか否かを確認する必要がある。
【0042】
また、組み込み機器の分野は、その適用分野が広範囲であることから、処理性能が比較的低いものから処理性能が非常に高いものまで、要求される処理性能の幅が広い。これに対して、先の特許出願に示されるような可変長の超長命令語アーキテクチャを採用し、命令発行幅が異なるプロセッサとして実現することが考えられる。これにより、処理性能が比較的低いものには、命令発行幅が小さいプロセッサを、処理性能が非常に高いものには、命令発行幅が大きいプロセッサを適用することが可能となる。しかしながら、各々のプロセッサ向けに、言語処理系を個別に用意するのは不経済である。
【0043】
従って、本発明は、このような可変長の超長命令語アーキテクチャに基づいて命令発行幅が異なるプロセッサの言語処理系に適した命令処理方法及びこの処理をコンピュータに実行させるためのプログラムを提供することを目的とする。
【0044】
【課題を解決するための手段】
本発明は、プロセッサが実行する基本命令を複数の物理命令スロットを含むレジスタに格納し、前記複数の物理命令スロットに格納される基本命令を実行する複数の機能ユニットに供給する命令処理方法において、前記基本命令を実行できる機能ユニットの種別を特定する第1のステップと、論理命令スロットポインタと機能ユニットの種別との対応関係を示す命令スロットテーブルを使用して、前記機能ユニットの種別が特定された命令が配置可能であるか否かを判断する第2のステップと、前記第2のステップにおいて配置可能と判断された場合には、前記複数の機能ユニットに基本命令が配置されたことを示す機能ユニットテーブルを使用して、前記配置可能な基本命令に対応する機能ユニットと同種の機能ユニットであってより若い番号を有する機能ユニットに対して基本命令が割り当てられていることを確認して、前記基本命令を前記複数の物理命令スロットの一つに配置する第3のステップとを有する命令処理方法である。
【0047】
ここで、VLIW命令内の基本命令の並びとして、図11に示す22通りのVLIW命令を実行可能であるとする。図11において、記号の意味は次の通りである。I0は、IU0にて実行される基本命令が配置されることを意味する。I1は、IU1にて実行される基本命令が配置されることを意味する。F0は、FU0にて実行される基本命令が配置されることを意味する。F1は、FU1にて実行される基本命令が配置されることを意味する。B0は、BU0にて実行される基本命令が配置されることを意味する。B1は、BU1にて実行される基本命令が配置されることを意味する。空欄は、基本命令を配置しないことを意味する。
【0048】
命令読出部21は、メモリ20上のプログラムカウンタPCが示すアドレスより1VLIW命令分のメモリ領域をメモリ20から読み出し、命令レジスタ22に書き込む。また、プログラムカウンタPCを1VLIW命令分だけインクリメントする。命令レジスタ22は、命令読出部21より書き込まれた命令を保持する。命令発行部23は、命令レジスタ22から読み込んだ命令を対応する機能ユニットであるIU、FU、BUへ供給する。最大4命令を同時実行可能で、6つの機能ユニットうち最大4つの機能ユニットに命令を供給する。各命令スロットに保持されている基本命令は以下のように機能ユニットに供給される。
【0049】
命令スロット0に保持されている基本命令はIU0、FU0、BU0へ供給可能である。命令スロット1に保持されている基本命令はFU0、IU1、FU1、BU0、BU1へ供給可能である。命令スロット2に保持されている基本命令はIU1、FU1、BU0、BU1へ供給可能である。命令スロット3に保持されている基本命令はFU1、BU0、BU1へ供給可能である。また、このプロセッサで許されているVLIW命令内の基本命令の並びは、図11の通りとする。
【0050】
IU0、IU1は、整数演算命令、整数ロード命令、整数ストア命令、浮動小数点数ロード命令、浮動小数点ストア命令を実行する。
【0051】
整数演算命令が供給された場合、入力オペランドデータを汎用レジスタGRから読み出し、整数演算を行なった後、演算結果である出力オペランドデータを汎用レジスタGRに書き込む。
【0052】
整数ロード命令が供給された場合、入力オペランドデータをレジスタから読み出し、実効アドレスを計算した後、メモリ20上の実効アドレスに対応する領域を読み出し、その値を汎用レジスタGRに書き込む。
【0053】
整数ストア命令が供給された場合、入力オペランドデータを汎用レジスタGRから読み出し、実効アドレスを計算した後、メモリ20上の実効アドレスに対応する領域へストアデータを書き込む。
【0054】
浮動小数点数ロード命令が供給された場合、入力オペランドデータをレジスタから読み出し、実効アドレスを計算した後、メモリ20上の実効アドレスに対応する領域を読み出し、その値を浮動小数点レジスタFRに書き込む。
【0055】
浮動小数点数ストア命令が供給された場合、入力オペランドデータを浮動小数点レジスタFRから読み出し、実効アドレスを計算した後、メモリ20上の実効アドレスに対応する領域へストアデータを書き込む。
【0056】
FU0、FU1は、浮動小数点数演算命令を実行する。
【0057】
浮動小数点数演算命令が供給された場合、入力オペランドデータを浮動小数点レジスタFRから読み出し、浮動小数点演算演算を行なった後、演算結果である出力オペランドデータを浮動小数点レジスタFRに書き込む。
【0058】
BU0、BU1は、無条件分岐命令、条件分岐命令を実行する。無条件分岐命令が供給された場合、入力オペランドデータをレジスタGR、PCから読み出し、それらを用いてアドレス計算を行ない、その結果をプログラムカウンタPCに書き込む。
【0059】
条件分岐命令が供給された場合、分岐条件が成立するか否かを判定して、分岐が成立する場合には、入力オペランドデータをレジスタGR、PCから読み出し、それらを用いてアドレス計算を行ない、その結果を分岐先の命令のアドレスとして、プログラムカウンタPCに書き込む。
【0060】
前述したように、IU、FU、BUを機能ユニットである。機能ユニットは、命令レジスタから供給された基本命令を実行する。また、可変長VLIWプロセッサでは、VLIW命令は図12のようにメモリ20上に配置される。VLIW命令を構成する各命令にはパッキングフラグが設けられており、VLIW命令中の最後の命令のパッキングフラグはONとなっている。パッキングフラグを用いることで、VLIW命令の終り(次のVLIW命令の始まり)を特定することができる。
(可変長VLIWプロセッサの第1の構成例の動作)
次に、第1の構成例の可変長VLIWプロセッサの動作を説明する。
【0061】
図12のようなプログラムが与えられたときの図10に示されるVLIWプロセッサの動作について、図13を用いて説明する。なお、図中において、ADDは加算を行なう整数演算命令、FADDは加算を行う浮動小数点数演算命令で。
(時刻1)
(A)命令読出部21は、プログラムカウンタPC内の命令アドレスを用いて、図12のようにメモリ上に配置されたVLIW命令1をメモリ20から読み出し、命令レジスタ22に書き込む。このとき命令レジスタには図13の時刻1のように格納される。
【0062】
(B)機能ユニットは、供給された命令を次の通り実行する。命令スロット0のADDがIU0で実行される。命令スロット1のFADDがFU0で実行される。命令スロット2のADDがIU1で実行される。命令スロット3のFADDがFU1で実行される。BU0、BU1は基本命令が供給されないため動作しない。
【0063】
IU0、IU1、FU0、FU1において、基本命令の実行が完了することで、VLIW命令1の実行が完了する。
(時刻2)
(A)命令読出部21は、プログラムカウンタPC内の命令アドレスを用いて、図12のようにメモリ20上に配置されたVLIW命令2をメモリから読み出し、命令レジスタ22に書き込む。このとき命令レジスタ22には図13の時刻2のように格納される。
【0064】
(B)機能ユニットは、供給された命令を次の通り実行する。命令スロット0のADDがIU0で実行される。IU1、FU0、FU1、BU0、BU1は基本命令が供給されないため動作しない。
【0065】
IU0において、基本命令の実行が完了することで、VLIW命令2の実行が完了する。
(時刻3)
(A)命令読出部21は、プログラムカウンタPC内の命令アドレスを用いて、図12のようにメモリ上に配置されたVLIW命令3をメモリから読み出し、命令レジスタ22に書き込む。このとき命令レジスタ22には図13のように格納される。
【0066】
(B)機能ユニットは、供給された命令を次の通り実行する。命令スロット0のFADDがFU0で実行される。IU0、IU1、FU1、BU0、BU1は基本命令が供給されないため動作しない。
【0067】
FU0において、基本命令の実行が完了することで、VLIW命令3の実行が完了する。
【0068】
ここで、VLIW命令における基本命令の並びは、可変長VLIWプロセッサにおいて実行可能でなければならない。従って、可変長VLIW命令内を構成する基本命令の並びの条件を満たすか否かをアセンブラ及びコンパイラで判断する必要がある。
(可変長VLIWプロセッサのアセンブラ)
図14に、可変長VLIWプロセッサのアセンブラのフローチャートを示す。
VLIWプロセッサのアセンブラの構造と、可変長VLIWプロセッサのアセンブラの構造との違いは、可変長VLIW確認部(図14では参照番号S13Aで示す)である。
【0069】
図15に、可変長VLIW確認部のフローチャートを示す。図5に示す従来技術のVLIWプロセッサのアセンブラとの違いは、図15に示すアセンブラが可変長VLIW命令内基本命令並び確認部13A−1を有する点である。可変長VLIW命令内基本命令並び確認部13A−1は、基本命令の並びは発行可能かどうかを確認する。図15には、1VLIW命令内で、命令の組み合わせ制限に違反していないかどうかを確認する可変長VLIW命令の命令組み合せ確認部13A−2が設けられているが、これは必要に応じて任意に設けられるものである。
つまり、命令組み合せ確認部13A−2は省略しても良い。図15に示す同一レジスタ書き込み確認部S13A−3は、図5に示す同一レジスタ書き込み確認部S13−2と同じである。すなわち、同一レジスタ書き込み確認部S13A−3は、1VLIW命令内で、同一レジスタへの書き込み制御に違反していないかどうかを確認する。
【0070】
なお、可変長VLIW確認部S13Aの可変長VLIW命令を構成する基本命令の並びを確認するアルゴリズムについては、後述する。
(可変長VLIWプロセッサのコンパイラ)
図16に、可変長VLIWプロセッサのコンパイラのフローチャートを示す。
、また、図17に、コンパイラのVLIW形成部S34Aの基本命令を命令配置テーブルに配置できるか確認する部分のフローチャートを示す。図8に示すVLIWプロセッサのコンパイラの構造と、図16に示す可変長VLIWプロセッサのコンパイラの構造との違いは、VLIW形成部34(図8)とVLIW形成部S34A(図16)とは、基本命令を命令配置テーブルに配置できるかを確認するためのアルゴリズムが相違する。より特定すれば、図10のステップS43のアルゴリズムと図17のステップS43Aのアルゴリズムとは異なる。そして、VLIW形成部34Aのアルゴリズムは、図14の可変長VLIW確認部S13A、より特定すれば可変長VLIW命令内基本命令並び確認部S13A−1と同じアルゴリズムである。なお、このアルゴリズムについては後述する。
(可変長VLIW命令の基本命令の並びを確認するアルゴリズム)
次に、可変長VLIW命令を構成する基本命令の並びを確認するアルゴリズムを説明する。
【0071】
このアルゴリズムは可変長VLIW確認部S13A(図14)の可変長VLIW命令内基本命令並び確認部S13A−1及びVLIW形成部S34A(図16)で用いられるもので、大別して以下の4通りある。
【0072】
第1のアルゴリズムは、可変長VLIWプロセッサの言語処理系において、可変長VLIW命令を構成する基本命令を実行できる機能ユニットの種別を特定する第1のステップと、基本命令を論理命令スロットに配置可能かどうかを判断する第2のステップと、配置可能と判断された基本命令と論理命令スロットに配置される他の基本命令との関係を考慮して当該配置可能と判断された基本命令をプロセッサの命令スロットに配置する第3のステップとを有する。第1のアルゴリズムは例えば、後述するように、命令種別テーブル、命令スロットテーブル、命令配置テーブル及び機能ユニットテーブルを用いる。第1のステップは、命令種別テーブルを参照して基本命令の命令オペコードから命令を実行可能な機能ユニットの種別を得る。第2のステップは、命令スロットテーブルを参照して、基本命令を論理命令スロットに配置可能かどうかを判断する。第3のステップは、命令配置テーブル及び機能ユニットテーブルを用いて命令を配置する。このようにして配置された基本命令は、VLIW命令内に正しい並びで配置されたものである。
【0073】
第2のアルゴリズムは第1のアルゴリズムを変形したものであり、可変長VLIWプロセッサの言語処理系において、可変長VLIW命令を構成する基本命令の命令カテゴリを特定する第1のステップと、当該命令カテゴリから実行可能な機能ユニットの種別を特定する第2のステップと、基本命令を論理命令スロットに配置可能かどうかを判断する第3のステップと、配置可能と判断された基本命令と論理命令スロットに配置される他の基本命令との関係を考慮して当該配置可能と判断された基本命令をプロセッサの命令スロットに配置する配置する第4のステップとを有する。第2のアルゴリズムは例えば、後述するように、命令種別テーブル、命令スロットテーブル、命令配置テーブル、機能ユニットテーブルに加え命令カテゴリテーブルを有する。第1のステップは、命令カテゴリテーブルを参照して、可変長VLIW命令を構成する基本命令の命令カテゴリを特定する。第2のステップは、命令種別テーブルを参照して、命令カテゴリから実行可能な機能ユニットの種別を特定する。第3のステップは、命令スロットテーブルを参照して、基本命令を論理命令スロットに配置可能かどうかを判断する。第4のステップは、命令配置テーブル及び機能ユニットテーブルを用いて命令を配置する。このようにして配置された基本命令は、VLIW命令内に正しい並びで配置されたものである。
【0074】
第3のアルゴリズムは、可変長VLIWプロセッサの言語処理系において、可変長VLIW命令を構成する基本命令を実行できる機能ユニットの種別を特定する第1のステップと、基本命令を論理命令スロットに配置可能かどうかを判断する第2のステップと、配置可能と判断された基本命令をプロセッサの命令スロットに配置する第3のステップとを有する。第3のアルゴリズムは、第1のアルゴリズムの第3のステップで行なっている論理命令スロットに配置される他の基本命令との関係を考慮することをしない。つまり、機能ユニットの同一種別内においてはどの機能ユニットにユニットに配置されていても良いという配置の条件がある場合に好適である。後述するように、第3のアルゴリズムは例えば、命令種別テーブル、命令スロットテーブル、命令配置テーブルを用いる。第1のステップは、命令種別テーブルを参照して基本命令の命令オペコードから命令を実行可能な機能ユニットの種別を得る。第2のステップは、命令スロットテーブルを参照して、基本命令を論理命令スロットに配置可能かどうかを判断する。第3のステップは、命令配置テーブル及び機能ユニットテーブルを用いて命令を配置する。このようにして配置された基本命令は、VLIW命令内に正しい並びで配置されたものである。
【0075】
第4のアルゴリズムは第3のアルゴリズムを変形したものであり、可変長VLIWプロセッサの言語処理系において、可変長VLIW命令を構成する基本命令の命令カテゴリを特定する第1のステップと、当該命令カテゴリから実行可能な機能ユニットの種別を特定する第2のステップと、基本命令を論理命令スロットに配置可能かどうかを判断する第3のステップと、配置可能と判断された基本命令をプロセッサの命令スロットに配置する配置する第4のステップとを有する。
第4のアルゴリズムは例えば、後述するように、命令種別テーブル、命令スロットテーブル、命令配置テーブル、機能ユニットテーブルに加え命令カテゴリテーブルを有する。第1のステップは、命令カテゴリテーブルを参照して、可変長VLIW命令を構成する基本命令の命令カテゴリを特定する。第2のステップは、命令種別テーブルを参照して、命令カテゴリから実行可能な機能ユニットの種別を特定する。第3のステップは、命令スロットテーブルを参照して、基本命令を論理命令スロットに配置可能かどうかを判断する。第4のステップは、命令配置テーブル及び機能ユニットテーブルを用いて命令を配置する。このようにして配置された基本命令は、VLIW命令内に正しい並びで配置されたものである。
【0076】
以下、第1〜第4のアルゴリズムを順に説明する。
(第1の基本命令並び確認アルゴリズム)
第1の基本命令並び確認アルゴリズムは命令種別テーブル、命令スロットテーブル、命令配置テーブル、機能ユニットテーブルを用い、更に論理命令スロットポインタと物理命令スロットポインタを用いる。換言すれば、第1の基本命令並び確認アルゴリズムは命令種別テーブル、命令スロットテーブル、命令配置テーブル、機能ユニットテーブル、論理命令スロットポインタ、及び物理命令スロットポインタを含むデータ構造を用いている。
【0077】
図18に、命令種別テーブルの一例を示す。命令種別テーブルは基本命令に対して、それを実行可能な機能ユニット種別の情報を保持する。
【0078】
図19に、命令スロットテーブルの一例を示す。命令スロットテーブルは、論理命令スロットに対して、配置可能な機能ユニット種別を保持する。ここで論理命令スロットとは、各機能ユニットに対応して命令スロットが存在すると考えた仮想的な命令スロットを意味する。
【0079】
図20に、命令配置テーブルの一例を示す。命令配置テーブルは、各命令スロットに対して、基本命令を配置しているか否かの情報を保持する。ここで物理命令スロットとはVLIW命令内の各命令スロットを意味する。
【0080】
図21に、機能ユニットテーブルの一例を示す。機能ユニットテーブルは、各機能ユニットに対して、すでに配置されて発行される命令があるか否かを示す情報を保持する。
【0081】
論理命令スロットポインタは、命令スロットテーブルの論理命令スロット番号を保持する。物理命令スロットポインタは、命令配置テーブルにおいて配置済みの基本命令数を保持する。
【0082】
図22は、第1の基本命令並び確認アルゴリズムを示すフローチャートである。まず、ステップS50で物理命令スロットポインタを0に、論理命令スロットポインタを0に初期化するステップS52は、命令を実行可能な機能ユニットの種別を得るステップである。配置する命令を命令列から命令情報を取り出し、その命令情報の命令オペコードを用いて命令種別テーブルを参照して、命令を実行可能な機能ユニット種別を得る。
【0083】
ステップS60は、配置可能な最も若い論理命令スロットを求めるステップで、ステップS61〜S63を含む。ステップS61は、論理命令スロットポインタが指す命令スロットテーブルの論理命令スロットの配置可能な機能ユニット欄を参照して、命令を実行可能な機能ユニット種別に対応する欄に○があれば命令は配置可能であり(Yes)、そうでなければ命令を配置不可とする(No)。
ステップS61で命令が配置不可と判断した場合(No)、ステップS62で論理命令スロットポインタをインクリメントする。論理命令スロットポインタが最大値を超えたら(No)、エラー終了する。論理命令スロットポインタが最大値を超えたていない場合には(Yes)、次の論理命令スロットに対してステップS61〜S63を繰り返す。
【0084】
ステップS70は、命令を配置するステップで、ステップS71〜S76を含む。ステップS61の判断結果がYesの場合、ステップS71で論理スロットが発行可能な機能ユニットの番号より若い機能ユニットに命令が配置されていることを、機能ユニットテーブルを参照して確認する。配置されていなければエラー終了する。
【0085】
ステップS71は、論理スロットが発行可能な機能ユニットの番号より若い機能ユニットに命令が配置されていることを条件(制約)とする場合に対応するものである。この条件とは例えば、機能ユニットIU0に命令が配置されていなければ、機能ユニットIU1に命令を配置してはならないというものである。ステップS71で命令が配置可能と判断された場合、ステップS72で命令情報を命令配置テーブルに配置する。更に、機能ユニットに命令を配置したこと示すフラグを機能ユニットテーブルに設定する。ステップS73で、論理命令スロットポインタをインクリメントする。命令のパッキングフラグが立っているならばVLIW命令の最後の基本命令なので(ステップS74の判断はYes)、ステップS75で正常終了する。つまり、ステップS75で命令スロット配置可とする。
ステップS74の判断結果がNoの場合には、ステップS76で物理命令スロットポインタをインクリメントする。
【0086】
以上説明したステップS52からS70までの処理を、物理命令スロットポインタが最大値を超えない範囲で繰り返す(ステップS51とS54)。超えてしまったら、ステップS55でVLIW命令内の命令数オーバーとして処理を終了する。
【0087】
このようにして第1の基本命令並び確認アルゴリズムを実行することにより、メモリ20に格納されるVLIW命令は可変長VLIWプロセッサが実行することができる実行可能な機能ユニット種別を有した組み合わせとなっている。
【0088】
以上説明した第1の基本命令並び確認アルゴリズムを前述した図13に示す可変長VLIWプロセッサに適用した場合の命令種別テーブルと、命令スロットテーブルをそれぞれ図23及び図24に示す。これらの図は、図21に示す機能ユニットテーブルを統合した状態のテーブルを示している。
(第2の基本命令並び確認アルゴリズム)
第2の基本命令並び確認アルゴリズムは、第1の基本命令並び確認アルゴリズムで確認できる実行可能な機能ユニット種別に加え、命令カテゴリに応じた実行可能な機能ユニット番号を確認できることを特徴とする。
【0089】
第2の基本命令並び確認アルゴリズムで用いるデータ構造は、命令種別テーブル、命令カテゴリテーブル、命令スロットテーブル、命令配置テーブル、機能ユニットテーブル、論理命令スロットポインタ、及び物理命令スロットポインタである。第1の基本命令並び確認アルゴリズムで用いるテーブルに加え、命令カテゴリテーブルを有する。
【0090】
命令種別テーブルは、基本命令に対する命令カテゴリを保持する。図25に命令種別テーブルの一例を示す。ここで命令カテゴリとは、命令の分類を表すものである。I_1は、整数カテゴリ1でありADD命令を含む。I_2は整数カテゴリ2でありDIV命令を含む。F_1は浮動小数点数カテゴリ1でありFADD命令を含む。B_1は、分岐カテゴリ1でありBRA命令を含む。
【0091】
命令カテゴリテーブルは、基本命令に対して、配置可能な機能ユニット種別と機能ユニット種別毎の機能ユニット番号のビットパターンを保持する。図26に、命令カテゴリテーブルの一例を示す。整数カテゴリI_2はプロセッサ上の制約から、機能ユニット番号2の機能ユニットでは処理できない。
【0092】
命令スロットテーブルは、論理命令スロットに対する配置可能な機能ユニット種別と機能ユニット番号のビットパターンを保持する。図27に、命令スロットテーブルの一例を示す。ここで論理命令スロットとは、各機能ユニットに対応して命令スロットが存在すると考えた仮想的な命令スロットを意味する。
【0093】
命令配置テーブルは、各命令スロットに対するVLIW命令を構成する基本命令の情報を保持するもので、図20に示す第1の基本命令並び確認アルゴリズムで用いられる命令配置テーブルと同一構成である。
【0094】
機能ユニットテーブルは、各機能ユニットに配置されている命令があるか否かを示す情報を保持するもので、図21に示す第1の基本命令並び確認アルゴリズムで用いられる機能ユニットテーブルと同一構成である。
【0095】
論理命令スロットポインタは、命令スロットテーブルの論理命令スロット番号を保持する。物理命令スロットポインタは、命令配置テーブルにおいて配置済みの基本命令数を保持する。
【0096】
図28は、第2の基本命令並び確認アルゴリズムを示すフローチャートである。前述した図22の第1の基本命令並び確認アルゴリズムとの相違点として、図22のステップS52がステップS52Aに代わり、ステップS60がS60Aに代わり、ステップS57が新たに追加されている。
【0097】
ステップS50で、物理命令スロットポインタを0に、論理命令スロットポインタを0に初期化する。
【0098】
ステップS52Aは、命令の命令カテゴリを得るステップである。配置する命令を命令列から命令情報を取り出し、その命令情報の命令オペコードを用いて命令カテゴリテーブルを参照して、命令カテゴリを得る。
【0099】
ステップS57は、命令カテゴリから実行可能な機能ユニットを得るステップである。ステップS51で得た命令カテゴリを用いて命令種別テーブルを参照して、命令を実行可能な機能ユニット種別と機能ユニット種別毎の機能ユニット番号のビットパターンを得る。
【0100】
ステップS60Aは、配置可能な最も若い論理命令スロットを求めるステップである。論理命令スロットポインタがさす命令スロットテーブルの論理命令スロットの配置可能な機能ユニット欄を参照して、命令を実行可能な機能ユニット種別に対応する欄に○があり、かつ、機能ユニット種別毎の機能ユニット番号のビットパターンのビット和をとり0でなければ命令を配置可能と判断し、そうでなければ、命令を配置不可とする。ステップS61Aで命令が配置不可と判断されれば、ステップS62で論理命令スロットポインタをインクリメントする。命令が配置可能であれば、ステップS71に行く。ステップS63で論理命令スロットポインタが最大値を超えたら、エラー終了する。次の論理命令スロットに対してステップS61A、S62、S63を繰り返す。
【0101】
ステップS70は命令を配置するステップである。ステップS71で、論理スロットが発行可能な機能ユニットの番号より若い機能ユニットに命令が配置されていることを、機能ユニットテーブルを参照して確認して、配置されていなければエラー終了する。ステップS71の判断結果がYesの場合には命令が配置可能であるので、命令情報を命令配置テーブルに配置する。更に、機能ユニットに命令を配置したこと示すフラグを機能ユニットテーブルに設定する。次に、ステップS72で論理命令スロットポインタをインクリメントする。ステップS74で、命令のパッキングフラグが立っているならばこの命令はVLIW命令の最後の命令なので、ステップS75で正常終了する。最後の命令でないと判断された場合には、ステップS76で物理命令スロットポインタをインクリメントする。
【0102】
以上説明したステップS52からS70までの処理を、物理命令スロットポインタが最大値を超えない範囲で繰り返す(ステップS51とS54)。超えてしまったら、ステップS55でVLIW命令内の命令数オーバーとして処理を終了する。
【0103】
このようにして第2の基本命令並び確認アルゴリズムを実行することにより、メモリ20に格納されるVLIW命令は、可変長VLIWプロセッサが実行することができる実行可能な機能ユニット種別に加え、命令カテゴリに応じた実行可能な機能ユニット番号を有した組み合わせとなっている。
(第3の基本命令並び確認アルゴリズム)
第3の基本命令並び確認アルゴリズムは、第1の基本命令並び確認アルゴリズムで用いていた機能ユニットテーブルを持たないデータ構造を有する。つまり、第3の基本命令並び確認アルゴリズムで用いるデータ構造は、命令種別テーブル、命令スロットテーブル、命令配置テーブル、論理命令スロットポインタ、及び物理命令スロットポインタである。
【0104】
図29は、第2の基本命令並び確認アルゴリズムを示すフローチャートである。前述した図22の第1の基本命令並び確認アルゴリズムとの相違点として、図22のステップ70に代えてステップ70Aが用いられている。ステップS70Aは、ステップ70からステップS71を取り除いた構成である。つまり、第3の基本命令並び確認アルゴリズムは、論理スロットが発行可能な機能ユニットの番号より若い機能ユニットに命令が配置されていることを、機能ユニットテーブルを参照して確認する処理をしない。従って、例えば図11に示す基本命令の並びにおいて命令スロット1に配置されるI1のみで構成されるVLIW命令も正常な基本命令の並びであると判断する。
【0105】
このように第3の基本命令並び確認アルゴリズムは、スッテプS71の制約を持たない基本命令の並びを確認するのに適している。
(第4の基本命令並び確認アルゴリズム)
第4の基本命令並び確認アルゴリズムは、第3の基本命令並び確認アルゴリズムで用いた命令種別テーブル、命令スロットテーブル及び命令配置テーブルに加え、命令カテゴリテーブルを有する。つまり、第4の基本命令並び確認アルゴリズムで用いるデータ構造は、命令種別テーブル、命令カテゴリテーブル、命令スロットテーブル、命令配置テーブル、論理命令スロットポインタ、及び物理命令スロットポインタである。第4の基本命令並び確認アルゴリズムは第3の基本命令並び確認アルゴリズムと同様に、第1及び第2の基本命令並び確認アルゴリズムで用いる機能ユニットテーブルを持たない。
【0106】
図30は、第4の基本命令並び確認アルゴリズムを示すフローチャートである。前述した図29の第3の基本命令並び確認アルゴリズムとの相違点として、図29のステップS52がステップS52Aに代わり、ステップS60がS60Aに代わり、ステップS57が新たに追加されている。ステップS52A、S60A及びステップS57は図28を参照して説明した通りである。また、図28の第2の基本命令並び確認アルゴリズムとの相違点は、図28のステップS70に代えて図29に示すステップS70Aを用いる点である。
【0107】
このように第4の基本命令並び確認アルゴリズムは、ステップS71の制約を持たない命令の配列であって、かつ命令カテゴリに応じた基本命令の並びを確認するのに適している。
【0108】
上記第1から第4の基本命令並び確認アルゴリズムは、図12に示す可変長VLIWプロセッサの第1の構成例のみならず、様々な形態の可変長VLIWプロセッサに適用できる。以下、可変長VLIWプロセッサの別の構成例について説明する。
(可変長VLIWプロセッサの第2の構成例)
最大8命令同時実行可能な可変長VLIWプロセッサを第2の構成例として図31に示す。この構成例は、アセンブラにおける前述した第1の基本命令並び確認アルゴリズムを適用してVLIW命令における基本命令の並びを確認して得られたものである。
【0109】
図31において、可変長VLIWプロセッサはメモリ120、命令読出部121、命令レジスタ122、命令発行部123、命令実行部124、汎用レジスタGR、浮動小数点レジスタFR、及びプログラムカウンタPCを有する。命令実行部124は整数ユニットIU0、IU1、IU2及びIU3、浮動小数点数ユニットFU0、FU1、FU2及びFU3、及び分岐ユニットBU0、BU1、BU2及びBU3を有する。
【0110】
また、VLIW命令内の基本命令の並びは、図32及び図33に示す73通りのVLIWが実行可能であるとする。
【0111】
命令読出部121は、メモリ120上のPCが示すアドレスより1VLIW命令分のメモリ領域をメモリ120から読み出し、命令レジスタ122に書き込む。
また、プログラムカウンタPCを1VLIW命令だけインクリメントする。命令レジスタ122は、命令読出部121より書き込まれた命令を保持する。命令発行部123は、命令レジスタ122から読み込んだ命令を対応する機能ユニットであるIU、FU、BUへ供給する。最大8命令を同時実行可能で、10つの機能ユニットうち最大8つの機能ユニットに命令を供給する。各命令スロットに保持されている基本命令は以下のように機能ユニットに供給される。
【0112】
命令スロット0に保持されている基本命令はIU0、FU0、BU0へ供給可能である。命令スロット1に保持されている基本命令はFU0、IU1、FU1、BU0、BU1へ供給可能である。命令スロット2に保持されている基本命令はIU1、FU1、IU2、FU2、BU0、BU1へ供給可能である。命令スロット3に保持されている基本命令はFU1、IU2、FU2、IU3、FU3、BU0、BU1へ供給可能である。命令スロット4に保持されている基本命令はIU2、FU2、IU3、FU3、BU0へ供給可能である。命令スロット5に保持されている基本命令はFU2、IU3、FU3、BU0、BU1へ供給可能である。命令スロット6に保持されている基本命令はIU3、FU3、BU0、BU1へ供給可能である。命令スロット7に保持されている基本命令はFU3、BU0、BU1へ供給可能である。
IU0、IU1、IU3、IU3は、整数演算命令、整数ロード命令、整数ストア命令、浮動小数点数ロード命令、浮動小数点ストア命令を実行する。
【0113】
整数演算命令が供給された場合、入力オペランドデータを汎用レジスタGRから読み出し、整数演算を行なった後、演算結果である出力オペランドデータを汎用レジスタGRに書き込む。整数ロード命令が供給された場合、入力オペランドデータをレジスタから読み出し、実効アドレスを計算した後、メモリ120上の実効アドレスに対応する領域を読み出し、その値を汎用レジスタGRに書き込む。整数ストア命令が供給された場合、入力オペランドデータを汎用レジスタGRから読み出し、実効アドレスを計算した後、メモリ120上の実効アドレスに対応する領域へストアデータを書き込む。浮動小数点数ロード命令が供給された場合、入力オペランドデータをレジスタから読み出し、実効アドレスを計算した後、メモリ120上の実効アドレスに対応する領域を読み出し、その値を浮動小数点レジスタFRに書き込む。浮動小数点数ストア命令が供給された場合、入力オペランドデータをFRから読み出し実効アドレスを計算した後、メモリ120上の実効アドレスに対応する領域へストアデータを書き込む。
【0114】
FU0、FU1、FU2、FU3は、浮動小数点数演算命令を実行する。浮動小数点数演算命令が供給された場合、入力オペランドデータを浮動小数点レジスタFRから読み出し、浮動小数点演算演算を行なった後、演算結果である出力オペランドデータを浮動小数点レジスタFRに書き込む。
【0115】
BU0、BU1無条件分岐命令、条件分岐命令を実行する。無条件分岐命令が供給された場合、入力オペランドデータをレジスタGR、PCから読み出し、それらを用いてアドレス計算を行ない、その結果をプログラムカウンタPCに書き込む。条件分岐命令が供給された場合、分岐条件が成立するか否かを判定して、分岐が成立する場合には、入力オペランドデータをレジスタGR、PCから読み出し、それらを用いてアドレス計算を行ない、その結果を分岐先の命令のアドレスとして、プログラムカウンタPCに書き込む。
【0116】
また、可変長VLIW命令を実行するプロセッサでは、VLIW命令は図34のようにメモリ上に配置される。
(可変長VLIWプロセッサの第2の構成例の動作)
図34に示すようなプログラムが与えられたときの、図31に示されるVLIWプロセッサの動作について、図35を用いて説明する。なお、図中において、ADDは加算を行なう整数演算命令、FADDは加算を行う浮動小数点数演算命令である。
(時刻1)
(A)命令読出部121では、プログラムカウンタPC内の命令アドレスを用いて、図34のようにメモリ120上に配置されたVLIW命令1をメモリから読み出し、命令レジスタ122に書き込む。このとき命令レジスタ122には図35の時刻1のように格納される。
【0117】
(B)機能ユニットでは、供給された命令を実行する。命令スロット0のADdがIU0で実行される。命令スロット1のFADDがFU0で実行される。命令スロット2のADDがIU1で実行される。命令スロット3のFADDがFU1で実行される。命令スロット4のADDがIU2で実行される。命令スロット5のFADDがFU2で実行される。命令スロット6のADDがIU3で実行される。命令スロット7のFADDがFU3で実行される。BU0、BU1は基本命令が供給されないため動作しない。
【0118】
IU0、IU1、IU2、IU3、FU0、FU1、FU2、FU3において、基本命令の実行が完了することで、VLIW命令1の実行が完了する。
【0119】
最大8命令同時実行可能な上記可変長VLIWプロセッサのアセンブラの基本命令並び確認部S13A−1に、第1の基本命令並びアルゴリズムを用いて実現した場合の命令種別テーブルを図36に、命令スロットテーブルを図37示す。
(可変長VLIWプロセッサの第3の構成例)
最大4命令同時実行可能な可変長VLIWプロセッサに、前述した第2の基本命令並び確認アルゴリズムを適用してVLIW命令における基本命令の並びを確認した場合を、第3の構成例として以下に示す。
【0120】
プロセッサ構造は、第1の構成例のプロセッサ構造と同じである。可変長VLIWの命令並び確認部13A−1のアルゴリズムは、図28に示す第2の基本命令並び確認アルゴリズムを用いている。
【0121】
図38に、第3の構成例の命令種別テーブルを示す。図39に、第3の構成例の命令カテゴリテーブルを示す。図40に、第3の構成例の命令スロットテーブルを示す。
(可変長VLIWプロセッサの第4の構成例)
最大8命令同時実行可能な可変長VLIWプロセッサに、前述した第2の基本命令並び確認アルゴリズムを適用してVLIW命令における基本命令の並びを確認した場合を、第4の構成例として以下に示す。
【0122】
プロセッサ構造は、第2の構成例のプロセッサ構造と同じである。可変長VLIWの命令並び確認部13A−1のアルゴリズムは、図28に示す第2の基本命令並び確認アルゴリズムを用いている。
【0123】
図41に、第4の構成例の命令種別テーブルを示す。図42に、第4の構成例の命令カテゴリテーブルを示す。図43に、第4の構成例の命令スロットテーブルを示す。
【0124】
以上、本発明の実施の形態を説明した。前述の第1ないし第4のアルゴリズムは、コンピュータで処理される。つまり、コンピュータが実行するプログラムに第1ないし第4のアルゴリズムを構成するステップを記述し、コンピュータにこれらのステップを実行させる。つまり、本発明はコンピュータプログラムも含む。また、本発明はこれらのプログラムを格納するコンピュータ読取可能な記録媒体をも含む。更に、本発明は第1ないし第4のアルゴリズムを構成するステップを手段とする情報処理装置をも含む。
【0125】
可変長VLIWプロセッサは上述した構成・動作のプロセッサに限定されるものではなく、本発明の命令処理方法は他の構成・動作の可変長VLIWプロセッサに適用できる。
【0126】
最後に、本発明の特徴の一部を以下に整理して示す。
(付記1)プロセッサが実行する命令を構成する基本命令を実行できる機能ユニットの種別を特定する第1のステップと、
基本命令を論理命令スロットに配置可能かどうかを判断する第2のステップと、
配置可能と判断された基本命令と論理命令スロットに配置される他の基本命令との関係を考慮して当該配置可能と判断された基本命令をプロセッサの命令スロットに配置する第3のステップと
を有する命令処理方法。
(付記2)プロセッサが実行する命令を構成する基本命令の命令カテゴリを特定する第1のステップと、
当該命令カテゴリから実行可能な機能ユニットの種別を特定する第2のステップと、
基本命令を論理命令スロットに配置可能かどうかを判断する第3のステップと、
配置可能と判断された基本命令と論理命令スロットに配置される他の基本命令との関係を考慮して当該配置可能と判断された基本命令をプロセッサの命令スロットに配置する配置する第4のステップと
を有する命令処理方法。
(付記3)プロセッサが実行する命令を構成する基本命令を実行できる機能ユニットの種別を特定する第1のステップと、
基本命令を論理命令スロットに配置可能かどうかを判断する第2のステップと、
配置可能と判断された基本命令をプロセッサの命令スロットに配置する第3のステップと
を有する命令処理方法。
(付記4)プロセッサが実行する命令を構成する基本命令の命令カテゴリを特定する第1のステップと、
当該命令カテゴリから実行可能な機能ユニットの種別を特定する第2のステップと、
基本命令を論理命令スロットに配置可能かどうかを判断する第3のステップと、
配置可能と判断された基本命令をプロセッサの命令スロットに配置する配置する第4のステップと
を有する命令処理方法。
(付記5)前記第2のステップは、配置可能な最も若い論理命令スロットを特定するステップを有する付記1又は3に記載の命令処理方法。
(付記6)前記第3のステップは、配置可能な最も若い論理命令スロットを特定するステップを有する付記2又は4に記載の命令処理方法。
(付記7)前記第1ないし第3のステップを、プロセッサの全ての命令スロットに対して行なう付記1又は3に記載の命令処理方法。
(付記8)前記第1ないし第4のステップを、プロセッサの全ての命令スロットに対して行なう付記2又は4に記載の命令処理方法。
(付記9)コンピュータに、
プロセッサが実行する命令を構成する基本命令を実行できる機能ユニットの種別を特定する第1のステップと、
基本命令を論理命令スロットに配置可能かどうかを判断する第2のステップと、
配置可能と判断された基本命令と論理命令スロットに配置される他の基本命令との関係を考慮して当該配置可能と判断された基本命令をプロセッサの命令スロットに配置する第3のステップと
を実行させるためのプログラム。
(付記10)コンピュータに、
プロセッサが実行する命令を構成する基本命令の命令カテゴリを特定する第1のステップと、
当該命令カテゴリから実行可能な機能ユニットの種別を特定する第2のステップと、
基本命令を論理命令スロットに配置可能かどうかを判断する第3のステップと、
配置可能と判断された基本命令と論理命令スロットに配置される他の基本命令との関係を考慮して当該配置可能と判断された基本命令をプロセッサの命令スロットに配置する配置する第4のステップと
を実行させるためのプログラム。
(付記11)コンピュータに、
プロセッサが実行する命令を構成する基本命令を実行できる機能ユニットの種別を特定する第1のステップと、
基本命令を論理命令スロットに配置可能かどうかを判断する第2のステップと、
配置可能と判断された基本命令をプロセッサの命令スロットに配置する第3のステップと
を実行させるためのプログラム。
(付記12)コンピュータに、
プロセッサが実行する命令を構成する基本命令の命令カテゴリを特定する第1のステップと、
当該命令カテゴリから実行可能な機能ユニットの種別を特定する第2のステップと、
基本命令を論理命令スロットに配置可能かどうかを判断する第3のステップと、
配置可能と判断された基本命令をプロセッサの命令スロットに配置する配置する第4のステップと
を実行させるためのプログラム。
(付記13)付記1ないし4のいずれか一項に記載の前記命令処理方法を含むプロセッサのアセンブラ。
(付記14)付記1ないし4のいずれか一項に記載の前記命令処理方法を含むプロセッサのコンパイラ。
【0127】
【発明の効果】
以上説明したように、本発明によれば、可変長の超長命令語アーキテクチャに基づいて命令発行幅が異なるプロセッサの言語処理系に適した命令処理方法を提供することができる。
【図面の簡単な説明】
【図1】超長命令語アーキテクチャに基づくプロセッサの従来構成のブロック図である。
【図2】図1に示すメモリ上でのVLIW命令の配置例を示す図である。
【図3】図1に示す命令レジスタにVLIW命令が格納される様子を示す図である。
【図4】VLIWプロセッサの従来のアセンブラのフローチャートである。
【図5】従来の配置可能命令スロットテーブルの一例を示す図である。
【図6】従来のアセンブラのVLIW命令の確認部を示す図である。
【図7】従来のアセンブラのVLIW命令の命令スロットに配置可能かどうかを確認するフローチャートである。
【図8】従来のVLIWプロセッサのコンパイラのフローチャートである。
【図9】従来のコンパイラのVLIW形成部のフローチャートである。
【図10】可変長VLIWプロセッサの第1の構成例を示すブロック図である。
【図11】図10に示す可変長VLIWプロセッサの実行可能なVLIW内の基本命令の並びを示す図である。
【図12】図10に示すメモリ上でのVLIW命令の配置例を示す図である。
【図13】図10に示す命令レジスタにVLIW命令が格納される様子の一例を示す図である。
【図14】本発明の一実施の形態による可変長VLIWプロセッサのアセンブラのフローチャートを示す図である。
【図15】図13に示す可変長VLIW確認部の一構成例を示すフローチャートである。
【図16】本発明の一実施の形態による可変長VLIWプロセッサのコンパイラのフローチャートを示す図である。
【図17】図16に示すVLIW形成部の一構成例を示すフローチャートである。
【図18】命令格納テーブルの一例を示す図である。
【図19】命令スロットテーブルの一例を示す図である。
【図20】命令配置テーブルの一例を示す図である。
【図21】機能ユニットテーブルの一例を示す図である。
【図22】可変長VLIW命令を構成する基本命令の並びを確認する第1のアルゴリズムを示すフローチャートである。
【図23】図16に示す可変長形成部の第1の構成例における命令種別テーブルを示す図である。
【図24】図16に示す可変長形成部の第1の構成例における命令スロットテーブルを示す図である。
【図25】可変長VLIW命令を構成する基本命令の並びを確認する第2のアルゴリズムで用いられる命令種別テーブルの一例を示す図である。
【図26】可変長VLIW命令を構成する基本命令の並びを確認する第2のアルゴリズムで用いられる命令カテゴリテーブルの一例を示す図である。
【図27】可変長VLIW命令を構成する基本命令の並びを確認する第2のアルゴリズムで用いられる命令スロットテーブルの一例を示す図である。
【図28】可変長VLIW命令を構成する基本命令の並びを確認する第2のアルゴリズムを示すフローチャートである。
【図29】可変長VLIW命令を構成する基本命令の並びを確認する第3のアルゴリズムを示すフローチャートである。
【図30】可変長VLIW命令を構成する基本命令の並びを確認する第4のアルゴリズムを示すフローチャートである。
【図31】可変長VLIWプロセッサの第2の構成例を示すブロック図である。
【図32】図31に示す可変長VLIWプロセッサで実行可能なVLIW内の基本命令の並びを示す図(その1)である。
【図33】図31に示す可変長VLIWプロセッサで実行可能なVLIW内の基本命令の並びを示す図(その2)である。
【図34】図31に示すメモリ上でのVLIW命令の配置例を示す図である。
【図35】図31に示す命令レジスタにVLIW命令が格納される様子を示す図である。
【図36】図31に示す第2の構成例における命令種別テーブルを示す図である。
【図37】図31に示す第2の構成例における命令スロットテーブルを示す図である。
【図38】可変長VLIWプロセッサの第3の構成例における命令種別テーブルを示す図である。
【図39】可変長VLIWプロセッサの第3の構成例における命令カテゴリテーブルを示す図である。
【図40】可変長VLIWプロセッサの第3の構成例における命令スロットテーブルを示す図である。
【図41】可変長VLIWプロセッサの第4の構成例における命令種別テーブルを示す図である。
【図42】可変長VLIWプロセッサの第4の構成例における命令カテゴリテーブルを示す図である。
【図43】可変長VLIWプロセッサの第4の構成例における命令スロットテーブルを示す図である。
【符号の説明】
20 メモリ
21 命令読出部
22 命令レジスタ
23 命令発行部
24 命令実行部
PC プログラムカウンタ
GR 汎用レジスタ
FR 浮動小数点レジスタ
Claims (10)
- プロセッサが実行する基本命令を複数の物理命令スロットを含むレジスタに格納し、前記複数の物理命令スロットに格納される基本命令を実行する複数の機能ユニットに供給する命令処理方法において、
前記基本命令を実行できる機能ユニットの種別を特定する第1のステップと、
論理命令スロットポインタと機能ユニットの種別との対応関係を示す命令スロットテーブルを使用して、前記機能ユニットの種別が特定された命令が配置可能であるか否かを判断する第2のステップと、
前記第2のステップにおいて配置可能と判断された場合には、前記複数の機能ユニットに基本命令が配置されたことを示す機能ユニットテーブルを使用して、前記配置可能な基本命令に対応する機能ユニットと同種の機能ユニットであってより若い番号を有する機能ユニットに対して基本命令が割り当てられていることを確認して、前記基本命令を前記複数の物理命令スロットの一つに配置する第3のステップと
を有する命令処理方法。 - 前記第2のステップにおいて、
前記機能ユニットの種別が特定された命令が配置可能でないと判断される場合には、前記論理命令スロットポインタをインクリメントし、命令スロットテーブルを使用して前記基本命令が再度配置可能であるか否かを判断すること
を特徴とする請求項1に記載の命令処理方法。 - 前記論理命令スロットポインタが最大値を超える場合にはエラーを出力すること
を特徴とする請求項2に記載の命令処理方法。 - 前記第3のステップにおいて、
前記基本命令が前記複数の物理命令スロットの一つに配置される場合には、前記機能ユニットテーブルに配置されたことを示すフラグを設定すること
を特徴とする請求項1乃至3の何れか一に記載の命令処理方法。 - 前記第3のステップにおいて、
前記基本命令が物理命令スロットに配置された後に、前記論理命令スロットポインタをインクリメントし、前記基本命令が最後の命令であるか否かを確認すること
を特徴とする請求項1乃至4の何れか一に記載の命令処理方法。 - 実行する基本命令を複数の物理命令スロットを含むレジスタに格納し、前記複数の物理命令スロットに格納される基本命令を実行する複数の機能ユニットに供給するプロセッサに、
前記基本命令を実行できる機能ユニットの種別を特定する第1のステップと、
論理命令スロットポインタと機能ユニットの種別との対応関係を示す命令スロットテーブルを使用して、前記機能ユニットの種別が特定された命令が配置可能であるか否かを判断する第2のステップと、
前記第2のステップにおいて配置可能と判断された場合には、前記複数の機能ユニットに基本命令が配置されたことを示す機能ユニットテーブルを使用して、前記配置可能な基本命令に対応する機能ユニットと同種の機能ユニットであってより若い番号を有する機能ユニットに対して基本命令が割り当てられていることを確認して、前記基本命令を前記複数の物理命令スロットの一つに配置する第3のステップと
を実行させるためのプログラム。 - 前記第2のステップにおいて、前記プロセッサに、
前記機能ユニットの種別が特定された命令が配置可能でないと判断される場合には、前記論理命令スロットポインタをインクリメントさせ、命令スロットテーブルを使用して前記基本命令が再度配置可能であるか否かを判断させること
を特徴とする請求項6に記載のプログラム。 - 前記プロセッサに、前記論理命令スロットポインタが最大値を超える場合にはエラーを出力させること
を特徴とする請求項7に記載のプログラム。 - 前記第3のステップにおいて、前記プロセッサに、
前記基本命令が前記複数の物理命令スロットの一つに配置される場合には、前記機能ユニットテーブルに配置されたことを示すフラグを設定させること
を特徴とする請求項6乃至8の何れか一に記載のプログラム。 - 前記第3のステップにおいて、前記プロセッサに、
前記基本命令が物理命令スロットに配置された後に、前記論理命令スロットポインタをインクリメントさせ、前記基本命令が最後の命令であるか否かを確認させること
を特徴とする請求項6乃至9の何れか一に記載のプログラム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001128368A JP4542722B2 (ja) | 2001-04-25 | 2001-04-25 | 命令処理方法 |
US10/053,707 US7647473B2 (en) | 2001-04-25 | 2002-01-24 | Instruction processing method for verifying basic instruction arrangement in VLIW instruction for variable length VLIW processor |
EP02250684A EP1253515A3 (en) | 2001-04-25 | 2002-01-31 | Method for verifying basic instruction arrangement in VLIW instructions for variable length VLIW processor |
KR1020020008731A KR100822612B1 (ko) | 2001-04-25 | 2002-02-19 | 명령 처리 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001128368A JP4542722B2 (ja) | 2001-04-25 | 2001-04-25 | 命令処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002323982A JP2002323982A (ja) | 2002-11-08 |
JP4542722B2 true JP4542722B2 (ja) | 2010-09-15 |
Family
ID=18977072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001128368A Expired - Fee Related JP4542722B2 (ja) | 2001-04-25 | 2001-04-25 | 命令処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7647473B2 (ja) |
EP (1) | EP1253515A3 (ja) |
JP (1) | JP4542722B2 (ja) |
KR (1) | KR100822612B1 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3896087B2 (ja) | 2003-01-28 | 2007-03-22 | 松下電器産業株式会社 | コンパイラ装置およびコンパイル方法 |
GB2424727B (en) * | 2005-03-30 | 2007-08-01 | Transitive Ltd | Preparing instruction groups for a processor having a multiple issue ports |
US9354890B1 (en) | 2007-10-23 | 2016-05-31 | Marvell International Ltd. | Call stack structure for enabling execution of code outside of a subroutine and between call stack frames |
US8095775B1 (en) * | 2007-11-21 | 2012-01-10 | Marvell International Ltd. | Instruction pointers in very long instruction words |
US9442758B1 (en) | 2008-01-21 | 2016-09-13 | Marvell International Ltd. | Dynamic processor core switching |
US9582443B1 (en) | 2010-02-12 | 2017-02-28 | Marvell International Ltd. | Serial control channel processor for executing time-based instructions |
US8884920B1 (en) | 2011-05-25 | 2014-11-11 | Marvell International Ltd. | Programmatic sensing of capacitive sensors |
US9098694B1 (en) | 2011-07-06 | 2015-08-04 | Marvell International Ltd. | Clone-resistant logic |
US9069553B2 (en) | 2011-09-06 | 2015-06-30 | Marvell World Trade Ltd. | Switching tasks between heterogeneous cores |
KR101783312B1 (ko) | 2011-11-15 | 2017-10-10 | 삼성전자주식회사 | 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법 |
US10001993B2 (en) * | 2013-08-08 | 2018-06-19 | Linear Algebra Technologies Limited | Variable-length instruction buffer management |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
WO2015101827A1 (en) * | 2013-12-31 | 2015-07-09 | Mosys, Inc. | Integrated main memory and coprocessor with low latency |
GB2523205B (en) * | 2014-03-18 | 2016-03-02 | Imagination Tech Ltd | Efficient calling of functions on a processor |
GB2539410B (en) * | 2015-06-15 | 2017-12-06 | Bluwireless Tech Ltd | Data processing |
US10198260B2 (en) * | 2016-01-13 | 2019-02-05 | Oracle International Corporation | Processing instruction control transfer instructions |
US10127043B2 (en) * | 2016-10-19 | 2018-11-13 | Rex Computing, Inc. | Implementing conflict-free instructions for concurrent operation on a processor |
EP3563307B1 (en) | 2017-02-23 | 2023-04-12 | Cerebras Systems Inc. | Accelerated deep learning |
US11488004B2 (en) | 2017-04-17 | 2022-11-01 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
WO2018193361A1 (en) | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Microthreading for accelerated deep learning |
WO2018193354A1 (en) | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Wavelet representation for accelerated deep learning |
US11328207B2 (en) | 2018-08-28 | 2022-05-10 | Cerebras Systems Inc. | Scaled compute fabric for accelerated deep learning |
WO2020044238A1 (en) | 2018-08-29 | 2020-03-05 | Cerebras Systems Inc. | Processor element redundancy for accelerated deep learning |
WO2020044208A1 (en) | 2018-08-29 | 2020-03-05 | Cerebras Systems Inc. | Isa enhancements for accelerated deep learning |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000163266A (ja) * | 1998-11-30 | 2000-06-16 | Mitsubishi Electric Corp | 命令実行方式 |
JP2001100997A (ja) * | 1999-10-01 | 2001-04-13 | Fujitsu Ltd | 並列処理プロセッサ |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69231011T2 (de) * | 1991-02-08 | 2000-09-28 | Fujitsu Ltd., Kawasaki | Cachespeicher zur Verarbeitung von Befehlsdaten und Datenprozessor mit demselben |
DE4211245B4 (de) | 1991-04-05 | 2009-05-14 | Kabushiki Kaisha Toshiba, Kawasaki | Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung |
JPH04308929A (ja) * | 1991-04-05 | 1992-10-30 | Toshiba Corp | 並列計算機 |
US5488729A (en) * | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
JP3186095B2 (ja) * | 1991-07-05 | 2001-07-11 | 日本電気株式会社 | 演算処理装置 |
US5787303A (en) * | 1991-10-31 | 1998-07-28 | Kabushiki Kaisha Toshiba | Digital computer system capable of processing a plurality of instructions in parallel based on a VLIW architecture |
DE69325826T2 (de) * | 1992-01-06 | 2000-02-24 | Hitachi, Ltd. | Rechner mit einer Parallelverarbeitungsfähigkeit |
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
DE69325785T2 (de) | 1992-12-29 | 2000-02-17 | Koninklijke Philips Electronics N.V., Eindhoven | Verbesserte Architektur für Prozessor mit sehr langem Befehlswort |
JPH06222926A (ja) * | 1993-01-27 | 1994-08-12 | Fujitsu Ltd | 仮想リソース生成方法 |
JP3543181B2 (ja) * | 1994-11-09 | 2004-07-14 | 株式会社ルネサステクノロジ | データ処理装置 |
US5600810A (en) * | 1994-12-09 | 1997-02-04 | Mitsubishi Electric Information Technology Center America, Inc. | Scaleable very long instruction word processor with parallelism matching |
US5649135A (en) * | 1995-01-17 | 1997-07-15 | International Business Machines Corporation | Parallel processing system and method using surrogate instructions |
JP2806359B2 (ja) * | 1996-04-30 | 1998-09-30 | 日本電気株式会社 | 命令処理方法及び命令処理装置 |
US5887174A (en) * | 1996-06-18 | 1999-03-23 | International Business Machines Corporation | System, method, and program product for instruction scheduling in the presence of hardware lookahead accomplished by the rescheduling of idle slots |
US5931939A (en) | 1996-09-25 | 1999-08-03 | Philips Electronics North America Corporation | Read crossbar elimination in a VLIW processor |
US5870576A (en) * | 1996-12-16 | 1999-02-09 | Hewlett-Packard Company | Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures |
US5922065A (en) | 1997-10-13 | 1999-07-13 | Institute For The Development Of Emerging Architectures, L.L.C. | Processor utilizing a template field for encoding instruction sequences in a wide-word format |
JPH11134197A (ja) * | 1997-10-29 | 1999-05-21 | Fujitsu Ltd | Vliw方式計算機用のコンパイル装置及び方法並びにコンパイル実行プログラムを格納した記録媒体 |
US6549930B1 (en) * | 1997-11-26 | 2003-04-15 | Compaq Computer Corporation | Method for scheduling threads in a multithreaded processor |
KR100322277B1 (ko) * | 1998-11-20 | 2002-03-08 | 권 기 홍 | 확장 명령어를 가진 중앙처리장치 |
JP3830683B2 (ja) * | 1998-12-28 | 2006-10-04 | 富士通株式会社 | Vliwプロセッサ |
JP2000207223A (ja) * | 1999-01-12 | 2000-07-28 | Matsushita Electric Ind Co Ltd | 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体 |
US7111290B1 (en) * | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
US6718541B2 (en) * | 1999-02-17 | 2004-04-06 | Elbrus International Limited | Register economy heuristic for a cycle driven multiple issue instruction scheduler |
US6779107B1 (en) * | 1999-05-28 | 2004-08-17 | Ati International Srl | Computer execution by opportunistic adaptation |
US7096343B1 (en) * | 2000-03-30 | 2006-08-22 | Agere Systems Inc. | Method and apparatus for splitting packets in multithreaded VLIW processor |
US6738893B1 (en) * | 2000-04-25 | 2004-05-18 | Transmeta Corporation | Method and apparatus for scheduling to reduce space and increase speed of microprocessor operations |
US6651247B1 (en) * | 2000-05-09 | 2003-11-18 | Hewlett-Packard Development Company, L.P. | Method, apparatus, and product for optimizing compiler with rotating register assignment to modulo scheduled code in SSA form |
-
2001
- 2001-04-25 JP JP2001128368A patent/JP4542722B2/ja not_active Expired - Fee Related
-
2002
- 2002-01-24 US US10/053,707 patent/US7647473B2/en not_active Expired - Fee Related
- 2002-01-31 EP EP02250684A patent/EP1253515A3/en not_active Withdrawn
- 2002-02-19 KR KR1020020008731A patent/KR100822612B1/ko not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000163266A (ja) * | 1998-11-30 | 2000-06-16 | Mitsubishi Electric Corp | 命令実行方式 |
JP2001100997A (ja) * | 1999-10-01 | 2001-04-13 | Fujitsu Ltd | 並列処理プロセッサ |
Also Published As
Publication number | Publication date |
---|---|
EP1253515A3 (en) | 2005-07-27 |
KR20020083118A (ko) | 2002-11-01 |
KR100822612B1 (ko) | 2008-04-16 |
US7647473B2 (en) | 2010-01-12 |
EP1253515A2 (en) | 2002-10-30 |
US20020161986A1 (en) | 2002-10-31 |
JP2002323982A (ja) | 2002-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4542722B2 (ja) | 命令処理方法 | |
JP3801545B2 (ja) | コンパイラ用プログラム、コンパイラ装置及びコンパイル方法 | |
JP3707727B2 (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
JPH04322329A (ja) | 多機種対応型情報処理システム、および、方法 | |
JPH11296381A (ja) | 仮想マシン及びコンパイラ | |
US8689202B1 (en) | Scheduling of instructions | |
US9383977B1 (en) | Generation of compiler description from architecture description | |
US8549266B2 (en) | System and method of instruction modification | |
Araujo et al. | Code generation for fixed-point DSPs | |
El-Shobaky et al. | Automatic vectorization using dynamic compilation and tree pattern matching technique in Jikes RVM | |
EP2181389A2 (en) | Data processing with protection against soft errors | |
Sassone et al. | Static strands: safely collapsing dependence chains for increasing embedded power efficiency | |
Abderazek et al. | Natural instruction level parallelism-aware compiler for high-performance QueueCore processor architecture | |
Bik et al. | A case study on compiler optimizations for the Intel® Core TM 2 Duo Processor | |
Zhou et al. | Tree traversal scheduling: A global instruction scheduling technique for VLIW/EPIC processors | |
Finlayson et al. | Improving processor efficiency by statically pipelining instructions | |
Porpodas et al. | CAeSaR: Unified cluster-assignment scheduling and communication reuse for clustered VLIW processors | |
Smith | Architectural support for compile-time speculation | |
Biswas et al. | Reducing code size for heterogeneous-connectivity-based VLIW DSPs through synthesis of instruction set extensions | |
Shrivastava et al. | Retargetable pipeline hazard detection for partially bypassed processors | |
JPH10254712A (ja) | 多機種対応型情報処理システム、および、方法 | |
JP4721975B2 (ja) | コンパイラ装置およびコンパイル方法 | |
JPH08101773A (ja) | 情報処理装置 | |
Brogioli | Software and Compiler Optimization for Microcontrollers, Embedded Processors, and DSPs | |
Davis et al. | Scheduling instruction effects for a statically pipelined processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060424 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080611 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090609 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090810 |
|
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: 20100622 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100628 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130702 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |