JP4613168B2 - 命令整列の方法および装置 - Google Patents

命令整列の方法および装置 Download PDF

Info

Publication number
JP4613168B2
JP4613168B2 JP2006533397A JP2006533397A JP4613168B2 JP 4613168 B2 JP4613168 B2 JP 4613168B2 JP 2006533397 A JP2006533397 A JP 2006533397A JP 2006533397 A JP2006533397 A JP 2006533397A JP 4613168 B2 JP4613168 B2 JP 4613168B2
Authority
JP
Japan
Prior art keywords
instruction
pointer
buffer
current
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006533397A
Other languages
English (en)
Other versions
JP2007500404A5 (ja
JP2007500404A (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 JP2007500404A publication Critical patent/JP2007500404A/ja
Publication of JP2007500404A5 publication Critical patent/JP2007500404A5/ja
Application granted granted Critical
Publication of JP4613168B2 publication Critical patent/JP4613168B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

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

Description

発明の分野
本発明はディジタルプロセッサに関し、より具体的には、命令キャッシュからフェッチされた可変長命令を整列させるため、および整列命令を命令デコーダに提供するための方法および装置に関する。
発明の背景
ディジタル信号コンピュータ、またはディジタル信号プロセッサ(DSP)は、例えば、高速フーリエ変換、ディジタルフィルタ、画像処理、無線システムにおける信号処理、および音声認識などのディジタル信号処理応用に対する性能を最適化するように設計された、特殊目的コンピュータである。ディジタル信号プロセッサ応用は、通常は、リアルタイム動作、高い割込み速度および大規模な数値演算を特徴とする。さらに、ディジタル信号プロセッサ応用は、メモリアクセス動作が集中する傾向、および大量のデータの入出力を必要とする傾向がある。ディジタル信号プロセッサアーキテクチャは、通常、そのような演算を効率的に実行するために最適化されている。ディジタル信号プロセッサ応用に加えて、DSPは、マイクロコントローラ動作を実行することが要求されることが多い。マイクロコントローラ動作は、データの処理を伴うが、通常、大規模な演算を必要とすることはない。
ディジタル信号プロセッサは、パイプラインアーキテクチャを利用して、高性能を達成することができる。当該技術において知られているように、パイプラインアーキテクチャは、複数のパイプライン段階を含み、それぞれのパイプライン段階では、命令フェッチ、命令デコード、アドレス生成、演算動作、その他などの特定の動作が実行される。プログラム命令は、連続するクロックサイクルで、パイプライン段階を通過して進行し、いくつかの命令が、同時に、異なる完了段階に存在することができる。
コードのコンパクト性(compactness)のために、プロセッサの中には、異なる長さの命令をサポートするものがある。例えば、1つのプロセッサは、16ビット命令、32ビット命令および64ビットビット命令をサポートする。メモリを可能な限りコンパクトにすることができるように、メモリ境界に関して、命令整列に対する制約はない。命令実行時に、命令は、通常、メモリから命令キャッシュに移動させられるが、この場合も、命令整列についての制約はない。すなわち、各命令キャッシュラインには、命令の長さに応じて、1つまたは2つ以上の命令を含めることができるとともに、命令は命令キャッシュラインを跨ぐことができる。命令キャッシュからの命令フェッチは、通常、キャッシュラインに整列される。したがって、命令デコーダに命令を出す以前に、命令キャッシュからフェッチされた命令を整列することが必要である。理想的な条件下では、クロックサイクル毎に命令デコーダに、整列命令を出さなくてはならない。
命令整列のための技法は、当該技術において知られている。しかしながら、従来技術の命令整列技法は、深いパイプラインを用いた(deeply pipelined)、高性能プロセッサに対して満足できる性能を提供していない。したがって、可変長命令を整列するための改良型の方法および装置が必要とされている。
発明の要約
本発明の第1の観点によれば、パイプラインアーキテクチャを有するディジタルプロセッサにおける、命令整列ユニットが提供される。この命令整列ユニットは、パイプライン段階nにおける現命令バッファ(current instruction buffer)および次命令バッファ(next instruction buffer)、パイプライン段階n+1における整列命令バッファ(aligned instruction buffer)、メモリまたは前記次命令バッファから、前記現命令バッファに命令をロードするとともに、前記メモリから前記次命令バッファに命令をロードするための命令フェッチ論理、および前記命令に包含される命令長情報に応答して前記現命令バッファおよび前記次命令バッファから前記整列命令バッファへの命令の転送を制御するための、整列制御論理を含む。現命令バッファ、次命令バッファおよび整列命令バッファには、それぞれ、命令語を保持するための複数のレジスタを含めることができる。各命令には、1つまたは2つ以上の命令語を含めることができる。
命令キューは、現命令バッファおよび次命令バッファが一杯である場合に、メモリからフェッチされる命令を保持することができる。命令整列ユニットに命令を提供するメモリは、通常、命令キャッシュである。
整列制御論理は、命令長(instruction length)情報を提供する命令をプリデコードするためのプリデコーダ、前記プリデコード命令長情報を保持するための命令長レジスタ、および前記命令長情報に応答して、現命令バッファから、および、必要な場合には、次命令バッファから整列命令バッファへの命令の転送を制御するための現命令ポインタを生成する、ポインタ生成論理を含む。プリデコーダには、メモリからの命令をプリデコードする第1のプリデコーダ、および次命令レジスタ内の命令をプリデコードする第2のプリデコーダを含めることができる。整列制御論理には、第1のプリデコーダの出力、第2のプリデコーダの出力、または命令長レジスタの出力を選択して、前記選択された命令長情報を命令長レジスタに供給する、マルチプレクサをさらに含めることができる。各命令長レジスタには、対応する命令語に対する有効ビットを含めることができる。プリデコーダおよび命令長レジスタは、パイプライン段階nに配置し、ポインタ生成論理は、パイプライン段階n+1に配置することができる。
ポインタ生成論理には、現命令ポインタに応答して命令長レジスタから次命令ポインタを選択するための次ポインタ選択論理、および次命令ポインタから現命令ポインタを選択する現ポインタ選択論理を含めることができる。現ポインタ選択論理には、次命令ポインタの低位ビットがゼロのときに設定される状態ビットを含む状態ラッチ、および前記状態ビットが設定されている場合に現命令ポインタとして前記次命令ポインタの上位ビットを選択する選択論理を含めることができる。ポインタ生成論理には、分岐命令に応答して、新ポインタを現命令ポインタとして選択する新ポインタ選択論理をさらに含めることができる。
ポインタ生成論理には、1組の値の各値が、次命令ポインタおよび現命令ポインタの選択を制御するための1ビットによって表わされる、論理回路を利用することができる。ポインタ生成論理には、1組の値の各値が、現命令バッファおよび次命令バッファから整列命令バッファへの命令の転送を制御する1ビットによって表わされる論理回路をさらに利用することができる。
本発明の別の観点によれば、パイプラインアーキテクチャを有するディジタルプロセッサにおいて、命令を整列するための方法が提供される。この方法は、メモリまたは次命令バッファから現命令バッファに命令をロードすること、前記現命令バッファが一杯である場合に、前記メモリから前記次命令バッファに命令をロードすること、および前記命令に含まれている命令長情報に応答して、前記現命令バッファおよび前記次命令バッファから整列バッファへの命令の転送を制御することを含む。
本発明のさらに別の観点によれば、パイプラインアーキテクチャを有するディジタルプロセッサにおける命令を整列するための、命令整列ユニットにおける整列制御論理が提供される。この命令整列ユニットは、現命令バッファ、次命令バッファおよび整列命令バッファを含む。整列制御論理は、第1のパイプライン段階において、命令長情報を提供する命令をプリデコードするプリデコーダ、および前記プリデコード命令を保持するための命令長レジスタ、ならびに第2のパイプライン段階において、前記命令長情報に応答して、現命令バッファおよび、必要な場合には、次命令バッファから整列命令バッファへの命令のロードを制御するための現命令ポインタを生成するための、ポインタ生成論理を含む。
本発明のさらに別の観点によれば、パイプラインアーキテクチャを有するディジタルプロセッサにおいて命令を整列するための、命令整列システムが提供される。この命令整列システムは、段階nにおける命令キュー、現命令バッファおよび次命令バッファ、段階n+1における整列命令バッファ、命令キャッシュまたは次命令バッファから現命令バッファに命令をロードし、命令キャッシュまたは命令キューから次命令バッファに命令をロードするための命令フェッチ論理、および前記命令に含まれた命令長情報に応答して、前記現命令バッファおよび次命令バッファから前記整列命令バッファへの命令の転送を制御するための整列制御論理を含む。
詳細な説明
本発明をより詳しく理解するために、参照により本明細書に組み入れてある、添付の図面を参照する。
ディジタル信号プロセッサ(DSP)の一態様のブロック図を図1に示してある。ディジタル信号プロセッサは、計算コア10およびメモリ12を含む。計算コア10は、DSPの中央プロセッサである。コア10およびメモリ12は、下記のパイプランアーキテクチャを有することができる。この態様において、コア10は、命令フェッチユニット20、命令デコードユニット22、ロード/ストアユニット24、実行ユニット30およびシステムユニット32を含み、システムユニット32には分岐解消ユニット(branch resolution unit)を含めてもよい。
以下に、命令フェッチユニット20および命令デコードユニット22について考察する。ロード/ストアユニット24はメモリ12へのアクセスを制御する。メモリ読取りデータは、メモリ12から実行ユニット30内のレジスタファイルに転送されることができる。メモリ書込みデータは、実行ユニット30内のレジスタファイルからメモリ12に転送されることができる。命令フェッチユニットは、フェッチユニット20における命令キャッシュミスの発生時に、メモリ12にアクセスすることができる。システムユニット32は、命令フェッチユニット20に分岐解消情報を提供する。実行ユニット30には、命令実行に必要な場合に、1つまたは2つ以上の加算器、乗算器、累算器、シフタ、その他を含めることができる。
命令フェッチユニット20および命令デコードユニット22の簡易ブロック図を図2に示してある。命令フェッチユニット20には、PC(プログラムカウンタ)リダイレクト(redirect)ユニット40、命令キャッシュ42、命令キュー44、命令整列ユニット46および分岐予測器(branch predictor)50を含めることができる。PCリダイレクトユニット40は、フェッチすべき命令のアドレスを特定する。プログラム命令は、命令キャッシュ42からフェッチされて、整列ユニット46によって整列される。必要な場合には、命令は命令キュー44内に配置し、次いで、必要に応じて整列ユニット46に供給される。整列命令は、命令デコーダ22によってデコードされて、デコードされた命令は、ロード/ストアユニット24に伝えられる(図1)。命令キャッシュミスが発生した場合には、メモリ12において要求された命令にアクセスされる(図1)。正常なプログラムフロー中は、プログラムカウンタが増分されて順次命令アドレスを生成する。分岐予測器50は、分岐命令を予測し、命令フェッチをリダイレクトして、性能に対する分岐命令の悪影響を制限する。分岐命令が実行された後に、分岐解消情報がシステムユニット32から提供される(図1)。
計算コア10は、好ましくはパイプラインアーキテクチャを備える。パイプラインアーキテクチャは、良く知られたアーキテクチャであり、そのコアは、同期して動作する一連の接続された段階を含み、命令実行は、連続クロックサイクルで連続パイプライン段階において実行される、一連の動作に分割される。したがって、例えば、第1の段階が命令フェッチを実行し、第2の段階が命令デコードを実行し、第3の段階がデータアドレス生成を実行し、第4の段階がデータメモリアクセスを実行し、第5の段階が特定の計算を実行することができる。パイプラインアーキテクチャの利点は、高い動作速度であり、それは複数の命令を、異なる命令が異なる完了段階にある状態で、同時に進行させることができるためである。ここで、図1に示すユニットのそれぞれには、1つまたは2つ以上のパイプライン段階を含めることができることが理解されるであろう。一例としてだけであるが、コンピュータコア10には最大30の段階を含めることができる。
この態様におけるディジタル信号プロセッサは、16ビット、32ビットおよび64ビットの可変長命令を使用する。これらの命令は、メモリにパックして、メモリ空間の無駄を回避する。すなわち、可変長命令は、命令キャッシュ(ICache)42における64ビットラインにパックされる。各ICacheラインは、通常、4つの16ビット語を含む。したがって、例えば1つのICacheラインには、4つの16ビット命令、2つの32ビット命令、1つの64ビット命令、または異なる長さの命令の組合せを含めることができる。さらに、命令は、16ビット語境界上のICacheラインを跨ぐこと、すなわち2つのICacheラインの間で命令を分割することが可能である。命令順序には制約がないので、ICacheライン内での、多数の命令長の組合せが可能である。ここで、これらの命令長、異なる命令長の数、ICacheライン内のビット数、およびICacheライン内の語サイズは、一例として挙げたにすぎず、本発明の範囲を限定するものではないことが理解されるであろう。
この態様における命令キャッシュは、64ビットラインを提供する。命令整列システムは、ICacheラインから命令をアンパックして、理想的にはサイクル当たり1つの命令を命令デコーダ22に供給する。場合によっては、サイクル当たり1つの命令を命令デコーダに提供することが不可能なことがある。そのような場合の例としては、2つのICacheラインに跨るターゲット命令への分岐である。完全なターゲット命令をフェッチするのに2サイクルが必要である。
本発明の一態様による命令整列システムの簡易ブロック図を図3に示してある。命令整列システム100には、命令キュー44および整列ユニット46を含めることができる。命令整列システムの整列データパスは、命令キュー44、現命令バッファ110、次命令バッファ112および整列命令バッファ120を含む。この態様においては、バッファ110、112、120の大きさは、それぞれ、64ビットである。命令は、3:1mux(マルチプレクサ)130によって次命令バッファ112に供給され、この3:1mux130は、命令キャッシュ42、命令キュー44、および次命令バッファ112の出力のそれぞれから入力を受け取る。命令は、3:1mux132によって現命令バッファ110に供給され、この3:1mux132は、命令キャッシュ42、次命令バッファ112および現命令バッファ110のそれぞれから入力を受け取る。命令フェッチ論理134は、以下に説明するように、現命令バッファ110、次命令バッファ112および命令キュー44への命令の転送を制御する。バッファ110、112の出力は、それぞれ、mux132、133の入力に接続され、バッファの内容が2クロックサイクル以上保持されることを可能にする。
mux140は、現命令バッファ110からの入力および、必要な場合には、次命令バッファ112からの入力を選択して、整列命令を整列命令バッファ120に提供する。この態様においては、mux140は、図5に示して以下に説明するように構成された、4:1の64ビットmuxである。整列制御論理154は、以下に詳細を説明するように、命令整列を制御する。
命令整列システムは、ディジタル信号プロセッサのパイプラインアーキテクチャの一部であり、この態様においては、2つのパイプライン段階にわたって分布している。図2および3の態様において、命令キャッシュ42は段階3にあり、命令キュー44、次命令バッファ112および現命令バッファ110は段階4にあり、整列命令バッファ120はパイプラインの段階5にある。このパイプラインアーキテクチャによって、命令長情報を特定する命令のプリデコードが可能となり、この命令長情報は以下に示すように命令整列において使用される。
動作に際しては、ICache42からフェッチされる命令は、現命令バッファ110が空の場合には、現命令バッファ110に配置される。現命令バッファ110が空でなく、かつ次命令レジスタ112が空である場合には、フェッチされた命令は、次命令バッファ112内に配置される。次命令バッファ112が空でない場合に、フェッチされた命令は、命令キュー44に配置される。現命令バッファ110、次命令バッファ112および命令キュー44への命令のロードは、命令フェッチ論理134によって制御される。整列制御論理154によってmux140に供給される現命令ポインタは、現命令バッファ110における命令の最初の16ビット語の場所を指示する。ポインタに基づいて、mux140は、現命令バッファ110から、そして必要な場合には、次命令バッファ112から命令を選択して、整列命令バッファ120に命令を供給する。
次に、命令整列の例について説明する。第1の例において、連続64ビット命令が、現命令バッファ110から整列命令バッファ120に連続するサイクルで転送され、新命令が、ICache42から現命令バッファ110にロードされる。
第2の例においては、16ビット命令が、現命令バッファ110から整列命令バッファ120へ連続サイクルで転送され、新規にフェッチされた命令は、現命令バッファ110における16ビット命令が使用されるまで、次命令バッファ112および命令キュー44にロードされる。
第3の例においては、32ビット命令に64ビット命令が続く。この32ビット命令および64ビット命令の半分は、現命令バッファ110に保持され、64ビット命令の後半部は、次命令バッファ112内に保持される。第1のクロックサイクルにおいて、32ビット命令は、現命令バッファ110から整列命令バッファ120に転送され、現命令バッファ110の内容が現命令バッファ110に再ロードされる。第2のクロックサイクルにおいて、64ビット命令の2つの16ビット語が、現命令バッファ110から選択され、64ビット命令の2つの16ビット語が、次命令バッファ112から選択される。64ビット命令の4つの16ビット語は、整列命令バッファ120にロードされる。この場合に、mux140に供給された現命令ポインタは、現命令バッファ110内の第3番目の16ビット語を指す。
命令長の異なる組合せが、現命令バッファ110および次命令バッファ112内で可能である。それぞれの場合に、mux140に供給されるポインタは、現命令バッファ110内における、現命令の最初の16ビット語の場所を指示する。
命令整列システムのデータパスを、図4に図解して示してある。現命令バッファ110には、4つの16ビットレジスタ110a、110b、110cおよび110dを含めることができる。次命令バッファ112には、4つの16ビットレジスタ112a、112b、112c、112dを含めることができる。整列命令バッファ120には、4つの16ビットレジスタ120a、120b、120c、120dを含めることができる。レジスタ120aは、整列命令の、63:48ビットを保持し、レジスタ120bは47:32ビットを、レジスタ120cは31:16ビットを、レジスタ120dは15:0ビットを保持する。上述のように、mux140は、この態様においては4:1の64ビットmuxである。mux140は、現命令ポインタに従って、4つの連続する16ビット語を現命令バッファ110および次命令バッファ112から選択する。
作動に際して、mux140に供給される現命令ポインタは、現命令の最初の16ビット語を含む、16ビットレジスタ110a、110b、110c、110dの内の1つを選択する。上述のように、この命令は、16ビット、32ビットまたは64ビットの長さを有することができる。選択された命令は、整列命令バッファ120のレジスタ120aにロードされた命令の下位16ビット語と共に、整列命令バッファ120に提供される。すなわち、現命令バッファ110における64ビット命令が、レジスタ110a、110b、110c、110dから、整列命令バッファ120のレジスタ120a、120b、120c、120dへとそれぞれ転送される。別の例においては、現命令バッファ110のレジスタ110c内の16ビット命令が、mux140によって整列命令バッファ120のレジスタ120aに転送される。別の例においては、現命令バッファ110のレジスタ110bで始まる32ビット命令が、現命令バッファ110のレジスタ110b、110cから、それぞれ、整列命令バッファ120のレジスタ120a、120bへと転送される。さらに別の例においては、現命令バッファ110のレジスタ110cで始まる64ビット命令が、現命令バッファ110のレジスタ110c、110dおよび次命令バッファ112のレジスタ112a、112bから、それぞれ、整列命令バッファ120のレジスタ120a、120b、120c、120dへと転送される。整列ユニットは、命令デコーダに対して、「左寄せされた(left-justified)」とも呼ばれる、高位ビットに位置調整された命令を与える。
図5に命令整列システムをより詳細に示してある。命令キャッシュ(ICache)42は、64ビットラインICacheを、命令キュー44、mux130、mux132、およびプリデコーダ160a、160b、160c、160dにそれぞれ与える。各ICacheラインは、4つの16ビット命令語を含む。図に示すように、命令キュー44の各エントリは、4つの16ビットレジスタ44a、44b、44c、44dを含み、命令キュー44は、図5の例においては7つのエントリを有する。書込みポインタは、命令キャッシュ42から命令キュー44への命令の書込みを制御する。命令キュー44における各エントリに対するレジスタ44a、44b、44c、44dの出力は、mux150a、150b、150c、150dのそれぞれの入力に供給される。mux150a、150b、150c、150dに供給される読取りポインタは、命令キュー44からのICacheラインの選択を制御する。4つの16ビットmuxとして構成することのできる、mux130は、ICache42から、またはmux150a、150b、150c、150dを介して命令キュー44から、または次命令バッファ112の出力から、64ビットラインを選択する。mux130の出力は、次命令バッファ112にロードされる。4つ16ビットmuxとして構成することのできる、mux132は、ICache42から、または次命令バッファ112から、または現命令バッファ110の出力から、64ビットラインを選択する。mux132の出力は、現命令バッファ110にロードされる。
mux140は、それぞれが4つの16ビット入力を有する、mux140a、140b、140c、140dを含む。mux140aは、現命令バッファ110のレジスタ110a、110b、110c、110dからの入力を受け取る。mux140bは、現命令バッファ110のレジスタ110b、110c、110dおよび次命令バッファ112のレジスタ112aからの入力を受け取る。mux140cは、現命令バッファ110のレジスタ110c、110dおよび次命令バッファ112のレジスタ112a、112bからの入力を受け取る。mux140dは、現命令バッファ110のレジスタ110dおよび次命令バッファ112のレジスタ112a、112b、112cからの入力を受け取る。mux140a、140b、140c、140dは、現命令ポインタによって制御される。mux140a、140b、140c、140dの出力は、整列命令バッファ120のレジスタ120a、120b、120c、120dにそれぞれ供給される。
ICache42から受け取るパックされた命令は、各命令の長さおよび各命令の最初の16ビット語を指す命令ポインタを決定することによって整列される。この情報は、各16ビット命令語において、命令長を表わすビットをプリデコードして、そのプリデコードされた命令長情報を次のパイプライン段階において命令整列を制御するのに使用することによって抽出される。
図5を再び参照すると、整列制御論理154は、命令長を判定するためのプリデコーダ、適当な命令長情報を選択するためのmux、選択された命令長を保持するためのレジスタおよび命令長情報に応答して整列ポインタを生成するためのポインタ生成論理を含む。本発明の一態様において、命令長情報は、各命令の最初の16ビット語の、ビット15:13および11に含まれている。これらの命令ビットはパイプライン段階4において命令長を判定するためにプリデコードされる。この命令長情報は、パイプライン段階5において、命令整列を制御する命令ポインタの形態の制御信号を生成するのに使用される。
整列制御論理154は、プリデコーダ(Predecoder)160a、160b、160c、160d、170a、170b、170c、170dを含む。図5に示すように、命令キャッシュ42からの64ビットラインにおける各16ビット語のビット15:13および11が、プリデコーダ160a、160b、160c、160dに供給される。同様に、次命令バッファ112のレジスタ112a、112b、112c、112dのビット15:13および11は、プリデコーダ170a、170b、170c、170dにそれぞれ供給される。整列制御論理154は、3:1のmux180a、180b、180c、180dおよび命令長(Instruction length)レジスタ190a、190b、190c、190dをさらに含む。mux180aは、プリデコーダ160a、170aから、およびレジスタ190aの出力からの入力を受け、命令長レジスタ190aに命令長を供給する。mux180bは、プリデコーダ160b、170bから、およびレジスタ190bの出力からの入力を受け、命令長レジスタ190bに命令長を供給する。mux180cは、プリデコーダ160c、170cおよびレジスタ190cの出力からの入力を受け、命令長レジスタ190cに命令長を供給する。mux180dは、プリデコーダ160d、170dから、およびレジスタ190dの出力からの入力を受け、命令長レジスタ190dに命令長を供給する。命令長レジスタ190a、190b、190c、190dは、ポインタ生成論理200に命令長情報を供給する。
この態様において、各16ビット語のビット15:13および11は、以下の表1に従ってプリデコードされる。この態様においては、命令長情報は、各命令の最初の16ビット語の、ビット15:13および11に符号化されている。プリデコード出力は、各命令の長さを指示する。mux180a、180b、180c、180dは、次の命令の源に従って、ICache42から、または次命令バッファ112から、または命令長レジスタ190a、190b、190c、190dの出力からのプリデコード値を選択する。選択された値は、命令長レジスタ190a、190b、190c、190dにロードされる。
Figure 0004613168
整列制御ロジック154は、制御情報を処理するための回路をさらに含み、この回路には、有効ビット、状態ビットおよび分岐情報を含めることができる。図5に示すように、制御情報はICache42に関連する制御バッファ210から命令キュー44内のレジスタ212と、2:1mux216の第1の入力とに供給される。命令キュー44のレジスタ212の出力は、mux214に供給され、mux214は命令キュー読取りポインタに応答して命令キュー44内のエントリーの1つを選択する。mux214の出力は、mux216の第2の出力に供給される。mux216は、mux214を介して、制御バッファ210の出力、または命令キュー44の出力を選択する。制御バッファ210からの制御情報も、3:1mux220の第1の入力と、プリデコーダ160a、160b、160c、160dとに供給される。mux216の出力は、mux220の第2の入力と、プリデコーダ170a、170b、170c、170dとに供給される。mux220の出力は制御レジスタ224に供給される。レジスタ224の出力は、ポインタ生成回路200に供給され、mux220の第3の入力にフィードバックされる。mux220へのフィードバックパスは、レジスタ224の内容が2サイクル以上の間、保管される場合に使用される。
この制御情報は、各命令ラインにおける各16ビット語に対する有効(valid)ビットを含む。これらの有効ビットは、V16有効ビットと呼ばれ、分岐命令の場合における命令整列の制御を可能にする。例えば、取り上げられた分岐命令に続く、1つまたは2つ以上の命令を、無効としてマークすることができる。この態様においては、4つのV16有効ビットが、各命令ラインに対して提供される。
図5に示すように、制御バッファ210からのV16有効ビットは、プリデコーダ160a、160b、160c、160dの出力と組み合わされ、命令キュー44からのV16有効ビットは、プリデコーダ170a、170b、170c、170dの出力と組み合わされる。プリデコーダの出力およびV16有効ビットは、mux180a、180b、180c、180dを介して、それぞれ命令長(Instruction length)レジスタ190a、190b、190c、190dに供給される。
ポインタ生成論理200の一態様の概略ブロック図を、図6に示してある。図のように、命令長レジスタ190a、190b、190c、190dは、プリデコードされた命令長情報を含む。各命令長レジスタは、命令長の可能な値のそれぞれに対して1ビット位置を含む。図6の態様において、各命令長レジスタは、16ビット、32ビットおよび64ビット命令に対するビット位置を含む。さらに、各命令長レジスタはZビットを含む。Zビットは、その16ビット語に対応するV16有効ビットからの有効ビットである。
図6を参照すると、命令長レジスタ190a、190b、190c、190dの出力は、4:1muxの組、250、252、254、256、258、260、264に供給される。muxは、規約に従って、低位入力を右側に、右から左に桁が増大するようにして示してある。mux250は、命令長レジスタ190a(低位入力)、190b、190c、190d(上位入力)からのZビットを受け取る。mux252は、その低位入力においてレジスタ190aにおける16ビット位置からの入力を受け取り、その他の3つの入力においてゼロを受け取る。mux254は、その低位入力においてレジスタ190aにおける32ビット位置からの入力を受け取り、その第2の入力においてレジスタ190bにおける16ビット位置からの入力を、その残りの2つの入力においてゼロを受け取る。
mux256は、その下位入力においてゼロを、その第2の入力においてレジスタ190bの32ビット位置のからの入力を、その第3の入力においてレジスタ190cの16ビット位置からの入力を、その高位入力においてゼロを受け取る。mux258は、その下位入力においてレジスタ190aの64ビット位置からの入力を、その第2の入力においてゼロを、その第3の入力においてレジスタ190cの32ビット位置からの入力を、その高位入力においてレジスタ190dの16ビット位置からの入力を受け取る。mux260は、その下位入力においてゼロを、その第2の入力においてレジスタ190bの64ビット位置のからの入力を、その第3の入力においてゼロを、その高位入力においてレジスタ190dの32ビット位置からの入力を受け取る。mux262は、最初の2つの下位入力においてゼロを、その第3の入力においてレジスタ190cの64ビット位置からの入力を、その高位入力においてゼロを受け取る。mux264は、その3つの低位入力においてゼロを、その高位入力においてレジスタ190dの64ビットからの入力を受け取る。mux250〜264の出力は、以下に示すように、その4つの入力から、バス270上の現命令ポインタによって選択される。
1組の2:1mux280、282、284、286を使用して、分岐命令の発生時には新ポインタが選択される。4ビット新ポインタが、mux280、282、284、286の第1の入力に供給される。mux280の第2の入力にゼロが供給される。mux252、254、256の出力は、それぞれ、mux282、284、286の第2の入力に供給される。制御論理390からmux280、282、284、286への選択入力は、mux252、254、256の出力または新ポインタの選択を制御する。新ポインタは、分岐命令に続く、非順序命令の最初の16ビット語を指すことができる。mux280、282、284、286の出力は、それぞれ、単一ビットラッチ300、302、304、306に供給される。mux258、260、262、264の出力は、それぞれ、単一ビットラッチ310、312、314、316に供給される。
ラッチ300〜306および310〜316の出力は、次命令ポインタNxt_ptrを表わす。この態様において、次命令ポインタは8ビットを有し、その1つが設定される。設定されるビットは、現命令バッファ110または次命令バッファ112における次命令の最初の16ビット語の位置を表わす。次命令ポインタにおいて、ラッチ302、304、306の出力は、それぞれ、現命令バッファ110のレジスタ110b、110c、110dに対応する(図5)。次命令ポインタの最下位ビットは、現命令バッファ110のレジスタ110aに対応し、常にゼロである。レジスタ110aは、現命令を保持することができるが、次命令は保持することはない。mux250の出力は選択された有効ビットを表わす。ラッチ310、312、314、316の出力は、それぞれ、次命令バッファ112のレジスタ112a、112b、112c、112dに対応する(図5)。したがって、例えば、ラッチ340の出力が1に設定されている場合には、次命令の最初の16ビット語は、現命令バッファ110のレジスタ110cに位置する。同様に、ラッチ312の出力が設定されている場合には、次命令の最初の16ビット語は、次命令バッファ112のレジスタ112bに位置する。
1組の2:1mux320、322、324、326を使用して、次命令ポインタの8ビットから現命令ポインタを選択する。特に、ラッチ300、302、304、306の出力は、それぞれ、mux320、322、324、326の第1の入力に供給される。ラッチ310、312、314、316の出力は、それぞれ、mux320、322、324、326の第2の入力に供給される。mux320、322、324、326の出力は、現命令ポインタCur_ptrを表わす。この態様においては、現命令ポインタは、4ビットを有し、その1つが設定される。設定されるビットは、現命令バッファ110における現命令の最初の16ビット語の位置を表わす。mux320、322、324、326の出力は、それぞれ、現命令バッファ110におけるレジスタ110a、110b、110c、110dに対応する(図5)。
mux320、322、324、326は、ラッチ340からのシフトビットに応答して制御される。ラッチ340はANDゲート342によって設定される。mux252、254、256の出力は、ANDゲート342への入力を供給する。ANDゲート342は、次命令ポインタの最初の4ビットがすべてゼロとなる条件を検出する。この条件は、現命令バッファ110内のすべての命令が使用されるとともに、次命令の最初の16ビット語が次命令バッファ112に位置するときに発生する(図5)。この場合には、シフトビットは設定されており、現命令ポインタは、ラッチ310、312、314、316の出力からとられ、これらは次命令ポインタの4つの高位ビットに対応する。同一のクロックサイクルにおいて、命令フェッチ論理134によって次命令バッファ112の内容が現命令バッファ110に転送され(図3)、次命令ラインが命令キュー44または命令キャッシュ42から次命令バッファ110に転送される。
深くパイプライン化されたプロセッサ、すなわち比較的大きな数のパイプライン段階を有するプロセッサは、非常に高性能をもたらすことができる。高性能を達成するために、高クロック速度が使用され、各パイプライン段階を通しての遅延が低減される。パイプライン段階毎の遅延の低減は、(所与のプロセス技術に対して)パイプライン段階を通しての最低速度経路、または限界経路に直列に接続されたゲートまたはその他の論理回路の数を低減することによって行われる。したがって、サイクル当たり20のゲートを有するパイプライン段階は、回路の20ゲートの通しての遅延は、最大クロック周波数において、1クロックサイクル未満であることを示す。クロック周波数が増大すると、パイプライン段階当たりの直列に接続されたゲートの数が減少する。結果として、処理回路は、直列に接続された少ないゲート数を用いる、複雑な動作を実行することが必要となる。
命令整列ユニットに適用されると、整列制御論理154は、高速で命令整列を実行する際、およびサイクル当たり1命令を命令デコーダ22に配信する際の限界経路となる。一態様において、パイプライン段階は、サイクル当たり11ゲートに制限されている。すなわち、パイプライン段階において、4つのプリデコーダ160a〜160dおよび170a〜170d、ならびにmux180a〜180dは直列に11ゲートに限定されている。同様に、パイプライン段階5におけるポインタ生成論理200は、直列に11ゲートに限定される。
必要な性能を達成するために、整列制御論理154は、各命令の命令長ビットをプリデコードした後に、いわゆる「ワンホット(one-hot)」論理回路を利用する。ワンホット論理回路において、1組の値における各値は、符号化ビットによってその組の値を表わすのと対照的に、1ビットで表わされる。すなわち、例えば、現命令ポインタは、ある命令の最初の16ビット語を含む、4つのレジスタ110a、110b、110cまたは110dの内の1つを指し、これによって4つの可能な値を有する。ワンホット論理によれば、現命令ポインタは、4ビットを有し、その1つは、現命令の最初の16ビット語を含むレジスタを示すようにアサートされている(この例においては論理1に設定されている)。現命令ポインタの4つの可能な値を、2つの符号化ビットによって表わすこともできるが、デコード回路が必要となり、整列制御論理における遅延を付加することになる。
同様に、ポインタ生成論理200は、8ビットの次命令ポインタを利用し、この場合に、1ビットが、レジスタ110a、110bおよびレジスタ112a〜112dのそれぞれを表わす。次命令ポインタの1ビットラインは、次命令の最初の16ビット語を指示するようにアサートされている。ワンホット論理は、符号化を利用する従来型論理回路と比較して、一般に、より多くの並列の論理回路を必要とするが、必要な直列の論理回路は少ない。しかしながら、ワンホット論理回路は、従来型論理回路と比較して、比較的低いパイプライン段階遅延を達成する。図6を参照すると、mux250〜264は、バス270のワンホット現命令ポインタによって制御される。同様に、図5のmux130、132、140は、ワンホット命令ポインタによって制御されて、低遅延かつ高速度の動作を達成する。
本発明の一態様による命令整列の例を図7および図8A〜8Eを参照して説明する。図7は、命令キャッシュ42における4つの命令ラインを示し、各ICacheラインは、4つの16ビット語を含む。第1のICacheライン400は、16ビット命令I0、I1および32ビット命令I2の16ビット語を含む。ICacheライン400における1番目の16ビット語は無効である可能性がある。ICacheライン400の直後の第2のICacheライン402は、32ビット命令I2の2番目の16ビット語および64ビット命令I3における最初の3つの16ビット語を含む。ICacheライン402の直後の、第3のICacheライン404は、64ビット命令I3、32ビット命令I4および16ビット命令I5の4番目の16ビット語を含む。ICacheライン404の直後の、第4のICacheライン406は、16ビット命令I6、I7、I8、I9を含む。明白なように、32ビット命令I2は、ICacheラインの400と402とを跨ぎ、64ビット命令I3は、ICacheラインの402と404とを跨ぐ。命令はICacheライン42にパックされて、デコードの前に整列を必要とする。
ICacheライン400、402、404を整列する際の、整列ユニットの動作を図8A〜8Eに示してある。ここで図8Aを参照すると、クロックサイクル1における整列ユニットの状態が示されている。現命令バッファ110のレジスタ110b、110c、100dは、それぞれ、16ビット命令I0、I1および32ビット命令I2の1番目の16ビット語を含む。次の命令バッファ112は、サイクル1において空である。現命令バッファ110に対応する、先にプリデコードされた命令長は、命令長レジスタ190a、190b、190c、190dに格納される。命令長レジスタ190b、190cは、16ビット命令を指示し、命令長レジスタ190dは32ビット命令を指示する。現命令ポインタCur_ptrは、整列およびデコードのために、現命令すなわち16ビット命令I0を含む、現命令バッファ110のレジスタ110bを指す。次命令ポインタNxt_ptrは、整列およびデコードのために、次命令すなわち16ビット命令I1を含む、現命令バッファ110のレジスタ110cを指す。現命令ポインタは、現命令バッファ110のレジスタ110bにおける16ビット命令I0を、整列命令バッファ120のレジスタ120aに転送させる。
図8Bを参照すると、クロックサイクル2における整列ユニットの状態を示してある。現命令バッファ110は、継続して16ビット命令I0、I1および32ビット命令I2の1番目の16ビット語を保持する。命令I2における2番目の16ビット語および64ビット命令I3における最初の3つの16ビット語は、それぞれ、次命令バッファ112のレジスタ112a、112b、112c、112d中に転送されている。命令長レジスタ190a、190b、190c、190dの内容は、クロックサイクル1の場合と同じままであり、それは現命令バッファ110の内容が同じままであるからである。現命令ポインタCur_ptrは、次いで、現命令バッファ110のレジスタ110cにおける、16ビット命令I1を指し、次命令ポインタNxt_ptrは、現命令バッファ110のレジスタ110dにおける32ビット命令I2を指す。現命令ポインタは、現命令バッファ110のレジスタ110cにおいて16ビット命令I1を、整列命令バッファ120のレジスタ120aに転送させる。
次に図8Cを参照すると、クロックサイクル3における整列ユニットの状態を示してある。現命令バッファ110は、継続して16ビット命令I0、I1および32ビット命令I2の1番目の16ビット語を保持する。次命令バッファ112は、継続して、32ビット命令I2の2番目の16ビット語および64ビット命令I3の最初の3つの16ビット語を保持する。命令長レジスタ190a、190b、190c、190dの内容は、クロックサイクル1および2のときと同じままである。現命令ポイントCur_ptrは、現命令バッファ110のレジスタ110dを指し、このレジスタは32ビット命令I2の1番目の16ビット語を含む。次命令ポインタNxt_ptrは、次命令バッファ112のレジスタ112bを指し、このレジスタは64ビット命令I3の1番目の16ビット語を含む。命令I2の1番目の16ビット語は、現命令バッファ110のレジスタ110dから整列命令バッファ120のレジスタ120aに転送され、命令I2の2番目の16ビット語は、次命令バッファ112のレジスタ112aから、整列命令バッファ120のレジスタ120bに転送される。
図8Cにおいて、次命令ポインタNxt_ptrの最初の4ビットは、現在命令バッファ110に対応し、すべてゼロである。これによって、次命令ポインタの4つの高位ビットが、mux320、322、324、326によって次のクロックサイクルにおける現命令ポインタとして選択されように、シフトラッチ340(図6)が設定される。さらに、次命令バッファ112の内容は、次のクロックサイクルにおいて現命令バッファ110中に転送される。
次に図8Dを参照すると、クロックサイクル4における整列ユニットの状態を示してある。ICacheライン402は、次命令バッファ112から現命令バッファ110へ転送されており、ICacheライン404は、次命令バッファ112に転送されている。したがって、現命令バッファ110は、32ビット命令I2の2番目の16ビット語および64ビット命令I3の最初の3つの16ビット語を含む。次命令バッファ112は、64ビット命令I3の最後の16ビット語、32ビット命令I4の2つの16ビット語、および16ビット命令I5を含む。命令長レジスタ190aの内容は、レジスタ110aが命令I2の2番目の16ビット語を含むので、「ドントケア(don't care)」条件を表わす。この態様においては、各命令の1番目の16ビット語だけが、命令長情報を含んでいる。
命令長レジスタ190bは、64ビット命令を指示し、レジスタ190c、190dは「ドントケア」条件を表わす。現命令ポインタCur_otrは、現命令バッファ110のレジスタ110bを指し、これレジスタは、64ビット命令の1番目の16ビット語を含む。次命令ポインタNxt_ptrは、次命令バッファ112のレジスタ112bを指し、このレジスタは32ビット命令I4の1番目の16ビット語を含む。命令I3の最初の3つの16ビット語は、それぞれ、現命令バッファ110のレジスタ110b、110c、110dから、整列命令バッファ120のレジスタ120a、120b、120cに転送される。さらに命令I3の4番目の16ビット語は、次命令バッファ112のレジスタ112aから整列命令バッファ120のレジスタ120dに転送される。
図8Dにおいて、次命令ポインタNxt_ptuの最初の4ビットは、再びすべてゼロである。これによって、次命令ポインタの4つの高位ビットが、mux320、322、324、326によって、次のクロックサイクルでの現命令ポインタとして選択されるように、シフトラッチ340が設定される。さらに、次命令バッファ112の内容は、次のクロックサイクルで現命令バッファ110中に転送される。
図8Eを参照すると、クロックサイクル5における整列ユニットの状態を示してある。ICacheライン404は、次命令バッファ112から現命令バッファ110に転送されており、ICacheライン406は次命令バッファ112に転送されている。命令長レジスタ190bは、32ビット命令を指示し、命令長レジスタ190dは、16ビット命令を指示する。現命令ポインタCur_ptrは、現命令すなわち32ビット命令I4を整列とデコードのために含む、現命令バッファ110のレジスタ110bを指す。次命令ポインタNxt_ptrは、次命令すなわち16ビット命令I5を整列とデコードのために含む、現命令バッファ110のレジスタ110dを指す。現命令ポインタによって、現命令バッファ110のレジスタ110b、110cにおける32ビット命令I4が、それぞれ、整列命令バッファ120のレジスタ120a、120bに転送される。
整列ユニットは、このようにして動作を継続し、分岐命令または停止条件がない場合に、サイクル当たり1つの命令を命令デコーダに提供する。
図6に示す、ポインタ生成論理200の動作は、図8A〜8Eの例を参照して理解することができる。図8Aの例において、現命令ポインタCur_ptrは、レジスタ110bおよび対応する命令長レジスタ190bを指す。したがって、図6におけるバス270上で現命令ポインタは、mux250〜264のそれぞれの2番目の入力を選択し、それによって命令長レジスタ190bを選択する。命令長レジスタ190bは、16ビットの命令長を指示する。命令長レジスタ190bにおける16ビット位置は、mux254の2番目の入力に供給されるので、mux254は、次命令ポインタに論理1を与える。mux252および256〜264は、次の命令ポインタに論理ゼロを提供するが、この理由は、muxの2番目の入力が論理ゼロに固定されているため、または命令長レジスタ190bにおける選択された位置が論理ゼロであるためのいずれかである。結果として、次命令ポインタNxt_ptrはレジスタ110cを指す。
図8Bにおいて、現命令ポインタCur_ptrは、レジスタ110cおよび対応する命令長レジスタ190cを指す。バス270上の現命令ポインタは、mux250〜264のそれぞれの3番目の入力を選択し、それによって命令長レジスタ190cを選択する。命令長レジスタ190cにおける16ビット位置は、論理1に設定されるので、mux256は次命令ポインタに論理1を与え、次命令ポインタはレジスタ110dを指す。
図8Cを参照すると、現命令ポインタCur_ptrは、レジスタ110dおよび命令長レジスタ190dを指している。この場合に、命令長レジスタ190dは、32ビットの命令長を指示している。バス270上の現命令ポインタは、mux250〜264のそれぞれの高位入力を選択し、それによって命令長レジスタ190dを選択する。命令長レジスタ190dにおける32ビット位置は論理1に設定されているので、mux260は、次命令ポインタに論理1を与え、次命令ポインタはレジスタ112bを指す。
最後に、図8Dを参照すると、現命令ポインタCur_ptrは、レジスタ110bおよび命令長レジスタ190bを指している。この場合に、命令長レジスタ190bは、64ビットの命令長を指示している。バス270上の現命令ポインタは、mux250〜264のそれぞれの2番目の入力を選択し、それによって命令長レジスタ190bを選択する。命令長レジスタ190bにおける64ビット位置は、論理1に設定されているので、mux260は、次命令ポインタに論理1を与え、次命令ポインタはレジスタ112を指す。mux252〜264は、現命令に対応する命令長情報を利用して、次命令の1番目の16ビット語の位置を判定する。
パイプラインアーキテクチャを有するディジタルプロセッサのブロック図である。 図1に示す、フェッチユニットおよびデコードユニットの簡易ブロック図である。 本発明による命令整列システムの一態様の簡易ブロック図である。 命令整列ユニットのデータ経路のより詳細なブロック図である。 命令整列データ経路および整列制御論理のより詳細なブロック図である。 命令整列データ経路および整列制御論理のより詳細なブロック図である。 図5のポインタ生成論理の概略ブロック図である。 命令キャッシュの4つのラインの例を示す概略図である。 図7に示す命令キャッシュラインを処理する際の、5つの連続クロックサイクルに対するポインタ生成論理の動作を説明する図である。 図7に示す命令キャッシュラインを処理する際の、5つの連続クロックサイクルに対するポインタ生成論理の動作を説明する図である。 図7に示す命令キャッシュラインを処理する際の、5つの連続クロックサイクルに対するポインタ生成論理の動作を説明する図である。 図7に示す命令キャッシュラインを処理する際の、5つの連続クロックサイクルに対するポインタ生成論理の動作を説明する図である。 図7に示す命令キャッシュラインを処理する際の、5つの連続クロックサイクルに対するポインタ生成論理の動作を説明する図である。

Claims (24)

  1. 複数の連続するパイプライン段階を備えたパイプラインアーキテクチャを有するディジタルプロセッサにおいて、命令を整列するための命令整列ユニットであって、
    現命令バッファおよび次命令バッファを有するパイプライン段階n、
    整列命令バッファを有するパイプライン段階n+1、
    メモリまたは次命令バッファから、現命令バッファに命令をロードするとともに、メモリから次命令バッファに命令をロードするための命令フェッチ論理、および
    命令に包含される命令長情報に応答して現命令バッファおよび次命令バッファから整列命令バッファへの命令の転送を制御するための整列制御論理を含み、
    整列制御論理は、
    現命令バッファおよび次命令バッファ中の命令の命令長を提供するためのプリデコーダと、
    複数の命令長レジスタのそれぞれが現命令バッファを構成するそれぞれのレジスタに対応する、プリデコードされた命令の命令長を保持するための複数の命令長レジスタと、
    命令長情報に応答して現命令バッファから、または命令が次命令バッファ中にわたる場合には現命令バッファおよび次命令バッファから、整列命令バッファへの命令の転送を制御するための現命令ポインタを生成する、ポインタ生成論理とを含み、
    ポインタ生成論理は、現命令ポインタの位置に応答して命令長レジスタから次命令ポインタの位置を選択するための次ポインタ選択論理、および該次ポインタ選択論理によって選択された次命令ポインタの位置から次のクロックサイクルにおける現命令ポインタの位置を選択する現ポインタ選択論理を含み、
    現ポインタ選択論理は、次命令ポインタの低位ビットがゼロのときに設定される状態ビットを含む状態ラッチ、および状態ビットが設定されている場合には次命令ポインタの上位ビットを現命令ポインタとして採用する選択論理を含む、前記命令整列ユニット。
  2. 現命令バッファ、次命令バッファおよび整列命令バッファは、それぞれ、複数の命令語を保持するためのレジスタを含むとともに、命令のそれぞれが、1つまたは2つ以上の命令語を含む、請求項1に記載の命令整列ユニット。
  3. プリデコーダは、メモリからの命令の命令長を提供する第1のプリデコーダ、および次命令レジスタ内の命令の命令長を提供する第2のプリデコーダを含み、整列制御論理は、第1のプリデコーダ、第2のプリデコーダ、または命令長レジスタを選択して、選択された命令長情報を命令長レジスタに供給するマルチプレクサをさらに含む、請求項1に記載の命令整列ユニット。
  4. 複数の命令長レジスタのそれぞれの命令長レジスタが、対応する命令語の有効性を符号化するビットを含む、請求項3に記載の命令整列ユニット。
  5. パイプライン段階nが、プリデコーダおよび命令長レジスタを含み、パイプライン段階n+1が、ポインタ生成論理を含むものである、請求項1に記載の命令整列ユニット。
  6. ポインタ生成論理が、分岐命令に応答して新ポインタを現命令ポインタとして選択する、新ポインタ選択論理をさらに含む、請求項1に記載の命令整列ユニット。
  7. ポインタ生成論理が、1組の値の各値が次命令ポインタおよび現命令ポインタの選択を制御するための1ビットによって表わされる、論理回路を使用する、請求項1に記載の命令整列ユニット。
  8. ポインタ生成論理が、1組の値の各値が現命令バッファおよび次命令バッファから整列命令バッファへの命令の転送を制御する1ビットによって表わされる、論理回路をさらに使用する、請求項1に記載の命令整列ユニット。
  9. 現命令バッファおよび次命令バッファが一杯のときに、命令キューが、メモリからフェッチされた命令を保持する、請求項1に記載の命令整列ユニット。
  10. パイプラインアーキテクチャを有するディジタルプロセッサにおいて、命令を整列する方法であって、
    メモリまたは次命令バッファから現命令バッファに命令をロードすること、
    現命令バッファが一杯である場合に、メモリから次命令バッファに命令をロードすること、および
    命令に含まれている命令長情報に応答して、現命令バッファおよび次命令バッファから整列バッファへの命令の転送を制御することを含み、
    命令の転送を制御することは、現命令バッファおよび次命令バッファ内の命令をプリデコードして命令長情報を提供すること、および命令長情報に応答して、現命令バッファおよび次命令バッファから整列命令バッファへの命令の転送を制御するための、現命令ポインタを生成することを含み、
    現命令ポインタを生成することは、命令長情報から現命令ポインタの位置に応じて次命令ポインタの位置を選択すること、および次命令ポインタの位置に基づき次のクロックサイクルにおける現命令ポインタの位置を選択することを含み、
    現命令ポインタの位置を選択することは、次命令ポインタの低位ビットがゼロである場合に、次命令ポインタの高位ビットを現命令ポインタとして採用することを含む、前記方法。
  11. 現命令バッファ、次命令バッファおよび整列命令バッファは、それぞれ、複数の命令語を保持するためのレジスタを含み、命令のそれぞれは、1つまたは2つ以上の命令語を含み、かつ現命令バッファおよび次命令バッファから整列命令バッファへの命令の転送を制御することが、現命令バッファおよび次命令バッファのレジスタから整列命令バッファのレジスタへの命令語の転送を制御することを含む、請求項10に記載の方法。
  12. 現命令ポインタを生成することが、分岐命令に応答して新ポインタを現命令ポインタとして選択することをさらに含む、請求項10に記載の方法。
  13. 現命令バッファおよび次命令バッファから整列命令バッファへの命令の転送を制御することが、1組の値の各値が1ビットで表わされる、論理回路を使用することを含む、請求項10に記載の方法。
  14. 現命令バッファおよび次命令バッファが一杯のときに、メモリからフェッチされる命令を命令キュー内に保持することをさらに含む、請求項10に記載の方法。
  15. パイプラインアーキテクチャを有するディジタルプロセッサにおける命令を整列するための、現命令バッファ、次命令バッファおよび整列命令バッファを含む命令整列ユニットにおける、整列制御論理であって、
    第1のパイプライン段階において、現命令バッファおよび次命令バッファ中の命令の命令長情報を提供するプリデコーダ、およびプリデコードされた命令長情報を保持するための命令長レジスタ、ならびに
    第2のパイプライン段階において、命令長情報に応答して、現命令バッファから、または命令が次命令バッファ中に亘る場合には、現命令バッファおよび次命令バッファから、整列命令バッファへの命令の転送を制御するための現命令ポインタを生成するための、ポインタ生成論理を含み、
    ポインタ生成論理は、現命令ポインタの位置に応答して、命令長レジスタから次命令ポインタの位置を選択するための次ポインタ選択論理、および該次ポインタ選択論理によって選択された次命令ポインタの位置から次のクロックサイクルにおける現命令ポインタの位置を選択するための現ポインタ選択論理を含み、
    現ポインタ選択論理が、次命令ポインタの低位ビットがゼロである場合に設定される状態ビットを含む状態ラッチ、および状態ビットが設定されている場合に、現命令ポインタとして、次命令ポインタの上位ビットを採用する次ポインタ選択論理を含む、前記整列制御論理。
  16. 複数の命令長レジスタのうちのそれぞれの命令長レジスタが、対応する命令語の有効性をコード化する有効ビットを含む、請求項15に記載の整列制御論理。
  17. ポインタ生成論理が、分岐命令に応答して新ポインタを現命令ポインタとして選択する新ポインタ選択論理をさらに含む、請求項15に記載の整列制御論理。
  18. ポインタ生成論理が、1組の値における各値が次命令ポインタおよび現命令ポインタの選択を制御するための1ビットによって表わされる、論理回路を使用する、請求項15に記載の整列制御論理。
  19. パイプラインアーキテクチャを有するディジタルプロセッサにおいて命令を整列する命令整列システムであって、
    命令キュー、現命令バッファおよび次命令バッファを有するパイプライン段階n、
    整列命令バッファを有するパイプライン段階n+1、
    命令キャッシュまたは次命令バッファから現命令バッファに命令をロードするとともに、命令キャッシュまたは命令キューから次命令バッファに命令をロードするための命令フェッチ論理、および
    命令に含まれた命令長情報に応答して、現命令バッファおよび次命令バッファから整列命令バッファへの命令の転送を制御するための整列制御論理を含み、
    整列制御論理は、現命令バッファおよび次命令バッファ中の命令の命令長情報を提供するプリデコーダ、複数の命令長レジスタであって、それぞれの命令長レジスタはプリデコードされた命令の命令長情報を保持するものであって、現命令バッファにおける各レジスタに対応する命令長レジスタ、および命令長情報に応答して、現命令バッファから、または命令が次命令バッファ中に亘る場合には、現命令バッファおよび次命令バッファから整列命令バッファへの命令の転送を制御するための現命令ポインタを生成する、ポインタ生成論理とを含み、
    ポインタ生成論理は、現命令ポインタの位置に応答して命令長レジスタから次命令ポインタの位置を選択するための次ポインタ選択論理、および該次ポインタ選択論理によって選択された次命令ポインタの位置から次のクロックサイクルにおける現命令ポインタの位置を選択する現ポインタ選択論理を含み、
    現ポインタ選択論理は、次命令ポインタの低位ビットがゼロのときに設定される状態ビットを含む状態ラッチ、および状態ビットが設定されている場合に現命令ポインタとして次命令ポインタの上位ビットを採用する選択論理を含む、前記命令整列システム。
  20. 現命令バッファ、次命令バッファおよび整列命令バッファは、それぞれ、複数の命令語を保持するためのレジスタを含み、命令のそれぞれは、1つまたは2つ以上の命令語を含む、請求項19に記載の命令整列システム。
  21. プリデコーダは、命令キューからの命令の命令長情報を提供する第1のプリデコーダ、および次命令レジスタ内の命令の命令長情報を提供する第2のプリデコーダを含み、整列制御論理は、第1のプリデコーダ、第2のプリデコーダ、または命令長レジスタを選択して、選択された命令長情報を命令長レジスタに供給する、マルチプレクサをさらに含む、請求項19に記載の命令整列システム。
  22. ポインタ生成論理が、分岐命令に応答して新ポインタを現命令ポインタとして選択する、新ポインタ選択論理をさらに含む、請求項19に記載の命令整列システム。
  23. ポインタ生成論理が、1組の値の各値が次命令ポインタおよび現命令ポインタの選択を制御するための1ビットによって表わされる、論理回路を使用する、請求項19に記載の命令整列システム。
  24. ポインタ生成論理が、1組の値の各値が現命令バッファおよび次命令バッファから整列命令バッファへの命令の転送を制御する1ビットによって表わされる、論理回路をさらに使用する、請求項19に記載の命令整列システム。
JP2006533397A 2003-05-21 2004-05-20 命令整列の方法および装置 Expired - Fee Related JP4613168B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/442,329 US7134000B2 (en) 2003-05-21 2003-05-21 Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information
PCT/US2004/016408 WO2004104822A1 (en) 2003-05-21 2004-05-20 Methods and apparatus for instruction alignment

Publications (3)

Publication Number Publication Date
JP2007500404A JP2007500404A (ja) 2007-01-11
JP2007500404A5 JP2007500404A5 (ja) 2007-07-05
JP4613168B2 true JP4613168B2 (ja) 2011-01-12

Family

ID=33450168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006533397A Expired - Fee Related JP4613168B2 (ja) 2003-05-21 2004-05-20 命令整列の方法および装置

Country Status (7)

Country Link
US (1) US7134000B2 (ja)
EP (1) EP1625492B1 (ja)
JP (1) JP4613168B2 (ja)
CN (1) CN100356318C (ja)
DE (1) DE602004020884D1 (ja)
TW (1) TWI283828B (ja)
WO (1) WO2004104822A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7350059B2 (en) * 2004-05-21 2008-03-25 Via Technologies, Inc. Managing stack transfers in a register-based processor
US7263621B2 (en) 2004-11-15 2007-08-28 Via Technologies, Inc. System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback
US20060155961A1 (en) * 2005-01-06 2006-07-13 International Business Machines Corporation Apparatus and method for reformatting instructions before reaching a dispatch point in a superscalar processor
US8578134B1 (en) * 2005-04-04 2013-11-05 Globalfoundries Inc. System and method for aligning change-of-flow instructions in an instruction buffer
GB2482710A (en) * 2010-08-12 2012-02-15 Advanced Risc Mach Ltd Enabling stack access alignment checking independently of other memory access alignment checking
CN104025037B (zh) * 2012-01-06 2018-07-03 英特尔公司 在不将数据复制到单独的储存的情况下交换指针来处理被数据源存储在缓冲器中的数据
CN103593169B (zh) * 2013-11-29 2017-09-05 深圳中微电科技有限公司 一种多线程处理器中的指令输出装置、方法及其处理器
US11086627B2 (en) 2019-09-27 2021-08-10 Intel Corporation Instruction length decoder system and method

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463748A (en) * 1993-06-30 1995-10-31 Intel Corporation Instruction buffer for aligning instruction sets using boundary detection
US5835967A (en) * 1993-10-18 1998-11-10 Cyrix Corporation Adjusting prefetch size based on source of prefetch address
GB2287111B (en) * 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US5832249A (en) * 1995-01-25 1998-11-03 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US5668984A (en) * 1995-02-27 1997-09-16 International Business Machines Corporation Variable stage load path and method of operation
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US5896543A (en) * 1996-01-25 1999-04-20 Analog Devices, Inc. Digital signal processor architecture
US5845099A (en) * 1996-06-28 1998-12-01 Intel Corporation Length detecting unit for parallel processing of variable sequential instructions
US5870576A (en) * 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US5978899A (en) * 1997-12-23 1999-11-02 Intel Corporation Apparatus and method for parallel processing and self-timed serial marking of variable length instructions
US6061779A (en) * 1998-01-16 2000-05-09 Analog Devices, Inc. Digital signal processor having data alignment buffer for performing unaligned data accesses
US6314509B1 (en) * 1998-12-03 2001-11-06 Sun Microsystems, Inc. Efficient method for fetching instructions having a non-power of two size
JP3490007B2 (ja) * 1998-12-17 2004-01-26 富士通株式会社 命令制御装置
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor

Also Published As

Publication number Publication date
US20040236926A1 (en) 2004-11-25
EP1625492B1 (en) 2009-04-29
DE602004020884D1 (de) 2009-06-10
JP2007500404A (ja) 2007-01-11
WO2004104822A1 (en) 2004-12-02
EP1625492A1 (en) 2006-02-15
TW200539024A (en) 2005-12-01
US7134000B2 (en) 2006-11-07
CN100356318C (zh) 2007-12-19
TWI283828B (en) 2007-07-11
CN1791856A (zh) 2006-06-21

Similar Documents

Publication Publication Date Title
US5233694A (en) Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously
EP0427245B1 (en) Data processor capable of simultaneously executing two instructions
US5954811A (en) Digital signal processor architecture
US5638526A (en) Apparatus for operand data bypassing having previous operand storage register connected between arithmetic input selector and arithmetic unit
US6128721A (en) Temporary pipeline register file for a superpipelined superscalar processor
US11474944B2 (en) Zero latency prefetching in caches
JP2000222206A (ja) データ処理装置
JPH04313121A (ja) インストラクションメモリ装置
JPH07168714A (ja) ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
JPH0477925A (ja) マイクロプロセッサ
KR100266424B1 (ko) 롬(rom)용량을 저감한 데이타 프로세서
WO1998006042A1 (en) Wide instruction unpack method and apparatus
EP2461246B1 (en) Early conditional selection of an operand
JP4613168B2 (ja) 命令整列の方法および装置
US4685058A (en) Two-stage pipelined execution unit and control stores
US20060095746A1 (en) Branch predictor, processor and branch prediction method
KR100974401B1 (ko) 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
US20020161987A1 (en) System and method including distributed instruction buffers holding a second instruction form
US6115805A (en) Non-aligned double word fetch buffer
WO2020243044A1 (en) Processor, system and method of storing register data elements.
JPS63168730A (ja) 分岐命令処理装置
JP2004110248A (ja) データ処理装置
KR20000010200A (ko) 명령어 디코딩 경로를 줄인 명령어 디코딩 장치
WO1994016383A1 (en) Digital signal processor architecture
JPH08171489A (ja) プログラム格納用メモリ及びそれを用いたデータ処理装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070516

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070516

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100301

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100308

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100511

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100811

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: 20100928

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101018

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees