JP2016206729A - 情報処理装置およびその制御方法、並びにプログラム - Google Patents

情報処理装置およびその制御方法、並びにプログラム Download PDF

Info

Publication number
JP2016206729A
JP2016206729A JP2015083707A JP2015083707A JP2016206729A JP 2016206729 A JP2016206729 A JP 2016206729A JP 2015083707 A JP2015083707 A JP 2015083707A JP 2015083707 A JP2015083707 A JP 2015083707A JP 2016206729 A JP2016206729 A JP 2016206729A
Authority
JP
Japan
Prior art keywords
job
secured
resource
partial reconfiguration
capacity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015083707A
Other languages
English (en)
Inventor
洋介 大林
Yosuke Obayashi
洋介 大林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2015083707A priority Critical patent/JP2016206729A/ja
Publication of JP2016206729A publication Critical patent/JP2016206729A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】再構成可能回路を有する情報処理装置において処理のスケジュール管理を行う際、演算リソース及びメモリリソースを効果的に使用することで、パフォーマンス劣化を可能な限り抑える。
【解決手段】情報処理装置であって、複数の部分再構成部に構成された回路が、ジョブを処理する際にワークメモリとして使用することが可能な記憶手段と、複数の部分再構成部及び記憶手段の使用状況を管理するリソース管理手段と、複数の部分再構成部に構成された回路を用いてジョブの処理を制御する制御手段とを有する。制御手段は、キューの先頭のジョブを処理させる際に、複数の部分再構成部及び記憶手段の使用状況を参照し、当該先頭のジョブを処理するためのリソースとして部分再構成部及び記憶手段の容量が確保できない場合は、キューに登録されたジョブを処理する順序を変更する。
【選択図】図1

Description

