JP2886838B2 - スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法 - Google Patents

スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法

Info

Publication number
JP2886838B2
JP2886838B2 JP492397A JP492397A JP2886838B2 JP 2886838 B2 JP2886838 B2 JP 2886838B2 JP 492397 A JP492397 A JP 492397A JP 492397 A JP492397 A JP 492397A JP 2886838 B2 JP2886838 B2 JP 2886838B2
Authority
JP
Japan
Prior art keywords
instruction
data
instructions
indicator
sequence
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
Application number
JP492397A
Other languages
English (en)
Other versions
JPH10207707A (ja
Inventor
希 聖 尚
自 強 汪
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.)
KOGYO GIJUTSU KENKYUIN
Original Assignee
KOGYO GIJUTSU KENKYUIN
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 KOGYO GIJUTSU KENKYUIN filed Critical KOGYO GIJUTSU KENKYUIN
Priority to JP492397A priority Critical patent/JP2886838B2/ja
Publication of JPH10207707A publication Critical patent/JPH10207707A/ja
Application granted granted Critical
Publication of JP2886838B2 publication Critical patent/JP2886838B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的に、可変長
命令を利用するスーパースカラプロセッサに係る。より
詳細に言うと、本発明は、多数の可変長命令の並列デコ
ーディングを可能にするためキャシュメモリに記憶され
た命令の系列内の命令の境界情報を記憶し、利用するメ
モリ及び方法に関する。
【0002】
【従来の技術】蓄積プログラム制御式ディジタルコンピ
ュータは、典型的にプログラム命令及びデータを記憶す
る主メモリを含む。主メモリは、実行用の中央処理ユニ
ット(CPU)の中の算術論理ユニット(ALU)、浮
動小数点ユニット(FPU)等の機能ユニットにプログ
ラム命令及びデータを供給する。縮小命令セットコンピ
ュータ(RISC)のCPUは、典型的に固定長命令を
利用する。一方、複合命令セットコンピュータ(CIS
C)のCPUは、例えば、x86アーキテクチャのCI
SC形CPUの場合に、(プレフィックスコードをカウ
ントしなければ)1乃至12バイトの可変長命令を使用
する。
【0003】キャッシュメモリは、屡々、命令の参照場
所の空間的及び時間的な局在性を利用するためCPU及
び他の機能ユニットに接続される。参照の空間的な局在
性は、実行の順序と同じ順序に連続して記憶されるべき
命令の傾向である。参照の時間的な局在性は、同一命令
を繰り返しアクセスすべき機能ユニットの傾向である。
参照場所の時間的な局在性は、最後に実行されたある種
の命令を機能ユニットに繰り返し実行させるループ、分
岐及びサブルーチンのようなプログラムの流れの制御命
令により生じる。かくして、機能的なユニットは、メモ
リの同じ場所に記憶された命令を繰り返しアクセスする
傾向がある。
【0004】命令の実行及び記憶の空間的及び時間的な
局在性の特質を利用するため、局在化された命令の系列
全体が主メモリからキャッシュメモリに複写される。一
般的に言うと、データワード(例えば、典型的に、バイ
トのサイズのユニット)は、例えば、64個のデータワ
ードからなる連続したデータラインに構造化される。命
令がフェッチされた(取り出された)とき、命令を格納
するデータライン全体(命令が多数のデータラインを繋
ぐ場合には、複数のデータラインの全体)は、主メモリ
から読み出され、キャッシュメモリのキャッシュライン
の記憶場所に書き込まれる。従って、キャッシュメモリ
に命令の系列全体がロードされた(入れられた)とき
に、キャッシュメモリが、先にアクセスされた命令と同
じ命令、又は、(将来のアクセスがキャッシュメモリに
既に記憶されたデータラインに対応する他の命令に関す
るならば)未だアクセスされていない命令に対する将来
のアクセスを達成し得る尤度は増加する。
【0005】キャッシュメモリの使用により、キャッシ
ュメモリのアクセス時間、即ち、命令をフェッチする時
間は、遅い主メモリよりも短くなるので、システム性能
は向上する。しかし、キャッシュメモリに存在しない命
令が要求される場合もある。この場合、所謂“キャッシ
ュミス”が発生する。キャッシュミスの場合に、要求さ
れた命令は主メモリから取得しなければならない。しか
し、殆どの場合に、時間的及び空間的な局在性のため、
要求された命令はキャッシュメモリ内にあり、所謂“キ
ャッシュヒット”が発生する。キャッシュヒットは、要
求された命令が高速キャッシュメモリから得られること
を意味する。ディジタルコンピュータシステムにおい
て、キャッシュメモリ内の命令に対する“キャッシュヒ
ット”の割合は、参照の局在性に起因して、90%のオ
ーダーに達する。
【0006】CPUの開発の系譜において、CPUは、
最初、その機能ユニットが命令の系列を受け、同時に1
個の命令を実行するよう設計された。かかるCPUは、
同時に1個の命令しか実行しないので、“スカラ”プロ
セッサと称される。従来のスカラプロセッサの動作速度
は、回路技術、コンピュータ機構、コンピュータアーキ
テクチャの進歩により、限界まで増加させられた。しか
し、新世代の各コンピュータ装置と共に、従来のスカラ
マシーンのための新しい加速機構を見つける必要があ
る。
【0007】現代のプロセッサは、一般的に、性能を向
上させるためパイプライン方式として知られた技術を使
用する。パイプライン方式は、組立ラインに類似した命
令実行技術である。命令の実行は、屡々、メモリから命
令をフェッチし、その命令を夫々のオペレーションとオ
ペランドにデコードし、命令のオペランドをフェッチ
し、デコードされたオペレーションをオペランドに適用
し(以下では、簡単に命令を“実行”すると称する)、
その結果をメモリ又はレジスタに格納する一連の段階を
含むことが想定される。パイプライン方式の技術によれ
ば、実行処理の一連の段階はその後の命令の間で重ね合
わされる。例えば、CPUが命令系列の中の第1の命令
の結果を格納する間に、CPUは同時に系列の中の第2
の命令を実行し、系列の中の第3の命令のオペランドを
フェッチし、系列の中の第4の命令をデコードし、系列
の中の第5の命令をフェッチする。パイプライン方式
は、かくして、命令の系列に対する実行時間を減少させ
る。
【0008】性能を向上させる別の技術は、2個以上の
命令の並列、即ち、同時に実行することを含む。この技
術を利用するプロセッサは、一般的にスーパースカラプ
ロセッサと称される。かかるプロセッサは、多少任意性
があり、命令系列が記憶された厳密に逐次的な順序とは
異なる順序で、命令の系列が実行され、その命令の結果
が格納される付加的な技術を組み込む場合がある。この
技術は、夫々、順序の乱れた(アウトオブオーダー)発
行及び順序の乱れた完了と称される。
【0009】スーパースカラプロセッサが2個以上の命
令を同時に実行し得る能力は、実行される特定の命令に
依存する。同様に、命令を乱れた順序で発行又は完了す
る柔軟性は、発行又は完了されるべき特定の命令に依存
する。かかる命令の依存関係には、資源の衝突、手続的
依存関係、及び、データ依存関係と称される3通りのタ
イプがある。資源の衝突は、並列に実行中の2個の命令
が同一の資源、例えば、システムバスにアクセスしよう
として競合するときに生じる。データ依存関係は、第1
の命令の完了によって、後に完了される第2の命令によ
り後でアクセスされるレジスタ又はメモリに記憶された
値が変えられるときに生じる。
【0010】データ依存関係は、“真のデータ依存関
係”、“反対の依存関係”及び“出力データ依存関係”
と称される3通りのタイプに分類される。これについ
て、マイク ジョンソン(Mike Johnson)著の“スーパー
スカラ マイクロプロセッサ設計(Superscalar Micropr
ocessor Design) ”、ページ9−24(1991年)を
参照のこと。前の命令により計算された値を使用する命
令は、前の命令に“真の”(又はデータ)依存関係を有
する。出力依存関係の一例は、第1及び第2の逐次的な
命令が共に同一のレジスタ又はメモリ位置を異なる値に
割当て、かつ、第1及び第2の命令に続く第3の命令が
レジスタ又はメモリに格納された値をオペランドとして
使用する順序の乱れた完了の際に生じる。先行(第1)
の命令は後(第2)の命令の後に完了することは許容さ
れず、そうでなければ、第3の命令は誤った値を取る。
反対の依存関係の一例は、乱れた順序かつ先行の命令よ
りも前に実行された後の命令が先行の命令により使用さ
れた値を破壊する順序の乱れた実行の際に生じる。真の
依存関係、出力依存関係、及び、反対の依存関係の例と
して、以下の命令の系列: (1) R3:= R3 オペレーション R5 (2) R4:= R3+1 (3) R3:= R5+1 (4) R7:= R3 オペレーション R4 を想定する。命令(2)のオペランドとして使用される
べくR3に格納された値は命令(1)により決定される
ので、命令(2)は命令(1)に真の依存関係を有す
る。命令(3)はレジスタR3の内容を変更するので、
命令(3)は命令(2)に反対の依存関係を有する。命
令(3)が乱れた順序で命令(2)の前に実行されたな
らば、命令(2)はレジスタR3に格納された間違った
値、特に、命令(3)によって変更されたような値を使
用する。命令(1)及び(3)は、出力依存関係を有す
る。命令(1)は、乱れた順序で命令(3)の後に行う
ことが許されない。命令(3)により決定されるような
結果として得られる値は、命令(1)により決定される
ような結果の値ではなくレジスタR3に格納された最後
の値でなければならないので、命令(4)はレジスタR
3に格納された正しいオペランド値に関して実行され
る。誤りのある依存関係は、レジスタの改名技術及び並
べ替えバッファを用いて除去される。
【0011】手続き的な依存関係は、第1の命令の実行
が分岐命令のような先行命令の実行の結果に依存する場
合に生じる。この点について、マイク ジョンソン著の
“スーパースカラ マイクロプロセッサ設計”、ページ
57−77(1991年)を参照のこと。特定の分岐が
行われるかどうかを確実に知ることは困難である。簡潔
のため、分岐命令は、ある予め指定された逐次的ではな
いアドレスで実行を継続させるか、又は、直ぐ後に続く
命令で逐次的に実行を継続させる命令である場合を仮定
する。前者の場合に所謂分岐が行われ、後者の場合に所
謂分岐が行われない。分岐命令は、分岐の際に実行が継
続するアドレスがメモリ又はレジスタに格納された値に
従って動的に変化するインデックス付き分岐命令を含む
ことにより複雑化させられる。しかし、かかるインデッ
クス付き分岐命令に関する説明は特に行わない。従っ
て、分岐命令の後に実行されるべき命令の系列を確実に
知ることは困難である。それにも係わらず、分岐が行わ
れるかどうかを予測するため、90%程度の精度が得ら
れる多数の分岐予測技術が使用される。分岐予測技術を
使用することにより、分岐が行われるかどうかに関する
予測がなされる。予測が正しい場合に実行される命令の
系列がフェッチされ、実行される。しかし、かかる命令
のあらゆる結果は、分岐命令が実際に実行されるまで
は、“不確定”として扱われるに過ぎない。分岐命令が
実行されたとき、予測が正しいかどうかに関する判定が
行われる。分岐命令の結論が正しく予測された場合、上
記の“不確定な結果”が受け入れられる。しかし、分岐
が誤って予測された場合、不確定な結果を回復/廃棄
し、正しい実行のための命令の系列をフェッチすること
により、予測失敗の復旧段階が行われる。
【0012】多数の技術がソフトウェア及び/又はハー
ドウェアを用いて分岐予測を行うため使用される。例え
ば、ソフトウェアコンパイラを使用することにより、分
岐が行われるかどうかに関係したオリジナルのソースコ
ードから予測が行える。予測は、静的(実行中に変化し
ない)であっても、動的(実行中に変化する)でも構わ
ない。二つの動的ハードウェア分岐予測スキームは、ペ
ンティアム(Pentium)(登録商標)プロセッサのように
2ビットカウンタを使用し、或いは、ペンティアム プ
ロ(Pentium Pro) (登録商標)プロセッサのように2重
レベルの分岐ターゲットバッファ使用する。簡単な分岐
ターゲットバッファ技術によれば、各分岐命令は、最
初、分岐が行われない場合が推定される。分岐が行われ
たとき、各分岐命令は実行されるので、実行が分岐され
るアドレスは、例えば、キューとして動作させられた分
岐ターゲットバッファに格納される。次に、各分岐命令
は、命令フェッチサイクルの間に識別される。各命令に
対する分岐は分岐ターゲットバッファキューの先頭のア
ドレスのアドレスから始まることが予測される。このよ
うにして、分岐ターゲットバッファキューの先頭に指定
されたアドレスから始まるアドレスに設けられた少なく
とも1個の命令がフェッチされる。分岐命令が実行され
たときに分岐が行われないならば、予測は間違いであ
る。かかる場合に、分岐予測の失敗復旧が実行され、分
岐ターゲットバッファキューは更新されない。或いは、
分岐命令が行われたときに分岐が行われ、実行の分岐し
たアドレスが分岐ターゲットバッファキューの先頭のア
ドレスに一致しないならば、分岐予測は再び間違う。こ
のような場合、新しいアドレスが分岐ターゲットバッフ
ァキュー(の後尾部)に格納され、分岐予測復旧が行わ
れる。一方、分岐が行われ、実行の分岐したアドレスが
分岐ターゲットバッファキューの先頭のアドレスに一致
するならば、分岐は正確に予測される。アドレスは分岐
ターゲットバッファキューの先頭から除去され、その後
尾部に格納される。
【0013】CISCプロセッサの命令セットは可変長
の命令を含む。メモリ内に端と端を接して間断なく詰め
込まれたならば、個々のCISC命令の開始及び終了
は、各命令の境界に関する予備的な知識又は指標を用い
ることなく、容易に識別することができない。従って、
命令フェッチ動作の間に可変長命令を分離する際に有限
の量の時間が消費される。命令の開始は直前の命令の長
さ(及び終了)が判定されるまで判定することができな
いので、上記有限な時間は、上記の命令分離段階を他の
命令実行段階と重ね合わせることにより容易に回復し得
ない。この欠点は、命令セットアーキテクチャの複雑さ
が増大すると共に(例えば、許容される命令長の数が増
大すると共に)、際立つようになる。
【0014】プロセッサの設計の傾向は、シングルイシ
ュー(single-issue)スカラ式から、高性能、パイプライ
ン、スーパースカラ式システムに移行しているので、多
数の命令の並列デコードの要求が生じる。次の命令は先
行の命令の長さが分かるまでデコードできないので、多
数の可変長命令を並列にデコードすることは困難であ
る。この問題は、スーパースカラ式CISCアーキテク
チャにおいて重要であるが、固定長命令を使用するので
各命令の開始と終了の場所を簡単な方法で判定できるス
ーパースカラ式RISCアーキテクチャの場合に重要で
はない。
【0015】CISCアーキテクチャにおいて、命令キ
ャッシュは、メモリから命令を受け、機能ユニットがそ
の命令を受け入れる容易ができるまで命令を保持するた
め利用される。かくして、命令はデコーダへの入力のた
めより早くフェッチされる。デコーダは実行用の機能ユ
ニットに入力される前に命令をデコードする。インテル
(登録商標)のペンティアム プロ(登録商標)のよう
なスーパースカラ式(例えば、多重機能ユニット)マイ
クロプロセッサの出現は、できる限り多くのクロックサ
イクルの間に各機能ユニットを利用する(機能ユニット
は不必要に休止状態であってはならない)点を強調す
る。これにより、スーパースカラ・パイプライン式環境
において可変長命令をデコードする幾つかのスキームが
開発された。
【0016】プリフェッチ器は、キャッシュ又は主メモ
リから命令をフェッチするため設けられる。プリフェッ
チ器の内容は、典型的に、次の命令がフェッチされるべ
きキャッシュの開始アドレスを示す。プリフェッチ器の
設計は、特定のシステムの場合に見られるように固定長
命令又は可変長命令の利用を考慮して行われる。可変長
命令を利用する従来技術のプロセッサにおいて、命令キ
ャッシュが最初にロードされたとき、プリフェッチ器又
は命令キャッシュは、ワード配列、即ち、任意の命令が
開始、終了する場所を知る方法がない。従って、プリフ
ェッチ器が命令を要求したとき、命令キャッシュは、キ
ャッシュから大きい隣接(連続)したデータワードの系
列をフェッチする必要がある。上記の系列は、所望の命
令の中の全データワードが系列内に含まれることを保証
するため、実現可能な最大長の命令が達成できるよう十
分に大きくしなければならない。残念ながら、このこと
は、プリフェッチ器のキャッシュがキャッシュメモリに
より供給されたデータワードの系列を厳密に調べ、命令
をシステムの他の素子に転送する前に所望の命令よりも
先のデータワードを捨てる必要があることを意味する。
これはスーパースカラ式システムにおける重大な制限で
ある。その理由は、プリフェッチ器が所望の命令の正確
な開始と終了を判定するため数クロックサイクルを使用
する必要があるからである。
【0017】数通りの従来技術がこの問題を扱うため考
えられた。アドバンスドマイクロデバイス(登録商標)
のAMD5K86(登録商標)、インテル(登録商標)
のペンティアム(登録商標)及びペンティアム プロ
(登録商標)プロセッサは、多数の可変長命令を並列に
デコードするため種々のスキームを使用する。AMD5
K86(登録商標)は、x86命令がメモリからフェッ
チされ、命令キャッシュに書き込まれるとき、命令を予
めデコード(プリデコード)する。プリデコードの途中
で、プリデコーダは、バイトをメモリに書き込む前に、
各バイトに5ビットを追加する。上記ビットは、主とし
て、命令内のバイトの状態を示すため使用される。状態
は、特に、バイトが命令の先頭又は末尾にあるかどうか
を記録する。上記プリデコード技術の欠点は、プリデコ
ードビットが命令キャッシュのサイズを著しく増大させ
ることである。AMD5K86(登録商標)のスキーム
において多数のプリデコードビットを収容し、処理する
ため余分なハードウェアが必要になる。この点につい
て、エム スレータ(M. Slater) による“ペンティアム
を超えるべく設計されたAMDのK5(AMD's K5 Design
ed to Outrun Pentium)”、マイクロプロセッサリポー
ト、第8巻、第14号、ページ1,6−11、1994
年10月発行を参照のこと。
【0018】一方、ペンティアム(登録商標)は、命令
キャッシュの各ラインの内部に命令境界を記録する。単
一のクロックサイクルにフェッチされるべきライン境界
を広げる命令を許可するスプリットラインアクセスを維
持するため、境界が記録される。命令が最初にデコード
されたとき、命令の長さが命令キャッシュに送り返され
る。各命令キャッシュディレクトリエントリは、ライン
内部に命令境界のマークを付ける。しかし、かかるディ
レクトリエントリマークが維持され、使用される様子、
即ち、マークのため何ビットが使用されるか、それら
は、データライン、データワード又は命令のいずれに基
づいて割り当たられるのか、それらはどこに記憶される
のか等について、完全に明らかという訳ではない。この
点について、ディー アンダーソン(D. Anderson) 著の
“ペンティアムプロセッサシステムアーキテクチャ(Pen
tium Processor System Architecture) ”、第2版、1
995年発行と、インテルの“ペンティアム プロ(登
録商標)プロセッサマイクロアーキテクチャの旅(A Tou
r of the Pentium Pro Processor Microarchitecture)
”、(http://intel.com/procs/ppro/info/p6 white/in
dex.htm) と、エル グウェンナップ(L. Gwennap)によ
る“インテルのP6は切り離されたスーパースカラ設計
を使用(Intel's P6 Uses Decoupled Superscalar Desig
n)" 、マイクロプロセッサリポート、第9巻、第2号、
ページ9−15、1995年2月発行とを参照のこと。
【0019】
【発明が解決しようとする課題】スーパースカラ式シス
テム用の他のデコーダスキームは、米国特許第5,20
2,967号、第5,337,415号、第5,45
9,844号及び第5,488,745号明細書に記載
されている。上記の全ての特許は、可変バイト長命令に
対し境界情報のプリデコード又は記憶を提供するため、
重要な付加ハードウェア部品を含む。従って、低減され
たハードウェアのコストで並列処理を最大限に利用する
ため、最小の付加ハードウェア部品を用いて多数の可変
長命令を並列形式でデコードする技術が必要である。
【0020】
【課題を解決するための手段】上記及び他の目的は本発
明により達成される。一実施例によれば、可変長命令セ
ットの各命令の開始及び終了を判定するための方法が提
供される。データラインは、例えば、命令キャッシュで
ある第1の記憶領域に格納される。各データラインは、
主メモリの逐次的なアドレスに格納されたデータワード
の系列を構成する。データラインは、主メモリに隣接し
て格納された多数のエンコードされた可変長命令を含
む。第1の記憶領域に格納されたデータラインの各デー
タワードと関係した標識を含む多数の標識が第2の記憶
領域に格納される。各標識は、その関係したデータワー
ドが可変長命令の最初のデータワードであるかどうかを
示す。
【0021】他の実施例によれば、データワードの系列
は、キャッシュに格納された少なくとも1個の逐次的な
データラインからフェッチされる。フェッチされたデー
タワードの系列は、開始データワードと、少なくとも許
容可能な最大長の命令内のデータワードの数とを含む。
複数の標識(即ち、標識のベクトル)が、フェッチされ
た系列の各データワードと関係した標識を含む第2の記
憶領域からフェッチされる。デコードされるべき命令の
系列の区切り記号として標識を使用することにより、デ
ータワードの系列の中の少なくとも1個の重なり合わな
い部分系列が識別され、ここで、データワードの各部分
系列は、異なる逐次的なデコードされるべき命令に含ま
れる。データワードの各部分系列は、別個の命令として
デコードされる。
【0022】例えば、各命令の長さは、区切り記号の標
識を使用することなく、同時に別々に判定される。これ
らの長さは一致するかどうかが判定されるべく標識と比
較される。命令系列は、1個以上の機能ユニットに配付
するため出力される。上記命令系列は、データワードの
フェッチされた系列の開始データワードから始まる最初
の命令と、逐次的に最初のデータの後に続き、フェッチ
された標識のベクトルが判定された長さと一致する1個
以上の命令だけにより先行された他の各命令とを含む。
例えば、置換標識のベクトルが判定された長さから発生
される。置換標識のベクトルを使用することにより、フ
ェッチされた標識のベクトルが判定された長さと一致し
ない少なくとも1個の命令により先行された各可変長命
令は、フェッチされたデータワードの系列から再パーシ
ング(構造解析)され、再デコードされる。
【0023】他の実施例によれば、標識を更新する方法
が提供される。少なくとも1個のデコードされるべき命
令の系列は、第2の記憶領域からフェッチされた標識の
ベクトルを用いて、キャッシュからフェッチされたデー
タワードの系列から識別される。デコードされるべき命
令の識別された系列はデコードされる。命令をデコード
するのと同時に、デコードされるべき命令の系列の各命
令の最初及び最後のデータワードは標識を用いることな
く配置される。上記の長さは、フェッチされた命令の正
確さを照合するため使用される。置換標識がかくして配
置された最初及び最後のデータワードに従って発生さ
れ、得られた標識の代わりに第2の記憶領域に格納され
る。
【0024】例えば、処理システムは、第1及び第2の
記憶領域と共に実現される。プリフェッチ器は、第1の
記憶領域からデコードされるべき命令を含むデータワー
ドの系列を受け、第2の記憶領域から標識のベクトルを
受ける。プリフェッチ器は、多数のデコーダへの同時の
出力に対し1個以上の可変長命令をパーシングするた
め、区切り記号として標識を使用する。プリフェッチ器
は、更に、標識のベクトル及びパーシングされた命令を
命令長照合器に出力する。命令長照合器は、デコーダが
命令をデコードする間に、同時に多数の仕事を行う。命
令長照合器は、標識を使用することなく各命令の長さを
判定する。例えば、命令長照合器は、各命令の長さ(即
ち、最初及び最後のデータワード)を判定するため、デ
ータワードの系列を厳密に調べる。命令長照合器は、単
一サイクル内の多数の命令の長さを同時に判定すること
ができる。命令長照合器は、第2の記憶領域に格納する
ため、長さから判定された標識のベクトルを出力する。
命令長照合器は、更に、標識が命令長と一致しなかった
1個以上の命令により先行された上記命令ワードの再パ
ーシング及び再デコーディングを生じさせる。これは、
新たに判定された標識のベクトルを含む適当な信号を、
プリフェッチ器及びデコーダに出力することにより達成
される。
【0025】
【発明の実施の形態】添付図面を参照して以下の詳細な
説明を読むことにより本発明のより良い理解が得られ
る。図1に示されるように、スーパースカラパイプライ
ン式データ処理システム10は、例えば、命令キャッシ
ュ30、命令プリフェッチ器50、命令長照合器70、
M(M>1)台のデコーダ80、及びN(N>1)台の
機能ユニット100により構成される。処理システム1
0は、データキャッシュ(図示しない)のような他の構
成部品を含んでもよい。機能ユニット100は、受けら
れた命令に基づいて処理システム10の一部を制御す
る。機能ユニット100の例はALU及びFPUである
が、機能ユニットは命令を実行する装置であれば、どの
ような装置でも構わない。
【0026】例えば、処理システム10は、命令境界メ
モリ20及びタグメモリ40を更に含む。命令境界メモ
リ20、命令キャッシュ30及びタグメモリ40は、単
一のメモリ構造の記憶領域、又は、命令境界メモリ20
と命令キャッシュ30とタグメモリ40とに対し別々に
アクセス可能なメモリ回路の記憶領域として実現され
る。例えば、命令キャッシュ30は、各々が同じバイト
数、例えば、16バイトからなる固定長のキャッシュラ
イン記憶場所に構造化される。タグメモリ40は、命令
キャッシュ30の各キャッシュライン記憶場所に対応し
て1個のタグ要素を含むタグの配列を有する。各タグ要
素は、対応した記憶場所が、無効データ、変更されてい
ない有効データ、変更された有効データ等を含むかどう
かを示す標識(ビット)を含む。キャッシュ及びデータ
ラインの“支配権”、書き送りスキーム及びメモリ整合
性の動作の説明は、本発明の範囲を超えているが、名称
“I/Oデバイスと主メモリとの間でデータを転送する
メモリの矛盾の無い先行の支配方法及びシステム(Memor
y Consistent Pre-Ownership Method and System forTr
ansferring Data Between an I/O Device and a Main M
emory) ”の米国特許出願第08/071,721号明
細書に記載されている。命令境界メモリ20は以下に詳
細に説明する。更に、分岐ターゲットバッファ60がプ
リフェッチ器50に接続される。分岐ターゲットバッフ
ァ60は、分岐命令の結果を推定し、ある状況下で上記
命令の付加的な並列化を可能にする。
【0027】1.命令境界及び命令キャッシュ配列の構
造 例えば、命令キャッシュ30は、図6に示されているよ
うに、データワード(例えば、バイト)のV×Uの2次
元のバイト配列300を有する。命令キャッシュ配列3
00は、V個のデータワード(例えば、バイト)のライ
ンサイズを伴うU個のデータライン格納場所を有する。
命令キャッシュ配列300の各キャッシュライン内の最
上位データワードは、バイトV−1(310)である。
命令キャッシュ配列300の各キャッシュライン内の最
下位データワードは、バイト0(301)である。命令
キャッシュ配列300の最上位キャッシュラインは、ラ
インU−1(359)である。命令キャッシュ配列30
0の最下位キャッシュラインは、ライン0(351)で
ある。
【0028】命令は、メインメモリから(命令が潜在的
に2本以上のデータラインに拡がる場合を想定して)デ
ータライン全体又は命令を含むデータラインを読み、デ
ータラインを命令キャッシュのキャッシュライン格納場
所に書き込むことによりロードされる。例えば、命令は
1乃至6個のデータワード長、各アドレスは16ビット
長、データラインのサイズVが16バイトである場合を
想定する。アドレス0001 0000 0000 0010 即ち、409
8の命令を実行すべきであるが、命令キャッシュ30に
その命令が存在しない場合を考える。この場合に、デー
タワード4096乃至4111を含むデータライン40
96の全体が主メモリから読み出され、命令キャッシュ
30の例えばキャッシュラインXに格納される。命令の
第1のデータワードは、命令キャッシュ配列300に格
納されたデータラインの第3のデータワードであること
が予め分かる。しかし、逐次的に続く命令の第1のデー
タワードがアドレス4099、4100、4101、4
102、4103又は4104で始まるかどうかは、ア
ドレス4098から始まる命令の長さ(即ち、最後のデ
ータワード)が判定されるまで分からない。
【0029】このため、命令境界メモリ20は、図5及
び図7乃至図9に示されているように、V×Uの標識の
2次元配列400を有する。例えば、各標識は単一ビッ
トで実現してもよい。命令境界メモリ400の各標識
は、命令キャッシュ配列300内の固有のデータワード
格納場所に対応する。例えば、0≦u≦Uかつ0≦v≦
Vであるとき、u=0、v=0なる標識は、命令キャッ
シュ配列300の位置0のキャッシュライン0に格納さ
れたデータワードに対応し、u=0、v=1なる標識
は、命令キャッシュ配列300の位置1のキャッシュラ
イン0に格納されたデータワードに対応し、以下同様で
ある。8キロワードの命令キャッシュ配列300に対
し、必要な境界情報を保持するため1キロの標識(1キ
ロビット)が標識配列400内に要求される。標識配列
400内の各標識は、対応する命令キャッシュ配列30
0内のデータワードが命令の最初又は第1のデータワー
ドであるかどうかを指定するため使用される。データワ
ードが命令の中の最初のデータワードであるならば、対
応する標識配列400内の標識ビットは、例えば、1に
設定され、そうでなければ標識配列400内の標識ビッ
トは0に設定される。
【0030】命令境界メモリ20がプリフェッチ器50
に書き込む境界情報は、命令キャッシュ30によりプリ
フェッチ器50に転送されたデータワードの系列内の各
データワードに対応する1個の標識ビットを含む標識の
ベクトルの形をなす。標識のベクトルは、“0”標識ビ
ットと“1”標識ビットの系列により構成され、第1の
“1”標識ビットは、命令キャッシュ30により出力さ
れたデータライン内の命令の最初のデータワードの場所
に対応する。現在の命令の長さは、(現在の命令の第1
のデータワードを示す)現在の命令に対する“1”の値
が付けられた標識と、(本当に次の命令の第1のデータ
ワードを示す)本当に次の命令の“1”の値が付けられ
た標識ビットとの間仕切りに対応する。プリフェッチ器
50は、命令境界メモリ20から標識のベクトルを受
け、現在要求されている命令の境界を識別するため標識
のベクトルを使用する。例えば、プリフェッチ器50
は、第1の値“1”が与えられた標識ビットを配置する
ため、標識のベクトルをパーシングする。第1の値
“1”が与えられた標識ビットは実行されるべき本当に
次の命令の最初又は第1のデータワードに対応する。プ
リフェッチ器50は、次に、第2番目に生じる値“1”
が与えられた標識ビットを、データラインに格納される
ような直ぐ後に続く命令の第1のデータワードを示す標
識ベクトルに配置する。かかる情報を使用することによ
り、プリフェッチ器50は、命令の長さ、及び、より重
要な最後又は末尾のデータワードを判定することができ
る。先頭及び末尾の記憶場所が識別された後、完全な命
令を構成するデータワードが分かる。例えば、プリフェ
ッチ器50は、多数の可変長命令を各サイクルで同時に
(即ち、並列に)パーシングすることができる。
【0031】2.命令境界メモリの動作 命令を実行し、命令境界メモリ20を更新する処理は図
2及び図3のフローチャートにより説明される。ステッ
プ202において、プリフェッチ器50は、命令キャッ
シュ30からの(2個以上の命令を含む)データワード
の系列を要求する。“リードミス”があったならば、キ
ャッシュコントローラ(図示しない)は、主メモリ(図
示しない)から要求されたデータワードの系列を含む2
個以上のデータラインを取り出す。命令キャッシュ30
内に“リードヒット”があったならば、図2のステップ
204に従って、命令キャッシュ30は、命令全体が確
実に含まれるのに十分な大きさがある命令キャッシュ配
列300の隣接したデータワードの系列をフェッチす
る。かかる系列は、命令キャッシュ30のキャッシュラ
イン内の特定のオフセットからの全てのデータワード
と、直ぐ次のキャッシュラインの最初の数個のデータワ
ードの中の2個以上のデータワードとを含む。ここで、
“次”は、データラインのアドレスに関して判定され、
必ずしも命令キャッシュ配列300内の隣でなくてもよ
い。デコーダ80によるデータワードの消費レートは、
プリフェッチ器50によるデータワードの作成レートと
一致する必要がない点に注意すべきである。かかる場合
に、プリフェッチ器50は、先にフェッチされた命令の
データワードがデコーディングのため提示される間に格
納されるバッファを有する。一実施例において、プリフ
ェッチ器50のバッファ内のデータワードの占有がある
レベルよりも低下したとき、プリフェッチ器50は命令
キャッシュ30から一定数のデータワードをフェッチす
る。プリフェッチ器50は、直ぐ次の命令の第1のデー
タワードを配置し、デコーダ80によりデコーディング
のため出力されたデータワードの系列が隣接することを
保証するため、例えば、バッファ内のデータワードを
“回転”させ、詰め込む。フェッチされたデータワード
の系列は、例えば、少なくとも最大の許容可能な長さの
命令と同じ長さである。データワードがフェッチされる
のと同時に、命令境界メモリ20は、図2のステップ2
04を完了するため、境界情報を標識のベクトルの形式
でプリフェッチ器50に出力する。
【0032】図2のステップ206において、プリフェ
ッチ器50は、データワードの系列から2個以上の可変
長命令を同時にパーシングして出力する。その動作を行
う際に、プリフェッチ器50は、得られた情報を別々の
命令に分割するため、標識のベクトルを調べる。上記の
如く、プリフェッチ器50は、実行されるべき直ぐ次の
命令の第1のデータワードと、直後に続く命令とを判定
するため、第1番目及び第2番目に生じる値“1”が与
えられた標識ビットを探して標識を調べる。データワー
ドをパーシングして出力された上記情報は、第1の命令
に対応する。同様に、プリフェッチ器50は、直後に続
く命令の末尾又は最後のデータワードを判定するため第
3番目に生じる値“1”が与えられた標識ビットを探索
し、以下同様である。かかる“探索”は、例えば、直線
的には行われず、むしろ、標識のベクトルを、データワ
ードの系列を2個以上の別個の命令の系列に抽出/パー
シングする適当な論理回路に入力することにより行われ
る。上記回路は、当業者の技術の範囲内にあり、簡単の
ためここで再検討を行わない。かくしてパーシングされ
た各命令は、夫々のデコーダ80に出力される。例え
ば、4台のデコーダ80があるならば、4個のデータワ
ードの系列がパーシングして出力される。かくしてパー
シングされ、又は、分割された全ての命令は、標識のベ
クトルと共に命令長照合器70に出力される。図示され
るように、デコーダ80によるデコーディングと、命令
長照合器70による命令長(より詳細に言うと、標識の
ベクトルの正確さ)の照合とが並列に行われる。
【0033】図2のステップ208において、各デコー
ダ80は、プリフェッチ器50により供給された命令を
デコードしようとする。ステップ208と並列に行われ
るステップ209において、命令長照合器70は、プリ
フェッチ器50により供給された命令に対する正しい命
令長を照合する。特に、命令長照合器70は、データワ
ードの系列から各命令を抽出し、かくして抽出された最
初又は第1番目のデータを記録する。命令長照合器70
は、多数の命令の長さを同時(即ち、並列)に照合し得
る。例えば、4台のデコーダ80があるならば、プリフ
ェッチ器は、好ましくは、4個のデータワードの部分系
列をパーシングする。上記の4個の部分系列は、データ
ワードの部分系列に含まれる各命令の長さを同時に判定
する命令長照合器70に並列に受けられる。かくして判
定された命令の長さは、各命令の境界を識別する。命令
長照合器70により発生させられた照合後の命令情報
は、命令境界メモリ20により出力された標識のベクト
ルと類似した標識のベクトルの形に形成される。正確な
照合後の境界情報は、命令長照合器70から命令境界メ
モリ20に書き込まれる。書込みの回数を削減するた
め、命令長照合器70は、命令境界メモリ20から受け
た標識がエラーを含む場合に限り、命令境界メモリ20
の標識を書き換える。
【0034】命令境界メモリ20からプリフェッチ器5
0に最初にフェッチされた標識のベクトルは、対応する
データワードがフェッチされたデータワードの系列に含
まれる命令の第1のデータワードであるかどうかを正確
に示すという保証がない点に注意が必要である。かかる
不確実さは何通りかの状況で発生する。第1の状況は、
命令データワードが実行中にそのままの状態を維持する
ことが要求されない場合(例えば、自己修正コード)で
ある。第2の状況は、命令キャッシュ30内のデータラ
インに対するキャッシュライン格納場所が、書き直し又
はキャッシュフラッシングスキームに従って別のデータ
ライン(即ち、主メモリの別の場所)から上書きされる
場合である。このような場合に、対応する標識のベクト
ルはリセットされ、即ち、命令キャッシュ30のキャッ
シュライン格納場所と関係した各標識ビットは値“0”
にリセットされる。何れにしても、命令境界情報は新た
に書かれたデータラインに対し利用できない。従って、
標識ビットの現在の値がキャッシュのキャッシュライン
格納場所に含まれた命令の境界を正確に反映する可能性
は間違いなくない。第3の状況は、CPU10が初期化
されたとき、配列400に格納された標識がリセットさ
れた場合である。キャッシュは、データラインに基づい
てデータのフラッシュ又は書き直しを行い、一方、プリ
フェッチ器50に供給されたデータの系列及び標識の各
ベクトルは、夫々のデータラインの内部で整列され、又
は、命令キャッシュ30の単一のキャッシュライン格納
場所の内部に完全に収容される必要がないので、上記ス
キームは非常に複雑になり得ることに注意が必要であ
る。更に、分岐ターゲットバッファ60は実行された分
岐命令の予測結果を絶えず出力することに注意が必要で
ある。かかる予測は、例えば、命令キャッシュ30から
フラッシュされ、又は、他のデータラインにより上書き
される等により無効にされたデータラインに実行が分岐
するので、たとえ稀であるとしても、上記の第2の状況
の発生を増加させることを示す可能性がある。
【0035】命令の開始及び終了データワードは、デー
タラインの境界と並べる必要はないことに注意すべきで
ある。これは、可変長命令の隙間のない詰め込みと、デ
ータライン内のあらゆるデータワードから始まる命令へ
の分岐を生じる分岐命令との作用である。上記の如く、
プリフェッチ器50は、データラインの中間から始まる
不連続的なデータワードの系列をフェッチし得る。プリ
フェッチ器50がそのように動作するとき、プリフェッ
チ器50はかかるデータラインの開始データワード位置
を記録する必要がある。命令長照合器70が境界標識の
ベクトルを判定した後、境界標識のベクトルは、プリフ
ェッチ器50に格納された開始データワード位置を用い
て命令境界メモリ20を書き換える。フェッチされたデ
ータワードの系列が2個以上のデータラインに拡がる場
合、例えば、境界標識のベクトルを書き換えるため、フ
ェッチされたデータワードの系列が拡がる各データライ
ンに対する1回の書込みからなる多重の書込みが必要で
ある。多数のデコーダ80は、フェッチされたデータワ
ードの系列の長さ、即ち、フェッチされたデータワード
の系列が拡がるデータラインの個数を増加させ得る場合
を想定する。これにより、標識のベクトルを書き換える
際に、命令長照合器70により行われる書込み動作の回
数が増加される。標識のベクトルを格納するため多重の
書込みが必要であり、かつ、命令境界メモリ20が十分
に高速ではないので係属中の各書込み動作を実行できな
いならば、バッファは書込みを係属したままの状態にし
なければならない。勿論、バッファリングは、たとえ、
並列デコーディングの可能性を低下させるとしても、全
くエラーを発生させない。同様に、得られた境界標識の
ベクトルが命令長照合器70により正確であることが照
合されたならば、命令境界メモリ20を更新する必要が
ない。これにより、命令境界メモリ20に関して行われ
る書込みの回数が削減される利点が得られる。
【0036】更に、出力された標識のベクトルは、完全
なデータラインに対応する全ての標識ではなく、デコー
ディングのため得られたデータラインの一部に対応する
標識しか含まない点に注意が必要である。例えば、かか
る部分的な更新が行えるような回路が与えられる。ステ
ップ210によれば、命令長照合器70は、プリフェッ
チ器50により与えられた境界情報(即ち、命令境界メ
モリ20により最初に供給された標識のベクトル)を、
命令長照合器70により判定されたような確認された命
令の長さと比較する。最初に、照合された命令長がプリ
フェッチ器50により供給された境界情報を確認する場
合を考える。例えば、命令長照合器70により判定され
たような先頭のデータワード及び命令長が、命令境界メ
モリ20により最初に出力された標識のベクトルによっ
て指定された先頭のデータワードと一致する場合を考え
る。このような場合、命令長照合器70は、第1のデコ
ードされた命令、或いは、命令長照合器70により判定
された命令長がデコードされた命令をパーシングするた
め使用された標識と一致する命令だけが先行したデコー
ドされた命令を受ける各デコーダ80にイネーブル(使
用可能状態)信号を出力する。上記イネーブル信号は、
ステップ214に従って上記デコードされた命令をディ
スパッチ論理回路90に転送するため上記デコーダ80
を使用可能状態にさせる。
【0037】次に、命令長照合器70により判定された
命令長が命令境界メモリ20からフェッチされた境界情
報と適応又は一致しない場合を想定する。即ち、境界情
報は、失われているか、不完全であるか、又は、不正確
である。このような場合に、命令長照合器70は、ステ
ップ212に従って、命令長照合器70により判定され
た長さと一致しない標識を用いてパーシングされた2個
以上の命令により先行された命令を受ける各デコーダ8
0にディスエーブル(使用禁止状態)信号を出力する。
【0038】第1のデータワードの系列の最初のデータ
ワードは、データワードの系列がパーシングされた最初
のデータワードであることに注意する必要がある。かく
して、最初のデータ系列から形成された第1の命令の最
初のデータワードは、常に正確に並べられる。従って、
第1の命令は、最初のデータ系列を受けるデコーダ80
により常にデコードされる。更に、最初の系列に続く第
2のデータワードの系列の中の最初のデータワードを第
2の命令の開始と正確に並べるとが可能である。かかる
場合に、第1及び第2の命令は、夫々のデコーダ80に
よりデコードされ、以下同様である。一般的に言うと、
第1の整列されていないデータワードの系列は、命令長
照合器70により識別される。上記第1の整列されてい
ないデータワードの系列は、最初にパーシングされたデ
ータワードの系列ではあり得ないことに注意が必要であ
る。命令長照合器70は、次に、上記整列されていない
データワードの系列をデコードするデコーダ80と、上
記第1の整列されていないデータワードの系列の後にパ
ーシングされたデータワードの系列を受ける各デコーダ
80とを使用禁止状態にする。これは、上記第1の整列
されていないシーケンスの後にパーシングされた全ての
データワードの系列も整列されていないと考えられるか
らである。
【0039】適当なデコーダ80を使用禁止状態にする
ことは、多数の方法で実現される。例えば、パーシング
された命令ワードが一連のデコーダ80に出力される。
もし、デコーダ80の中の1台が整列されていないデー
タワードの系列を受けたために使用禁止状態にされるべ
きであるならば、逐次的にパーシングされたデータワー
ドを受ける各デコーダ80も使用禁止状態にされる。例
えば、これは、ディスエーブル信号を(逐次的に続くデ
ータワードの系列を受ける)逐次的に続くデコーダ80
に通知する使用禁止状態にされたデコーダ80により達
成される。かかるディスエーブル信号は、そのデコーダ
から、逐次的に続く命令を受けた次のデコーダ80に伝
搬し、以下同様である。命令長照合器70は、更に、プ
リフェッチ器50による上記(更新された)境界情報を
使用した上記データワードの系列からの命令の再パーシ
ングと、再パーシングされた情報のデコーダ80への出
力とを同時に行わせる。正確な境界情報が、このステッ
プにおいて、命令長照合器70によりプリフェッチ器に
転送されることに注意が必要である。
【0040】ステップ216では、境界情報は正確であ
り、有効な命令はデコーダ80によりデコードされ、ス
テップ214によりデコードされた命令がディスパッチ
論理回路90に書き込まれていることが仮定される。ス
テップ216において、ディスパッチ論理回路90は、
デコードされた各命令を実行すべき機能ユニット100
を判定する。浮動小数点演算を実行する命令、分岐条件
テスト及びアドレス罫線を実行する命令等のような上記
命令に依存して、特定の機能ユニットが利用される。ス
ーパースカラプロセッサは、少なくとも1台の機能ユニ
ット100を含む。その場合に、少なくとも1台の機能
ユニット100が、可能であれば命令を並列に実行する
ため同時に選択される。複数台の機能ユニット100は
同一の機能を維持することが可能であり、或いは、機能
ユニット100のある部分集合が重なり合う機能の部分
集合を維持することが可能である。2台以上の機能ユニ
ット100が頻繁に使用される命令を同時に実行し、こ
れにより命令レベルの実行の並列化を増加させる方が有
利である。機能ユニット100が選択された後、ディス
パッチ論理回路90は、デコードされた命令を上記機能
ユニット100に転送する。ステップ218によれば、
機能ユニット100はデコードされた命令を実行する。
ステップ220において、上記の処理は、要求された全
ての命令が実行されるまで繰り返される。
【0041】ステップ202乃至220は逐次的に示さ
れているが、パイプライン式処理のパラダイムに従って
並列した夫々のユニットにより実行してもよい。
【0042】
【実施例】以下、命令境界メモリ20の構造、機能及び
更新の最良の例を説明する。 A.電源投入時又は命令キャッシュデータラインの置換
時 データラインタグ配列40及び標識配列400内の全て
の有効な標識は、電源投入後に、“0”にリセット(即
ち、“クリア”)される。クリアされた標識配列は図5
に示され、クリアされたデータラインタグ配列は図4に
示される。更に、命令キャッシュライン359のような
命令キャシュラインが置換され、或いは、無効のマーク
が付けられたとき、対応した標識配列の行459のよう
な対応する標識のベクトルは、“0”にリセットされ
る。
【0043】B.命令の初期フェッチ及び標識配列の初
期ローディング この例の場合、命令キャッシュ配列300は、図6に示
されたような命令でロードされる。図6のキャッシュ配
列のライン351、354乃至356には、種々の命令
が示されている。図6のキャッシュライン359には、
全く命令が収容されていない。これは、対応するデータ
ラインタグ配列40内の有効/無効ビットがクリアさ
れ、キャッシュライン359が無効データを含むことを
示すためである。キャッシュライン359は、理論的に
は、無効かつ意味のない任意のデータを格納することが
できる。明瞭さと簡単のため、キャッシュライン359
は、値0が与えられたデータだけを含む場合が示され
る。各命令は、キャッシュ配列300の隣接した一つ以
上のキャッシュライン内のデータワードに収容される。
例えば、命令は、逐次的に順序付けされ、隣接したライ
ン355、356を占有するように示されている。例え
ば、図6において、1個の5データワード命令は、デー
タラインu=X(355)のデータワードv=V−2
(309)から始まり、データラインu=X+1(35
6)のデータワードv=2で終了する。先行する命令、
即ち、上記の5データワード命令の前に現れた命令は、
データラインu=X(355)のデータワードv=V−
3(308)で終了し、データラインu=X(355)
のデータワードv=1(302)から始まる。上記の5
データワードの後の命令は、図6に示されているよう
に、ラインu=X+1(356)のデータワードv=3
(図示しない)から始まり、ラインu=X+1(35
6)のデータワードv=V−2(309)で終了する。
しかし、この方法は、命令がキャッシュに格納する唯一
又は典型的な方法ではない。それどころか、命令の系列
を含むデータラインは、特に、キャッシュの構造(例え
ば、セット−連合)及び置換の方式に依存して、命令キ
ャッシュ300の逐次的ではない、又は、隣接しないキ
ャッシュライン格納場所でも構わない。
【0044】実行が開始されたとき、プリフェッチ器5
0は、(図示しないプログラムカウンタから利用可能
な)実行されるべき現在の命令の第1のデータワードの
メモリアドレスだけが供給される。データワードの個
数、又は、直ぐ隣の命令の最後のデータワードのアドレ
スに関する情報は提供されず、何れかの後続の命令の第
1のデータワードのアドレスに関する情報は得られな
い。従って、プリフェッチ器50は、少なくとも命令中
に与えることができる最大のデータワード数がフェッチ
されるように、第1のデータワードと、第1のデータワ
ードの次に続くデータワードの個数とを含むデータワー
ドの系列を要求することにより、5データワード命令だ
けが得られる。この場合、系列は、キャッシュラインX
(355)のデータワードV−2(309)からキャッ
シュラインX+1(356)のデータワード3(図示し
ない)までのデータワードを含むと考えられる。
【0045】命令キャッシュ30が命令をプリフェッチ
器50に転送するのと同時に、命令境界メモリ20は、
プリフェッチ器50に転送された命令キャッシュ配列3
00内の各データワードに対応する標識のベクトルを転
送する。しかし、上記例の場合に、標識配列400は、
全ての標識が“0”に設定された電源投入時の状態、又
は、クリアされた状態を維持する。従って、上記例にお
いて、(行X(455)のビットV−2の標識から、行
X+1(456)のビット3(図示しない)の標識まで
の)全ての標識ビットは、現時点で“0”に設定され、
要求された命令に対し境界情報が得られないことを示
す。
【0046】上記の如く、プリフェッチ器50は、それ
が正確な情報を有するかどうかを判定することができな
い。それどころか、標識ビットは論理回路に供給され、
そこで、(上記例の場合に誤りがあるにも係わらず)上
記標識を命令が終了する場所(多重の命令の場合には、
それらが始まる場所)に関する区切り記号として用いて
受けられたデータワードの系列から要求された命令を抽
出する。間違ってパーシングされた所望の命令のデータ
ワードは、デコーダ80の中の1台に出力される。しか
し、第1の命令の中の第1のデータワードは分かってい
ることに注意する必要がある。かくして、上記第1のデ
ータワードから始まるデータワードの部分系列を受ける
一次デコーダ80は、たとえ標識が間違っている場合で
も、上記の如く第1の命令をデコードすることができ
る。
【0047】デコータ80が命令をデコードしている間
に、命令長照合器70は、プリフェッチ器50により供
給された命令が正しくパーシングされたかどうかを、そ
の命令の長さを標識ビット内の命令境界情報と照合する
ことにより判定する。そのため、命令長照合器70は、
各デコーダ80に出力された命令及び標識を受ける。命
令長照合器70により、標識は命令を正確に区切ること
が別個の命令長の照合に基づいて判定されたならば、命
令長照合器70は、デコードされた命令をディスパッチ
論理回路90に出力するため全てのデコーダ80を使用
可能状態にさせる。この場合、標識はデコーダ80によ
りデコードされた命令の長さを正確に示さない。かくし
て、命令長照合器70は、第1の命令を受ける一次デコ
ーダ80を除く、命令の最初のデータワードと並べられ
ないデータワードの系列が供給されたデコーダ80にデ
ィスエーブル信号を出力する。一方、一次デコーダ80
は、第1の命令の第1のデータワードと並べられた第1
の命令のデータワードの系列が供給される。一次デコー
ダ80に最大長の命令と長さが等しいデータワードの系
列が供給されるならば、一次デコーダ80は、標識が正
しいかどうかとは無関係に常に第1の命令をデコードす
ることができる。同様に、第1の命令の長さは正しいと
して照合され、第2の命令の長さが正しいと照合されな
かった場合を想定する。この場合、第2の命令のデータ
ワードの系列は、それにもかかわらず、(たとえ第3の
命令のデータワードの系列が第3の命令と並べられない
としても)第2の命令の始めと揃えられる。第1及び第
2の命令は、共に、夫々のデコーダ80によりデコード
され、以下同様である。
【0048】使用禁止状態にされたデコーダ80は、デ
コードされた命令をディスパッチ論理回路90に出力す
ることを止める。命令長照合器70は、標識配列400
への格納用の正しい標識のベクトルを命令境界メモリ2
0に出力する。補正された標識ビットは、命令長照合器
70が長さを照合し得ず、デコードされなかった少なく
とも1個の命令により先行された上記命令をプリフェッ
チ器50に再パーシングさせる信号と共に、プリフェッ
チ器50に出力される。
【0049】データワード記憶場所を開始する命令と、
適当な標識ビットベクトルとを命令長照合器70から受
けた後、命令境界メモリ20は標識ビットベクトルを適
当な場所に格納する。この場合、行u=X(455)上
の標識ビットv=V−1(410)及びV−2(40
9)と、ラインu=X+1(456)上の標識ビットv
=0乃至v=2(図示しない)は、夫々、’01’及
び’000’に変更される。換言すれば、第1の命令は
5データワード長であることを反映させるため、標識が
更新される。命令長照合器70は、例えば、1キャッシ
ュラインずつに基づいて、上記の更新を行う。かくし
て、キャッシュラインXの最上位2バイトに対し判定さ
れた標識ビットの部分系列’01’は、直ぐに更新され
る。このことは図8に示されている。しかし、命令長照
合器70は、例えば、キャッシュラインX+1内の処理
されるべき全てのデータワードがデコードされ、それに
対し標識ビットが得られるまで、標識ビットの部分系
列’000’の更新を延期する。これは、図9に示され
る。例えば、標識ビットの更新は、キャッシュラインの
最後のデータワードがデコードされるまで、或いは、他
のキャッシュライン内の命令への分岐が行われるまで延
期される。何れにしても、特定のキャッシュライン内の
データワードのデコードは止められる。上記のような時
まで、標識ビットが生成されると、命令長照合器70に
よりキャッシュラインに対するベクトルビットの系列を
形成するためその時点で未だ更新されていない標識ビッ
トに連結される。
【0050】命令の再パーシングの際に、プリフェッチ
器50は、命令長照合器70により供給されるような正
確な境界情報を使用する。かくして、命令照合器70に
よる引き続く比較は、命令が正しいということを示す。
その場合、命令長照合器70は、機能ユニット100に
よる引き続く実行のため、夫々のデコードされた命令長
が照合された各デコーダ80に、再デコードされた命令
をディスパッチ論理回路90に出力するよう指示する。
同時に、命令長照合器70は、プリフェッチ器70に、
現在の命令が有効であり、次の命令を処理するよう知ら
せる。
【0051】命令キャッシュ30から種々の命令をフェ
ッチ及び再フェッチする処理において、命令長照合器7
0は、命令境界メモリ20を徐々に更新する。上記の説
明では簡単のため、単一の命令だけがフェッチされ、デ
コードされることに注意が必要である。多数の命令がプ
リフェッチ器50によって同時にフェッチされ、デコー
ドされる方が有利である。かくして、漸増的な境界情報
の判定が非常に高速に得られる。命令キャッシュ30内
の全ての命令がフェッチされ、命令長照合器70により
その長さが少なくとも1回判定されたならば、上記の命
令に対する全ての境界情報が命令境界メモリ20に得ら
れる。図9には、図6に示された命令キャッシュ配列3
00に格納された各命令に対する境界情報を含む標識配
列400が示される。上記の如く、本発明は、命令の参
照特性の空間的及び時間的な局在性を非常に有利に利用
する。プロセッサの命令キャッシュ30内の“ヒット”
率は、通常90%を超えるという事実を仮定するなら
ば、多数の命令の並列デコーディングのため本発明を用
いる成功率は非常に高い。
【0052】C.命令境界メモリ情報を用いた命令の実
行 この例では、命令キャッシュ配列300は、前の例から
変更されないままの状態である。命令キャッシュ配列3
00の内容は図6に示される。しかし、命令キャッシュ
30の各命令は、少なくとも1回フェッチされているの
で、境界情報配列20内の境界情報は、対応する命令キ
ャッシュ配列の各命令の開始(及び終了)を正確に反映
している。標識配列400の命令境界情報は図9に示さ
れる。標識配列400に配置された正確な情報の状況
は、典型的に、スーパースカラ処理システムにおける命
令の参照特性の時間的及び空間的局在性に起因する。
【0053】上記の如く、種々の命令が、図6のキャッ
シュ配列データライン記憶場所351、354乃至35
6に示される。図6のデータライン記憶場所359には
命令が収容されていない。各命令は、キャッシュ配列3
00の1個以上のデータライン記憶場所内の隣接したデ
ータワード内に収容される。例えば、図6において、1
個の5データワード命令は、データライン記憶場所X+
1(356)のデータワード2(303)で終了し、デ
ータライン記憶場所X(355)のデータワードV−2
(309)から始まる。上記の5データワード命令の前
の命令は、データライン記憶場所X(355)のデータ
ワードV−3(308)で終了し、データラインX(3
55)のデータワード1(302)から始まる。上記の
5データワード命令の後の命令は、データライン記憶場
所X+1(356)のデータワードV−2(309)で
終了し、データラインX+1(356)のデータワード
3(図示しない)から始まる。
【0054】前の例と同様に、プリフェッチ器50が5
データワード命令を要求するとき、プリフェッチ器50
は、データライン記憶場所X+1(356)のデータワ
ード3(図示しない)から、例えば、データライン記憶
場所X(355)のデータワードV−2(309)まで
のデータワードの系列を要求することにより、その要求
を行う。これは、フェッチされたデータワードから最長
の命令ワードが抽出可能であることを保証する。
【0055】命令キャッシュ30が命令をプリフェッチ
器50に出力するのと同時に、命令境界メモリ20は、
命令キャッシュ配列300から出力されたデータワード
の系列に対応する標識のベクトルをプリフェッチ器50
に出力する。この例では、図9に内容が示された標識ベ
クトル配列400は、要求された命令の先頭と、直ぐ次
の命令の先頭とを示す2個の“1”ビットを含む。プリ
フェッチ器50は、データワードの系列から次の命令を
パーシングするため、標識のベクトル、特に、“1”標
識ビットの相対位置を使用する。命令境界メモリ20に
より供給された境界情報を使用することにより、特に、
多重命令が並列にフェッチされるべき場合に、要求され
た命令を取得し、その命令をデコーダ80に与えるため
必要な時間が著しく短縮される。標識のベクトルが、部
分系列内の各命令の区切り記号を示し、各命令を同時に
パーシング又は分割するため使用できる仮定する。
【0056】デコーダ80がプリフェッチ器50により
パーシングされた命令をデコードする間に、命令長照合
器70は、プリフェッチ器50により与えられた命令の
長さを標識のベクトルに対し照合する。上記命令に先行
する命令が、命令長照合器70により(データワードの
系列だけから)独立に判定されたような対応する長さ
が、標識のベクトルにより指定されたような命令境界と
一致する命令だけであるならば、命令長照合器70は、
上記命令を受けたデコーダ80をデコードされた命令を
ディスパッチ論理回路90に出力させるため使用可能状
態にする。上記例では、単一の命令をパーシング、デコ
ーディング、照合する場合が説明されることに注意が必
要である。命令長照合器70は、任意のサイクルで、プ
リフェッチ器50により出力されたパーシングされた各
データワードの系列の長さを同時に照合することが可能
である。
【0057】以上の説明は、本発明の一実施例の配置及
び動作の説明である。本発明の範囲は、上記の実施例と
共に、当業者に明らかな他の実施例を含むことが意図さ
れる。
【図面の簡単な説明】
【図1】本発明のディジタル処理装置の概要図である。
【図2】本発明のディジタル処理装置の動作を表わすフ
ローチャートである。
【図3】本発明のディジタル処理装置の動作を表わすフ
ローチャートである。
【図4】クリア(電源投入)状態のタグ配列に格納され
たデータラインタグの配列を表わす図表である。
【図5】クリア(電源投入又はリフレッシュ)状態の命
令境界メモリに格納された標識の配列を表わす図表であ
る。
【図6】命令が命令キャッシュに書き込まれた後に、命
令キャッシュに格納されたデータワードの配列を表わす
図表である。
【図7】命令が命令キャッシュにロードされた後に、命
令境界メモリに格納された標識の配列を表わす図表であ
る。
【図8】ある命令に対する境界情報が判定された後に、
命令境界メモリ内の標識の配列を表わす図表である。
【図9】境界情報が命令キャッシュ内の全命令に対し判
定された後に、命令境界メモリ内の標識の配列を表わす
図表である。
【符号の説明】 10 スーパースカラパイプライン式データ処理装置 20 命令境界メモリ 30 命令キャッシュ 40 タグメモリ 50 命令プリフェッチ器 60 分岐ターゲットバッファ 70 命令長照合器 80 デコーダ 90 ディスパッチ論理回路 100 機能ユニット 300 バイト配列 400 標識配列
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06F 9/38 G06F 9/32

