JP5504985B2 - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP5504985B2
JP5504985B2 JP2010054133A JP2010054133A JP5504985B2 JP 5504985 B2 JP5504985 B2 JP 5504985B2 JP 2010054133 A JP2010054133 A JP 2010054133A JP 2010054133 A JP2010054133 A JP 2010054133A JP 5504985 B2 JP5504985 B2 JP 5504985B2
Authority
JP
Japan
Prior art keywords
circuit
partial
block
data
reconfiguration
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.)
Expired - Fee Related
Application number
JP2010054133A
Other languages
English (en)
Other versions
JP2011186981A (ja
Inventor
和雄 山田
孝雄 内藤
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2010054133A priority Critical patent/JP5504985B2/ja
Priority to US12/891,352 priority patent/US8299816B2/en
Publication of JP2011186981A publication Critical patent/JP2011186981A/ja
Application granted granted Critical
Publication of JP5504985B2 publication Critical patent/JP5504985B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F15/7878Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for pipeline reconfiguration
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17752Structural details of configuration resources for hot reconfiguration

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)

Description

本発明は、データ処理装置に関する。
内部の論理回路構成を変更可能なPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)などの再構成可能回路(プログラマブル論理回路とも呼ばれる)が普及している。PLDやFPGAは、回路起動時に内部の論理回路構成を設定するものが一般的であるが、回路が動作中に論理回路構成を変更可能なものも開発されている。
ただし、動作中に回路構成を変更できるといっても、回路構成を動的に変更することに的を絞って開発されたダイナミック・リコンフィギュラブル・プロセッサ(DRP)と比べた場合、回路構成の変更(書き換え)に要する時間がはるかに長い。このため、従来、回路構成の書き換え時間を低減するための技術が提案されている。
特許文献1には、部分的に再構成可能な回路において書き換えを効率化する手法が開示されている。この手法では、機能ごとに配置形状が異なる複数のコンフィギュレーション(回路構成)を用意する。そして、再構成可能回路にある機能のコンフィギュレーションを構成して動作させている間に、次の機能のためのコンフィギュレーションのうち、現在使用していない空き領域の形状に合うものをロードし、書き換えを行っておく。
特許文献2には、部分的に再構成可能なプログラマブル論理回路において、ある領域の回路構成が動作中に、空き領域に次の回路構成を再構成することで、各回路の処理と処理との間の待ち時間を無くす、あるいは短くする技術が開示されている。また、この文献には、次のような技術も開示されている。すなわち、次に回路を再構成しようとする少なくとも一部の領域に、前に再構成されていて、その処理が実行されている前回路が存在するような回路については、前回路の領域と重なる部分と、重ならない部分とに、再構成のためのデータを分割しておく。実際の再構成の際には、重ならない部分を前回路の処理と並行して再構成し、前回路の処理が終了した後に、重なる部分を再構成する。
特許文献1及び2に開示された手法では、いずれも、再構成可能回路上に同時に構成可能な回路(言い換えれば、再構成可能回路の領域内に同時に配置可能な回路)は、同時に再構成(書き換え)し、再構成が完了してからその回路を動作させている。
特許文献3には、プログラマブル論理回路を用いて複数の単位回路を時分割的に動作させるシステムが開示されている。このシステムは、複数の回路の各々に関する回路構成情報を記憶する回路構成情報メモリと、動作中に前記回路構成情報を用いて回路構成を再構成可能なプログラマブル論理回路と、前記各回路の処理に関する入力データ及び出力データを、前記各回路ごとに蓄積する処理データメモリと、前記処理データメモリへの前記入力又は出力データの少なくとも一方の蓄積量を前記各回路毎に監視し、これらの蓄積量がある条件を満たした場合に、前記プログラマブル論理回路の回路構成を変更する制御部とを備える。
特許文献4に開示された装置は、再構成可能ハードウエアのプログラムを書き換えながら大規模な処理を実行する場合のプログラム書換え時間を削減するためのものであり、大規模な処理を小さな処理単位に分割して処理する場合、処理内容が動的に変化しても柔軟にプログラム書き換え、実行をスケジュール管理し効率的な処理を可能とすることを目論んでいる。この装置では、スケジュール部は複数タスク単位で、再構成可能ハードウエア部へのプログラムロードと実行を制御しプログラムロード時間を削減する。ジョブ管理部はジョブ情報格納部に格納された複数のタスクから構成される複数のジョブ情報を参照しジョブの実行状況に応じて、タスクの実行を管理するにより効率的な処理を実現する。
特開2000−252814号公報 特開2001−320271号公報 特開2005−124130号公報 再表2007−029421号公報
本発明は、再構成可能回路上に同時に再構成可能な回路をまとめて再構成して起動する方式よりも、データ処理を高速化できるようにすることを目的とする。
請求項1に係る発明は、回路構成を部分的に再構成可能な再構成可能回路と、前記再構成可能回路の回路構成の再構成を制御する再構成制御手段と、を備え、前記再構成制御手段は、1つのパイプラインを構成し且つ前記再構成可能回路上に同時に再構成可能な複数の部分回路を、前記パイプラインの先頭の部分回路から順に前記再構成可能回路上に再構成し、再構成された部分回路から順に起動していく。
また、前記再構成制御手段は、前記部分回路を前記再構成可能回路上に再構成する際に、前記パイプラインにおける当該部分回路の直前の部分回路が出力してメモリに記憶されたデータを、当該メモリから当該部分回路へと入力するための第1の入力回路と、当該部分回路から出力されたデータを前記メモリに記憶するための第1の出力回路と、を更に再構成する。
また、前記再構成制御手段は、前記部分回路から出力されたデータが前記パイプラインにおける当該部分回路の次の部分回路に出力されるようにするための第2の出力回路と、前記第1の出力回路と前記第2の出力回路を択一的に選択する出力選択回路と、を更に再構成し、前記データ処理装置は、更に、前記次の部分回路が前記再構成可能回路上に再構成される前は前記出力選択回路が前記第1の出力回路を選択するように制御し、前記次の部分回路が前記再構成可能回路上に再構成された後は前記出力選択回路が前記第2の出力回路を選択するように制御する選択制御手段、を更に備える。
請求項に係る発明は、回路構成を部分的に再構成可能な再構成可能回路と、前記再構成可能回路の回路構成の再構成を制御する再構成制御手段と、を備え、前記再構成制御手段は、1つのパイプラインを構成し且つ前記再構成可能回路上に同時に再構成可能な複数の部分回路を、前記パイプラインの先頭の部分回路から順に前記再構成可能回路上に再構成し、再構成された部分回路から順に起動していくとともに、1つのパイプラインを構成し且つ前記再構成可能回路上に同時に再構成可能な複数の部分回路からなる組を表す回路情報を複数組分有しており、当該複数組のうちの第1の組の回路情報に従って当該第1の組の複数の部分回路をパイプラインにおける順序に従って再構成して起動し、当該第1の組の複数の部分回路によるデータ処理の後、当該複数組のうちの第2の組の回路情報に従って当該第2の組の複数の部分回路をパイプラインにおける順序に従って再構成して起動する組順次再構成制御を実行し、前記第2の組のパイプラインにおける先頭の部分回路は、前記第1の組のパイプラインにおける先頭の部分回路以外の部分回路と干渉しない領域に再構成されるよう設計されており、前記組順次再構成制御では、前記第1の組のパイプラインの先頭の部分回路がデータ処理を完了した後、当該パイプラインの他の部分回路がデータ処理を完了する前に、前記第2の組の複数の部分回路のうちのパイプラインの先頭の部分回路の再構成を開始する、ことを特徴とするデータ処理装置である。
請求項に係る発明、前記各部分回路を再構成するのに要する部分回路再構成時間は互いに同等であり、前記データ処理装置は、処理対象のデータを前記複数の部分回路からなるパイプラインで処理するのに要するデータ処理時間の方が、前記部分回路再構成時間より長い場合、前記処理対象のデータを前記複数の部分回路の個数に分割し、分割結果の部分データごとに、前記複数の部分回路の先頭の部分回路に入力する分割入力手段、を更に備える請求項1に記載のデータ処理装置である。
請求項1に係る発明によれば、再構成可能回路上に同時に再構成可能な回路をまとめて再構成して起動する方式よりも、データ処理を高速化できる。
また、部分回路間での処理結果のデータの受け渡しが円滑に実現される。
更に、当該データ処理装置が用いる前記メモリの帯域幅を減らすことができる。
請求項に係る発明によれば、複数の全体回路が順に動作する場合に、データ処理を高速化することができる。
請求項に係る発明によれば、部分回路再構成時間よりもデータ処理時間の方が長い場合でも、部分回路に対して入力されるデータがあふれることのないように制御することができる。
実施形態のデータ処理装置の構成の一例を示す図である。 1つの回路を、パイプラインを構成する複数のブロック(部分回路)に分割することを説明するための図である。 実施形態の再構成制御回路が実行する制御手順の一例を示す図である。 再構成制御におけるFPGAの状態の変化を示すタイムチャートを、従来及び実施形態のそれぞれについて示す図である。 画像のバンド分割の例を示す図である。 実施形態のFPGAの状態・動作の時間変化を示すタイムチャートである。 変形例のデータ処理装置の構成の一例を示す図である。 変形例のFPGAの状態・動作の時間変化の一例を示すタイムチャートである。 変形例のFPGAの状態・動作の時間変化の別の例を示すタイムチャートである。 2つの全体回路が順次FPGAに書き込まれてパイプライン処理を実行する例を示す図である。 2つの全体回路が従来の再構成制御でFPGAに書き込まれる場合の流れを説明するタイムチャートである。 2つの全体回路が実施形態の再構成制御でFPGAに書き込まれる場合の流れを説明するタイムチャートである。 全体回路のブロック分割にあわせて処理対象データのデータをバンド分割する制御の例を示すフローチャートである。 ブロック再構成時間が全画像処理時間より短い場合の、再構成と画像処理の時間的な関係の例を示す図である。 ブロック再構成時間が全画像処理時間より長い場合の、再構成と画像処理の時間的な関係の例を示す図である。
図1に、実施形態のデータ処理装置の構成の一例を示す。この例では、データ処理装置は、再構成可能回路の一例としてFPGA100を備えると共に、再構成制御回路200、EEPROM(Electrically Erasable Programmable Read Only Memory)220、外部メモリ240を備える。
この例では、FPGA100がCPU(中央処理ユニット)コア110を搭載している。このCPUコア110が、FPGA100や再構成制御回路200などといった、このデータ処理装置の各ユニットを制御するための制御ソフトウエアを実行する。CPUコア110は、専用のハード回路ブロックとしてFPGA100内に組み込まれていてもよいし、FPGA100が備える論理ブロックや配線リソースを組み合わせて構成してもよい。なお、FPGA100がCPUコア110を備えていることはあくまで一例に過ぎず、この代わりに、FPGA100の外部にCPUを設けてももちろんよい。
またFPGA100は、動的書換可能かつ部分書換可能なタイプのものである。すなわち、このFPGA100は、当該FPGA100上の一部に再構成された回路が動作している間に、その回路が占める部分とは重ならない別の部分に別の回路を再構成することができる。なお、「動的」とはいっても、動的再構成に特化したDRPに比べると、回路構成(コンフィギュレーション)データの読込等のために書換(再構成)にははるかに長い時間を要する。
FPGA100内のブロックA122、ブロックB124及びブロックC126は、それぞれ、FPGA100内の論理ブロック群と配線リソースの組み合わせにより構成(コンフィギュレーション)される回路である。ブロックA122、ブロックB124及びブロックC126は、FPGA100上に同時に配置(存在)可能な回路であるとともに、その順にパイプラインを構成している。すなわち、それらは、ブロックA122の出力がブロックB124の入力となり、ブロックB124の出力がブロックC126の入力となる関係を持つ。この例では、外部からの入力データがブロックAに入力されて処理され、更にその処理結果がブロックBで処理され、最後にブロックCで処理されて外部に出力されることになる。すなわち、外部の装置から見れば、ブロックA,B,Cを合わせた1つの回路が、当該装置の依頼したデータ処理を実行する回路として機能する。
したがって、ブロックA122、ブロックB124及びブロックC126は、図2に示すように、FPGA100に同時に再構成可能な1つの回路α120を、パイプラインを構成する3つの部分回路に分割したものと捉えることもできる。ここで「FPGA100に同時に再構成可能」な回路(又は複数の回路)とは、FPGA100の構成を書き換えなくても、そのFPGA100上に一度に収まる(すなわち同時に存在して動作し得る)規模の回路(又は複数の回路)のことをいう。なお、以下では、部分回路であるブロックA、B、Cとの区別を明確にするために、分割する前の元の回路αを全体回路αと呼ぶことにする。
図1を初めとするこの明細書の各例では、1つの回路を3つのブロックA、B、Cに分割した例を説明するが、これはあくまで一例に過ぎない。1つの回路を2つ、又は4つ以上のブロックに分割する場合にも、この実施形態の方式は適用可能である。
また、このようにパイプラインをなすブロック群へと分割される元の全体回路αは、FPGA100上に同時に存在して動作する回路全体であってもよいし、そのような回路全体の一部分であってもよい。後者は、例えば、FPGA100を従来方式で動的かつ部分的に再構成していくなかで、部分再構成される1つの回路を全体回路αと捉え、これをパイプラインをなす複数のブロックに分割するようなケースに該当する。
なお、この後説明するこの実施形態の制御の特徴は、各ブロックA、B、Cの具体的な回路構成や処理内容には依存しない。ブロックA、B、Cは、FPGA100上に同時に再構成可能、かつ、パイプラインを構成して外部からのデータに対して処理を行うものであれば、どのようなものでもよい。
図1の例では、ブロックA、B、Cは、パイプライン処理を実現するために、外部メモリ240を介してデータを順にやりとりする。すなわち、ブロックAは、外部からの入力データを処理し、その処理結果を外部メモリ240内のあらかじめ定めたバッファ領域Aに書き込む。ブロックBは、外部メモリ240のバッファ領域AからブロックAの処理結果データを読み出し、そのデータに対して処理を実行し、その処理結果を外部メモリ240内の、バッファ領域Aとは異なる領域あらかじめ定めたバッファ領域Bに書き込む。ブロックCは、外部メモリ240のバッファ領域BからブロックBの処理結果データを受け取り、そのデータに対して処理を実行し、その処理結果を外部に出力する。なお、バッファ領域Aをダブルバッファ構成として、ブロックAからのデータの書き込みと、ブロックBからのデータの読み出しを並列実行できるようにしてもよい。バッファ領域Bについても同様である。
このような各ブロックA,B,Cの外部メモリ240に対する入出力を制御するために、FPGA100は、セレクタ130及びメモリコントローラ135を備える。ブロックA122の出力、ブロックB124の入力及び出力、並びにブロックC126の入力がセレクタ130に接続され、セレクタ130は、各ブロックA,B,Cの外部メモリ240に対するアクセス要求の競合を調停する。メモリコントローラ135は、セレクタ130を介した各ブロックA、B、Cからの外部メモリ240に対する読み書きを制御する。
セレクタ130及びメモリコントローラ135は、ハードウエア回路としてFPGA100に組み込んでもよいし、FPGA100の論理ブロック及び配線リソースを用いて構成してもよい。
外部メモリ240は、FPGA100の外部に設けられたメモリであり、例えばRAMである。外部メモリ240は、FPGA100に直接接続されたものであってもよいし、FPGA100が接続されたバスに接続されたものであってもよい。後者の場合、外部メモリ240は、バス上にあるFPGA100以外の装置からもアクセスされ得る。図1の例では、外部メモリ240は、上述のように、ブロックA,B,Cの間のデータのやりとりのための一時記憶として用いられる。
なお、ブロックA,B,Cの間でやりとりするデータが比較的少ない場合には、外部メモリ240を設ける代わりに、それらデータを一時記憶するバッファ回路をFPGA100内に内蔵又は構成してもよい。以下では、繁雑さを避けるため、外部メモリ240を利用する場合のみを説明する。
EEPROM220には、FPGA100上に再構成される回路構成(コンフィギュレーション)を表す回路情報(コンフィギュレーションデータ)が保持される。FPGA100上に複数のコンフィギュレーションを順に構成して動作させる場合、それら各コンフィギュレーションの回路情報(及び各コンフィギュレーションの順序を表す情報)などがEEPROM220に記憶される。図1の例では、回路情報は、ブロックA,B,Cという部分回路の単位でEEPROM220に記憶しておけばよい。また、EEPROM220には、それら各ブロック間でパイプラインを構成するために必要な配線の定義や補助回路の情報を記憶しておいてもよい。
なお、ここでは回路情報を保持する記憶装置としてEEPROM220を例示したが、これは一例に過ぎない。他の種類の不揮発性メモリ(例えばROMやハードディスク)を用いてももちろんよい。また、FPGA100は、回路情報をSRAM(Static Random Access Memory)に保持させるタイプのものであってもよい。
再構成制御回路200は、EEPROM220に保持された回路情報に従って、FPGA100内の論理ブロック群及び配線リソースを組み合わせることで、FPGA100内にその回路情報に応じた回路を再構成する。
ここで、図1に例示したブロックA、B、CはFPGA100上に同時に配置可能なので、従来の再構成制御回路ならば、それらを一度にまとめて再構成する。これに対し、この実施形態の再構成制御回路200は、各ブロックをパイプラインの順に再構成していく。この再構成の手順の一例を図3に示す。再構成制御回路200は、例えば、電源投入により起動したときに自動的に、又はCPUコア110から再構成開始の指示を受けると、図3の手順を開始する。
図3の手順では、再構成制御回路200は、まずパイプラインの先頭であるブロックAの回路情報をEEPROM220から読み出し、読み出した回路情報をFPGA100に書き込むことで、ブロックAをFPGA100上に再構成する(S10)。このとき、ブロックAの入力を外部からのデータ入力へ接続する配線、及びブロックAの出力をセレクタ130に接続する配線も同時に再構成する。そして、ブロックA及びこれに付随する配線の再構成が完了するのを待つ(S12)。この再構成が完了すると、再構成制御回路200は、ブロックAを起動して入力データの処理を開始させるとともに、EEPROM220の回路情報に従って、ブロックBとこれに付随する配線(すなわちセレクタ130との間のデータの入力及び出力用の各配線)をFPGA100上に再構成する(S14)。すなわち、この実施形態では、ブロックAの動作とブロックBの再構成とが同時並列的に行われる。起動されたブロックAは、外部から入力されたデータを受け取り、処理を実行する。ブロックAの処理結果は、セレクタ130及びメモリコントローラ135を介して外部メモリ240のバッファ領域Aに書き込まれる。
次に再構成制御回路200は、ブロックB及びこれに付随する配線の再構成の完了を待つ(S16)。この再構成が完了したことを検知すると、再構成制御回路200は、ブロックBを起動して入力データの処理を開始させるとともに、EEPROM220の回路情報に従って、ブロックCとこれに付随する配線(すなわちセレクタ130からデータを入力するための配線)をFPGA100上に再構成する(S18)。これにより、FPGA100上ではブロックA及びBが動作し、これと平行してブロックCが再構成されることとなる。起動されたブロックBは、外部メモリ240のバッファ領域Aに格納されているブロックAの処理結果データを、セレクタ130を介して読み出し、読み出したデータに対して処理を行う。そして、処理結果のデータを、セレクタ130を介して外部メモリ240のバッファ領域Bに書き込む。
次に再構成制御回路200は、ブロックC及びこれに付随する配線の再構成の完了を待ち(S20)、完了すると、ブロックCを起動して入力データの処理を開始させる(S22)。これにより、ブロックA、B、Cの全てが動作することになる。起動されたブロックCは、外部メモリ240のバッファ領域Bに格納されているブロックBの処理結果データを、セレクタ130を介して読み出し、読み出したデータに対して処理を行う。そして、処理結果のデータを外部に出力する。
これ以後、次の書換(再構成)が行われるまでは、ブロックA、B、Cが、外部メモリ240を介してデータを受け渡しながら、パイプライン動作することとなる。これにより、FPGA100は、外部からは、図2に示した回路α120と同様の動作を行っているように見える。
以上のように、パイプラインを構成する各ブロックA、B、Cを先頭から順に再構成して起動していくことにより、それらブロックA〜Cを同時にまとめて再構成して起動する場合よりも、処理を高速化、特に最初の処理結果の出力を早めることができる。このことを、図4を参照して説明する。
図4には、FPGA100の状態の時間的な遷移を表すタイムチャートが、(a)従来の「まとめて再構成」する方式、(b)本実施形態の「順次再構成」する方式、のそれぞれについて示されている。
図4の(a)に示すように、従来方式では、FPGA100にブロックA、B、Cからなる全体回路αをまとめて再構成するので、その再構成に要する時間の間は、FPGA100のうちその全体回路αが占めるべき範囲はインアクティブ(inactive:非動作)状態である。この再構成に要する時間は、全体回路αの回路規模、言い換えれば全体回路αを表す回路情報のデータ量にほぼ比例する。そして、全体回路αすなわちブロックA、B、C全部の再構成が完了すると、全体回路αがアクティブ(動作)状態となり、外部からの入力データの処理を開始する。ここで、回路の遅延のため、全体回路αが処理を開始してから最初の処理結果が出力されるまでには、遅延時間DA+B+Cを要する。例えば、全体回路αが画像処理を行う回路である場合、全体回路αに含まれるラインメモリのライン遅延がその遅延時間の原因の一つとなる。ブロックA、B、Cはパイプラインを構成するため、全体回路αのDA+B+Cは、個々のブロックA、B、Cの遅延時間D、D、Dの総和にほぼ等しい。
一方、本実施形態の方式では、図4の(b)に示すように、FPGA100の全体回路αが占めるべき部分がインアクティブなのは、再構成制御を開始してブロックAを再構成している間だけである。この再構成の完了と共にブロックAはアクティブになり、並行してブロックBの再構成が行われる。ブロックBの再構成も完了すると、ブロックAとBがアクティブとなり、並行してブロックCの再構成が行われる。そして、ブロックCの再構成も完了すると、全ブロックがアクティブ状態となる。FPGA100の再構成に要する時間は回路規模に比例するので、ブロックAの再構成を開始してから全ブロックA、B、Cがアクティブになるまでに要する時間は、従来方式で全体回路αを再構成するのに要する時間とほぼ等しい。
ここで、本実施形態の方式では、全ブロックA、B、Cがアクティブとなった時点では、ブロックA及びBでは、最初に入力されたデータの処理を完了しており、ブロックCはバッファ領域B上に既に存在するブロックBの処理結果を受け取って処理を開始すればよい。したがって、全ブロックA、B、Cがアクティブとなった時点から最初の処理結果が出力されるまでに要する遅延は、実質的にブロックCの遅延時間Dのみとなる。すなわち、従来方式と比べて、ブロックAとBによる遅延時間の分だけ処理結果の出力開始が早まり、ひいては入力データ全体の処理結果の出力完了までに要する時間も同じだけ早まる。
さて、図1のデータ処理装置に例えばページ印刷のための画像処理を行わせる場合、再構成が完了したブロックAは、ブロックBの再構成に要する時間(以下、再構成時間と呼ぶ)中に、ページの先頭から、その再構成時間の間にブロックAが処理できるある幅の帯状領域の画像データを処理する。この帯状領域のことをバンドと呼ぶ。バンドは、横方向についてはページの主走査方向の全幅を有し、縦方向については再構成時間の間にブロックが処理できるデータ量に応じた幅を持つ。図5の例では、ブロックAは、ブロックBの再構成時間中に、バンドB1の処理を実行し、完了させる。
ここで、前述の通り、FPGA100の再構成に要する時間は再構成する回路の規模、言い換えれば再構成のために読み込む回路情報のデータ量にほぼ比例する。したがって、図1の例では、ブロックA、B、Cの回路規模をほぼ同等とすれば、各ブロックの再構成時間はほぼ等しくなる。また、あるブロックが一定量のデータを処理するのに要する時間(以下、データ処理時間と呼ぶ)はほぼ回路規模に比例すると考えられるので、各ブロックA、B、Cのデータ処理時間もほぼ同等と考えることができる。すると、1ページの画像は、ブロックの再構成時間に対応する幅のバンドごとに、ブロックA,B,Cで順に処理されていくことになる。図5では、1ページが4つのバンドB1〜B4に分割される例を示したが、これは一例に過ぎない。
この実施形態のデータ処理装置の各ブロックA、B、Cがこのページをバンド毎に処理していく流れは、図6に示すようになる。
すなわち、まず上位装置から再構成及び処理の開始を指示された直後のタイムスロットts1(このスロットの時間幅はブロックの再構成時間に等しい)の中でブロックA122が再構成される。次のタイムスロットts2では、ブロックB124が再構成されると共に、再構成されたブロックAがページ先頭のバンドB1を処理し、その処理結果が外部メモリ240のバッファ領域Aに格納される。次のタイムスロットts3では、ブロックCが再構成される。また、これと並行して、ブロックAが次のバンドB2を処理して処理結果をバッファ領域Aに格納し(ここでダブルバッファ方式を用いてもよい)、再構成されたブロックBがバッファ領域AからブロックAによるバンドB1の処理結果を読み出して処理し、その処理結果をバッファ領域Bに格納する。次のタイムスロットts4では、ブロックAは、バンドB3を処理して処理結果をバッファ領域Aに格納する。また、ブロックBは、バッファ領域AからバンドB2のブロックAによる処理結果を受け取って処理し、その処理結果をバッファ領域Bに書き込む。また、ブロックCは、バッファ領域BからブロックBによるバンドB1の処理結果を読み出して処理し、その処理結果を外部に出力する。以上のようなパイプライン処理を繰り返すことで、タイムスロットts7で最後のバンドB4の処理結果が外部へ出力される。
以上に説明した実施形態では、ブロックAからB、BからCの処理結果データの受け渡しを、外部メモリ240を介して行った。したがって、図6のバッファ領域A及びBのタイムチャートから分かるように、外部メモリ240は、タイムスロットts3〜ts5の間は、2バンド分のデータの読み書きを常に行っていることになる。例えば、外部メモリ240がこの実施形態のデータ処理装置のみならず他の装置からもアクセスされる場合、少なくともts3〜ts5では、データ処理装置の使用するメモリ帯域が大きい分、他の装置の使用できる帯域を圧迫してしまう。
そこで、データ処理装置が使用する外部メモリ240の帯域を低減する変形例を以下に示す。図7は、この変形例のデータ処理装置の構成を示す。図7において、図1と同様の構成要素には同一符号を付して説明を省略する。
この変形例では、上記実施形態と同様の外部メモリ240を介したデータ経路の他に、ブロック間を直結するデータ経路を設け、両者を選択的に使用する。
このため、図7に例示する構成例では、FPGA100内のブロックAとBの間に出力セレクタ(「出力SEL1」)と入力セレクタ(「入力SEL1」)を設け、ブロックBとCの間に出力セレクタ(「出力SEL2」)と入力セレクタ(「入力SEL2」)を設けている。
出力SEL1は1入力2出力であり、入力はブロックAの出力と接続されるとともに、出力の一方(図中の「1」系統)は外部メモリ240へと繋がるセレクタ130に、他方(図中の「0」系統)はブロックBとの直結接続のために入力SEL1の入力の一方(図中の「0」系統)に、それぞれ接続されている。出力SEL1は、CPUコア110から供給される制御信号に応じて、2系統の出力のうちの一方を選択する。
入力SEL1は2入力1出力であり、出力はブロックBの入力に接続されるとともに、入力の一方(「1」系統)は外部メモリ240へと繋がるセレクタ130に、他方(「0」系統)はブロックAとの直結接続のために出力SEL1の出力の一方(「0」系統)に、それぞれ接続されている。入力SEL1は、CPUコア110から供給される制御信号に応じて、2系統の入力のうちの一方を選択する。
ブロックB、C間の出力SEL2及び入力SEL2も、上述の出力SEL1及び入力SEL1これと同様の接続構成となっており、CPUコア110から同様に制御される。
この変形例では、CPUコア110(が実行する制御ソフトウエア)の制御に応じ、出力SEL1及び出力SEL2は、パイプラインにおけるそのすぐ下流のブロックBの再構成が完了するタイミングまでは、出力先として「1」系統すなわちセレクタ130側を選択する。また、ブロックBの再構成が完了したタイミング以降のあらかじめ定めたタイミングで、出力先を「0」系統すなわち入力SEL1側に切り換え、これ以降、この選択状態を維持する。
また、CPUコア110からの制御に応じて入力SEL1は、外部メモリ240のバッファ領域Aに格納されたブロックAの処理結果が無くなるまでの期間は、入力元として「1」系統すなわちセレクタ130側を選択する。また、バッファ領域A内の処理結果を全て処理し終わったタイミング以降のあらかじめ定めたタイミングで、入力元を「0」系統すなわち出力SEL1側に切り換え、これ以降、この選択状態を維持する。
同様に、出力SEL2は、ブロックCの再構成が完了するまでは出力先として「1」系統すなわちセレクタ130側を選択し、その再構成の完了以降のタイミングで、出力先を「0」系統すなわち入力SEL2側に切り換える。また、入力SEL2は、バッファ領域Bに格納されたブロックBの処理結果が無くなるまでの期間は、入力元として「1」系統すなわちセレクタ130側を選択し、バッファ領域B内のデータを全て処理し終わった以降のタイミングで、入力元を「0」系統すなわち出力SEL1側に切り換える。
出力SEL1及び2、並びに入力SEL1及び2は共に、再構成制御部200の制御下で、FPGA100の論理ブロック及び配線リソースを用いて再構成される。
ここで、再構成制御部200は、以下のような条件を満たすように、出力SEL1及び2、並びに入力SEL1及び2を順次FPGA100上に再構成していく。すなわち、まず出力SEL1は、ブロックAが起動するまでに(例えばブロックAと同時に)再構成する。また、入力SEL1は、ブロックBが起動するまでに(例えばブロックAと同時、或いはブロックBと同時に)再構成する。また、出力SEL2は、ブロックBが起動するまでに(例えばブロックBと同時に)再構成する。そして、入力SEL2は、ブロックCが起動するまでに(例えばブロックBと同時、或いはブロックCと同時に)再構成する。
次に、この変形例におけるFPGA100内の各セレクタ及び各ブロックの状態・動作の時間的な推移の一例を、図8を参照して説明する。
図8において、信号「入力ACT」は、外部からブロックAへのデータ入力を許可又は禁止する二値の制御信号であり、この信号がハイ(高)レベルの場合は入力が許可され、ロー(低)レベルの場合は入力が禁止される。信号「出力SEL1」は、セレクタ「出力SEL1」の出力先の選択を制御する信号であり、この信号がハイの場合は出力SEL1は「1」系統すなわちセレクタ130側を、ローの場合は「0」系統すなわちブロックBとの直結経路側を、それぞれ選択する。信号「入力SEL1」は、セレクタ「入力SEL1」の入力元の選択を制御する信号であり、この信号がハイの場合は入力SEL1は「1」系統すなわちセレクタ130側を、ローの場合は「0」系統すなわちブロックAとの直結経路側を、それぞれ選択する。信号「出力SEL2」及び「入力SEL2」もこれと同様である。これら制御信号は、CPUコア110が実行する制御ソフトウエアにより発行される。
図8の例では、入力ACT信号は、ブロックAの再構成を行っている期間ts1の間はローであり、その再構成完了後、ブロックBの再構成を行っているts2の間はハイとなる。そして、その次のブロックCが再構成されているタイムスロットts3では、再びローに戻り、更にブロックCの再構成が完了したts4以降はハイになる。このような信号によれば、まずブロックAが再構成された後のタイムスロットts2でバンドB1(図5参照)がブロックAに入力され、次のタイムスロットts3ではデータ入力が停止される。そして、更に次のタイムスロットts4でデータ入力が再開され、ts4,5,6にてそれぞれバンドB2、B3、B4のデータがブロックAに入力されることとなる。
また、出力SEL1信号は、タイムスロットts2の間だけハイとなる。すなわち、出力SEL信号1は、ブロックAの再構成が完了したタイミングでハイとなり、次のブロックBの再構成が完了したタイミングでローになり、以降ロー状態が維持される。また、入力SEL1信号は、タイムスロットts3の間だけハイとなる。すなわち、入力SEL1信号は、ブロックBの再構成が完了したタイミングでハイとなり、次のブロックCの再構成が完了したタイミング、すなわちブロックBがバンドB1の処理を完了したタイミングでローになり、以降ロー状態が維持される。このような制御信号によれば、ブロックA、B間では、最初の1バンドB1のデータの受け渡しは外部メモリ240のバッファ領域Aを介して行われることとなり、バンドB2以降は外部メモリ240を介さずブロックAからBに直接データが供給されることとなる。
また、図8の例では、出力SEL2信号はブロックBが起動して以降、ブロックBが全バンドB1〜B4のデータを出力し終わるまでずっとハイである。これに呼応して、入力SEL2信号は、ブロックCが起動して以降ブロックCが全バンドB1〜B4のデータを処理し終わるまでずっとハイである。このような制御信号によれば、ブロックBからCへのデータの受け渡しは、直結ルートはまったく使用せずに、すべて外部メモリ240のバッファ領域Bを介して行われることとなる。
この制御では、バンドB1のデータは、ブロックAからバッファ領域Aを介してブロックBに受け渡され、ブロックBからバッファ領域Bを介してブロックCに受け渡され、最終的にブロックCから外部に出力されることとなる。一方、バンドB2は、タイムスロットts4において、外部からブロックAに入力されて処理されると共に、その処理結果が直接ブロックBに入力されて処理される。そしてその処理結果はバッファ領域Bに格納される。そして、バッファ領域Bに保持されたバンドB2の処理結果は、次のタイムスロットts5でブロックCにより処理され、外部に出力される。バンドB3及びB4の処理の流れは、B2と同様である。
図8の制御例では、図6の例と比較した場合、タイムスロットts3以降はブロックAの処理結果データをバッファ領域Aに書き込むためのメモリ帯域が空き、タイムスロットts4以降はブロックBがバッファ領域Aからデータを読み出すための帯域が空くことになる。
なお、図8の例では、ブロックB、C間の出力SEL2及び入力SEL2は事実上機能していない(常にセレクタ130側が選択されている)。したがって、この例では、出力SEL2及び入力SEL2は設けなくてもよい。同様に、ブロックB、C間の出力SEL2及び入力SEL2のみを設け、ブロックA、B間の出力SEL1及び入力SEL1は設けない構成例も考えられる。
次に、図9を参照して、図7の変形例のデータ経路制御の別の例を説明する。この例では、入力ACT信号は、ts2、ts4、及びts6以降はハイであり、ts3、ts5ではローである。
出力SEL1信号及び入力SEL1信号は図8の例と同様であるが、出力SEL2信号及び入力SEL2信号は図8の例(実質的に常時ハイ)とは異なり、最短のタイミングでローに切り替わる。すなわち、出力SEL2信号は、ts4の終端、すなわちバンドB2の処理結果のブロックBからバッファ領域Bへの書き込みの終了のタイミングで、ローに切り替わる。また、入力SEL2信号は、ts5の終端、すなわちバッファ領域BからブロックCへのバンドB2の処理結果の読み出しのタイミングで、ローに切り替わる。
このような制御により、バンドB3及びB4のデータは、ts6及び7において、それぞれ外部メモリ240を介さずにブロックA、B、Cで順に処理され、外部に出力されることとなる。
図9の制御によれば、バンドB3及びB4については、バッファ領域Bに対する読み書きのためのメモリ帯域も空くことになる。
以上では、FPGA100上に同時に存在し得る1つの全体回路αの中での各ブロックA、B、Cの再構成及び起動の制御の例を説明した。しかしながら、この実施形態の制御は、そのような全体回路が複数存在し、それらが順次FPGA100に書き込まれてパイプライン処理を実行する場合にも適用可能である。ここで、全体回路同士は、FPGA100上で互いに干渉する位置を占めるので、同時にはFPGA100上に存在できない。このケースでは、複数の全体回路がFPGA100を時間的に分有(タイムシェア)することにより大きなパイプラインを形成すると共に、個々の全体回路内では複数のブロックがFPGA100上の空間内で同時にパイプラインを形成する。
例えば、図10に示す例では、まずFPGA100上に全体回路αが再構成され、全体回路αの処理が終わると、その処理の結果に対して更なる処理を行う全体回路βがFPGA100上に再構成される。ここで、全体回路α及びβは、それぞれ上記実施形態と同様、パイプラインを構成する複数のブロックA、B、Cに分割される。そして、再構成制御部200は、全体回路α及びβをそれぞれ再構成して動作させる場合に、上述の実施形態又は変形例の手法に従って、各ブロックを順に1つずつ再構成して起動していく。
ここで、この例では、全体回路αが複数のブロックに分かれ、それらブロックがパイプラインを形成しているので、パイプラインの先頭のブロックAのデータ処理が終わっても、まだ後ろのブロックがデータ処理を実行している期間が存在する。この期間内に、次の全体回路βのパイプラインの先頭ブロックの再構成を開始することで、全体回路βの再構成が完了するタイミングを従来よりも早めることができる。
すなわち、従来方式では、図11Aに示すように、全体回路αの全ブロックA、B、Cがタイムスロットts1〜ts3の間に再構成され、その後タイムスロットts4〜ts6の間にそれらブロックA、B、Cがデータ処理(この例では3バンド分のデータの処理)を実行する。そして、その処理が終了すると、全体回路βの全ブロックA、B、Cがタイムスロットts7〜ts9の間に再構成され、その後タイムスロットts10〜ts12の間にそれらブロックA、B、Cがデータ処理を実行する。図11Aの例では、繁雑さを避けるため、全体回路α及びβの再構成に要する時間が同一であるとしたが、再構成時間は各々の回路規模に依存するので同一でない場合もある。
これに対し、実施形態及び変形例の構成では、図11Bに示すように、全体回路αの先頭のブロックAはタイムスロットts1の間に再構成されて起動し、ts4でデータの処理を終える。ts5以降は、ブロックAは不要となる。一方、全体回路αの末尾のブロックCは、ts5及びts6でもデータ処理を行っている。この状況で、再構成制御部200は、ts5又はts6に全体回路βの先頭ブロックAの再構成を開始する(図では、ts5に再構成する場合を例示)。そして、全体回路αによるページの先頭バンドの処理結果はts4に得られており、ブロックAの再構成が完了した時点では既に存在するので、ブロックAは再構成完了後すぐに起動することができる。また、図11Bの例では、全体回路αのブロックCの処理が終わる前に、全体回路βのブロックBの再構成も行っている。このように、前の全体回路の一部がまだデータ処理をしている間に、既にデータ処理を行っている部分を次の全体回路に書き換えることで、全体回路αとβの全体を通した処理に要する時間が短縮される。
以上のような再構成制御を可能にするためには、全体回路βのブロックAは、全体回路αのブロックB及びCと干渉しない領域を占める回路として設計されている必要がある。また、全体回路βのブロックBは、全体回路αのブロックCと干渉せず、かつ全体回路βのブロックAと干渉しない領域を占める回路として設計されている必要がある。
なお、FPGA100を全体回路αとβに交互に書き換えながら処理を進める場合、図11Bのts9にて全体回路αのブロックAの再構成を行ってもよい。また、ここでは、2つの全体回路がパイプラインを構成する場合を例示したが、この再構成制御が3以上の全体回路がパイプラインを構成する場合にも適用可能であることは理解されよう。
以上に説明した実施形態及び変形例では、再構成可能回路の一例としてFPGA100を例示したが、データ処理装置が備える再構成可能回路は他の種類・方式のもの(例えばPLDやCPLD(Complex PLD))であってもよい。
さて、次に、全体回路のブロック分割に合わせて処理対象のデータをバンド分割して供給する制御の例を説明する。
この例では、図1、図7に例示した装置構成のうちのCPUコア110が、図12の手順に従って処理を実行する。図12の手順は、印刷のためのページ画像の処理を行う全体回路をFPGAに再構成する場合の例である。
まず、この手順では、まず、ブロック再構成時間Treconf及び全画像処理時間Tprocの値を、データ処理装置が備える設定値記憶用の記憶装置から取得する。このために、当該データ処理装置に対して書き込む回路を設計した設計者などのユーザが、ブロック再構成時間Treconf及び全画像処理時間Tprocの値(又はその値を求めるための情報を、当該データ処理装置に対してあらかじめ設定しておく。
ここで、ブロック再構成時間Treconfは、1ブロックを再構成するのに要する時間のことであり、例えば、FPGA100全体の書換時間、すなわち全体回路αを再構成するのに要する時間を、その全体回路αをブロックに分解した場合のブロック数で除した結果の値である。すなわち、この例では、各ブロックの回路規模をほぼ同等にしており、全体回路αをブロック数で割ることで、1ブロックの再構成時間が求められる。また、ここで、例えば、あらかじめ設計者が、全体回路βを、パイプラインをなすほぼ同等の回路規模の複数のブロックに分割する設計を行っているので、この設計の情報からブロック数が求められる。
なお、このブロック分割設計においては、与えられた条件が許す限りで、できるだけ細かいブロックに、すなわちできるだけ多数のブロックに分割した方が、前述のようにデータ処理の終了が早まる。例えば、データ処理装置が外部メモリと通信するのに割り当てられるメモリ帯域幅と、FPGA100の内部周波数に対応する処理速度との関係から、データ処理装置に入出力可能なデータストリームの最大数が求められる。ブロックには入力と出力とがあるので、その最大数の半分の数が、与えられた条件での最大ブロック数となる。例えば、メモリ帯域幅が4GB/sで、内部周波数が200MHz(すなわち処理速度が200MB/s)である場合、最大20ストリーム、すなわち最大ブロック数は10となる。設計者は、全体回路αをこの最大ブロック数へと均等に分割する設計を行えばよい。
このようなことから、例えば全体回路αの書換に要する時間とブロック数から、ブロック再構成時間Treconfが求められる。
全画像処理時間Tprocは、全体回路αが、処理対象のデータ全体(この例では、1ページの画像データ全体)を処理するのに要する時間のことである。設計者が全体回路αを設計した時点で、対象となる1ページのデータの量も分かっているので、このTprocの値は、この時点で判明している。
このようにして、S30では、設計者等のユーザが、Treconf(又はその元になるFPGA全体の書換時間とブロック数)とTprocを、設定するのである。なお、この設定は、データ処理装置に対して一度行っておき、その後そのデータ処理装置が起動されデータ処理を実行するときに、制御ソフトウエアが、設定された値を読み出して以下の処理を実行すればよい。
制御ソフトウエアを実行するデータ処理装置のCPUコア110は、この設定値に基づき、処理対象のページ画像データのバンド分割の要否、及びバンド分割する場合のバンドのサイズを判定する。
すなわち、CPUコア110は、TreconfとTprocを比較し(S32)、前者の方が短い場合(すなわちS32の判定結果がYes)、1ブロックあたりの画像処理時間Tproc’の値を、Treconfにセットする(S34)。そして、処理対象のページ画像データをバンド分割するモードへと移行する(S36)。このモードでは、S30で取得された全画像処理時間Tprocを、ブロックあたりの画像処理時間Tproc’で除した結果の値を、処理対象の画像データ全体をバンド分割する場合のバンド数とする。また、個々のバンドの高さは、ページの高さをバンド数で除した値とする。そして、このバンド数、バンド高さに従い、制御ソフトウエアは、処理対象のページ画像データをバンド単位に分割し、先頭のバンドから順に1バンドずつ、FPGA100(の先頭のブロック)に入力していく。より詳しくは、CPUコア110は、例えばデータ処理装置が備えるDMA(Direct Memory Access)コントローラ(図示省略)に対して、バンドの先頭アドレスとバンドサイズとを渡し、FPGA100の先頭ブロックの入力のアドレスへの転送を依頼し、以降1バンドの転送を終了するごとに、DMAコントローラに次のバンドについての転送依頼を行う。
またステップS32の判定結果がNo、すなわちTreconf≧Tprocの場合は、CPUコア110は、処理対象のページ画像データをバンド分割せずにそのままFPGA100(の先頭のブロック)に入力する(S38)。
このような制御を行うと、ブロック再構成時間Treconfが全画像処理時間Tprocより短い場合は、処理対象のページ画像がバンド単位に分割されて処理されることになる。例えば、図13に示すように、全体回路αの再構成時間が40ms(ミリ秒)、ブロック数が4、全体回路αがページ画像を処理するのに要する全画像処理時間が50msであるとすると、従来のように全体回路αをまとめて再構成する方式の場合は、開始時点から40msまではFPGA100の書換が行われ、40msから90msまでの時間でページ画像全体が処理されることになる。図中では、これを細かいドットパターンで示した長方形で示した(但し一部がブロック・バンド分割結果の斜線ハッチング正方形で隠されている)。これに対し、全体回路αをブロック分割、更に図12の手順によりバンド分割を行った場合の処理の進み方を、図中に斜線ハッチングで示す。この場合、開始時点から10msの間に先頭ブロックが再構成され、その後20msまでの間にページの先頭の1バンドがその先頭ブロックで処理される。この処理が終わる時点では、2番目のブロックの再構成が完了しているので、先頭ブロックによる先頭バンドの処理結果は2番目のブロックに入力され、30msまでの間に処理される。この処理と並行して、先頭ブロックは20msから30msまでの間に2番目のバンドを処理する。このようにして、1ページを構成する5バンドがブロック群によりパイプライン処理される。図13の例では、この実施形態の方式の方が、図4に例示したライン遅延の差の分だけ、従来技術よりも処理を速く終えることができる。また、従来方式の場合と、ブロック分割・バンド分割の場合との差の部分300で表される時間及びFPGA100上の空き領域は、他の回路を再構成したり動作されたりするのに利用可能である。
また、ブロック再構成時間Treconfが全画像処理時間Tproc以上の場合、図14に示す例では、従来方式では、全体回路αの再構成が完了する40msの時刻から全体回路αが動作し、ページ全体を6msで処理する。これに対し、この実施形態の方式では、先頭ブロックが10msで再構成され、その後その先頭ブロックが6msでページ全体を処理し、2番目のブロックが10msから20msの間に再構成され、その後先頭ブロックの処理結果を6msで処理する。以上の繰り返しにより、ページ全体のデータが順番に各ブロックにてパイプライン処理される。この場合も、図4に例示したライン遅延の差の分だけ、従来技術よりも処理を速く終えることができる。また、処理の終わったブロックは、他の回路に書き換えるなどして利用することができる。
100 FPGA、110 CPUコア、122 ブロックA、124 ブロックB、126 ブロックC、130 セレクタ、135 メモリコントローラ、200 再構成制御回路、220 EEPROM、240 外部メモリ。

Claims (3)

  1. 回路構成を部分的に再構成可能な再構成可能回路と、
    前記再構成可能回路の回路構成の再構成を制御する再構成制御手段と、
    を備え、
    前記再構成制御手段は、
    1つのパイプラインを構成し且つ前記再構成可能回路上に同時に再構成可能な複数の部分回路を、前記パイプラインの先頭の部分回路から順に前記再構成可能回路上に再構成し、再構成された部分回路から順に起動していくデータ処理装置であって
    前記部分回路を前記再構成可能回路上に再構成する際に、前記パイプラインにおける当該部分回路の直前の部分回路が出力してメモリに記憶されたデータを、当該メモリから当該部分回路へと入力するための第1の入力回路と、当該部分回路から出力されたデータを前記メモリに記憶するための第1の出力回路と、を更に再構成し、
    前記部分回路から出力されたデータが前記パイプラインにおける当該部分回路の次の部分回路に出力されるようにするための第2の出力回路と、前記第1の出力回路と前記第2の出力回路を択一的に選択する出力選択回路と、を更に再構成し、
    前記データ処理装置は、更に、
    前記次の部分回路が前記再構成可能回路上に再構成される前は前記出力選択回路が前記第1の出力回路を選択するように制御し、前記次の部分回路が前記再構成可能回路上に再構成された後は前記出力選択回路が前記第2の出力回路を選択するように制御する選択制御手段、を更に備える、
    ことを特徴とするデータ処理装置。
  2. 回路構成を部分的に再構成可能な再構成可能回路と、
    前記再構成可能回路の回路構成の再構成を制御する再構成制御手段と、
    を備え、
    前記再構成制御手段は、
    1つのパイプラインを構成し且つ前記再構成可能回路上に同時に再構成可能な複数の部分回路を、前記パイプラインの先頭の部分回路から順に前記再構成可能回路上に再構成し、再構成された部分回路から順に起動していくとともに、
    1つのパイプラインを構成し且つ前記再構成可能回路上に同時に再構成可能な複数の部分回路からなる組を表す回路情報を複数組分有しており、
    当該複数組のうちの第1の組の回路情報に従って当該第1の組の複数の部分回路をパイプラインにおける順序に従って再構成して起動し、当該第1の組の複数の部分回路によるデータ処理の後、当該複数組のうちの第2の組の回路情報に従って当該第2の組の複数の部分回路をパイプラインにおける順序に従って再構成して起動する組順次再構成制御を実行し、
    前記第2の組のパイプラインにおける先頭の部分回路は、前記第1の組のパイプラインにおける先頭の部分回路以外の部分回路と干渉しない領域に再構成されるよう設計されており、
    前記組順次再構成制御では、前記第1の組のパイプラインの先頭の部分回路がデータ処理を完了した後、当該パイプラインの他の部分回路がデータ処理を完了する前に、前記第2の組の複数の部分回路のうちのパイプラインの先頭の部分回路の再構成を開始する、
    ことを特徴とするデータ処理装置。
  3. 前記各部分回路を再構成するのに要する部分回路再構成時間は互いに同等であり、
    前記データ処理装置は、
    処理対象のデータを前記複数の部分回路からなるパイプラインで処理するのに要するデータ処理時間の方が、前記部分回路再構成時間より長い場合、前記処理対象のデータを前記複数の部分回路の個数に分割し、分割結果の部分データごとに、前記複数の部分回路の先頭の部分回路に入力する分割入力手段、
    を更に備える請求項1に記載のデータ処理装置。
JP2010054133A 2010-03-11 2010-03-11 データ処理装置 Expired - Fee Related JP5504985B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010054133A JP5504985B2 (ja) 2010-03-11 2010-03-11 データ処理装置
US12/891,352 US8299816B2 (en) 2010-03-11 2010-09-27 Data processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010054133A JP5504985B2 (ja) 2010-03-11 2010-03-11 データ処理装置

Publications (2)

Publication Number Publication Date
JP2011186981A JP2011186981A (ja) 2011-09-22
JP5504985B2 true JP5504985B2 (ja) 2014-05-28

Family

ID=44561060

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010054133A Expired - Fee Related JP5504985B2 (ja) 2010-03-11 2010-03-11 データ処理装置

Country Status (2)

Country Link
US (1) US8299816B2 (ja)
JP (1) JP5504985B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010111099A (ja) * 2008-11-10 2010-05-20 Canon Inc 画像処理装置およびその制御方法
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9116751B2 (en) * 2011-02-08 2015-08-25 Canon Kabushiki Kaisha Reconfigurable device, processing assignment method, processing arrangement method, information processing apparatus, and control method therefor
US9448847B2 (en) * 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
JP5994679B2 (ja) 2013-02-26 2016-09-21 株式会社ソシオネクスト 処理装置、及び処理装置の制御方法
JP2015149025A (ja) 2014-02-07 2015-08-20 キヤノン株式会社 画像処理装置およびその制御方法、並びにプログラム
JP2015162760A (ja) * 2014-02-26 2015-09-07 キヤノン株式会社 画像処理装置、その制御方法及びプログラム
JP6370063B2 (ja) 2014-03-04 2018-08-08 キヤノン株式会社 画像処理装置及びその制御方法、並びにプログラム
JP6187345B2 (ja) * 2014-03-25 2017-08-30 三菱電機株式会社 映像処理装置および映像表示装置
JP6598432B2 (ja) 2014-06-24 2019-10-30 キヤノン株式会社 画像処理装置、その制御方法およびプログラム
JP2016035692A (ja) * 2014-08-04 2016-03-17 キヤノン株式会社 画像処理装置、システム、情報処理方法及びプログラム
JP2016103755A (ja) * 2014-11-28 2016-06-02 キヤノン株式会社 情報処理装置、情報処理装置を備えた画像処理装置、その制御方法及びプログラム
JP6435826B2 (ja) * 2014-12-09 2018-12-12 株式会社リコー データ処理装置およびデータ処理方法
JP2016111629A (ja) 2014-12-09 2016-06-20 キヤノン株式会社 画像処理装置、その制御方法およびプログラム
JP2016111633A (ja) * 2014-12-09 2016-06-20 キヤノン株式会社 回路情報に従って論理回路を構成可能な回路を持つデバイスと、複数の制御手段とを有する情報処理システム
JP6516489B2 (ja) 2015-01-29 2019-05-22 キヤノン株式会社 情報処理装置
JP6816380B2 (ja) * 2016-04-15 2021-01-20 オムロン株式会社 画像処理装置、画像処理方法、情報処理プログラム、および記録媒体
JP6786857B2 (ja) * 2016-04-15 2020-11-18 オムロン株式会社 画像処理装置、光学コード読取装置、画像処理方法、情報処理プログラムおよび記録媒体
JP6642257B2 (ja) 2016-05-11 2020-02-05 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP6823251B2 (ja) * 2016-10-13 2021-02-03 富士通株式会社 情報処理装置、情報処理方法及びプログラム
JP6713410B2 (ja) * 2016-11-21 2020-06-24 日立オートモティブシステムズ株式会社 電子制御装置
WO2018169911A1 (en) 2017-03-14 2018-09-20 Yuan Li Reconfigurable parallel processing
JP6824806B2 (ja) * 2017-04-10 2021-02-03 東芝デベロップメントエンジニアリング株式会社 管理装置
JP2018206195A (ja) * 2017-06-07 2018-12-27 日本電信電話株式会社 演算システム、演算システムの制御方法およびプログラム
US11119835B2 (en) 2017-08-30 2021-09-14 Intel Corporation Technologies for providing efficient reprovisioning in an accelerator device
JP7136436B2 (ja) * 2018-04-27 2022-09-13 Necソリューションイノベータ株式会社 回路再構成装置、制御方法、及び制御プログラム
JP2020181599A (ja) * 2020-07-21 2020-11-05 オムロン株式会社 画像処理装置、光学コード読取装置、画像処理方法、情報処理プログラムおよび記録媒体
US11570125B2 (en) * 2020-07-24 2023-01-31 Mellanox Technologies, Ltd. Fast optical switch

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3684901B2 (ja) * 1999-03-02 2005-08-17 富士ゼロックス株式会社 情報処理システム
JP2000255117A (ja) * 1999-03-11 2000-09-19 Fuji Xerox Co Ltd 印刷処理装置および印刷処理方法
JP3832557B2 (ja) 2000-05-02 2006-10-11 富士ゼロックス株式会社 プログラマブル論理回路への回路の再構成方法および情報処理システム
US8058899B2 (en) * 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
AU2002220600A1 (en) * 2000-10-06 2002-04-15 Pact Informationstechnologie Gmbh Cell system with segmented intermediate cell structure
US7157934B2 (en) * 2003-08-19 2007-01-02 Cornell Research Foundation, Inc. Programmable asynchronous pipeline arrays
JP4004052B2 (ja) 2003-09-24 2007-11-07 株式会社東芝 論理回路装置、プログラマブル論理回路の動作方法
FR2860313B1 (fr) * 2003-09-30 2005-11-04 Commissariat Energie Atomique Composant a architecture reconfigurable dynamiquement
US20060218424A1 (en) * 2005-03-23 2006-09-28 Miron Abramovici Integrated circuit with autonomous power management
JP5018480B2 (ja) 2005-09-05 2012-09-05 日本電気株式会社 情報処理装置
JP4861030B2 (ja) * 2006-03-24 2012-01-25 株式会社東芝 半導体装置
JP5087884B2 (ja) * 2006-08-11 2012-12-05 富士通セミコンダクター株式会社 データ処理ユニット、およびこれを使用したデータ処理装置
JP4156010B2 (ja) * 2007-03-19 2008-09-24 三洋電機株式会社 処理装置

Also Published As

Publication number Publication date
US20110225415A1 (en) 2011-09-15
US8299816B2 (en) 2012-10-30
JP2011186981A (ja) 2011-09-22

Similar Documents

Publication Publication Date Title
JP5504985B2 (ja) データ処理装置
US11386644B2 (en) Image preprocessing for generalized image processing
US8482571B2 (en) Information processing processing apparatus, method for controlling information processing apparatus, and program
US6820187B2 (en) Multiprocessor system and control method thereof
JP6669961B2 (ja) プロセッサ、再構成可能回路の制御方法及びプログラム
US7724984B2 (en) Image processing apparatus
WO2018077295A1 (zh) 一种卷积神经网络的数据处理方法和装置
US10540200B2 (en) High performance context switching for virtualized FPGA accelerators
JP2012234337A (ja) 画像データ処理装置及びプログラム
JP7132043B2 (ja) リコンフィギュラブルプロセッサ
US8312409B1 (en) Multi-threaded deterministic router
US9172839B2 (en) Image forming apparatus, control method and storage medium
JP5007838B2 (ja) 情報処理装置および情報処理プログラム
JP2006236106A (ja) データ処理装置及びデータ処理方法
JP5533330B2 (ja) データ処理装置
US10671429B2 (en) Circuit assignment within reconfigurable device based on predicted shortest processing completion time
KR100781358B1 (ko) 데이터 처리 시스템 및 그의 데이터 처리방법
JP2009025953A (ja) 演算処理装置及び演算処理プログラム
JP2016110499A (ja) データ処理装置およびデータ処理方法
JP7278150B2 (ja) 画像処理装置、撮像装置、画像処理方法
US9760285B2 (en) Image processing system and image processing apparatus for configuring logical circuit on circuit according to configuration data
JP6786955B2 (ja) 再構成可能論理回路
JP6111680B2 (ja) 信号処理装置およびプログラマブルロジックデバイスの構成方法
JP6160317B2 (ja) 画像処理装置及びプログラム
WO2019077933A1 (ja) 演算回路および演算方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140131

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: 20140218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140303

R150 Certificate of patent or registration of utility model

Ref document number: 5504985

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees