JP2009530924A - 再構成可能なマルチ処理粗粒アレイ - Google Patents

再構成可能なマルチ処理粗粒アレイ Download PDF

Info

Publication number
JP2009530924A
JP2009530924A JP2009500674A JP2009500674A JP2009530924A JP 2009530924 A JP2009530924 A JP 2009530924A JP 2009500674 A JP2009500674 A JP 2009500674A JP 2009500674 A JP2009500674 A JP 2009500674A JP 2009530924 A JP2009530924 A JP 2009530924A
Authority
JP
Japan
Prior art keywords
signal processing
processing device
application
code
thread
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.)
Granted
Application number
JP2009500674A
Other languages
English (en)
Other versions
JP2009530924A5 (ja
JP5270529B2 (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.)
Interuniversitair Microelektronica Centrum vzw IMEC
Original Assignee
Interuniversitair Microelektronica Centrum vzw IMEC
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 Interuniversitair Microelektronica Centrum vzw IMEC filed Critical Interuniversitair Microelektronica Centrum vzw IMEC
Publication of JP2009530924A publication Critical patent/JP2009530924A/ja
Publication of JP2009530924A5 publication Critical patent/JP2009530924A5/ja
Application granted granted Critical
Publication of JP5270529B2 publication Critical patent/JP5270529B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

マルチ処理法で少なくとも2つの処理スレッドを同時処理するよう調整された信号処理デバイスである。デバイスはデータに関しワードレベル又はサブワードレベルの動作を実行する複数ファンクションユニットと、複数ファンクションユニットを相互接続する手段であって、動的スイッチされ複数相互接続構成をサポートし少なくとも一つの相互接続構成が複数ファンクションユニットを夫々所定のトポロジを備える少なくとも2つの非オーバーラップの処理ユニット中に相互接続する手段を含み、信号処理デバイスは更に個々の制御モジュールが処理ユニットの一つに割り当てられる少なくとも2つの制御モジュールを含む。本発明は更に信号処理デバイスでアプリケーション実行する方法、信号処理デバイスで実行されるコンパイルコードを取得しアプリケーションが信号処理デバイスで実行される方法を最適化するべくアプリケーションソースコードをコンパイルする方法を示す。

Description

本発明は、マルチプロセス若しくはマルチスレッド方式で少なくとも2つのスレッドを同時に処理するのに適用される信号処理デバイス、その信号処理デバイスでアプリケーションを実行する方法、その信号処理デバイスで実行可能なコンパイルされたコードを取得するためにアプリケーションソースコードをコンパイルする方法、アプリケーションを調整してその信号処理デバイスで実行させる方法、その信号処理デバイスでアプリケーションを実行する方法のいずれかを実行するコンピュータプログラムプロダクト、そのコンピュータプログラムプロダクトを格納する機械読み取り可能データストレージデバイス、及び、ローカルエリア若しくはワイドエリアの遠隔通信ネットワークにおけるそのコンピュータプログラムプロダクトの転送に、関する。
今日、標準的埋込式システムは、実行時間時のビデオエンコード/デコードなどのタスクを実施する高いパフォーマンスを要求する。その標準的埋込式システムは、軽量バッテリを利用して何時間も更には何日間も稼動できるように、あまりエネルギを消費しないものであるべきである。それは、一つのデバイス内に多重アプリケーション若しくはスタンダードを十分に統合できるような可撓性を備えるべきである。それは、実質的には複雑さが増大するにも拘わらず、短い商品化時間で設計され確認されねばならない。設計者は奮闘してこれらの挑戦に応じるのであるが、アーキテクチャと設計方法論の両方の革新が要求される。
G.M.Amdahlによる"Validity of the single processor approach to achieve large−scale computing capabilities",Proc.AFIPS Spring Joint Computer Conf. 30,1967 Page(s):483−485 Iwataらによる"Exploiting Coarse−Grain Parallelism in the MPEG−2 Algorithm",Standford University Computer Systems Lab Technical Report CSL−TR−98−771,September 1998
粗粒再構成可能(Coarse−grained reconfigurable)アーキテクチャ(CGRA)は、上記挑戦に応じる潜在的な候補者として出現している。近年、多数のデザインが提案されている。これらのアーキテクチャは、数十から数百のファンクションユニット(FU)を含むことがしばしばであり、該ファンクションユニットは、通常のFPGAで見られるビットレベルのオペレーションの代わりにワードレベルのオペレーションを実行できる。この粗粒により、FPGAと比べて、遅延、エリア、電力、及び構成が、大きく減少する。一方で、従来の“粗粒の”プログラム可能プロセッサと比較すると、それらの大規模な計算機資源によりそれらは高度な並行処理及び効率を達成できる。しかしながら、主としてそのような複雑なアークテクチャのプログラミングの困難性のために、現存のCGRAは未だ広範には採用されていない。
第1の形態では、本発明は、マルチ処理法で少なくとも2つの処理スレッドを同時に処理するように調整された信号処理デバイスに関する。信号処理デバイスは、データに関してワードレベル若しくはサブワードレベルの動作を実行できる複数のファンクションユニットと、上記複数のファンクションユニットを相互接続するためのルーティングリソースであって、動的にスイッチされ得る複数の相互接続構成をサポートし、少なくとも一つの上記相互接続構成が上記複数のファンクションユニットを夫々所定のトポロジを備える少なくとも2つの非オーバーラップの処理ユニットの中に相互接続し、上記処理ユニットの各々が上記処理スレッドの夫々一つを処理するように構成されている、ルーティングリソースとを含む。上記相互接続構成の他方は、上記複数のファンクションユニットをシングル処理ユニットの中に相互接続できる。信号処理デバイスは、少なくとも2つの制御モジュールであって、個々の制御モジュールが制御のために上記処理ユニットの一つに割り当てられている、少なくとも2つの制御モジュールを、更に含む。ワードレベル若しくはサブワードレベルの動作により、非ビットレベルの動作を意味している。
上記ファンクションユニットが、少なくとも一つのファンクションユニットを含む所定の/静的なグルーピングでグループ化され、そのグルーピングの各々が処理ユニットを規定するということは、本発明の一つの形態である。
制御モジュールは、命令フェッチユニット及び制御ユニットを含んでもよい。上記制御モジュールは、それらに割り当てられた処理ユニット内部でワードレベル若しくはサブワードレベル(非ビットレベル)動作を制御するように調整される。
本発明の実施形態では、上記制御モジュールは、プログラムカウンタ上で動作(インクリメント、変更)を行い得る。相応のデバッギングをサポートしてもよい。
本発明の実施形態では、複数のデータストレージが設けられ、上記ルーティングリソースは、上記複数のファンクションユニットと上記複数のデータストレージを相互接続する。データストレージはレジスタでもよい。データストレージはレジスタでもよい。データストレージは、上記ファンクションユニット間で共有されてもよい。本発明の実施形態では、一つのデータストレージが個々の処理ユニットのために設けられてもよい。
本発明の実施形態に係る信号処理デバイスは、アプリケーションコードが格納されるデータストレージを含んでもよく、上記アプリケーションコードは少なくとも2つの処理スレッドを含む処理を規定し、上記処理ユニットにより実行される。上記ルーティングリソースは、上記アプリケーションコード内の所定のポイントで上記相互接続構成間で動的にスイッチするように調整されていてもよい。
本発明の実施形態に係る信号処理デバイスでは、上記ルーティングリソースが、稼働中のアプリケーションのデータ内容に依存して相互接続構成を動的にスイッチするように調整されていてもよい。そのデータ内容は、例えば、スレッドの処理ユニットファンクションがマップされ得るパラメータファイル記述、若しくは、上記ファンクションユニットの一つのデータストレージ内の一若しくはそれ以上のビットのデータであってもよい。上記ルーティングリソースが、多重化及び/又は逆多重化回路を含んでもよい。信号処理デバイスは、クロックを有し、上記多重化及び/又は逆多重化回路が、相互接続構成を動的にスイッチするための適切な設定により構成されるように調整され、上記設定がクロック周期毎に変更し得るようにしてもよい。
本発明の実施形態に係る信号処理デバイスは、更に、複数のファンクションユニット間で共有される少なくとも一つのグローバルストレージを含んでもよい。
本発明の実施形態に係る信号処理デバイスは、少なくとも2つの異なるタイプのファンクションユニットを含んでもよい。
本発明の実施形態に係る信号処理デバイスでは、上記相互接続構成の少なくとも別の一つが、上記複数のファンクションユニットをシングル制御モジュールの制御下にあるシングル処理ユニット内に相互接続してもよい。
本発明の実施形態に係る信号処理デバイスでは、少なくとも2つの上記制御モジュールの少なくとも一つが、シングル処理ユニットを伴う相互接続構成で利用するグローバル制御ユニットの一部であってもよい。シングル処理ユニットを伴う少なくとも一つの相互接続構成にて、上記制御モジュールの少なくとも一つが、少なくとも一つの他の制御モジュールに追随させることによって、全ての上記ファンクションユニットの制御信号を駆動してもよい。
本発明の実施形態に係る信号処理デバイスは、利用される上記制御モジュール内で複数の非オーバーラップ処理ユニットを伴う相互接続構成の上記処理ユニットに割り当てられる上記制御モジュールの少なくとも一部を、シングル処理ユニットを伴う相互接続構成にて、再利用するように調整されていてもよい。
第2の形態では、本発明は、上述のような信号処理デバイスで少なくとも一つのアプリケーションを実行する方法に関する。アプリケーションは、シングル制御モジュールの制御下において、シングル処理スレッドとして信号処理デバイス上で通常実行される。
シングルスレッドアプローチとマルチスレッドアプローチの間でのスイッチングが適用される、少なくとも一つのアプリケーションを実行するための方法を示すことは、本発明の一つの形態であり、そのアプリケーションの一部は部分分割され、各々の部分は、予め定められた処理ユニットの一つの上で、独立の処理スレッドとして実行される。本発明の実施形態に係る方法は、上記信号処理デバイスを少なくとも2つの非オーバーラップ処理ユニットを伴うデバイスに動的にスイッチするステップと、上記アプリケーションの一部を少なくとも2つの処理スレッドに分割するステップとを含み、個々の処理スレッドは、上記処理ユニットの一つ上で独立の処理スレッドとして同時に実行され、個々の処理ユニットは、独立の制御モジュールにより制御される。
アプリケーションを実行するこのシングル若しくはマルチスレッドスイッチングは、信号処理デバイスの構成機能、特に統合モードでそれを操作する機能によりサポートされ、デバイスの全てのファンクションユニットは、制御の一つのスレッドで及び分割モードで動作し、シングル処理ユニット内部の全てのファンクションユニットは、制御の一つのスレッドで動作し、処理ユニット自身は制御の種々のスレッドで同時に動作する。
つまりそれ故に、信号処理デバイスは、複数のパーティションを含み、夫々は処理スレッドを独立して稼動できる。
その結果、個々の処理ユニット内部で、命令フローは、例えばコード内の分岐のために、別の処理ユニット内の命令フローから独立して、変化し得る。
複数のファンクションユニットを伴う信号処理デバイスを利用することにより、命令レベルの並行処理が可能であり、これらのファンクションユニットを構成して特徴的な処理ユニットにグルーピングすることにより、スレッドレベルの並行処理が可能である。グルーピングは動的に変更され得るので、マルチコアアプローチによるよりも、より可撓性を得られ得る。
上記機能は、上記2つ若しくはそれ以上の制御モジュールを設けることで実現される。上記制御モジュールの各々は制御のシングルスレッドを実行できる。
本発明の実施形態によると、上記信号処理デバイスを少なくとも2つの処理ユニットを伴うデバイスにスイッチするステップが、アプリケーションを決定するアプリケーションコード内の第1の命令により決定されてもよい。上記第1の命令が、上記独立の処理スレッドの各々の上記命令の開始アドレスを含んでもよい。開始アドレスは、命令が見出される位置の指標である。それは位置への直接言及でも位置へのポインタでもよい。ここで位置とは、例えば、レジスタ内部やデータストレージ内部である。
本発明の実施形態に係る方法は、更に、上記信号処理デバイスをシングル処理ユニットを伴うデバイスに動的にスイッチし戻すステップと、上記独立の制御モジュールを同期化させるステップと、上記アプリケーションの上記少なくとも2つのスレッドをシングル処理ユニットに結合するステップとを含み、上記シングル処理スレッドは、上記同期化された制御モジュールの制御下で上記シングル処理ユニット上で処理スレッドとして実行される。上記信号処理デバイスをシングル処理ユニットを伴うデバイスに動的にスイッチし戻すステップが、アプリケーションを決定するアプリケーションコード内の第2の命令により決定されてもよい。上記第2の命令が、上記シングル処理スレッドとして実行される上記命令の開始アドレスを含んでもよい。
本発明の実施形態によると、シングル処理スレッドとして上記アプリケーションを実行するとき、上記シングル制御モジュールが、上記独立の制御モジュールの少なくとも一つを再利用してもよい。
本発明の実施形態によると、シングル処理ユニットを伴う相互接続構成にて、上記独立の制御モジュールの一つが、他の制御モジュールに追随させることによって、全ての上記ファンクションユニットの制御信号を駆動してもよい。
第1の構成のパーティション間でのスイッチングにおいて、パーティションの幾つかはシングルスレッドとして共に実行され、他のパーティションは別のスレッド及び第2の構成のパーティションとして共に実行される方法にまで、このシングル若しくはマルチスレッドスイッチング方法が容易に拡張可能であることは、明白である。
この汎用のスイッチング方法は、デバイスの静的な所定の構成によりサポートされる、デバイスの動的なランタイムの再構成と、言い換えることができる。
上記信号処理デバイス上で少なくとも一つのアプリケーションを実行するための処理中の信号処理デバイスを動的に再構成するために、更に方法が提示され、上記信号処理デバイスは、データに関してワードレベル若しくはサブワードレベル(非ビットレベル)動作を実行することができる複数のファンクションユニットを含み、上記ファンクションユニットは、一つ又はそれ以上非オーバーラップの処理ユニットにグループ化され、ルーティングリソースは上記ファンクションユニットを相互接続し、上記アプリケーションは、少なくとも一部が少なくとも部分的に同時に実行可能である複数のスレッドとして設けられ、
上記方法は、
上記処理ユニットに対して一つ若しくはそれ以上のスレッドの第1の割り当てを行うことにより、上記計算の信号処理デバイスを構成するステップと、
上記構成後、上記一つ若しくはそれ以上のスレッドを同時に実行するステップであって、上記の実行されるスレッドの各々が上記第1の割り当てに係る上記処理ユニットの一つ若しくはそれ以上のものの上で実行されるステップと、
上記実行を終了するステップと、
上記処理ユニットに対して一つ若しくはそれ以上のスレッドの第2の、別の割り当てを行うことにより、上記信号処理デバイスを構成するステップと、
上記構成後、上記一つ若しくはそれ以上のスレッドを同時に実行するステップであって、上記の実行されるスレッドの各々が上記第2の割り当てに係る上記処理ユニットの一つ若しくはそれ以上のものの上で実行されるステップと
を含む。
大きいオーバーヘッドを回避するため、シングルスレッド処理のために用いられている制御モジュールは、個々の処理ユニットのために利用可能である、制御モジュールの少なくとも一部(更には全部)を再利用してもよい。
一つの実施形態では、この再利用は、パーティションの制御モジュールを同期化することにより実現され得る。つまり、個々の上記要素が同じ入力を利用しそれらの各々の出力を割り当てられたパーティションに分配するということである。
例えば、上記ファンクションユニットの間に多重化及び/又は逆多重化回路を設けることで、それらは柔軟に接続され得るということも注意すべきである。上記重化及び/又は逆多重化回路を設定することにより動的な再構成が実現され得る。この設定は周期から周期へと変更し得る。
本発明は更に、上述の信号処理デバイス上で実行されるコンパイルコードを取得するためにアプリケーションソースコードをコンパイルするための方法であって、特に、コードを分割するソースコードレベルに含まれる命令、及び、実行モード(例えば、統合及び分割モード)のスイッチングのため、コンパイルコード内に自動的に含まれる命令に対するものである。
この形態では、本発明は、上述の信号処理デバイス上で実行されるコンパイルコードを取得するためにアプリケーションソースコードをコンパイルするための方法に関する。方法は、アプリケーションソースコードを入力するステップと、上記アプリケーションソースコードからコンパイルコードを生成するステップとを含む。上記コンパイルコードを生成することが、コンパイルコード内に、マルチプル処理スレッドを同時に実行し且つ上記処理スレッドを同時に実行することを開始するように上記信号処理デバイスを構成する第1の命令と、上記マルチプル処理スレッドの最後のものがその命令をデコードするときに、上記信号処理デバイスが統合モードでの実行を継続するべく構成されるように、上記マルチプル処理スレッドの同時実行を終了させる第2の命令とを含む。この故に、コード自身により(動的に)構成は為され得る。
本発明の更なる形態では、上記信号処理デバイスのアーキテクチャ記述が設けられ、ファンクションユニットのグルーピングの記述を含む。実際、そのような信号処理デバイスは、一般的なテンプレートのインスタンスとして通常生成される。発明を記載すると、一般的なテンプレートは、一つ又はそれ以上の処理ユニットを形成してグループ毎に制御モジュールを設けるように、ファンクションユニットをグループ化し得ることを含む。
本発明の実施形態では、方法は、上記信号処理デバイスのアーキテクチャ記述を設けるステップを更に含み、上記アーキテクチャ記述が、処理ユニットを形成するファンクションユニットの所定の相互接続構成の記述を含む。アーキテクチャ記述を設けるステップが、処理ユニット毎に独立の制御モジュールを設けることを含み得る。
本発明の更なる形態は、コンパイル方法を設けることであり、アプリケーションソースコード及び上述のアーキテクチャ記述を入力するステップと、コンパイルコードを生成するステップとを含み、マルチプル処理スレッドを実行し且つ上記処理スレッドを実行することを開始するように上記信号処理デバイスを構成する(例えば、分岐を意味する)第1の命令と、上記マルチプルスレッドの実行を終了させる(例えば、結合を意味する)第2の命令とを含む。特に、上記第2の命令は、上記スレッドの最後のものがその命令をデコードするときに、上記信号処理デバイスが統合モードで継続するべく構成される、というものである。
本発明の実施形態では、上記第1の命令が、上記マルチプル処理スレッドの各々の命令の開始アドレスを含んでもよい。本発明の実施形態では、上記第2の命令が、上記マルチプル処理スレッドの実行の後に統合モードで実行される命令の開始アドレスを含んでもよい。
本発明の実施形態では、上記コンパイルコードを生成するステップが、上記アプリケーションソースコードを分割し、これによりコード分割を生成するステップと、どのモードで、及びどの処理ユニットで、コード分割が実行されるか分類するステップと、上記コード分割の各々を独立してコンパイルするステップと、上記コンパイルされたコード分割をシングル実行可能コードファイル内にリンクするステップとを含む。
本発明の更に別の形態は、コンパイル方法を設けることであって、該方法は、アプリケーションソースコードと上述のアーキテクチャ記述を入力するステップと、コードを分割しコードがどのように(統合/分割モード)どこで(どの処理要素で)実行され、コードの各々の独立したコンパイルを分離しコンパイルされたコードを実行可能なシングルにリンクするのかを、分類するステップとを含む。
本発明は更に環境の調整に関し、アプリケーションに対して、種々の分割の探査が行われ、上記環境の調整は、上記信号処理デバイスの種々の構成を探査するため、上記信号処理デバイスのアーキテクチャ記述のインスタンスを変更し得ることも含む。
本発明の特定の実施形態は、添付の請求項に設定される。独立請求項からの特徴は、従属請求項の特徴と、更に、適宜の他の独立請求項の特徴と組み合わせることができ、請求項に明白に記載されるものに限るものではない。
本発明の上記の及び他の特性、特徴及び利点は、例示に過ぎないが本発明の原理を示す添付の図面と関連させることで、以下の詳細な説明から明白となる。この記載は、例示のためのものであり、本発明の範囲を限定することなく為されている。以下に引用される符号は添付の図面を参照する。
本発明は、図面を参照しつつ特定の実施形態によって説明されているが、本発明はそれらに限定されるものではない。記載されている図面は概要に過ぎず限定的なものではない。図面では、例示の目的のため、幾つかの要素のサイズは誇張されており尺度によっては描かれていない。寸法及び相対的寸法は、本発明を実施するための現実の縮小に対応していない。
更に、明細書や請求項における、第1の、第2の、第3の、などの用語は、類似の要素間で区別をするのに利用しており、一連の若しくは登場順の順序を記載するのに利用しているというものでもない。当然のことながら、ここで利用する用語は適切な状況下では相互に交換可能であり、明細書等に記載の発明の実施形態は明細書等に記載の若しくは例示の順序とは異なる順序で、動作可能である。
更に、明細書及び図面内の、頂部、底部、を超えて、の下で、等の用語は、記載のために利用するものであり、必ずしも相対的位置のために利用するものではない。当然のことながら、かように利用する用語は適切な状況下では相互に交換可能であり、明細書等に記載の発明の実施形態は明細書等に記載の若しくは例示の向きとは異なる向きで、動作可能である。
注目すべきことは、請求項で利用される“含む”という用語は、それ以降に掲げられる手段に対して限定するように解釈されるべきではないということである。それは他の要素やステップを排除するものではない。それは、記載の通り、規定の特徴、整数、ステップ若しくは要素の存在を特定するように解釈されるべきであり、一つ又はそれ以上の別の特徴、整数、ステップ若しくは要素、又はそれらの組み合わせの存在若しくは付加を排除するものではない。従って、手段A及びBを含むデバイスという表記の範囲は、要素A及びBのみから構成されるデバイスに限定されるべきではない。
同様に注目すべきは、請求項でまた利用される“結合された”という用語は、直接的な結合のみに限定して解釈されるべきではないということである。従って、“デバイスBに結合するデバイスA”という表記の範囲は、デバイスAのアウトプットがデバイスBのインプットに直接に結合するようなデバイスやシステムに限定されるべきではない。AnoアウトプットとBのインプットの間に、他のデバイスや手段を含むパスであってもよいパスが存在することを意味する。
粗粒再構成可能アーキテクチャ(CGRA)、ADRES(動的再構成可能埋込システム)は周知であり、ベルギー国ルヴェン市のアンテルユニヴェシテール・ミクロ−エレクトロニカ・サントリュム・ヴェー・ゼッド・ドゥブルヴェにより製造されている。ADRESは、現存のCGRAの問題を対処するものである。ADRESアーキテクチャを参照しつつ本発明を説明する。しかしながら、これは限定を意図するものではない。本発明は他の適切な粗粒アレイアーキテクチャにも利用され得る。
ADRESアーキテクチャは、データ経路連結の粗粒再構成可能マトリクスである。ADRESアーキテクチャは、超長命令語(VLIW)デジタル信号プロセッサ(DSP)を2−D粗粒異種再構成可能アレイ(CGA)と組み合わせる、電力効率の良い可撓性のあるアーキテクチャテンプレートであり、VLIWのデータ経路から延在するものである。VLIWアーキテクチャは、サイクル毎に、単一の大きい“命令ワード”即ち“パケット”内にパックされる多重命令を実行し、簡素な規則正しい命令セットを利用する。VLIW DSPは、命令レベル並行処理(ILP)を活用してコントロールフローコードを効率よく実行する。多数のファンクションユニットを含むアレイは、高程度のループレベル並行処理(LLP)を活用して、データフローループを加速する。アーキテクチャテンプレートにより、設計者はファンクションユニットの相互接続、タイプ及び数を特定できる。
このようにADRESテンプレートは、同一の物理リソース上に2つのファンクションモードを設けることにより、超長命令ワード(VLIW)プロセッサ11と粗粒アレイ12を堅固に連結できる。これは、高パフォーマンス、低通信オーバーヘッド及びプログラミングの容易性などの、利点をもたらす。例えば、Cなどのプログラミング言語で書かれたアプリケーションは、ADRESインスタントに即座にマップされ得る。ADRESは、具体的アーキテクチャに代わるテンプレートである。アーキテクチャ探査により、よりよいアーキテクチャを発見すること若しくはドメイン特定アーキテクチャを設計することが可能になる。
ADRESアレイは、具体的インスタントに代わる可撓性のあるテンプレートである。アーキテクチャ記述言語は、様々なADRESインスタンスを記述するように開発された。スクリプトベースの技術により、設計者は、ターゲットのアーキテクチャに関する通信トポロジ、サポートされるオペレーションセット、リソースアロケーション及びタイミングのための、種々の値を記述することにより、容易に種々のインスタンスを生成できる。再ターゲット可能なシミュレータ及びコンパイラと共に、このツール−チェーンにより、アプリケーションドメイン特定プロセッサをアーキテクチャ探査し開発できる。テンプレートを利用してADRESインスタンスが規定されるので、VLIW幅、アレイサイズ、相互接続トポロジ等は、利用のケースによって変動し得る。
ADRESテンプレートは、計算機、記憶装置及びルータなどのリソースを含む、多数の基本的要素を含む。計算機のリソースは、制御信号により選択されるワードレベルオペレーションのセットを実行できるファンクションユニット(FUs)13である。レジスタファイル(RFs)14及びメモリブロック15などのデータ記憶装置は、中間データを格納するのに利用され得る。ルータ・リソース16は、ワイヤ、マルチプレクサ及びバスを含む。このようにADRESインスタンスは、ファンクションユニット13、レジスタ15、レジスタファイル14、及び、ファンクションユニット13やレジスタファイル14を連結するバスやマルチプレクサなどのルータ・リソース16を含む。
基本的に、計算機のリソース(FUs)13と記憶装置のリソース(例えば、RFs)はルータ・リソース16により或るトポロジで連結され、ADRESアレイのインスタンスを形成する。ADRES全体は、図1の点線で示されるように、VLIWプロセッサ11と再構成可能アレイ12との、2つのファンクションモデルを有する。これらの2つのファンクションモデル11、12は、プロセッサ/共同プロセッサモデルのおかげでそれらの実行がオーバーラップすることが決して無いので、物理リソースをシェアできる。プロセッサは、VLIWモードでもCGAモードでも動作する。グローバルデータレジスタファイルRF’15は両方のモードで利用され、両方のモードの間のデータインタフェースとして機能し、統合コンパイルフローを有効にする。
VLIWプロセッサ11は、典型的なVLIWアーキテクチャ内として、複数のFUs13と少なくとも一つのマルチポートレジスタファイルRF’15を含むが、この場合VLIWプロセッサ11は再構成可能アレイ12の第1の行としても利用される。この第1の行の複数FUs13は、利用可能のポート数に拠るがメモリヒエラルキ10に接続する。統一アーキテクチャのメモリへのデータアクセスは、これらのFUsで利用可能なロード/ストア動作を介して為される。
コンパイラによりADRESアーキテクチャのためのアプリケーションをコンパイルするとき、CGA12のためのループがモジュロ−スケジュールされ、残余のコードがVLIW11のためにコンパイルされる。ランタイムにてVLIWモードとCGAモードとの間でアーキテクチャをシームレスでスイッチすることにより、静的に区分されスケジュールされるアプリケーションが、多数の、クロックサイクル毎の命令(IPC)数で、ADRESインスタンス上で稼動し得る。
ループ内部の制御フローを除去するために、FUs13は叙述動作をサポートする。FUs13の結果は、分散型RFs14、即ち特定のファンクションユニット13専用のRFs14などのデータストレージに書き込まれ得るが、そのRFs14は小さいものであり、複数のファンクションユニット13間で共有される少なくとも一つのグローバルデータストレージであるレジスタファイルRF’15などの共有データストレージよりもポート数が少ない。FUs13の結果は、若しくは別のFUs13にルート付けされ得る。タイミングを保証するために、FUs13のアウトプットは、アウトプットレジスタによりバッファされ得る。マルチプレクサ32は、FUs13を少なくとも2つの非オーバーラップの処理ユニットの中に相互接続するルータ・リソースの一部である。それらは異なるソースからのデータをルート付けするのに利用される。コンフィグレーションRAM31(図1及び図3参照)は、ローカルに少しのコンフィグレーションを格納するが、それらは一周期ずつに基づいてロードされ得る。ローカルのコンフィグレーションRAM31が十分に大きくないならば、上記コンフィグレーションは追加の遅延を犠牲にしてメモリヒエラルキ10からロードされ得る。マイクロプロセッサ内の命令と同様に、上記コンフィグレーションは、オペレーションを選択してマルチプレクサを制御することにより、基本的な要素の振る舞いを制御する。上述のような詳細なデータパスの例は、図3に示される。
本発明に係る実施形態は、高度並行データ処理アーキテクチャ、例えば、ADRES、若しくは粗粒再構成可能アレイを、マルチ−スレッド/プロセス・デバイスにまで拡張する。上述のように、ADRESインスタンスは、ファンクションユニット13、レジスタやレジスタファイル14等のデータストレージ、及び、ファンクションユニット13やレジスタファイル14を接続するバスやマルチプレクサ等の接続レジスタ16を、含む。ADRESは、必要であれば全周期で、アレイのあらゆるエレメントを独立して構成することにより、MIMD(マルチプルインストラクションマルチプルデータ)プログラミングモードをサポートする。更に、ファンクションユニット13は、データ経路の幅を利用するSIMD(シングルインストラクションマルチプルデータ)処理をサポートし得る。コードの適切な部分から超長命令レベル並行処理(IPL)を抽出するのに、特別なプログラミングアプローチが用いられる。ADRESは、実行しているファンクションユニットが先ず無い従来のVLIW(超長命令ワード)も実装する。入手可能な命令レベル並行処理(ILP)が先ず無いが、従来のプログラミングモデルで十分である、コードのために、利用され得る。
本発明に係る実施形態のために、ADRESアレイは、スレッド−レベル並行処理を可能にするために、パーティションに下位分割される。あらゆるパーティション若しくはパーティションの組み合わせは、VLIWモードで及びアレイモードで実行し得る。このマルチ−スレッドは、多重ADRESインスタンスを作成することによって達成され得るが、新規のパーティションアプローチにより、2つ以上の結合したパーティション上でスレッドを稼動することもできる。このことは、再構成可能性の更なる寸法を本質的に提示するものである。
ADRESインスタンスに係るファンクションユニット13及びレジスタファイル14のトポロジ、連結性、及び特性は、設計時にアーキテクチャテンプレートにより規定される。マルチ−スレッドのADRESに対して、テンプレートは、パーティションに関する情報を含み、更に、個々のパーティション若しくはパーティションの組み合わせがそれ自身有効なADRESインスタンスであることを保証するように、拡張される。アーキテクチャテンプレートは、コンパイラのために、特定のADRESインスタンスの全ての様相を規定する。
図1は、3つのパーティション17、18、19を伴う可能なADRESテンプレートのための例を示す。これにより、例えば、1つ、2つ若しくは3つのスレッドが、スレッドを実行するパーティションの様々な組み合わせを利用して、並行に実行され得る。例えば、シングルスレッドは、(第1のパーティション17として示される)全体の8×8のアレイで、若しくは(第3のパーティション19として示される)1×2の下位パーティションで、若しくは(第2のパーティション18として示される)4×4の下位パーティションで、実行され、アレイの残部(非利用部)は低電力モードのままであることが可能である。以下では、この例のパーティションは、夫々、第1のパーティション17、第2のパーティション18及び第3のパーティションとして示される。パーティション17、18、19は異なる寸法となるよう選択され、スレッド内で利用可能な並行処理の程度にアーキテクチャをより適合させる。このことは、異種ファンクションユニットを利用して、更に異種データパス幅と組み合わせ可能であり、特定のファンクションのためのパーティションを最適化する。
本発明に係る実施形態は、ADRESのプログラミングを活用し拡張する。コンパイラは、例えば、パラメータファイル内のデータに基づいて、及び、ファンクション名の接頭辞や固有の即ち特別な命令のようなコード内の或る構成に基づいて、VLIWモードのための及びアレイモードのためのコードを生成する。同様に、スプリットモードオペレーション、即ち、個々の処理ユニットが処理ユニットに割り当てられたコントロールモジュールの制御下にある、複数の非オーバーラップの処理ユニット上で、複数のスレッドが並行して稼動しているオペレーションのモードは、例えば、パラメータファイル内にセッティングし、分割し結合するパーティションのための特別の命令を利用することにより、示され得るものである。スレッドの最初と後続のファンクションがどのパーティションに対してマップされるかを、パラメータファイル内のエントリが記述するので、コンパイラはどのアーキテクチャテンプレートを利用するか分かっている。
拡張コンパイラは、コード内の並行スレッドを自動的に識別し、パフォーマンス及び電力消費のために改良され若しくは最適化もされたマッピングのための利用可能なパーティションを探査し得る。
一方で、アレイを分割する命令、即ちパーティションをサブパーティションの中に挿入することで、コード内にスレッドを規定することはプログラマの仕事である。命令の引数は、個々の並行スレッド内の第1の関数に対する照会、例えばポインタを少なくとも含む。このように分割命令のメカニズムは、アレイ若しくはパーティションの状態を変更すること、及び、サブルーチンコールに類似するものを介してスレッドを誘発することである。リターンアドレスをセーブすることの他に、命令は分割動作のためのパーティションのレジスタ15のセットアップもする、即ち、全ての新しいスレッドのためのスタックポインタを初期化する。アレイのデータレジスタファイルは、アレイの潜在的なパーティション間でクラスタが共有されないように、クラスタ化レジスタファイルとして実装されるべきである。
どのパーティション17、18、19もそれ自身の制御信号のセット、即ち、VLIW及びアレイモードのためのプログラムカウンタ21、22、23及びモードと別ステータスのフラグ24、25を有する。更に、どのパーティション17、18、19も、これら信号を駆動するそれ自身の制御モジュール26、27、28を有する。統合モード、即ち、単一処理ユニットとの相互接続構成で稼動するとき、一つの制御モジュール26は、図2に示すように、他の制御モジュール27、28に追随させて、相互接続構成内部で全てのパーティションの制御信号を駆動する。制御モジュール26、27、28は同じモジュールの多重インスタンス化であってもよい。同期して実行するためにプログラムカウンタ21、22、23が一つの制御モジュールから次の制御モジュールへと押されるのであってもよい。制御モジュール26、27、28を同期化するための他の実装も可能である。一つの形態は、現存の実装から制御モジュールを再利用できることであり、その場合殆ど必要な拡張は無い。分割が実行されると、個別の制御モジュール26、27、28は、分割命令内のファンクションポインタに規定されるように、個々のスレッド内の最初の命令を実行することを開始する。分割モード内の個々の制御モジュール26、27、28は、その夫々の信号を駆動する。プログラマの観点から、パーティションは個別のADRESインスタンスのように動作し、VLIWモードとCGAモードの間で独立してスイッチできる。
しかしながら、プログラマは、全てのスレッドの間で共有されるデータメモリを使うことができる。更に、拡張コンパイラは、この場合マルチスレッドのためのメモリアロケーションのタスクによって、プログラマをサポートできる。スレッド間でのデータの同期及び共有のために、拡張アーキテクチャは、セマフォレスや他のマルチ処理の基本要素を実効的に実装するための特別な命令を設ける。
共有アーキテクチャ要素は、命令メモリである。これはプログラミングモデルに直接に影響を与えるものではなく、コードパーティションをリンクするとき、並行スレッドのコードをパックするためにリンカ若しくはリンクモジュールがパーティションを承知していることを要求するに過ぎない。どのパーティションも、夫々の制御モジュール26、27、28に直接接続する独立の命令フェッチユニット29a、29b、29cを有する。統合モードでは、制御モジュール26、27、28はプログラムカウンタ21、22、23を介して同期される。この場合、命令ユニット29a、29b、29cは、統合パーティションのための命令のセットの一部をフェッチし、その結果実行は同じフローを追う。分割モードでは、個々のコントローラ26、27、28はそれ自身のスレッドの実行フローを追い、個々の命令ユニット29a、29b、29cは、夫々のサブパーティションのための命令のセットをフェッチする。制御モジュール26、27、28と命令フェッチユニット29a、29b、29cとの間のつながりは図2に示される。
スレッドを結合するために、今のスレッドを終わらせるコードの中に、特別な結合命令が挿入される。夫々のパーティションが自動的に低電力モードに入れられ得る。分割命令から起動された最後のスレッドが終了すると、組み合ったばかりのパーティションで実行が継続し、次の命令は分割を追随する。リカバリルーチンのために、スレッドにモニタさせ、必要時には別のスレッドを中断する特別なメカニズムが設けられる。
概略、本発明のこの実施形態は、既に高度に並行で再構成可能なアーキテクチャを拡張し、更なる並行処理の寸法及び再構成可能性を備えるものとする。上記実施形態は、簡潔なプログラミングモデルを保持しつつも、現存のアーキテクチャ及びツール、特にコンパイラを利用する。マルチスレッドの拡張により、粗粒アレイのユーザは、複雑なデータ−レベルの並行処理と共に、新たなアプリケーション内に見出される適用アルゴリズムに変数を実効的に実装する、ファンクション−レベルの並行処理を利用できる。本発明のプログラム可能性と簡潔性は、鍵となる分化のファクタである。
例として、本発明の実施形態に係るマルチスレッドアーキテクチャのデモンストレーションのために、MPEG2デコーダが利用される。大抵のMPEG2デコーダカーネルは、クロック毎の命令数(IPC)が8から43の範囲で、CGA上にスケジュールされ得る。しかしながら、CGAのサイズが増加しても、モジュロ−スケジュールされたカーネルIPCのうちには十分に拡大しないものがある、ということが見出されている。積極的なアーキテクチャには、クロックサイクル毎に64命令を実行するポテンシャルを有するものもあるが、このレベルの並行処理を活用できるアプリケーションは殆ど無く、平均IPCがより低くなるという結果となる。このことは2つの理由により生じる。(1)カーネルの固有のILPは低く、ループ展開でも実効的には増加し得ず、若しくは、コードが複雑であり例えばメモリーポートなどのリソース制約によりそれ程多くのユニット上に実効的にスケジュールできない。(2)VLIWモードで逐次コードを実行する際CGAが遊んでいる。より多くの逐次コードが実行される程、アプリケーションの平均IPCの達成は低くなり、更にはCGAの利用が少なくなる。結論として、ADRESアークテクチャが非常に拡張可能であっても、多数のアプリケーションからより多くの並行処理を取り出す課題に直面する。それは、より小さいADRESアレイで実行されるのがより適切である。このことは、非特許文献1にて、G.M.Amdahlにより記載されるように、Amdahlの法則として周知である。
プログラミング時に適切に再構成され変換されるならば、同じアプリケーション内のマルチカーネルは、アプリケーション設計者により実効的に並行処理され得る。低−LLPカーネルはプロファイリングを介して静的に識別され得、個々のカーネルに対するADRESアレイサイズの最適な選択が評価可能であり、大きいADRESアレイが、可能であればスレッドに並行処理化される個々のカーネルに適合する複数の小スケールのADRESサブアレイに、分割可能である。アプリケーションが実行されるとき、複数の低−LLPカーネルを並行して実行するために、大きいADRESアレイは複数のより小さいサブ−アレイに分割され得る。同様に、高−LLPカーネルが実行されるとき、サブアレイは大きいADRESアレイに統合され得る。そのようなマルチスレッドADRES(MT−ADRES)は非常に可撓性があり、アプリケーションのLLPが探査し難いとき大きいスケールのADRESアレイの過度な利用を増加し得る。
以下では、マッチングコンパイルツールと共に、単一スレッドアーキテクチャの頂部に実装されるMPEG2デコーダ上に、例示の試験的なデュアルスレッドが、示される。この試験を介して、マルチスレッドがADRESアーキテクチャに適していることが証明された。
拡張性のあるパーティションベースのアプローチが、ADRES等の粗粒再構成可能アーキテクチャに対して提案されている。ADRESアーキテクチャ上の豊かなリソースにより、大きい粗粒再構成可能アレイを2つ以上のサブアレイに分割することができ、該サブアレイの各々は規模縮小の粗粒再構成可能アーキテクチャとして見ることができ、図4に示すように更に下位階層状に分割できる。本発明の実施形態に係る分割技術により、汎用プロセッサで利用される動的な異常実行の制御ロジックのコスト無しに、スレッド間でHWリソースを動的に共有できる。
個々のスレッドは、それ自身のリソース要求を有する。高度のILPを有するスレッドはより多くの計算機リソースを要求し、従ってより大きいパーティション上でそれを実行することは、ADRESアレイをより実効的に利用することになり、その逆も同様である。広域で最適なアプリケーション設計は、プログラマがアプリケーションの個々の部分のIPCを承知し個々のスレッドに対する実効的なアレイパーティションを見出せることを、要求する。
あるアプリケーションの個々の部分によりどれだけ多くのリソースが要求されるかを見出す最も容易な方法は、コードをプロファイルすることである。プログラマは単一スレッドのアプリケーションから開始し、大きい単一スレッド再構成粗粒アレイ上でそれをプロファイルする。プロファイルの結果から、低IPCを伴い、他のカーネルに従属しないカーネルは、スレッドのための高プライオリティの候補として識別される。リソース要求に依拠し、スレッドに依存して、プログラマは、アプリケーションの実行の間、どのようにいつ再構成可能粗粒アレイがパーティションに分割されるべきかについて、静的に計画する。スレッドが十分に構成されると、全体のアレイは実効的に利用され得る。
アーキテクチャ設計形態
ADRES上のFUアレイは異種である、これは複数の様々なFUs13がアレイ内に存在するという意味である。分割を強制するアレイ上には専用メモリユニット、特別の演算ユニット及び制御/分岐ユニットが存在する。アレイを分割するとき、あるパーティション上で実行されるプログラムがスケジュールされ得ることが保証されなければならない。スレッド内に呼び出されるどの命令もアレイパーティション内のファンクションユニットの少なくとも一つによりサポートされることを、このことは要求している。適格なパーティションは、通常、分岐動作を為し得る少なくとも一つのVLIW FU、記憶動作を為し得る一つのFU、必要ならば複数の演算ユニット、及び、一般的動作を処理できる複数のFUを有する。
ADRESアーキテクチャでは、VLIWレジスタファイル(RF’)15は、容易には分割され得ないリソースである。ADRESアーキテクチャは、クラスタ化レジスタファイルを使用し得る。RFバンクが複数のスレッド間で共有されることを禁じられるならば、RFクラスタはVLIW/CGAにより分割可能であり、スレッドコンパイルは非常に平易化され得る。シングルレジスタが利用される場合、レジスタ割り当てスキームは、強制レジスタ割り当てをサポートするように改められなければならない。
ADRESアーキテクチャは、超広メモリ帯域幅を有してもよい。バンクコンフリクトを減少するために上記アーキテクチャに適用されるマルチバンクメモリは、静的データアロケーションスキームを適切に対処することが判明している。ADRESでは、メモリ及びアルゴリズムコアは、キューを伴うクロスバーと適合し得る。そのようなメモリインタフェースは、スクラッチパッドスタイルのメモリ提示を全てのロード/ストアユニットに対して用意し、従ってマルチバンクメモリは共有される同期メモリとして利用され得る。
共有されるメモリの他に、レジスタベースのセマフォレス若しくはパイプなどの他の専用同期基本要素も、ADRESテンプレートに適用され得る。これらの基本要素は、異なるスレッドパーティションに属するファンクションユニットのペアの間で接続され得る。同期命令は、固有のものとして或るファンクションユニットに加えられ得る。
単一−スレッドADRESアーキテクチャでは、プログラムカウンタ及び動的再構成カウンタは、有限状態機械(FSM)により制御され得る。マルチスレッドADRESを実装するならば、拡張可能制御メカニズムが、階層的に分割されたアレイに適合するように利用され得る。
図5に示すように、FSMタイプコントローラは重複されてもよく、コントローラは階層状に構成されてもよい。このマルチスレッドコントローラでは、個々のパーティションはFSMコントローラ50により依然制御されるが、制御パスは、マージャ51及びバイパサ52と称される2つのユニットにより拡張される。マージャ51及びバイパサ52は、プログラム実行の間管理しやすい階層マスタ−スレーブ制御を形成する。マージャパスは、フローの変更の情報をパーティションのマスタコントローラに通信するのに利用され、一方、バイパサは、現下のPC若しくは構成メモリアドレスをマスタからパーティション内の全てのスレーブに伝搬する。
このような制御メカニズムを有することの原理は、以下の通りである。デュアルスレッドのために2つの半分に分割可能であり、夫々の半分がそれ自身のコントローラを有するADRESアーキテクチャを想定する。できるだけ多くのコントローラを再利用するために、プログラムがデュアルスレッドモードで稼動しているとき個々のコントローラはADRESの分割部(パーティション)を制御するが、プログラムが単一スレッドモードで稼動するときはコントローラの一つがADRES全体の全制御をすることも好ましい。コントローラの一つを割り当ててADRES全体を制御することにより、マスタが生成される。ADRESが単一スレッドモードで稼動しているとき、マスタコントローラは更にスレーブパーティションから信号を受け取り、グローバル制御信号を生成するためにそれをマスタパーティション信号とマージする。同時に、スレーブパーティションはローカルコントローラから生成された信号をバイパスし、マスタパーティションから生成されたグローバル制御信号を追随すべきである。ADRESがデュアルスレッドモードで稼動しているとき、マスタ及びスレーブコントローラは他のパーティションからくる制御信号を完全に無視しローカル信号にのみ応答する。このストラテジは、更なる分割に対処するように容易に拡張され得る。
マルチスレッド方法論
スレッドされたアプリケーションがコンパイルされ得る前に、アプリケーションは再構成されるべきである。図6に示されるように、アプリケーションは複数のスレッドファイル61、62、63、64分割され得るが、それらの各々は、特定のパーティションで、例えばアプリケーションがCでプログラミングされていると想定するとC−ファイルで、実行されるべきスレッドを記載する。スレッド間で共有されるデータは、全てのスレッドファイルに含まれるグローバルファイル内で規定され、同期メカニズムにより保護される。そのような再構成は地道な努力を要するが、プログラマが様々なスレッド/パーティションの組み合わせで試行し実効的な、例えば最適なリソースの予算を立てることを、より容易なものにする。図6に示される実施形態では、タスク1は統合モードで最初に実行される。タスク1の実行後、ADRESアーキテクチャは、タスク2、タスク3及びタスク4を並行して実行する3つの並行処理ユニットに分割される。タスク2、3及び5を実行した後、ADRESアーキテクチャは、再び統合モードに戻され、タスク4実行する。
マルチスレッドアーキテクチャディスクリプション、例えばADRESアークテクチャディスクリプションは、は、図7に示すように、パーティションディスクリプションにより拡張する。業務用のFPGA上のエリア制約された配置及びルート付けと同様に、スレッドがADRESパーティション上でスケジュールされると、命令の配置及びルート付けはパーティションの記載により制約される。個々のスレッドの生成されたアセンブリコードは、独立してアセンブルプロセスを介して進み、最終のコンパイルのステップでリンクされる。
シミュレータ70はアーキテクチャディスクリプション71を読み取り、アプリケーションシミュレーションが開始する前にアーキテクチャシミュレーションモデルを生成する。図5に示すように、個々のパーティションはそれ自身のコントローラ50を有し、従ってコントローラのシミュレーションモデルの生成は同様にパーティションディスクリプションに依存する。更に、制御信号分布もパーティション依存し、従ってシミュレーションモデル生成の間に参照されるべきパーティションディスクリプションを要求する。
本発明の実施形態に係るマルチスレッド方法論では、副次的な別の実用上の問題を対処する必要がある。最もコストのかかる問題は、ADRESの異なるパーティションは概念状異なるインスタンスであり、従って特定のパーティションのためにコンパルされるファンクションは、他のどのパーティションででも実行され得ない、ということである。ファンクションが一つ以上のスレッドによりコールされるとき、このファンクションの多重パーティション−特定バイナリは様々なコーラーのために命令メモリ内に格納されねばならない。次に、多重スタックがデータメモリ内に割り当てられる必要がある。
スレッドによりADRESがより小さいパーティションに分割する度に、一時的データを格納するために新しいスタックが形成されるべきである。現下、新しいスタックがどこに形成されるべきかを決定する最良の解決策は、プロファイリングに基づくものであり、スレッドスタックはコンパイル時に割り当てられる。最終的に、新しいスレッドが形成される毎に、特別目的のレジスタの新しいセットが初期化される必要がある。スレッドが稼動を開始した直後に、スタックポイント、戻りレジスタなどを適切に初期化するには、複数のクロックサイクルが必要である。
実験
本発明の実施形態に係るマルチスレッド方法論をサポートするのにどの特性が望ましいかを理解し、その実現可能性を証明するために、十分に理解されたベンチマークであるMPEG2デコーダに基づいて、実験を行った。実行可能なスレッドアプリケーションを生成し、スレッドのため命令/データメモリを分割し、サイクルに正確なアーキテクチャシミュレーションを更新し、本発明の実施形態に係るシミュレータによりMPEG2デコーダの実行を首尾よくシミュレートする、という全体のプロセスを経過することが、目的である。全体のプロセスを経過することにより、スレッドのためのコンパイル、及び、MT−ADRESのシミュレーション/RTLモデル生成をいかにして自動化するかに関する豊富な知識を取得できる。
概念実証の実験は、MPEG2デコーダ上でデュアルスレッドに達する。MPEG2デコーダは、非特許文献2に記載されるように、複数の粒度で並行処理化され得るのであり、従って、それは実験するのに適当なアプリケーションである。離散逆コサイン変換(IDCT)及び動き補正(MC)が2つの並行スレッドとして選択され、図8に示すようにMPEG2デコーダを再構成した。デコーダは8×4アレイ80で実行を開始し、可変長デコード(VLD)及び逆量子化(IQ)を実行し、スレッドモード(スプリットモード)にスイッチする。スレッド実行が開始すると、8×4アレイ80は2つの4×4ADRESアレイ81、82に分割し、スレッドの実行を継続する。両方のスレッドが終了すると、2つの4×4アレイ81、82は統合し8×4アレイ80において統合モードで追加ブロックファンクションを実行する。MPEG2プログラムは図8に示すように再構成され、固有のものとして“分割”命令(フォーク命令)及び“統合”命令(結合命令)を追加した。これらの命令83、84は、一般にそれら自身何も行わないが、MPEG2バイナリコードでスレッドモードが変化すべきところをマークするためにのみ利用される。これらのマークは、スレッドモードプログラム実行を可能にするために/不能にするために、ランタイムにて分割制御ユニットにより利用される。
本発明に係るデュアルスレッドコンパイルフローが図9に示される。パーティションベースのスケジューリングの欠如により、スケジューリングへのインプットとして2つのアーキテクチャを利用することが余儀なくされる。8×4アーキテクチャ90は、右及び左の半分が全く同一になるように慎重に設計される。このアーキテクチャは全体のMPEG2バイナリの実行プラットフォームである。4×4アークテクチャも必要とされ、該アークテクチャは8×4アレイの半分のいずれにも互換性のある助力アークテクチャである。このアークテクチャは8×4アーキテクチャ90のハーフアレイパーティションディスクリプションとして利用される。これら2つのアークテクチャ90、91を適所に配置し、シングルスレッドファイル92、例えばC−ファイルが、8×4アークテクチャ及び4×4アークテクチャの夫々でのスレッドと同様に、コンパイルされる。リンカ95によりリンクする後者は、プログラムの様々な部分からのバイナリをシームレスでステッチする。
スレッドされたMPEG2のメモリ分割が図10に示される。命令フェッチ(IF)、データフェッチ(DF)及びコンフィグレーション−ワードフェッチ(CW)は、デュアルスレッドのために二重化される。フェッチユニットペアは、シングルスレッドプログラム実行の間にステップロックされる。アーキテクチャがデュアルスレッドモードに入ると、フェッチユニットペアは2つのセットに分割するが、それらの各々はスレッドパーティション内でコントローラにより制御される。
リンクの間、命令メモリ101及びデータメモリ102はパーティションの中に分割される。命令メモリ101とコンフィグレーションメモリ103の両方は、3つのパーティションに分割される。これらの3つのパーティションペアは、図10に示すように、シングルスレッドバイナリ、IDCTバイナリ及びMCバイナリの命令及びコンフィグレーションを格納する。データメモリ102は4つのパーティションに分割される。最大のデータメモリパーティションは、共有されるグローバル静的データメモリである。シングルスレッド及びデユアルスレッドの両方のプログラムは、それらのデータを同じメモリパーティション105の中に格納する。データメモリの102の残りは、3つのスタックの中に分割される。IDCTスレッドスタック106は、シングルスレッドプログラムスタック107の直ぐ上で拡張する。それらは同じ物理コントローラとスタックポインタを利用するからである。MCスレッドのベーススタックアドレスは、リンク時に空きメモリ割り当てに対してオフセットする。プログラム実行がデュアルスレッドモードに入ると、MCスタックポインタが複数のクロック周期を費やして適切に初期化される。
別の実施形態では、個々のスレッドがそれ自身のレジスタファイルを備えるように、クラスタ化レジスタファイルがアレイパーティション間でクラスタ化されてもよい。しかしながら、現段階での分割ベースのレジスタ割り当てアルゴリズムの欠如のために、パーティションアプローチはそれ程適切なものではない。シングルグローバルレジスタファイルを伴うADRESアーキテクチャに関し実験を行い、レジスタファイル発行に一時的に適合する二重化ベースのアプローチに進む。図11に示すように、シャドウレジスタファイル110がアーキテクチャ内に追加されてもよい。シングルスレッドプログラムが実行されていると、シャドウレジスタファイル110が最初のレジスタファイル15でステップロックされる。プログラムがデュアルスレッドを開始すると、MCスレッドはシャドウレジスタファイル110へアクセスし、アレイパーティション112及びシャドウレジスタファイル15上で実行を継続する。プログラムが再開してシングルスレッドの実行に到ると、シャドウレジスタファイル110が再び隠される。MPEG2プログラムは、スレッド間で共有されるデータの全て、並びに住み込みの及び通いの変数の全てが、グローバルデータメモリを介して通過するように、僅かに修正される。
図5に示す拡張性のある制御コンセプトは、本発明の実施形態に係るシミュレーションモデル内で立証された。このスキームは或る規模まで拡張可能であり、制御ユニットシミュレーションモデル生成は自動化され得ることが、示された。
プログラムリンクの間に、“分割”及び“統合”命令が命令メモリ内でどこに格納されるかが、特定される。これらの命令の物理アドレスは、デュアルスレッドモードの開始ポイントと終了ポイントとをマークする。シミュレーションモデル生成の間、これらの命令のアドレスは、分割制御ユニット内の専用レジスタのセット内に格納される。プログラムが実行することを開始すると、個々のクロック周期にて、分割制御ユニットによりプログラムカウンタ(PC)値がチェックされる。プログラムカウンタが分割ポイントに達すると、分割制御ユニットは制御信号をマージャ及びバイパサに送信し、スレッドモードをイネーブルにする。プログラムがスレッドモードに移行する後、分割コントローラは、“統合”命令が格納されるところでPC値に到達することにより両方のスレッドが結び付くことを、待つ。結び付く第1のスレッドは、他のスレッドが終了するまで、停止する。第2のスレッドがついに結びつくと、分割コントローラはADRESアレイをシングルスレッドモードに切り替えて戻し、アーキテクチャは8×4アレイモードを再開する。分割及び統合動作を行うことのオーバーヘッドは、主として、或る専用レジスタ上の複数の簿記命令を実行することから生じてくるのであるが、そのようなオーバーヘッドは無視できる。
アプリケーションがより複雑となり多重の分割/統合ポイントを有すると、現下のアプローチは処理するのにより困難なものとなり、よって、本発明の実施形態に係るアーキテクチャは、命令デコードにのみ依存して、“分割”及び“統合”命令を検出し得る。分割制御ユニットが除去され、その機能の一部が個々のパーティションのローカルコントローラ内に移されてもよい。
シミュレーション結果は、MPEG2が僅かに早い率で正確なイメージフレームを生成することを示す。表1は、スレッドと共に及びスレッド無しで、同じ8×4ADRESインスタンスでデコードされた最初の5イメージフレームのクロックカウントを示す。
Figure 2009530924
表1.同じアーキテクチャでのシングル及びデュアルスレッドのMPEG2のクロック周期カウント
クロック周期カウントのコラムは、イメージフレームがデコードされたときのオーバーオール実行時間のクロックカウントを示し、デコード時間のコラムは、デコードされる2つのフレーム間のクロックカウントを示す。以下の理由により、デュアルスレッドのMPEG2はシングルスレッドのMPEG2より約12−15%速い。
IDCT及びMCアルゴリズムの両方は、高度なループレベルの並行処理を有し、従ってシングルスレッドの8×4アーキテクチャを最適に用いる。スレッドとして×4アーキテクチャ上にスケジュールされると、両方のアルゴリズムのIPCは、半減されたアレイサイズのために半分に減少され、従って非スレッドとスレッドのMPEG2の全体のIPCは、略同じである。前に述べたように、ADRESサイズがある程度まで増加すると、スケジューリングアルゴリズムは、アプリケーション内で並行処理を探査すること、及び、最適にADRESアレイを利用することが、困難になる。ADRESアレイのサイズを二倍にすること/四倍にすること、若しくは、スレッドのために低並行処理アルゴリズムを選択することは、結果としてよりスピードアップとなることは、明白である。
周知のように、より小さいアーキテクチャ上へのモジュロスケジューリングの容易さから、僅かな性能向上が大抵達せられる。アプリケーションがより大きいCGA上でスケジュールされると、ルーティングの目的のために、多数の冗長な命令がカーネルの中に付加される。全体ADRESの代わりに、IDCT及びMCカーネルが半分のCGAパーティション上にスケジュールされると、アプリケーションの全体のIPCがそれ程改良されなくとも、配置及びルーティングのためのスケジューリングの間に付加される冗長命令の量は、大きく減少した。
MPEG2デコードアルゴリズムでデュアルスレッド実験を行うことによって、MT−ADRESアーキテクチャに関する豊富な知識が得られた。シミュレーションの結果は、MPEG2が12−15%のスピードアップを得たことを示す。これまでの結果は、スレッドアプローチは、ADRESアーキテクチャにとって十分であり、実用上実行可能であり、或る程度まで拡張可能であることを、示している。これまでのところ、ADRESに付加される唯一の特別なハードウエアコストは、第2の制御ユニットであるが、そのサイズは、3×3より大きいADRESにとって無視し得るものである。
好ましい実施形態、特別の構造及び構成を、本発明に係る装置に対して、本明細書で説明してきたが、当然のことながら、形状及び詳細における様々な変更若しくは修正が、本発明の範囲及び精神から乖離することなく、為され得る。
本発明の実施形態と共に利用する粗粒アレイの実施形態の例を示す。 本発明の実施形態に係るコントロールモジュール及び命令フェッチユニットの再利用可能性及び拡張性のコンセプトを示す。 本発明の実施形態に係るファンクションユニットの詳細なデータパスを示す。 本発明の実施形態に係る拡張可能なパーティションベースのスレッドを示す。 本発明の実施形態に係る階層式マルチスレッドコントローラを示す。 本発明の実施形態に係るソースコード再編成を示す。 本発明の実施形態に係るマルチスレッドコンパイルツールチェーンを示す。 例として、MPEG2デコーダでのスレッドを示す。 試行的なデユアルスレッドコンパイルフローを示す。 本発明の実施形態に係るデユアルスレッドメモリマネジメントを示す。 本発明の実施形態によってセットアップされるシャドーレジスタファイルを示す。
符号の説明
17・・・第1のパーティション、18・・・第2のパーティション、19・・・第3のパーティション、21、22、23・・・プログラムカウンタ、26、27,28・・・コントローラ、29a、29b、29c・・・命令フェッチ、31・・・コンフィグレーションメモリ。

Claims (31)

  1. マルチ処理法で少なくとも2つの処理スレッドを同時に処理するように調整された信号処理デバイスにおいて、
    データに関してワードレベル若しくはサブワードレベルの動作を実行できる複数のファンクションユニットと、
    上記複数のファンクションユニットを相互接続するためのルーティングリソースであって、動的にスイッチされ得る複数の相互接続構成をサポートし、少なくとも一つの上記相互接続構成が上記複数のファンクションユニットを夫々所定のトポロジを備える少なくとも2つの非オーバーラップの処理ユニットの中に相互接続し、上記処理ユニットの各々が上記処理スレッドの夫々一つを処理するように構成されている、ルーティングリソースと、
    少なくとも2つの制御モジュールであって、個々の制御モジュールが制御のために上記処理ユニットの一つに割り当てられている、少なくとも2つの制御モジュールと
    を含む信号処理デバイス。
  2. 更に、複数のデータストレージを含み、
    上記ルーティングリソースは、上記複数のファンクションユニットと上記複数のデータストレージを相互接続することを特徴とする請求項1に記載の信号処理デバイス。
  3. アプリケーションコードが格納されるデータストレージを含み、
    上記アプリケーションコードは少なくとも2つの処理スレッドを含む処理を規定し、上記処理ユニットにより実行され、
    上記ルーティングリソースは、上記アプリケーションコード内の所定のポイントで上記相互接続構成間で動的にスイッチするように調整されている
    ことを特徴とする請求項1又は2に記載の信号処理デバイス。
  4. 上記ルーティングリソースが、稼働中のアプリケーションのデータ内容に依存して相互接続構成を動的にスイッチするように調整されている
    ことを特徴とする請求項1乃至3のうちのいずれか一に記載の信号処理デバイス。
  5. 上記ルーティングリソースが、多重化及び/又は逆多重化回路を含む
    ことを特徴とする請求項4に記載の信号処理デバイス。
  6. クロックを有し、
    上記多重化及び/又は逆多重化回路が、相互接続構成を動的にスイッチするための設定により構成されるように調整され、上記設定がクロック周期毎に変更し得る
    ことを特徴とする請求項5に記載の信号処理デバイス。
  7. 更に、複数のファンクションユニット間で共有される少なくとも一つのグローバルストレージを含む
    ことを特徴とする請求項1乃至6のうちのいずれか一に記載の信号処理デバイス。
  8. 少なくとも2つの異なるタイプのファンクションユニットを含む
    ことを特徴とする請求項1乃至7のうちのいずれか一に記載の信号処理デバイス。
  9. 上記相互接続構成の少なくとも別の一つが、上記複数のファンクションユニットをシングル制御モジュールの制御下にあるシングル処理ユニット内に相互接続する
    ことを特徴とする請求項1乃至8のうちのいずれか一に記載の信号処理デバイス。
  10. 少なくとも2つの上記制御モジュールの少なくとも一つが、シングル処理ユニットを伴う相互接続構成で利用するグローバル制御ユニットの一部である
    ことを特徴とする請求項9に記載の信号処理デバイス。
  11. シングル処理ユニットを伴う少なくとも一つの相互接続構成にて、上記制御モジュールの少なくとも一つが、少なくとも一つの他の制御モジュールに追随させることによって、全ての上記ファンクションユニットの制御信号を駆動する
    ことを特徴とする請求項10に記載の信号処理デバイス。
  12. 利用される上記制御モジュール内で、複数の非オーバーラップ処理ユニットを伴う相互接続構成の上記処理ユニットに割り当てられる上記制御モジュールの少なくとも一部を、シングル処理ユニットを伴う相互接続構成にて、再利用するように調整されている
    ことを特徴とする請求項1乃至11のうちのいずれか一に記載の信号処理デバイス。
  13. 請求項1乃至12のうちのいずれか一に記載の信号処理デバイスでアプリケーションを実行する方法であって、
    最初の制御モジュールの制御下でシングル処理スレッドとして上記信号処理デバイス上で上記アプリケーションを実行するステップと、
    上記信号処理デバイスを少なくとも2つの非オーバーラップ処理ユニットを伴うデバイスに動的にスイッチするステップと、
    上記アプリケーションの一部を少なくとも2つの処理スレッドに分割するステップと
    を含み、
    個々の処理スレッドは、上記処理ユニットの一つ上で独立の処理スレッドとして同時に実行され、
    個々の処理ユニットは、独立の制御モジュールにより制御される
    ことを特徴とする方法。
  14. 上記信号処理デバイスを少なくとも2つの処理ユニットを伴うデバイスにスイッチするステップが、アプリケーションを決定するアプリケーションコード内の第1の命令により決定される
    ことを特徴とする請求項13に記載の方法。
  15. 上記第1の命令が、上記独立の処理スレッドの各々の上記命令の開始アドレスを含む
    ことを特徴とする請求項14に記載の方法。
  16. 更に、
    上記信号処理デバイスをシングル処理ユニットを伴うデバイスに動的にスイッチし戻すステップと、
    上記独立の制御モジュールを同期化させるステップと、
    上記アプリケーションの上記少なくとも2つのスレッドをシングル処理ユニットに結合するステップと
    を含み、
    上記シングル処理スレッドは、上記同期化された制御モジュールの制御下で上記シングル処理ユニット上で処理スレッドとして実行される
    ことを特徴とする請求項13乃至15のうちのいずれか一に記載の方法。
  17. 上記信号処理デバイスをシングル処理ユニットを伴うデバイスに動的にスイッチし戻すステップが、アプリケーションを決定するアプリケーションコード内の第2の命令により決定される
    ことを特徴とする請求項16に記載の方法。
  18. 上記第2の命令が、上記シングル処理スレッドとして実行される上記命令の開始アドレスを含む
    ことを特徴とする請求項17に記載の方法。
  19. シングル処理スレッドとして上記アプリケーションを実行するとき、上記シングル制御モジュールが、上記独立の制御モジュールの少なくとも一つを再利用する
    ことを特徴とする請求項13乃至18のうちのいずれか一に記載の方法。
  20. シングル処理ユニットを伴う相互接続構成にて、上記独立の制御モジュールの一つが、他の制御モジュールに追随させることによって、全ての上記ファンクションユニットの制御信号を駆動する
    ことを特徴とする請求項13乃至15のうちのいずれか一に記載の方法。
  21. 請求項1乃至12のうちのいずれか一に記載の信号処理デバイス上で実行されるコンパイルコードを取得するためにアプリケーションソースコードをコンパイルするための方法であって、
    アプリケーションソースコードを入力するステップと、
    上記アプリケーションソースコードからコンパイルコードを生成するステップと
    を含み、
    上記コンパイルコードを生成することが、コンパイルコード内に、マルチプル処理スレッドを同時に実行し且つ上記処理スレッドを同時に実行することを開始するように上記信号処理デバイスを構成する第1の命令と、上記マルチプル処理スレッドの最後のものがその命令をデコードするときに、上記信号処理デバイスが統合モードでの実行を継続するべく構成されるように、上記マルチプル処理スレッドの同時実行を終了させる第2の命令とを含む
    ことを特徴とする方法。
  22. 上記信号処理デバイスのアーキテクチャ記述を設けるステップを更に含み、
    上記アーキテクチャ記述が、処理ユニットを形成するファンクションユニットの所定の相互接続構成の記述を含む
    ことを特徴とする請求項21に記載の方法。
  23. アーキテクチャ記述を設けるステップが、処理ユニット毎に独立の制御モジュールを設けることを含む
    ことを特徴とする請求項22に記載の方法。
  24. 上記第1の命令が、上記マルチプル処理スレッドの各々の命令の開始アドレスを含む
    ことを特徴とする請求項21乃至23のうちのいずれか一に記載の方法。
  25. 上記第2の命令が、上記マルチプル処理スレッドの実行の後に統合モードで実行される命令の開始アドレスを含む
    ことを特徴とする請求項21乃至24のうちのいずれか一に記載の方法。
  26. 上記コンパイルコードを生成するステップが、
    上記アプリケーションソースコードを分割し、これによりコード分割を生成するステップと、
    どのモードで、及びどの処理ユニットで、コード分割が実行されるか分類するステップと、
    上記コード分割の各々を独立してコンパイルするステップと、
    上記コンパイルされたコード分割をシングル実行可能コードファイル内にリンクするステップと
    を含む請求項21乃至25のうちのいずれか一に記載の方法。
  27. アプリケーションを信号処理デバイス上で実行されるように調整するための方法であって、
    上記アプリケーションの種々の分割の探査を行うステップを含み、
    上記探査を行うステップが、上記信号処理デバイスの種々の相互接続構成を探査するため、上記信号処理デバイスのアーキテクチャ記述のインスタンスを変更することを含む
    方法。
  28. 上記信号処理デバイスの相互接続構成を探査するステップが、シングル制御モジュールの制御下にあるシングル処理ユニットを有する相互接続構成と、独立の制御モジュールの制御下に各々がある少なくとも2つの処理ユニットを有する相互接続構成との間を、動的にスイッチすることを探査することを含む
    ことを特徴とする請求項27に記載の方法。
  29. 請求項1乃至12のうちのいずれか一に記載の信号処理デバイス上で稼動するときに、請求項13乃至20のうちのいずれか一に記載の方法を実行するための、コンピュータプログラムプロダクト。
  30. 請求項29に記載のコンピュータプログラムプロダクトを格納する機械読み取り可能テータ格納デバイス。
  31. ローカルエリア遠隔通信ネットワーク若しくはワイドエリア遠隔通信ネットワークにおける、請求項29に記載のコンピュータプログラムの送信。
JP2009500674A 2006-03-17 2007-03-19 再構成可能なマルチ処理粗粒アレイ Active JP5270529B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0605349.0A GB0605349D0 (en) 2006-03-17 2006-03-17 Reconfigurable multi-processing coarse-grain array
GB0605349.0 2006-03-17
PCT/BE2007/000027 WO2007106959A2 (en) 2006-03-17 2007-03-19 Reconfigurable multi-processing coarse-grain array

Publications (3)

Publication Number Publication Date
JP2009530924A true JP2009530924A (ja) 2009-08-27
JP2009530924A5 JP2009530924A5 (ja) 2009-11-12
JP5270529B2 JP5270529B2 (ja) 2013-08-21

Family

ID=36292912

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009500674A Active JP5270529B2 (ja) 2006-03-17 2007-03-19 再構成可能なマルチ処理粗粒アレイ

Country Status (5)

Country Link
US (1) US8261042B2 (ja)
EP (1) EP2005317A2 (ja)
JP (1) JP5270529B2 (ja)
GB (1) GB0605349D0 (ja)
WO (1) WO2007106959A2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110109590A (ko) * 2010-03-31 2011-10-06 삼성전자주식회사 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법
KR20130066400A (ko) * 2011-12-12 2013-06-20 삼성전자주식회사 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
KR20130098773A (ko) * 2012-02-28 2013-09-05 삼성전자주식회사 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법
JP2013200873A (ja) * 2012-03-26 2013-10-03 Samsung Electronics Co Ltd ループのプロローグまたはエピローグの無効演算を処理する装置及び方法
US8850170B2 (en) 2010-11-16 2014-09-30 Samsung Electronics Co., Ltd. Apparatus and method for dynamically determining execution mode of reconfigurable array
US9304967B2 (en) 2011-01-19 2016-04-05 Samsung Electronics Co., Ltd. Reconfigurable processor using power gating, compiler and compiling method thereof
KR101901332B1 (ko) * 2011-12-12 2018-09-27 삼성전자 주식회사 부분적 전원 관리에 기반한 재구성가능 프로세서, 이 재구성가능 프로세서를 위한 코드 변환 장치 및 방법

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8191324B2 (en) * 2007-07-23 2012-06-05 Arne Wallin Modular pre-cast composite flooring panel and floor system
GB2456879B (en) * 2008-02-01 2012-02-29 Chipidea Microelectronica Sa Configurable integrated circuit and applications thereof
EP2110757A1 (en) 2008-04-14 2009-10-21 Imec Device and method for parallelizing multicarrier demodulation
US7941698B1 (en) * 2008-04-30 2011-05-10 Hewlett-Packard Development Company, L.P. Selective availability in processor systems
US7769984B2 (en) 2008-09-11 2010-08-03 International Business Machines Corporation Dual-issuance of microprocessor instructions using dual dependency matrices
KR101511273B1 (ko) * 2008-12-29 2015-04-10 삼성전자주식회사 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템
US8204734B2 (en) * 2008-12-29 2012-06-19 Verizon Patent And Licensing Inc. Multi-platform software application simulation systems and methods
KR101553655B1 (ko) * 2009-01-19 2015-09-17 삼성전자 주식회사 재구성가능 프로세서에 대한 명령어 스케줄링 장치 및 방법
CN101782893B (zh) * 2009-01-21 2014-12-24 上海芯豪微电子有限公司 可重构数据处理平台
KR101581882B1 (ko) * 2009-04-20 2015-12-31 삼성전자주식회사 재구성 가능한 프로세서 및 그 재구성 방법
KR101572879B1 (ko) 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
JP5452125B2 (ja) 2009-08-11 2014-03-26 クラリオン株式会社 データ処理装置及びデータ処理方法
US8566836B2 (en) * 2009-11-13 2013-10-22 Freescale Semiconductor, Inc. Multi-core system on chip
US8380724B2 (en) * 2009-11-24 2013-02-19 Microsoft Corporation Grouping mechanism for multiple processor core execution
EP2363812B1 (en) * 2010-03-04 2018-02-28 Karlsruher Institut für Technologie Reconfigurable processor architecture
KR101731929B1 (ko) 2011-02-08 2017-05-02 삼성전자주식회사 재구성 가능 프로세서 및 구동 제어 방법
US8656376B2 (en) * 2011-09-01 2014-02-18 National Tsing Hua University Compiler for providing intrinsic supports for VLIW PAC processors with distributed register files and method thereof
KR20130028505A (ko) * 2011-09-09 2013-03-19 삼성전자주식회사 재구성가능 프로세서, 재구성가능 프로세서의 코드 변환 장치 및 방법
KR101949417B1 (ko) * 2011-12-02 2019-02-20 삼성전자주식회사 프로세서, 명령어 생성 장치 및 방법
KR101929754B1 (ko) 2012-03-16 2018-12-17 삼성전자 주식회사 미니 코어 기반의 재구성가능 프로세서, 이를 위한 스케줄 장치 및 방법
US9324126B2 (en) * 2012-03-20 2016-04-26 Massively Parallel Technologies, Inc. Automated latency management and cross-communication exchange conversion
EP2660722B1 (en) * 2012-04-30 2015-01-14 Imec Method and system for real-time error mitigation
US8826072B2 (en) * 2012-05-09 2014-09-02 Imec Method and system for real-time error mitigation
KR20130131789A (ko) * 2012-05-24 2013-12-04 삼성전자주식회사 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법
US9098917B2 (en) 2012-07-19 2015-08-04 Samsung Electronics Co., Ltd. Method and system for accelerating collision resolution on a reconfigurable processor
US9000801B1 (en) * 2013-02-27 2015-04-07 Tabula, Inc. Implementation of related clocks
KR101962250B1 (ko) * 2013-03-05 2019-03-26 삼성전자주식회사 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법
WO2014152800A1 (en) 2013-03-14 2014-09-25 Massively Parallel Technologies, Inc. Project planning and debugging from functional decomposition
KR102168175B1 (ko) * 2014-02-04 2020-10-20 삼성전자주식회사 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
US9727460B2 (en) * 2013-11-01 2017-08-08 Samsung Electronics Co., Ltd. Selecting a memory mapping scheme by determining a number of functional units activated in each cycle of a loop based on analyzing parallelism of a loop
KR102204282B1 (ko) 2013-11-25 2021-01-18 삼성전자주식회사 다수의 기능 유닛을 가지는 프로세서를 위한 루프 스케쥴링 방법
CN104750659B (zh) * 2013-12-26 2018-07-20 中国科学院电子学研究所 一种基于自动布线互连网络的粗粒度可重构阵列电路
GB2524063B (en) 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
US10120685B2 (en) 2015-11-04 2018-11-06 International Business Machines Corporation Tightly coupled processor arrays using coarse grained reconfigurable architecture with iteration level commits
US10528356B2 (en) 2015-11-04 2020-01-07 International Business Machines Corporation Tightly coupled processor arrays using coarse grained reconfigurable architecture with iteration level commits
US10318356B2 (en) 2016-03-31 2019-06-11 International Business Machines Corporation Operation of a multi-slice processor implementing a hardware level transfer of an execution thread
US10776310B2 (en) 2017-03-14 2020-09-15 Azurengine Technologies Zhuhai Inc. Reconfigurable parallel processor with a plurality of chained memory ports
WO2019005864A1 (en) * 2017-06-28 2019-01-03 Apple Inc. ASYNCHRONOUS CORE
US10949328B2 (en) 2017-08-19 2021-03-16 Wave Computing, Inc. Data flow graph computation using exceptions
US11106976B2 (en) 2017-08-19 2021-08-31 Wave Computing, Inc. Neural network output layer for machine learning
US10564942B2 (en) 2017-11-17 2020-02-18 International Business Machines Corporation Compiler for a processor comprising primary and non-primary functional units
US11048661B2 (en) 2018-04-16 2021-06-29 Simple Machines Inc. Systems and methods for stream-dataflow acceleration wherein a delay is implemented so as to equalize arrival times of data packets at a destination functional unit
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US10768899B2 (en) 2019-01-29 2020-09-08 SambaNova Systems, Inc. Matrix normal/transpose read and a reconfigurable data processor including same
US10997102B2 (en) 2019-04-01 2021-05-04 Wave Computing, Inc. Multidimensional address generation for direct memory access
US11934308B2 (en) 2019-04-01 2024-03-19 Wave Computing, Inc. Processor cluster address generation
US11227030B2 (en) 2019-04-01 2022-01-18 Wave Computing, Inc. Matrix multiplication engine using pipelining
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
US11900156B2 (en) * 2019-09-24 2024-02-13 Speedata Ltd. Inter-thread communication in multi-threaded reconfigurable coarse-grain arrays
US11233515B2 (en) * 2020-05-29 2022-01-25 Microsoft Technology Licensing, Llc Scheduling of tasks for execution in parallel based on geometric reach
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
CN112306500B (zh) * 2020-11-30 2022-06-07 上海交通大学 一种针对粗粒度可重构结构的降低多类访存冲突编译方法
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources
US20230237013A1 (en) * 2022-01-27 2023-07-27 SambaNova Systems, Inc. System of Heterogeneous Reconfigurable Processors for the Data-Parallel Execution of Applications
WO2024118075A1 (en) * 2022-11-30 2024-06-06 Zeku, Inc. Heterogeneous coarse-grained reconfigurable array based architectures for vector digital signal processors

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001282533A (ja) * 2000-03-30 2001-10-12 Agere Systems Guardian Corp マルチスレッドvliwプロセッサにおけるパケット分割の方法および装置
JP2003076667A (ja) * 2001-09-03 2003-03-14 Matsushita Electric Ind Co Ltd マルチプロセッサシステムおよびプログラム最適化方法
WO2005022380A1 (ja) * 2003-08-29 2005-03-10 Ipflex Inc. データ処理装置
JP2006040254A (ja) * 2004-06-21 2006-02-09 Sanyo Electric Co Ltd リコンフィギュラブル回路および処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956518A (en) * 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
GB0019341D0 (en) * 2000-08-08 2000-09-27 Easics Nv System-on-chip solutions
GB2372348B (en) * 2001-02-20 2003-06-04 Siroyan Ltd Context preservation
US6993639B2 (en) * 2003-04-01 2006-01-31 Hewlett-Packard Development Company, L.P. Processing instruction addressed by received remote instruction and generating remote instruction to respective output port for another cell
US7490218B2 (en) * 2004-01-22 2009-02-10 University Of Washington Building a wavecache
US7853774B1 (en) * 2005-03-25 2010-12-14 Tilera Corporation Managing buffer storage in a parallel processing environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001282533A (ja) * 2000-03-30 2001-10-12 Agere Systems Guardian Corp マルチスレッドvliwプロセッサにおけるパケット分割の方法および装置
JP2003076667A (ja) * 2001-09-03 2003-03-14 Matsushita Electric Ind Co Ltd マルチプロセッサシステムおよびプログラム最適化方法
WO2005022380A1 (ja) * 2003-08-29 2005-03-10 Ipflex Inc. データ処理装置
JP2006040254A (ja) * 2004-06-21 2006-02-09 Sanyo Electric Co Ltd リコンフィギュラブル回路および処理装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6012040905; Mladen Berekovic, Andreas Kanstein, Bingfeng Mei: 'apping MPEG Video Decoders on the ADRES Reconfigurable Array Processor for next generation multi-mod' Proeedings of GSPX 2006: TV to Mobile , 200603, Springer *
JPN6012040906; Bingfeng Mei, Francisco-Javier Vereda, Bart Masschelein: 'MAPPING AN H.264/AVC DECODER ONTO THE ADRES RECONFIGURABLE ARCHITECTURE' International Conference on Field Programmable Logic and Applications, 2005 , 20050826, p622-625, IEEE *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110109590A (ko) * 2010-03-31 2011-10-06 삼성전자주식회사 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법
KR101647817B1 (ko) * 2010-03-31 2016-08-24 삼성전자주식회사 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법
US8850170B2 (en) 2010-11-16 2014-09-30 Samsung Electronics Co., Ltd. Apparatus and method for dynamically determining execution mode of reconfigurable array
KR101754203B1 (ko) * 2011-01-19 2017-07-07 삼성전자주식회사 파워 게이팅 기반의 재구성가능 프로세서, 이를 위한 컴파일 장치 및 방법
US9304967B2 (en) 2011-01-19 2016-04-05 Samsung Electronics Co., Ltd. Reconfigurable processor using power gating, compiler and compiling method thereof
JP2013122764A (ja) * 2011-12-12 2013-06-20 Samsung Electronics Co Ltd 再構成可能プロセッサ及び再構成可能プロセッサのミニコア
KR20130066400A (ko) * 2011-12-12 2013-06-20 삼성전자주식회사 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
KR101901332B1 (ko) * 2011-12-12 2018-09-27 삼성전자 주식회사 부분적 전원 관리에 기반한 재구성가능 프로세서, 이 재구성가능 프로세서를 위한 코드 변환 장치 및 방법
KR101912427B1 (ko) * 2011-12-12 2018-10-29 삼성전자주식회사 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
JP2013178770A (ja) * 2012-02-28 2013-09-09 Samsung Electronics Co Ltd 再構成可能プロセッサ及びそのコード変換装置及び方法
KR20130098773A (ko) * 2012-02-28 2013-09-05 삼성전자주식회사 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법
KR101978409B1 (ko) * 2012-02-28 2019-05-14 삼성전자 주식회사 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법
JP2013200873A (ja) * 2012-03-26 2013-10-03 Samsung Electronics Co Ltd ループのプロローグまたはエピローグの無効演算を処理する装置及び方法

Also Published As

Publication number Publication date
WO2007106959A3 (en) 2007-11-08
WO2007106959A2 (en) 2007-09-27
US8261042B2 (en) 2012-09-04
US20090070552A1 (en) 2009-03-12
GB0605349D0 (en) 2006-04-26
EP2005317A2 (en) 2008-12-24
JP5270529B2 (ja) 2013-08-21

Similar Documents

Publication Publication Date Title
JP5270529B2 (ja) 再構成可能なマルチ処理粗粒アレイ
CN107347253B (zh) 用于专用处理器的硬件指令生成单元
US20230359509A1 (en) Programming Flow for Multi-Processor System
JP6059413B2 (ja) 再構成可能命令セル・アレイ
Kapasi et al. The Imagine stream processor
EP2523120A1 (en) Microcomputer architecture for low power efficient baseband processing
Choi Coarse-grained reconfigurable array: Architecture and application mapping
JP2017091589A (ja) プロセッサコア及びプロセッサシステム
Göhringer et al. High performance reconfigurable multi-processor-based computing on FPGAs
US20160239461A1 (en) Reconfigurable graph processor
Jo et al. SOFF: An OpenCL high-level synthesis framework for FPGAs
WO2018114957A1 (en) Parallel processing on demand using partially dynamically reconfigurable fpga
Toi et al. Optimizing time and space multiplexed computation in a dynamically reconfigurable processor
Forsell et al. An extended PRAM-NUMA model of computation for TCF programming
Owaida et al. Massively parallel programming models used as hardware description languages: The OpenCL case
Wu et al. MT-ADRES: Multithreading on coarse-grained reconfigurable architecture
Rutzig et al. A transparent and energy aware reconfigurable multiprocessor platform for simultaneous ILP and TLP exploitation
Lee et al. Mapping loops on coarse-grain reconfigurable architectures using memory operation sharing
JP2005508029A (ja) リコンフィギュアラブルアーキテクチャのためのプログラム変換方法
Tanase et al. Symbolic Parallelization of Nested Loop Programs
Saldaña et al. Using partial reconfiguration in an embedded message-passing system
Forsell et al. REPLICA MBTAC: multithreaded dual-mode processor
Hußmann et al. Compiler-driven reconfiguration of multiprocessors
Wu et al. MT-ADRES: Multi-threading on coarse-grained reconfigurable architecture
Kiełbik et al. Instructionless processor architecture using dynamically reconfigurable logic

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090928

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090928

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120117

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120416

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120423

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120807

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121106

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121113

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121203

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121210

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130107

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130118

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130509

R150 Certificate of patent or registration of utility model

Ref document number: 5270529

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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