本発明は、情報処理装置およびその制御方法、並びにプログラムに関する。
内部の論理回路構成を変更可能なPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)などの再構成可能回路が良く知られている。一般的に、PLDやFPGAは起動時にROM等の不揮発性メモリへ格納された論理回路構成情報を内部の揮発性メモリであるコンフィギュレーションメモリへ書き込むことにより内部論理ブロックの切り替えを行う。回路が動作中に論理回路構成を変更することが可能なものも開発されてきており、動作中に論理回路を変更する方法を動的再構成という。
また、FPGAには、チップ全体ではなく特定の領域だけを部分的に書き換えることが可能なものがあり、このような書き換えを部分再構成という。特に、動作中の他の回路を停止しない状態で部分再構成を行うことを動的部分再構成という。動的部分再構成技術を用いることで、一つの領域に複数の回路を切り替えて実装することが可能となるため、ハードウェアリソースの時分割多重化を行い論理ブロックで実現する機能を変更することができる。その結果、少ないハードウェアリソースで用途に合わせた様々な機能をハードウェアによる高い演算性能を保ったままで柔軟に実現することが可能となる。
特許文献1では、大規模な処理を小さな処理単位に分割して処理する場合、処理内容が動的に変化しても柔軟に論理回路構成の書換え、実行をスケジュール管理し効率的な処理を可能とする技術が開示されている。大規模な処理を小さな処理単位に分割した場合、各処理単位の実行順や書換え順は一意に決定されるものではなく、様々な要因によって動的に変化するため、要因の変化に合わせて書換え、実行の順序をスケジュール管理する必要がある。
動的部分再構成技術を用いて大規模な処理を実現する場合、限られた演算リソースを効果的に用いるよう、処理実行のスケジュールを効率よく管理する必要がある。ここで言う演算リソースとは、分割された処理単位を実行する動的部分再構成領域と、各動的部分再構成領域が処理単位を実行する際に必要とするワークメモリ領域である。ワークメモリ領域には、各処理単位において処理される入力データ、中間データ、出力データが保持される。各処理単位が必要とするワークメモリ領域の量は、それぞれの処理内容によって異なる。ワークメモリを多く必要とする処理として、リアルタイム処理が挙げられる。リアルタイム処理とは、外部装置が情報処理装置に対して、ある一定の決められたタイミングでデータの入力もしくは出力を要求する処理のことを指す。外部装置が情報処理装置に対してデータの入力、出力を要求するタイミングは情報処理装置の内部状態に依らない。このため、リアルタイム処理を行う処理単位を動的部分再構成領域で実行するためには、外部機器が要求するデータ入出力タイミングを満たすようにワークメモリを多く確保する必要があり、メモリ領域が足りないとデータの消失が発生する。一方で非リアルタイムな処理、すなわち外部機器等によるタイミング要求の無い処理については、リアルタイム処理と比較して必要となるワークメモリメモリ領域は少なくすることができる。これは、非リアルタイム処理では、メモリ領域が足りなくなった場合は処理を中断することや、小さな単位で処理を実行し、都度、データを大容量ストレージ等に書き戻すなどが可能であるためである。
特許第5018480号公報
上述したように、動的部分再構成技術を用いて大規模な処理を実現する場合、FPGA内部の動的部分再構成領域等の演算リソースのみならず、動的部分再構成領域に書き込まれた処理単位の実行に必要となるメモリリソースも確保しなければならない。しかしながら、多様な機能を実現する情報処理装置においては、各動的部分再構成領域で実行される処理単位は必ずしも一連の一つの処理に限られたものではない。多くの場合、複数ユーザや複数の外部からの処理要求依頼によって、相互が連携することのない処理が同時並列に各動的部分再構成領域で実行される。特許文献1のような従来のスケジュール管理方法を用いた場合、動的部分再構成領域に書き込まれた処理単位が必要とするメモリリソースは、同時点において並列に実行されている他の処理単位のメモリ使用状況によっては確保できない状態が生じ得る。ある処理単位がメモリ領域を確保できない場合、処理単位は処理を開始することができず、特にリアルタイム処理ではデータの消失を招く恐れがある。よって、このようなメモリリソースの確保できない処理が処理の先頭にスケジュールされてしまうと、処理を開始していないにも関わらず、演算リソースを占有し続けてしまう。処理を開始していない処理単位が演算リソースを占有してしまうことで、FPGAの限られた演算リソースの利用効率が悪化してしまうという問題があった。
上記課題を解決するために本願発明は以下の構成を有する。すなわち、動的に回路構成を再構成可能な複数の部分再構成部を含む再構成可能回路を備える情報処理装置であって、前記複数の部分再構成部に構成された回路が、ジョブを処理する際にワークメモリとして使用することが可能な記憶手段と、前記複数の部分再構成部および前記記憶手段の使用状況を管理するリソース管理手段と、ジョブをキューにて管理するジョブキュー管理手段と、前記複数の部分再構成部に構成された回路を用いてジョブの処理を制御する制御手段とを有し、前記制御手段は、前記キューの先頭のジョブを処理させる際に、前記リソース管理手段が管理する前記複数の部分再構成部および前記記憶手段の使用状況を参照し、当該先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できる場合は、当該リソースを確保して前記先頭のジョブを処理させ、確保できない場合は、前記キューに登録されたジョブを処理する順序を変更する。
本発明によれば、再構成可能回路を有する情報処理装置において処理のスケジュール管理を行う際、演算リソース及びメモリリソースを効果的に使用することで、パフォーマンス劣化を可能な限り抑える制御が実行可能となる。
本願発明に係る画像処理装置のハードウェア構成の一例を示す図。 本願発明に係る動的部分再構成に関わる構成例を示す図。 本願発明に係るシステム領域とワークメモリ領域割り当ての一例を示す図。 本願発明に係るリソース管理テーブルの構成例を示す図。 第一の実施形態に係るジョブキュー管理テーブルの構成例を示す図。 第一の実施形態に係るジョブスケジューリング制御処理のフローチャート。 第一の実施形態に係るジョブスケジューリング制御処理のフローチャート。 第二の実施形態に係るジョブキュー管理テーブルの構成例を示す図。 第二の実施形態に係るジョブスケジューリング制御処理のフローチャート。 第三の実施形態に係るジョブキュー管理テーブルの構成例を示す図。 第三の実施形態に係るジョブスケジューリング制御処理のフローチャート。 第三の実施形態に係るジョブスケジューリング制御処理のフローチャート。
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の説明では、対象とする装置を画像処理装置として説明するが、部分的かつ動的に再構成が可能なFPGAなどの再構成可能回路を備えた情報処理装置であれば、本願発明は適用可能である。また、本願明細書では内部の論理回路構成を変更可能な回路としてFPGAを例に挙げて説明するがこれに限定するものではない。
<第一の実施形態>
[画像処理装置の構成]
図1は、第一の実施形態に係る画像処理装置のハードウェアの構成例を示す図である。画像処理装置100は、画像処理装置100を使用するユーザが各種の操作を行うための操作部103と、操作部103からの指示に従い画像情報を読み取るスキャナ部109と、画像データを用紙に印刷するプリンタ部107とを有する。スキャナ部109は、スキャナ部109を制御するCPU(不図示)や原稿読取を行うための照明ランプや走査ミラー(不図示)などを有する。プリンタ部107は、プリンタ部107の制御を行うCPU(不図示)や画像形成や定着を行うための感光体ドラムや定着器(不図示)を有する。
また、画像処理装置100は、CPU101、ROM104、HDD116、RAM111、メモリコントローラ110を有する。CPU101は、画像処理装置100の動作を統括的に制御し、画像処理装置100の各ユニットを制御するための制御ソフトウェアを実行する。ROM104は、CPU101が実行するプログラムが格納される。HDD116は、画像処理データのスプールや、画像処理装置100で使用する全コンフィギュレーションデータの格納に用いられる。RAM111は、CPU101が動作するためのシステムワークメモリであり、かつ画像データを一時記憶するためのワークメモリでもある。メモリコントローラ110は、RAM111と、RAM111への書き込み、読み出し動作を制御する。メモリコントローラ110は、システムバス120および画像バス121に接続され、RAM111へのアクセスを制御する。
また、画像処理装置100は、再構成可能デバイスとして画像処理回路等を構成するFPGA140を有する。本実施形態では再構成可能デバイスとしてFPGAを例に説明しているが、FPGA以外の再構成可能デバイスが接続される構成であってもよい。FPGA140における処理の実行に際しては、ワークメモリとしてRAM111を使用する。画像処理装置100は、CPU101の制御の基、FPGA140の回路構成(コンフィギュレーション)を制御するコンフィグコントローラ130を有する。FPGA140は、動的書き換え可能かつ部分書き換え可能な、動的部分再構成可能回路である。すなわち、FPGA140の再構成部の一部に構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に、別の回路を再構成することができる。本構成の詳細については、図2を用いて後述する。
また、画像処理装置100は、スキャナ部109から画像データが入力されるスキャナI/F108と、プリンタへ画像データを出力するプリンタI/F106とを有する。スキャナ部109から取り込まれた画像データは、スキャナI/F108を介して画像処理装置100内部へ取り込まれる。また、スキャナ部109から取り込まれたデータは同時に、FPGA140にも取り込まれることで、FPGA140においてスキャン画像に対する画像処理の実行が可能となる。なお、FPGA140においてスキャナ部109からの入力画像データに対して実行される処理は、前述したリアルタイム処理である。FPGA140及びスキャナI/F108、プリンタI/F106は、処理される画像データを転送するための画像バス121に接続される。
また、画像処理装置100は、ネットワークI/F102やUSBI/F114を介し、ネットワーク上の汎用コンピュータ(不図示)と通信(データ送受信)を行う。また、画像処理装置100は、FAXI/F115を介し、公衆回線網と接続し、他の画像処理装置やファクシミリ装置(不図示)と通信(データ送受信)を行う。画像処理装置100は、CPU101が実行するプログラム、ROM104への書き込み、読み出し動作を制御するROM I/F112を有する。また、画像処理装置100において、CPU101、ネットワークI/F102、操作部103、ROM I/F112、コンフィグコントローラ130、FPGA140は、システムバス120を介して相互に接続される。CPU101は、FPGA140と、スキャナI/F108、プリンタI/F106のパラメータ設定を、システムバス120を介して行う。
なお、本実施形態において、コンフィギュレーションデータはHDD116に格納されているが、格納先は画像処理装置100内部に限定されるものではなく、例えば、ネットワークを介して外部のサーバから随時ダウンロードする構成でもよい。
[部分再構成に関する構成]
図2を用いて、本実施形態に係る画像処理装置100の部分再構成に関する構成について説明する。CPU101、コンフィグコントローラ130、RAM111、HDD116、およびFPGA140については図1を用いて前述した通りである。
FPGA140は、内部に4つの部分再構成部を備える。具体的には、部分再構成部(PR0)201、部分再構成部(PR1)202、部分再構成部(PR2)203、および部分再構成部(PR3)204である。各部分再構成部は動的に画像処理回路等を書き換えることが可能である。本実施形態では、画像処理機能を持つ回路を部分再構成部に構成する例について説明をしているが、もちろん画像処理機能以外の処理回路を部分再構成部に構成可能であることは言うまでもない。また、4つの部分再構成部を備えた例を示すが、これ以外の数の部分再構成部を備えた構成であってもよい。
コンフィグコントローラ130は、リソース管理部205、エラー検知部206、およびコンフィグ転送部207を備える。リソース管理部205は、FPGA140で実行される画像処理機能が使用するリソースを管理する。例えば、部分再構成部201〜204それぞれが現在の処理に使用されているかなど、各部分再構成部の空き状況を管理する。その上で、リソース管理部205は、各部分再構成部が書き換え可能か否かの判定を行う。また、リソース管理部205は、部分再構成部201〜204それぞれに書き込まれた画像処理機能がRAM111において使用するメモリリソース量を管理し、画像処理機能がメモリリソースを確保可能か否かの判定を行う。
CPU101は、リソース管理部205に管理された情報により、各部分再構成部が書き換え可能か否かの判定を加味し、コンフィグ転送部207へコンフィギュレーションデータ転送開始を指示する。コンフィグ転送部207は、CPU101の指示の下、必要となるコンフィギュレーションデータをHDD116から読み出し、各部分再構成部へコンフィギュレーションデータを書き込む。この書き込みにより、コンフィギュレーションデータに応じた画像処理機能が実行可能な部分再構成部が構成される。
エラー検知部206は、部分再構成が正常に終了しなかった場合のエラーを検知する。例えば、部分再構成部201の書き換えを実施した際に、なんらかの要因で失敗してしまった時に再構成可能デバイスが出力するエラー信号をモニタする。エラー検知部206は、エラー信号を検知した場合、リソース管理部205に通知する。リソース管理部205は、コンフィギュレーションデータの転送指示が正常に完了したか否かをステータスとして保持し、CPU101は保持されたステータスを読み取ることで、再構成が正常に終了したことを検知する。
[メモリリソースの割り当てに関する構成]
図3を用いて、本実施形態に係る画像処理装置100におけるメモリリソースのRAM111への割り当てに関する構成について説明する。RAM111は、CPU101がシステムを統括的に制御するためのオペレーティングシステム(OS)用に割り当てられたシステム領域300を有する。システム領域300は、CPU101において画像処理装置100を統括的に制御する制御プログラムが割り当てられる。制御プログラムは、OSのメモリ管理機能によって自動的にシステム領域300内にメモリリソースを割り当てられる。
また、RAM111は、FPGA140の画像処理機能の実行に際して必要となるワークメモリ領域301を有する。ワークメモリ領域301は、OSのメモリ管理領域外である。従って、システム上で動作するソフトウェアプログラムがワークメモリ領域301に割り当てられロードされることはない。ワークメモリ領域301は、CPU101により実行される、画像処理機能制御プログラムによって、画像処理機能ごとにメモリ領域を割り当てられる。
CPU101は、リソース管理部205に管理されたワークメモリ領域301の使用状況により、画像処理機能において必要となるメモリ領域がワークメモリ領域301上に確保可能か否かを判定し、メモリリソースの確保を行う。メモリリソースの確保が完了すると、CPU101は画像処理機能の実行を指示する。
[リソース管理テーブルの構成]
図4を用いて本実施形態に係るリソース管理部205によるリソース管理方法について説明する。リソース管理部205は、各部分再構成部の使用状況、及び各部分再構成部が使用中のメモリ使用量を管理するためのリソース管理テーブル400を有する。リソース管理テーブル400は、各部分再構成部が使用中か未使用かの使用状況に関するステータスを記憶して保持する。CPU101は、いずれかの部分再構成部へのコンフィギュレーション開始依頼を行う場合、それに先立ち、リソース管理テーブル400の対応するPR番号のPR使用状況を「使用中」に変更する。また、CPU101は、いずれかの部分再構成部における画像処理機能の実行が終了した時点で、リソース管理テーブル400の対応するPR番号のPR使用状況を「未使用」に変更する。更に、CPU101は、いずれかの部分再構成部へのコンフィギュレーション開始要求を行う場合、リソース管理テーブル400の対応するPR番号のメモリ使用量を登録する。CPU101は、いずれかの部分再構成部における画像処理機能の実行が終了した時点で、リソース管理テーブル400の対応するPR番号に登録されたメモリ使用量を破棄させる。
リソース管理部205はまた、リソース管理テーブル400における各PRの使用状況により、各部分再構成部の未使用個数を管理するためのPR空き個数管理テーブル401を有する。PR空き個数管理テーブル401は、部分再構成部の個数、及び、リソース管理テーブル400に登録されたPR使用状況に基づいて、PR空き個数が更新される。
リソース管理部205はまた、リソース管理テーブル400における各PRのメモリ使用量より、ワークメモリ領域301におけるメモリ空き容量を管理するメモリ空き容量管理テーブル402を有する。メモリ空き容量管理テーブル402は、ワークメモリ領域301の容量、及び、リソース管理テーブル400に登録された各PRのメモリ使用量に基づいて、メモリ空き容量が更新される。ここでのメモリ空き容量は、各部分再構成部が使用可能なメモリ容量を意味する。
CPU101は、各部分再構成部における画像処理機能の実行に際し、リソース管理部205に対してPRの空き状況、及びメモリリソースの空き状況の問い合わせを行う。リソース管理部205は、CPU101からの問い合わせを受け付けると、PR空き個数管理テーブル401、及びメモリ空き容量管理テーブル402の情報に基づいて、PRおよびメモリリソースが確保可能であるか否かをCPU101へ返答する。CPU101は、リソース管理部205からの返答に基づいて、リソースが確保できるか否かを判定する。
[ジョブキュー管理テーブルの構成]
図5を用いて本実施形態に係るCPU101によるジョブキュー管理方法について説明する。ジョブキュー管理テーブル500は、現在受け付けたジョブをキューイング処理するためのテーブルであり、画像処理装置100が受け付けた各ジョブについて、ジョブを受け付けた順にジョブ番号を連番で割り付け保持する。また、ジョブキュー管理テーブル500は、各ジョブを一意に判別するためのジョブ名を保持する。ジョブ名は、様々な画像処理機能に対応する機能名であり、例えば画像処理機能X、画像処理機能Y、画像処理機能Zなどである。また、ジョブキュー管理テーブル500は、画像処理機能ごとに固有で必要となるメモリ容量や、各画像処理機能で処理するデータ量に基づいて、各ジョブが必要なメモリ容量の情報を保持する。
[ジョブスケジューリング制御処理]
図6及び図7を用いて本実施形態に係る、FPGA140で実行されるジョブのジョブスケジューリング制御処理について説明する。
図6は、ジョブキュー管理テーブル500に新たなジョブが登録されてから、ジョブキュー管理テーブル500に登録された全てのジョブの処理がFPGA140で開始されるまでのスケジューリング制御を説明するためのフローチャートである。ジョブスケジューリング制御処理は、CPU101とリソース管理部205とが連携することによって実現される。
図7は、図6のジョブスケジューリング制御処理における、ジョブ順序制御処理(S607)及びジョブ実行処理(S608)の定義済み処理の詳細を説明するためのフローチャートである。なお、図7の各処理フローはCPU101によってなされる。
CPU101の制御処理は、ジョブキュー管理テーブル500に新たなジョブキューが登録されることで開始される。また、リソース管理部205の制御処理は、画像処理装置100の起動とともに開始される。
S601にて、CPU101は、ジョブキュー管理テーブル500において参照するジョブ番号を“0”にリセットする。S602にて、CPU101は、現在参照しているジョブ番号のジョブについて、ジョブキュー管理テーブル500のジョブ名、及びメモリ必要量に基づいて、PRの空き状況、及びメモリ空き状況をリソース管理部205に問い合わせる。
S603にて、リソース管理部205は、PR空き個数管理テーブル401を参照し、現在のPRの空き状況を確認する。S604にて、リソース管理部205は、メモリ空き容量管理テーブル402を参照し、現在のワークメモリ領域301の空き状況を確認する。S605にて、リソース管理部205は、S603及びS604での各リソース空き状況の確認結果をCPU101に返答する。
CPU101は、S602にてリソース管理部205へリソース空き状況を問い合わせした後、S605にてリソース管理部205から各リソース空き状況確認結果の返答を受けると、S606へ移行する。S606にて、CPU101は、リソース管理部205からの返答結果に基づき、PRリソース、及びメモリリソースが両方とも確保可能であるか否かの判定を行う。少なくとも一方が確保可能でなければ(S606にてNO)S607へ移行する。リソースが両方とも確保可能であれば(S606にてYES)S608へ移行する。
S607にて、CPU101は、リソース確保できないジョブ番号のジョブについて、実行開始延期を行うためのジョブ順序制御処理を行う。S607においてジョブ順序制御処理が開始されると、図7(a)のS701へと移行する。S701にて、CPU101は、現在参照しているジョブが、キューに登録された全ジョブのうちの最後尾であるか否かを判定する。ここでは、参照しているジョブのジョブ番号が、ジョブキュー内のジョブの数よりも小さいか否かで判定される。最後尾でなければ(S701にてYES)S702へ移行し、最後尾であれば(S701にてNO)、S703へ移行する。S702にて、CPU101は、ジョブキュー管理テーブル500において参照するジョブ番号を1インクリメントする。これにより、リソースが確保できるか否かの判定を行う対象を1つ後ろのジョブに変更することとなる。これを繰り返すことで後続のジョブに対し順次判定することができる。その後、本処理フローを終了する。S703にて、CPU101は、参照するジョブ番号を再び先頭の“0”にリセットし、本処理フローを終了する。CPU101は、S607のジョブ順序制御処理が終了すると、S602へと移行し、新たに参照すべきジョブ番号について、S602〜S606の処理を再び行う。
S608にて、CPU101は、リソースが確保可能なジョブ番号のジョブについて、ジョブを開始するためのジョブ実行処理を行う。S608においてジョブ実行処理が開始されると、図7(b)のS704へと移行する。S704にて、CPU101は、現在参照しているジョブ番号のジョブが使用するPR番号およびメモリ使用量を、リソース管理テーブル400に登録する。
S705にて、CPU101は、コンフィグ転送部207に対して、特定のPRに対してコンフィギュレーションデータの転送処理を指示する。このとき、以前の処理により、ここでのジョブを処理するための機能が動的部分再構成部にすでに構成されている場合には、再構成は行わないように制御しても構わない。その後、再構成が正常に終了するとS706へ移行する。S706にて、CPU101は、書き込まれた処理回路に対する必要なパラメータ設定、及びワークメモリ領域301上へメモリ領域の確保等の必要な前処理を行う。その後、CPU101は、画像処理機能の実行開始を行う。
S707にて、CPU101は、現在参照しているジョブ番号のジョブを、ジョブキュー管理テーブル500から削除する。その後、本処理を終了する。なお、ジョブキュー管理テーブル500において特定の番号のジョブが削除されると、削除されたジョブ番号より後段にあたるジョブはジョブ番号が1ずつデクリメントされることで、ジョブ番号が連番となるように更新、調整される。
CPU101は、S608のジョブ実行処理が終了すると、S609へと移行する。S609にて、CPU101は、ジョブキュー管理テーブル500に未処理のジョブが残っているか否かを判定する。ジョブが残っている場合(S609にてYES)S601へ移行して再びジョブキューの先頭のジョブから順次、処理を行う。ジョブキュー管理テーブル500にジョブが残っていない場合(S609にてNO)、本処理フローを終了する。なお、前述したようにリソース管理部205の処理は画像処理装置100の起動とともに開始され、CPU101からのリソース空き状況の問い合わせを受けると、都度リソースの確認を行い、結果をCPU101へと返答する。リソース管理部205の処理は、画像処理装置100が停止した時点で終了する。
以上の制御により、画像処理装置100は、キューイングされた複数のジョブをFPGA140の限られた演算リソース(部分再構成部201〜204:PR)及び、メモリリソース(ワークメモリ領域301)を効率よく使用し実行することができる。本制御処理では、画像処理機能の実行に必要なリソースが確保できない場合、他のリソースが確保できるジョブを先行して実行させることでリソース利用率を向上させることが肝要である。CPU101は、演算リソースとメモリリソースの少なくとも一方が確保できない場合、ジョブ順序を制御することで効果的なジョブ実行スケジューリングが可能となる。本制御処理を用いることで、CPU101は、メモリリソースの確保できない処理が演算リソースを占有してしまうことを防ぐことが可能となる。
なお、本実施形態においては、コンフィグコントローラ130がリソース管理部205を有し、更にリソース管理部205は、リソース管理テーブル400、PR空き個数管理テーブル401、メモリ空き容量管理テーブル402を有する構成例を示した。しかしながら、本実施形態は一例にすぎず、リソース管理部205と同等の機能をコンフィグコントローラ130以外が担うことも可能であり、例としてCPU101がリソース管理部205と同等の機能を担うことも可能である。
<第二の実施形態>
第一の実施形態では、ジョブキューの先頭となったジョブがメモリリソースを確保できない場合、ジョブキューの後続のジョブでリソース確保可能なジョブを先行して(順番を入れ替えて)実行することで、リソース利用率を向上させることが可能な制御フローを示した。しかしながら、メモリリソースを確保できないジョブは、ジョブキューの後続のジョブに次々と追抜かされてしまうと、いつまでも処理を開始することができない場合が生じる。これは、特にRAM111の容量が非常に限られたものであり、かつ、ワークメモリ領域301に割り当てられたメモリ容量も非常に小さい場合には顕著となる。ジョブキューに先に登録されたジョブがいつまでも開始されないことは、ユーザの利便性の低下につながる。第二の実施形態では、このような状況が起こることを抑止するための方法について説明する。以下、第二の実施形態について、第一の実施形態との差分に着目し、図を用いて説明する。
[順番追い越し回数を考慮したジョブキュー管理テーブル]
図8を用いて本実施形態に係るCPU101によるジョブキュー管理方法について説明する。図8は、ジョブキューの順番追い越し回数が考慮されたジョブキュー管理テーブル800を示す。第一の実施形態のジョブキュー管理テーブル500との差分は、ジョブキューに登録された各ジョブについて、被追い越し最大許可数と被追い越し数カウントを保持している点である。ジョブキュー管理テーブル800に保持されるジョブ番号、ジョブ名、およびメモリ必要量は、第一の実施形態にて示したジョブキュー管理テーブル500と同等である。被追い越し許可数は、ジョブキューのそれぞれのジョブについて、他のジョブに追い越される回数の最大許可数である。本実施形態では、この最大許可数を上限として、追い越しの回数を制御する。この値は、ジョブ毎に設定されても良いし、機能の種類ごとに設定されてもよい。被追い越し数カウントは、各ジョブがジョブキューに登録されてから、現在までに他のジョブに追い越された回数を示す。この値は、処理中において、追い越しが発生した際にカウントされる。
[順番追い越し回数を考慮したジョブスケジューリング制御処理]
図9を用いて本実施形態に係るCPU101によるジョブスケジューリング制御方法について説明する。図9は、本実施形態に係る、ジョブの順番追い越し回数が考慮された、ジョブスケジューリング制御処理を示す。図9(a)は、本実施形態に係るジョブ順序制御処理を示し、S801以外の処理は、第一の実施形態のジョブ順序制御処理と同等である。また、図9(b)は、本実施形態に係るジョブ実行処理を示し、S802以外の処理は、第一の実施形態のジョブ実行処理と同等である。
まず、本実施形態のジョブ順序制御処理(図9(a))について説明する。S701にて、CPU101は、参照しているジョブが、ジョブキュー内のジョブのうち最後尾であるか否かの判定を行う。参照しているジョブ以降に他のジョブが存在する場合には(S701にてYES)S801へと移行する。
S801にて、CPU101は、ジョブキュー管理テーブル800に基づき、参照中のジョブの現在の被追い越し数カウントが、被追い越し最大許可数以内であるか否かの判定を行う。参照中のジョブの被追い越し数カウントが被追い越し最大許可数以内である場合は(S801にてYES)、S702へ移行し、CPU101は、参照するジョブ番号を1インクリメントする。その後、本処理フローを終了し、図6のS602へ戻る。一方、参照中のジョブの被追い越し数カウントが被追い越し最大数以内でない場合(S801にてNO)、S703へ移行し、CPU101は、参照するジョブ番号を“0”にリセットする。これにより、後続のジョブが順番追い越しを行うことを抑制する。その結果、部分再構成部およびワークメモリ領域301のリソースが確保できるまで、先頭のジョブの処理は待機され、このときキューに登録された他のジョブからの追い越しは生じないこととなる。その後、本処理フローを終了し、図6のS602へ戻る。
次に、本実施形態のジョブ実行制御処理(図9(b))について説明する。S707の処理後、S802へと移行する。S802にて、CPU101は、ジョブキュー管理テーブル800において、現在参照しているジョブより手前、すなわち、現在参照しているジョブのジョブ番号よりジョブ番号が小さいすべてのジョブの被追い越し数カウント項目を1インクリメントする。その後、本処理フローを終了し、図6のS609へ進む。
以上の制御により、画像処理装置100において、メモリリソースを確保できないジョブが、ジョブキューの後続のジョブに次々と追抜かされることでいつまでも処理を開始することができなくなることを抑制することが可能となる。また、ジョブキュー管理テーブル800において、各ジョブに対して被追い越し最大許可数を適切に設定することにより、演算リソースおよびメモリリソースを効率よく使用しながらジョブを実行することが可能となる。
<第三の実施形態>
第一の実施形態では、ジョブキューの先頭となったジョブがメモリリソースを確保できない場合、ジョブキューの後続のジョブでリソース確保可能なジョブを先に実行することで、リソース利用率を向上させることが可能な制御を示した。
ここで、各ジョブにおける画像処理の処理内容によっては、使用するメモリリソース量を状況に応じて制御することが可能である。使用するメモリリソース量を制御可能な処理内容として、非リアルタイムな処理が挙げられる。非リアルタイムな処理は、外部機器等によるタイミング要求の無い処理であり、リアルタイム処理と比較して必要となるワークメモリメモリ領域は少なくすることができる。これは、非リアルタイム処理では、メモリ領域が足りなくなった場合は処理を中断することや、小さな単位で処理を実行し、都度、データを大容量ストレージ等に書き戻すなどが可能であるためである。非リアルタイム処理において、使用するメモリリソース量を制限することはパフォーマンスの低下につながる。しかしながら、多くのジョブを同時に複数処理することで、画像処理装置100の並列処理性を向上することが可能となる。
一方、使用するメモリリソース量を制御することのできない処理内容として、リアルタイムな処理がある。リアルタイムな処理とは、例えば、スキャナ部109から入力された画像データに対し、スキャナ部109の要求タイミングに合わせてFPGA140内部で処理を行う処理である。リアルタイムな処理では、スキャナ部109の要求タイミング及びFPGA140に書き込まれる論理回路の処理能力に応じて必要となるメモリリソース量が決定される。このため、リアルタイム処理では、必要となるメモリリソース量が足りない状態で処理を開始してしまうと、スキャナ部109からの入力データをメモリ上に記憶することができず、データの消失の恐れがある。
第三の実施形態として、非リアルタイムな処理について使用するメモリリソースを制限することで、FPGA140の演算リソース及びメモリリソースを効率よく使用しながら、並列処理性をも向上することを可能とする制御方法について説明する。以下、第三の実施形態について第一の実施形態との差分に着目し、図を用いて説明する。
[処理内容を考慮したジョブキュー管理テーブル]
図10を用いて本実施形態に係るCPU101によるジョブキュー管理方法について説明する。図10は、ジョブの処理内容が考慮されたジョブキュー管理テーブル1000を示す。
本実施形態のジョブキュー管理テーブル1000は、ジョブ番号、ジョブ名、最大メモリ必要量、最小メモリ必要量、及びリアルタイム処理要求を保持する。本実施形態のジョブキュー管理テーブル1000における、ジョブ番号、及びジョブ名は、第一の実施形態におけるジョブキュー管理テーブル500と同等である。
最大メモリ必要量は、各ジョブにおける推奨されるメモリ必要量を示す。つまり、最大メモリ必要量は、ジョブを処理する際に利用するメモリ容量の最大値が定義されているものとする。最小メモリ必要量は、各ジョブにおける許容される最小のメモリ必要量を示す。つまり、ジョブを処理する際に必要とするメモリ容量の最小値を示し、これ以下のメモリ容量しか確保できない場合はジョブの実行が不可であることを意味する。
リアルタイム処理要求は、各ジョブについて、処理内容がリアルタイム性を要求されているか否かを示す。リアルタイム処理要求は、他の部位や外部装置から要求を受信した際に指定されているものとする。リアルタイム処理要求がなされているジョブは、例えば図10においてはジョブ番号「1」のジョブのように、最大メモリ必要量と最小メモリ必要量が一致している。これは、リアルタイム処理については、メモリ必要量は、前述したとおり一意に決定されていることからなる。一方、リアルタイム処理要求がなされていないジョブは、例えば図10においてはジョブ番号「0」のジョブのように、最大メモリ必要量と最小メモリ必要量が一致していない。非リアルタイム処理においては、最大メモリ必要量は処理パフォーマンスの観点から推奨されたメモリ量を表し、最小メモリ必要量は許容される最小のパフォーマンスを満たすメモリ量をそれぞれ表している。
[処理内容を考慮したジョブスケジューリング制御処理]
図11、図12を用いて本実施形態に係るCPU101によるジョブスケジューリング制御方法について説明する。図11は、本実施形態における、ジョブの処理内容が考慮された、ジョブスケジューリング制御処理を示す。また、図12は、図11のジョブスケジューリング制御処理内のリアルタイム処理判別制御(S1102)の定義済み処理の詳細を説明するフローチャートである。
第一の実施形態のジョブスケジューリング制御処理との差分は、S602においてリソース空き状況の問い合わせ処理がS1101に変更されている点と、S1101とS606の間にS1102が追加されている点である。以下差分についてのみ説明する。
S1101にて、CPU101は、現在参照しているジョブのジョブ番号について、ジョブキュー管理テーブル1000のジョブ名、及び最大メモリ必要量に基づいて、PRの空き状況、及びメモリ空き状況をリソース管理部205に問い合わせる。S602との違いは、問い合わせるメモリリソース量について、ジョブキュー管理テーブル1000の最大メモリ必要量を用いている点である。問い合わせた結果がリソース管理部205より返答されると、S1102へ移行する。S1102にて、CPU101は、リアルタイム処理判別制御処理を開始し、S1201へと移行する。
S1201にて、CPU101は、S605におけるリソース管理部205からの返答内容に基づいて、現在参照しているジョブについて、PRリソースが確保可能か否かを判定する。PRリソースが確保可能であれば(S1201にてYES)S1202へ移行し、確保可能でなければ(S1201にてNO)本処理フローを終了し、図11のS606へ進む。
S1202にて、CPU101は、S605におけるリソース管理部205からの返答内容に基づいて、現在参照しているジョブについて、メモリリソースが確保可能か否かを判定する。メモリリソースが確保可能でなければ(S1202にてNO)S1203へ移行し、確保可能であれば(S1202にてYES)本処理フローを終了し、図11のS606へ進む。
S1203にて、CPU101は、ジョブキュー管理テーブル1000に基づいて、現在参照しているジョブが非リアルタイム処理であるか否かを判定する。非リアルタイム処理であれば(S1203にてYES)S1204へ移行し、リアルタイム処理であれば(S1203にてNO)本処理フローを終了し、図11のS606へ進む。
S1204にて、CPU101は、現在参照しているジョブのジョブ番号について、ジョブキュー管理テーブル1000の最小メモリ必要量に基づいて、メモリ空き状況をリソース管理部205に再び問い合わせる。
S1205にて、リソース管理部205は、CPU101からのメモリリソース空き状況の問い合わせを受けると、メモリ空き容量管理テーブル402を参照し、メモリリソースの空き状況を確認する。S1206にて、リソース管理部205は、メモリリソースの空き状況の確認結果をCPU101に返答する。
S1207にて、CPU101は、リソース管理部205からの返答に基づいて、最小メモリ必要量でのメモリリソースの確保確認結果により、リソース確保確認結果を更新する。その後、本処理フローを終了し、図11のS606へ進む。S606以降では、CPU101は、S1102で更新されたリソースの確保確認結果に基づいて、第一の実施形態と同様にジョブ順序制御処理もしくはジョブ実行処理を行う。
以上の制御により、メモリリソースが確保できないジョブが非リアルタイム処理である場合に必要とするメモリ使用量を抑制することで、FPGA140の演算リソース及びメモリリソースを効率よく使用しながら、並列処理性をも向上することが可能となる。本実施形態では、非リアルタイム処理については、まず最大メモリ必要量でメモリリソースが確保できるか否かを確認し、確保できなければ最小メモリ必要量で再度、メモリリソースの確保ができるか否かを確認することが肝要となる。これにより、最大メモリ必要量でメモリリソースが確保不可であっても、最小メモリ必要量であればメモリリソースが確保できる場合に、ジョブキューの後続のジョブに順番の追い越しをさせることなく処理を開始することが可能となる。
なお、本実施形態では、リアルタイム処理判別制御処理(S1102)において、最大メモリ必要量でメモリリソースが確保できない場合は、次に最小メモリ必要量でメモリリソースの確保を行う例を示した。しかしながら、本実施形態はあくまで一例であり、本実施形態に示した例に限定されるものではない。例えば、S1204において初めに最小メモリ必要量で確保を行うのではなく、最大メモリ必要量から最小メモリ必要量まで、メモリリソースが確保できるまで段階的に要求するメモリ使用量を下げてリソース確認を行うこともできる。また、最大メモリ必要量と最小メモリ必要量との間の範囲内で容量が確保できる場合には、その確保できる容量全てを確保して非リアルタイムな処理を行うようにしてもよい。このような制御を行うことで、非リアルタイムな処理であっても、極力パフォーマンスを犠牲にすることなく、本実施形態で示した効果と同等の効果を得ることができる。
100・・・画像処理装置、101・・・CPU、104・・・ROM、111・・・RAM、120・・・システムバス、121・・・画像バス、130・・・コンフィグコントローラ、140・・・FPGA

