JP2929057B2 - 命令データのストリームから複数の命令を選択する回路 - Google Patents
命令データのストリームから複数の命令を選択する回路Info
- Publication number
- JP2929057B2 JP2929057B2 JP5040757A JP4075793A JP2929057B2 JP 2929057 B2 JP2929057 B2 JP 2929057B2 JP 5040757 A JP5040757 A JP 5040757A JP 4075793 A JP4075793 A JP 4075793A JP 2929057 B2 JP2929057 B2 JP 2929057B2
- Authority
- JP
- Japan
- Prior art keywords
- bytes
- instruction
- sequence
- multiplexer
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 18
- 239000000872 buffer Substances 0.000 description 53
- 238000012546 transfer Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 230000005669 field effect Effects 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000003340 mental effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 235000021419 vinegar Nutrition 0.000 description 1
- 239000000052 vinegar Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
【0001】
【産業上の利用分野】本発明はコンピュータプロセッサ
に関し、特に互いに差異を設けていない可変長の逐次命
令ストリームから命令を出力する方法と装置に関する。
に関し、特に互いに差異を設けていない可変長の逐次命
令ストリームから命令を出力する方法と装置に関する。
【0002】
【従来の技術】コンピュータ設計者は絶えずコンピュー
タを速く実行させようとしており、それを達成する1つ
の方法はコンピュータに命令を速く処理させることであ
る。一般にコンピュータプロセッサはどの様な処理の命
令も次々と逐次的に取り扱う。従って命令1は命令2が
開始する前に処理するか少なくとも始めなければならな
い。2つないしそれ以上の命令を同時に実行することが
できれば、コンピュータは命令を速く処理することがで
きる。これはコンピュータの取り扱う命令の1つ以上の
処理経路ないしチャネルを用意し、1つ以上の命令を同
時に実行するようにその処理経路を同時に実行すること
で達成できる。連続的に実行される同種の一般的なマシ
ン命令を同時に処理できる2つないしそれ以上の処理経
路を持つプロセッサを有するコンピュータは、スーパー
スカラー・コンピュータと呼ばれている。
タを速く実行させようとしており、それを達成する1つ
の方法はコンピュータに命令を速く処理させることであ
る。一般にコンピュータプロセッサはどの様な処理の命
令も次々と逐次的に取り扱う。従って命令1は命令2が
開始する前に処理するか少なくとも始めなければならな
い。2つないしそれ以上の命令を同時に実行することが
できれば、コンピュータは命令を速く処理することがで
きる。これはコンピュータの取り扱う命令の1つ以上の
処理経路ないしチャネルを用意し、1つ以上の命令を同
時に実行するようにその処理経路を同時に実行すること
で達成できる。連続的に実行される同種の一般的なマシ
ン命令を同時に処理できる2つないしそれ以上の処理経
路を持つプロセッサを有するコンピュータは、スーパー
スカラー・コンピュータと呼ばれている。
【0003】新しいコンピュータの場合どの様なもので
も商業的に成功する場合は、利用者に興味を持たせるた
め、それを導入するとき実行できるアプリケーション・
プログラムの基盤がなければならない。そのようなプロ
グラムを提供する経済的な方法は、新しいコンピュータ
を以前のコンピュータないし系統コンピュータのために
設計されたアプリケーション・プログラムで作動するよ
うに設計することである。この種の設計例としては、80
86、8088、i386TM、i486TMを初めとするインテル社に
よるマイクロプロセッサ(以下、インテル・マイクロプ
ロセッサと称する)に基づくコンピュータがある。どの
様な新しいプロセッサも以前のコンピュータで使用され
たソフトウエアで機能するには、新しいマシンはそのソ
フトウエアの命令を理解し、処理できなければならな
い。インテル・マイクロプロセッサ・ラインのプロセッ
サで使用する命令は、1バイトから15バイトまで変化す
る。それらの命令はインテル・マイクロプロセッサを操
作する既存のプログラムで上記の一般的な順序で配列さ
れている。
も商業的に成功する場合は、利用者に興味を持たせるた
め、それを導入するとき実行できるアプリケーション・
プログラムの基盤がなければならない。そのようなプロ
グラムを提供する経済的な方法は、新しいコンピュータ
を以前のコンピュータないし系統コンピュータのために
設計されたアプリケーション・プログラムで作動するよ
うに設計することである。この種の設計例としては、80
86、8088、i386TM、i486TMを初めとするインテル社に
よるマイクロプロセッサ(以下、インテル・マイクロプ
ロセッサと称する)に基づくコンピュータがある。どの
様な新しいプロセッサも以前のコンピュータで使用され
たソフトウエアで機能するには、新しいマシンはそのソ
フトウエアの命令を理解し、処理できなければならな
い。インテル・マイクロプロセッサ・ラインのプロセッ
サで使用する命令は、1バイトから15バイトまで変化す
る。それらの命令はインテル・マイクロプロセッサを操
作する既存のプログラムで上記の一般的な順序で配列さ
れている。
【0004】コンピュータの速度を増大する1つの方法
は命令をパイプライン処理することである。各々の命令
をそれが完了するまで実行し、その上で次の命令を開始
する代わりに、ある命令の別の段階を完了している間に
他の命令の段階を重ねてコンピュータの遊び部分がない
ようにするのである。インテル・マイクロプロセッサを
使用したコンピュータでは作業の各々の段階を1クロッ
ク周期で扱うことのできるように命令をパイプライン処
理している。一般にこれには命令をその記憶場所から取
り出し、解読し、実行し、そして実行結果を後に使用す
るため記憶装置に書き戻すことが必要である。回路は、
異なる段階でそれぞれ1クロック周期を必要とするよう
に設計する。プロセッサの異なる部分で各々のクロック
周期中に逐次命令のパイプラインの各段階を完了する。
従って第1のクロック周期中、プロセッサの事前取出し
部分が命令を記憶装置から取り出し、解読できるように
整列する。第2クロック周期中には、プロセッサの事前
取出し部分は記憶装置から次の命令を取り出して整列さ
せ、第3クロック周期でそれを解読できるようにする。
プロセッサの解読部分は取り出された第1の命令の解読
を同様に第2クロック周期中に完了する。プロセッサの
その解読部分は取り出された第2の命令の解読を第3ク
ロック周期中に完了する。命令をパイプライン処理する
ことで、全体的な作業速度は大幅に増大する。
は命令をパイプライン処理することである。各々の命令
をそれが完了するまで実行し、その上で次の命令を開始
する代わりに、ある命令の別の段階を完了している間に
他の命令の段階を重ねてコンピュータの遊び部分がない
ようにするのである。インテル・マイクロプロセッサを
使用したコンピュータでは作業の各々の段階を1クロッ
ク周期で扱うことのできるように命令をパイプライン処
理している。一般にこれには命令をその記憶場所から取
り出し、解読し、実行し、そして実行結果を後に使用す
るため記憶装置に書き戻すことが必要である。回路は、
異なる段階でそれぞれ1クロック周期を必要とするよう
に設計する。プロセッサの異なる部分で各々のクロック
周期中に逐次命令のパイプラインの各段階を完了する。
従って第1のクロック周期中、プロセッサの事前取出し
部分が命令を記憶装置から取り出し、解読できるように
整列する。第2クロック周期中には、プロセッサの事前
取出し部分は記憶装置から次の命令を取り出して整列さ
せ、第3クロック周期でそれを解読できるようにする。
プロセッサの解読部分は取り出された第1の命令の解読
を同様に第2クロック周期中に完了する。プロセッサの
その解読部分は取り出された第2の命令の解読を第3ク
ロック周期中に完了する。命令をパイプライン処理する
ことで、全体的な作業速度は大幅に増大する。
【0005】命令は、互いに区別されていない命令のバ
イトのストリームとして、バスへないしキャッシュ・メ
モリから供給される。各命令は(一般に)どの過程でも
順番に現れる。それらの命令はキャッシュ・メモリから
1クロック周期で事前に取り出す必要がある。命令の長
さが異なるので、第2の命令は第1の命令の長さが分か
っていない限り事前に取り出すことはできない。任意時
に処理されている命令の長さを判定するため、インテル
・マイクロプロセッサを使用した以前のコンピュータは
最初に命令を解読しその内容を判定している。これを完
了すると、処理されている命令の長さとシーケンス内の
次の命令の開始点が分かり、事前取出し装置にフィード
バックすることができる。このためインテル・マイクロ
プロセッサに基づく以前の全てのコンピュータでは命令
の解読を連続的に行う必要があった。
イトのストリームとして、バスへないしキャッシュ・メ
モリから供給される。各命令は(一般に)どの過程でも
順番に現れる。それらの命令はキャッシュ・メモリから
1クロック周期で事前に取り出す必要がある。命令の長
さが異なるので、第2の命令は第1の命令の長さが分か
っていない限り事前に取り出すことはできない。任意時
に処理されている命令の長さを判定するため、インテル
・マイクロプロセッサを使用した以前のコンピュータは
最初に命令を解読しその内容を判定している。これを完
了すると、処理されている命令の長さとシーケンス内の
次の命令の開始点が分かり、事前取出し装置にフィード
バックすることができる。このためインテル・マイクロ
プロセッサに基づく以前の全てのコンピュータでは命令
の解読を連続的に行う必要があった。
【0006】スーパースカラーマシンは少なくとも2つ
の命令を同時に行う必要があるため、2つの命令を同時
に解読しなければならない。しかし第2の命令の正確な
コードのバイトを選択するために、次の(第2の)命令
がどこから始まるかを知るため第1の命令の終端を知ら
なければならない。第2の命令の処理が第1の命令の解
読を待たなければ始めなければならないとしたならば、
2つの命令を同時に処理するというスーパースカラーの
目的は無意味になる。
の命令を同時に行う必要があるため、2つの命令を同時
に解読しなければならない。しかし第2の命令の正確な
コードのバイトを選択するために、次の(第2の)命令
がどこから始まるかを知るため第1の命令の終端を知ら
なければならない。第2の命令の処理が第1の命令の解
読を待たなければ始めなければならないとしたならば、
2つの命令を同時に処理するというスーパースカラーの
目的は無意味になる。
【0007】命令のストリームでの個々の命令の終端を
判定する際の1つの問題は、コンピュータのオペレーシ
ョンの速度を維持しつつ、利用できる命令データのスト
リームからスーパースカラー・プロセッサの2つのチャ
ネルにより処理される2つの逐次命令を含むのに十分な
量のデータを導き出す構造を提供することであった。一
般に各クロックでは選択を行う64バイトのデータを得
ることができる。選択には、非常に大きなマルチプレク
サを用いることによって、次のクロック周期で64バイ
トから次の命令を選択するため、2つの逐次命令の最初
のものから命令ポインタを生成することが必要である。
クロックの時間限度内で命令ポインタを生成することは
辛うじて可能である。しかし次の命令を選択するために
64対1という大きなマルチプレクサを用いることは、
動作していないマルチプレクサのスィッチにより作られ
る容量性負荷が非常に大きくなることから不可能である
ことが分かっている。その結果従来の選択手法では、ス
ーパースカラーマシンの2つのチャネルで使用する適切
な命令を選択することはできない。
判定する際の1つの問題は、コンピュータのオペレーシ
ョンの速度を維持しつつ、利用できる命令データのスト
リームからスーパースカラー・プロセッサの2つのチャ
ネルにより処理される2つの逐次命令を含むのに十分な
量のデータを導き出す構造を提供することであった。一
般に各クロックでは選択を行う64バイトのデータを得
ることができる。選択には、非常に大きなマルチプレク
サを用いることによって、次のクロック周期で64バイ
トから次の命令を選択するため、2つの逐次命令の最初
のものから命令ポインタを生成することが必要である。
クロックの時間限度内で命令ポインタを生成することは
辛うじて可能である。しかし次の命令を選択するために
64対1という大きなマルチプレクサを用いることは、
動作していないマルチプレクサのスィッチにより作られ
る容量性負荷が非常に大きくなることから不可能である
ことが分かっている。その結果従来の選択手法では、ス
ーパースカラーマシンの2つのチャネルで使用する適切
な命令を選択することはできない。
【0008】
【発明が解決しようとする課題】従って本発明の目的は
可変長の命令のストリームから命令を選択する装置を提
供することである。本発明のより詳しい目的は、そのよ
うな大量のデータから命令データを多重化する過程を加
速する装置を提供することである。
可変長の命令のストリームから命令を選択する装置を提
供することである。本発明のより詳しい目的は、そのよ
うな大量のデータから命令データを多重化する過程を加
速する装置を提供することである。
【0009】
【課題を解決するための手段】本発明の以上の目的は、
命令データの区別されていないバイトのシーケンスから
命令データの第1のバイトのシーケンスを受け取る手段
(23,24)と、命令データの前記第1のバイトのシ
ーケンスの中で任意に選択したバイトで始まる命令デー
タの第2のバイトのシーケンスを処理された最後のバイ
トを示すポインタを用いて命令データの前記第1のバイ
トのシーケンスから選択する手段(25)と、処理され
た最後のバイトを示す前記ポインタを用いて命令データ
の前記第2のバイトのシーケンスの中で任意に選択した
バイトで始まる命令データの第3のバイトのシーケンス
を命令データの前記第2のバイトのシーケンスから選択
する手段(27)とからなり、前記第3のバイトのシー
ケンスは前記第2のシーケンスよりも長さが半分以下で
あり、前記第2のバイトのシーケンス内で完了すること
を特徴とする、スーパースカラーマシンが二つの命令を
同時に処理するために用いることができる命令データの
区別されていないバイトのシーケンスから複数の命令を
選択する回路で実現することができる。
命令データの区別されていないバイトのシーケンスから
命令データの第1のバイトのシーケンスを受け取る手段
(23,24)と、命令データの前記第1のバイトのシ
ーケンスの中で任意に選択したバイトで始まる命令デー
タの第2のバイトのシーケンスを処理された最後のバイ
トを示すポインタを用いて命令データの前記第1のバイ
トのシーケンスから選択する手段(25)と、処理され
た最後のバイトを示す前記ポインタを用いて命令データ
の前記第2のバイトのシーケンスの中で任意に選択した
バイトで始まる命令データの第3のバイトのシーケンス
を命令データの前記第2のバイトのシーケンスから選択
する手段(27)とからなり、前記第3のバイトのシー
ケンスは前記第2のシーケンスよりも長さが半分以下で
あり、前記第2のバイトのシーケンス内で完了すること
を特徴とする、スーパースカラーマシンが二つの命令を
同時に処理するために用いることができる命令データの
区別されていないバイトのシーケンスから複数の命令を
選択する回路で実現することができる。
【0010】
【実施例】注記と用語 以下の詳細な説明の一部はコンピュータ・メモリ内のデ
ータビットに対するオペレーションについて記号表現で
表している。それらの説明や表現はデータ処理技術の当
業者がその作業の実質を他の当業者に最も効率的に伝え
るために使用する手段となっている。オペレーションは
物理的な量の物理的な操作を必要とするものである。通
常、必ずしもそうではないが、それらの量は記憶、転
送、結合、比較その他の操作が可能な電気ないし磁気信
号の形を取る。時にはおもに通常に使用されているとい
う理由で、それらの信号をビット、値、要素、記号、文
字、周期、数などで参照することが便利であることが分
かっている。しかしそれら及び類似の用語はすべて適切
な物理量と関連しており、単にそれらの量に適用された
便利なラベルでしかないことに留意すべきである。
ータビットに対するオペレーションについて記号表現で
表している。それらの説明や表現はデータ処理技術の当
業者がその作業の実質を他の当業者に最も効率的に伝え
るために使用する手段となっている。オペレーションは
物理的な量の物理的な操作を必要とするものである。通
常、必ずしもそうではないが、それらの量は記憶、転
送、結合、比較その他の操作が可能な電気ないし磁気信
号の形を取る。時にはおもに通常に使用されているとい
う理由で、それらの信号をビット、値、要素、記号、文
字、周期、数などで参照することが便利であることが分
かっている。しかしそれら及び類似の用語はすべて適切
な物理量と関連しており、単にそれらの量に適用された
便利なラベルでしかないことに留意すべきである。
【0011】更に行う操作はしばしば、通常人間のオペ
レータにより行われる精神的な作業に関連した加算、比
較といった用語で称する。人間のオペレータのそのよう
な能力は本発明の一部を形成するここで説明する作業の
いずれにも必要なく、あるいは大方の場合望ましくな
い。作業は機械作業である。いずれの場合もコンピュー
タを作動する場合の方法作業と計算それ自身の方法の間
の区別に留意すべきである。本発明は電気ないしその他
(例:機械的、化学的)物理的信号を処理して他の所望
の物理的信号を生成するコンピュータを作動する装置に
関する。
レータにより行われる精神的な作業に関連した加算、比
較といった用語で称する。人間のオペレータのそのよう
な能力は本発明の一部を形成するここで説明する作業の
いずれにも必要なく、あるいは大方の場合望ましくな
い。作業は機械作業である。いずれの場合もコンピュー
タを作動する場合の方法作業と計算それ自身の方法の間
の区別に留意すべきである。本発明は電気ないしその他
(例:機械的、化学的)物理的信号を処理して他の所望
の物理的信号を生成するコンピュータを作動する装置に
関する。
【0012】図1は従来技術にしたがって構成した回路
10のブロック図を示したもので、本発明を実施する際に
直面する問題を理解するのに利用できる。回路10はコン
ピュータで処理される多くの命令の中から2つの逐次命
令を選択するように設計されている。それらの命令は互
いに区別されておらず、しかも長さは様々である。本発
明の実施例では、個々の命令は、プロセッサの命令キャ
ッシュの2つの32バイトラインの直列バイトに保持され
た64バイトのグループから選択する。命令はコンピュー
タバスあるいはそのような命令を直列に提示するその他
の源から同様に選択することもできる。本発明の実施例
では、個々の命令は1から15バイトと変化する。しかし
個々の命令は15バイトの長さがあっても、他の命令と同
時に実行できる命令は7バイト以下である。
10のブロック図を示したもので、本発明を実施する際に
直面する問題を理解するのに利用できる。回路10はコン
ピュータで処理される多くの命令の中から2つの逐次命
令を選択するように設計されている。それらの命令は互
いに区別されておらず、しかも長さは様々である。本発
明の実施例では、個々の命令は、プロセッサの命令キャ
ッシュの2つの32バイトラインの直列バイトに保持され
た64バイトのグループから選択する。命令はコンピュー
タバスあるいはそのような命令を直列に提示するその他
の源から同様に選択することもできる。本発明の実施例
では、個々の命令は1から15バイトと変化する。しかし
個々の命令は15バイトの長さがあっても、他の命令と同
時に実行できる命令は7バイト以下である。
【0013】そのような選択とローテーションを行う一
般的な方法を図1に示す。キャッシュ・メモリ12の最
初のラインの命令データは第1のバッファ13(A)に
供給され、キャッシュ・メモリ12の隣接した第2のラ
インの命令データは第2のバッファ14(B)に供給さ
れる。実施例では、それらのバッファの各々は32バイ
トワイドである。所望の2つの命令を選択する命令キャ
ッシュの2つのラインから合計64の逐次バイトの命令
データを得るためである。バッファ13、14の命令の
バイトは、所望の2つの個々の直列命令を作成するバイ
トを選択する複数(実施例では14個)の64対1マル
チプレクサ16の入力端子個々に与えることができる。
1バイトが複数のマルチプレクサ16の各々で選択され
て、本発明で設計したマシンで共に使用する2つの最長
命令(それぞれ7バイトづつ)に必要なバイト数である
合計14バイトの命令データを出力する。バッファ1
3、14を満たす命令の逐次バイトを含む2つのキャッ
シュラインから選択することによって、キャッシュライ
ンの終端で循環する命令をキャッシュラインの中間にあ
る命令と同じ早さで処理することができる。マルチプレ
クサ16はまとめてローテータ17と称する。回路17
は、バッファ13、14内の多くの命令から2つの逐次
命令を選択し、それらの命令を転送してラッチ18内に
整列させるために用いられ、それから解読および処理の
ためにスーパースカラーマシンの2つの処理チャネルに
より2つ逐次命令を個々に転送できるので、ローテータ
と称する。またそれによりキャッシュラインの終端から
次のキャッシュラインに再結合し循環する命令を選択で
きる。
般的な方法を図1に示す。キャッシュ・メモリ12の最
初のラインの命令データは第1のバッファ13(A)に
供給され、キャッシュ・メモリ12の隣接した第2のラ
インの命令データは第2のバッファ14(B)に供給さ
れる。実施例では、それらのバッファの各々は32バイ
トワイドである。所望の2つの命令を選択する命令キャ
ッシュの2つのラインから合計64の逐次バイトの命令
データを得るためである。バッファ13、14の命令の
バイトは、所望の2つの個々の直列命令を作成するバイ
トを選択する複数(実施例では14個)の64対1マル
チプレクサ16の入力端子個々に与えることができる。
1バイトが複数のマルチプレクサ16の各々で選択され
て、本発明で設計したマシンで共に使用する2つの最長
命令(それぞれ7バイトづつ)に必要なバイト数である
合計14バイトの命令データを出力する。バッファ1
3、14を満たす命令の逐次バイトを含む2つのキャッ
シュラインから選択することによって、キャッシュライ
ンの終端で循環する命令をキャッシュラインの中間にあ
る命令と同じ早さで処理することができる。マルチプレ
クサ16はまとめてローテータ17と称する。回路17
は、バッファ13、14内の多くの命令から2つの逐次
命令を選択し、それらの命令を転送してラッチ18内に
整列させるために用いられ、それから解読および処理の
ためにスーパースカラーマシンの2つの処理チャネルに
より2つ逐次命令を個々に転送できるので、ローテータ
と称する。またそれによりキャッシュラインの終端から
次のキャッシュラインに再結合し循環する命令を選択で
きる。
【0014】14個のマルチプレクサ16の列のうち第
1のもので選択される命令データのバイトは、命令ポイ
ンタから導出される6ビット値を用いて選択される。残
りのマルチプレクサ16により選択するバイトは、最初
の値からそれぞれ1だけ増分した値を用いて撰択する。
後続の値の各々はバッファ13、14から次の逐次の入
力バイトを選択するために用いられ、バッファ13、1
4にある命令データの一連の14の逐次バイトが出力さ
れる。従って、バッファ13(A)内の最初(0)のバ
イトで始まる命令のバイトを選択する6ビット値は、図
のローテータ17の右の第1のマルチプレクサ16を用
いてその最初のバイトを選択する。1だけ増分した6ビ
ット値は、第2のマルチプレクサ16を用いてバッファ
13内の第2の逐次バイトをバイト2として選択する。
再び1だけ増分した6ビット値は、第3のマルチプレク
サ16を用いてバッファ13内の第3の逐次バイトをバ
イト3として選択し、以下同様に続く。選択した14バ
イトの第1のバイトがバッファ13内の第1のバイトで
あるときには、全てのバイトは32バイトを保持する第
1のバッファ13から選択されることが分かる。命令が
処理され、シーケンスの後の命令が選択されるとき、選
択はバッファ13内の最後のバイトまで進み、第2のバ
ッファ14(B)で得ることのできる命令のバイトまで
進む。
1のもので選択される命令データのバイトは、命令ポイ
ンタから導出される6ビット値を用いて選択される。残
りのマルチプレクサ16により選択するバイトは、最初
の値からそれぞれ1だけ増分した値を用いて撰択する。
後続の値の各々はバッファ13、14から次の逐次の入
力バイトを選択するために用いられ、バッファ13、1
4にある命令データの一連の14の逐次バイトが出力さ
れる。従って、バッファ13(A)内の最初(0)のバ
イトで始まる命令のバイトを選択する6ビット値は、図
のローテータ17の右の第1のマルチプレクサ16を用
いてその最初のバイトを選択する。1だけ増分した6ビ
ット値は、第2のマルチプレクサ16を用いてバッファ
13内の第2の逐次バイトをバイト2として選択する。
再び1だけ増分した6ビット値は、第3のマルチプレク
サ16を用いてバッファ13内の第3の逐次バイトをバ
イト3として選択し、以下同様に続く。選択した14バ
イトの第1のバイトがバッファ13内の第1のバイトで
あるときには、全てのバイトは32バイトを保持する第
1のバッファ13から選択されることが分かる。命令が
処理され、シーケンスの後の命令が選択されるとき、選
択はバッファ13内の最後のバイトまで進み、第2のバ
ッファ14(B)で得ることのできる命令のバイトまで
進む。
【0015】ローテータ17のマルチプレクサ16か
ら、命令のバイトがラッチ18に転送され、その第1の
命令はラッチから引き出されて、スーパースカラー・プ
ロセッサの第1(Uチャネル)チャネルにより処理され
る。処理の第1段階は命令の解読である。この解読は、
マルチプレクサ16での選択を行う6ビットが引き出さ
れる事前取出し命令ポインタを出力する。この値は引き
出されてバッファ13、14から取り出される次の命令
の選択を助けるためにフィードバックされる。
ら、命令のバイトがラッチ18に転送され、その第1の
命令はラッチから引き出されて、スーパースカラー・プ
ロセッサの第1(Uチャネル)チャネルにより処理され
る。処理の第1段階は命令の解読である。この解読は、
マルチプレクサ16での選択を行う6ビットが引き出さ
れる事前取出し命令ポインタを出力する。この値は引き
出されてバッファ13、14から取り出される次の命令
の選択を助けるためにフィードバックされる。
【0016】マルチプレクサ16をその64対1の論理
入力率でスィッチすることは、本発明の一部であるスー
パースカラーマシン内で一対の命令の各々の選択に許さ
れた単一のクロック周期内に完了できないことが分かっ
た。これは63個のバイトがスィッチされていない間、
マルチプレクサ16の各々によって各々のマルチプレク
サ16への入力において得られる64バイトのうちの1
つしか出力にスィッチされないので、事実である。各マ
ルチプレクサ16にスィッチされない入力と連関された
個々のスィッチング素子(Nチャネル電界効果トランジ
スタ素子)は、オンにされたゲートのスィッチングを完
全に圧倒する容量性負荷をマルチプレクサ16への入力
に形成する。これによりスィッチングが遅くなって割り
当てられた時間内に完了することができなくなる。
入力率でスィッチすることは、本発明の一部であるスー
パースカラーマシン内で一対の命令の各々の選択に許さ
れた単一のクロック周期内に完了できないことが分かっ
た。これは63個のバイトがスィッチされていない間、
マルチプレクサ16の各々によって各々のマルチプレク
サ16への入力において得られる64バイトのうちの1
つしか出力にスィッチされないので、事実である。各マ
ルチプレクサ16にスィッチされない入力と連関された
個々のスィッチング素子(Nチャネル電界効果トランジ
スタ素子)は、オンにされたゲートのスィッチングを完
全に圧倒する容量性負荷をマルチプレクサ16への入力
に形成する。これによりスィッチングが遅くなって割り
当てられた時間内に完了することができなくなる。
【0017】図2は本発明にしたがって構成した回路2
0を示したものである。回路20には一対のバッファ2
3(A)、24(B)があり、それには関連命令キャッ
シュないし処理する命令のストリームの他の何等かの源
22から逐次ラインが導かれる。従ってバッファ23、
24の各々は、本発明の本実施例では、32バイトの命
令データを格納する。この説明のために、各々のバッフ
ァ内の32バイトの命令データは、図2に示すように各
々のバッファ内で右から左に整列させられていると考え
ることができる。第1の2対1マルチプレクサ25は、
2つのバッファ23、24から得られる64バイトの命
令データから転送される命令データの32逐次バイトを
選択する。本発明の本実施例では、大きなマルチプレク
サ25は実際には、2つのバッファ23、24の各々に
格納されたバイトの4つを入力として受け取るためにそ
れぞれ接続された8つの独立した小さなマルチプレクサ
26を内蔵している。例えば図の右側のマルチプレクサ
26は、Aバッファに保持された第1の4バイトないし
Bバッファに保持された第1の4バイトのどちらかを受
け取る。右から2番目のマルチプレクサ26はAバッフ
ァに保持された第2の4バイトかBバッファに保持され
た第2の4バイトのどちらかを受け取る。大きなマルチ
プレクサ25の各マルチプレクサ26はそれぞれ、選択
された4つの隣接バイトを次のローテータ27にそれぞ
れ転送するように4バイトの細分性で選択できる。例え
ば大きなマルチプレクサ25の8つのマルチプレクサ2
6の第1のものが制御手段によりバッファ23の0バイ
トに整列されると、第1のバッファ23のバイト3:0
はその第1のマルチプレクサ26によりローテータ27
に転送される。大きなマルチプレクサ25の第2のマル
チプレクサ26は、バッファ23からバイト7:4を転
送し、第3のマルチプレクサ26はバッファ23からバ
イト11:8を転送し、以下同様に続き、バッファ23
から全ての32バイトはローテータ27に転送される。
0を示したものである。回路20には一対のバッファ2
3(A)、24(B)があり、それには関連命令キャッ
シュないし処理する命令のストリームの他の何等かの源
22から逐次ラインが導かれる。従ってバッファ23、
24の各々は、本発明の本実施例では、32バイトの命
令データを格納する。この説明のために、各々のバッフ
ァ内の32バイトの命令データは、図2に示すように各
々のバッファ内で右から左に整列させられていると考え
ることができる。第1の2対1マルチプレクサ25は、
2つのバッファ23、24から得られる64バイトの命
令データから転送される命令データの32逐次バイトを
選択する。本発明の本実施例では、大きなマルチプレク
サ25は実際には、2つのバッファ23、24の各々に
格納されたバイトの4つを入力として受け取るためにそ
れぞれ接続された8つの独立した小さなマルチプレクサ
26を内蔵している。例えば図の右側のマルチプレクサ
26は、Aバッファに保持された第1の4バイトないし
Bバッファに保持された第1の4バイトのどちらかを受
け取る。右から2番目のマルチプレクサ26はAバッフ
ァに保持された第2の4バイトかBバッファに保持され
た第2の4バイトのどちらかを受け取る。大きなマルチ
プレクサ25の各マルチプレクサ26はそれぞれ、選択
された4つの隣接バイトを次のローテータ27にそれぞ
れ転送するように4バイトの細分性で選択できる。例え
ば大きなマルチプレクサ25の8つのマルチプレクサ2
6の第1のものが制御手段によりバッファ23の0バイ
トに整列されると、第1のバッファ23のバイト3:0
はその第1のマルチプレクサ26によりローテータ27
に転送される。大きなマルチプレクサ25の第2のマル
チプレクサ26は、バッファ23からバイト7:4を転
送し、第3のマルチプレクサ26はバッファ23からバ
イト11:8を転送し、以下同様に続き、バッファ23
から全ての32バイトはローテータ27に転送される。
【0018】例にあるように32逐次バイトの最初のも
のがバッファAに格納された最も右側のバイトであるな
らば、全ての32バイトはバッファAから来る。しかし
命令が処理されると、マルチプレクサ25のマルチプレ
クサ26により転送される32バイトは4バイトに細分
化された状態で変化し、バッファ24からのバイトを含
むようになる。この過程は、一連の32バイトがマルチ
プレクサ25からローテータ27への転送を示す図3に
示されている。図のラインの各々は32バイトの命令デ
ータを示している。図の各々のラインに示す32バイト
のシーケンスの最初のものは、そのラインの矩形のウイ
ンドウの右側のバイトである。この図に限っていえば、
転送されたバイトは右から左に4バイトだけ増分で変化
する。各々の段階はその前の段階のすぐ下にある。4バ
イトの増分は発明の本実施例で使用できる最小の選択細
分である。従ってマルチプレクサ25を使用して選択す
る装置が左側に4バイトのステップで増分すると、バッ
ファAからの値を示す「A」は右側でバッファBからの
値により徐々に置換される。例えば、最初の4バイトを
使用してしまうと、32バイトの次の転送はバイト7:
4から始まる。このバイトは図示のように右から2番目
のマルチプレクサ26により転送される。バッファAに
保持される残りの全てのバイトまで進行すると、図の右
の最初のマルチプレクサ26を用いてバッファBに保持
された第1の4バイト35:32の転送にループバック
する。従ってマルチプレクサ25は個々のものは1つの
キャッシュラインから次のキャッシュラインにまたがっ
ている命令の32バイトを転送することができる。更に
十分に選択が進行して、全ての32バイトの命令バイト
が全部第2のバッファBのものになると、第1のバッフ
ァAを次の継続したキャッシュラインないし他のデータ
源から再び充填することができる。この再充填はデータ
が必要とする時間より十分前に生じる。このようにして
キャッシュラインを循環する命令を選択過程で遅延なく
選択することができる。
のがバッファAに格納された最も右側のバイトであるな
らば、全ての32バイトはバッファAから来る。しかし
命令が処理されると、マルチプレクサ25のマルチプレ
クサ26により転送される32バイトは4バイトに細分
化された状態で変化し、バッファ24からのバイトを含
むようになる。この過程は、一連の32バイトがマルチ
プレクサ25からローテータ27への転送を示す図3に
示されている。図のラインの各々は32バイトの命令デ
ータを示している。図の各々のラインに示す32バイト
のシーケンスの最初のものは、そのラインの矩形のウイ
ンドウの右側のバイトである。この図に限っていえば、
転送されたバイトは右から左に4バイトだけ増分で変化
する。各々の段階はその前の段階のすぐ下にある。4バ
イトの増分は発明の本実施例で使用できる最小の選択細
分である。従ってマルチプレクサ25を使用して選択す
る装置が左側に4バイトのステップで増分すると、バッ
ファAからの値を示す「A」は右側でバッファBからの
値により徐々に置換される。例えば、最初の4バイトを
使用してしまうと、32バイトの次の転送はバイト7:
4から始まる。このバイトは図示のように右から2番目
のマルチプレクサ26により転送される。バッファAに
保持される残りの全てのバイトまで進行すると、図の右
の最初のマルチプレクサ26を用いてバッファBに保持
された第1の4バイト35:32の転送にループバック
する。従ってマルチプレクサ25は個々のものは1つの
キャッシュラインから次のキャッシュラインにまたがっ
ている命令の32バイトを転送することができる。更に
十分に選択が進行して、全ての32バイトの命令バイト
が全部第2のバッファBのものになると、第1のバッフ
ァAを次の継続したキャッシュラインないし他のデータ
源から再び充填することができる。この再充填はデータ
が必要とする時間より十分前に生じる。このようにして
キャッシュラインを循環する命令を選択過程で遅延なく
選択することができる。
【0019】ローテータ27は14の個々の32対1のマルチ
プレクサを含む以外は、図1のマルチプレクサ16を含む
ローテータと同様である。ローテータ27の各々のマルチ
プレクサは、マルチプレクサ25により転送された個々の
バイトの各々を入力として受取り、事前取出し命令ポイ
ンタから導出された5ビット値により選択される単一バ
イトを出力として出力する。これは図1のマルチプレク
サ16からなるローテータの作動と同様にして行われる。
プレクサを含む以外は、図1のマルチプレクサ16を含む
ローテータと同様である。ローテータ27の各々のマルチ
プレクサは、マルチプレクサ25により転送された個々の
バイトの各々を入力として受取り、事前取出し命令ポイ
ンタから導出された5ビット値により選択される単一バ
イトを出力として出力する。これは図1のマルチプレク
サ16からなるローテータの作動と同様にして行われる。
【0020】従ってローテータ27のマルチプレクサによ
り与えられる14バイトはバッファ29に整列値として与え
られ、更に命令の第1のものが解読されるUチャネルに
供給される。Uチャネルは加算器回路30に与えられる処
理される命令の長さの値(長さ値と称する)を出力す
る。この値はVチャネルの命令の解読からの同様の長さ
値と合成して、合計長さ値を作り出す。この値は解読す
る次の2つの命令を選択するのに使用する事前取出しポ
インタを定義する。
り与えられる14バイトはバッファ29に整列値として与え
られ、更に命令の第1のものが解読されるUチャネルに
供給される。Uチャネルは加算器回路30に与えられる処
理される命令の長さの値(長さ値と称する)を出力す
る。この値はVチャネルの命令の解読からの同様の長さ
値と合成して、合計長さ値を作り出す。この値は解読す
る次の2つの命令を選択するのに使用する事前取出しポ
インタを定義する。
【0021】ローテータ27のマルチプレクサへの入力の
スィッチの数を32に減少することによって、実際に作動
されるスィッチの容量性負荷は、事前取出し命令ポイン
タを生成するのに使用できるクロック周期内に選択を行
うことができる程度まで減少することができる。しかし
マルチプレクサ25を作動するのに適切な制御信号を出力
することも必要である。マルチプレクサ25は処理作業経
路内でローテータ27より先にあるので、解読された事前
取出し命令ポインタからの値を単にルート化することで
同様に制御することはできない。事前取出し命令ポイン
タ値をクロックサイクル内で十分速く得て、転送された
バイト値の冒頭と第1の命令が一致するようにマルチプ
レクサ25の値を選択することはできない。
スィッチの数を32に減少することによって、実際に作動
されるスィッチの容量性負荷は、事前取出し命令ポイン
タを生成するのに使用できるクロック周期内に選択を行
うことができる程度まで減少することができる。しかし
マルチプレクサ25を作動するのに適切な制御信号を出力
することも必要である。マルチプレクサ25は処理作業経
路内でローテータ27より先にあるので、解読された事前
取出し命令ポインタからの値を単にルート化することで
同様に制御することはできない。事前取出し命令ポイン
タ値をクロックサイクル内で十分速く得て、転送された
バイト値の冒頭と第1の命令が一致するようにマルチプ
レクサ25の値を選択することはできない。
【0022】しかし大きなマルチプレクサ25のサイズ
は、事前取出しポインタを生成する際に遅延を可能にす
るために選択する。全32バイトを選択することで、マル
チプレクサ25はペアで処理できる合計二対以上の最大サ
イズの命令の十分なウィンドウを出力する。その結果、
第1のクロックでそれぞれ7バイトを有する2つの完全
な命令が選択されても、マルチプレクサ25の出力は、次
の2つの対の命令(14バイト)が含まれるように、依
然十分な数のバイトの命令データをローテータ27に出力
する。これにより事前取出しポインタを生成する余分な
クロック周期がもたらされ、第1のクロックで生成され
た事前取出し命令ポインタを用いて次の2つの命令を選
択して、大きなマルチプレクサ25のマルチプレクサ26を
制御することが可能になる。従って大きなマルチプレク
サ25のマルチプレクサ26を選択するのに使用する値は、
マルチプレクサ25により与えられる命令ウィンドウの大
きさによりそのオペレーションは処理パイプラインのオ
ペレーションに重要なものでなくなるので1クロック周
期遅延されたポインタから生成することができる。図2
にはマルチプレクサ25のために生成されたポインタを格
納してこの遅延をもたらすラッチ32と、従来技術でよく
知られた方法で個々のマルチプレクサ26の選択を完遂す
る解読回路34が示されている。第1のマルチプレクサ25
に十分な幅を与えることで、マルチプレクサ25と小さい
ローテータ27は、従来技術の単一の大きなローテータ17
に取って代わることが出来、それでもローテータ27のマ
ルチプレクサをスィッチするのに必要な速度の増大をも
たらすことができる。
は、事前取出しポインタを生成する際に遅延を可能にす
るために選択する。全32バイトを選択することで、マル
チプレクサ25はペアで処理できる合計二対以上の最大サ
イズの命令の十分なウィンドウを出力する。その結果、
第1のクロックでそれぞれ7バイトを有する2つの完全
な命令が選択されても、マルチプレクサ25の出力は、次
の2つの対の命令(14バイト)が含まれるように、依
然十分な数のバイトの命令データをローテータ27に出力
する。これにより事前取出しポインタを生成する余分な
クロック周期がもたらされ、第1のクロックで生成され
た事前取出し命令ポインタを用いて次の2つの命令を選
択して、大きなマルチプレクサ25のマルチプレクサ26を
制御することが可能になる。従って大きなマルチプレク
サ25のマルチプレクサ26を選択するのに使用する値は、
マルチプレクサ25により与えられる命令ウィンドウの大
きさによりそのオペレーションは処理パイプラインのオ
ペレーションに重要なものでなくなるので1クロック周
期遅延されたポインタから生成することができる。図2
にはマルチプレクサ25のために生成されたポインタを格
納してこの遅延をもたらすラッチ32と、従来技術でよく
知られた方法で個々のマルチプレクサ26の選択を完遂す
る解読回路34が示されている。第1のマルチプレクサ25
に十分な幅を与えることで、マルチプレクサ25と小さい
ローテータ27は、従来技術の単一の大きなローテータ17
に取って代わることが出来、それでもローテータ27のマ
ルチプレクサをスィッチするのに必要な速度の増大をも
たらすことができる。
【0023】マルチプレクサ25とローテータ27を用いた
選択オペレーションは、図2の回路20を用いて命令デー
タの最後の14バイトを選択した選択過程のいくつかの段
階を例示した図3を参照することで更に理解することが
できる。図3にはそれぞれ命令データの32バイトを保持
する一連のラインが例示されている。各々のラインの各
々の文字は、実際には命令データの4つの個々のバイト
を示している。それらのラインは各々の事前取出し命令
ポインタに応答してマルチプレクサ25によりローテータ
27に転送されるバイトを示している。各々のラインの左
側の数は、ローテータ27によりプロセッサの2つの処理
チャネルにもたらされる2つの命令の第1のものの冒頭
を選択するためにローテータ27に提示する事前取出しポ
インタ・アドレスを表している。4つの文字を囲む各々
のラインの矩形は、ローテータ27により転送される14バ
イトの命令データを示している。各々の文字は4バイト
のデータを示しているので、矩形は16バイトを含んでい
るように思われるが、実際には14バイトしかローテータ
27により転送されない。矩形の右端は命令ポインタ・ア
ドレスにより示されるアドレスを示している。「A」は
Aバッファからの1組のバイトを示し、「B」はBバッ
ファからの1組の4バイトを示している。
選択オペレーションは、図2の回路20を用いて命令デー
タの最後の14バイトを選択した選択過程のいくつかの段
階を例示した図3を参照することで更に理解することが
できる。図3にはそれぞれ命令データの32バイトを保持
する一連のラインが例示されている。各々のラインの各
々の文字は、実際には命令データの4つの個々のバイト
を示している。それらのラインは各々の事前取出し命令
ポインタに応答してマルチプレクサ25によりローテータ
27に転送されるバイトを示している。各々のラインの左
側の数は、ローテータ27によりプロセッサの2つの処理
チャネルにもたらされる2つの命令の第1のものの冒頭
を選択するためにローテータ27に提示する事前取出しポ
インタ・アドレスを表している。4つの文字を囲む各々
のラインの矩形は、ローテータ27により転送される14バ
イトの命令データを示している。各々の文字は4バイト
のデータを示しているので、矩形は16バイトを含んでい
るように思われるが、実際には14バイトしかローテータ
27により転送されない。矩形の右端は命令ポインタ・ア
ドレスにより示されるアドレスを示している。「A」は
Aバッファからの1組のバイトを示し、「B」はBバッ
ファからの1組の4バイトを示している。
【0024】Aバッファの開始から始まる32バイトをマ
ルチプレクサ25が選択する開始点を仮定すると、マルチ
プレクサ25は命令バイトを完全にAバッファからローテ
ータ27に出力する。それらのバイトから、矩形はローテ
ータ27により選択される14バイトを示す(ここでも、矩
形は16バイトを含むが、実際には14しか選択されな
い)。ここで分かるように、追加の16バイトは逐次命令
を次のクロック周期に選択できる矩形の左に存在する。
命令のラインは上部ラインから下降しているとみると、
アドレスは各々のラインで1つの4バイト増分だけ右に
移動している。これがマルチプレクサ25への選択入力で
生じると、逐次命令データの全32バイトがローテータ27
による選択ができる各ラインにあるように、右側のA値
はB値で置換されることが分かる。最終的に、図3の全
てのA値がB値で置換されると、バッファAの命令デー
タのバイトは命令キャッシュ・メモリからの次の32逐次
バイトを含む新しいラインにより置換される。そしてそ
れらのA値は右側から始まってB値を置換し始める。こ
れはマルチプレクサ25により行われる循環過程を示して
いる。
ルチプレクサ25が選択する開始点を仮定すると、マルチ
プレクサ25は命令バイトを完全にAバッファからローテ
ータ27に出力する。それらのバイトから、矩形はローテ
ータ27により選択される14バイトを示す(ここでも、矩
形は16バイトを含むが、実際には14しか選択されな
い)。ここで分かるように、追加の16バイトは逐次命令
を次のクロック周期に選択できる矩形の左に存在する。
命令のラインは上部ラインから下降しているとみると、
アドレスは各々のラインで1つの4バイト増分だけ右に
移動している。これがマルチプレクサ25への選択入力で
生じると、逐次命令データの全32バイトがローテータ27
による選択ができる各ラインにあるように、右側のA値
はB値で置換されることが分かる。最終的に、図3の全
てのA値がB値で置換されると、バッファAの命令デー
タのバイトは命令キャッシュ・メモリからの次の32逐次
バイトを含む新しいラインにより置換される。そしてそ
れらのA値は右側から始まってB値を置換し始める。こ
れはマルチプレクサ25により行われる循環過程を示して
いる。
【0025】図3から分かるように、ローテータ27によ
り選択されたバイトを示す矩形内の命令データのバイト
は、図で左側に徐々に移動する。転送された命令データ
の量の単一の4バイト変化がマルチプレクサ25とローテ
ータ27の各々について例示されているが、ポインタ変化
は解読する命令の長さにしたがって明かに変化する。し
かしローテータ27が選択するポインタが14バイトジャン
プしても、マルチプレクサ25により転送される32バイト
は、バッファAとBからのマルチプレクサ25によるバイ
トの選択が変化しなくても、この変化を十分可能にす
る。
り選択されたバイトを示す矩形内の命令データのバイト
は、図で左側に徐々に移動する。転送された命令データ
の量の単一の4バイト変化がマルチプレクサ25とローテ
ータ27の各々について例示されているが、ポインタ変化
は解読する命令の長さにしたがって明かに変化する。し
かしローテータ27が選択するポインタが14バイトジャン
プしても、マルチプレクサ25により転送される32バイト
は、バッファAとBからのマルチプレクサ25によるバイ
トの選択が変化しなくても、この変化を十分可能にす
る。
【0026】図4は、図2の回路20でのオペレーション
のいくつかのステップを示したものである。図4は、1
クロック周期中にマルチプレクサ25により転送されるデ
ータのバイトの全てを右から左にそれぞれ含むライン上
の数を例示している。ラインは下向きに進んである逐次
のクロック周期数中にマルチプレクサ25により転送され
るデータのバイトを示している。列は右から始まって0
から28まで4バイトの増分で指定されており、マルチプ
レクサ25による各々の転送は4バイトの命令データの細
分化で生じることを示している。クロック1では、分岐
命令はマルチプレクサ25とローテータ27の各々に対して
選択値を与える。選択値はAバッファの第1(0)バイ
トを同時に処理する2つの命令の最初のバイトの冒頭と
して指し示す。この選択値は解読され、マルチプレクサ
25の最も右のマルチプレクサは最も右のバイトをAレジ
スタからローテータ27の0入力に転送するようになる。
左に先立つ大きなマルチプレクサ25のマルチプレクサ26
の各々はシーケンス内の次の4バイトをAレジスタから
ローテータ27の次のマルチプレクサに転送する。
のいくつかのステップを示したものである。図4は、1
クロック周期中にマルチプレクサ25により転送されるデ
ータのバイトの全てを右から左にそれぞれ含むライン上
の数を例示している。ラインは下向きに進んである逐次
のクロック周期数中にマルチプレクサ25により転送され
るデータのバイトを示している。列は右から始まって0
から28まで4バイトの増分で指定されており、マルチプ
レクサ25による各々の転送は4バイトの命令データの細
分化で生じることを示している。クロック1では、分岐
命令はマルチプレクサ25とローテータ27の各々に対して
選択値を与える。選択値はAバッファの第1(0)バイ
トを同時に処理する2つの命令の最初のバイトの冒頭と
して指し示す。この選択値は解読され、マルチプレクサ
25の最も右のマルチプレクサは最も右のバイトをAレジ
スタからローテータ27の0入力に転送するようになる。
左に先立つ大きなマルチプレクサ25のマルチプレクサ26
の各々はシーケンス内の次の4バイトをAレジスタから
ローテータ27の次のマルチプレクサに転送する。
【0027】分岐命令により生成されたポインタを受け
取るローテータ27は、右側で始まる第1の14バイトを転
送するために選択する。それらの14バイトは、ローテー
タ27により転送されるデータのウィンドウとして囲んだ
矩形部分内に示されている。矩形括弧の右側の矢印は、
ローテータ27を駆動する選択値(ポインタ)により示さ
れるバイト位置を指し示している。
取るローテータ27は、右側で始まる第1の14バイトを転
送するために選択する。それらの14バイトは、ローテー
タ27により転送されるデータのウィンドウとして囲んだ
矩形部分内に示されている。矩形括弧の右側の矢印は、
ローテータ27を駆動する選択値(ポインタ)により示さ
れるバイト位置を指し示している。
【0028】次のクロックでは、第1のクロックで解読
器に転送された命令は解読されて、第1のクロックで転
送された2つの命令の長さを提供する。2つの長さを加
え、その値はローテータ27の選択端子にフィードバック
して選択をライン2上の矢印により示した位置にまで移
動する。これによりローテータ27による命令バイトの選
択を変えて、囲んだバイトにより示されたデータのウィ
ンドウを囲むようになる。ここで分かるように、矢印は
最後のクロックで転送された2つの命令が終了した位置
を示している。しかしマルチプレクサ25は遅延ポインタ
入力をまだ受け取っていないので、それが転送する32バ
イトの命令データは変更されていない。例えそうであっ
ても、第1のクロックで14バイトもの多くのバイトが転
送されていてもローテータ27によりまだ転送されていな
い多くの命令のバイトは、依然転送されている。
器に転送された命令は解読されて、第1のクロックで転
送された2つの命令の長さを提供する。2つの長さを加
え、その値はローテータ27の選択端子にフィードバック
して選択をライン2上の矢印により示した位置にまで移
動する。これによりローテータ27による命令バイトの選
択を変えて、囲んだバイトにより示されたデータのウィ
ンドウを囲むようになる。ここで分かるように、矢印は
最後のクロックで転送された2つの命令が終了した位置
を示している。しかしマルチプレクサ25は遅延ポインタ
入力をまだ受け取っていないので、それが転送する32バ
イトの命令データは変更されていない。例えそうであっ
ても、第1のクロックで14バイトもの多くのバイトが転
送されていてもローテータ27によりまだ転送されていな
い多くの命令のバイトは、依然転送されている。
【0029】クロック3では、ローテータ27の選択端子
のポインタは移動して、矩形の括弧にはマルチプレクサ
25により転送されたデータのライン上に命令データの最
も左側の4バイトが含まれるようになる。この時点で、
第1のクロックで転送された命令の解読オペレーション
からの遅延ポインタ値は、マルチプレクサ25により転送
されるデータを選択する。これにより大きなマルチプレ
クサ25の最も右側のマルチプレクサ26はBバッファから
2つの最も右側のバイトを転送する。Bバッファからの
命令データのバイトは、ローテータ27によりまだ転送さ
れておらず、マルチプレクサ25の出力で得ることができ
る状態になっていることに留意する。ローテータ27によ
り既に転送されたAレジスタからの追加8バイト(クロ
ック3のBの左側に2つのAで示す)は、マルチプレク
サ25により既に転送されている。従ってマルチプレクサ
25により与えられるウィンドウはまだ十分大きく、ロー
テータ27により適切に転送することができる。
のポインタは移動して、矩形の括弧にはマルチプレクサ
25により転送されたデータのライン上に命令データの最
も左側の4バイトが含まれるようになる。この時点で、
第1のクロックで転送された命令の解読オペレーション
からの遅延ポインタ値は、マルチプレクサ25により転送
されるデータを選択する。これにより大きなマルチプレ
クサ25の最も右側のマルチプレクサ26はBバッファから
2つの最も右側のバイトを転送する。Bバッファからの
命令データのバイトは、ローテータ27によりまだ転送さ
れておらず、マルチプレクサ25の出力で得ることができ
る状態になっていることに留意する。ローテータ27によ
り既に転送されたAレジスタからの追加8バイト(クロ
ック3のBの左側に2つのAで示す)は、マルチプレク
サ25により既に転送されている。従ってマルチプレクサ
25により与えられるウィンドウはまだ十分大きく、ロー
テータ27により適切に転送することができる。
【0030】クロック4では、命令の解読はポインタは
移動せず(例えばキャッシュミス故に処理の機能停止が
必要となる)同じ命令がUチャネルに転送され続けるこ
とを示すと仮定する。従ってローテータ27の選択端子の
ポインタは移動しない。しかしマルチプレクサ25の選択
端子に対する遅延ポインタはここでクロック2で生じた
転送から解読された値を受け取る。その結果、マルチプ
レクサ25はBバッファから追加バイトを転送してポイン
タ矢印のすぐ左の入力位置を充填する。
移動せず(例えばキャッシュミス故に処理の機能停止が
必要となる)同じ命令がUチャネルに転送され続けるこ
とを示すと仮定する。従ってローテータ27の選択端子の
ポインタは移動しない。しかしマルチプレクサ25の選択
端子に対する遅延ポインタはここでクロック2で生じた
転送から解読された値を受け取る。その結果、マルチプ
レクサ25はBバッファから追加バイトを転送してポイン
タ矢印のすぐ左の入力位置を充填する。
【0031】クロック5ではローテータ27に対するポイ
ンタは左に先に括弧したデータの終端まで移動し、ここ
でラインの冒頭を取り囲んでBバッファからの値をライ
ンの遥か右に含める。遅延ポインタはクロック3での転
送から解読された値を受け取るが、移動しない。クロッ
ク6で、クロック5での転送から解読されたポインタは
ローテータ27による選択を遥か右に移動し、Bバッファ
データのみを囲む。クロック4での転送から解読された
遅延値により、マルチプレクサ25はBバッファからの追
加バイトを転送する。
ンタは左に先に括弧したデータの終端まで移動し、ここ
でラインの冒頭を取り囲んでBバッファからの値をライ
ンの遥か右に含める。遅延ポインタはクロック3での転
送から解読された値を受け取るが、移動しない。クロッ
ク6で、クロック5での転送から解読されたポインタは
ローテータ27による選択を遥か右に移動し、Bバッファ
データのみを囲む。クロック4での転送から解読された
遅延値により、マルチプレクサ25はBバッファからの追
加バイトを転送する。
【0032】このように本発明のオペレーションの例示
は、この構成には2対1のマルチプレクサが含まれ、ロ
ーテータ27により同時に機能する2つのチャネルを維
持するのに得られる必要時間間隔内で容量性負荷がスィ
ッチングを抑制しない程度まで重嬰経路でのスィッチの
数の減少を可能にしながら、スーパースカラーの両方の
チャネルにより命令の選択に十分なウィンドウの取り扱
いが可能になることを示している。ローテータ27での
容量性負荷の減少に加えて、本発明の構成によりもたら
される追加速度の利点として、従来技術で使用した64
バイトのローテータを制御するのに6ビットが必要であ
ってのに対して、ローテータ27のマルチプレクサを制
御するのに命令の解読から5ビットしか生成する必要の
ないことがある。これによりローテータ27を作動する
制御値を生成する際にともかくより多くの余裕がもたら
される。
は、この構成には2対1のマルチプレクサが含まれ、ロ
ーテータ27により同時に機能する2つのチャネルを維
持するのに得られる必要時間間隔内で容量性負荷がスィ
ッチングを抑制しない程度まで重嬰経路でのスィッチの
数の減少を可能にしながら、スーパースカラーの両方の
チャネルにより命令の選択に十分なウィンドウの取り扱
いが可能になることを示している。ローテータ27での
容量性負荷の減少に加えて、本発明の構成によりもたら
される追加速度の利点として、従来技術で使用した64
バイトのローテータを制御するのに6ビットが必要であ
ってのに対して、ローテータ27のマルチプレクサを制
御するのに命令の解読から5ビットしか生成する必要の
ないことがある。これによりローテータ27を作動する
制御値を生成する際にともかくより多くの余裕がもたら
される。
【図1】従来技術により設計された回路構造のブロック
図である。
図である。
【図2】本発明により設計された回路構造のブロック図
である。
である。
【図3】本発明の理解に有用な異なる信号状態を示す図
である。
である。
【図4】本発明の理解に有用な異なる信号状態を示す別
の図である。
の図である。
23、24 バッファ、 25 大きなマルチプレクサ 26 マルチプレクサ 27 ローテータ
Claims (2)
- 【請求項1】 命令データの区別されていないバイトの
シーケンスから命令データの第1のバイトのシーケンス
を受け取る手段(23,24)と、 処理された最後のバイトを示すポインタを用いて命令デ
ータの前記第1のバイトのシーケンスの中で任意に選択
したバイトで始まる命令データの第2のバイトのシーケ
ンスを命令データの前記第1のバイトのシーケンスから
選択する手段(25)と、 処理された最後のバイトを示す前記ポインタを用いて命
令データの前記第2のバイトのシーケンスの中で任意に
選択したバイトで始まる命令データの第3のバイトのシ
ーケンスを命令データの前記第2のバイトのシーケンス
から選択する手段(27)とからなり、 前記第3のバイトのシーケンスは前記第2のシーケンス
よりも長さが半分以下であり、前記第2のバイトのシー
ケンス内で完了することを特徴とする、スーパースカラ
ーマシンが二つの命令を同時に処理するために用いるこ
とができる命令データの区別されていないバイトのシー
ケンスから複数の命令を選択する回路。 - 【請求項2】 命令データの区別されていないバイトの
シーケンスから命令データの第1のバイトのシーケンス
を受け取る手段(23,24)と、 前記第1のバイトのシーケンスの任意のバイトで始ま
り、同時に解読できる命令の数の少なくとも2倍を含む
のに十分な長さの第2のバイトのシーケンスを選択する
マルチプレクサ手段(25)と、 命令データの前記第2のバイトのシーケンスから、処理
すべき最初の命令で始まり、同時に解読すべき命令全て
を含むのに十分な長さを有する第3のバイトのシーケン
スを選択するローテータ手段(27)とからなる命令デ
ータの区別されていないバイトのシーケンスから複数の
解読する命令を選択する回路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US83196892A | 1992-02-06 | 1992-02-06 | |
US831968 | 1992-02-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH064282A JPH064282A (ja) | 1994-01-14 |
JP2929057B2 true JP2929057B2 (ja) | 1999-08-03 |
Family
ID=25260319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5040757A Expired - Fee Related JP2929057B2 (ja) | 1992-02-06 | 1993-02-05 | 命令データのストリームから複数の命令を選択する回路 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5581718A (ja) |
JP (1) | JP2929057B2 (ja) |
GB (1) | GB2263985B (ja) |
Families Citing this family (189)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5630082A (en) * | 1993-10-29 | 1997-05-13 | Advanced Micro Devices, Inc. | Apparatus and method for instruction queue scanning |
DE69434669T2 (de) * | 1993-10-29 | 2006-10-12 | Advanced Micro Devices, Inc., Sunnyvale | Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge |
EP0651320B1 (en) * | 1993-10-29 | 2001-05-23 | Advanced Micro Devices, Inc. | Superscalar instruction decoder |
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
US5608885A (en) * | 1994-03-01 | 1997-03-04 | Intel Corporation | Method for handling instructions from a branch prior to instruction decoding in a computer which executes variable-length instructions |
US5928357A (en) * | 1994-09-15 | 1999-07-27 | Intel Corporation | Circuitry and method for performing branching without pipeline delay |
US5819057A (en) * | 1995-01-25 | 1998-10-06 | Advanced Micro Devices, Inc. | Superscalar microprocessor including an instruction alignment unit with limited dispatch to decode units |
US5878244A (en) * | 1995-01-25 | 1999-03-02 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received |
US5901302A (en) * | 1995-01-25 | 1999-05-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions |
US6006324A (en) | 1995-01-25 | 1999-12-21 | Advanced Micro Devices, Inc. | High performance superscalar alignment unit |
US5903741A (en) * | 1995-01-25 | 1999-05-11 | Advanced Micro Devices, Inc. | Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions |
US6237082B1 (en) | 1995-01-25 | 2001-05-22 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received |
US5832249A (en) * | 1995-01-25 | 1998-11-03 | Advanced Micro Devices, Inc. | High performance superscalar alignment unit |
US5737550A (en) * | 1995-03-28 | 1998-04-07 | Advanced Micro Devices, Inc. | Cache memory to processor bus interface and method thereof |
US5832297A (en) * | 1995-04-12 | 1998-11-03 | Advanced Micro Devices, Inc. | Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations |
US5819059A (en) * | 1995-04-12 | 1998-10-06 | Advanced Micro Devices, Inc. | Predecode unit adapted for variable byte-length instruction set processors and method of operating the same |
US5802588A (en) * | 1995-04-12 | 1998-09-01 | Advanced Micro Devices, Inc. | Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer |
US5764946A (en) * | 1995-04-12 | 1998-06-09 | Advanced Micro Devices | Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address |
US5822574A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same |
US5991869A (en) * | 1995-04-12 | 1999-11-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a high speed instruction alignment unit |
US5758114A (en) * | 1995-04-12 | 1998-05-26 | Advanced Micro Devices, Inc. | High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor |
US5887152A (en) * | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
US5835753A (en) * | 1995-04-12 | 1998-11-10 | Advanced Micro Devices, Inc. | Microprocessor with dynamically extendable pipeline stages and a classifying circuit |
US5822558A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor |
US5900012A (en) * | 1995-05-10 | 1999-05-04 | Advanced Micro Devices, Inc. | Storage device having varying access times and a superscalar microprocessor employing the same |
US5875315A (en) * | 1995-06-07 | 1999-02-23 | Advanced Micro Devices, Inc. | Parallel and scalable instruction scanning unit |
US5768610A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Lookahead register value generator and a superscalar microprocessor employing same |
US5680578A (en) * | 1995-06-07 | 1997-10-21 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to specify expanded functionality and a computer system employing same |
US5768574A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor |
US5878255A (en) * | 1995-06-07 | 1999-03-02 | Advanced Micro Devices, Inc. | Update unit for providing a delayed update to a branch prediction array |
US5859991A (en) * | 1995-06-07 | 1999-01-12 | Advanced Micro Devices, Inc. | Parallel and scalable method for identifying valid instructions and a superscalar microprocessor including an instruction scanning unit employing the method |
US6604190B1 (en) | 1995-06-07 | 2003-08-05 | Advanced Micro Devices, Inc. | Data address prediction structure and a method for operating the same |
US5822778A (en) * | 1995-06-07 | 1998-10-13 | Advanced Micro Devices, Inc. | Microprocessor and method of using a segment override prefix instruction field to expand the register file |
US5761712A (en) * | 1995-06-07 | 1998-06-02 | Advanced Micro Devices | Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array |
US5875324A (en) * | 1995-06-07 | 1999-02-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock |
US5781789A (en) * | 1995-08-31 | 1998-07-14 | Advanced Micro Devices, Inc. | Superscaler microprocessor employing a parallel mask decoder |
US5826071A (en) * | 1995-08-31 | 1998-10-20 | Advanced Micro Devices, Inc. | Parallel mask decoder and method for generating said mask |
US5987561A (en) | 1995-08-31 | 1999-11-16 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle |
US5893146A (en) * | 1995-08-31 | 1999-04-06 | Advanced Micro Design, Inc. | Cache structure having a reduced tag comparison to enable data transfer from said cache |
US5860104A (en) * | 1995-08-31 | 1999-01-12 | Advanced Micro Devices, Inc. | Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates |
US5845323A (en) * | 1995-08-31 | 1998-12-01 | Advanced Micro Devices, Inc. | Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time |
US5854921A (en) * | 1995-08-31 | 1998-12-29 | Advanced Micro Devices, Inc. | Stride-based data address prediction structure |
US5752069A (en) * | 1995-08-31 | 1998-05-12 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing away prediction structure |
US6093213A (en) * | 1995-10-06 | 2000-07-25 | Advanced Micro Devices, Inc. | Flexible implementation of a system management mode (SMM) in a processor |
US5809273A (en) * | 1996-01-26 | 1998-09-15 | Advanced Micro Devices, Inc. | Instruction predecode and multiple instruction decode |
US5819056A (en) * | 1995-10-06 | 1998-10-06 | Advanced Micro Devices, Inc. | Instruction buffer organization method and system |
US5926642A (en) * | 1995-10-06 | 1999-07-20 | Advanced Micro Devices, Inc. | RISC86 instruction set |
US5920713A (en) * | 1995-10-06 | 1999-07-06 | Advanced Micro Devices, Inc. | Instruction decoder including two-way emulation code branching |
US5794063A (en) * | 1996-01-26 | 1998-08-11 | Advanced Micro Devices, Inc. | Instruction decoder including emulation using indirect specifiers |
US5872947A (en) * | 1995-10-24 | 1999-02-16 | Advanced Micro Devices, Inc. | Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions |
US5892936A (en) * | 1995-10-30 | 1999-04-06 | Advanced Micro Devices, Inc. | Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register |
US5881278A (en) * | 1995-10-30 | 1999-03-09 | Advanced Micro Devices, Inc. | Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch |
US5933618A (en) * | 1995-10-30 | 1999-08-03 | Advanced Micro Devices, Inc. | Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction |
US5796974A (en) * | 1995-11-07 | 1998-08-18 | Advanced Micro Devices, Inc. | Microcode patching apparatus and method |
US5835744A (en) * | 1995-11-20 | 1998-11-10 | Advanced Micro Devices, Inc. | Microprocessor configured to swap operands in order to minimize dependency checking logic |
US5787474A (en) * | 1995-11-20 | 1998-07-28 | Advanced Micro Devices, Inc. | Dependency checking structure for a pair of caches which are accessed from different pipeline stages of an instruction processing pipeline |
US5765035A (en) * | 1995-11-20 | 1998-06-09 | Advanced Micro Devices, Inc. | Recorder buffer capable of detecting dependencies between accesses to a pair of caches |
US5903910A (en) * | 1995-11-20 | 1999-05-11 | Advanced Micro Devices, Inc. | Method for transferring data between a pair of caches configured to be accessed from different stages of an instruction processing pipeline |
US5809272A (en) * | 1995-11-29 | 1998-09-15 | Exponential Technology Inc. | Early instruction-length pre-decode of variable-length instructions in a superscalar processor |
US5864707A (en) * | 1995-12-11 | 1999-01-26 | Advanced Micro Devices, Inc. | Superscalar microprocessor configured to predict return addresses from a return stack storage |
US5819080A (en) * | 1996-01-02 | 1998-10-06 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor |
US5822559A (en) * | 1996-01-02 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions |
US5742791A (en) * | 1996-02-14 | 1998-04-21 | Advanced Micro Devices, Inc. | Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor |
US5787266A (en) * | 1996-02-20 | 1998-07-28 | Advanced Micro Devices, Inc. | Apparatus and method for accessing special registers without serialization |
US5848287A (en) * | 1996-02-20 | 1998-12-08 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches |
US5687110A (en) * | 1996-02-20 | 1997-11-11 | Advanced Micro Devices, Inc. | Array having an update circuit for updating a storage location with a value stored in another storage location |
US5790821A (en) * | 1996-03-08 | 1998-08-04 | Advanced Micro Devices, Inc. | Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor |
US5813033A (en) * | 1996-03-08 | 1998-09-22 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache |
US5850567A (en) * | 1996-03-15 | 1998-12-15 | Adaptec, Inc. | Method for specifying concurrent execution of a string of I/O command blocks in a chain structure |
US5752259A (en) * | 1996-03-26 | 1998-05-12 | Advanced Micro Devices, Inc. | Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache |
US5838943A (en) * | 1996-03-26 | 1998-11-17 | Advanced Micro Devices, Inc. | Apparatus for speculatively storing and restoring data to a cache memory |
US5835968A (en) * | 1996-04-17 | 1998-11-10 | Advanced Micro Devices, Inc. | Apparatus for providing memory and register operands concurrently to functional units |
US6085302A (en) * | 1996-04-17 | 2000-07-04 | Advanced Micro Devices, Inc. | Microprocessor having address generation units for efficient generation of memory operation addresses |
US5838631A (en) | 1996-04-19 | 1998-11-17 | Integrated Device Technology, Inc. | Fully synchronous pipelined ram |
US5748978A (en) * | 1996-05-17 | 1998-05-05 | Advanced Micro Devices, Inc. | Byte queue divided into multiple subqueues for optimizing instruction selection logic |
US5835511A (en) * | 1996-05-17 | 1998-11-10 | Advanced Micro Devices, Inc. | Method and mechanism for checking integrity of byte enable signals |
US6108769A (en) | 1996-05-17 | 2000-08-22 | Advanced Micro Devices, Inc. | Dependency table for reducing dependency checking hardware |
US5918056A (en) * | 1996-05-17 | 1999-06-29 | Advanced Micro Devices, Inc. | Segmentation suspend mode for real-time interrupt support |
US5867681A (en) * | 1996-05-23 | 1999-02-02 | Lsi Logic Corporation | Microprocessor having register dependent immediate decompression |
US5822560A (en) * | 1996-05-23 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus for efficient instruction execution via variable issue and variable control vectors per issue |
US5794010A (en) * | 1996-06-10 | 1998-08-11 | Lsi Logic Corporation | Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor |
US5896519A (en) * | 1996-06-10 | 1999-04-20 | Lsi Logic Corporation | Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions |
US6049863A (en) * | 1996-07-24 | 2000-04-11 | Advanced Micro Devices, Inc. | Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor |
US5867680A (en) * | 1996-07-24 | 1999-02-02 | Advanced Micro Devices, Inc. | Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions |
US5903740A (en) | 1996-07-24 | 1999-05-11 | Advanced Micro Devices, Inc. | Apparatus and method for retiring instructions in excess of the number of accessible write ports |
US5813045A (en) * | 1996-07-24 | 1998-09-22 | Advanced Micro Devices, Inc. | Conditional early data address generation mechanism for a microprocessor |
US5872951A (en) * | 1996-07-26 | 1999-02-16 | Advanced Micro Design, Inc. | Reorder buffer having a future file for storing speculative instruction execution results |
US5900013A (en) * | 1996-07-26 | 1999-05-04 | Advanced Micro Devices, Inc. | Dual comparator scheme for detecting a wrap-around condition and generating a cancel signal for removing wrap-around buffer entries |
US5946468A (en) * | 1996-07-26 | 1999-08-31 | Advanced Micro Devices, Inc. | Reorder buffer having an improved future file for storing speculative instruction execution results |
US5915110A (en) * | 1996-07-26 | 1999-06-22 | Advanced Micro Devices, Inc. | Branch misprediction recovery in a reorder buffer having a future file |
US5872943A (en) * | 1996-07-26 | 1999-02-16 | Advanced Micro Devices, Inc. | Apparatus for aligning instructions using predecoded shift amounts |
US5822575A (en) * | 1996-09-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction |
US5765016A (en) * | 1996-09-12 | 1998-06-09 | Advanced Micro Devices, Inc. | Reorder buffer configured to store both speculative and committed register states |
US5754811A (en) * | 1996-10-08 | 1998-05-19 | Putrino; Michael | Instruction dispatch queue for improved instruction cache to queue timing |
US5794028A (en) * | 1996-10-17 | 1998-08-11 | Advanced Micro Devices, Inc. | Shared branch prediction structure |
US5870579A (en) * | 1996-11-18 | 1999-02-09 | Advanced Micro Devices, Inc. | Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception |
US5920710A (en) * | 1996-11-18 | 1999-07-06 | Advanced Micro Devices, Inc. | Apparatus and method for modifying status bits in a reorder buffer with a large speculative state |
US5954816A (en) * | 1996-11-19 | 1999-09-21 | Advanced Micro Devices, Inc. | Branch selector prediction |
US5995749A (en) * | 1996-11-19 | 1999-11-30 | Advanced Micro Devices, Inc. | Branch prediction mechanism employing branch selectors to select a branch prediction |
US5978906A (en) * | 1996-11-19 | 1999-11-02 | Advanced Micro Devices, Inc. | Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions |
US6175906B1 (en) | 1996-12-06 | 2001-01-16 | Advanced Micro Devices, Inc. | Mechanism for fast revalidation of virtual tags |
US5881305A (en) * | 1996-12-13 | 1999-03-09 | Advanced Micro Devices, Inc. | Register rename stack for a microprocessor |
US5870580A (en) * | 1996-12-13 | 1999-02-09 | Advanced Micro Devices, Inc. | Decoupled forwarding reorder buffer configured to allocate storage in chunks for instructions having unresolved dependencies |
US5983321A (en) * | 1997-03-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache |
US5862065A (en) * | 1997-02-13 | 1999-01-19 | Advanced Micro Devices, Inc. | Method and circuit for fast generation of zero flag condition code in a microprocessor-based computer |
US5768555A (en) | 1997-02-20 | 1998-06-16 | Advanced Micro Devices, Inc. | Reorder buffer employing last in buffer and last in line bits |
US6141740A (en) * | 1997-03-03 | 2000-10-31 | Advanced Micro Devices, Inc. | Apparatus and method for microcode patching for generating a next address |
US6233672B1 (en) | 1997-03-06 | 2001-05-15 | Advanced Micro Devices, Inc. | Piping rounding mode bits with floating point instructions to eliminate serialization |
US5850532A (en) * | 1997-03-10 | 1998-12-15 | Advanced Micro Devices, Inc. | Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched |
US5852727A (en) * | 1997-03-10 | 1998-12-22 | Advanced Micro Devices, Inc. | Instruction scanning unit for locating instructions via parallel scanning of start and end byte information |
US5968163A (en) | 1997-03-10 | 1999-10-19 | Advanced Micro Devices, Inc. | Microcode scan unit for scanning microcode instructions using predecode data |
US5859992A (en) * | 1997-03-12 | 1999-01-12 | Advanced Micro Devices, Inc. | Instruction alignment using a dispatch list and a latch list |
US5828873A (en) * | 1997-03-19 | 1998-10-27 | Advanced Micro Devices, Inc. | Assembly queue for a floating point unit |
US5930492A (en) * | 1997-03-19 | 1999-07-27 | Advanced Micro Devices, Inc. | Rapid pipeline control using a control word and a steering word |
US5887185A (en) * | 1997-03-19 | 1999-03-23 | Advanced Micro Devices, Inc. | Interface for coupling a floating point unit to a reorder buffer |
US5859998A (en) * | 1997-03-19 | 1999-01-12 | Advanced Micro Devices, Inc. | Hierarchical microcode implementation of floating point instructions for a microprocessor |
US5987235A (en) * | 1997-04-04 | 1999-11-16 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions |
US5901076A (en) * | 1997-04-16 | 1999-05-04 | Advanced Micro Designs, Inc. | Ripple carry shifter in a floating point arithmetic unit of a microprocessor |
US6003128A (en) * | 1997-05-01 | 1999-12-14 | Advanced Micro Devices, Inc. | Number of pipeline stages and loop length related counter differential based end-loop prediction |
US6122729A (en) | 1997-05-13 | 2000-09-19 | Advanced Micro Devices, Inc. | Prefetch buffer which stores a pointer indicating an initial predecode position |
US5845101A (en) * | 1997-05-13 | 1998-12-01 | Advanced Micro Devices, Inc. | Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache |
US6009511A (en) * | 1997-06-11 | 1999-12-28 | Advanced Micro Devices, Inc. | Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers |
US6073230A (en) * | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
US5940602A (en) * | 1997-06-11 | 1999-08-17 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations |
US5872946A (en) * | 1997-06-11 | 1999-02-16 | Advanced Micro Devices, Inc. | Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch |
US5933629A (en) | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for detecting microbranches early |
US5898865A (en) * | 1997-06-12 | 1999-04-27 | Advanced Micro Devices, Inc. | Apparatus and method for predicting an end of loop for string instructions |
US5933626A (en) * | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for tracing microprocessor instructions |
US5983337A (en) * | 1997-06-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction |
US6012125A (en) * | 1997-06-20 | 2000-01-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions |
US5978901A (en) * | 1997-08-21 | 1999-11-02 | Advanced Micro Devices, Inc. | Floating point and multimedia unit with data type reclassification capability |
US6101577A (en) * | 1997-09-15 | 2000-08-08 | Advanced Micro Devices, Inc. | Pipelined instruction cache and branch prediction mechanism therefor |
US5931943A (en) * | 1997-10-21 | 1999-08-03 | Advanced Micro Devices, Inc. | Floating point NaN comparison |
US6032252A (en) * | 1997-10-28 | 2000-02-29 | Advanced Micro Devices, Inc. | Apparatus and method for efficient loop control in a superscalar microprocessor |
US5974542A (en) * | 1997-10-30 | 1999-10-26 | Advanced Micro Devices, Inc. | Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication |
US6230259B1 (en) | 1997-10-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Transparent extended state save |
US6012106A (en) * | 1997-11-03 | 2000-01-04 | Digital Equipment Corporation | Prefetch management for DMA read transactions depending upon past history of actual transfer lengths |
US6157996A (en) * | 1997-11-13 | 2000-12-05 | Advanced Micro Devices, Inc. | Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space |
US6199154B1 (en) | 1997-11-17 | 2001-03-06 | Advanced Micro Devices, Inc. | Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access |
US6154818A (en) * | 1997-11-20 | 2000-11-28 | Advanced Micro Devices, Inc. | System and method of controlling access to privilege partitioned address space for a model specific register file |
US6079003A (en) | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache |
US6516395B1 (en) | 1997-11-20 | 2003-02-04 | Advanced Micro Devices, Inc. | System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes |
US6079005A (en) * | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address |
US5974432A (en) * | 1997-12-05 | 1999-10-26 | Advanced Micro Devices, Inc. | On-the-fly one-hot encoding of leading zero count |
GB2332075B (en) * | 1997-12-06 | 2002-08-07 | Mitel Corp | Optimized instruction storage and distribution for parallel processors architectures |
US5870578A (en) * | 1997-12-09 | 1999-02-09 | Advanced Micro Devices, Inc. | Workload balancing in a microprocessor for reduced instruction dispatch stalling |
US6061775A (en) * | 1997-12-12 | 2000-05-09 | Advanced Micro Devices, Inc. | Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types |
US5890006A (en) * | 1997-12-12 | 1999-03-30 | Advanced Micro Devices, Inc. | Apparatus for extracting instruction specific bytes from an instruction |
US6134650A (en) * | 1997-12-12 | 2000-10-17 | Advanced Micro Devices, Inc. | Apparatus and method for predicting a first scanned instruction as microcode instruction prior to scanning predecode data |
US6157986A (en) * | 1997-12-16 | 2000-12-05 | Advanced Micro Devices, Inc. | Fast linear tag validation unit for use in microprocessor |
US6016545A (en) * | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor |
US6016533A (en) * | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Way prediction logic for cache array |
US6018798A (en) * | 1997-12-18 | 2000-01-25 | Advanced Micro Devices, Inc. | Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle |
US6112018A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Apparatus for exchanging two stack registers |
US6112296A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Floating point stack manipulation using a register map and speculative top of stack values |
US6115320A (en) * | 1998-02-23 | 2000-09-05 | Integrated Device Technology, Inc. | Separate byte control on fully synchronous pipelined SRAM |
US6175908B1 (en) | 1998-04-30 | 2001-01-16 | Advanced Micro Devices, Inc. | Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte |
US6141745A (en) * | 1998-04-30 | 2000-10-31 | Advanced Micro Devices, Inc. | Functional bit identifying a prefix byte via a particular state regardless of type of instruction |
US6122656A (en) | 1998-07-31 | 2000-09-19 | Advanced Micro Devices, Inc. | Processor configured to map logical register numbers to physical register numbers using virtual register numbers |
US6119223A (en) * | 1998-07-31 | 2000-09-12 | Advanced Micro Devices, Inc. | Map unit having rapid misprediction recovery |
US6230262B1 (en) | 1998-07-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Processor configured to selectively free physical registers upon retirement of instructions |
US6249861B1 (en) | 1998-12-03 | 2001-06-19 | Sun Microsystems, Inc. | Instruction fetch unit aligner for a non-power of two size VLIW instruction |
US7117342B2 (en) * | 1998-12-03 | 2006-10-03 | Sun Microsystems, Inc. | Implicitly derived register specifiers in a processor |
US6314509B1 (en) | 1998-12-03 | 2001-11-06 | Sun Microsystems, Inc. | Efficient method for fetching instructions having a non-power of two size |
US7114056B2 (en) | 1998-12-03 | 2006-09-26 | Sun Microsystems, Inc. | Local and global register partitioning in a VLIW processor |
US6321325B1 (en) | 1998-12-03 | 2001-11-20 | Sun Microsystems, Inc. | Dual in-line buffers for an instruction fetch unit |
JP3490007B2 (ja) * | 1998-12-17 | 2004-01-26 | 富士通株式会社 | 命令制御装置 |
US6233642B1 (en) * | 1999-01-14 | 2001-05-15 | International Business Machines Corporation | Method of wiring a 64-bit rotator to minimize area and maximize performance |
US6981127B1 (en) * | 1999-05-26 | 2005-12-27 | Infineon Technologies North America Corp. | Apparatus and method for aligning variable-width instructions with a prefetch buffer |
US7213129B1 (en) * | 1999-08-30 | 2007-05-01 | Intel Corporation | Method and system for a two stage pipelined instruction decode and alignment using previous instruction length |
US6438664B1 (en) | 1999-10-27 | 2002-08-20 | Advanced Micro Devices, Inc. | Microcode patch device and method for patching microcode using match registers and patch routines |
US6442707B1 (en) | 1999-10-29 | 2002-08-27 | Advanced Micro Devices, Inc. | Alternate fault handler |
US6654872B1 (en) * | 2000-01-27 | 2003-11-25 | Ati International Srl | Variable length instruction alignment device and method |
US6415376B1 (en) | 2000-06-16 | 2002-07-02 | Conexant Sytems, Inc. | Apparatus and method for issue grouping of instructions in a VLIW processor |
JP3485075B2 (ja) | 2000-07-19 | 2004-01-13 | 日本電気株式会社 | 復号回路及びその復号方法 |
US6732234B1 (en) | 2000-08-07 | 2004-05-04 | Broadcom Corporation | Direct access mode for a cache |
US6848024B1 (en) | 2000-08-07 | 2005-01-25 | Broadcom Corporation | Programmably disabling one or more cache entries |
US6748492B1 (en) | 2000-08-07 | 2004-06-08 | Broadcom Corporation | Deterministic setting of replacement policy in a cache through way selection |
US6877084B1 (en) | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US6981132B2 (en) | 2000-08-09 | 2005-12-27 | Advanced Micro Devices, Inc. | Uniform register addressing using prefix byte |
US6633969B1 (en) | 2000-08-11 | 2003-10-14 | Lsi Logic Corporation | Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions |
WO2002027482A2 (en) * | 2000-09-28 | 2002-04-04 | Intel Corporation | Multiple sources for instruction decode |
GB2367651B (en) * | 2000-10-05 | 2004-12-29 | Advanced Risc Mach Ltd | Hardware instruction translation within a processor pipeline |
US6738792B1 (en) | 2001-03-09 | 2004-05-18 | Advanced Micro Devices, Inc. | Parallel mask generator |
US7711926B2 (en) * | 2001-04-18 | 2010-05-04 | Mips Technologies, Inc. | Mapping system and method for instruction set processing |
US6748495B2 (en) | 2001-05-15 | 2004-06-08 | Broadcom Corporation | Random generator |
US7266587B2 (en) | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
US7117290B2 (en) | 2003-09-03 | 2006-10-03 | Advanced Micro Devices, Inc. | MicroTLB and micro tag for reducing power in a processor |
US10311191B2 (en) | 2017-01-26 | 2019-06-04 | Advanced Micro Devices, Inc. | Memory including side-car arrays with irregular sized entries |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4236206A (en) * | 1978-10-25 | 1980-11-25 | Digital Equipment Corporation | Central processor unit for executing instructions of variable length |
US4502111A (en) * | 1981-05-29 | 1985-02-26 | Harris Corporation | Token generator |
US5179680A (en) * | 1987-04-20 | 1993-01-12 | Digital Equipment Corporation | Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus |
US5202967A (en) * | 1988-08-09 | 1993-04-13 | Matsushita Electric Industrial Co., Ltd. | Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction |
US5113515A (en) * | 1989-02-03 | 1992-05-12 | Digital Equipment Corporation | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
-
1993
- 1993-01-14 GB GB9300724A patent/GB2263985B/en not_active Expired - Lifetime
- 1993-02-05 JP JP5040757A patent/JP2929057B2/ja not_active Expired - Fee Related
-
1994
- 1994-07-15 US US08/276,089 patent/US5581718A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
GB2263985A (en) | 1993-08-11 |
GB9300724D0 (en) | 1993-03-03 |
US5581718A (en) | 1996-12-03 |
JPH064282A (ja) | 1994-01-14 |
GB2263985B (en) | 1995-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2929057B2 (ja) | 命令データのストリームから複数の命令を選択する回路 | |
US5235686A (en) | Computer system having mixed macrocode and microcode | |
US5535347A (en) | Rotators in machine instruction length calculation | |
KR880001170B1 (ko) | 마이크로 프로세서 | |
US5922070A (en) | Pipelined data processing including program counter recycling | |
KR20040016829A (ko) | 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템 | |
JPH05158687A (ja) | プログラム制御方法及びプログラム制御装置 | |
KR20020073233A (ko) | 코프로세서 명령 실행 장치 및 방법 | |
EP0377976B1 (en) | Microcode control apparatus utilizing programmable logic array circuits | |
KR19990007479A (ko) | 분기 해저드의 저감을 적을 회로로 실현한 파이프라인 프로세서 | |
US4430708A (en) | Digital computer for executing instructions in three time-multiplexed portions | |
US4812970A (en) | Microprogram control system | |
JP2538053B2 (ja) | 制御装置 | |
US3644900A (en) | Data-processing device | |
JP2577023B2 (ja) | 情報処理装置のアドレス拡張制御方式 | |
JPH0256636A (ja) | 分岐制御装置 | |
JP3100705B2 (ja) | マイクロプロセッサ内の命令準備のための装置 | |
JP2583506B2 (ja) | データ処理装置 | |
JP2825315B2 (ja) | 情報処理装置 | |
EP0260639A2 (en) | Microprogram sequencer | |
JP3062892B2 (ja) | 演算処理装置 | |
JP3971509B2 (ja) | プロセッサ | |
JP2000181709A (ja) | 命令制御装置 | |
JP2777133B2 (ja) | 中央演算処理装置 | |
JP3117214B2 (ja) | シーケンサのマイクロプログラム制御方式 |
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: 20090521 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |