JP2000503151A - データの依存性に従って処理エレメントを動的に接続するように構成されたマイクロプセッサ - Google Patents

データの依存性に従って処理エレメントを動的に接続するように構成されたマイクロプセッサ

Info

Publication number
JP2000503151A
JP2000503151A JP9525205A JP52520597A JP2000503151A JP 2000503151 A JP2000503151 A JP 2000503151A JP 9525205 A JP9525205 A JP 9525205A JP 52520597 A JP52520597 A JP 52520597A JP 2000503151 A JP2000503151 A JP 2000503151A
Authority
JP
Japan
Prior art keywords
instructions
bus
microprocessor
instruction
processing elements
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
JP9525205A
Other languages
English (en)
Inventor
アイアトン,マーク・エイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2000503151A publication Critical patent/JP2000503151A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional 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)

Abstract

(57)【要約】 命令間の依存性を検出するマイクロプロセッサが提供される。マイクロプロセッサは、命令によって指定される演算を行なう1または複数の処理エレメントに各命令を割当てる。さらに、マイクロプロセッサは、依存する演算がそれが依存する演算からオペランドを受取るように処理エレメント間の相互接続を動的に変えるように構成される。特に、別の命令が依存する結果を計算する命令は結果をその命令に与えるように接続される。処理エレメント間のデータの経路制御は命令の実行前に決定される。相互接続の動的再構成を用いて、マイクロプロセッサは別の命令シーケンスのために最適化されるDSPよりも効率的に命令シーケンスを実行する。接続が再構成可能であるので、マイクロプロセッサは(典型的なDSPによって課せられる数制限に対して)多くの異なった命令シーケンスの効率的な実行のために構成され得る。

Description

