JP2002318689A - 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法 - Google Patents

資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法

Info

Publication number
JP2002318689A
JP2002318689A JP2001121966A JP2001121966A JP2002318689A JP 2002318689 A JP2002318689 A JP 2002318689A JP 2001121966 A JP2001121966 A JP 2001121966A JP 2001121966 A JP2001121966 A JP 2001121966A JP 2002318689 A JP2002318689 A JP 2002318689A
Authority
JP
Japan
Prior art keywords
instruction
delay
cycle
write port
pipeline
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
JP2001121966A
Other languages
English (en)
Inventor
Satoru Nishimoto
哲 西本
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 JP2001121966A priority Critical patent/JP2002318689A/ja
Publication of JP2002318689A publication Critical patent/JP2002318689A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】VLIWプロセッサにおける資源の競合による
性能の低下を回避する。 【解決手段】401の演算パイプライン0と402の演
算パイプライン1がライトポート416を共有するVL
IWプロセッサにおいて、命令にライトポートの使用を
遅延させるビットと遅延させるサイクル数を指定するフ
ィールドを設ける。コンパイラは、401と402から
同時に結果が出力されるような命令のスケジュールを行
ない、この場合いずれかの命令に遅延指定を行なう。プ
ロセッサは遅延指定がついた命令が401および402
から出力されると、次のサイクルでWRステージ416
に進めるのではなく、命令で指定された遅延サイクルだ
け404のライトポート遅延回路に保持し、遅延サイク
ルが経過すると、404からWRステージ416に命令
を進める。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、並列実行可能な命
令をコンパイル時に指定する、VLIW(Very L
ong Instruction Word)プロセッ
サおよびVLIWプロセッサ用の命令を生成するコンパ
イラに関する。
【0002】
【従来の技術】近年、並列実行可能な複数の演算命令
を、1つにまとめた長命令語(VLIW命令)(Ver
y Long Instruction Word)を
実行するVLIWプロセッサが実用化されている。VL
IWプロセッサは、VLIW命令内の演算命令間の依存
関係を実行時にハードウェアによって検出する必要がな
いため、ハードウェアが簡単になるという利点がある。
またハードウェアの簡単化によって消費電力を小さくで
きるため、近年では携帯端末向けのDSP(Digit
al Signal Processor)や、汎用プ
ロセッサとしても使用されている。
【0003】VLIWプロセッサには、並列実行可能な
複数の演算命令をVLIW命令よって明示するという共
通の特徴があるが、実際の実現方法には、(1)プロセ
ッサの資源の管理をハードウェアが行なう方式と、
(2)資源管理の多くの部分をコンパイラ(ソフトウェ
ア)に任せる方式の、2つの方向がある。前者の例とし
てはインテルのIA―64アーキテクチャがある。IA
―64アーキテクチャでは、VLIW命令間の依存関係
はハードウェアが検出し、必要があればパイプラインを
ストールさせる。後者の例としては、特開平11―65
844号公報や、特開平9―54693号公報で開示さ
れているVLIWプロセッサがある。
【0004】(2)の特開平11―65844号公報で
示されるVLIWプロセッサでは、パイプラインのバイ
パス機能を使うか否かを、命令によって指示する方法が
開示されている。データ依存がある先行命令Aと後続命
令Bがあるとき、AとBの間に必要なサイクル数を命令
Aのレイテンシーと呼ぶ。パイプラインのバイパスと
は、命令Aの結果がレジスタに書かれた後で、命令Bが
レジスタから依存するデータを読むのではなく、演算器
から出力された命令Aの結果をレジスタに書く処理と並
行して後続の命令Bに該当データを転送する処理であ
る。前記の特許では、命令毎にバイパス機能を使うか、
レジスタから読むかを指定し、ハードウェアはこの指定
に基づいてバイパスからのデータとレジスタからのデー
タをセレクトする。
【0005】また、(2)の特開平9―54693号公
報では、VLIW命令内の各演算命令を演算器に発行す
るサイクルを遅延させる命令を新たに設け、これにより
NOP(No Operation)命令を削減し、オ
ブジェクトサイズの削減と、性能を向上させる方法が示
されている。VLIW命令内には、並列実行可能な複数
の演算命令が格納される。1つのVLIW命令内に格納
できる演算命令の最大数をVLIW命令長と呼ぶ。VL
IW命令内の演算命令フィールドには常に有効な演算命
令が格納されるとは限らず、有効な演算命令が存在しな
い場合は、NOP命令と呼ぶ何も実行しない命令が埋め
られる。前記の特許では、演算命令の演算器への発行
を、指定サイクルだけ遅延させる命令を備えることによ
り、例えば''演算命令Aは、VLIW命令X1内の他の
演算命令と並列実行可能であるが、VLIW命令X1の
演算フィールドが全て埋まっているため、命令AをVL
IW命令X1に配置することができず、X1の後続のV
LIW命令X2に配置しなければならない場合''に性能
が向上する。
【0006】前記の場合、VLIW命令X1の先行命令
X0に空きフィールドがあれば、VLIW命令X0に演
算命令AとAの演算器への発行を指定サイクルだけ遅延
させる命令を、X0の空きフィールドに配置する。これ
によりVLIW命令X0の空きフィールドには有効な演
算命令Aが配置され、かつAが従来配置されていたVL
IW命令X2の演算フィールドは他の命令で使用するこ
とができる。
【0007】プロセッサ資源の管理をコンパイラに任せ
るようなVLIWプロセッサにおいて、コンパイラが管
理する資源の1つに、レジスタのリードポートおよびラ
イトポートがある。この種のプロセッサでは、前記のポ
ートの競合の回避をハードウェアでは行なわないため、
実行時にポートの競合が発生すると実行結果が不正にな
る。この状況は、例えば複数の演算器がライトポートを
共有しているプロセッサにおいて、共有している演算器
の結果が同時にレジスタのライトポートを使うような命
令の配置を行なった場合に発生する。
【0008】プロセッサの並列性に見合った性能をだす
ために、通常十分な数のリードポートを備える。同一V
LIW命令内の全演算命令は、命令デコード後に同時に
レジスタを読むので、全演算フィールドが埋まったVL
IW命令を毎サイクル演算器に発行するためには、VL
IW命令長に見合った十分なリードポートが必要であ
る。リードポートの数が十分でない場合は、同一VLI
W命令に配置できる演算命令を、使用するリードポート
の数に応じて制限する必要が生じる。
【0009】一方ライトポートに関しては、各演算命令
が最大1つの演算結果をレジスタに書き込む場合でも、
VLIW命令長だけライトポートを用意しても不十分な
場合がある。VLIW命令の各演算命令は、そのフィー
ルドに対応した演算器に発行される。1つのフィールド
には加算器、乗算器といった複数の演算器が対応してい
る。演算フィールドXに対応する演算器がA、B、C、
Dの4個ある場合を考える。演算フィールドXに配置さ
れた演算命令は、演算器A、B、C、Dのいずれかに発
行される。ここで演算器A、B、C、Dのパイプライン
ステージ長が等しいならば、演算器A、B、C、Dの結
果をレジスタに格納する際に使用するライトポートの数
は、全体で1つあれば十分である。しかし演算器のパイ
プラインステージ長が異なる場合(加算器と乗算器の場
合など)は、異なるサイクルで演算器A、B、C、Dに
発行された演算命令の結果が、A、B、C、Dから同時
に出力される場合が生じる。
【0010】したがって、ライトポートの競合をなくす
には、理想的には演算器の数だけライトポートを設ける
必要がある。しかし、演算の結果は各演算フィールドに
つき、最大でも1つなので演算器の数だけライトポート
を設けるとライトポートの使用率は低下する。
【0011】前記のライトポート数のトレードオフを考
慮した方法としては、演算器A、B、C、Dをグループ
化して、同一グループの演算器ではライトポートを共有
するものがある。例えばA、Bで一つのライトポートを
共有し、C、Dで一つのライトポートを共有する。これ
によりA、B、C、Dのパイプラインステージ長が全て
異なる場合でも、ライトポートが競合する割合が減少す
る。また例えばC、Dのパイプラインステージ長が等し
い場合はC、Dに関してはライトポートの競合がなくな
る。
【0012】上記のライトポートの競合については、資
源の管理をコンパイラに任せるVLIWプロセッサにつ
いて述べたが、資源管理をハードウェアが行なうような
スーパースカラプロセッサでは、リオーダーバッファな
どを用いて、同時にコンプリーションする命令の数をハ
ードウェアが管理する。リオーダーバッファについて
は、スーパースカラプロセッサ(マイクジョンソン著、
村上和彰 監訳、日経BP出版センター)P90で述べ
られている。
【0013】
【発明が解決しようとする課題】プロセッサのライトポ
ートの競合の回避をコンパイラが行なうようなVLIW
プロセッサでは、ライトポートの競合を回避するため
に、命令スケジューリングが制約を受け、性能が低下す
る場合がある。図1、2を用いて性能が低下する場合に
ついて説明する。
【0014】まず図1に示すVLIWプロセッサを仮定
する。101は、VLIW命令であり、並列実行可能な
演算命令は102のフィールド0と、103のフィール
ド1に格納される。図1ではフィールド1に対応する演
算器のみを示している。フィールド1は、104の演算
器1と105の演算器2に対応付けられており、フィー
ルド1に配置された命令は、このいずれかの演算器で実
行される。演算器1に発行された命令は、E1、E2、
E3、WRステージを通り、演算器2に発行された命令
は、E1、WRステージを通る。WRステージでは演算
器1、2の結果を106でセレクトし、レジスタファイ
ル107内の該当するレジスタに値を書き込む。このよ
うに106でデータをセレクトするので、演算器1、2
の結果が同時にWRステージに載ると、セレクタ106
でいずれか一方の値が捨てられるかまたは不定値とな
る。
【0015】図2(A)は、プログラム片の依存グラフ
である。ノードa〜hは命令を表し、ノード間のエッジ
は命令間の依存を表す。またノードaからbにあるエッ
ジx(y)がある場合、xはノードaを発行後xサイク
ルでノードbが発行可能であることを示しており、yは
ノードaが発行された後、yサイクル後にライトポート
を使用することを表している。前記xを命令aのレイテ
ンシーと呼ぶ。a、b、c、d、gはレイテンシー3の
命令であり、図1の演算器1で実行される。命令e、
f、hはレイテンシー1の命令であり、演算器2で実行
される。
【0016】図2(B)は、図2(A)のフローグラフ
で示すプログラムを、図1のVLIWプロセッサ用にコ
ンパイルしたときの命令列と、それを実行したときのラ
イトポートの使用状況を表したものである。表の縦軸は
ノードを表しており、横軸はサイクルである。表中の記
号は、図1の使用するパイプラインステージを表す。
【0017】命令スケジューラは、命令a、bをサイク
ル0、1に配置した後、命令cの配置を試みる。いま図
2(A)の依存グラフから命令cは命令a、bと依存し
ないので、コンパイラは発行スロットが埋まっていない
サイクル2での発行可を試みる。しかし、命令cをサイ
クル2に配置すると、サイクル4で命令aとライトポー
トが競合するので、命令cをサイクル2には配置できな
い。次に命令cのサイクル3への配置を試みる。この場
合も同様に、命令bとサイクル5でライトポートが競合
するので、命令cをサイクル3には配置できない。結局
命令cはサイクル4に配置されることになる。
【0018】このようにライトポートを回避するため
に、命令の発行は遅延され、最終的に10、11サイク
ルにライトポートを使用しないサイクルが発生し性能が
低下する。
【0019】このようなライトポートの競合は、従来技
術の特開平9―54693号公報で示されている命令の
発行を、遅延させる方法では回避できない。
【0020】
【課題を解決するための手段】本発明は、演算結果をレ
ジスタに書くためのライトポートを複数の演算器で共有
するようなVLIWプロセッサにおいて、前記VLIW
プロセッサで実行される命令のうち、ライトポートが競
合する可能性のある命令のフィールドに、ライトポート
を使用するサイクルを遅延させることを表す遅延指定ビ
ットと、遅延させるサイクル数を指定する遅延サイクル
指定ビットを設け、命令のデコード時に命令の該当する
フィールドから遅延指定ビットを認識する回路と、該当
するフィールドから遅延サイクル指定ビットを検出し、
遅延サイクル指定ビットをシステムに応じた実際のライ
トポート遅延サイクルに変換する回路と、演算パイプラ
インの各ステージに対応して前記回路で検出した遅延指
定ビットと遅延サイクルを保持する手段と、ライトポー
トを共有する演算器の演算結果をレジスタに書く前に、
演算結果を遅延サイクル数だけ保持する演算結果保持手
段を設け、遅延サイクル終了後に前記演算結果保持手段
から演算結果を取り出し、前記ライトポートを使用して
レジスタに演算結果を書き込むことを特徴とする。
【0021】前記演算結果保持手段の一つの実現方法と
しては、演算器A、Bがライトポートを共有するとき、
A、Bの演算パイプラインの出力をそれぞれ、遅延させ
る遅延ラッチを設ける。遅延ラッチの数は命令で指定可
能な遅延サイクル数とする。命令にライトポートの遅延
指定が無い場合は、この遅延ラッチに命令を登録せずに
ライトポートを使用する。命令にライトポートの遅延指
定がある場合は、前記遅延ラッチに命令を載せる。
【0022】この方法では各演算パイプライン毎に遅延
ラッチを設ける必要があるが、遅延ラッチへの入力の制
御が簡単になる。
【0023】前記演算結果保持手段の他の実現方法とし
ては、演算器A、Bがライトポートを共有するとき、
A、Bの演算パイプラインの出力をともに保持する遅延
バッファを設ける。遅延バッファにはA、Bから同時に
命令を登録することも可能であり、遅延させるサイクル
が同じ場合は、前記の実現方法よりもハードウェア資源
が少なくなる。この遅延バッファには、演算結果と共
に、命令で指定された遅延サイクルを保持する手段を設
け、毎サイクルこの遅延サイクルから1を引き、値が0
になったら遅延が終了したものとみなして次のサイクル
でライトポートを使用する。
【0024】これらの遅延指定命令はコンパイラにおけ
る命令スケジューリングで生成する。この命令スケジュ
ーリングは、基本ブロック等のスケジューリング単位に
対して依存グラフを生成するステップと、依存グラフ中
に未スケジュール命令が存在するかどうか検査するステ
ップと、前記検査で未スケジュール命令が無い場合は次
のスケジュール単位をスケジュールするステップと、前
記検査で未スケジュール命令がある場合は、その命令P
を依存グラフから配置可能な最小のサイクルYに配置で
きるか否かを検査するステップと、前記検査でスケジュ
ール可能ならば、命令Pを該当場所にスケジュールする
ステップと、前記検査でスケジュール不可能ならばその
スケジュールできない原因がライトポートの競合にあ
り、かつ命令Pがライトポート遅延指定可能な命令であ
るかを検査するステップと、前記検査が成り立たない場
合はXを1増やして命令Pを再スケジュールするステッ
プと、前記検査が成り立つ場合は、命令Pに指定可能な
遅延サイクルを小さいものから順に調べ、いずれかの遅
延サイクルで命令PをXに配置できるか否か調べるステ
ップと、前記検査で配置出来ない場合は、遅延指定によ
る命令PのXへの配置をあきらめ、X+1での命令Pの
配置を試みるステップと、前記検査で配置出来るなら
ば、命令Pに前記の配置できた遅延指定サイクルを登録
して、命令Pを配置するステップから構成されることを
特徴とする。
【0025】
【発明の実施の形態】以下本発明の実施形態を、図面を
参照して説明する。 [第1の実施形態]図3は、本発明の実施形態に係わる
パイプライン制御方式のVLIWプロセッサの構成を示
すブロック図である。図3に示すVLIWプロセッサ
は、2つの演算命令フィールドを持つVLIW命令を実
行するプロセッサであり、命令フェッチ回路301、命
令レジスタ302、デコード回路303、演算装置30
5、演算装置320、レジスタファイル306を備えて
いる。
【0026】本発明のVLIWプロセッサは、整数演算
命令、浮動小数点命令といった通常の命令に加え、図6
に示すライトポート遅延指定ビット603と遅延サイク
ル604を備える命令を実行することを特徴としてい
る。ライトポート遅延指定ビットは、命令が本来ライト
ポートを使用するサイクルよりも実際にライトポートを
使用するサイクルを遅延させることを示すビットであ
る。このビットが立っている場合、本発明のVLIWプ
ロセッサは、命令に遅延サイクル604で指定されてい
るサイクルだけライトポートを使用するサイクルを遅延
させる。
【0027】図6に示す命令フォーマットは一つの例で
あり、システムによって様々な方法を取ることができ
る。例えばある命令に対しては、命令で指定されたサイ
クルだけ、ライトポートの使用を遅延するが、レイテン
シーの長い別の命令に対しては、命令で指定されたサイ
クルの定数倍だけライトポートの使用を遅延するといっ
たことも可能である。
【0028】図3の構成において、命令フェッチ回路3
01は、毎サイクル1つのVLIW命令をフェッチし
て、302の命令レジスタに格納する。本実施形態では
VLIW命令長が2のVLIWプロセッサなので、命令
レジスタ302には、最大で2個の演算命令が登録され
る。#0、#1はこれらが登録されるフィールドであ
る。
【0029】次にデコード回路303では、302の各
フィールド#0、#1の命令をデコードする。デコード
した結果、ソースオペランドに指定されたレジスタの値
がレジスタファイル306から読み出され、#0、#1
の各命令は、#0、#1に対応した演算装置305、3
20で実行される。
【0030】ここでデコード回路303は、デコード対
象の命令に前記のライトポート遅延指定ビットがセット
されている場合は、その情報を実際にライトポートの使
用を遅延させる演算装置305、320に伝える。本実
施形態では、デコード回路303から演算装置305、
320への情報は、304のパイプライン情報線によっ
て伝える。図7はこのフォーマットを示している。70
1は演算装置への入力が有効であることを示すVALI
Dビットであり、702は発行された命令のターゲット
レジスタ番号であり、703、704は命令で指定され
たソースレジスタの番号であり、705は本発明の特徴
である、ライトポート遅延サイクルである。ここで遅延
サイクル705が’0’ならば、ライトポートの遅延は
行なわないものとする。
【0031】以下では、遅延指定された命令が演算装置
305、320に発行された時の、本発明のVLIWプ
ロセッサの動作について説明する。なお以下の説明では
遅延サイクルの最大値が2である場合、すなわち命令は
ライトポートの遅延を行なわないか、または1サイクル
遅延させるか、または2サイクル遅延させるかを指定で
きる場合について説明する。この遅延サイクルは容易に
拡張することができる。また以下では#0フィールドに
対応する演算装置305の遅延動作を説明する。#1に
対応する演算装置320の動作は演算装置305の動作
と同様に実現することができる。
【0032】図4は図3の302のVLIW命令の#0
フィールドに対応する演算装置305の構成を示した図
である。演算装置305は、演算を行なう演算パイプラ
イン401と402、ライトポートの遅延を行なうライ
トポート遅延回路404と演算パイプラインの結果を後
続の命令にフォワードするためのフォワード選択回路か
ら構成される。また演算パイプライン401と402は
ライトポート(ラッチ415、416)を共有してい
る。演算装置305で実行される#0フィールドには、
整数加算命令や、整数乗算命令など、異なる演算器を使
う命令が配置される。このため演算装置305は、#0
フィールドに配置される全ての命令を実行するために必
要な複数の演算器から構成される。本実施形態では演算
装置305は、演算パイプライン401と演算パイプラ
イン402より構成され、2つの異なる種類の演算を行
なうことができるものとする。#0フィールドには同時
には1つの命令しか配置できないので、演算パイプライ
ン401と演算パイプライン402には、同時にはどち
らか一方のみに命令が発行される。
【0033】では、演算装置305における命令の実行
過程について説明する。図3のデコード回路303でデ
コードされた#0フィールドの命令は、命令が使用する
演算器の種類に応じて、演算パイプライン401かまた
は402のE1ステージに発行される。E1ステージに
発行される情報は、パイプライン情報304と、ソース
オペランドデータ403である。パイプライン情報30
4は前述した通りである。ソースオペランドデータ40
3は、311、312で示されるレジスタから読み出し
たデータと、演算パイプライン0の演算結果であるパイ
プライン0フォワード情報406と、パイプライン1の
演算結果であるパイプライン1フォワード情報407
と、ライトポート遅延回路から出力される遅延回路から
のフォワード情報414と、WRステージからのWRフ
ォワード情報409のいずれかか一つを、フォワード選
択回路405によって選択したものである。
【0034】E1ステージに発行された命令は各パイプ
ラインステージを毎サイクル流れ、演算が終了するとラ
イトポート遅延回路に入力される。ここでライトポート
遅延指定がされていない命令の場合は、遅延はされず、
入力されたデータは次のサイクルでWRステージにラッ
チされる。なお、演算パイプライン401と402はラ
イトポート(WRステージ)を共有しているので、各パ
イプラインから同時にWRステージを使ってはならな
い。本発明のVLIWプロセッサではこのライトポート
の競合を回避は全てソフトウェアに任せるものとし、ハ
ードウェアは同時にWRステージへのリクエストは発生
しないことを前提として動作する。
【0035】ライトポートが競合するケースと、それを
ライトポート遅延指定命令と、ライトポート遅延回路4
04によって回避する例を図13を用いて説明する。図
13の横軸はサイクル、縦軸は演算装置305のパイプ
ラインステージを表している。またaは、演算パイプラ
イン401で実行される命令であり、bは402で実行
される命令である。1301のケースでは、サイクル1
でaがE1に発行され、サイクル3でbがE1に発行さ
れ、かつa、bともにライトポート遅延指定がない場合
であり、この場合はサイクル4でWRステージが競合す
る。一方、1302のケースでは1301と同様にaと
bは発行されているが、bに対して1サイクルのライト
ポート遅延指定がされているため、bはE1終了後、ラ
イトポート遅延回路404内のDELAY1ステージを
通り、次のサイクルでWRステージを使用するため、競
合が回避されている。
【0036】次に、本発明のVLIWプロセッサの特徴
であるライトポート遅延回路404の実施形態について
説明する。
【0037】図5は図4のライトポート遅延回路404
の1実施形態をである。本実施形態では、各パイプライ
ンの最終ステージの後にディレイラッチ501、519
のDELAY1、503、560のDELAY2を設け
ることで、最大2サイクルのライトポートの遅延が可能
である。
【0038】図5に示す本実施形態のライトポート遅延
回路404は、演算パイプライン401(以下パイプラ
イン0と呼ぶ)からのデータを遅延させるためのパイプ
ライン0遅延手段と、演算パイプライン402(以下パ
イプライン1と呼ぶ)からのデータを遅延させるための
パイプライン1遅延手段と、前記パイプライン0遅延手
段の出力と、前記パイプライン1遅延手段の出力のう
ち、いずれか1つをWRステージ415、416に出力
するパイプライン間選択手段から構成される。
【0039】パイプライン0遅延手段は、パイプライン
0からの出力410、411を、1サイクル遅延させた
値を保持するラッチ501と、同2サイクル遅延させた
値を保持するラッチ503と、パイプライン0からの出
力と、前記ラッチ501と503の3つの情報から1つ
を選択するセレクタ508と、図4のE1ステージに発
行された命令のソースオペランド1およびソースオペラ
ンド2のデータを遅延ラッチ501、503からフォワ
ードするための、セレクタ509、510と、前記セレ
クタ508と509と510のセレクト信号511、5
12、513を生成するライトポート遅延ステージ選択
回路504から構成される。
【0040】同様に前記パイプライン1遅延手段は、パ
イプライン1からの出力412、413を、1サイクル
遅延させた値を保持するラッチ519と、同2サイクル
遅延させた値を保持するラッチ560と、パイプライン
1からの出力と、前記ラッチ519と560の3つの情
報から1つを選択するセレクタ525と、ソースオペラ
ンド1およびソースオペランド2のデータを遅延ラッチ
519、560からフォワードするための、セレクタ5
26、527と、前記セレクタ525と526と527
のセレクト信号528、529、531を生成するライ
トポート遅延ステージ選択回路522から構成される。
【0041】前記パイプライン間選択手段は、前記パイ
プライン0の遅延データのセレクタ508と、パイプラ
イン1の遅延データのセレクタ525の出力のうち、い
ずれか1つを選択し、ライトポート遅延回路404の出
力としてWRステージに出力するためのセレクタ517
と、前記セレクタ509と525のそれぞれによって選
択されたソース1へのフォワードデータのうち、いずれ
か一方をセレクトするセレクタ536と、同ソース2に
フォワードするためにセレクタ510と527によって
選択されたデータのうち、いずれか一方をソース2への
フォワードデータとするためのセレクタ537から構成
される。
【0042】以下では、ライトポート遅延回路に、パイ
プライン0からデータが入力された時の各部の動作につ
いて説明する。
【0043】まずパイプライン0からのデータは図5の
410および411より入力される。ここで410は図
4の410パイプライン情報0であり、その内容は前述
ように、図7の700に示されるとおりである。また入
力データ411は図4の演算パイプライン0の結果41
1であり、命令で指定されたターゲットレジスタに格納
する値を表している。410、411は、ライトポート
遅延回路404に入力されると、まずラッチ501に格
納される。
【0044】ラッチ501の入力前のANDゲートは、
入力される命令にライトポート遅延指定がない場合に、
入力データのVALIDを落すために設けられている。
命令にライトポート遅延指定がない場合は、セレクタ5
08によって選択され、ラッチ501、503で遅延さ
れることなく、次のWRステージに進む。このために遅
延指定がない命令の場合は、ラッチ501に命令が保持
されないように、571を用いて命令を削除する。
【0045】入力された命令にライトポート遅延指定が
ある場合、501にラッチされる。これにより1サイク
ルライトポートの使用が遅延される。ラッチ501に保
持された命令が1サイクル遅延指定された命令ならば、
次のサイクルは、ラッチ502にラッチされず、次のW
Rステージに進む。ラッチ502の入力前のANDゲー
トは遅延サイクルが1サイクルの命令を削除するために
設けている。
【0046】命令に2サイクルのライトポート遅延指定
がされている場合、次のラッチ503に保持される。本
実施形態では、最大2サイクルの遅延を仮定しているの
で、503にラッチされた命令は必ず次のサイクルはW
Rステージに進む。
【0047】では、ラッチ501、503に登録された
命令を選択するセレクタ508の動作について説明す
る。このセレクタのセレクト信号は、ライトポート遅延
ステージ選択回路およびフォワードデータ選択回路50
4によって生成される。
【0048】図9は、ライトポート遅延ステージ選択回
路およびフォワードデータ選択回路504の処理フロー
を表している。504には、図5のライトポート遅延回
路404に入力された命令を表すパイプライン情報50
5と、ラッチ501に保持される1サイクルライトポー
トを遅延された命令を表すDELAY1パイプライン0
情報506と、同2サイクル遅延された命令を表すDE
LAY2パイプライン0情報507と、フォワードデー
タの選択に使用する図4の演算パイプライン0のE1ス
テージへの入力情報304が入力される。
【0049】まず902では、504内で使用する信号
を作成する。D0_DELAY_CYCLEは、図4の
ライトポート遅延回路404に入力される命令に指定さ
れている遅延サイクルである。この値は404に入力さ
れた命令の残り遅延サイクル数と見ることができる。D
1_DELAY_CYCLEはラッチ501において1
サイクル遅延された命令に指定されている遅延サイクル
から1引いた値である。ラッチ501、503には命令
で指定された遅延サイクルが保持されているので、前記
D1_DELAY_CYCLEは、1サイクル遅延され
た命令の残り遅延サイクル数を表す。D0_VALID
は、前記404に入力されたデータが有効であることを
表す信号であり、D1_VALIDは、前記ラッチ50
1のデータが有効であることを表すビットであり、D2
_VALIDは、前記ラッチ503のデータが有効であ
ることを表す信号である。またD0_TARGET_N
Oは、フォワードデータの選択に使用するための前記4
04に入力される命令のターゲットレジスタ番号であ
り、D1_TARGET_NOは同様に、ラッチ501
に保持された命令のターゲットレジスタ番号である。ま
たISSUE_VALIDは、図4の演算パイプライン
401のE1ステージに有効な命令が発行されたことを
表す信号であり、ISSUE_SRC1_NOおよびI
SSUE_SRC2_NOは、それぞれ前記401のE
1ステージに発行された命令のソースオペランド1およ
びソースオペランド2のレジスタ番号である。
【0050】次に、前記の信号を用いてライトポート遅
延ステージ選択回路904と遅延ステージフォワードデ
ータ選択回路905では各セレクタの制御信号を生成す
る。
【0051】904のライトポート遅延ステージ選択回
路ではセレクタ508のセレクト信号であるOUT_D
ELAY_SEL(0―2)と、セレクタ517のセレ
クト信号であるUSE_WRITE_PORTを作成す
る。
【0052】図10は904の処理フローを表してい
る。1001ではまずライトポート遅延回路404への
入力に有効な命令が存在しかつこの命令が遅延指定され
ていないかを調べる。
【0053】前記条件が成り立つ場合は命令を遅延させ
ず、前記命令を次のサイクルでWRステージに進めるた
めに、1002において、セレクタ508のセレクト信
号OUT_DELAY_SEL(0―2)の値を''00
1''とする。また次のサイクルにWRステージを使う有
効な命令があることを表すUSE_WRITE_POR
T信号を立てる。
【0054】前記1001の条件が成り立たなければ、
1003において図5のラッチ501に保持された1サ
イクル遅延された命令が有効であり、かつ残りの遅延サ
イクルを表す前記D0_DELAY_CYCLEの値が
0であるかを調べる。前記条件が成り立てば、2サイク
ルの遅延は行なわず次のサイクルでWRステージに進め
るために、1004において前記OUT_DELAY_
SEL(0―2)の値を''010''とする。また次のサ
イクルでWRステージを使用するので、USE_WRI
TE_PORT信号を立てる。
【0055】前記1003の条件が成り立たなければ、
OUT_DELAY_SEL(0―2)は''100''と
する。この場合、2サイクル遅延された命令は必ず次の
サイクルWRステージに進む。また次のサイクルでWR
ステージを使用することを表すUSE_WRITE_P
ORTは、ラッチ503に有効な命令があることを表す
D2_VALIDとする。
【0056】次に、図9のデータ選択回路905の処理
を説明する。905では、図4の演算パイプライン40
1のE1ステージに入力されるソース1とソース2のデ
ータをライトポート遅延回路からフォワードするため
の、図5のセレクタ509と510のセレクト信号51
2、513と、演算パイプライン間でフォワードデータ
を選択するための信号514を生成する。
【0057】前記信号514は、図9の910のSRC
1_SEL(0―1)とSRC2_SEL(0―1)を
まとめたものである。SRC1_SEL(0―1)
は、''10''ならば図5のラッチ501からソース1に
データをフォワードすることを表し、''01''ならば図
5のラッチ503からソース1にデータをフォワードす
ることを表す。同様にSRC2_SEL(0―1)
は、''10''ならば図5のラッチ501からソース2に
データをフォワードすることを表し、''01''ならば図
5のラッチ503からソース2にデータをフォワードす
ることを表す。
【0058】図11は前記905の処理フローである。
まず1101において、図5のラッチ501に有効な命
令があり、かつこの命令のターゲットレジスタと前記I
SSUE_SRC1_NOが等しいかを検査する。この
条件が成り立てば、1102において、セレクト信号S
RC1_FORWARD_DELAY1を立て、SRC
1_SEL(0―1)を''10''にする。これにより、ラ
ッチ501に保持されている1サイクルライトポートの
使用を遅延した命令の演算結果がソース1にフォワード
される。
【0059】前記1101の条件が成り立たない場合、
1103において、SRC1_FORWARD_DEL
AY1の値を0にする。これにより、図5のセレクタ5
09でラッチ503に保持された2サイクルライトポー
トの使用を遅延した命令の演算結果がソース1にフォワ
ードされる。
【0060】次に1104では、図5のラッチ503に
保持されている命令が有効でかつ前記命令のターゲット
レジスタ番号がソース1のレジスタ番号と一致している
かを検査する。これが成り立てば、1105においてS
RC1_SEL(0―1)の値を''01''とする。
【0061】前記1104の条件が成り立たなければ、
1106においてソース1にはフォワードされないこと
を表す''00''がSRC1_SEL(0―1)にセット
される。
【0062】SRC2_SEL(0―1)、SRC2_
FORWARD_DELAY1の生成は、1107〜1
112で行なうが、これは前記の1101〜1106の
処理と同様である。
【0063】ここで、ソース1およびソース2へのフォ
ワードは、ラッチ501をラッチ503よりも優先して
いる。これにより、ラッチ501とラッチ503にとも
に同じレジスタをターゲットとする命令がある場合は、
後続の命令の結果が最終値となる。また前記のようにラ
ッチ501とラッチ503に有効な命令が載っている場
合、ラッチ503の命令は必ず次のサイクルでWRステ
ージを使用するので、ラッチ501の命令は次のサイク
ルまで遅延される命令でなければWRステージの競合が
発生する。このような競合の回避は、本発明のVLIW
プロセッサでは行なわず、全てコンパイラ(ソフトウェ
ア)が管理する。
【0064】またこのフォワードデータの選択は、ラッ
チ501とラッチ503の間で行なったが、ライトポー
ト遅延回路の入力データもフォワード対象であり、図4
の406パイプライン0フォワード情報を用いてフォワ
ード選択回路405にて選択される。
【0065】図5の522は、前記504と処理フロー
は同様である。
【0066】図5の504と522によって生成された
セレクト信号によってセレクトされた情報は、セレクタ
517、セレクタ536、セレクタ537にそれぞれ入
力される。
【0067】図5のセレクタ517は、パイプライン0
遅延ラッチからのデータ516と、パイプライン1遅延
ラッチから出力されたデータ539のうち、次のサイク
ルでWRステージを使用するものを選択する。セレクト
信号515は、前記の図9で示した信号907のUSE
_WRITE_PORTである。セレクト信号515
は、パイプライン0遅延ラッチから有効な命令が508
によって選択された場合に’1’となる。なお、前記5
16と537の両方に同時に有効な命令が載らないこと
は、コンパイラ(ソフトウェア)が保証する。
【0068】セレクタ517から出力された命令は、信
号線415、416によって次のサイクルで図4のWR
ステージ408にセットされる。
【0069】セレクタ536は、ソース1のフォワード
データを、パイプライン0遅延ラッチとパイプライン1
遅延ラッチから選択する。同様にセレクタ537はソー
ス2のフォワードデータを、パイプライン0遅延ラッチ
とパイプライン0遅延ラッチから選択する。セレクタ5
36、537のセレクト信号は、演算パイプライン間フ
ォワードデータ選択回路538によって生成する。
【0070】図12は、演算パイプライン間フォワード
データ選択回路538の処理フローである。入力には、
図5の504および522で生成される信号514と5
24である。1200で定義されるSRC1_PIPE
0_DELAY1は、パイプライン0遅延ラッチからの
ソース1のフォワードデータ530が、ラッチ501か
らセレクトされたものであることを表し、SRC1_P
IPE0_DELAY2は、同ラッチ503からセレク
トされたものであることを表す。またSRC2_PIP
E0_DELAY1は、パイプライン0遅延ラッチから
出力されたソース2のフォワードデータ532が、ラッ
チ501からセレクトされたものであることを表し、S
RC2_PIPE0_DELAY2は、同ラッチ503
からセレクトされたものであることを表す。
【0071】さらに、SRC1_PIPE1_DELA
Y1は、パイプライン1遅延ラッチからのソース1のフ
ォワードデータ534が、ラッチ519からセレクトさ
れたものであることを表し、SRC1_PIPE1_D
ELAY2は、同ラッチ560からセレクトされたもの
であることを表す。またSRC2_PIPE1_DEL
AY1は、パイプライン1遅延ラッチから出力されたソ
ース2のフォワードデータが、ラッチ519からセレク
トされたものであることを表し、SRC2_PIPE1
_DELAY2は、同ラッチ560からセレクトされた
ものであることを表す。
【0072】1201では、ソース1のフォワードデー
タのセレクタ536への2つの入力530と534が共
に有効な場合に、ラッチ501、ラッチ519、ラッチ
503、ラッチ560の優先度で選択するセレクト信号
を生成する。同様に1204はソース2側に対して同様
の処理を行なって、出力信号SRC2_SEL_PIP
Eを生成する。
【0073】以上、第1の実施形態では、2サイクルの
ライトポートの遅延を行うために、ディレイラッチを2
段設ける場合を説明したが、ディレイラッチを変更すれ
ば任意のサイクルに拡張することが可能である。[第2
の実施形態]図14は、図5のライトポート遅延回路4
04の第2の実施形態を表す図である。ライトポート遅
延回路404以外は、第1の実施形態と同じなので説明
を省略する。
【0074】第1の実施形態では、図4の401の演算
パイプライン0と402の演算パイプライン1のそれぞ
れに対して、ライトポート遅延回路404内に、ディレ
イラッチを設けたが、本実施形態では、2つのパイプラ
インに共通の遅延バッファを設け、どちらのパイプライ
ンからも使用できるようにしたものである。また遅延す
るサイクル数は、実施形態1では、ハードウェアによっ
て固定であったのに対し、本実施形態では、命令で指定
されたサイクル数を遅延させることができる。
【0075】具体的には、図14の本実施形態のライト
ポート遅延回路404は、ライトポートの使用を遅延す
る命令を、遅延サイクルだけ保持するためのバッファ部
1401と、前記バッファ部に、パイプライン0、1か
らの命令を入力する入力セレクト部1425と、前記バ
ッファ部で指定サイクルだけ遅延させた命令を、次のサ
イクルでWRステージに進めるためのバッファセレクト
部1402と、前記バッファ部で遅延させている命令の
演算結果を、後続の命令にフォワードするためのフォワ
ードセレクト部1403と、これらを制御する信号を生
成する入出力制御回路1404から構成される。なお、
本実施形態では、バッファ部は2ENTRY構成とし、
最大2命令を同時に遅延できるものとする。
【0076】以下では、本実施形態を構成する前記の各
部について説明する。
【0077】図15は、図14のバッファ部1401の
構成図である。バッファ部は2つのエントリーから構成
され、各エントリーは遅延する命令を保持する。ここで
1420のENTRY0と1421のENTRY1は同
じ構成をとるので、図15は、1つのENTRYの構成
を示したものである。
【0078】図15のバッファ部は、遅延する命令の残
り遅延サイクルを格納するラッチ1501と、該当エン
トリに有効の命令が格納されていることを表すラッチ1
502と、命令の演算結果や、ターゲットレジスタ番号
を格納するラッチ1503と、遅延サイクルから毎サイ
クル1を引くための1510と、遅延サイクルが0かど
うかを検査する比較器1512と、有効な命令でありか
つ、残りサイクル数が0になったかどうかを検査する1
513から構成される。
【0079】図15のバッファ部には、そのエントリへ
の遅延サイクル指定の命令の格納を要求する信号143
0または1431が入力される。ここで1430はEN
TRY0への格納要求であり、1431はENTRY1
への格納要求である。前記格納要求が、1ならば、入力
セレクタ1504、1505、1506により、信号1
422または1423で与えられるデータがラッチ15
01、1502、1503に格納される。なお、142
2はENTRY0に格納するデータであり、1423は
ENTRY1に格納するデータである。前記格納要求が
0の場合、遅延サイクルを保持するラッチは毎サイクル
1を引いた値が保持され、データラッチ1503は同じ
値が保持される。遅延サイクルは比較器1512によっ
て毎サイクル0と比較され、遅延サイクルが0になり、
かつラッチ1502の値が1の場合は、信号1514が
1となり、格納されていた命令が信号1416または1
417として、バッファ部から出力される。前記151
4が1の場合、ゲート1515によってラッチ1502
の出力が落され、もし次のサイクルにバッファへの格納
要求がなければ、次のサイクルでラッチ1502が0と
なる。
【0080】図15のバッファ部からは、信号1416
または1417が出力される。ここで1416はENT
RY0の出力であり、1417はENTRY1の出力で
ある。各出力信号は、バッファ部が保持する有効ビット
1502の値と、データラッチ1503の値と、残りサ
イクルが0でかつ有効ビットが1の場合の信号である1
514から構成される。前記1514が1の場合はバッ
ファから命令が出力され、次のサイクルにWRステージ
に進むことを表す。この場合次のサイクルに別の遅延要
求命令の格納が可能となる。
【0081】次に、入力セレクト部1425と、バッフ
ァセレクト部1402と、フォワードセレクト部140
3について説明する。
【0082】入力セレクト部1425は、図4の401
演算パイプライン0と402演算パイプライン1から出
た命令を、信号410、411、412、413で受取
り、バッファ部1401のENTRY0、ENTRY1
のそれぞれに入れる命令を選択する。セレクタの制御信
号は1414、1415であり、これらは入出力制御回
路1404とともに説明する。
【0083】バッファセレクト部1402は、バッファ
部1401で指定サイクルだけ遅延したENTRY0、
ENTRY1の命令をセレクトするセレクタ1406
と、遅延指定のない命令が410、411、412、4
13によって入力されたとき、前記401演算パイプラ
イン0と402演算パイプライン1の入力のいずれかを
選択するセレクタ1405と、前記セレクタ1406の
出力と、前記セレクタ1405の出力のどちらを次のW
Rステージに進めるかを選択するセレクタ1407から
構成される。これらのセレクタの制御は入出力制御回路
1404で作成する。
【0084】フォワードセレクト部1403は、バッフ
ァ部1401の各ENTRYに保持されている命令の演
算結果を、後続命令にフォワードするためのセレクタで
あり、セレクタ1408は、ソースオペランド1への演
算結果のフォワードであり、セレクタ1409は、ソー
スオペランド2への演算結果のフォワードである。これ
らのセレクタの制御信号も、入出力回路1404で作成
する。
【0085】次に、前記の各セレクタの制御信号を作成
する入出力制御回路1404について説明する。
【0086】図16は、入出力制御回路1404の処理
フローである。まず1601では各種の信号を定義す
る。PIPE0_REQは、ライトポート遅延回路40
4に入力される図4の401演算パイプライン0からの
出力に有効な命令があることを表す。同様にPIPE1
_REQは、402演算パイプライン1の出力に有効な
命令があることを表す。PIPE0_DELAY_CY
CLEは、前記401演算パイプライン0から出力され
る命令の遅延サイクルであり、同様にPIPE1_DE
LAY_CYCLEは前記402演算パイプライン1か
ら出力される命令の遅延サイクルである。PIPE0_
DELAY_BITおよびPIPE1_DELAY_B
ITは、前記401、402のパイプライン0、1から
出力される命令が遅延指定命令であることを表す。信号
ENTRY0_GO、ENTRY1_GOは、図15で
説明した信号1514を表す。この信号は、各エントリ
から遅延サイクルが終了した命令の次のサイクルでのW
Rステージ使用要求を表す。ENTRY0_VALI
D、ENTRY1_VALID、図15で説明した信号
1516であり、バッファ部のENTRY0、ENTR
Y1に有効な命令があることを表す。ENTRY0_T
ARGET_NOおよびENTRY1_TARGET_
NOは、バッファ部のENTRY0、ENTRY1に格
納された命令のターゲットレジスタ番号である。ISS
UE_SRC1_NOおよびISSUE_SRC2_N
Oは、図4のE1ステージに発行される命令のソースオ
ペランド1、2のレジスタ番号である。この信号は、フ
ォワードデータの選択に使用する。
【0087】入出力制御回路1404ではこれらの入力
信号を使用して、1602の入力制御回路において入力
セレクト部1425の制御信号を作成し、バッファセレ
クト制御回路1603でバッファセレクト部1402の
制御信号を作成し、フォワードセレクト制御回路160
4でフォワードセレクト部1403の制信号を作成す
る。
【0088】図17は、前記入力制御回路1602の処
理フローである。
【0089】まず1701で、各エントリが次のサイク
ルに空になることを表すENTRY0_FREE、EN
TRY1_FREEを定義する。
【0090】次に1702において、図4の演算パイプ
ライン0、1からの出力が、共に遅延指定命令であるか
どうか検査する。パイプライン0、1からの命令が共に
遅延指定命令である場合、ENTRY0に、演算パイプ
ライン0からの命令を登録し、ENTRY1に演算パイ
プライン1からの命令を登録するように、1703にお
いてENTRY0_SELを0、ENTRY1_SEL
を1とし、ENTRY0、ENTRY1に命令を登録す
るための信号ENTRY0_IN、ENTRY1_IN
を立てる。なお、このとき既に各エントリに命令が無い
ことはコンパイラが保証する。
【0091】前記1702の条件が成り立たない場合
は、1704において演算パイプライン0、1から出力
された命令がどちらも遅延指定でないか、または出力さ
れた命令が無いかを調べる。この条件が成り立つ場合
は、バッファ部にはなにも登録しないので、ENTRY
0_SEL、ENTRY1_SEL、ENTRY0_I
N、ENTRY1_INは全て0とする。前記1704
の条件が成り立たない場合は、次に1706の条件を調
べる。
【0092】1706以降では、演算パイプライン0、
1の出力のいずれかに遅延指定命令があるので、まず1
706では演算パイプライン0の出力が遅延指定命令で
あるかどうかを検査する。条件が成り立てば、1707
においてENTRY0、ENTRY1の入力データを演
算パイプライン0からの出力命令とし、次の1708に
おいて、この命令をどちらのエントリに登録するかを決
める。1708ではまずENTRY0が空であるかを調
べ、空ならば1709において、ENTRY0_INを
1、ENTRY1_INを0として、ENTRY0に次
のサイクルで命令を登録する。前記1708の条件が成
り立たなければ、ENTRY1に命令を登録する。な
お、前記と同様に遅延指定命令を登録するときに該当エ
ントリが空かどうかはコンパイラが保証する。
【0093】1706の条件が成り立たない場合、以降
では演算パイプライン1に遅延指定命令があるので、1
711において、ENTRY0、ENTRY1への入力
データをともに演算パイプライン1の命令とし、171
2でENTRY0、ENTRY1のどちらに空きがある
かを調べる。ENTRY0が空きならば1713でEN
TRY0側の入力信号ENTRY0_INを立て、EN
TRY1側が空ならば、1714でENTRY1側の入力信
号ENTRY1_INを立てる。
【0094】以上の処理で入力制御信号である、図14
の1414、1415、1430、1431を作成す
る。
【0095】次に図16の1603のバッファセレクト
制御回路について説明する。
【0096】図18は、前記1603の制御フローを表
している。図18ではまず1801において、演算パイ
プライン0から出力された命令はあるが、それが遅延指
定命令でないことを表すPIPE0_NON_DELA
Y_REQと、同PIPE1_NON_DELAY_R
EQを定義する。また演算パイプライン0、1から出力
された命令のいずれかが遅延指定命令でないことを表す
NON_DELAY_REQを定義する。
【0097】1802では、演算パイプライン0に遅延
バッファを使用しない命令があるならば図14のセレク
タ1405で演算パイプライン0側を選び、そうでなけ
れば1側を選ぶように、信号1410を定義する。
【0098】次に1805ではセレクタ1406の制御
信号1411を作成する。ここではエントリ1からの出
力要求ENTRY1_GOを1411とする。なお遅延
バッファから同時に複数の出力要求が出ないことはコン
パイラが保証する。次に1806ではセレクタ1407
の制御信号1424を作成する。セレクタ1407は、
演算パイプライン0または1からの遅延指定が無い命令
と、遅延サイクルが終了した命令の選択を行う。180
6では演算パイプライン0、1の出力に遅延指定の無い
命令が無ければ制御信号1424を立てる。
【0099】図19は、図16のフォワードセレクト制
御回路1604の処理フローである。1901以降で
は、ソースオペランド1へのフォワードデータのセレク
タである図14の1408の制御信号1412を作成
し、1908以降ではソースオペランド2へのフォワー
ドデータのセレクタである図14の1409の制御信号
1413を作成する。1901ではまずENTRY0、
ENTRY1に共に有効な命令があり、かつENTRY
0、ENTRY1の命令のターゲットレジスタ番号が等
しくかつそれがソースオペランド1のレジスタ番号が一
致しているかを検査する。前記条件が成り立つ場合は、
ENTRY0、ENTRY1のどちらのデータをフォワ
ードするかを1902で決定する。1902ではENT
RY0とENTRY1の命令の残り遅延サイクルを比較
する。残り遅延サイクルが小さい命令は該当レジスタの
最終値となるので、1902でENTRY1の残り遅延
サイクル数の方が小さければ、セレクタ1408でEN
TRY1側をセレクトするように1903において制御
信号1412を1とする。前記1902が成り立たなけ
れば、1904で制御信号1412を0とする。前記1
901の条件が成り立たない場合は、1905において
ENTRY0にフォワードデータがあるかどうかを検査
する。1905が成り立てば、セレクタ1408でEN
TRY0側のデータをフォワードするように制御信号1
412を0とする。一方前記条件1905が成り立たな
ければ、1907で制御信号1412を1とする。
【0100】1908以降の制御信号1413の作成は
前記1901以降の制御信号1412の作成処理と同様
に行う。
【0101】なお、前記制御信号1412および141
3の作成では、1901、1908においてENTRY
0、ENTRY1にフォワード対象の同一ターゲットレ
ジスタの命令がある場合の条件を示したが、コンパイラ
によって同一レジスタをターゲットとする命令が同時に
遅延バッファに登録されないことを保証すれば、190
1、1908の条件は不要である。
【0102】以上、第2の実施形態では2つの演算パイ
プラインで、ライトポートを遅延させるための遅延バッ
ファを共有する方法について説明した。遅延バッファを
共有する演算パイプラインの数は2に限定されるもので
はなく、任意の数に増やすことが可能である。
【0103】また第2の実施形態では、遅延バッファの
各エントリに、残り遅延サイクルを保持するラッチを設
け、これを毎サイクル減じて、残りサイクル数が0にな
ったエントリの命令が次のサイクルでWRステージを使
用することを示したが、この残りサイクル数の保持を、
実施形態1の各演算パイプライン毎の遅延バッファに適
用することもできる。これによると、実施形態1では2
サイクルの遅延を行うために、各演算パイプラインに2
個のディレイラッチを設けていたが、これと同じ効果を
これを各演算パイプライン毎に1個のラッチと前記残り
遅延サイクル数を設けることで実現することができる。 [第3の実施形態]第1の実施形態および第2の実施形
態では、本発明のライトポート遅延指定命令を実行する
VLIWプロセッサの実施形態について説明したが、本
実施形態では、前記2つの実施形態のためのコンパイラ
によるライトポート遅延指定命令の生成方法について説
明する。
【0104】図20は、ライトポート遅延指定命令を生
成するコンパイラの構成図である。本実施形態のコンパ
イラは、まずソースプログラム2001を読み込み、字
句解析、構文解析を行ない中間コードに変換するソース
プログラム入力部2002と、中間コードを入力して、
命令スケジューリングやレジスタ割り付けなどを行なう
最適化部2004と、最適化された中間コードをオブジ
ェクトコードに変換するオブジェクトコード生成部20
06から構成される。
【0105】本発明の遅延指定命令は、命令スケジュー
リング2005で生成する。命令スケジューリングは、
命令間の依存関係を表す依存グラフ2008に基づい
て、スケジュールテーブル2010に命令を配置してい
く。ここで各命令が使用するマシン資源は、命令毎に定
義された命令資源テーブル2009を用いる。
【0106】依存グラフとは、例えば図2の(A)のよ
うなグラフである。グラフ中のノードは命令を表し、ノ
ード間のエッジは命令間の依存関係を表す。エッジに付
けられた数値は命令間のレイテンシーを表している。図
2の(A)のノードaとノードeの間にはレイテンシー
3のエッジがあるので、命令eを発行できる最小サイク
ルは、命令aを発行後3サイクル目であることを表して
いる。また依存グラフの各ノードにはノードをスケジュ
ールする優先度を表す値が付加されており、スケジュー
ラはこの数値が大きいノードから命令をスケジュールす
る。
【0107】図22および図23は、前記図20の命令
資源テーブル2009の構成を表している。図22は、
レイテンシーが1の命令の資源テーブルであり、図23
はレイテンシー3の命令の資源テーブルである。図2
2、図23はさらに該当命令がライトポート遅延指定が
ない場合の資源を表す(A)と、1サイクルの遅延指定
がある場合の資源(B)と2サイクルの遅延指定がある
場合の資源(C)を示している。
【0108】図22、図23のISSUEとは、命令を
発行するVLIW命令の1つのフィールドを表してい
る。これは図3のVLIW命令の#0フィールドまたは
#1フィールドに相当する。E1、E2、E3の資源
は、演算パイプラインの各ステージを表している。これ
は図4の401演算パイプライン0または402演算パ
イプライン1の各パイプラインステージに相当する。遅
延バッファは、本発明のライトポートの使用を遅延する
ための資源を示しており、図4の404のライトポート
遅延回路に相当する。WRITE_PORTは、レジス
タのライトポートであり、図4のWRステージ408に
相当する。なお、各資源テーブルに数値は、命令が各サ
イクルで使う資源の数を表している。
【0109】図22のレイテンシー1の命令の資源を見
ると、遅延指定がない(A)のケースでは、0サイクル
目に資源ISSUEを使用し、次のサイクルに資源E1
を使用し、次にサイクルに資源WRITE_PORTを
使用する。また同一命令に1サイクルの遅延指定がされ
た場合は(B)のように、2サイクル目に資源WRIT
E_PORTを使わずに遅延バッファの資源を使用し、
次の3サイクル目に資源WRITE_PORTを使用数
する。同様に遅延指定サイクルに2が指定された場合
は、(C)のように2サイクル目および3サイクル目に
遅延バッファを使用し、4サイクル目にWRITE_P
ORTを使用する。
【0110】図23のレイテンシーが3の命令の資源
も、前記図22と同様に定義される。
【0111】前記図20の2010のスケジュール表
は、図24のように構成される。図24のマシン資源
は、各サイクルでVLIW命令中の1つのフィールドに
格納されている命令が使用できる資源の数を表してい
る。図3のVLIW命令の#0でいえば、#0フィール
ドの命令を#0演算器に発行する資源がISSUEに相
当し、演算器内の各パイプラインステージがE1からE
3に相当し、遅延バッファが図4のライトポート遅延回
路404に相当し、WRITE_PORTが図4のWR
ステージ408に相当する。
【0112】図24では資源ISSUEの数が1なの
で、各フィールドからは毎サイクル最大1つの命令が演
算器に発行可能である。またE1からE3ステージの資
源の数は1つなので、毎サイクル最大1つの命令のみが
この資源を使用可能である。遅延バッファの資源の数は
2なので、毎サイクル最大2つの命令が遅延バッファを
使用でき、WRITE_PORTの数は1つなので、毎
サイクル最大1つの命令がライトポートを使用可能であ
る。
【0113】図24のスケジュール表は、各サイクルに
命令がどの資源をいくつ使っているかを登録してあり、
これを基にコンパイラは、各命令が使用する資源の数が
前記マシン資源の数よりも多くならないように、命令を
スケジューリングする。
【0114】例えば、図2の(A)の依存グラフの命令
a〜hが全て図3の#0演算器を使う命令であり、全て
VLIW命令の#0フィールドに配置される場合、図2
4のようなスケジュール表になる。資源ISSUEは毎
サイクル最大1個なので、毎サイクル最大1つの命令が
資源ISSUEを使っており、遅延バッファは毎サイク
ル最大2個使用可能なので、サイクル5、6、7では、
2個の遅延バッファを使っている。
【0115】以下では、前記の依存グラフ、命令資源テ
ーブル、スケジュールテーブルを用いて図20の命令ス
ケジューリング2005において遅延指定命令を生成す
る方法について説明する。
【0116】図25は、本発明の図20の命令スケジュ
ーリング2005の遅延指定命令生成処理フローであ
る。この処理は、図20の中間語2003を入力し、こ
の入力に対して資源を考慮してスケジューリングされた
命令列を出力する。本発明の遅延指定命令は、2516
の遅延指定命令生成処理において生成される。
【0117】まず2502では、入力された中間語をス
ケジュール単位に分割する。スケジュール単位とは依存
グラフを作る単位である。このスケジュール単位は、分
岐の無い命令列である基本ブロックや、基本ブロック列
を用いる。
【0118】次に2503でスケジュールされていない
スケジュール単位があるかを調べる。全てのスケジュー
ル単位が既にスケジュール済みならば、2515に移り
命令スケジュールを終了する。
【0119】未スケジュールのスケジュール単位がある
ならば、2504において1つのスケジュール単位に対
して依存グラフを作成する。依存グラフは前記の図2の
(A)に示す命令間の依存関係を表すグラフである。こ
こでは依存グラフの各ノードのスケジュール優先度も計
算する。
【0120】次に2505において、前記依存グラフ中
にスケジュールされていない命令があるか調べる。ここ
で既に全ての命令がスケジュールされていれば、250
3に移り、次のスケジュール単位をスケジュールする。
【0121】未スケジュールの命令があれば、2506
において依存グラフ中の未スケジュールノードの内の親
ノードが全てスケジューリングされたノードの中で最も
プライオリティーが高いノードを選び、これをNとす
る。またNをスケジュール可能な最小サイクルCYCL
Eを依存グラフから求める。この最小サイクルは、親ノ
ードがスケジュールされたサイクルに親ノードとNとの
レイテンシーを足したサイクルとし、親ノードが複数あ
る場合は、複数の親との間で求めたスケジュール可能サ
イクルの内の最大のサイクルとする。
【0122】次に2507で、前記ノードNを前記CY
CLEに配置できるか否かを、命令資源テーブルおよび
スケジュールテーブルを用いて検査する。この検査を資
源の競合検査と呼ぶ。命令資源テーブルは前述したよう
に、該当命令が発行後の各サイクルで使用する資源を表
しており、スケジュールテーブルは、命令Nをスケジュ
ールする前に既にスケジュールされた命令が使用してい
る資源を表している。資源競合検査は、例えば命令Nを
CYCLEに配置使用としたとき、CYCLE、CYC
LE+1、CYCLE+2、・・・と、命令Nが資源を
使用する最終サイクルまで検査するサイクルを増加させ
ていき、各サイクルで命令Nが使用する資源とマシンの
使用可能な残り資源の数を調べる。もし使用可能な残り
資源の数が命令Nが使用する資源の数よりも少なけれ
ば、命令NはCYCLEにスケジュールできないと判断
する。
【0123】2507において、命令NをCYCLEに
スケジュール可能ならば、2513において実際に命令
NをCYCLEにスケジュールして、スケジュールテー
ブルに命令Nが使用する資源を登録する。その後命令N
ををスケジュール済みとして、2505に戻り、次の命
令のスケジューリングを続ける。
【0124】2507において、命令NをCYCLEに
スケジュールできなければ、次に2516に示す、本発
明の遅延指定命令の生成を試みる。
【0125】2508では、まず前記2507でスケジ
ュールできなかった原因がライトポートの競合によるも
のかを調べる。ライトポートの競合以外の原因でスケジ
ュールできなかったのであれば、ライトポート遅延命令
は使えないので、CYCLEでの命令Nのスケジュール
をあきらめ、2514でCYCLEを1増加させたの
ち、2507に戻って命令のNの再スケジュールを試み
る。
【0126】2507でスケジュールできなかった原因
がライトポートの競合であるならば、次に2509にお
いて命令Nがライトポート遅延指定が可能な命令である
かを調べる。命令Nが遅延指定が出来ない命令ならば、
前記と同様にCYCLEでの命令Nのスケジュールはあ
きらめ、前記2514に進む。
【0127】命令Nが遅延指定可能な命令ならば、以下
では遅延指定によってライトポートの競合を回避できる
か、回避できるならば、その遅延サイクルを求める。
【0128】まず2517において、命令Nで指定でき
る最小遅延サイクルを求め、これをDELAYとする。
【0129】次に2510において、命令Nを遅延サイ
クルDELAYでCYCLEにスケジュールできるか否
かを検査する。この検査は、前記2507のスケジュー
ル検査と同様に行なう。ただし、命令Nの命令資源が図
21の命令資源テーブルで定義されている場合、前記2
507では命令資源テーブル(A)を使って競合を検査
したが、ここでは(B)や(C)の遅延サイクルが指定
された場合の命令資源テーブルを用いて競合を検査す
る。
【0130】前記2510でスケジュール可能ならば、
命令Nの遅延サイクルをDELAYとして2513に進
み、命令Nのスケジューリングを終了する。
【0131】前記2510でスケジューリング不可能な
らば、2511において既に命令Nで指定可能な全ての
遅延サイクルでスケジューリングを試みたかどうかを調
べる。全ての遅延サイクルでスケジュールできなかった
ならば、CYCLEでの命令Nのスケジュールをあきら
めて、2514に進み、CYCLEを増加させて250
7から命令Nを再スケジュールする。
【0132】前記2511で、まだ試みていない遅延サ
イクルがあれば、2512においてDELAYを次に小
さな遅延サイクルとして2510に戻り、再スケジュー
ルを試みる。
【0133】図23は、従来技術で問題となった図2の
依存グラフに対するスケジュール表であり、図24は図
2に対して以上で説明した本発明の遅延指定命令の生成
方法を適用した場合のスケジュール表である。
【0134】図23では最終命令hのレジスタへの書き
込みが終了するまでに13サイクルかかっているのに対
して図24では11サイクルで命令hが終了している。
【0135】
【発明の効果】以上説明してきたように、本発明のライ
トポート遅延指定命令を実行することができるVLIW
プロセッサおよび、ライトポート遅延指定命令の生成方
法によれば、複数の演算器でライトポートを共有するよ
うなVLIWプロセッサにおける、ライトポートの競合
によって命令のスケジュール長が長くなり性能が低下す
るという問題を、ライトポートの使用を遅延させること
によって解決することができる。
【図面の簡単な説明】
【図1】複数の演算器でライトポートを共有する従来の
VLIWプロセッサのブロック図。
【図2】命令の依存グラフおよびこれに対して従来のV
LIWプロセッサ向けの命令スケジューリング適用した
ときのプロセッサパイプラインの状態の説明図。
【図3】本発明のライトポート遅延機能を持つVLIW
プロセッサの全体図。
【図4】本発明の原理の説明図。
【図5】本発明の実施形態1の全体構成の説明図。
【図6】遅延指定命令のフォーマットの説明図。
【図7】本発明のVLIWプロセッサの演算パイプライ
ンのデータ構造の説明図。
【図8】本発明のVLIWプロセッサの演算パイプライ
ンのデータ構造の説明図。
【図9】実施形態1のライトポート遅延ステージ選択回
路およびフォワードデータ選択回路の処理フローの説明
図。
【図10】ライトポート遅延ステージ選択回路の処理フ
ローの説明図。
【図11】遅延ステージフォワードデータ選択回路の説
明図。
【図12】演算パイプライン間フォワードデータ選択回
路の説明図。
【図13】本発明のライトポート遅延指定命令を適用し
たときのパイプラインの状態の説明図。
【図14】実施形態2の全体構成の説明図。
【図15】実施形態2における遅延命令を保持するバッ
ファ部の説明図。
【図16】実施形態2における入出力回路の説明図。
【図17】 実施形態2における遅延命令のバッファ部
への入力を制御する回路の説明図。
【図18】バッファ部からの遅延命令の出力を制御する
回路の説明図。
【図19】バッファ部からのデータのフォワードを制御
する回路の説明図。
【図20】実施形態3に示す本発明のライトポート遅延
命令を生成するコンパイラの全体構成図。
【図21】レイテンシーが1の命令の命令資源テーブル
の構成の説明図。
【図22】レイテンシーが3の命令の命令資源テーブル
の構成の説明図。
【図23】従来の命令スケジューリングのスケジュール
テーブルの説明図。
【図24】本発明のライトポート遅延指定命令を生成す
るための、スケジュールテーブルの説明図。
【図25】実施形態3の命令スケジューリングの処理フ
ローの説明図。
【符号の説明】
301…命令フェッチ回路、302…命令レジスタ、3
03…デコード回路、305、32…演算装置、306
…レジスタファイル、401、402…演算パイプライ
ン、404…ライトポート遅延回路、502…パイプラ
イン0遅延ラッチ、518…パイプライン1遅延ラッ
チ、501…パイプライン0の1サイクル遅延ラッチ、
503…パイプライン0の2サイクル遅延ラッチ、51
9…パイプライン1の1サイクル遅延ラッチ、560…
パイプライン1の2サイクル遅延ラッチ、504、52
2…ライトポート遅延ステージ選択回路およびフォワー
ドデータ選択回路、538…演算パイプライン間フォワ
ードデータ選択回路、508、525…パイプライン内
の遅延命令セレクタ、509、510、526、527
…パイプライン内フォワード命令セレクタ、517…パ
イプライン間遅延命令セレクタ、536、537…パイ
プライン間フォワード命令セレクタ、601〜604…
遅延サイクル指定命令フォーマット、1425…入力セ
レクト部、1401…バッファ部、1403…フォワー
ドセレクト部、1402…バッファセレクト部、140
4…入出力制御回路、1501…残り遅延サイクル保持
ラッチ、1502…遅延ラッチの有効ビット、1503
…遅延命令の結果保持ラッチ、1510…遅延サイクル
加算器、1512…遅延終了サイクル検出用比較器、1
504〜1506…入力データのセレクタ。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 レジスタのライトポートを使用するサイ
    クルの遅延を指示するフィールドと、遅延させるサイク
    ル数を指示するフィールドを備える命令を実行する、複
    数の演算器でライトポートを共有するVLIWプロセッ
    サであって、前記命令で指定した遅延サイクルを命令デ
    コード時にデコードするデコード回路と、デコードした
    遅延サイクル数をパイプラインの各ステージで保持する
    ための手段と、命令がライトポートを使う前に、ライト
    ポートの使用を命令で指定されたサイクルだけ遅延する
    ための命令保持手段を持ち、各命令が演算パイプライン
    を出た後、ライトポートを使用する前に、前記命令にラ
    イトポートの使用を遅延する指定があれば、指定された
    サイクルだけ前記命令保持手段に命令を保持し、指定サ
    イクルが経過した後で前記命令保持手段から命令を取り
    出し、ライトポートを使用することを特徴とするVLI
    Wプロセッサ。
  2. 【請求項2】 請求項1の命令保持手段は、システムで
    可能な遅延サイクル数分のステージを持つディレイラッ
    チで構成され、ライトポートを共有する各演算パイプラ
    インに対して、前記演算パイプラインがライトポートを
    使用する前に、前記ディレイラッチをそれぞれ設けるこ
    とを特徴とする請求項1のVLIWプロセッサ。
  3. 【請求項3】 請求項2の遅延命令を保持するディレイ
    ラッチは、ライトポートの使用を遅延する命令と、この
    命令で指定されたライトポートの使用を遅延させるサイ
    クル数を保持し、毎サイクル前記ディレイラッチに保持
    された命令をディレイラッチの次のステージに進めると
    同時に、前記命令に対応する遅延サイクルから1を引
    き、命令の遅延サイクルが0になったら次のサイクルで
    前記命令をディレイラッチから削除すると同時に、前記
    命令がライトポートを使用することを特徴とする請求項
    2のVLIWプロセッサ。
  4. 【請求項4】 請求項1の命令保持手段は、1個以上の
    エントリを持つバッファで構成され、前記バッファを、
    ライトポートを共有する複数の演算器に1つ設け、前記
    バッファを前記複数の演算器がライトポートを使用する
    前のステージに設けることを特徴とする請求項1のVL
    IWプロセッサ。
  5. 【請求項5】 請求項4の命令保持手段を構成するバッ
    ファの各エントリは、ライトポートの使用を遅延する命
    令で指定された遅延サイクル数を保持する手段を備え、
    毎サイクル遅延サイクルから1を引き、前記遅延サイク
    ルが0になると、次のサイクルで前記エントリにされた
    命令を削除すると同時にライトポートを使用することを
    特徴とする請求項1のVLIWプロセッサ。
  6. 【請求項6】 請求項1のVLIWプロセッサが実行す
    るライトポート遅延命令を生成するコンパイル装置であ
    って、入力されたソースプログラムを中間コードに変換
    するソースプログラム入力部と、中間コードに対してラ
    イトポート遅延命令を生成する命令スケジューリング部
    を含む最適化部と、最適化された中間コードからオブジ
    ェクトコードを生成するオブジェクトコード生成部から
    構成されることを特徴とするコンパイル装置。
  7. 【請求項7】 請求項6の命令スケジューリング部は、
    各命令が使用するプロセッサ資源を定義した命令資源テ
    ーブルと、スケジューリングした命令が使用するプロセ
    ッサ資源を登録したスケジュールテーブルを用いて命令
    をスケジューリングし、前記命令資源テーブルは、命令
    にライトポート遅延指定が無い場合に使用するプロセッ
    サ資源を定義した命令資源テーブルと、遅延指定がある
    場合に使用するプロセッサ資源を遅延サイクルに応じて
    定義した命令資源テーブルから構成されることを特徴と
    する請求項6のコンパイル装置。
  8. 【請求項8】 請求項7の命令スケジューリング部は、
    基本ブロック等のスケジューリング単位に対して依存グ
    ラフを生成するステップと、依存グラフ中に未スケジュ
    ールの命令が存在するかどうか検査するステップと、前
    記検査で未スケジュール命令が無い場合は次のスケジュ
    ール単位をスケジュールするステップと、前記検査で未
    スケジュール命令がある場合は、この命令をPとすると
    き、命令Pを、依存グラフから求めた配置可能な最小の
    サイクルXに配置できるか否かを検査するステップと、
    前記検査でスケジュール可能ならば、命令Pを該当場所
    にスケジュールするステップと、前記検査でスケジュー
    ル不可能ならばそのスケジュールできない原因がライト
    ポートの競合にあり、かつ命令Pがライトポート遅延指
    定可能な命令であるかを検査するステップと、前記検査
    が成り立たない場合はXでのPのスケジュールをあきら
    め、X+1サイクルに命令Pを再スケジュールするステ
    ップと、前記検査が成り立つ場合は、命令Pに指定可能
    な遅延サイクルを小さいものから順に調べ、いずれかの
    遅延サイクルで命令PをXに配置できるか否か調べるス
    テップと、前記検査ですべての指定可能な遅延サイクル
    で命令Pをスケジュール出来ない場合は、遅延指定によ
    る命令PのXへのスケジュールをあきらめ、X+1での
    命令Pの配置を試みるステップと、前記検査でいずれか
    の遅延サイクルで命令PをXにスケジュール出来るなら
    ば、命令Pの遅延指定サイクルを前記のスケジュールで
    きた遅延サイクルとして、命令PをXにスケジュールす
    るステップから構成されることを特徴とする請求項7の
    コンパイル装置。
