JP2010003035A - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP2010003035A JP2010003035A JP2008160082A JP2008160082A JP2010003035A JP 2010003035 A JP2010003035 A JP 2010003035A JP 2008160082 A JP2008160082 A JP 2008160082A JP 2008160082 A JP2008160082 A JP 2008160082A JP 2010003035 A JP2010003035 A JP 2010003035A
- Authority
- JP
- Japan
- Prior art keywords
- stream
- processing
- compression
- unit
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Image Processing (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
【課題】アクセラレータシステム構成を採るデータ処理装置において、ハードウェアリソースは増加させずに、データ処理性能の低下を抑制しつつ、外部メモリの使用量を削減する。
【解決手段】再構成されたステージごとに、非蓄積型ストリームや蓄積型のストリームと、ローカルメモリの使用可能な容量に基づいて、ローカルメモリが容量オーバーとならないように、圧縮すべきストリームを特定し、特定したストリームに関して、圧縮処理や伸長処理の適用の有無を制御する。たとえば、ステージごとに圧縮閾値THを計算し(S1010)、ステージ内に圧縮器・伸長器を挿入可能であれば挿入する(S1022)。圧縮処理を適用した画像処理中に容量オーバーとなる場合は一次フォールバック処理を適用する(S1042)。一次フォールバック処理を適用してもなお容量オーバーとなる場合は二次フォールバック処理を適用する(S1046)。
【選択図】図3
【解決手段】再構成されたステージごとに、非蓄積型ストリームや蓄積型のストリームと、ローカルメモリの使用可能な容量に基づいて、ローカルメモリが容量オーバーとならないように、圧縮すべきストリームを特定し、特定したストリームに関して、圧縮処理や伸長処理の適用の有無を制御する。たとえば、ステージごとに圧縮閾値THを計算し(S1010)、ステージ内に圧縮器・伸長器を挿入可能であれば挿入する(S1022)。圧縮処理を適用した画像処理中に容量オーバーとなる場合は一次フォールバック処理を適用する(S1042)。一次フォールバック処理を適用してもなお容量オーバーとなる場合は二次フォールバック処理を適用する(S1046)。
【選択図】図3
Description
本発明は、データ処理装置に関する。特に、データ処理部や制御部とは別に、外部メモリを備えた構成において、処理を高速に行なう仕組みに関する。
画像処理などのデータ処理を実行する際、高速処理を実現するために、制御部(CPU)やメインメモリとは別に、アクセラレータと外部メモリを用意し、データ処理をアクセラレータに任せるアクセラレータシステムの仕組みが提案されている(たとえば、特許文献1〜3を参照)。
たとえば、特許文献1に記載の仕組みは、画像データに第1の処理を施す第1の処理手段と、第1の処理と並行して画像データに第2の処理を施す第2の処理手段と、第1の処理に用いる第1のメモリ手段と、第2の処理に用いる第2のメモリ手段とを備えることで、異なる複数の画像処理を高速で行なうようにしている。
特許文献2に記載の仕組みは、アクセラレータと接続し該アクセラレータに起動要求の予約を発行するCPUと、CPUが発行した要求数をカウントする要求数カウンタおよび終了した処理数をカウントする終了数カウンタを有するアクセラレータとを備え、アクセラレータは、要求数カウンタのカウンタ値が終了数カウンタのカウンタ値より大きいとき、自身を起動可能とすることで、画像処理を高速に行なうようにしている。
特許文献3に記載の仕組みは、スキャナ機能、プリンタ機能、コピー機能を制御する第1の制御手段と、プリンタ機能を異なる動作条件で第1の制御手段によるプリンタ機能を分散処理可能な第2の制御手段と、第1の制御手段または第2の制御手段の処理能力を認識する認識手段と、認識手段により認識される第1の制御手段がプリンタ部に設定されるプリンタ機能が実現可能かどうかを判断する判断手段と、判断手段による実現可能でないと判断した場合に、第1の制御手段によるプリンタ機能を分散処理すべき第2の制御手段に対する最適な動作条件を設定する設定手段とを備えることで、画像形成装置全体の消費電力を節減するようにしている。
一方、アクセラレータシステム構成を採る場合、アクセラレータと外部メモリとの間でストリーム転送(データ転送)を行ないながらデータ処理を実行する。このとき、メモリ容量オーバーとなると処理の継続ができなくなる。このため、ストリーム(データ)を圧縮して外部メモリに記憶することが考えられている。このとき、アクセラレータから外部メモリへストリームを格納するために出力ストリームごとに圧縮器を持ち、逆に、外部メモリからアクセラレータへ圧縮されたストリームを取り込むために入力ストリームごとに伸長器を持つようにする仕組みも考えられている。
本発明は、アクセラレータと外部メモリを備えたアクセラレータシステム構成を採る場合において、ハードウェアリソースは増加させずに、データ処理性能の低下を抑制しつつ、外部メモリの使用量を削減する仕組みを提供することを目的とする。
請求項1に記載の発明は、装置全体の動作を制御する中央制御部および前記中央制御部の管理の下でデータを記憶する主記憶部を具備したホスト部と、データを処理する機能部であってデータ処理のステージごとに回路構成を動的に再構成可能なデータ処理部、前記データ処理部の回路構成を動的に制御する再構成制御部、および、前記データ処理部が取り扱うデータを記憶する副記憶部を具備したアクセラレータ部と、を備え、前記再構成制御部は、再構成されたステージごとに、当該ステージで使用されるデータである非蓄積型のストリームや当該ステージにおいては使用されないが後のステージ用に前記副記憶部に保持すべきデータである蓄積型のストリームと、前記副記憶部の使用可能な容量に基づいて、前記副記憶部が所定の基準値よりも容量オーバーとならないように、圧縮すべきストリームを特定し、この特定したストリームに関して、圧縮処理や当該圧縮処理に対応する伸長処理の適用の有無を制御するデータ処理装置である。
請求項2に記載の発明は、請求項1に記載の発明においてさらに、前記再構成制御部は、前記データ処理部がデータ処理を実行する前に、前記圧縮すべきストリームを特定し、この特定したストリームに関して、前記圧縮処理や前記伸長処理を実行する機能部を、当該ステージの前記データ処理部に挿入可能か否かを判定し、挿入不可能であって、かつ、前記特定したストリームが前記非蓄積型のストリームであれば、当該非蓄積型のストリームに関して、圧縮せずに分割転送を行なうように前記データ処理部を制御する。
請求項3に記載の発明は、請求項1に記載の発明においてさらに、前記再構成制御部は、前記データ処理部がデータ処理を実行する前に、前記圧縮すべきストリームを特定し、この特定したストリームに関して、前記圧縮処理や前記伸長処理を実行する機能部を、前記データ処理部に挿入可能か否かを判定し、挿入可能であれば、前記圧縮処理や前記伸長処理を実行する機能部を前記データ処理部に挿入するように制御する。
請求項4に記載の発明は、請求項3に記載の発明においてさらに、前記再構成制御部は、前記圧縮処理がなされた前記非蓄積型のストリームを取り込んで前記データ処理部がデータ処理を実行する過程で、前記副記憶部が所定の基準値よりも容量オーバーとなるか否かを監視し、容量オーバーとなると判断したときには、前記非蓄積型のストリームを前記ホスト部側へ転送するように制御する。
請求項5に記載の発明は、請求項3に記載の発明においてさらに、前記再構成制御部は、前記データ処理部がデータ処理を実行する前に、前記圧縮すべきストリームを特定し、この特定したストリームに関して、前記圧縮処理や前記伸長処理を実行する機能部を、当該ステージの前記データ処理部に挿入可能か否かを判定し、挿入不可能であって、かつ、前記特定したストリームが前記蓄積型のストリームであれば、当該蓄積型のストリームに関して、圧縮処理や伸長処理を実行する機能部用のステージを新たに追加する。
請求項6に記載の発明は、請求項3に記載の発明においてさらに、前記再構成制御部は、前記圧縮処理がなされた前記蓄積型のストリームを取り込んで前記データ処理部がデータ処理を実行する過程で、前記副記憶部が所定の基準値よりも容量オーバーとなるか否かを監視し、容量オーバーとなると判断したときには、前記蓄積型のストリームに対して、より良好な圧縮率で再圧縮するように制御する。
請求項7に記載の発明は、請求項6に記載の発明においてさらに、前記再構成制御部は、前記再圧縮がなされた前記蓄積型のストリームを取り込んで前記データ処理部がデータ処理を実行する過程で、前記副記憶部が所定の基準値よりも容量オーバーとなるか否かを監視し、容量オーバーとなると判断したときには、前記蓄積型のストリームを前記ホスト部側へ転送するように制御する。
請求項8に記載の発明は、請求項3に記載の発明においてさらに、前記再構成制御部は、前記副記憶部が所定の基準値よりも容量オーバーとなるときには、前記圧縮処理や前記伸長処理とデータ処理の組合せで、前記容量オーバーとならないように、時分割で処理を実行するように制御する。
請求項9に記載の発明は、請求項8に記載の発明においてさらに、前記再構成制御部は、複数の出力ストリームを圧縮する必要がある場合において、前記圧縮処理を実行する機能部を、当該ステージの前記データ処理部に挿入できない場合は、前記データ処理とその後の前記圧縮処理の組合せで、前記時分割で処理を実行するように制御する。
請求項10に記載の発明は、請求項8に記載の発明においてさらに、前記再構成制御部は、圧縮済みの入力ストリームを伸長する必要がある場合において、当該入力ストリームを一括して前記伸長処理を実行すると前記副記憶部が所定の基準値よりも容量オーバーとなる場合は、前記伸長処理とその後の前記データ処理の組合せで、前記時分割で処理を実行するように制御する。
請求項11に記載の発明は、請求項1に記載の発明においてさらに、前記再構成制御部は、前記圧縮処理や前記伸長処理をモジュール分割し、前記データ処理部の空きエリアとの関係で許容される範囲で、前記モジュール分割した前記圧縮処理や前記伸長処理を選択して、当該処理を実行する機能部を前記データ処理部に挿入してハードウェア処理で対処するように制御するとともに、前記データ処理部に挿入できなかったモジュールについては、前記圧縮処理や前記伸長処理をソフトウェア処理で対処するように制御する。
請求項12に記載の発明は、請求項11に記載の発明においてさらに、前記再構成制御部は、前記ハードウェア処理での対処が可能な範囲で、前記モジュール分割した前記圧縮処理や前記伸長処理の内、前記ソフトウェア処理が重たいものから前記ハードウェア処理を適用するように制御する。
請求項13に記載の発明は、請求項11に記載の発明においてさらに、前記再構成制御部は、前記蓄積型のストリームに対して前記圧縮処理や前記伸長処理を適用する場合には、同一の前記蓄積型のストリームについて、モジュール分割による前記ハードウェア処理と前記ソフトウェア処理を別のステージで実行するように制御する。
請求項14に記載の発明は、請求項11に記載の発明においてさらに、前記再構成制御部は、前記非蓄積型のストリームに対して前記圧縮処理や前記伸長処理を適用する場合には、同一の前記蓄積型のストリームについて、モジュール分割による前記ソフトウェア処理を実行中には、モジュール分割による前記ハードウェア処理を待機させる。
請求項15に記載の発明は、請求項1に記載の発明においてさらに、前記再構成制御部は、圧縮処理や伸長処理が適用されるストリームが複数ある場合、ストリーム量、前記データ処理部の空きエリア、圧縮処理や伸長処理のタイミング、および、圧縮処理や伸長処理の性能に基づき、圧縮処理や伸長処理を適用するストリームを選択して、圧縮処理や伸長処理を実行する機能部を、同一ステージ中の前記データ処理部に挿入するように制御する。
請求項16に記載の発明は、請求項15に記載の発明においてさらに、前記再構成制御部は、回路規模や処理性能の異なる複数の前記機能部を前記データ処理部に挿入するように制御する。
請求項17に記載の発明は、請求項15に記載の発明においてさらに、前記再構成制御部は、選択したストリームに関して複数の前記機能部を前記データ処理部に挿入可能な場合、その中で圧縮性能の最も劣る機能部を前記データ処理部に挿入するように制御する。
請求項18に記載の発明は、請求項15に記載の発明においてさらに、前記再構成制御部は、圧縮処理を適用済みのストリームに関して、前記データ処理部に挿入可能な範囲で、前記圧縮処理を実行する機能部をより圧縮性能の高いものに変更するように制御する。
請求項19に記載の発明は、請求項1に記載の発明においてさらに、前記再構成制御部は、前記圧縮処理がなされた前記ストリームを取り込んで前記データ処理部がデータ処理を実行する過程で、前記副記憶部の使用率を監視し、前記使用率が一定以上になった場合には、前記ストリームに対してより良好な圧縮率で圧縮処理を実行するステージを新たに設けるように制御する。
請求項20に記載の発明は、請求項19に記載の発明においてさらに、前記再構成制御部は、前記より良好な圧縮率での圧縮処理を実行するステージを新たに設けたことに合わせて、対応する伸長処理を実行する機能部を設定するように制御する。
請求項21に記載の発明は、請求項20に記載の発明においてさらに、前記再構成制御部は、前記より良好な圧縮率での圧縮処理が適用されるストリームについて現在設定されている伸長処理を実行する機能部が挿入されている前記データ処理部に挿入可能な範囲で、現在設定されている伸長処理を実行する機能部を、前記より良好な圧縮率での圧縮処理に対応する伸長処理を実行する機能部に変更するように制御する。
請求項22に記載の発明は、請求項20に記載の発明においてさらに、前記再構成制御部は、前記より良好な圧縮率での圧縮処理が適用されるストリームについて現在設定されている伸長処理を実行する機能部が挿入されている前記データ処理部について、現在設定されている伸長処理を実行する機能部を前記より良好な圧縮率での圧縮処理に対応する伸長処理を実行する機能部に変更できない場合は、前記より良好な圧縮率での圧縮処理に対応する伸長処理を実行する機能部用のステージを新たに設けるように制御する。
請求項23に記載の発明は、請求項1に記載の発明においてさらに、前記アクセラレータ部を複数備え、各アクセラレータ部の前記再構成制御部は、各副記憶部の空きエリアを、相互に利用するように、協調して前記制御を行なう。
請求項24に記載の発明は、請求項23に記載の発明においてさらに、各アクセラレータ部の前記再構成制御部の内の何れか1つをマスターとし、そのマスターの再構成制御部が、各副記憶部の空きエリアの情報を集約して管理する。
請求項1に記載の発明によれば、全ての入出力ストリームに対して圧縮や伸長を適用するのではなく、容量オーバーとならないように圧縮すべきストリームを特定して圧縮や伸長の適用の有無を制御するので、ハードウェアリソースは増加させずに、処理速度の低下を抑制しつつ、外部メモリの使用量を削減できる。
請求項2に記載の発明によれば、非蓄積型のストリームを主体的に取り扱う場合に、当該ステージ中に圧縮処理の挿入ができないときには分割転送を適用することで、処理を継続させることができる。
請求項3に記載の発明によれば、当該ステージ中もしくは当該ステージ中とは別のステージ中に圧縮処理や伸長処理を挿入することで、外部メモリの使用量を削減できる。
請求項4に記載の発明によれば、非蓄積型のストリームを主体的に取り扱う場合において、圧縮処理を適用したデータ処理中に容量オーバーとなる場合に、非蓄積型のストリームをホスト部側へ転送することで、処理を継続させることができる。
請求項5に記載の発明によれば、蓄積型のストリームを主体的に取り扱う場合において、圧縮処理や伸長処理を当該ステージ中に挿入できない場合には、別のステージ挿入することで、処理速度の低下を抑制しつつ、外部メモリの使用量を削減できる。
請求項6に記載の発明によれば、蓄積型のストリームを主体的に取り扱う場合において、圧縮処理を適用したデータ処理中に容量オーバーとなる場合に、より良好な圧縮率で再圧縮することで、処理を継続させることができる。ホスト部側へのストリーム転送の発生を抑制することができるので、処理の時間ロスが殆ど発生しない。
請求項7に記載の発明によれば、蓄積型のストリームを主体的に取り扱う場合において、再圧縮を適用したデータ処理中に容量オーバーとなる場合に、蓄積型のストリームをホスト部側へ転送することで、処理を継続させることができる。
請求項8に記載の発明によれば、時分割処理を適用することでメモリ使用量を削減できる。その結果、メモリ容量オーバーとなるときに時分割処理を適用することで、ハードウェアリソースは増加させずに、処理速度の低下を抑制しつつ、メモリ容量オーバーを回避できる。
請求項9に記載の発明によれば、複数の出力ストリームを圧縮する必要がある場合に時分割処理を適用することで、メモリ容量オーバーを回避しつつ、データ処理と圧縮処理を実行できる。
請求項10に記載の発明によれば、圧縮済みの入力ストリームを伸長する必要がある場合において、入力ストリームを一括して伸長処理を実行するとメモリ容量オーバーとなる場合に時分割処理を適用することで、メモリ容量オーバーを回避しつつ、伸長処理とデータ処理を実行できる。
請求項11に記載の発明によれば、圧縮処理や伸長処理を実行する機能部を一括してデータ処理部に挿入できない場合でも、モジュール分割して、エリアの許す範囲でモジュールの一部をハードウェア処理で対処できる。その結果、データ処理エリアを確保しつつ、処理速度低下を抑制するように、圧縮器や伸長器を挿入できる。
請求項12に記載の発明によれば、ソフトウェア処理が重たいものからハードウェア処理を適用するように制御するので、処理速度低下を最低限に抑えることができる。
請求項13に記載の発明によれば、蓄積型ストリームに対してモジュール分割によるソフトウェア処理を適用する場合、同一ストリームについては、ハードウェア処理とソフトウェア処理が別ステージで段階的に実行されるが、他のストリームとの関係においてはハードウェア処理とソフトウェア処理が同一ステージで並行して実行される。このため、実質的には、ソフトウェア処理による対処が処理速度面に影響を与えることがない。
請求項14に記載の発明によれば、非蓄積型ストリームを取り扱う場合には、モジュール分割によるソフトウェア処理の分のオーバーヘッドが必要で、処理速度面に影響があるが、データ処理エリアを確保しつつ、処理速度低下を極力抑制するように、圧縮器や伸長器を挿入できる。
請求項15に記載の発明によれば、空き回路スペース・メモリ容量に合わせた効率的な圧縮・伸長を行なうことができる。ホスト部側へのストリーム転送の発生を抑制することができるので、処理の時間ロスが殆ど発生しない。
請求項16に記載の発明によれば、空き回路スペースを利用して、回路規模や性能の異なる複数の機能部を配置するので、空き回路スペース・メモリ容量に合わせた効率的な圧縮・伸長を行なうことができる。空き回路スペースを利用して圧縮・伸長を行なうので、処理の時間ロスが殆ど発生しない。
請求項17に記載の発明によれば、圧縮性能の最も劣る機能部をデータ処理部に挿入することで、データ処理部により広い空きスペースを確保でき、その空きスペースにさらに他のストリームに関して圧縮・伸長を実行する機能部を挿入できる。
請求項18に記載の発明によれば、スペース面から許容される範囲で圧縮性能の高いものに変更することで、メモリ使用量をより削減できるようになる。
請求項19に記載の発明によれば、使用率が一定以上になった場合により良好な圧縮率で再圧縮するステージを新たに設けることで、処理を継続させることができる。ホスト部側へのストリーム転送の発生を抑制することができるので、処理の時間ロスが殆ど発生しない。
請求項20に記載の発明によれば、圧縮率の変更に合わせて、対応する伸長処理を実行するので、データ処理を不都合なく実行できる。
請求項21に記載の発明によれば、圧縮率の変更に対応する伸長処理を実行する機能部を、変更前の圧縮率が適用される伸長処理を実行する機能部と置き換えるので、新たなステージの追加をしなくても、圧縮率の変更に対応する伸長処理を実行できる。このため、伸長処理に関して処理速度面の性能低下が起きない。
請求項22に記載の発明によれば、圧縮率の変更に対応する伸長処理を実行する機能部を、変更前の圧縮率が適用される伸長処理を実行する機能部と置き換えることができない場合でも、ステージの追加により対処するので、データ処理を不都合なく実行できる。
請求項23に記載の発明によれば、マルチチップ構成を採る場合に、各副記憶部の空きエリアを共有化できる。ある再構成制御部が属するアクセラレータ部の副記憶部が容量オーバーとなると、他のアクセラレータ部と協調して、空いている副記憶部の領域を使用することができるので、各副記憶部の容量を最小限にすることができる。
請求項24に記載の発明によれば、マスターの再構成制御部により、各副記憶部の空きエリアを集中管理できる。
以下、図面を参照して本発明の実施形態について詳細に説明する。
<<第1実施形態>>
図1および図1Aは、本実施形態(第1実施形態に限らず後述する他の実施形態も)のデータ処理装置1(たとえば印刷装置や複写装置や複合機などの画像処理装置)の構成例を説明する図である。ここで、図1は、データ処理装置1の基本構成例を示す図である。図1Aは、本実施形態のデータ処理装置1の仕様を説明する図である。
図1および図1Aは、本実施形態(第1実施形態に限らず後述する他の実施形態も)のデータ処理装置1(たとえば印刷装置や複写装置や複合機などの画像処理装置)の構成例を説明する図である。ここで、図1は、データ処理装置1の基本構成例を示す図である。図1Aは、本実施形態のデータ処理装置1の仕様を説明する図である。
本実施形態のデータ処理装置1は、内部処理構成をプログラマブル可能なデバイスとしてDRP(Dynamically Reconfigurable Processor)を利用した構成を採っている。なお、内部処理構成を動的にプログラマブル可能なデバイスであれば良く、DRPに限らず、FPGA(Field Programmable Gate Array)でもよい。
具体的には、本実施形態のデータ処理装置1は、当該データ処理装置1の主要をなすDRP10と、DRP10が直接的に使用するローカルメモリ30(副記憶部、外部メモリ)と、当該データ処理装置1の全体を制御するコントローラメインCPU50(CPU:Central Processing Unit :中央制御部)と、コントローラメインCPU50が直接的に使用するメインメモリ70(主記憶部)とを備えている。DRP10とコントローラメインCPU50は外部バス90で接続されている。DRP10とローカルメモリ30によりアクセラレータ部3が構成される。コントローラメインCPU50とメインメモリ70によりホスト部5が構成される。
ローカルメモリ30としては、たとえばDDR仕様のSDRAM(Double Data Rate Synchronous Dynamic Random Access Memory )を使用する。外部バス90としては、たとえば、PCIエクスプレス(PCI Express :PCI-e)規格のものを使用する。
DRP10は、再構成可能なデータ処理モジュール(再構成可能なデータ処理部)の一例である画像処理リコンフィグ部12と、内部バス14と、ローカルメモリ30との間のインタフェース(インタフェース)をなすメモリIF部16と、外部バス90を介してコントローラメインCPU50とのインタフェースをなす外部バスIF部18を有する。また、本実施形態のDRP10は、画像処理リコンフィグ部12の再構成を制御する(スケジューリングする)リコンフィグ制御部20(再構成制御部)を有する。
画像処理リコンフィグ部12では、パイプラインステージを再構成(リコンフィグ)しながら、複数の画像処理を実行する。たとえば、データ処理装置1を画像処理システムとして利用したとき、DRP10におけるコストにおいて、ローカルメモリ30の占める割合が大きくなることを避けるべく(たとえば全体の50%以上となることを回避する)、プログラマブル・デバイス(FPGAやDRP:本例ではDRP10)の画像処理構成を制御するスケジューラとしてリコンフィグ制御部20を導入して、性能の低下を抑制しながらメモリ使用量を削減する仕組みを採る。
メモリ使用量を削減するための基本的な仕組みとしては、圧縮・伸長方式を採用する。たとえば、印刷機能や複写機能あるいはFAX機能などの複数機能を実行可能な画像形成装置の一例である複合機を想定した場合、当該装置が取り扱う画像データは、たとえば、A4サイズ、解像度600dpi、Y(イエロ),M(マゼンタ),C(シアン),K(ブラック)の4色成分では、1ページ分で135MByteになる。仮に4つのデータ処理モジュールの入力データ、出力データ、合計8枚の画像をローカルメモリ30に記憶するものとすると、135MByte×8=約1GByteのメモリ容量が必要になる。データ処理(たとえば画像処理)の入出力データをそのままローカルメモリ30に読み書きするので、巨大なメモリ容量が必要となる。
この対策としては、ハードウェアリソースとして圧縮器や伸長器を各画像処理時に入れることが考えられる。ところが、このような対処方法では、回路規模大となり、画像処理装置のコストが大になる。また、ソフトウェアで圧縮処理や伸長処理を実行する場合は、リソースを圧縮処理や伸長処理にとられるため、画像処理が完了する時間が遅くなる。
よって、ハードウェアリソースは増加させずに、画像処理スピードの低下を抑制し、かつ、メモリ量を削減する仕組みが要求される。換言すると、図1Aに示すように、ハードウェアリソースを増やさないで、画像処理速度性能低下を抑制し、画像処理に必要なストリーム使用量合計MSUM1以下のメモリ容量(メモリサイズ)でも、正常に画像処理を実現することが仕様要求となる。
この対策として、本実施形態では、回路構成を動的に再構成可能なデバイスの画像処理部(本例ではDRP10の画像処理リコンフィグ部12)にて画像データを取り扱う際のデータ容量削減の観点から、圧縮符号化によってデータ容量を削減する方法を採る。つまり、ローカルメモリ30に記憶するデータは、圧縮符号化によってメモリ容量を削減するのである。このため、画像処理リコンフィグ部12には、図示しないが(詳細は後述する)、内部バス14にデータを入出力する前に、データを符号化・復号化する圧縮伸長部を有する。圧縮伸長部は、データを符号化して圧縮する符号化部(いわゆるエンコーダ)および符号化されたデータを伸長して復号する復号化部(いわゆるデコーダ)を有する。
ここで、本実施形態の仕組みでは、回路構成を動的に再構成可能なデバイスであるDRP10を使用し、再構成されたステージごとに、非蓄積型ストリームや蓄積型ストリームとメモリ使用量に関する所定の規定値に基づいて、ローカルメモリ30が容量オーバーとならないように圧縮すべきストリームを特定し、この特定したストリームに関して圧縮処理や伸長処理の適用を制御する。たとえば、画像処理の最中に保持しているストリームを圧縮処理し、リコンフィグ制御部20にて画像処理部(画像処理リコンフィグ部12)の外部メモリ量(ローカルメモリ30のメモリ使用可能量)をオーバーしないように制御(スケジューリング)することで、ハードウェアリソースは増加させずに、データ処理(画像処理)速度の低下を抑制し、かつメモリ量を削減するようにする。
このため、リコンフィグ制御部20にて、各機能部(リコンフィグパイプラインのファンクション(Func)やパイプラインステージと称する)ごとに圧縮閾値THを算出し、圧縮閾値THを超えるサイズのストリームはデータ処理(画像処理)の前後に圧縮器や伸長器を挿入するようにスケジューリングする。また、圧縮器や伸長器の挿入ができないときには、それに応じた対処を行なう。
さらに、全てのストリームに対して圧縮・伸長を適用するのではなく、画像処理リコンフィグ部12内で再構成された各機能部(ファンクション(Func)やパイプラインステージと称する)の処理内容(たとえば取り扱うデータ量など)に応じて、圧縮・伸長を適用するか否かをリコンフィグ制御部20にて制御する。たとえば、あるデータ量の基本単位を1ユニットとしたとき、図1では、Func_Aが8ユニットのSD_A(SD:Stream Data )を取り扱い、Func_Bが1ユニットのSD_Bを取り扱い、Func_Cが1ユニットのSD_Cを取り扱う場合、データ量の多いSD_Aに関して8/3にデータ圧縮することでメモリサイズを削減する。
汎用CPUにおける画像処理をコストパフォーマンスよく高速化するために、たとえば、特開平11−120340号公報、特開2005−157783号公報、特開2006−239968号公報などには、CPUやメインメモリ70とは別に外部メモリを具備するアクセラレータを備えたアクセラレータシステムが提案されている。本実施形態のデータ処理装置1においても、基本的には、これらと同様に、図1に示すような画像処理アクセラレータ(FPGAやDRPなどのプログラマブル・デバイス)を利用した構成を採る。この場合、アクセラレータである「内部処理構成をプログラマブル可能なデバイス」(図ではDRP10)そのもののコストより、ローカルメモリ30のコストの方が大きくなる可能性がある。また、画像処理アクセラレータ単体でのケースでも同様なことが言える。
ローカルメモリ30のメモリコストを削減する手法として、圧縮・伸長の適用が考えられる。このとき、注意すべきことは、可逆符号化方式の圧縮・伸長であることが望ましい。この理由は、画像処理途中でローカルメモリ30にデータ出力する中間ストリームで非可逆圧縮(非可逆符号化)してしまうと、最終画質が予測不可能となるし、画像処理によっては、中間ストリームが「座標」など、画像ではない非可逆が許されない情報の場合もあるからである。ところが、可逆方式では圧縮率が100%を超える場合など、一定の圧縮率を保証することができない。なお、圧縮率(%)は、“圧縮後のデータサイズ÷圧縮前のデータサイズ”であり、値の低い方が圧縮性能が良好であることを示す。
そこで、本実施形態では、ローカルメモリ30へのデータ書込み・読出しに当たり可逆圧縮・伸長方式を採用する場合に、圧縮率が100%を超える場合でも、アクセラレータシステムの性能の低下を抑えることのできる仕組みを採る。その基本は、前述の通り、プログラマブル・デバイスのデータ処理(本例では画像処理)構成を制御するスケジューラ機能を具備したリコンフィグ制御部20により、画像処理リコンフィグ部12内の再構成される各機能部(パイプラインステージ、ファンクション)の処理内容(たとえばストリーム系統数やストリーム合計量)に応じて、圧縮・伸長を適用するか否かを制御することで、データ処理性能の低下を抑制しながらメモリ使用量を削減する。
<第1実施形態の比較例>
図2および図2Aは、第1実施形態のデータ処理装置1における基本動作例に対する比較例を説明する図である。ここで、図2は、パイプラインステージのスケジューリングの側面から示した図であり、図2Aは、DRP10(詳しくは画像処理リコンフィグ部12)の内部回路の構成面から示した図である。
図2および図2Aは、第1実施形態のデータ処理装置1における基本動作例に対する比較例を説明する図である。ここで、図2は、パイプラインステージのスケジューリングの側面から示した図であり、図2Aは、DRP10(詳しくは画像処理リコンフィグ部12)の内部回路の構成面から示した図である。
ここでは、平均圧縮率が1/2(50%)、メモリサイズは4ユニット、メモリサイズ・リミット(メモリサイズの限界)は3ユニットとして、図2(1)に示すような非蓄積型ストリームを想定パイプラインとする。ここで、メモリサイズ・リミットを設けたのは、可逆圧縮を採用するので、圧縮率が100%を超えることで破綻を来たすことがないように、メモリサイズ(本例では4ユニット)に対してマージンを設けるためである。「非蓄積型ストリーム」とは、直近のパイプラインステージ(ファンクション:Func)で直ぐ使うストリームデータであり、それに対しての「蓄積型ストリーム」とは、直近のパイプラインステージでは使わないストリームデータである。
なお、後に「蓄積型ストリーム」となるストリームであっても、当該ファンクション(パイプラインステージ)の処理時点で出力されるストリームは、そのパイプラインステージ(ファンクション:Func)で直ぐ使うストリームデータであるから「非蓄積型ストリーム」である。また、以前は「蓄積型ストリーム」であったストリームであっても、当該ファンクション(パイプラインステージ)の処理時点で入力されるストリームは、そのパイプラインステージ(ファンクション:Func)で直ぐ使うストリームデータであるから「非蓄積型ストリーム」である。
図2(1)に示す想定パイプライン(イニシャル・パイプライン)においては、1ユニットのStream1がFunc1に入力され、Func1での処理により3ユニットのStream2が出力され、このStream2がFunc2に入力され、Func2での処理により0.8ユニットのStream3が出力されている。なお、実際には、ある段のFuncで処理されたStreamが次段のFuncに直ちに入力されるのではなく、画像処理リコンフィグ部12は、ローカルメモリ30からStreamをFuncに取り込み、Funcでの処理によりStreamを出力してローカルメモリ30に記憶するという処理を、後段のパイプラインステージに順次引き継ぐことになる。これは、画像処理リコンフィグ部12は、メモリ(本例ではローカルメモリ30)との間でデータの読み書きを行ないながらデータ処理を行なうからである。
ここで、Func1の入出力間に着目したとき、ストリーム使用量の合計は4ユニットであり、画像処理リコンフィグ部12は、この分をローカルメモリ30との間で入出力することになるので、ストリーム使用量の合計がメモリサイズ・リミット(本例では3ユニット)以下となるようにする必要がある。圧縮率を計算すると、3(メモリサイズ・リミット)÷4(ストリーム使用量合計MSUM1)=75%となる。
この対応として、最も単純な方法は、図2(2)に示すモディファイド・パイプラインのように、全ストリームを75%圧縮することである。圧縮するときには圧縮器Cm(圧縮符号化部)が必要であるし、データ処理のために元のサイズに戻す(復号する)には伸長器Ex(伸長復号部)が必要になる。なお、ここでは圧縮器Cmや伸長器Exを同一パイプラインステージ中に配しているが、そのパイプラインステージ中に圧縮器Cmや伸長器Exを収めるだけの余裕がない場合、あるいはストリーム種に応じて、そのパイプラインステージ外に(つまりリコンフィグして)、これらを別のパイプラインステージに配してもよい。
たとえば、Func1に入力する1ユニットのStream1に対しては圧縮器Cmで0.75ユニットのStream1にしてからFunc1に入力する。Func1ではこれを伸長器Exにより元のサイズに戻し、処理後の3ユニットのStream2に対しては圧縮器Cmで2.25ユニットのStream2にしてからFunc2に入力する。Func2ではこれを伸長器Exにより元のサイズに戻し、処理後の0.8ユニットのStream3に対しては圧縮器Cmで0.6ユニットのStream3として出力する。この場合は、圧縮器Cmの平均圧縮率は1/2なので、Func1の入出力間のストリーム使用量の合計は、当然に“0.75+2.25=3.0”であり、必要メモリサイズは、4から3に削減され、破綻を来たすことはない。ただし、平均圧縮率は予測値であり、1/2を超え、たとえば“1=100%”に近くなる、あるいは、“1=100%”を超えることもあり、これらの場合、破綻を来たすことがある(詳細は図2(3)や第1例で示す)。
このように、メモリ量を削減し、かつ画像処理スピードを低下させないために全ストリームを圧縮すると、それに対応した伸長も必ず必要になり、DRP10(詳しくは画像処理リコンフィグ部12)の内部回路は、図2Aに示すように、画像処理の入力ストリームごとに伸長器Exを、出力ストリームごとに圧縮器Cmを実装する構成となる。つまり、圧縮や伸長をするべき入力ストリームや出力ストリームが複数ある場合に、ハードウェアで圧縮器Cmや伸長器Exを入れると、入力ストリームごとに伸長器Exをまた出力ストリームごとに圧縮器Cmを実装する構成となるので回路規模が大きくなり、データ処理装置1(画像処理装置)のコストが掛る。
ここで、図2(2)や図2Aから理解されるように、圧縮器Cmや伸長器Exをパイプラインステージ中に配する場合、全てのパイプラインステージ(本例ではFunc1,Func2)に圧縮器Cmと伸長器Exを挿入するだけの余裕がないとならない。また、複数ストリームの入出力では、複数の圧縮器Cmと伸長器Exを挿入する必要があり、付加的なハードウェアリソースが必要になる、圧縮処理および伸長処理のための付加的な処理時間が必要で、性能低下インパクトがあり、実際には、実装が困難となる。圧縮器Cmや伸長器Exの挿入を優先すると、その分の回路規模大のため、画像処理エリアが十分に確保されないと言うことも起こり得る。
また、画像処理途中でローカルメモリ30にデータ出力する中間ストリームで非可逆圧縮することによる不都合を避けるべく(前述の通り)、可逆圧縮の適用が望まれる(実際にはほぼ必須となる)。可逆圧縮では、実際には、データ量を削減できる保証がないので、図2(3)に示すように、実際の圧縮率(圧縮後ストリームサイズ/圧縮前ストリームサイズ)が1(100%)を越える場合がある。図2(3)に示す例では、Stream1は120%(=1.2/1),Stream2は106%(=3.2/3),Stream3は125%(=1.0/0.8)となっている。この場合は、Func1の入出力間のストリーム使用量の合計は、“1.2+3.2=4.4”であり、メモリサイズ・リミット=3をオーバーしているので、破綻を来たすことになる。
<スケジューリング:第1実施形態>
図3は、第1実施形態のデータ処理装置1における基本動作であるスケジューリングの処理手順を説明するフローチャートである。なお、各ステップに対応する具体的な処理例は、後述の各実施例(第1実施形態のもの)で説明する。また、ストリーム種別(蓄積型と非蓄積型)ごとのスタティック・スケジューリングとダイナミック・スケジューリングについては、具体的な処理手順を別途説明する。
図3は、第1実施形態のデータ処理装置1における基本動作であるスケジューリングの処理手順を説明するフローチャートである。なお、各ステップに対応する具体的な処理例は、後述の各実施例(第1実施形態のもの)で説明する。また、ストリーム種別(蓄積型と非蓄積型)ごとのスタティック・スケジューリングとダイナミック・スケジューリングについては、具体的な処理手順を別途説明する。
図2(3)に示した問題点の対策として、第1実施形態では、スケジューラ機能を具備するリコンフィグ制御部20は、圧縮・伸長頻度を低下させる圧縮閾値THを計算しておき(S1010)、スタティック・スケジューリングでの圧縮器Cmや伸長器Exの追加を適用できるケースでは(S1012-Y)、規定メモリサイズ(1種類とは限らない)に基づいて処理データであるストリームを選択的に圧縮・伸長することで、圧縮処理と伸長処理の頻度を低下させ、圧縮処理や伸長処理によるハードウェアリソースやソフトウェアなら性能低下のインパクトを最小限とする。一方、スタティック・スケジューリングでの圧縮器Cmや伸長器Exの追加を適用できないケースでは(S1012-N)、分割転送処理(バンディング処理とも称する:詳細は第2例で説明する)で対処する(S1014)。
特に、FPGAや図1に示したDRP10などのプログラマブル・デバイスにて画像処理パイプライン中間Streamを可逆圧縮するリコンフィグ制御部20を導入し、可逆圧縮に特有の圧縮率が悪い(つまり圧縮率が高い)場合にそのままではDRP10とローカルメモリ30とのデータ転送に破綻を来たすことになる対策として、スタティック・スケジューリングによる圧縮・伸長の追加もしくは分割転送処理(バンディング処理とも称する)や、一次フォールバック処理やホスト部5であるコントローラメインCPU50(それが管理するメインメモリ70)を利用した二次フォールバック処理を行なう。
ストリームを選択的に圧縮する際には、図4に示すように、先ず、処理を開始する前に、パイプライン情報(特に第1の規定メモリサイズMS_1)に基づいてストリームを圧縮するか否かを切り分けて(圧縮対象のストリームを切り分けて)圧縮器Cmと伸長器Exを挿入する静的な対処方法(スタティック・スケジューリング(Static Scheduling )と称する)がある(S1010〜S1022)。また、処理過程でメモリ容量(第2の規定メモリサイズMS_2)をオーバーするか否かを監視し、第2の規定メモリサイズMS_2を越える状況になったときに蓄積型ストリームに対して圧縮器Cmと伸長器Exを挿入する一次フォールバック処理(S1040〜S1042)や、メモリ容量(第3の規定メモリサイズMS_3)をオーバーする状況のときに非蓄積型ストリームや蓄積型ストリームに対してメインメモリ70を利用する二次フォールバック処理(S1044〜S1048)を行なう動的な対処方法(ダイナミック・スケジューリング(Dynamic Scheduling)と称する)がある。スタティック・スケジューリング処理やダイナミック・スケジューリング処理をそれぞれ個別に適用してもよいし、スタティック・スケジューリング処理とダイナミック・スケジューリング処理を組み合わせた処理を行なうようにしてもよい。
一次フォールバック処理は、データ処理実行過程(ストリーム圧縮後)に行なうもので、ストリーム使用量合計MSUM1が第2の規定メモリサイズMS_2を超える(溢れる)ようになると(S1040-Y)、圧縮閾値TH未満の蓄積型ストリームについて、メモリ容量を可能な限り削減するためにより圧縮率が小さくなるように可逆圧縮する処理である(S1042)。具体的には、蓄積型ストリームで、圧縮閾値THに達しないストリーム(RAWデータのストリーム)を圧縮する。
二次フォールバック処理は、データ処理実行過程(ストリーム圧縮後)に行なうもので、コントローラメインCPU50を介したメインメモリ70へのデータ転送(外部転送と称する)を行なう処理である。二次フォールバック処理は、外部バス90、コントローラメインCPU50を介したデータ転送になり、DRP10とローカルメモリ30との間のデータ転送に比べると低速になるので、蓄積型ストリームに関しては、一次フォールバック処理でも対処不足のとき、つまり一次フォールバック処理を行なってもストリーム使用量合計MSUM1が第2の規定メモリサイズMS_2を超えメモリサイズを溢れるようになるときに、ストリーム使用量合計MSUM1が第3の規定メモリサイズMS_3を超える(溢れる)と二次フォールバック処理を行なうようにする(S1044-Y,S1048)。なお、蓄積型ストリームに関しての第3の規定メモリサイズMS_3は一次フォールバック処理で参照する第2の規定メモリサイズMS_2と同じであってもよい(好ましくは同じにする)。
たとえば、リコンフィグ制御部20は、スタティック・スケジューリングのために、圧縮・伸長の頻度を低下させる閾値(スレッショルド)の考え方を導入する。このため、圧縮閾値THを、たとえば、メモリサイズ・リミット/ストリーム数(ローカルメモリ30を利用する入出力ストリームの総本数:以下同様)や、領域サイズ(その時点で使用が許可されるメモリ量)/ストリーム数に従って計算する(S1010)。“圧縮閾値TH1=メモリサイズ・リミット/ストリーム数”を第1定義式と称し、“圧縮閾値TH2=領域サイズ/ストリーム数”を第2定義式と称する。たとえば、リコンフィグ制御部20は、スタティック・スケジューリングのために、圧縮・伸長の頻度を低下させる閾値(スレッショルド)の考え方を導入する。このため、圧縮閾値THを、たとえば、メモリサイズ・リミット/ストリーム数(ローカルメモリ30を利用するストリームの種類数:以下同様)や、領域サイズ(その時点で使用が許可されるメモリ量)/ストリーム数に従って計算する。
また、リコンフィグ制御部20は、処理過程のデータである中間ストリームを、直近のパイプラインステージで直ぐ使う非蓄積型ストリームと、直近のパイプラインステージでは使わない蓄積型ストリームに分類し、圧縮時間や伸長時間の制約を導入し、圧縮や伸長を行なわなくても不都合がなければ圧縮処理や伸長処理を行なわないようにすることで、同一タイミングで圧縮や伸長を行なうストリーム本数を減らす。
そして、データ処理(本例では画像処理)を実行する前に、算出した各パイプラインステージの圧縮閾値THに基づいて、各パイプラインステージでのストリーム使用量合計MSUM1が第1の規定メモリサイズMS_1を越えないように圧縮対象のストリームをピックアップ(選定)し、そのストリームに対して圧縮(や、それに対応する伸長)を示唆(指示)するスタティック・スケジューリングを行なう(S1022)。たとえば、対象のパイプラインステージで取り扱うストリーム(入出力のストリーム)のデータ量(ストリーム量:本例ではユニット数)が圧縮閾値THを超えるストリームを圧縮の対象とする。
なお、ここでは、圧縮閾値THを判断指標にする例で説明したが、基本的な考え方は、各パイプラインステージでの処理時点において、ローカルメモリ30を使用するストリーム量の合計がメモリ容量を超えないようにすることにあり、このような観点での判断指標である限り、その他の指標値を使用してよい。
このスタティック・スケジューリング指示を受けた画像処理リコンフィグ部12は、圧縮対象としてピックアップされたストリームに対して、圧縮器Cmや伸長器Exを挿入する(S1022)。ここで、圧縮器Cmと伸長器Exの挿入箇所は、非蓄積型ストリームであるのか蓄積型ストリームであるのかに応じて使い分ける。詳細には後述するが、たとえば、非蓄積型ストリームの場合には同一のパイプラインステージ中に配置し、蓄積型ストリームの場合には別のパイプラインステージに配置する。
画像処理リコンフィグ部12は、所要の箇所への圧縮器Cmや伸長器Exの挿入が完了すると、各パイプラインステージでは、ストリームをローカルメモリ30から取り込んで、データ処理(本例の場合は画像処理)を開始する(S1030)。このとき、圧縮対象のストリームであれば、そのストリームを圧縮器Cmで圧縮する(S1032-Y,S1034)。
この画像処理過程では、並行して、リコンフィグ制御部20は画像処理リコンフィグ部12によるストリーム使用量合計MSUM1を監視している。そして、処理対象ストリームが蓄積型ストリームである場合に(S1036-Y)、ストリーム使用量合計MSUM1が第2の規定メモリサイズMS_2を溢れるようになると(S1040-Y)、圧縮率が不足(未圧縮のものも含む)の蓄積型ストリームについてメモリ容量を可能な限り削減するためにより圧縮率が小さくなるように可逆圧縮する一次フォールバック処理を画像処理リコンフィグ部12に指示する。この一次フォールバック処理指示を受けた画像処理リコンフィグ部12は、圧縮閾値TH未満の蓄積型ストリームを圧縮する(S1042)。この説明から理解されるように、本実施形態の場合、一次フォールバック処理は蓄積型ストリームについてのみ適用される。
リコンフィグ制御部20は、その圧縮による実際の圧縮率に基づき、たとえば、ストリーム量やストリーム使用量合計MSUM1を計算し、ストリーム量やストリーム使用量合計MSUM1が第3の規定メモリサイズMS_3を溢れる状態であると(S1044-Y)、二次フォールバック処理を画像処理リコンフィグ部12に指示する。この二次フォールバック処理指示を受けた画像処理リコンフィグ部12は、蓄積型ストリームに関してはステップS1042による圧縮済みのストリームをホスト部5側であるコントローラメインCPU50を介してメインメモリ70に一時的に退避させる(S1048)。なお、ここでのストリーム量やストリーム使用量合計MSUM1を判断対象とする例は一例であり、その他の指標値を判断対象としてもよい。第3の規定メモリサイズMS_3は、その指標値が何れであるのかに応じて適正なものを使用する。
また、処理対象ストリームが非蓄積型ストリームである場合には(S1036-N)、たとえば、ステップS1034で圧縮処理した結果のストリーム量やストリーム使用量合計MSUM1が第3の規定メモリサイズMS_3を越えているときには、ステップS1034による圧縮済みのストリームをホスト部5側であるコントローラメインCPU50を介してメインメモリ70に一時的に退避させる(S1046-Y,S1048)。なお、ここでのストリーム量やストリーム使用量合計MSUM1を判断対象とするのは一例であり、その他の指標値を判断対象としてもよい。第3の規定メモリサイズMS_3は、その指標値が何れであるのかに応じて適正なものを使用する。
因みに、DRP10を使用して複数のコンフィギグレーションを切り替える本実施形態のデータ処理装置1では、その入出力の各ストリームを全て保持しなくてはならないので、典型的には、入出力の全てのストリーム使用量合計MSUM1がメモリ容量を超えないことが基本的な判断基準となると考えてよい。
次に、画像処理リコンフィグ部12は、画像処理を実行する。このとき、必要に応じて圧縮・伸長を行ないながら(S1032-Y)、ローカルメモリ30に空き容量があるときには(S1040-N,S1044-N,S1046-N)、ローカルメモリ30との間でデータの読み書き(データ転送)を行ない、画像処理を実行する。ローカルメモリ30に空き容量が無く、メインメモリ70にストリームを退避させたときには(S1044-Y,S1046-Y,S1048)、画像処理リコンフィグ部12は、必要に応じて圧縮・伸長を行ないながら(S1032-Y,S1042-Y)、コントローラメインCPU50を介してメインメモリ70との間でデータの読み書き(データ転送)を行ない、画像処理を実行する。
画像処理リコンフィグ部12は、あるパイプラインステージでの画像処理が完了すると、ステップS1030に戻り、次段のパイプラインステージに移行し、前記と同様の処理を行なう。
<動作例:第1実施形態の基本>
図4〜図5Aは、第1実施形態のデータ処理装置1における基本動作例を説明する図である。ここで、図4は、ストリームデータの種類とメモリ容量との関係を説明する図である。図5および図5Aは、圧縮・伸長をパイプライン処理に組み込む場合の定義モデルを説明する図であり、図5は非蓄積型ストリームが主体の場合、図5Aは蓄積型ストリームが主体の場合を示す。
図4〜図5Aは、第1実施形態のデータ処理装置1における基本動作例を説明する図である。ここで、図4は、ストリームデータの種類とメモリ容量との関係を説明する図である。図5および図5Aは、圧縮・伸長をパイプライン処理に組み込む場合の定義モデルを説明する図であり、図5は非蓄積型ストリームが主体の場合、図5Aは蓄積型ストリームが主体の場合を示す。
たとえば、図4には、蓄積型ストリームが多い長いパイプラインの場合を例に、非蓄積型ストリーム(ハッチングなし)と蓄積型ストリーム(ハッチングあり)のそれぞれについて、メモリ容量との関係が示されている。
蓄積型ストリームは、直ぐには使用しないので、ローカルメモリ30にはストリームが加算されていく。このため、図4に示すように、ストリームの総和(Σ)でメモリ使用量を圧迫することになる。たとえば、図4に示す想定パイプライン(イニシャル・パイプライン)においては、画像処理リコンフィグ部12は、7段のパイプラインステージFunc1〜Func7を有している。前半の4段分のパイプラインステージFunc1〜Func4は、それ以前(直前とは限らない)のパイプラインステージで処理済みの非蓄積型ストリームを取り込んで処理を行なって非蓄積型ストリームと蓄積型ストリームを出力するようになっている。一方、後半の3段分のパイプラインステージFunc5〜Func7は、それ以前(直前とは限らない)のパイプラインステージで処理済みの非蓄積型ストリームと未処理の蓄積型ストリームを取り込んで処理を行なって非蓄積型ストリームを出力するようになっている。
具体的には、画像処理リコンフィグ部12は、ローカルメモリ30から1ユニットのStream1をFunc1に取り込み、Func1での処理により1ユニットの非蓄積型のStream2を出力してローカルメモリ30に記憶するとともに、3ユニットの蓄積型のStream3を出力してローカルメモリ30に記憶する。次に、画像処理リコンフィグ部12は、ローカルメモリ30から1ユニットのStream2をFunc2に取り込み、Func2での処理により1ユニットの非蓄積型のStream4を出力してローカルメモリ30に記憶するとともに、4ユニットの蓄積型のStream5を出力してローカルメモリ30に記憶する。
さらに、画像処理リコンフィグ部12は、ローカルメモリ30から1ユニットのStream4をFunc3に取り込み、Func3での処理により1ユニットの非蓄積型のStream6を出力してローカルメモリ30に記憶するとともに、5ユニットの蓄積型のStream7を出力してローカルメモリ30に記憶する。さらに、画像処理リコンフィグ部12は、ローカルメモリ30から1ユニットのStream6をFunc4に取り込み、Func4での処理により1ユニットの非蓄積型のStream8を出力してローカルメモリ30に記憶するとともに、6ユニットの蓄積型のStream9を出力してローカルメモリ30に記憶する。
さらに、画像処理リコンフィグ部12は、1ユニットの非蓄積型のStream10と3ユニットの蓄積型のStream3をローカルメモリ30からFunc5に取り込み、Func5での処理により1ユニットの非蓄積型のStream11を出力してローカルメモリ30に記憶する。さらに、画像処理リコンフィグ部12は、1ユニットの非蓄積型のStream11と4ユニットの蓄積型のStream5をローカルメモリ30からFunc6に取り込み、Func6での処理により1ユニットの非蓄積型のStream12を出力してローカルメモリ30に記憶する。最後に、1ユニットの非蓄積型のStream12と5ユニットの蓄積型のStream7をローカルメモリ30からFunc7に取り込み、Func7での処理により1ユニットの非蓄積型のStream13を出力してローカルメモリ30に記憶する。6ユニットの蓄積型のStream9は、別の処理プロセスで使用するようになっている。
この場合、4段目のパイプラインステージの時点(図中のA点)では、ローカルメモリ30には、Func4の入出力で取り扱う蓄積型のStream6およびStream8用の2ユニット分と、非蓄積型のStream3,Stream5,Stream7,Stream9の各ストリーム量を加算した18ユニット分がストリーム使用量合計MSUM1となり、その内の90%(=18/20)は蓄積型ストリームが占めることになる。本来、Func4が取り扱うストリーム量は、非蓄積型の入出力分(Stream6とStream8の各1ユニット分を加算した2ユニット分)と、蓄積型の出力分(Stream9の6ユニット分)の合計の8ユニット分に対して、使用量合計が20ユニット分であるから、Func4が取り扱うストリーム量に対してストリーム使用量合計MSUM1は2.5倍になってしまう。これから分るように、ローカルメモリ30の使用量に関しては、蓄積型ストリームのデータ量(蓄積ストリームサイズ)が問題となる。
ここで、蓄積型ストリームを可逆圧縮(圧縮率1/3を仮定)すると、ストリーム使用量合計MSUM1は、2+18/3=8ユニット分となり、圧縮前の20ユニット分との比較では8/20=4/10となり、100%−40%=60%の削減となる。蓄積型ストリームサイズが1/4になると、ストリーム使用量合計MSUM1(メモリサイズ)は、46%に削減される。
このように、ストリームを、蓄積型ストリームと非蓄積型ストリームで分けて管理することが、メモリ容量削減にとっては効果的である。非蓄積型ストリームは直ぐには使用しないので、圧縮処理や伸長処理の時間制約が緩やかに与えられる。これは、そのときに圧縮できなくても、後で圧縮してもメモリ削減効果があるからである。
<定義モデル>
たとえば、図5には、非蓄積型ストリームが主体の場合に、圧縮・伸長をパイプライン処理に組み込む場合の定義モデルが示されている。入出力ストリームは直近のパイプラインステージ(Func_@:データ処理)で使用され再利用されないので、このパイプラインステージでのデータ処理後にストリームを圧縮したのではメモリ削減の効果がでない。たとえば、図5(1)に示すように、3ユニットのStream1がFunc1に入力され、Func1でのデータ処理後に2ユニットのStream2が出力される場合を考える。この場合、Func1の入出力間における合計ストリームサイズが5ユニットであるので、これを削減したい場合は、別のパイプラインステージで圧縮・伸長しても効果がない。たとえば、図5(1)に示すように、Func1の後段で圧縮を行なっても、Func1にとっては、必要メモリサイズは5ユニットであることに変わりがないからである。
たとえば、図5には、非蓄積型ストリームが主体の場合に、圧縮・伸長をパイプライン処理に組み込む場合の定義モデルが示されている。入出力ストリームは直近のパイプラインステージ(Func_@:データ処理)で使用され再利用されないので、このパイプラインステージでのデータ処理後にストリームを圧縮したのではメモリ削減の効果がでない。たとえば、図5(1)に示すように、3ユニットのStream1がFunc1に入力され、Func1でのデータ処理後に2ユニットのStream2が出力される場合を考える。この場合、Func1の入出力間における合計ストリームサイズが5ユニットであるので、これを削減したい場合は、別のパイプラインステージで圧縮・伸長しても効果がない。たとえば、図5(1)に示すように、Func1の後段で圧縮を行なっても、Func1にとっては、必要メモリサイズは5ユニットであることに変わりがないからである。
この対策としては、たとえば、同一ファンクション(パイプラインステージ)で圧縮・伸長することが(唯一の)メモリ削減対策となる。なお、「(唯一の)」と称したが、実際には、必須ではなく、圧縮器Cmや伸長器Exを同一のパイプラインステージ内に配するか否かを問わず、処理パスとして、圧縮されたストリームの供給を受ける→データ処理前に伸長→パイプラインステージでデータ処理→処理済みストリームを圧縮→…の順にすることが考えられる。たとえば、圧縮器Cmの平均圧縮率を1/2と仮定すると、必要メモリサイズは1/2となる。ただし、圧縮器Cmや伸長器Exを物理的に同一のパイプラインステージ(本例ではFunc1)内に配する構成を採用すると、図5(2)に示すように、その同一パイプラインステージの入力側に伸長器Exを、出力側に圧縮器Cmを配置しなければならず、パイプラインステージとして、より多くのハードウェアリソースが必要となる。
一方、図5Aには、蓄積型ストリームが主体の場合に、圧縮・伸長をパイプライン処理に組み込む場合の定義モデルが示されている。入出力ストリームは直近のパイプラインステージ(Func_@:データ処理)で使用された後、後続(直後は非蓄積型ストリームを供給すればよいので除く)のパイプラインステージで再利用される。このため、必要となる段階までローカルメモリ30などに待機させておくことになり、これが重畳されると、メモリサイズが飛躍的に増加する。図4に示したことから理解されるように、蓄積型ストリームを圧縮すると、メモリ削減効果が出る。
たとえば、図5A(1)に示す例では、ローカルメモリ30から1ユニットのStream1をFunc1に取り込み、Func1での処理により1ユニットの非蓄積型のStream2を出力してローカルメモリ30に記憶するとともに、3ユニットの蓄積型のStream3を出力してローカルメモリ30に記憶する。次に、画像処理リコンフィグ部12は、ローカルメモリ30から1ユニットのStream2をFunc2に取り込み、Func2での処理により1ユニットの非蓄積型のStream4を出力してローカルメモリ30に記憶するとともに、4ユニットの蓄積型のStream5を出力してローカルメモリ30に記憶する。再び直ぐには使用されない蓄積型ストリームを加算すると、10ユニットであり、2/3を占める。長いパイプラインの場合は、ストリーム使用量合計MSUM1は蓄積型ストリームが支配的となる。
この対策としては、後続のパイプラインステージに圧縮器Cmを挿入し、蓄積型ストリームを削減してローカルメモリ30に記憶すればよい。たとえば、図5A(2)に示す例では、Func2の後段のFunc3に圧縮器Cmを配置すればよい。Func3では、Func2から出力された4ユニットのStream5を取り込み、1/2に圧縮して2ユニットのStream7にしてローカルメモリ30に記憶する。
Func2の入出力に着目したとき、図5A(1)に示す非圧縮時には、非蓄積型ストリームのストリーム使用量はStream2,Stream4の各1ユニットを算した2ユニット、蓄積型ストリームのストリーム使用量はStream3の3ユニットとStream5の4ユニットを加算した7ユニットであり、ストリーム使用量合計MSUM1は9ユニットとなる。一方、図5A(2)に示す圧縮時には、非蓄積型ストリームのストリーム使用量はStream2,Stream4の各1ユニットを加算した2ユニット、蓄積型ストリームのストリーム使用量はStream3の3ユニットとFunc3による圧縮済のStream7の2ユニットを加算した5ユニットであり、ストリーム使用量合計MSUM1は7ユニットとなる。よって、必要メモリサイズは、9ユニットから7ユニットに削減される。
<第1例:第1実施形態>
図6は、第1実施形態のデータ処理装置1における第1例を説明する図である。第1例は、処理対象ストリームが非蓄積型ストリームのみである場合の一例であり、スタティック・スケジューリングによる圧縮器Cmおよび伸長器Exの追加と、実際に圧縮したときに圧縮率が不足した際の二次フォールバック処理の適用例である。第1実施形態では、圧縮閾値THの定義式として、第1定義式を適用する(図ではTHで記す)。
図6は、第1実施形態のデータ処理装置1における第1例を説明する図である。第1例は、処理対象ストリームが非蓄積型ストリームのみである場合の一例であり、スタティック・スケジューリングによる圧縮器Cmおよび伸長器Exの追加と、実際に圧縮したときに圧縮率が不足した際の二次フォールバック処理の適用例である。第1実施形態では、圧縮閾値THの定義式として、第1定義式を適用する(図ではTHで記す)。
ここでは、平均圧縮率が1/2(50%)、図6(1)に示すメモリ・マッピングのようにメモリサイズは4ユニット、メモリサイズ・リミット(メモリサイズの限界)は3ユニットでこの分を非蓄積型ストリーム領域として確保し、残りの1ユニット分はバッファ領域として確保し、図6(2)に示すような非蓄積型ストリームを取り扱う想定パイプライン(イニシャル・パイプライン)とする。非蓄積型ストリーム領域が3ユニットであるので、各パイプラインステージで取り扱う非蓄積型ストリームの最大ストリーム量は3ユニットと仮定する。
ここで、メモリサイズとメモリサイズ・リミットを設けたのは、比較例(図2)での説明のように、可逆圧縮を採用するためである。第1例では、スタティック・スケジューリングではメモリサイズ・リミットを第1の規定メモリサイズMS_1とし、ダイナミック・スケジューリング(特に二次フォールバック処理)ではメモリサイズを第3の規定メモリサイズMS_3として参照する。また、圧縮挿入までの時間制約(Time Constraint )は1Functionとする。各パイプラインステージ(本例ではFunc1,Func2)は、何れも、圧縮器Cmおよび伸長器Exを挿入し得るものとする。
リコンフィグ制御部20は、スタティック・スケジューリングのため、先ず、パイプラインステージごとに、メモリサイズ・リミット/ストリーム数に従って、圧縮閾値TH1を計算する(S1010)。ここで、このような計算式(第1定義式)を使用するのは、圧縮対象のストリームを判断するためである。
本例の場合、Func1はStream1(3ユニットが最大),Stream2(3ユニットが最大)を入出力とするのでストリーム数は2であり、圧縮閾値TH1_1=メモリサイズ・リミット/ストリーム数=3/2=1.5となる。Func2はStream2,Stream3(0.8ユニットが最大)を入出力とするのでストリーム数は2であり、圧縮閾値TH1_2=メモリサイズ・リミット/ストリーム数=3/2=1.5となる。
リコンフィグ制御部20は、パイプラインステージごとに、計算した圧縮閾値TH1_1,TH1_2と、各Stream1(3ユニットが最大),Stream2(3ユニットが最大),Stream3(0.8ユニットが最大)を比較し、そのストリーム量(ユニット数)が圧縮閾値TH1_1,TH1_2を超えるストリームを圧縮・伸長の対象とする。本例の場合、リコンフィグ制御部20は、Stream1,Stream2(Stream3以外)を圧縮の対象とする。スタティック・スケジューリングによる圧縮器Cmおよび伸長器Ex(圧縮器Cm&伸長器Ex)の追加が適用し得るケースであれば(S1012-Y)、リコンフィグ制御部20は画像処理リコンフィグ部12に指示する。
このスタティック・スケジューリングによる圧縮器Cmおよび伸長器Ex(圧縮器Cm&伸長器Ex)の追加指示を受けた画像処理リコンフィグ部12は、図6(3)に示すように、Stream1,Stream2を入出力ストリームにするパイプラインステージであるFunc1について、入力側に伸長器Exを挿入し、出力側に圧縮器Cmを挿入する。また、Stream2を入力ストリームにするパイプラインステージであるFunc2について、入力側に伸長器Exを挿入する。画像処理リコンフィグ部12は、ローカルメモリ30との間でStream1のデータ転送を行ないながらFunc1で圧縮済のStream1を伸長器Exで伸長してデータ処理(画像処理)を行ない処理済みのStream2を圧縮器Cmで圧縮して出力する。また、画像処理リコンフィグ部12は、ローカルメモリ30との間でStream2のデータ転送を行ないながらFunc2で圧縮済のStream2を伸長器Exで伸長してデータ処理(画像処理)を行ない処理済みのStream3を出力する。
なお、Stream1の圧縮は、ホスト処理で行なう。ここで、ホスト処理とは、コントローラメインCPU50でStream1を圧縮して、DRP10のローカルメモリ30に転送することである。
この場合は、圧縮器Cmの平均圧縮率は1/2なので、Func1の入出力間のストリーム使用量の合計は、当然に“1.5+1.5=3.0”であり、必要メモリサイズは、6から3に削減され、破綻を来たすことはない。ただし、平均圧縮率は予測値であり、1/2を超えることもあり、場合によっては、破綻を来たすことがある。たとえば、Stream1の実際の圧縮率が50%、Stream2の実際の圧縮率が95%になるケースでは、ストリーム使用量合計MSUM1は、1+2.85=3.85<4(メモリサイズ)であり、このように、実際の圧縮率が1/2を超える場合でも、ストリーム使用量合計MSUM1がメモリサイズを超えなければ、ローカルメモリ30との間でのデータ転送で対処できる。
一方、図6(4)に示すように、Stream1の実際の圧縮率が1/3、Stream2の実際の圧縮率が113%になるケースでは、ストリーム使用量合計MSUM1は、1+3.4=4.4>4(メモリサイズ)となり、ローカルメモリ30との間でのデータ転送では対処できなくなる。その対策として、第1例では、リコンフィグ制御部20は、非蓄積型ストリーム(ここではStream2)に対して二次フォールバック処理を適用するように、画像処理リコンフィグ部12に指示する。
因みに、このケースでは、圧縮率が100%までなら、二次フォールバックは発生しない。つまり、圧縮した結果、メモリサイズを越えているため、ホスト部5側であるコントローラメインCPU50を介したメインメモリ70との間でのデータ転送が発生する。一次フォールバック処理は蓄積型ストリームでのみ発生する。非蓄積型ストリームはその場で消えるため、一次フォールバック対象が「ない」ためである。つまり、一次フォールバックを経由せずに、いきなり二次フォールバックが発生する。
Stream2について二次フォールバック処理の指示を受けた画像処理リコンフィグ部12は、図6(4)に示すように、二次フォールバック処理により、外部バス90およびコントローラメインCPU50を介してメインメモリ70との間で圧縮済のStream2のデータ転送を行ないながらFunc2で圧縮済のStream2を伸長器Exで伸長してデータ処理(画像処理)を行ない、処理済みのStream3を出力する。つまり、メモリサイズを越える場合、圧縮済部分をメインメモリ70側に送信する。
なお、バンド圧縮を適用してもよい。バンド圧縮とは、メモリサイズを超えた場合、その段階で一旦、圧縮を完了させ、メインメモリに転送後、残りのデータを圧縮する処理である。すなわち、1つのストリームを複数の圧縮データに分割することである。
<第2例:第1実施形態>
図7は、第1実施形態のデータ処理装置1における第2例を説明する図である。第2例は、処理対象ストリームが非蓄積型ストリームのみである場合の一例であり、スタティック・スケジューリングによる圧縮器Cmおよび伸長器Ex(圧縮器Cm&伸長器Ex)の追加ができないケースでの適用例である。因みに、後述のように、第2例ではダイナミック・スケジューリングの適用はない。
図7は、第1実施形態のデータ処理装置1における第2例を説明する図である。第2例は、処理対象ストリームが非蓄積型ストリームのみである場合の一例であり、スタティック・スケジューリングによる圧縮器Cmおよび伸長器Ex(圧縮器Cm&伸長器Ex)の追加ができないケースでの適用例である。因みに、後述のように、第2例ではダイナミック・スケジューリングの適用はない。
ここでは、平均圧縮率が1/2(50%)、図7(1)に示すメモリ・マッピングのようにメモリサイズは6ユニット、メモリサイズ・リミット(メモリサイズの限界)は5ユニットで残りの1ユニットはバッファ領域とし、メモリサイズ・リミットの内、3ユニット分は非蓄積型ストリームを格納する非蓄積型ストリーム領域に割り当て、2ユニット分は非蓄積型ストリームの一部についてバンディング処理用に処理を待機させるための非蓄積型ストリームを蓄積型ストリームとして格納する蓄積型ストリーム領域に割り当てる。非蓄積型ストリーム領域が3ユニットであるので、各パイプラインステージで取り扱う非蓄積型ストリームの最大ストリーム量は3ユニットと仮定する。また、図7(2)に示すような非蓄積型ストリームを取り扱う想定パイプライン(イニシャル・パイプライン)とする。また、スタティック・スケジューリングでは、第1例と同様に、メモリサイズ・リミットを第1の規定メモリサイズMS_1とする。また、圧縮挿入までの時間制約(Time Constraint )は1Functionとする。さらに、各パイプラインステージ(図ではFunc1,Func2)では、「圧縮器Cmおよび伸長器Exの追加ができない」とは言っても、何れか一方(圧縮器Cm or 伸長器Ex)を挿入し得るものとする。
リコンフィグ制御部20は、スタティック・スケジューリングのため、先ず、パイプラインステージごとに圧縮閾値THを計算する(S1010)。本例の場合、Func1はStream1(3ユニットが最大),Stream2(3ユニットが最大)を入出力とするのでストリーム数は2であり、圧縮閾値TH1_1=メモリサイズ・リミット/ストリーム数=5/2=2.5となる。Func2はStream2,Stream3(0.8ユニットが最大)を入出力とするのでストリーム数は2であり、圧縮閾値TH1_2=メモリサイズ・リミット/ストリーム数=5/2=2.5となる。
リコンフィグ制御部20は、パイプラインステージごとに、計算した圧縮閾値TH1_1,TH1_2と、各Stream1(3ユニットが最大),Stream2(3ユニットが最大),Stream3(0.8ユニットが最大)を比較し、そのストリーム量(ユニット数)が圧縮閾値TH1_1,TH1_2を超えるストリームを圧縮・伸長の対象とする。本例の場合、リコンフィグ制御部20は、Stream1,Stream2(Stream3以外)を圧縮の対象とする。スタティック・スケジューリングによる圧縮器Cmおよび伸長器Ex(圧縮器Cm&伸長器Ex)の追加が適用し得るケースであれば(S1012-Y)、リコンフィグ制御部20は画像処理リコンフィグ部12に指示するのであるが、本例ではそれができないので、リコンフィグ制御部20は、バンディング処理の適用を画像処理リコンフィグ部12に指示する(S1012-N)。
このスタティック・スケジューリングによバンディング処理指示を受けた画像処理リコンフィグ部12は、図7(3)に示すように、先ず、Stream1の圧縮は、ホスト処理で行なう。
また、リコンフィグ制御部20は、画像処理リコンフィグ部12に対して、Stream1(Func1の入力ストリーム),Stream2(Func1の出力ストリーム、Func2の入力ストリーム)のローカルメモリ30との間のデータ転送を、所定サイズに分けて行なうように指示する。所定サイズに分けてローカルメモリ30との間でデータ転送を行なうには、非蓄積型ストリームであるStream1,Stream2の一部(分けた部分で直ちには使用されない部分)についてバンディング処理用に処理を待機させる必要があるため、その部分を蓄積型ストリームとして内部的には取り扱い、ローカルメモリ30の蓄積型ストリーム領域に格納しておく。
たとえば、バンディング処理の適用に当たっては、以下のような手順を踏む。先ず、リコンフィグ制御部20は、ストリームサイズ(ストリーム使用量合計MSUM1)/メモリサイズを算出し、算出結果に最も近く、大きな整数を分割数Dとする。本例の場合、ストリーム使用量合計MSUM1=6で、メモリサイズ(非蓄積型ストリーム領域)=3であり、前記の計算値は2となるので、分割数Dは2とする。
次に、画像処理リコンフィグ部12は、Stream1を求めた分割数Dで分けて、ローカルメモリ30との間でデータ転送を行ないながらデータ処理(画像処理)を行なう。このとき、非蓄積型ストリーム(Stream1)において、パイプラインステージ(Func1,Func2)に圧縮が入らない場合、圧縮ファンクション挿入による強制圧縮は意味を持たない。これは、一旦、RAWデータをローカルメモリ30に出力してしまうことになるからである。よって、パイプラインステージ(ファンクション:Func)には圧縮が入らず、図7(3)のように、Stream1,Stream2を入出力ストリームにするパイプラインステージであるFunc1について、入力側に伸長を配置する。以降は、分割したストリーム量ずつ(本例ではStream1について1.5ユニットずつ)、RAWデータによるバンディング処理となる。つまり、圧縮しないので(詳しくは、バンディング処理によりメモリオーバーフローを起さないように対処するので)、フォールバックは発生しない。
画像処理リコンフィグ部12は、1回目の処理では、圧縮された1.5ユニットのStream1の内の半分しか伸長を行なわず、ローカルメモリ30の非蓄積型ストリーム領域との間でデータ転送をしつつ、Func1でデータ処理(画像処理)を行ない処理済みのStream2(1.5ユニットが最大)を出力する。1.5ユニットのStream1はローカルメモリ30の蓄積型ストリーム領域に格納しておく。蓄積型ストリームのストリーム使用量合計MSUM1は1.5であり蓄積型ストリーム領域のサイズ(=2)を超えない。また、画像処理リコンフィグ部12は、ローカルメモリ30の非蓄積型ストリーム領域との間でStream2(1.5ユニットが最大)のデータ転送を行ないながらFunc2でデータ処理(画像処理)を行ない処理済みのStream3(0.4ユニットが最大)を出力する。これで、1回目の処理が完了する。この1回目のFunc1での処理過程では、非蓄積型ストリームのストリーム使用量合計MSUM1は3.0(=1.5+1.5)であり非蓄積型ストリーム領域のサイズ(=3)を超えないので、ローカルメモリ30との間でのデータ転送には破綻を来たさない。
続く2回目の処理では、先ず、処理済みの0.4ユニットのStream3を蓄積型ストリームとして扱い、ローカルメモリ30の蓄積型ストリーム領域に格納しておく。この格納時点では、蓄積型ストリームのストリーム使用量合計MSUM1は1.9(=1.5+0.4)であり蓄積型ストリーム領域のサイズ(=2)を超えないので破綻を来たすことはない。次に、一時的にローカルメモリ30の蓄積型ストリーム領域に格納しておいた1.5ユニットのStream1の内の残りの半分を処理対象として、前述と同様の処理を行なう。すなわち、画像処理リコンフィグ部12は、圧縮された1.5ユニットのStream1の内の残りの半分についてローカルメモリ30の非蓄積型ストリーム領域との間でデータ転送をしつつ、Func1でデータ処理(画像処理)を行ない処理済みのStream2(1.0ユニットが最大)を出力する。また、画像処理リコンフィグ部12は、ローカルメモリ30の非蓄積型ストリーム領域との間でStream2(1.0ユニットが最大)のデータ転送を行ないながらFunc2でデータ処理(画像処理)を行ない処理済みのStream3(0.4ユニットが最大)を出力する。これで、2回目の処理が完了する。この2回目のFunc1での処理過程では、非蓄積型ストリームのストリーム使用量合計MSUM1は2.5(=1.5+1.0)であり非蓄積型ストリーム領域のサイズ(=3)を超えないので、ローカルメモリ30との間でのデータ転送には破綻を来たさない。
なお、分割数Dに従って処理対象データであるストリームを分割して処理を行なうバンディング処理を適用した場合、ローカルメモリ30との間でのデータ転送回数が増えるので、処理時間が増加することが懸念される。その対策として、バンディング処理を適用せずに、二次フォールバック処理を適用することが考えられる。しかしながら、二次フォールバック処理におけるメインメモリ70との間でのデータ転送は、外部バス90やコントローラメインCPU50を介したデータ転送となり、そもそものデータ転送効率はローカルメモリ30を利用するデータ転送(事実上の内部的なデータ転送)に比べると遙かに悪い。ローカルメモリ30を利用したときのデータ転送速度E_30とメインメモリ70を利用したときのデータ転送速度E_70との比ER(=E_30/E_70)は、たとえば10倍以上になる。よって、分割数Dがあまり大きくない限りは、バンディング処理を適用した方が、全体の処理効率がよい。もちろん、分割数Dと転送速度比ERを比較したときに、分割数D>転送速度比ERとなるときには、バンディング処理ではなく、二次フォールバック処理を適用してもよい。
<第3例:第1実施形態>
図8は、第1実施形態のデータ処理装置1における第3例を説明する図である。第3例は、圧縮対象となるストリームが蓄積型ストリームである場合の一例である。第3例では、圧縮閾値THの定義式として、第2定義式を適用する(図ではTHで記す)。
図8は、第1実施形態のデータ処理装置1における第3例を説明する図である。第3例は、圧縮対象となるストリームが蓄積型ストリームである場合の一例である。第3例では、圧縮閾値THの定義式として、第2定義式を適用する(図ではTHで記す)。
ここでは、平均圧縮率が1/2(50%)、図8(1)に示すメモリ・マッピングのようにメモリサイズは7ユニット、メモリサイズ・リミット(メモリサイズの限界)は5ユニットで残りの1ユニットはバッファ領域とし、メモリサイズ・リミットの内、2ユニット分は非蓄積型ストリームを格納する非蓄積型ストリーム領域に割り当て、4.5ユニット分は蓄積型ストリームを格納する蓄積型ストリーム領域に割り当てる。本例では、圧縮対象となるストリームが蓄積型ストリームであるとする例であり、非蓄積型ストリーム領域が2ユニットであるので、各パイプラインステージで取り扱う非蓄積型ストリームの最大ストリーム量は、2ユニットを入出力で等分して1ユニットと仮定する。
また、図8(2)に示すような非蓄積型ストリームと蓄積型ストリームを取り扱う想定パイプライン(イニシャル・パイプライン)とする。また、スタティック・スケジューリングでは、第1例と同様に、メモリサイズ・リミットを第1の規定メモリサイズMS_1とする。また、圧縮挿入までの時間制約(Time Constraint )は1Functionとする。さらに、各パイプラインステージ(図ではFunc1,Func2,Func3)では、圧縮器Cmおよび伸長器Ex(圧縮器Cm or 伸長器Ex)を挿入し得るものとする。また、蓄積型メモリサイズTHは90%とする。蓄積型メモリサイズTHとは、蓄積型ストリーム領域のメモリオーバーを防ぐための閾値である。
リコンフィグ制御部20は、スタティック・スケジューリングのため、先ず、パイプラインステージごとに領域サイズ/ストリーム数に従って圧縮閾値TH2を計算する(S1010)。領域サイズは、その時点で使用が許可されるメモリ量であるが、本例では、第1ステージ(Func1)の領域サイズは5ユニット(=メモリサイズ・リミット)であり、第2ステージ(Func2)の領域サイズはメモリサイズ・リミット=5ユニットから蓄積型のStream3のストリーム量分(=1)を差し引いた4ユニットになる。
よって、本例の場合、Func1はStream1(1ユニットが最大),Stream2(1ユニットが最大),Stream3(1ユニットが最大)を入出力とするのでストリーム数は3であり、圧縮閾値TH2_1=領域サイズ/ストリーム数=5/3=1.6(近似値)となる。圧縮閾値TH2_1を超えるストリームは存在しないので、リコンフィグ制御部20は、圧縮対象が無いと判断する。
Func2はStream2,Stream4(1ユニットが最大),Stream5(3ユニットが最大)を入出力とするが既にローカルメモリ30にはStream3が記憶されているので、Func2での処理時点ではローカルメモリ30との関係における取り扱うストリーム数が4となり、圧縮閾値TH2_2=領域サイズ/ストリーム数=4/4=1.0となる。Stream5(3ユニットが最大)は圧縮閾値TH2_2を超えるので、リコンフィグ制御部20は、Stream5を圧縮対象と判断する。
スタティック・スケジューリングによる圧縮器Cmおよび伸長器Ex(圧縮器Cm&伸長器Ex)の追加が適用し得るケースであれば(S1012-Y)、リコンフィグ制御部20は画像処理リコンフィグ部12に指示する。このスタティック・スケジューリングによる圧縮器Cmおよび伸長器Ex(圧縮器Cm&伸長器Ex)の追加指示を受けた画像処理リコンフィグ部12は、図8(3)に示すように、Func2とFunc3との間に、Stream5に対しての圧縮器Cmを挿入する。
画像処理リコンフィグ部12は、ローカルメモリ30との間でStream1のデータ転送を行ないながらFunc1でデータ処理(画像処理)を行ない処理済みのStream2,Stream3を出力する。また、画像処理リコンフィグ部12は、ローカルメモリ30との間でStream2のデータ転送を行ないながらFunc2でデータ処理(画像処理)を行ない処理済みのStream4,Stream5を出力する。さらに、画像処理リコンフィグ部12は、ローカルメモリ30との間でStream5のデータ転送およびFunc3での圧縮を行ない(その間はStream4に対する処理を待機(Wait)する)ローカルメモリ30の蓄積型ストリーム領域に格納し、圧縮が完了すると、Func3でデータ処理(画像処理)を行ない処理済みのStream6を出力する。
この場合は、圧縮器Cmの平均圧縮率は1/2なので、Stream5に対しての圧縮後のストリーム量は1.5ユニットになる。
ただし、平均圧縮率は予測値であり、1/2を超えることもあり、場合によっては、破綻を来たすことがある。たとえば、Stream3の実際の圧縮率が50%、Stream5の実際の圧縮率が100%になるケースでは、ローカルメモリ30との間でのデータ転送では対処できなくなる。その対策として、第3例では、図8(4)に示すように、リコンフィグ制御部20は、非蓄積型ストリーム(ここではStream5)に対して二次フォールバック処理を適用するように、画像処理リコンフィグ部12に指示する。つまり、Stream5に圧縮を適用したとしても実際の圧縮率が十分でなく、蓄積型メモリサイズTHを越えたままであるため、ダイナミック・スケジューリングでホスト部5側のメインメモリ70へのデータ転送が行なわれる。なお、この後の画像処理で蓄積型ストリーム領域がオーバーフローする場合、ホスト部5へのデータ転送が行なわれるが、それまでに圧縮された部分はそのまま利用されるので、再圧縮は行なう必要がない。
<蓄積型ストリームのスタティック・スケジューリング>
図9は、第1実施形態のデータ処理装置1における、蓄積型ストリームのスタティック・スケジューリング処理の詳細を説明するフローチャートである。
図9は、第1実施形態のデータ処理装置1における、蓄積型ストリームのスタティック・スケジューリング処理の詳細を説明するフローチャートである。
先ず、リコンフィグ制御部20は、オペレータNを“1”に設定することで、1段目のファンクション(Func1)を割り当てる(S1100)。そして、リコンフィグ制御部20は、圧縮閾値THを計算した後(S1112)、N=1に関してのイニシャルStreamの処理を行なう。具体的には、リコンフィグ制御部20は、「入力Streamが圧縮閾値THを越えているか?」を判断し(S1114)、イエスであればホスト部5(コントローラメインCPU50)で圧縮してデータ転送をするように指示し(S1114-Y,S1116)、ノーであればホスト部5(コントローラメインCPU50)から圧縮なしでデータ転送するように指示する(S1114-N,S1118)。
次に、リコンフィグ制御部20は、パイプライン管理テーブルTB10を参照して、「伸長器挿入待ちの入力Streamはあるか?」を確認する(S1120)。
次に、リコンフィグ制御部20は、「ファンクションN(FuncN)に伸長器Exが挿入可能か?」を判断し(S1124)、イエスであればファンクションNに伸長器Exを挿入し(S1124-Y,S1126)、ノーであれば「該Streamの伸長器挿入器時間制約範囲内か?」を判断する(S1130)。なお、伸長器挿入の時間制約は、使う時点から遡る最大時間長で定義される。リコンフィグ制御部20は、ノーであれば伸長ファンクションの強制挿入を画像処理リコンフィグ部12に指示し(S1130-N,S1132)、イエスであれば伸長器挿入待ちStreamとしてStream管理テーブルTB11に(再)登録する(S1130-Y,S1134)。ステップS1120でノーのときを含めてこれら一連の処理が完了するまで(S1120〜S1134)が、伸長器挿入処理である。
伸長器挿入処理が完了すると、次にリコンフィグ制御部20は、「圧縮器挿入待ちの入力Streamはあるか?」を判断し(S1140)、イエスであれば「ファンクションNに圧縮器Cmが挿入可能か?」を判断し(S1140-Y,S1142)、イエスであればファンクションNへの圧縮器Cmの挿入を画像処理リコンフィグ部12に指示する(S1142-Y,S1144)。ステップS1142でノーであれば、リコンフィグ制御部20は、該Streamの圧縮器挿入時間制約範囲内か?」を判断する(S1150)。なお、圧縮器挿入の時間制約は、該Stream生成時点から経過した最大時間長で定義される。リコンフィグ制御部20は、ノーであれば圧縮ファンクションの強制挿入を画像処理リコンフィグ部12に指示し(S1150-N,S1152)、イエスであれば圧縮器挿入待ちStreamとしてStream管理テーブルTB12に登録する(S1150-Y,S1154)。ステップS1140でノーのときを含めてこれら一連の処理が完了するまで(S1140〜S1154)が、圧縮器挿入処理である。
圧縮器挿入処理が完了すると、リコンフィグ制御部20は、オペレータNに“1”を加算して次段のファンクションを割り当て(S1160)、ステップS1120に戻り、前記と同様の処理を繰り返す。
<蓄積型ストリームのダイナミック・スケジューリング>
図10は、第1実施形態のデータ処理装置1における、蓄積型ストリームのダイナミック・スケジューリング処理の詳細を説明するフローチャートである。
図10は、第1実施形態のデータ処理装置1における、蓄積型ストリームのダイナミック・スケジューリング処理の詳細を説明するフローチャートである。
先ず、リコンフィグ制御部20は、オペレータNを“1”に設定することで、1段目のファンクション(Func1)を割り当てる(S1200)。そして、リコンフィグ制御部20と画像処理リコンフィグ部12は、図9に示したスタティック・スケジューリング処理と同様の伸長器挿入処理を実行し(S1210)、さらに、図9に示したスタティック・スケジューリング処理と同様の圧縮器挿入処理を実行する(S1230)。この後、画像処理リコンフィグ部12は、ファンクションNの画像処理を実行する(S1250)。
次に、リコンフィグ制御部20は、「ファンクションNまでの蓄積型入出力Streamサイズ合計値>蓄積型Stream領域サイズ」を満たすか否かを判断する(S1260)。「出力Stream圧縮率が圧縮率平均値を上回った(悪い)か?既に領域サイズ・リミットに達した。」である。なお、圧縮率は「圧縮後Streamサイズ/圧縮前Streamサイズ」である。
ステップS1260での判断がノーであれば、リコンフィグ制御部20は、「蓄積型Streamサイズ>圧縮TH」を満たすか否かを判断し(S1270)、イエスであればStream管理テーブルTB13へ該Streamを登録(圧縮・伸長待ち)する(S1272)。
ステップS1260での判断がイエスであれば、リコンフィグ制御部20は、画像処理リコンフィグ部12に対して二次フォールバック処理を指示する(S1280)。具体的には、リコンフィグ制御部20は、ホスト部5(コントローラメインCPU50、メインメモリ70)へ該Streamをデータ転送するよう画像処理リコンフィグ部12に指示する(S1282)。この指示を受けた画像処理リコンフィグ部12は、今までローカルメモリ30に出力した分を含め、コントローラメインCPU50側にデータ転送する。
次に、画像処理リコンフィグ部12は、圧縮ファンクションを強制挿入して圧縮処理(を実行する(S1284)。「圧縮ファンクションの強制挿入」とは、そのファンクション(パイプラインステージ)に圧縮器を強制的に挿入すると言う意味である。画像処理リコンフィグ部12は、Stream管理情報テーブルTB14を参照して、該当Streamを知り、圧縮閾値TH未満の蓄積型Streamを、挿入した圧縮器を使用して圧縮する。
なお、伸長器挿入処理は、Stream管理テーブルTB15を参照して行なう(該Streamが伸長必要なことを知る)。
前記の一連の処理が完了すると、リコンフィグ制御部20は、オペレータNに“1”を加算して次段のファンクションを割り当て(S1290)、ステップS1210に戻り、前記と同様の処理を繰り返す。
<非蓄積型ストリームのスタティック・スケジューリング>
図11は、第1実施形態のデータ処理装置1における、非蓄積型ストリームのスタティック・スケジューリング処理の詳細を説明するフローチャートである。
図11は、第1実施形態のデータ処理装置1における、非蓄積型ストリームのスタティック・スケジューリング処理の詳細を説明するフローチャートである。
リコンフィグ制御部20は、オペレータNを“1”に設定することで、1段目のファンクション(Func1)を割り当てる(S1300)。
リコンフィグ制御部20は、圧縮閾値THを計算した後(S1312)、N=1に関してのイニシャルStreamの処理を行なう。具体的には、リコンフィグ制御部20は、「入力Streamが圧縮閾値THを越えているか?」を判断し(S1314)、イエスであればホスト部5(コントローラメインCPU50)で圧縮してデータ転送をするように指示し(S1314-Y,S1316)、ノーであればホスト部5(コントローラメインCPU50)から圧縮なしでデータ転送するように指示する(S1314-N,S1318)。
リコンフィグ制御部20は、パイプライン管理テーブルTB16を参照して、「入力Streamが圧縮されているか?」を確認する(S1320)。
次に、リコンフィグ制御部20は、ステップS1320でイエスであれば、「ファンクションN(FuncN)に伸長器Exが挿入可能か?」を判断し(S1324)、イエスであればファンクションNに伸長器Exを挿入し(S1324-Y,S1326)、ノーであれば「伸長ファンクションを強制挿入」する(S1330)。次に、リコンフィグ制御部20は、バンディング処理用の分割数を計算し、画像処理リコンフィグ部12に対して、ストリームのローカルメモリ30との間のデータ転送に当たり、RAWデータを所定サイズに分けて行なうバンディング処理を指示する(S1332)。ステップS1320でノーのときを含めてこれら一連の処理が完了するまで(S1320〜S1332)が、伸長器挿入処理である。
次に、リコンフィグ制御部20は、「出力Streamサイズが圧縮THを越えている?」を確認し(S1340)、イエスであれば「ファンクションN(FuncN)に圧縮器Cmが挿入可能か?」を判断し(S1344)、イエスであればファンクションNに圧縮器Cmを挿入し(S1344-Y,S1346)、ノーであればバンディング処理用の分割数を計算し、画像処理リコンフィグ部12に対して、ストリームのローカルメモリ30との間のデータ転送に当たり、RAWデータを所定サイズに分けて行なうバンディング処理を指示する(S1352)。ステップS1340でノーのときを含めてこれら一連の処理が完了するまで(S1340〜S1352)が、圧縮器挿入処理である。
圧縮器挿入処理が完了すると、リコンフィグ制御部20は、オペレータNに“1”を加算して次段のファンクションを割り当て(S1360)、ステップS1320に戻り、前記と同様の処理を繰り返す。
<非蓄積型ストリームのダイナミック・スケジューリング>
図12は、第1実施形態のデータ処理装置1における、非蓄積型ストリームのダイナミック・スケジューリング処理の詳細を説明するフローチャートである。非蓄積型ストリームでは、実際の圧縮率が平均圧縮率を上回った(悪い)場合に、該ストリームをホスト部5(コントローラメインCPU50やメインメモリ70)へデータ転送(二次フォールバック処理)を行なうスケジューリングのみが追加される。つまり、非蓄積型ストリームではメモリ量削減のために圧縮ファンクションを挿入することは意味をもたない。
図12は、第1実施形態のデータ処理装置1における、非蓄積型ストリームのダイナミック・スケジューリング処理の詳細を説明するフローチャートである。非蓄積型ストリームでは、実際の圧縮率が平均圧縮率を上回った(悪い)場合に、該ストリームをホスト部5(コントローラメインCPU50やメインメモリ70)へデータ転送(二次フォールバック処理)を行なうスケジューリングのみが追加される。つまり、非蓄積型ストリームではメモリ量削減のために圧縮ファンクションを挿入することは意味をもたない。
リコンフィグ制御部20は、オペレータNを“1”に設定することで、1段目のファンクション(Func1)を割り当てる(S1400)。
リコンフィグ制御部20は、圧縮閾値THを計算した後(S1412)、N=1に関してのイニシャルStreamの処理を行なう。具体的には、リコンフィグ制御部20は、「入力Streamが圧縮閾値THを越えているか?」を判断し(S1414)、イエスであればホスト部5(コントローラメインCPU50)で圧縮してデータ転送をするように指示し(S1414-Y,S1416)、ノーであればホスト部5(コントローラメインCPU50)から圧縮なしでデータ転送するように指示する(S1414-N,S1418)。
画像処理リコンフィグ部12は、ホスト部5から送られてくるストリームに対してファンクションNの画像処理を実行する(S1420)。リコンフィグ制御部20は、ファンクションNから出力される出力Streamサイズを監視し「出力Streamサイズが非蓄積型Streamメモリサイズを越えている?」かを確認する(S1422)。イエスであれば、リコンフィグ制御部20は、Stream管理テーブルTB17に該Streamの保管場所、圧縮・非圧縮を登録し、ホスト部5(コントローラメインCPU50、メインメモリ70)へ該Streamをデータ転送するように、つまり、画像処理リコンフィグ部12に対して二次フォールバック処理を指示する(S1424)。
ステップS1422でノーのときを含めてこれら一連の処理が完了すると、リコンフィグ制御部20は、オペレータNに“1”を加算して次段のファンクションを割り当て(S1430)、ステップS1420に戻り、前記と同様の処理を繰り返す。
<比較例との対比:第1実施形態>
図13は、第1実施形態の仕組みと比較例との差を説明する図である。前述の通り、プログラマブル・デバイス(FPGAやDRP)の画像処理を制御するスケジューラ機能を持つリコンフィグ制御部20を導入した第1実施形態の仕組みを適用し、圧縮・伸長を選択的に配置することで、圧縮・伸長の頻度を抑えてデータ処理性能(主に速度面での性能)の低下を抑制しながら、メモリ使用量を削減する処理がなされる。一概には言えないが、メモリ削減効果としてはたとえば50%程度は可能であり、与えられたメモリを最大限活用して画像処理を実行し得る。メモリ使用量の圧迫度合いは同時に処理するストリーム数が多い程強くなるので、第1実施形態の適用による効果は、同時に処理するストリーム数が多い方が高くなる。ただし、ストリーム数が少ない場合でも、第1実施形態の仕組みを適用することでメモリ使用量の削減効果やデータ処理性能(主に速度面での性能)向上効果は得られる。
図13は、第1実施形態の仕組みと比較例との差を説明する図である。前述の通り、プログラマブル・デバイス(FPGAやDRP)の画像処理を制御するスケジューラ機能を持つリコンフィグ制御部20を導入した第1実施形態の仕組みを適用し、圧縮・伸長を選択的に配置することで、圧縮・伸長の頻度を抑えてデータ処理性能(主に速度面での性能)の低下を抑制しながら、メモリ使用量を削減する処理がなされる。一概には言えないが、メモリ削減効果としてはたとえば50%程度は可能であり、与えられたメモリを最大限活用して画像処理を実行し得る。メモリ使用量の圧迫度合いは同時に処理するストリーム数が多い程強くなるので、第1実施形態の適用による効果は、同時に処理するストリーム数が多い方が高くなる。ただし、ストリーム数が少ない場合でも、第1実施形態の仕組みを適用することでメモリ使用量の削減効果やデータ処理性能(主に速度面での性能)向上効果は得られる。
たとえば、図13は、各パイプラインステージでは、入力ストリームが1系統で出力ストリームも1系統である場合における、比較例と第1実施形態の対比を示している。イニシャル・パイプラインとしては、図13(1)に示すように、1ユニットのStream1がFunc1に入力され、Func1でのデータ処理により3ユニットのStream2が出力され、これがFunc2に入力され、Func2でのデータ処理により0.8ユニットのStream3が出力されている。この場合、メモリサイズ・リミットを3ユニットとすると、Func1でのデータ処理時にはローカルメモリ30との間のデータ転送に破綻を来たす。
この対策としては、圧縮率を求め(圧縮率=3(メモリサイズ・リミット)÷4(ストリーム使用量合計MSUM1)=75%)、図13(2)に示す比較例のモディファイド・パイプラインのように、求めた圧縮率を適用する圧縮器および対応する伸長器を配置することが考えられる。この場合、各ファンクションには、入力側に伸長器Exが挿入され、出力側に圧縮器Cmが挿入されるので、ファンクション数(パイプラインステージ数)が増えるほど圧縮器Cmと伸長器Exが数多く入ることになる。このことは、レイテンシーがある場合は、大きな性能低下インパクトとなる。本来であれば不要な圧縮処理や伸長処理のための時間がオーバーヘッドになるからである。また、圧縮率が予想圧縮率よりも悪い場合は、メモリ不足でスタックすることにもなる。
これに対して、第1実施形態の仕組みでは、圧縮・伸長の頻度を低下させる圧縮閾値THを導入し、圧縮閾値THに基づきストリームを選択的に圧縮・伸長することで、圧縮・伸長の頻度を低下させるように、パイプラインステージをスケジューリングする。本例の場合、圧縮閾値TH=3(メモリサイズ・リミット)÷ 2(ストリーム数合計)=1.5となるので、図13(3)に示すように、Stream2についてのみ圧縮・伸長を適用するように、Func1の出力側に圧縮器Cmを挿入し、Func2の入力側に伸長器Exを挿入したモディファイド・パイプラインを構築する。このように、第1実施形態の仕組みでは、選択的に圧縮・伸長が入るので、レイテンシーの影響が最小限に抑えられる。また、この図では示さないが、前述のように、圧縮率が悪く目盛りオーバーとなるケースでは、ダイナミック・スケジューリングによるフォールバック機能が働くので、システムは動き続ける。
因みに、特開平5−2639号公報には、圧縮画像データの伸長処理を実際に編集処理に必要な時間までに自動的に行なえる画像処理システムが提案されている。しかしながら、この仕組みでは、非可逆圧縮を対象としており、可逆圧縮で圧縮率が悪い場合を考慮していない。したがって、特開平5−2639号公報に記載の仕組みは、第1実施形態のスタティック・スケジューリング相当の処理のみで、ダイナミック・スケジューリングという概念がない。加えて、特開平5−2639号公報に記載の仕組みは、編集要求が重なれば膨大なメモリ空間を使用してしまう。これに対して、第1実施形態の仕組みでは、組込み用途でメモリ制約を考慮しているため、メモリ制限内でスケジューリングする。さらに、特開平5−2639号公報に記載の仕組みは、圧縮・伸長が専用のコンピュータ・リソースで常駐している必要があるが、第1実施形態の仕組みでは、必要なときに出現させている相違もある。
<<第2実施形態>>
図14は、第2実施形態のデータ処理装置1の仕組みを説明する図である。第2実施形態では、第1実施形態と同様の観点から、「内部処理構成をプログラマブル可能なデバイス」を使用して、その再構成のスケジューリングを適正化する。こうすることで、ハードウェアリソースを増やさないで、画像処理速度性能低下を抑制し、画像処理に必要なストリーム使用量合計MSUM以下のメモリ容量(メモリサイズ)でも、正常に画像処理を実現する仕組みにする。DRP10の画像処理リコンフィグ部12(リコンフィグパイプライン)のステージごとに圧縮閾値THを算出し、圧縮閾値THを超えるストリーム量(データサイズ)のストリームは画像処理と並行に圧縮器や伸長器を挿入する点では第1実施形態と同様の仕組みを採る。同一画素データについては伸長後に画像処理を行ない、また画像処理後の画素データを圧縮するが、他の画素データとの関係では画像処理と並行に圧縮処理や伸長処理がなされるので、圧縮処理や伸長処理のための時間ロスは抑えられる。メモリ使用量の増加もない。
図14は、第2実施形態のデータ処理装置1の仕組みを説明する図である。第2実施形態では、第1実施形態と同様の観点から、「内部処理構成をプログラマブル可能なデバイス」を使用して、その再構成のスケジューリングを適正化する。こうすることで、ハードウェアリソースを増やさないで、画像処理速度性能低下を抑制し、画像処理に必要なストリーム使用量合計MSUM以下のメモリ容量(メモリサイズ)でも、正常に画像処理を実現する仕組みにする。DRP10の画像処理リコンフィグ部12(リコンフィグパイプライン)のステージごとに圧縮閾値THを算出し、圧縮閾値THを超えるストリーム量(データサイズ)のストリームは画像処理と並行に圧縮器や伸長器を挿入する点では第1実施形態と同様の仕組みを採る。同一画素データについては伸長後に画像処理を行ない、また画像処理後の画素データを圧縮するが、他の画素データとの関係では画像処理と並行に圧縮処理や伸長処理がなされるので、圧縮処理や伸長処理のための時間ロスは抑えられる。メモリ使用量の増加もない。
ただし、第1実施形態との相違点としては、圧縮閾値THの定義式としては、第3定義式として、“圧縮閾値TH3=(本ステージで使用できるメモリサイズ入力ストリームサイズ合計)÷(出力ストリームの総本数)”を使用する。なお、本ステージで使用できるメモリサイズとは、メモリサイズから本ステージには関係ない、蓄積ストリームの合計サイズを差し引いたサイズのことである。
第1実施形態との相違点としては、複数の出力ストリームを圧縮する必要がある場合において圧縮器が同一ファンクション(当該ステージの画像処理リコンフィグ部12)に規模的に入らない場合や、入力ストリーム(単一・複数の何れでもよい)を伸長する必要がある場合において一度に伸長するとメモリ容量オーバーとなる場合の対処の仕組みである。何れの場合も、時分割処理で対処する点に特徴がある。
圧縮に関する時分割処理の仕組みのポイントは、ローカルメモリ30に空きスペースが存在しないとき、それら複数のストリームを分けて順番に同じデータ処理(画像処理)を実行し、このとき、必要に応じてストリームに対しては圧縮を加える。なお、リコンフィグ制御部20は、複数の出力ストリームを時分割でデータ処理するようにスケジューリングを行なう点に特徴がある。つまり、リコンフィグ制御部20は、データ処理とその後の圧縮処理の組合せで時分割で処理を実行するようにスケジューリングする。「必要に応じて」とは、何れか1つの出力ストリームに関しての処理時にはローカルメモリ30に空きスペースが存在するときには圧縮せず、空きスペースが存在しなければ圧縮することを意味する。圧縮するかしないかは、当該処理で出力される出力ストリームサイズとも関係し、一方の出力ストリームに関しての処理時には圧縮せず他方の処理時には圧縮するようなケースも存在する。
伸長に関する時分割処理の仕組みのポイントは、圧縮している入力ストリームを伸長してデータ処理(画像処理)を行なう場合に、入力ストリームを一括して伸長処理を実行すると(たとえば一度にページ分伸長すると)ローカルメモリ30のメモリ容量をオーバーする場合、メモリ容量が許容する分だけ、「伸長+データ処理」を行ない、次にその続きから「伸長+データ処理」を行なうなど、リコンフィグ制御部20は、入力ストリームを複数バンドに分割して時分割でデータ処理するようにスケジューリングを行なう。つまり、リコンフィグ制御部20は、伸長処理とその後のデータ処理の組合せで、時分割で処理を実行するようにスケジューリングする。
なお、圧縮・伸長の何れの場合も、リコンフィグ制御部20は、圧縮器Cmや伸長器Exが画像処理のコンフィグ(ファンクション)と同一コンフィグに挿入できず、メモリ容量をオーバーすると判断した場合には、圧縮・伸長のコンフィグを、画像処理パイプラインの途中に挿入するように調整する。
このように、第2実施形態の対処手法は、時分割でデータ処理するようにスケジューリングを行なうことで、メモリサイズオーバーを回避する。たとえば、図14(2)に示すように、メモリサイズが5ユニットのときに、1ユニットの第1入力ストリームIN1と1ユニットの第2入力ストリームIN2とがFunc1に入力され、当該Func1における画像処理後に、3ユニットの第1出力ストリーム OUT1と2ユニットの第2出力ストリーム OUT2とが出力される場合を想定する。この場合、Func1での画像処理時にはストリーム使用量合計MSUM1が7ユニットとなり、メモリサイズを超えてしまう。また、第2実施形態で適用する第3定義式による圧縮閾値TH3で判断した場合でも、メモリサイズ=領域サイズ=5であり、2つの出力ストリームを一括で出力するケースであるので出力ストリームの総本数=2であるから、圧縮閾値TH3(改良版)=(5−2)/2=1.5となり、2つの出力ストリームは何れも圧縮閾値TH3(改良版)をオーバーしている。
一方、図14(3)に示すように、第2実施形態を適用すると、たとえば、時分割処理における第1の処理では第1出力ストリーム OUT1を出力し、次の第2の処理では第2出力ストリーム OUT2を出力するものとする。圧縮適用時には1/3の圧縮を行なうものとする。この場合、第1の処理時点では、第1出力ストリーム量は3×1/3=1ユニットとなるので、ストリーム使用量合計MSUM1=3<メモリサイズ=5となり、また、ストリーム使用量合計MSUM2=2であり圧縮閾値TH3(改良版)=(5−2)/1=3となり、第1出力ストリーム量(=1ユニット)以上となるから、問題なく処理される。次の第2の処理時点では、ストリーム使用量合計MSUM1=4<メモリサイズ=5となり、また、ストリーム使用量合計MSUM2は第1の処理時点よりも第1出力ストリーム OUT1分の1ユニットが加算され3ユニットになり、圧縮閾値TH3(改良版)=(5−2−1)/1=2となり、問題なく処理される。
次に、具体的なケースを示して、第2実施形態の仕組みについて説明する。なお、以下に述べる第2実施形態の各例においては、最終的には、実際には第2実施形態の特徴点である時分割処理の仕組みが適用されないケースがあるが、時分割処理を適用する前に、時分割処理を適用する必要があるか否かを判定する手順が必要であるので、様々なケースについて説明する。因みに、各例において、圧縮適用時には1/3の圧縮を行なうものとする。
<第1例:第2実施形態>
図15は、第2実施形態の第1例を説明する図である。第1例は、第3定義式の圧縮閾値TH3(改良版)に基づいて圧縮処理や時分割処理を適用する必要があるか否かを判定した結果、実際には、時分割処理の仕組みを適用しないと判断するケースである。
図15は、第2実施形態の第1例を説明する図である。第1例は、第3定義式の圧縮閾値TH3(改良版)に基づいて圧縮処理や時分割処理を適用する必要があるか否かを判定した結果、実際には、時分割処理の仕組みを適用しないと判断するケースである。
図15に示すように、メモリサイズが5ユニットのときに、1ユニットの第1入力ストリームIN1と1ユニットの第2入力ストリームIN2とがFunc1に入力され、当該Func1における画像処理後に、1ユニットの第1出力ストリーム OUT1と1ユニットの第2出力ストリーム OUT2とが出力される場合を想定する。この場合、Func1での画像処理時にはストリーム使用量合計MSUM1が4ユニットとなり、メモリサイズを超えない。また、第2実施形態で適用する第3定義式による圧縮閾値TH3で判断した場合でも、メモリサイズ=領域サイズ=5であり、2つの出力ストリームを一括で出力するケースであるので出力ストリームの総本数=2であるから、圧縮閾値TH3(改良版)=(5−2)/2=1.5となり、2つの出力ストリームは何れも圧縮閾値TH3(改良版)をオーバーしない(圧縮閾値TH3以下である)。よって、リコンフィグ制御部20は、圧縮を適用することなく、そのまま画像処理を行ないそのまま出力すると判断する。
<第2例:第2実施形態>
図16は、第2実施形態の第2例を説明する図である。第2例は、第3定義式の圧縮閾値TH3(改良版)に基づいて圧縮処理や時分割処理を適用する必要があるか否かを判定した結果、一方の出力ストリームに関しての処理時には圧縮せず他方の処理時には圧縮すると判断するケースである。
図16は、第2実施形態の第2例を説明する図である。第2例は、第3定義式の圧縮閾値TH3(改良版)に基づいて圧縮処理や時分割処理を適用する必要があるか否かを判定した結果、一方の出力ストリームに関しての処理時には圧縮せず他方の処理時には圧縮すると判断するケースである。
図16(1)に示すように、メモリサイズが5ユニットのときに、1ユニットの第1入力ストリームIN1と1ユニットの第2入力ストリームIN2とがFunc1に入力され、当該Func1における画像処理後に、1ユニットの第1出力ストリーム OUT1と2ユニットの第2出力ストリーム OUT2とが出力される場合を想定する。この場合、Func1での画像処理時にはストリーム使用量合計MSUM1が5ユニットとなり、メモリサイズを超えない。しかしながら、第2実施形態で適用する第3定義式による圧縮閾値TH3で判断した場合には、メモリサイズ=領域サイズ=5であり、2つの出力ストリームを一括で出力するケースであるので出力ストリームの総本数=2であるから、圧縮閾値TH3(改良版)=(5−2)/2=1.5となり、第1出力ストリーム OUT1は圧縮閾値TH3(改良版)をオーバーしない(圧縮閾値TH3以下である)が、第2出力ストリーム OUT2は圧縮閾値TH3(改良版)をオーバーする(圧縮閾値TH3以上である)。
よって、リコンフィグ制御部20は、先ず、第2出力ストリーム OUT2についての処理時には画像処理を行ない圧縮を適用して出力すると判断する。そのときの第2出力ストリーム OUT2は2/3=0.6となり、再度計算すると、圧縮閾値TH3(改良版)=(5−2−0.6)/2=2.4となる。よって、次に第1出力ストリーム OUT1を出力するときは圧縮を行なわないと判断する。
<第3例:第2実施形態>
図17は、第2実施形態の第3例を説明する図である。第3例は、第3定義式の圧縮閾値TH3(改良版)に基づいて圧縮処理や時分割処理を適用する必要があるか否かを判定した結果、各出力ストリームに関しての処理時には圧縮すると判断するケースである。特に、後述する第4例との対比においては、各出力ストリーム用に個別の圧縮器Cmを同一ファンクション内に挿入し得る場合の事例である。
図17は、第2実施形態の第3例を説明する図である。第3例は、第3定義式の圧縮閾値TH3(改良版)に基づいて圧縮処理や時分割処理を適用する必要があるか否かを判定した結果、各出力ストリームに関しての処理時には圧縮すると判断するケースである。特に、後述する第4例との対比においては、各出力ストリーム用に個別の圧縮器Cmを同一ファンクション内に挿入し得る場合の事例である。
図17(1)に示すように、メモリサイズが5ユニットのときに、1ユニットの第1入力ストリームIN1と1ユニットの第2入力ストリームIN2とがFunc1に入力され、当該Func1における画像処理後に、2ユニットの第1出力ストリーム OUT1と2ユニットの第2出力ストリーム OUT2とが出力される場合を想定する。この場合、Func1での画像処理時にはストリーム使用量合計MSUM1が6ユニットとなり、メモリサイズを超えてしまう。また、第2実施形態で適用する第3定義式による圧縮閾値TH3で判断した場合には、メモリサイズ=領域サイズ=5であり、2つの出力ストリームを一括で出力するケースであるので出力ストリームの総本数=2であるから、圧縮閾値TH3(改良版)=(5−2)/2=1.5となり、第1出力ストリーム OUT1および第2出力ストリーム OUT2は何れも圧縮閾値TH3(改良版)をオーバーする(圧縮閾値TH3以上である)。
よって、リコンフィグ制御部20は、先ず、少なくても第1出力ストリーム OUT1および第2出力ストリーム OUT2の何れか一方についての処理時には画像処理を行ない圧縮を適用して出力する必要があると判断する。さらに、各出力ストリーム用に個別の圧縮器Cmを同一ファンクション内に挿入し得るか否かを判断する。その結果、個別の圧縮器Cmを同一ファンクション内に挿入し得るケースであり、時分割処理の適用については適用不要と判断し、第1出力ストリーム OUT1および第2出力ストリーム OUT2の双方についての処理時には並行的に画像処理を行ないかつ個別に圧縮を適用して出力すると判断する。
この場合、図17(2)に示すように、第1出力ストリーム量および第2出力ストリーム量はそれぞれ2×1/3≒0.6ユニットとなるので、ストリーム使用量合計MSUM=3.2<メモリサイズ=5となり、また、ストリーム使用量合計MSUM2=2であり圧縮閾値TH3(改良版)=(5−2)/2=1.5となり、圧縮後の第1出力ストリーム量および第2出力ストリーム量(=0.6ユニット)以上となるから、時分割処理を適用しなくても、問題なく処理される。
<第4例:第2実施形態>
図18は、第2実施形態の第4例を説明する図である。第4例は、第3定義式の圧縮閾値TH3(改良版)に基づいて圧縮処理や時分割処理を適用する必要があるか否かを判定した結果、各出力ストリームに関しての処理時には圧縮すると判断するケースである。特に、前述の第3例との対比においては、画像処理の規模が大きく、各出力ストリーム用に個別の圧縮器Cmを同一ファンクション内に挿入できない場合の事例である。また、後述する第5例との対比においては、2回目の処理時の出力ストリームには圧縮を適用しない事例である。
図18は、第2実施形態の第4例を説明する図である。第4例は、第3定義式の圧縮閾値TH3(改良版)に基づいて圧縮処理や時分割処理を適用する必要があるか否かを判定した結果、各出力ストリームに関しての処理時には圧縮すると判断するケースである。特に、前述の第3例との対比においては、画像処理の規模が大きく、各出力ストリーム用に個別の圧縮器Cmを同一ファンクション内に挿入できない場合の事例である。また、後述する第5例との対比においては、2回目の処理時の出力ストリームには圧縮を適用しない事例である。
図18(1)に示すように、メモリサイズが5ユニットのときに、1ユニットの第1入力ストリームIN1と1ユニットの第2入力ストリームIN2とがFunc1に入力され、当該Func1における画像処理後に、2ユニットの第1出力ストリーム OUT1と2ユニットの第2出力ストリーム OUT2とが出力される場合を想定する。この場合、Func1での画像処理時にはストリーム使用量合計MSUM1が6ユニットとなり、メモリサイズを超えてしまう。また、第2実施形態で適用する第3定義式による圧縮閾値TH3で判断した場合には、メモリサイズ=領域サイズ=5であり、2つの出力ストリームを一括で出力するケースであるので出力ストリームの総本数=2であるから、圧縮閾値TH3(改良版)=(5−2)/2=1.5となり、第1出力ストリーム OUT1および第2出力ストリーム OUT2は何れも圧縮閾値TH3(改良版)をオーバーする(圧縮閾値TH3以上である)。
よって、リコンフィグ制御部20は、先ず、少なくても第1出力ストリーム OUT1および第2出力ストリーム OUT2の何れか一方についての処理時には画像処理を行ない圧縮を適用して出力する必要があると判断する。さらに、各出力ストリーム用に個別の圧縮器Cmを同一ファンクション内に挿入し得るか否かを判断する。その結果、画像処理の規模が大きく、個別の圧縮器Cmを同一ファンクション内に挿入できないケースであり、時分割処理の適用については適用必須と判断し、第1出力ストリーム OUT1および第2出力ストリーム OUT2の処理時には時分割処理で画像処理を行ない、かつ、少なくとも一方の処理時には圧縮を適用して出力すると判断する。そして、2回目の処理時にも、圧縮閾値TH3(改良版)を計算し、その結果、2回目の処理時には圧縮処理は適用不要と判断する。ここでは、時分割処理の適用においては、たとえば、第1出力ストリーム OUT1の処理を先に実行し、第2出力ストリーム OUT2の処理を後に実行するものとする。
この場合、図18(2)に示すように、第1の処理時点では、第1出力ストリーム量は2×1/3≒0.6ユニットとなるので、ストリーム使用量合計MSUM=2.6<メモリサイズ=5となり、また、ストリーム使用量合計MSUM2=2であり圧縮閾値TH3(改良版)=(5−2)/1=3となり、第1出力ストリーム量(=0.6ユニット)以上となるから、問題なく処理される。次の第2の処理時点では、ストリーム使用量合計MSUM=4.6<メモリサイズ=5となり、また、ストリーム使用量合計MSUM2は第1の処理時点よりも第2出力ストリーム OUT2分の0.6ユニットが加算され2.6ユニットになり、圧縮閾値TH3(改良版)=(5−2−0.6)/1=2.4となるから、2本目の第2出力ストリーム OUT2(=2ユニット)に対して圧縮を適用しなくても問題なく処理される。
なお、この第4例では、画像処理リコンフィグ部12内に圧縮器Cmを1つ挿入して、複数の出力ストリームが各別に時分割で使用する例で示しているが、各出力ストリームに各別に圧縮器Cmを配置しつつ、各出力ストリームのデータ量の半分ずつを時分割で処理するようにスケジューリングしてもよい。
<第5例:第2実施形態>
図19は、第2実施形態の第5例を説明する図である。第5例は、第3定義式の圧縮閾値TH3(改良版)に基づいて圧縮処理や時分割処理を適用する必要があるか否かを判定した結果、各出力ストリームに関しての処理時には圧縮すると判断するケースである。特に、前述の第4例との対比においては、画像処理の規模が大きく、各出力ストリーム用に個別の圧縮器Cmを同一ファンクション内に挿入できない場合において、各出力ストリームの処理時に圧縮を適用する事例である。
図19は、第2実施形態の第5例を説明する図である。第5例は、第3定義式の圧縮閾値TH3(改良版)に基づいて圧縮処理や時分割処理を適用する必要があるか否かを判定した結果、各出力ストリームに関しての処理時には圧縮すると判断するケースである。特に、前述の第4例との対比においては、画像処理の規模が大きく、各出力ストリーム用に個別の圧縮器Cmを同一ファンクション内に挿入できない場合において、各出力ストリームの処理時に圧縮を適用する事例である。
図19(1)に示すように、メモリサイズが5ユニットのときに、1ユニットの第1入力ストリームIN1と1ユニットの第2入力ストリームIN2とがFunc1に入力され、当該Func1における画像処理後に、3ユニットの第1出力ストリーム OUT1と2ユニットの第2出力ストリーム OUT2とが出力される場合を想定する。この場合、Func1での画像処理時にはストリーム使用量合計MSUM1が7ユニットとなり、メモリサイズを超えてしまう。また、第2実施形態で適用する第3定義式による圧縮閾値TH3で判断した場合には、メモリサイズ=領域サイズ=5であり、2つの出力ストリームを一括で出力するケースであるので出力ストリームの総本数=2であるから、圧縮閾値TH3(改良版)=(5−2)/2=1.5となり、第1出力ストリーム OUT1および第2出力ストリーム OUT2は何れも圧縮閾値TH3(改良版)をオーバーする(圧縮閾値TH3以上である)。
よって、リコンフィグ制御部20は、先ず、少なくても第1出力ストリーム OUT1および第2出力ストリーム OUT2の何れか一方についての処理時には画像処理を行ない圧縮を適用して出力する必要があると判断する。さらに、各出力ストリーム用に個別の圧縮器Cmを同一ファンクション内に挿入し得るか否かを判断する。その結果、画像処理の規模が大きく、個別の圧縮器Cmを同一ファンクション内に挿入できないケースであり、時分割処理の適用については適用必須と判断し、第1出力ストリーム OUT1および第2出力ストリーム OUT2の処理時には時分割処理で画像処理を行ない、かつ、少なくとも一方の処理時には圧縮を適用して出力すると判断する。そして、2回目の処理時にも、圧縮閾値TH3(改良版)を計算し、その結果、2回目の処理時にも、圧縮処理の適用が必要と判断する。ここでは、時分割処理の適用においては、たとえば、第1出力ストリーム OUT1の処理を先に実行し、第2出力ストリーム OUT2の処理を後に実行するものとする。結果的には、同じ画像処理を2回実行し、出力ストリームを交互に圧縮することになる。
この場合、図19(2)に示すように、第1の処理時点では、第1出力ストリーム量は3×1/3=1ユニットとなるので、ストリーム使用量合計MSUM=3<メモリサイズ=5となり、また、ストリーム使用量合計MSUM2=2であり圧縮閾値TH3(改良版)=(5−2)/1=3となり、第1出力ストリーム量(=3ユニット)以上となるから、問題なく処理される。次の第2の処理時点では、圧縮閾値TH3(改良版)=(5−2−1)/1=2となり、第2出力ストリーム OUT2も圧縮が必要とすると判断する。
<第6例:第2実施形態>
図20は、第2実施形態の第6例を説明する図である。第6例は、入力ストリームが圧縮データである場合に、第3定義式の圧縮閾値TH3(改良版)に基づいて伸長処理や時分割処理を適用する必要があるか否かを判定した結果、各出力ストリーム用に個別の伸長器Exを同一ファンクション内に挿入し得るケースで、かつ、各出力ストリームに関しての処理時には入力ストリームに対して時分割で伸長することは不要と判断する事例である。
図20は、第2実施形態の第6例を説明する図である。第6例は、入力ストリームが圧縮データである場合に、第3定義式の圧縮閾値TH3(改良版)に基づいて伸長処理や時分割処理を適用する必要があるか否かを判定した結果、各出力ストリーム用に個別の伸長器Exを同一ファンクション内に挿入し得るケースで、かつ、各出力ストリームに関しての処理時には入力ストリームに対して時分割で伸長することは不要と判断する事例である。
図20(1)に示すように、メモリサイズが5ユニットのときに、1ユニットの第1入力ストリームIN1が1/3に圧縮されて、また1ユニットの第2入力ストリームIN2が1/3に圧縮されて、それぞれFunc1に入力され、当該Func1における画像処理後に、2ユニットの第1出力ストリーム OUT1と2ユニットの第2出力ストリーム OUT2とが出力される場合を想定する。この場合、Func1での画像処理時にはストリーム使用量合計MSUM1が4.6ユニットとなり、メモリサイズを超えない。また、第2実施形態で適用する第3定義式による圧縮閾値TH3で判断した場合には、メモリサイズ=領域サイズ=5であり、2つの出力ストリームを一括で出力するケースであるので出力ストリームの総本数=2であるから、圧縮閾値TH3(改良版)=(5−0.3−0.3)/2=2.2となり、第1出力ストリーム OUT1および第2出力ストリーム OUT2は何れも圧縮閾値TH3(改良版)を超えない(圧縮閾値TH3以下である)。
よって、リコンフィグ制御部20は、基本的には、第1出力ストリーム OUT1および第2出力ストリーム OUT2の双方についての処理時には伸長を適用して画像処理を行ない出力すればよいと判断する。「基本的には」と称したのは、同一ファンクション内で、伸長処理が個別に適用し得るか否かに左右されるからである。そこで、リコンフィグ制御部20は、次に、各出力ストリーム用に個別の伸長器Exを同一ファンクション内に挿入し得るか否かを判断する。その結果、個別の伸長器Exを同一ファンクション内に挿入し得るケースであると判断する。つまり、リコンフィグ制御部20は、個別の伸長器Exを同一ファンクション内に挿入し得るケースであり、時分割処理の適用については適用不要と判断し、第1出力ストリーム OUT1および第2出力ストリーム OUT2の双方についての処理時には個別に伸長を適用して、かつ伸長後に並行的に画像処理を行なって出力すると判断する。
この場合、図20(2)に示すように、第1入力ストリーム量および第2入力ストリーム量はそれぞれ1×1/3≒0.3ユニットであるので、ストリーム使用量合計MSUM=2.6<メモリサイズ=5となり、また、ストリーム使用量合計MSUM2=2であり圧縮閾値TH3(改良版)=(5−0.6)/2=2.2で図20(1)と変化なく、各入力ストリームおよび各出力ストリームの何れも、圧縮閾値TH3以下であることには変わりがなく、時分割処理を適用しなくても、問題なく処理される。
<第7例:第2実施形態>
図21は、第2実施形態の第7例を説明する図である。第7例は、入力ストリームが圧縮データである場合に、第3定義式の圧縮閾値TH3(改良版)に基づいて伸長処理や時分割処理を適用する必要があるか否かを判定した結果、各出力ストリーム用に個別の伸長器Exを同一ファンクション内に挿入し得るケースで、かつ、各出力ストリームに関しての処理時には入力ストリームに対して時分割で伸長することが必要と判断する事例である。
図21は、第2実施形態の第7例を説明する図である。第7例は、入力ストリームが圧縮データである場合に、第3定義式の圧縮閾値TH3(改良版)に基づいて伸長処理や時分割処理を適用する必要があるか否かを判定した結果、各出力ストリーム用に個別の伸長器Exを同一ファンクション内に挿入し得るケースで、かつ、各出力ストリームに関しての処理時には入力ストリームに対して時分割で伸長することが必要と判断する事例である。
図21(1)に示すように、メモリサイズが5ユニットのときに、2ユニットの第1入力ストリームIN1が1/3に圧縮されて、また2ユニットの第2入力ストリームIN2が1/3に圧縮されて、それぞれFunc1に入力され、当該Func1における画像処理後に、3ユニットの第1出力ストリーム OUT1と3ユニットの第2出力ストリーム OUT2とが出力される場合を想定する。この場合、Func1での画像処理時にはストリーム使用量合計MSUM1が7.2ユニットとなり、メモリサイズを超えてしまう。
また、第2実施形態で適用する第3定義式による圧縮閾値TH3で判断した場合には、メモリサイズ=領域サイズ=5であり、2つの出力ストリームを一括で出力するケースであるので出力ストリームの総本数=2であるから、圧縮閾値TH3(改良版)=(5−0.6−0.6)/2=1.9となり、第1出力ストリーム OUT1および第2出力ストリーム OUT2は何れも圧縮閾値TH3(改良版)を超えてしまう(圧縮閾値TH3以上である)。圧縮している入力ストリームを伸長してデータ処理(画像処理)を行なう場合に、一度にページ分伸長するとローカルメモリ30のメモリ容量をオーバーするケースとなる。
よって、リコンフィグ制御部20は、少なくとも、第1出力ストリーム OUT1および第2出力ストリーム OUT2の双方についての処理時には時分割処理を適用して伸長を行なってから画像処理を行ない出力する必要があると判断する。同一ファンクション内で、双方の出力ストリームの処理時に同時並行的に伸長処理が適用し得るか否かは、個別に伸長処理を適用し得るか否かに左右される。そこで、リコンフィグ制御部20は、次に、各出力ストリーム用に個別の伸長器Exを同一ファンクション内に挿入し得るか否かを判断する。その結果、個別の伸長器Exを同一ファンクション内に挿入し得るケースであると判断する。
つまり、リコンフィグ制御部20は、個別の伸長器Exを同一ファンクション内に挿入し得るケースであり、かつ、時分割処理の適用については必要と判断し、第1出力ストリーム OUT1および第2出力ストリーム OUT2の双方についての処理時には個別に伸長を適用して、かつ時分割での伸長後に並行的に画像処理を行なって出力すると判断する。つまり、伸長するとメモリオーバーする場合、分割伸長し、最初に前半の処理を行ない、次に後半の処理を行なうのである。出力ストリーム数が2であるが、基本的な考え方は、第1実施形態における第2例で適用したバンディング処理と同様である。
なお、バンディング処理の適用に当たっては、以下のような手順を踏む。先ず、リコンフィグ制御部20は、一度にページ分伸長するとローカルメモリ30のメモリ容量をオーバーする場合、次の後段の画像処理の出力サイズ量を含めて、メモリサイズをオーバーしないように分割数を特定する。最初に中間ストリーム合計サイズと中間ストリーム許容サイズを算出し、中間ストリーム合計サイズから中間ストリーム許容サイズを割った値がバンド分割数である。
この場合、図21(2)に示すように、出力ストリームOUT1,OUT2を中間ストリームとする。中間ストリーム合計サイズは出力ストリームOUT1,OUT2(各3ユニット)の合計であり、6ユニットとなる。次に、中間ストリーム許容サイズはメモリサイズ(=5)から圧縮された入力ストリームIN1,IN2(各0.6ユニット)と後段の画像処理出力ストリームOUT3(=3ユニット)を引いた値であり、0.8ユニットとなる。中間ストリーム合計サイズから中間ストリーム許容サイズを割った値がバンド分割数であるので、6ユニット÷0.8ユニットで7.5となる。算出結果に最も近く、大きな整数を分割数とするので、バンド分割数は8である。
画像処理リコンフィグ部12は、1回目の処理では、圧縮された入力ストリームIN1,IN2(各0.6ユニット)の8分割した1バンド目しか伸長を行なわず、ローカルメモリ30との間でデータ転送をしつつ、Func1でデータ処理(画像処理)を行ない処理済みの出力ストリーム OUT1, OUT2(各0.4ユニット)を出力する。各0.6ユニットの入力ストリームIN1,IN2の内の伸長しない半分はローカルメモリ30に格納しておく。次に1バンド目の後段の画像処理を実行し、出力ストリームOUT3はローカルメモリ30に格納しておく。
続く2回目の処理では、圧縮された入力ストリームIN1,IN2(各0.6ユニット)の2バンド目に相当する部分を伸長し、ローカルメモリ30との間でデータ転送をしつつ、Func1でデータ処理(画像処理)を行ない、2バンド目の出力ストリーム OUT1, OUT2(各0.4ユニット)を出力する。各0.6ユニットの入力ストリームIN1,IN2の内の伸長しない半分はローカルメモリ30に格納しておく。次に2バンド目の後段の画像処理を実行し、出力ストリーム OUT3はローカルメモリ30に格納しておく。この動作を繰り返し、最後のバンドの処理過程では、ストリーム使用量合計MSUMは、圧縮された入力ストリームIN1,IN2(各0.6ユニット)と最後のバンドの処理済みの出力ストリーム OUT1, OUT2(各0.4ユニット)と、後段の画像処理の出力ストリーム OUT3の合計(=3ストリーム)で、5ユニットとなり、メモリサイズ(=5)内に抑えることができる。
<処理手順1:第2実施形態>
図22は、第2実施形態のデータ処理装置1における基本動作例の処理手順(メインフロー)を説明するフローチャートである。このフローチャートでは、前述の第1例、第2例、および第3例の処理手順が示される。
図22は、第2実施形態のデータ処理装置1における基本動作例の処理手順(メインフロー)を説明するフローチャートである。このフローチャートでは、前述の第1例、第2例、および第3例の処理手順が示される。
リコンフィグ制御部20は、先ず、後述するリコンフィグパイプライン管理テーブルTB20から現ステージの圧縮閾値THを算出する(S2100)。次に、リコンフィグ制御部20は、算出した圧縮閾値THに基づいて、現ステージで圧縮すべきストリーム、伸長すべきストリームをピックアップする(S2110)。そして、リコンフィグ制御部20は、現ステージの画像処理コンフィグデータに、対象ストリームの圧縮器Cm(あるいは伸長器Ex)が全て挿入可能かを判断する(S2120)。イエスであれば、リコンフィグ制御部20は、画像処理コンフィグデータに圧縮器Cm(あるいは伸長器Ex)を挿入する(S2120-Y,S2130)。
さらに、リコンフィグ制御部20は、圧縮器処理後(ここでは1/3圧縮を想定する)のストリームサイズで圧縮閾値THを算出する(S2140)。そして、リコンフィグ制御部20は、圧縮閾値THをオーバーするストリームがないかを判断する(S2150)。イエスであれば、リコンフィグ制御部20は、リコンフィグパイプライン管理テーブルを更新し、ステップS2100に戻り、次のステージの処理に移行する(S2160)。
一方、ステップS2120にてノーであれば、リコンフィグ制御部20は、伸長器Exが必要かや圧縮器Cmが必要かを判断する(S2120-N,S2170)。伸長器Exのみが必要である場合は、あるいは伸長器Exおよび圧縮器Cmの双方が必要である場合には、後述する伸長処理実行スケジューリングへ移行し(S2170-A,S2180)、また、圧縮器Cmのみが必要である場合は後述する圧縮処理実行スケジューリングへ移行し(S2170-B,S2190)、これら伸長処理実行スケジューリングや圧縮処理実行スケジューリングの処理が完了するとステップS2160へ移行する。また、リコンフィグ制御部20は、ステップS2150にてノーであれば、リコンフィグ制御部20は、後述する圧縮処理実行スケジューリングへ移行し(S2150-N,S2190)、この圧縮処理実行スケジューリングの処理が完了するとステップS2160へ移行する。
<処理手順2:第2実施形態>
図23は、伸長処理実行スケジューリング(S2180)の詳細を説明するフローチャートである。このフローチャートでは、前述の第6例の処理手順が示される。先ず、画像処理リコンフィグ部12は入力ストリームを伸長し、リコンフィグ制御部20は画像処理した場合の圧縮閾値THを算出する(S2200)。次に、リコンフィグ制御部20は、伸長実行THをオーバーするストリームがないかを判断する(S2210)。イエスであれば、リコンフィグ制御部20は、本来の画像処理コンフィグの前に、入力ストリームを伸長するコンフィグを追加してメインフローのステップS2160に移行する(S2210-Y,S2220)。
図23は、伸長処理実行スケジューリング(S2180)の詳細を説明するフローチャートである。このフローチャートでは、前述の第6例の処理手順が示される。先ず、画像処理リコンフィグ部12は入力ストリームを伸長し、リコンフィグ制御部20は画像処理した場合の圧縮閾値THを算出する(S2200)。次に、リコンフィグ制御部20は、伸長実行THをオーバーするストリームがないかを判断する(S2210)。イエスであれば、リコンフィグ制御部20は、本来の画像処理コンフィグの前に、入力ストリームを伸長するコンフィグを追加してメインフローのステップS2160に移行する(S2210-Y,S2220)。
一方、ステップS2210にてノーであれば、リコンフィグ制御部20は、伸長の実行を画像処理リコンフィグ部12に指示する(S2210-N)。この指示を受けた画像処理リコンフィグ部12は、バンド分割数を計算し(S2231)、バンドサイズ分の伸長を実行し、バンドサイズ分画像処理を実行する。引き続き、後段の次の画像処理もバンドサイズ分実行する(S2232)。全てのバンド分の処理が終了したら、メインフローのステップS2160(C)に移行する。
<処理手順3:第2実施形態>
図24は、圧縮処理実行スケジューリング(S2190)の詳細を説明するフローチャートである。このフローチャートでは、前述の第4例および第5例の処理手順が示される。先ず、リコンフィグ制御部20は、最もサイズの大きい、出力ストリームの圧縮処理後(ここでは1/3圧縮を想定する)のサイズで圧縮閾値THを算出する(S2310)。そして、リコンフィグ制御部20は、圧縮閾値THをオーバーするストリームがないかを判断する(S2320)。イエスであれば、リコンフィグ制御部20は、画像処理コンフィグデータに圧縮器Cmを挿入してメインフローのステップS2160(C)に移行する(S2320-Y,S2330)。
図24は、圧縮処理実行スケジューリング(S2190)の詳細を説明するフローチャートである。このフローチャートでは、前述の第4例および第5例の処理手順が示される。先ず、リコンフィグ制御部20は、最もサイズの大きい、出力ストリームの圧縮処理後(ここでは1/3圧縮を想定する)のサイズで圧縮閾値THを算出する(S2310)。そして、リコンフィグ制御部20は、圧縮閾値THをオーバーするストリームがないかを判断する(S2320)。イエスであれば、リコンフィグ制御部20は、画像処理コンフィグデータに圧縮器Cmを挿入してメインフローのステップS2160(C)に移行する(S2320-Y,S2330)。
また、ステップS2320にてノーであれば、画像処理リコンフィグ部12は、画像処理コンフィグデータに圧縮器Cmを挿入し、圧縮できず、かつ圧縮閾値THをオーバーするストリームは出力しない(S2320-N,S2350)。さらに、リコンフィグ制御部20は、画像処理コンフィグデータに圧縮器Cmを挿入し、画像処理リコンフィグ部12は、前で出力しなかった出力ストリームを圧縮し、また、既に出力したストリームは今回は出力しない(S2360)。画像処理リコンフィグ部12は、出力ストリームを全て出力したかを判断する(S2370)。ノーであればステップS2360に戻り、イエスであればメインフローのステップS2160(C)に移行する。
<管理テーブル:第2実施形態>
図25および図25Aは、リコンフィグパイプライン管理テーブルTB20の一例を示す図である。ここで、図25は最初の状態を示し、図25Aは、更新後の状態を示す。前提条件としては、画像処理部=100、圧縮器Cm=20、伸長器Ex=20で、先の通り、圧縮率1/3、メモリサイズ5とする。図25において、トータルメモリサイズの欄において**で示した部分(ステージ3,4,5)がメモリオーバーとなる部分であり、圧縮処理による対処が必要となる部分である。図25Aにおいて、網点ハッチングで示した部分が更新内容である。
図25および図25Aは、リコンフィグパイプライン管理テーブルTB20の一例を示す図である。ここで、図25は最初の状態を示し、図25Aは、更新後の状態を示す。前提条件としては、画像処理部=100、圧縮器Cm=20、伸長器Ex=20で、先の通り、圧縮率1/3、メモリサイズ5とする。図25において、トータルメモリサイズの欄において**で示した部分(ステージ3,4,5)がメモリオーバーとなる部分であり、圧縮処理による対処が必要となる部分である。図25Aにおいて、網点ハッチングで示した部分が更新内容である。
第2実施形態のリコンフィグパイプライン管理テーブルTB20は、パイプラインステージ(リコンフィグ)順に、画像処理部の情報、入力ストリームの情報、出力ストリームの情報、メモリサイズ管理情報、メモなどの情報が管理されるようになっている。画像処理部の情報としては、名前(Name),規模,圧縮器Cmや伸長器Exの挿入の有無がある。入力ストリームの情報としては、名前(Name),サイズ,形態(RAW,圧縮の別)がある。出力ストリームの情報としては、名前(Name),サイズ,形態(RAW,圧縮の別)がある。メモリサイズ管理情報としては、圧縮閾値THやトータルメモリサイズがある。メモ欄には、本実施形態の各事例との対応関係を付している。
<<第2実施形態の比較例>>
<第1比較例:第2実施形態>
図26は、第2実施形態のデータ処理装置1に対する第1比較例を説明する図である。第1比較例は、特開2005−301607号公報に記載の仕組みに該当する。この仕組みは、プロセッサ910とは別に、サブローカルメモリ914と処理回路916を含むサブプロセッサ912を各ストリームに対応するように複数備えてデータ処理部が構成されている。サブプロセッサ912においては、サブローカルメモリ914と処理回路916との間に圧縮器Cmと伸長器Exを実装することで、データ転送によるボトルネックを回避するものである。メモリ量を削減し、かつ画像処理スピードを低下させないために、画像処理の各入力ストリームに伸長器Ex、各出力ストリームに圧縮器Cmを実装する。各サブプロセッサ912での処理が重なる場合は圧縮器Cmと伸長器Exを使用するようにスケジューリングし、圧縮した結果が悪い場合は圧縮せずに生(RAW)データをサブローカルメモリ912を介してメモリ918に保持するようにしている。
<第1比較例:第2実施形態>
図26は、第2実施形態のデータ処理装置1に対する第1比較例を説明する図である。第1比較例は、特開2005−301607号公報に記載の仕組みに該当する。この仕組みは、プロセッサ910とは別に、サブローカルメモリ914と処理回路916を含むサブプロセッサ912を各ストリームに対応するように複数備えてデータ処理部が構成されている。サブプロセッサ912においては、サブローカルメモリ914と処理回路916との間に圧縮器Cmと伸長器Exを実装することで、データ転送によるボトルネックを回避するものである。メモリ量を削減し、かつ画像処理スピードを低下させないために、画像処理の各入力ストリームに伸長器Ex、各出力ストリームに圧縮器Cmを実装する。各サブプロセッサ912での処理が重なる場合は圧縮器Cmと伸長器Exを使用するようにスケジューリングし、圧縮した結果が悪い場合は圧縮せずに生(RAW)データをサブローカルメモリ912を介してメモリ918に保持するようにしている。
第1比較例の仕組みの場合、圧縮器Cmと伸長器Exをハードウェアで持つ場合は、各ストリーム(換言すると各サブプロセッサ912)分必要なので、回路規模が大きくなる。全てのストリームに圧縮器Cmと伸長器Exを実装するために、画像処理エリアが十分に確保できないことも起こる。この場合、画像処理部分を分割するべく、サブプロセッサ912を増やすことも考えられるが、画像処理回数が増加し、画像処理スピードが低下する。また、プロセッサ910でソフトウェア的に圧縮器Cmと伸長器Exを実現する場合は、ハードウェア処理に比べると処理速度が低下するため、画像処理の速度性能に影響する(処理速度低下が起きる)。
これに対して、第2実施形態の仕組みは、DRP10などの「内部処理構成をプログラマブル可能なデバイス」を使用してスケジューリングを行なう仕組みを採っているので、各ストリーム数が多くなってもハードウェアリソースは増加しない。また、圧縮器Cmや伸長器Exが入った場合でも、ソフトウェア的に対処するものではなく、ハードウェア処理にて圧縮器Cmや伸長器Exが実現されるので、画像処理の速度性能低下は抑制される。
<第2比較例:第2実施形態>
図26Aは、第2実施形態のデータ処理装置1に対する第2比較例を説明する図である。第2比較例は、特開平06−070171号公報に記載の仕組みに該当する。この仕組みは、メモリ容量を削減するために、入力データを圧縮し、保持し、画像処理する前に伸長し、画像処理後に圧縮し、メモリに保持するようにデータ処理部が構成されている。たとえば、入力データは誤差拡散部920に入力され圧縮器Cmにより圧縮された後メモリ928に保持される。その後、メモリ928からデータが読み出され伸長器Exにより伸長されてから平滑化多値化部922にて処理された後に画像処理部924にて画像処理が施される。画像処理後のデータは誤差拡散部926にて処理され、さらに圧縮器Cmでランレングスで圧縮されてからメモリ928に保持される。この後、所定のタイミングでデータが読み出され伸長器Exで伸長されてからデータ処理部の外部に出力される。
図26Aは、第2実施形態のデータ処理装置1に対する第2比較例を説明する図である。第2比較例は、特開平06−070171号公報に記載の仕組みに該当する。この仕組みは、メモリ容量を削減するために、入力データを圧縮し、保持し、画像処理する前に伸長し、画像処理後に圧縮し、メモリに保持するようにデータ処理部が構成されている。たとえば、入力データは誤差拡散部920に入力され圧縮器Cmにより圧縮された後メモリ928に保持される。その後、メモリ928からデータが読み出され伸長器Exにより伸長されてから平滑化多値化部922にて処理された後に画像処理部924にて画像処理が施される。画像処理後のデータは誤差拡散部926にて処理され、さらに圧縮器Cmでランレングスで圧縮されてからメモリ928に保持される。この後、所定のタイミングでデータが読み出され伸長器Exで伸長されてからデータ処理部の外部に出力される。
第2比較例の仕組みの場合、メモリ量削減のため、ハードウェア的にデフォルトで圧縮器Cmや伸長器Exが入出力にそれぞれ必要であるので、第1比較例と同様に、回路規模が大きくなる。また、画像処理の前後で圧縮・伸長があるので、単純にソフトウェア的に対処するように変形すると、第1比較例と同様に、画像処理の速度性能に影響する(処理速度低下が起きる)。これに対して、第2実施形態の仕組みは、第1比較例で述べた通りであり、ハードウェアリソースは増加しないし、圧縮器Cmや伸長器Exが入った場合でも、画像処理の速度性能低下は抑制される。
<第3比較例:第2実施形態>
図26Bは、第2実施形態のデータ処理装置1に対する第3比較例を説明する図である。第3比較例は、特開2000−358144号公報に記載の仕組みに該当する(図2より引用して示す)。この仕組みは、入力データを圧縮し(S930)、入力データ量と圧縮データ量との比を求め(S932)、この比から圧縮率を求め、求めた圧縮率と閾値を比較する(S934)。圧縮率が閾値よりも大きい場合は圧縮データをメモリに格納し(S934-Y,S936)、圧縮率が閾値よりも小さい場合は、伸長による性能低下を考慮し、圧縮していないデータ(非圧縮データ)をメモリに格納する(S934-N,S938)。
図26Bは、第2実施形態のデータ処理装置1に対する第3比較例を説明する図である。第3比較例は、特開2000−358144号公報に記載の仕組みに該当する(図2より引用して示す)。この仕組みは、入力データを圧縮し(S930)、入力データ量と圧縮データ量との比を求め(S932)、この比から圧縮率を求め、求めた圧縮率と閾値を比較する(S934)。圧縮率が閾値よりも大きい場合は圧縮データをメモリに格納し(S934-Y,S936)、圧縮率が閾値よりも小さい場合は、伸長による性能低下を考慮し、圧縮していないデータ(非圧縮データ)をメモリに格納する(S934-N,S938)。
第3比較例の仕組みの場合、必ず圧縮するため、圧縮処理による性能低下が必ず発生する。また、圧縮器のハードウェアリソースが必要である。これに対して、第2実施形態の仕組みは、第1比較例で述べた通りであり、ハードウェアリソースは増加しないし、圧縮器Cmや伸長器Exが入った場合でも、画像処理の速度性能低下は抑制される。
<第4比較例:第2実施形態>
図26Cは、第2実施形態のデータ処理装置1に対する第4比較例を説明する図である。第4比較例は、特開2004−274776号公報に記載の仕組みに該当する。この仕組みは、メモリ容量オーバーとなるケースの場合にメインメモリ70を利用せずに対処する仕組みであり、メモリ量を最小化するために適応的に圧縮方法を変更する。メモリ量の不足が発生した場合、第一の圧縮手段を用いて圧縮データを生成し、その圧縮データを検査し、ある閾値を超えていなければ、次の圧縮手段を適用し、閾値を達成するまで圧縮と検査を繰り返す。
図26Cは、第2実施形態のデータ処理装置1に対する第4比較例を説明する図である。第4比較例は、特開2004−274776号公報に記載の仕組みに該当する。この仕組みは、メモリ容量オーバーとなるケースの場合にメインメモリ70を利用せずに対処する仕組みであり、メモリ量を最小化するために適応的に圧縮方法を変更する。メモリ量の不足が発生した場合、第一の圧縮手段を用いて圧縮データを生成し、その圧縮データを検査し、ある閾値を超えていなければ、次の圧縮手段を適用し、閾値を達成するまで圧縮と検査を繰り返す。
たとえば、処理速度や圧縮性能の異なる複数の圧縮モードを用意しておき、実際に圧縮を行なってメモリが不足しているか否かを確かめながら、前記複数の圧縮モードを切り替えるようにしている。一例として、メモリ容量の不足が発生すると、Mモード(ランレングス、高速、低圧縮)→LZW(辞書式、中速、中圧縮)→有損失(非可逆、高圧縮)の順に、3つのモードが使用される。この場合、実際に圧縮を行なって、メモリに入るか確かめるため、最大3回の圧縮を行なうことになり、その分のタイムロスが避けられない。
これに対して、第2実施形態の仕組みは、画像処理リコンフィグ部12における回路の空き領域を利用して、圧縮器Cmや伸長器Exの中でその空き領域に挿入可能なものを選択して適用するため、ハードウェアリソースは増加しないし、タイムロスが殆ど発生しない。他の画素データとの関係では画像処理と並行に圧縮処理や伸長処理がなされるので圧縮処理や伸長処理のための時間ロスが抑えられるからである。
<第5比較例:第2実施形態>
図26Dは、第2実施形態のデータ処理装置1に対する第5比較例を説明する図である。第5比較例は、特開2003−244446号公報に記載の仕組みに該当する(図26より引用して示す)。この仕組みは、メモリ容量オーバーとなるケースの場合にメインメモリ70を利用せずに対処する仕組みであり、メモリ容量を削減するため、リアルタイムで画像データをメモリの記憶容量以内にJpeg圧縮する。データをブロック化し、離散コサイン変換をして、ハフマン(Huffman )符号化を行なう。圧縮データが所定以上の場合は、ハフマンの復号化を行ない、より圧縮率の高いQテーブルに変更して再圧縮をする。最終的に、所定のデータ量になるまで、Qテーブル(または量子化テーブル)をビットシフトして、圧縮を繰り返すようにしている。最終的に所定のデータ量になるまで、より圧縮率の高いQテーブルに変更して再圧縮を繰り返す。この仕組みでは、圧縮処理と他の処理を並行に行なうことができないため、圧縮処理の分の時間ロスが発生する。これに対して、第2実施形態の仕組みは、第4比較例で述べた通りであり、ハードウェアリソースは増加しないし、画像処理と並行に圧縮処理や伸長処理がなされるので圧縮処理や伸長処理のためのタイムロスが殆ど発生しない。
図26Dは、第2実施形態のデータ処理装置1に対する第5比較例を説明する図である。第5比較例は、特開2003−244446号公報に記載の仕組みに該当する(図26より引用して示す)。この仕組みは、メモリ容量オーバーとなるケースの場合にメインメモリ70を利用せずに対処する仕組みであり、メモリ容量を削減するため、リアルタイムで画像データをメモリの記憶容量以内にJpeg圧縮する。データをブロック化し、離散コサイン変換をして、ハフマン(Huffman )符号化を行なう。圧縮データが所定以上の場合は、ハフマンの復号化を行ない、より圧縮率の高いQテーブルに変更して再圧縮をする。最終的に、所定のデータ量になるまで、Qテーブル(または量子化テーブル)をビットシフトして、圧縮を繰り返すようにしている。最終的に所定のデータ量になるまで、より圧縮率の高いQテーブルに変更して再圧縮を繰り返す。この仕組みでは、圧縮処理と他の処理を並行に行なうことができないため、圧縮処理の分の時間ロスが発生する。これに対して、第2実施形態の仕組みは、第4比較例で述べた通りであり、ハードウェアリソースは増加しないし、画像処理と並行に圧縮処理や伸長処理がなされるので圧縮処理や伸長処理のためのタイムロスが殆ど発生しない。
<比較例との対比:第2実施形態>
図27は、第2実施形態の仕組みと比較例との差を説明する図である。前述の通り、プログラマブル・デバイス(FPGAやDRP)の画像処理を制御するスケジューラ機能を持つリコンフィグ制御部20を導入した第1実施形態の仕組みを適用して圧縮・伸長を選択的に配置し、さらに第2実施形態では、出力ストリームが複数ある場合にメモリ容量オーバーとなるケースや入力ストリーム(単一・複数の何れでもよい)を伸長する必要がある場合において一度に伸長するとメモリ容量オーバーとなるケースでは時分割で対処するようにしている。これにより、入出力ストリーム数による圧縮器Cmや伸長器Exのハードウェアリソースの増加を招くことなく、圧縮・伸長の頻度を抑えてデータ処理性能(主に速度面での性能)の低下を抑制しながら、メモリ使用量を削減する処理がなされる。
図27は、第2実施形態の仕組みと比較例との差を説明する図である。前述の通り、プログラマブル・デバイス(FPGAやDRP)の画像処理を制御するスケジューラ機能を持つリコンフィグ制御部20を導入した第1実施形態の仕組みを適用して圧縮・伸長を選択的に配置し、さらに第2実施形態では、出力ストリームが複数ある場合にメモリ容量オーバーとなるケースや入力ストリーム(単一・複数の何れでもよい)を伸長する必要がある場合において一度に伸長するとメモリ容量オーバーとなるケースでは時分割で対処するようにしている。これにより、入出力ストリーム数による圧縮器Cmや伸長器Exのハードウェアリソースの増加を招くことなく、圧縮・伸長の頻度を抑えてデータ処理性能(主に速度面での性能)の低下を抑制しながら、メモリ使用量を削減する処理がなされる。
たとえば、図27(1)の(1−1)に示すように、比較例の場合は、入力ストリーム数分の伸長器Exが必要となるし、出力ストリーム数分の圧縮器Cmが必要となる。したがって、たとえば、仮に入力ストリーム3系統で、かつ、出力ストリームが3系統である場合には、計6個の圧縮器・伸長器が必要となる。
一方、図27(1)の(1−2)に示すように、第2実施形態の場合は、メモリサイズをオーバーしないように画像処理リコンフィグ部12の構成をスケジューリングしながら画像処理リコンフィグ部12に圧縮器Cmや伸長器Exを選択的に挿入するので、ハードウェアの増加はない。図27(1−1)との対比では、圧縮器Cmや伸長器Exは1つでもよい場合があり、圧縮器Cmや伸長器Exの必要数に最大で6倍の差が生じる。
また、第2実施形態では、画像処理を実行する前に、圧縮率を予測し、1回目で最大メモリサイズ以内に収まるようにスケジューリングして、画像処理リコンフィグ部12内に圧縮器Cmや伸長器Exを選択的に挿入している。加えて、画像処理と並行して圧縮処理や伸長処理を適用し得るようにしている。このため、ハードウェアリソースは増加しないし、画像処理と並行に圧縮処理や伸長処理がなされるので圧縮処理や伸長処理のためのタイムロスが殆ど発生しない。
たとえば、第4比較例の場合、メモリ容量の不足が発生すると、1回目ではMモード→1回目ではLZWモード→3回目では有損失モードが適用されるので、最大3回の圧縮を行なうことになり、その分のタイムロスが避けられない。これとの対比では、第2実施形態の場合、画像処理を実行する前(つまり圧縮処理前)に画像処理リコンフィグ部12のスケジューリングが完成するので、タイムロスの側面では4倍の効果がある。
<第3実施形態の比較例>
図28は、第3実施形態のデータ処理装置1に対する比較例を説明する図である。ここでは、パイプラインステージのスケジューリングの側面から示している。なお、図28は、ストリーム使用量合計MSUMがメモリ容量をオーバーするケースを示している。
図28は、第3実施形態のデータ処理装置1に対する比較例を説明する図である。ここでは、パイプラインステージのスケジューリングの側面から示している。なお、図28は、ストリーム使用量合計MSUMがメモリ容量をオーバーするケースを示している。
第1実施形態においても述べたが、DRP10などの「内部処理構成をプログラマブル可能なデバイス」を使用する場合、DRP10におけるコストにおいて、ローカルメモリ30の占める割合が大きくなる(たとえば全体の50%以上となる)。そのため、本実施形態(第3実施形態に限らない)のデータ処理装置1においては、システムのメモリコストを低減するべく、プログラマブル・デバイス(FPGAやDRP:本例ではDRP10)の画像処理構成を制御するスケジューラとしてリコンフィグ制御部20を導入して、性能の低下を抑制しながらメモリ使用量を削減する様々な仕組みを採っている(前述の第1・第2実施形態のように)。
図28には、あるパイプラインステージにおけるメモリサイズの例が示されている。各ファンクション(画像処理)に入出力されるストリームについては、そのデータ量がユニット単位で示されている。パイプラインステージの記述手法は、第1実施形態と同様であり、上側において左から右側に非蓄積型ストリームが入出力されるように示し、その下側に、蓄積型ストリームが入出力されるように示している。さらに、その下側には、そのファンクションにおける非蓄積ストリーム(Stream)サイズ合計(現画像処理中のストリーム量合計)、蓄積ストリーム(Stream)サイズ合計と本数(後段で使用するストリームの保持)、蓄積許容値、圧縮閾値TH4を示している。なお、圧縮有無の判断基準としては、“蓄積ストリーム(Stream)許容値=メモリ空間(メモリ容量)−現画像処理中のストリームサイズ合計”、“圧縮閾値TH4=蓄積ストリーム許容値÷蓄積ストリームの本数(蓄積ストリーム数)”を使用する。
第1実施形態において説明したように、各DRP10のリコンフィグ制御部20が行なうスケジューリングの考え方は、スタティック・スケジューリングにより、パイプライン情報に基づいて圧縮対象ストリームピックアップと圧縮器Cmや伸長器Exの挿入を行なう。さらに、画像処理システムにて画像処理を実際に実行する過程で、ダイナミック・スケジューリングにより、フォールバックを考慮した処理を行なう。何れも、メモリサイズは制約条件として与えられる。この条件の中で、画像処理システムのパフォーマンス低下が最小限となるスケジューリングを行なう。
たとえば、スタティック・スケジューリング(Static Scheduling )においては、「平均ストリームサイズ」を越えるストリームを圧縮する。ダイナミック・スケジューリング(Dynamic Scheduling)においては、圧縮した結果、メモリ容量オーバーが解消されないときには一次フォールバック処理にて圧縮を入れるか、もしくは二次フォールバック処理によりホスト部5側へデータ転送する。
メモリ容量オーバーとなる現象においては、蓄積型ストリームサイズが大きく寄与するもので、ストリーム使用量合計MSUMにとっては、蓄積型ストリームサイズが問題となる。そこで、ここでは、メモリ容量オーバーとなるときには蓄積型ストリームに対して圧縮を加えるものとする。図示した例では、メモリ空間が10ユニット分であり、1ユニットの非蓄積型のStream2が画像処理2に入力され、1ユニットの非蓄積型のStream4と4ユニットの蓄積型のStream6とが出力される。このとき、画像処理1における処理により5ユニットの蓄積型のStream3が存在する。このため、画像処理2の段階でのストリーム使用量合計MSUMは11ユニットとなり、画像処理2の段階でメモリ容量オーバーとなる。このため、5ユニットの蓄積型のStream3と4ユニットの蓄積型のStream6の内の、たとえば、その双方や、あるいは4ユニットの蓄積型のStream6のみを圧縮が必要なストリームとする。後に、これら圧縮されたStream3やStream6を使用するパイプラインステージにおいては、伸長が必要となる。次段の画像処理3においても、メモリ容量オーバーとなるケースでは、3ユニットの蓄積型のStream7を圧縮が必要なストリームとしてもよい。後に、この圧縮されたStream6を使用するパイプラインステージにおいては、伸長が必要となる。
ここで、画像処理リコンフィグ部12は、データ処理機能(画像処理機能)で大部分が埋められているので、画像処理リコンフィグ部12におけるデータ処理内容によっては、その回路規模が大きくなり、圧縮器Cmや伸長器Exを同一パイプラインステージの画像処理リコンフィグ部12に配置できないケースも起こり得る。このときの対策として、たとえば第1実施形態では、圧縮器Cmや伸長器Exの強制挿入を行なうようにしている。
別の対策手法として、圧縮器Cmや伸長器Exによる回路規模大のため画像処理エリアが十分に確保されない点を解決するべく、画像処理部分を分割して、圧縮器Cmや伸長器Exを同一パイプラインステージの画像処理リコンフィグ部12に挿入することも考えられる。しかしこの場合、画像処理回数(コンフィグ面)が増加し、画像処理スピードが低下する。
そこで、第3実施形態では、画像処理回数の増加や画像処理速度の低下を回避し得る、これらとは異なる仕組みを提案する。画像処理エリアを確保しつつ、画像処理スピードの低下を抑制するように、圧縮器Cmや伸長器Exを挿入する仕組みを採る。
<<第3実施形態>>
次に、データ処理装置1の第3実施形態について説明する。なお、第3実施形態においては、図面中で、「伸長」を「伸張」と記すことがあるが、これらは同義である。また、図面中で、圧縮器Cmと伸長器Exを纏めて「圧縮/伸長器」と記すことがある。
次に、データ処理装置1の第3実施形態について説明する。なお、第3実施形態においては、図面中で、「伸長」を「伸張」と記すことがあるが、これらは同義である。また、図面中で、圧縮器Cmと伸長器Exを纏めて「圧縮/伸長器」と記すことがある。
図29は、第3実施形態のデータ処理装置1の仕組みを説明する図である。ここで、図29は、図28の対策として圧縮器Cmや伸長器Exを挿入する側面から第3実施形態の仕組みの基本原理を示す図である。
第3実施形態の仕組みの基本は、ソフトウェア処理できるプロセッサが空いていることがあることに着目し、圧縮器Cmや伸長器Exの一部もしくは全部をソフトウェア処理で対処することにある。ソフトウェア処理は、プロセッサ部(リコンフィグ制御部20やコントローラメインCPU50)において実行する。
具体的には、圧縮器Cmや伸長器Exをモジュール分割し、それぞれモジュールの「回路規模」および「ソフトウェア(S/W)バジェット」に基づき、画像処理リコンフィグ部12に挿入する圧縮器Cmや伸長器Exのモジュール、ソフトウェア処理にする圧縮器Cmや伸長器Exのモジュール(場合によっては全てのモジュールをソフトウェア処理にする)に振り分け、圧縮処理や伸長処理を実行する。ここで、圧縮器Cmや伸長器Exの「ソフトウェアバジェット」とは、ソフトウェアによる処理時間である。
ハードウェア処理とソフトウェア処理の振り分けに当たっては、画像処理リコンフィグ部12の空きエリアに応じて、モジュールを選択し、適応的にハードウェアで圧縮器Cmや伸長器Exを挿入し(物理的に入る範囲で)、ハードウェアで入りきらない残りのモジュールはソフトウェア処理で対処する。このとき、ソフトウェアで重い処理からハードウェアへ挿入するようにする。
図29に示した例では、圧縮器Cmおよび伸長器Exをそれぞれ2つのモジュールに分割している。第1圧縮器Cm1は回路規模が25%でソフトウェアバジェットがパイプラインステージの3ステージ分、第2圧縮器Cm2は回路規模が50%でソフトウェアバジェットが0.30ステージ分である。これから、第1圧縮器Cm1は、ソフトウェア処理よりもハードウェア処理(回路)で対処するのが好ましく、第2圧縮器Cm2は、ハードウェア処理よりもソフトウェア処理で対処するのが好ましいことが分る。第2圧縮器Ex1は回路規模が50%でソフトウェアバジェットが0.30ステージ、第2伸長器Ex2は回路規模が25%でソフトウェアバジェットが3ステージである。これから、第1伸長器Exは、ハードウェア処理よりもソフトウェア処理で対処するのが好ましく、第2圧縮器Cm2は、ソフトウェア処理よりもハードウェア処理(回路)で対処するのが好ましいことが分る。
ソフトウェア処理はハードウェア処理(回路)よりも処理が遅くなる難点があるが、蓄積型ストリームの場合、後段の処理でその蓄積型ストリームが必要となるまでに圧縮や伸長を完了させておけばよく、ソフトウェア処理の処理速度が遅い点は殆ど問題にならないと考えてよい。蓄積型ストリームに対して圧縮処理や伸長処理を適用する場合には、ハードウェア処理とソフトウェア処理を別のステージで実行するように制御すればよいからである。なお、この図29は、蓄積ストリーム対応のケースであり、非蓄積型ストリームに対してのソフトウェア処理による圧縮や伸長の適用を示していないが、後述するように、その適用を排除するものではない。
因みに、ソフトウェア処理できるプロセッサが空いていることがあることに着目した場合、メモリ容量オーバーとなるパイプラインステージからソフトウェア処理での対処を実行するよりも、全ての蓄積型ストリームに関してソフトウェア処理を適用した第3実施形態の仕組みを適用するのがよい。図29では、この状態を示しており、Stream3,Stream6,Stream7の全蓄積型ストリームについて、圧縮器Cmの一部もしくは全部をソフトウェア処理で対処し、また、このStream3,Stream6,Stream7の全蓄積型ストリームについて、伸長器Exの一部もしくは全部をソフトウェア処理で対処するように、リコンフィグ制御部20はパイプラインステージのスケジューリングを行なっている。
このように、第3実施形態の仕組みにおいては、データ処理中に保持しているストリームを圧縮処理し、DRP10の外部メモリ量(ローカルメモリ30のメモリ容量)をオーバーしないように、リコンフィグ制御部20は、画像処理リコンフィグ部12のパイプラインステージ構成をスケジューリングする(その考え方は第1実施形態と同じ)。このとき、第3実施形態では、圧縮器Cmや伸長器Exをモジュール分割し、画像処理リコンフィグ部12の空きエリアに応じてモジュールを選択し適応的にハードウェア(回路)で挿入し、ハードウェアで入りきらない残りのモジュールはソフトウェア処理で対処するように、リコンフィグ制御部20はパイプラインステージのスケジューリングを行なう。画像処理回数の側面では、その回数が増加しないため、画像処理のスピード低下が発生しない。
<モジュール分割>
図30は、モジュール分割と処理手順やストリーム使用量合計MSUMなどとの関係を説明する図である。ここでは説明を簡単にするため、圧縮率25%の圧縮器Cmを2つのモジュールに均等に分割する事例で説明する。
図30は、モジュール分割と処理手順やストリーム使用量合計MSUMなどとの関係を説明する図である。ここでは説明を簡単にするため、圧縮率25%の圧縮器Cmを2つのモジュールに均等に分割する事例で説明する。
ここでは、「圧縮率(%)=圧縮後のデータサイズ÷圧縮前のデータサイズ:値の低い方が圧縮性能が良好」、「内部処理構成をプログラマブル可能なデバイス」を使用して複数のコンフィグレーションを切り替える画像処理システムでは、その入出力の各ストリームを全て保持すること、蓄積型ストリームの場合はパイプラインステージ(コンフィグレーション)を跨って処理に必要なストリームを保持しておくこと、を前提として説明する。
圧縮処理や伸長処理におけるモジュール分割に当たっての基本的な考え方としては、入力ストリーム量を(均等に)分割し、各モジュールでは分割して入力されるストリームに対してそれぞれ同一の圧縮率を適用する第1の手法(図30(1))と、圧縮率を(均等に)分割し、分割せずに入力されるストリームに対して分割された圧縮率を適用する第2の手法(図30(2))とがある。
図30において、入力ストリーム量=4ユニット、圧縮率=25%の場合で、具体的に説明する。第1の手法の場合、図30(1−1)に示すように、第1圧縮器Cm1は、4ユニットの入力ストリームの内の2ユニットが入力され、25%圧縮を適用して0.5ユニットのストリームを出力する。また、第2圧縮器Cm2は、4ユニットの入力ストリームの内の2ユニットが入力され、25%圧縮を適用して0.5ユニットのストリームを出力する。この場合、第1圧縮器Cm1と第2圧縮器Cm2は同時並行的な動作も可能であるので、各モジュールをハードウェアとソフトウェアに分担する場合、何れか一方を先のパイプラインステージで処理し、他方を後のパイプラインステージで処理する段階処理の手法(図30(1−2))と、双方を同一のパイプラインステージで処理する同時並行処理の手法(図30(1−3))の何れも採り得る。ただし、何れの手法を採るかで、パイプラインステージでのストリーム使用量合計MSUMが異なってくる。
段階処理の場合、図30(1−2)に示すように、たとえば、ハードウェア(H/W)処理後にソフトウェア(S/W)処理を行なうものとすると(逆でもよい)、第1段階での処理において、一方の圧縮器Cmの入出力ストリームのストリーム合計は2.5(=2+0.5)ユニットとなる。このとき、4ユニットの入力ストリームの内の処理を待機させる2ユニットが蓄積型ストリームとして取り扱われるので、第1段階のパイプラインステージでのストリーム使用量合計MSUMは4.5(=2.5+2)ユニットとなる。次の第2段階での処理において、他方の圧縮器Cmの入出力ストリームのストリーム合計は2.5=2+0.5)ユニットとなる。このとき、第1段階で処理された圧縮済みの出力ストリーム(0.5ユニット)が積型ストリームとして取り扱われるので、第2段階のパイプラインステージでのストリーム使用量合計MSUMは3.0(=2.5+0.5)となる。
同時並行処理の場合、図30(1−3)に示すように、一方の圧縮器Cmの入出力ストリームのストリーム合計は2.5ユニットとなり、他方の圧縮器Cmの入出力ストリームのストリーム合計は2.5ユニットとなり、当該パイプラインステージでのストリーム使用量合計MSUMは5.0(=2.5+2.5)となる。
第2の手法の場合、図30(2−1)に示すように、必然的に、何れか一方を先のパイプラインステージで処理し、他方を後のパイプラインステージで処理する段階処理の手法となる。たとえば、ハードウェア(H/W)処理後にソフトウェア(S/W)処理を行なうものとすると(逆でもよい)、第1段階での処理において、一方の圧縮器Cmの入出力ストリームのストリーム合計は6(=4+2)ユニットとなり、これがそのまま、第1段階のパイプラインステージでのストリーム使用量合計MSUMとなる。次の第2段階での処理において、他方の圧縮器Cmの入出力ストリームのストリーム合計は3(=2+1)ユニットとなり、これがそのまま、第2段階のパイプラインステージでのストリーム使用量合計MSUMとなる。
第1・第2の手法の何れを採用するかは、たとえば、圧縮器Cmや伸長器Exのアルゴリズムの観点から決める。圧縮や伸長の対象データが複数に分割でき並列処理が可能である場合、図30(1−2)に示すように圧縮器Cmや伸長器Exを分割する。圧縮や伸長が処理内容により段階的に分割が可能である場合、図30(1−2)に示すように圧縮器Cmや伸長器Exを分割する。また、これらの分割はそれぞれ同時に実施することができる。
<蓄積型のスケジューラモデル:第3実施形態>
図31〜図31Bは、第3実施形態の仕組みのモデルケース(蓄積ストリーム対応のケース)を示す図である。ここで、図31は、ハードウェアによる対処部分とソフトウェア処理による対処部分の関係の基本を説明する図である。図31Aは、図31についてのタイムスケジュールを示している。図31Bは、図31の状態において、具体的な数値例(図28の事例)を適用して、スケジュールの更新後を示している。
図31〜図31Bは、第3実施形態の仕組みのモデルケース(蓄積ストリーム対応のケース)を示す図である。ここで、図31は、ハードウェアによる対処部分とソフトウェア処理による対処部分の関係の基本を説明する図である。図31Aは、図31についてのタイムスケジュールを示している。図31Bは、図31の状態において、具体的な数値例(図28の事例)を適用して、スケジュールの更新後を示している。
なお、ここでは、圧縮処理や伸長処理におけるモジュール分割に当たって、圧縮率を分割し、分割せずに入力されるストリームに対して分割された圧縮率を適用する第2の手法(図30(2))を採用する。前述のように、第2の手法の場合、段階処理となるので、最終的な圧縮率は各モジュールに適用される圧縮率の合成(積)となる。
また、圧縮処理のモジュール分割に関しては、ハードウェア処理による圧縮処理を先ず実行し、ハードウェアによる圧縮処理済みのストリーム(「中間(圧縮)」と記す)に対して、別のパイプラインステージ(リコンフィグステージ)においてソフトウェア処理による圧縮処理を実行する。また、伸長処理のモジュール分割に関しては、ソフトウェア処理による伸長処理を先ず実行し、ソフトウェアによる圧縮処理済みのストリーム(「中間(圧縮)」と記す)に対して、別のパイプラインステージ(リコンフィグステージ)においてハードウェア処理による伸長処理を実行する。
また、ハードウェアによる圧縮処理の圧縮率は50%とし、ソフトウェアによる圧縮処理の圧縮率は50%とする。ソフトウェアによる伸長処理時には圧縮率50%に対応する(逆数の)伸長処理を行ない、ハードウェアによる伸長処理時には圧縮率50%に対応する(逆数の)伸長処理を行なう。最終的な圧縮率は25%(=50%×50%)となる。
圧縮器Cmや伸長器Exをパイプラインステージに挿入するに当たっては、その部分をソフトウェア処理で対処する場合、パイプライステージの1ステージ内に収まれば複数のモジュールを組み込み得る。
たとえば、図31では、ハードウェア(H/W:画像処理リコンフィグ部12)により、蓄積型のStream3,Stream6について所定の圧縮率で圧縮処理を実行し、この処理済みの中間ストリーム(中間(圧縮))に対して、別のパイプラインステージにおいて、ソフトウェア(S/W:リコンフィグ制御部20やコントローラメインCPU50)により所定の圧縮率で圧縮処理を実行する。そして、この処理済みのストリーム(圧縮)に対して、別のパイプラインステージにおいて、ソフトウェア(S/W:リコンフィグ制御部20やコントローラメインCPU50)により所定の圧縮率に対応する(逆数の)伸長処理を実行し、この処理済みの中間ストリーム(中間(圧縮))に対して、別のパイプラインステージにおいて、ハードウェア(H/W:画像処理リコンフィグ部12)により所定の圧縮率に対応する(逆数の)伸長処理を実行する。
この過程において、先ず、ハードウェア処理部分では、図31Aに示すように、非蓄積型ストリームに対しての画像処理と、後に蓄積型ストリームとなるストリームに対しての圧縮処理や直前のパイプラインステージでは蓄積型ストリームであったストリームに対しての伸長処理を、並行的に実行する。
また、ソフトウェア処理部分では、図31Aに示すように、一方のストリームについての圧縮処理と他方(1つとは限らない)のストリームについての圧縮処理、一方のストリームについての圧縮処理と他方1つとは限らない)のストリームについての伸長処理、あるいは、一方のストリームについての伸長処理と他方(1つとは限らない)のストリームについての伸長処理、と言った任意の組合せで、圧縮処理や伸長処理のソフトウェアモジュール(以下、単にモジュールとも称する)を分割して、同一パイプライステージ内で複数のモジュールを順番に実行する。図31や図31Aに示した例では、画像処理4のパイプラインステージ4のとき、Stream6中間(圧縮)に対する圧縮処理を実行し、次に、Stream3(圧縮)に対する伸長処理を実行している。また、画像処理5のパイプラインステージ5のとき、Stream6中間(圧縮)に対する圧縮処理を実行し、次に、Stream3(圧縮)に対する伸長処理を実行している。
実際に数値を適用した図31Bを参照して、さらに詳細に説明する。メモリ空間や入出力ストリームのストリーム量は、図28に示したものと同一である。画像処理2(パイプラインステージ2)のとき、ハードウェア処理ではStream2(1ユニット)に対して画像処理が実行され、Stream4(1ユニット)が出力される。このとき、並行して、画像処理1(パイプラインステージ1)から出力されたStream3(4ユニット)に対して50%の圧縮率で圧縮処理を実行する。したがって、圧縮後の予測メモリ使用量は、1+1+4+(2)=8ユニットとなる。
画像処理3(パイプラインステージ3)のとき、ハードウェア処理ではStream4(1ユニット)に対して画像処理が実行され、Stream5(2ユニット)とStream6(2ユニット)が出力される。また、並行してソフトウェア処理では、パイプラインステージ2のハードウェア処理で圧縮されたStream3中間(圧縮)(2ユニット)に対して50%の圧縮率で圧縮処理を実行する。したがって、圧縮後の予測メモリ使用量は、1+2+2+(2)+(1)=8ユニットとなる。
画像処理4(パイプラインステージ4)のとき、ハードウェア処理ではStream5(2ユニット)に対して画像処理が実行され、Stream7(1ユニット)が出力される。このとき、並行して、画像処理3(パイプラインステージ3)から出力されたStream6(2ユニット)に対して50%の圧縮率で圧縮処理を実行する。また、並行してソフトウェア処理では、パイプラインステージ3のソフトウェア処理で圧縮されたStream3(圧縮)(1ユニット)に対して50%の圧縮率に対応した伸長処理を実行する。したがって、圧縮後の予測メモリ使用量は、2+1+2+(1)+((1))+(2)=9ユニットとなる。
画像処理5(パイプラインステージ5)のとき、ハードウェア処理ではStream7(1ユニット)に対して画像処理が実行され、Stream8(1ユニット)が出力される。このとき、並行して、パイプラインステージ4のソフトウェア処理で伸長されたStream3中間(圧縮(2ユニット)に対して50%の圧縮率に対応した伸長処理を実行する。また、並行してソフトウェア処理では、パイプラインステージ4のハードウェア処理で圧縮されたStream6中間(圧縮)(1ユニット)に対して50%の圧縮率で圧縮処理を実行する。したがって、圧縮後の予測メモリ使用量は、1+1+4+(2)+(1)+((0.5))=9.5ユニットとなる。
各パイプラインステージにおいて、圧縮後の予測メモリ使用量は、何れも、メモリ空間=10ユニットよりも少ないので、メモリ容量オーバーとなる事象は起きない。また、更新後の画像処理回数(コンフィグ面)は更新前(図28)と同じであるから、画像処理回数が増加しないため、画像処理のスピード低下が発生しない。
<非蓄積型のスケジューラモデル:第3実施形態>
図32は、第3実施形態の仕組みのモデルケース(非蓄積ストリーム対応のケース)を示す図である。ここで、図32は、蓄積ストリーム対応の図31Aに対応するもので、タイムスケジュールを示している。
図32は、第3実施形態の仕組みのモデルケース(非蓄積ストリーム対応のケース)を示す図である。ここで、図32は、蓄積ストリーム対応の図31Aに対応するもので、タイムスケジュールを示している。
非蓄積型ストリームを処理対象として、圧縮・伸長の有無を選択的に切り替えるとともに、圧縮・伸長をモジュール分割してハードウェア処理とソフトウェア処理を組み合わせるときに、図30(2)に示した第2の手法を適用する場合、ソフトウェア処理を行なっている間は、ハードウェア処理で必要なストリームが準備されていないので、ソフトウェア処理が完了するまでの間はハードウェア処理を待機(Wait)する。よって、この待機期間が、オーバーヘッドとして処理時間に加算される。
たとえば、図32は、画像処理2の出力ストリームを、直後のパイプラインステージである画像処理3の入力ストリームとして使用する場合において、第3実施形態の仕組みを適用する場合を示している。この場合、画像処理リコンフィグ部12は(ハードウェア処理においては)、画像処理2から出力されるストリームを、自パイプラインステージに組み込んだ圧縮器Cmに直ちに入力して、所定の圧縮率(たとえば50%)で圧縮する。圧縮処理が完了するとハードウェア処理は一旦処理を停止させる。同一画素データについては画像処理後に圧縮処理を行なうが、他の画素データとの関係では画像処理と並行に圧縮処理がなされるので、圧縮処理のための時間ロスは抑えられる。メモリ使用量の増加もない。
ハードウェア処理にて圧縮されたストリームは、プロセッサ部へ渡される。プロセッサ部は、それを、ソフトウェア処理にて、所定の圧縮率(たとえば25%)で圧縮する。そして、ソフトウェア処理にて圧縮されたストリームをローカルメモリ30に格納する。パイプラインステージの切替え(リコンフィグ)時には、ソフトウェア処理により、ローカルメモリ30からストリームを取り込み、所定の圧縮率(たとえば50%)に対応する伸長処理を行ない、パイプラインステージの切替え(リコンフィグ)が完了している画像処理リコンフィグ部12に渡す。
画像処理リコンフィグ部12は(ハードウェア処理においては)、ソフトウェア処理側から取り込んだストリームに対して自パイプラインステージに組み込んだ圧縮器Cmにより所定の圧縮率(たとえば50%)で圧縮する。圧縮処理が完了すると直ちに画像処理3に入力して画像処理を実行する。同一画素データについては圧縮処理後に画像処理を行なうが、他の画素データとの関係では圧縮処理と並行に画像処理がなされるので、圧縮処理のための時間ロスは抑えられる。メモリ使用量の増加もない。
このように、非蓄積ストリームの場合に、第3実施形態の仕組みを適用するには、ソフトウェアプロセス期間中、コンフィグを停止させることになる。その間は、ハードウェア処理は待機期間となるので、この待機期間が、オーバーヘッドとなる。
<フロアプランレイアウト:第3実施形態>
図33は、第3実施形態の画像処理リコンフィグ部12に対して適用されるフロアプランレイアウトの一例を示す図である。この図は、画像処理部を動的に再構成可能な画像処理リコンフィグ部12に、圧縮器Cmや伸長器Exをハードウェアとして挿入する際のレイアウト態様を示す。
図33は、第3実施形態の画像処理リコンフィグ部12に対して適用されるフロアプランレイアウトの一例を示す図である。この図は、画像処理部を動的に再構成可能な画像処理リコンフィグ部12に、圧縮器Cmや伸長器Exをハードウェアとして挿入する際のレイアウト態様を示す。
画像処理リコンフィグ部12の再構成可能な回路部分は、予め、画像処理領域と、圧縮器Cmや伸長器Exの領域を分けておくのがよい。このことを、本実施形態では、フロアプランと称し、このフロアプランに基づく各部分の配置状態をフロアプランレイアウトと称する。エリア(セグメント)割りをより細かくすると、画像処理リコンフィグ部12のリソースがより効率的に使用されるようになる。
図33に示す例では、コンフィグ1面を4エリアに分割し、使用率に応じてどのエリアに物理的に配置しているかを示す。たとえば、基本エレメント総数を100、使用エレメント数を25(使用率25%)としたとき、使用エリアは、1,2,3,4の何れかとなる。また、基本エレメント総数を100、使用エレメント数を50(使用率50%)としたときには、1〜4の何れか2つの組合せとなり、この組合せを括弧書きで示すと、使用エリアは、(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)となる。
画像処理リコンフィグ部12は、コンフィグ(画像処理部や圧縮器Cmや伸長器Ex)の選択時には、この使用エリアが重ならないようにする。たとえば、画像処理3の使用率が50%であるときに、圧縮器Cm1を挿入するときに、その使用率が25%であるときには、たとえば、画像処理3をエリア(2,4)に割り当て、圧縮器Cm1をエリア1に割り当てる。
<スケジューラ部の処理手順:第3実施形態>
図34は、第3実施形態のデータ処理装置1におけるリコンフィグ制御部20によるスケジューリング機能の処理手順(メインフロー)を説明するフローチャートである。
図34は、第3実施形態のデータ処理装置1におけるリコンフィグ制御部20によるスケジューリング機能の処理手順(メインフロー)を説明するフローチャートである。
リコンフィグ制御部20は先ず、オリジナル(更新前)のリコンフィグパイプライン管理テーブルTB31から圧縮閾値THを算出する(S3100)。おして、パイプラインステージ(リコンフィグステージ)ごとに蓄積ストリームから圧縮すべきストリームや伸長すべきストリームをピックアップし(S3110)、ピックアップしたストリームの圧縮処理から伸長処理の期間(圧縮→伸長の期間)が、圧縮ソフトウェアバジェットと伸長バジェットの総和(圧縮SWバジェット+伸長バジェット)よりも少ないか否かを判断する(S3120)。
イエスであれば、リコンフィグ制御部20は、圧縮器管理テーブルTB32や伸長器管理テーブルTB33とリコンフィグパイプライン管理テーブルTB31に記述のコンフィグデータの画像処理部の回路使用サイズに基づいて、挿入できる圧縮器Cmや伸長器Exを設定する(S3130)。その詳細は後述するが、圧縮器Cmや伸長器Exのどのモジュールが画像処理リコンフィグ部12に挿入できるかを判断すると言うことである。
次に、リコンフィグ制御部20は、画像処理コンフィグデータに圧縮器Cmや伸長器Exを挿入し、圧縮器管理テーブルTB32や伸長器管理テーブルTB33において、選択されなかったモジュールをソフトウェア処理としてセットし、次のステージの処理に移動する(S3140)。
一方、ステップS3120の判断においてノーであれば、リコンフィグ制御部20は、圧縮器管理テーブルTB32や伸長器管理テーブルTB33において、圧縮器Cmや伸長器Exを全てソフトウェアプロセスにセットし、次のステージの処理に移動する(S3150)。
<リコンフィグパイプライン管理テーブル:第3実施形態>
図35および図35Aは、リコンフィグパイプライン管理テーブルTB31の一例を示す図である。ここで、図35は最初の状態(オリジナル)を示し、図35Aは、更新後の状態を示す。
図35および図35Aは、リコンフィグパイプライン管理テーブルTB31の一例を示す図である。ここで、図35は最初の状態(オリジナル)を示し、図35Aは、更新後の状態を示す。
第3実施形態のリコンフィグパイプライン管理テーブルTB31は、パイプラインステージ(リコンフィグ)順に、コンフィグデータ、入力ストリームの情報、出力ストリームの情報などの情報が管理されるようになっている。コンフィグデータとしては、名前(Name)と回路使用サイズ(%)がある。入力ストリームの情報としては、名前(Name),サイズがある。出力ストリームの情報としては、名前(Name),サイズ,「蓄積ストリームか」がある。「蓄積ストリームか」は、後に蓄積型ストリームとなるかを意味する。
リコンフィグ制御部20は、このリコンフィグパイプライン管理テーブルTB31のコンフィグデータ情報とストリーム情報を用いて、スケジューリングを組む。ここで、コンフィグデータ情報とは、名前(Name)、回路使用サイズ(%)である。ストリーム情報とは、名前(Name)、サイズ、「蓄積ストリームか」である。
たとえば、図35に示すオリジナルのリコンフィグパイプライン管理テーブルTB31では、画像処理1の回路使用サイズが100%であり、空きエリアが0%であるから、圧縮器Cmや伸長器Exの挿入可能なエリアが存在しないことが分る。一方、画像処理2の回路使用サイズが25%であり、空きエリアが75%であるから、その75%エリアに圧縮器Cmや伸長器Exが挿入可能であることが分る。同様に、画像処理3の回路使用サイズが50%であり、空きエリアが50%であるから、その50%エリアに圧縮器Cmや伸長器Exが挿入可能であることが分る。画像処理4の回路使用サイズが75%であり、空きエリアが25%であるから、その25%エリアに圧縮器Cmや伸長器Exが挿入可能であることが分る。
リコンフィグ制御部20は、オリジナルのリコンフィグパイプライン管理テーブルTB31から、どのストリームを圧縮し、どのストリームを伸長するかを求め、求めた結果を圧縮・伸長管理の情報として、リコンフィグパイプライン管理テーブルTB31に追加することで、リコンフィグパイプライン管理テーブルTB31を更新する。
圧縮・伸長管理の情報としては、圧縮閾値TH(=蓄積ストリーム許容値÷(蓄積ストリーム数+出力ストリーム数))、圧縮が必要なストリーム、伸長が必要なストリームの情報が登録される。因みに、圧縮対象とされた蓄積型ストリーム(蓄積圧縮ストリーム)については、画像処理前に伸長処理が必要となるので、使用する前に伸長しておくことになる。
<ハードウェア処理とソフトウェア処理の振り分け手法:第3実施形態>
図36は、ハードウェア処理とソフトウェア処理の振り分けの手順を説明する図である。リコンフィグ制御部20は、画像処理とレイアウトが重ならないように圧縮器Cmや伸長器Exのモジュールを選択する。そして、ハードウェアとして選択されなかったモジュールはソフトウェアプロセスとしてセットし、圧縮器Cmや伸長器Exのパイプラインを決定する。
図36は、ハードウェア処理とソフトウェア処理の振り分けの手順を説明する図である。リコンフィグ制御部20は、画像処理とレイアウトが重ならないように圧縮器Cmや伸長器Exのモジュールを選択する。そして、ハードウェアとして選択されなかったモジュールはソフトウェアプロセスとしてセットし、圧縮器Cmや伸長器Exのパイプラインを決定する。
具体的には、図示を割愛するが、リコンフィグ制御部20は先ず、分割した圧縮器Cmや伸長器Exのソフトウェア処理の適用において、モジュールを1つピックアップし(S3010)、ピックアップしたモジュールがその判断時点で判断対象の中で最も重たいソフトウェア処理であるか否かを判断する(S3012)。ノーであれば判断対象の中で次のモジュールをピックアップし(S3012-N、S3014)、同様に判断する(S3012)。イエスであればピックアップしたモジュールをハードウェアによる圧縮や伸長で適用できるか否か、つまり、画像処理リコンフィグ部12に圧縮器Cmや伸長器Exを挿入できるか否かを判断する(S3012-Y,S3020)。
リコンフィグ制御部20は、ハードウェアによる圧縮や伸長を適用できるときにはハードウェア処理で実行するようにスケジューリングし(S3020-Y,S3022)、ハードウェアによる圧縮や伸長を適用できないときにはソフトウェア処理で実行するようにスケジューリングする(S3020-N,S3024)。最も重たいソフトウェア処理のモジュールについて、ハードウェアでの実行かソフトウェアでの実行かを決定したら、そのモジュールは次の判断対象から除外するようにセットし(S3028)、ステップS3010に戻り、判断対象のモジュールが無くなるまで同様に繰り返す。つまり、ソフトウェア処理の重たい順から優先的にハードウェアを適用するようにする。なお、このとき、ハードウェアの圧縮や伸長の適用モジュールが他の適用モジュールと重ならないようにする。空きスペースが少なく、1つのモジュールもハードウェアで入らない場合は、全てをソフトウェアで対処する。
このように、先ず、スペースの許す限り、ソフトウェア処理の重たい順から優先的にハードウェアによる実装を行ない、ハードウェアで対処できない分をソフトウェア処理で対処するのは、それぞれの処理速度を勘案したものである。
たとえば、図36に示すように、画像処理3のレイアウト群に対して圧縮器Cmのモジュール1(回路規模25%とする)を適用する場合を考える。画像処理3の回路使用サイズは50%であるので、4分割した25%エリアの何れかにはモジュール1を挿入し得る。このときの振り分けの決定方法としては、一例として、論理アルゴリズムを利用する。たとえば、圧縮器Cmや画像処理として採り得る全ての配置の組合せについて、それぞれが配置されるフロアレイアウト部分を論理“1”に設定し、相互のフロアの論理積をとり、“1”が発生しない組み合わせを選択する。複数ある場合はその内の何れか選択すればよい。タスクが増加する場合にも、同様の手順を用いる。また、あるモジュールをハードウェアで追加した後に、さらに別のモジュール追加が可能であれば、さらにそのモジュールをハードウェアで追加する。
<ハードウェア処理とソフトウェア処理の振り分けの手順:第3実施形態>
図37は、ハードウェア処理とソフトウェア処理の振り分けの手順の詳細を説明するフローチャートである。前述のように、リコンフィグ制御部20は、画像処理と圧縮器Cmや伸長器Exのエリア(セグメント)が重ならないように、フロアプランレイアウトの中から何れかのエリア(セグメント)を選択し、画像処理リコンフィグ部12の処理実行コンフィグや、リコンフィグ制御部20(あるいはコントローラメインCPU50)によるソフトウェアプロセスを設定する。
図37は、ハードウェア処理とソフトウェア処理の振り分けの手順の詳細を説明するフローチャートである。前述のように、リコンフィグ制御部20は、画像処理と圧縮器Cmや伸長器Exのエリア(セグメント)が重ならないように、フロアプランレイアウトの中から何れかのエリア(セグメント)を選択し、画像処理リコンフィグ部12の処理実行コンフィグや、リコンフィグ制御部20(あるいはコントローラメインCPU50)によるソフトウェアプロセスを設定する。
たとえば、リコンフィグ制御部20は、スケジューラ処理をスタートさせると、先ず、現在のリコンフィグ順を確認する(S3200)。そして、画像処理の使用エリア数を「エリア数」にセットし(S3202)、全エリア数が「エリア数」以上であるか(全エリア数≧「エリア数」)を確認する(S3204)。ノーであれば、リコンフィグ制御部20は、「SWバジェット」が最大のモジュールをセットする(S3204-N,S3210)。そして、リコンフィグ制御部20は、セットされた圧縮器Cmや伸長器Ex(圧縮/伸長器)のモジュールの使用エリア数を「エリア数」に加算し(S3212)、全エリア数が「エリア数」以上であるか(全エリア数≧「エリア数」)を確認する(S3214)。ノーであれば(S3214-N)、リコンフィグ制御部20は、加算したエリア数を減算し(S3222)、モジュールを「ソフトウェア(S/W)プロセス」にセットする(S3224)。一方、イエスであれば(S3214-Y)、圧縮器管理テーブルTB32や伸長器管理テーブルTB33において、モジュールを「ロードモジュール」にセットする(S3226)。この後、リコンフィグ制御部20は、全モジュールをチェックしたかを確認し(S3230)、ノーであれば、次の「ソフトウェアバジェット」のモジュールをセット(次プライオリティ参照用)する(S3232)。
一方、ステップS3204でイエスのときには、リコンフィグ制御部20は、圧縮器管理テーブルTB32や伸長器管理テーブルTB33において、全モジュールを「S/Wプロセス」にセットする(S3240)。この後、あるいは、ステップS3230でイエスのときには、リコンフィグ制御部20は、画像処理のレイアウト(エリア/セグメント:以下同様)を選択し(S3242)、「ロードモジュール」はセットされているかを確認する(S3250)。イエスであれば、リコンフィグ制御部20は、セットされている「ロードモジュール」のレイアウトを選択する(S3250-Y,S3252)。そして、さらにフロアプランの論理積は“0”になるかを判断する(S3254)。ノーであればステップS3242に戻り、別の画像処理のレイアウトを選択する。図示を割愛するが、この繰返し処理で全ての組合せを確認し、見つからなければ諦める。
ステップS3250でノーのときやステップS3260でイエスのときには、圧縮器管理テーブルTB32や伸長器管理テーブルTB33において、選択されたレイアウトをセットしロード「S/Wプロセス」をリコンフィグ制御部20やホスト部CPU(コントローラメインCPU50)にセットする(S3262)。そして、データ処理装置1は、画像処理リコンフィグ部12によりリコンフィグレーションを、またローカルメモリ30やコントローラメインCPU50によりソフトウェア(S/W)を実行する(S3264)。
<管理テーブルの具体例:第3実施形態>
図38〜図38Dは、第3実施形態の仕組みにおいて適用される各種管理テーブルの具体例を示す図である。たとえば、図38は、図28〜図31Bのパイプラインステージ1〜4において、リコンフィグパイプライン管理テーブルTB31aと圧縮器管理テーブルTB32との関係の具体例を示している。図38Aは、図28〜図31Bのパイプラインステージ5〜8において、リコンフィグパイプライン管理テーブルTB31bと伸長器管理テーブルTB33との関係の具体例を示している。図38Bは、図38と図38Aのリコンフィグパイプライン管理テーブルTB31a,TB31bを1つに纏めたものである。図38Cは、更新後のリコンフィグパイプライン管理テーブルTB34を示し、図38Dは、更新後のソフトウェアプロセス管理テーブルTB35を示す。
図38〜図38Dは、第3実施形態の仕組みにおいて適用される各種管理テーブルの具体例を示す図である。たとえば、図38は、図28〜図31Bのパイプラインステージ1〜4において、リコンフィグパイプライン管理テーブルTB31aと圧縮器管理テーブルTB32との関係の具体例を示している。図38Aは、図28〜図31Bのパイプラインステージ5〜8において、リコンフィグパイプライン管理テーブルTB31bと伸長器管理テーブルTB33との関係の具体例を示している。図38Bは、図38と図38Aのリコンフィグパイプライン管理テーブルTB31a,TB31bを1つに纏めたものである。図38Cは、更新後のリコンフィグパイプライン管理テーブルTB34を示し、図38Dは、更新後のソフトウェアプロセス管理テーブルTB35を示す。
たとえば、図38において、画像処理3に着目する。画像処理の回路使用サイズは50%であり、圧縮が必要なストリーム5に対する圧縮器Cmとしては、圧縮器管理テーブルTB32に示すように、2つにモジュール分割したときのモジュール1はソフトウェアバジェットが3ステージで回路使用サイズが25%、モジュール2はソフトウェアバジェットが0.3ステージで回路使用サイズが50%である。
前述のように、ソフトウェアバジェットの大きいモジュールから優先的に処理されるので、モジュール1がハードウェアとして挿入可能か否かが先ず判断される。画像処理と圧縮器Cmの回路使用サイズの合計は、100%以下なので、その範囲で、フロアの最適な組み合わせを選択する。このとき、画像処理と圧縮器Cmの各エリア(セグメント)がぶつからないように組み合わせる。本例では、ソフトウェアバジェットの大きいモジュール1が圧縮器管理テーブルTB32の「ロードモジュール」にセットされる。ここでの「ロードモジュール」とは、画像処理リコンフィグ部12に圧縮器Cmを挿入し、画像処理と並列して圧縮処理するモジュールを意味する。モジュール1をロードモジュールにセットすると、残りのエリアは25%であり、同一パイプラインステージ中では、モジュール2をハードウェアレイアウトに挿入できないため、圧縮器管理テーブルTB32の「S/Wプロセス」にセットされる。ここでの「S/Wプロセス」とは、ローカルメモリ30やコントローラメインCPU50にて、ソフトウェア(S/W)にて圧縮処理するモジュールを意味する。
また、図38Aにおいて、画像処理6に着目する。伸長が必要なストリーム4に対する伸長器Exとしては、伸長器管理テーブルTB33に示すように、2つにモジュール分割したときのモジュール1はソフトウェアバジェットが0.3ステージで回路使用サイズが50%、モジュール2はソフトウェアバジェットが3ステージで回路使用サイズが25%である。前述のように、ソフトウェアバジェットの大きいモジュールから優先的に処理されるので、モジュール2がハードウェアとして挿入可能か否かが先ず判断される。画像処理と伸長器Exの回路使用サイズの合計は、100%以下なので、その範囲で、フロアの最適な組み合わせを選択する。このとき、画像処理と伸長器Exの各エリア(セグメント)がぶつからないように組み合わせる。
本例では、ソフトウェアバジェットの大きいモジュール2が伸長器管理テーブルTB33の「ロードモジュール」にセットされる。ここでの「ロードモジュール」とは、画像処理リコンフィグ部12に伸長器Exを挿入し、画像処理と並列して伸長処理するモジュールを意味する。モジュール2をロードモジュールにセットすると、残りのエリアは25%であり、同一パイプラインステージ中では、モジュール1をハードウェアレイアウトに挿入できないため、伸長器管理テーブルTB33の「S/Wプロセス」にセットされる。ここでの「S/Wプロセス」とは、ローカルメモリ30やコントローラメインCPU50にて、ソフトウェア(S/W)にて伸長処理するモジュールを意味する。
リコンフィグ制御部20は、これらの情報を、リコンフィグパイプライン管理テーブルTB31やソフトウェアプロセス管理テーブルTB35に追加することで各管理テーブルを更新する。たとえば、リコンフィグパイプライン管理テーブルTB31に関しては、図38Cに示すように、圧縮器Cmや伸長器Exに関して、2つに分割したモジュール1,2を、ハードウェア回路で対処するのかソフトウェアで対処するのかの情報を追記する。
また、ソフトウェアプロセス管理テーブルTB35に関しては、図38Dに示すように、パイプラインステージ(リコンフィグ)順に、ソフトウェア(S/W)プロセス、入力ストリームの情報、出力ストリームの情報などの情報が管理されるようになっている。ソフトウェアプロセスとしては、圧縮器Cmや伸長器Exのモジュールの別を特定する名前(Name)とソフトウェアバジェットがある。入力ストリームの情報としては、名前(Name),サイズがある。出力ストリームの情報としては、名前(Name),サイズがある。
<圧縮器管理テーブル:第3実施形態>
図39は、第3実施形態の仕組みにおいて適用される圧縮器管理テーブルTB32の具体例を説明する図である。ここでは、非可逆圧縮の一例であるPNG(Portable Network Graphics )圧縮を適用する1つの圧縮器Cmを2つにモジュール分割する場合を例示する。PNG圧縮の処理手法は、「LZ77+固定ハフマンコードによる静的ハフマン」、もしくは、「LZ77+動的ハフマンコードによる静的ハフマン」の何れかの方法で圧縮することになる。因みに、LZ法は、Abraham LempelとJacob Ziv の二人によるもので、正式名称はZiv-Lempel coding であり、LZ77は、1977年に開発された手法である。
図39は、第3実施形態の仕組みにおいて適用される圧縮器管理テーブルTB32の具体例を説明する図である。ここでは、非可逆圧縮の一例であるPNG(Portable Network Graphics )圧縮を適用する1つの圧縮器Cmを2つにモジュール分割する場合を例示する。PNG圧縮の処理手法は、「LZ77+固定ハフマンコードによる静的ハフマン」、もしくは、「LZ77+動的ハフマンコードによる静的ハフマン」の何れかの方法で圧縮することになる。因みに、LZ法は、Abraham LempelとJacob Ziv の二人によるもので、正式名称はZiv-Lempel coding であり、LZ77は、1977年に開発された手法である。
前述から分るように、PNG圧縮はLZ77とハフマン符号化の組合せで実現されるので、そのモジュール分割に当たっては、図39(1)に示すように、モジュール1にLZ77を割り当て、モジュール2にハフマン符号化を割り当てて処理する段階的手法を適用する。LZ77はソフトウェアバジェットが重たいが回路規模は小さく、一方、ハフマン符号化はソフトウェアバジェットが軽いが回路規模は大きいという特徴がある。一例として、図39(2)に示すように、LZ法が適用されるモジュール1は、ソフトウェアバジェットが0.3ステージで回路使用サイズが50%、ハフマン符号化が適用されるモジュール2はソフトウェアバジェットが3ステージで回路使用サイズが25%である。前例に則して言えば、LZ77が適用されるモジュール1の方を優先的にハードウェアで対処するように設定するのが好ましいことになる。
<纏め:第3実施形態>
図40は、前述の図28〜図39に示した事例を纏めて、第3実施形態の仕組みの特徴を事例に則して示した図である。第3実施形態を適用しない比較例の場合は、図28から分るように、画像処理リコンフィグ部12で対処しようとすると、8コンフィグ(本来の画像処理)+3コンフィグ(圧縮用)+3コンフィグ(伸長用)が必要となる。パイプラインステージ(コンフィグ)の数が増えるいので、圧縮や伸長のためにパイプラインステージ(コンフィグ)の数が増えるので、処理時間が掛る。
図40は、前述の図28〜図39に示した事例を纏めて、第3実施形態の仕組みの特徴を事例に則して示した図である。第3実施形態を適用しない比較例の場合は、図28から分るように、画像処理リコンフィグ部12で対処しようとすると、8コンフィグ(本来の画像処理)+3コンフィグ(圧縮用)+3コンフィグ(伸長用)が必要となる。パイプラインステージ(コンフィグ)の数が増えるいので、圧縮や伸長のためにパイプラインステージ(コンフィグ)の数が増えるので、処理時間が掛る。
これに対して、第3実施形態の仕組みでは、画像処理の最中に保持しているストリームを圧縮処理し、また圧縮処理したものについては画像処理前に伸長処理し、DRP10の外部メモリであるローカルメモリ30のメモリ容量をオーバーしないように制御する。このとき、第3実施形態では、画像処理と並列動作するように、圧縮器Cmや伸長器Exをモジュール分割し画像処理リコンフィグ部12の空きエリアから適応的に選択して挿入するハードウェア面からの対処を実行し、ハードウェアとして挿入されなかったモジュールはソフトウェア処理で対処するようにした。これによって、前述の事例では、8コンフィグ(本来の画像処理)で対処される。第3実施形態の仕組みでは、パイプラインステージ(コンフィグ)の数が増えないので、画像処理が8処理(コンフィグ)、3ストリームを圧縮/伸長する場合、第3実施形態を適用しない場合と比較して、高速化されることが分る。
<<第3実施形態の比較例>>
<第1比較例:第3実施形態>
図41は、第3実施形態のデータ処理装置1に対する第1比較例を説明する図である。第1比較例は、特開平06−070171号公報に記載の仕組みに該当する。この仕組みは、第一圧縮部で圧縮し、第一伸長部で伸長し画像処理を実施し、第二圧縮部で圧縮し、第二伸長部で伸長するものである。画像メモリに記憶される画像データは必ず圧縮されているため、画像メモリは少量される。しかしながら、全てのストリームに圧縮部や伸長部が挿入されているため、回路規模は大きくなる。
<第1比較例:第3実施形態>
図41は、第3実施形態のデータ処理装置1に対する第1比較例を説明する図である。第1比較例は、特開平06−070171号公報に記載の仕組みに該当する。この仕組みは、第一圧縮部で圧縮し、第一伸長部で伸長し画像処理を実施し、第二圧縮部で圧縮し、第二伸長部で伸長するものである。画像メモリに記憶される画像データは必ず圧縮されているため、画像メモリは少量される。しかしながら、全てのストリームに圧縮部や伸長部が挿入されているため、回路規模は大きくなる。
<第2比較例:第3実施形態>
図41Aは、第3実施形態のデータ処理装置1に対する第2比較例を説明する図である。第2比較例は、特開平09−084004号公報に記載の仕組みに該当する。この仕組みは、汎用マイクロプロセッサと専用回路が協調動作して効率よく画像データを伸長するものである。処理全体を専用回路と汎用プロセッサに分割するので、専用回路の個数が減少され、ハードウェア規模は抑制される。しかしながら、専用回路のため、決まったパイプラインしか組めないという難点がある。また、画像処理と圧縮処理や伸長処理が並列処理ができないため、回路規模が増加する。換言すると、圧縮処理や伸長処理のために、専用回路を付与しなければいけないことになる。
図41Aは、第3実施形態のデータ処理装置1に対する第2比較例を説明する図である。第2比較例は、特開平09−084004号公報に記載の仕組みに該当する。この仕組みは、汎用マイクロプロセッサと専用回路が協調動作して効率よく画像データを伸長するものである。処理全体を専用回路と汎用プロセッサに分割するので、専用回路の個数が減少され、ハードウェア規模は抑制される。しかしながら、専用回路のため、決まったパイプラインしか組めないという難点がある。また、画像処理と圧縮処理や伸長処理が並列処理ができないため、回路規模が増加する。換言すると、圧縮処理や伸長処理のために、専用回路を付与しなければいけないことになる。
<第3比較例:第3実施形態>
図41Bは、第3実施形態のデータ処理装置1に対する第3比較例を説明する図である。第3比較例は、特開2001−027986号公報に記載の仕組みに該当する。この仕組みは、擬似データを用いてハードウェアの処理時間を取得し、その時間によってハードウェア処理とソフトウェア処理を振り分けるものである。この際には、テストデータの処理時間に応じて、ハードウェア(H/W)とソフトウェア(S/W)を振り分ける。しかしながら、画像処理と圧縮処理や伸長処理は、並列処理ができないため、回路規模が増加する。換言すると、圧縮処理や伸長処理のために、たとえば、コーデックと言った専用回路を付与しなければいけないことになる。加えて、どちらか一方しか使用しないため、リソース使用が非効率である。
図41Bは、第3実施形態のデータ処理装置1に対する第3比較例を説明する図である。第3比較例は、特開2001−027986号公報に記載の仕組みに該当する。この仕組みは、擬似データを用いてハードウェアの処理時間を取得し、その時間によってハードウェア処理とソフトウェア処理を振り分けるものである。この際には、テストデータの処理時間に応じて、ハードウェア(H/W)とソフトウェア(S/W)を振り分ける。しかしながら、画像処理と圧縮処理や伸長処理は、並列処理ができないため、回路規模が増加する。換言すると、圧縮処理や伸長処理のために、たとえば、コーデックと言った専用回路を付与しなければいけないことになる。加えて、どちらか一方しか使用しないため、リソース使用が非効率である。
これら比較例1〜3に対して、第3実施形態の仕組みは、前述のように、DRP10などの「内部処理構成をプログラマブル可能なデバイス」を使用してスケジューリングを行なう仕組みを採り、メモリ容量オーバーとなるケースでは、圧縮や伸長を挿入することで対処する。この際、第3実施形態では、図40においても説明したように、圧縮器Cmや伸長器Exをモジュール分割し画像処理リコンフィグ部12の空きエリアから適応的に選択して挿入するハードウェア面からの対処を実行し、ハードウェアとして挿入されなかったモジュールはソフトウェア処理で対処する。このため、パイプラインステージ(コンフィグ)の数が増えないので、処理速度には影響がなく、メモリ容量オーバーも起きない。
<<第4実施形態>>
次に、データ処理装置1の第4実施形態について説明する。なお、第4実施形態においては、説明文では「伸長」と記す。図面中で、「伸長」を「伸張」と記すことがあるが、これらは同義である。また、図面中で、圧縮器Cmと伸長器Exを纏めて「圧縮/伸長器」と記すことがある。
次に、データ処理装置1の第4実施形態について説明する。なお、第4実施形態においては、説明文では「伸長」と記す。図面中で、「伸長」を「伸張」と記すことがあるが、これらは同義である。また、図面中で、圧縮器Cmと伸長器Exを纏めて「圧縮/伸長器」と記すことがある。
図42および図42Aは、第4実施形態のデータ処理装置1の仕組みを説明する図である。ここで図42(1)は、第4実施形態の仕組みを、圧縮器Cmや伸長器Exの種類とサイズの圧縮性能の関係から示した図である。図42(2)は、第4実施形態の仕組みを、パイプラインステージの再構成(リコンフィグ)の側面から示した図である。図42Aは、図42のより具体的な説明図である。
従前の仕組みでは、第1実施形態などで説明したように、圧縮や伸長をするべき入力ストリームや出力ストリームが複数ある場合に、ハードウェアで圧縮器Cmや伸長器Exを各パイプラインステージのデータ処理時(画像処理時)に入れるケースでは、入力ストリームごとに伸長器Exをまた出力ストリームごとに圧縮器Cmを実装する構成となるので回路規模が大きくなり、データ処理装置1(画像処理装置)のコストが掛る。また、第3実施形態とは異なる単純なソフトウェア処理で圧縮処理や伸長処理をする場合は、リソースを圧縮処理や伸長処理にとられるため、画像処理が完了する時間が遅くなる。
この対策として、第4実施形態においても、先ず、第1実施形態と同様に、ハードウェアリソースは増加させずに、データ処理(画像処理)速度の低下を抑制し、かつメモリ量を削減する。その第4実施形態の仕組みの基本は、それぞれ回路規模や処理性能の異なる複数の圧縮器Cmや伸長器Exを用意しておき、画像処理リコンフィグ部12の空き回路規模・圧縮処理や伸長処理のタイミング・圧縮性能や伸長性能(たとえばアルゴリズムや予想圧縮率や処理速度など)に基づいて、複数の圧縮器Cmや伸長器Exの中から適正なものを選択し、画像処理(データ処理)と並行に、圧縮処理や伸長処理を実行することで、メモリ容量オーバーと時間ロスを抑え、ホスト部5側へのデータ転送である二次フォールバック処理の発生を最小限に抑える。
具体的には、図42に示すように、画像処理リコンフィグ部12の空きスペースを利用して、回路規模(回路サイズ)および圧縮性能や伸長性能の異なる複数の圧縮器Cmや伸長器Exを挿入する。たとえば、画像処理リコンフィグ部12の再構成(リコンフィグ)時には、画像処理リコンフィグ部12の空き回路スペースに入るか否と圧縮性能や伸長性能の両面から、最も適正(つまり最適)なものの複数を選択して、各パイプラインステージで使用する圧縮器Cmや伸長器Exとして設定する。「最も適正」の判断基準としては、少なくとも空き回路スペースに入ることが第1であり、次にたとえば、圧縮率あるいは処理速度を基準とする。圧縮率が良好な方を優先するか処理速度を優先するか、あるいは圧縮率が最適なものと処理速度が最速なものを組み合わせるなどは、パイプラインステージにおける処理に併せて(適応させて)選択するのがよい。
図42Aに示すように、画像処理リコンフィグ部12の空き回路スペースを利用して、回路規模や処理性能(たとえば圧縮性能)の異なる複数の圧縮器Cmや伸長器Exを選択して挿入する。なお、図において、処理に使用されているストリーム(Stream)とは非蓄積型ストリームであり、処理にしようされていないストリームとは蓄積型ストリームである。
スタティック(Static)に、回路規模や圧縮性能の異なる複数の圧縮器Cmや伸長器Exの中から選択することで、空き回路スペースやメモリ容量に合わせた効率的な圧縮処理や伸長処理を実行する。その結果、二次フォールバック処理の発生が極力、抑制されるようになる。画像処理リコンフィグ部12の空き回路スペースを利用して圧縮器Cmや伸長器Exを挿入して圧縮処理や伸長処理を実行するので所定の圧縮率が得られればメモリ使用量が削減されメモリ容量オーバーは回避されるし画像処理の時間ロスが殆ど発生しない。
<複数の圧縮器&伸長器の選択処理:第4実施形態>
図43および図43Aは、第4実施形態のデータ処理装置1における複数の圧縮器Cmや伸長器Exを選択して画像処理リコンフィグ部12に挿入する基本動作例の処理手順(メインフロー)を説明するフローチャートである。因みに、図43Aは、図43の続きである。当該処理は、第1実施形態におけるスタティック・スケジューリングの処理ステップ(S1010〜S1022)と比較対象となる処理である。
図43および図43Aは、第4実施形態のデータ処理装置1における複数の圧縮器Cmや伸長器Exを選択して画像処理リコンフィグ部12に挿入する基本動作例の処理手順(メインフロー)を説明するフローチャートである。因みに、図43Aは、図43の続きである。当該処理は、第1実施形態におけるスタティック・スケジューリングの処理ステップ(S1010〜S1022)と比較対象となる処理である。
リコンフィグ制御部20は、先ず、圧縮閾値THと各ストリームの情報を取得する(S4010)。その処理の具体例は後述する。ここで使用する圧縮閾値THは、たとえば第1実施形態の圧縮閾値TH1を使用する。
次に、リコンフィグ制御部20は、パイプラインステージ(リコンフィグステージ)ごとのストリームから、圧縮すべきストリームや伸長すべきストリームを選択(ピックアップ)する(S4012)。その処理の具体例は後述する。
次に、リコンフィグ制御部20は、複数の圧縮器Cmや伸長器Exを選択するメイン処理に移行する(S4020)。その処理の具体例は後述するが、基本的な処理手順は以下の通りである。リコンフィグ制御部20は先ず、画像処理リコンフィグ部12の空き回路規模から、圧縮タイミングや伸長タイミングで、ともに挿入が可能な圧縮器Cmや伸長器Exを選択(ピックアップ)する(S4022)。
次に、リコンフィグ制御部20は、選択した圧縮器Cmや伸長器Exで圧縮閾値THをクリアできるものがあるか否かを判断する(S4030)。イエスであれば、圧縮閾値THをクリアする中で最も回路規模の小さな圧縮器Cmや伸長器Exを選択する(S4030-Y,S4032)。回路規模の小さなものを選択するのは、他のストリーム用にスペースを空けておくためである。一方、ノーであれば圧縮閾値THをクリアしない中で最も高圧縮な圧縮器Cmや伸長器Exを選択する(S4030-N,S4034)。高圧縮なものを選択するのは、ストリーム量を最大限に削減するためである。
この後、リコンフィグ制御部20は、全ての圧縮あるいは伸長すべき蓄積ストリームで、圧縮器Cmや伸長器Exの選択が完了したかを確認し(S4040)、ノーであればステップS4012に戻り同様の処理を繰り返す(S4040-N)。
ステッップS4040の判断でイエスであれば、リコンフィグ制御部20は、全ての圧縮あるいは伸長すべきストリームで圧縮閾値THをクリアするかを確認し(S4050)、イエスであれば当該処理を終了する。ノーであれば、リコンフィグ制御部20は、非圧縮ストリームに対する圧縮処理や圧縮済みストリームに対する伸長処理を実行するようにスケジューリングする(S4052)。その処理の具体例は後述する。「非圧縮ストリーム」とは、「圧縮すべきストリーム」と対比するストリームであり、(本来であれば)圧縮が不要なストリーム、すなわち、圧縮閾値THをクリアしているストリームである。
この際には、圧縮閾値THをクリアしている非圧縮ストリームの中で回路規模に余裕があるものに対して圧縮処理を実行することで、あるいは圧縮閾値THをクリアしている圧縮済みストリームの中で回路規模に余裕があるものに対して伸長処理を実行することで、ローカルメモリ30の空き容量を増やすようにスケジューリングする。
この後、リコンフィグ制御部20は、全ての圧縮あるいは伸長すべきストリームで圧縮閾値THをクリアするかを確認し(S4060)、イエスであれば当該処理を終了する。ノーであれば、リコンフィグ制御部20は、圧縮済みストリームの高圧縮化を実行するようにスケジューリングする(S4062)。その処理の具体例は後述する。この際には、圧縮閾値THをクリアしている圧縮済みストリームの中で回路規模に余裕がある場合より高圧縮の圧縮器Cmと伸長器Exに変更することで、ローカルメモリ30の空き容量を増やすようにスケジューリングする。
この後、図示を割愛するが、各ストリームについて、より高圧縮の圧縮器Cmと伸長器Exの設定が完了したら処理を終了させる。また、空き容量を増やすことのできるものが見つからなければ、当該第4実施形態の仕組みの適用は困難であるとして、たとえば、ホスト部5側へのデータ転送(フォールバック処理:第1実施形態の二次フォールバック処理と同等の処理)を行なうように設定する。
<圧縮閾値と各ストリームの情報の取得:第4実施形態>
図44は、圧縮閾値THと各ストリームの情報を取得する処理(S4010)の詳細を説明する図である。ここでは、説明を簡単にするため、特に断りのない限り、圧縮処理に関してのみ説明する。また、圧縮をすべきストリームとしては、当該パイプラインステージでの処理に使用されないストリーム、つまり、後の処理で使用するため蓄積しておかなければならないストリーム(蓄積型ストリーム)を対象とするものとする。これらは、後述する図45〜図48においても同様である。
図44は、圧縮閾値THと各ストリームの情報を取得する処理(S4010)の詳細を説明する図である。ここでは、説明を簡単にするため、特に断りのない限り、圧縮処理に関してのみ説明する。また、圧縮をすべきストリームとしては、当該パイプラインステージでの処理に使用されないストリーム、つまり、後の処理で使用するため蓄積しておかなければならないストリーム(蓄積型ストリーム)を対象とするものとする。これらは、後述する図45〜図48においても同様である。
当該処理(S4010)に当たっては、リコンフィグ制御部20は、圧縮器選択管理テーブルTB40をローカルメモリ30に記憶する。当該処理(S4010)の圧縮器選択管理テーブルTB40は、パイプラインステージ(リコンフィグ)順に、圧縮可能ストリームや圧縮閾値THをクリアするか否の情報が管理されるようになっている。
リコンフィグ制御部20は、パイプライン管理テーブルTB10を参照して、当該パイプラインステージでの処理に使用されないストリームをピックアップして圧縮可能ストリームの項目に登録する。さらに、ピックアップしたものを、圧縮閾値THをクリアできるものとできないものとに分別し、その分別情報を圧縮閾値THをクリアの項目に登録する。たとえば、クリアできるものには○を付し、クリアできないものは×を付す。そして、圧縮閾値THをクリアできないものは、圧縮すべきストリームとする。この例では、ストリーム1-2,1-1,3-2を圧縮すべきストリームとする。
<圧縮・伸長すべきストリームの選択:第4実施形態>
図45は、パイプラインステージごとのストリームから、圧縮すべきストリームや伸長すべきストリームをピックアップする処理(S4012)の詳細を説明する図である。
図45は、パイプラインステージごとのストリームから、圧縮すべきストリームや伸長すべきストリームをピックアップする処理(S4012)の詳細を説明する図である。
当該処理(S4012)に当たっては、リコンフィグ制御部20は、圧縮器選択管理テーブルTB41をローカルメモリ30に記憶する。当該処理(S4012)の圧縮器選択管理テーブルTB41は、圧縮器選択管理テーブルTB40の情報に加えてさらに、空き回路サイズ、圧縮タイミング、伸長タイミングの情報が管理されるようになっている。圧縮器選択管理テーブルTB40にこれらの情報を追加して圧縮器選択管理テーブルTB41とすればよい。
たとえば、リコンフィグ制御部20は、パイプライン管理テーブルTB10を参照して、当該パイプラインステージの画像処理部の回路使用サイズに基づき画像処理リコンフィグ部12の空き回路サイズを特定しその情報を「空き回路サイズ」の項目に追加する。また、リコンフィグ制御部20は、圧縮器選択管理テーブルTB40を参照して、圧縮すべきストリームに対して圧縮処理を適用し得る(圧縮器Cmを挿入し得る)パイプラインステージを特定しその情報を「圧縮タイミング」の項目に追加する。因みに、圧縮すべきストリームを圧縮した後で画像処理に使用するために伸長処理を適用し得る(伸長器Exを挿入し得る)パイプラインステージを特定しその情報を「伸長タイミング」の項目に追加する。
この例では、ストリーム1-2に対して画像処理2のステージで圧縮器Cmを挿入し画像処理4のステージで伸長器Exを挿入するように設定し、また、ストリーム1-1,3-2に対しては、画像処理3のステージで圧縮器Cmを挿入し、画像処理5のステージで伸長器Exを挿入するように設定する。
<圧縮器・伸長器の選択:第4実施形態>
図46は、画像処理リコンフィグ部12の空き回路規模から、圧縮タイミングや伸長タイミングで、ともに挿入が可能な圧縮器Cmや伸長器Exを選択する処理(S4022)の詳細を説明する図である。
図46は、画像処理リコンフィグ部12の空き回路規模から、圧縮タイミングや伸長タイミングで、ともに挿入が可能な圧縮器Cmや伸長器Exを選択する処理(S4022)の詳細を説明する図である。
当該処理(S4022)に当たっては、リコンフィグ制御部20は、圧縮器Cmや伸長器Exごとに、回路サイズや予想圧縮性能を規定した圧縮器Cmや伸長器Exの性能表TB42をローカルメモリ30に登録しておく。図示した例では、圧縮A,伸長Aは、圧縮器Cmは50単位、伸長器Exは40単位で、予想圧縮率が6/10の低圧縮のものである。圧縮B,伸長Bは、圧縮器Cmは60単位、伸長器Exは60単位で、予想圧縮率が5/10の低圧縮のものである。圧縮C,伸長Cは、圧縮器Cmが80単位、伸長器Exが50単位で、予想圧縮率が4/10の中圧縮のものである。圧縮D,伸長Dは、圧縮器Cmが100単位、伸長器Exが100単位で、予想圧縮率が3/10の中圧縮のものである。圧縮E,伸長Eは、圧縮器Cmが150単位、伸長器Exが140単位で、予想圧縮率が2/10の高圧縮のものである。圧縮性能の劣る低圧縮なものほど回路サイズは小さく、圧縮性能の高い高圧縮なものほど回路サイズは大きくなっている。
また、リコンフィグ制御部20は、圧縮器選択管理テーブルTB43をローカルメモリ30に記憶する。当該処理(S4022)の圧縮器選択管理テーブルTB43は、圧縮器選択管理テーブルTB41の情報に加えてさらに、1ストリーム当たりの回路サイズ、挿入可能な圧縮器Cmや伸長器Ex、圧縮閾値THをクリアする圧縮器Cmや伸長器Exの情報が管理されるようになっている。これらの追加情報を、圧縮器選択管理テーブルTB41と圧縮器Cmや伸長器Exの性能表TB42に基づいて特定し、圧縮器選択管理テーブルTB41にこれらの情報を追加して圧縮器選択管理テーブルTB43とすればよい。
たとえば、圧縮器選択管理テーブルTB41において、圧縮タイミングや伸長タイミングに記述のある部分について、空き回路サイズを処理対象のストリーム数で除算することで、1ストリーム当たりの回路サイズを特定し、その情報を「1ストリーム当たりの回路サイズ」の項目に追加する。そして、このようにして求めた1ストリーム当たりの回路サイズを圧縮器Cmや伸長器Exの性能表TB42に突き合わせることで、そのパイプラインステージに挿入可能な圧縮器Cmや伸長器Ex並びに圧縮閾値THをクリアするか否かを特定し、その情報を「挿入可能な圧縮/伸長器」や「圧縮閾値THをクリアする圧縮/伸長器」の項目に追加する。
たとえば、画像処理3のパイプラインステージについて着目したとき、圧縮Eは、1ストリーム当たりの回路サイズ(=150)に対して、圧縮器Cmの回路サイズ(=150)が大きく、伸長器Exの回路サイズ(=140)が小さいので、圧縮器Cmは入るが伸長器Exが入らないため、挿入可能な圧縮/伸長器から除外する。
また、各圧縮すべきストリームについては、最終的には、圧縮閾値THをクリアするものの中で最低圧縮なものを選択する(S4032)。本例では、画像処理2のステージでは、圧縮すべきストリームはストリーム1-2のみであり、これについて挿入可能でかつ圧縮閾値THをクリアする圧縮BCDの中で最低圧縮な圧縮Bを選択する。また、画像処理3のステージでは、圧縮すべきストリームはストリーム1-1,3-2の2つがあり、ストリーム1-1については、挿入可能でかつ圧縮閾値THをクリアする圧縮CDの中で最低圧縮な圧縮Cを選択し、ストリーム3-2については、挿入可能でかつ圧縮閾値THをクリアする圧縮は無いため、挿入可能で最も高圧縮な圧縮Dを選択する。圧縮すべきストリームが複数ある場合に、圧縮器Cmや伸長器Exを複数挿入する第4実施形態の仕組みが適用されていることが分る。
<非圧縮ストリームの圧縮:第4実施形態>
図47は、非圧縮ストリーム(圧縮されていないストリーム)に対する圧縮処理のスケジューリング(S4052)の詳細を説明する図である。
図47は、非圧縮ストリーム(圧縮されていないストリーム)に対する圧縮処理のスケジューリング(S4052)の詳細を説明する図である。
リコンフィグ制御部20は、圧縮器選択管理テーブルTB44をローカルメモリ30に記憶する。当該処理(S4052)の圧縮器選択管理テーブルTB44は、圧縮器選択管理テーブルTB43の情報に加えてさらに、残り空き回路の情報が管理されるようになっている。残り空き回路の情報を特定し、圧縮器選択管理テーブルTB43に追加して圧縮器選択管理テーブルTB44とすればよい。
たとえば、リコンフィグ制御部20は、非圧縮ストリームを圧縮タイミングや伸長タイミングに入れる。そして、1ストリーム当たりの回路サイズを再計算し、空き回路領域に余裕がある場合は、その非圧縮ストリームを圧縮する。たとえば、画像処理3のパイプラインステージについて着目したとき、圧縮閾値THをクリアしている非圧縮ストリームであるストリーム2-2を圧縮タイミングに追加する。次に、そのパイプラインステージ(画像処理3)の「空き回路サイズ」(=300)と「圧縮閾値THをクリアする圧縮/伸長器」(=圧縮CDあるいは圧縮D)に基づき、この時点での残りの空き回路サイズを計算する。この例では、圧縮CDを入れたとき、圧縮器Cmや伸長器Exの性能表TB42からその回路サイズは“80+100=180”であるので、残りの空き回路サイズは“300−180=120”となる。リコンフィグ制御部20は、この残りの空き回路サイズ内に、非圧縮ストリームであるストリーム2-2用の圧縮器Cmを挿入可能か否かを判断する。この例であれば、圧縮Eを除く圧縮ABCDが挿入可能となる。また、最終的には、圧縮閾値THをクリアするものの中で最低圧縮なものを選択する(S4032)ので、ここでは圧縮Aが選択される。
<圧縮ストリームの高圧縮化:第4実施形態>
図48は、圧縮ストリームに対する高圧縮化のスケジューリング(S4062)の詳細を説明する図である。
図48は、圧縮ストリームに対する高圧縮化のスケジューリング(S4062)の詳細を説明する図である。
リコンフィグ制御部20は、圧縮器選択管理テーブルTB45をローカルメモリ30に記憶する。当該処理(S4062)の圧縮器選択管理テーブルTB45は、表形式(データ項目)としては圧縮器選択管理テーブルTB44と同じであり、圧縮ストリームについて、さらに圧縮率の良好な圧縮処理を行なう場合は、その情報に書き換える点が異なるだけである。
たとえば、リコンフィグ制御部20は、非圧縮ストリーム(圧縮されていないストリーム)に対して圧縮処理を適用した後、1ストリーム当たりの回路サイズを再計算する。そして、空き回路領域に余裕がある場合は、より性能のよい圧縮器Cmや伸長器Exに置き換えて挿入する。前例に則して説明すると、画像処理3のステージにおいて、ストリーム2-2用の圧縮器Cmとして圧縮A(回路サイズ=50)を設定したときの残りの回路サイズを求める。本例の場合、“120−50=70”となる。これによって、空き回路の有無や程度が分るので、次にリコンフィグ制御部20は、空き回路領域に余裕がある場合は、圧縮ストリームで使用している圧縮器Cmをより高圧縮なもの(圧縮率の小さな圧縮性能の高いもの)に変更する。この際には、低圧縮なもの(圧縮率の大きな圧縮性能の低いもの)から適用するようにする。前例の場合、3つのストリーム1-1,3-2,2-2の内、最も低圧縮なものが設定されているのはストリーム2-2であるので、ストリーム2-2用の圧縮器Cmとして設定した圧縮A(圧縮率=6/10、回路サイズ=50)を、たとえば圧縮D(圧縮率=3/10、回路サイズ=100)に変更する。圧縮Dへの変更を選択した理由は、より高圧縮な圧縮に変更することで使用メモリ量を減らすためである。
なお、図47において、画像処理3のステージで、ストリーム3は、圧縮器Cmを挿入して圧縮閾値THを求めたとき圧縮閾値THをクリアできなかったものである。これについては、処理3のストリーム2-2の圧縮を圧縮Aから圧縮Dに変更することで使用メモリ量を減らして圧縮閾値THの条件が緩和されたため、図48に示すように、圧縮閾値THはクリアされている。
<比較例との対比:第4実施形態>
図49は、第4実施形態の仕組みと比較例との差を説明する図である。第2実施形態の第4比較例でも説明したが、特開2004−274776号公報に記載の仕組みの場合、圧縮には、処理速度の速い順で(圧縮性能の低い順で)、Mモード(ランレングス、高速、低圧縮)、LZWモード(辞書式、中速、中圧縮)、有損失モード(非可逆、高圧縮)の3つのモードが存在する。そして、メモリが不足している場合、実際に圧縮を行なって、メモリに入るかを確かめるため、Mモード→LZWモード→有損失モードの3つの圧縮が順に使用され、最大3回の圧縮を行なうことになり、その分のタイムロスが避けられない。これに対して、第4実施形態の仕組みでは、DRP10における画像処理リコンフィグ部12の空き領域を利用し、その中で挿入可能な圧縮器Cmや伸長器Exを選択して圧縮や伸長を行なうため、タイムロスが殆ど発生しない。
図49は、第4実施形態の仕組みと比較例との差を説明する図である。第2実施形態の第4比較例でも説明したが、特開2004−274776号公報に記載の仕組みの場合、圧縮には、処理速度の速い順で(圧縮性能の低い順で)、Mモード(ランレングス、高速、低圧縮)、LZWモード(辞書式、中速、中圧縮)、有損失モード(非可逆、高圧縮)の3つのモードが存在する。そして、メモリが不足している場合、実際に圧縮を行なって、メモリに入るかを確かめるため、Mモード→LZWモード→有損失モードの3つの圧縮が順に使用され、最大3回の圧縮を行なうことになり、その分のタイムロスが避けられない。これに対して、第4実施形態の仕組みでは、DRP10における画像処理リコンフィグ部12の空き領域を利用し、その中で挿入可能な圧縮器Cmや伸長器Exを選択して圧縮や伸長を行なうため、タイムロスが殆ど発生しない。
また、第2実施形態の第5比較例でも説明したが、特開2003−244446号公報に記載の仕組みの場合、メモリ容量を削減するため、画像データをJpeg圧縮し、所定のデータ量になるまで、Qテーブルを(または量子化テーブルのビットシフトで)して、圧縮を繰り返すもので、圧縮処理と他の処理を並行に行なうことができないため、時間のロスが発生する。これに対して、第4実施形態の仕組みは、ハードウェアリソースは増加しないし、画像処理と並行に圧縮処理や伸長処理がなされるので圧縮処理や伸長処理のためのタイムロスが殆ど発生しない。
たとえば、各ストリームサイズを1ユニットと仮定して、第4実施形態を適用していない前述の図44の場合(比較例)と、第4実施形態を適用した図48の場合で比較する。また、図44および図48において、使用メモリが最も多い画像処理3に注目する。
第4実施形態を適用していない場合(図44)、使用メモリ量(ストリーム使用量合計MSUM)は5ユニットになる。一方、第4実施形態を適用すると、使用メモリ量(ストリーム使用量合計MSUM)は、3.6=1+1+(1*4/10)+(1*5/10)+(1*4/10)+(1*3/10)となる。これから分るように、本事例では、ハードウェアリソースを増やさず、処理速度面での性能低下も殆ど発生せずに、使用メモリサイズが40%削減される。
<<第5実施形態>>
次に、データ処理装置1の第5実施形態について説明する。なお、第5実施形態においては、説明文では「伸長」と記す。図面中で、「伸長」を「伸張」と記すことがあるが、これらは同義である。また、図面中で、圧縮器Cmと伸長器Exを纏めて「圧縮/伸長器」と記すことがある。
次に、データ処理装置1の第5実施形態について説明する。なお、第5実施形態においては、説明文では「伸長」と記す。図面中で、「伸長」を「伸張」と記すことがあるが、これらは同義である。また、図面中で、圧縮器Cmと伸長器Exを纏めて「圧縮/伸長器」と記すことがある。
図50は、第5実施形態のデータ処理装置1の仕組みを説明する図である。第1実施形態などでも述べたが、入力ストリームによって圧縮率は左右されるため、平均圧縮率通りに圧縮されるとは限らず、予測よりデータ量が増加した場合、ホスト部5側へのデータ転送であるフォールバック(第1実施形態の二次フォールバック処理に相当)の発生率が上昇する。
その対策として、第5実施形態では、予測よりデータ量が上回ったストリームを一旦伸長してRAWデータに戻し、再圧縮を行なうリトライ圧縮を適用する。このとき、新たにパイプラインステージ(リコンフィグステージ)を設ける。つまり、ローカルメモリ30のメモリ使用量が一定以上になった場合、動的に新たにパイプラインステージを設け、パイプラインステージにて圧縮処理を単独で行なって、ホスト部5側へのデータ転送であるフォールバックの発生を最小限に抑えるようにする。
具体的には、図50(1)に示すように、予測が外れてストリームサイズが大きくなった場合には、図50(2)に示すように、圧縮器Cmや伸長器Exのリトライファンクションを挿入する。新たにステージを設けて、圧縮ストリームを伸長し、再圧縮する。再圧縮時には、スタティック・スケジューリングで適用する平均圧縮率よりも高圧縮を適用するのは言うまでもない。
<リトライ圧縮の基本:第5実施形態>
図51は、第5実施形態のデータ処理装置1におけるリトライ圧縮の基本的な処理手順(メインフロー)を説明するフローチャートである。因みに、当該リトライ圧縮処理は、第1実施形態における一次フォールバック処理の処理ステップ(S1040〜S1042)と比較対象となる処理である。
図51は、第5実施形態のデータ処理装置1におけるリトライ圧縮の基本的な処理手順(メインフロー)を説明するフローチャートである。因みに、当該リトライ圧縮処理は、第1実施形態における一次フォールバック処理の処理ステップ(S1040〜S1042)と比較対象となる処理である。
リトライ圧縮処理は、データ処理実行過程(ストリーム圧縮後)に行なうもので、実際の圧縮率が平均圧縮率よりも悪いため、メモリ容量オーバーとなる(あるいはその可能性がある)と、圧縮閾値TH未満のストリームについて、メモリ容量を可能な限り削減するためにより圧縮率が小さくなるように可逆圧縮する。具体的には、メモリ使用量(つまりストリーム使用量合計MSUM)が使用許容値(たとえばメモリサイズ・リミットやメモリサイズ)に対してX%以上になると(S5010-Y)、リトライ圧縮の適用に入る。
リトライ圧縮の適用に当たっては、圧縮ストリームの伸長と再圧縮を実行する(S5012)。この際には、新たにパイプラインステージを設けて、伸長器Exと圧縮器Cmを用意する。前述のように、再圧縮時には、スタティック・スケジューリングで適用する平均圧縮率よりも高圧縮の圧縮器Cmを採用する。
また、スタティック・スケジューリングで設定していた圧縮器Cmをより高圧縮のものに変更するので、それに応じて、伸長器Exの設定も変更することが必要になる(S5020)。その処理の具体例は後述するが、このため、リコンフィグ制御部20は、「伸長のタイミングで伸長器Exの変更は可能か?」を判断する(S5022)。ノーであれば、リコンフィグ制御部20は、再圧縮ストリームの伸長処理用として、伸長タイミングに合わせて新たにステージを設けて再圧縮に合わせた伸長器Exを用意する(S5022-N,S5024)。一方、イエスであれば、再圧縮ストリームの伸長処理用として、再圧縮に合わせた伸長器Exに変更する(S5022-Y,S5026)。
<リトライ圧縮の判断基準:第5実施形態>
図52は、第5実施形態のデータ処理装置1におけるリトライ圧縮適用の判断基準(閾値:スレッシュ)を説明する図である。たとえば、図52(1)に示すように、リトライ圧縮のスレッシュを95%(=X)とする場合、マージンは10%(={100−X}*2)として圧縮閾値THを計算する。
図52は、第5実施形態のデータ処理装置1におけるリトライ圧縮適用の判断基準(閾値:スレッシュ)を説明する図である。たとえば、図52(1)に示すように、リトライ圧縮のスレッシュを95%(=X)とする場合、マージンは10%(={100−X}*2)として圧縮閾値THを計算する。
詳細には、リトライ圧縮有無の判断基準(画像処理の段階でオーバーする場合)として、圧縮閾値TH=(メモリ空間−現画像処理中の入力ストリームサイズ合計)÷(蓄積ストリーム数+出力ストリーム数)とする。入力ストリームは圧縮できないので、許容メモリサイズから入力ストリームをマイナスする。そして、画像処理ストリームがメモリ容量オーバーしない場合は、蓄積ストリーム対応でスケジューリングする。実際にメモリ容量オーバーが発生すると、性能低下が大きいため、マージンを設けて、オーバーする直前までローカルメモリ30を使用する場合に、リトライ圧縮を行なうようにする趣旨である。
<圧縮データサイズとメモリ使用率:第5実施形態>
図53は、第5実施形態のデータ処理装置1における圧縮データサイズとメモリ使用率の取得処理を説明する図である。ここでは、メモリ使用率が95%を超えるとリトライ圧縮対象にする例で説明する。
図53は、第5実施形態のデータ処理装置1における圧縮データサイズとメモリ使用率の取得処理を説明する図である。ここでは、メモリ使用率が95%を超えるとリトライ圧縮対象にする例で説明する。
当該処理に当たっては、リコンフィグ制御部20は、圧縮器選択管理テーブルTB50をローカルメモリ30に記憶する。当該処理の圧縮器選択管理テーブルTB50は、パイプラインステージ(リコンフィグ)順に、圧縮ストリーム、圧縮の種類、圧縮による予測ストリームサイズ、実際の圧縮サイズ、メモリ使用率の情報が管理されるようになっている。
たとえば、図53に示すように、画像処理3のステージで、ストリーム2-2に対する圧縮Cでの圧縮処理時に、圧縮サイズが予測ストリームサイズ(=0.4)にはならず0.7となり、メモリ使用率が97%で、リトライ圧縮対象となっている。このストリーム2-2は、予測ストリームサイズからオーバーする分(0.7−0.4=0.3)がある。
<圧縮データサイズとメモリ使用率:第5実施形態>
図54は、第5実施形態のデータ処理装置1におけるリトライ圧縮の挿入処理を説明する図である。
図54は、第5実施形態のデータ処理装置1におけるリトライ圧縮の挿入処理を説明する図である。
当該処理に当たっては、リコンフィグ制御部20は、圧縮器選択管理テーブルTB51をローカルメモリ30に記憶する。当該処理の圧縮器選択管理テーブルTB51は、表形式(データ項目)としては圧縮器選択管理テーブルTB50と同じであり、実際の圧縮サイズが予測ストリームサイズからオーバーしリトライ圧縮のスレッシュを超えるために、そのストリームについてリトライ圧縮が適用される情報を追記する点が異なるだけである。
たとえば、図53に示した前例であれば、ストリーム2-2について圧縮Cに対応した伸長Cを適用して元のRAWデータに一旦戻し、圧縮器Cmや伸長器Exの性能表TB42を参照して、圧縮Cよりも高圧縮のもの、たとえば圧縮E(圧縮率2/10)を設定する。こうすることで、圧縮率に相関関係があるとしたら、圧縮Eを適用した実際の圧縮サイズxは、“4/10:0.7=2/10:x”であるから、x=0.35となり、当初の予測ストリームサイズ=0.4以下を満たすので、メモリ容量オーバーが回避される。
<伸長器の再設定:第5実施形態>
図55は、第5実施形態のデータ処理装置1におけるリトライ圧縮の挿入処理に伴う伸長器Exの再設定処理(S5020)の詳細を説明する図である。
図55は、第5実施形態のデータ処理装置1におけるリトライ圧縮の挿入処理に伴う伸長器Exの再設定処理(S5020)の詳細を説明する図である。
リトライ圧縮を行なった場合、図示のように、スタティック・スケジューリングで設定していた圧縮器Cmをより高圧縮のものに変更するので、それに応じて、伸長器Exの設定も変更することが必要になる。このため、リコンフィグ制御部20は、「伸長のタイミングで伸長器Exの変更は可能か?」を判断する(S5022)のであるが、この際には、具体的には、パイプラインステージの追加をせずに、「リトライ圧縮したデータの変更する伸長器Exが現状の伸長器Exが設定されているパイプラインステージ内に入るか?」を判断する(S5032)。
入らなければ、リコンフィグ制御部20は、再圧縮ストリームの伸長処理用として、伸長のために新たにステージを設けて再圧縮に合わせた伸長器Exを用意する(S5032-N,S5034)。この場合、伸長用に新たにステージが追加されるので、処理速度面において、性能低下が発生する。一方、パイプラインステージの追加をせずに、再圧縮ストリームの伸長処理用の伸長器Exが入る場合には、リコンフィグ制御部20は、そのパイプラインステージ内で、再圧縮に合わせた伸長器Exに変更する(S5032-Y,S5036)。この場合、伸長用に新たにステージが追加されることはないので、処理速度面において、性能低下が発生することはない。
<第6実施形態の比較例>
図56〜図56Bは、第6実施形態のデータ処理装置1に対する比較例を説明する図である。ここで、図56は、パイプラインステージのスケジューリングの側面から示した概略図であり、図56Aは、パイプラインステージのスケジューリングの側面から示した詳細図であり、図56Bは、あるパイプラインステージにおけるメモリサイズの側面から示した図である。
図56〜図56Bは、第6実施形態のデータ処理装置1に対する比較例を説明する図である。ここで、図56は、パイプラインステージのスケジューリングの側面から示した概略図であり、図56Aは、パイプラインステージのスケジューリングの側面から示した詳細図であり、図56Bは、あるパイプラインステージにおけるメモリサイズの側面から示した図である。
第1実施形態においても述べたが、DRP10などの「内部処理構成をプログラマブル可能なデバイス」を使用する場合、DRP10におけるコストにおいて、ローカルメモリ30の占める割合が大きくなる(たとえば全体の50%以上となる)。そのため、本実施形態(第6実施形態に限らない)のデータ処理装置1においては、システムのメモリコストを低減するべく、プログラマブル・デバイス(FPGAやDRP:本例ではDRP10)の画像処理構成を制御するスケジューラとしてリコンフィグ制御部20を導入して、性能の低下を抑制しながらメモリ使用量を削減する様々な仕組みを採っている(前述の第1〜第4実施形態のように)。
たとえば、図56に示すように、複数のコンフィグレーションを切り替える比較例の画像処理システムでは、その入出力の各ストリームを全て保持しなくてはならない。さらに蓄積型ストリームの場合は、Stream1のようにコンフィグレーションを跨って、処理に必要なストリームを保持しておかなくてはならない。このため、たとえバンディング処理(バンド処理)を行なっても、ローカルメモリ30のメモリ容量は小さくならない。各バンドのサイズを小さくし過ぎても逆にオーバーラップ(Overlap )が大きくなり、メモリ容量は減らない。処理に破綻を来たさないようにするには、全ストリームが、RAW(生データ)の状態で格納できるだけのメモリ空間を持たなければならない。あるいは、メモリ容量オーバーとなったらホスト部5側のメインメモリ70へデータ転送すること(第1実施形態で説明した二次フォールバック処理と同様のデータ転送)が考えられる。
これらのことは、「内部処理構成をプログラマブル可能なデバイス」を複数使用するマルチチップ(Multi-Chip)構成とする場合でも同様である。全ストリームが、RAWデータの状態で格納できるだけのメモリ空間を「内部処理構成をプログラマブル可能なデバイス」は持つ。あるいは、メモリ容量オーバーとなったらホスト部5側のメインメモリ70へデータ転送する。
図56Aは、マルチチップ構成を採用した比較例におけるパイプラインステージのスケジューリングを説明する図である。この比較例では、3個のDRP10(Reconfig-1,Reconfig-2,Reconfig-3)と、DRP10ごとに設けられたDDR仕様のローカルメモリ30を備えている。各DRP10は、リコンフィグ制御部20(たとえばScheduler1,Scheduler2,Scheduler3)を有しており、第1〜第4実施形態の仕組みを適用して、自身が管理するローカルメモリ30のメモリ容量をオーバーしないようにスケジューリングすることになる。この際には、第1実施形態で説明したように、圧縮・伸長を選択的に配置するために、スタティック・スケジューリングとダイナミック・スケジューリングを組み合わせる。基本的な検索順序は、スタティック・スケジューリングに基づくスタティックルールから決め、その後に、ダイナミック・スケジューリングに基づくダイナミックルールからデータサイズの対処を行なう。
図56Bには、あるパイプラインステージにおけるメモリサイズの例が示されている。ここでは、各Funcが3個のDRP10の何れに配置されるかは不問としている。各ファンクション(Func)に入出力されるストリームについては、そのデータ量がユニット単位で示されている。パイプラインステージの記述手法は、第1実施形態と同様であり、上側において左から右側に非蓄積型ストリームが入出力されるように示し、その下側に、蓄積型ストリームが入出力されるように示している。さらに、その下側には、蓄積型ストリームの分を除いた各ファンクションの入出力ストリームのみのストリームサイズ合計(つまり非蓄積型ストリームサイズ合計)と、蓄積型ストリームサイズを考慮したストリームサイズ合計(つまりストリーム使用量合計MSUM)を示している。
図示した例では、Func4とFunc5の部分が、最大メモリサイズ部(ストリーム使用量合計MSUMが最大の部分)となっている。この最大メモリサイズ部は、蓄積型ストリームサイズが大きく寄与するもので、ストリーム使用量合計MSUMにとっては、蓄積型ストリームサイズが問題となる。
<<第6実施形態>>
次に、データ処理装置1の第6実施形態について説明する。なお、第6実施形態においては、説明文では「伸長」と記す。図面中で、「伸長」を「伸張」と記すことがあるが、これらは同義である。
次に、データ処理装置1の第6実施形態について説明する。なお、第6実施形態においては、説明文では「伸長」と記す。図面中で、「伸長」を「伸張」と記すことがあるが、これらは同義である。
図57および図57Aは、第6実施形態のデータ処理装置1の仕組みを説明する図である。ここで、図57は、ストリーム使用量合計MSUMと各ローカルメモリ30のメモリ容量の側面から第6実施形態の仕組みを示す図である。図57Aは、第6実施形態のデータ処理装置1のシステム構成の側面から第6実施形態の仕組みを示す図である。
図56Bから理解されるように、あるファンクションにおけるストリーム使用量合計MSUMの削減にとっては、蓄積型ストリームサイズを低減することが肝要となる。第6実施形態の仕組みは、この点に着目したもので、マルチチップ構成を採る場合に、蓄積型ストリームの格納場所として、各DRP10が管理するローカルメモリ30を共有する仕組みを採る。このため、各アクセラレータ部5のリコンフィグ制御部20は、各ローカルメモリ30の空きエリアを、相互に利用するように、協調して制御(スケジューリング)を行なう。各リコンフィグ制御部20が協調して各「内部処理構成をプログラマブル可能なデバイス」のスケジューラ間を通信することで、ローカルメモリ30を共有化するのである。具体的には、各DRP10のスケジューラ機能を持つリコンフィグ制御部20が、自分が管理するローカルメモリ30の容量サイズを超えるストリームになると、相互のリコンフィグ制御部20(スケジューラ)をアクセスして、他のDRP10が管理するローカルメモリ30の空いている領域を使用(代用)する。
たとえば、図57Aにおいて、各DRP10のリコンフィグ制御部20は、自身が管理するローカルメモリ30の使用率を監視する。その情報は、たとえばストリーム管理テーブルTB60(使用率テーブル)に保存する。そして、たとえば、第1DRP10(Reconfig-1)にて、あるストリームの処理時にメモリ容量がオーバーする(あるいはオーバーしないがその危険性がある)ようになると、そのストリームを、空いている別の(たとえば、第2DRP10(Reconfig-2)のリコンフィグ制御部20が管理するローカルメモリ30ヘ格納する。図57および図57Aでは、6ユニットのStream13をDRP10のローカルメモリ30へ格納する例で示している。このDRP間のデータ転送時にストリームを圧縮するか否かは、リコンフィグ制御部20(スケジューラ)が、圧縮器Cmを入れられるファンクションを見つけて行なう。見つからなければRAWデータのままデータ転送を行なう。
このような仕組みとすることで、マルチチップ構成のデータ処理装置1において、各メモリ領域を最小限にし、ホスト部転送にすることがなく、転送のオーバーヘッド(Over Head )を少なくすることで、メモリコストの低減と処理時間の高速化を図る。たとえば、マルチチップ構成時に、1つのDRP10が管理するローカルメモリ30のメモリ容量を最小限にする。
なお、自身が管理するローカルメモリ30ではなく、他のメモリの空き領域を利用するという点では、メモリ容量オーバーとなったらホスト部5側のメインメモリ70へデータ転送すること(第1実施形態で説明した二次フォールバック処理と同様のデータ転送)と似通っている。しかしながら、ホスト部5側へのデータ転送は、同種のDRP10およびローカルメモリ30との間のデータ転送に比べると低速になるので、転送速度の側面では、第6実施形態の仕組みの方が効果的である。
<スケジューリング:第6実施形態>
図58は、第6実施形態におけるスケジューリングの方法を説明する図である。第6実施形態においても、各DRP10のリコンフィグ制御部20が行なうスケジューリングの考え方は、基本的には、第1実施形態のリコンフィグ制御部20が採っている手法と同じ手法を先ず適用する。その上で、第6実施形態に特有の仕組みを加える。
図58は、第6実施形態におけるスケジューリングの方法を説明する図である。第6実施形態においても、各DRP10のリコンフィグ制御部20が行なうスケジューリングの考え方は、基本的には、第1実施形態のリコンフィグ制御部20が採っている手法と同じ手法を先ず適用する。その上で、第6実施形態に特有の仕組みを加える。
たとえば、リコンフィグ制御部20は、スタティック・スケジューリングにより、パイプライン情報に基づいて圧縮対象ストリームピックアップと圧縮器Cmや伸長器Exの挿入を行なう(S5010)。さらに、画像処理システムにて画像処理を実際に実行する過程で、ダイナミック・スケジューリングにより、フォールバックを考慮した処理を行なう(S5020)。何れも、メモリサイズは制約条件として与えられる。この条件の中で、画像処理システムのパフォーマンス低下が最小限となるスケジューリングを行なう。
<処理手順1:第6実施形態>
図59は、第6実施形態のデータ処理装置1に特有のローカルメモリ30間のストリーム格納の処理手順を説明するフローチャートである。
図59は、第6実施形態のデータ処理装置1に特有のローカルメモリ30間のストリーム格納の処理手順を説明するフローチャートである。
DRP10ごとに、各リコンフィグ制御部20は、メモリサイズオーバーの構成(Configuration )となると、自身が管理するローカルメモリ30のメモリ容量をオーバーしないように、圧縮・伸長対象のストリームを決定する(S6100)。次にリコンフィグ制御部20は、該当のDRP10(プロセッサ)内で圧縮器Cmや伸長器Ex(圧縮・伸長Config)の挿入箇所が検出できるか否かを判定する(S6110)。検出できれば、圧縮器Cmや伸長器Exの挿入を画像処理リコンフィグ部12に指示し、画像処理リコンフィグ部12にて圧縮器Cmや伸長器Exを挿入し、圧縮処理や伸長処理を実行する(S6110-Y,S6120)。一方、検出できなければ、他のDRP10(近接プロセッサ)のリコンフィグ制御部20にアクセス(kick)し(S6110-N,S6130)、その近接プロセッサのローカルメモリ30の空き空間にメモリサイズオーバーとなるストリームを格納可能かを確認する(S6140)。このとき、どの近接プロセッサを選択するかの順番の決定(他プロセッサ選択)は、後述する所定の手順に従う(S6132)。
格納可能であれば、リコンフィグ制御部20は、メモリサイズオーバーとなるストリームをその近接プロセッサに転送する(S6150)。データ転送を受けた側では、たとえば圧縮してローカルメモリ30に格納する。このデータ転送&メモリ格納の情報を管理するべく、双方のDRP10のリコンフィグ制御部20は(該プロセッサおよび近接プロセッサは)、各ストリーム管理テーブルTB60を更新(Update)する(S6152)。この後、他のDRP10のローカルメモリ30に格納しておいたストリームが必要になったときには(つまり伸長時には)、他方のDRP10のローカルメモリ30(近接プロセッサ側)から元のDRP10側(該プロセッサ側)へデータ転送する(S6154)。
一方、他のDRP10(近接プロセッサ)のローカルメモリ30の空き空間にメモリサイズオーバーとなるストリームを格納できないときには、さらに別のDRP10(たとえば2つ隣のプロセッサ)のローカルメモリ30の空き空間にメモリサイズオーバーとなるストリームを格納可能かを確認する(S6160)。格納可能であれば、ステップS6150〜S6154と同様の処理を行なう(S6160-Y,S6170)。
さらに、他のDRP10のローカルメモリ30の空き空間にメモリサイズオーバーとなるストリームを格納できないときには、さらに別のDRP10のローカルメモリ30の空き空間にメモリサイズオーバーとなるストリームを格納可能かを確認することを繰り返す。そして、最終的に、メモリサイズオーバーとなるストリームを格納できる他のDRP10側のローカルメモリ30が見つからないないときには、当該DRP10において二次フォールバック処理を行なう(S6160-N,S6180)。
<処理手順2:第6実施形態>
図60および図60Aは、第6実施形態のデータ処理装置1に特有の「他プロセッサ選択」(どの近接プロセッサを選択するか順番の決定:S6132)の処理手順を説明する図である。ここで、図60は、他プロセッサ選択手順の一例を示すフローチャートである。図60Aは、「他プロセッサ選択」の処理で使用されるストリーム管理テーブルTB60(Stream Management Table :使用率テーブルとも称する)の管理手法を説明する図である。
図60および図60Aは、第6実施形態のデータ処理装置1に特有の「他プロセッサ選択」(どの近接プロセッサを選択するか順番の決定:S6132)の処理手順を説明する図である。ここで、図60は、他プロセッサ選択手順の一例を示すフローチャートである。図60Aは、「他プロセッサ選択」の処理で使用されるストリーム管理テーブルTB60(Stream Management Table :使用率テーブルとも称する)の管理手法を説明する図である。
図60に示すように、リコンフィグ制御部20は先ず、スタティック・スケジューリングにおいて、各ローカルメモリ30のストリーム管理テーブルTB60(使用率テーブル)を参照して最も使用率の低いDRP10(プロセッサ)を選択する(S6134)。さらに、リコンフィグ制御部20は、ダイナミック・スケジューリングにおいて、実際に処理する過程でスケジューリングする中で各ローカルメモリ30のストリーム管理テーブルTB60(使用率テーブル)を参照して最も使用率の低いDRP10を選択する(S6136)。
ここで、ストリーム管理テーブルTB60を管理するに当たっては、DRP10ごとに、リコンフィグ制御部20にて、自身が管理するローカルメモリ30の使用率の情報のみを管理する仕組みを採り、お互いに、他方のローカルメモリ30の使用率の情報を交換し合う個別管理の仕組み(第1の使用率管理手法と称する)を採ってもよい。
あるいは、図60Aに示すように、複数のDRP10の内の何れかの1つのDRP10のリコンフィグ制御部20(Scheduler1)をマスターとして、そのマスターのリコンフィグ制御部20が、各ローカルメモリ30の使用率(つまり空きエリア)の情報を集約して管理する集中管理(一元管理)の仕組み(第2の使用率管理手法と称する)を採ってもよい。
たとえば、図60Aでは、第1画像処理リコンフィグ部12(Reconfig-1)および第1リコンフィグ制御部20(Scheduler1)を有する第1DRP10をマスターとして、第2リコンフィグ制御部20(Scheduler2)が管理する第2ローカルメモリ30でオーバーフローを引き起こす場合に、メモリ空間に余裕のある第3リコンフィグ制御部20(Scheduler3)が管理する第3ローカルメモリ30にオーバーフローするストリームを退避させて格納する例を示している。
この場合、先ず、第2画像処理リコンフィグ部12(Reconfig-2)の蓄積データ(第2ローカルメモリ30に格納されているデータ)がオーバーフローを引き起こすようになると、第2リコンフィグ制御部20(Scheduler2)はマスターである第1リコンフィグ制御部20(Scheduler1)にその情報を通知する(S960)。この通知を受けたマスターである第1リコンフィグ制御部20(Scheduler1)は、ストリーム管理テーブルTB60を参照し、何れのローカルメモリ30のメモリ空間が空いているかを判断する(S962)。この例では、第3リコンフィグ制御部20(Scheduler3)が管理する第3ローカルメモリ30のメモリ空間に余裕があると判断する。
マスターである第1リコンフィグ制御部20(Scheduler1)は、第2画像処理リコンフィグ部12(Reconfig-2)から第3DRP10側の第3ローカルメモリ30-2)からへのデータ転送指示を出す(S964)。この転送指示を受けた第2画像処理リコンフィグ部12(Reconfig-2)は、オーバーフローを引き起こすストリームを第3ローカルメモリ30に転送する(S966)。マスターである第1リコンフィグ制御部20(Scheduler1)は、この情報(たとえばどこのプロセッサに転送したか)を残すべく、ストリーム管理テーブルTB60をアップデートする(S968)。
以上説明したように、第6実施形態の仕組みによれば、マルチチップ構成のデータ処理装置1とする場合に、あるDRP10での画像処理リコンフィグ部12のデータ処理において、自身が属するDRP10のローカルメモリ30のメモリサイズをストリーム使用量合計MSUMが超えるようになると、相互のリコンフィグ制御部20(スケジューラ)をアクセスしてあるいはマスターのリコンフィグ制御部20にアクセスして、空いているローカルメモリ30を特定し、その空いているメモリ空間を使用するようにした。端的には、複数のDRP10(画像処理リコンフィグ部12)で、各ローカルメモリ30を共有化するようにした。
これにより、マルチチップ構成のデータ処理装置1において、コンフィグレーションを跨って、処理に必要なストリームを保持しておく必要のある場合でも、メモリ容量が削減される。何れかのローカルメモリ30でオーバーフローとなるケースでは、空き領域のある他のローカルメモリ30を利用するので、メモリ領域を低減しても、ホスト部5側へのデータ転送を行なわずに対処し得るようになる。ホスト部5側にデータ転送することがなく、転送のオーバーヘッドが少なくなり、メモリコストの低減、処理時間のロス低減に寄与する。
<ストリーム管理テーブル:第6実施形態>
図61は、ストリーム管理テーブルTB60の一例を示す図である。ストリーム管理テーブルTB60は、たとえば図61に示すようなもので、マスター側のDRP10が利用する第1ローカルメモリ30に格納される。
図61は、ストリーム管理テーブルTB60の一例を示す図である。ストリーム管理テーブルTB60は、たとえば図61に示すようなもので、マスター側のDRP10が利用する第1ローカルメモリ30に格納される。
図61に示すように、第6実施形態のストリーム管理テーブルTB60は、パイプラインステージ(リコンフィグ)順に、コンフィグステイタス(Config Status)、RAWデータ換算での入力ストリームサイズ(Input Stream Size) 、RAWデータ換算での出力ストリームサイズ(Output Stream Size)、RAWデータ換算での蓄積ストリームサイズ、圧縮ステイタス(Status)、圧縮後のサイズ、転送先プロセッサ番号、ストリーム使用量合計MSUM(In/Out total Stream Size)などの情報が管理されるようになっている。コンフィグステイタスは、演算器(PE)ごとに、使用演算器数と残りの使用可能演算器数(PE_able )があり、圧縮ステイタスは、圧縮なし(RAW)には1、圧縮あり(Comp)には2を、出力ストリームごとに付して管理する。
1…データ処理装置、10…DRP(内部処理構成をプログラマブル可能なデバイスの一例)、12…画像処理リコンフィグ部(再構成可能なデータ処理部の一例)、14…内部バス、16…メモリIF部、18…外部バスIF部、20…リコンフィグ制御部、202…割込み検知部、204…スケジューラ部、206…コマンド発行部、208…レイアウトロード部、240…リコンフィグ順判断部、242…ソフトウェアバジェット判断部、244…レイアウト判断部、246…ソフトウェアプロセスセット部、248…レイアウト選択部、3…アクセラレータ部、30…ローカルメモリ、5…ホスト部、50…コントローラメインCPU、70…メインメモリ、90…外部バス
Claims (24)
- 装置全体の動作を制御する中央制御部および前記中央制御部の管理の下でデータを記憶する主記憶部を具備したホスト部と、
データを処理する機能部であってデータ処理のステージごとに回路構成を動的に再構成可能なデータ処理部、前記データ処理部の回路構成を動的に制御する再構成制御部、および、前記データ処理部が取り扱うデータを記憶する副記憶部を具備したアクセラレータ部と、
を備え、
前記再構成制御部は、
再構成されたステージごとに、当該ステージで使用されるデータである非蓄積型のストリームや当該ステージにおいては使用されないが後のステージ用に前記副記憶部に保持すべきデータである蓄積型のストリームと、前記副記憶部の使用可能な容量に基づいて、前記副記憶部が所定の基準値よりも容量オーバーとならないように、圧縮すべきストリームを特定し、
この特定したストリームに関して、圧縮処理や当該圧縮処理に対応する伸長処理の適用の有無を制御する
ことを特徴とするデータ処理装置。 - 前記再構成制御部は、
前記データ処理部がデータ処理を実行する前に、前記圧縮すべきストリームを特定し、
この特定したストリームに関して、前記圧縮処理や前記伸長処理を実行する機能部を、当該ステージの前記データ処理部に挿入可能か否かを判定し、
挿入不可能であって、かつ、前記特定したストリームが前記非蓄積型のストリームであれば、当該非蓄積型のストリームに関して、圧縮せずに分割転送を行なうように前記データ処理部を制御する
ことを特徴とする請求項1に記載のデータ処理装置。 - 前記再構成制御部は、
前記データ処理部がデータ処理を実行する前に、前記圧縮すべきストリームを特定し、
この特定したストリームに関して、前記圧縮処理や前記伸長処理を実行する機能部を、前記データ処理部に挿入可能か否かを判定し、
挿入可能であれば、前記圧縮処理や前記伸長処理を実行する機能部を前記データ処理部に挿入するように制御する
ことを特徴とする請求項1に記載のデータ処理装置。 - 前記再構成制御部は、
前記圧縮処理がなされた前記非蓄積型のストリームを取り込んで前記データ処理部がデータ処理を実行する過程で、前記副記憶部が所定の基準値よりも容量オーバーとなるか否かを監視し、
容量オーバーとなると判断したときには、前記非蓄積型のストリームを前記ホスト部側へ転送するように制御する
ことを特徴とする請求項3に記載のデータ処理装置。 - 前記再構成制御部は、
前記データ処理部がデータ処理を実行する前に、前記圧縮すべきストリームを特定し、
この特定したストリームに関して、前記圧縮処理や前記伸長処理を実行する機能部を、当該ステージの前記データ処理部に挿入可能か否かを判定し、
挿入不可能であって、かつ、前記特定したストリームが前記蓄積型のストリームであれば、当該蓄積型のストリームに関して、圧縮処理や伸長処理を実行する機能部用のステージを新たに追加する
ことを特徴とする請求項3に記載のデータ処理装置。 - 前記再構成制御部は、
前記圧縮処理がなされた前記蓄積型のストリームを取り込んで前記データ処理部がデータ処理を実行する過程で、前記副記憶部が所定の基準値よりも容量オーバーとなるか否かを監視し、
容量オーバーとなると判断したときには、前記蓄積型のストリームに対して、より良好な圧縮率で再圧縮するように制御する
ことを特徴とする請求項3に記載のデータ処理装置。 - 前記再構成制御部は、前記再圧縮がなされた前記蓄積型のストリームを取り込んで前記データ処理部がデータ処理を実行する過程で、前記副記憶部が所定の基準値よりも容量オーバーとなるか否かを監視し、
容量オーバーとなると判断したときには、前記蓄積型のストリームを前記ホスト部側へ転送するように制御する
ことを特徴とする請求項6に記載のデータ処理装置。 - 前記再構成制御部は、
前記副記憶部が所定の基準値よりも容量オーバーとなるときには、前記圧縮処理や前記伸長処理とデータ処理の組合せで、前記容量オーバーとならないように、時分割で処理を実行するように制御する
ことを特徴とする請求項1に記載のデータ処理装置。 - 前記再構成制御部は、
複数の出力ストリームを圧縮する必要がある場合において、前記圧縮処理を実行する機能部を、当該ステージの前記データ処理部に挿入できない場合は、前記データ処理とその後の前記圧縮処理の組合せで、前記時分割で処理を実行するように制御する
ことを特徴とする請求項8に記載のデータ処理装置。 - 前記再構成制御部は、
圧縮済みの入力ストリームを伸長する必要がある場合において、当該入力ストリームを一括して前記伸長処理を実行すると前記副記憶部が所定の基準値よりも容量オーバーとなる場合は、前記伸長処理とその後の前記データ処理の組合せで、前記時分割で処理を実行するように制御する
ことを特徴とする請求項8に記載のデータ処理装置。 - 前記再構成制御部は、
前記圧縮処理や前記伸長処理をモジュール分割し、
前記データ処理部の空きエリアとの関係で許容される範囲で、前記モジュール分割した前記圧縮処理や前記伸長処理を選択して、当該処理を実行する機能部を前記データ処理部に挿入してハードウェア処理で対処するように制御するとともに、
前記データ処理部に挿入できなかったモジュールについては、前記圧縮処理や前記伸長処理をソフトウェア処理で対処するように制御する
ことを特徴とする請求項1に記載のデータ処理装置。 - 前記再構成制御部は、前記ハードウェア処理での対処が可能な範囲で、前記モジュール分割した前記圧縮処理や前記伸長処理の内、前記ソフトウェア処理が重たいものから前記ハードウェア処理を適用するように制御する
ことを特徴とする請求項11に記載のデータ処理装置。 - 前記再構成制御部は、
前記蓄積型のストリームに対して前記圧縮処理や前記伸長処理を適用する場合には、同一の前記蓄積型のストリームについて、モジュール分割による前記ハードウェア処理と前記ソフトウェア処理を別のステージで実行するように制御する
ことを特徴とする請求項11に記載のデータ処理装置。 - 前記再構成制御部は、
前記非蓄積型のストリームに対して前記圧縮処理や前記伸長処理を適用する場合には、同一の前記蓄積型のストリームについて、モジュール分割による前記ソフトウェア処理を実行中には、モジュール分割による前記ハードウェア処理を待機させる
ことを特徴とする請求項11に記載のデータ処理装置。 - 前記再構成制御部は、
圧縮処理や伸長処理が適用されるストリームが複数ある場合、ストリーム量、前記データ処理部の空きエリア、圧縮処理や伸長処理のタイミング、および、圧縮処理や伸長処理の性能に基づき、圧縮処理や伸長処理を適用するストリームを選択して、圧縮処理や伸長処理を実行する機能部を、同一ステージ中の前記データ処理部に挿入するように制御する
ことを特徴とする請求項1に記載のデータ処理装置。 - 前記再構成制御部は、回路規模や処理性能の異なる複数の前記機能部を前記データ処理部に挿入するように制御する
ことを特徴とする請求項15に記載のデータ処理装置。 - 前記再構成制御部は、選択したストリームに関して複数の前記機能部を前記データ処理部に挿入可能な場合、その中で圧縮性能の最も劣る機能部を前記データ処理部に挿入するように制御する
ことを特徴とする請求項15に記載のデータ処理装置。 - 前記再構成制御部は、圧縮処理を適用済みのストリームに関して、前記データ処理部に挿入可能な範囲で、前記圧縮処理を実行する機能部をより圧縮性能の高いものに変更するように制御する
ことを特徴とする請求項15に記載のデータ処理装置。 - 前記再構成制御部は、
前記圧縮処理がなされた前記ストリームを取り込んで前記データ処理部がデータ処理を実行する過程で、前記副記憶部の使用率を監視し、
前記使用率が一定以上になった場合には、前記ストリームに対してより良好な圧縮率で圧縮処理を実行するステージを新たに設けるように制御する
ことを特徴とする請求項1に記載のデータ処理装置。 - 前記再構成制御部は、
前記より良好な圧縮率での圧縮処理を実行するステージを新たに設けたことに合わせて、対応する伸長処理を実行する機能部を設定するように制御する
ことを特徴とする請求項19に記載のデータ処理装置。 - 前記再構成制御部は、前記より良好な圧縮率での圧縮処理が適用されるストリームについて現在設定されている伸長処理を実行する機能部が挿入されている前記データ処理部に挿入可能な範囲で、現在設定されている伸長処理を実行する機能部を、前記より良好な圧縮率での圧縮処理に対応する伸長処理を実行する機能部に変更するように制御する
ことを特徴とする請求項20に記載のデータ処理装置。 - 前記再構成制御部は、前記より良好な圧縮率での圧縮処理が適用されるストリームについて現在設定されている伸長処理を実行する機能部が挿入されている前記データ処理部について、現在設定されている伸長処理を実行する機能部を前記より良好な圧縮率での圧縮処理に対応する伸長処理を実行する機能部に変更できない場合は、前記より良好な圧縮率での圧縮処理に対応する伸長処理を実行する機能部用のステージを新たに設けるように制御する
ことを特徴とする請求項20に記載のデータ処理装置。 - 前記アクセラレータ部を複数備え、
各アクセラレータ部の前記再構成制御部は、各副記憶部の空きエリアを、相互に利用するように、協調して前記制御を行なう
ことを特徴とする請求項1に記載のデータ処理装置。 - 各アクセラレータ部の前記再構成制御部の内の何れか1つをマスターとし、そのマスターの再構成制御部が、各副記憶部の空きエリアの情報を集約して管理する
ことを特徴とする請求項23に記載のデータ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008160082A JP2010003035A (ja) | 2008-06-19 | 2008-06-19 | データ処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008160082A JP2010003035A (ja) | 2008-06-19 | 2008-06-19 | データ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010003035A true JP2010003035A (ja) | 2010-01-07 |
Family
ID=41584725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008160082A Pending JP2010003035A (ja) | 2008-06-19 | 2008-06-19 | データ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010003035A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011218781A (ja) * | 2010-03-23 | 2011-11-04 | Fuji Xerox Co Ltd | 画像処理装置、画像形成装置、及びプログラム |
JP2012236353A (ja) * | 2011-05-12 | 2012-12-06 | Fuji Xerox Co Ltd | 画像処理装置および画像処理プログラム |
US8373887B2 (en) | 2011-05-26 | 2013-02-12 | Fuji Xerox Co., Ltd. | Image processing apparatus including an image processing unit, a memory, a determination unit, a dividing unit, and non-transitory computer readable medium |
JP2013161447A (ja) * | 2012-02-08 | 2013-08-19 | Toshiba Corp | コントローラ、データ記憶装置及びプログラム |
US8542384B2 (en) | 2010-03-23 | 2013-09-24 | Fuji Xerox Co., Ltd. | Image processing apparatus, image forming apparatus, and computer readable medium storing program for shared image processing |
JP2015016587A (ja) * | 2013-07-09 | 2015-01-29 | 富士ゼロックス株式会社 | 画像処理装置及びプログラム |
JP2016066266A (ja) * | 2014-09-25 | 2016-04-28 | 株式会社東芝 | 連携システム、プログラム |
-
2008
- 2008-06-19 JP JP2008160082A patent/JP2010003035A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011218781A (ja) * | 2010-03-23 | 2011-11-04 | Fuji Xerox Co Ltd | 画像処理装置、画像形成装置、及びプログラム |
US8427660B2 (en) | 2010-03-23 | 2013-04-23 | Fuji Xerox Co., Ltd. | Image processing apparatus, image forming apparatus, and computer readable medium storing program |
US8542384B2 (en) | 2010-03-23 | 2013-09-24 | Fuji Xerox Co., Ltd. | Image processing apparatus, image forming apparatus, and computer readable medium storing program for shared image processing |
JP2012236353A (ja) * | 2011-05-12 | 2012-12-06 | Fuji Xerox Co Ltd | 画像処理装置および画像処理プログラム |
US8373887B2 (en) | 2011-05-26 | 2013-02-12 | Fuji Xerox Co., Ltd. | Image processing apparatus including an image processing unit, a memory, a determination unit, a dividing unit, and non-transitory computer readable medium |
JP2013161447A (ja) * | 2012-02-08 | 2013-08-19 | Toshiba Corp | コントローラ、データ記憶装置及びプログラム |
JP2015016587A (ja) * | 2013-07-09 | 2015-01-29 | 富士ゼロックス株式会社 | 画像処理装置及びプログラム |
JP2016066266A (ja) * | 2014-09-25 | 2016-04-28 | 株式会社東芝 | 連携システム、プログラム |
US10097626B2 (en) | 2014-09-25 | 2018-10-09 | Kabushiki Kaisha Toshiba | Cooperation system |
US10601904B2 (en) | 2014-09-25 | 2020-03-24 | Kabushiki Kaisha Toshiba | Cooperation system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010003035A (ja) | データ処理装置 | |
JP2022519855A (ja) | ビデオストリーム復号方法、装置、端末機器およびプログラム | |
US7800519B2 (en) | Method and apparatus for compressing and decompressing data | |
US8532196B2 (en) | Decoding device, recording medium, and decoding method for coded data | |
US8433147B2 (en) | Encoding apparatus and method, and decoding apparatus and method | |
CN101014124A (zh) | 用于减少上下文自适应二进制算术编码存储需求的系统和方法 | |
US20110202749A1 (en) | Instruction compressing apparatus and method | |
US11144464B2 (en) | Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor | |
US20100079313A1 (en) | Method and apparatus for compressing and decompressing data | |
JP4798582B2 (ja) | 画像処理装置、画像処理方法およびプログラム | |
CN111147926A (zh) | 一种数据转码方法及装置 | |
US8554003B2 (en) | Image data processing apparatus, image data processing method, and computer readable medium | |
JP4569614B2 (ja) | データ変換システム | |
CA2909216C (en) | Information processing apparatus, method of controlling the same, program and storage medium | |
KR101539260B1 (ko) | 선택적 영상정보 무손실 압축, 복원 장치 및 방법 | |
US8928926B2 (en) | Image forming apparatus that buffers data in a storage device and reduces delays in process | |
JP4625929B2 (ja) | ダイレクトメモリアクセスコントローラ | |
JP6289971B2 (ja) | データ記憶制御装置およびデータ記憶制御方法 | |
JP5097788B2 (ja) | データ処理装置およびデータ処理プログラム | |
JP2010073210A (ja) | 画像処理装置 | |
JP6310747B2 (ja) | データ記憶制御装置およびデータ記憶制御方法 | |
US9538174B2 (en) | Method and apparatus for inverse scan of transform coefficients in HEVC | |
US20130067207A1 (en) | Apparatus and method for compressing instructions and a computer-readable storage media therefor | |
JP2010287114A (ja) | データ格納方法及びデータ格納装置 | |
JP5222803B2 (ja) | 画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20091009 |