(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-01
(45)【発行日】2024-07-09
(54)【発明の名称】情報処理装置、及びプログラム
(51)【国際特許分類】
G06F 8/656 20180101AFI20240702BHJP
G06F 1/08 20060101ALI20240702BHJP
G06F 9/38 20180101ALI20240702BHJP
G06F 9/30 20180101ALI20240702BHJP
【FI】
G06F8/656
G06F1/08 520
G06F9/38 370C
G06F9/30 330B
(21)【出願番号】P 2020148483
(22)【出願日】2020-09-03
【審査請求日】2023-08-23
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110000752
【氏名又は名称】弁理士法人朝日特許事務所
(72)【発明者】
【氏名】佐々木 日史
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2001-320271(JP,A)
【文献】特開2007-251329(JP,A)
【文献】特開2010-141901(JP,A)
【文献】特開2012-053678(JP,A)
【文献】中国特許出願公開第113626376(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/656
G06F 1/08
G06F 9/38
G06F 9/30
(57)【特許請求の範囲】
【請求項1】
プログラマブル論理回路に接続されたプロセッサを有し、前記プロセッサは、
前記プログラマブル論理回路の第1領域に再構成された第1回路に処理を実行させ、
前記第1回路の処理と並行して、前記第1領域と異なる第2領域に第2回路を再構成させ、
前記第1回路の処理が完了するタイミングと、前記第2回路の再構成が完了するタイミングとが近づくように、該第1回路の処理に用いるクロック周波数、及び該第2回路の再構成に用いるクロック周波数の少なくとも一方を調整する
情報処理装置。
【請求項2】
前記プロセッサは、
前記第1回路の処理が完了するタイミングに、前記第2回路の再構成が完了するタイミングが近づくように、該第2回路の再構成に用いるクロック周波数を調整する
請求項1に記載の情報処理装置。
【請求項3】
前記プロセッサは、
前記第1回路の処理が完了するよりも早く前記第2回路の再構成が完了することが予測される場合に、該第2回路の再構成に用いるクロック周波数を下げる
請求項2に記載の情報処理装置。
【請求項4】
前記プロセッサは、
前記第2回路の再構成が完了するよりも早く前記第1回路の処理が完了することが予測される場合に、該第2回路の再構成に用いるクロック周波数を上げる
請求項2又は3に記載の情報処理装置。
【請求項5】
前記プロセッサは、
前記第2回路の再構成が完了するタイミングに、前記第1回路の処理が完了するタイミングが近づくように、該第1回路の処理に用いるクロック周波数を調整する
請求項1に記載の情報処理装置。
【請求項6】
前記プロセッサは、
前記第1回路の処理が完了するよりも早く前記第2回路の再構成が完了することが予測される場合に、該第1回路の処理に用いるクロック周波数を上げる
請求項5に記載の情報処理装置。
【請求項7】
前記プロセッサは、
前記第2回路の再構成が完了するよりも早く前記第1回路の処理が完了することが予測される場合に、該第1回路の処理に用いるクロック周波数を下げる
請求項5又は6に記載の情報処理装置。
【請求項8】
前記プロセッサは、
前記クロック周波数の調整に応じて、自身を冷却する冷却器の熱交換量を調整する
請求項1から7のいずれか1項に記載の情報処理装置。
【請求項9】
前記冷却器は、前記プロセッサに送風する送風機であり、
前記プロセッサは、前記クロック周波数を上げるときに前記送風機の送風量を増加させる
請求項8に記載の情報処理装置。
【請求項10】
プログラマブル論理回路に接続されたプロセッサを有するコンピュータに、
前記プログラマブル論理回路の第1領域に再構成された第1回路に処理を実行させるステップと、
前記第1回路の処理と並行して、前記第1領域と異なる第2領域に第2回路を再構成させるステップと、
前記第1回路の処理が完了するタイミングと、前記第2回路の再構成が完了するタイミングとが近づくように、該第1回路の処理に用いるクロック周波数、及び該第2回路の再構成に用いるクロック周波数の少なくとも一方を調整するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、及びプログラムに関する。
【背景技術】
【0002】
特許文献1は、次に回路を再構成しようとする領域の少なくとも一部に、前に再構成されていて、その処理が実行されている前回路が存在する回路については、前回路の領域と重なる部分と、重ならない部分とに、再構成のためのデータを分割し、重ならない部分を前回路の処理と並行して再構成し、前回路の処理が終了した後に、重なる部分を再構成するプログラマブル論理回路への回路の再構成方法を開示している。
特許文献2は、複数の領域のうちいずれかの領域において処理が完了した際に、その処理が完了した領域に対応する回路構成情報を記憶部から読み出して、その領域にて再構成を行わせる画像処理装置を開示している。
特許文献3は、過去に処理された複数のブロックについて、どのブロックに対してどの回路構成データが選択されたかの対応付けを表す実績データを管理し、この実績データに含まれるブロック間の位置関係に基づいて、今後処理対象となるブロックのために選択される可能性が高い回路構成データを、予め用意されている複数の回路構成データの中から予測し再構成可能プロセッサの回路構成メモリにロードする画像データ処理装置を開示している。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第3832557号
【文献】特開2016-57828号公報
【文献】特許第5786434号
【発明の概要】
【発明が解決しようとする課題】
【0004】
領域の或る部分で再構成済み回路の処理と並行して、他の部分で他の回路を再構成すると、処理と再構成との間に待ち時間が生じることがある。
【0005】
本発明は、クロック周波数を変えない態様に比べて、処理と並行して再構成をするときの待ち時間を減らすことを目的とする。
【課題を解決するための手段】
【0006】
本発明の請求項1に係る情報処理装置は、プログラマブル論理回路に接続されたプロセッサを有し、前記プロセッサは、前記プログラマブル論理回路の第1領域に再構成された第1回路に処理を実行させ、前記第1回路の処理と並行して、前記第1領域と異なる第2領域に第2回路を再構成させ、前記第1回路の処理が完了するタイミングと、前記第2回路の再構成が完了するタイミングとが近づくように、該第1回路の処理に用いるクロック周波数、及び該第2回路の再構成に用いるクロック周波数の少なくとも一方を調整する情報処理装置である。
【0007】
本発明の請求項2に係る情報処理装置は、請求項1に記載の態様において、前記プロセッサは、前記第1回路の処理が完了するタイミングに、前記第2回路の再構成が完了するタイミングが近づくように、該第2回路の再構成に用いるクロック周波数を調整する情報処理装置である。
【0008】
本発明の請求項3に係る情報処理装置は、請求項2に記載の態様において、前記プロセッサは、前記第1回路の処理が完了するよりも早く前記第2回路の再構成が完了することが予測される場合に、該第2回路の再構成に用いるクロック周波数を下げる情報処理装置である。
【0009】
本発明の請求項4に係る情報処理装置は、請求項2又は3に記載の態様において、前記プロセッサは、前記第2回路の再構成が完了するよりも早く前記第1回路の処理が完了することが予測される場合に、該第2回路の再構成に用いるクロック周波数を上げる情報処理装置である。
【0010】
本発明の請求項5に係る情報処理装置は、請求項1に記載の態様において、前記プロセッサは、前記第2回路の再構成が完了するタイミングに、前記第1回路の処理が完了するタイミングが近づくように、該第1回路の処理に用いるクロック周波数を調整する情報処理装置である。
【0011】
本発明の請求項6に係る情報処理装置は、請求項5に記載の態様において、前記プロセッサは、前記第1回路の処理が完了するよりも早く前記第2回路の再構成が完了することが予測される場合に、該第1回路の処理に用いるクロック周波数を上げる情報処理装置である。
【0012】
本発明の請求項7に係る情報処理装置は、請求項5又は6に記載の態様において、前記プロセッサは、前記第2回路の再構成が完了するよりも早く前記第1回路の処理が完了することが予測される場合に、該第1回路の処理に用いるクロック周波数を下げる情報処理装置である。
【0013】
本発明の請求項8に係る情報処理装置は、請求項1から7のいずれか1項に記載の態様において、前記プロセッサは、前記クロック周波数の調整に応じて、自身を冷却する冷却器の熱交換量を調整する情報処理装置である。
【0014】
本発明の請求項9に係る情報処理装置は、請求項8に記載の態様において、前記冷却器は、前記プロセッサに送風する送風機であり、前記プロセッサは、前記クロック周波数を上げるときに前記送風機の送風量を増加させる情報処理装置である。
【0015】
本発明の請求項10に係るプログラムは、プログラマブル論理回路に接続されたプロセッサを有するコンピュータに、前記プログラマブル論理回路の第1領域に再構成された第1回路に処理を実行させるステップと、前記第1回路の処理と並行して、前記第1領域と異なる第2領域に第2回路を再構成させるステップと、前記第1回路の処理が完了するタイミングと、前記第2回路の再構成が完了するタイミングとが近づくように、該第1回路の処理に用いるクロック周波数、及び該第2回路の再構成に用いるクロック周波数の少なくとも一方を調整するステップと、を実行させるプログラムである。
【発明の効果】
【0016】
請求項1、10に係る発明によれば、クロック周波数を変えない態様に比べて、処理と並行して再構成をするときの待ち時間を減らすことができる。
請求項2に係る発明によれば、第1回路の処理に用いるクロック周波数が変えられない場合であっても、第2回路の再構成に用いるクロック周波数を変えない態様に比べて、処理と並行して再構成をするときの待ち時間を減らすことができる。
請求項3に係る発明によれば、第2回路の再構成に用いるクロック周波数を変えない態様に比べて、再構成により消費される電力を抑えることができる。
請求項4に係る発明によれば、第2回路の再構成に用いるクロック周波数を変えない態様に比べて、再構成が完了するまでの待ち時間を減らすことができる。
請求項5に係る発明によれば、第2回路の再構成に用いるクロック周波数が変えられない場合であっても、第1回路の処理に用いるクロック周波数を変えない態様に比べて、処理と並行して再構成をするときの待ち時間を減らすことができる。
請求項6に係る発明によれば、第1回路の処理に用いるクロック周波数を変えない態様に比べて、処理が完了するまでの待ち時間を減らすことができる。
請求項7に係る発明によれば、第1回路の処理に用いるクロック周波数を変えない態様に比べて、第1回路の処理により消費される電力を抑えることができる。
請求項8に係る発明によれば、クロック周波数の調整に伴って増減する熱に応じて、熱交換を行うことができる。
請求項9に係る発明によれば、クロック周波数の調整に伴って増減する熱に応じて、送風量を増減させることができる。
【図面の簡単な説明】
【0017】
【
図5】本実施形態におけるプログラマブル論理回路16の構成の例を示す図。
【
図6】プログラマブル論理回路16の領域の例を示す図。
【
図8】情報処理装置1がクロック周波数を調整する動作の流れの例を示すフロー図。
【
図10】第1相対調整の動作の流れの例を示すフロー図。
【
図11】第2相対調整の動作の流れの例を示すフロー図。
【
図12】処理用クロック101、及び再構成用クロック102のいずれか一方を調整する、第2相対調整の動作の流れの例を示すフロー図。
【
図13】クロック周波数の調整を行わない場合の処理と再構成との進捗を示す図。
【
図14】処理が完了するよりも早く再構成が完了する場合の調整の例を示す図。
【
図15】再構成が完了するよりも早く処理が完了する場合の調整の例を示す図。
【発明を実施するための形態】
【0018】
<実施形態>
<情報処理装置の構成>
図1は、情報処理装置1の構成の例を示す図である。
図1に示す情報処理装置1は、クロック10、プロセッサ11、メモリ12、インタフェース13、操作部14、表示部15、プログラマブル論理回路16、画像読取部17、及び画像形成部18を有する。これらの構成は、バス19で、互いに通信可能に接続されている。
【0019】
バス19は、プロセッサ11を図示しないチップセットに接続するホストバス、及び、そのチップセットに含まれる図示しないメモリコントローラとメモリ12とを接続するメモリバスを含む。また、バス19は、プロセッサ11と、プログラマブル論理回路16等とを接続するPCI(Peripheral Component Interconnect)バス、及び、このPCIバスと、上述したホストバスとを接続するホスト・PCIバスブリッジを含む。また、バス19は、画像読取部17や画像形成部18が利用する、画像データをやり取りするための画像バスを含んでいてもよい。
【0020】
プロセッサ11は、メモリ12に記憶されているプログラムを読出して実行することにより情報処理装置1の各部を制御する。プロセッサ11は、例えばCPU(Central Processing Unit)である。
【0021】
クロック10は、プロセッサ11、又はプログラマブル論理回路16にクロック信号を供給する構成であり、例えば水晶振動子を利用した発振回路を有する。
図2は、クロック10の例を示す図である。クロック10は、処理用クロック101、及び再構成用クロック102を有する。
【0022】
処理用クロック101は、プログラマブル論理回路16が処理を実行する際の動作に用いる周波数を決定し、これを示すクロック信号を生成してプログラマブル論理回路16に供給する。このクロック信号が示す周波数(クロック周波数という)が増加すると、プログラマブル論理回路16が処理を実行する速度が上昇し、処理の完了する時期が早まる。
【0023】
再構成用クロック102は、プロセッサ11がプログラマブル論理回路16にモジュールを再構成する際の動作に用いる周波数を決定し、これを示すクロック信号を生成してプロセッサ11に供給する。「モジュール」は、プログラマブル論理回路16の決められた領域に再構成されて、決められた1つの処理を実行する回路である。このクロック信号が示すクロック周波数が増加すると、プロセッサ11がプログラマブル論理回路16にモジュールを再構成する速度が上昇し、再構成の完了する時期が早まる。
【0024】
メモリ12は、プロセッサ11に読み込まれるオペレーティングシステム、各種のプログラム、データ等を記憶する記憶手段である。メモリ12は、RAM(Random Access Memory)やROM(Read Only Memory)を有する。なお、メモリ12は、ソリッドステートドライブ、ハードディスクドライブ等を有してもよい。また、メモリ12は、モジュールDB121、待ち行列122を記憶する。
【0025】
図3は、モジュールDB121の例を示す図である。このモジュールDB121において、モジュールの欄は、上述したモジュールを識別する識別情報を記憶する欄である。データの欄は、対応するモジュールをプログラマブル論理回路16に再構成する際に用いるデータ(コンフィグレーションデータともいう)を記憶する欄である。このコンフィグレーションデータは、一回の処理で再構成される量ごとに区切られている。
【0026】
1つのモジュールは、1つ以上のコンフィグレーションデータで構成される。例えば、1つのモジュール「M1」は、1つのデータ「D1」で構成されているが、1つのモジュール「M3」は、2つのデータ「D31」、「D32」で構成されている。そのため、モジュール「M1」は、データ「D1」の再構成で実行可能になるが、モジュール「M3」は、データ「D31」、及びデータ「D32」の、合計2回の再構成を経て実行可能になる。
【0027】
このモジュールDB121において、領域の欄は、対応するモジュールを構成する1つ以上のコンフィグレーションデータが、プログラマブル論理回路16で再構成される領域の情報を記憶する欄である。例えば、データ「D1」が領域「R1」に書き込まれると、プログラマブル論理回路16にモジュール「M1」が再構成される。また、データ「D31」が領域「R31」に、データ「D32」が領域「R32」に、それぞれ書き込まれると、プログラマブル論理回路16にモジュール「M3」が再構成される。
【0028】
このモジュールDB121において、ステータスの欄は、対応するモジュールを構成するコンフィグレーションデータの現時点における状態を記憶する欄である。例えば、
図3に示すモジュール「M1」を構成するデータ「D1」のステータスは「解放」である。これは、モジュール「M1」の処理の実行が完了し、データ「D1」が再構成されている領域「R1」が解放されたことを意味する。
【0029】
また、例えば、
図3に示すモジュール「M2」を構成するデータ「D2」のステータスは「処理」である。これは、モジュール「M2」の処理が開始されて、完了していないことを意味する。
【0030】
また、例えば、
図3に示すモジュール「M3」のうち、データ「D31」のステータスは「再構成」である。これは、データ「D31」が再構成中であることを意味する。
【0031】
また、例えば、
図3に示すモジュール「M3」のうち、データ「D32」のステータスは「(解放)待機」である。これは、データ「D32」の領域「R31」への書き込みが、他のモジュールの処理の完了に伴う領域の解放まで待機させられていることを意味する。
【0032】
また、例えば、
図3に示すモジュール「M4」を構成するデータ「D4」のステータスは「(処理)待機」である。これは、モジュール「M4」を構成するデータ「D4」の領域「R4」への書き込みが、他のモジュールの処理の完了まで待機させられていることを意味する。
【0033】
上述した「(解放)待機」は、データの書き込み先の領域が解放されることを待機するものであったが、「(処理)待機」は、処理を開始する条件(開始条件という)として、決められたモジュールの処理の完了が定められていることによる待機である。したがって、この「(処理)待機」のステータスを有するデータは、その書き込み先の領域が解放されているか否かに関わらず、決められたモジュールの処理が完了するまで書き込みを待機させられる。
【0034】
図4は、待ち行列122の例を示す図である。
図4に示す待ち行列122は、プログラマブル論理回路16に処理を実行させるモジュールを、その処理の順に配列した行列である。この待ち行列122において、順序の欄は、プログラマブル論理回路16に実行させる順序を記憶する欄である。モジュールの欄は、対応する順序で実行するモジュールの識別情報を記憶する欄である。開始条件の欄は、対応するモジュールの開始条件を記憶する欄である。
【0035】
例えば、
図4に示す待ち行列122において、順序「J2」はモジュール「M2」を実行する順序であり、その開始条件は「J1完了」である。つまり、順序「J2」にモジュール「M2」の処理を開始するためには、順序「J1」の処理が完了していることが必要である。
【0036】
図4に示す待ち行列122では、順序「J1」→「J2」→「J3」→「J4」の順に実行するモジュールが並べられており、順序「J2」以降の開始条件は、直前のモジュールによる処理が完了していることである。つまり、
図4に示す待ち行列122は、これら4つの処理のうち、いずれか2以上が並行して実行されることを許可していない。
【0037】
図1に示すインタフェース13は、有線又は無線により情報処理装置1を、他の装置に通信可能に接続する通信回路である。例えば、インタフェース13は、各種のデバイスをプロセッサ11に接続し、それらのデバイスをプロセッサ11に制御させる。また、
図1に示すインタフェース13は、冷却器131と通信可能に接続し、この冷却器131をプロセッサ11に制御させる。冷却器131は、プロセッサ11、又はプログラマブル論理回路16を冷却する装置であり、例えば、送風機や、水等の冷媒を循環させるポンプ等である。
【0038】
操作部14は、各種の指示をするための操作ボタン、キーボード、マウス、タッチパネル等の操作子を備えており、操作を受付けてその操作内容に応じた信号をプロセッサ11に送る。
【0039】
表示部15は、プロセッサ11又はプログラマブル論理回路16の制御の下、指定された画像を表示する。
図1に示す表示部15は、上述した画像を表示するための表示画面である液晶ディスプレイを有している。この液晶ディスプレイの上には、操作部14の透明のタッチパネルが重ねて配置されてもよい。
【0040】
画像読取部17は、LED(light emitting diode)等の照射装置、レンズやプリズム等の光学系、CMOS(Complementary Metal Oxide Semiconductor)イメージセンサや、CCD(Charge Coupled Device)イメージセンサ等の撮像素子等を備える。画像読取部17は、プロセッサ11又はプログラマブル論理回路16の制御の下、紙等の媒体に形成された画像を読取り、読取った画像を示す画像データを生成してプロセッサ11に供給する。
【0041】
画像形成部18は、プロセッサ11又はプログラマブル論理回路16の制御の下、例えば電子写真方式等により、紙などの媒体に画像を形成する。
【0042】
プログラマブル論理回路16は、プロセッサ11の制御の下、機能を実現するモジュールを再構成することが可能な論理回路であり、例えばFPGA(Field Programmable Gate Array)である。
図1に示すプログラマブル論理回路16は、表示部15、画像読取部17、及び画像形成部18のうち、少なくともいずれかを制御する。なお、プログラマブル論理回路16が制御する対象はこれらに限られない。また、プログラマブル論理回路16は、これらを制御しなくてもよい。
【0043】
図5は、本実施形態におけるプログラマブル論理回路16の構成の例を示す図である。
図5に示すプログラマブル論理回路16は、いわゆるアイランドスタイルのFPGAである。
【0044】
このプログラマブル論理回路16は、それぞれ格子状に配列された複数の、論理ブロック161、スイッチブロック162、接続ブロック163、及び入出力端子164を有する。すなわち、このプログラマブル論理回路16は、格子状に配列された複数の論理ブロックを有するプログラマブル論理回路の例である。なお、
図5に示すプログラマブル論理回路16は略図であり、論理ブロック161等の個数は
図5に示したものに限らない。
【0045】
論理ブロック161は、真理値表回路等を用いて、論理や演算回路、記憶回路等、各種の機能を実現するモジュールを構成する単位となるブロックである。
【0046】
スイッチブロック162、及び、接続ブロック163は、これらを繋ぐ配線とともに配線領域を構成する。
【0047】
スイッチブロック162は、配線どうしの接続を切替えるブロックである。接続ブロック163は、論理ブロック161の入出力と上述した配線領域との接続を切替えるブロックである。
【0048】
スイッチブロック162、及び、接続ブロック163は、例えば、バストランジスタを用いたスイッチとその制御用のコンフィグレーションメモリとで構成される。
【0049】
入出力端子164は、プログラマブル論理回路16とプロセッサ11とを通信可能に接続し、プロセッサ11からの入力、及びプロセッサ11への出力のインタフェースとなるブロックである。
図5に示す入出力端子164は、上述した配線領域に接続されている。
【0050】
なお、プログラマブル論理回路16は、例えば、決められた処理の実行に用いるDSP(digital signal processor)を備えていてもよい。
【0051】
プロセッサ11は、メモリ12に記憶されたコンフィグレーションデータをプログラマブル論理回路16の論理ブロック161、スイッチブロック162、及び接続ブロック163にそれぞれ書き込むことで、プログラマブル論理回路16を再構成する。
【0052】
図6は、プログラマブル論理回路16の領域の例を示す図である。
図6には、
図3に示したモジュールDB121の領域R1、R2、R31、R32、R4の例が示されている。このプログラマブル論理回路16で、領域R31と領域R32とは、領域R3を構成する。
【0053】
領域R1と領域R32とは、互いに重複する部分を有するが、領域R1と領域R31とは、互いに重複する部分を有しない。したがって、領域R1に再構成されるモジュール「M1」の処理の実行中に、プロセッサ11は、データ「D32」を領域R32へ書き込むことができないが、データ「D31」を領域R31へ書き込むことができる。
【0054】
また、領域R2と領域R4とは、互いに重複する部分を有する。したがって、領域R2に再構成されるモジュール「M2」の処理の実行中に、プロセッサ11は、データ「D4」を領域R4に書き込むことができない。また、領域R4に再構成されるモジュール「M4」の処理の実行中に、プロセッサ11は、データ「D2」を領域R2に書き込むことができない。
【0055】
<情報処理装置の機能的構成>
図7は、情報処理装置1の機能的構成の例を示す図である。情報処理装置1のプロセッサ11は、メモリ12に記憶されたプログラムを実行することにより、再構成部111、指示部112、予測部113、及び調整部114として機能する。
【0056】
再構成部111は、メモリ12からコンフィグレーションデータを読出して、プログラマブル論理回路16において、そのコンフィグレーションデータに対応付けられた領域に書き込み、モジュールを再構成する。
【0057】
指示部112は、上述した再構成部111による再構成が完了すると、再構成されたそのモジュールにより実現する回路に処理を実行するよう指示する。
【0058】
予測部113は、上述した再構成部111によるモジュールの再構成と、指示部112により指示された処理とが、並行して行われている場合に、再構成が完了するタイミングと、処理が完了するタイミングとを、それぞれ予測する。
【0059】
調整部114は、上述した予測部113による各タイミングの予測結果に応じて、クロック10のクロック周波数を調整する。また、
図7に示す調整部114は、クロック10の調整に伴って、インタフェース13に接続された冷却器131の熱交換量を調整する。
【0060】
なお、冷却器131がクロック10から供給されるクロック信号に応じてその熱交換量を増減させる場合、調整部114は、クロック10を制御して冷却器131に供給するクロック信号を調整する。
【0061】
<情報処理装置の動作>
情報処理装置1のプロセッサ11は、メモリ12に記憶されたプログラムを読出して、プログラマブル論理回路16の決められた領域に回路を再構成し、再構成された回路に処理を実行させ、処理及び再構成のためのクロック周波数を調整する動作を行う。
【0062】
図8は、情報処理装置1がクロック周波数を調整する動作の流れの例を示すフロー図である。情報処理装置1のプロセッサ11は、例えば、操作部14からユーザの操作を受付けて、受付けた操作が示す処理をメモリ12の待ち行列122に記憶する。プロセッサ11は、メモリ12の待ち行列122を参照し、未完了のモジュールがあるか否かを判断する(ステップS101)。
【0063】
待ち行列122の中に未完了のモジュールがない、と判断する場合(ステップS101;NO)、プロセッサ11は、この判断を続ける。一方、待ち行列122の中に未完了のモジュールがある、と判断する場合(ステップS101;YES)、プロセッサ11は、それら未完了のモジュールの中に、処理を実行中のものがあるか否かを判断する(ステップS102)。
【0064】
未完了であって処理を実行中のモジュールがない、と判断する場合(ステップS102;NO)、プロセッサ11は、待ち行列122における未完了のモジュールのうち、再構成中のモジュールがあるか否かを判断する(ステップS103)。
【0065】
再構成中のモジュールがない、と判断する場合(ステップS103;NO)、プロセッサ11は、待ち行列122に示された順序に従って、いずれかのモジュールの再構成を開始する(ステップS104)。
【0066】
一方、再構成中のモジュールがある、と判断する場合(ステップS103;YES)、プロセッサ11は、クロック10が有する再構成用クロック102が発生させるクロック周波数の調整(第1絶対調整という)を行う(ステップS200)。第1絶対調整が終わると、プロセッサ11は、
図8に示す通り、処理をステップS101に戻す。
【0067】
ここで「絶対調整」とは、処理が完了するタイミングと、再構成が完了するタイミングと、を相対的に近づける調整ではなく、2つのタイミングのいずれか一方のみを調整するものである。
【0068】
図9は、絶対調整の動作の流れの例を示すフロー図である。
図9(a)には、上述した第1絶対調整の動作の流れの例が示されている。
図9(a)に示す第1絶対調整は、再構成用クロック102のクロック周波数を上げる調整である。すなわち、プロセッサ11は、この第1絶対調整を行う場合、条件を満たすか否かを判断し(ステップS201)、条件を満たすと判断する場合に(ステップS201;YES)、再構成用クロック102のクロック周波数を上げる(ステップS202)。
【0069】
この条件とは、ステップS202を行える条件であり、例えば、再構成用クロック102のクロック周波数が予め定められた上限に至っていない、といった条件である。なお、条件を満たさないと判断する場合(ステップS201;NO)、プロセッサ11は、調整を行わずにこの処理を終了する。
【0070】
図8に示すフロー図に示すステップS102において、未完了であって処理を実行中のモジュールがある、と判断する場合(ステップS102;YES)、プロセッサ11は、その処理が完了するタイミングを予測する(ステップS105)。
【0071】
次に、プロセッサ11は、未完了であって再構成中のモジュールがあるか否かを判断する(ステップS106)。再構成中のモジュールがない、と判断する場合(ステップS106;NO)、プロセッサ11は、その理由が、処理中のモジュールによる処理の完了待ちであるか否かを判断する(ステップS107)。
【0072】
処理中のモジュールが再構成されている領域には、そのモジュールの処理が完了するまで、新たにコンフィグレーションデータを書き込むことができない。したがって、処理の完了待ちである、と判断する場合(ステップS107;YES)、プロセッサ11は、クロック10が有する処理用クロック101が発生させるクロック周波数の調整(第2絶対調整という)を行う(ステップS300)。第2絶対調整が終わると、プロセッサ11は、
図8に示す通り、処理をステップS101に戻す。
【0073】
図9(b)には、上述した第2絶対調整の動作の流れの例が示されている。
図9(b)に示す第2絶対調整は、処理用クロック101のクロック周波数を上げる調整である。すなわち、プロセッサ11は、この第2絶対調整を行う場合、条件を満たすか否かを判断し(ステップS301)、条件を満たすと判断する場合に(ステップS301;YES)、処理用クロック101のクロック周波数を上げる(ステップS302)。
【0074】
この条件とは、ステップS302を行える条件であり、例えば、処理用クロック101のクロック周波数が予め定められた上限に至っていない、といった条件である。なお、条件を満たさないと判断する場合(ステップS301;NO)、プロセッサ11は、調整を行わずにこの処理を終了する。
【0075】
図8に示すステップS107において、上述した処理の完了待ちではない、と判断する場合(ステップS107;NO)、プロセッサ11は、待ち行列122に示された順序に従って、いずれかのモジュールの再構成を開始する(ステップS104)。
【0076】
図8に示すステップS106において、再構成中のモジュールがある、と判断する場合(ステップS106;YES)、プロセッサ11は、その再構成が完了するタイミングを予測する(ステップS108)。
【0077】
そして、プロセッサ11は、ステップS105で予測した、処理が完了するタイミングと、ステップS108で予測した、再構成が完了するタイミングと、を比較し、処理の完了よりも再構成の完了が早いか否かを判断する(ステップS109)。
【0078】
処理の完了よりも再構成の完了が早くはない、と判断する場合(ステップS109;NO)、プロセッサ11は、処理が完了するタイミングと、再構成が完了するタイミングとが相対的に近づくように、クロック10が発生させるクロック周波数の調整(第1相対調整という)を行う(ステップS400)。第1相対調整というが終わると、プロセッサ11は、
図8に示す通り、処理をステップS101に戻す。
【0079】
ここで「相対調整」とは、処理用クロック101、及び再構成用クロック102の少なくとも一方が発生させるクロック周波数を調整して、処理が完了するタイミングと、再構成が完了するタイミングと、を相対的に近づける調整である。
【0080】
図10は、第1相対調整の動作の流れの例を示すフロー図である。プロセッサ11は、
図10に示す第1相対調整を行う場合、条件を満たすか否かを判断する(ステップS401)。この条件とは、ステップS402を行える条件であり、例えば、再構成用クロック102のクロック周波数が予め定められた上限に至っていない、といった条件である。
【0081】
条件を満たすと判断する場合に(ステップS401;YES)、プロセッサ11は、再構成用クロック102のクロック周波数を上げ(ステップS402)、処理をステップS403に進める。
【0082】
一方、条件を満たさないと判断する場合(ステップS401;NO)、プロセッサ11は、ステップS402の処理を行わずに、処理をステップS403に進める。
【0083】
そして、プロセッサ11は、条件を満たすか否かを判断する(ステップS403)。この条件とは、ステップS404を行える条件であり、例えば、処理用クロック101のクロック周波数が予め定められた下限に至っていない、といった条件である。
【0084】
条件を満たすと判断する場合に(ステップS403;YES)、プロセッサ11は、処理用クロック101のクロック周波数を下げて(ステップS404)、処理を終了する。
【0085】
一方、条件を満たさないと判断する場合(ステップS403;NO)、プロセッサ11は、ステップS404の処理を行わずに、処理を終了する。
【0086】
図8に示すステップS109において、処理の完了よりも再構成の完了が早い、と判断する場合(ステップS109;YES)、プロセッサ11は、処理が完了するタイミングと、再構成が完了するタイミングとが相対的に近づくように、クロック10が発生させるクロック周波数の調整(第2相対調整という)を行う(ステップS500)。第2相対調整というが終わると、プロセッサ11は、
図8に示す通り、処理をステップS101に戻す。
【0087】
図11は、第2相対調整の動作の流れの例を示すフロー図である。プロセッサ11は、
図11に示す第2相対調整を行う場合、条件を満たすか否かを判断する(ステップS501)。この条件とは、ステップS502を行える条件であり、例えば、処理用クロック101のクロック周波数が予め定められた上限に至っていない、といった条件である。
【0088】
条件を満たすと判断する場合に(ステップS501;YES)、プロセッサ11は、処理用クロック101のクロック周波数を上げ(ステップS502)、処理をステップS503に進める。
【0089】
一方、条件を満たさないと判断する場合(ステップS501;NO)、プロセッサ11は、ステップS502の処理を行わずに、処理をステップS503に進める。
【0090】
そして、プロセッサ11は、条件を満たすか否かを判断する(ステップS503)。この条件とは、ステップS504を行える条件であり、例えば、再構成用クロック102のクロック周波数が予め定められた下限に至っていない、といった条件である。
【0091】
条件を満たすと判断する場合に(ステップS503;YES)、プロセッサ11は、再構成用クロック102のクロック周波数を下げて(ステップS504)、処理を終了する。
【0092】
一方、条件を満たさないと判断する場合(ステップS503;NO)、プロセッサ11は、ステップS504の処理を行わずに、処理を終了する。
【0093】
なお、上述した第1相対調整、及び第2相対調整は、いずれも処理用クロック101、及び再構成用クロック102の両方を調整していたが、いずれか一方のみを調整してもよい。
【0094】
図12は、処理用クロック101、及び再構成用クロック102のいずれか一方を調整する、第2相対調整の動作の流れの例を示すフロー図である。この第2相対調整(ステップS500a)において、プロセッサ11は、条件を満たすか否かを判断する(ステップS501a)。この条件とは、ステップS502を行える条件である。
【0095】
この条件を満たすと判断する場合(ステップS501a;YES)、プロセッサ11は、処理用クロック101のクロック周波数を上げ(ステップS502a)、処理を終了する。
【0096】
一方、上述した条件を満たさないと判断する場合(ステップS501a;NO)、プロセッサ11は、再構成用クロック102のクロック周波数を下げ(ステップS504a)、処理を終了する。
【0097】
図13は、クロック周波数の調整を行わない場合の処理と再構成との進捗を示す図である。
図13の横軸は時間を示している。
図13の上段の線は、再構成の進捗を示す。
図13の下段の線は、処理の進捗を示す。
【0098】
例えば、情報処理装置1のプロセッサ11は、
図13に示した通り、時刻t0にデータ「D1」の領域R1への書き込みを開始する。時刻t1にこの書き込みが完了すると、プロセッサ11は、プログラマブル論理回路16にモジュール「M1」の処理を開始するよう指示する。モジュール「M1」の処理は、時刻t4まで完了しないことが予測される。
【0099】
一方、プロセッサ11は、時刻t1にデータ「D2」の領域R2への書き込みを開始する。このデータ「D2」の書き込みは、時刻t2まで完了しないことが予測される。
【0100】
また、プロセッサ11は、データ「D2」の書き込みが完了した時刻t2にデータ「D31」の領域R31への書き込みを開始する。このデータ「D31」の書き込みは、時刻t3まで完了しないことが予測される。
【0101】
この場合、モジュール「M1」の処理が完了する時刻t4よりも、データ「D2」の書き込みが完了する(すなわち、モジュール「M2」の再構成が完了する)時刻t2の方が早い。そこで、プロセッサ11は、モジュール「M1」の処理に用いる処理用クロック101のクロック周波数を上げるか、モジュール「M2」の再構成に用いる再構成用クロック102のクロック周波数を下げるか、その両方を行って、これら2つの時刻を近づける。
【0102】
また、
図13に示す例で、時刻t4よりも、データ「D31」の書き込みが完了する時刻t3の方が早い。そこで、プロセッサ11は、上述した通り、処理用クロック101のクロック周波数を上げるか再構成用クロック102のクロック周波数を下げるか、その両方を行って、これら2つの時刻を近づける。
【0103】
図14は、処理が完了するよりも早く再構成が完了する場合の調整の例を示す図である。
図14(a)には、モジュール「M1」の処理に用いる処理用クロック101のクロック周波数を上げて、この処理の完了を早めたときの進捗が示されている。
【0104】
上述した通り、クロック周波数を変えない場合、モジュール「M1」の処理は時刻t4に完了していたが、クロック周波数を上げたことによって、この処理は時刻t41に完了している。時刻t41は、時刻t4よりも早い時刻であり、時刻t3よりも遅い時刻である。これにより、データ「D31」の再構成が完了する時刻t3と、モジュール「M1」の処理が完了する時刻t41とは、クロック周波数を調整する前に比べて近づく。したがって、次のデータ「D32」を再構成するまでの待ち時間は短縮される。
【0105】
このプロセッサ11は、第1回路の処理が完了するよりも早く第2回路の再構成が完了することが予測される場合に、この第1回路の処理に用いるクロック周波数を上げるプロセッサの例である。
【0106】
また、
図14(b)には、データ「D31」の書き込みに用いる再構成用クロック102のクロック周波数を下げて、このデータを含むモジュールの再構成の完了を遅らせたときの進捗が示されている。
【0107】
クロック周波数を下げたことによって、データ「D31」の書き込みが完了するタイミングは、時刻t3から時刻t31に延期されている。時刻t31は、時刻t3よりも遅い時刻であり、時刻t4よりも早い時刻である。これにより、データ「D31」の再構成が完了する時刻t31と、モジュール「M1」の処理が完了する時刻t4とは、クロック周波数を調整する前に比べて近づく。したがって、次のデータ「D32」を再構成するまでの待ち時間は短縮される。また、クロック周波数を下げているため、クロック周波数を変えない場合に比べて電力消費量が節約される。
【0108】
このプロセッサ11は、第1回路の処理が完了するよりも早く第2回路の再構成が完了することが予測される場合に、この第2回路の再構成に用いるクロック周波数を下げるプロセッサの例である。
【0109】
また、
図13に示した例において、情報処理装置1のプロセッサ11は、時刻t6にモジュール「M2」の処理を完了する。モジュール「M2」が再構成されている領域R2は、モジュール「M4」が再構成される領域R4と一部が重複している。そのため、モジュール「M4」の再構成は、モジュール「M2」の処理が完了する時刻t6まで開始できない。
【0110】
また、
図4に示す待ち行列122の通り、順序「J3」に行われるモジュール「M3」の処理は、順序「J2」の処理が完了していることを開始条件としている。そのため、
図13に示す通り、モジュール「M3」の再構成が時刻t5に完了していても、その処理は、モジュール「M2」の処理が完了する時刻t6まで開始できない。
【0111】
したがって、プロセッサ11は、時刻t6になると、データ「D4」を領域R4に書き込み始めることでモジュール「M4」の再構成を開始する。また、プロセッサ11は、時刻t6になると、時刻t5に再構成が完了していたモジュール「M3」の処理を開始する。
【0112】
ここで、モジュール「M4」の再構成は、時刻t8に完了することが予測される。また、モジュール「M3」の処理は、時刻t7に完了することが予測される。そして、時刻t7は、時刻t8よりも早い時刻である。
【0113】
つまり、この場合、モジュール「M4」の再構成が完了する時刻t8よりも、モジュール「M3」の処理が完了する時刻t7の方が早い。そこで、プロセッサ11は、モジュール「M4」の再構成に用いる再構成用クロック102のクロック周波数を上げるか、モジュール「M3」の処理に用いる処理用クロック101のクロック周波数を下げるか、その両方を行って、これら2つの時刻を近づける。
【0114】
図15は、再構成が完了するよりも早く処理が完了する場合の調整の例を示す図である。
図15(a)には、モジュール「M4」の再構成に用いる再構成用クロック102のクロック周波数を上げて、この再構成の完了を早めたときの進捗が示されている。
【0115】
上述した通り、クロック周波数を変えない場合、モジュール「M4」の再構成は時刻t8に完了していたが、クロック周波数を上げたことによって、この再構成は時刻t81に完了している。時刻t81は、時刻t8よりも早い時刻であり、時刻t7よりも遅い時刻である。これにより、モジュール「M4」の再構成が完了する時刻t81と、モジュール「M3」の処理が完了する時刻t7とは、クロック周波数を調整する前に比べて近づく。したがって、再構成されたモジュール「M4」の処理を開始するまでの待ち時間は短縮される。
【0116】
このプロセッサ11は、第2回路の再構成が完了するよりも早く第1回路の処理が完了することが予測される場合に、この第2回路の再構成に用いるクロック周波数を上げるプロセッサの例である。
【0117】
また、
図15(b)には、モジュール「M3」の処理に用いる処理用クロック101のクロック周波数を下げて、この処理の完了を遅らせたときの進捗が示されている。
【0118】
クロック周波数を下げたことによって、モジュール「M3」の処理が完了するタイミングは、時刻t7から時刻t71に延期されている。時刻t71は、時刻t7よりも遅い時刻であり、時刻t8よりも早い時刻である。これにより、モジュール「M3」の処理が完了する時刻t71と、モジュール「M4」の再構成が完了する時刻t8とは、クロック周波数を調整する前に比べて近づく。したがって、再構成されたモジュール「M4」の処理を開始するまでの待ち時間は短縮される。また、クロック周波数を下げているため、クロック周波数を変えない場合に比べて電力消費量が節約される。
【0119】
このプロセッサ11は、第2回路の再構成が完了するよりも早く第1回路の処理が完了することが予測される場合に、この第1回路の処理に用いるクロック周波数を下げるプロセッサの例である。
【0120】
上述した動作により、情報処理装置1のプロセッサ11は、プログラマブル論理回路16のいずれかの領域(第1領域という)に再構成された回路(第1回路)に処理を実行させる。また、このプロセッサ11は、第1回路の処理と並行して、プログラマブル論理回路16の第1領域と異なる領域(第2領域)に第1回路と異なる回路(第2回路という)を再構成させる。そして、プロセッサ11は、第1回路の処理が完了するタイミングと、第2回路の再構成が完了するタイミングとが近づくように、第1回路の処理に用いるクロック周波数、及び第2回路の再構成に用いるクロック周波数の少なくとも一方を調整する。これにより、クロック周波数を変えない装置と比較して、処理と並行して再構成をする際の、この情報処理装置1における待ち時間は減少する。
【0121】
<変形例>
以上が実施形態の説明であるが、この実施形態の内容は以下のように変形し得る。また、以下の変形例は、互いに組合されてもよい。
【0122】
<1>
上述した実施形態において、情報処理装置1は、CPUで構成されるプロセッサ11を有していたが、情報処理装置1を制御する制御手段は他の構成であってもよい。例えば、情報処理装置1は、CPU以外にも各種のプロセッサ等を有してもよい。
【0123】
ここでプロセッサとは広義的なプロセッサを指し、汎用的なプロセッサ(例えば上述したCPU等)や、専用のプロセッサ(例えばGPU: Graphics Processing Unit、ASIC: Application Specific Integrated Circuit、FPGA、PLD:Programmable Logic Device、等)を含むものである。
【0124】
<2>
上述した実施形態におけるプロセッサの動作は、1つのプロセッサによって成すのみでなく、物理的に離れた位置に存在する複数のプロセッサが協働して成すものであってもよい。
【0125】
また、プロセッサの各動作の順序は、上述した実施形態において記載した順序のみに限定されるものではなく、適宜変更されてもよい。
【0126】
<3>
上述した実施形態において、プロセッサ11は、プログラマブル論理回路16の第1領域に再構成された第1回路の処理と並行して、第2領域に第2回路を再構成させ、第1回路の処理、及び第2回路の再構成のそれぞれが完了するタイミングが近づくように、クロック周波数を調整していたが、このクロック周波数の調整に伴って冷却器131の熱交換量を調整してもよい。すなわち、このプロセッサ11は、クロック周波数の調整に応じて、自身を冷却する冷却器の熱交換量を調整するプロセッサの例である。
【0127】
例えば、
図1に示す冷却器131が、プロセッサ11、及びプログラマブル論理回路16に外気を送り込む送風機である場合、プロセッサ11は、クロック周波数を上昇させるときに、これにより増加する熱が外部へ散逸するように、送風量を増加させて冷却器131の熱交換量を上昇させる。
【0128】
このプロセッサ11は、クロック周波数を上げるときに送風機の送風量を増加させるプロセッサの例である。
【0129】
また、プロセッサ11がクロック周波数を下降させると、発生する熱は減少するので、下降前に比べて熱交換量を下げてもよい。この場合、プロセッサ11は、クロック周波数を下降させるとともに、送風量を減少させて冷却器131の熱交換量を下降させる。
【0130】
<4>
上述した実施形態において、情報処理装置1のプロセッサ11によって実行されるプログラムは、プログラマブル論理回路に接続されたプロセッサを有するコンピュータに、プログラマブル論理回路の第1領域に再構成された第1回路に処理を実行させるステップと、第1回路の処理と並行して、第1領域と異なる第2領域に第2回路を再構成させるステップと、第1回路の処理が完了するタイミングと、第2回路の再構成が完了するタイミングとが近づくように、この第1回路の処理に用いるクロック周波数、及びこの第2回路の再構成に用いるクロック周波数の少なくとも一方を調整するステップと、を実行させるプログラムの例である。
【0131】
このプログラムは、磁気テープ及び磁気ディスク等の磁気記録媒体、光ディスク等の光記録媒体、光磁気記録媒体、半導体メモリ等の、コンピュータ装置が読取り可能な記録媒体に記憶された状態で提供し得る。また、このプログラムは、インターネット等の通信回線経由でダウンロードされてもよい。
【符号の説明】
【0132】
1…情報処理装置、10…クロック、101…処理用クロック、102…再構成用クロック、11…プロセッサ、111…再構成部、112…指示部、113…予測部、114…調整部、12…メモリ、121…モジュールDB、122…待ち行列、13…インタフェース、131…冷却器、14…操作部、15…表示部、16…プログラマブル論理回路、161…論理ブロック、162…スイッチブロック、163…接続ブロック、164…入出力端子、17…画像読取部、18…画像形成部、19…バス、R1、R2、R3、R31、R32、R4…領域。