(57)【要約】【課題】動作周波数の高速化と低消費電力化を図った演算回路、集積回路及び処理装置を提供する。【解決手段】シストリックアレイ型回路では、演算結果の一次保持領域として、ＦＦ（Ｄフリップフロップ）１２０が使用されていたが、本発明では、演算結果の一次保持領域としてＤラッチ１１０を採用した。Ｄラッチ１１０は、構造的に２個でＤフリップフロップ１２０と同じ機能であるので、同数のＤフリップフロップ１２０を採用した場合よりも高速な動作が可能になる。また、Ｄラッチ１１０を採用することで、Ｄフリップフロップ１２０を採用した場合よりもＰＥ１００の細やかな制御が可能になり、低消費電力化することができる。【選択図】図３
2009182761.tif 000002
【特許請求の範囲】
【請求項１】
入力されたデータを演算して出力する演算回路であって、
規則的に格子状に配置され、外部から設定された演算機能で演算を実行する複数の演算素子と、
前記複数の演算素子の間に配置され、１の演算素子から出力された演算結果を記憶し、所定時間経過後に該記憶した演算結果を次の演算を実行する演算素子に入力するラッチと、
を備えることを特徴とする演算回路。
【請求項２】
前記複数のラッチは、ゲート端子と入力端子と出力端子とを備え、該ゲート端子から入力されるクロック信号がハイレベルのときに該入力端子から入力されたデータをそのまま該出力端子から出力し、また、前記ゲート端子から入力されるクロック信号がローレベルのときに前記入力端子から入力されるデータを遮断し、それまで入力されていたデータを保持して保持しているデータを前記出力端子から出力するハイラッチと、ゲート端子と入力端子と出力端子とを備え、該ゲート端子から入力されるクロック信号がハイレベルのときに該入力端子から入力されるデータを遮断し、それまで入力されていたデータを保持して保持しているデータを該出力端子から出力し、また、前記クロック信号がローレベルのときに前記入力端子から入力されたデータをそのまま前記出力端子から出力するローラッチと、のいずれかであって、
前記ハイラッチと前記ローラッチとが交互に前記演算素子の間に配置される
ことを特徴とする請求項１に記載の演算回路。
【請求項３】
請求項１または２に記載の演算回路と、
前記演算回路の演算機能を制御する制御部と、
を備える集積回路であって、
前記制御部は、前記演算素子の演算機能を設定し、また、前記ラッチのクロック信号を制御することによって、前記演算回路の演算機能を制御する
ことを特徴とする集積回路。
【請求項４】
請求項３に記載の集積回路と、
前記集積回路に実行させるプログラムを格納するプログラム格納部と、
を備えることを特徴とする処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算回路、集積回路及び処理装置に関する。
【背景技術】
【０００２】
プログラムの実行をハードウェアで直接的に実現するための技術として、ＦＰＧＡ（Field Programmable Gate Array）が知られている（例えば、特許文献１）。
【０００３】
ＦＰＧＡは、プログラムとして論理データを与えることで論理回路間の結線論理を変更し、これによってハードウェア的に演算結果をえることができるようにしたものである。ＦＰＧＡを利用して演算を行うことによって、従来の汎用コンピュータのようなＣＰＵ（Central Processing Unit）による演算よりも非常に高速に演算結果を得ることができる。
【０００４】
また、ＦＰＧＡを動的に再構成することで、回路構成の再利用を図る方法が提案されている。動的変更が可能なタイプのハードウェアを以下リコンフィギュラブルハードウェアという。
【０００５】
リコンフィギュラブルハードウェアにおいて、高い周波数で、かつ多数の命令を実行するため、シストリックアレイが実装されることがある。シストリックアレイとは、単純計算を行うセルを規則正しく配列し、計算に要するデータをパイプライン的に流し込むことによって並列計算を行うものである。リコンフィギュラブルハードウェアに並列パイプライン可能なシストリックアレイを実装することで、リアルタイム処理を行う再構成可能なハードウェアプラットフォームの実現が可能となる。
【０００６】
リコンフィギュラブルハードウェアをＨＤＬ（Hardware Description Language）で回路設定をした場合、論理合成ソフトを使用して回路に変換する。そのため、論理合成ソフトが対応しやすいクロックを基本とした同期設計が主流となっている。従って、シストリックアレイの記憶セルとして、クロックスキューのコントロールが比較的容易なフリップフロップが用いられることが一般的である。
【特許文献１】特許第３５４０７９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
近年、このようなリコンフィギュラブルハードウェアにおいて、動作周波数の高速化と低消費電力化という、相反する要求が高まっており、そのための設計手法、回路構造が求められている。
【０００８】
本発明は、上記実情に鑑みてなされたものであり、動作周波数の高速化と低消費電力化を図った演算回路、集積回路及び処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の第１の観点に係る演算回路は、
入力されたデータを演算して出力する演算回路であって、
規則的に格子状に配置され、外部から設定された演算機能で演算を実行する複数の演算素子と、
前記複数の演算素子の間に配置され、１の演算素子から出力された演算結果を記憶し、所定時間経過後に該記憶した演算結果を次の演算を実行する演算素子に入力するラッチと、
を備えることを特徴とする。
【００１０】
前記複数のラッチは、ゲート端子と入力端子と出力端子とを備え、該ゲート端子から入力されるクロック信号がハイレベルのときに該入力端子から入力されたデータをそのまま該出力端子から出力し、また、前記ゲート端子から入力されるクロック信号がローレベルのときに前記入力端子から入力されるデータを遮断し、それまで入力されていたデータを保持して保持しているデータを前記出力端子から出力するハイラッチと、ゲート端子と入力端子と出力端子とを備え、該ゲート端子から入力されるクロック信号がハイレベルのときに該入力端子から入力されるデータを遮断し、それまで入力されていたデータを保持して保持しているデータを該出力端子から出力し、また、前記クロック信号がローレベルのときに前記入力端子から入力されたデータをそのまま前記出力端子から出力するローラッチと、のいずれかであって、
前記ハイラッチと前記ローラッチとが交互に前記演算素子の間に配置されるように構成されてもよい。
【００１１】
本発明の第２の観点に係る集積回路は、
前記演算回路と、
前記演算回路の演算機能を制御する制御部と、
を備える集積回路であって、
前記制御部は、前記演算素子の演算機能を設定し、また、前記ラッチのクロック信号を制御することによって、前記演算回路の演算機能を制御する
ことを特徴とする。
【００１２】
本発明の第３の観点に係る処理装置は、
前記集積回路と、
前記集積回路に実行させるプログラムを格納するプログラム格納部と、
を備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、演算回路、集積回路及び処理装置の細やかな制御が可能になり、動作周波数を高速化することができる。また、演算回路、集積回路及び処理装置の消費電力を低減することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態に係る演算回路２１、集積回路（リコンフィギュラブルハードウェア２）及び処理装置１０について説明する。図１は本発明の実施の形態に係る処理装置１０の全体構成を示すブロック図である。
【００１５】
図１に示すように、処理装置１０は、リコンフィギュラブルハードウェア２と、コンパイル部３と、記憶部４と、を備える。処理装置１０は、リコンフィギュラブルハードウェア２を備えるコンピュータなどであってもよい。
【００１６】
リコンフィギュラブルハードウェア２は、データ構成や処理アルゴリズムなどに応じて演算機能を変更してデータを処理（演算）する。リコンフィギュラブルハードウェア２は、演算回路２１と、設定部２２と、制御部２３と、内部状態保持回路２４とを備える。
【００１７】
演算回路２１は、入力データを受け取り、所定の演算を施したあと、出力データを出力する回路である。演算回路２１は、制御部２３の制御のもと、設定を変更することが可能である。そしてその設定の変更により演算機能を変更することができる。
【００１８】
演算回路２１を構成するアーキテクチャの一つとして、図２に示すような、シストリックアレイ型回路７０を含む。シストリックアレイ型回路７０は、例えば、２つの入力レジスタ８０と、２つの出力レジスタ９０と、接続される。
【００１９】
シストリックアレイ型回路７０は、所定の演算を実行する回路であり、四則演算など簡単な演算を行う複数のＰＥ（Processor Element）１００から構成される。ＰＥ１００は、規則的に格子状に配置される（この実施の形態では、８×８）。各ＰＥ１００は、所定の単位時間（クロック周期）で演算を実行する。各ＰＥ１００は、任意の演算を実現できるルックアップテーブルと、演算結果の一次保持領域としてレジスタと、を備える。ルックアップテーブルの演算機能は、動的に変更可能である。このルックアップテーブルの演算機能を変更することで、各ＰＥ１００の演算機能を変更することができる。
【００２０】
また、各ＰＥ１００は、隣接するＰＥ１００と直接接続（局所結合）される。各ＰＥ１００が単位時間で直接通信できるのは隣接するＰＥ１００のみである（局所通信）。シストリックアレイ型回路７０上でのデータの送受信は、全て局所結合を通じて局所的に行われる。また、各ＰＥ１００にクロック信号を供給するための配線が接続される。
【００２１】
各ＰＥ１００は、初期状態においては予めデータを保持していない。処理されるデータは入力レジスタ８０に格納され、入力レジスタ８０から一定の時間ごとにシストリックアレイ型回路７０に逐次入力される。また、シストリックアレイ型回路７０から出力レジスタ８０へのデータの出力も逐次的に行われる。各ＰＥ１００における演算は並行して行われ、これらの入出力および演算はパイプライン化され重畳して実行される。
【００２２】
また、各ＰＥ１００が備えるレジスタとして、この実施の形態ではＤラッチ１１０が用いられる。図３（Ａ）に示すように、各ＰＥ１００の出力側にＤラッチ１１０が設けられた構成となる。従来は、図３（Ｂ）に示すように、このような格納領域としてＤフリップフロップ１２０が用いられていた。本発明では、消費電力の低減やクロックスキューを低減するため、格納領域にＤラッチ１１０を採用した。
【００２３】
各Ｄラッチ１１０は、それぞれゲート端子（クロック信号の入力）と入力端子と出力端子とを備える。図３（Ａ）に示すように、Ｄラッチ１１０の入力端子と出力端子とが隣り合うＰＥ１００間に接続された構成となる。
【００２４】
これらのＤラッチ１１０には、Ｈ（ハイ）ラッチ１１０ＡとＬ（ロー）ラッチ１１０Ｂとがある。Ｈラッチ１１０Ａは、クロック信号がハイレベルのときに入力端子から入力されたデータをそのまま出力端子から出力（スルー）し、また、クロック信号がローレベルのときに入力端子から入力されるデータを遮断し、それまで入力されていたデータを保持し保持しているデータを出力端子から出力する。また、Ｈラッチ１１０Ａとは逆にＬラッチ１１０Ｂは、クロック信号がハイレベルのときに該入力端子から入力されるデータを遮断し、それまで入力されていたデータを保持し保持しているデータを該出力端子から出力し、また、クロック信号がローレベルのときに入力端子から入力されたデータをそのまま出力端子から出力（スルー）する。この実施の形態では、Ｈラッチ１１０ＡとＬラッチ１１０Ｂとを交互にＰＥ１００間に接続した構成である。各Ｄラッチ１１０には、各Ｄラッチ１１０を制御するための信号としてクロック信号が入力される。なお、Ｈラッチのクロック信号を反転して入力するようにして、それをＬラッチとしてもよい。
【００２５】
ＰＥ１００のレジスタとして、このようなＤラッチ１１０を採用することで、データのスルーや遮断が容易にクロック信号によりコントロール可能となる。また、Ｄフリップフロップ１２０を採用した場合よりもレイテンシ（Latency）が短くなり、パイプラインの欠点を補うことができる。また、クロック信号の制御によりパイプラインと非パイプラインの処理モードを動的に変更することも可能である（例えば、非パイプラインのＰＥ１００のＤラッチ１１０をスルーにするなど）。
【００２６】
また、Ｄラッチ１１０を採用することで、Ｄフリップフロップ１２０を採用した場合よりもＰＥ１００の細やかな制御が可能になり、低消費電力化することができる。即ち、Ｄフリップフロップ１２０を採用した場合は、使用しないＰＥ１００にもクロック信号を供給する必要があるが、Ｄラッチ１１０を採用した場合は使用しないＰＥ１００のクロック信号をスルーに制御すればよくなる。仮に、Ｄフリップフロップ１２０で同様の制御をしようとすると、配線数が増大し、ゲートサイズが増加し、レイアウト工数も増加し、動作周波数の低下が発生してしまう。
【００２７】
さらに、ＰＥ１００のレジスタとして、このようなＤラッチ１１０を採用することで、Ｄフリップフロップ１２０を採用した場合よりも動作速度を向上させることができる。即ち、Ｄラッチ１１０は、構造的に２個でＤフリップフロップ１２０と同じ機能であるので、同数のＤフリップフロップ１２０を採用した場合よりも高速な動作が可能になる。
【００２８】
図４及び図５は、ＰＥ１００のレジスタとして、Ｄラッチ１１０を採用した場合と、Ｄフリップフロップ１２０を採用した場合と、のデータの流れを比較するための図である。一例として、図４（Ａ）に示すように、４つのＤラッチ１１０を接続した回路にデータＡ、Ｂ、Ｃ、Ｄを順次入力した場合のデータの流れと、図４（Ｂ）に示すように、４つのＤフリップフロップ１２０を接続した回路にデータＡ、Ｂ、Ｃ、Ｄを順次入力した場合のデータの流れと、を比較する。なお、実際はＤラッチ１１０やＤフリップフロップ１２０の間にＰＥ１００が接続されるが、図を簡単にするため、Ｄラッチ１１０やＤフリップフロップ１２０の内部に含まれるとし、ここでは省略する。
【００２９】
Ｄラッチ１１０を採用した場合では、図５（Ａ）に示すように、ＨＬ（Ｈラッチ）１１０Ａには、時刻Ｔ１以前にデータＡが入力され、時刻Ｔ１に入力されているデータＡを出力端子から出力し、Ｈラッチであるのでクロック信号が「０」になるタイミングである時刻Ｔ２にデータＡを保持（ラッチ）する。同様に、時刻Ｔ３にデータＢが入力され、時刻Ｔ４にデータＢを保持する。時刻Ｔ５にデータＣが入力され、時刻Ｔ６にデータＣを保持する。時刻Ｔ７にデータＤが入力され、時刻Ｔ８にデータＤを保持する。このように、クロック周期ＴごとにデータＡ、Ｂ、Ｃ、Ｄが入力される。
【００３０】
ＬＬ（Ｌラッチ）１１０Ｂには、時刻Ｔ１にデータＡが入力され、時刻Ｔ２に入力されているデータＡを出力端子から出力し、Ｌラッチであるのでクロック信号が「１」になるタイミングである時刻Ｔ３にデータＡを保持（ラッチ）する。同様に、時刻Ｔ４にデータＢが入力され、時刻Ｔ５にデータＢを保持する。時刻Ｔ６にデータＣが入力され、時刻Ｔ７にデータＣを保持する。時刻Ｔ８にデータＤが入力され、時刻Ｔ９にデータＤを保持する。
【００３１】
ＨＬ１１０Ｃには、時刻Ｔ２にデータＡが入力され、時刻Ｔ３に入力されているデータＡを出力端子から出力し、Ｈラッチであるのでクロック信号が「０」になるタイミングである時刻Ｔ４にデータＡを保持（ラッチ）し、それと同時にそれまで入力されていたデータＡを出力端子から出力する。同様に、時刻Ｔ５にデータＢが入力され、時刻Ｔ６にデータＢを保持する。時刻Ｔ７にデータＣが入力され、時刻Ｔ８にデータＣを保持する。時刻Ｔ９にデータＤが入力され、時刻Ｔ１０にデータＤを保持する。
【００３２】
ＬＬ１１０Ｄには、時刻Ｔ３にデータＡが入力され、時刻Ｔ４に入力されているデータＡを出力端子から出力し、Ｌラッチであるのでクロック信号が「１」になるタイミングである時刻Ｔ５にデータＡを保持（ラッチ）し、それと同時にそれまで入力されていたデータＡを出力端子から出力する。時刻Ｔ６にデータＢが入力され、時刻Ｔ７にデータＢを保持する。時刻Ｔ８にデータＣが入力され、時刻Ｔ９にデータＣを保持する。時刻Ｔ１０にデータＤが入力され、時刻Ｔ１１にデータＤを保持する。
【００３３】
このように、Ｄラッチ１１０を採用した場合では、時刻Ｔ５（クロック信号の２周期）に演算処理済みのデータＡが出力される。同様にデータＢ〜Ｄについても、入力から２周期後に順次出力される。
【００３４】
一方、ＦＦ（Ｄフリップフロップ）１２０を採用した場合では、図５（Ｂ）に示すように、各ＦＦ１２０Ａ〜１２０Ｄから処理済みのデータが出力されるのにそれぞれクロック信号の１周期の時間を要する。従って、演算処理済みのデータＡ〜Ｄは、入力から４周期後に順次出力されることとなる。
【００３５】
ここで各ＰＥ１００の格納領域としてＤラッチを採用した場合、Ｄフリップフロップを採用した場合に生じるクロックスキューを低減できる。例えば、図６（Ａ）に示すようにフリップフロップ（ＦＦ）Ｍ、Ｎを接続した回路と、図６（Ｂ）に示すようにラッチＡ〜ラッチＤを直列に接続した回路と、におけるそれぞれの周波数について説明する。図６（Ｂ）に示すラッチＢ、Ｄではクロック信号が反転して入力される。なお、以下でラッチとはＤラッチのことをいい、フリップフロップ（ＦＦ）とはＤフリップフロップのことをいうものとする。
【００３６】
ＦＦの場合、図７（Ａ）に示すようにＦＦ間のデータ転送に必要な周期Ｔｆｆは、データの入力から出力までに掛かる演算器等の遅延時間ＴＤＭに対して、クロックスキューＴｃｋ（ｍａｘ）−Ｔｃｋ（ｍｉｎ）を加えた時間が必要となる。なお、Ｔｃｋは、各ＦＦで生じるクロック信号の遅延であり、Ｔｃｋ（ｍａｘ）は最大値、Ｔｃｋ（ｍｉｎ）は最小値を示している。最大値から最小値を引いた値（Ｔｃｋ（ｍａｘ）−Ｔｃｋ（ｍｉｎ））が、ＦＦ間のクロック信号のずれの最大値、即ち、クロックスキューとなる。
【００３７】
一方、ラッチの場合においても、図７（Ｂ）に示すようにラッチ間のデータ転送に必要な周期Ｔｌａ／２は、データの入力から出力までに掛かる演算器等の遅延時間ＴｄＡに対して、クロックスキューＴｃｋ（ｍａｘ）−Ｔｃｋ（ｍｉｎ）を加えた時間が必要となる。
【００３８】
ＦＦやラッチの段数を２段、３段、・・・ｎ段と増やした場合を考える。
【００３９】
ＦＦの場合は段数をｎ段に増やしても、クロック毎にデータを確定させるので、周期Ｔｆｆは変わらない。他方、図７（Ｂ）に示すように、ラッチの場合は、段数をｎ段に増やすと、データの入力から出力までに掛かる演算器等の遅延時間は段数分の遅延ＴｄＡ＋ＴｄＢ＋ＴｄＣ＋・・・の総計が必要なのに対して、クロックスキューＴｃｋ（ｍａｘ）−Ｔｃｋ（ｍｉｎ）を一度だけ加えた値について、ｎ段以下の全てのラッチ間段数ｍで次の式を満たす事が条件となる。Ｔｄ＊ｍ＋Ｔｃｋ（ｍａｘ）−Ｔｃｋ（ｍｉｎ）≧（ｍ＋１）＊Ｔｌａ／２。なお、Ｔｄ＝ＴｄＡ＝ＴｄＢ＝ＴｄＣとする。
【００４０】
Ｔｄ＝Ｔｃｋ（ｍａｘ）−Ｔｃｋ（ｍｉｎ）の値付近になる場合を想定する。ＦＦ1段と同等な、ラッチ２段当たりの実現可能周期Ｔｌａは、上式より、Ｔｌａ＝２＊Ｔｄとなる。
【００４１】
他方、ＦＦ１段で実現した場合の実現可能周期Ｔｆｆは、ＴＤ＝Ｔｄ＊２であって、Ｔｆｆ＝Ｔｄ＊２＋Ｔｃｋ（ｍａｘ）−Ｔｃｋ（ｍｉｎ）＝Ｔｄ＊３となる。従って、Ｔｆｆ＝１．５＊Ｔｌａとなり、Ｔｄ＝Ｔｃｋ（ｍａｘ）−Ｔｃｋ（ｍｉｎ）の付近おける実現可能周波数はＦＦをラッチに置き換える事よって１．５倍に高速化出来る事が分かる。
【００４２】
このほか、スループットが不要な時は、上記の条件にならなくてもラッチをスルーモードにすれば、低レイテンシーな回路に容易に動的に変更できる。
【００４３】
本技術はシストリックアレイ状の回路に限定しているため、実装するアプリケーションに複雑なデータの状態遷移が無く、ＨＤＬやソフトウェアから容易に実装アプリケーションを合成できる。同様に本ハードウェア自体を設計する時も、論理合成時やその後のインプリメント時に必要なタイミング検証は、上記の様に簡単に検証可能である。また、ラッチのゲート端子をスキャン時にスルーへ固定すればスキャン合成可能な回路になる。その後、ユーザー試験でシフト動作をさせればゲート端子も試験できるので、故障検出率も問題とならない。
【００４４】
図１に示す、演算回路２１に入力される入力データは、キーボードなどの入力装置から入力されるデータの他、磁気ディスク装置などの外部記憶装置から読み出されたデータであってもよい。また、演算回路２１から出力される出力データは、ディスプレイ装置などの出力装置から出力する他、外部記憶装置に書き込むものであってもよく、さらに、周辺機器を制御するための制御データであってもよい。リコンフィギュラブルハードウェア２を備える処理装置１０においては、動的に演算回路２１の演算機能を変更させて、入力データに応じた処理を高速に実行することができる。そして、処理結果を出力データとして出力することができる。
【００４５】
設定部２２は、設定データ２２Ａを格納する。設定部２２は、制御部２３の制御のもと、演算回路２１を所定の演算機能とするための設定データ２２Ａを供給する。設定データ２２Ａを受け取ると演算回路２１は、設定データ２２Ａにもとづき演算機能を変更する。
【００４６】
制御部２３は、リコンフィギュラブルハードウェア２全体の動作を制御する。また、制御部２３は、記憶部４から設定データ４２を取得する。制御部２３は、ＣＰＵ（Central Processing Unit）やプログラムを格納するＲＯＭ（Read Only Memory）やワークエリアとしてのＲＡＭ（Random Access Memory）などから構成される。
【００４７】
内部状態保持回路２４は、設定部２２により演算回路２１の演算機能が変更されるときに、演算の途中結果として演算回路２１内のＤラッチ１１０などに保持されている途中結果データや変更前の各ＰＥ１００の演算機能を示すデータ（内部状態データ）を退避するための回路である。そして、演算機能変更後の演算が終了したなどのタイミングで、制御部２２の制御により、退避した内部状態データを用いて各ＰＥ１００を変更前の演算機能に復帰させ、演算回路２１内のＤラッチ１１０に途中結果データを復帰させる。内部状態保持部２４の出力は、フィードバックパスとして機能する経路部２５により、演算回路２に接続する。
【００４８】
コンパイル部３は、ハードウェア記述が可能なプログラム言語に記述されたソースプログラムを演算回路２１におけるＰＥ１００の機能やＤラッチ１１０（へ供給するクロック信号）を制御する為のデータ（設定データ４２）にコンパイルする。コンパイル部３は、例えばコンパイルを実行するためのプログラムを読み込んだＣＰＵである。
【００４９】
記憶部４は、例えばハードディスク装置などから構成され、ソースプログラム４１と設定データ４２とを格納する。
【００５０】
ソースプログラム４１は、ハードウェア記述が可能なプログラム言語（例えば、ＲＴＬ（Register Transfer Level）やＣ言語など）で記述されたものである。ソースプログラム４１は、リコンフィギュラブルハードウェア２により実現されるべきプログラムである。
【００５１】
設定データ４２は、演算回路２１における各ＰＥ１００の機能（より具体的には各ＰＥ１００のルックアップテーブルの演算機能）やＤラッチ１１０（より具体的にはＤラッチ１１０へ供給するクロック信号）を制御する為のデータである。上述のように、設定データ４２は、ソースプログラム４１をコンパイル部３がコンパイルすることにより生成される。そして、生成された設定データ４２は、制御部２３により設定部２２に格納される。設定部２２に格納された設定データ２２Ａは、制御部２３の制御により設定部２２から演算回路２１に供給される。設定データ２２Ａを受け取ると演算回路２１は、その設定データ２２Ａにもとづき演算機能を変更する。これにより、処理装置１０（リコンフィギュラブルハードウェア２）は、演算回路２１により所望の演算を実行することができる。
【００５２】
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。例えば、図２に示したシストリックアレイ型回路７０の構成は一例であり、シストリックアレイ型回路７０は８×８であるものに限定されず、本発明の構成を有するものであれば目的とする演算内容によって適宜変更可能（例えば１６×１６など）である。
【００５３】
また、演算回路２１は、その構成の一つとしてＦＰＧＡ（Field Programmable Gate Array）を備えるものであってもよい。この場合、演算回路２１では、シストリックアレイ型回路７０とＦＰＧＡとの連携により各種の演算が実行される。
【００５４】
また、上記実施の形態では、演算回路２１の演算機能を変更するための設定データ２２Ａは、記憶部４に格納されるソースプログラム４１をコンパイル部３がコンパイルすることで生成されるものとして説明したが、外部ネットワークや外部記録媒体を通じて取得するものであってもよい。また、ソースプログラム４１は、外部ネットワークや外部記録媒体を通じて取得するものであってもよい。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施の形態に係る処理装置の全体構成を示すブロック図である。
【図２】演算回路の構成を示す図である。
【図３】シストリックアレイ型回路の構成を示す図である。
【図４】データの流れを比較するための図である。
【図５】データの流れを比較するための図である。
【図６】データの流れを比較するための図である。
【図７】データの流れを比較するための図である。
【符号の説明】
【００５６】
２  リコンフィギュラブルハードウェア
３  コンパイル部
４  記憶部
１０  処理装置
２１  演算回路
２２  設定部
２２Ａ  設定データ
２３  制御部
２４  内部状態保持回路
２５  経路部
４１  ソースプログラム
４２  設定データ
７０  シストリックアレイ型回路
８０  入力レジスタ
９０  出力レジスタ
１００  ＰＥ
１１０  Ｄラッチ
１２０  Ｄフリップフロップ
【図１】
2009182761.tif 000003
【図２】
2009182761.tif 000004
【図３】
2009182761.tif 000005
【図４】
2009182761.tif 000006
【図５】
2009182761.tif 000007
【図６】
2009182761.tif 000008
【図７】
2009182761.tif 000009