【発明の詳細な説明】 名称:データの依存性に従って処理エレメントを動的に接続するように構成され たマイクロプロセッサ 発明の背景 1.発明の背景 この発明はマイクロプロセッサの分野に関し、特に、命令の実行前に命令間の データの依存性を検出し、データの依存性に従って処理エレメント間の相互接続 を構成するように構成されたマイクロプロセッサに関する。 2.関連技術の説明 コンピュータシステムは1つ以上のマイクロプロセッサを用い、しばしばデジ タル信号プロセッサ(DSP)を用いる。DSPは一般にサウンドカード、音声 認識カード、ビデオキャプチャカード等のようなマルチメディアデバイス内に含 まれる。DSPはコプロセッサとして機能し、マルチメディアデバイスおよび他 の信号処理アプリケーションが要求する複雑かつ反復的な数学的計算を汎用マイ クロプロセッサよりも効率的に行なう。マイクロプロセッサは一般にコンピュー タシステムのメインメモリ内にストアされる値に対して整数演算を行なうように 最適化される。DSPは多くのマルチメディア機能を行なうが、マイクロプロセ ッサはコンピュータシステムの動作を管理する。例示的なDSPはマサチューセ ッツ州ノーウッド(Norwood,Massachusetts)のアナログ・デバイシィズ社(An alog Devices,Inc.)から入手可能なADSP 2171である。 マイクロプロセッサはしばしば基本的な算術演算/論理演算を行なうように構 成された1つ以上の実行ユニットを含む。マイクロプロセッサが用いる命令セッ トは一般に、これらの基本的な算術演算/論理演算の1つが1つ以上のソースオ ペランドに対して行なわれ、その結果が特定の行先にストアされることを指定す る命令を含む。ここで用いられる場合、用語「ソースオペランド」は命令に応答 して演算される値を指す。この値は一般に演算への入力として用いられる。「行 先オペランド」または「行先」は演算の結果をストアするための場所を示す。マ イクロプロセッサは基本的な演算を行なうので、複雑な数学的アルゴリズムを実 行するためには多数の命令が必要とされる。これらのタイプの演算はしたがって やや非効率的にマイクロプロセッサによって実行される。 逆に、DSPは一般に、特に相関、畳込み、有限インパルス応答(FIR)フ ィルタ、無限インパルス応答(IIR)フィルタ、高速フーリエ変換(FFT) 、行列計算および内積のような数学的アルゴリズムのために最適化される。これ らの数学的アルゴリズムの実現には長いシーケンスの系統的な算術演算/乗法演 算が一般に含まれる。 これらの系統的な算術/乗法アルゴリズムを効率的に行なうために、DSPは しばしばハードウェア算術演算/論理演算装置、乗算器、累算器等を含む。次い で、これらのハードウェアユニットはしばしば、1つのハードウェアユニットの 出力が他のハードウェアユニットの入力を直接与えることができるように接続さ れる。DSPの命令セット内の命令はしばしば演算を行なうために用いられる多 数のこれらのハードウェアユニットを指定する。たとえば、特定の命令が、2つ のソースオペランドの乗算と、その後のその積と第3のオペランドとの加算とを 指定することがあり得る。しかしながら、演算の種々の組合せを指定する融通性 は命令の長さによって制限される(すなわち、許される変形が多ければ多いほど 、各変形を一意に符号化するために命令内に含まれなければならないビット数が 増える)。より大きな命令はより多くのメモリを占有し、必ずしも十分に利用さ れるとは限られないかもしれないため、DSP設計者は適度なサイズの命令を保 持するために限られた数の使用可能な組合せを選択しなければならない。結果と して、ある演算は特定のDSPによって効率的に行なわれるが、他の演算はあま り効率的ではない。DSPに共通の命令長さの難点を招くことなしに多くの異な ったタイプの複雑なアルゴリズムを効率的に実行できるマイクロプロセッサアー キテクチャが望まれる。 発明の概要 上述の問題は主としてこの発明に従うマイクロプロセッサによって解決される 。マイクロプロセッサは命令間の依存性を検出するように構成される。マイクロ プロセッサは、命令によって指定される演算を行なう単一または複数の処理エレ メントに各命令を割当てる。さらに、マイクロプロセッサは、依存する演算がそ の依存先の演算からオペランドを受取るように、処理エレメント間の相互接続を 動的に変えるように構成される。特に、別の命令が依存する結果を計算する命令 が その命令を実行する処理エレメントに結果を与えるように接続される。有利なこ とに、処理エレメント間のデータの経路制御は命令の実行前に決定される。 相互接続の動的再構成を用いて、このマイクロプロセッサは別の命令シーケン スのために最適化されるDSPよりも効率的に命令シーケンスを実行する。相互 接続が再構成可能であるので、マイクロプロセッサは(典型的なDSPによって 課せられる数制限に対して)多くの異なった命令シーケンスの効率的な実行のた めに構成され得る。さらに、命令の長さを最小にできる。命令は、多数の処理エ レメントによって行なわれる多数の演算を指定する代わりに、特定の処理エレメ ントによって行なわれる演算を指定できる。命令は命令シーケンス内で他の命令 に依存し得る。マイクロプロセッサは次に、命令シーケンスが効率的に行なわれ るように処理エレメントを連結する。有利なことに、マイクロプロセッサは複雑 なアルゴリズムを効率的に行なうことができるが、DSPに共通の大きな命令が ない。 概して、この発明は命令キャッシュ、制御ユニット、データ相互接続および複 数個の処理エレメントを含むマイクロプロセッサを企図する。命令キャッシュは 複数個の命令をストアするように構成される。命令キャッシュから複数個の命令 を受取るように結合され、制御ユニットは複数個の命令の実行前にその複数個の 命令のそれぞれの間の依存性を検出するように構成される。さらに、制御ユニッ トは複数個の制御信号を制御バス上で送信するように構成される。データ相互接 続は制御バスに結合され、複数個のオペランドバスを含む。複数個のオペランド バスに結合され、複数個の処理エレメントは複数個の結果バスを含む。さらに、 複数個の処理エレメントは、複数個のオペランドバス上で送信される値に対して 少なくとも1つの処理演算を行ない、その処理演算の結果を複数個の結果バス上 で送信するように構成される。データ相互接続は複数個の結果バスに結合され、 複数個の命令の実行前に制御信号によって構成されて、複数個の結果バス上で送 信された結果を複数個のオペランドバスで送る。経路制御は、複数個の命令の第 1のものの結果が複数個の命令の第1のものに依存する複数個の命令の第2のも ののソースオペランドに送られるように行なわれる。 この発明はさらに、いくつかのステップを含む、複数個の命令を実行するため に複数個の処理エレメントを動的に構成するための方法を企図する。複数個の命 令は命令キャッシュからフェッチされる。複数個の命令の各々1つが複数個の処 理エレメントの少なくとも1つに割当てられる。依存性は複数個の命令の第1の ものと複数個の命令の第2のものとの間で検出される。データ相互接続が次に構 成される。データ相互接続は複数個の処理エレメントの出力バスを複数個の処理 エレメントの入力バスに接続する。データ相互接続の構成は、複数個の処理エレ メントの第1のものの出力バスが処理エレメントの第2のものの入力バスに接続 されるように行なわれる。第1の処理エレメントは複数個の命令の第1のものを 受取り、複数個の処理エレメントの第2のものは複数個の命令の第2のものを受 取る。最後に、複数個の命令が構成の後に実行される。 図面の簡単な説明 この発明の他の目的および利点は、以下の詳細な説明を読み、添付の図面を参 照するとより明らかとなるであろう。 図1は、データ依存性制御ユニットおよび動的データ相互接続を含むマイクロ プロセッサのブロック図である。 図2は、図1に示すデータ依存性制御ユニットの1つの実施例のブロック図で ある。 図3は、図1に示す動的データ相互接続の1つの実施例のブロック図である。 図4は、図1に示すマイクロプロセッサを含むコンピュータシステムのブロッ ク図である。 この発明はさまざまな変更および代替的な形態を取り得るが、その具体的な実 施例は図面によって示され、ここに詳細に説明される。しかしながら、図面およ びその詳細な説明はこの発明を開示される特定の形態に限定するとは意図されず 、この発明は添付の請求の範囲によって規定されるようなこの発明の精神および 範疇内のすべての変更、均等物および代替例に及ぶものであることが理解される べきである。 発明の詳細な説明 ここで図1を参照すると、マイクロプロセッサ10の1つの実施例のブロック 図が示される。マイクロプロセッサ10はコンピュータシステムの中央処理装置 であってもよく、またはDSPのようなコプロセッサとして用いられてもよい。 マイクロプロセッサ10は命令キャッシュ12、データキャッシュ14、データ 依存性制御ユニット16、動的データ相互接続18、複数個の処理エレメント2 0A−20N、レジスタファイル22、およびバスインタフェースユニット24 を含む。複数個の処理エレメント20A−20Nはここでまとめて処理エレメン ト20と称される。バスインタフェースユニット24はデータキャッシュ14、 命令キャッシュ12およびシステムバス26に結合される。命令キャッシュ12 はさらにデータ依存性制御ユニット16に結合される。データ依存性制御ユニッ ト16はレジスタファイル22、動的データ相互接続18および複数個の結果バ ス28A−28Nに結合される。結果バス28には動的データ相互接続18も結 合され、これはさらにレジスタファイル22と、複数個のソースオペランドバス 30AA−30NBを介して処理エレメント20とに結合される。最後に、処理 エレメント20Nがデータキャッシュ14に結合される。他の処理エレメント2 0もまたデータキャッシュ14に結合され得ることに注目されたい。 概して、データ依存性制御ユニット16は命令キャッシュ12からフェッチさ れる命令間の依存性を検出するように構成される。「依存性」は、第1の命令を 実行した結果が第2の命令のためのソースオペランドである場合に第1の命令と 第2の命令との間に存在する。データ依存性制御ユニット16は、命令によって 指定される演算を行なう単一または複数の処理エレメント20に各命令を割当て る。さらに、データ依存性制御ユニット16は、その依存性が検出される命令を 受取る処理エレメント20間の接続を動的データ相互接続18に形成させる。特 に、別の命令が依存する命令の結果を送信する結果バス28が適切なソースオペ ランドバス30に接続される。このように、命令はそれが依存する別の命令から そのオペランドを受取る。有利なことに、処理エレメント間のデータの経路制御 は対応の命令の実行前に決定される。 処理エレメント20は、処理エレメント20間の接続の動的再構成によって、 特定の命令シーケンス内のデータの依存性によって示唆されるように相互接続さ れる。再構成は特定の命令シーケンスの実行前に行なわれる。命令シーケンスは したがって、別の命令シーケンスのために最適化されるDSPよりもマイクロプ ロセッサ10によってより効率的に実行され得る。接続が再構成可能であるので 、マイクロプロセッサ10は、典型的なDSPによって課せられる数制限に対し て多くの異なった命令シーケンスの効率的な実行のために構成され得る。加えて 、命令の長さが最小に保たれ得る。命令はある処理エレメント20によって行な われる演算を指定できる。命令は他の命令に依存し得る。データ依存性制御ユニ ット16および動的データ相互接続18は命令シーケンスが効率的に行なわれる ように処理エレメント20を連結する。 ソースオペランドが命令シーケンス内の他の命令に依存しないならば、ソース オペランドはデータ依存性制御ユニット16によってレジスタファイル22から 要求される。命令の実行結果は動的データ相互接続18によって結果バス28か らレジスタファイル22へと送られる。レジスタファイル22はマイクロプロセ ッサ10の命令セットによって規定されるレジスタのための記憶装置を含む。た とえば、x86マイクロプロセッサアーキテクチャはEAX、EBX、ECX、 EDX、ESP、EBP、ESIおよびEDIレジスタを含む。 処理エレメント20は処理演算を行なうように構成される。処理演算は乗算、 累算および算術演算/論理演算を含み得る。加えて、処理演算はメモリへ、また そこからの値の転送を含み得る。処理エレメント20Nはロード・ストア演算の ようなメモリアクセスを行なうためにデータキャッシュ14に接続して示される 。ロード演算結果は結果バス28N上で動的データ相互接続18に送られる。処 理エレメント20はソースオペランドバス30でソースオペランドを受取り、結 果は結果バス28上で送信される。処理エレメント20の各々が2つのソースオ ペランドバス30と1つの結果バス28とを備えて示されるが、処理エレメント 20の他の実施例はそれよりも多いか少ない各タイプのバスを含み得る。このよ うな処理エレメントは、DSPアルゴリズムに典型的な乗算−累算機能のような より複雑な演算を個々に行なうことができる。なお、さらなる処理エレメント2 0がロード・ストアメモリ演算を行なうためにデータキャッシュ14に結合され てもよい。 ある実施例では、データ依存性制御ユニット16は、命令キャッシュ12から それまでにフェッチされているが処理エレメント20によってまだ実行されてい ない命令の表示をストアする。このように、データの依存性は異なるときにフェ ッチされる命令間で検出できる。データ依存性制御ユニット16はいつ命令が実 行されたのかを検出するために結果バス28に結合される。したがって、対応の 表示は命令が実行されるときに放棄される。 命令キャッシュ12は命令をストアするための高速キャッシュメモリである。 命令は命令キャッシュ12からフェッチされ、データ依存性ユニット16へと実 行のために送信される。命令キャッシュ12はセットアソシティブまたはダイレ クトマッピング構成に構成され得る。同様に、データキャッシュ14はデータを ストアするための高速キャッシュメモリであり、セットアソシアティブまたはダ イレクトマッピング構成に構成され得る。 バスインタフェースユニット24はマイクロプロセッサ10とシステムバス2 6に結合される装置との間の通信を行なうように構成される。たとえば、命令キ ャッシュ12でヒットしない命令フェッチはインタフェースユニット24によっ てメインメモリから転送され得る。同様に、データキャッシュ14でヒットしな い、処理エレメント20Nによって行なわれるデータ要求はインタフェースユニ ット24によってメインメモリから転送され得る。さらに、データキャッシュ1 4はマイクロプロセッサ10によって変更されているデータのキャッシュライン を放棄できる。バスインタフェースユニット24は変更されたラインをメインメ モリに転送する。 次に図2を参照すると、データ依存性制御ユニット16の1つの実施例のブロ ック図が示される。データ依存性制御ユニット16はデコーダ40、依存性検査 ユニット42、相互接続制御ユニット44、使用可能ユニット記憶装置46、依 存性記憶装置48および現制御記憶装置50を含む。デコーダ40は命令キャッ シュ12からの命令バス52および命令受入れバス54に結合される。さらに、 デコーダ40は使用可能ユニット記憶装置46、行先バス56、オペランドバス 58、結果バス28および実行エレメントバス60に結合される。依存性検査ユ ニット42は行先バス56、オペランドバス58、レジスタ読出バス62、依存 性バス64、ソースエレメントバス66、結果バス28および依存性記憶装置4 8に結合される。相互接続制御ユニット44は現制御記憶装置50、結果バス2 8、実行エレメントバス60、依存性バス64、ソースエレメントバス66およ び制御バス68に結合される。 デコーダ40は命令キャッシュ12から命令バス52上で命令を受取る。各命 令は、どの処理演算に命令が対応するのかを判断し、また、ソースオペランドお よび行先オペランドを決定するためにデコードされる。命令に対応する処理演算 に依存して、1つ以上の処理エレメント20が命令を実行するように構成され得 る。処理エレメント20が命令を実行するように構成され、まだ実行されていな い前の命令に割当てられていなければ、デコーダ40は対応の信号を命令受入れ バス54上でアサートするように構成され、その命令が受入れられたことを示す 。特定の命令に対して命令受入れバス54上でアサートされた信号が命令キャッ シュ12によって受取られなければ、その命令は命令キャッシュ12によって再 伝送される。なお、複数の命令を命令バス52で同時に送ることができる。命令 受入れバス54は同時に送信され得る各命令に対する信号を含む。 使用可能ユニット記憶装置46は、割当てのために使用可能である(すなわち 、まだ実行されていない前の命令に割当てられていない)それらの処理エレメン トの表示をストアする。ある実施例では、使用可能ユニット記憶装置46が各処 理エレメント20に対応するビットをストアする。そのビットがセットされれば 、対応の処理エレメント20が使用可能である。そのビットがクリアであれば、 対応の処理エレメント20は使用可能でない。図示する実施例では、最大で1つ の命令が所与の時間に各処理エレメント20に関連づけられる。デコーダ40が 命令を処理エレメントに割当てると、使用可能ユニット記憶装置46の対応のビ ットがリセットされ、処理エレメント20が結果を結果バス28上で送るまでリ セットされたままである。デコーダ40は命令を実行するために使用可能な処理 エレメント20を選択し、選択された処理エレメントの表示を相互接続制御ユニ ット44へと実行エレメントバス60上で送る。実行エレメントバス60は命令 キャッシュ12から同時に送られ得る命令の数と等しい処理エレメントの表示の 数を同時に送るように構成される。 命令を処理エレメント20に割当てるのに加えて、デコーダ40は命令のため のソースオペランドおよび行先オペランドを検出する。ソースオペランドはソー スオペランドバス58上で送信され、一方行先オペランドは行先オペランドバス 56で送信される。依存性検査ユニット42はソースオペランドおよび行先オペ ランドを受取る。各命令のためのソースオペランドはプログラム順でその命令の 前にある命令の行先オペランドと比較される。ソースオペランドが前の命令の行 先であれば、依存性検査ユニット42は対応の信号を依存性バス64上で相互接 続制御ユニット44へとアサートする。結果としてソースオペランドを生ずる処 理エレメントはソースエレメントバス66上の値によって相互接続制御ユニット 44に表示される。依存性バス64はデータ依存性制御ユニット16に同時に送 られ得る各命令の各ソースオペランドに対応する信号を含む。同様に、ソースエ レメントバス66は依存性バス64で依存性信号の数と等しい数の値を送ること できる。各依存性信号はソースエレメントバス66上の特定の値に対応する。 プログラム順で特定の命令の前にある命令がその特定の命令の前にフェッチさ れ得るので、依存性検査ユニット42はマイクロプロセッサ10内でまだ行なわ れていない命令に対する依存性検査も行なう。依存性記憶装置48はこのような 機能をもたらすために含まれる。データ依存性制御ユニット16によって処理さ れる命令ごとに、依存性記憶装置48内の記憶場所が割当てられる。各、記憶場 所内には、(命令が処理されるときに実行エレメントバス60で受取られる)命 令に割当てられる処理エレメントとその命令の行先オペランドとがある。依存性 検査ユニット42は依存性記憶装置48内にストアされる指示の各々を処理され る命令と比較する。依存性が検出されれば、依存性は同時にフェッチされた命令 間の依存性に対する上の説明と同様に扱われる。 依存性検査ユニット42が特定のソースオペランドに対する依存性を検出しな ければ、ソースオペランドはレジスタファイル22にストアされる。レジスタの 表示がレジスタファイル22に結合されるレジスタ読出バス62上で送信される 。表示されたレジスタ内にストアされる値は次に動的データ相互接続18に送ら れる。デアサートされる対応の依存性信号のため、相互接続制御ユニット44は オペランド値がレジスタファイル22によって与えられることを検出できる。相 互接続制御ユニット44によってアサートされる制御信号はレジスタ値を命令に 割当てられる処理エレメント20へと転送させる。 依存性検査ユニット42は、処理エレメント20が結果を対応の結果バス28 上で送信するまで、行先と割当てられた処理エレメントとを依存性記憶装置48 にストアする。結果が結果バス28上で送信されたことを検出すると、依存性検 査ユニット42は依存性記憶装置48から処理エレメントに対応する情報を削除 する。 アサートされた依存性信号を受取ると、相互接続制御ユニット44は処理エレ メント20を接続するために制御バス68上に適切な制御信号を発生する。ソー スエレメントバス66上に表示される処理エレメント20はソース処理エレメン トと称される。実行エレメントバス60上に表示される処理エレメント20は受 取り処理エレメントと称される。制御信号によって、ソース処理エレメントに対 応する結果バス28と受取り処理エレメントに対応するオペランドバス30の1 つとの間に接続が形成される。たとえば、処理エレメント20Bは命令を実行す るために選択されることができ、その命令は処理エレメント20Aの結果に依存 し得る。処理エレメント20Bの表示が実行エレメントバス60で送られる。処 理エレメント20Aの表示はソースエレメントバス66上で送信され、対応の依 存性信号が依存性バス64上でアサートされる。したがって、相互接続制御ユニ ット44は、どの命令のオペランドが処理エレメント20Aの結果に依存するか に基づいて、結果バス28Aをソースオペランドバス30BAまたは30BBに 接続させ、制御信号を制御バス68上でアサートする。 特定の結果バス28と特定のソースオペランドバス30との間の接続を形成す る制御信号は、特定の結果バス28上で結果が送信されるまでアサートされたま まである。現制御記憶装置50は、1クロックサイクルの間、相互接続制御ユニ ット44によってアサートされる制御信号のセットをストアする。相互接続制御 ユニット44は、制御信号に関連したソース処理エレメントが結果を結果バス2 8上で送信するまで、前にアサートされた制御信号をアサートする。アサートさ れた制御信号を現制御記憶装置50にストアすることによって、前に処理された 命令に対応する制御信号が維持され得る。 次に図3を参照すると、動的データ相互接続18の1つの実施例の図が示され る。図3に示すように、動的データ相互接続18は相互接続ブロック70と複数 個のオペランド記憶装置72AA−72NBとを含む。相互接続ブロック70は 制御バス68と、処理エレメント20からの結果バス28と、レジスタファイル 22からの複数個のレジスタデータバス74A−74Cとに結合される。さらに 、相互接続ブロック70はオペランド記憶装置72の各々に結合される。オペラ ンド記憶装置72はさらに対応のソースオペランドバス30に結合される。最後 に、相互接続ブロック70は複数個のレジスタ書込バス76A−76Bに結合さ れる。 相互接続ブロック70は結果バス28またはレジスタデータバス74のいずれ かをオペランド記憶装置72のいずれかに接続するように構成される。相互接続 ブロック70はスイッチ78A、78Bおよび78Cを含む複数個のスイッチを 含む。各スイッチ78は結果バス28またはレジスタデータバス74をオペラン ド記憶装置72またはレジスタ書込バス76に接続するように構成される。図示 する実施例では、各スイッチ78に対して1つの制御信号が制御バス68内に含 まれる。スイッチ78が対応のアサートされた制御信号を受取れば、スイッチは そのスイッチに結合された2つのバスを接続する。たとえば、スイッチ78Aが アサートされた制御信号を受取れば、結果バス28Aがソースオペランド記憶装 置72BAに結合されたバスに結合される。 相互接続ブロック70はしばしばクロスバー構造と称される。図示する構造は 各「出力」(たとえば、オペランド記憶装置72またはレジスタ書込バス76) を1つまでの「入力」(たとえば、結果バス28またはレジスタデータバス74 )に接続させる。このような相互接続は、図2に示すようなデータ依存性制御ユ ニット16によって発生され得る起こり得る接続のいかなるものも支持する。他 の相互接続は動的データ相互接続18の他の実施例において用いられ得る。 レジスタデータバス74はレジスタファイル22内にストアされるレジスタ値 を送る。1つのレジスタデータバス74が図2に示すレジスタ読出バス62の各 1つに対応する。レジスタ値が処理エレメント20に与えられるのは、レジスタ 読出バス62上でレジスタ表示を送るデータ依存性制御ユニット16と、レジス タ表示に関連したレジスタ値を対応のレジスタデータバス74上で送信するレジ スタファイル22と、対応のレジスタデータバス74を処理エレメント20に対 応するオペランド記憶装置72と接続するスイッチ78とによってである。 結果バス28をオペランド記憶装置72に接続するのに加えて、スイッチ78 は結果バス28をレジスタ書込バス76に接続するために相互接続ブロック70 内に含まれる。典型的には、ある値がレジスタファイル22からアクセスされ、 しかも直ちにレジスタファイル22へとストアバックされることはないので、レ ジスタデータバス74をレジスタ書込バス76に接続するためのスイッチ78は 含まれない。各レジスタ書込バス76がストアされるべきレジスタの表示とスト アされるべき値とを送る。明快にするために2つのレジスタ書込バス76が図3 に示されるが、処理エレメント20によって同時に送られる各結果がレジスタフ ァイル22にストアされることを確実とするためにより多くのレジスタ書込バス 76が含まれてもよい。なお、あるレジスタから別のレジスタへの値の移動がレ ジスタファイル22によって内部的に行なわれてもよい。このように、処理エレ メント20はデータ移動のみを含む演算に割当てられる必要はない。 各オペランド記憶装置72は対応の処理エレメント20が用いるためのオペラ ンドをストアするように構成される。ある実施例では有効表示もストアされる。 オペランドは種々の時間に特定の命令のために与えられ得る。たとえば、特定の 命令のためのあるオペランドはレジスタファイル22内にストアされることがで き、したがって、特定の命令が対応の処理エレメント20に割当てられるそのク ロックサイクルの間に与えられる。もう一方のオペランドは別の処理エレメント 20によって与えられることができ、したがって、対応の処理エレメント20に 割当てられる命令の後のクロックサイクルの間に到着できる。各オペランド記憶 装置72内に有効表示をストアすることによって、処理エレメント20は、その オペランドが与えられており、したがってその処理演算を行なって結果を生成で きることを判断できる。ある実施例では、有効表示は、セットされると対応のオ ペランド値が有効であることを示すビットを含む。 図2について与えられた例を続けると、この場合に歯処理エレメント20Bが 処理エレメント20Aに依存する命令を実行するために選択されているのだが、 スイッチ78Aがアサートされた制御信号を受取る。スイッチ78Aが結果バス 28Aをオペランド記憶装置72BAに接続する。処理エレメント20Aがそれ に割当てられた命令を完了し、結果を結果バス28A上で送信すると、オペラン ド記憶装置72BAがその値を受取る。値が与えられると、オペランド記憶装置 72BA内の有効表示がセットされる。処理エレメント20Bに割当てられた命 令は、オペランド記億装置72BBが有効オペランド値をストアしていると想定 すると、引き続いて実行され得る。 代替的な実施例では、マイクロプロセッサ10は検出される依存性に従って相 互接続ブロック70を構成するが、1クロックサイクルの間依存性命令を保持す ることができる。したがって第1の命令に依存する第2の命令は、データが第1 の命令の実行から到着するまで、割当てられた処理エレメントを占有しない。こ の代替例は第1および第2の命令がループ内にある場合に特に有利であり得る。 ループは、第1のクロックサイクルの間に第1の命令をディスパッチし、次に第 2のクロックサイクルの間に(次のループ反復からの)第1の命令とともに第2 の命令をディスパッチすることによってより円滑に実行することができる。後続 するクロックサイクルが次に続行でき、第2のクロックサイクルと同様にパイプ ライン化された第1および第2の命令がさらに反復される。各命令の1つの反復 が第2のクロックサイクル以降クロックサイクルごとに実行され、命令のスルー プットを増大する効果がある。効果的に、効率的なパイプラインがループ内の命 令のために作られており、パイプラインへの命令の互い違いになったディスパッ チによって各命令が遅延なしに実行される。 マイクロプロセッサ10の機能性をさらに説明するために、別の例を検討する 。この例のために、DSPルーチンで用いられ得る2つアルゴリズムを示す。こ の例の目的のために、処理エレメント20Aは乗算器であり、処理エレメント2 0BはALUユニットであり、処理エレメント20C(図示せず)は累算器であ ると想定する。用いられ得る第1のアルゴリズムは以下の式(1)に示すような 多数の項の和である。 Σ(x−y)2 (1) 式(1)に示す項の和を計算するために、最初にxおよびyの各値が減算される (ALU演算)。ALU演算によって生じる値は次に二乗され(両方のオペラン ドがALU演算によって生じる値である乗算演算)、乗算の積が前に生成された 結果に加えられる。この演算のために最適化されたDSPはしたがって、xおよ びyオペランドを受取るように結合されたALUユニットを含み、ALUユニッ トの出力は乗算器の両方の入力に結合され、乗算器の出力は累算器の入力に結合 されるであろう。しかしながら、このようなDSPは以下の式(2)によって表 わされる多数の項の和を効率的に計算することはできないであろう。 Σx2−y (2) 式(2)は、両方の入力オペランドとしてxオペランドを受取るように結合され 乗算器を含み、乗算器の出力はyオペランドも受取るALUユニットに結合され 、次にALUユニットの出力累算器に与えられる。 マイクロプロセッサ10は式(1)または式(2)のアルゴリズムを効率的に 行なうためにそのユニットの接続を動的に再構成する。換言すると、マイクロプ ロセッサ10はアルゴリズムを実行するためにその動的再構成能力を用いて、自 然にデータの経路制御をするパイプラインをセットアップする。次に、各命令が 上述の代替的な実施例と同様に遅延なしに実行されるようにパイプラインへと命 令がディスパッチされ得る。式(1)のアルゴリズムを実行する命令が検出され ると、ALU結果と乗算演算の両方のオペランドとの間の依存性が検出され、結 果バス28B(ALUユニットの結果バス)がオペランド記憶装置72AAおよ び72ABに接続させられる。さらに、乗算演算と累算演算との間の依存性が検 出される。結果バス28Aはそれによって処理エレメント20Cに対応するオペ ランド記憶装置に接続されるであろう。 代替的に、式(2)のアルゴリズムを実行する命令が検出されると、マイクロ プロセッサ10は乗算演算の結果とALU演算との間の依存性を検出する。結果 バス28Aはしたがってオペランド記憶装置72BAに接続される。同様に、依 存性がALU演算と累算演算との間に検出される。結果バス28Bはしたがって 処理エレメント20Cに対応するオペランド記憶装置72に接続される。有利な ことに、マイクロプロセッサ10はいずれのアルゴリズムのためにも効率的な相 互接続を生じる。式(1)および(2)に示すアルゴリズムの両方を用いるプロ グラムは、マイクロプロセッサ10で実行されると、アルゴリズムのいずれか1 つのために最適化されたDSPと比較して、向上した性能を享受できる。 上述の説明は処理エレメント間のデータ相互接続を連続的に更新するように構 成されるマイクロプロセッサ10についてであることが注目される。マイクロプ ロセッサ10の他の実施例は命令の特定のブロック(たとえば、ループの本体部 分を形成する命令)に従って相互接続を更新し、その相互接続をループの実行の 持続時間の間維持するように構成され得る。マイクロプロセッサ10のこのよう な実施例は相互接続を素早く更新するように構成される必要はない。そうではな く、相互接続は命令のブロックの実行を始める前に更新でき、その後に命令のブ ロックが実行される。さらに、相互接続の構成をストアしておくと、命令のブロ ックが後に再び実行されるならば、既に構成が決定できているということになる 。その場合、依存性のために命令を処理する必要なしにこの構成を相互接続に与 えることができるであろう。この記憶機構は分岐予測機構に類似しているかもし れない。分岐予測機構はしばしば、関連の分岐命令を含む命令のアドレスによっ て、予測されるターゲットアドレスが記憶装置から読出されるように、予測され たターゲットアドレスを記憶装置にストアする。相互接続の構成も同様に記憶装 置にストアされ得る。その場合、構成を生じる命令のアドレスがその構成を記憶 装置から読出すことができる。 次に図4を参照すると、マイクロプロセッサ10を含むコンピュータシステム 100が示される。コンピュータシステム100はさらにバスブリッジ102、 メインメモリ104および複数個の入力/出力(I/O)装置106A−106 Nを含む。複数個のI/O装置106A−106NはまとめてI/O装置106 と称される。マイクロプロセッサ10、バスブリッジ102およびメインメモリ 104はシステムバス26に結合される。I/O装置106はバスブリッジ10 2との通信のためにI/Oバス108に結合される。 バスブリッジ102は、I/O装置106とシステムバス26に結合された装 置との間の通信を助けるために設けられる。I/O装置106は一般にマイクロ プロセッサ10およびシステムバス26に結合された他の装置よりも長いバスク ロックサイクルを必要とする。したがって、バスブリッジ102はシステムバス 26と入力/出力バス108との間にバッファを与える。加えて、バスブリッジ 102はあるバスプロトコルから別のものへとトランザクションを変換する。あ る実施例では、入力/出力バス108はエンハンスド・インダストリー・スタン ダード・アーキテクチャ(EISA)バスであり、バスブリッジ102はシステ ムバスプロトコルからEISAバスプロトコルへの変換を行なう。別の実施例で は、入力/出力バス108は周辺コンポーネント相互接続(PCI)バスであり 、バスブリッジ102はシステムバスプロトコルからPCIバスプロトコルへの 変換行なう。なお、システムバスプロトコルには多くの変形例が存在する。マイ クロプロセッサ10はいかなる適切なシステムバスプロトコルをも用いることが できる。 I/O装置106はコンピュータシステム100とコンピュータシステムの外 部の他の装置との間のインタフェースを与える。例示的なI/O装置はモデム、 直列または並列ポート、サウンドカード等を含む。I/O装置106は周辺装置 としても称され得る。メインメモリ104はマイクロプロセッサ10が用いるた めのデータおよび命令をストアする。ある実施例では、メインメモリ104は少 なくとも1つのダイナミック・ランダム・アクセス・メモリ(DRAM)および 1つのDRAMメモリ制御装置を含む。 なお、図4に示すようなコンピュータシステム100は1つのマイクロプロセ ッサを含むが、コンピュータシステム100の他の実施例がマイクロプロセッサ 10と同様の多数のマイクロプロセッサを含み得る。同様に、コンピュータシス テム100は類似するしないにかかわらず多数のI/Oバスプロトコルを変換す るための多数のバスブリッジ102を含んでもよい。さらに、マイクロプロセッ サ10によって参照される命令およびデータをより速い記憶装置にストアするこ とによってコンピュータシステム100の性能を高めるためのキャッシュメモリ が含まれ得る。キャッシュメモリはマイクロプロセッサ10とシステムバス26 との間に挿入されてもよく、または、「ルックアサイド」構成でシステムバス2 6上にあってもよい。 この説明がさまざまな信号のアサートにあてはまり得ることにもさらに注目さ れる。ここでは、信号が「アサート」されるのはそれが特定の条件を示す値を有 する場合であるとして使用されている。逆に、信号が「デアサート」されるのは それが特定の条件がないことを示す値を有する場合である。信号は、論理0値を 有する場合または逆に論理1値を有する場合にアサートされるように規定され得 る。 上の開示に従って、その処理エレメント間に動的に再構成可能な相互接続を含 むマイクロプロセッサが説明された。相互接続は、実行される命令シーケンスに 従って、ある処理エレメントをその結果に依存する別の処理エレメントに効率的 に送るように構成され得る。別の命令シーケンスが発生すると、異なった相互接 続が発生され得る。有利なことに、マイクロプロセッサは、処理エレメント間の 相互結線接続を有するDSPよりも効率的に命令シーケンスを実行できる。 上の開示が十分に認識されると数多くの変形および変更が当業者には明らかに なるであろう。以下の請求の範囲はこのようなすべての変形および変更を含むよ うに解釈されることが意図される。

