(58)【調査した分野】(Int.Cl.,DB名)
第1メモリ及び第2メモリを再構成可能回路上に構成し、前記第1メモリ及び第2メモリを交互にそれぞれ読み出しメモリと書き込みメモリとして再構成して動作させる制御を行う再構成制御手段と、
前記読み出しメモリからデータを読み出す読み出し手段と、
データの読み出しと並行して前記書き込みメモリにデータを書き込む書き込み手段と、
前記読み出し手段によるデータの読み出し量をX、読み出しの並列度をn、前記書き込み手段によるデータの書き込み量をLとすると、
X/n≧L/n’
となるように、前記書き込み手段の並列度n’を制御する並列度制御手段と、
を備えるデータ処理装置。
【発明を実施するための形態】
【0012】
以下、図面に基づき実施形態について、印刷データを処理する場合を例にとり説明する。
【0013】
<第1実施形態>
図1は、本実施形態におけるデータ処理装置の概念構成図である。本実施形態のデータ処理装置は、バッファメモリのデータ保持量を処理単位に必要な分だけに限定してメモリ容量を削減するとともに、内部の論理回路構成を高速に(1クロックサイクルで)再構成可能な動的再構成可能プロセッサ(DRP:Dynamically Reconfigurable Processor)を用いることで、データの書き込みとデータの読み出しを並行して行う。
【0014】
すなわち、バッファメモリとして、メモリ(第1メモリ)18aとメモリ(第2メモリ)18bが設けられ、これらのメモリ18a及びメモリ18bをDRPにより切り替えて使用する。あるタイミングではメモリ18aを読み出し用メモリ、メモリ18bを書き込み用メモリとして構成して、入力画素データ及び書き込みデータを用いてメモリ18aからデータを読み出すと共にメモリ18bにデータを書き込む。また、次のタイミングでは、メモリ18aを書き込みメモリ、メモリ18bを読み出しメモリとして構成して、メモリ18aにデータを書き込むと共にメモリ18bからデータを読み出す。さらに、次のタイミングでは、メモリ18aを読み出しメモリ、メモリ18bを書き込み用メモリとして構成し、メモリ18aからデータを読み出すと共にメモリ18bにデータを書き込む。すなわち、第1メモリと第2メモリを交互にそれぞれ読み出しメモリと書き込みメモリとして機能させる。このような切替処理を繰り返す。
【0015】
メモリ18a及びメモリ18bの容量は、処理単位のデータを保持するために必要な容量とすればよく、処理単位が1ページのライン毎である場合、1ライン分のデータを保持するために必要な容量でよい。DRPにより読み出し用メモリと書き込み用メモリを交互に再構成することで読み出しと書き込みを同時並行で実施することができ、書き込みと読み出しを交互に切り替えてシーケンシャルに実行する場合に比べて処理が高速化する。
【0016】
メモリ18a及びメモリ18bは、DRPコアで実現し得る。DRPコアは公知であり、簡単に説明すると、論理回路を構成するための複数の回路要素(PE:プロセッサエレメント)とこれらPE間の接続を構成するための配線リソースを備え、PEの設定やPE間の接続を変更することで種々の構成の論理回路として動作するものである。記憶部に記憶された複数のコンフィグデータのうちのいずれかを有効(アクティブ)とすることで、そのコンフィグデータに従ってPEの設定やPE間の配線の組み替えが行われ、所望の処理回路が構成される。コンフィグデータをコンフィグデータA及びコンフィグデータBとし、コンフィグデータAを有効とすることでメモリ18aを用いた読み出し回路とメモリ18bを用いた書き込み回路が構成され、コンフィグデータBを有効とすることでメモリ18aを用いた書き込み回路とメモリ18bを用いた読み出し回路が構成される。
【0017】
メモリ18a及びメモリ18bは、あるタイミングではメモリ18aが第nラインの読み出しメモリ、メモリ18bが第(n+1)ラインの書き込みメモリとなり、次のタイミングではメモリ18bが第(n+1)ラインの読み出しメモリ、メモリ18aが第(n+2)ラインの書き込みメモリとなるため、基本的には同一容量とすることが望ましいが、必ずしもこれに限定されるものではない。
【0018】
図2は、参考のため従来装置の概念構成図、すなわち1個のメモリに対して読み出しと書き込みを交互に行う場合の構成図である。書き込み/読み出し切替制御部11、及び書き込み/読み出しメモリ18が設けられる。書き込み/読み出し切替制御部11は、所定画素分のデータを一括してメモリ18に書き込み、書き込み処理を行った後に、読み出しに切り替えて、当該メモリ18から所定画素分のデータを一括して読み出す。
【0019】
図3(a),(b)は、本実施形態のデータ処理装置の構成ブロック図である。データ処理装置は、読み出し側の入力制御部10と、書き込み側の入力制御部12と、読み出しアドレス生成部14と、書き込みアドレス生成部16と、データ記憶部(1)と、データ記憶部(2)と、出力制御部20と、再構成制御部22を備える。データ記憶部(1)及びデータ記憶部(2)は、
図1におけるメモリ18a及びメモリ18bとして機能し、
図3(a)ではデータ記憶部(1)が読み出しメモリのデータ記憶部(1)18aとして機能し、データ記憶部(2)が書き込みメモリのデータ記憶部(2)18bとして機能する。また、
図3(b)ではデータ記憶部(2)が読み出しメモリのデータ記憶部(2)18bとして機能し、データ記憶部(1)が書き込みメモリのデータ記憶部(1)18aとして機能する。各部は、上記のようにDRPコア、あるいはCPUとDRPの混載チップで実現し得る。
【0020】
図3(a)において、入力制御部10は、読み出しデータを読み出しアドレス生成部14及びデータ記憶部(1)18aに出力する。
【0021】
入力制御部12は、書き込みデータを書き込みアドレス生成部16及びデータ記憶部(2)18bに出力する。
【0022】
読み出しアドレス生成部14は、読み出しデータに応じて読み出しアドレスを生成してデータ記憶部(1)18aからデータを読み出し、出力制御部20に出力する。
【0023】
書き込みアドレス生成部16は、書き込みデータに応じて書き込みアドレスを生成してデータ記憶部(2)18bに入力データを書き込む。
【0024】
他方、
図3(b)において、入力制御部10は、読み出しデータを読み出しアドレス生成部14及びデータ記憶部(2)18bに出力する。
【0025】
入力制御部12は、書き込みデータを書き込みアドレス生成部16及びデータ記憶部(1)18aに出力する。
【0026】
読み出しアドレス生成部14は、読み出しデータに応じて読み出しアドレスを生成してデータ記憶部(2)18bからデータを読み出し、出力制御部20に出力する。
【0027】
書き込みアドレス生成部16は、書き込みデータに応じて書き込みアドレスを生成してデータ記憶部(1)18aに入力データを書き込む。
【0028】
再構成制御部22は、コンフィグデータを切り替えることでデータ記憶部(1)とデータ記憶部(2)を再構成し、
図3(a)と
図3(b)を交互に変更する。すなわち、あるタイミングでは
図3(a)の構成としてデータ記憶部(1)18aからデータを読み出すとともにデータ記憶部(2)18bにデータを書き込み、次のタイミングでは
図3(b)の構成に変更してデータ記憶部(2)18bからデータを読み出すとともにデータ記憶部(1)18aにデータを書き込む。
図3(a)において、データ記憶部(1)18aからのデータ読み出しと、データ記憶部(2)18bへのデータの書き込みは並行して行われる。また、
図3(b)においても、データ記憶部(2)18bからのデータの読み出しと、データ記憶部(1)18aへのデータの書き込みは並行して行われる。具体的には、第1ラインのデータは入力制御部12からデータ記憶部(2)18bに供給され、第1ラインのデータはデータ記憶部(2)18bに記憶される。次に、再構成制御部22がコンフィグデータを変更し、
図3(a)の構成から
図3(b)の構成に再構成し、読み出しアドレス生成部14から読み出しアドレスが生成され、データ記憶部(2)18bから第1ラインのデータが読み出される。また、読み出しと並行して、第2ラインのデータは入力制御部12からデータ記憶部(1)18aに供給され、第2ラインのデータはデータ記憶部(1)18aに記憶される。次に、再構成制御部22がコンフィグデータを変更し、
図3(b)の構成から
図3(a)の構成に再構成し、読み出しアドレス生成部14から読み出しアドレスが生成され、データ記憶部(1)18aから第2ラインのデータが読み出される。また、読み出しと並行して、第3ラインのデータは入力制御部12からデータ記憶部(2)18bに供給され、第3ラインのデータはデータ記憶部(2)18bに記憶される。以下、同様にして最終ラインまで繰り返される。勿論、1ライン分のデータを複数回に分割して書き込み/読み出しを行ってもよい。図において、矢印24は、一つのデータ処理装置の機能が動的再構成により交互に切り替わる様子を示す。
【0029】
次に、本実施形態の書き込み/読み出しタイミングをより具体的に説明する。
【0030】
図4は、本実施形態の書き込み/読み出しタイミングを模式的に示す。また、比較のため、
図2に示す従来構成(つまり、1個の書き込み/読み出しメモリ18に対して書き込みと読み出しを交互にシーケンシャルに実行する構成)における書き込み/読み出しタイミングも併せて示す。
図4(a)は従来構成のタイミングであり、
図4(b)は本実施形態のタイミングである。一例として、書き込み/読み出しメモリ18の容量を100バイトとし、データ記憶部(1)及びデータ記憶部(2)の容量をともに25バイトとした場合である。簡略化のため、処理単位である1つのラインのデータ量は100クロック分であるとする。
【0031】
図4(a)に示すように、従来では、まず100クロック(clk)で書き込み/読み出しメモリ18に1ライン分のデータを書き込み、次に、100クロック(clk)で書き込み/読み出しメモリ18から1ライン分のデータを読み出す。1ライン分のデータの書き込み/読み出し処理は合計200クロックで行われる。なお、実際には書き込み処理と読み出し処理の間に有限の切替時間が存在するが、ここでは省略する。
【0032】
他方、
図4(b)に示すように、本実施形態では、
図3(a)の構成により25クロックで1ライン分のデータの1/4をデータ記憶部(2)に書き込む。次に、
図3(b)の構成に変更し、25クロックでデータ記憶部(2)からデータを読み出すともに、これと並行して25クロックでデータ記憶部(1)にデータを書き込む。次に、再び
図3(a)の構成に変更し、25クロックでデータ記憶部(1)からデータを読み出すとともに、これと並行して25クロックでデータ記憶部(2)にデータを書き込む。1ライン分のデータの書き込み/読み出し処理は、125クロックで行われる。なお、実際には再構成のための有限の切替時間が存在するが、ここでは省略する。
【0033】
従って、書き込み及び読み出しに要する時間は、従来では200クロックのところ、本実施形態では125クロックで済むことになり、メモリ使用量は1/2に低減されるとともに、処理時間も125/200=5/8に短縮される。
【0034】
図5は、本実施形態の書き込み/読み出しタイミングを模式的に示す。データ記憶部(1)及びデータ記憶部(2)の容量をともに50バイトとした場合である。
【0035】
図5(a)は従来のタイミングチャートであり、
図4(a)と同様に100クロック(clk)で書き込み/読み出しメモリ18にデータを書き込み、次に、100クロック(clk)で書き込み/読み出しメモリ18からデータを読み出す。
【0036】
他方、
図5(b)に示すように、本実施形態では、
図3(a)の構成により50クロックで1ライン分のデータの1/2をデータ記憶部(2)に書き込む。次に、
図3(b)の構成に変更し、50クロックでデータ記憶部(2)からデータを読み出すともに、これと並行して50クロックでデータ記憶部(1)にデータを書き込む。次に、再び
図3(a)の構成に変更し、50クロックでデータ記憶部(1)からデータを読み出すとともに、これと並行して50クロックでデータ記憶部(2)にデータを書き込む。1ライン分のデータの書き込み/読み出し処理は、150クロックで行われる。
【0037】
従って、書き込み及び読み出しに要する時間は、従来では200クロックのところ、本実施形態では150クロックで済むことになり、メモリ使用量は同一で、処理時間が150/200=3/4に短縮される。
【0038】
図6は、本実施形態の処理フローチャートである。まず、画素値を入力するとともに、メモリデータを入力する(S101a,S101b)。なお、S101a及びS101bにおいて、ステップ番号(S101)に続くアルファベット(a、b)は、これらの処理が並行して実行されることを意味する。つまり、S101aとS101bは、並行して実行される。以後のステップにおいても同様である。
【0039】
次に、読み出しアドレス生成部14で読み出しアドレスを生成するとともに、書き込みアドレス生成部16で書き込みアドレスを生成する(S102a,S102b)。生成された読み出しアドレスを用いてメモリからデータを読み出し、かつ、生成された書き込みアドレスを用いてメモリにデータを書き込む(S103a,S103b)。
図3(a)の構成では、データ記憶部(1)18aからデータを読み出し、データ記憶部(2)18bにデータを書き込む。
【0040】
そして、データの読み出し及びデータの書き込みが完了したか否かを判定し(S104a,S104b)、さらに、データの読み出しとデータの書き込みがともに完了したか否かを判定する(S105)。データの読み出し及び書き込みは、互いに独立して行われるからである。通常は、両者はほぼ同時に完了するが、まず書き込みが完了し、その後に読み出しが完了することになる。なお、読み出しが完了した後に書き込みが完了する場合もあり得るが、この場合についてはさらに後述する。
【0041】
両方完了した場合に、印刷すべきページの全ラインが完了したか否かを判定し(S106)、全ラインが完了していない場合には、コンフィグデータを変更して動的再構成を行う(S107)。すなわち、
図3(a)と
図3(b)の構成を交互に入れ替える。そして、全ラインの処理が完了するまでS101a,S101b〜S105の処理を繰り返す。
【0042】
本実施形態では、以上のように、データの読み出しと書き込みが並行して実行されるため、データの書き込み時間がデータの読み出し時間以内であれば、データの書き込み処理を、データの読み出し処理に隠蔽することが可能である。すなわち、見かけ上、データを出力制御部20から連続的に順次出力することができる。
【0043】
図7は、データの書き込み時間がデータの読み出し時間以内である典型的な場合のタイミングチャートである。
【0044】
第nラインのデータの読み出しと第(n+1)ラインのデータの書き込みを並行して実行する場合、読み出し時間Tαと書き込み時間Tβの間に、
Tα≧Tβ
の関係があれば、書き込み処理が読み出し処理に隠蔽され、動的再構成のための切替時間をTdとすると、全ライン(Nラインとする)の処理を完了するのに要する時間Tは、
T=(Tα+Td)×N
となる。当然ながら、TはTβに影響されない。
【0045】
ところが、
図8に示すように、何らかの理由で(n+1)ラインの書き込みに時間を要し、
Tα<Tβ
の関係になると、書き込み処理を読み出し処理に隠蔽できず、書き込み時間に律速されるようになり、トータルの処理時間が増大する。すなわち、全ラインの処理を完了するのに要する時間Tは、
T=(Tα+Td)×N+(Tβ−Tα)×N
となり、右辺第2項の分だけオーバヘッドとなってデータ処理装置の性能を低下させる。
このような関係は、具体的には、
(i)1回当たりの読み出しデータサイズが書き込みデータサイズよりも小さい
(ii)読み出し側の並列度が書き込み側の並列度よりも高い
(iii)入力データのフォーマットがオブジェクト(ベクタ)形式である
場合等に生じ得る。
【0046】
そこで、Tα<Tβとなる場合には、データ書き込み側の並列度を可変制御することで、Tα≧Tβとなるように制御することが望ましい。以下では、この場合の実施形態について説明する。
【0047】
<第2実施形態>
図9は、データ書き込み側の並列度を制御する模式図である。読み出し側回路50の並列度がnであるとすると、n並列のデータが一括して読み出され出力される。読み出し側のデータ量をXとすると、読み出し時間はX/nで規定される。他方、書き込み側回路60の並列度がn’であるとすると、n’並列のデータが一括して書き込まれる。書き込み側のデータ量をLとすると、書き込み時間はL/n’で規定される。従って、1回当たりの書き込み側データ量Lが与えられた場合、読み出し側のデータ量Xと、読み出し側の並列度nを用いて、
X/n≧L/n’
が成立するように、書き込み側回路60の並列度n’を制御すればよい。すなわち、デフォルトの読み出し側回路50と書き込み側回路60の並列度をnとすると、読み出し側のデータ量X及び読み出し側の並列度n並びに書き込み側のデータ量Lを用いて、書き込み側回路60の並列度をnからn’に変更するように動的再構成を行う。具体的には、
図3に示すように、入力制御部12が並列度を含む書き込み側のデータを制御するから、入力制御部12の並列度に関するコンフィグデータを、読み出し側のデータ量X及び読み出し側の並列度n並びに書き込み側のデータ量Lに応じて変更して再構成すればよい。図において、並列度n’のデータを書き込み処理する場合のコンフィグデータを、Next1stLUT(ルックアップテーブル)、Next2ndLUT、・・・と表している。
【0048】
図10は、書き込み側の並列度を動的再構成した場合のタイミングチャートである。読み出し側の並列度をnとすると、読み出し時間はTα=X/nとなる。これに対し、1回当たりの書き込みデータ量をLとすると、並列度がnのままでは書き込み時間はTβ=L/nとなり、Tα<Tβとなって全体の処理速度が書き込み時間によって制限されてしまうが、読み出し側データ量X、読み出し側並列度n、書き込み側データ量Lを用いて、
X/n≧L/n’
が成立するように書き込み側の並列度をnからn’に再構成する。これにより、書き込み時間を読み出し時間以下として書き込み処理を読み出し処理に隠蔽し、全体の処理速度の低下が抑制される。すなわち、まず、Tβ=L/n’でデータの書き込みが行われ、切替制御時間Tdで再構成が行われ、次にTα=X/nでデータの読み出しが行われるとともに、Tβ=L/n’でデータの書き込みが行われ、再び切替制御時間Tdで再構成が行われ、Tα=X/nでデータの読み出しが行われるとともに、Tβ=L/n’でデータの書き込みが行われる。全ライン(Nラインとする)の処理を完了するのに要する時間Tは、
T=(Tα+Td)×N
に抑制され、オーバヘッド(Tβ−Tα)×Nが削減される。
【0049】
図11は、本実施形態の構成ブロック図である。
図3の構成に加え、外部メモリ30から供給される入力データを用いて書き込み側の並列度(並列数)を演算する計算部32を備える。
【0050】
外部メモリ30には書き込みデータが記憶されており、計算部32は、書き込み側データ量L、読み出し側データ量X、読み出し側並列度nを用いて書き込み側並列度n’を算出し、書き込み側入力ビット数として入力制御部12に出力する。なお、デフォルトの並列度は、読み出し側及び書き込み側ともに同一値に設定する。
【0051】
入力制御部12は、書き込みデータを出力するが、そのビット数は計算部32からのビット数に応じて再構成される。入力制御部12のコンフィグデータとして複数のビット数がメモリ(ルックアップテーブル)に記憶されており、例えば、16ビット、32ビット、48ビット等と記憶される。一般的に、16ビット×Nと表し得る。これらのいずれかのビット数を有効とし、他を無効とすることで、入力制御部12のビット数が再構成される。16ビットが有効とされた場合、入力制御部12は、書き込みデータの並列度を16、つまり16ビットのデータで出力する。
【0052】
図11において、データ処理装置の構成を構成Aとし、データ記憶部(1)18aを読み出しメモリとして構成しつつ、データ記憶部(2)18bを書き込みメモリとして構成する。入力制御部12は、計算部32からの入力ビット数データを用いて書き込み側のビット数を例えば32ビットとしてデータ記憶部(2)18bに供給する。このとき、データ記憶部(1)18aから並行してデータが読み出される。
【0053】
次に、データ処理装置の構成を構成Bとし、データ記憶部(2)18bを読み出しメモリとして構成しつつ、データ記憶部(1)18aを書き込みメモリとして構成する。入力制御部12は、計算部32からの入力ビット数データを用いて書き込み側のビット数を例えば48ビットとしてデータ記憶部(1)18aに供給する。このとき、データ記憶部(2)18bから並行してデータが読み出される。
【0054】
本実施形態では、データ処理装置のメモリ機能が動的再構成されると同時に、入力制御部12の機能も動的再構成される。なお、本実施形態において、計算部32は再構成制御部22と別個の構成とする他、再構成制御部22が計算部32の機能を備え、再構成制御部22がメモリ機能を動的再構成するとともに入力制御部12の機能を再構成してもよい。
【0055】
図12は、本実施形態の処理フローチャートである。
図6の処理フローチャートに対し、さらにS201の処理が付加されたものである。
【0056】
すなわち、計算部32は、読み出し側パラメータを分析して読み出し側のデータ量Xと読み出し側の並列度nを決定する。次に、書き込み側データ量Lを用いて書き込み側データ入力ビット数を決定する。すなわち、
X/n≧L/n’
が成り立つように並列度n’、つまり入力ビット数を決定する。上記の不等式から明らかなように、入力ビット数は、読み出し側データ量Xあるいは書き込みデータ量が変動すればこれに応じて適応的に変化する。入力ビット数を決定した後、入力制御部12の出力ビット数を再構成する(S201)。
【0057】
S201以降は、
図3のS101a,S101b〜S107の処理と同一であり、データ記憶部(1)とデータ記憶部(2)を交互に入れ替えてデータの読み出し及びデータの書き込みを並列して実行する。
【0058】
以上説明したように、本実施形態では、読み出し側のデータ量、並列度、書き込み側のデータ量によらずに常に書き込み処理時間を読み出し処理時間以下に抑制することができるので、データの読み出しとデータの書き込みを並行して実行しても書き込みのオーバヘッドを除去できる。
【0059】
本実施形態では、読み出し側の並列度nを固定しているが、必要に応じて読み出し側の並列度nも可変制御してもよい。すなわち、本実施形態は、書き込み側の並列度と読み出し側の並列度をともに可変とする態様を排除するものではない。