説明

半導体装置、および、半導体装置によるデータ処理方法

【課題】パイプライン型に接続した複数のリコンフィギュラブル回路が、データを演算していない時間がより少なくなるように実行回路を構築できること。
【解決手段】コントローラ10と、後段に複数段直列に接続された演算ユニット12とを備えた半導体装置であって、コントローラ10は、データと再構成情報とを初段の演算ユニット12に入力し、演算ユニット12は、再構成情報により特定される回路情報による実行回路で構築され入力されたデータを演算する演算器120と、再構成情報を次の演算に必要な回路情報を特定するように更新する回路情報識別子更新部123と、演算器120による演算を繰り返すかを判断し、回数分の演算を完了したと判断した場合、データと再構成情報とを次段の演算ユニット12に入力し、完了していないと判断した場合、データと再構成情報とを再度自身に入力するように制御する繰り返し制御部126と、を備えた。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動的リコンフィギュラブル回路技術を用いた半導体装置、および、半導体装置によるデータ処理方法に関するものである。
【背景技術】
【0002】
近年、携帯機器など小面積・低消費電力が求められる機器においても、機能の複雑化、多様化が進み、このような機器にも高い性能が必要とされてきている。高性能と小面積・低消費電力を両立させるためには、専用ハードウェアの製造・開発は避けられない。しかしながら、機能の複雑化・多様化に伴い専用ハードウェアの製造・開発費は年々増大している。この製造・開発費を削減するものとして、動的リコンフィギュラブル回路技術を用いた半導体装置が注目されている。
【0003】
動的リコンフィギュラブル回路技術を用いた半導体装置は、FPGAのようなリコンフィギュラブル回路と、そのリコンフィギュラブル回路に実行させたい回路(以下、単に実行回路と称す)を構築するのに必要な回路情報を複数蓄えておくための記憶装置を備えており、ソフトウェアなどによりあらかじめ決められた規則に従って、動作時に必要な回路情報を読み出して実行回路を構築できる装置である。動作時に実行回路を変えられる点が、FPGAを用いた従来の半導体装置とは異なる。
【0004】
この半導体装置を用いると、FPGA同様に専用ハードウェアの開発費が低減されるだけでなく、実行回路を動的に構築することにより小さな半導体装置上に多様な機能が実現できるため、専用ハードウェアの製造費も低減されると期待されている。
【0005】
動的リコンフィギュラブル回路技術を用いた半導体装置の例としては、NECエレクトロニクスのDRP(Dynamically Reconfigurable Processor・・・非特許文献1参照)や、特許文献1が挙げられる。
【0006】
NECエレクトロニクスのDRPは、演算を行う基本要素であるPE(Processing Element)が2次元アレイ状に並べられ、その中央に状態遷移コントローラが配置されるという構造を持つ。PEは実行回路を構築可能な演算装置で、PE内部にある命令メモリに演算の種類やPE間の接続関係といった回路情報が複数格納されている。各PEは状態遷移コントローラから与えられる命令ポインタに従って命令メモリから回路情報を読み出して、動的に実行回路を構築する。
【0007】
特許文献1では、構成変更を制御するコントローラと、演算を行う複数の演算ユニットがパイプライン型に接続されている。実行回路の変更を指示するためにコントローラから送られる再構成規則は、それぞれの演算ユニットに1サイクルずつ遅れて到達し、それぞれの演算ユニットはサイクル毎に受け取る再構成規則に従って、内部のメモリから回路情報を読み出して、動的に実行回路を構築する。
【0008】
【非特許文献1】「リコンフィギュラブルシステム」、オーム社、ページ189−208
【特許文献1】特開2007−257549号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
高性能な動的リコンフィギュラブル回路技術を用いた半導体装置を実現するためには、決められた時間のうちに演算要素で可能な限り多くの演算が行われるよう、演算要素が演算を行えない時間を短くする必要がある。
【0010】
ところがDRPでは、命令ポインタは状態遷移コントローラからすべてのPEに同時に与えられ、それぞれのPEはその命令ポインタに従って同時に実行回路を構築する。そのため、すでに演算を完了しているPEがあったとしても、演算を完了していないPEがある限りは、演算中のPEの実行回路が変更されないようにするために、すべてのPEの実行回路を変更できない。このような理由から、PEが演算を行えない時間は長くなる。
【0011】
特許文献1では、コントローラから送られる再構成規則はそれぞれの演算ユニットに1サイクルずつ遅れて到達し、それぞれの演算ユニットはサイクル毎に受け取る再構成規則に従って実行回路を構築するため、パイプライン状に接続された下段の演算ユニットが演算を完了する前に、コントローラが上段の演算ユニットに再構成規則を与えて実行回路を変更しても、その再構成規則が下段の演算ユニットに到達するまでに下段の演算ユニットが演算を完了すれば、正しい演算結果が得られる。これにより、演算要素が演算を行えない時間をDRPよりも短くできる。
【0012】
しかしながら、特許文献1では、再構成規則は常にパイプライン最上段のコントローラから下段の演算ユニットへと1サイクルずつ転送されるため、データに対して演算ユニットの段数を越える数の演算を行うような処理をするためには、最下段の演算ユニットが出力する処理の途中結果を最上段の演算ユニットに入力し、改めて最上段の演算ユニットから順に演算を行う必要がある。そのため、最上段の演算ユニットから改めて行う演算の数が、演算ユニットの数より少ない場合には、下段の演算ユニットで演算を行わない時間が生じてしまうという問題があった。
【0013】
本発明は、上記に鑑みてなされたものであって、パイプライン型に接続した複数のリコンフィギュラブル回路のそれぞれが、データを演算していない時間がより少なくなるように実行回路を構築できる半導体装置、および、半導体装置によるデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【0014】
上述した課題を解決し、目的を達成するために、本発明は、コントローラと、前記コントローラの後段に複数段直列に接続されてパイプライン動作を行う複数の動的リコンフィギュラブル回路とを備えた半導体装置であって、(A)前記コントローラは、処理すべきデータと、前記動的リコンフィギュラブル回路ごとに保持される複数の回路情報のうち、前記データに対して実行する演算に必要な実行回路を前記動的リコンフィギュラブル回路に構築するための回路情報を特定する特定情報と、複数の前記動的リコンフィギュラブル回路のそれぞれが実行する演算回数を示す情報とを含む再構成情報と、を初段の前記動的リコンフィギュラブル回路に入力し、(B)複数の前記動的リコンフィギュラブル回路のそれぞれは、(a)前記再構成情報により特定される前記回路情報に従って変更された実行回路で構築され、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記データを演算する演算手段と、(b)前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記再構成情報に含まれる特定情報を、演算された前記データに対して次に実行する演算に必要な前記回路情報を特定する特定情報へ更新する更新手段と、(c)前記演算手段による演算を繰り返し行うか否かを判断し、前記演算手段が前記演算回数分の演算を完了したと判断した場合には、演算された前記データと更新された前記再構成情報とを次段の前記動的リコンフィギュラブル回路に入力するように制御し、前記演算手段が前記演算回数分の演算を完了していないと判断した場合には、演算された前記データと更新された前記再構成情報とを再度自身に入力するように制御する繰り返し制御手段と、を備えたことを特徴とする。
【0015】
また、本発明は、コントローラと、パイプライン動作を行うため、前記コントローラの後段に複数段直列に接続されてパイプライン動作を行う複数の動的リコンフィギュラブル回路とを備えた半導体装置によるデータ処理方法において、前記コントローラが、処理すべきデータと、前記データに対して実行する演算に必要な実行回路を特定する回路情報を特定するとともに、複数の前記動的リコンフィギュラブル回路のそれぞれが実行する演算回数を決定する再構成情報と、を初段の前記動的リコンフィギュラブル回路に入力する入力ステップと、複数の前記動的リコンフィギュラブル回路のそれぞれが、前記再構成情報により特定される前記回路情報に従って変更された実行回路で構築され、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記データを演算する演算ステップと、複数の前記動的リコンフィギュラブル回路のそれぞれが、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記再構成情報を、演算された前記データに対して次に実行する演算に必要な前記回路情報を特定するように更新する更新ステップと、複数の前記動的リコンフィギュラブル回路のそれぞれが、前記演算ステップによる演算を繰り返し行うか否かを判断し、前記演算ステップで前記演算回数分の演算を完了したと判断した場合には、演算された前記データと更新された前記再構成情報とを次段の前記動的リコンフィギュラブル回路に入力するように制御し、前記演算ステップで前記演算回数分の演算を完了していないと判断した場合には、演算された前記データと更新された前記再構成情報とを再度自身に入力するように制御する制御ステップと、を含むこと、を特徴とする。
【発明の効果】
【0016】
本発明によれば、データに対して、動的リコンフィギュラブル回路の段数よりも多い数の演算処理を順番に実行する場合であっても、リコンフィギュラブル回路がデータに対する演算処理を実行しない時間を、より少なくすることができるという効果を奏する。
【発明を実施するための最良の形態】
【0017】
以下に添付図面を参照して、この発明にかかる半導体装置、および、半導体装置によるデータ処理方法の最良な実施の形態を詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【0018】
(半導体装置の構成)
図1は、本実施の形態にかかる半導体装置の構成を示すブロック図であり、図2は、演算ユニットの構成を示すブロック図である。半導体装置1は、プロセッサなどの外部装置2からの指示によりデータ処理を行うものであって、コントローラ10、入出力バッファ11、および、5つの演算ユニット12A〜12Eを備えて構成されている。なお、ここでは、データ処理とは、個々の演算を行った一連の演算の総称のこととする。
【0019】
コントローラ10は、入出力バッファ11と演算ユニット12Aに接続している。コントローラ10は、後述するプログラムコードメモリ10Cに記録されたコードに従って、サイクルごとに演算ユニット12A〜12Eの再構成を指示するための再構成情報と、入出力バッファ11へのデータ書き込みを制御するための制御情報(書き込み制御情報)とを演算ユニット12Aに出力する。ここでサイクルとは、同期式回路において記憶素子部の値が変化してから、次に記憶素子部の値が変化するまでの最小時間単位である。本例では、再構成情報は、各サイクルにおけるデータ処理において、データ処理に必要な回路情報が後述する回路情報記憶部121に格納されている位置を示す回路情報識別子と、演算ユニット12A〜12Eが再構成を行う回数を示す再構成規則とから構成されている。
【0020】
さらに、コントローラ10は、プログラムコードメモリ10Cに記録されたコードに従って、入出力バッファ11から演算ユニット12Aへのデータ読み出しを制御するための制御情報(読み出し制御情報)を入出力バッファ11へ出力する。コントローラ10の構成については、後ほど、コントローラ10におけるデータ処理の説明で、さらに詳しく説明する。
【0021】
入出力バッファ11は、コントローラ10と演算ユニット12Aおよび12Eに接続している。入出力バッファ11は、半導体装置1がデータ処理の開始時に演算ユニット12Aに与えるデータや、半導体装置1の演算ユニット12Eによるデータ処理の中間結果または最終結果を一時的に保持するものである。入出力バッファ11には、データ処理の開始前に外部装置2により初期の入力データが書き込まれる。また、半導体装置1の演算ユニット12Aは、入出力バッファ11に保持されたデータ処理の中間結果を再び入力データとして、データ処理を続けることもできる。入出力バッファ11に保持された最終結果は、外部装置2により入出力バッファ11から読み出される。
【0022】
演算ユニット12A〜12Eは、データ処理を実現する。演算ユニット12A〜12Eは、コントローラの後段に複数段直列に、すなわち、パイプライン型に接続され、それぞれ、個々の演算を行うための実行回路を構築可能な演算器を持つユニットであり、入力される再構成情報に従って演算器に実行回路を構築しながら(演算器の回路構成を変更しながら)、入力データを演算して結果を出力するという機能を持つ。また、演算ユニット12A〜12Eは、予め決められた規則に従って再構成情報を更新して出力する。従って、演算ユニット12A〜12Eは、動的リコンフィギュラブル回路を構成する。なお、本実施の形態にかかる演算ユニットの数は5つであるが、これに限らず、半導体装置1に必要とされる処理能力に応じて変更してもよい。
【0023】
ここで、演算器に構築される実行回路を特定するための情報を回路情報と呼ぶ。回路情報としては、演算器に対する入力データと出力データの対応関係を示すテーブルや、演算器の演算の種類を決定する設定信号の値など、実施例によりさまざまな情報が用いられる。演算ユニット12A〜12Eは、再構成情報に従って演算器に構築する実行回路を特定する回路情報を決定することにより、実行回路を構築する(回路構成を変更する)。
【0024】
演算ユニット12Aは、コントローラ10に接続し、コントローラ10が出力する再構成情報と、入出力バッファ11から読み出される入力データとが入力される。演算ユニット12B〜12Eは、演算ユニット12A〜12Dにそれぞれ接続し、前段の演算ユニット12A〜12Dが出力する再構成情報と演算結果であるデータとを入力として、演算ユニット12Aと同様の処理を行う。また、演算ユニット12Eの出力は、入出力バッファ11に接続しており、演算ユニット12Eの演算結果である出力データは、コントローラ10から再構成情報と同様にして伝搬される制御情報(書き込み制御情報)に従い、入出力バッファ11に記録される。
【0025】
このように、コントローラ10と演算ユニット12A〜12Eはパイプライン型に接続されており、入出力バッファ11から読み出されるデータに対して、パイプライン式に演算を行う。ただし、再構成情報が示す規則によっては、演算ユニット12A〜12Eは、パイプラインの前段から入力されるデータと再構成情報とを用いる代わりに、各演算ユニット自身が前のサイクルで出力した演算結果(データ)と更新した再構成情報とを用いて演算を行うサイクルもある。演算ユニット12の構成については、後ほど、演算ユニット12におけるデータ処理の説明で、さらに詳しく説明する。
【0026】
(データ処理の流れの概要)
次に、本実施の形態にかかる半導体装置1におけるデータ処理の開始から終了までの流れの概要を説明する。
【0027】
コントローラ10は、後述するプログラムコードメモリ10Cに格納されたコードを毎サイクル解釈し、それに従って、再構成情報と書き込み制御情報とを演算ユニット12(実際には、演算ユニット12A)へ出力する。前述したように、再構成情報は、各サイクルにおけるデータ処理において、データ処理に必要な回路情報が後述する回路情報記憶部121に格納されている位置を示す回路情報識別子と、演算ユニット12A〜12Eが再構成を行う回数を示す再構成規則とから構成されている。
【0028】
入出力バッファ11は、コントローラ10からのデータ読み出し要求(読み出し制御情報)を受け取るたびに、入出力バッファ11からデータを読み出し、演算ユニット12Aに転送する。また、入出力バッファ11は、コントローラ10から演算ユニット12A〜12Eを通ってパイプライン式に転送されたデータ書き込み要求(書き込み制御情報)を演算ユニット12Eから受け取るたびに、その情報に従って演算ユニット12Eから出力された演算結果(出力データ)を入出力バッファ11に書き込む。
【0029】
演算ユニット12A〜12Eは、サイクルごとに入力される回路情報識別子に従って回路情報記憶部121から回路情報を読み出し、その回路情報に従って演算器に実行回路を構築しながら、入力されるデータを演算して結果を出力する。また、演算ユニット12A〜12Eは、予め決められた規則に従って回路情報識別子を更新して出力する。なお、回路情報は、外部装置2によりデータ処理の開始前に回路情報記憶部121へ転送される。
【0030】
具体的には、演算ユニット12Aは、コントローラ10から入力される回路情報識別子に従って、入出力バッファ11から入力されるデータに対して演算を行い、規則に従って回路情報識別子を更新する。ただし、演算ユニット12Aは、再構成規則により複数回の再構成を行うよう指示された場合には、再構成規則を受けとった次のサイクルから、指示された回数の再構成が完了するサイクルまでの間は、演算ユニット12Aが前のサイクルで演算した結果(データ)と、前のサイクルで更新した回路情報識別子とを用いて再び演算を行う。
【0031】
また、演算ユニット12B〜12Eは、接続する前段の演算ユニット12A〜12Dから入力される前段の演算ユニット12A〜12Dで更新された再構成情報と演算した結果(データ)とを入力として、演算ユニット12Aと同様に演算を行う。ただし、演算ユニット12B〜12Eは、再構成規則により複数回の再構成を行うよう指示された場合には、再構成規則を受けとった次のサイクルから、指示された回数の再構成が完了するサイクルまでの間は、演算ユニット12B〜12Eが前のサイクルで演算した結果(データ)と、前のサイクルで更新した回路情報識別子とを用いて再び演算を行う。そして、演算ユニット12Eの演算結果は、コントローラ10から再構成情報と同時に伝搬される書き込み制御情報に従い、入出力バッファ11に書き込まれる。
【0032】
そして、コントローラ10が全てのコードを解釈し終えた時点で、コントローラ10はプロセッサなどの外部装置に処理の完了を通知し、データ処理は終了する。
【0033】
最後に、外部装置2は、処理の完了通知を受けてから規定サイクル以上経過した後に、入出力バッファ11に蓄えられた半導体装置1の演算結果を読み出す。この規定サイクルは、演算ユニット12が演算する回数と、入出力バッファ11へのデータ書き込みに要するサイクル数とを加えたサイクル数になる。
【0034】
(演算ユニットにおけるデータ処理)
次に、図2を使用して、演算ユニット12におけるデータ処理について詳しく説明する。演算ユニット12A〜12Eは、それぞれ、演算器120、回路情報記憶部121、データレジスタ122、回路情報識別子更新部123、回路情報識別子レジスタ124、再構成規則レジスタ125、および、繰り返し制御部126を備えて構成されている。なお、本図では、書き込み制御情報の記載は省略している。
【0035】
演算器120は、個々の演算を行うためのハードウェアの実行回路を構築可能な演算器で、回路情報記憶部121から読み出される回路情報に従って実行回路を構築しながら(回路構成を変更しながら)、入力データを演算してデータレジスタ122に書き込む。演算器120は、回路情報記憶部121、繰り返し制御部126のデータ出力、および、データレジスタ122に接続している。
【0036】
図3は、演算器120の構成の一例を示す図である。演算器120は、8ビットのALUとシフタとをそれぞれ4個ずつ備えており、32ビットの2入力に対して、8ビット単位で異なる演算を行うよう実行回路を構築できる。この演算結果を、32ビットの出力の一つとする。また、演算器120は、クロスバーを備え、シフタからの8ビット出力4つの配置順を変更した結果を32ビット出力の一つとする。
【0037】
回路情報は、8ビット演算あたり、ALUの入力の一つを直値とするかどうかを決める入力モードが1ビット、直値が8ビット、ALU設定が2ビット、シフト値が3ビット、クロスバー設定が2ビットの計16ビットからなり、演算器120全体では、64ビットの回路情報となる。
【0038】
回路情報記憶部121は、回路情報を記憶しており、繰り返し制御部126の回路情報識別子の出力と演算器120に接続している。そして、繰り返し制御部126から出力される回路情報識別子をアドレスとして、サイクルごとに回路情報記憶部121から回路情報が読み出され、演算器120に入力される。なお、本例では、回路情報記憶部121は演算ユニット12A〜12Eに個別に内蔵されているが、演算ユニット12A〜12Eに個別に対応するように、演算ユニット12A〜12Eの外部に5つ備えられ、演算ユニット12A〜12Eとそれぞれ接続されていてもよい。また、演算ユニット12A〜12Eで共有するように、演算ユニット12A〜12Eの外部に1つだけ備えられ、演算ユニット12A〜12Eと接続されていてもよい。
【0039】
データレジスタ122は、演算器120による演算結果(データ)を一時的に記録する。データレジスタ122は、演算器120のデータ出力、自身の繰り返し制御部126、および、次段の演算ユニット12の繰り返し制御部126に接続している。
【0040】
回路情報識別子更新部123は、繰り返し制御部126から出力される回路情報識別子を入力として、予め決められた規則に従って、入力される回路情報識別子を更新して出力する。この規則は、入出力バッファ11から入力されたデータが、演算ユニット12A〜12Eを経由して、再び入出力バッファ11に書き込まれるまでに行われる一連の演算において、演算に必要な実行回路の構築に用いられる回路情報を特定する回路情報識別子が、それぞれ異なるように決定されていればよい。本例では、回路情報識別子更新部123は、入力される回路情報識別子の値に1を加えた値を、更新後の回路情報識別子として出力するものとする。回路情報識別子更新部123は、繰り返し制御部126の回路情報識別子の出力、および、回路情報識別子レジスタ124に接続している。
【0041】
回路情報識別子レジスタ124は、回路情報識別子更新部123で更新した回路情報識別子を一時的に記録する。回路情報識別子レジスタ124は、回路情報識別子更新部123の出力、自身の繰り返し制御部126、および、次段の演算ユニット12の繰り返し制御部126に接続している。
【0042】
再構成規則レジスタ125は、繰り返し制御部126から出力される再構成規則を一時的に記録する。繰り返し制御部126は、繰り返し制御部126の再構成規則の出力、自身の繰り返し制御部126、および、次段の演算ユニット12の繰り返し制御部126に接続している。
【0043】
繰り返し制御部126は、自身の演算ユニット12が演算を繰り返し行うか否かを制御する。例えば、繰り返し制御部126は、演算ユニット12に入力される再構成規則が示す回数が2回以上の場合に、1回目の演算は、入出力バッファ11または前段の演算ユニット12A〜12Dから入力されるデータと、コントローラ10または前段の演算ユニット12A〜12Dから入力される回路情報識別子とを用いて演算を行うように制御する。さらに、その後指定の回数を終えるまでの演算は、前のサイクルで演算ユニット12A〜12E自身が演算した結果(データ)と前のサイクルで回路情報識別子更新部123自身が更新した回路情報識別子とを用いて演算を行うよう制御する。
【0044】
具体的には、演算ユニット12Aの繰り返し制御部126は、1回目の演算の場合、入出力バッファ11が出力するデータ、および、コントローラ10が出力する再構成情報(回路情報識別子および再構成規則)を受け取り、演算器120、回路情報記憶部121、回路情報識別子更新部123、および、再構成規則レジスタ125に出力する。そして、演算ユニット12Aの繰り返し制御部126は、2回目の演算の場合、自身のデータレジスタ122が出力するデータ、自身の回路情報識別子レジスタ124が出力する回路情報識別子、および、自身の再構成規則レジスタ125が出力する再構成規則を受け取り、自身の演算器120、自身の回路情報記憶部121、自身の回路情報識別子更新部123、および、自身の再構成規則レジスタ125に再度出力する。
【0045】
同様に、演算ユニット12B〜12Eの繰り返し制御部126は、1回目の演算の場合、前段の演算ユニット12のデータレジスタ122が出力するデータ、前段の演算ユニット12の回路情報識別子レジスタ124が出力する回路情報識別子、および、前段の演算ユニット12の再構成規則レジスタ125が出力する再構成規則を受け取り、自身の演算器120、自身の回路情報記憶部121、自身の回路情報識別子更新部123、および、自身の再構成規則レジスタ125に出力する。そして、演算ユニット12B〜12Eの繰り返し制御部126は、2回目の演算の場合、自身のデータレジスタ122が出力するデータ、自身の回路情報識別子レジスタ124が出力する回路情報識別子、および、自身の再構成規則レジスタ125が出力する再構成規則を受け取り、自身の演算器120、自身の回路情報記憶部121、自身の回路情報識別子更新部123、および、自身の再構成規則レジスタ125に再度出力する。
【0046】
なお、繰り返し制御部126は、演算ユニット12に入力される再構成規則が示す回数が1回または指定の回数を終えた場合には、繰り返し制御を行わない。従って、演算ユニット12は、1回目または指定の回数の演算が終了後、自身のデータレジスタ122が出力するデータ、自身の回路情報識別子レジスタ124が出力する回路情報識別子、および、自身の再構成規則レジスタ125が出力する再構成規則を、そのまま次段の演算ユニット12(の繰り返し制御部126)に出力する。同様に、コントローラ10から伝搬される書き込み制御情報もまた、繰り返し制御を行なっている間は演算ユニット12に保持され、繰り返し制御の終了後に、次段の演算ユニット12に出力される。
【0047】
図4は、繰り返し制御部126の動作の一例を示す状態遷移図である。本例では、再構成規則は、演算ユニット12A〜12Eを識別するためのタグと再構成の回数の組により表現する。
【0048】
初期状態S1において、繰り返し制御部126は、再構成規則のタグ部が自身の演算ユニット12を示し、かつ、再構成規則の再構成回数が2以上の場合には、状態S2に遷移する。そうでない場合には、繰り返し制御部126は、初期状態S1に遷移する。また、いずれの遷移においても、繰り返し制御部126は、内蔵する記憶部(図示せず)に再構成回数をセットするとともに、自身の演算ユニット12の外部から入力されるデータ、回路情報識別子、および、再構成規則(再構成の回数およびタグ)をそのまま出力する。
【0049】
状態S2において、繰り返し制御部126は、内蔵する記憶部(図示せず)にセットされている再構成回数の値が2の場合には、初期状態S1に遷移し、そうでない場合には、内蔵する記憶部(図示せず)にセットされている再構成回数の値を1減らすとともに状態S2に遷移する。また、いずれの遷移においても、繰り返し制御部126は、自身の演算ユニット12が有するデータレジスタ122のデータ、回路情報識別子レジスタ124の回路情報識別子、および、再構成規則レジスタ125の再構成規則を再度出力する。
【0050】
図5は、繰り返し制御部126の動作の他の一例を示す状態遷移図である。本例では、再構成規則は、演算ユニット12A〜12Eを識別するためのタグと、タグで示された演算ユニットにおける最後の再構成において実行される演算のための回路情報を特定する回路情報識別子の組により表現する。
【0051】
本例では、初期状態S1および状態S2における繰り返し制御部126の出力は、図4の場合と同じである。初期状態S1から状態S2への遷移は、再構成規則のタグ部が自身の演算ユニット12を示し、かつ、再構成規則の回路情報識別子部が自身の演算ユニット12に外部から入力される回路情報識別子と異なる場合に生じる。そして、初期状態S1から状態S2へ遷移する際、および、状態S2から再び状態S2に遷移する際に、回路情報識別子レジスタ124の回路情報識別子の値は1増える。また、状態S2から初期状態S1への遷移は、自身の演算ユニット12の回路情報識別子レジスタ124から入力される回路情報識別子が、再構成規則の回路情報識別子部と等しい場合に生じる。
【0052】
(コントローラにおけるデータ処理)
次に、コントローラ10におけるデータ処理について詳しく説明する。図6は、コントローラ10の構成を示すブロック図である。コントローラ10は、制御部10A、プログラムカウンタ10B、プログラムコードメモリ10C、および、タイミングラッチ10Dを備えて構成されている。
【0053】
制御部10Aは、プログラムカウンタ10Bの値をアドレスとして、プログラムコードメモリ10Cからプログラムコードを読み出す。さらに、制御部10Aは、読み出されたプログラムコードに基づいて、入出力バッファ11のアクセスを制御するための制御情報(書き込み制御情報および読み出し制御情報)と再構成情報(回路情報識別子および再構成規則)とを出力する。制御部10Aは、プログラムカウンタ10Bおよびプログラムコードメモリ10Cに接続する。
【0054】
そして、入出力バッファ11から演算ユニット12Aへのデータ読み出しを制御するための制御情報(読み出し制御情報)は、入出力バッファ11に送られる。また、入出力バッファ11へのデータ書込みを制御するための制御情報(書き込み制御情報)と、再構成情報(回路情報識別子および再構成規則)とは、入出力バッファ11から読み出されたデータが演算ユニット12Aに到着するサイクルに演算ユニット12Aに到着するようにタイミングラッチ10Dにより時間調整された後、演算ユニット12Aに送られる。
【0055】
なお、プログラムコードメモリ10Cには、データ処理の開始前に、外部装置2によりプログラムコードが書き込まれる。また、プログラムカウンタ10Bの値は、外部装置2によりプログラムコードの先頭アドレスに更新される。
【0056】
図7は、プログラムコードメモリ10Cに格納されるプログラムコードの構造例を示した図である。本例では、プログラムコードは、入出力バッファ11の読み出しアドレスを示す入力アドレス、入出力バッファ11の書き込みアドレスを示す出力アドレス、回路情報識別子、再構成規則、有効フラグ、および、終端フラグからなる。なお、入力アドレスが読み出し制御情報であり、出力アドレスおよび有効フラグが書き込み制御情報である。
【0057】
プログラムコードは、1サイクルで1アドレスずつ解釈される。プログラムカウンタ10Bは、1つのアドレスの解釈を終えるたびに1つ増加する。入力アドレスは、入出力バッファ11に転送される。そして、出力アドレス、回路情報識別子、再構成規則、および、有効フラグは、演算ユニット12A〜12Eにパイプライン式に転送され、最後に、出力アドレスおよび有効フラグのみが、演算ユニット12Eから演算結果(データ)とともに入出力バッファ11に転送される。ここで、有効フラグは、入出力バッファ11への書込みが有効であるかどうかを示すもので、有効でない場合には、演算ユニット12Eの演算結果は入出力バッファ11に書き込まれない。
【0058】
終端フラグは、プログラムコードの終端を示すものである。制御部10Aは、プログラムコードの終端アドレスの解釈を終えると、データ処理の完了を外部装置2に通知する。また、制御部10Aは、外部装置2から新たなデータ処理の開始を通知されるまで、入出力バッファ11への書込みを無効とする旨を意味する有効フラグを出力する。
【0059】
(半導体装置の動作例)
次に、半導体装置1が、演算ユニット12が受け取った再構成情報(回路情報識別子および再構成規則)に従って、演算器120の回路構成を変えながら、入力データに対して演算を実行する動作例を説明する。図8は、半導体装置1が演算を行う際の動作を説明する図である。ここで、説明を容易にするために、サイクル1で、コントローラ10はプログラムコードの解釈を始めるものとし、コントローラ10が再構成情報(回路情報識別子および再構成規則)を解釈したそのサイクルに、解釈された再構成情報(回路情報識別子および再構成規則)は演算ユニット12Aに到着するものとする。
【0060】
図9は、本実施の形態で実行されるデータ処理においてコントローラ10が解釈するプログラムコードを示した図である。本例では、再構成規則は、演算ユニット12A〜12Eを識別するタグと再構成の回数の組とする。本プログラムは、入出力バッファ11から5サイクル続けて読み出されたデータに対して6つの演算を順に行った結果を、入出力バッファ11に5サイクル続けて書き込むという処理を、全10サイクルで実行する。
【0061】
サイクル1で、演算ユニット12Aは、再構成情報(回路情報識別子“0”および再構成規則“12E_2”)を受け取り、回路情報記憶部121から回路情報“c00”を読み出して演算器120の回路構成を変更する。そして、演算ユニット12Aは、入出力バッファ11の(入力)アドレス“0”から読み出されたデータに対して演算を行い、演算結果“d0”を出力する。また、演算ユニット12Aは、再構成情報(更新された回路情報識別子“1”および再構成規則“12E_2”)を出力する。ここで、再構成規則“12E_2”は、識別するタグが演算ユニット12E、繰り返し回数が2であることを示す。
【0062】
なお、サイクル1で、演算ユニット12B〜12Eは、入力された回路情報識別子とデータに従って演算を行っているが、各演算ユニット12での演算結果に基づいて最終的に演算ユニット12Eから出力される演算結果は入出力バッファ11に書き込まれないため、演算を行っていないものと見なすことができる。以後のサイクルにおいて、演算を行っていないものと見なせる演算ユニット12の動作説明は省略する。
【0063】
サイクル2で、演算ユニット12Aは、再構成情報(回路情報識別子“10”および再構成規則“12D_2”)を受け取り、回路情報記憶部121から回路情報“c10”を読み出して演算器120の回路構成を変更する。そして、演算ユニット12Aは、入出力バッファ11の(入力)アドレス“1”から読み出されたデータに対して演算を行い、演算結果“d10”を出力する。また、演算ユニット12Aは、再構成情報(更新された回路情報識別子“11”および再構成規則“12D_2”)を出力する。ここで、再構成規則“12D_2”は、識別するタグが演算ユニット12D、繰り返し回数が2であることを示す。
【0064】
一方、サイクル2で、演算ユニット12Bは、再構成情報(回路情報識別子“1”および再構成規則“12E_2”)を受け取り、回路情報記憶部121から回路情報“c01”を読み出して演算器120の回路構成を変更する。そして、演算ユニット12Bは、演算ユニット12Aから受け取ったデータ“d0”に対して演算を行い、演算結果“d1”を出力する。また、演算ユニット12Bは、再構成情報(更新された回路情報識別子“2”および再構成規則“12E_2”)を出力する。
【0065】
以下同様にして、サイクル5までは、演算ユニット12Aは、コントローラ10から転送される再構成情報の回路情報識別子に従って、回路情報記憶部121から回路情報を読み出して演算器120の回路構成を変更し、入出力バッファ11から受け取ったデータに対して演算を行って、演算結果(データ)を出力する。また、演算ユニット12Aは、コントローラ10から受け取った回路情報識別子に1を加えたものと、コントローラ10から受け取る再構成規則とを再構成情報として出力する。演算ユニット12B〜12Eは、前段の演算ユニット12A〜12Dから転送されるデータおよび再構成情報(回路情報識別子および再構成規則)に対して、演算ユニット12Aと同様の動作を行う。
【0066】
サイクル6で、演算ユニット12A〜12Eは、前のサイクルで各々出力した再構成情報の回路情報識別子“41”、“32”、“23”、“14”、および、“5”に従って、回路情報記憶部121から回路情報“c41、“c32”、“c23”、“c14”、および、“c05”を各々読み出して演算器120の回路構成を変更する。そして、演算ユニット12A〜12Eは、前のサイクルで自身が出力した演算結果“d40”、“d31”、“d22”、“d13”、および、“d4”に対して各々演算を行い、演算結果“d41”、“d32”、“d23”、“d14”、および、“d5”を各々出力する。また、演算ユニット12A〜12Eは、再構成情報(回路情報識別子“42”、“33”、“24”、“15”、“6”、および、再構成規則“12A_2”、“12B_2”、“12C_2”、“12D_2”、“12E_2”)を各々出力する。なお、演算ユニット12Eは、演算結果“d5”のみを入出力バッファ11の(出力)アドレス100に出力し、再構成情報(回路情報識別子 “6”、および、再構成規則“12E_2”)は、(出力)アドレス100には出力しない。
【0067】
サイクル6における動作がサイクル1〜5における動作と異なるのは、サイクル5で演算ユニット12A〜12Eが各々受け取った再構成情報の再構成規則において、各タグが演算ユニット12A〜12Eを示し、さらに、再構成回数が2であるため、演算ユニット12A〜12Eの繰り返し制御部126全てが、サイクル6で、初期状態S1から状態S2に遷移しているからである。
【0068】
サイクル7では、演算ユニット12A〜12Eの全ての繰り返し制御部126は、状態S2から初期状態S1に遷移しているため、演算ユニット12A〜12Eはサイクル1〜5と同様の動作を行う。ただし、コントローラ10は、プログラムコードの解釈を既に完了しているため、演算ユニット12Aは演算を行っていないものと見なせる。
【0069】
以後サイクル7と同様にして、サイクル8では演算ユニット12C〜12Eが演算を行い、サイクル9では演算ユニット12D〜12Eが演算を行い、サイクル10では演算ユニット12Eが演算を行い、サイクル10ですべての演算が完了する。
【0070】
以上、説明した本実施の形態によれば、パイプライン型に接続した複数のリコンフィギュラブル回路のそれぞれに対して、前のサイクルに演算した結果を入力として再度演算を行うよう制御することが可能となった。
【0071】
そして、このような半導体装置を提供することにより、図8に示される演算ユニット12A〜12Eの動作例のように、コントローラ10から送られる再構成規則に従って、演算ユニット12A〜12Eが、同じサイクルにおいて前のサイクルで演算した結果を入力として再度演算を行うことにより、入出力バッファ11からのデータ読み出しから入出力バッファ11へのデータ書き込みまでに行われる演算の段数が演算ユニット12の数よりも多いような処理であっても、演算ユニット12が演算を行わない時間がないように処理を実現することが可能となる。
【0072】
このように、本実施の形態にかかる半導体装置によれば、各演算ユニットが、指定された回数分の演算を完了した場合には、演算結果であるデータと更新された再構成情報とを次段の演算ユニットに入力し、指定された回数分の演算を完了していない場合には、演算結果であるデータと更新された再構成情報とを再度自身に入力し、更新された再構成情報に基づいて再度演算を行うことができるので、パイプライン型に接続した複数の演算ユニットのそれぞれに対して、前のサイクルに演算した結果を入力として再度演算を行うよう制御することでき、データに対して、演算ユニットの段数よりも多い数の演算処理を順番に実行する場合であっても、演算ユニットがデータに対する演算処理を実行しない時間を、より少なくすることが可能となる。
【産業上の利用可能性】
【0073】
本発明は、演算処理を行う全ての半導体装置に有用である。
【図面の簡単な説明】
【0074】
【図1】本実施の形態にかかる半導体装置の構成を示すブロック図である。
【図2】演算ユニットの構成を示すブロック図である。
【図3】演算器の構成の一例を示す図である。
【図4】繰り返し制御部の動作の一例を示す状態遷移図である。
【図5】繰り返し制御部の動作の他の一例を示す状態遷移図である。
【図6】コントローラの構成を示すブロック図である。
【図7】プログラムコードメモリに格納されるプログラムコードの構造例を示した図である。
【図8】半導体装置が演算を行う際の動作を説明する図である。
【図9】本実施の形態で実行されるデータ処理においてコントローラが解釈するプログラムコードを示した図である。
【符号の説明】
【0075】
1 半導体装置
2 外部装置
10 コントローラ
10A 制御部
10B プログラムカウンタ
10C プログラムコードメモリ
10D タイミングラッチ
11 入出力バッファ
12A、12B、12C、12D、12E 演算ユニット
120 演算器
121 回路情報記憶部
122 データレジスタ
123 回路情報識別子更新部
124 回路情報識別子レジスタ
125 再構成規則レジスタ
126 繰り返し制御部

