JP2016143920A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2016143920A
JP2016143920A JP2015016086A JP2015016086A JP2016143920A JP 2016143920 A JP2016143920 A JP 2016143920A JP 2015016086 A JP2015016086 A JP 2015016086A JP 2015016086 A JP2015016086 A JP 2015016086A JP 2016143920 A JP2016143920 A JP 2016143920A
Authority
JP
Japan
Prior art keywords
partial reconfiguration
unit
circuit
address space
function
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.)
Granted
Application number
JP2015016086A
Other languages
English (en)
Other versions
JP6516489B2 (ja
Inventor
実 神戸川
Minoru Kobegawa
実 神戸川
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 JP2015016086A priority Critical patent/JP6516489B2/ja
Priority to US15/003,214 priority patent/US9798484B2/en
Publication of JP2016143920A publication Critical patent/JP2016143920A/ja
Application granted granted Critical
Publication of JP6516489B2 publication Critical patent/JP6516489B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Logic Circuits (AREA)
  • Image Input (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】部分再構成部が割り当てられるレジスタとプログラムを認識するレジスタを一致させ、適切なレジスタにアクセスする技術を提供する。【解決手段】コンフィグレーションデータを用いて、部分再構成部を備えるプログラマブル回路部と、部分再構成部に構成される記憶部と、アクセスコマンドを受信したことに応じて、アクセス先となる論理回路を制御する制御手段とを備える。コンフィグレーションデータは、データに対応する論理回路により利用される記憶部におけるアドレス空間を特定するための信号を出力するように部分再構成部を構成するための回路情報を含む。制御手段は、アクセスコマンドのアクセス先を示すアドレス空間と、回路情報を用いて構成されることにより部分再構成部から出力される信号とを比較し、アクセスコマンドのアクセス先を示すアドレス空間に一致する信号を出力する部分再構成部に構成された論理回路をアクセス先として制御する。【選択図】図6

Description

本発明は、情報処理装置に関する。
内部にユーザがプログラミング可能な複数の論理ブロックを備える回路(コンフィグレーションメモリとも呼ぶ)を有するデバイスがある。ユーザは各論理ブロックをプログラミングすることで様々な論理回路(機能に対応する)をチップ上に構成可能である。このプログラミングは、論理ブロックで実現する論理(例えばANDロジックなど)の情報をコンフィグレーションデータとして、コンフィグレーションメモリに書き込むことで行われる。これをコンフィグレーションと呼ぶ。代表的なデバイスとして、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)が挙げられる。
近年、コンフィグレーションメモリを複数の領域(部分再構成部とも呼ぶ)に区分し、各部分再構成部に別々のタイミングでコンフィグレーションを可能とするデバイスが登場している。このようなコンフィグレーションを部分再構成と呼ぶ。特許文献1は、パイプラインを構成する複数の論理回路のそれぞれを、パイプラインの先頭から順に、コンフィグレーションメモリ上の対応する部分再構成部に構成していく手法を開示している。
特開2011−186981号公報
特許文献1では、一つの部分再構成部に、異なる論理回路を切り替えて構成することができる。すなわち、複数の部分再構成部がコンフィグレーションメモリ上に存在すれば、ある機能(ある機能を実現するための論理回路)を、任意の部分再構成部に構成することができる。このようなロケーションフリーとなる部分再構成を行うと、次の課題が生じる。
例えば、デバイスの部分再構成部に、アプリケーションプログラムが利用する機能に対応する論理回路が構成されているとする。アプリケーションプログラムは、その機能に対応する論理回路の制御のためにアクセスされる複数レジスタの論理アドレスを認識している。すなわち、アプリケーションプログラムは、機能に固有のレジスタ空間を認識している。一方、構成される論理回路が同じであっても、デバイスは、その論理回路の制御のためにアクセスされる複数のレジスタの物理アドレスを、部分再構成部ごとに異なるように割り当てている。すなわち、デバイスは、部分再構成部に固有のレジスタ空間を認識している。このような場合、ある機能の論理回路が任意の部分再構成部に構成されてしまうと、その機能を利用するプログラムが認識するレジスタ空間と、その機能の論理回路が構成される部分再構成部に割り当てられる固有のレジスタ空間とが合致しなくなってしまう。その結果、論理回路のロケーションフリーな部分再構成を行うと、アプリケーションプログラムが発行するアドレスから、部分再構成部の適切なレジスタにアクセスすることができなくなってしまう。
上記課題を解決するために本願発明は以下の構成を有する。すなわち、機能それぞれに対応するコンフィグレーションデータを用いて、該機能に対応する論理回路の部分再構成が可能な部分再構成部を備えるプログラマブル回路部と、前記部分再構成部に構成される論理回路それぞれにて利用される記憶部と、アクセスコマンドを受信したことに応じて、アクセス先となる論理回路を制御する制御手段とを備え、前記コンフィグレーションデータは、該データに対応する論理回路により利用される前記記憶部におけるアドレス空間を特定するための信号を出力するように前記部分再構成部を構成するための回路情報を含み、前記制御手段は、前記アクセスコマンドのアクセス先を示すアドレス空間と、前記回路情報を用いて構成されることにより前記部分再構成部から出力される信号とを比較し、当該アクセスコマンドのアクセス先を示すアドレス空間に一致する信号を出力する部分再構成部に構成された論理回路をアクセス先として制御する。
本発明によれば、任意の機能がいずれの部分再構成部に構成された場合でも、その部分再構成部が割り当てられるレジスタ空間とプログラムの認識するレジスタ空間が一致させ、部分再構成部の適切なレジスタにアクセスすることができる。
画像処理装置の構成例を示す図。 第一の実施形態に係る画像処理装置の動的部分再構成に係る構成を示す図。 ジョブと部分再構成される機能との関係を示す図。 回路情報の格納方法の一例を示す図。 第一の実施形態に係るアドレスマップの一例を示す図。 第一の実施形態に係るFPGAの詳細を説明するための図。 第一の実施形態に係る一致検出回路の詳細を説明するための図。 第一の実施形態に係る部分再構成部の内部構成を説明するための図。 第一の実施形態に係るコマンド発生時のタイミングチャート。 第一の実施形態に係る制御処理のフローチャート。 第二の実施形態に係るFPGAの詳細を説明するための図。 第二の実施形態に係る組合せ回路の詳細を説明するための図。 第三の実施形態に係るFPGAの詳細を説明するための図。 第三の実施形態に係るベースアドレス保持部の詳細を説明するための図。 第三の実施形態に係る制御処理のフローチャート。 第四の実施形態に係るFPGAの詳細を説明するための図。 第四の実施形態に係るLUT部の詳細を説明するための図。 第四の実施形態に係る制御処理のフローチャート。 第五の実施形態に係るFPGAの詳細を説明するための図。 第五の実施形態に係る重複検出部の詳細を説明するための図。 第六の実施形態に係るFPGAの詳細を説明するための図。 第六の実施形態に係るAck生成部の詳細を説明するための図。 第七の実施形態に係るFPGAの詳細を説明するための図。 第七の実施形態に係る制御処理のフローチャート。 第七の実施形態に係るサブプログラムにおける動作のフローチャート。
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施形態では、画像処理装置を例にとって説明するが、これに限定するものではなく、他の情報処理装置であってもよい。
<第一の実施形態>
[画像処理装置の構成]
図1は、第一の実施形態に係る画像処理装置100の構成例を示す図である。画像処理装置100は、ユーザが各種の操作を行うための操作部103、操作部103からの指示に従い画像情報を読み取るスキャナ部109、および、画像データを紙等の印刷媒体に印刷するプリンタ部107を有する。スキャナ部109は、スキャナ部109の全体動作を制御するCPU(不図示)や、原稿読取を行うための照明ランプや走査ミラー(不図示)を有する。プリンタ部107は、プリンタ部107の全体動作を制御するCPU(不図示)や、画像形成や定着を行うための感光体ドラムや定着器(不図示)を有する。
また、画像処理装置100は、CPU101、ROM104、RAM111、およびメモリコントローラ110を備える。CPU101は、画像処理装置100全体の動作を統括的に制御し、画像処理装置100が備える各ユニットを制御するための制御ソフトウェアを実行する。ROM104は、不揮発性の記憶部であり、CPU101が実行するプログラムが格納されている。RAM111は、揮発性の記憶部であり、CPU101が実行するプログラム等を動作させるために利用されるシステムワークメモリとしてや、画像データを一時記憶するための画像メモリとして機能する。メモリコントローラ110は、RAM111と、RAM111への書き込み、読み出し動作を制御する。メモリコントローラ110は、システムバス120および画像バス121に接続され、RAM111へのアクセスを制御する。
画像処理装置100は、再構成可能デバイスとして画像処理回路等を構成するFPGA140を有する。FPGA140は、動的書き換え可能、かつ、部分書き換え可能なものである。すなわち、FPGA140の再構成部の一部に構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に別の回路を再構成することができる。なお、本実施形態では再構成可能デバイス(プログラマブル回路部)としてFPGAを例に説明しているが、FPGA以外の再構成可能デバイスが接続される構成であってもよい。
また、画像処理装置100は、コンフィグコントローラ130、およびコンフィグレーション用ROM150を有する。コンフィグコントローラ130は、CPU101の制御の下、FPGAの回路構成(コンフィグレーション)を制御する。コンフィグレーション用ROM150は、FPGA140に構成するための論理回路構成情報(コンフィグレーションデータ)が格納されている。ここで格納されているコンフィグレーションデータの詳細については図4を用いて後述する。
また、画像処理装置100は、スキャナ部109から画像データが入力されるスキャナI/F108と、プリンタ部107へ画像データを出力するプリンタI/F106とを有する。FPGA140、スキャナI/F108、およびプリンタI/F106は、画像データを転送するための画像バス121に接続される。
画像処理装置100は、ネットワークI/F102を介して、ネットワーク上の汎用コンピュータ(不図示)と通信(送受信)を行う。また、画像処理装置100は、USB I/F114を介して、画像処理装置100に接続された汎用コンピュータ(不図示)と通信(送受信)を行う。また、画像処理装置100は、FAX I/F115を介して公衆回線網と接続し、他の画像処理装置やファクシミリ装置(不図示)と通信(送受信)を行う。画像処理装置100は、ROM I/F112、システムバス120を有する。ROM I/F112は、CPU101が実行するプログラムの、ROM104からの読み出し動作を制御する。システムバス120は、CPU101、ネットワークI/F102、操作部103、ROM I/F112、コンフィグコントローラ130、およびFPGA140を相互に接続する。CPU101は、FPGA140、スキャナI/F108、およびプリンタI/F106のパラメータ設定を、システムバス120を介して行う。
[部分再構成に関する構成]
次に、図2を用いて、本実施形態における部分再構成に関する構成について説明する。CPU101、コンフィグコントローラ130、コンフィグレーション用ROM150、FPGA140、メモリコントローラ110、およびROM I/F112については、図1を用いて前述した通りである。
FPGA140は、内部に、部分再構成部200(PR0)、部分再構成部201(PR1)、部分再構成部202(PR2)、および部分再構成部203(PR3)を備える。この各部分再構成部に論理回路が構成され、本実施例では1つの部分再構成部には複数の論理回路のうちのいずれもが構成可能となっている。各部分再構成部は動的に画像処理回路等を書き換えることが可能である。なお、部分再構成部を以後「PR」とも呼ぶ。なお、本実施形態においては部分再構成部の数を4つとしたが、この構成に限定するものではなく、増減しても構わない。
本実施形態において、各PRに構成される機能の種類を図3に示す。本実施形態においては、画像処理または圧縮伸長機能を持つ回路をPRに構成する例について説明をしているが、これに限定するものではなく、それら以外の回路をPRに構成してもよい。図3では、画像処理装置100がジョブを実行する際にFPGA140上に構成される機能との関係の一例を示している。以下、図3に挙げたジョブ種ごとにその動作の概要と構成される回路について説明する。以下の動作は、CPU101が実行するプログラムにより制御される。
(コピージョブ)
コピージョブでは、スキャナ部109で原稿が読みとられることによって生成された画像データに対し、PR0〜PR3のいずれかに構成された読取用画像処理機能302を備える回路により画像処理が行われ、RAM111の所定の領域にバッファする。RAM111にバッファされた画像データは、次に、PR0〜PR3のいずれかに構成されたプリント用画像処理機能303を備える回路によって画像処理が行われる。その後、画像処理が行われた画像データは、プリンタ部107へプリンタI/F106を介して転送される。
読取用画像処理機能302は、像域分離処理部、色空間変換処理部、フィルタ処理部、および下地除去処理部などから構成される。像域分離処理部は、入力画像から文字部を検出することにより像域を判定し、その後の画像処理に利用する像域信号を生成する。テーブル変換処理部は、テーブル変換により、読み取った画像データの輝度データを濃度データに変換する。フィルタ処理部は、例えばエッジ強調などの目的に従ったデジタル空間フィルタで演算を行う。下地除去処理部は、背景に薄い色がある原稿を読み取った画像データが送られてきた場合に背景色を除去する。
プリント用画像処理機能303は、色空間変換処理部、補正処理部、および誤差拡散処理部などから構成される。色空間変換処理部は、RGBデータを画像処理装置の出力特性に合わせてCMYK変換を行う。補正処理部は、画像データの濃度変換を行う。誤差拡散処理部は、入力画像データを所定の閾値と比較することによりN値化を行い、その際の入力画像データと閾値との差分を、以降にN値化処理の対象となる周囲画素に対して拡散することでハーフトーン処理を行う。
(プリントジョブ)
プリントジョブでは、ホストコンピュータ等からネットワークを介して送信されたPDLデータをネットワークI/F102を介して受信し、一時的にRAM111の所定の領域にバッファする。CPU101は、バッファされたPDL(Page Description Language)データを解析して描画コマンド群を生成し、RAM111の所定の領域にバッファする。バッファされた描画コマンド群は、PR0〜PR3のいずれかに構成されたRIP(Raster Image Processor)処理機能318を備える回路によってRIP処理が行われ、RAM111の所定の領域に画像データが描画される。描画された画像データは、PR0〜PR3のいずれかに構成されたプリント用画像処理機能303を有する回路により画像処理が行われ、その後、プリンタ部107へプリンタI/F106を介して転送される。
(FAXジョブ)
FAXジョブでは、FAX I/F115を介して外部公衆回線網から送信されたFAXデータを受信し、RAM111の所定領域にバッファする。受信されたFAXデータからは、そのヘッダ情報を元にJBIG(Joint Bi−level Image Experts Group)の圧縮データが抽出される。そして、圧縮データに対し、PR0〜PR3のいずれかに構成されたJBIG伸長処理機能322を備える回路によりJBIG伸長処理が行われる。その後、復元されたFAX画像データは、RAM111の所定領域にバッファされる。バッファされたFAX画像データは、PR0〜PR3のいずれかに構成されたFAX用画像処理機能306を備える回路によりFAX用画像処理が行われ、HDD117の所定領域に格納される。FAX用画像処理機能306は、スムージング処理、ファクシミリ規格の解像度から画像処理装置100の印刷解像度へ解像度変換を行う画像処理等を含む。
(SENDジョブ)
SENDジョブでは、スキャナ部109で原稿が読みとられることによって生成された画像データに対し、PR0〜PR3のいずれかに構成された読取用画像処理機能302を備える回路によって画像処理が行われ、RAM111の所定の領域にバッファする。次に、ネットワークI/F102を介して外部の汎用コンピュータ(不図示)へ効率よく画像データを送信するために、画像データに対し、部分再構成部200〜203のいずれかに構成されたJPEG圧縮機能を備える回路によりJPEG圧縮処理が行われる。その後、圧縮されたデータは、ネットワークI/F102を介して外部の汎用コンピュータ(不図示)へ送信される。
以上、ジョブと機能との関係を説明した。本実施形態では各ジョブに対して2つの機能を使う例を示しているが勿論これに限定されるものではなく、1のジョブ種に対し3以上の機能が行われてもよい。また、ジョブ実行のために必要な機能の内容についても図3に示すものに限定されるものではない。
本願発明は、PR0〜PR3に任意の機能が構成され、更に、その機能を構成するPRが変わった際の課題と解決手段に関するものである。本実施形態では、FPGA140は4つのPRを備え、PRに構成する機能をA、B、C、D、E、Fの6つの場合を例に説明する。本実施形態では、PRの数を4、機能数を6としているが、機能の内容、数をこれらに限定するものではない。
[コンフィグレーションデータの構成]
図4は、コンフィグレーション用ROM150に格納されるFPGA140の各PR0〜PR3に構成されるコンフィグレーションデータの例である。コンフィグレーション用ROM150には部分再構成に必要な複数個のコンフィグレーションデータが格納される。PR0用のコンフィグレーションデータ400は、PR0に構成することが可能なコンフィグレーションデータを表す。コンフィグレーションデータ401は、PR0に機能Aの回路を構成するためのデータである。同様に、コンフィグレーションデータ402〜406それぞれは、PR0に機能B〜Fの回路構成を構成するためのデータを表す。
PR1用のコンフィグレーションデータ410は、PR1に構成することが可能なコンフィグレーションデータを表す。PR1用のコンフィグレーションデータ410についても、機能A、B、C、D、E、Fの6つの機能のコンフィグレーションデータを格納しており、部分再構成部(PR1)202には6つの機能を切り替えて構成することが可能である。
PR2用のコンフィグレーションデータ420は、PR2に構成することが可能なコンフィグレーションデータを表す。PR2用のコンフィグレーションデータ420についても、機能A、B、C、D、E、Fの6つの機能のコンフィグレーションデータを格納しており、部分再構成部(PR2)203には6つの機能を切り替えて構成することが可能である。
PR3用のコンフィグレーションデータ430は、PR3に構成することが可能なコンフィグレーションデータを表す。PR3用のコンフィグレーションデータ430についても、機能A、B、C、D、E、Fの6つの機能のコンフィグレーションデータを格納しており、PR3には6つの機能を切り替えて構成することが可能である。
上述したように、PRごとに各機能に対応したコンフィグレーションデータを用意する必要がある。例えば、機能Aの回路構成をPR0に構成する場合はPR0用機能Aのコンフィグレーションデータ401を用い、機能Aの回路構成をPR1に構成する場合はPR1用機能Bのコンフィグレーションデータ402を用いる。このように、同じ機能を実現する場合においても、構成場所(部分再構成部)それぞれに応じて異なるコンフィグレーションデータを用意しておく必要がある。
図5は、CPU101がシステムバス120に接続された各I/FやFPGA140などのブロックにアクセスする際の各ブロックとアクセスアドレスとの関係を示すアドレスマップの一例である。図5(a)は画像処理装置100全体を示す。図5(b)は、特にFPGA140に構成される画像処理回路のレジスタ空間の詳細を示す。FPGA140に構成される可能性のある機能A〜Fの6つに対し、例えば図5(b)に示すレジスタ空間のように、「0x8000_0000」から4Kバイトずつマッピングされている。なお、レジスタ空間を示す値に付与されている「0x」は本値が16進数表現であることを意味する。
上述したように、従来、各PRは固有のレジスタ空間が対応付けられているのに対し、各PRを制御するプログラムは回路の機能(アクセスすべき論理回路の種類)によりレジスタ空間が決まっていた。そのため、機能がロケーションフリーに複数のPRのうちのいずれかに再構成されることにより、PRに割り当てられるレジスタ空間とプログラムの認識するレジスタ空間とが合わなくなるという課題があった。本実施例を含む以下の複数の実施例は、この課題を解決する。
[FPGAの構成]
図6(a)は、本実施形態に係るFPGA140の詳細を説明するための図である。ここでは一例として、PR0に機能E、PR1に機能F、PR2に機能A、PR3に機能Bがコンフィグレーションデータにより構成されているものとする。これらの関係は再構成が行われるたびに動的に変わるものであり、この構成に限定されるものではない。図6(a)では、前述のように構成されたFPGA140においてCPU101が各PRへシステムバス120を介してアクセスする際のアドレスのデコード方法について説明している。従って、画像バス121とのインターフェース、コンフィグコントローラ130、コンフィグレーション用ROM150とのインターフェース、およびそれらに関する回路部は図6から省略している。
CPU101は、レジスタに対するアクセスコマンドを発行する。アクセスコマンドとは、FPGA140内の特定のレジスタへデータをライトするライトコマンド、および、FPGA140内の特定のレジスタへデータをリードするリードコマンドが挙げられる。システムバス120は、CPU101から出力されるAddr[31:0]、Write信号、Read信号、FPGA140から返されるAck信号、双方向のData[31:0]信号を含む通信を行う。Write信号は、ライトコマンドの発生を示し、Read信号はリードコマンドの発生を示す。Ack信号は、Addr[31:0]によりアクセス先として指定されたブロックがライトコマンドまたはリードコマンドを受信したことをCPU101に知らせるアクノリッジ信号である。例えば、ライトコマンドは、CPU101がAddr[31:0]信号とData[31:0]信号を出力しながらWrite信号を有効にすることにより開始し、Ack信号の応答により終了する。また、リードコマンドは、CPU101がAddr[31:0]信号を出力しながらRead信号を有効にすることにより開始し、Ack信号の応答時にData[31:0]をCPU101が取得することにより終了する。詳細はタイミングチャートを用いて後述する。
FPGA140は、前述の4つのPR0〜PR3以外にデコーダ601とOR622をさらに含む。デコーダ601およびOR622は電源がオンとなった際にコンフィグコントローラ130により回路が構成され、以後は再構成が行われないスタティック領域に属する。また、FPGA140内の各ブロックを接続する配線もスタティック領域に属する。
デコーダ601は、一致検出回路610、611、612、および613を含んで構成されるアドレスデコーダである。一致検出回路610は、システムバス120の上位20ビット(Addr[31:12])と部分再構成部200から出力されるPR0_Base信号(20ビット)とを比較する。そして、一致検出回路610は、これらが一致した場合にセレクト信号Select0をPR0(部分再構成部200)へ出力する論理回路である。各部分再構成部から出力されるBase信号の値は、図6(b)に示すとおりである。
一致検出回路610の詳細を図7に示す。一致検出回路610に入力されるAddr[31:12]とPR0_Baseは、それらの対応するビット同士がXORゲート(排他的論理素子)により比較される。ここでは、信号は20ビットであるため、XORゲートも20個用意される。排他的論理素子701は各ビットの値が等しい場合に「0」を出力する。各出力は負論理入力のANDゲート702の入力であるので、その全入力が「0」の場合、即ちAddr[31:12]とPR0_Baseの値が一致した場合に、一致検出回路610はSelect0として「1」を出力する。他の一致検出回路611、612、613も同一の論理回路であるため説明は省略する。
PR0(部分再構成部200)の内部構成を図8(a)に示す。PR0は、PR0_Base出力部810、有限ステートマシン(FSM)803、レジスタ群804、および画像処理回路805を含む。本実施形態において、これらの回路および配線情報は全てPR0用機能Eのコンフィグレーションデータ405に含まれている。
PR0_Base出力部810は回路素子を持たず、PR0_Base信号を構成する20本の各信号線を電源801またはグランド802へ接続することにより、図8(b)を用いて後述する所定の値をPR0_Base信号として常時出力する。なお、PR0_Base信号の出力を持つためのPR0_Base出力部810を構成することにより必要となる回路リソースは軽微である。ここでPR0_Base信号は、自身が属するPRのレジスタ空間のベースアドレスを示す。図5(b)のアドレスマップで示されているように、PR0に構成された機能Eに対応するレジスタアクセス空間は0x8000_4000〜0x8000_4FFFの空間である。そのため、PR0_Base信号は、ベースアドレス0x8000_4000の上位20ビット、即ち、「0x80004」となる。なお、他の機能がPR0に構成された場合のPR0_Base信号もその機能に応じた値となる。PR0に構成される機能と、各機能が構成された際に出力されるPR0_Baseの値と関係を図8(b)の表に示す。
PR1、PR2、PR3についても同様である。例えば、図6(a)のPR1_Base、PR2_Base、PR3_Baseは、各PRに構成されている機能F、機能A、機能Bのベースアドレスを示すため、それぞれ、0x80005、0x80000、0x80001となる。まとめると図6(b)の表となる。デコーダ601は、システムバス120のAddr[31:12]がPR0_Base〜PR3_Baseの何れかと一致した場合に、対応するPRへセレクト信号(Select0〜Select3)を出力する。その結果、各機能のレジスタ空間は、図6(a)に示すアドレスマップ630となる。つまり、FPGA140に構成された機能E、F、A、Bのレジスタ空間は、図5(b)と一致する。
図8の説明に戻る。FSM803は、Select0が有効(「1」)、かつ、Write信号またはRead信号のアサートを受けた場合に、レジスタ群804へライトまたはリードを指示するとともに、Ack0信号の返信制御を行う有限ステートマシンである。レジスタ群804は、FSM803からライト指示を受けた場合に、信号群620のAddr[11:0](12ビット)により特定されるレジスタにData[31:0]信号の32ビットの値をセットする。また、レジスタ群804は、FSM803からリード指示を受けた場合に、信号群620のAddr[11:0](12ビット)により特定されるレジスタの値をData[31:0]信号にて出力する。
画像処理回路805は、レジスタ群804内のレジスタにセットされた値により動作が制御される画像処理回路である。例えば、画像処理回路805において、機能EとしてJPEG圧縮処理機能が構成されている場合、レジスタ群804は、以下のレジスタを含む。即ち、元データの格納アドレスを示す入力アドレスレジスタ、圧縮データ出力先アドレスを示す出力アドレスレジスタ、画像サイズを示す幅レジスタ、高さレジスタ、任意のデータをライトすることにより処理を開始させる起動レジスタである。CPU101は、入力アドレスレジスタ、出力アドレスレジスタ、幅レジスタ、高さレジスタをセットした後に起動レジスタに任意のデータをライトする。画像処理回路805は、RAM111内の入力アドレスレジスタが示すアドレスから画像バス(不図示)を介して画像データを読み取り、圧縮処理を施して、RAM111内の出力レジスタが示すアドレスへ圧縮後のデータを格納する。
PR1、PR2、PR3についても、構成された機能が異なる点と、それにより出力するPR1_Base、PR2_Base、PR3_Baseの値が図8(b)の表に示すように変わる点以外は同様である。
[タイミングチャート]
図9は、CPU101が、PR0に対してライトコマンドとリードコマンドを発行した場合の動作を表すタイミングチャートである。以下、タイミングチャートに沿って時系列にFPGA140内の動作を説明する。
時刻T0から時刻T2まではWrite信号、Read信号共にアクティブでは無い、即ちアイドルサイクルである。時刻T2において、CPU101は、Write信号をアサートし、ライトコマンドのサイクルを開始する。同時に、CPU101は、Addr[31:0]にアクセス先を示すアドレスを出力する。上述したように、CPU101は、機能ごとに固定されたアクセス先を認識しており、ここでは機能Eに対応するアドレス空間のアドレスが指定される。ここでは例えば、Addr[31:0]=0x8000_4014とする。出力されたAddr[31:0]の上位20ビット(Addr[31:12])は、デコーダ601内の一致検出回路610、611、612、613のそれぞれに入力される。そして、入力された各Addrは、PR0、PR1、PR2、PR3から各一致検出回路に入力されるPR0_Base、PR1_Base、PR2_Base、PR3_Baseとそれぞれ比較される。つまり、デコーダ601内の一致検出回路610、611、612、613には、アドレスを特定するために、同じ値(Addr[31:0]の上位20ビット)が入力される。ここで4つのPR0〜PR3のレジスタ空間はそれぞれ排他的なので複数の一致検出回路が一致を検出することは無く、1つの一致検出回路のみが一致を検出する。ここでは、Addr[31:12]とPR0_Baseが一致するので一致検出回路610のみがSelect0(「1」)を出力する。
時刻T3でFSM803は、Write信号がアサートされ、かつ、Select0が有効(「1」)であることから、部分再構成部200へのライトアクセスを認識し、Ack0を出力する。Ack0はさらに、OR622を介してシステムバス120のAck信号としてCPU101へ出力される。同じく時刻T3でFSM803は、レジスタ群804へライトコマンド受信を通知する。
レジスタ群804は、前述のライトコマンドの通知を受け付け、時刻T4でAddr[11:0]で特定されたレジスタ群804内のレジスタにData[31:0]の値がセットされる。またCPU101は、時刻T4でAck信号を検出し、Write信号をディアサートし、ライトコマンドの終了を示す。時刻T5でFSM803は、Write信号のディアサートを検知し、Ack0をディアサートする。以上でシステムバス120はアイドル状態へ戻る。
時刻T8からはリードコマンドのサイクルを示す。時刻T8においてCPU101は、Read信号をアサートし、リードコマンドのサイクルを開始する。時刻T9でFSM803は、Readがアサートされて、かつ、Select0が有効(「1」)であることから、PR0へのリードアクセスを認識し、Ack0を出力する。Ack0はさらに、OR622を介してシステムバス120のAck信号としてCPU101へ出力される。同じく時刻T9でFSM803は、レジスタ群804へライトコマンド受信を通知する。
レジスタ群804は、前述のリードコマンドの通知を受け付け、時刻T9でAddr[11:0]で特定されたレジスタ群804内のレジスタの値をData[31:0]にて出力する。またCPU101は、時刻T10でAck信号を検出し、Read信号をディアサートし、リードコマンドの終了を示す。時刻T11でFSM803は、Read信号のディアサートを検知し、Ack0をディアサートするとともにData[31:0]としてのレジスタ値の出力を停止する。以上により、システムバス120はアイドル状態へ戻る。
[処理フロー]
図10は、本実施形態に係る画像処理装置100のジョブ実行処理制御を表すフローチャートである。なお、図10のフローチャートはCPU101により実行される。
S1001にて、CPU101は、画像処理装置100が各種ジョブ(コピージョブ、プリントジョブ、FAXジョブ、SENDジョブ等)を受信したか否かを判定する。画像処理装置100がジョブを受信した場合(S1001にてYES)、S1002へ進む。
S1002にて、CPU101は、受信したジョブを実行するにあたり、FPGA140に構成する必要がある機能を特定する。ここでの機能の特定方法は、例えば、図3の表を参照して特定することができる。S1003にて、CPU101は、必要な機能を備える回路をPR0〜PR3のいずれに構成するかを決定する。
S1004にて、CPU101は、S1003で決定された再構成するPRに基づいて、コンフィグレーション用ROM150に格納されたコンフィグレーションデータの中からPRにロードするコンフィグレーションデータを特定する。例えば、図4の例において、機能Eの回路をPR4に再構成する場合、PR4用機能Eのコンフィグレーションデータであるコンフィグレーションデータ435が、ロードするコンフィグレーションデータとして決定される。ここでコンフィグレーションデータ435は、機能Eに対応するレジスタ空間上のアドレス0x80004を出力するPR0_Base出力部810の回路情報を含む。
S1005にて、CPU101は、コンフィグコントローラ130を用いてPRを再構成する。例えば、PR4に機能Eのコンフィグレーションデータ435をロードすることによって、PR4が機能Eを備える回路として再構成される。更には、本実施形態では、PR0_Base出力部810の回路も構成されることとなる。
S1006にて、CPU101は、ジョブ実行に必要な機能を再構成したPRを用いて実行する。本ステップは、処理のための各種レジスタ設定、起動のためのレジスタアクセス、処理終了待ち動作等も含む。
以上で1つの機能による処理が終了する。S1007にて、CPU101は、終了した処理が受け付けたジョブに対する最後の処理か否かを判定する。最後の処理で無ければ(S1007にてNO)S1003に戻り、次の機能を実行する。最後の処理であれば(S1007にてYES)、本処理フローを終了する。
以上、任意の機能がどのPRに構成された場合であっても、そのPRが割り当てられるレジスタ空間とプログラムの認識するレジスタ空間が一致するシステムを提供することができる。その結果、部分再構成部を有する回路を含む装置であっても、適切にレジスタ空間にアクセスすることができる。
<第二の実施形態>
第一の実施形態では、各PR(部分再構成部200〜203)は、自身のレジスタ空間を示す情報として20ビットのベースアドレスを出力した。しかし、各PRからは機能を識別するために必要なビット数のみを出力し、デコーダ601内で20ビットのベースアドレスに変換した方がFPGA140の配線リソース(Base出力部の構成)を節約できる。本実施形態では、この構成について説明する。
図11(a)は、本実施形態に係るFPGA140の詳細を説明するための図である。第一の実施形態と同様、PR0に機能E、PR1に機能F、PR2に機能A、PR3に機能Bのコンフィグレーションデータがロードされ、論理回路が構成されている。
第一の実施形態の図6(a)との差分は、各PRが自身の機能を示す識別する識別信号を出力する点である。例えば、PR0は、機能Eが構成されているため、機能Eを示すFuncE_IDを出力する。各部分再構成部が構成できる機能は6種類(機能A〜F)であるため、各機能を一意に識別するための識別信号は3ビットで表現可能である。例えば、図11(b)に示すように機能と識別信号の値を割り当てることができる。なお、再構成可能な機能数に応じて、識別信号を表現するためのビット数は増減する。各識別信号は組合せ回路1100、1101、1102、1103へ入力され、各組み合せ回路がそれぞれ、PR0_Base、PR1_Base、PR2_Base、PR3_Baseを出力する。
第一の実施形態では、各コンフィグレーションデータは、機能に対応するレジスタ空間上のアドレスを出力するためのBase出力部の回路情報を含んでいた。これに対し、本実施形態では、機能を識別するための識別信号を出力するための部位の回路情報が含まれることとなる。
図12(a)は、組合せ回路1100の入出力を示す。また、図12(b)は組合せ回路の真理値表を示し、例えばコンフィグレーション用ROM150等に保持されているものとする。図12(b)に示す入出力論理により、PR0に構成された機能の種類に応じて対応するレジスタ空間のベースアドレスを出力する。真理値表に示す論理を実現する組合せ回路の作成は従来の手法を利用するものとし、組合せ回路の詳細な説明は省略する。組合せ回路1101、1102、1103についても組合せ回路1100と同一の論理構成を有する回路であるので説明を省略する。
以上により、第一の実施形態の効果に加え、第一の実施形態に比べてFPGA140の配線リソースを節約することができる。
<第三の実施形態>
第三の実施形態は、各PRのレジスタ空間をCPU101から設定可能な形態である。そのため、本実施形態では、一致検出回路610〜613へ入力する各PRのベースアドレスはCPU101が設定可能なレジスタとしてFPGA140内に備える。
図13は、本実施形態に係るFPGA140の詳細を説明するための図である。FPGA140以外の構成は第一の実施形態と同様であるため、説明を省略する。第一の実施形態のFPGA(図6)との差分は、各PR(1300〜1303)がそのレジスタ空間を示すベースアドレスを出力するのではなくベースアドレス保持部1310が出力する点である。従って、本実施形態では、各機能のコンフィグレーションデータは、レジスタ空間に関する情報(例えばベースアドレス)を出力するための回路情報を含む必要はない。
本実施形態に係るデコーダ601は、特定値検出回路1320を備える。特定値検出回路1320は、CPU101がベースアドレス保持部1310にアクセスするために、システムバス120を介して受信したAddr[31:12]が特定値の場合に、Select信号をベースアドレス保持部1310へ出力する。ここでの特定値は、例えば「0x80008」とする。この構成により、アドレスマップ1330に示すように、ベースアドレス保持部1310は、0x8000_8000から4Kバイトの領域内に割り当てられる。即ち、CPU101が0x8000_8000から4Kバイト分の領域にアクセスした場合、ベースアドレス保持部1310が選択される。なお、ベースアドレス保持部1310は、デコーダ601と同様、電源がオンとなった際にコンフィグコントローラ130により回路が構成され、以後は再構成が行われないスタティック領域に属する。
図14は、本実施形態に係るベースアドレス保持部1310の詳細を説明するための図である。ベースアドレス保持部1310は、FSM1403、およびレジスタ群1404を含む。FSM1403は、Select入力が有効な状態で、かつ、Write信号またはRead信号のアサートを受けた場合、レジスタ群1404へライトまたはリードを指示するとともにAck信号の返信制御を行う。タイミングは図9に示したタイミングチャートと同様である。
レジスタ群1404は、Reg0、Reg1、Reg2、およびReg3を含む。レジスタ群1404は、FSM1403からライト指示を受けた場合、信号群620のAddr[11:0]により特定されるReg0からReg3の何れかのレジスタにData[19:0]をセットする。また、レジスタ群1404は、FSM1403からリード指示を受けた場合に、信号群620のAddr[11:0]により特定されるReg0からReg3の何れかのレジスタの値をData[19:0]信号にて出力する。Reg0、Reg1、Reg2、Reg3はそれぞれ、PR0、PR1、PR2、PR3のレジスタ空間のベースアドレスを示す。また、Reg0、Reg1、Reg2、Reg3はそれぞれ、一致検出回路610、611、612、613へ接続される。
[処理フロー]
図15は、本実施形態に係る画像処理装置100のジョブ実行処理制御を表すフローチャートである。図15のフローチャートは、CPU101により実行される。第一の実施形態との差分として、第三の実施形態は、CPU101がベースアドレス保持部1310への設定を行う点である。図15のフローチャートにおいてはS1501に相当する。なお、第一の実施形態にて述べた図10の処理と同じ処理については、同じ参照番号を付す。
差分に着目してフローチャート全体を説明する。CPU101は、ジョブを受信すると(S1001にてYES)、ジョブに必要な機能を特定し(S1002)、機能を実現するPRを決定し(S1003)、構成するコンフィグレーションデータを決定する(S1004)。なお、本実施形態において、コンフィグレーションデータは、機能に対応するレジスタ空間の情報(もしくは機能の識別情報)を出力するための回路情報を含む必要は無い。続いて、CPU101は、コンフィグレーションデータをPRへロードすることにより機能を再構成する(S1008)。
更に、S1501にて、CPU101は、機能に対応するレジスタ空間のベースアドレスをレジスタ群1404の対応するレジスタへセットする。本工程により、再構成された機能のレジスタ空間が図13のアドレスマップ1330に示す場所に割り当てられる。図13の例の場合、具体的には、Reg0、Reg1、Reg2、Reg3にはそれぞれ、0x80004、0x80005、0x80000、0x80001がセットされる。
S1006、S1007は第一の実施形態と同じであるので説明を省略する。
以上、本実施形態においても、第一の実施形態と同様の効果を得ることができる。
<第四の実施形態>
第四の実施形態は、第三の実施形態と同様、CPU101により各PRのレジスタ空間をセットする形態である。本実施形態では、レジスタ空間の割り当てのために、ルックアップテーブル(LUT)を用いる。なお、本実施形態において、第三の実施形態と同様、コンフィグレーションデータは、機能に対応するレジスタ空間の情報(もしくは機能の識別情報)を出力するための回路情報を含む必要は無い。
図16は、本実施形態に係るFPGA140の詳細を説明するための図である。FPGA140以外の構成は第一の実施形態と同様なので説明を省略する。図16においてデコーダ1600は、LUT部1610、および特定値検出回路1620を有する。LUT部1610は、Addr[31:12]を入力とし、4ビットのセレクト信号Select[3:0]を出力とする。特定値検出回路1620は、LUT部1610の出力論理を設定するためのアクセスを検出する。例えば、LUT部1610の出力論理の設定を0x8000_8000から1Kバイト分の空間内で行う場合、特定値検出回路1620は入力されるAddr[31:12]が0x80008の場合に「1」を出力する論理回路を構成すれば良い。
図17(a)は、本実施形態に係るLUT部1610の詳細を説明するための図である。SRAM1705は、20ビットのアドレス入力に応じて4ビットのデータをSelect[3:0]として出力するSRAMであり、LUT機能を実現する。ここで出力される4ビットのSelect信号により、いずれの機能が選択されているかを示す。FSM1703は、特定値検出回路1620が出力するSelect信号が有効(「1」)、かつ、Write信号またはRead信号のアサートを受けた場合に、レジスタ群1710にライトまたはリードの指示を伝えるとともに、Ack信号の返信制御を行う。
レジスタ群1710は、LUTの出力論理を設定するモードを示す1ビットのSRAM設定モードレジスタ1711と、SRAM設定モード時にSRAMのライトアドレスを示す20ビットのSRAMアドレスレジスタ1712を含む。それらは例えば、図17(b)のアドレスマップに示すようにLUT設定空間内に配置される。さらにレジスタ群1710は、CPU101が同設定空間に配置されるSRAMポートアドレスにライトアクセスを行った場合に、ライトイネーブル信号weを生成するwe信号生成部1713を有する。以上の構成により、CPU101は、SRAM1705の任意のアドレスに任意のデータを設定することが可能となる。
[SRAM設定処理]
SRAM設定処理の手順を、図17(c)のフローチャートを用いて説明する。図17(c)のフローチャートは、CPU101により実行される。
S1701にて、CPU101は、SRAM設定モードレジスタ1711に「1」をセットする。更に、CPU101は、セレクタ1706にSRAMアドレスレジスタ1712の値をSRAM1705の入力として選択させる。
S1702にて、CPU101は、SRAMアドレスレジスタ1712に、設定したいSRAM1705のアドレスをセットする。
S1703にて、CPU101は、SRAMデータポートアドレスに、設定したいデータをライトする。これにより、we信号生成部1713は、ライト信号のパルスを発生させる。その際、SRAM1705のD入力へはData[3:0]の4ビットが入力されるため、S1702でセットしたSRAM1705のアドレスにそのデータが書き込まれる。
S1704にて、CPU101は、続けて他のデータをSRAM1705へライトするか否かを判定する。他のデータをライトする場合は(S1704にてYES)S1702へ戻り、他のデータをライトしない場合は(S1704にてNO)S1705へ進む。
S1705にて、CPU101は、SRAM設定モードレジスタ1711をクリアする。更に、CPU101は、PR0〜PR3をセレクトするためのデコード機能を有効にする。そして、本処理フローを終了する。
図17(d)は、PR0〜PR3において機能E、機能F、機能A、機能Bが構成されている場合のSRAM1705へ設定すべき値を示す。図17(d)の4ビットにおいて、下位ビットから順に、PR0、PR1、PR2、PR3に対応している。例えば、「0100」の場合PR2がセレクトされることを示す。
[処理フロー]
図18は、本実施形態に係る画像処理装置100のジョブ実行処理制御を表すフローチャートである。図18のフローチャートは、CPU101により実行される。
第三の実施形態では、図15のS1501でCPU101がベースアドレス保持部1310への設定を行うのに対し、第四の実施形態では図18のS1801でLUT部1610の設定を行う点が差異となる。図18のS1801におけるLUT部1610への設定処理は、図17(c)で示した手順で行われる。
以上、本実施形態に係る構成においても第三の実施形態と同様の効果を得ることができ、さら、第三の実施形態に比べデコーダにおける処理負荷を抑えることができる。
<第五の実施形態>
第五の実施形態は、コンフィグレーションデータの誤りまたはレジスタ空間の誤設定を検出する手段を備える実施形態である。例えば、第一の実施形態の図6においてPR0に構成された機能Eのコンフィグレーションデータに誤りが有り、PR0_Baseとして「0x80004」ではなく「0x80005」が出力されたとする。その場合、部分再構成部201に構成された機能FのPR1_Baseと重複する。その結果、CPU101が機能Fのレジスタ空間にアクセスした場合にSelect0とSelect1が共にアサートされシステムがハングアップする恐れがある。そのようなエラーが発生した場合、原因の特定が難しいのでコンフィグレーションデータの誤り、または、レジスタ空間の誤設定を検出できることが望ましい。本実施形態ではこの課題を解決する。
図19は、本実施形態に係るFPGA140の詳細を説明するための図である。FPGA140以外の構成は第一の実施形態と同様なので説明を省略する。図19において、第一の実施形態(図6(a))との差分は、FPGA140が重複検出部1901を備える点である。重複検出部1901は、各PRから出力されるPR0_Base、PR1_Base、PR2_Base、PR3_Baseを入力として、これらの信号において同じ値がある場合には、Error信号を出力する。Error信号は、割込み検出回路(不図示)を介してCPU101へ通知される。なお、重複検出部1901は、デコーダ601と同様、電源がオンとなった際にコンフィグコントローラ130により回路が構成され、以後は再構成が行われないスタティック領域に属する。
本実施形態において、第一の実施形態と同様、コンフィグレーションデータは、機能に対応するレジスタ空間上のアドレスを出力するBase出力部の回路情報を含む。もしくは、第二の実施形態と同様、識別情報を出力する回路情報を含むようにしてもよい。
図20は、本実施形態に係る重複検出部1901の詳細を説明するための図である。図20において、一致検出回路2001〜2006は、図7に示した一致検出回路610と同一の論理構成を有する回路である。一致検出回路2001〜2006は、PR0_Base、PR1_Base、PR2_Base、PR3_Baseの中いずれかの2組が等しい場合にいずれかの一致検出回路が「1」を出力するように構成されている。一致検出回路2001〜2006の出力は、OR2010により論理和が求められ、Error信号として出力される。つまり、一致検出回路2001〜2006およびOR2010により、PR0_Base、PR1_Base、PR2_Base、PR3_Baseの中いずれかが等しい場合、Error信号が出力される。
Error信号が出力された場合、例えば、CPU101は、部分再構成部を再構成するように制御しても良い。また、本実施形態では、重複の検出を行うのみであるが、例えば、どの部分再構成部間で重複が発生したかを検出するような構成であってもよい。
本実施形態により、コンフィグレーションデータの誤り、または、レジスタ空間の誤設定を検出可能となる。
<第六の実施形態>
第六の実施形態は、CPU101が、各PRのいずれにも構成されていない機能に対応するレジスタ空間へアクセスしたとしても、Ack信号が返送される手段を備える実施形態である。例えば、第一の実施形態の図6において、機能Cのレジスタ空間に含まれるアドレス0x80002000にCPU101がアクセスした場合、何れのPRにもアクセスが発生しないため、Ack信号がCPU101へ返らずシステムがハングアップする。そのようなエラーの場合、原因の特定が難しいため、CPU101がPR0〜PR3のいずれにも構成されていない機能に対応するレジスタ空間へアクセスしてもAck信号を返送されることが望ましい。本実施形態では、この課題を解決する。
なお、本実施形態において、第一の実施形態と同様、コンフィグレーションデータは、機能に対応するレジスタ空間上のアドレスを出力するBase出力部の回路情報を含む。もしくは、第二の実施形態と同様、識別情報を出力する回路情報を含むようにしてもよい。
図21は、第六の実施形態に係るFPGA140の詳細を説明するための図である。FPGA140以外の構成は第一の実施形態と同様なので説明を省略する。図21において第一の実施形態との差分は、FPGA140が疑似Ack生成部2101を備える点である。疑似Ack生成部2101は、一致検出回路610、611、612、613が出力するSelect信号、Addr[31:12]、および信号群620を入力として、疑似Ack信号を生成する。Ack生成部210で生成された疑似Ack信号は、OR622で論理和が求められ、CPU101へ通知される。
図22は、疑似Ack生成部2101の詳細を説明するための図である。図22において、論理回路2201は、Addr[31:12]が0x80000〜0x80006の範囲に含まれる場合に「1」を出力する論理回路である。AND素子2202は、Select0〜Select3の全信号がアサートされておらず、かつ、論理回路2201が「1」を出力した場合に、「1」を出力する。即ち、AND素子2202の出力は、CPU101がアドレスマップ630のReserved領域にアクセスした場合に「1」となる。FSM2203は、AND素子2202の出力が「1」であり、かつ、信号群620のWrite信号またはRead信号が「1」である場合に疑似Ack信号を出力する。出力タイミングは、第一の実施形態にて述べた図9のタイミングチャートと同様である。
以上、PRに構成されていない機能のアドレス空間へ間違ってアクセスした場合でも、Ack信号が返される。そのため、本実施形態により、間違ったアクセスが生じた場合でもシステムがハングすることを防ぐことができる。
<第七の実施形態>
第一〜第六の実施形態においては、ある機能の論理回路がどのPRに再構成されても、その論理回路を制御するためのレジスタ空間は変わらないようにする手段が施されていた。つまり、第一〜第六の実施形態では、機能ごとに利用可能なレジスタ空間が固定されていた。
第七の実施形態では、ある機能の論理回路が部分再構成されるPRに応じて、そのレジスタ空間を変化させる。従って、プログラムが、そのレジスタ空間の変化に合わせてレジスタアクセスのためのアドレスを変える形態について説明する。
図23は、第七の実施形態に係るFPGA140の詳細を説明する図である。FPGA140以外の構成は第一の実施形態と同様なので説明を省略する。なお、本実施形態では、各機能のコンフィグレーションデータは、レジスタ空間に関する情報を出力するための回路情報を含む必要はない。
第一の実施形態との差分として、第七の実施形態のデコーダ2301では、Addr[31:12]の値により一意にSelect0からSelect3の出力が決定する点である。つまり、Addr[31:12]が0x80000の場合はSelect0を出力する。同様に、Addr[31:12]が0x80001の場合はSelect1を出力し、0x80002の場合はSelect2を出力し、0x8003の場合はSelect3を出力する。つまり、各PRのレジスタ空間は構成される機能によらず、PRごとに利用可能なレジスタ空間が固定されている。言い換えると、同じ機能であっても構成されるPRに依存してその機能を制御するためのレジスタ空間が変更される。
[処理フロー]
図24は、本実施形態に係る画像処理装置100のジョブ実行処理制御を表すフローチャートである。図24のフローチャートは、CPU101により実行される。
ジョブを受信すると(S1001にてYES)、CPU101は、ジョブに必要な機能として例えば機能Aを特定し(S1002)、機能を構成するPRを例えばPR2として決定する(S1003)。さらに、CPU101は、構成するコンフィグレーションデータを決定する(S1004)。この際、機能を再構成するPRに対応するコンフィグレーションデータが決定される。なお、本実施形態において、コンフィグレーションデータは、機能に対応するレジスタ空間の情報を出力する回路情報を含む必要は無い。
続いて、S2401にて、CPU101は、対象としているPRに関連付けられているベースアドレスを取得する。例えば、機能を実現するPRがPR2である場合、ベースアドレスは、PR2に対応する「0x8000_2000」となる。本実施形態において、基準となるベースアドレスは、PRに応じて予め定義されているものとする。
S2402にて、CPU101は、ベースアドレスを引数としてサブプログラムAを実行する。サブプログラムAは、機能Aが構成されたPRの制御レジスタにアクセスすることにより、既定の処理を実行させる制御プログラムである。サブプログラムAについても、CPU101により実行される。
S2402におけるサブプログラムAの処理フローを図25(a)に示す。ここで、機能Aの論理回路は、例えばJPEG圧縮処理であるとする。この場合、機能Aの論理回路に関し、例えば以下のレジスタを含む。即ち、入力データの格納アドレスを示す入力アドレスレジスタ、圧縮データ出力先アドレスを示す出力アドレスレジスタ、画像サイズを示す幅レジスタ、高さレジスタ、任意のデータをライトすることにより処理を開始させる起動レジスタである。サブプログラムAは、これらのレジスタのアドレスをベースアドレスからのオフセットとして認識している。ベースアドレスは、上位プログラム(ここでは、図24に示すフローチャートのプログラム)によって指定されるため、このベースアドレスとオフセットの値を用いることで、機能Aが何れのPRに構成されても同じサブプログラムAを使用できる。オフセットの値は予め定義されている。なお、オフセットは、図25(b)の値に限定するものではなく、機能に応じて決定することができる。
S2501にて、CPU101は、引数のベースアドレスを変数FuncA_Baseとして取得する。以降、レジスタの絶対アドレスを求める処理とレジスタにアクセスする処理を組とするステップが続く。
S2502にて、CPU101は、FuncA_Baseと入力アドレスレジスタのオフセット(0x100)とを加算することにより、入力アドレスレジスタの絶対アドレスを計算する。ここで示す例の場合、入力アドレスレジスタの絶対アドレスは、0x8000_2100となる。S2503にて、CPU101は、S2502で得られた絶対アドレスに入力データの格納アドレスをライトする。
S2504にて、CPU101は、FuncA_Baseと出力アドレスレジスタのオフセット(0x200)を加算することにより、出力アドレスレジスタの絶対アドレスを計算する。ここで示す例の場合、出力アドレスレジスタの絶対アドレスは、0x8000_2200となる。S2505にて、CPU101は、S2504で得られた絶対アドレスに圧縮データの出力先アドレスをライトする。
S2506にて、CPU101は、FuncA_Baseと幅レジスタのオフセット(0x300)を加算することにより、幅レジスタの絶対アドレスを計算する。ここで示す例の場合、幅レジスタの絶対アドレスは、0x8000_2300となる。S2507にて、CPU101は、S2506で得られた絶対アドレスに画像幅をライトする。
S2508にて、CPU101は、FuncA_Baseと高さレジスタのオフセット(0x400)を加算することにより、高さレジスタの絶対アドレスを計算する。ここで示す例の場合、高さレジスタの絶対アドレスは、0x8000_2400となる。S2509にて、CPU101は、S2508で得られた絶対アドレスに画像高さをライトする。
S2510にて、CPU101は、FuncA_Baseと起動レジスタのオフセット(0x500)を加算することにより、起動レジスタの絶対アドレスを計算する。ここで示す例の場合、起動レジスタの絶対アドレスは、0x8000_2500となる。S2511にて、S2510で得られた起動アドレスに任意の値をライトする。
S2511にて、CPU101は、圧縮処理の終了を待ち、処理が終了したか否かを判定する。処理が終了した場合(S2512にてYES)CPU101はサブプログラムAを終了し、上位プログラムへリターンする(図24のS1007へ進む)。
S1007は第一の実施形態と同じであるため、説明を省略する。
以上、本実施形態に示す構成においても、第一の実施形態と同様の効果を得ることができる。
101…CPU、110…メモリコントローラ、130…コンフィグコントローラ、140…FPGA、150…コンフィグレーション用ROM、200…部分再構成部

Claims (13)

  1. 機能それぞれに対応するコンフィグレーションデータを用いて、該機能に対応する論理回路の部分再構成が可能な部分再構成部を備えるプログラマブル回路部と、
    前記部分再構成部に構成される論理回路それぞれにて利用される記憶部と、
    アクセスコマンドを受信したことに応じて、アクセス先となる論理回路を制御する制御手段と、
    を備え、
    前記コンフィグレーションデータは、該データに対応する論理回路により利用される前記記憶部におけるアドレス空間を特定するための信号を出力するように前記部分再構成部を構成するための回路情報を含み、
    前記制御手段は、前記アクセスコマンドのアクセス先を示すアドレス空間と、前記回路情報を用いて構成されることにより前記部分再構成部から出力される信号とを比較し、当該アクセスコマンドのアクセス先を示すアドレス空間に一致する信号を出力する部分再構成部に構成された論理回路をアクセス先として制御することを特徴とする情報処理装置。
  2. 機能それぞれに対応するコンフィグレーションデータを用いて、該機能に対応する論理回路の部分再構成が可能な部分再構成部を備えるプログラマブル回路部と、
    前記部分再構成部に構成される論理回路それぞれにて利用される記憶部と、
    アクセスコマンドを受信したことに応じて、アクセス先となる論理回路を制御する制御手段と、を備え、
    前記コンフィグレーションデータは、該データに対応する論理回路を識別するための識別信号を出力するように前記部分再構成部を構成するための回路情報を含み、
    前記制御手段は、前記アクセスコマンドのアクセス先を示すアドレス空間と、前記回路情報を用いて構成されることにより前記部分再構成部から出力される識別信号に対応付けられたアドレス空間とを比較し、当該アクセスコマンドのアクセス先を示すアドレス空間に一致するアドレス空間に対応する論理回路をアクセス先として制御することを特徴とする情報処理装置。
  3. 機能それぞれに対応するコンフィグレーションデータを用いて、該機能に対応する論理回路の部分再構成が可能な部分再構成部を備えるプログラマブル回路部と、
    前記部分再構成部に構成される論理回路それぞれにて利用される記憶部と、
    アクセスコマンドを受信したことに応じて、アクセス先となる論理回路を制御する制御手段と
    前記部分再構成部に再構成可能な論理回路それぞれにより利用される前記記憶部におけるアドレス空間の情報を受け付けて記憶する別の記憶手段と、
    を備え、
    前記制御手段は、前記アクセスコマンドのアクセス先を示すアドレス空間と、前記別の記憶手段にて記憶するアドレス空間とを比較し、当該アクセスコマンドのアクセス先を示すアドレス空間に一致する論理回路をアクセス先として制御することを特徴とする情報処理装置。
  4. 機能それぞれに対応するコンフィグレーションデータを用いて、該機能に対応する論理回路の部分再構成が可能な部分再構成部を備えるプログラマブル回路部と、前記部分再構成部に構成される論理回路それぞれにて利用される記憶部とを備える情報処理装置であって、
    アクセスコマンドを受信したことに応じて、アクセス先となる論理回路を制御する制御手段と
    前記部分再構成部に再構成可能な論理回路それぞれにより利用される前記記憶部におけるアドレス空間の情報を受け付けてLUTとして記憶する記憶手段と、
    を備え、
    前記制御手段は、前記LUTを用いて、前記アクセスコマンドのアクセス先を示すアドレス空間に対応する論理回路を特定し、当該特定した論理回路をアクセス先として制御することを特徴とする情報処理装置。
  5. 前記プログラマブル回路部は複数の部分再構成部を備えることを特徴とする請求項1乃至4のいずれか一項に記載の情報処理装置。
  6. 前記プログラマブル回路部は複数の部分再構成部を備え、
    コンフィグレーションデータに含まれる回路情報を用いて構成されることにより複数の部分再構成部それぞれから出力される前記信号に重複があるか否かを検出する検出手段を更に有することを特徴とする請求項1に記載の情報処理装置。
  7. 前記プログラマブル回路部は複数の部分再構成部を備え、
    コンフィグレーションデータに含まれる回路情報を用いて構成されることにより複数の部分再構成部それぞれから出力される前記識別信号に重複があるか否かを検出する検出手段を更に有することを特徴とする請求項2に記載の情報処理装置。
  8. 前記アクセスコマンドのアクセス先を示すアドレス空間が、前記複数の部分再構成部に構成されている論理回路の何れにも対応しないアドレス空間であることを検知した場合に、その旨を通知する手段を更に有することを特徴とする請求項5に記載の情報処理装置。
  9. 前記部分再構成部に再構成可能な論理回路それぞれにより利用される前記記憶部におけるアドレス空間は固定されていることを特徴とする請求項1乃至8のいずれか一項に記載の情報処理装置。
  10. 機能それぞれに対応するコンフィグレーションデータを用いて、該機能に対応する論理回路の部分再構成が可能な部分再構成部を備えるプログラマブル回路部と、前記部分再構成部に構成される論理回路それぞれにて利用される記憶部とを備える情報処理装置であって、
    前記コンフィグレーションデータを用いて、前記部分再構成部に論理回路を構成させる再構成手段と、
    論理回路が構成された部分再構成部に対応する前記記憶部におけるアドレス空間を特定する特定手段と、
    前記特定手段にて特定したアドレス空間を用いてアクセスコマンドのアクセス先を指定することにより、前記部分再構成部に構成された論理回路をアクセス先として指定する制御手段と
    を備えることを特徴とする情報処理装置。
  11. 論理回路を再構成する部分再構成部が利用する前記記憶部におけるアドレス空間は固定されていることを特徴とする請求項10に記載の情報処理装置。
  12. 前記特定手段は、前記アドレス空間の基準となるアドレスを特定し、
    前記制御手段は、前記基準となるアドレスと前記論理回路に応じて定義されたオフセットとを用いて、前記記憶部におけるアドレスを指定することを特徴とする請求項10または11に記載の情報処理装置。
  13. 前記アクセスコマンドは、前記記憶部のアドレス空間に対するリードコマンドもしくはライトコマンドであることを特徴とする請求項1乃至12のいずれか一項に記載の情報処理装置。
JP2015016086A 2015-01-29 2015-01-29 情報処理装置 Active JP6516489B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015016086A JP6516489B2 (ja) 2015-01-29 2015-01-29 情報処理装置
US15/003,214 US9798484B2 (en) 2015-01-29 2016-01-21 Information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015016086A JP6516489B2 (ja) 2015-01-29 2015-01-29 情報処理装置

Publications (2)

Publication Number Publication Date
JP2016143920A true JP2016143920A (ja) 2016-08-08
JP6516489B2 JP6516489B2 (ja) 2019-05-22

Family

ID=56553102

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015016086A Active JP6516489B2 (ja) 2015-01-29 2015-01-29 情報処理装置

Country Status (2)

Country Link
US (1) US9798484B2 (ja)
JP (1) JP6516489B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018151737A (ja) * 2017-03-10 2018-09-27 オムロン株式会社 画像処理システム、FPGA(Field Programmable Gate Array)の再構成方法、情報処理装置、情報処理方法、および情報処理プログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10963170B2 (en) * 2019-01-30 2021-03-30 Xilinx, Inc. Retaining memory during partial reconfiguration

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62229452A (ja) * 1986-03-31 1987-10-08 Toshiba Corp 周辺モジユ−ルアクセス方式
JP2001117855A (ja) * 1999-10-14 2001-04-27 Nec Corp バスインタフェース回路作成装置及び記録媒体
JP2006099719A (ja) * 2004-08-30 2006-04-13 Sanyo Electric Co Ltd 処理装置
JP2012248114A (ja) * 2011-05-30 2012-12-13 Canon Inc 情報処理装置、情報処理装置の制御方法、およびプログラム
JP2014230174A (ja) * 2013-05-23 2014-12-08 富士通株式会社 集積回路、制御装置、制御方法、および制御プログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4733138B2 (ja) * 2006-03-31 2011-07-27 パナソニック株式会社 コマンド出力制御装置、コマンド出力制御方法およびプログラム
US9306975B2 (en) * 2006-09-19 2016-04-05 The Invention Science Fund I, Llc Transmitting aggregated information arising from appnet information
JP5171118B2 (ja) * 2007-06-13 2013-03-27 キヤノン株式会社 演算処理装置及びその制御方法
JP5504985B2 (ja) 2010-03-11 2014-05-28 富士ゼロックス株式会社 データ処理装置
US9086805B2 (en) * 2012-03-12 2015-07-21 Seagate Technology Llc Dynamic tracking of storage region operating parameters
US9804781B2 (en) * 2014-03-26 2017-10-31 Seagate Technology Llc Storage media performance management

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62229452A (ja) * 1986-03-31 1987-10-08 Toshiba Corp 周辺モジユ−ルアクセス方式
JP2001117855A (ja) * 1999-10-14 2001-04-27 Nec Corp バスインタフェース回路作成装置及び記録媒体
JP2006099719A (ja) * 2004-08-30 2006-04-13 Sanyo Electric Co Ltd 処理装置
JP2012248114A (ja) * 2011-05-30 2012-12-13 Canon Inc 情報処理装置、情報処理装置の制御方法、およびプログラム
JP2014230174A (ja) * 2013-05-23 2014-12-08 富士通株式会社 集積回路、制御装置、制御方法、および制御プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018151737A (ja) * 2017-03-10 2018-09-27 オムロン株式会社 画像処理システム、FPGA(Field Programmable Gate Array)の再構成方法、情報処理装置、情報処理方法、および情報処理プログラム

Also Published As

Publication number Publication date
JP6516489B2 (ja) 2019-05-22
US20160224266A1 (en) 2016-08-04
US9798484B2 (en) 2017-10-24

Similar Documents

Publication Publication Date Title
US20160036998A1 (en) Image processing apparatus and system for controlling processing for writing configuration data to partial reconfiguration area, and information processing method
US9560232B2 (en) Image processing apparatus, method of controlling the same, and storage medium for configuring a reconfigurable device
JP5438371B2 (ja) 画像処理装置および画像処理方法
JP2016224700A (ja) 情報処理装置及びデータ転送方法
US9509878B2 (en) Image processing apparatus and method for controlling the same, and storage medium
JP6516489B2 (ja) 情報処理装置
JP2015158894A (ja) 画像形成装置、画像形成処理用データ転送制御方法、及び画像形成処理用データ転送制御プログラム
US9760285B2 (en) Image processing system and image processing apparatus for configuring logical circuit on circuit according to configuration data
JP2014179066A (ja) ストレージ制御装置、ストレージシステム、およびストレージ制御方法
JP2011234240A (ja) 画像処理装置、画像処理制御方法、画像処理制御プログラム及び記録媒体
JP6357804B2 (ja) 画像処理装置、集積回路、及び画像形成装置
US20160050332A1 (en) Image processing apparatus for controlling dynamic reconfigurable apparatus, information processing method for image processing apparatus, and storage medium for storing program to achieve information processing method
JP2014154935A (ja) 再構成可能デバイス、及びそれを備えた画像形成装置
US8259339B2 (en) Image forming apparatus
JP2015191335A (ja) 画像処理装置、その制御方法及びプログラム
JP2016076867A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
JP2020131547A (ja) 画像処理装置、画像形成装置、及びプログラム
JP2015139009A (ja) 画像処理装置、その制御方法及びプログラム
US10291817B2 (en) Monochrome image forming apparatus processing monochrome input data utilizing a color conversion process thereby reducing toner usage in an eco mode
JP5447065B2 (ja) 画像処理装置、画像形成システム及び画像処理プログラム
JP6800726B2 (ja) 画像形成装置、方法およびプログラム
US6985624B2 (en) Image processing apparatus and its method
JP2005258783A (ja) データ転送装置、データ転送方法、画像形成装置及びオプションボード
JP5609189B2 (ja) 画像処理装置、画像形成システム及び画像処理プログラム
JP2009064342A (ja) データ転送システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181029

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190318

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190416

R151 Written notification of patent or utility model registration

Ref document number: 6516489

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151