JP3727324B2 - プロセッサ及びコンパイル装置 - Google Patents
プロセッサ及びコンパイル装置 Download PDFInfo
- Publication number
- JP3727324B2 JP3727324B2 JP2004130214A JP2004130214A JP3727324B2 JP 3727324 B2 JP3727324 B2 JP 3727324B2 JP 2004130214 A JP2004130214 A JP 2004130214A JP 2004130214 A JP2004130214 A JP 2004130214A JP 3727324 B2 JP3727324 B2 JP 3727324B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- instructions
- unit
- register
- 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 - Lifetime
Links
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
(命令フォーマットとアーキテクチャの概要)
まず、図1(a)〜(c)を用いて、本発明に係るプロセッサが解読実行する命令の構造について説明する。図1(a)〜(c)は、本プロセッサの命令フォーマットを示す図である。本プロセッサの各命令は、32ビットの固定長であり、各命令は1ビットの並列実行境界情報(E:end bit)10を保持している。この情報は、当該命令とそれに後続する命令との間に並列実行の境界が存在するか否かを示すものである。具体的には、並列実行境界情報Eが“1”の場合にはその命令と後続命令との間に並列実行の境界が存在し、並列実行境界情報Eが“0”の場合には並列実行の境界が存在しないことになる。この情報の利用方法については後で述べる。
図3は、本発明に係るプロセッサのハードウェア構成を示すブロック図である。本プロセッサは、2つの演算器を持つ並列実行プロセッサであり、大きく分けて、命令供給部20、解読部30、実行部40から構成される。
図4は、命令レジスタ23の周辺の構成を示すブロック図である。図中、破線の矢印は制御信号を表す。
次に、具体的な命令を解読実行した場合の本実施形態のプロセッサの動作について説明する。
命令1、命令2、命令3及び命令4を含むパケットが外部メモリから供給され、それぞれ命令レジスタ23に転送される。次に命令発行制御部31が各命令の並列実行境界情報Eを参照する。この場合、命令3の並列実行境界情報が“1”であるため、第4命令デコーダ36の解読結果を無効化、すなわち無動作命令とする。
命令バッファ22に残された命令4と、新たに外部メモリから供給された命令5とが順に命令レジスタ23に転送される。次に命令発行制御部31が各命令の並列実行境界情報Eを参照する。この場合、命令5の並列実行境界情報が“1”であるため、第3命令デコーダ35及び第4命令デコーダ36の解読結果を無効化、すなわち無動作命令とする。
次に、図7に示した処理を、従来技術として挙げた、条件実行命令を全て実行部へ発行し、この実行部において適宜無効化するようなプロセッサに行わせた場合を仮定して、本発明に係るプロセッサの場合と比較する。
命令1、命令2、命令3及び命令4を含むパケットが外部メモリから供給され、命令1と命令2が順に命令レジスタ23aに転送される。次に命令発行制御部31aがAレジスタ231aに格納された命令1の並列実行境界情報Eを参照する。この場合、命令1の並列実行境界情報Eは“0”であるため、第2命令デコーダ34aの解読結果は無効化しない。したがって、命令1と命令2の両方を実行部に送ることになる。発行されなかった命令3及び命令4は、命令バッファに残される。
命令バッファに残された命令3及び命令4が順に命令レジスタ23aに転送され、新たに外部メモリから命令5が供給される。次に命令発行制御部31aがAレジスタ231aに格納された命令3の並列実行境界情報Eを参照する。この場合、命令3の並列実行境界情報Eが“0”であるため、第2命令デコーダ34aの解読結果は無効化しない。したがって、命令3と命令4の両方を実行部に送ることになる。発行されなかった命令5は、命令バッファ22に残される。
命令バッファに残された命令5が命令レジスタ23aに転送される。次に命令発行制御部31aがAレジスタ231aに格納された命令5の並列実行境界情報Eを参照する。この場合、命令5の並列実行境界情報Eが“1”であるため、第2命令デコーダ34aの解読結果を無効化する。したがって、命令5のみが発行される。これで、供給された全ての命令が発行されたことになる。
次に、上述の実施の形態1におけるプロセッサで実行するコードを生成するためのコンパイル装置、及びそのコンパイル方法に関する実施の形態について説明する。
まず、ここで用いる用語を説明する。
・オブジェクトコード
再配置可能情報を含んだ対象プロセッサ向け機械語プログラムをいう。連結編集を行い未確定アドレスを決定することにより実行形式コードに変換することができる。
・プレデセッサ
ある命令を実行するために、それ以前に実行しておく必要のある命令をいう。
・実行グループ
コンパイル装置によって、同一サイクルに並列実行可能であるものをグループ化した命令群をいう。
・基本ブロック
実行が先頭から始まり、必ず最後まで実行される一連の命令列のことであり、ブロックの途中でブロックを出ることや、ブロックの途中からブロックに入ることがないものをいう。
本コンパイル装置が対象とするプロセッサは、上記実施の形態1で説明したプロセッサである。このプロセッサは、コンパイル装置にて付与された並列実行境界情報Eを参照することにより実行グループを生成し、ハードウェアでは並列実行可能か否かの判定を行わない。したがって、並列実行境界間すなわち実行グループ内に、同時実行可能な命令が正しく配置されていることは、コンパイル装置が保証することになる。並列実行境界間に配置できる命令に対する制約は、
(1)並列実行グループ中の命令の総数は4を越えない(命令デコーダの制約)、
(2)並列実行グループ中の命令のうち、実際に実行部にてオペレーションが実行される命令の個数は2を越えない(実行命令数の制約)、
(3)並列実行グループ中の命令のうち、実際に実行部にて使用する対象プロセッサ資源の総和は、2ALUユニット、1メモリアクセスユニット、1分岐ユニットを越えない(演算器の制約)、
である。命令は、これら3つの制約が満たされた場合のみ並列実行ができる。
図12は、本発明の実施形態2におけるコンパイル装置の構成及び関連するデータを示すブロック図である。本コンパイル装置は、高級言語で書かれたソースコード120からオブジェクトコード130を生成するプログラム処理装置であり、コンパイラ上流部100、アセンブラコード生成部101、命令スケジューリング部102、オブジェクトコード生成部103からなる。
命令スケジューリング部102は、アセンブラコード生成部101で生成されたアセンブラコードに対し、命令に付加された各条件間の排他性の解析、命令間の依存関係の解析、命令の再配置(命令順の並べ替え)及び並列実行境界の付加を行い、アセンブラコードを対象プロセッサ向けに並列化する。命令スケジューリング部102は、条件排他性解析部110、依存関係解析部111、命令再配置部112及び実行境界付加部113から構成される。
・データ依存関係
ある資源を定義する命令と、同じ資源を参照する命令との間の依存関係。
・逆依存関係
ある資源を参照する命令と、同じ資源を定義する命令との間の依存関係。
・出力依存関係
ある資源を定義する命令と、同じ資源を定義する命令との間の依存関係。
次に、本コンパイル装置の特徴的な構成要素の動作について、具体的な命令を用いて説明する。
・命令1…レジスタR0の格納値と定数0とが一致しているかを比較し、真偽を条件フラグC0に設定し、その逆の条件を条件フラグC1に設定する。
・命令2…条件フラグC0の値が真の場合にのみ、レジスタR1の格納値とレジスタR2の格納値とを加算してレジスタR2に格納する。
・命令3…条件フラグC1の値が真の場合にのみ、レジスタR2の格納値とレジスタR3の格納値とを加算してレジスタR3に格納する。
・命令4…条件フラグC0の値が真の場合にのみ、レジスタR1の格納値とレジスタR3の格納値とを加算してレジスタR3に格納する。
・命令5…条件フラグC1の値が真の場合にのみ、レジスタR3の格納値とレジスタR4の格納値とを加算してレジスタR4に格納する。
・命令6…条件フラグC0の値が真の場合にのみ、レジスタR2の格納値とレジスタR4の格納値とを加算してレジスタR4に格納する。
・命令7…条件フラグC1の値が真の場合にのみ、レジスタR3の格納値とレジスタR5の格納値とを加算してレジスタR5に格納する。
次に、図19に示したアセンブラコードを、本発明のコンパイル装置の構成をとらない従来のコンパイル装置にてコンパイルした場合を仮定して、本発明に係るコンパイル装置の場合と比較する。対象プロセッサは、本発明のプロセッサと同様に2個の演算器を備えたプロセッサとする。
次に、上記実施の形態1のプロセッサを拡張したプロセッサの実施の形態について説明する。
図23は、本実施の形態のプロセッサの命令発行制御部140とその周辺回路の構成を示したものである。図23中の命令発行制御部140のほとんどの部分は、図5に示した実施の形態1のプロセッサのものと同一である。異なる点は、実行命令選択制御部141の制御方法と、実行命令選択制御部141の後段に命令結合部142が追加されていることの2点である。
次に、図24を用いて、本プロセッサの具体的な動作について説明する。図24は、条件付き実行命令を含むプログラムの一例を示す図である。このプログラムは、4個の命令で構成されており、表記は図9のプログラムと同じである。ニーモニック“lsr”は、レジスタの格納値の論理右シフトを表している。
命令1、命令2、命令3及び命令4を含むパケットが外部メモリから供給され、それぞれ命令レジスタ23に転送される。次に、命令発行制御部140が各命令の並列実行境界情報Eを参照する。この場合、命令1、命令2、命令3の並列実行境界情報Eがいずれも“0”であるため、命令デコーダの解読結果の無効化は行わない。
次に上述の実施の形態3におけるプロセッサで実行するコードを生成するコンパイル装置、及びそのコンパイル方法に関する実施の形態について説明する。
本実施の形態のコンパイル装置の命令スケジューリング部は、第2の実施の形態における命令スケジューリング部102と同様に、条件排他性解析部、依存関係解析部、命令再配置部、及び実行境界付加部から構成されるが、異なる点は命令再配置部の再配置の方法のみである。
図26を用いて、本コンパイル装置の特徴的な構成要素の動作について具体的な命令を用いて説明する。図26は、コンパイラ上流部及びアセンブラコード生成部を経て生成されたアセンブラコードの一例である。命令スケジューリング部は、図26のコードを入力として受け取る。図26に含まれる各命令の意味は以下のとおりである。ただし、条件フラグC0とC1は、命令1以前の命令によって排他な関係となっていることを想定している。
・命令1…レジスタR3の格納値をレジスタR1の格納値の分だけ論理右シフトする。
・命令2…条件フラグC1の値が真の場合にのみ、レジスタR0の格納値に1を加算してレジスタR0に格納する。
・命令3…条件フラグC0の値が真の場合にのみ、レジスタR0の格納値から1を減算してレジスタR0に格納する。
・命令4…条件フラグC1の値が真の場合にのみ、レジスタR1の格納値とレジスタR2の格納値とを加算してレジスタR2に格納する。
11 実行条件情報(P)
20 命令供給部(命令供給手段)
21 命令フェッチ部
22 命令バッファ
23 命令レジスタ
231 Aレジスタ
232 Bレジスタ
233 Cレジスタ
234 Dレジスタ
30 解読部
31 命令発行制御部(命令発行制御手段)
311 条件フラグ
312 条件フラグ有効情報
313 実行命令選択制御部
314,315 論理回路
32 命令デコーダ(解読手段)
33 第1命令デコーダ
34 第2命令デコーダ
35 第3命令デコーダ
36 第4命令デコーダ
371〜374 実行命令セレクタ
38 命令無効化方法選択部(命令無効化方法選択手段)
40 実行部(実行手段)
41 実行制御部
42 PC(プログラムカウンタ)部
43 レジスタファイル
44 第1演算器
45 第2演算器
46 書き込み制御部(実行結果無効化手段)
47 オペランドアクセス部
48,49 データバス
100 コンパイラ上流部
101 アセンブラコード生成部
102 命令スケジューリング部(命令スケジューリング手段)
103 オブジェクトコード生成部
110 条件排他性解析部(条件排他性解析手段)
111 依存関係解析部(依存関係解析手段)
112 命令再配置部(命令再配置手段)
113 実行境界付加部(実行境界付加手段)
120 ソースコード
130 オブジェクトコード
140 命令発行制御部(命令発行制御手段)
141 実行命令選択制御部
142 命令結合部
Claims (5)
- 複数の命令を供給するための命令供給手段と、
前記複数の命令を各々解読するための解読手段と、
有効なオペレーションを実行する命令又は命令の集合を決定するための命令発行制御手段と、
前記複数の命令中に各命令の動作が指定され、当該指定に基づいて1つ又は複数のオペレーションを実行するための実行手段とを備えたプロセッサであって、
前記命令発行制御手段は、前記解読手段にて解読された命令群の中から、複数の命令の機能が単一の命令で実現可能であるような少なくとも2つの命令を検出し、前記少なくとも2つの命令を単一の命令として置き換えるとともに、前記単一の命令と前記少なくとも2つの命令に後続する有効な命令とを前記実行手段に転送するように制御する機能を有することを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記命令発行制御手段は、当サイクルにて実行対象にも削除対象にも結合対象にもならずに残った命令群を検出し、それらの命令群を次サイクル以降で発行の対象とするように制御する機能を更に有することを特徴とするプロセッサ。 - 高級言語で記述されたプログラムのソースコードを実行形式コードに変換するためのコンパイル装置であって、
前記ソースコード中の命令を、並列実行すべき複数の命令が隣接するように並べ直すための命令スケジューリング手段を備え、
前記命令スケジューリング手段は、
並列実行可能な命令の集合をサイクル毎に区分できるように命令の並べ替えを行うための命令再配置手段を有し、
前記命令再配置手段は、複数の命令の機能が単一の命令で実現可能であって、いずれの実行条件ともが真となる場合がある少なくとも2つの命令の組み合わせを検出し、前記少なくとも2つの命令を構成要素に含む命令の集合が同一サイクルで並列実行されるよう配置することを特徴とするコンパイル装置。 - 請求項3記載のコンパイル装置において、
前記命令スケジューリング手段は、前記命令再配置手段の結果に基づき、命令内に並列実行の境界であるか否かを示す並列実行境界情報を付加するための実行境界付加手段を更に有することを特徴とするコンパイル装置。 - 請求項3記載のコンパイル装置において、
同一サイクルで並列実行されるよう配置された前記命令の集合を構成する命令の数は、前記少なくとも2つの命令を構成する命令の数より多いことを特徴とするコンパイル装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004130214A JP3727324B2 (ja) | 2004-04-26 | 2004-04-26 | プロセッサ及びコンパイル装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004130214A JP3727324B2 (ja) | 2004-04-26 | 2004-04-26 | プロセッサ及びコンパイル装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001286393A Division JP3564445B2 (ja) | 2001-09-20 | 2001-09-20 | プロセッサ、コンパイル装置及びコンパイル方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005224048A Division JP2006012185A (ja) | 2005-08-02 | 2005-08-02 | プロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004272927A JP2004272927A (ja) | 2004-09-30 |
JP3727324B2 true JP3727324B2 (ja) | 2005-12-14 |
Family
ID=33128558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004130214A Expired - Lifetime JP3727324B2 (ja) | 2004-04-26 | 2004-04-26 | プロセッサ及びコンパイル装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3727324B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155840A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 命令制御装置及び命令制御方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6265133A (ja) * | 1985-09-17 | 1987-03-24 | Nec Corp | 命令先取り装置 |
JPS6482131A (en) * | 1987-09-24 | 1989-03-28 | Mitsubishi Electric Corp | Data processor |
JPH09311786A (ja) * | 1996-03-18 | 1997-12-02 | Hitachi Ltd | データ処理装置 |
JPH09265400A (ja) * | 1996-03-28 | 1997-10-07 | Hitachi Ltd | コンパイル最適化方式 |
JP3473391B2 (ja) * | 1998-04-08 | 2003-12-02 | 松下電器産業株式会社 | プログラム処理方法、プログラム処理装置及び記録媒体 |
JP2000284970A (ja) * | 1999-03-29 | 2000-10-13 | Matsushita Electric Ind Co Ltd | プログラム変換装置及びプロセッサ |
-
2004
- 2004-04-26 JP JP2004130214A patent/JP3727324B2/ja not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155840A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 命令制御装置及び命令制御方法 |
KR101122180B1 (ko) * | 2007-06-20 | 2012-03-20 | 후지쯔 가부시끼가이샤 | 명령 제어 장치 및 명령 제어 방법 |
Also Published As
Publication number | Publication date |
---|---|
JP2004272927A (ja) | 2004-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3564445B2 (ja) | プロセッサ、コンパイル装置及びコンパイル方法 | |
US5710902A (en) | Instruction dependency chain indentifier | |
US5692169A (en) | Method and system for deferring exceptions generated during speculative execution | |
US5606676A (en) | Branch prediction and resolution apparatus for a superscalar computer processor | |
US6490673B1 (en) | Processor, compiling apparatus, and compile program recorded on a recording medium | |
KR100284789B1 (ko) | N-지로 분기를 갖는 슈퍼스칼라 또는 초장 명령어 워드컴퓨터에서 다음 명령어를 선택하는 방법 및 장치 | |
KR100900364B1 (ko) | 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체 | |
Hao et al. | Increasing the instruction fetch rate via block-structured instruction set architectures | |
US6324639B1 (en) | Instruction converting apparatus using parallel execution code | |
Sprangle et al. | Facilitating superscalar processing via a combined static/dynamic register renaming scheme | |
Jayaseelan et al. | Exploiting forwarding to improve data bandwidth of instruction-set extensions | |
US6286094B1 (en) | Method and system for optimizing the fetching of dispatch groups in a superscalar processor | |
JP3727324B2 (ja) | プロセッサ及びコンパイル装置 | |
US6336182B1 (en) | System and method for utilizing a conditional split for aligning internal operation (IOPs) for dispatch | |
US9201657B2 (en) | Lower power assembler | |
JP3553845B2 (ja) | プロセッサ、コンパイラ、コイパイル方法及び記録媒体 | |
JP2006012185A (ja) | プロセッサ | |
US20180267803A1 (en) | Computer Processor Employing Phases of Operations Contained in Wide Instructions | |
Seto et al. | Custom instruction generation with high-level synthesis | |
US6304959B1 (en) | Simplified method to generate BTAGs in a decode unit of a processing system | |
Connors et al. | An architecture framework for introducing predicated execution into embedded microprocessors | |
JPH04506878A (ja) | データ処理装置 | |
US20040128482A1 (en) | Eliminating register reads and writes in a scheduled instruction cache | |
EP1217514A2 (en) | Method and apparatus for bypassing pipeline stages | |
Mathew | Very Large Instruction Word Architectures (VLIW Processors and Trace Scheduling) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050614 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050802 |
|
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: 20050913 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050927 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3727324 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091007 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091007 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101007 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111007 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121007 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131007 Year of fee payment: 8 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |