JP3547740B2 - 命令高速解読パイプラインプロセッサ - Google Patents

命令高速解読パイプラインプロセッサ Download PDF

Info

Publication number
JP3547740B2
JP3547740B2 JP51654993A JP51654993A JP3547740B2 JP 3547740 B2 JP3547740 B2 JP 3547740B2 JP 51654993 A JP51654993 A JP 51654993A JP 51654993 A JP51654993 A JP 51654993A JP 3547740 B2 JP3547740 B2 JP 3547740B2
Authority
JP
Japan
Prior art keywords
cpu
instruction
processing unit
central processing
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP51654993A
Other languages
English (en)
Other versions
JPH07507888A (ja
Inventor
チャン、ステファン、エイチ.
Original Assignee
ザイログ,インコーポレイテッド
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 ザイログ,インコーポレイテッド filed Critical ザイログ,インコーポレイテッド
Publication of JPH07507888A publication Critical patent/JPH07507888A/ja
Application granted granted Critical
Publication of JP3547740B2 publication Critical patent/JP3547740B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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
    • 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
    • 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/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

技術の分野
本発明は一般的には、コンピュータのスループットの改善に係り、さらに詳しくいえば、命令解読の計画において、中央処理装置における命令の解読を加速することに関する。
発明の背景
今日のコンピュータの設計において、パイプライン構造が用いられ続けてきた。この構造は組み立てラインに類似している。これは命令の順序の実行を仕事の順序に分割する(すなわち、命令のフェッチング,命令の解読,実行,結果の記憶)。これらの全てのタスクについて、資源の専用ステーションが提供される。命令がパイプラインを流れるにしたがって、それらのタスクがそのステーションで、順次実行されるであろう。各々の命令は後続の命令に従われており、そのステーションがあきさえすれば、直ちにそこが占有される。異なった命令の開始までの遅れ時間、およびパイプライン構造におけるその終了は、コンパクトにされており、その結果、コンピュータのスループットが増加させられている。
パイプラインコンピュータにおける能率的でないステーションは、ボトルネックとなる。ボトルネックステーションは命令の速度を記述しているものであるからコンピュータのスループットを記述している。もしボトルネックステーションが加速されれば、パイプラインコンピュータのスループットは増加するであろう。
パイプラインコンピュータにおける共通のボトルネックは、均一でない長さをもつオプコード(オプションコードまたは命令コード)の命令の解読である。
コンピュータの命令は通常は、オプコードをもっており、そのオプコードからの命令に対応する処理を指令する信号が発生させられる。コンピュータにおけるオプコードのサイズは、通常そのデータパスの幅、換言すればそのハードウェア(数学論理ユニット,バス,デコーダその他)に依存している。もし、オプコードがnビットの長さをもっていれば、それは2のn乗の異なったビットの組み合わせに解読されることができ、そしてコンピュータは2のn乗セットの異なったタイプの命令をもつことになるであろう。典型的に最も多くの今日のコンピュータデザインにおいては、nは8の倍数である(すなわち、1バイト)。
しかしながら、コンピュータの命令のセットがそのデータパスを拡張することなしに、拡張させるべきであるような機会がある。そのようなことは、コンピュータを高級化してより多くの命令を取り扱おうとするが、そのときそのハードウェアについて実質的な変化を行わなかった場合である。そのような場合がおこると1またはそれ以上のバイトが、通常オプコードに付加される。
従来技術のコンピュータにおいては、マルチバイトのオプコードの解読は、命令が解読されるときに、一時に1つずつ各バイトが検査されることによって行われる。各々のバイトの検査は1サイクルが必要であった。この従来技術のアプローチにおける欠点は、マルチバイトのオプコードの解読が、マルチサイクルが必要であって、それがパイプラインにおけるボトルネックを形成し、スループットを減少させることである。
発明の要約
今日のコンピュータにおける命令の長さは、特にCISC(コンプレックス命令セットコンピューティング)コンピュータにおいては、少なくともコンピュータのデータパスの幅、またはそれ以上である。これらのコンピュータにおける命令は、しばしばセグメントでフェッチされる。これらの命令の実行は、全てのセグメントがフェッチされ、そしてアセンブルされてから開始される。
本発明によれば、命令のセグメントがフェッチされ、そして組み立てられるときの時間を利用することに関する。この期間において、部分的な命令の解読が行われる。部分的な解読により得られた情報が、それからその命令の引き続く処理を加速するために用いられる。
本発明はCPUであって、命令をフェッチするための第1の手段、第1の手段によってフェッチされた命令を解読するための第2の手段、および前記第2の手段によって解読された命令を実行するための第3の手段を含んでいるものに向けられている。そのコンピュータは第1の手段による命令のフェッチングと同時にその命令におけるビットのサブセットと、前記命令の処理を加速するための情報を検査し、第4の手段で与える。
【図面の簡単な説明】
図1は本発明が具体化されているコンピュータシステムのブロック図である。
図2は命令がフェッチされたときに、どのようにして試験されるかを示す概略図である。
図3は命令の解読の前に1つのオプコードのセグメントを検査するための好ましい実施形態における論理を示す流れ図である。
図4は好適な実施形態における拡張キューの実施例を示すブロック図である。
図5は好適な実施形態におけるプリフェッチキューの構成を図解したブロック図である。
好適な実施例の説明
図1は本発明が具体化されているコンピュータシステム100の略図的なブロック図を示している。コンピュータシステム100は、メモリ11で、その中に命令とデータが蓄積されているものを含んでいる。コンピュータシステムは同様に、命令とデータをメモリ11からフェッチするマイクロプロセッサ(CPU)12を含んでいる。命令とデータは2バイトの幅のバス13を介してフェッチされる。それらはそれからCPU12によって処理される。処理の結果、発生した全てのデータは蓄積され、もし必要ならばバス13を介してメモリ11に戻される。
メモリとバスの設計は、通常利用される一般的な技術であるから、バス13の説明とメモリ11の説明の両方は不必要であると思われる。
コンピュータシステム100の各々の命令は1つのオプコードをもっている。命令のうち、いくつかのものはさらに付加的なオプコードと、オペランドまたは命令のオペランドのアドレスを規定するところの1または2以上の固定フィールドをもっている。コンピュータシステム100の命令のオプコードは、1バイト,2バイトまたは3バイトの長さである。しかしながら、もしオプコードが2倍以上の長さであれば第1のバイトは1つの“拡張コード”である。1つの拡張コードはバイトであって、それは“ED",“DD"“FD"または“CB"の16進の値をもっている。これはCPU12に対応するオプコードが1バイト長以上に拡張したことを知らしめる。(一方4つの特定の16進の命令は、拡張コード上に指定され、それは16進値以外のものを使用することもできる。)命令のオプコードが拡張コードをもつときに、オプコードは少なくとも2バイトとなる。
同様にして、もし1つのオプコードが3バイトの長さであれば、各々の最初の2バイトは拡張コードである。2つの拡張コードは、16の異なった方法(なぜならば、各々の拡張コードは4つの異なった値をもつからであり)16通りの組み合わせが可能であって、引き続く次の6つの組み合わせが好適な実施形態において利用される:ED−CB,DD−CB,FD−CB,ED−ED,ED−DDおよびED−FDである。この6つの組み合わせのみを利用する理由は、他の組み合わせ、すなわち、それは本発明においての利用を制限するものではないが、それらは現在は不必要であるが、それらはさらに将来起こりうるであろう命令のセットの拡張のために準備されているものである。
オプコードは同様にして、さらにmバイトに拡張されることができる。オプコードのm−1バイトの各々は拡張コードである。
命令は、命令プリフェッチユニット14の制御のもとでCPU12によってフェッチされる。命令フェッチユニット14(それはプリフェッチキューを十分に包含するものであり、それは以後図2を参照して説明されるであろう。)の命令は1バイトまたは2バイトのセグメントでフェッチされる。
命令の各々のバイトがCPU12に到達したときに、それは内部命令フェッチバス17を介して命令プリフェッチユニット14によって受信される。各々の命令のバイトは、プリフェッチキューの期間中で、組み立てられる。
1つの命令の実行は、それがプリフェッチキューから再生させられ、そのオプコードが命令デコータ15に送られた時間から開始する。命令デコーダ15は1バイトの幅をもっている。それは1バイトのオプコードを1CPUサイクルにおいて解読する。本発明によらなければ、2バイトのオプコードをデコーダすることは、命令デコーダ15に2CPUサイクルかかり、そして3バイトのオプコードの解読には3CPUサイクルが必要になるであろう。
命令デコーダ15は、1つの実行論理16へ制御信号を発生するためには、1つの命令のオプコードを解読する。オペランドがもし命令中に存在すれば、オペランドは直接に実行論理16に命令デコーダ15をバイパスして送られるであろう。実行論理16は、論理と演算制御であって、命令デコーダ15からの信号に応答するオプコードによって規定される。
デコーダと命令論理の設計は、よく知られたものであるから、命令デコーダ15と実行論理16の説明は不必要だと思われる。
図2を参照して、命令がフェッチされたときにどのようにして試験されるかを図解したブロック図が示されている。
命令のバイトがメモリ11からCPU12に到達すると、それらは1つの8ビットの幅のプリフェッチキュー201であって、それは円形の循環バッファの中につくられたものに蓄積される。前記プリフェッチキュー201は、8個の入口の深さをもっている。1つのプリフェッチキューカウンタ207が、プリフェッチキュー201の第1のあいている入口を識別する。
プリフェッチキューカウンタ207からの出力は、プリフェッチキュー201に命令バイトの記憶を制御するキュー入力イネイブル論理504に印加される。2つの2バイトの命令がフェッチされたときに、第1のバイトは命令フェッチバス17の上位バイトで、第2のバイトはその下位バイトにくる。1バイトの命令がフェッチされたときには、それは命令フェッチバス17の上位バイトの位置に到達するであろう。前記キュー入力イネイブル論理17は、各々の到達したバイトをプリフェッチキュー201の第1のあいている入口に印加して記憶する。1バイトの命令が蓄積されているときに、プリフェッチキューカウンタ207は更新される。
1つのQ−サイズカウンタ202がプリフェッチキュー201の中に蓄積されているバイト数を記録するために用いられる。1バイトの命令がプリフェッチキュー201に蓄積されたときに、前記Q−サイズカウンタ202は、1だけカウントアップされる。これとは反対に、1つの命令がプリフェッチキュー201から命令デコーダ15によって処理されるために再生されたときにQ−サイズカウンタ202が、その命令のバイトの数によって減算される。
命令フェッチバス17は同様に、エスケープデコーダ203に接続されている。前記エスケープデコーダ203は、上位の1バイト幅のデコーダ203aと下位の1バイト幅のデコーダ203bで構成されている。このデコーダ203aは、上位の命令フェッチバス17に接続され、下位のデコーダ203bは、下位の命令フェッチバス17に接続されている。各々の命令バイトがCPU12によってフェッチされると、各命令は同時にいずれかの高い次数のデコーダ203aまたは低い次数のデコーダ203bによって受信される。各々のデコーダ203a,203bは命令の入力したバイトが拡張コードかどうか検査するように動作する。
高い、または低い拡張デコーダ203a,203bは4ビットを出力する。拡張デコーダ203が1つの拡張コードに当たったときに、4つの出力ビットのうちの1つが、拡張コードの値に依存する4つのうちの1つの出力ビットを指定するだろう。例えば、入ってきた命令バイトが、“ED"に等しければ、第1の出力ビットがセットされ、もし入ってきたバイトが“DD"に等しければ第2の出力ビットがセットされ、もし入ってきたバイトが“FD"に等しければ第3の出力ビットがセットされ、そしてもし入ってきたバイトが“CB"ならば4番目のビットがセットされるであろう。
前記拡張デコーダ203の4ビットの出力は、4ビットの幅の拡張キュー204に蓄積され、この拡張キュー204は、サーキュラーバッファとして設けられている。前記拡張キュー203は、8の入力の深さをもっており、それはプリフェッチキュー201の入力と同じである。各々のプリフェッチキュー201の入力は、拡張キュー203に対応する計数部を有する。バイトがプリフェッチキュー201に蓄積されたり、再生されたときに、拡張キュー203の対応する入口が加算されたり、または減算されたりする。プリフェッチキューカウンタ207は、第1のプリフェッチキュー201におけるあき入口を指示し、同様にして拡張キュー204の対応する入口を指示する。
プリフェッチキュー201は、引き続く命令の最初のバイトであって、デコードされ実行されるべきものを含んでおり、その入口を指し示すために3ビットのデコーダキューカウンタ208が設けられている。前記デコーダキューカウンタ208は、対応する拡張キュー204の中の計数部の入口を指し示す。
拡張キュー204が、拡張デコーダ203a,203bからの入力を受けるのであるから、拡張キュー204の各々の入口は、命令バイトのプリフェッチキュー201中の対応する入口の命令バイトが拡張であるかどうかという情報を含んでいる。拡張キューは4ビットQ1−Esc出力、および4ビットQ2−Esc出力に出力する。次の引き続く命令の最初の命令(デコーダキューカウンタ208によって指し示されているように)が1つの拡張コードであるときに、エスケープコードの値に依存するQ1−Esc出力中の1ビットはセットされる。次に引き続く命令中の第2のバイトが拡張コードであるときは、つまりエスケープコードにしたがうQ2−Esc出力中の1ビットがセットされるだろう。
拡張キュー204から出力する前記Q1−Esc出力および前記Q2−Esc出力は、拡張コード/シーケンス分析器206に結合されている。前記拡張コード/シーケンス分析器206は、前記Q1−Escおよび前記Q2−Esc信号をその3つの出力の1つを:すなわちQ1out−En,Q2out−EnおよびQ3out−Enのうちの1つをセットするために用いる。これらの3つの信号は、次に引き続く命令中の最初の3バイトのうちの1つを命令デコーダ15に入力することを可能にする。もし次の引き続く命令が1バイトのオプコードをもっていたならば、Q1out−Enがセットされて、次の引き続く命令の第1バイトを命令デコーダ15に入力することを可能にする。もし次の引き続く命令デコーダが2バイトのオプコードをもっていたならば、Q2out−Enは第2番目のバイトを命令デコーダ15に入力することを可能にするためにセットされる。
そしてもし次の引き続く命令が3バイトのオプコードであれば、命令デコーダ15に第3番目の3バイトを入力可能にするようにQ3out−Enはセットされる。
1つのEsc−Info信号は、拡張コード/シーケンス分析器206から命令デコーダ15へ出力する出力信号である。この信号は1つの拡張コードまたは1つのオプコードを分析することによって得られた他の情報として命令デコーダに与える。
命令デコーダ15に適当なバイトを送り出すこと、そして拡張コードを飛び越すことによって、次の命令が、オプコードが2以上のバイトをもっているときでも1サイクルでデコードできる。その結果として対応する命令の処理が加速される。
さて、拡張コード/シーケンス分析器206の動作は、図3と次の表を参照して説明されるであろう。
Figure 0003547740
表1の第1行を参照すると“拡張なし(No Escape)”条件は命令が1バイトのオフコードであることからQ1−Escコードのビットのうちのいずれもセットされないことを意味している。Q2−Escは無関係(Don't care)である。
表1の第2行において、前記“拡張コード”の条件は(1)Q1−EscのEDビットがセットされ、そしてQ2−Escのビットのどれもセットされていないか;(2)Q1−Esc中のDDビットまたはFDビットがセットされているが;しかしQ2−Esc中のCBビットがセットされていないか;または(3)Q1−Esc中のCBビットがセットされているかどうかを意味する。この条件は、次の引き続く命令のオプコードが、たった1つの拡張コードをもつことを意味している。
表1の第3行において、前記“拡張シーケンス(Escape Sequence)”条件が(1)Q1−Esc中のEDビットがセットされ、そしてQ2−Esc中の4つのビットのいずれかがセットされているか;または(2)Q1−EscコードのDDビットまたはFDビットがセットされている;そして、Q2−Esc中のCBビットがセットされているかを意味する。この条件は、オプコードは有効な3バイトのオプコードであることを意味する。
次に、第3図を参照する。301のブロックにおいて拡張コード/シーケンス分析器206が、Q1out−Enを“1"に、Q2out−enを“0"に、そしてQ3out−enを“0"に初期化する。この方法では、プリフェッチキュー201は空であり、そして、1バイトのオプコードをもった命令がCPU12に入力するときに、その命令は、直接に命令デコーダ15に渡され、そして第1のバイトが解読される。
決定ブロック302において、Q−サイズカウンタ202の値が、プリフェッチキュー201が空であるかどうかを決定するためにチェックされる。もしQ−サイズカウンタ202の値が0で、プリフェッチキュー201が空で、そして拡張コード/シーケンス分析器206はブロック302のループでフェッチされるべき1バイトの命令を待つためにブロック302上でループする。
命令の1バイトがCPU12によってフェッチされ、プリフェッチキュー201に蓄積されたときに、前記Q−サイズカウンタ202は加算される。前記拡張コード/シーケンス分析器206は、ブロック302から決定ブロック303への“Yes"の経路にしたがう。
決定ブロック303で表1の“No Escape"の条件が満足しているかどうかを決定させる。もし、“No Escape"の条件が満足されていれば、次の命令は1バイトの幅であり、そして拡張コード/シーケンス分析器206はブロック304に入る。
ブロック304において拡張コード/シーケンス分析器206は、実行論理16が次の引き続く命令を受け入れる準備ができるまで待つ。実行論理16が準備できるときには、命令の実行が始まる。Q1out−enが初期化されないので、プリフェッチキュー201中の第1のバイトは、命令デコーダ15にゲートされるであろう。
オプコードが命令デコーダ15によって解読されたのちには、命令の長さがわかるだろう。ブロック312において、前記Q−サイズカウンタ202は、全ての命令の長さと等しいバイトの数だけ(全てのオプコードと定数と、もしあるならば、フィールド)の命令の数だけ減少させられる。前記デコーダキューカウンタ208は、それが引き続く命令のスタートを指し示すように強制され、それが次の引き続く命令となる。
前記拡張コード/シーケンス分析器206は、ブロック303からのブロック305に入り、“No Escape"条件に合わないときに入る。前記手段で次の引き続く命令の第1バイトが拡張コードである。なぜならば、オプコードは少なくとも2バイトをもっているので、前記拡張コード/シーケンス分析器206は、ブロック305において、Q−サイズカウンタ202が、2またはより以上高く加算されるまで待っている。
前記Q−サイズカウンタ202が、2またはそれ以上であるときに、前記拡張コード/シーケンス分析器206は、決定ブロック306に入る。決定ブロック306において、拡張コード/シーケンス分析器206は、拡張コードの3つの条件のうちどれか1つが満たされるかどうかをチェックする。もし、これらの3つの条件の1つが満たされたならば、次のシーケンシャル命令は、2バイトコードである。前記拡張コード/シーケンス分析器206は、ブロック307に入る。
ブロック307において、前記拡張コード/シーケンス分析器206が、Q2out−enとをセットしQ1out−enをリセットする。実行論理16が次の引き続く命令を受け入れる準備ができているときには、実行が開始される。Q2out−enがセットされるので、プリフェッチキュー201からの第2のバイトが命令デコーダ15にゲートされる。命令が命令デコーダ15に送られたあとに、ブロック312が入力されるだろう。ブロック312において、前記Q−サイズカウンタ202は、全命令(オプコード、定数、フィールドがもしあればそれを含む)の長さに等しい数だけを減少する。デコーダキューカウンタ208はまた次の命令のスタート点を指示するように調整される。
もし、“拡張コード”のテーブル1に示されているどの1つの条件も満たさないときは、前記拡張コード/シーケンス分析器206は、決定ブロック308に入る。ブロック308において、それは“拡張シーケンス”の表1に示されている2つの条件をチェックする。もし、これらの2つの条件が満たされなければ、206はコンピュータ100が不法なオプコードの取り扱いの処理を実行するためにEsc−inf線を介してブロック309へ行く。
“拡張シーケンス”の2つのうちの1つの条件が満たされていれば、引き続く命令のオプコードは3バイトであるはずである。拡張コード/シーケンス分析器206は、それからブロック310に入る。ブロック310において、拡張コード/シーケンス分析器206は、Q−サイズカウンタ202が3に等しいか、またはそれ以上(すなわち、それがプリフェッチキュー201が少なくとも3バイトをもつまで)待つ。
Q−サイズカウンタ202の値が3に等しいか、またはそれ以上のとき、前記拡張コード/シーケンス分析器206は、ブロック311に入る。ブロック311において、拡張コード/シーケンス分析器206が、Q3out−enをセットし、Q1out−enをリセットする。
エクゼキューション論理16が次のシーケンシャル命令を待ち受けているときに、実行が始められる。Q3out−enがセットされた以後、引き続く命令からの第3のバイトが命令デコーダ15にゲートされて入力される。オプコードを解読すると、前記命令デコーダ15は、デコーダ命令の長さがわかるであろう。ブロック312において、Q−サイズカウンタ202は、全ての命令の長さ(全命令は全てのオプコードと定数と、もしあるならばフィールド)に等しいバイト数だけ減算される。前記デコーダキューカウンタ208は、それが次の命令のスタート位置を指示するように調整される。
要するに、要約すれば、命令が解読されるときには、多数のバイトのオプコードの命令の拡張コードがバイパスされて、関係するオプコードバイトだけが解読される。このような命令を解読することは、マルチバイトのオプコードであっても、たった1つのCPUクロックサイクルかかるだけで、命令の処理が加速されるわけである。
プリフェッチキュー201と拡張キュー204の各々の構成には、いくつかの方法がある。1つの方法はバッファのまわりにラップを用いることである。他の方法はシフトレジスタを用いることである。
図4は、好適な実施形態における拡張キュー204の構成を図示した略図的な図である。
この好適な実施形態の拡張キュー204は、8つの入口の深さをもった4ビットの幅のキューである。それは行あたり4つのセルをもった8行のマトリックスで構成される。セルの各行は、高次の拡張デコーダ203aまたは下位の拡張デコーダ203bのどちらか4つの出力ビットを記憶するために使われる。
各々のセル401は、Dタイプのフリップ−フロップ402で構成し、その入力がマルチプレクサ403の出力に接続されている。各々のマルチプレクサ403は、2つの入力をもっている。1つの入力は高次の拡張デコーダ203aからの1ビットに接続されており、他の入力は下位の拡張デコーダ203bに対応するものに接続されている。たとえば、マルチプレクサ403aは、1つの入力で下位のデコーダ203bの出力EDビットに接続されており、他の入力は高次のデコーダ203aの出力EDビットに接続されている。
前記各々のマルチプレクサ403の選択された入力404は、キュー入力イネイブル論理504によって制御される。前記キュー入力イネイブル論理504は、プリフェッチキューカウンタ207の出力を受けるために接続されていて、それがプリフェッチキュー201と拡張キュー204の両方の各々の第1のあきエントリーを指示する。前記キュー入力イネイブル論理504は、プリフェッチキューカウンタ207を解読することによって、マトリックス中のセルの行を選択するように動作する。このマトリックスは第1の拡張キュー204のあきエントリーで構成する。この行は、高次の拡張デコーダ203a,下位のエスケープデコーダ203bのいずれかの出力を記憶するために選択される。
拡張キュー204の出力は、拡張キュー出力イネイブル論理209によって、制御されるであろう。拡張キュー出力イネイブル論理209は、デコーダキューカウンタ208に接続されて、デコーダキューカウンタ208は、次に続く命令の最初の部分に相当する拡張キュー204とプリフェッチキュー201との両方の入力を指し示す。
拡張キュー出力イネイブル論理209は、16個の出力信号406(1,a),406(1,b),・・・406(8,a),406(8,b)の中の2つの信号が作用するためにデコーダキューカウンタ208の値を分析する。16個の信号は、お互いに8つのペアをつくるように組織される。例えば、406(8,a)と406(8,b)の信号は、2つのトリステイトゲイト経由で接続され、407a,407bの信号は、図2に示されている拡張キュー204のセルの行の出力に接続されている。
ある時刻に、前記拡張キュー出力イネイブル論理209が、前記デコーダキューカウンタ208の値に依存しているが、対応するキューエントリーをゲートするために8組の信号のうちの上側の信号406(1,a)を活性化するだろう。この入口からの出力は、Q1−Esc信号である。同じ時点に、前記拡張キュー出力イネイブル論理は、次の入力をゲートするための出力信号の次の組の中の下側の信号の1つ、406(i+1,a)を活性化する。この次の入口からの出力はQ2−Esc信号になる。
図5は、プリフェッチキュー201の構造を図解している。
前記プリフェッチキュー201は、拡張キュー204と同様な方法で構成されている。拡張キュー204と同様に、プリフェッチキュー201は、マトリックスで構成されているが、マトリックスは8行と8列のセルをもっている。
各々のセル501は、Dタイプフリップ−フロップ502で構成し、その入力がマルチプレクサ503に接続されている。各々のマルチプレクサ503は、2つの入力をもっている。1つの入力は命令フェッチバス17の高次のバイトからの1ビットの出力に接続されており、他の入力は対応する命令フェッチバス17の下位の1ビットの出力に接続されている。
各々のマルチプレクサ503の選択された入力は、キュー入力イネイブル論理504によって制御されて、その論理は、プリフェッチキューカウンタ207に接続されている。前記キュー入力イネイブル論理504は、プリフェッチキューカウンタ207を解読することによって、プリフェッチキュー201の最初のあき入口を形成するマトリックス中のセルの列を選択するように動作する。この列は、命令フェッチバス17中の高次、または下位の出力を記憶するために選ばれる。
プリフェッチキュー201の出力は、拡張コード/シーケンス分析器206によって制御される。拡張コード/シーケンス分析器206は、3ビットのデコーダキューカウンタ505からの出力を受け入れ、そのカウンタ505は、拡張キュー204および次の引き続く命令の最初の部分に相当するプリフェッチキュー201の入力部を指示する。それは同様に、拡張キュー204からのQ1−escおよびQ2−esc出力信号を受ける。これからの信号により、拡張コード/シーケンス分析器206は、その3つの出力信号Q1out−en,Q2out−en,Q3out−enの1つの信号を活性化し、命令デコーダ15の次の引き続く命令の最初の部分(先頭部)から適切なバイトを選択するように動作する。
本発明は、バス13の幅をもち、キューの深さをもつような特定の具体例と特定の構成について説明を行った。しかしながら、それらの構成および過程は、本発明の範囲内で種々の変形や修正が可能であり、本発明の範囲は添付された請求の範囲によってのみ限定されるものである。

Claims (24)

  1. 中央処理装置(CPU)であって、
    CPUの命令をフェッチするための第1の手段と、
    前記第1の手段によってフェッチされたCPUの命令をデコードするための第2の手段と、
    前記第2の手段によってデコードされたCPUの命令を実行するための第3の手段と、および
    前記第1の手段によってCPUの1つの命令をフェッチすると同時に、前記CPUの命令のビットの第1のサブセットを試験するための第4の手段であって、前記第2の手段によって前記CPUの命令のデコードを加速するようにビットの前記第1のサブセットに基づいて少なくとも1つの信号を発生するための手段を含み、ここにおいて、前記第2の手段によってデコードされるべき前記命令の第2のサブセットを選択するための前記少なくとも1つの信号に応答する手段をさらに含む第4の手段と、
    を含む中央処理装置(CPU)。
  2. 請求項1記載のCPUにおいて、前記第1の手段は命令を記憶するための第1のキュウイング手段を含み、そして前記第4の手段は前記少なくとも1つの信号を記憶するための第2のキュウイング手段を含む中央処理装置(CPU)。
  3. 請求項2記載のCPUにおいて、前記第1のキュウイング手段と前記第2のキュウイング手段は、同じ数のエントリーを持つ中央処理装置(CPU)。
  4. 請求項3記載のCPUにおいて、前記第4の手段は、デコーダを含む中央処理装置(CPU)。
  5. 請求項3記載のCPUにおいて、前記第1の手段、前記第2の手段および前記第3の手段は、パイプライン構造で構成される中央処理装置(CPU)。
  6. 請求項1記載のCPUにおいて、前記第2の手段はmビットのデコードが可能であり、前記CPUはnビットのオプコードを持つ命令を有し、mはnよりも小さく、そして、ここにおいて、前記第4の手段は前記第2の手段によってデコードされるべき前記オプコード中のmビットを識別するために命令の前記nビットのオプコード中のビットの前記第1のサブセットを試験するように作動する中央処理装置(CPU)。
  7. 請求項6記載のCPUにおいて、前記第1の手段は命令を記憶するための第1のキュウイング手段を含み、そして前記第4の手段は前記少なくとも1つの信号を記憶するための第2のキュウイング手段を含む中央処理装置(CPU)。
  8. 請求項7記載のCPUにおいて、前記第1のキュウイング手段と前記第2のキュウイング手段は、同じ数のエントリーを持つ中央処理装置(CPU)。
  9. 請求項8記載のCPUにおいて、前記第4の手段は、デコーダを含む中央処理装置(CPU)。
  10. 請求項8記載のCPUにおいて、前記第1の手段、前記第2の手段および前記第3の手段は、パイプライン構造で構成される中央処理装置(CPU)。
  11. 異なった長さのオプコードを持つ命令を処理するための中央処理装置(CPU)であって、
    セグメント中のCPUの命令をフェッチするための第1の手段であって、前記セグメントをCPUの命令にアセンブルするための手段を含む第1の手段と、
    前記第1の手段でアセンブルされたCPUの命令をデコードするための第2の手段と、
    前記第2の手段によってデコードされた前記CPUの命令を実行するための第3の手段と、そして
    前記第1の手段は、前記第2の手段によって前記CPUの命令がデコードされる前に、前記CPUの命令の少なくともビットの第1のサブセットを試験するための第4の手段を含み、そして前記第2の手段によって前記CPUの命令のデコードを加速するように少なくとも1つの信号を発生するための手段を含み、ここにおいて、前記CPUの命令は前記第3の手段を制御するための情報を含むビットの第2のサブセットを個々に含み、ここにおいて、前記第4の手段は前記第2の手段によってデコードされるべき前記命令のビットの前記第2のサブセットを識別するための前記少なくとも1つの信号に応答する手段を含む中央処理装置(CPU)。
  12. 請求項11記載のCPUにおいて、ビットの前記第1のサブセットは、前記命令オプコードを拡張するためのエスケープコードを形成する中央処理装置(CPU)。
  13. 請求項11記載のCPUにおいて、前記第1の手段はフェッチされた命令のセグメントを記憶するための第1のキュウイング手段を含み、そして前記第4の手段は前記1つの信号を記憶するための第2のキュウイング手段を含む中央処理装置(CPU)。
  14. 請求項13記載のCPUにおいて、前記第1のキュウイング手段と前記第2のキュウイング手段は、同じ数のエントリーを持つ中央処理装置(CPU)。
  15. 請求項14記載のCPUにおいて、前記第4の手段は、デコーダを含む中央処理装置(CPU)。
  16. 請求項14記載のCPUにおいて、前記第1の手段、前記第2の手段および前記第3の手段は、パイプライン構造で構成される中央処理装置(CPU)。
  17. パイプライン方式の中央処理装置(CPU)におけるスループットを改善する方法であって、前記CPUはメモリから命令をフェッチするための手段、フェッチされたCPUの命令をデコードするためのデコーダおよび前記デコーダの結果に応答してCPUの命令を実行するための手段を有し、前記方法は、
    対応するCPUの命令のフェッチと同時にCPUの命令のオプコード中のビットの第1のサブセットを試験するステップと、
    ビットの前記第1のサブセットに基づいて少なくとも1つの信号を発生するステップと、および
    前記1つの信号を用いる前記命令のデコードを加速するステップであって、前記CPUの命令のビットの前記第1のサブセットに基づいてデコーダによってデコードされるべき前記CPUの命令からビットの第2のサブセットを選択するステップを含む加速ステップと、
    を含むパイプライン方式の中央処理装置(CPU)におけるスループットを改善する方法。
  18. 請求項17記載の方法において、前記試験ステップは、ビットの前記第1のサブセットが予め定められた値に対応するかどうかを識別するステップを含むパイプライン方式の中央処理装置(CPU)におけるスループットを改善する方法。
  19. 請求項18記載の方法において、前記識別ステップは、ビットの前記第1のサブセットをデコードするステップを含むパイプライン方式の中央処理装置(CPU)におけるスループットを改善する方法。
  20. CPUの命令をフェッチするための第1の手段、前記第1の手段によってフェッチされたCPUの命令をデコードするための第2の手段、前記第2の手段によってデコードされたCPUの命令を実行するための第3の手段を有する中央処理装置(CPU)であって、ここにおいて、前記CPUの命令の各々は、エスケープビットのサブセット、前記第3の手段を制御するための情報を含む制御ビットのサブセット、前記CPUの命令のデコードを加速するための手段を有し、前記中央処理装置(CPU)は、
    前記第1の手段によって新しいCPUの1つの命令をフェッチすると同時に、前記新しい命令のエスケープビットのサブセットを試験するための手段と、
    エスケープビットの前記サブセットに基づいて少なくとも1つの信号を発生するための手段と、および
    前記第2の手段によってデコードされるべき前記新しいCPUの命令の制御ビットのサブセットを識別するための前記1つの信号に応答する手段と、
    を含む中央処理装置(CPU)。
  21. 請求項20記載のCPUにおいて、エスケープビットの前記サブセットは、命令オプコードを拡張するためのエスケープコードを形成する中央処理装置(CPU)。
  22. 請求項20記載のCPUにおいて、フェッチされた命令を記憶するための第1のキュウイング手段と前記1つの信号を記憶するための第2のキュウイング手段を含む中処理装置(CPU)。
  23. 請求項22記載のCPUにおいて、前記第1のキュウイング手段と前記第2のキュウイング手段は、同じ数のエントリーを持つ中央処理装置(CPU)。
  24. 請求項23記載のCPUにおいて、前記試験手段は、デコーダを含む中央処理装置(CPU)。
JP51654993A 1992-03-25 1993-02-11 命令高速解読パイプラインプロセッサ Expired - Lifetime JP3547740B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US85817892A 1992-03-25 1992-03-25
US858,178 1992-03-25
PCT/US1993/001250 WO1993019416A1 (en) 1992-03-25 1993-02-11 Fast instruction decoding in a pipeline processor

Publications (2)

Publication Number Publication Date
JPH07507888A JPH07507888A (ja) 1995-08-31
JP3547740B2 true JP3547740B2 (ja) 2004-07-28

Family

ID=25327674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51654993A Expired - Lifetime JP3547740B2 (ja) 1992-03-25 1993-02-11 命令高速解読パイプラインプロセッサ

Country Status (6)

Country Link
US (2) US5592635A (ja)
EP (1) EP0650612B1 (ja)
JP (1) JP3547740B2 (ja)
KR (1) KR950701099A (ja)
DE (1) DE69326066T2 (ja)
WO (1) WO1993019416A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2682469B2 (ja) * 1994-09-20 1997-11-26 日本電気株式会社 命令コード符号化方式
US5752269A (en) * 1995-05-26 1998-05-12 National Semiconductor Corporation Pipelined microprocessor that pipelines memory requests to an external memory
US6684322B1 (en) * 1999-08-30 2004-01-27 Intel Corporation Method and system for instruction length decode
US7376814B1 (en) 1999-09-07 2008-05-20 Nxp B.V. Method for forming variable length instructions in a processing system
GB2374950B (en) * 2001-04-23 2005-11-16 Imagination Tech Ltd Expanded functionality of processor operations within a fixed width instruction encoding
DE10255937B4 (de) * 2002-11-29 2005-03-17 Advanced Micro Devices, Inc., Sunnyvale Ordnungsregelgesteuerte Befehlsspeicherung
US7917734B2 (en) * 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7353339B2 (en) * 2003-12-24 2008-04-01 Intel Corporation Adaptive caching
US7558900B2 (en) * 2004-09-27 2009-07-07 Winbound Electronics Corporation Serial flash semiconductor memory
US8281109B2 (en) * 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
US11157285B2 (en) * 2020-02-06 2021-10-26 International Business Machines Corporation Dynamic modification of instructions that do not modify the architectural state of a processor

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3657705A (en) * 1969-11-12 1972-04-18 Honeywell Inc Instruction translation control with extended address prefix decoding
US3656123A (en) * 1970-04-16 1972-04-11 Ibm Microprogrammed processor with variable basic machine cycle lengths
US3771138A (en) * 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US4363091A (en) * 1978-01-31 1982-12-07 Intel Corporation Extended address, single and multiple bit microprocessor
US4236206A (en) * 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
US4346437A (en) * 1979-08-31 1982-08-24 Bell Telephone Laboratories, Incorporated Microcomputer using a double opcode instruction
US4325118A (en) * 1980-03-03 1982-04-13 Western Digital Corporation Instruction fetch circuitry for computers
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4502111A (en) * 1981-05-29 1985-02-26 Harris Corporation Token generator
US4890218A (en) * 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
US5057837A (en) * 1987-04-20 1991-10-15 Digital Equipment Corporation Instruction storage method with a compressed format using a mask word
JP2635057B2 (ja) * 1987-11-04 1997-07-30 株式会社日立製作所 マイクロプロセッサ
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
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
DE69030905T2 (de) * 1989-08-28 1998-01-29 Nec Corp Mikroprozessor mit Pipeline-Predecodereinheit und -Hauptdecodereinheit
DE69123629T2 (de) * 1990-05-04 1997-06-12 Ibm Maschinenarchitektur für skalaren Verbundbefehlssatz
EP0459232B1 (en) * 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency

Also Published As

Publication number Publication date
WO1993019416A1 (en) 1993-09-30
US5592635A (en) 1997-01-07
US5734854A (en) 1998-03-31
DE69326066D1 (de) 1999-09-23
KR950701099A (ko) 1995-02-20
DE69326066T2 (de) 2000-03-30
EP0650612B1 (en) 1999-08-18
JPH07507888A (ja) 1995-08-31
EP0650612A4 (en) 1995-03-13
EP0650612A1 (en) 1995-05-03

Similar Documents

Publication Publication Date Title
US5507028A (en) History based branch prediction accessed via a history based earlier instruction address
US5131086A (en) Method and system for executing pipelined three operand construct
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US5513330A (en) Apparatus for superscalar instruction predecoding using cached instruction lengths
US6675235B1 (en) Method for an execution unit interface protocol and apparatus therefor
US5450605A (en) Boundary markers for indicating the boundary of a variable length instruction to facilitate parallel processing of sequential instructions
JP3547740B2 (ja) 命令高速解読パイプラインプロセッサ
US5463746A (en) Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes
US20040064683A1 (en) System and method for conditionally executing an instruction dependent on a previously existing condition
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
JP3182438B2 (ja) データプロセッサ
CN108139911B (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
US6499100B1 (en) Enhanced instruction decoding
US5274777A (en) Digital data processor executing a conditional instruction within a single machine cycle
US6851033B2 (en) Memory access prediction in a data processing apparatus
EP1039375A1 (en) Method and apparatus for implementing zero overhead loops
US7519799B2 (en) Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof
US6654874B1 (en) Microcomputer systems having compressed instruction processing capability and methods of operating same
US20200387375A1 (en) Instruction demarcator
US6757815B2 (en) Single array banked branch target buffer
JPH07306785A (ja) 分岐命令実行機能を持つプロセッサおよび分岐命令制御方法
US5799164A (en) Method and apparatus for prefetching instructions at an improved rate based on dispatched control transfer instruction states
US9612841B1 (en) Slice-based intelligent packet data register file
JPH0756755A (ja) プロセッサの制御方法
KR100631318B1 (ko) 파이프라인 아키텍처를 갖는 프로세서에서 조건 점프 명령을 처리하기 위한 방법 및 명령어 디코더

Legal Events

Date Code Title Description
A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20031208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040323

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040415

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100423

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110423

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110423

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120423

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120423

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 9

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 9