(57)【要約】  ブロックベースのデータフロー命令セットアーキテクチャ(ISA)における、データフロー命令ブロック実行のための粗粒度再構成可能アレイ(CGRA)の構成が開示される。一態様では、タイルのアレイを有するCGRAを備えるCGRA構成回路が提供され、その各々は、機能ユニットおよびスイッチを提供する。CGRA構成回路の命令復号回路は、データフロー命令ブロック内のデータフロー命令をCGRAのタイルのうちの1つにマッピングする。命令復号回路は、データフロー命令を復号し、データフロー命令の機能を提供するためにマッピングされたタイルの機能ユニットのための機能制御構成を生成する。命令復号回路はさらに、マッピングされたタイルの機能ユニットの出力がデータフロー命令のコンシューマ命令に対応する各タイルにルーティングされるように、CGRA内のタイルのパスに沿ったスイッチのためのスイッチ制御構成を生成する。
2018527679.tif 000002
【特許請求の範囲】
【請求項１】
ブロックベースのデータフロー命令セットアーキテクチャ(ISA)の粗粒度再構成可能アレイ(CGRA)構成回路であって、
複数のタイルを備えるCGRAであって、前記複数のタイルのうちの各タイルが機能ユニットおよびスイッチを備える、CGRAと、
命令復号回路と
を備え、前記命令復号回路が、
ブロックベースのデータフローコンピュータプロセッサコアから、複数のデータフロー命令を備えるデータフロー命令ブロックを受信することと、
前記複数のデータフロー命令のデータフロー命令ごとに、
前記データフロー命令を前記CGRAの前記複数のタイルのうちの1つのタイルにマッピングすることと、
前記データフロー命令を復号することと、
前記データフロー命令の機能に対応するように、前記マッピングされたタイルの前記機能ユニットのための機能制御構成を生成することと、
前記データフロー命令のコンシューマ命令ごとに、前記マッピングされたタイルの前記機能ユニットの出力を前記コンシューマ命令に対応する前記CGRAの前記複数のタイルのうちの宛先タイルにルーティングするために、前記CGRAの前記複数のタイルのうちの1つまたは複数のパスタイルの各々の前記スイッチのスイッチ制御構成を生成することと
を行うように構成される、CGRA構成回路。
【請求項２】
前記命令復号回路が、前記スイッチ制御構成を生成する前に、
前記コンシューマ命令に対応する前記CGRAの前記複数のタイルのうちの前記宛先タイルを識別することと、
前記マッピングされたタイルから前記宛先タイルへのパスを備える前記CGRAの前記複数のタイルのうちの前記1つまたは複数のパスタイルを決定することであって、前記1つまたは複数のパスタイルが、前記マッピングされたタイルおよび前記宛先タイルを含む、決定することと
を行うようにさらに構成される、請求項1に記載のCGRA構成回路。
【請求項３】
前記命令復号回路が、前記マッピングされたタイルと前記宛先タイルとの間の最短マンハッタン距離を決定することによって、前記マッピングされたタイルから前記宛先タイルへの前記パスを備える前記CGRAの前記複数のタイルのうちの前記1つまたは複数のパスタイルを決定するように構成される、請求項2に記載のCGRA構成回路。
【請求項４】
前記複数のタイルのうちの各タイルの前記機能ユニットが、複数のワードレベル演算を提供するための論理手段を備え、
前記機能ユニットが、前記生成された機能制御構成に応じて、前記複数のワードレベル演算のうちの1つのワードレベル演算を選択的に実行するように構成される、請求項2に記載のCGRA構成回路。
【請求項５】
前記複数のタイルのうちの各タイルの前記スイッチが、前記タイルの前記機能ユニットおよび前記対応する複数のタイルの複数のスイッチに通信可能に接続されており、
前記スイッチが、前記生成されたスイッチ制御構成に応じて、前記機能ユニットと、前記対応する複数のタイルの前記複数のスイッチのうちの1つまたは複数との間でデータを送信するように構成される、請求項2に記載のCGRA構成回路。
【請求項６】
前記コンシューマ命令が、前記データフロー命令の出力を入力として受信する命令を備える、請求項2に記載のCGRA構成回路。
【請求項７】
前記命令復号回路が、集中型ハードウェアステートマシンをさらに備え、
前記命令復号回路が、マッピングされたタイルごとに前記機能制御構成および前記スイッチ制御構成をCGRA構成バッファに出力するようにさらに構成される、請求項1に記載のCGRA構成回路。
【請求項８】
前記命令復号回路が、それぞれが前記CGRAの前記複数のタイルのうちの1つのタイルに統合されている複数の分散デコーダユニットをさらに備え、
前記命令復号回路が、前記マッピングされたタイルに対応する前記複数の分散デコーダユニットのうちの1つの分散デコーダユニットを使用して、各データフロー命令を復号し、マッピングされたタイルごとに前記機能制御構成および前記スイッチ制御構成を生成するように構成される、請求項1に記載のCGRA構成回路。
【請求項９】
前記命令復号回路が、実行時に、前記データフロー命令ブロックを実行するために前記CGRAおよび前記ブロックベースのデータフローコンピュータプロセッサコアのうちの1つを選択するようにさらに構成される、請求項1に記載のCGRA構成回路。
【請求項１０】
前記命令復号回路が、実行時に、マッピングされたタイルごとに前記機能制御構成および前記スイッチ制御構成の生成が成功したかどうかを決定するようにさらに構成され、
前記命令復号回路が、
マッピングされたタイルごとの前記機能制御構成および前記スイッチ制御構成の前記生成が成功したとの決定に応じて、前記データフロー命令ブロックを実行するために前記CGRAを選択することと、
マッピングされたタイルごとの前記機能制御構成および前記スイッチ制御構成の前記生成が成功しなかったとの決定に応じて、前記データフロー命令ブロックを実行するために前記ブロックベースのデータフローコンピュータプロセッサコアを選択することと
を行うように構成される、請求項9に記載のCGRA構成回路。
【請求項１１】
前記命令復号回路が、実行時に、前記CGRAが必要なリソースを提供するかどうかを検出するようにさらに構成され、
前記命令復号回路が、
前記CGRAが前記必要なリソースを提供するとの決定に応じて、前記データフロー命令ブロックを実行するために前記CGRAを選択することと、
前記CGRAが前記必要なリソースを提供していないとの決定に応じて、前記データフロー命令ブロックを実行するために、前記ブロックベースのデータフローコンピュータプロセッサコアを選択することと
を行うように構成される、請求項9に記載のCGRA構成回路。
【請求項１２】
集積回路(IC)に統合される、請求項1に記載のCGRA構成回路。
【請求項１３】
セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、モバイル電話、セルラー電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、携帯音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤで構成されるグループから選択されるデバイスに統合される、請求項1に記載のCGRA構成回路。
【請求項１４】
ブロックベースのデータフロー命令セットアーキテクチャ(ISA)におけるデータフロー命令ブロック実行のための粗粒度再構成可能アレイ(CGRA)を構成するための方法であって、
命令復号回路によって、ブロックベースのデータフローコンピュータプロセッサコアから、複数のデータフロー命令を備えるデータフロー命令ブロックを受信するステップと、
前記複数のデータフロー命令のデータフロー命令ごとに、
前記データフロー命令をCGRAの複数のタイルのうちの1つのタイルにマッピングするステップであって、前記複数のタイルのうちの各タイルが機能ユニットおよびスイッチを備える、ステップと、
前記データフロー命令を復号するステップと、
前記データフロー命令の機能に対応するように、前記マッピングされたタイルの前記機能ユニットのための機能制御構成を生成するステップと、
前記データフロー命令のコンシューマ命令ごとに、前記マッピングされたタイルの前記機能ユニットの出力を前記コンシューマ命令に対応する前記CGRAの前記複数のタイルのうちの宛先タイルにルーティングするために、前記CGRAの前記複数のタイルのうちの1つまたは複数のパスタイルの各々の前記スイッチのスイッチ制御構成を生成するステップと
を備える、方法。
【請求項１５】
前記スイッチ制御構成を生成する前に、
前記コンシューマ命令に対応する前記CGRAの前記複数のタイルのうちの前記宛先タイルを識別するステップと、
前記マッピングされたタイルから前記宛先タイルへのパスを備える前記CGRAの前記複数のタイルのうちの前記1つまたは複数のパスタイルを決定するステップであって、前記1つまたは複数のパスタイルが、前記マッピングされたタイルおよび前記宛先タイルを含む、ステップと
をさらに備える、請求項14に記載の方法。
【請求項１６】
前記マッピングされたタイルから前記宛先タイルへの前記パスを備える、前記CGRAの前記複数のタイルのうちの前記1つまたは複数のパスタイルを決定するステップが、前記マッピングされたタイルと前記宛先タイルとの間の最短マンハッタン距離を決定するステップを備える、請求項15に記載の方法。
【請求項１７】
前記命令復号回路が、集中型ハードウェアステートマシンを備え、
前記方法が、マッピングされたタイルごとに前記機能制御構成および前記スイッチ制御構成をCGRA構成バッファに出力するステップをさらに備える、請求項14に記載の方法。
【請求項１８】
前記命令復号回路が、それぞれが前記CGRAの前記複数のタイルのうちの1つのタイルに統合されている複数の分散デコーダユニットを備え、
前記方法が、前記マッピングされたタイルに対応する前記複数の分散デコーダユニットのうちの1つの分散デコーダユニットを使用して、各データフロー命令を復号し、マッピングされたタイルごとに前記機能制御構成および前記スイッチ制御構成を生成するステップをさらに備える、請求項14に記載の方法。
【請求項１９】
実行時に、前記データフロー命令ブロックを実行するために、前記CGRAおよび前記ブロックベースのデータフローコンピュータプロセッサコアのうちの1つを選択するステップをさらに備える、請求項14に記載の方法。
【請求項２０】
実行時に、マッピングされたタイルごとに前記機能制御構成および前記スイッチ制御構成の生成が成功したかどうかを決定するステップをさらに備え、
前記方法が、
マッピングされたタイルごとの前記機能制御構成および前記スイッチ制御構成の前記生成が成功したとの決定に応じて、前記データフロー命令ブロックを実行するために前記CGRAを選択するステップと、
マッピングされたタイルごとの前記機能制御構成および前記スイッチ制御構成の前記生成が成功しなかったとの決定に応じて、前記データフロー命令ブロックを実行するために前記ブロックベースのデータフローコンピュータプロセッサコアを選択するステップと
をさらに備える、請求項19に記載の方法。
【請求項２１】
実行時に、前記CGRAが必要なリソースを提供するかどうかを決定するステップをさらに備え、
前記方法が、
前記CGRAが前記必要なリソースを提供するとの決定に応じて、前記データフロー命令ブロックを実行するために前記CGRAを選択するステップと、
前記CGRAが前記必要なリソースを提供していないとの決定に応じて、前記データフロー命令ブロックを実行するために、前記ブロックベースのデータフローコンピュータプロセッサコアを選択するステップと
を備える、請求項19に記載の方法。
【請求項２２】
複数のタイルを備えるCGRAを構成するための、ブロックベースのデータフロー命令セットアーキテクチャ(ISA)の粗粒度再構成可能アレイ(CGRA)構成回路であって、前記複数のタイルのうちの各タイルが機能ユニットおよびスイッチを備え、前記CGRA構成回路が、
ブロックベースのデータフローコンピュータプロセッサコアから、複数のデータフロー命令を備えるデータフロー命令ブロックを受信するための手段と、
前記複数のデータフロー命令のデータフロー命令ごとに、
前記データフロー命令をCGRAの複数のタイルのうちの1つのタイルにマッピングするための手段と、
前記データフロー命令を復号するための手段と、
前記データフロー命令の機能に対応するように、前記マッピングされたタイルの前記機能ユニットの機能制御構成を生成するための手段と、
前記データフロー命令のコンシューマ命令ごとに、前記マッピングされたタイルの前記機能ユニットの出力を前記コンシューマ命令に対応する前記CGRAの前記複数のタイルのうちの宛先タイルにルーティングするために、前記CGRAの前記複数のタイルのうちの1つまたは複数のパスタイルの各々の前記スイッチのスイッチ制御構成を生成するための手段と
を備える、CGRA構成回路。
【請求項２３】
前記スイッチ制御構成を生成する前に、前記コンシューマ命令に対応する前記CGRAの前記複数のタイルのうちの前記宛先タイルを識別するための手段と、
前記マッピングされたタイルから前記宛先タイルへのパスを備える前記CGRAの前記複数のタイルのうちの前記1つまたは複数のパスタイルを決定するための手段であって、前記1つまたは複数のパスタイルが、前記マッピングされたタイルおよび前記宛先タイルを含む、手段と
をさらに備える、請求項22に記載のCGRA構成回路。
【請求項２４】
前記マッピングされたタイルから前記宛先タイルへの前記パスを備える、前記CGRAの前記複数のタイルのうちの前記1つまたは複数のパスタイルを決定するための前記手段が、前記マッピングされたタイルと前記宛先タイルとの間の最短マンハッタン距離を決定するための手段を備える、請求項23に記載のCGRA構成回路。
【請求項２５】
マッピングされたタイルごとに前記機能制御構成および前記スイッチ制御構成をCGRA構成バッファに出力するための手段をさらに備える、請求項22に記載のCGRA構成回路。
【請求項２６】
前記マッピングされたタイルに対応する複数の分散デコーダユニットのうちの1つの分散デコーダユニットを使用して、各データフロー命令を復号し、マッピングされたタイルごとに前記機能制御構成および前記スイッチ制御構成を生成するための手段をさらに備える、請求項22に記載のCGRA構成回路。
【請求項２７】
実行時に、前記データフロー命令ブロックを実行するために、前記CGRAおよび前記ブロックベースのデータフローコンピュータプロセッサコアのうちの1つを選択するための手段をさらに備える、請求項22に記載のCGRA構成回路。
【請求項２８】
実行時に、マッピングされたタイルごとに前記機能制御構成および前記スイッチ制御構成の生成が成功したかどうかを決定するための手段をさらに備え、
実行時に、前記データフロー命令ブロックを実行するために、前記CGRAおよび前記ブロックベースのデータフローコンピュータプロセッサコアのうちの1つを選択するための前記手段が、
マッピングされたタイルごとの前記機能制御構成および前記スイッチ制御構成の前記生成が成功したとの決定に応じて、前記データフロー命令ブロックを実行するために前記CGRAを選択するための手段と、
マッピングされたタイルごとの前記機能制御構成および前記スイッチ制御構成の前記生成が成功しなかったとの決定に応じて、前記データフロー命令ブロックを実行するために前記ブロックベースのデータフローコンピュータプロセッサコアを選択するための手段と
を備える、請求項27に記載のCGRA構成回路。
【請求項２９】
実行時に、前記CGRAが必要なリソースを提供するかどうかを決定するための手段をさらに備え、
実行時に、前記データフロー命令ブロックを実行するために、前記CGRAおよび前記ブロックベースのデータフローコンピュータプロセッサコアのうちの1つを選択するための前記手段が、
前記CGRAが前記必要なリソースを提供するとの決定に応じて、前記データフロー命令ブロックを実行するために前記CGRAを選択するための手段と、
前記CGRAが前記必要なリソースを提供していないとの決定に応じて、前記データフロー命令ブロックを実行するために、前記ブロックベースのデータフローコンピュータプロセッサコアを選択するための手段と
を備える、請求項27に記載のCGRA構成回路。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、2015年9月22日に出願された「CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)」と題する米国特許出願第14/861,201号の優先権を主張し、その内容全体が参照により本明細書に組み込まれる。
【０００２】
本開示の技術は、一般に、ブロックベースのデータフロー命令セットアーキテクチャ(ISA)に基づくコンピュータプロセッサコアにおけるデータフロー命令ブロックの実行に関する。
【背景技術】
【０００３】
現代のコンピュータプロセッサは、コンピュータプログラムを実行するために、加算、減算、乗算、および/または論理演算などの演算および計算を実行する機能ユニットで構成されている。従来のコンピュータプロセッサでは、これらの機能ユニットを接続するデータパスは物理回路によって定義され、したがって固定されている。これにより、コンピュータプロセッサが、ハードウェアの柔軟性が低下するという代償を払って高性能を提供することが可能になる。
【０００４】
従来のコンピュータプロセッサの高性能と、機能ユニット間のデータフローを変更する能力とを組み合わせるための1つの選択肢は、粗粒度再構成可能アレイ(CGRA)である。CGRAは、構成可能でスケーラブルなネットワーク(非限定的な例として、メッシュなど)によって相互接続された機能ユニットのアレイからなるコンピュータ処理構造である。CGRA内の各機能ユニットは、その隣接ユニットに直接接続され、加算、減算、乗算、および/または論理演算などの従来のワードレベル演算を実行するように構成され得る。各機能ユニットおよびそれらを相互接続するネットワークを適切に構成することによって、オペランド値が「プロデューサ」機能ユニットによって生成され、「コンシューマ」機能ユニットにルーティングされ得る。このようにして、CGRAは、命令ごとのフェッチ、復号、レジスタ読出しおよび名前変更、ならびにスケジューリングなどの動作を必要とすることなしに、異なるタイプの複合機能ユニットの機能を再現するように動的に構成され得る。したがって、CGRAは、消費電力およびチップ面積を削減しながら高い処理性能を提供するための魅力的な選択肢を表し得る。
【０００５】
しかしながら、CGRAの広範な採用は、CGRA構成を抽象化してコンパイラおよびプログラマに公開するためのアーキテクチャサポートの欠如によって妨げられている。特に、従来のブロックベースのデータフロー命令セットアーキテクチャ(ISA)は、プログラムがCGRAの存在および構成を検出することを可能にするための構文的および意味的な機能が欠如している。結果として、処理のためにCGRAを使用するようにコンパイルされたプログラムは、CGRAを提供しないコンピュータプロセッサ上で実行することができない。さらに、たとえCGRAがコンピュータプロセッサによって提供されたとしても、CGRAのリソースは、プログラムが正常に実行できるようにするために、プログラムによって予期される構成と正確に一致しなければならない。
【発明の概要】
【課題を解決するための手段】
【０００６】
詳細な説明において開示される態様は、ブロックベースのデータフロー命令セットアーキテクチャ(ISA)における、データフロー命令ブロック実行のための粗粒度再構成可能アレイ(CGRA)の構成を含む。一態様では、ブロックベースのデータフローISAにCGRA構成回路が設けられる。CGRA構成回路は、データフロー命令ブロックの機能を提供するようにCGRAを動的に構成するように構成される。CGRAはタイルのアレイを備え、タイルの各々は機能ユニットおよびスイッチを提供する。CGRA構成回路の命令復号回路は、データフロー命令ブロック内の各データフロー命令をCGRAのタイルのうちの1つにマッピングする。次いで、命令復号回路は、各データフロー命令を復号し、データフロー命令に対応するタイルの機能ユニットのための機能制御構成を生成する。機能制御構成は、データフロー命令の機能を提供するように機能ユニットを構成するために使用され得る。命令復号回路は、マッピングされたタイルの機能ユニットの出力を、データフロー命令のCGRAの各コンシューマ命令(すなわち、データフロー命令の出力を入力として受信するデータフロー命令ブロック内の他のデータフロー命令)に対応するCGRAの宛先タイルにルーティングするために、CGRAの1つまたは複数のパスタイルの各々のスイッチのスイッチ制御構成をさらに生成する。いくつかの態様では、スイッチ制御構成を生成する前に、命令復号回路は、データフロー命令の各コンシューマ命令に対応するCGRAの宛先タイルを決定し得る。次いで、データフロー命令にマッピングされたタイルから各宛先タイルへのCGRA内のパスを表すパスタイルが決定され得る。このようにして、CGRA構成回路は、データフロー命令ブロックの機能を再現するCGRAの構成を動的に生成し、したがって、ブロックベースのデータフローISAが効率的かつ透過的にCGRAの処理機能を利用することを可能にする。
【０００７】
別の態様では、ブロックベースのデータフローISAのCGRA構成回路が開示される。CGRA構成回路は、複数のタイルを備えるCGRAを備え、複数のタイルの各タイルは機能ユニットおよびスイッチを備える。CGRA構成回路は命令復号回路をさらに備える。命令復号回路は、ブロックベースのデータフローコンピュータプロセッサコアから、複数のデータフロー命令を備えるデータフロー命令ブロックを受信するように構成される。命令復号回路は、複数のデータフロー命令のデータフロー命令ごとに、データフロー命令をCGRAの複数のタイルのうちの1つのタイルにマッピングし、データフロー命令を復号するようにさらに構成される。命令復号回路はまた、データフロー命令の機能に対応するように、マッピングされたタイルの機能ユニットの機能制御構成を生成するように構成される。命令復号回路は、データフロー命令のコンシューマ命令ごとに、マッピングされたタイルの機能ユニットの出力をコンシューマ命令に対応するCGRAの複数のタイルのうちの宛先タイルにルーティングするために、CGRAの複数のタイルのうちの1つまたは複数のパスタイルの各々のスイッチのスイッチ制御構成を生成するようにさらに構成される。
【０００８】
別の態様では、ブロックベースのデータフローISAにおけるデータフロー命令ブロック実行のためのCGRAを構成するための方法が提供される。本方法は、命令復号回路によって、ブロックベースのデータフローコンピュータプロセッサコアから、複数のデータフロー命令を備えるデータフロー命令ブロックを受信するステップを備える。本方法は、複数のデータフロー命令のデータフロー命令ごとに、データフロー命令をCGRAの複数のタイルのうちの1つのタイルにマッピングするステップであって、複数のタイルの各タイルが機能ユニットおよびスイッチを備える、ステップをさらに備える。本方法はまた、データフロー命令を復号するステップと、データフロー命令の機能に対応するように、マッピングされたタイルの機能ユニットの機能制御構成を生成するステップとを備える。本方法は、データフロー命令のコンシューマ命令ごとに、マッピングされたタイルの機能ユニットの出力をコンシューマ命令に対応するCGRAの複数のタイルのうちの宛先タイルにルーティングするために、CGRAの複数のタイルのうちの1つまたは複数のパスタイルの各々のスイッチのスイッチ制御構成を生成するステップをさらに備える。
【０００９】
別の態様では、複数のタイルを備えるCGRAを構成するためのブロックベースのデータフローISAのCGRA構成回路であって、複数のタイルの各タイルが機能ユニットおよびスイッチを備える、CGRA構成回路が提供される。CGRA構成回路は、ブロックベースのデータフローコンピュータプロセッサコアから、複数のデータフロー命令を備えるデータフロー命令ブロックを受信するための手段を備える。CGRA構成回路は、複数のデータフロー命令のデータフロー命令ごとに、データフロー命令をCGRAの複数のタイルのうちの1つのタイルにマッピングするための手段と、データフロー命令を復号するための手段とをさらに備える。CGRA構成回路はまた、データフロー命令の機能に対応するように、マッピングされたタイルの機能ユニットの機能制御構成を生成するための手段を備える。CGRA構成回路は、データフロー命令のコンシューマ命令ごとに、マッピングされたタイルの機能ユニットの出力をコンシューマ命令に対応するCGRAの複数のタイルのうちの宛先タイルにルーティングするために、CGRAの複数のタイルのうちの1つまたは複数のパスタイルの各々のスイッチのスイッチ制御構成を生成するための手段をさらに備える。
【図面の簡単な説明】
【００１０】
【図１】粗粒度再構成可能アレイ(CGRA)構成回路が使用され得る、ブロックベースのデータフロー命令セットアーキテクチャ(ISA)に基づく例示的なブロックベースのデータフローコンピュータプロセッサコアのブロック図である。
【図２】データフロー命令ブロック実行のためのCGRAを構成するように構成されたCGRA構成回路の例示的な要素のブロック図である。
【図３】図2のCGRA構成回路によって処理されるべき一連のデータフロー命令を備える例示的なデータフロー命令ブロックを示す図である。
【図４Ａ】図3のデータフロー命令の機能を提供するために図2のCGRAの構成を生成するための、図2のCGRA構成回路内の例示的な要素および通信フローを示すブロック図である。
【図４Ｂ】図3のデータフロー命令の機能を提供するために図2のCGRAの構成を生成するための、図2のCGRA構成回路内の例示的な要素および通信フローを示すブロック図である。
【図４Ｃ】図3のデータフロー命令の機能を提供するために図2のCGRAの構成を生成するための、図2のCGRA構成回路内の例示的な要素および通信フローを示すブロック図である。
【図５Ａ】データフロー命令ブロック実行のためのCGRAを構成するための図2のCGRA構成回路の例示的な動作を示すフローチャートである。
【図５Ｂ】データフロー命令ブロック実行のためのCGRAを構成するための図2のCGRA構成回路の例示的な動作を示すフローチャートである。
【図５Ｃ】データフロー命令ブロック実行のためのCGRAを構成するための図2のCGRA構成回路の例示的な動作を示すフローチャートである。
【図５Ｄ】データフロー命令ブロック実行のためのCGRAを構成するための図2のCGRA構成回路の例示的な動作を示すフローチャートである。
【図６】図2のCGRA構成回路を使用する図1のブロックベースのデータフローコンピュータプロセッサコアを含み得る、例示的なコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【００１１】
次に、図面を参照すると、本開示のいくつかの例示的な態様が記載されている。「例示的」という単語は、本明細書では、「例、事例、または例示として役に立つ」ことを意味するために使用される。本明細書で「例示的」として記載されている任意の態様は、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。
【００１２】
詳細な説明において開示される態様は、ブロックベースのデータフロー命令セットアーキテクチャ(ISA)における、データフロー命令ブロック実行のための粗粒度再構成可能アレイ(CGRA)の構成を含む。一態様では、ブロックベースのデータフローISAにCGRA構成回路が設けられる。CGRA構成回路は、データフロー命令ブロックの機能を提供するようにCGRAを動的に構成するように構成される。CGRAはタイルのアレイを備え、タイルの各々は機能ユニットとスイッチを提供する。CGRA構成回路の命令復号回路は、データフロー命令ブロック内の各データフロー命令をCGRAのタイルのうちの1つにマッピングする。次いで、命令復号回路は、各データフロー命令を復号し、データフロー命令に対応するタイルの機能ユニットのための機能制御構成を生成する。機能制御構成は、データフロー命令の機能を提供するように機能ユニットを構成するために使用され得る。命令復号回路は、マッピングされたタイルの機能ユニットの出力を、データフロー命令のCGRAの各コンシューマ命令(すなわち、データフロー命令の出力を入力として受信するデータフロー命令ブロック内の他のデータフロー命令)に対応するCGRAの宛先タイルにルーティングするために、CGRAの1つまたは複数のパスタイルの各々のスイッチのスイッチ制御構成をさらに生成する。いくつかの態様では、スイッチ制御構成を生成する前に、命令復号回路は、データフロー命令の各コンシューマ命令に対応するCGRAの宛先タイルを決定し得る。次いで、データフロー命令にマッピングされたタイルから各宛先タイルへのCGRA内のパスを表すパスタイルが決定され得る。このようにして、CGRA構成回路は、データフロー命令ブロックの機能を再現するCGRAの構成を動的に生成し、したがって、ブロックベースのデータフローISAが効率的かつ透過的にCGRAの処理機能を利用することを可能にする。
【００１３】
CGRA構成回路の例示的な要素および動作が論議される前に、ブロックベースのデータフローISA(たとえば、非限定的な例としてE2マイクロアーキテクチャ)に基づく例示的なブロックベースのデータフローコンピュータプロセッサコアが説明される。図2に関して以下により詳細に説明するように、例示的なブロックベースのデータフローコンピュータプロセッサコアがCGRAを使用してより優れたプロセッサ性能を達成できるようにするために、CGRA構成回路が使用され得る。
【００１４】
これに関して、図1は、以下により詳細に説明するCGRA構成とともに動作し得る、ブロックベースのデータフローコンピュータプロセッサコア100のブロック図である。ブロックベースのデータフローコンピュータプロセッサコア100は、他の要素の中でも、知られているデジタル論理素子、半導体回路、処理コア、および/またはメモリ構造のうちのいずれか1つ、またはそれらの組合せを包含し得る。本明細書に記載される態様は、要素の任意の特定の配置に限定されず、開示される技法は、半導体ダイまたはパッケージ上の様々な構造およびレイアウトに容易に拡張され得る。図1は、単一のブロックベースのデータフローコンピュータプロセッサコア100を示すが、多くの従来のブロックベースのデータフローコンピュータプロセッサ(図示せず)は、複数の通信可能に結合されたブロックベースのデータフローコンピュータプロセッサコア100を提供することが理解されるべきである。非限定的な例として、いくつかの態様は、32個のブロックベースのデータフローコンピュータプロセッサコア100を備えるブロックベースのデータフローコンピュータプロセッサを提供し得る。
【００１５】
上述のように、ブロックベースのデータフローコンピュータプロセッサコア100は、ブロックベースのデータフローISAに基づいている。本明細書で使用される「ブロックベースのデータフローISA」は、コンピュータプログラムがデータフロー命令ブロックに分割され、データフロー命令ブロックの各々が、原子的に実行される複数のデータフロー命令を備えるISAである。各データフロー命令は、データフロー命令ブロック内のデータフロー命令自体と他のデータフロー命令との間のプロデューサ/コンシューマ関係に関する情報を明示的に符号化する。データフロー命令は、入力オペランドの可用性によって決定される順序で実行される(すなわち、データフロー命令は、データフロー命令のプログラム順序にかかわらず、その入力オペランドのすべてが利用可能になるとすぐに実行が許可される)。データフロー命令ブロック内のすべてのレジスタ書込みおよびストア動作は、データフロー命令ブロックの実行が完了するまでバッファリングされ、その時点で、レジスタ書込みおよびストア動作はともにコミットされる。
【００１６】
図1の例では、ブロックベースのデータフローコンピュータプロセッサコア100は、処理のためのデータフロー命令(図示せず)を提供する命令キャッシュ102を含む。いくつかの態様では、命令キャッシュ102は、オンボードレベル1(L1)キャッシュを備え得る。ブロックベースのデータフローコンピュータプロセッサコア100は、4個の処理「レーン」を含み、それぞれが、1つの命令ウィンドウ104(0)〜104(3)と、2つのオペランドバッファ106(0)〜106(7)と、1つの算術論理ユニット(ALU)108(0)〜108(3)と、1組のレジスタ110(0)〜110(3)とをさらに備える。ストア命令を待ち行列に入れるためのロード/ストアキュー112が設けられ、メモリインターフェースコントローラ114は、オペランドバッファ106(0)〜106(7)、レジスタ110(0)〜110(3)、およびデータキャッシュ116への、およびそこからのデータフローを制御する。いくつかの態様は、データキャッシュ116がオンボードL1キャッシュを備えることを提供し得る。
【００１７】
例示的な動作では、データフロー命令ブロック(図示せず)が命令キャッシュ102からフェッチされ、その中のデータフロー命令(図示せず)が命令ウィンドウ104(0)〜104(3)のうちの1つまたは複数にロードされる。いくつかの態様では、データフロー命令ブロックは、4個のデータフロー命令と128個のデータフロー命令との間の可変サイズを有し得る。命令ウィンドウ104(0)〜104(3)の各々は、必要に応じて、任意のオペランド(図示せず)および命令ターゲットフィールド(図示せず)とともに、各データフロー命令に対応するオペコード(図示せず)を関連付けられるALU108(0)〜108(3)、関連付けられるレジスタ110(0)〜110(3)、またはロード/ストアキュー112に転送する。次いで、各データフロー命令を実行することからの任意の結果(図示せず)が、データフロー命令の命令ターゲットフィールドに基づいて、オペランドバッファ106(0)〜106(7)のうちの1つ、またはレジスタ110(0)〜110(3)に送信される。以前のデータフロー動作からの結果がオペランドバッファ106(0)〜106(7)に記憶されるので、追加のデータフロー命令が実行待ちにされ得る。このようにして、ブロックベースのデータフローコンピュータプロセッサコア100は、データフロー命令ブロックの高性能アウトオブオーダー(OOO)実行を提供し得る。
【００１８】
CGRAを使用するようにコンパイルされたプログラムは、CGRAとともに図1のブロックベースのデータフローコンピュータプロセッサコア100によって実行されると、さらなる性能向上を達成することが可能であり得る。しかしながら、上述したように、ブロックベースのデータフローコンピュータプロセッサコア100がベースとするブロックベースのデータフローISAは、プログラムがCGRAの存在および構成を検出することを可能にするためのアーキテクチャサポートを提供しない場合がある。したがって、CGRAが提供されない場合、処理のためにCGRAを使用するようにコンパイルされたプログラムは、ブロックベースのデータフローコンピュータプロセッサコア100上で実行することができない。さらに、たとえ図1のブロックベースのデータフローコンピュータプロセッサコア100によってCGRAが提供されたとしても、CGRAのリソースは、プログラムが正常に実行できるようにプログラムによって予期される構成と正確に一致しなければならない。
【００１９】
これに関して、図2は、ブロックベースのデータフローコンピュータプロセッサコア100とともに提供されるCGRA構成回路200を示す。CGRA構成回路200は、データフロー命令ブロック実行のためのCGRA202を動的に構成するように構成される。特に、プログラムがCGRA202を使用するように具体的にコンパイルされることを求めるのではなく、CGRA構成回路200は代わりに、データフロー命令ブロック206の複数のデータフロー命令204(0)〜204(X)を分析し、CGRA202がデータフロー命令204(0)〜204(X)を実行するための機能をデータフロー命令ブロック206に提供するためのCGRA構成(図示せず)を生成するように構成される。データフロー命令ブロック206を生成したコンパイラがデータフロー命令204(0)〜204(X)間のプロデューサ/コンシューマ関係に関するすべてのデータを符号化したと仮定すると、CGRA構成回路200は、データフロー命令ブロック206内のデータに基づいてCGRA構成を動的に生成することができる。
【００２０】
図2に示されるように、CGRA構成回路200のCGRA202は、対応する機能ユニット210(0)〜210(3)およびスイッチ212(0)〜212(3)を提供する4個のタイル208(0)〜208(3)で構成される。CGRA202は、例示的な目的のためにのみ4個のタイル208(0)〜208(3)を有するものとして示されており、いくつかの態様では、CGRA202は本明細書に示されたものより多くのタイル208を含み得ることが理解されるべきである。たとえば、CGRA202は、データフロー命令ブロック206内のデータフロー命令204(0)〜204(X)の数と同じかそれ以上の数のタイル208を含み得る。いくつかの態様では、タイル208(0)〜208(3)は、CGRA202内のタイル208(0)〜208(3)の各々の列および行を参照する座標系を使用して参照され得る。したがって、たとえば、タイル208(0)はまた、CGRA202内の列0、行0に位置されていることを示す「タイル0,0」と呼ばれ得る。同様に、タイル208(1)、208(2)、および208(3)は、それぞれ「タイル1,0」、「タイル0,1」および「タイル1,1」と呼ばれ得る。
【００２１】
CGRA202のタイル208(0)〜208(3)の各機能ユニット210(0)〜210(3)は、非限定的な例として、加算、減算、乗算、および/または論理演算などのいくつかの従来のワードレベル演算などを実装するためのロジックを含む。各機能ユニット210(0)〜210(3)は、対応する機能制御構成(FCTL)214(0)〜214(3)を使用して、一度にサポートされる動作のうちの1つを実行するように構成され得る。たとえば、機能ユニット210(0)は、まず、FCTL214(0)によってハードウェア加算器として動作するように構成され得る。その後、FCTL214(0)は、後続の動作のためのハードウェア乗算器として動作するように機能ユニット210(0)を構成するように後で修正され得る。このようにして、機能ユニット210(0)〜210(3)は、FCTL214(0)〜214(3)によって指定される異なる動作を実行するように再構成される。
【００２２】
タイル208(0)〜208(3)のスイッチ212(0)〜212(3)は、双方向矢印216、218、220、および222によって示されるように、それらの関連付けられる機能ユニット210(0)〜210(3)に接続される。いくつかの態様では、スイッチ212(0)〜212(3)の各々は、ローカルポート(図示せず)を介して対応する機能ユニット210(0)〜210(3)に接続され得る。スイッチ212(0)〜212(3)はまた、対応するスイッチ制御構成(SCTL)224(0)〜224(3)を使用して、すべての隣接スイッチ212(0)〜212(3)に接続するように構成され得る。したがって、図2の例において、双方向矢印226によって示されるように、スイッチ212(0)はスイッチ212(1)に接続され、また双方向矢印228によって示されるようにスイッチ212(2)に接続される。双方向矢印230によって示されるように、スイッチ212(1)はスイッチ212(3)にさらに接続され、双方向矢印232によって示されるように、スイッチ212(2)もスイッチ212(3)に接続される。
【００２３】
いくつかの態様では、スイッチ212(0)〜212(3)は、北ポート、東ポート、南ポート、および西ポートと呼ばれるポート(図示せず)を介して接続され得る。したがって、スイッチ制御構成224(0)〜224(3)は、対応するスイッチ212(0)〜212(3)が他のスイッチ212(0)〜212(3)からの入力を受信し、および/または他のスイッチ212(0)〜212(3)に出力を送るポートを指定し得る。非限定的な例として、スイッチ制御構成224(1)は、スイッチ212(1)がその西ポートを介してスイッチ212(0)から機能ユニット210(1)の入力を受信することを指定し得、その南ポートを介して機能ユニット210(1)からスイッチ212(3)への出力を提供し得る。スイッチ212(0)〜212(3)は、スイッチ212(0)〜212(3)の間の任意の所望のレベルの相互接続を可能にするために、図2の例に示されているよりも多いまたは少ないポートを提供し得ることが理解されるべきである。
【００２４】
データフロー命令ブロック206の機能を提供するようにCGRA202を構成するためにCGRA構成回路200によって生成されるCGRA構成は、機能制御構成214(0)〜214(3)およびCGRA202のタイル208(0)〜208(3)のスイッチ制御構成224(0)〜224(3)を含む。機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)を生成するために、CGRA構成回路200は命令復号回路234を含む。命令復号回路234は、矢印236および238によって示されるように、ブロックベースのデータフローコンピュータプロセッサコア100からデータフロー命令ブロック206を受信するように構成される。次いで、命令復号回路234は、CGRA202のタイル208(0)〜208(3)のうちの1つにデータフロー命令204(0)〜204(X)の各々をマッピングする。CGRA202は、データフロー命令ブロック206内のデータフロー命令204(0)〜204(X)の数以上の数のタイル208(0)〜208(3)を提供するように構成されていることが理解されるべきである。いくつかの態様は、データフロー命令204(0)〜204(X)をタイル208(0)〜208(3)にマッピングすることが、データフロー命令204(0)〜204(X)のための命令スロット番号または他のインデックス(図示せず)に基づいて、CGRA202内のタイル208(0)〜208(3)のうちの1つのための列座標および行座標を導出することを備え得ることを提供し得る。非限定的な例として、列座標は、データフロー命令204(0)〜204(X)のうち1つの命令スロット番号をCGRA202の幅で割った余剰として計算され得、行座標は、命令スロット番号とCGRA202の幅の整数商の結果として計算され得る。したがって、たとえば、データフロー命令204(2)の命令スロット番号が2である場合、命令復号回路234は、データフロー命令204(2)をタイル208(2)(すなわち、タイル0,1)にマッピングし得る。データフロー命令204(0)〜204(X)の各々をタイル208(0)〜208(3)のうちの1つにマッピングするための他の手法が使用され得ることが理解されるべきである。
【００２５】
次に、命令復号回路234は、データフロー命令204(0)〜204(X)の各々を復号する。いくつかの態様では、データフロー命令204(0)〜204(X)は連続的に処理されるが、命令復号回路234のいくつかの態様は、複数のデータフロー命令204(0)〜204(X)を並列に処理するように構成され得る。復号に基づいて、命令復号回路234は、データフロー命令204(0)〜204(X)がマッピングされるタイル208(0)〜208(3)に対応する機能制御構成214(0)〜214(3)を生成する。機能制御構成214(0)〜214(3)の各々は、タイル208(0)〜208(3)にマッピングされたデータフロー命令204(0)〜204(X)と同じ動作を実行するために、関連付けられるタイル208(0)〜208(3)の対応する機能ユニット210(0)〜210(3)を構成する。命令復号回路234はさらに、各機能ユニット210(0)〜210(3)の出力(図示せず)が、もしあれば、コンシューマデータフロー命令204(0)〜208(X)がマッピングされるタイル208(0)〜208(3)のうちの1つにルーティングされるように、タイル208(0)〜208(3)のスイッチ212(0)〜212(3)のためのスイッチ制御構成224(0)〜224(3)を生成する。データフロー命令204(0)〜204(X)をマッピングおよび復号し、機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)-224(3)を生成するための動作は、図3および図4A〜図4Cに関して以下により詳細に説明する。
【００２６】
いくつかの態様では、機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)は、矢印240によって示されるように、命令復号回路234によって直接CGRA202にストリーミングされ得る。機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)は、それらが命令復号回路234によって生成されるときにCGRA202に提供されてもよく、機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)のサブセットまたは全体のセットは、同時にCGRA202に提供されてもよい。いくつかの態様は、命令復号回路234によって生成された機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)が、矢印244によって示されるように、CGRA構成バッファ242に出力され得ることを提供し得る。いくつかの態様によるCGRA構成バッファ242は、タイル208(0)〜208(3)の座標でインデックス付けされ、対応するタイル208(0)〜208(3)のための機能制御構成214(0)〜214(3)とスイッチ制御構成224(0)〜224(3)とを記憶するように構成されたメモリアレイ(図示せず)を備え得る。次いで、矢印246によって示されるように、機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)が後にCGRA202に提供され得る。
【００２７】
図2の例においては、命令復号回路234は、データフロー命令ブロック206のデータフロー命令204(0)〜204(X)を処理するためのハードウェアステートマシン(図示せず)を実装する集中回路を備える。しかしながら、いくつかの態様では、機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)を生成するための命令復号回路234の機能は、CGRA202のタイル208(0)〜208(3)内に分散され得る。これに関して、いくつかの態様によるCGRA202のタイル208(0)〜208(3)は、分散デコーダユニット248(0)〜248(3)を提供し得る。そのような態様における命令復号回路234は、データフロー命令204(0)〜204(X)をCGRA202のタイル208(0)〜208(3)にマッピングし得る。分散デコーダユニット248(0)〜248(3)の各々は、命令復号回路234からデータフロー命令204(0)〜204(X)のうちの1つを受信して復号し、関連付けられるタイル208(0)〜208(3)のための対応する機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)を生成するように構成され得る。
【００２８】
いくつかの態様は、CGRA構成回路200が、データフロー命令ブロック206を実行するために、CGRA202またはブロックベースのデータフローコンピュータプロセッサコア100のいずれかを実行時に選択するように構成されることを提供し得る。非限定的な例として、CGRA構成回路200は、実行時に、命令復号回路234が機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)の生成に成功したかどうかを決定し得る。機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)の生成が成功した場合、CGRA構成回路200は、データフロー命令ブロック206を実行するためにCGRA202を選択する。しかしながら、命令復号回路234が機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)の生成に失敗した場合(たとえば、復号中のエラーのため)、CGRA構成回路200は、データフロー命令ブロック206を実行するためにブロックベースのデータフローコンピュータプロセッサコア100を選択する。いくつかの態様では、CGRA構成回路200はまた、実行時に、CGRA202がデータフロー命令ブロック206を実行するために必要とされる、必要なリソースを提供していないと決定した場合、データフロー命令ブロック206を実行するためにブロックベースのデータフローコンピュータプロセッサコア100を選択し得る。たとえば、CGRA構成回路200は、CGRA202が特定の動作をサポートする十分な数の機能ユニット210(0)〜210(3)を欠いていると決定し得る。このようにして、CGRA構成回路200は、データフロー命令ブロック206が正常に実行されることを確実にするための機構を提供し得る。
【００２９】
図2のデータフロー命令204(0)〜204(X)をマッピングおよび復号し、機能制御構成214(0)〜214(3)およびスイッチ制御構成224(0)〜224(3)を生成するための動作の簡略化した説明を提供するため、図3および図4A〜図4Cが提供される。図3は、図2のCGRA構成回路200によって処理されるべき一連のデータフロー命令204(0)〜204(2)を備える例示的なデータフロー命令ブロック206を提供する。図4A〜図4Cは、CGRA202を構成するためにデータフロー命令204(0)〜204(2)を処理中の、図2のCGRA構成回路200内の例示的な要素および通信フローを示す。簡潔にするために、図2の要素は、図3および図4A〜図4Cを説明する際に参照される。
【００３０】
図3において、簡略化した例示的なデータフロー命令ブロック206は、2つのREAD演算300および302(それぞれR0およびR1とも呼ばれる)、ならびに3個のデータフロー命令204(0)、204(1)および204(2)(それぞれI0、I1、およびI2と呼ばれる)を含む。READ演算300および302は、データフロー命令ブロック206に入力値aおよびbを提供するための演算を表し、したがってこの例の目的でデータフロー命令204とはみなされない。READ演算300はデータフロー命令I0 204(0)に第1のオペランドとして値aを提供し、READ演算302はデータフロー命令I0 204(0)に第2のオペランドとして値bを供給する。
【００３１】
上述したように、データフロー命令ブロック実行においては、データフロー命令204(0)〜204(2)の各々は、その入力オペランドのすべてが利用可能になるとすぐに実行し得る。図3に示されるデータフロー命令ブロック206において、値aおよびbがデータフロー命令I0 204(0)に提供されると、データフロー命令I0 204(0)は実行を続行し得る。この例におけるデータフロー命令I0 204(0)は、入力値aおよびbを合計し、データフロー命令I1 204(1)およびデータフロー命令I2 204(2)の両方に入力オペランドとして結果cを提供するADD命令である。結果cを受信すると、データフロー命令I1 204(1)が実行される。図3の例において、データフロー命令I1 204(1)は、値cをそれ自体で乗算し、結果dをデータフロー命令I2 204(2)に提供するMULT命令である。データフロー命令I2 204(2)は、データフロー命令I0 204(0)およびデータフロー命令I1 204(1)の両方からその入力オペランドを受信した後にのみ実行可能である。データフロー命令I2 204(2)は、値cおよびdを乗算し、最終出力値eを提供するMULT命令である。
【００３２】
次に図4Aを参照すると、CGRA構成回路200による図3のデータフロー命令ブロック206の処理が開始される。明瞭化のために、命令復号回路234などの、図2に示されるCGRA構成回路200のいくつかの要素は、図4A〜図4Cから省略されている。図4Aに見られるように、CGRA構成回路200は、CGRA202のタイル208(0)(本明細書では「マッピングされたタイル208(0)」とも呼ばれる)にデータフロー命令I0 204(0)を最初にマッピングする。CGRA構成回路200は、値a 400およびb 402を、それぞれ入力404、406としてマッピングされたタイル208(0)に提供するようにCGRA202を構成する。CGRA構成回路200の命令復号回路234は、データフロー命令I0 204(0)を復号し、次いで、データフロー命令I0 204(0)のADD機能に対応するように機能制御構成214(0)を生成する。
【００３３】
次に、CGRA構成回路200の命令復号回路234は、そのコンシューマ命令を識別するためにデータフロー命令I0 204(0)を分析する。この例では、データフロー命令I0 204(0)は、その出力を、データフロー命令I1 204(1)とデータフロー命令I2 204(2)(「コンシューマ命令204(1)および204(2)」とも呼ばれる)の両方に提供する。その分析に基づいて、CGRA構成回路200は、コンシューマ命令204(1)および204(2)がそれぞれマッピングされている宛先タイル208(1)および208(2)(すなわち、機能ユニット210(0)の出力が送信されるべきタイル208(0)〜208(3))を識別する。次いで、CGRA構成回路200は、マッピングされたタイル208(0)から宛先タイル208(1)および208(2)の各々までのパスを備える1つまたは複数のタイル208(0)〜208(3)(本明細書では「パスタイル」と呼ばれる)を決定する。「パスタイル」は、機能ユニット210(0)の出力を宛先タイル208(1)および208(2)にルーティングするためにスイッチ212(0)〜212(3)が構成されなければならないCGRA202の各タイル208(0)〜208(3)を表す。いくつかの態様では、パスタイルは、マッピングされたタイル208(0)と宛先タイル208(1)および208(2)の各々との間の最短マンハッタン距離を決定することによって決定され得る。
【００３４】
図4Aの例においては、宛先タイル208(1)および208(2)は、マッピングされたタイル208(0)に直接隣接して配置されているので、マッピングされたタイル208(0)および宛先タイル208(1)および208(2)はスイッチ構成が必要な唯一のパスタイルである。したがって、CGRA構成回路200の命令復号回路234は、出力408を宛先タイル208(1)のスイッチ212(1)にルーティングするために、マッピングされたタイル208(0)のスイッチ212(0)のスイッチ制御構成224(0)を生成し、出力408を入力として受信するために、スイッチ212(1)のスイッチ制御構成224(1)を生成する。CGRA構成回路200はまた、出力410を宛先タイル208(2)のスイッチ212(2)にルーティングするために、マッピングされたタイル208(0)のスイッチ212(0)のスイッチ制御構成224(0)を生成し、出力410を入力として受信するためにスイッチ212(2)のスイッチ制御構成224(2)を生成する。
【００３５】
図4Bにおいて、CGRA構成回路200の命令復号回路234は、データフロー命令I1 204(1)をマッピングされたタイル208(1)にマッピングする。CGRA構成回路200の命令復号回路234は、データフロー命令I1 204(1)を復号し、データフロー命令I1 204(1)のMULT機能に対応するように機能制御構成214(1)を生成する。次いで、CGRA構成回路200は、データフロー命令I2 204(2)をデータフロー命令I1 204(1)のためのコンシューマ命令204(2)として識別し、さらに、コンシューマ命令204(2)がマッピングされる宛先タイル208(2)を識別する。
【００３６】
図4Bに見られるように、宛先タイル208(2)は、マッピングされたタイル208(1)に直接隣接していない。したがって、CGRA構成回路200は、中間タイル208(3)を通じて、マッピングされたタイル208(1)から宛先タイル208(2)へのパスを決定する。したがって、パスは、パスタイル208(1)、208(3)、および208(2)として、それぞれマッピングされたタイル208(1)、中間タイル208(3)、および宛先タイル208(2)を含む。次いで、CGRA構成回路200の命令復号回路234は、機能ユニット210(1)からパスタイル208(3)のスイッチ212(3)への出力412をルーティングするために、マッピングされたタイル208(1)のスイッチ212(1)のスイッチ制御構成224(1)を生成する。CGRA構成回路200はまた、出力412を入力として受信するために、スイッチ212(3)のスイッチ制御構成224(3)を生成する。CGRA構成回路200はさらに、出力412を宛先タイル208(2)のスイッチ212(2)にルーティングするために、マッピングされたタイル208(3)のスイッチ212(3)のスイッチ制御構成224(3)を生成し、出力412をスイッチ212(3)からの入力として受信するために宛先タイル208(2)のスイッチ212(2)のスイッチ制御構成224(2)を生成する。スイッチ制御構成224(2)はまた、出力412を宛先タイル208(2)の機能ユニット210(2)に提供するようにスイッチ212(2)を構成する。
【００３７】
次に図4Cを参照すると、CGRA構成回路200の命令復号回路234は、次に、データフロー命令I2 204(2)をマッピングされたタイル208(2)にマッピングし、データフロー命令I2 204(2)を復号する。次いで、機能制御構成214(2)は、データフロー命令I2 204(2)のMULT機能に対応するように生成される。この簡略化した例では、データフロー命令I2 204(2)は、図3のデータフロー命令ブロック206における最後の命令である。したがって、CGRA構成回路200は、図2のブロックベースのデータフローコンピュータプロセッサコア100に値e 414を出力416として提供するために、スイッチ212(2)のスイッチ制御構成224(2)を構成する。
【００３８】
図5A〜図5Dは、データフロー命令ブロック実行のためのCGRA202を構成するための図2のCGRA構成回路200の例示的な動作を示すために提供されるフローチャートである。明瞭化のために、図5A〜図5Dを説明する際に、図2、図、3および図4A〜図4Cの要素が参照される。図5Aにおいて、動作は、CGRA構成回路200の命令復号回路234が、ブロックベースのデータフローコンピュータプロセッサコア100から複数のデータフロー命令204(0)〜204(2)を備えるデータフロー命令ブロック206を受信することから始まる(ブロック500)。したがって、命令復号回路234は、本明細書では、「複数のデータフロー命令を備えるデータフロー命令ブロックを受信するための手段」と呼ばれ得る。次いで、命令復号回路234は、データフロー命令204(0)〜204(2)の各々に対して以下の一連の動作を実行する。命令復号回路234は、CGRA202の複数のタイル208(0)〜208(3)のうちのタイル208(0)にデータフロー命令204(0)をマッピングし、タイル208(0)は、機能ユニット210(0)およびスイッチ212(0)を備える(ブロック502)。これに関して、命令復号回路234は、本明細書では、「データフロー命令をCGRAの複数のタイルのうちの1つのタイルにマッピングするための手段」と呼ばれ得る。次いで、データフロー命令204(0)は、命令復号回路234によって復号される(ブロック504)。したがって、命令復号回路234は、本明細書では、「データフロー命令を復号するための手段」と呼ばれ得る。
【００３９】
いくつかの態様では、命令復号回路234は、CGRA202が必要なリソースを提供するかどうかを決定し得る(ブロック505)。したがって、命令復号回路234は、本明細書では、「実行時に、CGRAが必要なリソースを提供するかどうかを決定するための手段」と呼ばれ得る。必要なリソースは、たとえば、特定の動作をサポートするCGRA202内に十分な数の機能ユニット210(0)〜210(3)を備え得る。決定ブロック505において、CGRA202が必要なリソースを提供していないと決定された場合、処理は図5Dのブロック506に進む。決定ブロック505において、命令復号回路234が、CGRA202が必要なリソースを提供すると決定した場合、命令復号回路234は、データフロー命令204(0)の機能に対応するように、マッピングされたタイル208(0)の機能ユニット210(0)の機能制御構成214(0)を生成する(ブロック507)。したがって、命令復号回路234は、本明細書では、「マッピングされたタイルの機能ユニットの機能制御構成を生成するための手段」と呼ばれ得る。次いで、図5Bのブロック508において処理が再開される。
【００４０】
次に図5Bを参照すると、命令復号回路234は、次にデータフロー命令204(0)のコンシューマ命令204(1)、204(2)ごとに以下の動作を実行する。いくつかの態様では、命令復号回路234は、コンシューマ命令(たとえば、204(1))に対応するCGRA202の複数のタイル208(0)〜208(3)の宛先タイル(たとえば、208(1))を識別し得る(ブロック508)。これに関して、命令復号回路234は、本明細書では、「コンシューマ命令に対応するCGRAの複数のタイルのうちの宛先タイルを識別するための手段」と呼ばれ得る。次いで、命令復号回路234は、マッピングされたタイル(たとえば、208(0))から宛先タイル(たとえば、208(1))へのパスを備える、CGRA202の複数のタイル208(0)〜208(3)のうちの1つまたは複数のパスタイル(たとえば、208(0)、208(1))を決定し得、1つまたは複数のパスタイル(たとえば、208(0)、208(1))はマッピングされたタイル(たとえば、208(0))および宛先タイル(たとえば、208(1))を含む(ブロック510)。したがって、命令復号回路234は、本明細書では、「マッピングされたタイルから宛先タイルへのパスを備えるCGRAの複数のタイルのうちの1つまたは複数のパスタイルを決定する手段」と呼ばれ得る。いくつかの態様では、1つまたは複数のパスタイル(たとえば、208(0)、208(1))を決定するステップは、マッピングされたタイル(たとえば、208(0))と宛先タイル(たとえば、208(1))との間の最短マンハッタン距離を決定するステップを備え得る(ブロック512)。次に、命令復号回路234は、マッピングされたタイル(たとえば、208(0))の機能ユニット(たとえば、210(0))の出力(たとえば、408)を宛先タイル(たとえば、208(1))にルーティングするために、1つまたは複数のパスタイル(たとえば、208(0)、208(1))の各々のスイッチ(たとえば、212(0)、212(1))のスイッチ制御構成(たとえば、224(0)、224(1))を生成する(ブロック514)。したがって、命令復号回路234は、本明細書では、「1つまたは複数のパスタイルの各々のスイッチのスイッチ制御構成を生成するための手段」と呼ばれ得る。次いで、処理は図5Cのブロック516に続く。
【００４１】
図5Cにおいて、命令復号回路234は、処理するべきデータフロー命令(たとえば、204(0))のより多くのコンシューマ命令(たとえば、204(1))が存在するかどうかを決定する(ブロック516)。存在する場合、処理は図5Bのブロック508において再開する。しかしながら、決定ブロック516において、命令復号回路234が、処理するべきコンシューマ命令(たとえば、204(1))はもう存在しないと決定した場合、命令復号回路234は、処理するべきより多くのデータフロー命令204(0)〜204(2)が存在するかどうかを決定する(ブロック518)。より多くのデータフロー命令204(0)〜204(2)が存在する場合、図5Aのブロック502において処理が再開する。決定ブロック518において、命令復号回路234が、すべてのデータフロー命令204(0)〜204(2)が処理されたと決定した場合、いくつかの態様では、命令復号回路234は、マッピングされたタイル(たとえば、208(0))ごとに機能制御構成(たとえば、214(0))およびスイッチ制御構成(たとえば、224(0))をCGRA構成バッファ242に出力し得る(ブロック520)。これに関して、命令復号回路234は、本明細書では、「マッピングされたタイルごとに機能制御構成およびスイッチ制御構成をCGRA構成バッファに出力するための手段」と呼ばれ得る。任意で、処理は、図5Dのブロック522において再開し得る。
【００４２】
図5Dを参照すると、いくつかの態様による命令復号回路234は、マッピングされたタイル(たとえば、208(0))ごとに機能制御構成(たとえば、214(0))およびスイッチ制御構成(たとえば、224(0))の生成が成功したかどうかを決定し得る(ブロック522)。したがって、命令復号回路234は、本明細書では、「実行時に、マッピングされたタイルごとに機能制御構成およびスイッチ制御構成の生成が成功したかどうかを決定するための手段」と呼ばれ得る。マッピングされたタイル(たとえば、208(0))ごとに機能制御構成(たとえば、214(0))およびスイッチ制御構成(たとえば、224(0))の生成が失敗した場合、命令復号回路234は、データフロー命令ブロック206を実行するためにブロックベースのデータフローコンピュータプロセッサコア100を選択し得る(ブロック506)。命令復号回路234が、決定ブロック526において、マッピングされたタイル(たとえば、208(0))ごとに機能制御構成(たとえば、214(0))およびスイッチ制御構成(たとえば、224(0))の生成が成功したと決定した場合、命令復号回路234は、データフロー命令ブロック206を実行するために、CGRA202を選択し得る(ブロック524)。したがって、命令復号回路234は、本明細書では、「実行時に、データフロー命令ブロックを実行するために、CGRAおよびブロックベースのデータフローコンピュータプロセッサコアのうちの1つを選択するための手段」と呼ばれ得る。
【００４３】
本明細書で開示される態様によるブロックベースのデータフローISAにおけるデータフロー命令ブロック実行のためのCGRAを構成するステップは、任意のプロセッサベースのデバイス内に提供されてもよく、それに統合されてもよい。例としては、限定ではないが、セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、モバイル電話、セルラー電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、携帯音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤを含む。
【００４４】
これに関して、図6は、図1のブロックベースのデータフローコンピュータプロセッサコア100を図2のCGRA構成回路200とともに使用することができるプロセッサベースのシステム600の一例を示す。この例では、プロセッサベースのシステム600は1つまたは複数の中央処理装置(CPU)602を含み、それぞれが1つまたは複数のプロセッサ604を含む。図6に示されるように、1つまたは複数のプロセッサ604は、それぞれ、図1のブロックベースのデータフローコンピュータプロセッサコア100、および図2のCGRA構成回路200を備え得る。CPU602は、一時的に記憶されたデータへの迅速なアクセスのために、プロセッサ604に結合されたキャッシュメモリ606を有し得る。CPU602は、システムバス608に結合され、プロセッサベースのシステム600に含まれるデバイスを相互接続することができる。よく知られているように、CPU602は、システムバス608を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU602は、スレーブデバイスの一例として、メモリコントローラ610にバストランザクション要求を通信することができる。図6には示されていないが、複数のシステムバス608が提供され得る
【００４５】
他のデバイスがシステムバス608に接続され得る。図6に示されるように、これらのデバイスは、例として、メモリシステム612、1つまたは複数の入力デバイス614、1つまたは複数の出力デバイス616、1つまたは複数のネットワークインターフェースデバイス618、および1つまたは複数のディスプレイコントローラ620を含むことができる。入力デバイス614は、入力キー、スイッチ、音声プロセッサなどを含むが、これらに限定されない、任意のタイプの入力デバイスを含むことができる。出力デバイス616は、オーディオ、ビデオ、他の視覚インジケータなどを含むが、これらに限定されない、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス618は、ネットワーク622との間でデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク622は、ワイヤードまたはワイヤレスネットワーク、プライベートまたはパブリックネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WAN)、ワイヤレスローカルエリアネットワーク(WLAN)、BLUETOOTH(登録商標)、およびインターネットが含むが、これらに限定されない、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス618は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。メモリシステム612は、1つまたは複数のメモリユニット624(0)〜624(N)を含み得る。
【００４６】
CPU602はまた、1つまたは複数のディスプレイ626に送信される情報を制御するために、システムバス608を介してディスプレイコントローラ620にアクセスするように構成され得る。ディスプレイコントローラ620は、表示されるべき情報をディスプレイ626に適したフォーマットに処理する1つまたは複数のビデオプロセッサ628を介して表示されるべき情報をディスプレイ626に送信する。ディスプレイ626は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
【００４７】
当業者であれば、本明細書で開示される態様に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが電子ハードウェアとして実装され得ることをさらに理解するであろう。本明細書で説明するデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて採用され得る。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであり得、所望の任意のタイプの情報を記憶するように構成され得る。この互換性を明確に説明するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、それらの機能の点で一般的に上述されている。そのような機能がどのように実装されるかは、特定のアプリケーション、設計選択、および/またはシステム全体に課せられた設計制約に依存する。当業者は、特定のアプリケーションごとに様々な方法で説明した機能を実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００４８】
本明細書で開示される態様に関連して説明される様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブルロジックデバイス、ディスクリートゲートまたはトランジスタロジック、ディスクリートハードウェア構成要素、あるいは本明細書に記載の機能を実行するように設計されたそれらの任意の組合せにおいて実装されてもよく、それらによって実行されてもよい。プロセッサは、マイクロプロセッサであってもよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと組み合わせた1つまたは複数のマイクロプロセッサ、あるいは他の任意のそのような構成として実装され得る。
【００４９】
本明細書の例示的な態様のいずれかに記載された動作ステップは、例および議論を提供するために記載される点にも留意されたい。説明した動作は、図示したシーケンス以外の数多くの異なるシーケンスで実行されてよい。さらに、単一の動作ステップにおいて説明した動作は、実際にはいくつかの異なるステップにおいて実行されてよい。さらに、例示的な態様において論じた1つまたは複数の動作ステップが組み合わせられ得る。フローチャートの図に示された動作ステップは、当業者には容易に明らかであるように、多くの異なる変更を受けることがあることを理解されたい。当業者であれば、様々な異なる技術および技法のいずれかを使用して情報および信号が表され得ることも理解するであろう。たとえば、上記の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００５０】
当業者が本開示を作製または使用することを可能にするために、本開示の前述の説明が提供される。本開示の様々な修正が、当業者に容易に明らかになり、本明細書で規定する一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明した例および設計に限定されるものでなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲が与えられるべきである。
【符号の説明】
【００５１】
100  ブロックベースのデータフローコンピュータプロセッサコア
102  命令キャッシュ
104(0)〜104(3)  命令ウィンドウ
106(0)〜106(7)  オペランドバッファ
108(0)〜108(3)  ALU
110(0)〜110(3)  レジスタ
112  ロード/ストアキュー
114  メモリインターフェースコントローラ
116  データキャッシュ
200  CGRA構成回路
202  CGRA
204(0)〜204(X)  データフロー命令
204(0)  データフロー命令I0
204(1)  データフロー命令I1
204(2)  データフロー命令I2
206  データフロー命令ブロック
208  タイル
208(0)〜208(3)  タイル
210(0)〜210(3)  機能ユニット
212(0)〜212(3)  スイッチ
214(0)〜214(3)  機能制御構成(FCTL)
216  双方向矢印
218  双方向矢印
220  双方向矢印
222  双方向矢印
224(0)〜224  スイッチ制御構成(SCTL)
226  双方向矢印
228  双方向矢印
230  双方向矢印
232  双方向矢印
234  命令復号回路
236  矢印
238  矢印
240  矢印
242  CGRA構成バッファ
244  矢印
246  矢印
248(0)〜248(3)  分散デコーダユニット
300  READ演算
302  READ演算
400  値a
402  値b
404  入力
406  入力
408  出力
410  出力
600  プロセッサベースのシステム
602  中央処理装置(CPU)
604  プロセッサ
606  キャッシュメモリ
608  システムバス
610  メモリコントローラ
612  メモリシステム
614  入力デバイス
616  出力デバイス
618  ネットワークインターフェースデバイス
620  ディスプレイコントローラ
622  ネットワーク
624(0)〜624(N)  メモリユニット
626  ディスプレイ
628  ビデオプロセッサ
【図１】
2018527679.tif 000003
【図２】
2018527679.tif 000004
【図３】
2018527679.tif 000005
【図４Ａ】
2018527679.tif 000006
【図４Ｂ】
2018527679.tif 000007
【図４Ｃ】
2018527679.tif 000008
【図５Ａ】
2018527679.tif 000009
【図５Ｂ】
2018527679.tif 000010
【図５Ｃ】
2018527679.tif 000011
【図５Ｄ】
2018527679.tif 000012
【図６】
2018527679.tif 000013
【国際調査報告】
2018527679.tif 000014
2018527679.tif 000015
2018527679.tif 000016