説明

データストリーム処理装置

【課題】連続的なデータストリームを処理するためのパラメータを有効に高速メモリに蓄えて利用するデータストリーム処理装置を提供する。
【解決手段】連続的なデータストリームを順次処理する処理手段(処理部5)と、データストリームを処理するためのパラメータが記憶され処理手段の処理する個々のデータに応じてランダムにアクセスされる記憶手段とを備え、記憶手段には、処理手段が現在処理しているデータストリームを処理するための現パラメータと、次のデータストリームを処理するための次パラメータとが順次切り替えて記憶される少なくとも2つの記憶領域(メモリ3A、3B)が設けられる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は連続的なデータストリームを順次処理する処理装置に関する。特に、データストリームの個々のデータをそのデータ値に対応するパラメータを用いて処理する装置に関する。
【背景技術】
【0002】
連続的なデータストリームをパラメータに従って高速に処理するためには、通常、パラメータデータを大容量のメモリに記憶しておき、個々のデータごとにメモリから必要なパラメータを読み出しながら処理する。例えば画像データであれば、各ラインごとにライン特有のライン補正を行う1次元Lut(Look up Table)処理や、異なる色空間間で色彩値データを変換する3次元Lut処理では、それぞれに対応したルックアップテーブルがパラメータとして必要となり、閾値との比較を行うスクリーン処理では、閾値データがパラメータとして必要となる。
【0003】
一方、画素データの処理分野では、出力装置などの進化と大画面化・高解像度化などにより、処理対象画素数が大幅に増加しており、それに伴い、1画素を処理する時間が大幅に短くなっている。その結果、画素を処理するにあたりメモリに逐次アクセスするのでは、処理時間が間に合わない状況になってきている。例えば、200MHzで動作するASIC(Application Specific Integrated Circuit)において、200MHzごとに処理が終了した画素データが出力される必要がある。ASICやFPGA(Field Programmable Gate Array)などのハードウェアでは、複数の処理がパイプラインで実行されるので、各処理は200MHzで動作すればよい。しかし、処理中にメモリ参照が必要になると、このメモリ参照も200MHzのサイクルタイムで行う必要がある。このサイクルタイムは、メモリ参照としてはかなりの高速動作である。特に、ランダムアクセスが要求されるLut処理を実行するような場合には、このような高速動作を汎用の大容量メモリで実現することはかなり困難である。
【0004】
高速ランダムアクセスを実現するためは、ASICに内蔵された高速デバイス中の高速メモリにデータを格納して処理することが考えられる。しかし、このような高速デバイス中の高速メモリはコストが非常に高くなるので、大画面を処理するにあたって十分なメモリを確保できないか、あるいは確保できたとしても非常に高価なものとなってしまう。
【0005】
高速ランダムアクセスを実現するひとつの方法として、使用頻度が高いデータは高速メモリに読み込んで処理する方法がある(特許文献1、2参照)。キャッシュ動作も類似の方法である。これらの方法では、高速メモリに必要なデータが存在しない場合に、そのデータを高速メモリに読み込むことが一般的である。また、処理にCPU(Central Processing Unit)を前提とするものでは、必要な命令を予測してあらかじめ読み込むという方法もある。。
【特許文献1】特開平11−3324号公報
【特許文献2】特開2003−132347号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかし、使用頻度の高いデータを高速メモリに書き込んで処理する方法では、高速メモリに必要な命令・データが必ず存在するという保証はないので、データ・命令が存在しない場合の制御を考慮する必要がある。データが存在しない場合に必要なデータを読み込むのでは、必要なデータの読み込みが完了するまで、処理の流れが止まってしまうことになる。また、データ・命令が存在しない場合の制御を考慮する場合も同様な問題が発生するほか、存在しない場合のデータフローを考慮する必要があるので、制御が複雑になる。
【0007】
例えば、特許文献1に記載の技術では、システムバスに対して、内部メモリと外部メモリとにデータを読み込み、高速処理を実現するために内部メモリをベースに処理を行う。しかし、内部メモリに必要なデータが無ければ、必然的に、内部メモリと外部メモリのデータの交換が発生する。データの交換時においては、処理が停止するおそれがある。また、データ交換の制御が複雑になってしまう。
【0008】
引用文献2に記載の技術では、内蔵メモリにアクセス頻度の高いデータが格納される。内蔵メモリのデータが不要になると、置換命令が発せられて、外部メモリのデータとデータ置換を行う。この技術は、高速化は可能であるが、データストリームを処理するにあたって、内部メモリに必要なデータが存在することは保証されていない。内蔵メモリにデータがない場合は、データ置換処理が発生するので、データ置換が終了するまでデータ処理が待たされることになる。
【0009】
本発明は、このような課題を解決し、連続的なデータストリームを処理するためのパラメータを有効に高速メモリに蓄えて利用するデータストリーム処理装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明のデータストリーム処理装置は、連続的なデータストリームを順次処理する処理手段と、データストリームを処理するためのパラメータが記憶され処理手段の処理する個々のデータに応じてランダムにアクセスされる記憶手段とを備え、記憶手段には、処理手段が現在処理しているデータストリームを処理するための現パラメータと、次のデータストリームを処理するための次パラメータとが、順次切り替えて記憶される少なくとも2つの記憶領域が設けられることを特徴とする。
【0011】
少なくとも2つの記憶領域のうち現パラメータが記憶されている記憶領域を参照して処理手段がデータストリームを処理している間に、他の記憶領域に次パラメータが格納されることが望ましい。少なくとも2つの記憶領域は、一方が書き込み処理中は他方が読み出し処理中となることが望ましい。
【0012】
処理手段は連続的なデータストリームに対する複数の処理をパイプライン処理する構成であり、記憶手段には、複数の処理のそれぞれに対して少なくとも2つの記憶領域が設けられることが望ましい。
【発明を実施するための最良の形態】
【0013】
[実施の形態の構成例]
図1は本発明の実施の形態を示すブロック構成図であり、外部メモリ1からデータストリームを取り込んで処理するデータストリーム処理装置2の構成例を示す。データストリーム処理装置2は、連続的なデータストリームを順次処理する処理手段としての処理部5と、データストリームを処理するためのパラメータが記憶され処理部5の処理する個々のデータに応じてランダムにアクセスされる記憶手段としてのメモリ3A、3Bおよびメモリ制御部4とを備える。記憶手段には、処理部5が現在処理しているデータストリームを処理するための現パラメータと、次のデータストリームを処理するための次パラメータとが順次切り替えて記憶される少なくとも2つの記憶領域として、メモリ3Aおよび3Bが設けられる。メモリ3Aおよび3Bへのパラメータの記憶、処理部5への読み出し、およびこれらの切り替えはメモリ制御部4の制御により行われる。データストリーム処理装置2はASICあるいはFPGAにより構成される。
【0014】
本実施の形態では、基本的に、必要なデータのみを高速デバイスであるデータストリーム処理装置2のメモリ3A、3Bに読み込みながら処理を実施する。一般に、高速デバイスもかなりの量の内蔵メモリを保持している。必要なパラメータをすべて高速内蔵メモリに格納することはできないが、処理に必要な部分の容量のメモリに、使用する必要な部分のデータを格納して処理を実現することは可能である。すなわち、高速内蔵メモリへのデータ格納に際し、パラメータデータを格納する領域(メモリ3A、3B)を2つ以上設け、ある時間に注目した場合に、処理に使用しているデータ格納領域と、外部データを読み込むデータ格納領域を別々に動作するようにすることによって、データ読み込みを考慮せずに処理動作を行うことが可能である。
【0015】
一方、データストリームについては、外部メモリ1からのデータ転送においても、バッファを設定することによって、DDR(Double Data Rate)メモリなどのバーストモードにてデータを高速転送して処理することができる。
【0016】
基本的に、処理部5は、データとパラメータを並行して読み込み、データ処理を実施する。パラメータについて、現在処理している領域に関してはメモリ3Aのパラメータデータを使用し、外部からはメモリ3Bに読み込む。次の領域では、メモリ3Bからのパラメータデータを使用し、外部からはメモリ3Aにパラメータデータを読み込む。処理対象のデータストリームは連続的なデータであり、データ制御は非常に簡単であってランダムアクセスの必要はないので、パラメータデータのみをメモリ3A、3Bに格納する。したがって、パラメータ格納分の2倍の内蔵メモリ量だけで高速処理が実現可能である。
【0017】
[パラメータを含む画像処理の例]
データストリームがパラメータデータを含む連続的な画像データである場合の処理を例に説明する。
【0018】
この場合、外部メモリ1にはパラメータデータを含む画像データが記憶される。データストリーム処理装置2は、外部メモリ1から画像データとパラメータデータを受け取り、パラメータデータに基づいて、画像データ処理を実施する。パラメータデータは、画像処理に必要な分だけをデータストリーム処理装置2のメモリ3Aまたは3Bに格納して処理を実行する。すなわち、ある単位の塊の領域を処理するためのパラメータとして、一度取り込んだパラメータをメモリ3Aまたは3Bに保存しておき、複数画素に対して、取り込んだパラメータを用いて処理を実施する。処理済みのデータは、印刷装置あるいはディスプレイ等の次の処理デバイスあるいは出力デバイスに出力する。デバイスに直接出力せず、外部メモリ1にデータを書き戻し、外部メモリ1から他のデバイスにデータを出力することもできる。
【0019】
また、連続画像データを処理する場合は、外部から外部メモリ1に対して画像データが入力されるような構造とする。これにより、連続する画像データを処理することが可能である。
【0020】
[メモリの処理方法]
図2はメモリ3A、3Bの使用方法を説明する図であり、(a)はあるタイミングにおけるメモリ動作、(b)は別なタイミングにおけるメモリ動作を示す。データストリーム処理装置2内において、パラメータ用のメモリは2つ、すなわちメモリ3A、3Bに分散されている。一方は、外部からパラメータをデータ入力して保存するRAM(図2(a)ではメモリ3A、図2(b)ではメモリ3B)、他方は画像データの処理に用いるための読み出しメモリ(図2(a)ではメモリ3B、図2(b)ではメモリ3A)である。2つのメモリ3A、3Bは、領域ごとに動作が交代する。動作の交代であるパラメータデータ入力と読み出しの切り替えは、図1に示したメモリ制御部4により行う。例えば、画像データの1ラスタラインごとに使用パラメータが変化する場合は、1ラインごとにRAMの動作が入れ替わる。
【0021】
[メモリを参照する処理の例]
図3は処理部5によるメモリ参照例を示すフローチャートであり、メモリ参照がLut参照の場合の例を示す。各ラインごとにライン特有のライン補正を実施するための1次元Lut参照を行うことを想定する。このライン補正テーブルが、パラメータとしてメモリ3A、3Bに保存される。処理部5は、画像データストリームにより画素値が入力されると(ステップS1)、Lut参照するアドレスを決定して(ステップS2)、メモリ3Aまたは3B(図3では参照番号「3」を省略して示す)にアクセスしてメモリ参照を行う(ステップS3)。この処理を実施するために、処理部5内に、メモリを含めた形でLut参照回路ブロックを構成することができる。Lut参照に必要なパラメータ数は、入力データが8bitデータの場合、8bit表現される256個となる。RGB(赤、緑および青)の3色カラーを処理する場合、256×3個のパラメータが必要となる。
【0022】
図4は処理部5によるメモリ参照の別の例を示すフローチャートであり、メモリ参照がスクリーン処理の場合の例を示す。この場合は、画像データストリームとして画素の位置が入力され(ステップS11)、その画素の位置からメモリ参照するアドレスを決定して(ステップS12)、メモリ参照を行う(ステップS13、図4においても、メモリの参照番号「3」を省略する)。メモリ参照により得られた値(閾値)と画素データを閾値比較して(ステップS14)、その結果(スクリーン処理結果)を出力する(ステップS16)。
【0023】
図5は図4の処理で想定しているスクリーン処理のスクリーンの概念と処理方向を説明する図である。基本的に画像データに画像サイズよりも小さいスクリーンを格子状に並べて、繰り返してスクリーン処理を用いることを考えている。ここでは、画像処理方向(x方向)を主走査とするラスタスキャンで処理することを前提としており、x方向に5、y方向に4のスクリーンにて画像全体をカバーできる。例えば、スクリーンサイズが32×32の場合、x方向は32×5=160の画素、y方向は32×4=128の画像を処理対象としている。スクリーンに注目して特定ラインに関して考えると、画像処理方向(図ではx方向)処理に必要なlライン分のスクリーンの閾値だけがメモリ3Aまたは3Bに存在すればよい。さらに、格子状に繰り返し同じ閾値を用いるとなると、各ラインともにスクリーンサイズ(例えば32)の閾値のみをメモリ3Aまたは3Bにもち、画像データ位置を用いて、処理部5で繰り返し閾値をメモリ3Aまたは3Bから読み出すようにすればよい。この場合、各ラインごとに必要なパラメータ数は、1個のスクリーンサイズ分である。
【0024】
例えばメモリ3Bを用いてデータ処理しているとすると、その間に、データストリームで入力されたパラメータデータは、メモリ3Aに入力される。そして、次のラインの処理では、メモリ3Aとメモリ3Bの動作条件が入れ替わり、処理部5は途切れることなく連続して処理を続行できる。
【0025】
図6は図3および図4の2つの処理をパイプライン的に実現する場合のフローチャートを示す。ここでは、図3の処理と同様にLut参照(ステップS21からS23)した後に、なんらかの処理αを実施して(ステップS24)から、図4の処理と同様のスクリーン処理を行う(ステップS25〜S29)。ここで、メモリ3A、3BをそれぞれメモリA1、A2、メモリB1、B2に分割し、メモリA1、B1はLut参照に、メモリA2、B2はスクリーン処理に用いるものとする。
【0026】
メモリA1、A2に対してパラメータ入力するには、別々にデータ入力を行ってもよいが、メモリA1、A2に入力するパラメータデータ(Lutデータおよびスクリーンデータ)をシーケンシャルに並べて、データ力ストリームの負荷を分散することもできる。
[外部メモリからのデータの読み込み]
【0027】
パラメータデータと画像データを外部メモリ1から同時に読み込む場合、メモリデータ帯域が問題になる場合がある。複数のパラメータを外部メモリ1から一度に読み出そうとすると、パラメータデータを読み出すタイミングにおいて外部メモリ1へのデータアクセスが集中して、画像データの転送が遅くなる場合もある。そこで、パラメータデータの読み出しを集中して行うのではなく、時系列で順番に行うことによって、外部メモリ1ヘのアクセスを分散させることができる。パラメータデータは、1ラインを処理する間に、次の1ラインを処理するために必要なパラメータがすべて読み込まれればよい。例えば、解像度360bpiのA4の画像を短長方向を主走査として処理する場合、約3000画素もの画素を処理する必要がある。したがって、パラメータ入力を画素と同数行うように分散した場合、約3000個のパラメータデータを入力することが可能である。図3に示した処理の場合、RGB3色分のデータを用いても、Lut256×3=756であるので、スクリーンサイズを2000程度にすることまで対応可能である。処理部3は大量の画素データをストリームとして処理することを前提としているので、時系列にシーケンシャルにパラメータを入力する方法は有効である。
【0028】
[その他の実施の形態]
図3ないし図6の説明では1ラインごとにデータを入れ替えるものとしたが、数ラインに同じパラメータを用いて処理することもありうる。この場合、パラメータを入れ替える必要がある単位を1ラインズブロックとすると、ブロックごとにメモリ3A、3Bの切り替えを行うようにすればよい。
【0029】
また、1ラインと1ラインズブロックの2つのパラメータを必要とする場合には、例えば、ラインパラメータとラインズブロックのパラメータとをシーケンシャルにして、メモリ3A、3Bに書き込んでもよい。
【0030】
図7は、1ラインズブロックパラメータ量が多く、1ラインのデータ処理中にメモリ書き込みできない場合において、メモリデータを分割して書き込みデータとする例を示す。1ラインズブロックデータを分割し、各ラインのラインパラメータにシーケンシャルに接続して、データを書き込む。例えば、3次元Lut参照が複数ラインごとに切り替わる場合に適用できる。3次元色空間テーブルは、例えば赤、緑および青の各色彩値で表されるRGBデータを機器依存性のないL*a*b*空間の色彩値データ、あるいは印刷用の色空間であるCMY(シアン、マゼンタ、イエロー)空間の色彩値データに変換するために利用される。この3次元色空間テーブルがパラメータとしてメモリ3A、3Bに保存される。3次元Lut参照に必要なパラメータ数は、3次元Lutのグリッド数が17の場合、17の3乗個である4913個ものパラメータが必要である。先ほどと同様、A4で360dpiの画像を対象とすることを考えると、パラメータ入力を画素と同数行うように分散した場合、少なくとも2ラインを1ラインズブロックとして取り扱うことで対応が可能になる。
【0031】
また、1ラインのデータ処理中に必ずパラメータデータを送り込む必要がなく、複数ブロックの処理中にパラメータデータをメモリ3A、3Bに書き込むことが許容されている場合は、パラメータデータを分割することによって、パラメータストリームの負荷を分散することができる。結果として画像データのメモリ読み出しなどの影響を最小限に抑えることができ、処理系に影響がない範囲にて処理を継続できる。
【0032】
外部メモリ1としてDDRなどのDRAMメモリを用いている場合、メモリに連続して配置されているデータとパラメータを連続して読み込むことによって、メモリデータ読み出しに関するオーバヘッドをなくすことが可能である。データストリーム処理装置2内に外部メモリ1からのシーケンシャルデータを受け取るためのバッファを設けることで、メモリからの連続データを受けることが可能である。すなわち、いくつかの塊ごとにデータを読み出し、それをデータストリーム処理装置2で受信し、処理部5にデータストリームとして供給する。
【0033】
以上説明したように、本発明では、連続データストリームを前提としている。この連続データストリームは画像データと次の領域にて用いるパラメータデータとにより構成され、連続するデータストリームを読み込むにあたって、パラメータデータは内蔵のメモリ3A、3Bに読み込む。処理部5では、1つ前以上にメモリ3Aまたは3Bに読み込み済みのパラメータを用いて、連続する画像データのストリームを処理する。この構成により、連続ストリームに対して、データ入力を途切れることなく連続処理することが可能である。また、必要なパラメータのみをメモリ3A、3Bに収めて処理するので、メモリ3A、3Bの制御が非常に容易である。画像データは内蔵メモリに格納する必要がなく、連続データとして入力されてきたものを処理すればよいので、必要なパラメータのみのメモリ領域を面数分のみ用意すれば充分であり、使用内蔵メモリ量を非常に少なくできる。
【0034】
データストリーム処理装置5内のメモリ、すなわちメモリ3A、3Bは、パラメータを格納するために必要な容量の少なくとも2面分以上あればよく、連続データストリームをパラメータを読み込む領域(例えばメモリ3A)と、画像データに対して処理に用いるパラメータ領域(同メモリ3B)は別の面で、ある領域の画像データを処理している間は、それぞれ書き込み、読み込みの一方のみを行う。メモリ3A、3Bとしては、画像処理データの連続ストリームの入出力と同じサイクルタイムで動作するものを用いることができ、メモリコストを下げることができる。また、メモリ3A、3Bの制御も非常に単純である。
【0035】
処理部5は、データストリームに対して、パイプライン処理でデータ処理を行うこともできる。ハードウェアにより処理することを前提とすることによって、データストリーム処理装置2の各部はデータストリームと同じサイクルタイムで動作すればよい。メモリ3A、3Bも共通の動作でよいので、データストリーム処理装置2の設計が簡易になる。
【0036】
処理部5が複数の処理をパイプライン処理により実行し、それぞれの処理に使用するパラメータが異なる場合には、各パラメータ用のメモリ領域に順番にパラメータデータを入力することが望ましい。別々に用いるパラメータをシーケンシャルに入力することによって、並列にパラメータを入力する場合と比較して、データ入力ストリームの負荷分散を実現できる。負荷分散されることによって、画像データがパラメータ入力によって妨げられることが少なくなり、全体として処理のスループットが低下する危険を非常に小さくできる。
【0037】
複数列の処理にまたがって同一パラメータを使用する場合には、分散した列と並行してパラメータ入力を行うことができる。これによって、大きなサイズのパラメータに対応することが可能である。また、複数列に同一パラメータを使用する場合、分散した列と並行してパラメータ入力を行うことによって、パラメータ入力をデータ入力と比較して非常に少なくすることが可能であり、パラメータ入力に伴うオーバヘッドを大幅に少なくできる。
【図面の簡単な説明】
【0038】
【図1】本発明の実施の形態を示すブロック構成図であり、外部メモリからデータストリームを取り込んで処理するデータストリーム処理装置の構成例を示す。
【図2】メモリの使用方法を説明する図であり、(a)はあるタイミングにおけるメモリ動作、(b)は別なタイミングにおけるメモリ動作を示す。
【図3】処理部によるメモリ参照例を示すフローチャートであり、メモリ参照がLut参照の場合の例を示す。
【図4】処理部によるメモリ参照の別の例を示すフローチャートであり、メモリ参照がスクリーン処理の場合の例を示す。
【図5】スクリーン処理におけるスクリーンの概念と処理方向を説明する図である。
【図6】2つの処理をパイプライン的に実現する場合のフローチャートである。
【図7】メモリデータを分割して書き込みデータとする例を示す図である。
【符号の説明】
【0039】
1 外部メモリ
2 データストリーム処理装置
3A、3B メモリ(記憶手段)
4 メモリ制御部(記憶手段)
5 処理部(処理手段)