Claims (11)

  1. 動的に回路構成を再構成可能な複数の部分再構成部を含む再構成可能回路を備える情報処理装置であって、
    前記複数の部分再構成部に構成された回路が、ジョブを処理する際にワークメモリとして使用することが可能な記憶手段と、
    前記複数の部分再構成部および前記記憶手段の使用状況を管理するリソース管理手段と、
    ジョブをキューにて管理するジョブキュー管理手段と、
    前記複数の部分再構成部に構成された回路を用いてジョブの処理を制御する制御手段と
    を有し、
    前記制御手段は、前記キューの先頭のジョブを処理させる際に、前記リソース管理手段が管理する前記複数の部分再構成部および前記記憶手段の使用状況を参照し、当該先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できる場合は、当該リソースを確保して前記先頭のジョブを処理させ、確保できない場合は、前記キューに登録されたジョブを処理する順序を変更することを特徴とする情報処理装置。
  2. 前記リソース管理手段は、前記複数の部分再構成部それぞれの使用状況および前記記憶手段の使用可能な容量を管理することを特徴とする請求項1に記載の情報処理装置。
  3. 前記ジョブキュー管理手段は、各ジョブを処理するために必要な機能および前記記憶手段の使用量を管理することを特徴とする請求項1に記載の情報処理装置。
  4. 前記制御手段は、前記先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できない場合、前記先頭のジョブの後続のジョブに対し処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できるか否かを順次判定し、リソースが確保できる後続のジョブを先行して処理させることを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  5. 前記ジョブキュー管理手段は更に、部分再構成部および前記記憶手段の容量が確保できない場合に、他のジョブから処理の順序を追い越された回数および追い越される回数の上限を管理し、
    前記制御手段は、前記先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できない際に、当該先頭のジョブが他のジョブに追い越された回数が前記上限に達していた場合、部分再構成部および前記記憶手段の容量が確保できるまで追い越しを発生させずに、当該先頭のジョブの処理を待機させることを特徴とする請求項1乃至4のいずれか一項に記載の情報処理装置。
  6. 前記追い越される回数の上限は、ジョブごとに定義されることを特徴とする請求項5に記載の情報処理装置。
  7. 前記ジョブキュー管理手段は更に、ジョブを処理する際に必要な前記記憶手段の容量に対する最大値と最小値とを管理し、
    前記制御手段は、前記キューの先頭のジョブを処理させる際に、
    前記記憶手段に対し前記最大値の容量が確保できる場合は、当該最大値の容量を確保して前記先頭のジョブを処理させ、
    前記記憶手段に対し前記最大値の容量が確保できず、前記最小値の容量が確保できる場合において、前記先頭のジョブがリアルタイム性を要求されないジョブである場合には、当該最小値の容量を確保して前記先頭のジョブを処理させる
    ことを特徴とする請求項1乃至4のいずれか一項に記載の情報処理装置。
  8. 前記ジョブキュー管理手段は更に、ジョブを処理する際に必要な前記記憶手段の容量に対する最大値と最小値とを管理し、
    前記制御手段は、前記キューの先頭のジョブを処理させる際に、
    前記記憶手段に対し前記最大値の容量が確保できる場合は、当該最大値の容量を確保して前記先頭のジョブを処理させ、
    前記記憶手段に対し前記最大値の容量が確保できず、前記最大値から前記最小値の範囲内で容量が確保できる場合において、前記先頭のジョブがリアルタイム性を要求されないジョブである場合には、確保が可能な容量全てを確保して前記先頭のジョブを処理させる
    ことを特徴とする請求項1乃至4のいずれか一項に記載の情報処理装置。
  9. 前記制御手段は更に、前記複数の部分再構成部の再構成を制御し、
    前記制御手段は、ジョブを処理するリソースとして確保された部分再構成部に、当該ジョブを処理するための機能を備えた回路が構成されていない場合、前記機能に対応するコンフィギュレーションデータを用いて前記確保された部分再構成部に回路を再構成させることを特徴とする請求項1乃至8のいずれか一項に記載の情報処理装置。
  10. 動的に回路構成を再構成可能な複数の部分再構成部を含む再構成可能回路と、
    前記複数の部分再構成部に構成された回路が、ジョブを処理する際にワークメモリとして使用することが可能な記憶手段と、
    前記複数の部分再構成部および前記記憶手段の使用状況を管理するリソース管理手段と、
    ジョブをキューにて管理するジョブキュー管理手段と
    を備える情報処理装置の制御方法であって、
    前記キューの先頭のジョブを処理させる際に、前記リソース管理手段が管理する前記複数の部分再構成部および前記記憶手段の使用状況を参照し、当該先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できる場合は、当該リソースを確保して前記先頭のジョブを処理させ、確保できない場合は、前記キューに登録されたジョブを処理する順序を変更することを特徴とする情報処理装置の制御方法。
  11. 動的に回路構成を再構成可能な複数の部分再構成部を含む再構成可能回路を備えるコンピュータを、
    前記複数の部分再構成部に構成された回路が、ジョブを処理する際にワークメモリとして使用することが可能な記憶手段、
    前記複数の部分再構成部および前記記憶手段の使用状況を管理するリソース管理手段、
    ジョブをキューにて管理するジョブキュー管理手段、
    前記複数の部分再構成部に構成された回路を用いてジョブの処理を制御する制御手段
    として機能させ、
    前記制御手段は、前記キューの先頭のジョブを処理させる際に、前記リソース管理手段が管理する前記複数の部分再構成部および前記記憶手段の使用状況を参照し、当該先頭のジョブを処理するためのリソースとして部分再構成部および前記記憶手段の容量が確保できる場合は、当該リソースを確保して前記先頭のジョブを処理させ、確保できない場合は、前記キューに登録されたジョブを処理する順序を変更することを特徴とするプログラム。