【特許請求の範囲】
【請求項1】
コントローラと、前記コントローラの後段に複数段直列に接続されてパイプライン動作を行う複数の動的リコンフィギュラブル回路とを備えた半導体装置であって、
(A)前記コントローラは、
処理すべきデータと、
前記動的リコンフィギュラブル回路ごとに保持される複数の回路情報のうち、前記データに対して実行する演算に必要な実行回路を前記動的リコンフィギュラブル回路に構築するための回路情報を特定する特定情報と、複数の前記動的リコンフィギュラブル回路のそれぞれが実行する演算回数を示す情報とを含む再構成情報と、
を初段の前記動的リコンフィギュラブル回路に入力し、
(B)複数の前記動的リコンフィギュラブル回路のそれぞれは、
(a)前記再構成情報により特定される前記回路情報に従って変更された実行回路で構築され、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記データを演算する演算手段と、
(b)前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記再構成情報に含まれる特定情報を、演算された前記データに対して次に実行する演算に必要な前記回路情報を特定する特定情報へ更新する更新手段と、
(c)前記演算手段による演算を繰り返し行うか否かを判断し、
前記演算手段が前記演算回数分の演算を完了したと判断した場合には、演算された前記データと更新された前記再構成情報とを次段の前記動的リコンフィギュラブル回路に入力するように制御し、
前記演算手段が前記演算回数分の演算を完了していないと判断した場合には、演算された前記データと更新された前記再構成情報とを再度自身に入力するように制御する繰り返し制御手段と、
を備えたことを特徴とする半導体装置。
【請求項2】
前記演算回数の合計は、前記動的リコンフィギュラブル回路の総数よりも多いこと、
を特徴とする請求項1に記載の半導体装置。
【請求項3】
複数の前記動的リコンフィギュラブル回路は、前記回路情報を格納する記憶手段をさらに備え、
前記再構成情報は、
前記記憶手段における前記回路情報の格納先を示すアドレスと、
前記動的リコンフィギュラブル回路ごとの前記演算回数を決定する再構成規則と、を含み、
前記演算手段は、前記アドレスで示される格納先から読み出された前記回路情報で特定された実行回路で構築されて、前記データを演算し、
前記更新手段は、入力された前記アドレスを、次に実行する演算に必要な前記回路情報が格納されているアドレスに更新すること、
を特徴とする請求項1または2に記載の半導体装置。
【請求項4】
前記更新手段は、前記アドレスに1を加算し、加算されたアドレスが次に実行する演算に必要な前記回路情報が格納されているアドレスであること、
を特徴とする請求項3に記載の半導体装置。
【請求項5】
前記再構成規則は、
前記動的リコンフィギュラブル回路を一意に特定する識別子と、
第1の演算回数と、を含み、
前記識別子により特定される前記動的リコンフィギュラブル回路の前記演算手段は、前記第1の演算回数分の演算を行い、
前記識別子により特定されない前記動的リコンフィギュラブル回路の前記演算手段は、予め定められた第2の演算回数分の演算を行うこと、
を特徴とする請求項3または4に記載の半導体装置。
【請求項6】
前記再構成規則は、
前記動的リコンフィギュラブル回路を一意に特定する識別子と、
前記識別子で特定された前記動的リコンフィギュラブル回路で最後に行われる演算に必要な実行回路を構築するための回路情報を特定する最終回路情報識別子と、を含み、
前記識別子により特定される前記動的リコンフィギュラブル回路の前記演算手段は、入力された、または、更新された前記回路情報識別子が前記最終回路情報識別子と一致するまで演算を行い、
前記識別子により特定されない前記動的リコンフィギュラブル回路の前記演算手段は、予め定められた一定回数分の演算を行うこと、
を特徴とする請求項3または4に記載の半導体装置。
【請求項7】
コントローラと、パイプライン動作を行うため、前記コントローラの後段に複数段直列に接続されてパイプライン動作を行う複数の動的リコンフィギュラブル回路とを備えた半導体装置によるデータ処理方法において、
前記コントローラが、処理すべきデータと、前記データに対して実行する演算に必要な実行回路を前記動的リコンフィギュラブル回路に構築するための回路情報を特定する特定情報と、複数の前記動的リコンフィギュラブル回路のそれぞれが実行する演算回数を示す情報とを含む再構成情報と、を初段の前記動的リコンフィギュラブル回路に入力する入力ステップと、
複数の前記動的リコンフィギュラブル回路のそれぞれが、前記再構成情報により特定される前記回路情報に従って変更された実行回路で構築され、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記データを演算する演算ステップと、
複数の前記動的リコンフィギュラブル回路のそれぞれが、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記再構成情報に含まれる特定情報を、演算された前記データに対して次に実行する演算に必要な前記回路情報を特定する特定情報へ更新する更新ステップと、
複数の前記動的リコンフィギュラブル回路のそれぞれが、前記演算ステップによる演算を繰り返し行うか否かを判断し、前記演算ステップで前記演算回数分の演算を完了したと判断した場合には、演算された前記データと更新された前記再構成情報とを次段の前記動的リコンフィギュラブル回路に入力するように制御し、前記演算ステップで前記演算回数分の演算を完了していないと判断した場合には、演算された前記データと更新された前記再構成情報とを再度自身に入力するように制御する制御ステップと、を含むこと、
を特徴とする半導体装置によるデータ処理方法。

【図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


【公開番号】特開2010−9247(P2010−9247A)
【公開日】平成22年1月14日(2010.1.14)
【国際特許分類】
【出願番号】特願2008−166511(P2008−166511)
【出願日】平成20年6月25日(2008.6.25)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】