Claims (1)

  1. 【特許請求の範囲】 1.マイクロプロセッサであって、 複数個の命令をストアするように構成された命令キャッシュと、 前記命令キャッシュから前記複数個の命令を受取るように結合された制御ユニ ットとを含み、前記制御ユニットは、前記複数個の命令の実行前に前記複数個の 命令のそれぞれの間の依存性を検出し、複数個の制御信号を制御バスに与えるよ うに構成され、さらに、 前記制御バスに結合されたデータ相互接続を含み、前記データ相互接続は複数 個のオペランドバスを含み、さらに、 前記複数個のオペランドバスに結合された複数個の処理エレメントを含み、前 記複数個の処理エレメントは複数個の結果バスを含み、前記複数個の処理エレメ ントは、前記複数個のオペランドバス上で送信された値に対して少なくとも1つ の処理演算を行ない、前記処理演算の結果を前記複数個の結果バスで送るように 構成され、 前記データ相互接続は前記複数個の結果バスに結合され、前記データ相互接続 は、前記複数個の命令の第1のものの結果が、前記複数個の命令の前記第1のも のに依存する前記複数個の命令の第2のもののソースオペランドに送信されるよ うに、前記複数個の結果バス上で送信された結果を前記複数個のオペランドバス 上で送信するように前記複数個の命令の実行前に前記制御信号によって構成され る、マイクロプロセッサ。 2.処理演算は乗算、累算および算術演算/論理演算を含む、請求項1に記載の マイクロプロセッサ。 3.前記データ相互接続は前記複数個の結果バスの各々を前記複数個のオペラン ドバスの各々に接続するように結合されたクロスバーを含み、特定の接続が前記 複数個の制御信号に従って作られる、請求項1に記載のマイクロプロセッサ。 4.前記制御ユニットおよび前記データ相互接続に結合されたレジスタファイル をさらに含み、前記レジスタファイルは複数個のレジスタに対応する結果をスト アするように構成される、請求項3に記載のマイクロプロセッサ。 5.前記制御ユニットは前記レジスタファイルに結合された複数個のレジスタ読 出バスをさらに含み、前記制御ユニットは前記複数個のレジスタの特定のものを 示す値を前記複数個のレジスタ読出バス上で送信するように構成され、前記複数 個のレジスタの前記特定のものは前記複数個の命令のソースオペランドに対応す る、請求項4に記載のマイクロプロセッサ。 6.前記レジスタファイルは前記データ相互接続に結合された複数個のレジスタ データバスをさらに含み、前記レジスタデータバスは前記複数個のレジスタの前 記特定のものの中にストアされる値を送信し、前記データ相互接続は前記レジス タデータバスで送信された前記値を前記複数個の制御信号に従って前記複数個の オペランドバス上で送信するように構成される、請求項5に記載のマイクロプロ セッサ。 7.前記データ相互接続は前記レジスタファイルに結合された複数個のレジスタ 書込バスをさらに含み、前記データ相互接続は前記複数個の結果バス上で送信さ れた結果を前記複数個の制御信号に従って前記複数個のレジスタ書込バス上で伝 送するように構成される、請求項4に記載のマイクロプロセッサ。 8.前記レジスタファイルは前記複数個のレジスタ書込バスで送られた結果を前 記複数個のレジスタのあるものへとストアするように構成される、請求項7に記 載のマイクロプロセッサ。 9.前記制御ユニットは、 前記命令キャッシュから前記複数個の命令を受取るように結合されたデコーダ を含み、前記デコーダは前記複数個の命令の各々を実行するために前記複数個の 処理エレメントの少なくとも1つを識別するように構成され、前記デコーダは前 記複数個の命令の各々に対応するソースオペランドおよび行先オペランドを識別 するようにさらに構成され、さらに、 前記複数個の命令間の依存性を識別するように構成された依存性検査ユニット を含み、前記依存性検査ユニットは前記デコーダから前記ソースオペランドおよ び前記行先オペランドを受取るように結合され、さらに、 前記制御バス、前記依存性検査ユニットおよび前記デコーダに結合された相互 接続制御ユニットを含み、前記相互接続制御ユニットは、前記デコーダからの識 別された処理エレメントの表示と前記依存性検査ユニットからの依存性の表示と に従って制御信号を発生する、請求項1に記載のマイクロプロセッサ。 10.前記依存性検査ユニットは、前記複数個の命令の1つのソースオペランド と等しい行先を有する結果を生じる前記複数個の処理エレメントの1つを識別す ることによって依存性を識別する、請求項9に記載のマイクロプロセッサ。 11.複数個の命令を実行するように複数個の処理エレメントを動的に構成する ための方法であって、 命令キャッシュから前記複数個の命令をフェッチするステップと、 前記複数個の命令の各々を前記複数個の処理エレメントの少なくとも1つに割 当てるステップと、 前記複数個の命令の第1のものと前記複数個の命令の第2のものとの間の依存 性を検出するステップと、 前記複数個の命令の前記第1のものを受取る前記複数個の処理エレメントの1 つの出力バスが前記複数個の命令の前記第2のものを受取る前記複数個の処理エ レメントの別のものの入力バスに接続されるように、前記複数個の処理エレメン トの出力バスを前記複数個の処理エレメントの入力バスに接続するデータ相互接 続を構成するステップと、 前記構成の後に前記複数個の命令を実行するステップとを含む、方法。 12.前記割当てるステップは、前記複数個の命令のそれぞれが割当てられる前 記複数個の処理エレメントのそれぞれを記録するステップを含む、請求項11に 記載の方法。 13.第2の複数個の命令をフェッチするステップをさらに含む、請求項12に 記載の方法。 14.前記第2の複数個の命令の各々を、第1の複数個の命令の1つに割当てら れていない前記複数個の処理エレメントの1つに割当てるステップをさらに含む 、請求項13に記載の方法。 15.前記複数個の命令の各々の行先を記録するステップをさらに含む、請求項 14に記載の方法。 16.前記記録された行先を用いて前記複数個の命令と前記第2の複数個の命令 との間の依存性を検出するステップをさらに含む、請求項15に記載の方法。