JP2015083707A 2015-04-15 2015-04-15 情報処理装置およびその制御方法、並びにプログラム Pending JP2016206729A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015083707A JP2016206729A (ja) 2015-04-15 2015-04-15 情報処理装置およびその制御方法、並びにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015083707A JP2016206729A (ja) 2015-04-15 2015-04-15 情報処理装置およびその制御方法、並びにプログラム

Publications (1)

Publication Number Publication Date
JP2016206729A true JP2016206729A (ja) 2016-12-08

Family

ID=57489641

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015083707A Pending JP2016206729A (ja) 2015-04-15 2015-04-15 情報処理装置およびその制御方法、並びにプログラム

Country Status (1)

Country Link
JP (1) JP2016206729A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10754817B2 (en) 2017-07-18 2020-08-25 Fujitsu Limited Information processing apparatus and information processing method for process order in reconfigurable circuit

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10754817B2 (en) 2017-07-18 2020-08-25 Fujitsu Limited Information processing apparatus and information processing method for process order in reconfigurable circuit

Similar Documents

Publication Publication Date Title
JP3786152B2 (ja) 印刷システム、印刷方法及びプリンタ
US6678065B1 (en) Image forming apparatus and control method thereof
KR101355193B1 (ko) 실시간 임베디드 시스템의 메모리 관리 장치 및 메모리할당/해제/관리 방법
JP6669961B2 (ja) プロセッサ、再構成可能回路の制御方法及びプログラム
JP4424623B2 (ja) 画像形成装置
JP2016035692A (ja) 画像処理装置、システム、情報処理方法及びプログラム
CN112948050A (zh) 一种部署pod的方法及装置
JP2016103755A (ja) 情報処理装置、情報処理装置を備えた画像処理装置、その制御方法及びプログラム
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
JP2012059152A (ja) データ処理を行うシステムおよびメモリを割り当てる方法
JP2017027367A (ja) 画像形成装置、リソース管理装置、リソース管理方法、画像形成装置およびプログラム
US10037591B2 (en) Information processing apparatus and method of controlling the same
JP2016206729A (ja) 情報処理装置およびその制御方法、並びにプログラム
JP5972094B2 (ja) 情報処理装置、情報処理方法及びプログラム
CN114640630A (zh) 一种流量管控方法、装置、设备及可读存储介质
JP2015094976A (ja) 情報処理装置、情報処理方法、及び、プログラム
JP5414305B2 (ja) 情報処理装置、仮想記憶管理方法及びプログラム
JP6191361B2 (ja) 情報処理システム、情報処理システムの制御方法及び制御プログラム
JP5750018B2 (ja) 画像処理システム、印刷システム、制御装置、画像処理方法およびプログラム
US10635157B2 (en) Information processing apparatus, method and non-transitory computer-readable storage medium
CN113157611A (zh) 一种数据传输控制方法、装置、设备及可读存储介质
EP3783484A1 (en) Data processing method and computer device
JP2016076867A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
JP2020024636A (ja) スケジューリング装置、スケジューリングシステム、スケジューリング方法及びプログラム
JP6364827B2 (ja) 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム