JPH06236268A - 命令の長さを判定する装置と方法 - Google Patents

命令の長さを判定する装置と方法

Info

Publication number
JPH06236268A
JPH06236268A JP5041783A JP4178393A JPH06236268A JP H06236268 A JPH06236268 A JP H06236268A JP 5041783 A JP5041783 A JP 5041783A JP 4178393 A JP4178393 A JP 4178393A JP H06236268 A JPH06236268 A JP H06236268A
Authority
JP
Japan
Prior art keywords
instruction
bit
length
instructions
cache memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP5041783A
Other languages
English (en)
Inventor
Edward T Grochowski
エドワード・ティ・グロコウスキイ
Kenneth Shoemaker
ケネス・シューメーカー
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 JPH06236268A publication Critical patent/JPH06236268A/ja
Pending 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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, 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

(57)【要約】 【目的】 スーパースケールコンピュータが互いに区別
されていない順次に現れる長さの分からない2つの命令
を同時に処理できるようにする装置を提供する。 【構成】 本発明の装置は、命令がその長さの地点で終
了することを示すための命令の事前に指定された各々の
長さのための終端ビットを供給する手段と、命令の実際
の終端である命令の特定の事前指定長さに終端ビットを
セットする手段と、シーケンス内の第1の命令を処理す
る第1のチャネルと、第1の命令に次に続く命令を処理
する第2のチャネルと、第1のチャネルにより処理され
ている命令の終端ビットを調べてその命令の終点と命令
のストリームから次の命令の冒頭を判定する手段とから
なる

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータシステムに
関し、特にスーパースケールコンピュータが命令ストリ
ームからの長さが異なる一対の命令を同時に処理できる
ようにするための終端ビットマーカーを出力する方法と
装置に関する。
【0002】
【従来の技術】コンピュータを速く実行させようとする
試みが絶えずなされており、それを達成する1つの方法
はコンピュータに命令を速く処理させることである。一
般にコンピュータプロセッサはどの様な処理の命令も次
々と順次に取り扱う。従って命令1は命令2が開始する
前に処理するか少なくとも始めなければならない(パイ
プラインに入れなければならない)。しかし2つないし
それ以上の命令を同時に実行することができれば、コン
ピュータは命令を速く処理することができる。これは1
つ以上の処理経路を有し、その処理経路を通して複数命
令を同時に実行する中央演算処理装置を備えることで達
成できる。通常では逐次に実行する同種の一般的なマシ
ン命令を同時に2つないしそれ以上を処理できる処理経
路を持つプロセッサを有するコンピュータは、スーパー
スケール・コンピュータと呼ばれている。
【0003】新しいコンピュータを設計する場合に直面
する1つの問題は、その様なコンピュータが商業的に成
功するには、利用者の興味を引くために、それで実行で
きるアプリケーション・プログラムの基盤がなければな
らないということである。そのようなプログラムを提供
する最も経済的な方法は、新しいコンピュータを以前の
コンピュータないし系統コンピュータのために設計され
たアプリケーション・プログラムで作動するように設計
することである。この種の設計例として、8086、8088、
80186、80286、386TM、i486TMを初めとするインテル社
によるマイクロプロセッサ(以下、インテル・マイクロ
プロセッサと称する)に基づくコンピュータがある。
【0004】新しいプロセッサを以前のコンピュータで
使用されたソフトウエアで機能するように設計する際に
は、新しいマシンはそのソフトウエアの命令を理解し、
処理できなければならない。インテル・マイクロプロセ
ッサ・ラインのプロセッサで使用する命令は、1バイト
から15バイトまで変化する。それらの命令はインテル・
マイクロプロセッサを操作する既存のプログラムで上記
の一般的な順序で配列されている。
【0005】コンピュータの動作速度を増大する1つの
方法は命令をパイプライン処理することである。各々の
命令をそれが完了するまで実行し、その上で次の命令を
開始する代わりに、命令のある段階を処理している間に
別の段階を重ねてコンピュータの遊び部分がないように
するのである。インテル・マイクロプロセッサを使用し
たコンピュータでは各々の命令の各々の段階を1クロッ
ク周期で扱うことのできるように命令をパイプライン処
理している。一般にこれには命令をその記憶場所から取
り出し、解読し、実行し、そして実行結果を後に使用す
るため記憶装置に書き戻すことが必要である。回路は、
異なる段階でそれぞれ1クロック周期を必要とするよう
に設計する。プロセッサの異なる部分で各々のクロック
周期中に逐次命令のパイプラインの各々の段階を完了す
る。従って第1のクロック周期中に、プロセッサの事前
取出し部分は命令を記憶装置から取り出し、解読できる
ように整列する。第2クロック周期中に、プロセッサの
事前取出し部分は記憶装置から次の命令を取り出して整
列させ、第3クロック周期でそれを解読する。プロセッ
サの解読部分は取り出された第1の命令の解読を第2ク
ロック周期中に完了する。その解読部分は取り出された
第2の命令の解読を第3クロック周期中に完了する。命
令をパイプライン処理することで、全体的な作業速度は
大幅に増大する。
【0006】命令はバスないしキャッシュ・メモリから
互いに区別されていない命令のバイトのストリームとし
て供給する。各々の命令は(一般に)どの過程でも順番
に現れる。コンピュータ速度を維持するため、それらの
命令はそれらの出所源から1クロック周期で事前に取り
出す必要がある。これは次のクロック周期中に次の命令
を選択できるように、1クロック周期で長さの分からな
い第1の命令の終端を判定する必要があることを意味す
る。任意時に処理されている命令の長さを判定するた
め、インテル・マイクロプロセッサを使用した以前のコ
ンピュータは最初に命令を解読してその内容を判定して
いた。これを完了すると、処理されている命令の長さと
シーケンス内の次の命令の開始点が分かり、事前取出し
装置にフィードバックすることができる。このためイン
テル・マイクロプロセッサに基づく以前の全てのコンピ
ュータでの命令の解読は、逐次に行う必要があった。
【0007】スーパー・スケールマシンは少なくとも2
つの命令を同時に行う必要があるため、2つの命令を同
時に解読しなければならない。しかし情報ストリームか
ら第2の命令の冒頭を選択するには、どこで第1の命令
が終るか分からなければならない。しかし第1の命令を
解読しないと第1の命令の長さが分からず、したがって
第2の命令が始まる場所が分からない。第2の命令の処
理を始める前に第1の命令の解読を待たなければならな
いのでは、2つの命令を同時に処理するというスーパー
・スケールの全目的に反することになる。
【0008】
【発明が解決しようとする課題】従って本発明の目的
は、スーパースケールコンピュータが互いに区別されず
に順次に現れる長さの分からない2つの命令を同時に処
理できるようにする構造を提供することである。本発明
のより詳しい目的は、判定を行うために命令を解読する
必要なしにスーパースケールコンピュータで処理する命
令の長さを判定する構造を提供することである。
【0009】
【課題を解決するための手段】本発明の以上の目的は、
その命令がその長さのその地点で終了することを示す各
命令の事前に指定された各々の長さを示す終端ビットを
供給する手段と、命令の実際の終端である命令の特定の
事前指定長さにその終端ビットを設定する手段と、命令
シーケンス内の第1の命令を処理する第1のチャネル
と、命令のシーケンス内の第1の命令に続く次の命令を
処理する第2のチャネルと、第1のチャネルで処理され
ている命令の終端ビットを調べてその命令の終点と命令
ストリームから次の命令の冒頭を判定する手段からな
る、長さが異なりそれらが区別されていない命令ストリ
ームとして命令が順次現れる場合に、コンピュータシス
テムで処理されるようにその命令の長さを判定する装置
により実現することができる。
【0010】注記と用語 以下の詳細な説明の一部はコンピュータ・メモリ内のデ
ータビットに対するオペレーションについて記号表現で
表している。それらの説明や表現はデータ処理技術の当
業者がその作業の実質を他の当業者に最も効率的に伝え
るために使用する手段となっている。オペレーションは
物理的な量の物理的な操作を必要とするものである。通
常、必ずしもそうではないが、それらの量は記憶、転
送、結合、比較その他の操作が可能な電気ないし磁気信
号の形を取る。時にはおもに通常に使用されているとい
う理由で、それらの信号をビット、値、要素、記号、文
字、周期、数などで参照することが便利であることが分
かっている。しかしそれら及び類似の用語はすべて適切
な物理量と関連しており、単にそれらの量に適用された
便利なラベルでしかないことに留意すべきである。
【0011】更に行う操作はしばしば、通常人間のオペ
レータにより行われる精神的な作業に関連した加算、比
較といった用語で称する。人間のオペレータのそのよう
な能力は本発明の一部を形成するここで説明する作業の
いずれにも必要なく、あるいは大方の場合望ましくな
い。作業は機械作業である。いずれの場合もコンピュー
タを作動する場合の方法作業と計算それ自身の方法の間
の区別に留意すべきである。本発明は電気ないしその他
(例:機械的、化学的)物理的信号を処理して他の所望
の物理的信号を生成するコンピュータを作動する装置に
関する。
【0012】
【実施例】図1は本発明を実施する構造10のブロック図
である。構造10には最近利用した命令を格納するキャッ
シュ・メモリ12がある。一般にそのようなキャッシュ・
メモリは中央演算処理装置で利用して、主記憶装置への
参照の必要なしに情報への速いアクセスを行うことがで
きる。本発明を使用する回路では、キャッシュ・メモリ
12は中央演算処理装置で利用する命令の有用な出所源と
なっているが、一部の命令は主記憶装置と事前取出しバ
ッファからシステムバスに来ている。情報の源は本発明
の説明に影響を及ぼさないので、図1にはキャッシュ・
メモリ12だけをそのような出所源として示している。本
発明の本実施例では、キャッシュ・メモリにはそれぞれ
256ビットワイドのラインに配列した8キロバイトの記
憶装置が内蔵されている。合計 256ラインでこれだけの
量の命令データに十分な記憶を提供する。利用する特定
のキャッシュ・メモリ12の詳細は本発明には関係ないの
で、本明細書では長く説明しない。
【0013】命令を格納するのに使用するキャッシュ・
メモリ12に加えて、この構造では終端ビットキャッシュ
・メモリ14を利用する。この終端ビットキャッシュ・メ
モリ14は、キャッシュ・メモリ12に格納された命令デー
タの各々のバイトの終端を指定するビットを格納するの
に利用する。本発明の本実施例では、キャッシュ・メモ
リ12に格納された命令のバイトの終端を指定する1つの
ビットは、キャッシュ・メモリ14に格納する。命令キャ
ッシュ・メモリ12と終端ビットキャッシュ・メモリ14に
格納された情報パターン例を図4に示し、以下詳細に説
明する。本実施例のキャッシュ・メモリ14にはキャッシ
ュ・メモリ12と同様の数のライン( 256本)が含まれて
いるが、32バイトしかキャッシュ・メモリ12の 256ビッ
トラインのいずれにも格納できないので、キャッシュの
各々のラインは32ビットワイドしかない。特定のコンピ
ュータでは、特定のプロセッサに対し他の長さがより便
利な度量法ならば、メモリのバイト以外の何等かの長さ
(例えば半語)を示す終端ビットを利用することも可能
である。
【0014】命令キャッシュ・メモリ12の各々のライン
と終端ビットキャッシュ・メモリ14の関連ラインは、両
メモリの関連ラインにアクセスしたときに一緒にヒット
ないしミスするように同一のタッグビットを共用してい
る。キャッシュ・メモリ14に格納された終端ビットを使
用してキャッシュ・メモリ12に格納された各々の順次の
命令の終端を指定し、命令が解読される前に処理される
各々の命令の長さの判定を行うことができるようにす
る。このようにすることで、プロセッサで実行するプロ
グラムに長さが変わる命令が順次に現れ、それらが解読
されるまでその長さが示されないとしても、スーパース
ケールコンピュータの作動速度を維持することができ
る。
【0015】中央演算処理装置で利用する命令について
アクセスするキャッシュ・メモリ12の特定ラインはロー
テータ15に与えられ、終端ビット・キャッシュ・メモリ
14内の関連ラインのビットはローテータ16に与えられ
る。即ちキャッシュ・メモリ12のライン3が特定の命令
についてアクセスされる場合、キャッシュ・メモリ12の
アクセスされたラインに格納された命令と関連した終端
ビットについてキャッシュ・メモリ14のライン3にアク
セスが行われる。キャッシュ・メモリにアクセスする手
段はよく知られているが、本発明には関係ないので、本
明細書では説明しないことにする。従って、キャッシュ
・メモリ12のコードの各々のラインに対応するキャッシ
ュ・メモリ14内の終端ビットのラインが存在し、ローテ
ータ15によりキャッシュ・メモリ12から転送されたコー
ドの各々のラインに対して、キャッシュ・メモリ14に格
納された終端ビットのラインがローテータ16で転送され
る。
【0016】処理される2つの命令の第1のものの冒頭
を選択し、処理するその第1の命令の冒頭を適切に整列
するために、事前取出し命令ポインタの値をローテータ
15と16の各々に与える。同様に、命令ポインタ値は処理
される命令の冒頭終端ビットを選択して整列する。この
命令ポインタ値は処理された最後の2つの命令の合同長
さの計算から得られる。事前取出し命令ポインタ値を生
成する回路の詳細は、本明細書と同一日付に出願され、
本発明の譲渡人に譲渡されたE.グロチョウスキーによる
「長さ計算におけるローテータ」の名称の出願番号
の米国特許出願に記載されている。
【0017】ローテータ15の目的を完遂するのに利用で
きるローテータは、本明細書と同一日付に出願され、本
発明の譲渡人に譲渡されたE.グロチョウスキーによる
「命令ストリームから可変長命令を導出する2段階ウィ
ンドウ・マルチプレキサ」の名称の出願番号
の米国特許出願に記載されている。同特許出願では、本
発明のローテータ16、20に使用できる従来のローテータ
を詳細に説明している。ローテータ15と20の基本的な目
的は、処理される命令を含めるために十分長いバイトの
シーケンスを導出し、特定の命令の冒頭が後続の処理チ
ャネルで最初に処理されるようにそれらの命令を整列さ
せることである。ローテータ16はビットの同じローテー
ションを行い、関連ラインでの各々のバイトの終端を指
定する。
【0018】適切に並べられた処理される命令と共に選
択された命令のラインは、ローテータ15から処理のため
Uパイプ操作符号フリップフロップ18に転送される。U
パイプは本発明を利用するスーパースケールコンピュー
タで利用する2つの処理チャネルの1つである。第2の
処理チャネルはVパイプと称する。Uパイプにより処理
されている命令の後続の命令は、次のようにしてVパイ
プに与える。即ちローテータ15からUパイプに転送した
命令のラインと関連した終端ビットキャッシュ・メモリ
14内の終端ビットを、優先順位器19に転送し、ローテー
タ16により整列する。従って第1の4バイトの命令の冒
頭で整列された命令のラインがUパイプフリップフロッ
プ18に転送されると、終端ビットは優先順位器19に転送
され、4バイト命令に関連した4ビットの最初のものの
冒頭に整列される。
【0019】次に優先順位器19は1にセットされた第1
の終端ビットを選択する。この作業を行うため、優先順
位器にはローテータ16により転送される終端ビットの各
々について1つの一連のANDゲートを含めることがで
きる。各々の順次のANDゲートに終端ビットの整列さ
れたラインのビット位置の順次のものから入力を与える
と、1を終端ビットとして受け取るゲートで1の値を転
送するようにできる。それらの最初のものは、ANDゲ
ートに他の入力としてシーケンス内の各々の後続の終端
ビットから逆入力を与えることで選択する。従って1の
終端ビットと関連した第1のANDゲートのみが、1の
値を移送する。1の値を生成する優先順位器19の特定の
ANDゲートは命令の長さをバイトで示し、Uパイプで
処理されている命令の終端を示す。従ってこの第1の1
の値は、第1の命令が終了し、第2の命令が始まる地点
を示し、処理のために命令を分割するのに使用できる。
図2は上述したような優先順位器回路を示したものであ
る。ここで分かるように、図2の回路19では、出力0が
最高優先度を持つが、出力3は最低の優先度を持ってい
る。
【0020】次に優先順位器19により生成された結果を
用いて、第3のローテータ20がローテータ15により与え
られた命令ストリームを回転し、次の後続の命令の最初
のバイトがVパイプチャネルで処理するため整列される
ようにする。この整列された命令ストリームはVパイプ
・フリップフロップ22に転送され、整列された命令をU
パイプチャネルで処理されている先行命令と同時に処理
できるようにする。Uパイプ・フリップフロップ18から
Uパイプ命令をUパイプ解読器24に転送し、それを解読
して使用する。Vパイプ・フリップフロップ22からは、
Vパイプ命令をVパイプ解読器25に転送し、それを解読
して使用する。この時点から、命令は別々の処理チャネ
ルを進行する(その方法は本明細書の主題ではない)。
【0021】しかしUパイプ解読器24内の命令の長さ
は、命令が解読され、比較器27に転送されると共に判定
される。この判定を行う装置は先述の「長さ計算におけ
るローテータ」の名称の出願番号 の米国特許
出願に詳細に記載されている。比較器27は、また優先順
位器19から終端ビット・フリップフロップ28を通して、
整列されたビットのシーケンス内で1にセットされた最
初に得られる終端ビットを選択する際に優先順位器19で
判定された長さの表示をローテータ16から受け取る。上
記で指摘したように、1の値を生成する優先順位器19の
特定ANDゲートは命令の長さをバイトで示した。それ
らの長さは比較される。テストした長さが異なる場合、
比較結果は特定終端ビットを更新する要求として終端ビ
ット生成器30に転送される。
【0022】終端ビット生成器30は第2の入力をそれが
ローテータ15と16に供給されたときに、命令ポインタか
ら受取り、その値をラッチする。従って終端ビット生成
器はUパイプで処理されている命令がどこでスタートし
たかを知っている。それはまた命令の正しい長さが分か
るように解読器24から長さ値を受け取る。その結果、終
端ビット生成器30はキャッシュ・メモリ14内の終端ビッ
トを訂正する必要のある命令を認識する。そこでデータ
の処理に重要でない時間に、キャッシュ・メモリ14内の
終端ビットに対し訂正を行う。
【0023】図3は終端ビット生成器30を詳細に示した
ものである。この回路30は処理されるUパイプの命令の
命令ポインタを示す6ビットバイナリ値を受け取る。こ
の値は解読器32により解読され、ポインタのビット位置
のみが1にセットされた64逐次ビットベクターとしての
マスク・ベクター生成器33に転送される。ポインタの6
ビット値はまた、優先順位器19により生成される命令の
長さを示す4ビットバイナリ値を受け取る加算器34に転
送される。それらの値は第1の命令の終端を示すために
加算され、第2の解読器35に送される。解読器35は第1
の命令の正確な終端ビットの位置に1を有する第2の64
ビットベクターを生成する。
【0024】解読器35により生成された64ビットベクタ
ーはラッチ37に格納される。ベクターはまたマスク・ベ
クター生成器33に第2の入力として送られる。マスク・
ベクター生成器33は終端ビットを訂正するマスクとして
使用する64ビットベクターを生成する。このマスクは、
命令ポインタが示すバイトを示すビット位置で始まり、
命令が終了する前のバイトを示すビットまで続くゼロを
格納する。その他の全てのビットは1に設定される。こ
の結果は、図6に示す回路50のすぐ左の図に示してい
る。
【0025】マスク・ベクター生成器33は、図6に1段
階を示す64の段階で実施することができる。各々の段階
50は解読器32により生成されたベクター内のビット位置
の1つを示す入力と、解読器35により生成されるベクタ
ーのビット位置の同一の1つを示す第2の入力と、その
ビット位置のすぐ前のビット位置のそれらのベクターか
らビットを受け取る段階(すぐ右の段階)の出力を受け
取る。第1の段階はシーケンス内の最後の段階50の出力
を受け取る。ここで分かるように、ANDゲート52は解
読器35により生成されたベクターから特定位置のビット
の値と解読器32により生成されたベクター内のその位置
のビットの逆値を受け取る。従ってANDゲート52は、
解読器35からのベクターのビットが1の値を有するビッ
ト位置でのみ1の値を生成する。この1はORゲート54
によりその段階50の出力に転送される。第2のANDゲ
ート56は解読器32と35により生成されたベクターの各々
からの特定ビット位置内の逆入力値と先行段階50の出力
を受け取る。ANDゲート56は2つのベクターがゼロの
値を有し、先行段階が1の値を生成したビット位置で1
の出力値を生成する。それは、2つのベクターが0の値
を有し、先の段階が0の値を生成する各々のビット位置
で0の出力値を生成する。ゲート56はまた、解読器から
の2つのベクターのビットが異なる場合にも0の出力値
を生成する。ゲート56により生成された1の値はまた、
ORゲート54によりその段階の出力に転送される。
【0026】従って、マスク・ベクター生成器33の出力
が0の値になるのは、解読器32からの命令ポインタベク
ターが1の値を有する段階であることが分かる。0の出
力は、命令の終端を示す解読器35からのベクターが1で
ある段階まで各々の後続の段階で生成される。この段階
と全ての後続の段階はマスクの冒頭へ循環して命令の冒
頭を記す段階50のすぐ前の段階50まで1の値を生成す
る。
【0027】このマスクビットベクターは、ラッチ39に
入れる。マスク・ベクター生成器33はまた、命令が循環
して2つのキャッシュラインにまたがり、訂正を行うの
に2回のキャッシュ書き込みを必要とするかどうかを示
す。これは解読器35から供給された訂正終端ビットがビ
ットのシーケンス内で命令ポインタビットに先行するか
どうかを判定することで判定できる。図6はまた、この
結果をもたらす回路60をも示している。回路60は各々の
ベクターのものまでビット位置をカウントする一対のカ
ウンタ61、62と、解読器32からのベクターあるいは解読
器35からのベクターが大きいかどうかを判定する比較器
63を内蔵している。
【0028】ラッチ39内のマスクの各々のビットは、A
NDゲート41で終端ビットキャッシュ・メモリ14内に格
納された以前のラインからのビットの各々とAND化す
る。マスクは、命令をその冒頭からその次のバイトから
最後のバイトまで定義するビットを除いて全ての位置で
1を有しているので、以前の終端キャッシュラインの各
々のビットは命令をその次のビットから最後のビットま
で示しているビットを除いて再生される。ANDゲート
41の各々により生成されたビットベクターのビットは次
にそれぞれ一連のORゲート42によりラッチ37に保持さ
れたビットベクターでOR化される。このベクターは第
1の命令の正しい最後のバイトを示すビット位置にのみ
1を含んでいるので、ORゲート42から生じるビットベ
クターは第1の命令のバイトを示すビットを除いて以前
のキャッシュラインと同様に各々の位置に1ないし0を
持つ。第1の命令のバイトを冒頭から次及び最後まで示
すビットの全ては0となるが、最後のビットは1とな
る。このビットベクターはそこで書き込んで終端ビット
キャッシュ・メモリ14内の以前のラインと置換すること
ができる。必要に応じて、命令が2つのキャッシュライ
ンに循環する場合は、第2のキャッシュラインに対して
この作業を繰り返すことができる。
【0029】図2の比較回路27で比較を行い、無効な結
果が得られれば(長さが同程度でない)、無効結果はV
パイプチャネルに送られ、Vパイプチャネルによる2つ
の命令の第2のものの処理を禁止する。このようにして
ローテータ20内に不正確に整列された命令は単に放棄さ
れるだけだが、Uパイプチャネル内の命令の処理は通常
の形で続行される。UパイプとVパイプチャネルを通し
て処理される各々の命令に対して正しい長さを加算する
ことで、新しい命令ポインタを得られることに留意す
る。その結果、Uパイプチャネル内の命令に対して不正
確にセットされた終端ビット故にVパイプチャネルが使
用禁止になると、新しい命令ポインタは第1の命令の長
さだけを含むようになる。その結果、打ち切られた命令
がUパイプチャネルを通して実行される次の命令とな
る。
【0030】キャッシュ・メモリ12に格納された各々の
命令に対して初期終端ビットを与えるため、新しい命令
の各々のバイトの各々の終端ビットはその命令がキャッ
シュ・メモリ12に入れられたときに1にセットする。当
業者には明かとなるように、各々の1つのバイトの命令
は最初にキャッシュ・メモリ12に入れられたときにその
終端ビットを正しくセットしてそれが1バイト命令であ
ることを示す。しかし1バイトよりも長い全ての命令は
各々のバイトの終端ビットをすべてセットし、命令の長
さを不正確に示すようになる。その結果、キャッシュ・
メモリ12に格納された命令に最初にアクセスしたとき、
それが1バイト命令でない限りその長さは不正確にな
る。従って長さが1バイト以上の各々の命令はそれに最
初にアクセスしたときその終端ビットを訂正し、それ以
降正しい終端ビットが指定されるようにする。キャッシ
ュ・メモリ12に格納された命令にアクセスする際、命令
を使用する所与の期間に於て同じ命令が繰り返し使用さ
れる傾向があるので、ほぼ95%のヒット率が達成される
ことが分かった。命令はキャッシュ・メモリ12に入れら
れてから最初のアクセスで終端ビットが正確にセットさ
れるので、キャッシュ・メモリ12のほとんどのアクセス
は2番目あるいはそれ以上のアクセスとなると思われ
る。従って最初のアクセスに対して終端ビットを訂正す
る必要性はシステム内で殆ど遅延を生じない。
【0031】図4は命令キャッシュ・メモリ12と終端ビ
ットキャッシュ・メモリ14の関連ラインに含まれた情報
例である。ここで分かるように第1の命令は事前取出し
ポインタで02(hex) で示したようにバイト02で始まる。
この第1の命令はバイト02から06に格納されている。バ
イト06の第1の命令の終端は終端ビットキャッシュのビ
ット06のバイナリ1で示されている。図には第1の命令
の命令コードと実際の命令が示されている。第2の命令
の命令コードは命令キャッシュラインのバイト07で始ま
り、命令キャッシュ・メモリ12のバイト0Cに相当する位
置の終端ビットキャッシュ・メモリ14内の次のバイナリ
1が生じるまで続く。第2の命令の命令コードと解読さ
れた命令を図に示す。第1の命令の終端ビットと次の事
前取出しポインタの位置も図に示してある。
【0032】図5は本発明を完遂するための上記の操作
ステップのシーケンスをリストアップしたものである。
それらのステップの各々は、上記で詳述した。図で同一
ボックス内に2つのステップが入れられている場合は、
同一クロック周期内でそれらのステップを並列に完遂す
る。本発明を実施例に関して説明したが、当業者には本
発明の趣旨や範囲を逸脱せずに様々な修正や変形を行う
ことができることが明白であろう。例えば本発明の実施
例では各々のバイトと関連した終端ビットを格納するキ
ャッシュ・メモリを利用したが、それらの終端ビットは
キャッシュ・メモリ12の長さを拡張して命令データの各
々のバイトの間にそれらのビットのためのゆとりを作る
ことも可能である。従って本発明は請求項の範囲につい
て判断を行うべきである。
【図面の簡単な説明】
【図1】2つの命令を同時に処理する本発明の構造のブ
ロック図である。
【図2】図1の構造の第1の部分のより詳細な説明図で
ある。
【図3】図1の構造の第2の部分のより詳細な説明図で
ある。
【図4】図1の構造のその作動中の様々な要素内のビッ
ト位置を示す図である。
【図5】本発明で実施する方法を示す流れ図である。
【図6】図3に示す構成を実施する回路の詳細を示す図
である。
【符号の説明】
12:命令キャッシュ 14:終端ビットキャッシュ 15:命令ローテータ 16:終端ビットローテータ 19:優先順位器 20:Vパイプ命令ローテータ 24:Uパイプ命令解読器 25:Vパイプ命令解読器 30:終端ビット更新

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 命令がその長さが変わるものでしかもそ
    れぞれが区別されないで命令ストリームの中で順次に現
    れるようになっているコンピュータシステムで処理して
    いる命令の長さを判定する装置において、命令がその長
    さの地点で終了することを示すための命令の事前に指定
    された各々の長さのための終端ビットを供給する手段
    と、命令の実際の終端である命令の特定の事前指定長さ
    に終端ビットをセットする手段と、シーケンス内の第1
    の命令を処理する第1のチャネルと、第1の命令に次に
    続く命令を処理する第2のチャネルと、第1のチャネル
    により処理されている命令の終端ビットを調べてその命
    令の終点と命令のストリームから次の命令の冒頭を判定
    する手段とからなる命令の長さを判定する装置。
  2. 【請求項2】 命令がその長さが変わるものでしかもそ
    れぞれが区別されないで命令ストリームの中で順次に現
    れるようになっているコンピュータシステムで処理して
    いる命令の長さを判定する方法において、命令がその長
    さの地点で終了することを示すための命令の事前に指定
    された各々の長さのための終端ビットを供給し、命令の
    実際の終端である命令の特定の事前指定長さにその終端
    ビットをセットし、シーケンス内の第1の命令を第1の
    チャネルにより処理し、第1の命令に次に続く命令を第
    2のチャネルにより処理し、第1のチャネルにより処理
    されている命令の終端ビットを調べてその命令の終点と
    命令のストリームから次の命令の冒頭を判定することを
    特徴とする命令の長さを判定する方法。
