JPH06139075A - プログラムの命令配列方式およびコンパイラ - Google Patents

プログラムの命令配列方式およびコンパイラ

Info

Publication number
JPH06139075A
JPH06139075A JP29098692A JP29098692A JPH06139075A JP H06139075 A JPH06139075 A JP H06139075A JP 29098692 A JP29098692 A JP 29098692A JP 29098692 A JP29098692 A JP 29098692A JP H06139075 A JPH06139075 A JP H06139075A
Authority
JP
Japan
Prior art keywords
instruction
pipeline
instructions
basic block
pipe
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.)
Pending
Application number
JP29098692A
Other languages
English (en)
Inventor
Yuugo Kashiwagi
有吾 柏木
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP29098692A priority Critical patent/JPH06139075A/ja
Publication of JPH06139075A publication Critical patent/JPH06139075A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 スーパースカラ方式のマイクロプロセッサの
性能を充分に引き出すことができるようなコンパイラの
命令スケジューリング方式を提供する。 【構成】 コンパイルされた後のオブジェクトプログラ
ムを構成する命令群を、制御の移行性のない命令群つま
り分岐命令や分岐の対象となるラベルを含まない複数の
基本ブロックに分割し、プログラム実行の流れの中でそ
の基本ブロックに入ってくる要因(例えば、ジャンプ命
令による飛込み等)に応じて、最も確率の高いパイプラ
インを当該基本ブロックの先頭命令に割り当てて、命令
の実行のシミュレーションを行なうことにより次の命令
が実行されるパイプラインを決定するようにした。 【効果】 最も確率の高いパイプラインを当該基本ブロ
ックの先頭命令に割り当てるため、命令の実行時間の見
積り精度が向上し、シミュレーションでより実行時間の
短い命令列を知ることができ、これによってオブジェク
ト・プログラムの実行速度を向上させることができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はマイクロプロセッサの制
御方式さらにはコンパイラによる命令配列方式に適用し
て有効な技術に関し、特に複数のパイプラインにより命
令を並列に実行するスーパースカラ方式のマイクロプロ
セッサにおける命令スケジューリング方式に利用して有
効な技術に関する。
【0002】
【従来の技術】従来、パイプライン方式のマイクロプロ
セッサにおいては、命令間のコンフリクトを回避させつ
つプログラムの実行速度を高めるため、コンパイラによ
り互いに依存関係のない複数の命令に関しては遅延時間
(他の命令の結果を待っている時間)の短い命令を自動
的に前に配置するようにした命令スケジューリング方式
が提案されている。一方、近年、複数のパイプラインを
持ち、複数の命令を並列実行するスーパースカラ方式の
マイクロプロセッサが提案されている(日経BP社発
行、「日経エレクトロニクス1989年11月27日
号」第191頁〜第200頁)。
【0003】
【発明が解決しようとする課題】しかしながら、従来の
コンパイラの命令スケジューリング方式は、スーパース
カラ・アーキテクチャに対応していない、つまり命令の
並列性をということに着目していないためスーパースカ
ラ方式のマイクロプロセッサの性能を充分に引き出すこ
とができないという問題点があった。
【0004】本発明の目的は、スーパースカラ方式のマ
イクロプロセッサの性能を充分に引き出すことができる
ようなコンパイラの命令スケジューリング方式を提供す
ることにある。この発明の前記ならびにそのほかの目的
と新規な特徴については、本明細書の記述および添附図
面から明らかになるであろう。
【0005】
【課題を解決するための手段】スーパースカラ方式のマ
イクロプロセッサの性能を充分に引き出すように命令ス
ケジューリングを行なうには、命令の実行時間をシミュ
レーションで知る必要がある。シミュレーションが可能
であれば、命令列のどの配列が最も実行速度が速くなる
かがわかり、各配列を比較することで最適な配列を得る
ことができる。ところが、複数のパイプラインを持つス
ーパースカラ方式のマイクロプロセッサにあっては、命
令がどのパイプラインで実行されるかはコンパイルの際
には決定できない。そして、これがスーパースカラ方式
のマイクロプロセッサにおける命令の実行を正確にシミ
ュレーションできない原因となっている。
【0006】そこで、この発明は、コンパイルされた後
のオブジェクトプログラムを構成する命令群を、制御の
移行性のない命令群つまり分岐命令や分岐の対象となる
ラベルを含まない複数の基本ブロックに分割し、プログ
ラム実行の流れの中でその基本ブロックに入ってくる要
因(例えば、ジャンプ命令による飛込み等)に応じて、
最も確率の高いパイプラインを当該基本ブロックの先頭
命令に割り当てて、命令の実行のシミュレーションを行
なうことにより次の命令が実行されるパイプラインを決
定するようにしたものである。また、パイプライン以外
の独立性の高いハードウェア資源(浮動小数点演算器、
メモリ等)を使用する互いに依存関係のない複数の命令
のスケジューリングは、実行時間の長いハードウェアを
駆動する命令を優先して選択し、その命令の実行中に実
行時間の短い他の命令を実行するように配列を決定する
ようにした。
【0007】
【作用】上記手段によれば、最も確率の高いパイプライ
ンを当該基本ブロックの先頭命令に割り当てるため、命
令の実行時間の見積り精度が向上し、シミュレーション
でより実行時間の短い命令列を知ることができ、これに
よってオブジェクト・プログラムの実行速度を向上させ
ることができる。また、実行時間の長いハードウェアを
駆動する命令を優先して選択すれば、全体しとての遅延
時間が短くなり、オブジェクト・プログラムの実行速度
の向上を図ることができる。
【0008】
【実施例】以下本発明の実施例を図面に従って詳細に説
明する。図1は本発明の方式を適用したマイクロプロセ
ッサの一構成例を示す。特に制限されないが、図中、2
点鎖線1で囲まれた内部の各回路ブロックは単結晶シリ
コン基板のような一個の半導体チップ上において形成さ
れる。本実施例のマイクロプロセッサは、命令フェッチ
アドレスを発生するプログラムカウンタPCや使用頻度
の高いプログラムを格納するキャッシュメモリCMおよ
びその管理テーブルTBL、複数の命令を予め保持する
命令キューIQ等からなる命令フェッチ部10と、命令
キューIQに取り込まれた命令を順次解読して制御信号
を発生する制御部11と、演算器31,32やレジスタ
33等からなり命令に対応した演算やデータの処理を行
なう演算実行部30と、外部のメモリをアクセスするた
めのアドレスを発生するアドレス計算器やアドレス入出
力バッファ、データ入出力バッファ等を有するメモリア
クセス部34とにより構成されている。
【0009】図2には制御部11の一実施例を示す。本
実施例の制御部11は、特に制限されないが、2本のパ
イプライン(以下それぞれをパイプ0、パイプ1と呼
ぶ)を備えている。また、1命令は、特に制限されない
が、16ビットで構成される。制御部11は、2つの命
令デコーダ12、13と、各命令に対応したマイクロ命
令群が格納された共通のマイクロROM14と、マイク
ロROM14と命令デコーダ12、13の出力のいずれ
か選択するためのセレクタ16、17と、セレクタ1
6、17の制御信号を形成するセレクタ制御部15及び
上記命令デコーダ12、13またはマイクロROM14
からの制御信号を保持する制御情報バッファ18、19
とにより構成されている。上記セレクタ制御部15はセ
レクタ16、17に対し、命令デコ−ダの出力が有効な
ときには命令デコ−ダ出力を、マイクロROMの出力が
有効なときにはマイクロROM出力を選択させるような
セレクタ制御信号を出力する。
【0010】演算実行部30は、演算器31,32とレ
ジスタ部33とメモリアクセス部34及びこれらを接続
する内部バス35,36,37とにより構成されてい
る。上記演算器31,32はそれぞれパイプ0、パイプ
1における演算を行なう。レジスタ部33は複数のレジ
スタからなり、パイプ0とパイプ1で共有され、上記演
算器31,32の演算結果やメモリから読み込まれたデ
ータを保持する。メモリアクセス部34はキャッシュメ
モリを含み、メモリのアクセスに必要なアドレスを形成
して出力し、メモリからのデータを適当なタイミングで
取り込む。上記制御部11および演算実行部30は、互
いに位相が180°ずれたクロックφ1,φ2に同期して
動作される。
【0011】この実施例のマイクロプロセッサにおける
パイプライン処理による命令の実行は、パイプ0、パイ
プ1それぞれステージI,D,E,A,Sの5つのステ
ージに従って行なわれる(以下、この5ステージを命令
実行サイクルと称する)。具体的には、ステージIで命
令のフェッチが、ステージEでは命令のデコードとマイ
クロROMおよびレジスタの読出し、ステージEでは演
算実行、ステージAではメモリアクセスが、そしてステ
ージSではレジスタストアが行なわれる。上記各ステー
ジは1クロックサイクルで順次移行する。
【0012】次に図3を用いてこのマイクロプロセッサ
のパイプラインの動作を説明する。図3にはそれぞれ第
1のパイプラインと、第2のパイプラインのステージ構
成STG0,STG1が、図4にはそのタイミングチャ
ートが示されている。図3における破線はパイプライン
の各ステージで動作するハードウェアに対して制御部1
1から出力される制御信号を示す。本来これらは制御部
11より各ステージのタイミングに応じて出力されるも
のであるが、パイプラインとハードウェア動作の対応、
及び制御部がパイプライン全体を制御する様子を理解し
やすくするため、このような表現の図面とした。
【0013】ここで、先ず一方のパイプラインにおける
命令実行サイクルについて説明する。命令キューIQ
は、メモリから取り出した命令コードを保持しておき、
第1のステージIで、制御部11からの要求に従い連続
する2命令を制御部11に送る。メモリからの命令フェ
ッチは外部バスがオペランドフェッチなどで使用されて
いない期間に随時行われ、命令キューIQが一杯になっ
たら終了する。第2のステージDでは、制御部11内の
デコーダ12,13で連続する2命令を同時にデコード
し、パイプ0とパイプ1の各々のステージE、A、Sで
の制御信号を生成する。生成された制御信号は制御部内
のバッファ18,19にラッチされ、各ステージE、
A、Sの実行タイミングに合わせて演算実行部30に出
力される。
【0014】すなわち、ステージEの制御信号は直ちに
出力され、ステージAの制御信号は1クロックサイクル
遅て、またステージSの制御信号は2クロックサイクル
遅れて出力される。また、ステージI、Dの制御信号は
直ちに出力されて次の命令実行サイクルのI、Dステー
ジを制御する。ここで次の命令実行サイクルとは、各ス
テージが現在実行中の命令実行サイクルより1クロック
サイクルずつ遅れて実行されるものを指す。
【0015】命令キューIQに対しては、次に転送すべ
き命令コードの先頭アドレスを示すポインタを出力する
ことによって次の命令実行サイクルのステージIを制御
する。上記ステージDでの命令デコードの結果、マイク
ロROMを使用する命令であった場合には次の命令実行
サイクルのステージDでマイクロROM14から制御情
報を読み出すよう制御部自身を制御する。デコードされ
た命令がレジスタ読み出しを必要とする場合には、ステ
ージDの後半でレジスタ部33から内部バス35を介し
て演算器31、32へ転送する。命令コードにイミディ
エイトデータやアドレッシングモードのディスプレース
メントが含まれる場合には、それらは制御部11で命令
コードから切り出されて、内部バス35を介して演算実
行部30へ転送される。
【0016】第3のステージEでは内部バス35のデー
タに対する演算が演算器31、32によって実行し、結
果を内部バス36に出力する。第4のステージAでは内
部バス36のデータを使用してメモリアクセス部34で
メモリのアクセスを行なう。メモリフェッチの場合はフ
ェッチしたデータを内部バス37に出力する。ステージ
Eでの演算結果をレジスタ部33に格納する場合には、
内部バス36のデータをメモリアクセス部34を素通り
させて直接内部バス37上へ出力する。第5のステージ
Sでは内部バス37上のデータをレジスタ部33に格納
する。
【0017】次に、パイプライン処理について説明す
る。命令キューIQからとりこまれた連続する2命令
は、それぞれ命令デコ−ダ12、13に入力される。デ
コードされた2命令がマイクロROM14を使わずに実
行可能な場合には、命令デコ−ダ12、13からパイプ
0、1の制御信号を出力すると共にセレクタ制御部15
に対し次のサイクルもデコーダ出力を選択するように指
示する。これにより次のサイクルでもDステージで次の
2命令をデコードし、デコーダ出力によりパイプライン
を制御する。
【0018】パイプ0またはパイプ1の命令がマイクロ
ROM14を使用する場合には、命令デコーダ12また
は13は実行中のパイプラインの制御信号を出力すると
共にマイクロROM14のアドレスを出力し、セレクタ
制御部15に対し次のサイクルにはマイクロROMの出
力を選択するように指示する。これにより次のサイクル
ではマイクロROM14から読み出した制御信号でパイ
プラインを制御する。マイクロROMの出力に従った処
理では、マイクロROM14から2本のパイプラインの
制御信号を読み出す。マイクロROM出力は、次に読み
出すマイクロROMアドレスと共に、セレクタ制御部1
5に対し次のサイクルもマイクロROM出力を選択する
ように指示する。マイクロプログラムの最終ステップで
は、セレクタ制御部15に対し次のサイクルにはデコー
ダ出力を選択するように指示する。これによりマイクロ
処理終了後、次の命令の実行が可能となる。
【0019】マイクロROM14を使わずに実行される
命令は、一般に1命令サイクルで実行可能な命令であ
る。1命令サイクルで実行可能とは、IステージからS
ステージまでを一通り実行すれば命令の機能を実現でき
ることであり、パイプライン処理を行なっているため実
際には1命令あたり1クロックサイクルで処理できるこ
とを意味する。ただし、アドレッシングモードによって
はアドレス計算やメモリアクセスのために2サイクル以
上かかる場合があるが、最短の実行時間が1サイクル要
する命令という意味である。一方、マイクロROM14
を使用して実行される命令は、一般に複数命令サイクル
の実行時間が必要な命令である。すなわちIステージか
らSステージまでの処理を複数回実行する必要がある命
令であり、このような命令には、大量のデータ処理や、
複雑な処理を必要とするものが多い。
【0020】以下に、本発明に係るコンパイラによる命
令列の最適化処理の一実施例を説明する。この実施例で
はコンパイラによる最適化処理に先立って、コンパイラ
のコード生成で生成された線形のコード列を解析して、
オブジェクトプログラムを構成する命令列を基本ブロッ
クに分割する。ここで基本ブロックとは、制御の移行性
のない命令群つまり分岐命令や分岐の対象となるラベル
を含まない命令群を指す。次に、各基本ブロック内の命
令を、線形な順序ではなく、図5に示すような命令の依
存関係に従った構造にする。図5において、符号a,
b,c,d,e,f……は各命令を、また矢印は命令の
依存関係を示している。例えば、a→cは命令aは命令
cの前に実行しなければならいないことを意味する。ま
た、命令aと命令bは依存関係がないことを意味してい
る。このようにして得られた構造情報を、最適化処理の
入力とする。
【0021】図6には、コンパイラによる命令列の最適
化処理の一例が示されている。この最適化処理において
は、上記の方法により分割された各基本ブロック毎に先
頭命令を実行すべきパイプの割り付け(ステップS1)
を行なった後、ブロック内の命令のスケジューリング
(ステップS2)を行ない、それに従ってブロック内命
令の並び換えを行なう(ステップS3)。そして、未処
理の基本ブロックが残っている否か判定し、すべての基
本ブロックについて上記先頭命令のパイプの割り付け、
ブロック内の命令のスケジューリングおよび命令の並び
換えが終わった時点で最適化処理を終了する。
【0022】図7に上記先頭命令のパイプの割り付け処
理(ステップS1)の具体的手順の一例を、また図8に
上記ブロック内の命令のスケジューリング(ステップS
2)の具体的手順の一例を示す。図7の先頭命令のパイ
プの割り付け処理では、まず直前の命令がユニークか否
かすなわち着目する基本ブロックへ制御を移行する命令
が1つしかないか否か判定する(ステップS11)。こ
れは、直前の命令が1つ前のブロックの最後の命令であ
り、着目する基本ブロックへの飛込みがないことを意味
している。そして、直前の命令がユニークであればステ
ップS12へ移行して、直前の命令の実行パイプが判明
しているか否か調べる。
【0023】ここで、直前の命令がどのパイプで終了し
たか分かっている場合には、基本ブロックの先頭命令
に、終了したパイプの次のパイプを割り当てる(ステッ
プS14)。また、着目する基本ブロックへ制御を移行
する命令が1つしかなくしかもどのパイプで終了したか
分からない場合には、先頭命令の実行パイプは特定され
ないが、シミュレーションの精度を高めるには統計的に
実行頻度の高いパイプを割り当てるのがよい。スーパー
スカラ方式のマイクロプロセッサでは通常パイプ0の実
行頻度が高いので、この実施例では、パイプ0を割り当
てることとした(ステップS13)。
【0024】一方、ステップS11での判定で、制御を
当該基本ブロックへ移行する命令が複数ある場合すなわ
ち飛込みによる移入がある場合には、ステップS15へ
移行して直前の命令群はすべて同一のパイプで終了して
いるか否か判定する。当該基本ブロックへの飛込みがあ
るか否かは分岐命令のラベルを調べれば分かる。直前の
命令群がすべて同一のパイプで終了していた場合には、
ステップS14へ移行して直前の命令で使用したパイプ
の次のパイプを割り当てる。
【0025】一方、直前の命令群が異なるパイプで終了
していた場合には、ステップS16へ移行して直前の命
令で使用したパイプがすべて判明しているか判定する。
このような場合、当該基本ブロックの先頭命令で使用す
べきパイプとして、先行命令で使用したパイプの次のパ
イプの中からどれを使用すべきかは一義的に決定はでき
ないが、ソースプログラムの構成からどのパイプを選択
するか決定するのが良い。例えば、ソースプログラムが
ループを含むような場合には、ループを回る回数の方が
ループの入り口を通過してループに入り込む回数よりも
多いことが統計的に知られているので、ループを形成す
るブランチ命令で使用したパイプの次のパイプを当該基
本ブロックの先頭命令に割り当てる。
【0026】本実施例では、ループの種類によらず、ブ
ランチ命令で飛び込んでくる場合は、飛込みのフローを
優先して先頭命令に割り当てるパイプを決定するように
している。これによって、ループの実行速度を最優先し
た命令列の最適化が可能とされる。具体的には、スーパ
ースカラ方式のマイクロプロセッサでは多くの場合、ブ
ランチの直後はパイプ0から実行することが一般的であ
るので、この実施例ではこの場合、基本ブロックの先頭
命令にパイプ0を割り当てるようにしている(ステップ
S17)。直前の複数の命令のうちパイプが判明してい
ないものがあれば、ステップS16からS18へ移行し
て、直前の命令群の中からパイプが判明していないもの
を削除してから改めてステップS11へ戻って上記手順
を繰り返してパイプ割り付けを行なう。
【0027】上記先頭命令へのパイプの割り付け処理
(図7)が終了すると図8の基本ブロック内命令のスケ
ジューリング処理へ移行する。図8の処理では、基本ブ
ロック内において先行する命令のない命令が最初に実行
可能な命令であるのでそれを選択する。ただし、そのよ
うな命令が2以上ある場合(図5における命令a,b,
d)には、その命令の実行に使用されるハードウェアユ
ニット(例えば整数演算器や浮動小数点演算器、メモリ
等)に着目して、命令実行時間が長いユニットに対する
命令の方を先に選択する(ステップS21,S22)。
例えば、浮動小数点演算器を使用する命令は整数演算器
を使用する命令よりも命令実行時間が長いのでそれを優
先する。
【0028】続いて命令実行時間が長いユニットに対す
る命令の実行時間を求め、その命令実行時間よりも実行
時間が短い命令列を生成する(ステップS23)。その
後、選択した命令を基本ブロック内命令群から除去(ス
テップS24)した後、ステップS20へ戻って基本ブ
ロック内に未選択の命令が残っているか判定し、残って
いればステップS21へ移行して命令実行時間が短いハ
ードウェアユニットに対する命令しか残らなくなるまで
繰り返す。そして、ステップS21で命令実行時間が長
いユニットに対する命令を選択できなくなった場合に
は、ステップS25へ移行して遅延時間(他の命令の結
果を待っている時間)の短い命令を選択する。そして、
選択した命令を基本ブロック内命令群から除去(ステッ
プS24)した後、ステップS20へ戻って上記手順を
繰り返す。
【0029】上記基本ブロック内命令のスケジューリン
グ処理による整数演算器に対する命令列の選択において
は、基本ブロック全体の先頭命令を実行するパイプライ
ンを決めてあるので、そこから該命令まで生成された命
令列を知ることによって、該命令の実行されるパイプラ
インが判明し、それにより該命令の実行時間を正確に知
ることができる。この実行時間と命令固有の最短実行時
間との差がパイプラインの遅れになるため、この値をシ
ミュレーションにより評価することによって、パイプラ
インの遅れを最小にする命令列を選択することができ
る。このようにして基本ブロック内のすべて命令の配列
が決定されると、命令の並び換えが実行される(図6ス
テップS3参照)。なお、基本ブロック内に未選択の命
令がなくなると、最後の命令のパイプが決定され、これ
が他の基本ブロックの先頭命令へのパイプの割り付け処
理(図7)に利用される。
【0030】以上説明したようにこの発明は、コンパイ
ルされた後のオブジェクトプログラムを構成する命令群
を、制御の移行性のない命令群つまり分岐命令や分岐の
対象となるラベルを含まない複数の基本ブロックに分割
し、プログラム実行の流れの中でその基本ブロックに入
ってくる要因(例えば、ジャンプ命令による飛込み等)
に応じて、最も確率の高いパイプラインを当該基本ブロ
ックの先頭命令に割り当てて、命令の実行のシミュレー
ションを行なうことにより次の命令が実行されるパイプ
ラインを決定するようにしたので、最も確率の高いパイ
プラインを当該基本ブロックの先頭命令に割り当てるた
め、命令の実行時間の見積り精度が向上し、シミュレー
ションでより実行時間の短い命令列を知ることができ、
これによってオブジェクト・プログラムの実行速度を向
上させることができる。また、パイプライン以外の独立
性の高いハードウェア資源(浮動小数点演算器、メモリ
等)を使用する互いに依存関係のない複数の命令のスケ
ジューリングは、実行時間の長いハードウェアを駆動す
る命令を優先して選択し、その命令の実行中に実行時間
の短い他の命令を実行するように配列を決定するように
したので、全体しとての命令実行遅延時間が短くなり、
オブジェクト・プログラムの実行速度が向上されるとい
う効果がある。
【0031】以上本発明者によってなされた発明を実施
例に基づき具体的に説明したが、本発明は上記実施例に
限定されるものではなく、その要旨を逸脱しない範囲で
種々変更可能であることはいうまでもない。例えば上記
実施例では、パイプラインを2本有するスーパースカラ
方式のマイクロプロセッサのコンパイラによる命令スケ
ジューリング方式について説明したが、この発明はパイ
プラインを3本以上有するマイクロプロセッサの命令ス
ケジューリングにも適用することができる。また、以上
の説明では主として本発明者によってなされた発明をそ
の背景となった利用分野であるスーパースカラ方式のマ
イクロプロセッサのコンパイラによる命令スケジューリ
ング方式について説明したが、この発明はそれに限定さ
れるものでなく、コンパイラ以外のマイコン機械語生成
ツールを用いて命令のスケジューリングを行なう場合に
も利用することができる。
【0032】
【発明の効果】本願において開示される発明のうち代表
的なものによって得られる効果を簡単に説明すれば下記
のとおりである。すなわち、スーパースカラ方式のマイ
クロプロセッサの性能を充分に引き出すことができるよ
うなコンパイラの命令スケジューリング方式を実現する
ことができる。
【図面の簡単な説明】
【図1】本発明に係る命令スケジューリング方式を適用
して好適なスーパースカラ方式のマイクロプロセサの構
成例を示すブロック図
【図2】図1のマイクロプロセサの制御部と実行部の構
成例を示すブロック図
【図3】図1のマイクロプロセッサの全体構成とパイプ
ラインの流れを示す図
【図4】図1のマイクロプロセッサにおける制御部から
の制御情報の出力タイミングおよび演算実行部でのデー
タ入出力タイミングを示すタイミングチャート
【図5】本発明に係る命令スケジューリング方式におけ
るプログラムの分割方式(基本ブロック化)の一例を示
すグラフ
【図6】本発明に係る命令スケジューリング方式の全体
の流れを示すフローチャート
【図7】図6のフローチャートにおける基本ブロック先
頭命令へのパイプ割当て処理の一手順を示すフローチャ
ート
【図8】図6のフローチャートにおける基本ブロック内
命令のスケジューリング(配列決定)処理の一手順を示
すフローチャートである。
【符号の説明】
1 マイクロプロセッサ 2 主記憶装置 3 入出力装置 4 インタフェースバス 10 命令フェッチ部 11 制御部 12 パイプ0デコーダ 12A 第1オペコードデコーダ 12B 第2オペコードデコーダ 13 パイプ1デコーダ 14 マイクロROM 15 セレクタ制御部 16 パイプ0出力セレクタ 17 パイプ1出力セレクタ 18 パイプ0制御情報バッファ 19 パイプ1制御情報バッファ 31 パイプ0演算器 32 パイプ1演算器 33 レジスタ 34 メモリアクセス部 35,36,37 内部バス

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 複数の命令デコーダと複数の命令実行手
    段とにより構成される複数のパイプラインを持つマイク
    ロプロセッサにおいて、プログラムを構成する命令群
    を、制御の移行性のない命令群からなる基本ブロックに
    分割し、プログラム実行の流れの中でその基本ブロック
    に入ってくる要因に応じて、最も確率の高いパイプライ
    ンを当該基本ブロックの先頭命令に割り当てて、シミュ
    レーションを行なうことにより次の命令が実行されるパ
    イプラインを決定するようにしたことを特徴とするプロ
    グラムの命令配列方式。
  2. 【請求項2】 パイプライン以外の独立性の高いハード
    ウェア資源を使用する互いに依存関係のない複数の命令
    は、実行時間の長いハードウェアを駆動する命令を優先
    しこの実行時間の長い命令の実行中に実行時間の短い他
    の命令が実行されるように配列を決定することを特徴と
    する請求項1記載のプログラムの命令配列方式。
  3. 【請求項3】 請求項1記載のパイプラインの決定機能
    および請求項2記載の命令配列の決定機能を有すること
    を特徴とするコンパイラ。