JP9525205A 1996-01-04 1996-12-11 データの依存性に従って処理エレメントを動的に接続するように構成されたマイクロプセッサ Pending JP2000503151A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/583,157 1996-01-04
US08/583,157 US5790880A (en) 1996-01-04 1996-01-04 Microprocessor configured to dynamically connect processing elements according to data dependencies
PCT/US1996/019655 WO1997025670A1 (en) 1996-01-04 1996-12-11 A microprocessor configured to dynamically connect processing elements according to data dependencies

Publications (1)

Publication Number Publication Date
JP2000503151A true JP2000503151A (ja) 2000-03-14

Family

ID=24331912

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9525205A Pending JP2000503151A (ja) 1996-01-04 1996-12-11 データの依存性に従って処理エレメントを動的に接続するように構成されたマイクロプセッサ

Country Status (4)

Country Link
US (1) US5790880A (ja)
EP (1) EP0871934A1 (ja)
JP (1) JP2000503151A (ja)
WO (1) WO1997025670A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864341A (en) * 1996-12-09 1999-01-26 International Business Machines Corporation Instruction dispatch unit and method for dynamically classifying and issuing instructions to execution units with non-uniform forwarding
JP4235987B2 (ja) * 1996-12-19 2009-03-11 マグナチップセミコンダクター有限会社 ビデオフレームレンダリングエンジン
US6088790A (en) * 1997-12-19 2000-07-11 Intel Corporation Using a table to track and locate the latest copy of an operand
DE19817024A1 (de) * 1998-04-17 1999-10-21 Alcatel Sa Integrierte Schaltung
US6105088A (en) * 1998-07-10 2000-08-15 Northrop Grumman Corporation Backplane assembly for electronic circuit modules providing electronic reconfigurable connectivity of digital signals and manual reconfigurable connectivity power, optical and RF signals
US6195750B1 (en) * 1999-03-09 2001-02-27 Amdhal Corporation Method and apparatus for dynamic CPU reconfiguration in a system employing logical processors
US6745317B1 (en) * 1999-07-30 2004-06-01 Broadcom Corporation Three level direct communication connections between neighboring multiple context processing elements
US7139899B2 (en) * 1999-09-03 2006-11-21 Cisco Technology, Inc. Selected register decode values for pipeline stage register addressing
US6633971B2 (en) * 1999-10-01 2003-10-14 Hitachi, Ltd. Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline
JP4160705B2 (ja) * 1999-10-15 2008-10-08 富士通株式会社 プロセッサ及びプロセッサシステム
WO2001055866A1 (en) * 2000-01-28 2001-08-02 Morphics Technolgoy Inc. A wireless spread spectrum communication platform using dynamically reconfigurable logic
GB0215034D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Architecture generation method
US7475393B2 (en) * 2003-08-29 2009-01-06 Motorola, Inc. Method and apparatus for parallel computations with incomplete input operands
US7613902B1 (en) * 2005-09-22 2009-11-03 Lockheed Martin Corporation Device and method for enabling efficient and flexible reconfigurable computing
US7945768B2 (en) * 2008-06-05 2011-05-17 Motorola Mobility, Inc. Method and apparatus for nested instruction looping using implicit predicates
DE102010045800A1 (de) * 2010-09-20 2012-03-22 Texas Instruments Deutschland Gmbh Elektronische Vorrichtung und Verfahren zur Datenverarbeitung unter Verwendung einer Betriebsart mit virtuellem Register
US8787368B2 (en) * 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Crossbar switch with primary and secondary pickers
US10191881B2 (en) * 2016-06-06 2019-01-29 Hewlett Packard Enterprise Development Lp Modifications to a stream processing topology during processing of a data stream
US10372507B2 (en) * 2016-12-31 2019-08-06 Intel Corporation Compute engine architecture to support data-parallel loops with reduction operations
CN110728364B (zh) * 2018-07-17 2024-12-17 上海寒武纪信息科技有限公司 一种运算装置和运算方法
US11165846B2 (en) 2019-06-21 2021-11-02 International Business Machines Corporation Dynamically converting static and dynamic connections in a streaming application
CN120996225B (zh) * 2025-10-24 2026-01-23 山东云海国创云计算装备产业创新中心有限公司 芯片控制方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4553203A (en) * 1982-09-28 1985-11-12 Trw Inc. Easily schedulable horizontal computer
US5361367A (en) * 1991-06-10 1994-11-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Highly parallel reconfigurable computer architecture for robotic computation having plural processor cells each having right and left ensembles of plural processors
DE69428004T2 (de) * 1993-11-05 2002-04-25 Intergraph Corp., Huntsville Superskalare Rechnerarchitektur mit Softwarescheduling
CA2180855A1 (en) * 1994-01-10 1995-07-13 Stephen G. Churchill A massively miltiplexed superscalar harvard architecture computer
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US5649138A (en) * 1996-01-04 1997-07-15 Advanced Micro Devices Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor

Also Published As

Publication number Publication date
US5790880A (en) 1998-08-04
EP0871934A1 (en) 1998-10-21
WO1997025670A1 (en) 1997-07-17

Similar Documents

Publication Publication Date Title
JP2000503151A (ja) データの依存性に従って処理エレメントを動的に接続するように構成されたマイクロプセッサ
US5860107A (en) Processor and method for store gathering through merged store operations
US5968162A (en) Microprocessor configured to route instructions of a second instruction set to a second execute unit in response to an escape instruction
EP0891583B1 (en) A microprocessor configured to detect a subroutine call of a dsp routine and to direct a dsp to execute said routine
US6374346B1 (en) Processor with conditional execution of every instruction
JPH09223013A (ja) 高性能プロセッサにおける投機ロード命令の実行方法
JPH0334024A (ja) 分岐予測の方法とそのための装置
US5864689A (en) Microprocessor configured to selectively invoke a microcode DSP function or a program subroutine in response to a target address value of branch instruction
US5930490A (en) Microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions
US5721945A (en) Microprocessor configured to detect a DSP call instruction and to direct a DSP to execute a routine corresponding to the DSP call instruction
EP0491693A1 (en) IMPROVED CENTRAL UNIT PIPELINE WITH REGISTRY FILE BYPASS DURING UPDATE / ACCESS ADDRESS COMPARISON.
JP3155519B2 (ja) スーパスカラ・プロセッサでストア命令を処理する方法及び装置
JPH05100948A (ja) 2乗演算を実行する速度改良型データ処理システム及びその方法
WO1996008769A1 (en) Computer instruction prefetch system
US7634619B2 (en) Method and apparatus for redirection of operations between interfaces
US5678016A (en) Processor and method for managing execution of an instruction which determine subsequent to dispatch if an instruction is subject to serialization
JP2006517322A (ja) パイプライン化ディジタルプロセッサにおけるハザード検出および管理のための方法および装置
JPH10143365A (ja) 並列処理装置及びその命令発行方式
US5713039A (en) Register file having multiple register storages for storing data from multiple data streams
US5956503A (en) Method and system for front-end and back-end gathering of store instructions within a data-processing system
US6115730A (en) Reloadable floating point unit
US5829031A (en) Microprocessor configured to detect a group of instructions and to perform a specific function upon detection
JP3876033B2 (ja) 順不同に命令を実行するコンピュータのためのシステム
US5911151A (en) Optimizing block-sized operand movement utilizing standard instructions
US7401328B2 (en) Software-implemented grouping techniques for use in a superscalar data processing system