Claims (24)

    (57)【特許請求の範囲】
  1. 【請求項1】 単一サイクル中に可変長の多数の命令を
    デコードし、実行するプロセッサにおいて、各命令の始
    め及び終わりを判定する方法であって、 (a)主メモリの逐次的なアドレスに格納されたデータ
    ワードの系列により構成され、上記メモリ内に隣接して
    格納された多数のエンコードされた可変長命令を含む各
    データラインを、キャッシュに格納する段階と、 (b)上記データラインの各データワードに関係し、上
    記関係したデータワードが可変長命令の最初のデータワ
    ードであるかどうかを示す標識を含む複数の標識をメモ
    リに格納する段階とからなる方法。
  2. 【請求項2】 (c)何れのデータワードも可変長命令
    の最初のデータワードであることを示さないようにする
    ため、上記プロセッサの初期化に応答して、上記メモリ
    に格納された上記標識をリセットする段階を更に有する
    請求項1記載の方法。
  3. 【請求項3】 (c)上記キャッシュの1個以上のデー
    タラインの隣接したデータワードの系列をフェッチし、
    上記フェッチされた部分系列の上記各データワードと関
    係した標識を含む標識のベクトルをフェッチする段階
    と、 (d)上記ベクトルの上記標識を上記フェッチされたデ
    ータワードの部分系列に含まれた隣接したデータワード
    の区切り記号として使用し、上記部分系列を1個以上の
    可変長命令に並列にパーシングする段階とを更に有する
    請求項1記載の方法。
  4. 【請求項4】 (e)上記パーシングされた各可変長命
    令の系列を並列にデコードする段階と、 (f)上記段階(e)を実行する間に同時に、上記標識
    のベクトルを用いることなく、上記各可変長命令の長さ
    を同時に判定し、上記標識のベクトルが上記判定された
    長さと一致するかどうかを判定する段階と、 (g)少なくとも1台の機能ユニットに配付するため、
    上記フェッチされたデータワードの系列の始めのデータ
    ワードから始まる最初の命令と、上記最初の命令の後に
    逐次的に続き、上記標識のベクトルが上記判定された長
    さと一致する少なくとも1個の命令だけにより先行され
    た他の各命令とを含む命令系列を出力する段階とを更に
    有する請求項3記載の方法。
  5. 【請求項5】 (h)上記判定された長さから置換標識
    のベクトルを発生させる段階と、 (i)上記置換標識のベクトルを使用し、上記フェッチ
    されたデータワードの部分系列から、上記フェッチされ
    た標識のベクトルが上記判定された長さと一致しない少
    なくとも1個の命令だけにより先行された上記各可変長
    命令を再パーシングし、再デコードする段階とを更に有
    する請求項4記載の方法。
  6. 【請求項6】 (h)上記同時に出力されたデコードさ
    れた各命令を複数の機能ユニットの中の少なくとも1台
    の機能ユニットに配付する段階と、 (i)デコードされた各命令を、デコードされた命令が
    配付された上記少なくとも1台の機能ユニットにおいて
    並列に実行する段階とを更に有する請求項4記載の方
    法。
  7. 【請求項7】 (e)上記標識を用いることなく、上記
    各命令の長さを判定する段階と、 (f)上記判定された長さから置換標識のベクトルを発
    生させる段階と、 (g)上記フェッチされた標識のベクトルの代わりに、
    上記置換標識のベクトルを上記メモリに格納する段階と
    を更に有する請求項3記載の方法。
  8. 【請求項8】 上記段階(g)は、(g1)上記標識の
    ベクトルを、上記データラインの中の別々のデータライ
    ンに対応し、上記対応するデータラインのデータワード
    と関係した上記ベクトルの各標識を含む第1の複数の標
    識の部分系列に分割する段階と、(g2)別々の格納段
    階の間に上記各標識の部分系列を格納する段階とを有す
    る請求項7記載の方法。
  9. 【請求項9】 (g3)段階(g2)が延期される部分
    系列に対応したデータライン以外のデータラインに関し
    上記段階(c)、(e)及び(f)が行われるまで、各
    標識の部分系列に対する段階(g2)を延期する段階
    と、(g4)第2の標識のベクトルと、第2の複数の標
    識の部分系列を得るため、第2のデータワードの系列に
    対し段階(c)、(e)、(f)及び(g1)を行う段
    階と、(g5)上記同一のデータラインに対応する上記
    第1及び第2の複数の部分系列からの標識の部分系列を
    連結する段階とを更に有する請求項8記載の方法。
  10. 【請求項10】 (c)上書き又は無効にされたデータ
    ラインのデータワードが可変長命令の最初のデータであ
    ることを示さないようにするため、上記キャッシュメモ
    リ内のデータラインの上書き、又は、上記キャッシュメ
    モリ内のデータラインを無効にすることに応答して、上
    記上書き又は無効にされたデータラインの上記各データ
    ワードと関係した各標識をリセットする段階を更に有す
    る請求項1記載の方法。
  11. 【請求項11】 単一サイクル内に可変長の多数の命令
    をデコードし、実行するプロセッサにおいて、1個以上
    の命令をデコードする方法であって、 (a)最初のデータワードから始まり、最長の許容可能
    な命令内の少なくとも最大数のデータワードの系列を含
    み、キャッシュに格納された1個以上のデータラインの
    データワードの系列をフェッチする段階と、 (b)上記フェッチされた系列の上記各データワードに
    関係し、上記各データワードが命令の最初のデータワー
    ドであるかどうかを示す標識を含む複数の標識を上記キ
    ャッシュからフェッチする段階と、 (c)別々の逐次的なデコードされるべき命令により構
    成され、上記データワードの系列の中の1個以上の重な
    り合わない部分系列を識別するデコードされるべき命令
    の上記系列の区切り記号として、上記標識を使用する段
    階と、 (d)各部分系列のデータワードを別個の命令としてデ
    コードする段階とからなる方法。
  12. 【請求項12】 単一サイクル内に可変長の多数の命令
    をデコードし、実行するプロセッサにおいて、1個以上
    の命令をデコードする方法であって、 (a)データワードの系列の各データワードと関係し、
    上記関係したデータワードが命令の最初のデータワード
    であるかどうかを示す標識を含むメモリから得られた複
    数の標識を利用して、デコードされるべき命令の系列の
    各データワードを含むキャッシュのデータワードの系列
    から、1個以上のデコードされるべき命令の系列を識別
    する段階と、 (b)上記識別されたデコードされるべき命令の系列を
    デコードする段階と、 (c)上記段階(b)を実行する間に同時に、上記標識
    を用いることなく、上記デコードされるべき命令の系列
    の中の各命令の最初及び最後のデータワードの場所を確
    認し、上記標識の正確さを照合する段階と、 (d)上記段階(c)で場所が確認された上記最初及び
    最後のデータワードに従って置換標識を発生させ、上記
    得られた標識の代わりに上記置換標識を上記メモリに格
    納する段階とからなる方法。
  13. 【請求項13】 単一サイクル内に可変長の多数の命令
    をデコード及び実行し、各命令の最初及び最後のデータ
    ワードを判定する処理装置であって、 (a)主メモリの逐次的なアドレスに格納されたデータ
    ワードの系列により構成され、上記メモリ内に隣接して
    格納された多数のエンコードされた可変長命令を含む各
    データラインを記憶する第1のキャッシュメモリ領域
    と、 (b)上記データラインの各データワードに関係し、上
    記関係したデータワードが可変長命令の最初のデータワ
    ードであるかどうかを示す標識を含む複数の標識を記憶
    する第2のメモリ領域とからなる処理装置。
  14. 【請求項14】 何れのデータワードも可変長命令の最
    初のデータワードであることを示さないようにするた
    め、上記プロセッサの初期化に応答して、上記第2のメ
    モリ領域は、その中に記憶された上記標識をリセットす
    る請求項13記載の処理装置。
  15. 【請求項15】 (c)上記キャッシュの1個以上のデ
    ータラインの隣接したデータワードの系列をフェッチ
    し、上記フェッチされた部分系列の上記各データワード
    と関係した標識を含む標識のベクトルをフェッチし、上
    記部分系列を1個以上の可変長命令に並列にパーシング
    するため、上記ベクトルの上記標識を上記フェッチされ
    たデータワードの部分系列に含まれた隣接したデータワ
    ードの区切り記号として使用するプリフェッチ器を更に
    有する請求項13記載の処理装置。
  16. 【請求項16】 (d)上記並列にパーシングされた各
    可変長命令の中の別々の命令を個々にデコードする複数
    のデコーダと、 (e)上記デコーダが上記パーシングされた可変長命令
    ワードをデコードする間に同時に、上記標識のベクトル
    を用いることなく、上記各命令の長さを同時に判定し、
    上記標識のベクトルが上記判定された長さと一致するか
    どうかを判定する命令長照合器とを更に有し、 上記デコーダは、上記フェッチされたデータワードの系
    列の始めのデータワードから始まる最初の命令と、上記
    最初の命令の後に逐次的に続き、上記標識のベクトルが
    上記判定された長さと一致する少なくとも1個の命令だ
    けにより先行された他の各命令とを含む命令系列をデコ
    ードし、複数の機能ユニットの中の1台の機能ユニット
    に配付するためデコードされた各命令を出力するため上
    記デコーダを使用可能状態にさせるイネーブル信号を上
    記命令長照合器から受ける、請求項15記載の処理装
    置。
  17. 【請求項17】 上記命令長照合器は、上記判定された
    長さから置換標識のベクトルを発生させ、 上記プリフェッチ器は、上記フェッチされたデータワー
    ドの部分系列から、上記フェッチされた標識のベクトル
    が上記判定された長さと一致しない少なくとも1個の命
    令だけにより先行された上記各可変長命令を再パーシン
    グするため、上記置換標識のベクトルを使用し、 上記デコーダは、上記再パーシングされた命令を並列に
    再デコードする請求項16記載の処理装置。
  18. 【請求項18】 (f)上記同時に出力されたデコード
    された各命令を複数の機能ユニットの中の少なくとも1
    台の機能ユニットに配付するディスパッチ論理回路と、 (g)デコードされた各命令を並列に実行する複数の機
    能ユニットとを更に有する請求項16記載の処理装置。
  19. 【請求項19】 (d)上記標識を用いることなく上記
    各命令の長さを判定し、上記判定された長さから置換標
    識のベクトルを発生させる命令長照合器を更に有し、 上記第2のメモリ領域は、上記フェッチされた標識のベ
    クトルの代わりに、上記置換標識のベクトルを上記メモ
    リに記憶する請求項15記載の処理装置。
  20. 【請求項20】 上記命令長照合器は、上記標識のベク
    トルを、上記データラインの中の別々のデータラインに
    対応し、上記対応するデータラインのデータワードと関
    係した上記ベクトルの各標識を含む第1の複数の標識の
    部分系列に分割し、別々の記憶ステップの間に上記各標
    識の部分系列を記憶する請求項19記載の処理装置。
  21. 【請求項21】 上記命令長照合器は、上記命令長照合
    器が記憶を延期する部分系列に対応したデータライン以
    外のデータライン内の少なくとも1個の命令に対し置換
    標識のベクトルを発生させるまで、各標識の部分系列の
    記憶を延期させ、 上記命令長照合器は、第2の標識のベクトルと、第2の
    複数の標識の部分系列とを取得し、上記同一のデータラ
    インに対応する上記第1及び第2の複数の部分系列から
    の標識の部分系列を連結する請求項20記載の処理装
    置。
  22. 【請求項22】 上記第2のメモリ領域は、上書き又は
    無効にされたデータラインのデータワードが可変長命令
    の最初のデータであることを示さないようにするため、
    上記第1のメモリ領域がその中のデータラインを上書
    き、又は、その中のデータラインを無効にすることに応
    答して、上記上書き又は無効にされたデータラインの上
    記各データワードと関係した各標識をリセットする請求
    項13記載の処理装置。
  23. 【請求項23】 単一サイクル内に可変長の多数の命令
    をデコード、実行し、1個以上の命令をデコードする処
    理装置であって、 (a)隣接して記憶された複数の可変長命令を含むデー
    タワードの逐次的なデータラインを記憶するキャッシュ
    と、 (b)上記キャッシュに記憶された上記データラインの
    中の上記各データワードが可変長命令の最初のデータワ
    ードであるかどうかを示す複数の標識を記憶するメモリ
    と、 (c)最初のデータワードと、少なくとも最長の許容可
    能な命令内のデータワードの個数とを含み、上記キャッ
    シュに記憶された1個以上の逐次的なデータラインのデ
    ータワードの系列をフェッチし、 上記フェッチされた系列の上記各データワードに関係し
    た複数の標識を上記キャッシュからフェッチし、 別々の逐次的なデコードされるべき命令により構成さ
    れ、上記データワードの系列の中の1個以上の重なり合
    わない部分系列を識別するため、上記標識を上記デコー
    ドされるべき命令の系列の区切り記号として使用するプ
    リフェッチ器と、 (d)各部分系列のデータワードを別個の命令としてデ
    コードするデコーダを含む複数のデコーダとからなる処
    理装置。
  24. 【請求項24】 単一サイクル内に可変長の多数の命令
    をデコードし、実行する処理装置であって、 (a)データワードの系列の各データワードと関係し、
    上記関係したデータワードが命令の最初のデータワード
    であるかどうかを示す標識を含むメモリから得られた複
    数の標識を利用して、デコードされるべき命令の系列の
    各データワードを含むキャッシュのデータワードの系列
    から、1個以上のデコードされるべき命令の系列を識別
    するプリフェッチ器と、 (b)上記識別されたデコードされるべき命令の系列の
    中の各命令をデコードする複数のデコーダと、 (c)上記デコーダが上記系列の中の上記命令をデコー
    ドする間に同時に、上記標識を用いることなく、上記デ
    コードされるべき命令の系列の中の各命令の最初及び最
    後のデータワードの場所を確認し、上記標識の正確さを
    照合し、上記最初及び最後のデータワードに従って置換
    標識を発生させる命令長照合器と、 (d)上記得られた標識の代わりに上記置換標識を記憶
    するメモリとからなる処理装置。
