JP4589305B2 - Ilp及びtlpを利用する再構成可能なプロセッサアレイ - Google Patents

Ilp及びtlpを利用する再構成可能なプロセッサアレイ Download PDF

Info

Publication number
JP4589305B2
JP4589305B2 JP2006506823A JP2006506823A JP4589305B2 JP 4589305 B2 JP4589305 B2 JP 4589305B2 JP 2006506823 A JP2006506823 A JP 2006506823A JP 2006506823 A JP2006506823 A JP 2006506823A JP 4589305 B2 JP4589305 B2 JP 4589305B2
Authority
JP
Japan
Prior art keywords
processing
processing elements
elements
instruction
processing element
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2006506823A
Other languages
English (en)
Other versions
JP2006523883A (ja
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Koninklijke Philips Electronics NV
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 Koninklijke Philips NV, Koninklijke Philips Electronics NV filed Critical Koninklijke Philips NV
Publication of JP2006523883A publication Critical patent/JP2006523883A/ja
Application granted granted Critical
Publication of JP4589305B2 publication Critical patent/JP4589305B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • 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, look ahead
    • G06F9/3824Operand accessing
    • 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, 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; 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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, 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

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)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Communication Control (AREA)

Description

本発明の技術分野は、プロセッサアーキテクチャであり、特にマルチプロセッサシステム、前記プロセッサをプログラムする方法及び前記方法を実施するコンパイラに関する。
超長命令語(VLIW)プロセッサは、1クロックサイクル内に多くの演算を実行することができる。一般に、コンパイラは、プログラム命令を前記プロセッサが同時に実行することができる基本演算にリデュースする(reduce)。同時に実行されるべき演算は、超長命令語(VLIW)に結合される。VLIWプロセッサの命令デコーダは、VLIWに含まれる基本演算を復号し、それぞれを対応するプロセッサデータパス素子に発行する。代替的には、VLIWプロセッサは命令デコーダを持たず、VLIWに含まれる演算はそれぞれ対応するプロセッサデータパス素子に直接的に発行される。この後に、これらのプロセッサデータパス素子は、前記VLIWの演算を並列に実行する。命令レベル並列性(ILP)とも称されるこの種の並列性は、例えばメディア処理で見つけられることができるような多数の同一の計算を含むアプリケーションに特に適している。例えばサーボ制御を目的とする、より多くの制御指向演算を有する他のアプリケーションは、VLIWプログラムとしてプログラムするのに適していない。しかしながら、しばしばこれらの種類のプログラムは、互いに独立に実行されることができる複数のプログラムスレッドにリデュースされることができる。このようなスレッドの並列の実行は、スレッドレベル並列性(TLP)とも称される。しかしながら、VLIWプロセッサは、スレッドレベル並列性を使用してプログラムを実行するのに適していない。後者のタイプの並列性の利用には、プロセッサデータパス素子のサブセットが独立な制御フローを有する、即ち互いに独立なシーケンスで特有のプログラムにアクセスすることができ、例えば条件付き分岐を独立に実行することができることを必要とする。しかしながらVLIWプロセッサにおけるデータパス素子は、全て同じ順番で命令のシーケンスを実行する。前記VLIWプロセッサは、したがって、1つのスレッドのみを実行することができる。
VLIWプロセッサのデータパイプラインにおいて演算を制御するために、2つの異なる機構、即ちデータ静止(data-stationary)及び時間静止(time-stationary)が一般に使用される。データ静止符号化の場合、前記プロセッサの命令セットの一部である命令は、前記データパイプラインを横断(traverse)しながら、特定のデータアイテムに関して実行されなければならない演算の完全なシーケンスを制御する。一度前記命令がプログラムメモリから取り出され、且つ復号されると、プロセッサコントローラハードウェアは、含まれる演算が正しいマシンサイクルで実行されることを確認する。時間静止符号化の場合、前記プロセッサの命令セットの一部である命令は、単一のマシンサイクルで実行されなければならない演算の完全なセットを制御する。これらの演算は、前記データパイプラインを横断する複数の異なるデータアイテムに対して使用されることができる。この場合、前記データパイプラインを設定し、維持するのは、プログラマ又はコンパイラの責任である。結果として生じるパイプラインスケジュールは、マシンコードプログラムにおいて完全に見ることができる。時間静止符号化は、大きなコードサイズを犠牲にして、前記命令に存在する制御情報を表示するのに必要なハードウェアのオーバーヘッドを減じる(save)ので、しばしばアプリケーション固有プロセッサで使用される。
本発明の目的は、アプリケーションの実行中に、命令レベル並列性及びスレッドレベル並列性の両方、又は両方の組み合わせを利用することができるプロセッサを提供することである。
この目的のため、本発明によるプロセッサは複数の処理素子を有し、前記複数の処理素子が、処理素子の第1セット及び少なくとも処理素子の第2セットを有し、
前記第1セットの各処理素子が、レジスタファイルと、少なくとも1つの機能ユニット(functional unit)を有する少なくとも1つの命令発行スロットとを有し、前記処理素子が、共通の制御スレッド(thread of control)下で命令を実行するように構成され、
前記第2セットの各処理素子が、レジスタファイルと、複数の命令発行スロットとを有し、各命令発行スロットが少なくとも1つの機能ユニットを有し、前記処理素子が、共通の制御スレッドの下で命令を実行するように構成され、
前記第2セットの前記処理素子内の命令発行スロットの数が前記第1セットの前記処理素子における命令発行スロットの数より高く、
前記処理システムが更に、前記複数の処理素子の処理素子間で通信するように構成されたプロセッサ間通信手段を有する。計算手段は、加算器、乗算器、例えばAND、OR、XOR等のような論理演算を実行する手段、ルックアップテーブル演算、メモリアクセス等を有することができる。
本発明によるプロセッサは、アプリケーションにおける命令レベル並列性及びスレッドレベル並列性の両方及び両方の組み合わせを利用することを可能にする。プログラムが高い命令レベル並列性を持つ場合、このアプリケーションは、前記処理素子の第2セットの1以上の処理素子にマッピングされることができる。これらの処理素子は、1つの制御スレッドの下で複数の命令の並列の実行を可能にする複数の発行スロットを持ち、したがって命令レベル並列性を利用するのに適している。プログラムが高いスレッドレベル並列性を持つが、低い命令レベル並列性を持つ場合、このアプリケーションは、前記処理素子の第1セットの処理素子にマッピングされることができる。これらの処理素子は、1つの制御スレッドの下で一連の命令のほとんど順次的な実行を可能にする比較的少数の発行スロットを持つ。各スレッドをこのような処理素子にマッピングすることにより、複数の制御スレッドが並列に存在することができる。プログラムが高いスレッドレベル並列性を持ち、1以上のスレッドが高い命令レベル並列性を持つ場合には、このアプリケーションは、前記処理素子の第1セット及び前記処理素子の第2セットの処理素子の組み合わせにマッピングされることができる。前記第1セットの処理素子は、主に順次的な一連の命令からなるスレッドの実行を可能にし、前記第2セットの処理素子は、並列に実行されることができる命令を持つスレッドの実行を可能にする。結果として、本発明による前記プロセッサは、実行されなければならないアプリケーションのタイプに応じて、命令レベル並列性及びスレッドレベル並列性の両方を利用することができる。
Proc. of Supercomputing 1990、第910−919頁のColwell他による“Architecture and Implementation of a VLIM Supercomputer”は、それぞれ対応するコントローラにより独立に制御される2つの14演算幅プロセッサ(14-operations-wide processor)、又は1つのコントローラにより制御される1つの28演算幅プロセッサのいずれかとして構成されることができるVLIWプロセッサを記載している。欧州特許公開公報EP0962856は、複数のプログラムカウンタを含み、第1モード又は第2モードのいずれかで選択的に動作する超長命令語プロセッサを記載している。前記第1モードにおいて、このデータプロセッサは、単一の命令ストリームを実行する。前記第2モードにおいて、前記データプロセッサは、2つの独立なプログラム命令ストリームを同時に実行する。この文書は、しかしながら、命令レベル並列性の無いものから高い命令レベル並列性を持つものまで多様なスレッドを並列に実行する複数の処理素子を持つプロセッサアレイの原理も、いかにしてこのようなプロセッサアレイが実現されることができるかも開示されていない。
本発明の実施例は、前記複数の処理素子の前記処理素子がネットワーク内に構成され、前記第1セットの処理素子が、前記プロセッサ間通信手段を介して前記第2セットのみの処理素子と直接的に通信するように構成され、前記第2セットの処理素子が、前記プロセッサ間通信手段を介して前記第1セットのみの処理素子と直接的に通信するように構成されることを特徴とする。実際のアプリケーションにおいて、高い命令レベル並列性を持つ機能(function)と、低い命令レベル並列性を持つ機能とは、交互に配置される(interleaved)。第1タイプの処理素子と第2タイプの処理素子とが同様に交互に配置されたアーキテクチャを選択することにより、前記処理システムへの前記アプリケーションの効率的なマッピングが可能にされる。
本発明の実施例は、前記プロセッサ間通信手段が、データ駆動同期通信手段を有することを特徴とする。前記処理素子全体の通信を管理するためにデータ駆動同期機構を使用することにより、データが通信中に失われないことが保証されることができる。
本発明の実施例は、前記複数の処理素子の前記処理素子が、前記プロセッサ間通信手段によりバイパスされるように構成されることを特徴とする。この実施例の利点は、前記アプリケーションの前記処理システムへのマッピングの適応性を増すことである。前記アプリケーションの命令レベル並列性及びタスクレベル並列性の程度に応じて、1以上の処理素子が、前記アプリケーションの実行中に使用されない可能性がある。
本発明の他の実施例は、従属請求項に記載される。本発明によると、前記処理システムをプログラムする方法、及びコンピュータシステム上で実行された場合に前記処理システムをプログラムする方法の全てのステップを実施するように構成されたコンパイラプログラムも同様に請求項に記載されている。
図1は、本発明による処理システムを概略的に示す。前記処理システムは、処理素子の第1セットPE1−PE15及び処理素子の第2セットPE17−PE23を有する複数の処理素子PE1−PE23を有する。前記処理素子は、データパス接続DPCを介してデータを交換することができる。図1に示された好適な実施例において、前記処理素子は、前記第1セットの2つの処理素子の間に前記第2セットの1つの処理素子が存在し、その逆も同じであるように構成され、前記データパス接続は近接している処理素子の間でデータ交換を行う。近接していない処理素子は、相互に近接している処理素子のチェーンを介して転送することによりデータを交換することができる。代替的には、又はこれに加えて、前記プロセッサシステムは、前記複数の処理素子のサブセットに及ぶ1以上のグローバルバス、又は処理素子の対の間のポイントツーポイント(point-to-point)接続を有してもよい。代替的には、前記処理システムは、より多い又はより少ない処理素子を有してもよく、又は異なるセット内の処理素子が異なる数の発行スロットを有し、したがってセット毎に異なるレベルの命令レベル並列性をサポートするような2より多い異なるセットの処理素子を有してもよい。
図2は、前記処理素子の第2セットPE17−PE23の1つの処理素子の例を詳細に示す。前記処理素子の第2セットの各処理素子は、2以上の発行スロット(IS)及び1以上のレジスタファイル(RF)を有し、各発行スロットは、1以上の機能ユニットを有する。図2の前記処理素子は、5つの発行スロットIS1−IS5、及び6つの機能ユニット、即ち2つの算術及び論理ユニット(ALU)と、2つの乗算累積ユニット(MAC)と、1つのアプリケーション固有ユニット(ASU)と、1つのロード/記憶ユニット(LD/ST)とを有する。前記処理素子は、5つのレジスタファイルRF1−RF5をも有する。発行スロットIS1は、2つの機能ユニット、即ち1つのALU及び1つのMACを有する。共通の発行スロット内の機能ユニットは、レジスタファイルからの読み出しポート及び相互接続ネットワークINに対する書き込みポートを共有する。代替実施例において、第2相互接続ネットワークが、レジスタファイルと演算発行スロットとの間で使用されることができる。1つの発行スロット内の機能ユニットは、当該発行スロットに関連付けられた少なくとも1つのレジスタファイルに対するアクセスを持つ。図2において、各発行スロットに関連付けられた少なくとも1つのレジスタファイルが存在する。代替的には、1より多い発行スロットが、単一のレジスタファイルに接続されることができる。更に他の可能性は、複数の独立なレジスタファイル、例えば当該発行スロット内の機能ユニットのそれぞれ別の読み出しポートに対する1つの異なるRFが、単一の発行スロットに接続されることができる。異なる処理素子の間のデータパス接続DPCは、好ましくは、処理素子全体の通信がメモリトランザクションとして管理されることができるように、それぞれの処理素子内のロード/記憶ユニット(LD/ST)から駆動される。好ましくは、異なるロード/記憶ユニット(LD/ST)が、前記処理素子を他の処理素子に接続する異なるデータパス接続(DPC)と関連付けられて使用される。このようにして、前記処理素子が例えば4つの他の処理素子に直接的に接続される場合に、4つの異なるロード/記憶ユニットが、好ましくはこれらの処理素子と通信するために使用され、これは図2に示されていない。加えて、他のロード/記憶ユニットが、処理素子のデータパスに追加され、前記処理素子に対するローカル又はシステムレベルメモリのいずれかのデータメモリ(例えばRAM)に関連付けられることができ、これは図2に示されていない。前記機能ユニットは、命令メモリIMに対するアクセスを持つコントローラCTにより制御される。プログラムカウンタPCは、命令メモリIM内の現在の命令アドレスを決定する。前記現在のアドレスにより示された命令は、まず前記コントローラ内の内部命令レジスタIRにロードされる。次いでコントローラCTは、命令レジスタIRに記憶された命令により示された演算を実行するようにデータパス素子(機能ユニット、レジスタファイル、相互接続ネットワーク)を制御する。こうするために、前記コントローラは、オペコードバスOBを介して前記機能ユニットと通信して、例えば前記機能ユニットにオペレーションコードを提供し、アドレスバスABを介して前記レジスタファイルと通信して、例えば前記レジスタファイル内のレジスタを読み出す及び書き込むアドレスを提供し、ルーティングバスRBを介して相互接続ネットワークINと通信して、例えば相互接続マルチプレクサにルーティング情報を提供する。前記第2セットの処理素子は、複数の発行スロットを有し、これは1スレッド内の命令レベル並列性を利用することを可能にする。例えば、高速フーリエ変換、離散コサイン変換及び有限インパルス応答フィルタのような内在する命令レベル並列性を持つアプリケーション機能は、前記第2セットの処理素子にマッピングされることができる。
図3は、前記処理素子の第1セットPE1−PE15の1つの処理素子の例を詳細に示す。前記処理素子の第1セットの1つの処理素子は、前記処理素子の第2セットの処理素子と比較して比較的少数の発行スロットを有する。前記第1セットの1つの処理素子は、更に1以上のレジスタファイル及び1つのコントローラを有する。前記発行スロットは、1以上の機能ユニット、例えば算術及び論理ユニット、乗算累積ユニット又はアプリケーション固有ユニットを有する。図3の前記処理素子は、2つの発行スロットIS6及びIS7並びに2つのレジスタファイルRF6及びRF7を有する。発行スロットIS6は、2つの機能ユニット、即ちALU及びMACを有する。共通の発行スロット内の機能ユニットは、レジスタフィルタからの読み出しポート及び相互接続ネットワークINに対する書き込みポートを共有する。発行スロットIS7は、前記処理素子を他の処理素子に接続するデータパス接続(DPC)を駆動するロード/記憶ユニット(LD/ST)を有する。好ましくは、異なるロード/記憶ユニット(LD/ST)が、前記処理素子を他の処理素子に直接的に接続するデータパス接続(DPC)に関連して使用される。このようにして、前記処理素子が例えば4つの他の処理素子に直接的に接続される場合に、4つの異なるロード/記憶ユニットは、好ましくはこれらの処理素子と通信するために使用され、これは図3に示されていない。加えて、更にロード/記憶ユニット(LD/ST)は、処理素子のデータパスに追加され、前記処理素子に対するローカル又はシステムレベルメモリのいずれかのデータメモリ(例えばRAM)に関連付けられることができ、これは図3に示されていない。代替実施例において、第2相互接続ネットワークがレジスタファイルと演算発行スロットとの間で使用されることができる。1つの発行スロット内の機能ユニットは、当該発行スロットに関連付けられた少なくとも1つのレジスタファイルに対するアクセスを持つ。図3において、発行スロットIS6に関連付けられた1つのレジスタファイルと、発行スロットIS7に関連付けられた他のレジスタファイルとが存在する。代替的には、独立なレジスタファイル、例えば前記発行スロット内の1つの機能ユニットのそれぞれ別の読み出しポートに対する1つの異なるRFが、前記発行スロットに接続される。前記機能ユニットは、命令メモリIMに対するアクセスを持つコントローラCTにより制御される。プログラムカウンタPCは、命令メモリIM内の現在の命令アドレスを決定する。前記現在のアドレスにより示された命令は、まず前記コントローラ内の内部命令レジスタIRにロードされる。次いでコントローラCTは、命令レジスタIRに記憶された命令により示された演算を実行するようにデータパス素子(機能ユニット、レジスタファイル、相互接続ネットワーク)を制御する。こうするために、前記コントローラは、オペコードバスOBを介して前記機能ユニットに通信して、例えば前記機能ユニットにオペレーションコードを提供し、アドレスバスABを介して前記レジスタファイルに通信して、例えば前記レジスタファイル内のレジスタを読み出す及び書き込むアドレスを提供し、ルーティングバスRBを介して相互接続ネットワークに通信して、例えば相互接続マルチプレクサにルーティング情報を提供する。前記第1セットの処理素子は、比較的少数の発行スロットを有し、したがって内在的に順次的な機能、例えばハフマンコーディング(Huffman coding)を計算するのに適している。
図4は、処理素子間のデータパス接続DPCの例を詳細に示す。好適な実施例において、前記データパス接続は、処理素子間の通信中にデータが失われるのを防ぐために、データ駆動同期機構を使用する。図4に示される処理素子PE2とPE4との間のデータパス接続は、2つのブロッキング先入れ先出し(FIFO)バッファBFを有する。FIFOバッファBFは、制御信号hold_w及びhold_rにより制御される。処理素子PE2又はPE4が、満杯であるFIFOバッファBFにデータを書き込もうとする場合に、信号hold_wが駆動され、他の処理素子が当該FIFOバッファから少なくとも1つのデータ要素を読み出して当該FIFOバッファの記憶スペースを解放するまで、前記処理素子全体を停止する。前記解放の場合にhold_w信号が解除される。クロックゲーティング機構は、当該FIFOバッファが満杯である限り、hold_w信号を使用して、前記処理素子が満杯のFIFOバッファにデータを書き込むことを停止するために使用されることができる。処理素子PE2又はPE4が空のFIFOバッファから値を読み出そうとする場合には、hold_r信号が駆動され、他の処理素子が前記FIFOバッファに少なくとも1つのデータ要素を書き込むまで、前記処理素子全体を停止する。前記書き込みの瞬間にhold_r信号が解除され、停止されていた前記処理素子は、再び前記FIFOバッファからのデータの読み出しを開始することができる。クロックゲーティング機構は、当該FIFOバッファが空である限り、hold_r信号を使用して、処理素子が空のFIFOバッファからデータを読み出すのを停止するために使用されることができる。
好適な実施例において、両方のセット内の処理素子はVLIWプロセッサであり、ここで前記第2セットの処理素子は広いVLIWプロセッサ、即ち多くの発行スロットを有するVLIWプロセッサであり、前記第1セットの処理素子は狭いVLIWプロセッサ、即ち少数の発行スロットを有するVLIWプロセッサである。代替実施例において、前記第2セットの処理素子は、多くの発行スロットを有する広いVLIWプロセッサであり、前記第1セットの処理素子は、単一発行スロットの縮小命令セットコンピュータ(RISC)プロセッサである。多くの発行スロットを有する広いVLIWプロセッサは、当該プロセッサ上で実行されるスレッドにおける命令レベル並列性の利用を可能にし、単一発行スロットRISCプロセッサ、又は少数の発行スロットを有する狭いVLIWプロセッサは、順次的に一連の命令を効率的に実行するように設計されることができる。実際に、アプリケーションはしばしば並列に実行されることができる一連のスレッドを有し、幾つかのスレッドは命令レベル並列性が非常に貧しく、幾つかのスレッドは内在的に高い命令レベル並列性を持つ。このようなアプリケーションのコンパイル中に、前記アプリケーションは解析され、並列に実行されることができる異なるスレッドが識別される。更に、スレッド内の命令レベル並列性の程度も同様に決定される。このアプリケーションは、本発明により以下のように処理システムにマッピングされることができる。高い命令レベル並列性を持つスレッドは、前記広いVLIWプロセッサにマッピングされ、命令レベル並列性が非常に貧しいスレッド又は全く命令レベル並列性を持たないスレッドは、前記単一発行スロットRISCプロセッサ又は前記狭いVLIWプロセッサにマッピングされる。異なるスレッドの間の通信は、図1に示されるようにデータパス接続DPCにマッピングされる。結果として、前記アプリケーションの効率的な実行が可能にされ、即ち複数のスレッドが並列に実行され、同時にスレッド内の命令レベル並列性が利用されることができる。したがって、本発明による処理システムは、アプリケーション内のスレッドレベル並列性及び命令レベル並列性の両方を利用することができる。加えて、本発明は、スレッドの計算特性と、前記スレッドがマッピングされる前記処理素子の計算特性との間の適切な整合を可能にする利点を持つ。このようにして、ハフマン復号のような内在的に順次的な機能は、広いVLIWプロセッサにマッピングされて命令レベル並列性の欠如により役に立たないアーキテクチャリソースを無駄にすることはなく、代わりに計算パターンを適合する小さなRISCプロセッサにマッピングされ、前記広いVLIWプロセッサは他の機能に対して利用可能なまま残される。
図5は、図1に示された処理システムにより実行されなければならないアプリケーションのアプリケーショングラフを示す。図5を参照すると、前記アプリケーションは、5つのスレッドTA、TB、TC、TD及びTEを有する。これら5つのスレッドは、並列に実行されることができる。スレッドTA、TB、TC及びTEは、高い命令レベル並列性を持ち、スレッドTDは命令レベル並列性を持たない。前記スレッドは、データストリームDSを介してデータを交換し、これらのデータストリームは、データバッファDBによりバッファされる。前記処理システムに前記アプリケーションをマッピングする場合に、スレッドTA、TB、TC及びTEは、それぞれ処理素子PE17−PE23の1つにマッピングされ、スレッドTDは、処理素子PE1−PE15の1つにマッピングされる。1つの代替例は、スレッドTAを処理素子PE17に、スレッドTBを処理素子PE19に、スレッドTCを処理素子PE21に、スレッドTDを処理素子PE15に、及びスレッドTEを処理素子PE23にマッピングすることである。この場合、スレッドTC、TD及びTEは、データパス接続DPCを介して直接的に接続されている処理素子にマッピングされる、即ち処理素子PE21は処理素子PE15と直接的に通信し、処理素子PE15は処理素子PE23と直接的に通信する。処理素子PE17は、それぞれPE7及びPE9を介して間接的にPE17に結合されている処理素子PE19及びPE21と通信しなければならないので、スレッドTA及びTBに対しては、これは当てはまらない。同様に、処理素子PE19は、PE11を介してPE19に間接的に結合された処理素子PE23と通信しなければならない。これらの場合、処理素子PE7、PE9及びPE11は、前記処理素子の間の直接的な通信を可能にするためにバイパスされることができる。データストリームDSはデータパス接続DPCにマッピングされ、データバッファDBは、図4に示されたFIFOバッファBFにマッピングされる。異なる実施例において、前記アプリケーショングラフは、より多くの又はより少ないスレッドを有してもよく、高い命令レベル並列性を持つスレッドと低い命令レベル並列性を持つスレッドとの間の異なる比を有してもよい。
図1に示された好適な実施例において、前記第1セットの前記処理素子及び前記第2セットの前記処理素子が交互に配置され、即ち前記第1セットの1つの処理素子は、前記第2セットのみの1つの処理素子と直接的に通信するように構成され、前記第2セットの1つの処理素子は、前記第1セットのみの1つの処理素子と直接的に通信するように構成される。結果として、異なる処理素子で実行する2つのスレッドの間の通信に対して1より多いバイパスされた処理素子の不利益は全く存在しない。
利用されることができる命令レベル並列性及びスレッドレベル並列性の程度は、アプリケーションごとに異なり、各スレッドが高い命令レベル並列性を持ち、低いスレッドレベル並列性を持つアプリケーションから、各スレッドが命令レベル並列性を持たず、高いスレッドレベル並列性を持つアプリケーションまで異なる。図1に示された処理システムの適応性は、スレッドがマッピングされることができない処理素子をバイパスすることにより、アプリケーションの全範囲を前記処理システムにマッピングすることを可能にする。
図2を参照すると、相互接続ネットワークINが完全に接続されたネットワークであり、即ち全ての機能ユニットが全てのレジスタファイルRF1、RF2、RF3、RF4及びRF5に結合される。代替的には、相互接続ネットワークINは部分的に接続されたネットワークであり、即ち全ての機能ユニットが全てのレジスタファイルに結合されているわけではない。多数の機能ユニットの場合、完全に接続されたネットワークのオーバーヘッドは、シリコン面積及び電力消費に関して考慮されるべきである。前記VLIWプロセッサの設計中に、前記処理システムにより実行されなければならないアプリケーションの範囲に応じて、前記機能ユニットがレジスタファイルセグメントに結合される程度が決定される。
図2を再び参照すると、前記処理素子は、分散されたレジスタファイル、即ちレジスタファイルRF1、RF2、RF3、RF4及びRF5を有する。代替的には、前記処理素子は、全ての機能ユニットに対して単一のレジスタファイルを有してもよい。VLIWプロセッサの機能ユニットの数が比較的小さい場合には、単一のレジスタファイルのオーバーヘッドも同様に比較的小さい。
代替実施例において、前記第2セットの前記処理素子は、スーパースカラプロセッサを有する。スーパースカラプロセッサは、VLIWプロセッサの場合のように並列に複数の演算を実行することができる複数の実行ユニットを有する。しかしながら、プロセッサハードウェア自体は、リソース競合が生じないことを保証しながら、どのような演算依存性が存在するかを実行時間において決定し、これらの依存性に基づいてどの演算を並列に実行するかを決定する。このセクションに記載されたVLIWプロセッサに対する実施例の原理は、スーパースカラプロセッサにも当てはまる。一般に、VLIWプロセッサは、スーパースカラプロセッサと比較してより多くの実行ユニットをもつことができる。VLIWプロセッサのハードウェアは、スーパースカラプロセッサと比較してより複雑でなく、この結果としてより良いスケーラブルアーキテクチャを生じる。実行ユニットの数及び各実行ユニットの複雑性は、特に、本発明を使用して達成されることができる利点の量を決定する。
本発明による処理システムの他の実施例において、前記処理システムは、図1に示された前記処理システムより多い又は少ない処理素子を有することができる。代替的に、前記処理素子は、異なって構成されてもよく、例えば1次元ネットワークに構成されてもよく、又は交互配置ではない形式に構成されてもよく、即ち前記第1セットの2つの処理素子の間に前記第2セットの1より多い処理素子が配置され、その逆も同様である。前記処理システムのアーキテクチャは、前記処理システム上で実行されることが期待されるアプリケーションの範囲、例えばアプリケーションの範囲が命令レベル並列性の量に対して持つスレッドレベル並列性の量に依存してもよい。
上述の実施例は本発明を制限するのではなく説明し、当業者が添付の請求項の範囲から外れることなく多くの代替実施例を設計することができることに注意すべきである。請求項において、括弧の間に配置された参照符号は、前記請求項を制限するように解釈されるべきでない。単語“有する”は、請求項にリストされた要素又はステップ以外の要素又はステップの存在を除外しない。要素に先行する単語“1つの”は、複数のこのような要素の存在を除外しない。複数の手段を列挙する装置請求項において、これらの手段の幾つかは、ハードウェアの同一アイテムにより実施されることができる。特定の方策が相互に異なる従属請求項に記載されているという単なる事実は、これらの方策の組合せが有利に使用されることができないことを示さない。
本発明による処理システムの概略図を示す。 処理素子の第2セットの1つの処理素子の例を詳細に示す。 処理素子の第1セットの1つの処理素子の例を詳細に示す。 処理素子間のデータパス接続の例を詳細に示す。 本発明による処理システムにより実行されるべきアプリケーションのアプリケーショングラフを示す。

