説明

動的再構成回路およびデータ送信制御方法

【課題】コンテキストの切り換え内容に応じた最適なクラスタ間のデータ送信を実現する。
【解決手段】リコンフィグ回路100は、再構成可能なPE(プロセッシングエレメント)の集合からなるクラスタ110を複数備え、PEの処理内容とPE間の接続内容が記述されたコンテキストに応じて、クラスタ110の構成を動的に切り換え可能である。そして、各クラスタ110は、コンテキストの切り換え指示を受け付けると、当該切り換え指示をあらわす報知信号であるインヒビット信号を生成するインヒビット信号生成回路340と、クラスタ110から他のクラスタ110へ送信する出力データに生成された報知信号を付加するインヒビット信号付加回路350と、他のクラスタ110によって生成された報知信号が付加された出力データが送信されてきた場合に、この出力データのクリア処理をおこなう入力データクリア回路360とを備えている。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、再構成可能なプロセッシングエレメント(以下、「PE」という)の集合からなるクラスタを複数備え、当該クラスタはPEの処理内容とPE間の接続内容が記述されたコンテキストに応じて動的に処理内容を切り替え可能な動的再構成回路と、動的再構成回路によるデータ送信制御方法とに関する。
【背景技術】
【0002】
従来より、動的再構成回路(ダイナミックリコンフィギャラブル回路:以下、単に「リコンフィグ回路」とよぶ)は、動作中にリコンフィグ回路内部のPEへの命令内容やPE間の接続を変更する機能を備えている。そして、一般的に、リコンフィグ回路内部のPEへの命令内容やPE間の接続をあらわす情報をコンテキストとよぶ。そして、あらたなコンテキストを読み込んで構成内容を変更することをコンテキスト切り替えという。
【0003】
リコンフィグ回路は、コンテキストを切り替えることによって、PEを時間軸方向に分割して共用することができるため、リコンフィグ回路全体のハードウェア規模を削減することができる。また、リコンフィグ回路は、複数のクラスタから構成されているものもある(たとえば、下記特許文献1参照。)。このようなクラスタ型のリコンフィグ回路の場合、クラスタ単位にコンテキスト切り替えの制御をおこなうことができる。
【0004】
図17は、従来のクラスタの内部構成を示す回路図である。クラスタ110の内部には、シーケンサ310、コンフィグレーションメモリ320、PEアレイ330と、クロスバースイッチ111が搭載されている。シーケンサ310はステートマシンとして、コンフィグレーションメモリ320に格納されているコンテキストの切り替えを制御する。PEアレイ330は、シーケンサ310の制御によってコンフィグレーションメモリ320から読み出されたコンフィグレーションデータに応じてPEの演算内容や接続を変更することができる。
【0005】
また、リコンフィグ回路へのアプリケーションの実装にはC言語によって記述されたソースコードを、リコンフィグ回路用のコンパイラによってコンパイルして使用することが一般的である。このとき、C言語で記述された処理のうち、特に時間を要する制御として、ループ制御が挙げられる。そこで、リコンフィグ回路では、ループ制御をパイプライン演算することで、その処理時間を短縮できるような構成を備えている。具体的には、リコンフィグ回路にカウンタを配置し、このカウンタからの出力を起点として、ループ制御を含んだ演算の制御をおこなうことができる。
【0006】
また、図17にて説明したクラスタ110同士は、それぞれクロスバースイッチ111によってマトリックスに接続されている。また、図18は、従来のクラスタ間のデータ転送例を示す説明図である。ここで、図18を用いて複数のクラスタ110間の接続について説明する。リコンフィグ回路100は、複数のクラスタ110を、クロスバースイッチ111を経由してマトリックス状に接続している。このように、クロスバースイッチ111を用いることによって、クラスタ数を調整し、リコンフィグ回路100の演算器(PE)の搭載個数をカスタマイズすることができる。そして、クラスタ110同士は、クロスバースイッチ111を経由してデータを転送することができる。このとき、クラスタ間を接続する配線には、不図示のDフリップフロップ(DFF)が配置されている。DFFを配置することによって、LSIの動作速度によってクラスタ110間のデータ転送のタイミング制約を満たせないような事態を防ぐことができる。
【0007】
このように、クラスタ型のリコンフィグ回路100は、クラスタ110の数や、クラスタ110間の配線におけるポート数およびポートのbit幅については、実装するアプリケーションおよびLSIの回路面積により、自由に変更可能である。図18の場合、クラスタ数は、4クラスタ構成の例(クラスタ−0,1,2,3)である。したがって、PEの個数を増やしたい場合はクラスタ−ex0,ex1,ex2,ex3のように行方向、列方向にそれぞれクラスタを配置して拡張することができる。
【0008】
また、クラスタ110間の配線におけるポート数およびポートのbit幅は、クラスタ110内の演算器のアーキテクチャに依存する(一般的には、8bit、16bit、32bitのいずれかが採用されることが多い)。ポート数を増やすことによってクラスタ110間で転送可能なデータの種類を増やすことができる。
【0009】
【特許文献1】特開2006−18514号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかしながら、上述したような従来のクラスタ型のリコンフィグ回路100では、コンテキスト切り換えをまたいだ処理(たとえば、コンテキストA→コンテキストBへの切り換えを含むような一連の処理)において、クラスタ110間のデータ送信に不具合が生じる場合があった。
【0011】
コンテキスト切り換えは、クラスタ110内のシーケンサ310で遷移先が先読みできる場合、待機サイクルなしで切り換え可能となる。ところが、異なるクラスタ110間でデータ送信をおこなう場合、データ送信元のクラスタ110はデータ送信先のクラスタ110の状態を把握できない。したがって、コンテキストが切り換えられたために、データ送信元のクラスタ110からデータ送信先のクラスタ110にとって不要なデータを送ってしまい、誤動作を起こしてしまう可能性があった。
【0012】
ここでは一例として、図18のような、マトリックス状に接続したクラスタ110群において、クラスタ−0からクラスタ−2とクラスタ−3とにA,Bの2系統のデータを転送する場合を仮定して説明する。ここで、図19は、クラスタごとのコンテキスト切り替えシーケンスを示す説明図である。
【0013】
図18にて説明した各クラスタ110(クラスタ−0,1,2,3)は、内部のシーケンサ310(図17参照)の制御により、所定の時間(time:n)のタイミングでコンテキスト−0からコンテキスト−1への切り換えがおこなわれる(図19参照)。なお、図19に示したクラスタごとの「コンテキスト数字−数字」の表記は、コンテキスト[コンテキスト番号]−[クラスタ番号]を意味する。また、コンテキスト切り換えの際は、待機サイクルなしで、次のコンテキストに遷移することができる。
【0014】
ここで、図19のように、コンテキスト切り換えをまたいでクラスタ110間のデータ転送処理をおこなう場合、上述したクラスタ110間の配線に配置されたDFFが原因となって、リコンフィグ回路100が誤動作を起こす場合がある。図20は、クラスタ間のデータ転送動作を示すタイミングチャートである。図20のタイミングチャートに示すように、クラスタ−2,3、はコンテキスト−1−[2,3]を実行中に、クラスタ−0がコンテキスト−0−0で出力したデータを受け取る(*の部分)。この受け取ったデータは、コンテキスト切り換え間においてクラスタ100間のDFFに保持されていたデータである。
【0015】
図20のように、クラスタ−0からの出力データのうち、A−0〜A−5およびB−0〜B−5がコンテキスト0の処理によって生成され、A−6〜A−10およびB−6〜B−10がコンテキスト1によって生成される。ここで、クラスタ−2,3が、一つ前のコンテキストであるコンテキスト0によって生成された出力データを入力データ(図20の*がついたデータ群)として、継続して使用するのであれば、DFFに保持されていたデータを受け取ったとしても、問題は発生しない。
【0016】
ところが、現在設定されているコンテキスト1によって利用する入力データとして、コンテキスト0の出力データを使用しない場合には、クラスタ110間のFFに保持された一つ前のコンテキスト0のデータを利用すると異なる演算値が出力されたり、誤動作を起こしてしまうことがあった。このような事態を解決するには、コンテキスト切り換え間に空のデータを意図的に流すサイクルを追加しなければならない。結果として、コンテキスト切り換え間に無駄な待ち時間が発生してしまい、リコンフィグ回路の性能低下を引き起こしてしまうという問題があった。
【0017】
この発明は、上述した従来技術による問題点を解消するため、コンテキストの切り換え内容に応じた最適なクラスタ間のデータ送信を実現することのできる動的再構成回路およびデータ送信制御方法を提供することを目的とする。
【課題を解決するための手段】
【0018】
上述した課題を解決し、目的を達成するため、この動的再構成回路は、再構成可能なプロセッシングエレメント(以下、「PE」という)の集合からなるクラスタを複数備え、前記PEの処理内容と前記PE間の接続内容が記述されたコンテキストに応じて前記クラスタの構成を動的に切り換え可能な動的再構成回路であって、前記各クラスタは、前記コンテキストの切り換え指示を受け付けると、当該切り換え指示をあらわす報知信号を生成する信号生成回路と、当該クラスタから他のクラスタへ送信する出力データに前記信号生成回路によって生成された報知信号を付加する信号付加回路と、前記他のクラスタによって生成された報知信号が付加された出力データが送信されてきた場合に、当該出力データのクリア処理をおこなうデータクリア回路とを備えることを要件とする。
【0019】
また、上述した課題を解決し、目的を達成するため、このデータ送信制御方法は、再構成可能なプロセッシングエレメント(以下、「PE」という)の集合からなるクラスタを複数備え、前記PEの処理内容と前記PE間の接続内容が記述されたコンテキストに応じて前記クラスタの処理内容を動的に切り換える動的再構成回路において前記クラスタ間のデータ送信を制御するデータ送信制御方法であって、前記複数のクラスタのうち一のクラスタは、前記コンテキストの切り換え指示を受け付けると、当該切り換え指示をあらわす報知信号を生成する信号生成工程と、当該クラスタからの出力データに前記信号生成工程によって生成された報知信号を付加する信号付加工程と、を含み、前記一のクラスタ以外の他のクラスタは、前記一のクラスタから前記報知信号が付加された出力データが送信されてきた場合に、当該出力データのクリア処理をおこなうデータクリア工程と、を含むことを要件とする。
【0020】
この動的再構成回路およびデータ送信制御方法によれば、コンテキストの切り換えをまたいだ処理の間に出力された出力データに対して報知信号を付加することができる。出力データの送信先となるクラスタは、報知信号の有無によって受信したデータがコンテキストの切り替え前の出力データであるか否かを判断することができるため、コンテキスト切り換えを待たずに次のコンテキストの処理に移行できる。
【発明の効果】
【0021】
この動的再構成回路およびデータ送信制御方法によれば、コンテキストの切り換え内容に応じた最適なクラスタ間のデータ送信を実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【0022】
以下に添付図面を参照して、この動的再構成回路およびデータ送信制御方法の好適な実施の形態を詳細に説明する。この動的再構成回路およびデータ送信制御方法では、クラスタ間を伝送するデータに、コンテキストの切り換え間のデータであることをあらわす報知信号(後述するインヒビット信号)を付加することによって、クラスタ間の最適なデータフローを実現する。
【0023】
[本実施の形態にかかるリコンフィグ回路の概要]
まず、本実施の形態にかかるリコンフィグ回路(動的再構成回路)の概要について説明する。図1は、本実施の形態にかかるリコンフィグ回路の内部のクラスタの接続を示す説明図である。図1のように、リコンフィグ回路100は、クロスバースイッチ111によってマトリックスに接続された複数のクラスタ110によって構成されている。
【0024】
クラスタ110同士を接続する回線には、各クラスタ110によって生成されたデータを出力データとして、特定のクラスタ110へ送信するための複数のポート(たとえば、port0〜port(x))が用意されている。また、本実施の形態の場合、上述したような通常のポートに加えて、本実施の形態の独自構成として、インヒビット信号を送信するための専用ポート(inhibit)を備えている。なお、図1では、簡易的に1回線分の専用ポート(inhibit)を例示しているが、通常は、出力データ用のport1〜port(x)のポートと同数用意されている。
【0025】
そして、本実施の形態では、クラスタ110(たとえば、クラスタ−0)からの出力データを他のクラスタ110(たとえば、クラスタ−2,3)へ送信する際に、同時にインヒビット信号が上述した専用のポートから出力される。クロスバースイッチ111は、他のクラスタ110から送信された出力データが自クラスタ110宛である場合は、この出力データを受け付け、自クラスタ110宛でない場合は、この出力データを送信元であった他のクラスタ110の隣接するクラスタに転送する。すなわち、各クラスタは、それぞれ宛先に設定された場合は、出力データを受信し、それ以外であれば、送信先に転送するためにスルーする。そして、出力データを受け付けた場合に、インヒビット信号が付加されているかに応じて、送信先のクラスタ110のコンテキストの切り換え状況を判断することができる。
【0026】
以下に、本実施の形態にかかるリコンフィグ回路が上述のような処理をおこなうための具体的な構成について説明する。
【0027】
<リコンフィグ回路の全体構成>
最初に、図1を用いて本実施の形態にかかるリコンフィグ回路100の全体構成について説明する。リコンフィグ回路(動的再構成回路)100は、複数のクラスタ110から構成されている。この各クラスタ110は、コンテキストに応じてPE命令およびPE間接続を動的に変更可能なPE群によって構成されている(詳細な構成については後述する)。そして、リコンフィグ回路100は、上位プログラムと連動して指定されたコンテキストに設定されたPE命令およびPE間接続を実行し、ユーザの消耗する動作を実現することができる。
【0028】
また、上述したようなリコンフィグ回路100によってユーザが用意したプログラムを実行するには、プログラムをリコンフィグ回路100の構成に応じてコンパイルしなければならない。したがって、つぎに、リコンフィグ回路100の実際の使用手順について説明する。なお、ここでは、利用者がC言語で記述したプログラムを用意し、リコンフィグ回路100によって実行させるものとする。当然のことながら、他の高級言語を利用して記述されたプログラムを利用することもできる。そのような場合には、記述された高級言語に対応したコンパイラを用意すればよい。
【0029】
図2は、リコンフィグ回路の使用手順を示す説明図である。図2のように、まず、リコンフィグ回路用Cソースコード201を用意する。このリコンフィグ回路用Cソースコード201は、リコンフィグ回路100の利用者によって用意されたC言語によって記述されたソースコードである。
【0030】
リコンフィグ回路100を使用するには、まず、リコンフィグ回路用Cソースコード201をリコンフィグ回路用コンパイラで翻訳し(ステップS210)、コンフィグレーションデータ202を作成する。リコンフィグ回路用コンパイラは、ここで使用するリコンフィグ回路用のコンパイラであり、リコンフィグ回路のハードウェア構成に対応したコンフィグレーションデータ202を生成する。
【0031】
リコンフィグ回路用コンパイラによるコンパイルが終了すると、続いて、リコンフィグ回路100の起動要求をおこなう(ステップS220)。起動要求後、ステップS210によって生成されたコンフィグレーションデータ202がロードされ(ステップS230)、リコンフィグ回路100の動作が開始される(ステップS240)。
【0032】
このステップS240の処理の内容を詳しく説明すると、リコンフィグ回路100の起動によって各クラスタ110が起動されると、各クラスタ110内部のコンフィグレーションメモリにコンフィグレーションデータ202が書き込まれる。そして、各クラスタ110のシーケンサによってコンフィグレーションメモリに書き込まれたコンフィグレーションデータ202に従ったコンテキスト切り替え処理(203)がおこなわれ、コンフィグレーションデータ202に応じたコンテキスト切り替えが終了すると、一連のリコンフィグ回路動作を終了する(ステップS250)。
【0033】
このように、本実施の形態にかかるリコンフィグ回路100は、実行させるプログラムに応じてそれぞれ異なるコンテキストが設定されるとともに、処理の流れに応じてこれらコンテキストは動的に切り換えられる。
【0034】
<クラスタの構成>
つぎに、リコンフィグ回路100の内部に配置された各クラスタ110の構成について説明する。図3は、本実施の形態にかかるクラスタの構成を示す回路図である。図3のように、クラスタ110は、シーケンサ310と、コンフィグレーションメモリ320と、PEアレイ330とからなる演算処理用の機能部と、クロスバースイッチ111と、インヒビット信号生成回路340と、インヒビット信号付加回路350と、入力データクリア回路360とからなるデータ転送用の機能部とから構成されている。以下、演算処理用の機能部と、データ転送用の機能部とについてそれぞれ説明する。
【0035】
(演算処理用の機能部)
クラスタ110の演算処理に関する動作は、上位プログラムからコンテキストの開始指示(信号)がトリガとなって開始される。また、図1にて説明したように、クラスタ110には、クロスバースイッチ111が備えられ、このクロスバースイッチ111を経由して他のクラスタ110への外部出力をおこなうとともに、他のクラスタ110からの外部入力の受け付けもおこなう。
【0036】
各構成について具体的に説明すると、まず、シーケンサ310は、上位プログラムから開始指示(信号)を受け付けると、コンテキスト切り替え指示と、クラスタ内PEの接続および命令設定の変更をおこなうため、コンフィグレーションメモリ320にPC値(プログラムカウンタ値)を出力するとともに、PEアレイ330にcontext start信号を出力する。context start信号を受け取ったPEアレイ330は、設定されたコンテキストの処理が終了すると、シーケンサ310にpredicate信号を送信する。predicate信号とは、PEアレイ330内の制御とシーケンサ310にコンテキストの切り替え指示をおこなう信号であり、詳細については後述する。そして、シーケンサ310は、predicate信号を受け取ると、つぎのコンテキストを切り替えるため、コンフィグレーションメモリ320とPEアレイ330にそれぞれ上述の出力をおこなう。
【0037】
コンフィグレーションメモリ320には、図2のステップS210によって作成されたコンフィグレーションデータ202が格納されている。コンフィグレーションデータ202は、リコンフィグ回路によって実行させるコンテキストによって構成されている。したがって、コンフィグレーションメモリ320は、シーケンサ310からPC値が入力されると、対応するコンテキストのコンフィグレーションデータ202をconfiguration信号として、PEアレイ330の各機能部に出力する。また、コンフィグレーションメデータ202の中には、今回追加されたデータ転送用の機能部であるインヒビット信号生成回路340、インヒビット信号付加回路350および入力データクリア回路360の動作を制御する信号が含まれている。したがって、これらの機能部340〜360にもそれぞれコンフィグレーションデータをconfiguration信号として出力している。
【0038】
なお、コンテキストは、ユーザがC言語で記述したプログラムをコンパイルすることによって生成されるため、プログラムの記述内容によってコンテキスト数は異なる。また、コンパイルは、リコンフィグ回路のハードウェア構成に基づいたコンテキストを生成する。したがって、本実施の形態の場合、リコンフィグ回路のクラスタ110の構成に基づいたコンテキストが生成される。
【0039】
PEアレイ330は、コンテキストの設定に応じた演算をおこなう機能部であり、信号変換器331と、PE332と、ネットワーク回路333と、カウンタ334とから構成されている。信号変換器331は、受信したcontext start信号をpredicate信号に変換する機能部である。
【0040】
また、PE332は、演算子でありコンフィグレーションメモリ320から入力されたconfiguration信号によって指定された演算をおこなう。ネットワーク回路333は、PEアレイ330内の信号変換器331、PE332およびカウンタ334をコンフィグレーションメモリ320から入力されたconfiguration信号に応じて接続する。カウンタ334は、コンフィグレーションメモリ320から入力されたconfiguration信号に応じて指定された動作のカウントをおこなう。
【0041】
上述したPEアレイ330の各構成のうち、PE332およびカウンタ334は、複数個配置されている。また、PEアレイ330内では、PE332における演算結果や、カウンタ334の回路出力であるカウント値を伝えるため、ネットワーク回路333を介してdata信号の送受がおこなわれている。この、data信号の接続は、ネットワーク回路333によって動的に変更可能である。
【0042】
(predicate信号について)
つぎに、PEアレイ330内の制御とシーケンサ310にコンテキストの切り替え指示をおこなうpredicate信号について説明する。predicate信号は、2bitの信号であり、PE332内における比較結果、コンテキスト開始・終了を指示するクラスタ内の制御信号である。predicate信号の接続先も、ネットワーク回路333により動的に変更可能である。
【0043】
このpredicate信号は、信号変換器331によって、シーケンサ310からのコンテキスト開始指示(信号)が2bitの信号に変換されたものである。変換されたpredicate信号は、ネットワーク回路333を介してPE332やカウンタ334に出力される。このときは、predicate信号は、具体的には、下記のような意味をあらわす。
【0044】
・2’b=「11」:成立(true)
・2’b=「10」:非成立(false)
・2’b=「01」、「00」:無効(invalid)、すなわち意味を持たない。
【0045】
(データ転送用の機能部)
つぎに、実施の形態にかかるクラスタ110のデータ転送用の機能部について説明する。図3のクラスタ110の構成のうち、クロスバースイッチ111と、インヒビット信号生成回路340、インヒビット信号付加回路350、入力データクリア回路360とは、クラスタ110間のデータ転送を適切におこなうためにあらたに追加された機能部である。なお、クロスバースイッチ111自体は、図17に示したように、従来から搭載されていたが、本実施の形態の場合、データ転送を制御するための機能が拡張させた構成になっている。したがって以下に追加された各回路340〜360とクロスバースイッチ111の拡張機能について説明する。
【0046】
1)インヒビット信号生成回路
まず、インヒビット信号生成回路340について説明する。図4は、インヒビット信号生成回路の構成を示す回路図である。インヒビット信号生成回路340には、PEアレイ330からのpredicate信号が入力され、コンフィグレーションメモリ320からのコンフィグレーションデータ(configuration)が入力される。そして、インヒビット信号生成回路340は、predicate信号をトリガに、コンフィグレーションデータに設定された所定の期間の間インヒビット信号を生成する機能を実現する。
【0047】
具体的に説明すると、インヒビット信号生成回路340は、図4のように、開始信号生成回路341と、3bitカウンタ回路342と、出力回路343とを含んでいる。なお、図4において、predicate信号と、コンフィグレーションデータとの入力線上の数字は、各信号のbit数をあらわしている。
【0048】
個々の機能について説明すると、開始信号生成回路341は、predicate信号として成立をあらわす「11」が入力されたタイミングで3bitカウンタ回路342のカウントを開始させる開始信号を生成する。開始信号生成回路341によって生成された開始信号は、3bitカウンタ回路342に入力される。
【0049】
つぎに、3bitカウンタ回路342は、入力されたコンフィグレーションデータに設定された所定の期間の間、開始信号生成回路341からの開始信号の入力数をカウントする。なお、3bitカウンタ回路342は名称の通り3bitのメモリを備えているため、「000」の無カウント状態を除いた1〜8サイクル(「001〜111」)をカウントすることができる。3bitカウンタ回路342は、カウント動作中には、出力回路343にカウント中であることをあらわすフラグを出力する。
【0050】
そして、出力回路343は、3bitカウンタ回路342からフラグが入力されている期間、インヒビット信号を出力する。出力回路343から出力されたインヒビット信号は、後述するインヒビット信号付加回路350に出力される。このように出力回路343からのインヒビット信号が出力されている期間がそのままインヒビット信号のアサート期間となる。
【0051】
また、図5は、インヒビット信号生成回路の動作を示すタイムチャートである。図5を用いてインヒビット信号の生成動作の具体的なタイミングについて説明する。なお、不図示であるが、リコンフィグ回路100の各クラスタには、共通のクロック信号が入力されている。したがって、各機能部の処理は、図5に示したようなクロック信号(clock)を基準にそれぞれ動作がおこなわれる。
【0052】
また、図5において、predicateは、開始信号生成回路341に入力されているpredicate信号の値(2bit値)をあらわし、configurationは、3bitカウンタ回路342に入力されているコンフィグレーションデータの値(3bit値)をあらわしている。また、inhibitは、インヒビット信号の生成状態をあらわしている。したがって、inhibitがhigh状態を示す期間は、インヒビット信号の生成が継続されていることになる。
【0053】
インヒビット信号の生成が継続される期間が結果としてインヒビット信号のアサート期間となる。そして、本実施の形態の場合は、コンフィグレーションデータの値があらわす設定値+1サイクルがインヒビット信号のアサート期間となる。たとえば、図5のタイムチャートでは、predicate信号の値が最初に「11」に変化した直後の時刻t1のクロックからインヒビット信号の生成がおこなわれる。このとき、コンフィグレーションデータの値は、「001」である。したがって、設定値=1となり、さらに1サイクル追加した計2サイクルの間、インヒビット信号の生成が継続される。
【0054】
同様に、predicate信号の値が再度「11」に変化すると、このときのコンフィグレーションデータの値が「011」となるため、設定値=3となる。したがって、predicate信号の値が「11」となった直後の時刻t2からの4サイクルの間インヒビット信号の生成が継続される。
【0055】
このように、インヒビット信号のアサート期間は、コンフィグレーションデータの設定に応じて変更可能になっている。コンフィグレーションデータの設定に応じて変更可能にすることによって、クラスタ110間の接続線上に配置されたDFFの段数が、タイミング制約により変更された場合にもインヒビット信号生成回路340の構成を変更せずに、そのまま利用することができる。
【0056】
また、クラスタ110間のDFFに保持されたデータ以外にも、不要なデータが存在した場合に、任意のサイクルで出力データをクリアすることもできる。なお、図4にて説明したように、3bitカウンタ回路342によるカウントは8カウントが限界である。したがって、DFFの段数に応じて8カウント以上継続させる場合には、3bit以上のカウンタ回路に拡張することによって対応することができる。
【0057】
2)インヒビット信号付加回路
つぎに、インヒビット信号付加回路350について説明する。図6は、インヒビット信号付加回路の接続を示すブロック図である。インヒビット信号付加回路350は、インヒビット信号生成回路340からインヒビット信号(inhibit)が入力された場合、このインヒビット信号を指定された出力データ用のデータポートに付加する処理をおこなう。ここで、インヒビット信号を付加するかしないかは、コンフィグレーションデータの設定に依存する。したがって、データポート単位にインヒビット信号を付加するか否かを調整することができる。そのため、コンフィグレーションデータのbit数は、少なくともクラスタ出力のポート数分だけ必要となる。本実施の形態では、図1のように(x)個のポートがあるため、xbitとして説明する。
【0058】
また、図7は、インヒビット信号付加回路の動作を示すタイムチャートである。図7は、図3にて説明したクラスタ110の機能部の中から、インヒビット信号付加回路350の周辺接続を抜き出している。この図7を用いて、インヒビット信号付加回路350の動作を説明する。
【0059】
まず、コンフィグレーションメモリ320からは、(x)−bitのコンフィグレーションデータ(configuration)が入力される。インヒビット信号付加回路350は、インヒビット信号生成回路340からインヒビット信号が入力されると、コンフィグレーションメモリ320から入力されたコンフィグレーションデータの設定に応じて、下記の各ポートについてインヒビット信号を付加するか否かを判断する。ここでは、コンフィグレーションデータの設定が”1’b1”のとき、インヒビット信号を付加する。
なお、ここでは、bit位置がポート番号に対応するものとする。
【0060】
コンフィグレーション [0] −>port0 data
コンフィグレーション [1] −>port1 data
: : :
コンフィグレーション[(x)]−>port(x) data
【0061】
この時、インヒビット信号の出力は、データポートごとに存在する。そして、インヒビット信号が付加されたポートからの出力データは、クロスバースイッチ111を経由して他のクラスタ110へ送信される。
【0062】
たとえば、図7のタイムチャートでは、時刻t3にインヒビット信号生成回路340から最初にインヒビット信号が入力されている。このとき、コンフィグレーション[0],[(x)]のビットが立っており、インヒビット信号の付加を指示している。したがってクロスバースイッチ111から出力される出力データのうち、port0,(x)にはインヒビット信号が付加されて、同時に出力されている。一方、時刻t4にもインヒビット信号が入力されている。このときは、コンフィグレーション[1],[(x)]のビットが立っているため、出力データのうち、port1,(x)にインヒビット信号が付加されている。
【0063】
以上説明したように、クラスタ110は、インヒビット信号生成回路340と、インヒビット信号付加回路350とによって出力データにコンテキスト切り換えを報知するための情報を付加することができる。このインヒビット信号によって、出力データの送信先となるクラスタ110が、送信元のクラスタ110のコンテキスト切り換えを判断することができる。
【0064】
3)入力データクリア回路
つぎに、入力データクリア回路360について説明する。上述したように、クラスタ110では、出力データにコンテキスト切り換えを報知するためのインヒビット信号を付加することができる。ここで説明する入力データクリア回路360は、他のクラスタ110からインヒビット信号が付加された出力データが送信されてきた場合に、適切に出力データを処理するための回路である。
【0065】
図8は、入力データクリア回路の接続を示すブロック図である。入力データクリア回路360は、他のクラスタ110から送信されてきた出力データにインヒビット信号付加回路350によってデータポート単位でインヒビット信号が付加された場合、対象となる出力データのクリア処理(ALL−0)をおこなう。ここでも、インヒビット信号が付加されていれば一意的にクリア処理をおこなうのではなく、コンフィグレーションデータの設定によりクリア処理するか否かをデータポート単位で設定することができる。したがって、ここでもコンフィグレーションデータのbit数は、クラスタ110の出力ポート数分だけ必要となる。なお、本実施の形態では、図1のように(x)個のポートがあるため、xbitとして説明する。
【0066】
また、図9は、入力データクリア回路の動作を示すタイムチャートである。図9では、図3にて説明したクラスタ110の機能部の中から、入力データクリア回路360の周辺接続を抜き出している。この図9を用いて、入力データクリア回路360の動作を説明する。
【0067】
入力データクリア回路360には、クロスバースイッチ111経由で他のクラスタ110から送信されてきた出力データが入力される。このとき、出力データに対応するデータポートからは、インヒビット信号生成元のクラスタ110で付加されたインヒビット信号が出力され、同じく入力データクリア回路360に入力される。そして、(x)−bitのコンフィグレーションデータによって、下記の各ポートについて、インヒビット信号が付加された出力データが入力された場合、対応する出力データをクリアするか否かの設定をおこなう。ここでは、インヒビット信号が付加されており、なおかつ、コンフィグレーションデータの設定が”1’b1”である場合に送信されてきた出力データ(このクラス
タ110への入力データ)のクリア処理をおこなう。当然のことながら、インヒビット信号が付加されていない場合や、付加されていてもコンフィグレーションデータの設定が“0”の場合には、送信されてきた出力データをそのままPEアレイ330に出力する。なお、ここでもコンフィグレーションデータのbit位置は、そのままポート番号に対応するものとする。
【0068】
コンフィグレーション [0] −> port0 data
コンフィグレーション [1] −> port1 data
: : :
コンフィグレーション[(x)]−> port(x) data
【0069】
たとえば、図9のタイムチャートでは、時刻t5において、port0,1,(x)からの入力にはインヒビット信号が付加されている。このとき、コンフィグレーション[0],[(x)]のビットが立っており、クリア処理が指示された状態になっている。したがって、対応するport0,(x)のデータはクリア(clear(ALL0))される。次に、時刻t6においてもport0,(x)からの入力にはインヒビット信号が付加されている。そして、コンフィグレーション[(x)]のビットのみが立っているため、対応するport(x)のデータはクリアされる。
【0070】
このように、インヒビット信号の付加によってコンテキスト切り替えをまたいだデータであることが報知される。すなわち、コンフィグレーションデータによってクリアするデータであると指定されている場合には、インヒビット信号の付加された期間をガイドにしてデータをクリアすれば、誤って必要なデータをクリアしてしまうような事態を避けることができる。
【0071】
したがって、図8のように、インヒビット信号によって制御された入力データクリア回路360の出力は、そのままPEアレイ330のネットワーク回路332を経由して各PE332の入力データとなる。このように、クラスタ110の場合、他のクラスタ110から送信されてきた出力データをPEアレイ330に入力する前段に、入力データクリア回路360による判断処理を含むため、コンテキスト切り替えに応じて入力データを選別することができる。
【0072】
4)クロスバースイッチの機能拡張
つぎに、クロスバースイッチ111の機能拡張について説明する。本実施の形態の場合、クロスバースイッチ111が、入力されたデータを他のクラスタ110に転送する場合に、データに付加されているインヒビット信号を次のサイクルのデータにも付加するような機能を持つように拡張している。この機能は、他のクラスタ110へのデータ転送の際に、追加で1段のDFFを経由するためである。
【0073】
図10は、クロスバースイッチの動作例を示す説明図である。図10を用いて上述した拡張機能について説明する。図10のように、クラスタ−0によって生成されたデータを出力データとし、port1を使って、クラスタ−2を経由させてクラスタ−3へ送信するものとする。このとき、クラスタ−0からの出力データにはインヒビット信号が付加されている。
【0074】
クラスタ−0からの出力データは、クラスタ−2をスルーして、クラスタ−3に転送される。このとき、クラスタ−2内のクロスバースイッチ111は、port1の出力に1サイクルのインヒビット信号をあらたに付加する。図11は、クラスタ−2のクロスバースイッチの動作を示すタイムチャートである。図11のように、クラスタ−0からの出力データにおけるインヒビット信号の付加期間の終了直後の時刻t7にクロスバースイッチ111は、1サイクルインヒビット信号の付加期間を延長して出力している。
【0075】
ここで、図12は、クラスタ間のインヒビット信号の接続を示す説明図である。図12では、クラスタ110同士の接続のうち、インヒビット信号の接続線のみをあらわしている。インヒビット信号は出力データと対になっているため、図10のようにインヒビット信号の接続線もデータ送信用の接続線と同様にクロスバースイッチ111を経由している。しかし、図1にも示したように、出力データを送信するための接続線と異なり、インヒビット信号を送信するための接続線上にはDFFが存在しない。したがって、図10,11にて説明したような拡張機能を適用させることによって、インヒビット信号を出力データとずれて付加されないように制御することができる。
【0076】
以上説明したように、本実施の形態にかかるリコンフィグ回路100では、コンテキスト切り替え間にクラスタ110間のDFFに保持される出力データにインヒビット信号が付加される。この処理によって、送信先のクラスタ110も、送信されてきたデータが、コンテキスト切り換え間の出力データ、すなわちハザードデータであることを判断できるようになる。
【0077】
また、インヒビット信号を付加した出力データが送信されてきた送信先となるクラスタ110では、コンフィグレーションデータの指示に応じて、インヒビット信号が有効か、無効かを判断する。この判断によって有効となった場合は、対象となるデータをクリアする。そして、この有効無効の設定はポート単位でコンフィグレーションデータによって設定可能である。すなわち、クリア動作を無効化することもできる。したがって、インヒビット信号が付加されたデータであっても、一意的にクリアするのではなく、そのままデータ切り替え後のコンテキストでも継続して使用することもできる。
【0078】
さらに、インヒビット信号によるクリア動作を適用することで、2回目のコンテキスト開始時に、クラスタへの入力を初期化してから、動作を開始することが可能となる。そのため、各クラスタ110にソフトリセットをおこなう必要がなく、コンテキスト切り換え間の待ち時間を省略することができる。また、上述した処理を適用することで、コンテキスト切り換え間でのポートのシェアが可能となり、クラスタ110間の配線リソースを抑えることができる。
【0079】
<実施例>
つぎに、実施例として、任意のアプリケーションを実行させた場合のリコンフィグ回路100の動作について説明する。図13は、リコンフィグ回路に実装するアプリケーションの一例を示す説明図である。ここでは、図13に示したソースコード1300のようなアプリケーションを実行させた場合の動作を説明する。
【0080】
ソースコード1300には、2つのコンテキストが記述されている。具体的には、記述1301は、コンテキスト−0の処理に相当し、記述1302は、コンテキスト−1の処理に相当する。また、ソースコード1300の記述において、配列変数A[],B[],C[]は、クラスタ110内のPEの一つである、RAMに展開される。また、ソースコード1300の記述において、func−0,func−1,func−2は、クラスタ110内で複数PEを組み合わせて実装する演算フローである。
【0081】
なお、コンテキスト−0に記述されている二つのfor文は、互いに依存関係がないので並列に実行される。そして、コンテキスト−0は、最後のforループの終了を待って、コンテキスト−1への切り換えをおこなう。また、func−0は、コンテキスト−0,コンテキスト−1において継続して実行する。
【0082】
つぎに、リコンフィグ回路100に物理配置配線を上記のアプリケーションを実装した場合の動作について説明する。図14は、コンテキスト−0のリコンフィグ回路の実装例を示す説明図である。また、図15は、コンテキスト−1のリコンフィグ回路の実装例を示す説明図である。
【0083】
図14,15の実装例のようにソースコード1300のアプリケーションを実行させる場合、クラスタ−0,クラスタ−2,クラスタ−3の3クラスタを使用する。なお、これら3つのクラス110タは、同タイミングでコンテキストを切り替える。また、変数配列A[],B[],C[]は全てクラスタ−0内のRAMに展開し、同クラスタ−0内のカウンタで変数を読み出す。そして、カウンタで読み出した配列変数は、クロスバースイッチ11経由でクラスタ−2、クラスタ−3に転送される。このとき、クラスタ110間の転送において、インヒビット信号以外の出力信号(出力データ)は、1段のDFFを経由する(図1参照)。
【0084】
上述した構成のコンテキスト−0からコンテキスト−1への切り換えにおいて、待ち時間を最小(=0)にするため、各コンテキストにおいて、下記のような処理を適用する。また、図16は、図13に例示したアプリケーションの動作を示すタイムチャートである。図16のタイムチャートには、下記のコンテキスト−0,1における処理内容が反映されている。
【0085】
[コンテキスト−0]
コンテキスト−0の終了直前にクラスタ−0内でインヒビット信号を生成し、配列変数A[],B[]にそれぞれ付加する。このときのインヒビット信号の生成期間は、隣接するクラスタ110内のPEの入力までかかるクロックサイクルとなる”2”を設定する。
なお、クラスタ−0からクラスタ−3の転送については、クラスタ−0からクラスタ−3のPEへの入力まで、クラスタ−2を経由するため、必要となるクロックサイクルは、“3”となるが、図10,11にて説明したクロスバースイッチ111の拡張機能によってインヒビット信号の付加期間が1サイクル延びるためそのまま適用される。
【0086】
[コンテキスト−1]
コンテキスト−1では、まず、クラスタ−2において、コンテキスト−0の入力データを継続して使用するための設定を施す。具体的には、クラスタ−2内部の入力データクリア回路360によって、インヒビット信号が付加されたport0からの入力されたデータをクリアしないように設定する。この結果、クラスタ−2についてはコンテキスト切り換えを、待ち時間なしで実行することができる(図16参照)。
【0087】
さらに、コンテキスト−1では、クラスタ−3において、コンテキスト−0の入力データを継続して使用しないための設定を施す。具体的には、クラスタ−3内の入力データクリア回路360において、インヒビット信号が付加されたport0およびport1からの入力をクリアするように設定する。その結果、コンテキスト−0から使用しているport1は、コンテキスト−1で全く別のデータ転送用として使用することができる。また、port0への入力については、コンテキスト−0では使用していないが、コンテキスト−1の開始時に、どんなデータがきているか不明のためリセットする必要がある。これは、上述したインヒビット信号によるクリア動作で達成されるため、ソフトリセット動作をおこなうことなく、即座に次のコンテキストの処理に移行できる。
【0088】
以上説明したように、本実施の形態にかかるリコンフィグ回路は、コンテキスト切り換え間に無駄な待ち時間が発生することがない。したがって、リコンフィグ回路の性能低下を防ぎ、最適なクラスタ間のデータ送信を実現することができる。
【図面の簡単な説明】
【0089】
【図1】本実施の形態にかかるリコンフィグ回路の内部のクラスタの接続を示す説明図である。
【図2】リコンフィグ回路の使用手順を示す説明図である。
【図3】本実施の形態にかかるクラスタの構成を示す回路図である。
【図4】インヒビット信号生成回路の構成を示す回路図である。
【図5】インヒビット信号生成回路の動作を示すタイムチャートである。
【図6】インヒビット信号付加回路の接続を示すブロック図である。
【図7】インヒビット信号付加回路の動作を示すタイムチャートである。
【図8】入力データクリア回路の接続を示すブロック図である。
【図9】入力データクリア回路の動作を示すタイムチャートである。
【図10】クロスバースイッチの動作例を示す説明図である。
【図11】クラスタ−2のクロスバースイッチの動作を示すタイムチャートである。
【図12】クラスタ間のインヒビット信号の接続を示す説明図である。
【図13】リコンフィグ回路に実装するアプリケーションの一例を示す説明図である。
【図14】コンテキスト−0のリコンフィグ回路の実装例を示す説明図である。
【図15】コンテキスト−1のリコンフィグ回路の実装例を示す説明図である。
【図16】図13に例示したアプリケーションの動作を示すタイムチャートである。
【図17】従来のクラスタの内部構成を示す回路図である。
【図18】従来のクラスタ間のデータ転送例を示す説明図である。
【図19】クラスタごとのコンテキスト切り替えシーケンスを示す説明図である。
【図20】クラスタ間のデータ転送動作を示すタイミングチャートである。
【符号の説明】
【0090】
100 リコンフィグ回路(動的再構成回路)
110 クラスタ
111 クロスバースイッチ
310 シーケンサ
320 コンフィグレーションメモリ
330 PEアレイ
331 信号変換器
332 PE
333 ネットワーク回路
334 カウンタ
340 インヒビット信号生成回路
341 開始信号生成回路
342 3bitカウンタ回路
343 出力回路
350 インヒビット信号付加回路
360 入力データクリア回路