JP5041783A 1992-02-06 1993-02-08 命令の長さを判定する装置と方法 Pending JPH06236268A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US83194292A 1992-02-06 1992-02-06
US831942 1992-02-06

Publications (1)

Publication Number Publication Date
JPH06236268A true JPH06236268A (ja) 1994-08-23

Family

ID=25260256

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5041783A Pending JPH06236268A (ja) 1992-02-06 1993-02-08 命令の長さを判定する装置と方法

Country Status (6)

Country Link
US (2) US5450605A (ja)
JP (1) JPH06236268A (ja)
DE (1) DE4302495C2 (ja)
GB (1) GB2263987B (ja)
HK (1) HK127696A (ja)
SG (1) SG45269A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016509717A (ja) * 2013-01-23 2016-03-31 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Vectorgeneratemask命令を処理するためのコンピュータ・プログラム、コンピュータ・システム及び方法

Families Citing this family (196)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992006426A1 (en) * 1990-10-09 1992-04-16 Nexgen Microsystems Method and apparatus for parallel decoding of instructions with branch prediction look-up
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
EP0651320B1 (en) * 1993-10-29 2001-05-23 Advanced Micro Devices, Inc. Superscalar instruction decoder
DE69434669T2 (de) * 1993-10-29 2006-10-12 Advanced Micro Devices, Inc., Sunnyvale Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
US5600806A (en) * 1994-03-01 1997-02-04 Intel Corporation Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer
US5758116A (en) * 1994-09-30 1998-05-26 Intel Corporation Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
US6006324A (en) * 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
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
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
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
US5832249A (en) * 1995-01-25 1998-11-03 Advanced Micro Devices, Inc. High performance superscalar alignment unit
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
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
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
US5835753A (en) * 1995-04-12 1998-11-10 Advanced Micro Devices, Inc. Microprocessor with dynamically extendable pipeline stages and a classifying circuit
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
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
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
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
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
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
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
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
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
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
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
US6604190B1 (en) 1995-06-07 2003-08-05 Advanced Micro Devices, Inc. Data address prediction structure and a method for operating the same
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
US5878255A (en) * 1995-06-07 1999-03-02 Advanced Micro Devices, Inc. Update unit for providing a delayed update to a branch prediction array
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
US5768610A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Lookahead register value generator and a superscalar microprocessor employing same
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
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
US5854921A (en) * 1995-08-31 1998-12-29 Advanced Micro Devices, Inc. Stride-based data address prediction structure
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
US5826071A (en) * 1995-08-31 1998-10-20 Advanced Micro Devices, Inc. Parallel mask decoder and method for generating said mask
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5781789A (en) * 1995-08-31 1998-07-14 Advanced Micro Devices, Inc. Superscaler microprocessor employing a parallel mask decoder
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
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
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
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
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
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
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
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
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
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
US5740392A (en) * 1995-12-27 1998-04-14 Intel Corporation Method and apparatus for fast decoding of 00H and OFH mapped instructions
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
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
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
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
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
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
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
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
US6085302A (en) * 1996-04-17 2000-07-04 Advanced Micro Devices, Inc. Microprocessor having address generation units for efficient generation of memory operation addresses
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
WO1997041509A1 (en) * 1996-05-01 1997-11-06 Advanced Micro Devices, Inc. Superscalar microprocessor including a high performance instruction alignment unit
US5968165A (en) * 1996-05-08 1999-10-19 Microunity Systems Engineering, Inc. System and method for minimizing the size of operands
US5918056A (en) * 1996-05-17 1999-06-29 Advanced Micro Devices, Inc. Segmentation suspend mode for real-time interrupt support
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
US5748978A (en) * 1996-05-17 1998-05-05 Advanced Micro Devices, Inc. Byte queue divided into multiple subqueues for optimizing instruction selection logic
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
US5845099A (en) * 1996-06-28 1998-12-01 Intel Corporation Length detecting unit for parallel processing of variable sequential instructions
JP3732233B2 (ja) * 1996-07-16 2006-01-05 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド スーパースカラマイクロプロセッサ内で可変バイト長命令をプリデコードするための方法および装置
DE69615588T2 (de) * 1996-07-16 2002-05-29 Rammohan Narayan Parallele und skalierbare befehlsabtasteinheit
EP0912924A1 (en) * 1996-07-16 1999-05-06 Advanced Micro Devices, Inc. A superscalar microprocesser including a high speed instruction alignment unit
US5813045A (en) * 1996-07-24 1998-09-22 Advanced Micro Devices, Inc. Conditional early data address generation mechanism for a microprocessor
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
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
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US5872943A (en) * 1996-07-26 1999-02-16 Advanced Micro Devices, Inc. Apparatus for aligning instructions using predecoded shift amounts
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
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a 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
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
US5941980A (en) * 1996-08-05 1999-08-24 Industrial Technology Research Institute Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
US5765016A (en) * 1996-09-12 1998-06-09 Advanced Micro Devices, Inc. Reorder buffer configured to store both speculative and committed register states
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
US5794028A (en) * 1996-10-17 1998-08-11 Advanced Micro Devices, Inc. Shared branch prediction structure
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
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
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
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
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
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
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
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
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US5859998A (en) * 1997-03-19 1999-01-12 Advanced Micro Devices, Inc. Hierarchical microcode implementation of floating point instructions for a microprocessor
US5930492A (en) * 1997-03-19 1999-07-27 Advanced Micro Devices, Inc. Rapid pipeline control using a control word and a steering word
US5828873A (en) * 1997-03-19 1998-10-27 Advanced Micro Devices, Inc. Assembly queue for a floating point unit
US5887185A (en) * 1997-03-19 1999-03-23 Advanced Micro Devices, Inc. Interface for coupling a floating point unit to a reorder buffer
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
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
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
US5933626A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US5933629A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for detecting microbranches early
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
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
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
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
US6167506A (en) * 1997-11-17 2000-12-26 Advanced Micro Devices, Inc. Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location
US6134649A (en) * 1997-11-17 2000-10-17 Advanced Micro Devices, Inc. Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction
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
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
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
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
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
US5974432A (en) * 1997-12-05 1999-10-26 Advanced Micro Devices, Inc. On-the-fly one-hot encoding of leading zero count
US5870578A (en) * 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling
US6157986A (en) * 1997-12-16 2000-12-05 Advanced Micro Devices, Inc. Fast linear tag validation unit for use in microprocessor
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
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
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
US6041405A (en) * 1997-12-18 2000-03-21 Advanced Micro Devices, Inc. Instruction length prediction using an instruction length pattern detector
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
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6061786A (en) * 1998-04-23 2000-05-09 Advanced Micro Devices, Inc. Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction
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
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
US6119223A (en) * 1998-07-31 2000-09-12 Advanced Micro Devices, Inc. Map unit having rapid misprediction recovery
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
US6230262B1 (en) 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
US6308257B1 (en) * 1999-04-20 2001-10-23 Intel Corporation Method and apparatus for generating boundary markers for an instruction stream including variable-length instructions
US6636959B1 (en) 1999-10-14 2003-10-21 Advanced Micro Devices, Inc. Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition
EP1224539A1 (en) * 1999-10-14 2002-07-24 Advanced Micro Devices, Inc. Apparatus and method for caching alignment information
US6647490B2 (en) 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US6546478B1 (en) 1999-10-14 2003-04-08 Advanced Micro Devices, Inc. Line predictor entry with location pointers and control information for corresponding instructions in a cache line
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
US6701424B1 (en) * 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US6848024B1 (en) 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
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
US7028164B2 (en) * 2000-12-29 2006-04-11 Stmicroelectronics, Inc. Instruction fetch apparatus for wide issue processors and method of operation
US6738792B1 (en) 2001-03-09 2004-05-18 Advanced Micro Devices, Inc. Parallel mask generator
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
US7401328B2 (en) * 2003-12-18 2008-07-15 Lsi Corporation Software-implemented grouping techniques for use in a superscalar data processing system
US7624251B2 (en) * 2006-11-01 2009-11-24 Apple Inc. Instructions for efficiently accessing unaligned partial vectors
US7620797B2 (en) * 2006-11-01 2009-11-17 Apple Inc. Instructions for efficiently accessing unaligned vectors
US20080240227A1 (en) * 2007-03-30 2008-10-02 Wan Wade K Bitstream processing using marker codes with offset values
US7676659B2 (en) * 2007-04-04 2010-03-09 Qualcomm Incorporated System, method and software to preload instructions from a variable-length instruction set with proper pre-decoding
US8589661B2 (en) * 2010-12-07 2013-11-19 Advanced Micro Devices, Inc. Odd and even start bit vectors
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US10311191B2 (en) 2017-01-26 2019-06-04 Advanced Micro Devices, Inc. Memory including side-car arrays with irregular sized entries
US11204768B2 (en) * 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4424563A (en) * 1980-09-05 1984-01-03 Hewlett-Packard Company Data processor including a multiple word processing method and device
US4502111A (en) * 1981-05-29 1985-02-26 Harris Corporation Token generator
US4530050A (en) * 1981-08-26 1985-07-16 Hitachi, Ltd. Central processing unit for executing instructions of variable length having end information for operand specifiers
US4670890A (en) * 1983-03-04 1987-06-02 Research Corporation Method of and/or apparatus for encoding and decoding sequential information in data handling systems
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
US4885680A (en) * 1986-07-25 1989-12-05 International Business Machines Corporation Method and apparatus for efficiently handling temporarily cacheable data
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
US5202972A (en) * 1988-12-29 1993-04-13 International Business Machines Corporation Store buffer apparatus in a multiprocessor system
US5167026A (en) * 1989-02-03 1992-11-24 Digital Equipment Corporation Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers
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
US5072449A (en) * 1989-12-21 1991-12-10 Stratacom, Inc. Packet framing using cyclic redundancy checking
DE69126565T2 (de) * 1990-04-17 1998-01-02 Matsushita Electric Ind Co Ltd Verfahren zur Übertragung von Kodes mit variabler Länge

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016509717A (ja) * 2013-01-23 2016-03-31 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Vectorgeneratemask命令を処理するためのコンピュータ・プログラム、コンピュータ・システム及び方法