Claims (11)

  1. 複数の処理素子を有する処理システムであって、前記複数の処理素子が、処理素子の第1セット及び少なくとも処理素子の第2セットを有し、
    前記第1セットの各処理素子が、1つのレジスタファイル及び少なくとも1つの命令発行スロットを有し、前記命令発行スロットが、少なくとも1つの機能ユニットを有し、前記処理素子が、共通の制御スレッドの下で命令を実行するように構成され、
    前記第2セットの各処理素子が、1つのレジスタファイル及び複数の命令発行スロットを有し、各命令発行スロットが、少なくとも1つの機能ユニットを有し、前記処理素子が、共通の制御スレッドの下で命令を実行するように構成され、
    前記第2セットの前記処理素子内の命令発行スロットの数が、前記第1セットの前記処理素子内の命令発行スロットの数より高く、
    前記処理システムが更に、前記複数の処理素子の処理素子の間で通信するように構成されたプロセッサ間通信手段を有する、
    処理システム。
  2. 前記複数の処理素子の前記処理素子は、前記第1セットの処理素子が前記プロセッサ間通信手段を介して前記第2セットのみの処理素子と直接的に通信するように、かつ前記第2セットの処理素子が前記プロセッサ間通信手段を介して前記第1セットのみの処理素子と直接的に通信するようにネットワーク内に構成されることを特徴とする、請求項1に記載の処理システム。
  3. 前記処理素子の第2セットの処理素子内で組織化された前記複数の発行スロットが、命令実行を制御する少なくとも1つの共通の制御信号を共用することを特徴とする、請求項1に記載の処理システム。
  4. 前記処理素子の第1セットの前記処理素子が、サイクルごとに1つの演算のみを発行するように構成されることを特徴とする、請求項1に記載の処理システム。
  5. 前記処理素子の第2セットの前記処理素子が、超長命令語プロセッサであり、前記レジスタファイルが、対応する前記機能ユニットにより前記処理素子にアクセス可能であり、前記処理素子が更に、前記レジスタファイル及び対応する前記機能ユニットを結合するローカル通信ネットワークを有することを特徴とする、請求項1に記載の処理システム。
  6. 前記処理素子の第1セットの前記処理素子が、超長命令語プロセッサであり、前記レジスタファイルが、対応する前記機能ユニットにより前記処理素子にアクセス可能であり、前記処理素子が更に、前記レジスタファイル及び対応する前記機能ユニットを結合するローカル通信ネットワークを有することを特徴とする、請求項1に記載の処理システム。
  7. 1つの処理素子に対応する前記レジスタファイルが、分散型レジスタファイルであることを特徴とする、請求項5又は6に記載の処理システム。
  8. 1つの処理素子に対応する前記ローカル通信ネットワークが、部分的に接続された通信ネットワークであることを特徴とする、請求項5又は6に記載の処理システム。
  9. 前記プロセッサ間通信手段が、データ駆動同期通信手段を有することを特徴とする、請求項1に記載の処理システム。
  10. 前記データ駆動同期通信手段が、ブロッキング先入れ先出しバッファを有することを特徴とする、請求項9に記載の処理システム。
  11. 前記複数の処理素子の前記処理素子が、前記プロセッサ間通信手段によりバイパスされるように構成されることを特徴とする、請求項1に記載の処理システム。