JP29098692A 1992-10-29 1992-10-29 プログラムの命令配列方式およびコンパイラ Pending JPH06139075A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29098692A JPH06139075A (ja) 1992-10-29 1992-10-29 プログラムの命令配列方式およびコンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29098692A JPH06139075A (ja) 1992-10-29 1992-10-29 プログラムの命令配列方式およびコンパイラ

Publications (1)

Publication Number Publication Date
JPH06139075A true JPH06139075A (ja) 1994-05-20

Family

ID=17762988

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29098692A Pending JPH06139075A (ja) 1992-10-29 1992-10-29 プログラムの命令配列方式およびコンパイラ

Country Status (1)

Country Link
JP (1) JPH06139075A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
EP1187304A1 (en) * 2000-01-21 2002-03-13 Matsushita Electric Industrial Co., Ltd. Power supply and electronic device using power supply
KR100403676B1 (ko) * 1994-08-24 2003-12-31 선 마이크로시스템즈 인코퍼레이티드 카운터플로우파이프라인프로세서와카운터플로우파이프라인프로세서에서유용한명령의레지스터값을라벨링하는방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100403676B1 (ko) * 1994-08-24 2003-12-31 선 마이크로시스템즈 인코퍼레이티드 카운터플로우파이프라인프로세서와카운터플로우파이프라인프로세서에서유용한명령의레지스터값을라벨링하는방법
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
EP1187304A1 (en) * 2000-01-21 2002-03-13 Matsushita Electric Industrial Co., Ltd. Power supply and electronic device using power supply
EP1187304A4 (en) * 2000-01-21 2004-04-21 Matsushita Electric Ind Co Ltd POWER SUPPLY AND ELECTRONIC DEVICE USING THIS POWER SUPPLY

