JP2006506735A - パイプラインプロセッサの方法および回路 - Google Patents

パイプラインプロセッサの方法および回路 Download PDF

Info

Publication number
JP2006506735A
JP2006506735A JP2004553496A JP2004553496A JP2006506735A JP 2006506735 A JP2006506735 A JP 2006506735A JP 2004553496 A JP2004553496 A JP 2004553496A JP 2004553496 A JP2004553496 A JP 2004553496A JP 2006506735 A JP2006506735 A JP 2006506735A
Authority
JP
Japan
Prior art keywords
instruction
circuit
register
instructions
streams
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004553496A
Other languages
English (en)
Other versions
JP2006506735A5 (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 JP2006506735A publication Critical patent/JP2006506735A/ja
Publication of JP2006506735A5 publication Critical patent/JP2006506735A5/ja
Pending 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

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

Abstract

深さpのパイプライン化された演算実行ユニットにおいて命令ストリームを実行する方法は:命令ストリームをロードすること;ロードされた命令ストリーム中の命令の反復を検出すること;パイプラインが中間ストレージをインスタンスのp個のストリームに提供するように、パイプライン中の命令のp個のストリームをインターリーブすること;反復の終了を検出すること;および、すべてのプログラムされた反復が完了した後に、p個のストリームから得られた結果を結合すること、を含む。計算回路は:オペランドおよび反復演算の結果の両方を表す値を記憶することができるレジスタ;レジスタからのオペランドを受け取るように接続する第一の入力および反復操作の識別値のソースに接続する第二の入力、および出力を有するマルチプレクサ;および、マルチプレクサの出力からの値を受け取るように接続する入力、および結果をレジスタへ返すように接続する出力を有するオペレータ回路、を含む。

Description

背景
本願は、デジタルシグナルプロセッサ(DSPs)および一般目的のプロセッサを含む、パイプラインデータプロセッサに関する。より詳細には、本願は、演算実行ユニットがパイプライン化されたプロセッサに関する。
パイプライン処理は、プロセッサに並列して複数の処理を行えるようにすることで全スループットを増加させるプロセッサのアーキテクチャ技術である。パイプライン処理は各命令ストリームの実行をステップまたはステージのシリーズに分割する。各ステージの出力は次のステージの入力となる。ストリーム中の隣接した命令の異なったステージが並列処理されるので、動作の頻度は増加し、したがって、スループットも増加する。
理想的なスループットの増加のためにプロセッサ内の全ての機能ユニットが種々の深さにパイプライン処理され得るが、この文書でさらに「パイプライン」と言った場合には、演算実行ユニット内に演算処理のために存在するパイプラインのみを意味する。
それぞれの命令を多数のステージに分割し、したがって、多くの命令について順番に演算を開始する深いパイプライン化は、並列性を増加させ、それゆえスループットを増加させる。しかし、深いパイプライン処理はコストがかかる。深いパイプライン化のコストの一つは、命令列が制御の変更を必要とする場合である。制御の変更は、パイプラインに入れられ部分的に実行され得る全ての命令が消去されることを要求し、パイプラインによって得られる効率を喪失させる。例えば、10段の深さのパイプラインを使用すると、いずれかの時点で10個の命令がパイプライン内に存在する。したがって、制御の変更が発生すると、これら10個の命令それぞれに対して要求された制御の変更のときまでになされた作業は失われる。
第二の命令が第一の命令のオペランドに依存する場合は、以下の通り実行パイプラインをストールさせる依存状態が存在する。第二の命令がパイプラインに入る前に、第一の命令は実行を完了しなければならない。第一の命令が完了したときに、第二の命令は要求されるオペランドにアクセスして、パイプラインに実行されることができる。ストールの影響の大きさはパイプラインの深さに依存する。
デジタルシグナル処理に共通の、特徴的なこのような深いパイプライン処理のコストの例は反復操作をするときに現れる。反復操作は命令のオペランドのロケーションが命令の結果のあて先でもあることを要求するものである。反復は反復操作の実行によるものである。デジタルシグナル処理は和の蓄積などの反復操作を頻繁に含む。反復操作を指定する命令の繰り返しの実行は、上述の第一の命令と第二の命令の関係と類似の状態を形成する。この状態では、繰り返される命令の第一のインスタンスは上述の第一の命令の役割であり、繰り返される命令の第二のインスタンスは上述の第二の命令の役割である。したがって、反復操作は多数で長期にわたり得るパイプラインのストールを引き起こす。
この問題は長年当業者に知られている。これを解決する数多くの試みが成されたが、それぞれ不利益を伴っている。
提案された一つの解決策は、以下のようなソフトウェアのスケジューリングである。ソフトウェアスケジューリングを使用することで、ソフトウェアは反復操作の第一のインスタンスを独立に開始するように設計され、同じ反復操作の第二のインスタンスが独立したデータを用いてこれ続く。そして、すでにパイプライン中にはないオペランドデータとしてそれぞれ使用することで、二つのインスタンスが独立に進行する。反復操作の最後のインスタンスが独立した計算ストリームを再結合するコストを負担する。特定の深さを持つ特定のパイプラインの最適な使用のために、独立に開始されるインスタンスの数は該特定の深さと同じである必要がある。
ソフトウェアスケジューリングは不利であるが、その理由は、オペランドとして全ての独立したインスタンスに要求されるものが、レジスタファイルにあることが要求され、もしくは必要なときに用いられるため、ソフトウェアスケジューリングを用いない反復法に比べてより多くのシステムリソースを必要とするからである。ソフトウェアスケジューリングを使用しない場合は、レジスタは二つだけ要求される。累算レジスタと新しいオペランドを記憶するレジスタである。ソフトウェアスケジューリングを使用すると、累算レジスタは反復操作のそれぞれのインスタンスに要求される。
このような方法で特定のプロセッサのために設計されたソフトウェアは、該特定のプロセッサで使用されるのと同一のまたは互換性のある命令の上位集合を使用し、ソフトウェアスケジューリングでなければ該特定のソフトウェアと互換性があるが、パイプラインの深さは違うような、将来のより高速である他種のプロセッサと互換性が無いことが、ソフトウェアスケジューリングの他の問題点である。プロセッサベンダーがパイプラインの深さを増加させて既存のプロセッサのより高速であるバージョンを開発し製造することは一般的である。
従来の演算実行ユニットの発行ステージ(issue stage)を図5のフローチャートに関連して説明する。発行ステージは命令のパイプラインへの発行を制御するステージである。
以下に記載するように、インターロックされたパイルサインプロセッサの発行ステージは、独立の命令によってパイプラインがストールしたのかどうかの決定を下すステップ501から始まる一連のステップを実行する。演算実行ユニットがストールしていない場合には次の命令をフェッチする502。そうではなく、演算実行ユニットがストールしている場合501には現行命令が保持される503。次いで、いずれの場合でも、発行される命令の依存状態が評価される504。
命令中の一つまたは二つ以上のオペランドが従前の命令の結果に依存している場合は、データの依存状態が存在する。現行の命令が依存状態にないと分かった場合505は、現行命令が発行される506。そして、発行ステージのサイクルが完了する。しかし、命令が依存状態にあると分かった場合505、演算実行ユニットはストールされ507、発行ステージのサイクルは完了する。ストールしているか否かという演算実行ユニットの状態は、例えばフラグレジスタにフラグビットを設定するなどにより、適切なあらゆる手段で記憶することが出来る。
非インターロックパイプラインを導入するプロセッサの場合、発行ステージは上述のいかなる依存状態のチェックも行わない。それは、単に順番に各命令を演算実行ユニットのパイプラインに発行する。命令が必要とするときに全ての与えられた命令のためのオペランドが準備できていることを保証するために、全ての相互依存の命令対が適切な数のNOP命令(no-operation命令)などの関連性のない命令に分割される、という方法で、そのようなプロセッサのためのソフトウェアは通常記述される。通常、コンパイラプログラムがこのようなプロセッサのための命令を生成する。
図6に示すように、複数のステージを有する実行パイプラインの一つのステージによって入力される従来の演算実行ユニットは、単純に加算器601などのオペレータユニット、レジスタファイル602およびコントローラ603を含む。コントローラ603は、図5のフローチャートのように、演算実行ユニットの操作を上述のパイプラインに従って、誘導する。
発明の概要
本発明の一態様の側面においては、深さpのパイプライン化された演算実行ユニットにおいて命令ストリームを実行する方法は:命令ストリームをロードすること;ロードされた命令ストリーム中の命令の反復を検出すること;パイプラインが中間ストレージをインスタンスのp個のストリームに提供するように、パイプライン中の命令のp個のストリームをインターリーブすること;反復の終了を検出すること;および、すべてのプログラムされた反復が完了した後に、p個のストリームから得られた結果を結合すること、を含む。
パイプライン化された演算実行ユニットの深さは何段の深さであってもよい。前記方法はさらに、命令の検出された反復のためのインターロックを無効化することを含んでもよい。該方法の様々なバリエーションにおいて、検出はさらに、同一のオペランドおよびあて先を有する反復される命令に基づいて命令の反復の認識をすることを含んでもよい。命令の反復は、例えば算術的累算または算術乗算を行ってもよい。
本発明の態様の他の側面に従って、計算回路は:オペランドおよび反復演算の結果の両方を表す値を記憶することができるレジスタ;レジスタからのオペランドを受け取るように接続する第一の入力および反復操作の識別値のソースに接続する第二の入力、および出力を有するマルチプレクサ;および、マルチプレクサの出力からの値を受け取るように接続する入力、および結果をレジスタへ返すように接続する出力を有するオペレータ回路、を含む。前記回路はさらに、反復操作を検出するように構成および配設されたコントロール回路を含んでもよい。
オペレータ回路は、例えば、加算器または乗算器を含んでもよい。コントロール回路はさらに:パイプライン中の命令のインスタンスのp個のストリームをインターリーブし、すべてのプログラムされた反復が完了した後にp個のストリームから得られた結果を結合するように構成および配設されたシーケンサ、を含んでもよい。該回路はさらに:同一のオペランドおよびあて先を有する反復される命令に基づいて命令の反復の認識をすること、を含む検出のために構成および配置されてもよい。該回路はさらに、命令の反復が例えば算術的累算または算術積を実行するように構成されてもよい。
本発明の一態様のさらに他の側面においては、パイプライン化された演算実行ユニットにおいて命令ストリームを実行する方法は:ソフトウェアスケジューリングなしで、演算実行ユニットに命令ストリームを自然な順番の命令の列として提供すること;命令列中の命令の反復を検出すること;それぞれ異なった値を用いる、反復される命令の複数のインスタンスをパイプライン化された演算実行ユニットのパイプラインに導入すること;および、パイプラインに中の複数のインスタンスの結果をそれぞれ保存すること、を含む。検出はさらに;同一のオペランドおよびあて先を有する反復される命令に基づいて命令の反復の認識をすること、を含んでもよい。前記方法はさらに、命令の検出された反復のためのインターロックを無効化することを含んでもよい。命令の反復は、例えば算術的累算または算術積を実行してもよい。
本発明のさらにその他の態様に従って、パイプライン化された演算実行ユニットにおいて命令ストリームを実行する方法は:命令ストリーム中の命令の反復を検出すること;該反復される命令の複数のストリームを、演算実行ユニットの外部に中間結果を保存することなく、独立に実行すること;および、一つの結果を得るために独立に実行された複数のストリームを再結合すること、を含み;ここで、独立に実行することおよび再結合は一つのみのあて先レジスタと一つのみのテンポラリレジスタを使用する。該方法はさらに、最初のフェーズの間、値が命令の識別値であるオペランドを導入することを含んでもよい。
命令のインターロックを含み、深さpのパイプラインを有するパイプライン化された計算ユニットを含む、プログラム可能なデータプロセッサにおいて、本発明の側面は、入力された命令ストリーム中の反復計算を検出するように構成および配設されたコントローラを含む回路に具体化されてもよい。該コントローラはさらに、オペランドのソースとしての指定と結果の記録のためのあて先としての指定との両方の指定をされた単一のレジスタを有する命令を検出するように構成および配設された回路を含んでもよい。
前記コントローラはさらに、命令の一つが、オペランドのソースとして指定と結果の記録のためのあて先として指定との両方の指定をされた単一のレジスタを失った場合、または異なったあて先レジスタを有する命令が発生した場合に、反復の中断を検出するように構成および配設された回路を含んでもよい。前記コントローラはさらに、リードアフターライトおよびライトアフターリードのインターロックを無効にする回路を含んでもよい。いくつかのバリエーションに従って、該コントローラは、パイプライン中の重複するp個までの反復のストリームをインターリーブするように構成および配設される。
前記コントローラはさらに、p個のストリームからのp個の中間結果を最終的な結果に結合するように構成および配設された回路を含んでもよい。該回路はさらに、他の計算には用いられないレジスタTを含んでもよい;コントローラはさらに、中断の後に結果をレジスタTにリダイレクトするように構成および配設される。最後に、コントローラはさらに、反復が完了した後にインターロックを再配置するように構成および配設された回路を含んでもよい。
本発明の一態様のさらに他の側面においては、パイプライン化された演算実行ユニットにおいて実行するためにソフトウェアの命令の列を準備する方法は:列中の反復される命令を検出すること;および、互いに依存することなく独立した複数のストリームを形成するために反復される命令のインスタンスを配列すること、を含み、ここで、複数の独立したストリームのそれぞれからの結果は、反復命令の全ての反復が完了するまで、パイプラインの外部のレジスタに保存されることはない。
非インターロックパイプラインを導入したプロセッサの場合は、演算実行ユニットは修正されない。しかしながら、累算操作のための命令ストリームは、極めて少ないサイクル数で同じ結果を生成するように、適切な方法で修正される。
詳細な説明
図面と共に以下の種々の側面についての態様の説明を読むことで本発明がより良く理解されるであろう。
本発明の側面は方法または装置として具体化することができる。本発明の側面はパイプライン化された演算実行ユニットを有するプロセッサとして具体化することもできる。パイプライン化された演算実行ユニット及び具体化された本発明の側面を有するプロセッサは、インターロックであっても良いし、そうでなくても良い。本発明の側面を、パイプライン化されたプロセッサにおいて具体化することによって、演算速度の高速化を、実行されるサイクルの総数の観点において、反復演算に対して可能とする。前記実行されるサイクルの総数は、本明細書においては累算と称する。累算とは、一回または二回以上繰り返される累算の命令を含むものである。
累算命令は、少なくとも一つのオペランドレジスタが命令のあて先レジスタと同一であるような命令であり、次の式で表される:Rx←Rx()Ry;ここで、()は演算を示し、←はあて先への結果値の割り当てを示す。これのみではないが、典型的には、累算命令には加算及び乗算命令が含まれる。しかしながら、他の命令も累算となることが出来る:例えば、計算ハッシュ値である場合には論理「OR」命令は累算命令となることが出来る。
本発明の側面を具体化する方法は、独自の方法で、累算命令を検出してそれらを演算実行ユニットパイプラインに入れる。特に、以下に詳細に説明するように、本発明の側面を具体化している方法は深さpのパイプラインのために、それぞれに分離した累算器を割り当てることなく、該パイプライン中で累算命令のインスタンスのp個のストリームをインターリーブする。そして、累算の終了が検出されると、所望の結果を生成するためにp個のストリームは結合され、これは指定されたあて先レジスタに割り当てられる。
以下にさらに説明するように、例えば、修正されたインターロック回路、そのような回路の演算上の特徴の少なくともいくつかをまねるような回路、ソフトウェアコンパイラ中の適切なソフトウェアロジックのいずれかによって、累算命令は検出される。命令が要求するデータが従前の命令から未だ取得できない間、該命令がスタートするのを妨げるためにインターロックを採用するプロセッサにおいては、上述の命令のインターリーブされたストリームに関連してインターロックは解除される。しかしながら、ここでブレイクインアキュムレーション(break in accumulation)と呼ぶ累算命令の最終インスタンスに続く命令のスタートに関連して、インターロックは有効であり続けてもよい。
本発明の側面を具体化している装置は、従来のパイプラインプロセッサとは異なった方法でいくつかの演算を実行する制御ロジックの修正と、演算実行ユニットに追加されたいくつかの要素によって従来のパイプラインプロセッサと異なる。特に、発行ステージロジックが以下で議論されるところ、該発行ステージは、演算実行ユニットで演算を実行するために、いつおよび命令のストリームのどの列をパイプラインに発行するかを決定するロジックである。
図1に示すように、演算実行ユニット100はフィードバック配列で接続されたレジスタファイル101及びオペレータユニット102を含む。オペレータユニット102は、累算において使用しうる加算器、乗算器、またはその他の算術または論理演算回路であってもよい。説明のため、オペレータユニットは二つのオペランド入力103、104を有すると仮定する。処理されているソフトウェアの命令に従って、オペランドはレジスタファイル101のレジスタからフェッチされ、結果はレジスタファイル101のあて先レジスタに返される。
本発明の側面に従って、従来の演算実行ユニットには使用されないマルチプレクサ105、106がオペレータユニット102の両入力にそれぞれ備えられ、パイプラインにおいて、インターリーブされたストリームが開始されたときに、例えばオペレータユニット102が加算を実行するときには「0」であるような、代替入力値(alternate input value)107の導入を可能にする。また、オペレータユニット102の出力110からオペランド及びあて先レジスタが位置するレジスタファイル101への従来のフィードバックパス109のみならず、ストリームの結合中の代替フィードバックパス(alternate feedback path)108が備えられる。オペレータユニット102の出力110とマルチプレクサ105の一つの入力との間の代替フィードバックパス108内には、一つのテンポラリレジスタTが備えられる。レジスタTはインターリーブされたストリームを結合するときにのみ使用される。
コントローラ111には、累算検出回路が備えられ、累算の開始と終了を検出する。プロセッサがインターロックされる場合は、該コントローラはインターロック回路を含む。その場合、累算検出回路はインターロックされたプロセッサのインターロック回路に対する修正であってもよい。その代わりに、インターロックされたプロセッサまたはインターロックされていないプロセッサにおいては、累算検出回路は検出を行うために特に備えられた独立の回路であってもよい。また、インターロックされたプロセッサにおいては、回路はインターリーブされたストリームの処理およびクリーンアップフェーズ中の再結合を制御するために備えられる。この処理の完了を要求するステップは、処理されている命令ストリームに明示的に備えられるわけではないからである。インターロックされていないプロセッサにおいては、命令はコンパイラによって整理され、例えばインターリーブやクリーンアップを達成する。
本発明の側面の原理に従った方法や装置の操作を、図2及び図3のパイプラインダイアグラムに関連して説明する。
図2および図3に示した例示のパイプラインは4ステージの深さ、すなわちP=4であり、演算実行ステージex0、ex1、ex2、およびex3を有する。パイプラインの深さは説明のために示すのみである。例示の原理は、二段またはそれ以上のステージのパイプラインおよび任意の深さのパイプラインを含むあらゆる深さのパイプラインに適用できる。例示のパイプラインは加算命令を用いる累算を説明するが、他の命令にも容易に適用できる。
以下に説明するように、この例においては、それぞれのインターリーブされた命令ストリームのスタートにオペランドを提供するために「0」のソースが要求される。インターロックされた機構では、インターリーブを生成しクリーンアップを行う特別な命令がインターロックの遮断または回避を要求する。処理がクリーンアップ中に完了できるように、コントローラはパイプラインの深さや現在のインターリーブの数といったパラメータのトラックを保持する必要がある。
図示の例では、R0←R0+Rの式で表され、ここでRは初期値xから始まってxの値が連続的にロードされるような命令、すなわち累算命令がパイプラインへの入力のためにフェッチされるのを、コントロールロジックが検出する。Rのロードは演算処理と並行して発生する。例はさらに、何回ものそのような、すなわち、N=1〜n、n>4のような命令が実行されると仮定する。通常は、nはいかなる反復の回数であってもよいが、本発明による利益はn>pの場合に生じ、好ましくはn>>pである。
図2に示すとおり、命令の最初のインスタンス、すなわちR0←R0+xは通常扱われるように扱われる。R0のイニシャルコンテンツを供給する従前の命令に依存状態が存在する場合は、通常の方法では、R0←R0+xの命令はストールする。従前の命令が完了すると、R0←R0+xの命令はパイプラインに入れられる。R0およびxの値は、サイクル0の演算実行ステージex0のためにフェッチされる。その後、最初の命令が完了するのを待つことなく、コントロールロジックはその他のp−1個の命令、すなわちこの例においてはサイクル1、2、3中の3個の命令を開始する。その際、累算(加算)の識別要素(図1符号107)が実行されてR0の参照を「0」と置き換える。累算が乗算命令を基にしている場合には、R0の参照を置き換える識別要素は、乗算の識別要素(図1符号107)であり、1である。
分離したストリームの開始からこれら最初の4つの命令はそれぞれストリーム1、2、3、4を指定する。サイクル1では、0+xの処理が演算実行ステージex0で開始される一方で、R0+xの処理が演算実行ステージex1に到達する。引き続いて、サイクル2では、R0+xの処理が演算実行ステージex2に到達し、0+xの処理が演算実行ステージex1に到達する一方で、0+x2の項目が開始される。サイクル3では、R0+xが演算実行ステージex3でR0に割り当てられ、ストリーム1の一つ目の計算が完了する。ストリーム1はサイクル4でレジュームされ、オペランドxを取得しR0の値(すなわちR0+x)にその値を加える。R0の値は、それぞれの計算の完了により、順番に4つのストリームの間で交代する。
それぞれのストリームは他のストリームから独立して進行し、そのストリームが直前に処理をしたオペランドから4番目のオペランドを取得する。したがって、例えば、ストリーム1は、R0+x+x+x+・・・、の値を累算する。処理されている間、異なるストリームの中間値はパイプライン中に保存されるので、これらを保存するための追加のレジスタは必要ではない。パイプラインそれ自身が、処理中の命令の中間値を保存するレジスタを含む。
ブレイクインアキュムレーションは、命令ストリーム中の次の命令がその命令R0←R0+Rの他のインスタンスでないときに発生する。ブレイクインアキュムレーションが検出されると、図3に示すようにクリーンアップフェーズが入力される。
まず、コントローラはシーケンサのフェッチングおよびパイプラインへの命令の導入をストールする。そして、コントローラは、4つのストリームを再結合し、結果を本来指定された指定レジスタに保存するように指定された、クリーンアップ命令の特別な列を発行する。異なる数のストリームがインターリーブされた場合には異なるクリーンアップ命令の特別な列が要求される。
図示の深さpが4である命令を有するパイプラインのための列は以下の通りである。
ブレイクインアキュムレーションが検出されたとき、サイクル1において最後の累算の計算がパイプラインで開始され、最後のストリームから4番目の完了したストリームはテンポラリレジスタTに割り当てられる。最後のストリームから3番目はサイクル2において完了できる。そして、サイクル3において、レジスタR0は最後のストリームから3番目と4番目とを結合するのに使用される。一方、サイクル3では、最後のストリームから2番目の結果がレジスタTに割り当てられる。最後に、サイクル4で、最後のストリームがレジスタR0内に入って完了する。
サイクル5では、最後から2番目と最後のストリームを結合してレジスタTに入れることが開始され、サイクル6では、最後のストリームから3番目と4番目との結合が完了する。サイクル8では最後から2番目と最後のストリームとの結合が完了し、サイクル9では残された二つの部分的な累算の結合が開始され、R0に入れられる。サイクル10において、次の命令がパイプラインに入力できる。
本発明の態様の側面を備える一つの方法を図4を参照して説明する。例示の方法に関連して操作のモードをより簡潔に説明するために、図4に記載のステップを4つのグループ、41、42、43、および44にグループ分けする。例示の方法によれば、操作の3つのモードが存在する:通常(グループ41からグループ43に続く)、累算(グループ41からグループ44に続く)、クリーンアップ(グループ42からグループ43に続く)である。
該方法は、累算命令が検出されないときは常に通常モードを使用する。累算命令が検出されるまでの間、通常モード(41、43)は従来技術に類似している。通常モード(41、43)は、命令の発行、命令間および命令内の依存状態の評価、命令の発効をいつストールするかの決定、および累算フェーズ(41、44)またはクリーンアップフェーズ(42、43)にいつ入るかの決定を含む。これは以下のようになされる。
まず、命令の発行がストールしているか否かの決定がなされる(ステップ404)。命令の発行がストールしていない場合(ステップ404)は、命令の実行がクリーンアップフェーズに入っているかどうかの決定がなされる(ステップ405)。システムがクリーンアップフェーズにない場合(ステップ405)は、次の命令がフェッチされる(ステップ406)。命令の実行がストールしている場合(ステップ404)、システムは単に現行命令を維持し(ステップ407)、次の命令のフェッチへ進むことはない。次の命令がフェッチされる(ステップ406)場合および現行命令を維持する(ステップ407)場合のいずれの場合であっても、依存状態の評価(ステップ408)へと進む。
インターロックされた機構では、データの依存状態はハードウェア内でチェックされる。一つの一般的な方法は、レジスタスコアボードを用いることである。演算実行ユニットに命令が発行されると、レジスタスコアボードとして参照される特殊目的レジスタまたはメモリ内に、あて先レジスタのために使用ビット(in-use bit)がセットされる。使用ビットは、命令の実行が完了し、結果があて先レジスタに書き込まれたときにクリアされる。したがって、レジスタスコアボード内の命令のオペランドのための使用ビットをチェックすることで、発行されるそれぞれの命令のために、依存状態をチェックできる。セットされた使用ビットを有するオペランドがある場合は、命令は依存している。
使用ビットは命令が演算実行ユニットに発行されたときにセットされるので、この依存状態のチェック(ステップ408)は自己参照命令、すなわち反復操作や累算はチェックしない。後に見るようにこれは後のステージで行われる。依存状態が検出されて(ステップ409)かつ累算フェーズには入っていない場合(ステップ410)には、命令の発行はストールされる(ステップ411)。命令の発行がストールしていることを識別するビット(ステップ411)は、後で演算実行ユニットがステップを戻って(ステップ404)これらのステップを再び行う場合にチェックするために保存される。状態の情報は、例えばフラグレジスタ内のビットの状態によって保存するなど、あらゆる適切な方法で保存しうる。
依存状態の評価(ステップ408)に戻って、依存状態が見つからず(ステップ409)かつ累算フェーズがアクティブでない(ステップ412)場合は、自己参照依存がチェックされ、発行される命令が累算命令であるかどうかを決定(ステップ413)する。このチェックは単に、命令のあて先レジスタが該命令のオペランドとしても使用されているかどうかを決定する。命令が累算命令ではないと決定された場合は、該命令が発行され(ステップ414)、発行ステージはそのサイクルを完了する。
一方、命令が累算命令であると決定された場合(ステップ413)は、累算(41、44)フェーズに入り、累算レジスタは例えばレジスタスコアボードなどの適切な方法を使用して記録され、カウンタacc-instr-cntは0にセットされ、命令が発行される(ステップ415)。カウンタacc-instr-cntは、累算フェーズの早期においていつ識別要素を導入するかを決定するために、所定の値の減算演算実行ユニットコントローラに使用される。この時点で、発行ステージはその通常モード(41、43)のサイクルを完了する。
累算フェーズ(41、44)に入った場合、発行ステージの後半部分の操作は上記の操作と異なる(グループ43の代わりにグループ44を用いる)。しかし、操作の前半部分(グループ41)は上記のとおり進行する。
依存状態の評価(ステップ408)が、発行される命令は依存命令であると決定(ステップ409)し、発行ステージは累算フェーズにある(ステップ410)場合、発行される命令が評価され、該命令が累算命令であるか否かが決定される(ステップ416)。発行される命令が実際に累算命令である(ステップ416)場合、累算レジスタスコアボードを参照することで、同一の累算を含むかどうかさらなる決定がなされる(ステップ417)。この場合、発行される命令は単に単一の累算を作る命令シリーズ内の次順のものであり、カウンタacc-instr-cntを増加させた上で、該命令は発行される(ステップ418)。
一方、発行される命令が累算命令でない(ステップ416)か、累算命令である(ステップ416)が先行の累算命令と同じ累算レジスタを含まない(ステップ417)かのいずれかである場合、現行の累算フェーズは終了し、クリーンアップフェーズに入る(ステップ419)。この状態の情報の指定および記録は、例えばフラグレジスタ内にフラグビットをセットするなどの、あらゆる適切な手段によってなされ得る。このとき、カウンタcleanup-instr-cntはゼロにセットされ、カウンタcleanup-instr-compl-cntも同様にセットされる(ステップ419)。
カウンタcleanup-instr-compl-cntは、ここに記載されるコントロールロジックとは異なるロジックによってインクリメントされる。それはクリーンアップ中に完了した命令のトラックを保持し、それゆえ、データパスコントロールロジックは上述のようにいくつかの結果をレジスタTに指定することができる。カウンタcleanup-instr-cntはクリーンアップフェーズの進行のトラックを保持し、それゆえ、特定のクリーンアップ命令が実行できる。累算フェーズから抜け出すトリガーとなる命令はホールドされ、NOP命令が発行される。
最後に、依存状態の評価(ステップ408)において先行の命令に依存が見つからず(ステップ409)かつ発行ステージが累算フェーズにある(ステップ412)場合、現行の命令はブレイクインアキュムレーションである。なぜなら、累算命令、すなわち自己参照命令は常に各反復が先行の反復の結果に依存しているからである。したがって、コントロールは、上述のようにクリーンアップフェーズを開始する累算フェーズ終了ルーチン(ステップ419)に移る。これで、この発行ステージの累算(41、44)サイクルは完了する。
クリーンアップフェーズ(42、43)では、発行ステージの処理の前半部分は変更された42であり、後半部分は通常モードの43と同様に進行する。発行ステージがストールせず(ステップ404)かつクリーンアップフェーズに入っている(ステップ405)場合、カウンタcleanup-instr-cntがパイプラインの深さpより小さいという状態が真であるかどうかのチェックがなされる(ステップ420)。該状態が真である場合、クリーンアップフェーズは未だ完了しておらず、発行ステージは累算フェーズ中に生成された独立した命令ストリームを結合する命令を実行させる(ステップ421)。
また、カウンタcleanup-instr-cntはインクリメントされる(ステップ421)。カウンタcleanup-instr-cntがpの値にまでなったとき、前記状態は偽となりクリーンアップフェーズは終了する(ステップ422)。したがって、ホールドされた命令(ステップ419参照)が、ここでリリースされる。いずれの場合においても、発行ステージサイクルの実行は、発行される命令の依存状態の評価(ステップ408)へと続き、上述のとおり進行する。これにより発行ステージのクリーンアップ(42、43)サイクルは完了する。
本発明の側面の態様によって達成される改善は、演算実行ユニットに先行する機能ユニット内のパイプラインの実際の深さによらない。
本発明の説明を、インターロックされたプロセッサのハードウェア内における側面を具備する態様について記載することによって行った。ここでさらに、インターロックされていないプロセッサでのソフトウェア演算における側面を具備する態様について記載することによって本発明を説明する。上述のとおり、インターロックされたプロセッサをストールする依存状態を含むソフトウェアは、適切な数の処理サイクルによって、NOP命令、すなわち命令ストリームの他の部分と関連のない命令を分離し独立した命令に導入することで非インターロックプロセッサでの演算用にコンパイルできて、最初の命令の結果が2番目の命令に要求される前に最初の命令が演算を完了することを可能にする。対照的に、本発明の側面の態様についての以下の記述は、実行されたときに図4の方法を行うソフトウェアを実現する。
この側面に従って、4ステージの演算実行ユニットパイプラインを限定されない例として使用しており、ソフトウェアコンパイラが累算命令のソースコードに出会ったとき、プロセッサによる演算のための命令ストリームの出力は、すでに図2に関連して上述した特別の列を有する。これは、当初において内部依存状態を含まない累算の複数のストリームを生成する。累算の最初の命令は通常通り出力される(図2、サイクル0)。2番目から4番目のものは識別要素によって置き換えられたオペランドを有する。例えば、和算には「0」である(図2、サイクル1〜3)。
コンパイラによって出力された命令は、ブレイクインアキュムレーションが検出されるまでの間、インターリーブされた累算のストリームを完了するために通常要求されるものである。図3に関連して上述したとおり、ブレイクインアキュムレーションが検出されたときコンパイラはクリーンアップ命令を出力する。クリーンアップ命令は、上述のレジスタTに類似の、特別に与えられたテンポラリレジスタを使用してもよい。代わりに、コンパイラはコンテクストスイッチを備えて、演算実行ユニットのレジスタファイル内のレジスタの制限を解除し、それによってテンポラリレジスタとして使用できるようにしてもよい。その後、ストリームを結合する命令が出力される。
上記の議論を換言すると、非インターロックであるが完全にパイプライン化されたプロセッサにおいて、コンパイラは、命令を生成する間、命令の待ち時間のトラックを保持することとなる。これは、依存関係にある命令対の間に関連のない命令が適切な数存在することを保証し、そのため、与えられた命令によって要求される全てのオペランドは命令が演算実行ユニットに発行される前に取得可能となる。
したがって、N個の値をアレイ内で累算する例は、通常次のように記載できる:
Figure 2006506735
この例では、NOP命令は命令ストリーム内で要求される関連のない命令であり、何回かの反復により計算されるR0は、次の反復の同じ命令において使用するために準備できている。
ロードの操作は複数のサイクルを持つことができるものの、その問題を回避するために、ロードがパイプラインにおける加算よりも早期に起こるようにパイプラインを再構成することで他の適切な技術を使用することができ、したがって、実質的にロードと使用によるサイクルのストールを取り除く。
上記のコードはコンパイラによって再構成することができ、これによって図2および図3と同様のパイプラインが形成される。そのようなコードの例は以下の通りである:
Figure 2006506735
従来のコードが4N+4サイクル要するのに対し、新しいコードはN+12サイクルである。本発明の側面の一態様である上記のコードは、ハードウェアの変更を何ら必要としない。レジスタTはあらゆる利用可能なデータレジスタとすることができる。当業者が理解するように、付随の適切なハードウェアの変更と共に、ループになっている命令に引き続く4つの命令(記載せず)をループに組み込むことでコードサイズを小さくすることができる。
本発明の少なくとも一つの態様のいくつかの側面を説明したので、様々な代替、変更、改良が当業者にとって容易に起こることが理解されよう。そのような代替、変更、改良は本開示の部分であることが意図されており、そして本発明の精神および範囲に包含されるものとして意図されている。したがって、上記の説明および添付の図面は、例示を目的とするにすぎないものである。
本発明の側面を具体化する演算実行ユニットのブロック図であり、該ユニットはパイプライン化されていると仮定している。 4ステージの演算パイプラインを有する演算実行ユニットによる、レジスタR0内の累算の実行のパイプライン図である。 図1に記載の累算のクリーンアップフェーズのパイプライン図である。 本発明の側面を具体化する方法のフローチャートである。 本発明の側面を具体化する方法のフローチャートである。 演算実行ユニットの演算パイプラインに発明を発行するための従来の方法のフローチャートである。 従来の演算実行ユニットの例のブロック図である。

Claims (34)

  1. 深さpのパイプライン化された演算実行ユニットにおいて命令ストリームを実行する方法であって:
    命令ストリームをロードすること;
    ロードされた命令ストリーム中の命令の反復を検出すること;
    パイプラインが中間ストレージをインスタンスのp個のストリームに提供するように、パイプライン中の命令のインスタンスのp個のストリームをインターリーブすること;
    反復の終了を検出すること;および
    すべてのプログラムされた反復が完了した後に、p個のストリームから得られた結果を結合すること、
    を含む、前記方法。
  2. pが少なくとも2である、請求項1に記載の方法。
  3. 命令の検出された反復のためのインターロックを無効化することをさらに含む、請求項1に記載の方法。
  4. 検出が、同一のオペランドおよびあて先を有する反復される命令に基づいて命令の反復の認識をすることをさらに含む、請求項1に記載の方法。
  5. 命令の反復が算術的累算を行う、請求項4に記載の方法。
  6. 命令の反復が算術積を求める、請求項4に記載の方法。
  7. オペランドおよび反復操作の結果の両方を表す値を記憶することができるレジスタ;
    レジスタからのオペランドを受け取るように接続する第一の入力および反復操作の識別値のソースに接続する第二の入力、および出力を有するマルチプレクサ;および
    マルチプレクサの出力からの値の受け取るように接続する入力、および結果をレジスタへ返すように接続する出力を有するオペレータ回路、
    を含む、計算回路。
  8. 反復操作を検出するように構成および配設されたコントロール回路をさらに含む、請求項7に記載の回路。
  9. オペレータ回路が加算器を含む、請求項8に記載の回路。
  10. オペレータ回路が乗算器を含む、請求項8に記載の回路。
  11. コントロール回路が、
    パイプライン中の命令のインスタンスのp個のストリームをインターリーブし、すべてのプログラムされた反復が完了した後にp個のストリームから得られた結果を結合するように、構成および配設されたシーケンサ、
    をさらに含む、請求項8に記載の回路。
  12. 検出が、同一のオペランドおよびあて先を有する反復される命令に基づいて命令の反復の認識をすること、をさらに含む、請求項11に記載の回路。
  13. 命令の反復が算術的累算を行う、請求項12に記載の回路。
  14. 命令の反復が算術積を求める、請求項12に記載の回路。
  15. パイプライン化された演算実行ユニットにおいて命令ストリームを実行する方法であって:
    ソフトウェアスケジューリングなしで、演算実行ユニットに命令ストリームを自然な順番の命令列として提供すること;
    命令列中の命令の反復を検出すること;
    それぞれ異なった値を用いる、反復される命令の複数のインスタンスをパイプライン化された演算実行ユニットのパイプラインに導入すること;および
    パイプライン中の複数のインスタンスの結果をそれぞれ保存すること、
    を含む、前記方法。
  16. 検出がさらに、同一のオペランドおよびあて先を有する反復される命令に基づいて命令の反復の認識をすること、を含む、請求項15に記載の方法。
  17. 命令の検出された反復のためのインターロックを無効化することを含む、請求項16に記載の方法。
  18. 命令の反復が算術的累算を行う、請求項16に記載の方法。
  19. 命令の反復が算術積を求める、請求項16に記載の方法。
  20. パイプライン化された演算実行ユニットにおいて命令ストリームを実行する方法であって:
    命令ストリーム中の命令の反復を検出すること;
    該反復される命令の複数のストリームを、演算実行ユニットの外部に中間結果を保存することなく、独立に実行すること;および、
    一つの結果を得るために、独立して実行された複数のストリームを再結合すること、を含み;
    ここで、独立して実行することおよび再結合は、一つのみのあて先レジスタと一つのみのテンポラリレジスタを使用する、
    前記方法。
  21. 最初のフェーズの間、値が命令の識別値であるオペランドを導入することを含む、請求項20に記載の方法。
  22. 命令のインターロックを含み、深さpのパイプラインを有するパイプライン化された計算ユニットを含む、プログラム可能なデータプロセッサにおける回路であって:
    入力された命令ストリーム中の反復計算を検出するように構成および配設されたコントローラを含む、前記回路。
  23. コントローラが、オペランドのソースとしての指定と結果の記録のためのあて先としての指定との両方の指定をされた単一のレジスタを有する命令を検出するように構成および配設された回路をさらに含む、請求項22に記載の回路。
  24. コントローラが、命令の一つが、オペランドのソースとしての指定と結果の記録のためのあて先としての指定との両方の指定をされた単一のレジスタを失った場合、および異なったあて先レジスタを有する命令が発生した場合に、反復の中断を検出するように構成および配設された回路をさらに含む、請求項23に記載の回路。
  25. コントローラが、リードアフターライトおよびライトアフターリードのインターロックを無効にする回路をさらに含む、請求項24に記載の回路。
  26. コントローラが、パイプライン中の重複するp個までの反復のストリームをインターリーブするように構成および配設されている、請求項22に記載の回路。
  27. コントローラが、p個のストリームからのp個の中間結果を最終的な結果に結合するように構成および配設された回路をさらに含む、請求項26に記載の回路。
  28. 回路が、他の計算には用いられないレジスタTをさらに含み;
    コントローラが、中断の後に結果をレジスタTにリダイレクトするように構成および配設される、
    請求項27に記載の回路。
  29. コントローラが、反復が完了した後にインターロックを再配置するように構成および配設された回路をさらに含む、請求項25に記載の回路。
  30. パイプライン化された演算実行ユニットにおいて実行するためのソフトウェアの命令の列を準備する方法であって:
    列中の反復される命令を検出すること;および、
    互いに依存することなく独立した複数のストリームを形成するために、反復される命令のインスタンスを配列すること、を含み、
    ここで、それぞれの複数の独立したストリームからの結果は、反復命令の全ての反復が完了するまで、パイプラインの外部のレジスタに保存されることはない、
    前記方法。
  31. 検出が、同一のオペランドおよびあて先を有する反復される命令に基づいて命令の反復の認識をすること、をさらに含む、請求項30に記載の方法。
  32. 命令の反復が算術的累算を行う、請求項31に記載の方法。
  33. 命令の反復が算術積を求める、請求項31に記載の方法。
  34. ソフトウェア命令の列に、それぞれの複数の独立したストリームからの結果を一つのあて先レジスタに結合するクリーンアップの列を挿入することをさらに含む、請求項30に記載の方法。
JP2004553496A 2002-11-19 2003-10-30 パイプラインプロセッサの方法および回路 Pending JP2006506735A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/299,412 US7206927B2 (en) 2002-11-19 2002-11-19 Pipelined processor method and circuit with interleaving of iterative operations
PCT/US2003/034462 WO2004046915A2 (en) 2002-11-19 2003-10-30 Pipelined processor method and circuit

Publications (2)

Publication Number Publication Date
JP2006506735A true JP2006506735A (ja) 2006-02-23
JP2006506735A5 JP2006506735A5 (ja) 2006-08-17

Family

ID=32297693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004553496A Pending JP2006506735A (ja) 2002-11-19 2003-10-30 パイプラインプロセッサの方法および回路

Country Status (6)

Country Link
US (1) US7206927B2 (ja)
EP (1) EP1563369B1 (ja)
JP (1) JP2006506735A (ja)
CN (1) CN100356319C (ja)
AU (1) AU2003286784A1 (ja)
WO (1) WO2004046915A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011204208A (ja) * 2010-03-26 2011-10-13 Fujitsu Ltd マルチコアプロセッサ
JP2015535955A (ja) * 2012-09-28 2015-12-17 インテル・コーポレーション Sha256アルゴリズムのメッセージスケジューリングのための命令セット

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454532B1 (en) * 2003-04-08 2008-11-18 Telairity Semiconductor, Inc. Stream data interface for processing system
US20070260856A1 (en) * 2006-05-05 2007-11-08 Tran Thang M Methods and apparatus to detect data dependencies in an instruction pipeline
US9229720B2 (en) * 2007-03-30 2016-01-05 Intel Corporation Circuit marginality validation test for an integrated circuit
CN102567556A (zh) * 2010-12-27 2012-07-11 北京国睿中数科技股份有限公司 一种面向调试的处理器验证方法及验证设备
CN103513961B (zh) * 2012-06-18 2017-07-11 中兴通讯股份有限公司 片内缓存方法及装置
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US9135015B1 (en) 2014-12-25 2015-09-15 Centipede Semi Ltd. Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
US9208066B1 (en) 2015-03-04 2015-12-08 Centipede Semi Ltd. Run-time code parallelization with approximate monitoring of instruction sequences
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US9715390B2 (en) 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
CN108052347B (zh) * 2017-12-06 2021-07-20 北京中科睿芯智能计算产业研究院有限公司 一种执行指令选择的装置、方法及指令映射方法
US11579843B2 (en) * 2020-06-15 2023-02-14 Micron Technology, Inc. Bit string accumulation in multiple registers
US11847462B2 (en) * 2020-12-15 2023-12-19 Advanced Micro Devices, Inc. Software-based instruction scoreboard for arithmetic logic units
CN116775417B (zh) * 2023-08-16 2023-11-07 无锡国芯微高新技术有限公司 Risc-v处理器运行监测和行为追踪系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58181165A (ja) * 1982-04-16 1983-10-22 Hitachi Ltd ベクトル演算プロセツサ
US5123108A (en) * 1989-09-11 1992-06-16 Wang Laboratories, Inc. Improved cpu pipeline having register file bypass and working register bypass on update/access address compare
US5598362A (en) 1994-12-22 1997-01-28 Motorola Inc. Apparatus and method for performing both 24 bit and 16 bit arithmetic
US6567895B2 (en) * 2000-05-31 2003-05-20 Texas Instruments Incorporated Loop cache memory and cache controller for pipelined microprocessors
US6766445B2 (en) 2001-03-23 2004-07-20 Hewlett-Packard Development Company, L.P. Storage system for use in custom loop accelerators and the like
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US20030154227A1 (en) * 2002-02-08 2003-08-14 Intel Corporation Multi-threaded multiply accumulator

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011204208A (ja) * 2010-03-26 2011-10-13 Fujitsu Ltd マルチコアプロセッサ
JP2015535955A (ja) * 2012-09-28 2015-12-17 インテル・コーポレーション Sha256アルゴリズムのメッセージスケジューリングのための命令セット

Also Published As

Publication number Publication date
EP1563369B1 (en) 2014-12-24
CN1729446A (zh) 2006-02-01
AU2003286784A1 (en) 2004-06-15
US7206927B2 (en) 2007-04-17
WO2004046915A2 (en) 2004-06-03
EP1563369A2 (en) 2005-08-17
WO2004046915A3 (en) 2004-10-14
CN100356319C (zh) 2007-12-19
US20040098570A1 (en) 2004-05-20

Similar Documents

Publication Publication Date Title
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
JP5699554B2 (ja) ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
JP2006506735A (ja) パイプラインプロセッサの方法および回路
EP1160663B1 (en) Processor for executing software pipelined loops and corresponding method
US6842848B2 (en) Method and apparatus for token triggered multithreading
US6061780A (en) Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units
KR100900364B1 (ko) 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체
TWI728068B (zh) 複數乘法指令
JP2007533007A (ja) スレッドごとの多重同時パイプラインを有するマルチスレッドプロセッサ
JPH1097424A (ja) スーパースカラープロセッサの中央処理ユニット
US11226821B2 (en) Computer processor employing operand data with associated meta-data
US20130080491A1 (en) Fast condition code generation for arithmetic logic unit
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
JP2006522398A (ja) パイプライン型命令プロセッサにおけるバイパスの使用
TWI770079B (zh) 向量產生指令
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
CN113220347B (zh) 基于多级流水线的指令处理方法、浮点型dsp以及音频设备
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JPH07121371A (ja) 複数命令同時取込み機構
WO2024073325A1 (en) Reducing overhead in processor array searching
Omondi et al. Control Flow: Branching and Control Hazards
JP2001195252A (ja) マスク技術による無効で分岐効率向上を図るプロセッサ
JPH10312280A (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060628

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060628

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090306

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090901