JP2006506823A 2003-04-15 2004-04-08 Ilp及びtlpを利用する再構成可能なプロセッサアレイ Expired - Lifetime JP4589305B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03101016 2003-04-15
PCT/IB2004/050410 WO2004092949A2 (en) 2003-04-15 2004-04-08 Processing system with instruction-and thread-level parallelism

Publications (2)

Publication Number Publication Date
JP2006523883A JP2006523883A (ja) 2006-10-19
JP4589305B2 true JP4589305B2 (ja) 2010-12-01

Family

ID=33185922

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006506823A Expired - Lifetime JP4589305B2 (ja) 2003-04-15 2004-04-08 Ilp及びtlpを利用する再構成可能なプロセッサアレイ

Country Status (8)

Country Link
US (1) US20060212678A1 (ja)
EP (1) EP1623318B1 (ja)
JP (1) JP4589305B2 (ja)
KR (1) KR20050123163A (ja)
CN (1) CN1833222A (ja)
AT (1) ATE459042T1 (ja)
DE (1) DE602004025691D1 (ja)
WO (1) WO2004092949A2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003283777A1 (en) * 2002-12-30 2004-07-22 Koninklijke Philips Electronics N.V. Processing system
US7620796B2 (en) * 2006-01-13 2009-11-17 Broadcom Corporation System and method for acceleration of streams of dependent instructions within a microprocessor
JP4784827B2 (ja) 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
US8478967B2 (en) * 2009-06-01 2013-07-02 National Instruments Corporation Automatically creating parallel iterative program code in a data flow program
CN102207892B (zh) * 2011-05-27 2013-03-27 清华大学 一种动态可重构处理器内子单元间进行同步的方法
KR101929754B1 (ko) 2012-03-16 2018-12-17 삼성전자 주식회사 미니 코어 기반의 재구성가능 프로세서, 이를 위한 스케줄 장치 및 방법
US9715392B2 (en) * 2014-08-29 2017-07-25 Qualcomm Incorporated Multiple clustered very long instruction word processing core
KR102277439B1 (ko) 2014-10-21 2021-07-14 삼성전자주식회사 재구성 가능 프로세서 및 그 동작 방법
US9830150B2 (en) * 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10185568B2 (en) 2016-04-22 2019-01-22 Microsoft Technology Licensing, Llc Annotation logic for dynamic instruction lookahead distance determination
US10846091B2 (en) 2019-02-26 2020-11-24 Apple Inc. Coprocessor with distributed register

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3623840B2 (ja) * 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
US7051329B1 (en) * 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
AU2001245520A1 (en) 2000-03-08 2001-09-17 Sun Microsystems, Inc. Vliw computer processing architecture having a scalable number of register files