JP2001121966A 2001-04-20 2001-04-20 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法 Pending JP2002318689A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001121966A JP2002318689A (ja) 2001-04-20 2001-04-20 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001121966A JP2002318689A (ja) 2001-04-20 2001-04-20 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法

Publications (1)

Publication Number Publication Date
JP2002318689A true JP2002318689A (ja) 2002-10-31

Family

ID=18971748

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001121966A Pending JP2002318689A (ja) 2001-04-20 2001-04-20 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法

Country Status (1)

Country Link
JP (1) JP2002318689A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006524859A (ja) * 2003-04-28 2006-11-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 並列処理システム
JP2013519137A (ja) * 2010-02-01 2013-05-23 アルテラ コーポレイション 効率的プロセッサおよび関連する方法
KR20200018238A (ko) * 2018-08-10 2020-02-19 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 정보 처리 방법 및 처리 장치

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006524859A (ja) * 2003-04-28 2006-11-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 並列処理システム
JP2013519137A (ja) * 2010-02-01 2013-05-23 アルテラ コーポレイション 効率的プロセッサおよび関連する方法
KR20200018238A (ko) * 2018-08-10 2020-02-19 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 정보 처리 방법 및 처리 장치
JP2020027614A (ja) * 2018-08-10 2020-02-20 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド 情報処理方法とプロセッサ
KR102238025B1 (ko) 2018-08-10 2021-04-09 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 정보 처리 방법 및 처리 장치
US11055100B2 (en) 2018-08-10 2021-07-06 Beijing Baidu Netcom Science And Technology Co., Ltd. Processor, and method for processing information applied to processor

