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
Application number
JP5040757A
Other languages
English (en)
Other versions
JPH064282A (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JPH064282A publication Critical patent/JPH064282A/ja
Application granted granted Critical
Publication of JP2929057B2 publication Critical patent/JP2929057B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction 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つないしそれ以上の処理経
路を持つプロセッサを有するコンピュータは、スーパー
スカラー・コンピュータと呼ばれている。
【0003】新しいコンピュータの場合どの様なもので
も商業的に成功する場合は、利用者に興味を持たせるた
め、それを導入するとき実行できるアプリケーション・
プログラムの基盤がなければならない。そのようなプロ
グラムを提供する経済的な方法は、新しいコンピュータ
を以前のコンピュータないし系統コンピュータのために
設計されたアプリケーション・プログラムで作動するよ
うに設計することである。この種の設計例としては、80
86、8088、i386TM、i486TMを初めとするインテル社に
よるマイクロプロセッサ(以下、インテル・マイクロプ
ロセッサと称する)に基づくコンピュータがある。どの
様な新しいプロセッサも以前のコンピュータで使用され
たソフトウエアで機能するには、新しいマシンはそのソ
フトウエアの命令を理解し、処理できなければならな
い。インテル・マイクロプロセッサ・ラインのプロセッ
サで使用する命令は、1バイトから15バイトまで変化す
る。それらの命令はインテル・マイクロプロセッサを操
作する既存のプログラムで上記の一般的な順序で配列さ
れている。
【0004】コンピュータの速度を増大する1つの方法
は命令をパイプライン処理することである。各々の命令
をそれが完了するまで実行し、その上で次の命令を開始
する代わりに、ある命令の別の段階を完了している間に
他の命令の段階を重ねてコンピュータの遊び部分がない
ようにするのである。インテル・マイクロプロセッサを
使用したコンピュータでは作業の各々の段階を1クロッ
ク周期で扱うことのできるように命令をパイプライン処
理している。一般にこれには命令をその記憶場所から取
り出し、解読し、実行し、そして実行結果を後に使用す
るため記憶装置に書き戻すことが必要である。回路は、
異なる段階でそれぞれ1クロック周期を必要とするよう
に設計する。プロセッサの異なる部分で各々のクロック
周期中に逐次命令のパイプラインの各段階を完了する。
従って第1のクロック周期中、プロセッサの事前取出し
部分が命令を記憶装置から取り出し、解読できるように
整列する。第2クロック周期中には、プロセッサの事前
取出し部分は記憶装置から次の命令を取り出して整列さ
せ、第3クロック周期でそれを解読できるようにする。
プロセッサの解読部分は取り出された第1の命令の解読
を同様に第2クロック周期中に完了する。プロセッサの
その解読部分は取り出された第2の命令の解読を第3ク
ロック周期中に完了する。命令をパイプライン処理する
ことで、全体的な作業速度は大幅に増大する。
【0005】命令は、互いに区別されていない命令のバ
イトのストリームとして、バスへないしキャッシュ・メ
モリから供給される。各命令は(一般に)どの過程でも
順番に現れる。それらの命令はキャッシュ・メモリから
1クロック周期で事前に取り出す必要がある。命令の長
さが異なるので、第2の命令は第1の命令の長さが分か
っていない限り事前に取り出すことはできない。任意時
に処理されている命令の長さを判定するため、インテル
・マイクロプロセッサを使用した以前のコンピュータは
最初に命令を解読しその内容を判定している。これを完
了すると、処理されている命令の長さとシーケンス内の
次の命令の開始点が分かり、事前取出し装置にフィード
バックすることができる。このためインテル・マイクロ
プロセッサに基づく以前の全てのコンピュータでは命令
の解読を連続的に行う必要があった。
【0006】スーパースカラーマシンは少なくとも2つ
の命令を同時に行う必要があるため、2つの命令を同時
に解読しなければならない。しかし第2の命令の正確な
コードのバイトを選択するために、次の(第2の)命令
がどこから始まるかを知るため第1の命令の終端を知ら
なければならない。第2の命令の処理が第1の命令の解
読を待たなければ始めなければならないとしたならば、
2つの命令を同時に処理するというスーパースカラー
目的は無意味になる。
【0007】命令のストリームでの個々の命令の終端を
判定する際の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のバイトのシーケンス内で完了すること
を特徴とする、スーパースカラーマシンが二つの命令を
同時に処理するために用いることができる命令データの
区別されていないバイトのシーケンスから複数の命令を
選択する回路で実現することができる。
【0010】
【実施例】注記と用語 以下の詳細な説明の一部はコンピュータ・メモリ内のデ
ータビットに対するオペレーションについて記号表現で
表している。それらの説明や表現はデータ処理技術の当
業者がその作業の実質を他の当業者に最も効率的に伝え
るために使用する手段となっている。オペレーションは
物理的な量の物理的な操作を必要とするものである。通
常、必ずしもそうではないが、それらの量は記憶、転
送、結合、比較その他の操作が可能な電気ないし磁気信
号の形を取る。時にはおもに通常に使用されているとい
う理由で、それらの信号をビット、値、要素、記号、文
字、周期、数などで参照することが便利であることが分
かっている。しかしそれら及び類似の用語はすべて適切
な物理量と関連しており、単にそれらの量に適用された
便利なラベルでしかないことに留意すべきである。
【0011】更に行う操作はしばしば、通常人間のオペ
レータにより行われる精神的な作業に関連した加算、比
較といった用語で称する。人間のオペレータのそのよう
な能力は本発明の一部を形成するここで説明する作業の
いずれにも必要なく、あるいは大方の場合望ましくな
い。作業は機械作業である。いずれの場合もコンピュー
タを作動する場合の方法作業と計算それ自身の方法の間
の区別に留意すべきである。本発明は電気ないしその他
(例:機械的、化学的)物理的信号を処理して他の所望
の物理的信号を生成するコンピュータを作動する装置に
関する。
【0012】図1は従来技術にしたがって構成した回路
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つ逐次命令を個々に転送できるので、ローテータ
と称する。またそれによりキャッシュラインの終端から
次のキャッシュラインに再結合し循環する命令を選択で
きる。
【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)で得ることのできる命令のバイトまで
進む。
【0015】ローテータ17のマルチプレクサ16か
ら、命令のバイトがラッチ18に転送され、その第1の
命令はラッチから引き出されて、スーパースカラー・
ロセッサの第1(Uチャネル)チャネルにより処理され
る。処理の第1段階は命令の解読である。この解読は、
マルチプレクサ16での選択を行う6ビットが引き出さ
れる事前取出し命令ポインタを出力する。この値は引き
出されてバッファ13、14から取り出される次の命令
の選択を助けるためにフィードバックされる
【0016】マルチプレクサ16をその64対1の論理
入力率でスィッチすることは、本発明の一部であるスー
パースカラーマシン内で一対の命令の各々の選択に許さ
れた単一のクロック周期内に完了できないことが分かっ
た。これは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に転送される。
【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を次の継続したキャッシュラインないし他のデータ
源から再び充填することができる。この再充填はデータ
が必要とする時間より十分前に生じる。このようにして
キャッシュラインを循環する命令を選択過程で遅延なく
選択することができる。
【0019】ローテータ27は14の個々の32対1のマルチ
プレクサを含む以外は、図1のマルチプレクサ16を含む
ローテータと同様である。ローテータ27の各々のマルチ
プレクサは、マルチプレクサ25により転送された個々の
バイトの各々を入力として受取り、事前取出し命令ポイ
ンタから導出された5ビット値により選択される単一バ
イトを出力として出力する。これは図1のマルチプレク
サ16からなるローテータの作動と同様にして行われる。
【0020】従ってローテータ27のマルチプレクサによ
り与えられる14バイトはバッファ29に整列値として与え
られ、更に命令の第1のものが解読されるUチャネルに
供給される。Uチャネルは加算器回路30に与えられる処
理される命令の長さの値(長さ値と称する)を出力す
る。この値はVチャネルの命令の解読からの同様の長さ
値と合成して、合計長さ値を作り出す。この値は解読す
る次の2つの命令を選択するのに使用する事前取出しポ
インタを定義する。
【0021】ローテータ27のマルチプレクサへの入力の
スィッチの数を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のマ
ルチプレクサをスィッチするのに必要な速度の増大をも
たらすことができる。
【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バイトを示している。
【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により行われる循環過程を示して
いる。
【0025】図3から分かるように、ローテータ27によ
り選択されたバイトを示す矩形内の命令データのバイト
は、図で左側に徐々に移動する。転送された命令データ
の量の単一の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の次のマルチプレクサに転送する。
【0027】分岐命令により生成されたポインタを受け
取るローテータ27は、右側で始まる第1の14バイトを転
送するために選択する。それらの14バイトは、ローテー
タ27により転送されるデータのウィンドウとして囲んだ
矩形部分内に示されている。矩形括弧の右側の矢印は、
ローテータ27を駆動する選択値(ポインタ)により示さ
れるバイト位置を指し示している。
【0028】次のクロックでは、第1のクロックで解読
器に転送された命令は解読されて、第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により適切に転送することができる。
【0030】クロック4では、命令の解読はポインタは
移動せず(例えばキャッシュミス故に処理の機能停止が
必要となる)同じ命令がUチャネルに転送され続けるこ
とを示すと仮定する。従ってローテータ27の選択端子の
ポインタは移動しない。しかしマルチプレクサ25の選択
端子に対する遅延ポインタはここでクロック2で生じた
転送から解読された値を受け取る。その結果、マルチプ
レクサ25はBバッファから追加バイトを転送してポイン
タ矢印のすぐ左の入力位置を充填する。
【0031】クロック5ではローテータ27に対するポイ
ンタは左に先に括弧したデータの終端まで移動し、ここ
でラインの冒頭を取り囲んでBバッファからの値をライ
ンの遥か右に含める。遅延ポインタはクロック3での転
送から解読された値を受け取るが、移動しない。クロッ
ク6で、クロック5での転送から解読されたポインタは
ローテータ27による選択を遥か右に移動し、Bバッファ
データのみを囲む。クロック4での転送から解読された
遅延値により、マルチプレクサ25はBバッファからの追
加バイトを転送する。
【0032】このように本発明のオペレーションの例示
は、この構成には2対1のマルチプレクサが含まれ、ロ
ーテータ27により同時に機能する2つのチャネルを維
持するのに得られる必要時間間隔内で容量性負荷がスィ
ッチングを抑制しない程度まで重嬰経路でのスィッチの
数の減少を可能にしながら、スーパースカラーの両方の
チャネルにより命令の選択に十分なウィンドウの取り扱
いが可能になることを示している。ローテータ27での
容量性負荷の減少に加えて、本発明の構成によりもたら
される追加速度の利点として、従来技術で使用した64
バイトのローテータを制御するのに6ビットが必要であ
ってのに対して、ローテータ27のマルチプレクサを制
御するのに命令の解読から5ビットしか生成する必要の
ないことがある。これによりローテータ27を作動する
制御値を生成する際にともかくより多くの余裕がもたら
される。
【図面の簡単な説明】
【図1】従来技術により設計された回路構造のブロック
図である。
【図2】本発明により設計された回路構造のブロック図
である。
【図3】本発明の理解に有用な異なる信号状態を示す図
である。
【図4】本発明の理解に有用な異なる信号状態を示す別
の図である。
【符号の説明】
23、24 バッファ、 25 大きなマルチプレクサ 26 マルチプレクサ 27 ローテータ

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 命令データの区別されていないバイトの
    シーケンスから命令データの第1のバイトのシーケンス
    を受け取る手段(23,24)と、 処理された最後のバイトを示すポインタを用いて命令デ
    ータの前記第1のバイトのシーケンスの中で任意に選択
    したバイトで始まる命令データの第2のバイトのシーケ
    ンスを命令データの前記第1のバイトのシーケンスから
    選択する手段(25)と、 処理された最後のバイトを示す前記ポインタを用いて命
    令データの前記第2のバイトのシーケンスの中で任意に
    選択したバイトで始まる命令データの第3のバイトのシ
    ーケンスを命令データの前記第2のバイトのシーケンス
    から選択する手段(27)とからなり、 前記第3のバイトのシーケンスは前記第2のシーケンス
    よりも長さが半分以下であり、前記第2のバイトのシー
    ケンス内で完了することを特徴とする、スーパースカラ
    ーマシンが二つの命令を同時に処理するために用いるこ
    とができる命令データの区別されていないバイトのシー
    ケンスから複数の命令を選択する回路。
  2. 【請求項2】 命令データの区別されていないバイトの
    シーケンスから命令データの第1のバイトのシーケンス
    を受け取る手段(23,24)と、 前記第1のバイトのシーケンスの任意のバイトで始ま
    り、同時に解読できる命令の数の少なくとも2倍を含む
    のに十分な長さの第2のバイトのシーケンスを選択する
    マルチプレクサ手段(25)と、 命令データの前記第2のバイトのシーケンスから、処理
    すべき最初の命令で始まり、同時に解読すべき命令全て
    を含むのに十分な長さを有する第3のバイトのシーケン
    スを選択するローテータ手段(27)とからなる命令デ
    ータの区別されていないバイトのシーケンスから複数の
    解読する命令を選択する回路。
JP5040757A 1992-02-06 1993-02-05 命令データのストリームから複数の命令を選択する回路 Expired - Fee Related JP2929057B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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