JP492397A 1997-01-14 1997-01-14 スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法 Expired - Lifetime JP2886838B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP492397A JP2886838B2 (ja) 1997-01-14 1997-01-14 スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP492397A JP2886838B2 (ja) 1997-01-14 1997-01-14 スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法

Publications (2)

Publication Number Publication Date
JPH10207707A JPH10207707A (ja) 1998-08-07
JP2886838B2 true JP2886838B2 (ja) 1999-04-26

Family

ID=11597140

Family Applications (1)

Application Number Title Priority Date Filing Date
JP492397A Expired - Lifetime JP2886838B2 (ja) 1997-01-14 1997-01-14 スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法

Country Status (1)

Country Link
JP (1) JP2886838B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100634384B1 (ko) * 2004-07-16 2006-10-16 삼성전자주식회사 액세스 데이터를 저장하는 회로를 구비한 반도체 메모리 장치
US9710277B2 (en) * 2010-09-24 2017-07-18 Intel Corporation Processor power management based on class and content of instructions
CN103336681B (zh) * 2013-07-03 2015-11-25 同济大学 针对采用变长指令集的流水线结构处理器的取指方法
CN112540795A (zh) * 2019-09-23 2021-03-23 阿里巴巴集团控股有限公司 指令处理装置和指令处理方法
CN115525344B (zh) * 2022-10-31 2023-06-27 海光信息技术股份有限公司 一种译码方法、处理器、芯片及电子设备