Also Published As

Publication number Publication date
DE4302495C2 (de) 1998-08-20
US5450605A (en) 1995-09-12
HK127696A (en) 1996-07-26
GB2263987A (en) 1993-08-11
US5586276A (en) 1996-12-17
GB2263987B (en) 1996-03-06
SG45269A1 (en) 1998-01-16
GB9300726D0 (en) 1993-03-03
DE4302495A1 (ja) 1993-08-12

Similar Documents

Publication Publication Date Title
JPH06236268A (ja) 命令の長さを判定する装置と方法
US5692167A (en) Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US4858104A (en) Preceding instruction address based branch prediction in a pipelined processor
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
EP0394624B1 (en) Multiple sequence processor system
JPH0429093B2 (ja)
JPH0895824A (ja) データ処理装置及びデータ処理方法
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
EP1241567B1 (en) Method and apparatus for executing coprocessor instructions
JP2018506776A (ja) 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと
JP2000330787A (ja) 命令ループを実行するコンピュータシステムおよび命令ループ実行方法
JPH063584B2 (ja) 情報処理装置
JP2879607B2 (ja) 機能停止キャッシュを提供する装置と方法
JPH01137331A (ja) 制御ワード分岐方法
US8549266B2 (en) System and method of instruction modification
US5034880A (en) Apparatus and method for executing a conditional branch instruction
US4028670A (en) Fetch instruction for operand address calculation
US5390306A (en) Pipeline processing system and microprocessor using the system
EP0150506B1 (en) Instruction processor
JPS6160459B2 (ja)
JP2581565B2 (ja) ガード付命令を実行するデータ処理装置
JPS6221131B2 (ja)
US8117383B2 (en) Hardware accelerator based method and device for string searching
JP3014701B2 (ja) 情報処理装置
JPS586972B2 (ja) 情報処理装置