(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-29
(45)【発行日】2022-09-06
(54)【発明の名称】リコンフィギュラブルプロセッサ
(51)【国際特許分類】
G06F 17/16 20060101AFI20220830BHJP
G06F 15/80 20060101ALI20220830BHJP
【FI】
G06F17/16 M
G06F15/80
(21)【出願番号】P 2018168697
(22)【出願日】2018-09-10
【審査請求日】2021-06-01
(73)【特許権者】
【識別番号】000003388
【氏名又は名称】東京計器株式会社
(74)【代理人】
【識別番号】100101856
【氏名又は名称】赤澤 日出夫
(72)【発明者】
【氏名】藤澤 了
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特表2007-524905(JP,A)
【文献】特開平06-208501(JP,A)
【文献】特開2013-125378(JP,A)
【文献】特開2009-026308(JP,A)
【文献】林崎 弘成 他,Sakura-C:超並列計算機向けC言語と最適化,情報処理学会研究報告,社団法人情報処理学会,第2007巻 第80号,第7頁-第12頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/00-17/18
G06F 15/80
G06F 7/57
(57)【特許請求の範囲】
【請求項1】
複数のプロセッシングエレメントを有し、該複数のプロセッシングエレメントによる回路構成を動的に再構成可能なリコンフィギュラブル回路と、該リコンフィギュラブル回路に構成される回路構成を示す複数の構成情報を記憶するコンフィギュレーションメモリと、前記リコンフィギュラブル回路と前記コンフィギュレーションメモリとを制御する制御回路とを備え、接続された外部メモリに記憶された行列の乗算を行うリコンフィギュラブルプロセッサであって、
前記制御回路は、
前記外部メモリに記憶された一方の行列における少なくとも1つの所定の行または少なくとも1つの所定の列に含まれる全要素をバッファメモリに保持する第1の回路を示す第1の構成情報と、前記外部メモリに記憶された他方の行列の全要素と前記バッファメモリに保持された全要素とに基づく積和処理を実行する第2の回路を示す第2の構成情報とを前記外部メモリから前記コンフィギュレーションメモリにロードするロード処理部と、
前記コンフィギュレーションメモリにロードされた前記第1の構成情報に基づいて前記リコンフィギュラブル回路に構成された前記第1の回路による処理動作と、前記コンフィギュレーションメモリにロードされた前記第2の構成情報に基づいて前記第1の回路とは異なるタイミングにおいて前記リコンフィギュラブル回路に構成された前記第2の回路による処理動作とを、前記一方の行列の全要素と前記他方の行列の全要素との積和処理が終了するまで繰り返し実行する処理制御部とを備えることを特徴とするリコンフィギュラブルプロセッサ。
【請求項2】
前記ロード処理部は、前記外部メモリに記憶された一方の行列における少なくとも1つの所定の行または少なくとも1つの所定の列に含まれる全要素をバッファメモリに保持するとともに、前記外部メモリに記憶された他方の行列の全要素と前記バッファメモリに保持された全要素とに基づく積和処理を実行する第3の回路を示す第3の構成情報を前記外部メモリから前記コンフィギュレーションメモリにロードすることを特徴とする請求項1に記載のリコンフィギュラブルプロセッサ。
【請求項3】
前記制御回路は、該制御回路により前記一方の行列の全要素と前記他方の行列の全要素との積和処理を行う演算部を更に備えることを特徴とする請求項2に記載のリコンフィギュラブルプロセッサ。
【請求項4】
前記制御回路は、前記行列のデータサイズが第1の閾値以上であるか否かを判定する
とともに、前記行列のデータサイズが前記第1の閾値より小さい第2の閾値以上であるか否かを判定するサイズ判定部を更に備え、
前記処理制御部は、前記行列のデータサイズが前記第1の閾値以上である場合、前記第1の回路による処理動作と前記第2の回路による処理動作とを行
い、前記行列のデータサイズが前記第1の閾値未満且つ前記第2の閾値以上である場合、前記コンフィギュレーションメモリにロードされた前記第3の構成情報に基づいて前記リコンフィギュラブル回路に構成された前記第3の回路による処理動作を行い、
前記演算部は、前記行列のデータサイズが前記第2の閾値未満である場合、前記一方の行列の全要素と前記他方の行列の全要素との積和処理を行うことを特徴とする請求項
3に記載のリコンフィギュラブルプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、リコンフィギュラブルプロセッサに関する。
【背景技術】
【0002】
従来、設計者が独自の回路を再構成することができ、例えば、特定の処理に特化した専用ハードウェアまたはアプリケーション専用プロセッサとして機能させることができるチップとして、FPGA(Field Programmable Gate Array)やリコンフィギュラブルプロセッサが知られている。FPGAとリコンフィギュラブルプロセッサは、回路の再構成に係る基本構成要素の粒度において特に異なっており、FPGAの基本構成単位が1ビットの細粒度を有するLUT(Lookup table)であるのに対し、リコンフィギュラブルプロセッサの基本構成単位は少なくとも4ビット以上、例えば16ビット程度の粗粒度を有するプロサッサエレメントとなっている。
【0003】
リコンフィギュラブルプロセッサにおいては、複数のプロセッシングエレメントが行列状に配置され、この複数のプロセッシングエレメントの配線の接続関係と各プロセッシングエレメントの機能定義とを含む構成情報が書き込まれるプロセスであるコンフィギュレーションによって、特定の機能がリコンフィギュラブルプロセッサにより実装される。FPGAにおいても、概ね同様のコンフィギュレーションによって特定の機能が実装される。リコンフィギュラブルプロセッサにおける構成データは、FPGAにおける構成情報と比較して、その基本構成単位の粒度が粗いことから、必要とするパラメータが少なく、データ量が小さくなっており、従って、構成情報のロードに掛かる時間も短くなっている。
【0004】
このため、FPGAにおいて構成情報を格納するコンフィギュレーションメモリが現行の機能を実装するための構成情報を格納するための1つのバンクのみを有するのに対し、リコンフィギュラブルプロセッサにおけるコンフィギュレーションメモリは、現行の機能を実装するための構成情報を格納するフォアグラウンドバンクと、将来用いる機能を実装するための構成情報を格納するバックグラウンドバンクとを有する。リコンフィギュラブルプロセッサは、構成情報のロードに掛かる時間が短いために処理中に複数のバンクをデータの処理中に切り換えることができ、このような動作は、複数のプロセッシングエレメントを動的に再構成することから、ダイナミックリコンフィギュレーションと呼ばれる。
【0005】
なお、このようなリコンフィギュラブルプロセッサに関する技術として、複数のプロセッシングエレメントのうち、第1のプロセッシングエレメントをデータの記憶に用いた後、第1のプロセッシングエレメントと第2のプロセッシングエレメントとを接続して、データを第1のプロセッシングエレメントから第2のプロセッシングエレメントに移動複写させると同時に、他のプロセッシングエレメントにおいて所定の機能を実現するリコンフィギュラブルプロセッサの制御方法、が知られている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
近年、その柔軟性の高さ、コスト及び消費電力の低減という観点から、ディープラーニングなどの機械学習に対して、並列処理性能に優れたFPGAやリコンフィギュラブルプロセッサを応用することが提案されている。機械学習を行う上では行列の乗算が必須であるが、特にリコンフィギュラブルプロセッサにおいて、行列の乗算に際して、より並列度を向上させることが要求されている。
【0008】
本発明の実施形態は、上述した問題点を解決するためになされたものであり、行列の乗算に際して並列度を向上させることができるリコンフィギュラブルプロセッサを提供することを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決するため、本実施形態に係るリコンフィギュラブルプロセッサは、複数のプロセッシングエレメントを有し、該複数のプロセッシングエレメントによる回路構成を動的に再構成可能なリコンフィギュラブル回路と、該リコンフィギュラブル回路に構成される回路構成を示す複数の構成情報を記憶するコンフィギュレーションメモリと、前記リコンフィギュラブル回路と前記コンフィギュレーションメモリとを制御する制御回路とを備え、接続された外部メモリに記憶された行列の乗算を行うリコンフィギュラブルプロセッサであって、前記制御回路は、前記外部メモリに記憶された一方の行列における少なくとも1つの所定の行または少なくとも1つの所定の列に含まれる全要素をバッファメモリに保持する第1の回路を示す第1の構成情報と、前記外部メモリに記憶された他方の行列の全要素と前記バッファメモリに保持された全要素とに基づく積和処理を実行する第2の回路を示す第2の構成情報とを前記外部メモリから前記コンフィギュレーションメモリにロードするロード処理部と、前記コンフィギュレーションメモリにロードされた前記第1の構成情報に基づいて前記リコンフィギュラブル回路に構成された前記第1の回路による処理動作と、前記コンフィギュレーションメモリにロードされた前記第2の構成情報に基づいて前記第1の回路とは異なるタイミングにおいて前記リコンフィギュラブル回路に構成された前記第2の回路による処理動作とを、前記一方の行列の全要素と前記他方の行列の全要素との積和処理が終了するまで繰り返し実行する処理制御部とを備えることを特徴とする。
【発明の効果】
【0010】
本発明の実施形態によれば、行列の乗算に際して並列度を向上させることができる。
【図面の簡単な説明】
【0011】
【
図1】実施形態に係るリコンフィギュラブルプロセッサのハードウェア構成を示すブロック図である。
【
図2】リコンフィギュラブル回路のハードウェア構成を示すブロック図である。
【
図4】制御回路の機能構成を示すブロック図である。
【
図5】行列の乗算に係る制御回路の全体動作を示すフローチャートである。
【
図6】転置制御処理の動作を示すフローチャートである。
【
図7】動作制御処理の動作を示すフローチャートである。
【
図8】第1演算制御処理の動作を示すフローチャートである。
【
図11】第2演算制御処理の動作を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら、本発明の実施形態について説明する。
【0013】
(リコンフィギュラブルプロセッサのハードウェア構成)
本実施形態に係るリコンフィギュラブルプロセッサのハードウェア構成について説明する。
図1は、リコンフィギュラブルプロセッサのハードウェア構成を示すブロック図である。
図2は、リコンフィギュラブル回路のハードウェア構成を示すブロック図である。
【0014】
図1に示すように、本実施形態に係るリコンフィギュラブルプロセッサ1は、リコンフィギュラブル回路10、コンフィギュレーションメモリ11、制御回路12、データバス13、外部メモリ2と接続された外部I/O14を備える。
【0015】
外部メモリ2は、制御回路12により実行されるプログラム、リコンフィギュラブル回路10または制御回路12により処理されるデータ、リコンフィギュラブル回路10の回路構成を示す構成情報などを格納するRAM(Random Access Memory)である。
【0016】
リコンフィギュラブル回路10は、
図2に示すように、行列状に配置された複数のプロセッシングエレメントPEを有し、これらのプロセッシングエレメントPEによる回路の構成を、構成情報に基づいて動的に変更可能なダイナミックリコンフィギュラブルデバイスである。ここで、構成情報は、回路構成として、各プロセッシングエレメントPEの機能定義と複数のプロセッシングエレメントPE間の接続関係とを示す。
【0017】
なお、
図2においては、説明上、リコンフィギュラブル回路10に含まれるプロセッシングエレメントPEの一部のみが示されているものとし、後述する
図9,10,11についても同様である。また、本実施形態に係るリコンフィギュラブル回路10は、同一種類のプロセッシングエレメントPEのみにより構成されるホモ型、または特定の機能に特化した複数種類のプロセッシングエレメントPEにより構成されるヘテロ型のいずれであっても良い。
【0018】
コンフィギュレーションメモリ11は、外部メモリ2からロードされた構成情報が格納される記憶装置であり、本実施形態においては、それぞれ1つの構成情報を格納可能な3つのバンクを有する。これら3つのバンクのうち、所定の1バンクをフォアグラウンドバンクとすることができ、この際、残り2つのバンクはバックグラウンドバンクとして扱われる。ここで、フォアグラウンドバンクは、現行の回路構成を示す1つの構成情報を格納するバンクであり、バックグラウンドバンクは、動的に切り替えるべき回路構成を示す2つの構成情報を格納するバンクである。3つのバンクのうち、1つのバンクがフォアグラウンドバンクとして選択され、このフォアグラウンドバンクに格納された構成情報に基づいてリコンフィギュラブル回路10の回路が構成される。
【0019】
制御回路12は、リコンフィギュラブル回路10及びコンフィギュレーションメモリ11を制御するCPU(Central Processing Unit)である。制御回路12は、基本的に、外部メモリ2に格納された構成情報のコンフィギュレーションメモリ11へのロード、コンフィギュレーションメモリ11におけるフォアグラウンドバンクの選択、リコンフィギュラブル回路10による処理の実行の開始及び停止を行う。また、後述する各機能を実現するため、外部メモリ2に格納されたプログラムを実行する。
【0020】
(行列の乗算におけるメモリアクセス)
上述したハードウェア構成によるリコンフィギュラブルプロセッサは行列の乗算を行うものである。行列の乗算においては、後述するようにメモリアクセスがボトルネックとなる。ここで、行列の乗算におけるメモリアクセスについて説明する。
図3は、演算対象とする行列を示す図である。
【0021】
図3に示すように、行列Aと行列Bとの積を行列Cとして算出する場合、行列Cにおける要素C1の算出において、行列AにおけるA1~A4の4要素を含む行と、行列BにおけるB1~B4の要素を含む列との積和が、C1=A1×B1+A2×B2+A3×B3+A4×B4の式により算出される。つまり、行列Aの所定の行における各要素と、この所定の行に対応する行列Bの列において行の要素それぞれに対応する要素とが乗算され、全ての要素についての積を加算したものが行列Cの要素となる。
【0022】
リコンフィギュラブル回路10が行列Cを算出する場合、行列A及び行列Bは処理すべきデータとして外部メモリ2に格納される。行列Aの1要素とこれに対応する行列Bの1要素との積を算出する度にこれらの要素を外部メモリ2から読み出す場合、行列Cの1要素、例えば要素C1の算出に際しては要素A1~A4、要素B1~B4の計8要素が外部メモリ2から読み出される必要があり、行列Cの全要素の算出には行列A及び行列Bにおける要素が外部メモリ2から128回読み出される必要がある。このように、行列の乗算においては、演算処理が容易であるのに比較して、外部メモリ2へのメモリアクセス量が大きいため、メモリアクセスが処理速度においてボトルネックとなり得る。このことは、演算対象とする行列の要素数が大きくなる程に顕著となる。
【0023】
本実施形態において、リコンフィギュラブル回路10は、その内部にバッファメモリを複数構成し、これらのバッファメモリ内に行列Bの少なくとも1つ以上の列に含まれる全要素を保持して行列の乗算を行う。行列Bの1列の全要素がバッファメモリに保持されて行列の乗算がなされる場合、まず、行列Bの1列分の4要素(例えば、B1~B4)が外部メモリ2から読み出されてバッファメモリに保持され、行列Aの所定の1行における4要素(例えば、A1~A4)が外部メモリ2から読み出されて、この4要素(A1~A4)とバッファメモリに保持された4要素(B1~B4)との積和により行列Cの1要素(C1)が算出される。バッファメモリに保持された行列Bの1列分の4要素(B1~B4)は、行列Cの1列における全要素(C1,C5,C9,C13)の算出に用いることができるため、行列Cの1列の算出に際しては、行列Bの4要素(B1~B4)と行列Aの16要素(A1~A16)とを含む計20要素が外部メモリ2から読み出される。したがって、行列Cの全要素の算出に際して、行列A及び行列Bにおける要素が外部メモリ2から80回読み出されることとなる。このように、バッファメモリに要素を保持することによって、保持した要素を複数回用いることができ、行列の乗算に要するメモリアクセス量を低減することができ、延いては、処理時間を低減することができる。
【0024】
また、行列Bの2列の全要素(例えば、B1~B8)がバッファメモリに保持されて行列の乗算がなされる場合、まず、行列Bの2列分の8要素(B1~B8)が外部メモリ2から読み出されてバッファメモリに保持され、行列Aの所定の1行における4要素(例えば、A1~A4)が外部メモリ2から読み出されて、この4要素(A1~A4)と、バッファメモリに保持された1列分の4要素(B1~B4)と他の1列分の4要素(B5~B8)のそれぞれとの積和により行列Cの1行に含まれる2要素(C1,C2)が算出される。バッファメモリに保持された行列Bの2列分の8要素(B1~B8)は、行列Cの2列における全要素(C1,C5,C9,C13,C2,C6,C10,C14)の算出に用いることができるため、行列Cの2列の算出に際しては、行列Bの8要素(B1~B8)と行列Aの16要素(A1~A16)とを含む計24要素が外部メモリ2から読み出されることとなり、したがって、行列Cの全要素の算出に際して、行列A及び行列Bにおける要素が外部メモリ2から48回読み出されることとなる。
【0025】
このように、バッファメモリに保持する要素数が多い程、行列の乗算に係るメモリアクセスを低減させることができる。なお、以降の説明において、リコンフィギュラブルプロセッサ1は行列Bの1列分の要素をバッファメモリに保持して行列の乗算を行うものとするが、複数列文の要素をバッファメモリに保持するようにしても良く、また、行列Aの少なくとも1つの行以上に含まれる要素をバッファメモリに保持するようにしても良い。
【0026】
(制御回路の機能構成)
制御回路の機能構成について説明する。
図4は、制御回路の機能構成を示すブロック図である。
【0027】
制御回路12は、機能として、サイズ判定部121、選択部122、パラメータ変更部123、ロード処理部124、回路構成部125、処理制御部126、演算部127、処理判定部128を備える。
【0028】
サイズ判定部121は、演算対象とする行列のサイズが所定の閾値以上か否かを判定する。ここで、行列のサイズは、外部メモリ2に格納された行列Aまたは行列Bのデータサイズである。選択部122は、サイズ判定部121による判定に応じて外部メモリ2に格納された構成情報を選択する。パラメータ変更部123は、選択部122により選択された構成情報のパラメータを変更する。ここで構成情報のパラメータとは、構成情報に基づいてリコンフィギュラブル回路10において構成された回路により用いられる外部メモリ2上のデータを示すポインタであり、具体的には外部メモリ2に格納された行列の要素を示すポインタである。
【0029】
ロード処理部124は、パラメータ変更部123によりパラメータを変更された構成情報をコンフィギュレーションメモリ11へロードする。回路構成部125は、コンフィギュレーションメモリ11における3つのバンクのうち、1つのバンクをフォアグラウンドバンクとして選択することによりリコンフィギュラブル回路10の回路構成を変更する。処理制御部126は、リコンフィギュラブル回路10による処理動作の開始及び停止を制御する。演算部127は、制御回路12により行列の乗算を行う。処理判定部128は、リコンフィギュラブル回路10による行列の乗算において、全ての行列要素による積和処理が終了したか否か、即ち行列の乗算が終了したか否かを判定する。
【0030】
(制御回路の全体動作)
行列の乗算に係る制御回路の全体動作について説明する。
図5は、行列の乗算に係る制御回路の全体動作を示すフローチャートである。
【0031】
図5に示すように、まず、サイズ判定部121は、演算対象とする行列のサイズが所定の第1閾値以上か否かを判定する(S101)。
【0032】
行列のサイズが第1閾値以上である場合(S101,YES)、後述する転置制御処理が実行され(S102)、その後、後述する第1演算制御処理が実行され(S103)、全体処理が終了する。
【0033】
一方、行列のサイズが第1閾値未満である場合(S101,NO)、サイズ判定部121は、行列のサイズが、第1閾値より値が小さい第2閾値以上であるか否かを判定する(S104)。
【0034】
行列のサイズが第2閾値以上である場合(S104,YES)、転置制御処理が実行され(S105)、その後、後述する第2演算制御処理が実行され(S106)、全体処理が終了する。
【0035】
一方、行列のサイズが第2閾値未満である場合(S104,NO)、制御回路12が行列の積を演算する演算処理を実行し(S107)、全体処理が終了する。
【0036】
このように、制御回路12は、演算対象とする行列のサイズに応じて、リコンフィギュラブル回路10により実行される第1演算制御処理、第2演算制御処理、演算処理を実行する。ここで、第1演算制御処理は、リコンフィギュラブル回路10において並列度が高い回路を構成して行列の乗算を行う処理である。また、第2演算制御処理は、第1演算制御処理と比較して、リコンフィギュラブル回路10において並列度は低いが構成情報のロード時間が短い回路を構成して行列の乗算を行う処理である。また、演算処理は、制御回路12において構成情報をロードする必要なく行列の乗算を行う処理である。
【0037】
したがって、第1閾値は、第1の演算制御処理により行列の乗算を行う際に構成情報のロード時間がボトルネックとなるような小さい行列のサイズに設定されると良く、第2閾値は、第2の演算制御処理により行列の演算を行う際に構成情報のロード時間がボトルネックとなるような小さい行列のサイズに設定されると良い。
【0038】
(転置制御処理の動作)
上述の全体動作におけるステップS102,S105において実行される転置制御処理について説明する。
図6は、転置制御処理の動作を示すフローチャートである。
【0039】
図6に示すように、まず、選択部122は、リコンフィギュラブル回路10により転置処理を行うための構成情報を選択する(S201)。ここで、転置処理は、行列Bの行と列を入れ替える処理であり、行列Aと行列Bとの乗算を容易に行うための処理である。なお、後に詳述する第1演算制御処理及び第2演算制御処理において、処理対象は転置された行列B
Tであるが、便宜上、以降の説明において、行列Bの列という表現は、転置された行列B
Tの行を示すものとする。
【0040】
次に、パラメータ変更部123は、選択された構成情報に基づいて構成される回路により用いられるパラメータを変更する(S202)。ここで変更されるパラメータは、外部メモリ2に格納される行列Bの要素を示すポインタである。
【0041】
パラメータの変更後、ロード処理部124は、選択部122により選択された構成情報、即ち、転置処理を行うための構成情報を外部メモリ2からコンフィギュレーションメモリ11におけるバンクへロードし(S203)、回路構成部125がこのバンクをフォアグラウンドバンクとして選択することによりリコンフィギュラブル回路10の回路構成を変更する(S204)。
【0042】
回路構成の変更後、処理制御部126は、リコンフィギュラブル回路10により動作処理を制御する動作制御処理を実行する(S205)。この動作制御処理により、転置処理を行うための回路が構成されたリコンフィギュラブル回路10による処理動作が開始される。
【0043】
(動作制御処理の動作)
上述の転置制御処理におけるステップS205において実行される動作制御処理の動作について説明する。
図7は、動作制御処理の動作を示すフローチャートである。
【0044】
図7に示すように、処理制御部126は、リコンフィギュラブル回路10による処理動作を開始し(S301)、リコンフィギュラブル回路10をポーリングし(S302)、予め与えられた停止条件が満たされたか否かを判定する(S303)。転置制御処理においては、行列Bの全ての要素について転置された場合に停止条件を満たしたものと判定されるものとする。
【0045】
停止条件が満たされた場合(S303,YES)、処理制御部126は、リコンフィギュラブル回路10による処理動作を終了し(S304)、動作制御処理を終了する。
【0046】
一方、停止条件が満たされない場合(S303,NO)、処理制御部126は、再度、リコンフィギュラブル回路10をポーリングする(S302)。
【0047】
このような動作制御処理によって、所定の回路が構成されたリコンフィギュラブル回路10を予め与えられた停止条件を満たすまで動作させることができる。なお、この動作制御処理は、転置制御処理だけでなく、第1演算制御処理、第2演算制御処理においても異なる停止条件が与えられて実行される。
【0048】
(第1演算制御処理)
第1演算制御処理について説明する。
図8は、第1演算制御処理の動作を示すフローチャートである。
図9は、第1の回路を示すブロック図である。
図10は、第2の回路を示すブロック図である。
【0049】
図8に示すように、まず、選択部122は、第1の構成情報及び第2の構成情報を選択する(S401)。ここで、第1の構成情報によれば、リコンフィギュラブル回路10が、その内部に構成したバッファメモリ内に行列Bの2列に含まれる全ての要素を保持させる第1の回路として構成される。また、第2の構成情報によれば、リコンフィギュラブル回路10が、行列Aにおける全ての要素を外部メモリ2からロードし、行列Aの行とバッファメモリ内に保持された列とに基づく積和を算出する第2の回路として構成される。
【0050】
次に、パラメータ変更部123は、選択された第1の構成情報及び第2の構成情報のそれぞれについて、パラメータを変更する(S402)。ここで、第1の構成情報について変更されるパラメータは、外部メモリ2に格納された行列Bの所定の2列に含まれる全ての要素のデータサイズ、及びこれらの要素を示すポインタであり、第2の構成情報について変更されるパラメータは、外部メモリ2に格納された行列Aに含まれる全ての要素のデータサイズ、及びこれらの要素を示すポインタである。このパラメータが更新されることにより行列Bの所定の2列が順次選択される。
【0051】
パラメータの変更後、ロード処理部124は、選択部122により選択された第1の構成情報を外部メモリ2からコンフィギュレーションメモリ11へロードし(S403)、同様に、第2の構成情報を外部メモリ2からコンフィギュレーションメモリ11へロードする(S404)。
【0052】
構成情報のロード後、回路構成部125は、コンフィギュレーションメモリ11において第1の構成情報が格納されたバンクをフォアグラウンドバンクとして選択することにより、リコンフィギュラブル回路10において、第1の回路を構成する(S405)。
【0053】
ここで、第1の回路について説明する。この第1の回路は、リコンフィギュラブル回路10において複数構成される。第1の回路のそれぞれは、
図9に示すように、第1ロード回路101と、バッファメモリ102と、ライトポインタ103と、ライトデータ104とを含む。第1ロード回路101は、行列Bの所定の2列に含まれる要素を外部メモリ2からロードする。バッファメモリ102は、第1ロード回路101によりロードされたデータを保持する。ライトポインタ103は、バッファメモリ102におけるデータのライト位置を指定する。ライトデータ104は、第1ロード回路101によりロードされたデータをバッファメモリ102へ書き込む。
【0054】
第1の回路への変更後、処理制御部126は、リコンフィギュラブル回路10に対して動作制御処理を実行する(S406)。ここで、動作制御処理は、行列Bの所定の2列に含まれる全ての要素がリコンフィギュラブル回路10におけるバッファメモリ102に書き込まれるとリコンフィギュラブル回路10の処理動作を停止する。
【0055】
第1の回路に構成されたリコンフィギュラブル回路10の処理動作後、回路構成部125は、コンフィギュレーションメモリ11において第2の構成情報が格納されたバンクをフォアグラウンドバンクとして選択することにより、第1の回路が構成されたリコンフィギュラブル回路10において、第2の回路を再構成する(S407)。
【0056】
ここで、第2の回路について説明する。この第2の回路は、リコンフィギュラブル回路10において複数の第1の回路に対応して複数構成される。第2の回路のそれぞれは、
図10に示すように、第1の回路において行列Bの所定の2列における要素が書き込まれたバッファメモリ102と、リードポインタ105と、第2ロード回路106と、積和演算回路107とを含む。リードポインタ105は、バッファメモリ102に保持される行列Bの要素を読み出す。第2ロード回路106は、バッファメモリ102に保持される行列Bの要素に対応する行列Aに含まれる要素を外部メモリ2からロードする。積和演算回路107は、リードポインタ105によりバッファメモリ102から読み出された行列Bの要素と第2ロード回路106によりロードされた行列Aの要素とに基づく積和演算を行う。
【0057】
第2の回路の構成後、処理制御部126は、リコンフィギュラブル回路10に対して動作制御処理を実行する(S408)。ここで、動作制御処理は、バッファメモリ102に保持される行列Bの所定の2列とロードされた行列Aの全ての行による積和演算を終えるとリコンフィギュラブル回路10の処理動作を停止する。なお、積和演算の結果は行列Cの要素として外部メモリ2にストアされるものとする。
【0058】
第2の回路に構成されたリコンフィギュラブル回路10の処理動作後、処理判定部128は、行列Aと行列Bとの乗算を終了したか否か、即ち、行列Bの全ての列について行列Aにおける行との積和演算がなされたか否かを判定する(S409)。
【0059】
行列の乗算が終了していない場合(S409,NO)、パラメータ変更部123は、第1の構成情報及び第2構成情報について、パラメータとしてのポインタを更新し(S410)、回路構成部125は、第2の回路が構成されたリコンフィギュラブル回路10において、第1の回路を再構成する(S405)。なお、ステップS410のパラメータの更新については、例えば、ポインタの更新を行うハードウェア機構をリコンフィギュラブル回路10に追加することによって省略することができる。
【0060】
一方、行列の乗算が終了した場合(S409,YES)、第1演算制御処理が終了される。
【0061】
このような第1演算制御処理によれば、行列Bの列をバッファメモリ102に保持する第1の回路がリコンフィギュラブル回路10上に構成された後、行列Aをロードするとともにバッファメモリ102に保持した行列Bの列との積和演算を行う第2の回路がリコンフィギュラブル回路10上に構成される。このように、行列の乗算を行う回路を第1の回路と第2の回路とに時間的に分割することによって、これらの回路を同時にリコンフィギュラブル回路10上に構成するのと比較して、より多くの回路をリコンフィギュラブル回路10上に構成し、並列度を向上させることができる。また、コンフィギュレーションメモリ11に事前にロードされた第1の構成情報と第2の構成情報とに基づいて第1の回路と第2の回路とを繰り返しリコンフィギュラブル回路10上に構成するため、第1の回路と第2の回路とをリコンフィギュラブル回路10上に構成する度に第1の構成情報と第2の構成情報をロードする必要がなく、したがって、構成情報のロードに掛かる時間を低減することができる。
【0062】
(第2演算制御処理)
第2演算処理について説明する。
図11は、第2演算制御処理の動作を示すフローチャートである。
図12は、第3の回路構成を示すブロック図である。
【0063】
図11に示すように、まず、選択部122は、第3の構成情報を選択する(S501)。ここで、第3の構成情報によれば、リコンフィギュラブル回路10において、第1の回路と第2の回路とを結合した第3の回路が構成される。
【0064】
次に、パラメータ変更部123は、選択された第3の構成情報について、パラメータを変更する(S502)。ここで、第3の構成情報について変更されるパラメータは、外部メモリ2に格納された行列Bの所定の1列に含まれる全ての要素のデータサイズ及びこれらの要素を示すポインタと、外部メモリ2に格納された行列Aに含まれる全ての要素のデータサイズ及びこれらの要素を示すポインタである。
【0065】
パラメータの変更後、ロード処理部124が、選択部122により選択された第3の構成情報を外部メモリ2からコンフィギュレーションメモリ11へロードし(S503)、回路構成部125が、コンフィギュレーションメモリ11において第3の構成情報が格納されたバンクをフォアグラウンドバンクとして選択することにより、リコンフィギュラブル回路10において、第3の回路が構成される(S504)。
【0066】
ここで、第3の回路について説明する。この第3の回路は、リコンフィギュラブル回路10において複数構成される。第3の回路のそれぞれは、
図12に示すように、第1ロード回路101と、バッファメモリ102と、ライトポインタ103と、ライトデータ104と、リードポインタ105と、第2ロード回路106と、積和演算回路107とを含み、上述したように、第1の回路と第2の回路を結合した構成となっている。
【0067】
第3の回路の構成後、処理制御部126は、リコンフィギュラブル回路10に対して動作制御処理を実行する(S505)。ここで、動作制御処理は、バッファメモリ102に保持される行列Bの所定の1列とロードされた行列Aの全ての行による積和演算を終えるとリコンフィギュラブル回路10の処理動作を停止する。なお、積和演算の結果は行列Cの要素として外部メモリ2にストアされるものとする。
【0068】
第3の回路に構成されたリコンフィギュラブル回路10の処理動作後、処理判定部128は、行列Aと行列Bとの乗算を終了したか否か、即ち、行列Bの全ての列について行列Aにおける行との積和演算がなされたか否かを判定する(S506)。
【0069】
行列の乗算が終了していない場合(S506,NO)、パラメータ変更部123は、第3の構成情報について、パラメータとしてのポインタを更新し(S507)、処理制御部126は、再度、リコンフィギュラブル回路10に対して動作制御処理を実行する(S505)。
【0070】
一方、行列の乗算が終了した場合(S506,YES)、第2演算制御処理が終了される。
【0071】
このような第2演算制御処理によれば、第1の回路と第2の回路とに時間的に分割する場合と比較して、1つの第3の回路が必要とするプロセッシングエレメントPEの数が多くなるために並列度は低減するが、1つの構成情報のみをロードするために構成情報のロードの掛かる時間を低減することができる。
【0072】
なお、バッファメモリ102に保持する行列Bの列数を、第1演算制御処理においては2列とし、第2演算制御処理において1列としたが、いずれの処理においても少なくとも1列以上とすれば良く、第1演算制御処理における列数を第2演算制御処理における列数より多くすることが望ましい。
【0073】
本発明の実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0074】
1 リコンフィギュラブルプロセッサ
2 外部メモリ
10 リコンフィギュラブル回路
12 制御回路
PE プロセッシングユニット
121 サイズ判定部
123 パラメータ変更部
125 回路構成部
126 処理制御部