(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】プログラマブル論理回路、情報処理装置、情報処理システム、及びプログラム
(51)【国際特許分類】
G06F 12/00 20060101AFI20241001BHJP
H03K 19/1776 20200101ALI20241001BHJP
H03K 19/17752 20200101ALN20241001BHJP
【FI】
G06F12/00 572A
H03K19/1776
G06F12/00 571A
H03K19/17752
(21)【出願番号】P 2020163989
(22)【出願日】2020-09-29
【審査請求日】2023-08-30
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110000752
【氏名又は名称】弁理士法人朝日特許事務所
(72)【発明者】
【氏名】塩川 宏明
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2013-089165(JP,A)
【文献】特表2017-502421(JP,A)
【文献】特表2015-506025(JP,A)
【文献】特開2007-241918(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 9/46
H03K 19/1776
H03K 19/17752
(57)【特許請求の範囲】
【請求項1】
通信可能に接続された複数の論理ブロックを有し、
前記複数の論理ブロックのいずれかに、複数のモジュールが再構成され、
前記複数のモジュールのうち、実行中の
1以上の第1モジュールがメモリにアクセスする第1タイミングに、実行中でない第2モジュールが前記メモリにアクセスする第2タイミングが重ならないように、
前記第1モジュールと、前記第2モジュールとの組合せに応じて、前記第2モジュールの実行の開始を前記第1モジュールの
いずれかの実行の開始時点から遅延させる
プログラマブル論理回路。
【請求項2】
前記第1タイミング、及び前記第2タイミングを予測する
請求項1に記載のプログラマブル論理回路。
【請求項3】
前記メモリは、前記複数の論理ブロックのいずれかに再構成されている
請求項1又は2に記載のプログラマブル論理回路。
【請求項4】
前記複数のモジュールのうち、いずれか2以上のモジュールが、互いに競合して前記メモリにアクセスした場合、該複数のモジュールのそれぞれに割り当てられた順位に応じて、該2以上のモジュールのそれぞれに前記メモリへのアクセスを許可する
請求項1から
3のいずれか1項に記載のプログラマブル論理回路。
【請求項5】
プログラマブル論理回路と接続されたプロセッサ、を有し、前記プロセッサは、
前記プログラマブル論理回路に、複数のモジュールを再構成し、
前記複数のモジュールのうち、実行中の
1以上の第1モジュールがメモリにアクセスする第1タイミングを予測し、
前記複数のモジュールのうち、実行中でない第2モジュールが前記メモリにアクセスする第2タイミングを予測し、
前記第2タイミングが前記第1タイミングと重ならないように、
前記第1モジュールと、前記第2モジュールとの組合せに応じて、前記第2モジュールの実行の開始を前記第1モジュールの
いずれかの実行の開始時点から遅延させる
情報処理装置。
【請求項6】
前記プロセッサは、
前記メモリを、前記プログラマブル論理回路に再構成する
請求項
5に記載の情報処理装置。
【請求項7】
プログラマブル論理回路と、
前記プログラマブル論理回路と接続されたプロセッサと、を有し、
前記プロセッサは、
前記プログラマブル論理回路に、複数のモジュールを再構成し、
前記複数のモジュールのうち、実行中の
1以上の第1モジュールがメモリにアクセスする第1タイミングを予測し、
前記複数のモジュールのうち、実行中でない第2モジュールが前記メモリにアクセスする第2タイミングを予測し、
前記第2タイミングが前記第1タイミングと重ならないように、
前記第1モジュールと、前記第2モジュールとの組合せに応じて、前記第2モジュールの実行の開始を前記第1モジュールの
いずれかの実行の開始時点から遅延させる
情報処理システム。
【請求項8】
プログラマブル論理回路と接続されたプロセッサ、を有するコンピュータに、
前記プログラマブル論理回路に、複数のモジュールを再構成するステップと、
前記複数のモジュールのうち、実行中の
1以上の第1モジュールがメモリにアクセスする第1タイミングを予測するステップと、
前記複数のモジュールのうち、実行中でない第2モジュールが前記メモリにアクセスする第2タイミングを予測して、該第2タイミングが前記第1タイミングと重ならないように、
前記第1モジュールと、前記第2モジュールとの組合せに応じて、該第2モジュールの実行の開始を前記第1モジュールの
いずれかの実行の開始時点から遅延させるステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラマブル論理回路、情報処理装置、情報処理システム、及びプログラムに関する。
【背景技術】
【0002】
プログラマブル論理回路において、複数のモジュールが共有するメモリに同時にアクセスすると処理が遅延することがあった。メモリ競合時間の計測について、例えば、特許文献1は、メモリ競合時間を正確に計測できるメモリ競合時間計測装置を開示している。また、特許文献2は、少なくとも2つのメモリデバイスにおける応答に必要な最大クロックパルス数により、最大の遅延時間を計測し、これに応答してデータ出力を遅らせるデジタルメモリシステムを開示している。また、特許文献3は、リコンフィグレーション領域内にコンフィグレーションされ動作中の複数の論理回路のデータ転送量の測定値を取得し、取得したデータ転送量の合計がプログラマブルロジック回路装置のバスのデータ転送量の上限値を超えない範囲で、リコンフィグレーション領域内にコンフィグレーションする複数の論理回路それぞれの並列数を増加する情報処理装置を開示している。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2005-258617号公報
【文献】特許3860842号
【文献】特開2018-101359号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、プログラマブル論理回路に再構成された複数のモジュールが共有のメモリにアクセスするタイミングを分散させることを目的とする。
【課題を解決するための手段】
【0005】
本発明の請求項1に係るプログラマブル論理回路は、通信可能に接続された複数の論理ブロックを有し、前記複数の論理ブロックのいずれかに、複数のモジュールが再構成され、前記複数のモジュールのうち、実行中の1以上の第1モジュールがメモリにアクセスする第1タイミングに、実行中でない第2モジュールが前記メモリにアクセスする第2タイミングが重ならないように、前記第1モジュールと、前記第2モジュールとの組合せに応じて、前記第2モジュールの実行の開始を前記第1モジュールのいずれかの実行の開始時点から遅延させるプログラマブル論理回路である。
【0006】
本発明の請求項2に係るプログラマブル論理回路は、請求項1に記載の態様において、前記第1タイミング、及び前記第2タイミングを予測するプログラマブル論理回路である。
【0007】
本発明の請求項3に係るプログラマブル論理回路は、請求項1又は2に記載の態様において、前記メモリは、前記複数の論理ブロックのいずれかに再構成されているプログラマブル論理回路である。
【0011】
本発明の請求項4に係るプログラマブル論理回路は、請求項1から3のいずれか1項に記載の態様において、前記複数のモジュールのうち、いずれか2以上のモジュールが、互いに競合して前記メモリにアクセスした場合、該複数のモジュールのそれぞれに割り当てられた順位に応じて、該2以上のモジュールのそれぞれに前記メモリへのアクセスを許可するプログラマブル論理回路である。
【0012】
本発明の請求項5に係る情報処理装置は、プログラマブル論理回路と接続されたプロセッサ、を有し、前記プロセッサは、前記プログラマブル論理回路に、複数のモジュールを再構成し、前記複数のモジュールのうち、実行中の1以上の第1モジュールがメモリにアクセスする第1タイミングを予測し、前記複数のモジュールのうち、実行中でない第2モジュールが前記メモリにアクセスする第2タイミングを予測し、前記第2タイミングが前記第1タイミングと重ならないように、前記第1モジュールと、前記第2モジュールとの組合せに応じて、前記第2モジュールの実行の開始を前記第1モジュールのいずれかの実行の開始時点から遅延させる情報処理装置である。
【0013】
本発明の請求項6に係る情報処理装置は、請求項5に記載の態様において、前記プロセッサは、前記メモリを、前記プログラマブル論理回路に再構成する情報処理装置である。
【0014】
本発明の請求項7に係る情報処理システムは、プログラマブル論理回路と、前記プログラマブル論理回路と接続されたプロセッサと、を有し、前記プロセッサは、前記プログラマブル論理回路に、複数のモジュールを再構成し、前記複数のモジュールのうち、実行中の1以上の第1モジュールがメモリにアクセスする第1タイミングを予測し、前記複数のモジュールのうち、実行中でない第2モジュールが前記メモリにアクセスする第2タイミングを予測し、前記第2タイミングが前記第1タイミングと重ならないように、前記第1モジュールと、前記第2モジュールとの組合せに応じて、前記第2モジュールの実行の開始を前記第1モジュールのいずれかの実行の開始時点から遅延させる情報処理システムである。
【0015】
本発明の請求項8に係るプログラムは、プログラマブル論理回路と接続されたプロセッサ、を有するコンピュータに、前記プログラマブル論理回路に、複数のモジュールを再構成するステップと、前記複数のモジュールのうち、実行中の1以上の第1モジュールがメモリにアクセスする第1タイミングを予測するステップと、前記複数のモジュールのうち、実行中でない第2モジュールが前記メモリにアクセスする第2タイミングを予測して、該第2タイミングが前記第1タイミングと重ならないように、前記第1モジュールと、前記第2モジュールとの組合せに応じて、該第2モジュールの実行の開始を前記第1モジュールのいずれかの実行の開始時点から遅延させるステップと、を実行させるプログラムである。
【発明の効果】
【0016】
請求項1、7、8に係る発明によれば、プログラマブル論理回路に再構成された複数のモジュールが共有のメモリにアクセスするタイミングを分散させることができる。また、これらの発明によれば、1以上の第1モジュールと、第2モジュールとの組合せに応じて、第2モジュールを遅延させる遅延時間が決まる。
請求項2に係る発明によれば、プログラマブル論理回路が自身で第1タイミング、及び第2タイミングを予測して、第1タイミングに重ならないように、第2タイミングを遅延させることができる。
請求項3、6に係る発明によれば、プログラマブル論理回路にデバイス内メモリを設ける必要がない。
請求項4に係る発明によれば、2以上のモジュールが互いに競合してメモリにアクセスした場合に、どのモジュールを優先させるかを予め決めておくことができる。
請求項5に係る発明によれば、プログラマブル論理回路に再構成された第1モジュールと、第2モジュールと、がそれぞれ共有のメモリにアクセスするタイミングを予測して、これらを分散させることができる。
【図面の簡単な説明】
【0017】
【
図7】本実施形態におけるプログラマブル論理回路21の構成の例を示す図。
【
図8】プログラマブル論理回路21の領域の例を示す図。
【
図9】再構成されたモジュールに含まれる回路を説明するための図。
【
図10】2つの処理が並行して実行される論理デバイス2の例を示す図。
【
図11】プロセッサ11の機能的構成の例を示す図。
【
図12】プロセッサ11の動作の流れの例を示すフロー図。
【
図13】論理デバイス2の動作の流れの例を示すフロー図。
【
図14】モジュールの処理の周期を説明するための図。
【
図15】競合によるメモリアクセス時間の増大を説明するための図。
【
図16】実行の開始が遅延させられた第2モジュールM2を説明するための図。
【
図17】他のモジュールの整数倍の周期を有するモジュールを説明するための図。
【
図18】整数倍の周期を有するモジュールに対して開始を遅延させる例を示す図。
【
図19】変形例における遅延時間DB122aの例を示す図。
【
図20】変形例におけるプロセッサ11の機能的構成の例を示す図。
【
図21】変形例におけるプログラマブル論理回路21の例を示す図。
【発明を実施するための形態】
【0018】
<実施形態>
<情報処理システムの構成>
図1は、情報処理システム9の構成の例を示す図である。
図1に示す情報処理システム9は、情報処理装置1と、論理デバイス2とを有する。情報処理装置1は、例えば、画像を示す画像データ、各種のコンピュータ・プログラム(以下、単にプログラムという)、モジュール等の情報を処理する装置である。また、情報処理装置1は、論理デバイス2を制御して、この論理デバイス2に処理の実行を指示する。論理デバイス2は、情報処理装置1の制御の下、内部の回路を再構成し、指示された処理を実行するデバイスである。
【0019】
情報処理装置1は、クロック10、プロセッサ11、メモリ12、操作部14、表示部15、画像読取部17、及び画像形成部18を有する。これらの構成は、バス19で、互いに通信可能に接続されている。また、論理デバイス2は、バス19に接続され、情報処理装置1の各構成と通信可能である。
【0020】
バス19は、プロセッサ11を図示しないチップセットに接続するホストバス、及び、そのチップセットに含まれる図示しないメモリコントローラとメモリ12とを接続するメモリバスを含む。また、バス19は、プロセッサ11と、論理デバイス2等とを接続するPCI(Peripheral Component Interconnect)バス、及び、このPCIバスと、上述したホストバスとを接続するホスト・PCIバスブリッジを含む。また、バス19は、画像読取部17や画像形成部18が利用する、画像データをやり取りするための画像バスを含んでいてもよい。
【0021】
クロック10は、プロセッサ11、又は論理デバイス2にクロック信号を供給する構成であり、例えば水晶振動子を利用した発振回路を有する。
【0022】
プロセッサ11は、メモリ12に記憶されているプログラムを読出して実行することにより情報処理装置1の各部を制御する。プロセッサ11は、例えばCPU(Central Processing Unit)である。
【0023】
操作部14は、各種の指示をするための操作ボタン、キーボード、マウス、タッチパネル等の操作子を備えており、操作を受付けてその操作内容に応じた信号をプロセッサ11に送る。
【0024】
表示部15は、プロセッサ11、又は論理デバイス2の制御の下、指定された画像を表示する。
図1に示す表示部15は、上述した画像を表示するための表示画面である液晶ディスプレイを有している。この液晶ディスプレイの上には、操作部14の透明のタッチパネルが重ねて配置されてもよい。
【0025】
画像読取部17は、LED(light emitting diode)等の照射装置、レンズやプリズム等の光学系、CMOS(Complementary Metal Oxide Semiconductor)イメージセンサや、CCD(Charge Coupled Device)イメージセンサ等の撮像素子等を備える。画像読取部17は、プロセッサ11、又は論理デバイス2の制御の下、紙等の媒体に形成された画像を読取り、読取った画像を示す画像データを生成してプロセッサ11に供給する。
【0026】
画像形成部18は、プロセッサ11、又は論理デバイス2の制御の下、例えば電子写真方式等により、紙などの媒体に画像を形成する。
【0027】
メモリ12は、プロセッサ11に読み込まれるオペレーティングシステム、各種のプログラム、データ等を記憶する記憶手段である。また、メモリ12は、論理デバイス2に供給するモジュールを記憶する。メモリ12は、RAM(Random Access Memory)やROM(Read Only Memory)を有する。なお、メモリ12は、ソリッドステートドライブ、ハードディスクドライブ等を有してもよい。また、メモリ12は、モジュールDB121、遅延時間DB122、プログラムDB123、及び優先順位表124を記憶する。
【0028】
図2は、モジュールDB121の例を示す図である。このモジュールDB121において、モジュールIDの欄は、上述したモジュールを識別する識別情報である「モジュールID」を記憶する欄である。データの欄は、対応するモジュールIDで識別されるモジュールを論理デバイス2に再構成する際に用いるデータ(コンフィグレーションデータともいう)を記憶する欄である。
図2に示すモジュールDB121において、1つのモジュールは、1つのコンフィグレーションデータで構成される。
【0029】
図3は、遅延時間DB122の例を示す図である。
図3に示す遅延時間DB122は、第2モジュールIDリスト1221、及び遅延時間表1222を有する。第2モジュールIDリスト1221は、他のモジュール(第1モジュールという)の実行中に、実行を開始するモジュール(第2モジュールという)の識別情報であるモジュールID(第2モジュールIDという)を列挙したリストである。
【0030】
遅延時間表1222は、第2モジュールIDリスト1221に挙げられている第2モジュールIDごとに1つずつ設けられた表である。遅延時間表1222は、対応する第2モジュールIDで識別される第2モジュールの実行の開始を遅延させる時間(遅延時間という)の初期値(初期遅延時間という)を記憶する。この初期遅延時間は、既に実行中である1以上の第1モジュールの組合せに応じて予め決められている。
【0031】
プロセッサ11は、
図3に示す遅延時間DB122を参照し、第1モジュール、及び第2モジュールが再構成された論理デバイス2に対して、この初期遅延時間を伝える。後述する論理デバイス2のプログラマブル論理回路21は、伝えられた初期遅延時間に応じて、第2モジュールの実行の開始を、1以上の第1モジュールのいずれかの実行が開始された時点(開始時点という)から遅延させる。例えば、プログラマブル論理回路21は、1以上の第1モジュールの各開始時点のうち、最も遅いものから初期遅延時間だけ遅れて第2モジュールの実行を開始する。
【0032】
つまり、この論理デバイス2のプログラマブル論理回路21は、1以上の第1モジュールと、第2モジュールとの組合せに応じて、第2モジュールの実行の開始を、1以上の第1モジュールのいずれかの実行の開始時点から遅延させるプログラマブル論理回路の例である。
【0033】
図4は、プログラムDB123の例を示す図である。
図4に示すプログラムDB123は、プログラムID、使用モジュール、及びデータを対応付けて記憶する。
図4に示すプログラムIDの欄は、情報処理装置1で指示され得るプログラムの識別情報を記憶する欄である。
図4に示す使用モジュールの欄は、対応するプログラムIDで識別されるプログラムにおいて、使用される1以上のモジュールの識別情報をそれぞれ記憶する欄である。
図4に示すデータの欄は、対応するプログラムIDで識別されるプログラムの内容そのものを示すデータである。
【0034】
図5は、優先順位表124の例を示す図である。優先順位表124は、論理デバイス2において並行して実行される2以上のモジュールのそれぞれが、競合して共通のメモリにアクセスしたときに、いずれのモジュールのアクセスを優先するかを定めた表である。
図5に示す優先順位表124は、モジュールが再構成された領域に、メモリアクセスの優先順位を対応付けて記憶する。例えば、
図5に示す優先順位表124は、領域ID「R1a」→「R1b」→「R1c」→「R1d」の順に、それぞれの領域IDで識別される領域に再構成されたモジュールに対して、メモリへのアクセスを優先させることを定めている。
【0035】
論理デバイス2は、プロセッサ11の制御の下、機能を実現するモジュールを再構成することが可能な論理回路であり、例えばFPGA(Field Programmable Gate Array)である。
図1に示す論理デバイス2は、表示部15、画像読取部17、及び画像形成部18のうち、少なくともいずれかを制御する。なお、論理デバイス2が制御する対象はこれらに限られない。また、論理デバイス2は、これらを制御しなくてもよい。
【0036】
<論理デバイスの構成>
図6は、論理デバイス2の構成の例を示す図である。
図6に示す論理デバイス2は、デバイス内メモリ20、及びプログラマブル論理回路21を有する。
図6に示すデバイス内メモリ20は、論理デバイス2に内蔵された記憶装置であり、例えば、DDR SDRAM(Double-Data-Rate Synchronous Dynamic Random Access Memory)である。
図6に示すプログラマブル論理回路21は、内部の論理回路の構造を再構成できる半導体チップである。
【0037】
図7は、本実施形態におけるプログラマブル論理回路21の構成の例を示す図である。
図7に示すプログラマブル論理回路21は、いわゆるアイランドスタイルのFPGAである。
【0038】
このプログラマブル論理回路21は、それぞれ格子状に配列された複数の、論理ブロック211、スイッチブロック212、接続ブロック213、及び入出力端子214を有する。すなわち、このプログラマブル論理回路21は、格子状に配列された複数の論理ブロックを有するプログラマブル論理回路の例である。なお、
図7に示すプログラマブル論理回路21は略図であり、論理ブロック211等の個数は
図7に示したものに限らない。
【0039】
論理ブロック211は、真理値表回路等を用いて、論理や演算回路、記憶回路等、各種の機能を実現するモジュールを構成する単位となるブロックである。
【0040】
スイッチブロック212、及び、接続ブロック213は、これらを繋ぐ配線とともに配線領域を構成する。
【0041】
スイッチブロック212は、配線どうしの接続を切替えるブロックである。接続ブロック213は、論理ブロック211の入出力と上述した配線領域との接続を切替えるブロックである。
【0042】
スイッチブロック212、及び、接続ブロック213は、例えば、バストランジスタを用いたスイッチとその制御用のコンフィグレーションメモリとで構成される。
【0043】
入出力端子214は、プログラマブル論理回路21とプロセッサ11とを通信可能に接続し、プロセッサ11からの入力、及びプロセッサ11への出力のインタフェースとなるブロックである。
【0044】
また、入出力端子214のうち、いずれかは、上述したデバイス内メモリ20に接続されており、プログラマブル論理回路21に再構成されたモジュールから要求される、そのデバイス内メモリ20へのアクセスを中継する。
図7に示す入出力端子214は、上述した配線領域に接続されている。
【0045】
なお、プログラマブル論理回路21は、例えば、決められた処理の実行に用いるDSP(digital signal processor)を備えていてもよい。
【0046】
プロセッサ11は、メモリ12に記憶されたコンフィグレーションデータをプログラマブル論理回路21の論理ブロック211、スイッチブロック212、及び接続ブロック213にそれぞれ書き込むことで、プログラマブル論理回路21を再構成する。
【0047】
図8は、プログラマブル論理回路21の領域の例を示す図である。
図8に示す通り、プログラマブル論理回路21は、格子状に配列された複数の論理ブロック211を、それぞれの位置に応じて、複数の領域に区画している。
図8に示すプログラマブル論理回路21は、少なくとも1つのスタティック領域R0と、複数のリコンフィグ領域R1a、R1b、R1c…を有する。リコンフィグ領域R1a、R1b、R1c…は、特に区別する必要がない場合、リコンフィグ領域R1と表記する。
【0048】
スタティック領域R0は、情報処理装置1に対する電力の供給が開始される起動時に再構成される領域である。このスタティック領域R0は、例えば、呼び出される頻度の高いモジュール等や、モジュール間で共通して参照されるデータを記憶するメモリ等が起動時に再構成される。
【0049】
リコンフィグ領域R1は、プロセッサ11に指示されたときに再構成される領域である。複数のリコンフィグ領域R1のそれぞれには、1つずつモジュールが再構成される。
【0050】
図9は、再構成されたモジュールに含まれる回路を説明するための図である。
図9に示す1つのリコンフィグ領域R1には、モジュールに含まれる入出力回路C1、計測回路C2、遅延回路C3、及び処理回路C4が、それぞれ再構成されている。
【0051】
処理回路C4は、決められた処理を行う回路である。この「決められた処理」とは、例えば、画像を示す画像データを指定した角度だけ回転させる回転演算処理、画像が鮮明になるように各画素の階調を調整する画像鮮明化処理、画像から被写体の形状を検出するエッジ検出処理等である。
【0052】
入出力回路C1は、処理回路C4が使用するデータを、デバイス内メモリ20に入出力する回路である。なお、この入出力回路C1は、モジュールのコンフィグレーションデータとともに、優先順位表124から読出した優先順位に基づいて再構成される。これにより、この入出力回路C1は、メモリアクセスのタイミングが複数のモジュールで競合したときに、それらのモジュールが再構成されている領域の優先順位を使って、待機を指示し、メモリアクセスの調停を行う。
【0053】
計測回路C2は、入出力回路C1が、他のモジュールによってデータの入出力を待たされた時間(待機時間という)を計測する回路である。
【0054】
遅延回路C3は、計測回路C2が計測した待機時間に応じて、処理回路C4による処理の開始を遅延させる回路である。なお、この遅延回路C3は、モジュールのコンフィグレーションデータとともに、遅延時間DB122から読出した初期遅延時間に基づいて再構成される。これにより、この遅延回路C3は、起動後に初めて処理回路C4が処理を実行する際に、初期遅延時間に基づいてその実行を遅延させる。
【0055】
すなわち、入出力回路C1、計測回路C2、遅延回路C3、及び処理回路C4を有するモジュールが再構成されるプログラマブル論理回路21は、決められた処理を行う処理回路と、処理回路が使用するデータをメモリに入出力する入出力回路と、入出力回路が第1モジュールによりデータの入出力を待たされた待機時間を計測する計測回路と、計測回路が計測した待機時間に応じて処理回路による処理の開始を遅延させる遅延回路と、を有するプログラマブル論理回路の例である。
【0056】
図9に示すリコンフィグ領域R1に再構成されたモジュールは、入出力回路C1によってデバイス内メモリ20からデータを読込み、そのデータを処理回路C4に供給する。計測回路C2は、入出力回路C1を監視して待機時間を計測し、その結果を遅延回路C3に伝える。
【0057】
遅延回路C3は、計測された待機時間に応じて、入出力回路C1が次にデバイス内メモリ20にアクセスすべきタイミングを予測し、その結果に応じて次に処理回路C4に処理を開始させるタイミングを決定する。このタイミングは、実行中の他のモジュールの開始のタイミングからの遅延時間を算出することによって表される。つまり、この遅延回路C3は、待機時間に応じて、処理回路による処理の開始を遅延させる遅延時間を算出する遅延回路の例である。
【0058】
処理回路C4は、遅延回路C3が決定したタイミングまで処理の実行を遅延させる。処理回路C4が処理を終了すると、入出力回路C1は、その処理の結果をデバイス内メモリ20に書込む。
【0059】
図10は、2つの処理が並行して実行される論理デバイス2の例を示す図である。
図10に示す論理デバイス2のプログラマブル論理回路21において、リコンフィグ領域R1aには第1モジュールM1が、リコンフィグ領域R1bには第2モジュールM2が、それぞれ再構成されている。
図10に示す論理デバイス2では、第1モジュールM1の処理が先に開始され、その後に、第2モジュールM2の処理が開始される。そして、第1モジュールM1、及び第2モジュールM2のいずれもが、共通の記憶装置であるデバイス内メモリ20にアクセスする。
【0060】
<プロセッサの機能的構成>
図11は、プロセッサ11の機能的構成の例を示す図である。情報処理装置1のプロセッサ11は、メモリ12に記憶されたプログラムを実行することにより、再構成部111、及び指示部112として機能する。
【0061】
再構成部111は、メモリ12からコンフィグレーションデータを読出して、論理デバイス2のプログラマブル論理回路21のいずれかの領域に書き込み、モジュールを再構成する。
【0062】
指示部112は、上述した再構成部111による再構成が完了すると、再構成されたそのモジュールにより実現する回路に処理を実行するよう指示する。複数のモジュールの処理の実行を並行して指示するとき、
図11に示すプロセッサ11は、これら複数のモジュールによるデバイス内メモリ20へのアクセスを調停しない。この調停は、プログラマブル論理回路21によって行われる。
【0063】
<情報処理装置の動作>
図12は、プロセッサ11の動作の流れの例を示すフロー図である。プロセッサ11は、情報処理装置1が起動されると、バス19を介して論理デバイス2を制御し、プログラマブル論理回路21のスタティック領域R0を再構成する(ステップS101)
。この再構成は、起動の際に一度だけ行われる。
【0064】
次に、プロセッサ11は、操作部14を監視してユーザから選択されたプログラムの実行の指示があったか否かを判断する(ステップS102)。ユーザの指示がない、と判断する間(ステップS102;NO)、プロセッサ11は、この判断を続ける。
【0065】
一方、ユーザの指示がある、と判断した場合(ステップS102;YES)、プロセッサ11は、プログラムDB123を参照して、指示されたプログラムの識別情報であるプログラムIDから、そのプログラムで使用されているモジュールのモジュールIDを特定し、それらモジュールにプログラマブル論理回路21の領域を割当てる(ステップS103)。
【0066】
そして、プロセッサ11は、それらモジュールを、割当てたそれぞれの領域に再構成し(ステップS104)、論理デバイス2に処理の実行を指示する(ステップS105)。論理デバイス2による処理の実行が終了すると、プロセッサ11は、処理をステップS102に戻す。
【0067】
<論理デバイスの動作>
図13は、論理デバイス2の動作の流れの例を示すフロー図である。論理デバイス2のプログラマブル論理回路21は、情報処理装置1のプロセッサ11から処理の実行を指示されると、再構成された1以上のモジュールごとに、決められた遅延時間に沿って、実行の開始を遅延し(ステップS201)、その後、処理を実行する(ステップS202)。
【0068】
ステップS202において、入出力回路C1によりデバイス内メモリ20へのアクセスが行われると、プログラマブル論理回路21の計測回路C2は、待機時間を計測する(ステップS203)。そして、遅延回路C3は、計測された待機時間を用いて、次のメモリアクセスのタイミングを予測する(ステップS204)。
【0069】
この予測は、メモリアクセスと並行して行われてもよく、メモリアクセスの待機中に行われてもよい。メモリアクセスと並行して次のメモリアクセスのタイミングを予測する場合、モジュールは実行中である。一方、メモリアクセスの待機中に次のメモリアクセスのタイミングを予測する場合、モジュールは実行中でない。
【0070】
予測の結果に基づいて、プログラマブル論理回路21の遅延回路C3は、遅延時間の更新が必要であるか否かを判断する(ステップS205)。このプログラマブル論理回路21は、例えば、実行中でないモジュールが次にメモリにアクセスするタイミングと、実行中のモジュールが次にメモリにアクセスタイミングと、が重なる場合、遅延時間の更新が必要であると判断する。ここで、2以上のタイミングが重なるとは、これら2以上のタイミングの時間差が決められた閾値未満になることである。
【0071】
なお、プログラマブル論理回路21は、更新のために遅延時間を算出した回数が閾値以上になった後は、遅延時間の更新が必要でない、と判断してもよい。更新が必要でないと判断されると、プログラマブル論理回路21は、既に用いられている遅延時間を用いて処理の開始を遅延させる。これにより、遅延時間が閾値以上の回数にわたって更新されることがなくなり、情報処理システムの動作は安定する。
【0072】
この場合、この遅延回路C3は、待機時間に応じて、処理回路による処理の開始を遅延させる遅延時間を算出し、この遅延時間を算出した回数が閾値以上になった後は、新たに遅延時間を算出することなく、既に算出された遅延時間を用いて処理の開始を遅延させる遅延回路の例である。
【0073】
遅延時間の更新が必要である、と判断する場合(ステップS205;YES)、この遅延回路C3は、自身に書込まれている遅延時間を更新し(ステップS206)、処理をステップS209に進める。この場合、更新された遅延時間は、プログラマブル論理回路21によって次にステップS201を行うときに参照され、この遅延時間に応じてモジュールの実行の開始が遅延される。
【0074】
つまり、このプログラマブル論理回路21は、通信可能に接続された複数の論理ブロックを有し、複数の論理ブロックのいずれかに、複数のモジュールが再構成され、複数のモジュールのうち、実行中の第1モジュールがメモリにアクセスする第1タイミングに、実行中でない第2モジュールがメモリにアクセスする第2タイミングが重ならないように、第2モジュールの実行の開始を第1モジュールの実行の開始時点から遅延させるプログラマブル論理回路の例である。
【0075】
一方、遅延時間の更新が必要でない、と判断する場合(ステップS205;NO)、プログラマブル論理回路21の処理回路C4は、他のモジュールとの間に、デバイス内メモリ20へのアクセスのタイミングが重なって、そのアクセスの要求が競合することがあるか否かを判断する(ステップS207)。
【0076】
競合がある、と判断する場合(ステップS207;YES)、処理回路C4は、再構成の際に優先順位表124に基づいて自身に書込まれた優先順位に応じて、待機の是非を判断し(ステップS208)、処理をステップS209に進める。例えば、処理回路C4は、優先順位表124を参照して、自身を含むモジュールの順位よりも高い順位が、実行中の他のモジュールに割り当てられている場合に、そのモジュールによるメモリアクセスが終了するまで、入出力回路C1を待機させ、終了した後にそのメモリアクセスを許可する。
【0077】
この場合、上述したモジュールが再構成されるプログラマブル論理回路21は、複数のモジュールのうち、いずれか2以上のモジュールが、互いに競合してメモリにアクセスした場合、これら複数のモジュールのそれぞれに割り当てられた順位に応じて、2以上のモジュールのそれぞれにメモリへのアクセスを許可するプログラマブル論理回路の例である。
【0078】
一方、競合がない、と判断する場合(ステップS207;NO)、処理回路C4は、ステップS208を行わずに、そのまま処理をステップS209に進める。
【0079】
プログラマブル論理回路21は、例えば、プロセッサ11からの割り込み要求や、演算の終了等の、終了条件を充足しているか否かを判断し(ステップS209)、充足していると判断する場合(ステップS209;YES)、処理を終了する。一方、終了条件を充足していない、と判断する場合(ステップS209;NO)、プログラマブル論理回路21は、処理をステップS201に戻す。
【0080】
なお、各モジュールの処理の周期が外乱等に影響されることがなく、初期遅延時間のまま遅延時間を更新する必要がない場合、プログラマブル論理回路21は、上述したステップS204において、メモリアクセスのタイミングを予測しなくてもよい。また、この場合、プログラマブル論理回路21は、上述したステップS205、及びステップS207の判断を行わなくてもよい。
【0081】
<共通の周期を有するモジュールのケース>
上述した動作によってモジュールの実行の開始は、以下の通り調整される。
図14は、モジュールの処理の周期を説明するための図である。
図14において、横方向は時間の流れを示し、この時間は左から右に流れる。モジュールの1周期分の処理は、読込→メモリアクセスを伴わない処理→書出、の3段階で構成され、この順に行われる。プログラマブル論理回路21のうち、このモジュールが再構成された領域は、まず、デバイス内メモリ20から初期値となるデータを読込み、読込んだデータを用いてメモリアクセスを伴わない処理を実行する。そして、この領域は、実行した処理の結果を示すデータをデバイス内メモリ20に書出す。
【0082】
図15は、競合によるメモリアクセス時間の増大を説明するための図である。
図15(a)に示す通り、プログラマブル論理回路21において、第1モジュールM1が単独で周期P1の処理を繰り返して実行する場合、上述した読込、及び書出の段階、つまり、メモリアクセスに要する時間T1は、決められた長さである。これは、他のモジュールとデバイス内メモリ20へのアクセス権を奪い合うことがないため、メモリアクセスそのものに費やされる時間のみが反映されているからである。
【0083】
一方、
図15(b)に示す通り、プログラマブル論理回路21において、共通の周期を有する第1モジュールM1と第2モジュールM2とが、例えば同時に開始されると、これらそれぞれのメモリアクセスのタイミングが重なる。すなわち、メモリアクセスが2つのモジュールで競合する。このとき、デバイス内メモリ20は、第1モジュール及び第2モジュールからそれぞれ要求されるアクセスに、一度に応じることができないため、アクセスのコマンドが待たされ、両方のメモリアクセスに要する時間T3が、それぞれ単独で実行するときに比べていずれも長くなる(T3>T1)。
【0084】
そこで、プログラマブル論理回路21は、第1モジュールM1が実行中に開始する第2モジュールM2の処理を遅延させる。
図16は、実行の開始が遅延させられた第2モジュールM2を説明するための図である。例えば、プログラマブル論理回路21は、第2モジュールM2と第1モジュールM1との組合せに応じて初期遅延時間を特定し、この初期遅延時間を遅延時間D1として用いて、第2モジュールM2の実行の開始を、第1モジュールM1の実行の開始より遅延させる。
【0085】
これにより第1モジュールM1がデバイス内メモリ20にアクセスするタイミング(第1タイミングという)と、第2モジュールM2がデバイス内メモリ20にアクセスするタイミング(第2タイミングという)が重ならなくなる。そのため、第1モジュールM1がメモリアクセスに要する時間T1、及び第2モジュールM2がメモリアクセスに要する時間T2は、いずれも、それぞれが単独で実行されるときと変わらない長さに留まる。
【0086】
<他のモジュールの周期の整数倍の周期を有するモジュールのケース>
また、プログラマブル論理回路21において、再構成され、並行して実行される2以上のモジュールの周期が異なることもある。しかし、一方のモジュールの周期が、他方のモジュールの周期の整数倍であり、かつ、他方のモジュールのメモリアクセスに要する時間が、一方のモジュールのメモリアクセスを伴わない処理に要する時間よりも短い、といった条件が揃った場合、一方のモジュールの実行の開始を遅延させることで、メモリアクセスの競合が避けられることがある。
【0087】
図17は、他のモジュールの整数倍の周期を有するモジュールを説明するための図である。
図17(a)に示す第1モジュールM1は、周期P1の処理を繰り返し、メモリアクセスに時間T1を要する。
【0088】
図17(b)に示す第2モジュールM2は、周期P2の処理を繰り返し、メモリアクセスに時間T2を要する。周期P2は周期P1の半分(=P1/2)である。つまり、周期P1は、周期P2の2倍である。
【0089】
この場合、第1モジュールM1及び第2モジュールM2を、例えば、同時に開始すると、
図17(c)に示す通り、第2モジュールM2の繰り返し回数が偶数のときに、第1モジュールM1と、メモリアクセスが競合する。このとき、メモリアクセスに要する時間T3は、第1モジュールM1が単独でメモリアクセスに要する時間T1、及び、第2モジュールM2が単独でメモリアクセスに要する時間T2のいずれよりも長い。その結果、処理の全体に要する時間は、それぞれのモジュールを単独で実行したときの時間よりも長くなる。
【0090】
図18は、整数倍の周期を有するモジュールに対して開始を遅延させる例を示す図である。2倍の周期P1を有する第1モジュールM1の開始時点に対し、プログラマブル論理回路21は、第2モジュールM2の開始時点を遅延時間D2だけ遅延させる。これにより、第1モジュールM1のメモリアクセスのタイミングである第1タイミングは、第2モジュールM2のメモリアクセスを伴わない処理中に収まる。また、第2モジュールM2のメモリアクセスのタイミングである第2タイミングは、第1モジュールM1のメモリアクセスを伴わない処理中に収まる。すなわち、第1モジュールM1と、第2モジュールM2とは、メモリアクセスが競合しない。
【0091】
なお、上述した通り、遅延時間D1及び遅延時間D2は、実際の処理に際して計測された待機時間に応じて、更新される。これにより、初期遅延時間の遅延でメモリアクセスが競合した場合でも、それによる待機時間が少なくなるように、改めて第2モジュールM2の実行の開始が遅延される。
【0092】
上述した動作により、論理デバイス2のプログラマブル論理回路21は、自身に再構成された複数のモジュールが、それぞれ共有のデバイス内メモリ20にアクセスするタイミングを分散させる。その結果、メモリアクセスが競合することによる待機時間の発生が抑制され、論理デバイス2における処理の実行速度は向上する。
【0093】
<変形例>
以上が実施形態の説明であるが、この実施形態の内容は以下のように変形し得る。また、以下の変形例は、互いに組合されてもよい。
【0094】
<1>
上記各実施形態において、プロセッサとは広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU:Central Processing Unit、等)や、専用のプロセッサ(例えばGPU:Graphics Processing Unit、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array、プログラマブル論理デバイス、等)を含むものである。
また上記各実施形態におけるプロセッサの動作は、1つのプロセッサによって成すのみでなく、物理的に離れた位置に存在する複数のプロセッサが協働して成すものであってもよい。また、プロセッサの各動作の順序は上記各実施形態において記載した順序のみに限定されるものではなく、適宜変更してもよい。
【0095】
<2>
上述した実施形態において、遅延時間DB122は、第2モジュールIDリスト1221、及び遅延時間表1222を有していたが、他の構成であってもよい。例えば、遅延時間DB122は、2以上のモジュールの組合せごとに、初期遅延時間を対応付けてもよい。
図19は、変形例における遅延時間DB122aの例を示す図である。
図19に示す遅延時間DB122aは、プログラムで使用されるモジュールの組合せごとに、初期遅延時間が対応付けて記憶されている。この場合、この組合せに含まれる、実行中でないモジュールには、この組合せに対応付けられた初期遅延時間が用いられる。
【0096】
<3>
上述した実施形態において、プログラマブル論理回路21は、入出力回路C1、計測回路C2、遅延回路C3、及び処理回路C4を有するモジュールを再構成していたが、計測回路C2、及び遅延回路C3の機能は、プロセッサ11によって実現されてもよい。
【0097】
図20は、変形例におけるプロセッサ11の機能的構成の例を示す図である。このプロセッサ11は、計測部113、及び予測部114として機能する。
図20に示す計測部113は、論理デバイス2を監視して、プログラマブル論理回路21に再構成された1以上のモジュールのそれぞれの待機時間を計測し、その結果を予測部114に伝える。
【0098】
予測部114は、計測された待機時間に応じて、実行中の第1モジュールが次にデバイス内メモリ20にアクセスする第1タイミングを予測する。また、予測部114は、待機時間に応じて、実行中でない第2モジュールが次にデバイス内メモリ20にアクセスする第2タイミングを予測する。そして、予測部114は、予測した第1タイミング、及び第2タイミングを指示部112に伝える。
【0099】
指示部112は、予測された第2タイミングが第1タイミングと重ならないように、第2モジュールに処理の実行を開始させる際の遅延時間を算出する。そして、指示部112は、算出した遅延時間に応じて、プログラマブル論理回路21に処理の開始を遅延させるよう指示すればよい。
【0100】
この変形例におけるプロセッサ11は、プログラマブル論理回路と接続され、プログラマブル論理回路に、複数のモジュールを再構成し、複数のモジュールのうち、実行中の第1モジュールがメモリにアクセスする第1タイミングを予測し、複数のモジュールのうち、実行中でない第2モジュールがメモリにアクセスする第2タイミングを予測し、第2タイミングが第1タイミングと重ならないように、第2モジュールの実行の開始を第1モジュールの実行の開始時点から遅延させるプロセッサの例である。
【0101】
<4>
上述した実施形態において、プログラマブル論理回路21に再構成された各モジュールは、論理デバイス2に備えられた共通のデバイス内メモリ20にアクセスしていたが、これに限られない。例えば、各モジュールは、情報処理装置1のメモリ12にアクセスしてもよい。また、各モジュールは、プログラマブル論理回路21のスタティック領域R0に再構成されたメモリにアクセスしてもよい。
【0102】
図21は、変形例におけるプログラマブル論理回路21の例を示す図である。
図21に示すプログラマブル論理回路21は、スタティック領域R0に再構成メモリM0を再構成している。リコンフィグ領域R1aに再構成された第1モジュールM1、及びリコンフィグ領域R1bに再構成された第2モジュールM2は、ともにスタティック領域R0に再構成された共通のメモリである再構成メモリM0にアクセスする。そして、スタティック領域R0も、複数の論理ブロック211を含む。つまり、この再構成メモリM0は、複数の論理ブロックのいずれかに再構成されているメモリの例である。この場合にも、プログラマブル論理回路21は、第2タイミングが第1タイミングと重ならないように、第2モジュールM2に処理の実行を遅延させればよい。
【0103】
<5>
上述した実施形態において、情報処理装置1のプロセッサ11によって実行されるプログラムは、プログラマブル論理回路と接続されたプロセッサ、を有するコンピュータに、前記プログラマブル論理回路に、複数のモジュールを再構成するステップと、前記複数のモジュールのうち、実行中の第1モジュールがメモリにアクセスする第1タイミングを予測するステップと、前記複数のモジュールのうち、実行中でない第2モジュールが前記メモリにアクセスする第2タイミングを予測して、該第2タイミングが前記第1タイミングと重ならないように、該第2モジュールの実行の開始を前記第1モジュールの実行の開始時点から遅延させるステップと、を実行させるプログラムの例である。
【0104】
このプログラムは、磁気テープ及び磁気ディスク等の磁気記録媒体、光ディスク等の光記録媒体、光磁気記録媒体、半導体メモリ等の、コンピュータ装置が読取り可能な記録媒体に記憶された状態で提供し得る。また、このプログラムは、インターネット等の通信回線経由でダウンロードされてもよい。
【符号の説明】
【0105】
1…情報処理装置、10…クロック、11…プロセッサ、111…再構成部、112…指示部、113…計測部、114…予測部、12…メモリ、121…モジュールDB、122、122a…遅延時間DB、1221…第2モジュールIDリスト、1222…遅延時間表、123…プログラムDB、124…優先順位表、14…操作部、15…表示部、17…画像読取部、18…画像形成部、19…バス、2…論理デバイス、20…デバイス内メモリ、21…プログラマブル論理回路、211…論理ブロック、212…スイッチブロック、213…接続ブロック、214…入出力端子、9…情報処理システム、C1…入出力回路、C2…計測回路、C3…遅延回路、C4…処理回路、D1、D2…遅延時間、M0…再構成メモリ、M1…第1モジュール、M2…第2モジュール、P1、P2…周期、R0…スタティック領域、R1、R1a、R1b、R1c、R1d…リコンフィグ領域、T1、T2、T3…時間。