【特許請求の範囲】
【請求項1】
再構成可能なプロセッシングエレメント(以下、「PE」という)の集合からなるクラスタを複数備え、前記PEの処理内容と前記PE間の接続内容が記述されたコンテキストに応じて前記クラスタの構成を動的に切り換え可能な動的再構成回路であって、
前記各クラスタは、
前記コンテキストの切り換え指示を受け付けると、当該切り換え指示をあらわす報知信号を生成する信号生成回路と、
当該クラスタから他のクラスタへ送信する出力データに前記信号生成回路によって生成された報知信号を付加する信号付加回路と、
前記他のクラスタによって生成された報知信号が付加された出力データが送信されてきた場合に、当該出力データのクリア処理をおこなうデータクリア回路と、
を備えることを特徴とする動的再構成回路。
【請求項2】
前記各クラスタは、
前記データクリア回路の前段に、前記他のクラスタから送信された出力データの受信を制御するスイッチ回路を備え、
前記スイッチ回路は、前記他のクラスタから送信された出力データが当該クラスタ宛である場合は、当該出力データを前記データクリア回路に出力し、当該クラスタ宛でない場合は、当該出力データを前記他のクラスタ以外の隣接するクラスタに転送することを特徴とする請求項1に記載の動的再構成回路。
【請求項3】
前記信号生成回路は、前記コンテキストの切り換え指示が入力されている間、前記報知信号の生成を継続することを特徴とする請求項1または2に記載の動的再構成回路。
【請求項4】
前記信号生成回路は、前記コンテキストの切り換え指示によって指定されたコンテキストの設定に応じた期間、前記報知信号の生成を継続することを特徴とする請求項1または2に記載の動的再構成回路。
【請求項5】
前記データクリア回路は、前記コンテキストの切り換え指示によって指定されたコンテキストの設定に応じて、前記クリア処理を無効にすることを特徴とする請求項1〜4のいずれか一つに記載の動的再構成回路。
【請求項6】
前記各クラスタは、
前記報知信号を出力する専用ポートを備え、
前記記号付加回路は、前記クラスタから他のクラスタへ送信する出力データの出力に併せて前記信号生成回路によって生成された報知信号を前記専用ポートに出力し、
前記データクリア回路は、前記他のクラスタからの出力データとともに、前記専用ポートから前記他のクラスタによって生成された報知信号が送信されてきた場合に、当該出力データのクリア処理をおこなうことを特徴とする請求項2〜5のいずれか一つに記載の動的再構成回路。
【請求項7】
前記スイッチ回路は、前記他のクラスタから送信された出力データが他のクラスタ宛であり、なおかつ、前記出力データとともに、前記専用ポートから報知信号が送信されてきた場合、当該報知信号の末尾に任意の長さの報知信号を追加可能であることを特徴とする請求項6に記載の動的再構成回路。
【請求項8】
再構成可能なプロセッシングエレメント(以下、「PE」という)の集合からなるクラスタを複数備え、前記PEの処理内容と前記PE間の接続内容が記述されたコンテキストに応じて前記クラスタの処理内容を動的に切り換える動的再構成回路において前記クラスタ間のデータ送信を制御するデータ送信制御方法であって、
前記複数のクラスタのうち一のクラスタは、
前記コンテキストの切り換え指示を受け付けると、当該切り換え指示をあらわす報知信号を生成する信号生成工程と、
当該クラスタからの出力データに前記信号生成工程によって生成された報知信号を付加する信号付加工程と、を含み、
前記一のクラスタ以外の他のクラスタは、
前記一のクラスタから前記報知信号が付加された出力データが送信されてきた場合に、当該出力データのクリア処理をおこなうデータクリア工程と、
を含むことを特徴とするデータ送信制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2010−3058(P2010−3058A)
【公開日】平成22年1月7日(2010.1.7)
【国際特許分類】
【出願番号】特願2008−160430(P2008−160430)
【出願日】平成20年6月19日(2008.6.19)
【出願人】(308014341)富士通マイクロエレクトロニクス株式会社 (2,507)
【Fターム(参考)】