Also Published As

Publication number Publication date
JPH10207707A (ja) 1998-08-07

Similar Documents

Publication Publication Date Title
US5941980A (en) Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
US5826074A (en) Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
US5911057A (en) Superscalar microprocessor having combined register and memory renaming circuits, systems, and methods
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
JP3798404B2 (ja) 2レベルの分岐予測キャッシュによる分岐予測
KR100783828B1 (ko) 단일 스레드 프로그램의 암시적 멀티스레디드 실행을 행할수 있는 멀티스레디드 프로세서
US5692167A (en) Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US6275927B2 (en) Compressing variable-length instruction prefix bytes
US5913049A (en) Multi-stream complex instruction set microprocessor
JP3093629B2 (ja) 命令シーケンスを実行するための方法および装置
US5142634A (en) Branch prediction
JP3751049B2 (ja) パイプラインプロセッサおよびその動作方法
JP3841131B2 (ja) 浮動小数点演算システム
US6192465B1 (en) Using multiple decoders and a reorder queue to decode instructions out of order
KR101081623B1 (ko) 적절한 프리-디코딩을 이용하여 가변-길이 명령 세트로부터의 명령들을 프리로딩하기 위한 시스템, 방법 및 소프트웨어
JP3720370B2 (ja) 自己修飾コード処理装置
US7886135B1 (en) Pipeline replay support for unaligned memory operations
EP0380859A2 (en) Source list, pointer queues and result queues
US6260134B1 (en) Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
JP2000112758A (ja) 投機的実行中に発生する例外を遅延させるシステム及び方法
US6240506B1 (en) Expanding instructions with variable-length operands to a fixed length
US6460132B1 (en) Massively parallel instruction predecoding
US6460116B1 (en) Using separate caches for variable and generated fixed-length instructions
US6212621B1 (en) Method and system using tagged instructions to allow out-of-program-order instruction decoding
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090212

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090212

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100212

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100212

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110212

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120212

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130212

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140212

Year of fee payment: 15

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term