Also Published As

Publication number Publication date
JP2006523883A (ja) 2006-10-19
WO2004092949A3 (en) 2006-03-30
US20060212678A1 (en) 2006-09-21
EP1623318B1 (en) 2010-02-24
DE602004025691D1 (de) 2010-04-08
KR20050123163A (ko) 2005-12-29
CN1833222A (zh) 2006-09-13
WO2004092949A2 (en) 2004-10-28
ATE459042T1 (de) 2010-03-15
EP1623318A2 (en) 2006-02-08

Similar Documents

Publication Publication Date Title
US20230106990A1 (en) Executing multiple programs simultaneously on a processor core
JP2918631B2 (ja) デコーダ
US7363467B2 (en) Dependence-chain processing using trace descriptors having dependency descriptors
CA2788263C (en) A tile-based processor architecture model for high-efficiency embedded homogeneous multicore platforms
US7904702B2 (en) Compound instructions in a multi-threaded processor
US5764943A (en) Data path circuitry for processor having multiple instruction pipelines
EP1148414B1 (en) Method and apparatus for allocating functional units in a multithreaded VLIW processor
US20070283356A1 (en) Multi-threaded processor with deferred thread output control
US20080046689A1 (en) Method and apparatus for cooperative multithreading
US8176478B2 (en) Process for running programs on processors and corresponding processor system
WO2000033183A9 (en) Method and structure for local stall control in a microprocessor
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
JP4589305B2 (ja) Ilp及びtlpを利用する再構成可能なプロセッサアレイ
US7484075B2 (en) Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files
US9201657B2 (en) Lower power assembler
WO2022126621A1 (zh) 零缓冲流水的可重构处理单元阵列及零缓冲流水方法
JP2861234B2 (ja) 命令処理装置
JP2004287919A (ja) 演算装置及び制御装置及び演算処理装置及び演算方法及び演算プログラム
JPH11272465A (ja) パイプライン制御型計算機
CA2751388A1 (en) Method and system for mutli-mode instruction-level streaming

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090526

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090825

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091224

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100323

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100623

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4589305

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130917

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250