【特許請求の範囲】
【請求項1】
連続的なデータストリームを順次処理する処理手段と、
上記データストリームを処理するためのパラメータが記憶され上記処理手段の処理する個々のデータに応じてランダムにアクセスされる記憶手段と
を備え、
上記記憶手段には、上記処理手段が現在処理しているデータストリームを処理するための現パラメータと、次のデータストリームを処理するための次パラメータとが、順次切り替えて記憶される少なくとも2つの記憶領域が設けられる
ことを特徴とするデータストリーム処理装置。
【請求項2】
前記少なくとも2つの記憶領域のうち前記現パラメータが記憶されている記憶領域を参照して前記処理手段が前記データストリームを処理している間に、他の記憶領域に前記次パラメータが格納されることを特徴とする請求項1記載のデータストリーム処理装置。
【請求項3】
前記少なくとも2つの記憶領域は、一方が書き込み処理中は他方が読み出し処理中となることを特徴とする請求項1または2記載のデータストリーム処理装置。
【請求項4】
前記処理手段は前記連続的なデータストリームに対する複数の処理をパイプライン処理する構成であり、
前記記憶手段には、上記複数の処理のそれぞれに対して少なくとも2つの記憶領域が設けられた
ことを特徴とする請求項1から3のいずれか1項に記載のデータストリーム処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2009−237677(P2009−237677A)
【公開日】平成21年10月15日(2009.10.15)
【国際特許分類】
【出願番号】特願2008−79978(P2008−79978)
【出願日】平成20年3月26日(2008.3.26)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】