Similar Documents

Publication Publication Date Title
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
US4879646A (en) Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging
EP1023659B1 (en) Efficient processing of clustered branch instructions
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
US20150149744A1 (en) Data processing apparatus and method for performing vector processing
JP5209933B2 (ja) データ処理装置
JP6502616B2 (ja) バッチスレッド処理のためのプロセッサ、コード生成装置及びバッチスレッド処理方法
JPH0792752B2 (ja) 命令スケジューラ及び入力命令シーケンスを再スケジュールする方法
JPH04503416A (ja) データフローマルチプロセサシステム
JP2002333978A (ja) Vliw型プロセッサ
US11366669B2 (en) Apparatus for preventing rescheduling of a paused thread based on instruction classification
JP2009110209A (ja) 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
TWI613590B (zh) 處理器流水線中的靈活的指令執行
US20150127926A1 (en) Instruction scheduling approach to improve processor performance
JPH02227730A (ja) データ処理システム
TWI613589B (zh) 處理器流水線中的靈活的指令執行
JPH10143365A (ja) 並列処理装置及びその命令発行方式
US20070028077A1 (en) Pipeline processor, and method for automatically designing a pipeline processor
US7437544B2 (en) Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction
JP2002318689A (ja) 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法
US6981130B2 (en) Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel
JP2004503872A (ja) 共同利用コンピュータシステム
KR101293700B1 (ko) 코어스 그레인드 재구성 구조를 위한 코드 생성 장치 및 그 코드 생성 방법
JP2001051845A (ja) アウトオブオーダー実行方式
CN112579168B (zh) 指令执行单元、处理器以及信号处理方法