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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
Abstract
(57)【要約】
【目的】 スーパースケールコンピュータが互いに区別
されていない順次に現れる長さの分からない2つの命令
を同時に処理できるようにする装置を提供する。 【構成】 本発明の装置は、命令がその長さの地点で終
了することを示すための命令の事前に指定された各々の
長さのための終端ビットを供給する手段と、命令の実際
の終端である命令の特定の事前指定長さに終端ビットを
セットする手段と、シーケンス内の第1の命令を処理す
る第1のチャネルと、第1の命令に次に続く命令を処理
する第2のチャネルと、第1のチャネルにより処理され
ている命令の終端ビットを調べてその命令の終点と命令
のストリームから次の命令の冒頭を判定する手段とから
なる
されていない順次に現れる長さの分からない2つの命令
を同時に処理できるようにする装置を提供する。 【構成】 本発明の装置は、命令がその長さの地点で終
了することを示すための命令の事前に指定された各々の
長さのための終端ビットを供給する手段と、命令の実際
の終端である命令の特定の事前指定長さに終端ビットを
セットする手段と、シーケンス内の第1の命令を処理す
る第1のチャネルと、第1の命令に次に続く命令を処理
する第2のチャネルと、第1のチャネルにより処理され
ている命令の終端ビットを調べてその命令の終点と命令
のストリームから次の命令の冒頭を判定する手段とから
なる
Description
【0001】
【産業上の利用分野】本発明はコンピュータシステムに
関し、特にスーパースケールコンピュータが命令ストリ
ームからの長さが異なる一対の命令を同時に処理できる
ようにするための終端ビットマーカーを出力する方法と
装置に関する。
関し、特にスーパースケールコンピュータが命令ストリ
ームからの長さが異なる一対の命令を同時に処理できる
ようにするための終端ビットマーカーを出力する方法と
装置に関する。
【0002】
【従来の技術】コンピュータを速く実行させようとする
試みが絶えずなされており、それを達成する1つの方法
はコンピュータに命令を速く処理させることである。一
般にコンピュータプロセッサはどの様な処理の命令も次
々と順次に取り扱う。従って命令1は命令2が開始する
前に処理するか少なくとも始めなければならない(パイ
プラインに入れなければならない)。しかし2つないし
それ以上の命令を同時に実行することができれば、コン
ピュータは命令を速く処理することができる。これは1
つ以上の処理経路を有し、その処理経路を通して複数命
令を同時に実行する中央演算処理装置を備えることで達
成できる。通常では逐次に実行する同種の一般的なマシ
ン命令を同時に2つないしそれ以上を処理できる処理経
路を持つプロセッサを有するコンピュータは、スーパー
スケール・コンピュータと呼ばれている。
試みが絶えずなされており、それを達成する1つの方法
はコンピュータに命令を速く処理させることである。一
般にコンピュータプロセッサはどの様な処理の命令も次
々と順次に取り扱う。従って命令1は命令2が開始する
前に処理するか少なくとも始めなければならない(パイ
プラインに入れなければならない)。しかし2つないし
それ以上の命令を同時に実行することができれば、コン
ピュータは命令を速く処理することができる。これは1
つ以上の処理経路を有し、その処理経路を通して複数命
令を同時に実行する中央演算処理装置を備えることで達
成できる。通常では逐次に実行する同種の一般的なマシ
ン命令を同時に2つないしそれ以上を処理できる処理経
路を持つプロセッサを有するコンピュータは、スーパー
スケール・コンピュータと呼ばれている。
【0003】新しいコンピュータを設計する場合に直面
する1つの問題は、その様なコンピュータが商業的に成
功するには、利用者の興味を引くために、それで実行で
きるアプリケーション・プログラムの基盤がなければな
らないということである。そのようなプログラムを提供
する最も経済的な方法は、新しいコンピュータを以前の
コンピュータないし系統コンピュータのために設計され
たアプリケーション・プログラムで作動するように設計
することである。この種の設計例として、8086、8088、
80186、80286、386TM、i486TMを初めとするインテル社
によるマイクロプロセッサ(以下、インテル・マイクロ
プロセッサと称する)に基づくコンピュータがある。
する1つの問題は、その様なコンピュータが商業的に成
功するには、利用者の興味を引くために、それで実行で
きるアプリケーション・プログラムの基盤がなければな
らないということである。そのようなプログラムを提供
する最も経済的な方法は、新しいコンピュータを以前の
コンピュータないし系統コンピュータのために設計され
たアプリケーション・プログラムで作動するように設計
することである。この種の設計例として、8086、8088、
80186、80286、386TM、i486TMを初めとするインテル社
によるマイクロプロセッサ(以下、インテル・マイクロ
プロセッサと称する)に基づくコンピュータがある。
【0004】新しいプロセッサを以前のコンピュータで
使用されたソフトウエアで機能するように設計する際に
は、新しいマシンはそのソフトウエアの命令を理解し、
処理できなければならない。インテル・マイクロプロセ
ッサ・ラインのプロセッサで使用する命令は、1バイト
から15バイトまで変化する。それらの命令はインテル・
マイクロプロセッサを操作する既存のプログラムで上記
の一般的な順序で配列されている。
使用されたソフトウエアで機能するように設計する際に
は、新しいマシンはそのソフトウエアの命令を理解し、
処理できなければならない。インテル・マイクロプロセ
ッサ・ラインのプロセッサで使用する命令は、1バイト
から15バイトまで変化する。それらの命令はインテル・
マイクロプロセッサを操作する既存のプログラムで上記
の一般的な順序で配列されている。
【0005】コンピュータの動作速度を増大する1つの
方法は命令をパイプライン処理することである。各々の
命令をそれが完了するまで実行し、その上で次の命令を
開始する代わりに、命令のある段階を処理している間に
別の段階を重ねてコンピュータの遊び部分がないように
するのである。インテル・マイクロプロセッサを使用し
たコンピュータでは各々の命令の各々の段階を1クロッ
ク周期で扱うことのできるように命令をパイプライン処
理している。一般にこれには命令をその記憶場所から取
り出し、解読し、実行し、そして実行結果を後に使用す
るため記憶装置に書き戻すことが必要である。回路は、
異なる段階でそれぞれ1クロック周期を必要とするよう
に設計する。プロセッサの異なる部分で各々のクロック
周期中に逐次命令のパイプラインの各々の段階を完了す
る。従って第1のクロック周期中に、プロセッサの事前
取出し部分は命令を記憶装置から取り出し、解読できる
ように整列する。第2クロック周期中に、プロセッサの
事前取出し部分は記憶装置から次の命令を取り出して整
列させ、第3クロック周期でそれを解読する。プロセッ
サの解読部分は取り出された第1の命令の解読を第2ク
ロック周期中に完了する。その解読部分は取り出された
第2の命令の解読を第3クロック周期中に完了する。命
令をパイプライン処理することで、全体的な作業速度は
大幅に増大する。
方法は命令をパイプライン処理することである。各々の
命令をそれが完了するまで実行し、その上で次の命令を
開始する代わりに、命令のある段階を処理している間に
別の段階を重ねてコンピュータの遊び部分がないように
するのである。インテル・マイクロプロセッサを使用し
たコンピュータでは各々の命令の各々の段階を1クロッ
ク周期で扱うことのできるように命令をパイプライン処
理している。一般にこれには命令をその記憶場所から取
り出し、解読し、実行し、そして実行結果を後に使用す
るため記憶装置に書き戻すことが必要である。回路は、
異なる段階でそれぞれ1クロック周期を必要とするよう
に設計する。プロセッサの異なる部分で各々のクロック
周期中に逐次命令のパイプラインの各々の段階を完了す
る。従って第1のクロック周期中に、プロセッサの事前
取出し部分は命令を記憶装置から取り出し、解読できる
ように整列する。第2クロック周期中に、プロセッサの
事前取出し部分は記憶装置から次の命令を取り出して整
列させ、第3クロック周期でそれを解読する。プロセッ
サの解読部分は取り出された第1の命令の解読を第2ク
ロック周期中に完了する。その解読部分は取り出された
第2の命令の解読を第3クロック周期中に完了する。命
令をパイプライン処理することで、全体的な作業速度は
大幅に増大する。
【0006】命令はバスないしキャッシュ・メモリから
互いに区別されていない命令のバイトのストリームとし
て供給する。各々の命令は(一般に)どの過程でも順番
に現れる。コンピュータ速度を維持するため、それらの
命令はそれらの出所源から1クロック周期で事前に取り
出す必要がある。これは次のクロック周期中に次の命令
を選択できるように、1クロック周期で長さの分からな
い第1の命令の終端を判定する必要があることを意味す
る。任意時に処理されている命令の長さを判定するた
め、インテル・マイクロプロセッサを使用した以前のコ
ンピュータは最初に命令を解読してその内容を判定して
いた。これを完了すると、処理されている命令の長さと
シーケンス内の次の命令の開始点が分かり、事前取出し
装置にフィードバックすることができる。このためイン
テル・マイクロプロセッサに基づく以前の全てのコンピ
ュータでの命令の解読は、逐次に行う必要があった。
互いに区別されていない命令のバイトのストリームとし
て供給する。各々の命令は(一般に)どの過程でも順番
に現れる。コンピュータ速度を維持するため、それらの
命令はそれらの出所源から1クロック周期で事前に取り
出す必要がある。これは次のクロック周期中に次の命令
を選択できるように、1クロック周期で長さの分からな
い第1の命令の終端を判定する必要があることを意味す
る。任意時に処理されている命令の長さを判定するた
め、インテル・マイクロプロセッサを使用した以前のコ
ンピュータは最初に命令を解読してその内容を判定して
いた。これを完了すると、処理されている命令の長さと
シーケンス内の次の命令の開始点が分かり、事前取出し
装置にフィードバックすることができる。このためイン
テル・マイクロプロセッサに基づく以前の全てのコンピ
ュータでの命令の解読は、逐次に行う必要があった。
【0007】スーパー・スケールマシンは少なくとも2
つの命令を同時に行う必要があるため、2つの命令を同
時に解読しなければならない。しかし情報ストリームか
ら第2の命令の冒頭を選択するには、どこで第1の命令
が終るか分からなければならない。しかし第1の命令を
解読しないと第1の命令の長さが分からず、したがって
第2の命令が始まる場所が分からない。第2の命令の処
理を始める前に第1の命令の解読を待たなければならな
いのでは、2つの命令を同時に処理するというスーパー
・スケールの全目的に反することになる。
つの命令を同時に行う必要があるため、2つの命令を同
時に解読しなければならない。しかし情報ストリームか
ら第2の命令の冒頭を選択するには、どこで第1の命令
が終るか分からなければならない。しかし第1の命令を
解読しないと第1の命令の長さが分からず、したがって
第2の命令が始まる場所が分からない。第2の命令の処
理を始める前に第1の命令の解読を待たなければならな
いのでは、2つの命令を同時に処理するというスーパー
・スケールの全目的に反することになる。
【0008】
【発明が解決しようとする課題】従って本発明の目的
は、スーパースケールコンピュータが互いに区別されず
に順次に現れる長さの分からない2つの命令を同時に処
理できるようにする構造を提供することである。本発明
のより詳しい目的は、判定を行うために命令を解読する
必要なしにスーパースケールコンピュータで処理する命
令の長さを判定する構造を提供することである。
は、スーパースケールコンピュータが互いに区別されず
に順次に現れる長さの分からない2つの命令を同時に処
理できるようにする構造を提供することである。本発明
のより詳しい目的は、判定を行うために命令を解読する
必要なしにスーパースケールコンピュータで処理する命
令の長さを判定する構造を提供することである。
【0009】
【課題を解決するための手段】本発明の以上の目的は、
その命令がその長さのその地点で終了することを示す各
命令の事前に指定された各々の長さを示す終端ビットを
供給する手段と、命令の実際の終端である命令の特定の
事前指定長さにその終端ビットを設定する手段と、命令
シーケンス内の第1の命令を処理する第1のチャネル
と、命令のシーケンス内の第1の命令に続く次の命令を
処理する第2のチャネルと、第1のチャネルで処理され
ている命令の終端ビットを調べてその命令の終点と命令
ストリームから次の命令の冒頭を判定する手段からな
る、長さが異なりそれらが区別されていない命令ストリ
ームとして命令が順次現れる場合に、コンピュータシス
テムで処理されるようにその命令の長さを判定する装置
により実現することができる。
その命令がその長さのその地点で終了することを示す各
命令の事前に指定された各々の長さを示す終端ビットを
供給する手段と、命令の実際の終端である命令の特定の
事前指定長さにその終端ビットを設定する手段と、命令
シーケンス内の第1の命令を処理する第1のチャネル
と、命令のシーケンス内の第1の命令に続く次の命令を
処理する第2のチャネルと、第1のチャネルで処理され
ている命令の終端ビットを調べてその命令の終点と命令
ストリームから次の命令の冒頭を判定する手段からな
る、長さが異なりそれらが区別されていない命令ストリ
ームとして命令が順次現れる場合に、コンピュータシス
テムで処理されるようにその命令の長さを判定する装置
により実現することができる。
【0010】注記と用語 以下の詳細な説明の一部はコンピュータ・メモリ内のデ
ータビットに対するオペレーションについて記号表現で
表している。それらの説明や表現はデータ処理技術の当
業者がその作業の実質を他の当業者に最も効率的に伝え
るために使用する手段となっている。オペレーションは
物理的な量の物理的な操作を必要とするものである。通
常、必ずしもそうではないが、それらの量は記憶、転
送、結合、比較その他の操作が可能な電気ないし磁気信
号の形を取る。時にはおもに通常に使用されているとい
う理由で、それらの信号をビット、値、要素、記号、文
字、周期、数などで参照することが便利であることが分
かっている。しかしそれら及び類似の用語はすべて適切
な物理量と関連しており、単にそれらの量に適用された
便利なラベルでしかないことに留意すべきである。
ータビットに対するオペレーションについて記号表現で
表している。それらの説明や表現はデータ処理技術の当
業者がその作業の実質を他の当業者に最も効率的に伝え
るために使用する手段となっている。オペレーションは
物理的な量の物理的な操作を必要とするものである。通
常、必ずしもそうではないが、それらの量は記憶、転
送、結合、比較その他の操作が可能な電気ないし磁気信
号の形を取る。時にはおもに通常に使用されているとい
う理由で、それらの信号をビット、値、要素、記号、文
字、周期、数などで参照することが便利であることが分
かっている。しかしそれら及び類似の用語はすべて適切
な物理量と関連しており、単にそれらの量に適用された
便利なラベルでしかないことに留意すべきである。
【0011】更に行う操作はしばしば、通常人間のオペ
レータにより行われる精神的な作業に関連した加算、比
較といった用語で称する。人間のオペレータのそのよう
な能力は本発明の一部を形成するここで説明する作業の
いずれにも必要なく、あるいは大方の場合望ましくな
い。作業は機械作業である。いずれの場合もコンピュー
タを作動する場合の方法作業と計算それ自身の方法の間
の区別に留意すべきである。本発明は電気ないしその他
(例:機械的、化学的)物理的信号を処理して他の所望
の物理的信号を生成するコンピュータを作動する装置に
関する。
レータにより行われる精神的な作業に関連した加算、比
較といった用語で称する。人間のオペレータのそのよう
な能力は本発明の一部を形成するここで説明する作業の
いずれにも必要なく、あるいは大方の場合望ましくな
い。作業は機械作業である。いずれの場合もコンピュー
タを作動する場合の方法作業と計算それ自身の方法の間
の区別に留意すべきである。本発明は電気ないしその他
(例:機械的、化学的)物理的信号を処理して他の所望
の物理的信号を生成するコンピュータを作動する装置に
関する。
【0012】
【実施例】図1は本発明を実施する構造10のブロック図
である。構造10には最近利用した命令を格納するキャッ
シュ・メモリ12がある。一般にそのようなキャッシュ・
メモリは中央演算処理装置で利用して、主記憶装置への
参照の必要なしに情報への速いアクセスを行うことがで
きる。本発明を使用する回路では、キャッシュ・メモリ
12は中央演算処理装置で利用する命令の有用な出所源と
なっているが、一部の命令は主記憶装置と事前取出しバ
ッファからシステムバスに来ている。情報の源は本発明
の説明に影響を及ぼさないので、図1にはキャッシュ・
メモリ12だけをそのような出所源として示している。本
発明の本実施例では、キャッシュ・メモリにはそれぞれ
256ビットワイドのラインに配列した8キロバイトの記
憶装置が内蔵されている。合計 256ラインでこれだけの
量の命令データに十分な記憶を提供する。利用する特定
のキャッシュ・メモリ12の詳細は本発明には関係ないの
で、本明細書では長く説明しない。
である。構造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ビットワイドしかない。特定のコンピ
ュータでは、特定のプロセッサに対し他の長さがより便
利な度量法ならば、メモリのバイト以外の何等かの長さ
(例えば半語)を示す終端ビットを利用することも可能
である。
メモリ12に加えて、この構造では終端ビットキャッシュ
・メモリ14を利用する。この終端ビットキャッシュ・メ
モリ14は、キャッシュ・メモリ12に格納された命令デー
タの各々のバイトの終端を指定するビットを格納するの
に利用する。本発明の本実施例では、キャッシュ・メモ
リ12に格納された命令のバイトの終端を指定する1つの
ビットは、キャッシュ・メモリ14に格納する。命令キャ
ッシュ・メモリ12と終端ビットキャッシュ・メモリ14に
格納された情報パターン例を図4に示し、以下詳細に説
明する。本実施例のキャッシュ・メモリ14にはキャッシ
ュ・メモリ12と同様の数のライン( 256本)が含まれて
いるが、32バイトしかキャッシュ・メモリ12の 256ビッ
トラインのいずれにも格納できないので、キャッシュの
各々のラインは32ビットワイドしかない。特定のコンピ
ュータでは、特定のプロセッサに対し他の長さがより便
利な度量法ならば、メモリのバイト以外の何等かの長さ
(例えば半語)を示す終端ビットを利用することも可能
である。
【0014】命令キャッシュ・メモリ12の各々のライン
と終端ビットキャッシュ・メモリ14の関連ラインは、両
メモリの関連ラインにアクセスしたときに一緒にヒット
ないしミスするように同一のタッグビットを共用してい
る。キャッシュ・メモリ14に格納された終端ビットを使
用してキャッシュ・メモリ12に格納された各々の順次の
命令の終端を指定し、命令が解読される前に処理される
各々の命令の長さの判定を行うことができるようにす
る。このようにすることで、プロセッサで実行するプロ
グラムに長さが変わる命令が順次に現れ、それらが解読
されるまでその長さが示されないとしても、スーパース
ケールコンピュータの作動速度を維持することができ
る。
と終端ビットキャッシュ・メモリ14の関連ラインは、両
メモリの関連ラインにアクセスしたときに一緒にヒット
ないしミスするように同一のタッグビットを共用してい
る。キャッシュ・メモリ14に格納された終端ビットを使
用してキャッシュ・メモリ12に格納された各々の順次の
命令の終端を指定し、命令が解読される前に処理される
各々の命令の長さの判定を行うことができるようにす
る。このようにすることで、プロセッサで実行するプロ
グラムに長さが変わる命令が順次に現れ、それらが解読
されるまでその長さが示されないとしても、スーパース
ケールコンピュータの作動速度を維持することができ
る。
【0015】中央演算処理装置で利用する命令について
アクセスするキャッシュ・メモリ12の特定ラインはロー
テータ15に与えられ、終端ビット・キャッシュ・メモリ
14内の関連ラインのビットはローテータ16に与えられ
る。即ちキャッシュ・メモリ12のライン3が特定の命令
についてアクセスされる場合、キャッシュ・メモリ12の
アクセスされたラインに格納された命令と関連した終端
ビットについてキャッシュ・メモリ14のライン3にアク
セスが行われる。キャッシュ・メモリにアクセスする手
段はよく知られているが、本発明には関係ないので、本
明細書では説明しないことにする。従って、キャッシュ
・メモリ12のコードの各々のラインに対応するキャッシ
ュ・メモリ14内の終端ビットのラインが存在し、ローテ
ータ15によりキャッシュ・メモリ12から転送されたコー
ドの各々のラインに対して、キャッシュ・メモリ14に格
納された終端ビットのラインがローテータ16で転送され
る。
アクセスするキャッシュ・メモリ12の特定ラインはロー
テータ15に与えられ、終端ビット・キャッシュ・メモリ
14内の関連ラインのビットはローテータ16に与えられ
る。即ちキャッシュ・メモリ12のライン3が特定の命令
についてアクセスされる場合、キャッシュ・メモリ12の
アクセスされたラインに格納された命令と関連した終端
ビットについてキャッシュ・メモリ14のライン3にアク
セスが行われる。キャッシュ・メモリにアクセスする手
段はよく知られているが、本発明には関係ないので、本
明細書では説明しないことにする。従って、キャッシュ
・メモリ12のコードの各々のラインに対応するキャッシ
ュ・メモリ14内の終端ビットのラインが存在し、ローテ
ータ15によりキャッシュ・メモリ12から転送されたコー
ドの各々のラインに対して、キャッシュ・メモリ14に格
納された終端ビットのラインがローテータ16で転送され
る。
【0016】処理される2つの命令の第1のものの冒頭
を選択し、処理するその第1の命令の冒頭を適切に整列
するために、事前取出し命令ポインタの値をローテータ
15と16の各々に与える。同様に、命令ポインタ値は処理
される命令の冒頭終端ビットを選択して整列する。この
命令ポインタ値は処理された最後の2つの命令の合同長
さの計算から得られる。事前取出し命令ポインタ値を生
成する回路の詳細は、本明細書と同一日付に出願され、
本発明の譲渡人に譲渡されたE.グロチョウスキーによる
「長さ計算におけるローテータ」の名称の出願番号
の米国特許出願に記載されている。
を選択し、処理するその第1の命令の冒頭を適切に整列
するために、事前取出し命令ポインタの値をローテータ
15と16の各々に与える。同様に、命令ポインタ値は処理
される命令の冒頭終端ビットを選択して整列する。この
命令ポインタ値は処理された最後の2つの命令の合同長
さの計算から得られる。事前取出し命令ポインタ値を生
成する回路の詳細は、本明細書と同一日付に出願され、
本発明の譲渡人に譲渡されたE.グロチョウスキーによる
「長さ計算におけるローテータ」の名称の出願番号
の米国特許出願に記載されている。
【0017】ローテータ15の目的を完遂するのに利用で
きるローテータは、本明細書と同一日付に出願され、本
発明の譲渡人に譲渡されたE.グロチョウスキーによる
「命令ストリームから可変長命令を導出する2段階ウィ
ンドウ・マルチプレキサ」の名称の出願番号
の米国特許出願に記載されている。同特許出願では、本
発明のローテータ16、20に使用できる従来のローテータ
を詳細に説明している。ローテータ15と20の基本的な目
的は、処理される命令を含めるために十分長いバイトの
シーケンスを導出し、特定の命令の冒頭が後続の処理チ
ャネルで最初に処理されるようにそれらの命令を整列さ
せることである。ローテータ16はビットの同じローテー
ションを行い、関連ラインでの各々のバイトの終端を指
定する。
きるローテータは、本明細書と同一日付に出願され、本
発明の譲渡人に譲渡された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ビットの最初のものの
冒頭に整列される。
択された命令のラインは、ローテータ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は最低の優先度を持ってい
る。
の終端ビットを選択する。この作業を行うため、優先順
位器にはローテータ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に転送し、それを解読
して使用する。この時点から、命令は別々の処理チャネ
ルを進行する(その方法は本明細書の主題ではない)。
用いて、第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に転送される。
は、命令が解読され、比較器27に転送されると共に判定
される。この判定を行う装置は先述の「長さ計算におけ
るローテータ」の名称の出願番号 の米国特許
出願に詳細に記載されている。比較器27は、また優先順
位器19から終端ビット・フリップフロップ28を通して、
整列されたビットのシーケンス内で1にセットされた最
初に得られる終端ビットを選択する際に優先順位器19で
判定された長さの表示をローテータ16から受け取る。上
記で指摘したように、1の値を生成する優先順位器19の
特定ANDゲートは命令の長さをバイトで示した。それ
らの長さは比較される。テストした長さが異なる場合、
比較結果は特定終端ビットを更新する要求として終端ビ
ット生成器30に転送される。
【0022】終端ビット生成器30は第2の入力をそれが
ローテータ15と16に供給されたときに、命令ポインタか
ら受取り、その値をラッチする。従って終端ビット生成
器はUパイプで処理されている命令がどこでスタートし
たかを知っている。それはまた命令の正しい長さが分か
るように解読器24から長さ値を受け取る。その結果、終
端ビット生成器30はキャッシュ・メモリ14内の終端ビッ
トを訂正する必要のある命令を認識する。そこでデータ
の処理に重要でない時間に、キャッシュ・メモリ14内の
終端ビットに対し訂正を行う。
ローテータ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
ビットベクターを生成する。
ものである。この回路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のすぐ左の図に示してい
る。
ーはラッチ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によりその段階の出力に転送される。
階を示す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の値を生成す
る。
が0の値になるのは、解読器32からの命令ポインタベク
ターが1の値を有する段階であることが分かる。0の出
力は、命令の終端を示す解読器35からのベクターが1で
ある段階まで各々の後続の段階で生成される。この段階
と全ての後続の段階はマスクの冒頭へ循環して命令の冒
頭を記す段階50のすぐ前の段階50まで1の値を生成す
る。
【0027】このマスクビットベクターは、ラッチ39に
入れる。マスク・ベクター生成器33はまた、命令が循環
して2つのキャッシュラインにまたがり、訂正を行うの
に2回のキャッシュ書き込みを必要とするかどうかを示
す。これは解読器35から供給された訂正終端ビットがビ
ットのシーケンス内で命令ポインタビットに先行するか
どうかを判定することで判定できる。図6はまた、この
結果をもたらす回路60をも示している。回路60は各々の
ベクターのものまでビット位置をカウントする一対のカ
ウンタ61、62と、解読器32からのベクターあるいは解読
器35からのベクターが大きいかどうかを判定する比較器
63を内蔵している。
入れる。マスク・ベクター生成器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のキャッシュラインに対して
この作業を繰り返すことができる。
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パイプチャネルを通して実行される次の命令とな
る。
果が得られれば(長さが同程度でない)、無効結果は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番目あるいはそれ以上のアクセスとなると思われ
る。従って最初のアクセスに対して終端ビットを訂正す
る必要性はシステム内で殆ど遅延を生じない。
命令に対して初期終端ビットを与えるため、新しい命令
の各々のバイトの各々の終端ビットはその命令がキャッ
シュ・メモリ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の命令の終端ビットと次の事
前取出しポインタの位置も図に示してある。
ットキャッシュ・メモリ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の長さを拡張して命令データの各
々のバイトの間にそれらのビットのためのゆとりを作る
ことも可能である。従って本発明は請求項の範囲につい
て判断を行うべきである。
ステップのシーケンスをリストアップしたものである。
それらのステップの各々は、上記で詳述した。図で同一
ボックス内に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の命令に次に
続く命令を処理する第2のチャネルと、第1のチャネル
により処理されている命令の終端ビットを調べてその命
令の終点と命令のストリームから次の命令の冒頭を判定
する手段とからなる命令の長さを判定する装置。 - 【請求項2】 命令がその長さが変わるものでしかもそ
れぞれが区別されないで命令ストリームの中で順次に現
れるようになっているコンピュータシステムで処理して
いる命令の長さを判定する方法において、命令がその長
さの地点で終了することを示すための命令の事前に指定
された各々の長さのための終端ビットを供給し、命令の
実際の終端である命令の特定の事前指定長さにその終端
ビットをセットし、シーケンス内の第1の命令を第1の
チャネルにより処理し、第1の命令に次に続く命令を第
2のチャネルにより処理し、第1のチャネルにより処理
されている命令の終端ビットを調べてその命令の終点と
命令のストリームから次の命令の冒頭を判定することを
特徴とする命令の長さを判定する方法。
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)
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)
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)
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 |
-
1993
- 1993-01-14 GB GB9300726A patent/GB2263987B/en not_active Expired - Lifetime
- 1993-01-14 SG SG1996002495A patent/SG45269A1/en unknown
- 1993-01-28 US US08/010,360 patent/US5450605A/en not_active Expired - Lifetime
- 1993-01-29 DE DE4302495A patent/DE4302495C2/de not_active Expired - Lifetime
- 1993-02-08 JP JP5041783A patent/JPH06236268A/ja active Pending
-
1994
- 1994-09-06 US US08/301,313 patent/US5586276A/en not_active Expired - Lifetime
-
1996
- 1996-07-18 HK HK127696A patent/HK127696A/xx not_active IP Right Cessation
Cited By (1)
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) | 情報処理装置 |