Similar Documents

Publication Publication Date Title
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
JP2918631B2 (ja) デコーダ
US5519864A (en) Method and apparatus for scheduling the dispatch of instructions from a reservation station
US4879646A (en) Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging
EP0405489B1 (en) Resource conflict detection method and apparatus included in a pipelined processing unit
JP3797471B2 (ja) マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
US20050198476A1 (en) Parallel multithread processor (PMT) with split contexts
US8413086B2 (en) Methods and apparatus for adapting pipeline stage latency based on instruction type
JP3851707B2 (ja) スーパースカラープロセッサの中央処理ユニット
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
US6269440B1 (en) Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously
JP5209933B2 (ja) データ処理装置
JPH03282958A (ja) 電子計算機
EP0968463A2 (en) Vliw processor processes commands of different widths
US7200738B2 (en) Reducing data hazards in pipelined processors to provide high processor utilization
US7822948B2 (en) Apparatus, system, and method for discontiguous multiple issue of instructions
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
JPH06139075A (ja) プログラムの命令配列方式およびコンパイラ
JP2021507374A (ja) 命令を実行するためのシステム及び方法
JP3096429B2 (ja) 複数の命令の非整順完了をサポートする方法およびスーパースカラ・マイクロプロセッサ
JPH11242599A (ja) コンピュータプログラム製品
JPH0651984A (ja) マイクロプロセッサ
US11314505B2 (en) Arithmetic processing device
CN116841614B (zh) 乱序访存机制下的顺序向量调度方法