トップ :: H 電気 :: H04 電気通信技術




【発明の名称】 JPEG画像処理回路
【発明者】 【氏名】若狭 慎司

【要約】 【課題】JPEG処理を高速に行えるJPEG画像処理回路の実現。

【構成】画像メモリ2に接続される共有バス11と、共有バスに接続され、共有バスを介して画像メモリから得た処理前データをJPEGフォーマットで処理し、処理済データを前記共有バスを介して前記画像メモリに出力するJPEG処理部14と、を備えるJPEG画像処理回路であって、JPEG処理部14は、複数のJPEG処理コア27A-27Dと、複数のJPEG処理コアに対応して設けられた複数のデータ格納領域24A-24Dと、を備え、各JPEG処理コアで処理を行う時には、処理前データの各JPEG処理コアでの処理に必要な部分を、各JPEG処理コアに対応する各データ格納領域に格納する。
【特許請求の範囲】
【請求項1】
画像メモリに接続される共有バスと、
前記共有バスに接続され、前記共有バスを介して前記画像メモリから得た処理前データをJPEGフォーマットで処理し、処理済データを前記共有バスを介して前記画像メモリに出力するJPEG処理部と、を備えるJPEG画像処理回路であって、
前記JPEG処理部は、
複数のJPEG処理コアと、
前記複数のJPEG処理コアに対応して設けられた複数のデータ格納領域と、を備え、
各JPEG処理コアで処理を行う時には、前記処理前データの各JPEG処理コアでの処理に必要な部分を、各JPEG処理コアに対応する各データ格納領域に格納することを特徴とするJPEG画像処理回路。
【請求項2】
各JPEG処理コアでの処理済データは、対応する前記データ格納領域に格納した後、前記共有バスを介して前記画像メモリに出力される請求項1に記載のJPEG画像処理回路。
【請求項3】
各データ格納領域に格納する前記処理前データ量は、動的に可変である請求項1に記載のJPEG画像処理回路。
【請求項4】
各データ格納領域に格納する前記処理前データ量は、JPEG処理の最小符号化ユニット(MCU)である請求項1に記載のJPEG画像処理回路。
【請求項5】
前記JPEG処理部は、制御部を備え、
前記制御部は、前記複数のJPEG処理コアのうち動作状態にある個数を動的に変更する請求項1に記載のJPEG画像処理回路。
【請求項6】
前記JPEG処理部は、各JPEG処理コアの動作クロック周波数を動作に応じて設定する動作クロック制御部を備える請求項1に記載のJPEG画像処理回路。
【請求項7】
前記動作クロック制御部は、各JPEG処理コアの動作クロック周波数を動的に変化させる請求項6に記載のJPEG画像処理回路。
【請求項8】
前記JPEG処理部は、制御部を備え、
前記制御部は、前記複数のJPEG処理コアの障害発生を自動的に検出して発生した障害情報を通知する請求項1に記載のJPEG画像処理回路。
【請求項9】
前記制御部は、前記障害情報に基づいて、障害の発生したJPEG処理コアでの処理を他のJPEG処理コアに割当てて、処理を継続させる請求項8に記載のJPEG画像処理回路。
【請求項10】
前記制御部は、各JPEG処理コアでの処理時間をモニタして、処理時間が基準時間を超えるタイムアウトを判定することにより障害の発生を検出し、
前記タイムアウト判定を、前記JPEG処理コアの絶対時間タイマによる処理開始からの経過時間を検出し、前記経過時間を前記基準時間と比較することにより行う請求項9に記載のJPEG画像処理回路。
【発明の詳細な説明】【技術分野】
【0001】
本発明は、静止画像の標準フォーマットであるJPEGフォーマットをエンコード及び/又はデコード(JPEGエンコード/デコード:JPEG Encoding/Decoding)処理するJPEG画像処理回路に関し、特に複数のJPEG処理コアを有し、処理を並列に行うJPEG画像処理回路に関する。
【背景技術】
【0002】
デジタルカメラは、JPEGフォーマットを扱うシステム(JPEG画像処理回路)の代表的な例である。以下、デジタルカメラを例として説明するが、本発明はこれに限定されず、JPEGフォーマットを扱うJPEG画像処理回路であれば適用可能である。デジタルカメラは、JPEG変換処理の他に、実際の画像データを撮影し、そのデータを共有メモリやストレージデバイスに格納する。また動画や静止画をシステムの表示装置(一般的にはLCDデバイス)に表示したり、外部出力端子にデータを出力したり、逆に外部入力端子よりデータが入力される。
【0003】
これらの画像を扱う処理に関しては、各種規格に沿ったフォーマットで入出力が行われるため、リアルタイム性が要求される。そのため、それらのリアルタイム性が要求される処理とは独立して処理されるJPEGエンコード/デコード処理は、その性能自体がシステムの性能の一因ではあるもののリアルタイム性を要求される部分が少なくなっている。そのため、コンシューマー向けなどコスト優先の市場に投入される製品では、データを格納する共有メモリやストレージデバイス及び複数の機能モジュールが1つの共有バスで接続されている構成をとることが多く、複数の機能モジュールに共有バスの占有権を時分割で割当てて、占有件を割当てられた機能モジュールが共有メモリやストレージデバイスにアクセスする構成をとる。
【0004】
【特許文献1】特開平10−304356号公報
【特許文献2】特開2001−005552
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、上記の共有バスの帯域はすべてのモジュールが同時動作を行っても十分足りる構成とはなっておらず、最低限の帯域しか用意されないのが実情である。
【0006】
さらに、上記共有バスでは、リアルタイム性の要求が低いJPEG処理部に関しては優先度が低く抑えられており、JPEGエンコード/デコード処理の実際の実行時間が、同時に動作している機能モジュールの個数などにより左右される傾向にあった。
【0007】
またこれらのシステムは性能だけではなく低消費電力化も大きな課題であり、使用条件/システム仕様によって性能と消費電力の比重が変わることが頻繁に起こり得る。
【0008】
性能アップの1つの解決策が動作周波数のアップであることは、周知の事実であるが、動作周波数アップはそのアップ率によって指数的に消費電力の増大を招き、また現在の最先端の微細加工技術を適用したLSIでは、それらの熱および集積度により軽微な障害が発生することも考えられ、組み込みシステムではシステム上問題とならない範囲での自動復旧処理が要求されている。
【0009】
本発明の第1の目的は、JPEG処理を高速に行えるJPEG画像処理回路の実現である。
【0010】
本発明の第2の目的は、JPEG処理回路の低消費電力化である。
【0011】
本発明の第3の目的は、軽微な障害については自動復旧可能な画像処理回路の実現である。
【課題を解決するための手段】
【0012】
上記第1の目的を実現するため、本発明のJPEG処理回路は、JPEG処理部を複数のJPEG処理コアと、複数のJPEG処理コアに対応して設けられた複数のデータ格納領域と、を備えるように構成し、各JPEG処理コアで並列で処理を行う時に、各JPEG処理コアでの処理に必要な処理前のデータを、画像メモリに接続される共有バスを介して各JPEG処理コアに対応する各データ格納領域に格納する。
【0013】
本発明のJPEG処理回路では、複数のJPEG処理コアでJPEG処理を並列に行う場合に、処理に必要な処理前のデータを、各JPEG処理コアに対応して設けられたデータ格納領域に格納するため、共有バスを介して画像メモリにアクセスする必要がないので、バス占有の優先権が低くても高速にJPEG処理コアが行える。これによりJPEG処理速度を向上できる。
【0014】
なお、各JPEG処理コアでの処理済データも、対応するデータ格納領域に格納した後、共有バスを介して画像メモリに出力することが望ましい。画像メモリと複数のデータ格納領域の間のデータの転送は、例えば、バーストモードなどにより高速に行うことが望ましい。これによりバス占有時間を低減して全体の処理速度を向上できる。
【0015】
各データ格納領域に格納する処理前データ量は、JPEG処理の最小符号化ユニット(MCU)であることが望ましい。これにより効率的なJPEG処理が可能となる。しかし、これに限定されず各データ格納領域に格納する処理前データ量を動的に可変としてもよい。これにより処理内容及び状況に応じた効率的な処理が可能となる。
【0016】
上記第2の目的を実現するため、JPEG処理部の制御部が、複数のJPEG処理コアのうち動作状態にある個数が動的に変更可能であることが望ましい。
【0017】
本発明によれば、要求処理性能が低速である場合には、動作させる、すなわちクロックを供給するJPEG処理コアの個数を少なくして、消費電力を低減できる。
【0018】
また、上記第2の目的を実現するため、JPEG処理部は、各JPEG処理コアの動作クロック周波数を動作に応じて設定する動作クロック制御部を備える。
【0019】
本発明によれば、要求処理性能が低速である場合には、JPEG処理コアの動作速度、すなわちJPEG処理コアに供給するクロック周波数を低くして、消費電力を低減できる。
【0020】
更に上記第3の目的を実現するため、JPEG処理部の制御部は、複数のJPEG処理コアの障害発生を自動的に検出し、軽微な障害の場合には、障害情報に基づいて、事前に設定した動作プランに従って回復処理を実行し、処理エラーの回避を図る。この動作プランの例としては、障害の発生したJPEG処理コアでの処理を他のJPEG処理コアに割当てて、処理を継続させるなどのプランである。
【0021】
障害の発生は、制御部が各JPEG処理コアでの処理時間をモニタして、処理時間が基準時間を超えるタイムアウトを判定することにより検出する。タイムアウト判定は、JPEG処理コアの絶対時間タイマによる処理開始からの経過時間を検出し、経過時間を基準時間と比較することにより行う。
【発明の効果】
【0022】
本発明によれば、JPEG処理を高速に低消費電力で行え、軽微な障害については自動復旧可能なJPEG画像処理回路が実現される。
【発明を実施するための最良の形態】
【0023】
図1は、本発明の実施例のJPEG処理回路を構成するシステムLSI1の概略構成を示すブロック図である。システムLSI1は、共有バス11と、バスアービター12と、汎用メモリインターフェース13と、JPEG処理部14と、ビデオ入出力部15と、静止画入出力部16と、動画入出力部17と、プロセッサ及び周辺回路部5と、表示処理部6と、3次元(3D)グラフィックス処理部7と、画像合成フォーマット変換処理部8と、解像度変換処理部9と、を有する。このシステムLSI1の構成は、従来から良く知られているが、本実施例ではJPEG処理部14の構成が従来例とは異なる。従って、JPEG処理部14以外の部分についての説明は省略する。
【0024】
LSI1には、汎用メモリインターフェース13を介してSDRAMなどで構成される汎用メモリ2が接続される。汎用メモリ2には、YCbCr画像データ及びJPEG画像データを含む各種データが格納される。なお、図示していないが、ビデオ入出力部15には、LCDデバイスなどの表示装置(ディスプレイ)やビデオカメラが接続され、静止画入出力部16にはデジタルカメラが接続される。
【0025】
従来のLSIでは、JPEG処理部14は、処理に伴って画像メモリ(汎用メモリ)2にアクセスする必要が生じた時には、その度毎に共有バス11及び汎用メモリインターフェース13を介して画像メモリ2にアクセスしていた。そのため、バスアービター12への共有バス11の占有権の要求が頻繁に行われることになるが、共有バス11は処理の優先度が高い処理を行う他の要素と共用であるため、共有バス11が割当てられるまでの待機時間が長くなり、JPEG処理に長時間を要するという問題があった。
【0026】
本実施例では、JPEG処理部14を図2に示すように構成する。図2に示すように、本実施例のJPEG処理部14は、共有バス11との接続を制御する共有バスコントローラ21と、動作クロック制御部22と、JPEG設定格納レジスタ23と、複数のデータ格納領域24A〜24Dと、JPEG処理部内制御部25と、上記の要素を接続する第1内部バス26と、複数のJPEG処理コア27A〜27Dと、複数のJPEG処理コア27A〜27Dと複数のデータ格納領域24A〜24DとJPEG処理部内制御部25とを接続する第2内部バス28と、を有する。なお、図2では、4個のデータ格納領域24A〜24Dを有する例を示したが、その個数に特に制限はない。更に、図2に示すように、4個のデータ格納領域24A〜24Dは、第1内部バス26と第2内部バス28の両方からアクセスできるように構成されており、例えば、デュアルポートメモリやFIFOメモリなどで実現される。
【0027】
更に、4個のJPEG処理コア27A〜27Dと4個のデータ格納領域24A〜24Dは、第2内部バス28で接続されており、各JPEG処理コアはいずれのデータ格納領域にもアクセス可能である。JPEG処理部内制御部25が、第2内部バス28の占有権などのバスの制御を行う。
【0028】
本実施例では、以上のような構成により、JPEG処理内容に応じたデータ格納領域への効率的なデータ入出力、及び複数のJPEG処理コア27A〜27Dによる処理の並列化により、JPEG符号復号化(coding/decoding)処理を高速化する。更に、複数のJPEG処理コア27A〜27Dの動作クロック制御により、低消費電力を低減する。更に、JPEG処理部内制御部25による監視機能によって、JPEG処理を実行している複数のJPEG処理コア27A〜27Dの状態を把握し、軽微な障害の場合には回復処理により障害の自動復旧を行う。
【0029】
本実施例の詳細を説明する前に、画像データの格納方法と、本実施例でメモリとして使用されるSDRAMのデータ転送について簡単に説明する。
【0030】
図3の(A)は一般的な画像を扱うシステムでの画面上の点の座標を、(B)はその座標のデータをメモリ上に格納した場合のアドレスを示した図である。図3の(A)に示す通り、横Xドット、縦Yドットの画像は座標(0,0)から始まり、座標(X−1,Y−1)までのX個×Y個のドットで構成されている。
【0031】
その画像上の点をメモリ領域上にデータを展開した場合の例が図3の(B)に示される。メモリ領域上では、座標(0,0)のドットのデータがオフセット0番地の位置に格納され、座標(1,0)のドットのデータが1番地に格納される。ここでの番地の数字の意味は各ドットを示すデータの量とメモリ領域上の各番地に格納できるデータの量が等しいもしくはメモリ領域上のデータ量が大きいとしている。
【0032】
メモリ領域上では図の通り、Y座標が同じであるドットのデータがX座標の値に対して連続して格納され、X座標がX−1までくると、次はY座標が1だけ増加して、以下同様に座標(X−1,Y−1)までのデータが順番に格納されている。例えば、画面上の座標(x,y)のドットのデータは、メモリ領域上ではオフセットy×X+x(y*X+x)番地の位置に格納される。
【0033】
つまり画像の縦と横のサイズとその画像のデータが格納されているメモリ領域のオフセット位置が分かっていれば、各座標のデータがどこのメモリ領域に格納されているかは、一意に分かるようになっている。
【0034】
図4は、画像データの各成分を分離して、成分毎に複数のメモリ領域に格納している状態を表している。カラーの画像データの各画素の色の表し方では赤(R)、緑(G)、青(B)の3色で表すRGBと呼ばれる表現方法があるが、JPEGフォーマットでは明るさと色差で表現するYCC表記系のうち、Yで明るさを示し、Cbで輝度と青のレベル差、Crで輝度と赤のレベル差を示すYCbCr表記系を使用する。それぞれの成分を別のメモリ領域に割り当てた状態を示すのが図4であり、このように割り当てることにより、図3で示した通り、情報が格納されているメモリ位置が一意に分かるようになる。
【0035】
図5の(A)は、画面におけるJPEG符号化の処理の中で行われる基本DCT(離散コサイン変換)方式で扱う基本単位である8×8ドットの画像を、(B)はそのデータがどのようなアドレスで扱われるかを表した図である。図5の(A)では(x,y)を左上角とした8×8ドットの画像を例として表している。図5に示す通り、この基本単位は座標(x,y)〜(x+7,y+7)の横8ドットを最上段のラインとし、以下はY座標がy〜y+7までのラインで表されている。これは図5の(B)のメモリマップを見て分かる通り、横のラインの8ドットは連続したアドレスとしてデータが並んでいるが、各ライン間では全く別な領域となっている。
【0036】
図6はカラー画像伝送方式におけるノンインタリーブとインタリーブを説明する図である。JPEGフォーマットでは、図6の(A)のカラー画像データは、(B)のYCbCr表色系の各カラー成分に分解される。ここで、インタリーブの場合には、(C)のように各カラー成分ごとに小さな部分に分けられ、(E)のようにその小さな部分ごとに全成分のデータを順番に送る。その小さな部分を最小符号化ユニット(MCU)という。つまりインタリーブの場合、データ伝送の最初の段階から3つの成分の情報が混じり合って送られることになる。そのため、インターネット上のWebなどを低速回線で利用する時などに、上の方から徐々に表示されていくことになる。
【0037】
一方、ノンインタリーブの場合、図6の(D)に示すように、(B)のYCbCr表色系の全面のカラーデータを成分ごとに順番に送る。
【0038】
JPEG処理では、成分数が1の時はノンインタリーブを、成分数が複数の場合にはインタリーブを使用することになっている。
【0039】
またMCUはブロックで構成され、その数は元画像から各成分毎にどれだけの数のドットを抽出するかを決めるサンプリングファクタによって決定される。サンプリングファクタは実際には間引きを実現するもので、各成分のサンプリングファクタのうち、最も大きいものを最大サンプリングファクタと呼ぶ。間引きはその最大サンプリングファクタを分母とし、各成分のサンプリングファクタを分子とした数値が間引き率となる。JPEGフォーマットでよく使われるサンプリングファクタとしてはY成分を2、Cb/Cr成分を1とするものである。これは自然画では原色が現れることは非常に少ないため多くの色がRGBの合成色になっていることにより色差の変化が少ないためである。
【0040】
図7は、サンプリングファクタとしてはY成分を2、Cb/Cr成分を1とした場合のMCUの構成を説明する。図7の(A)の16×16ドットの画像データにおいて、縦横両方の方向でY成分に対してCb/Cr成分は、それぞれ1/2となっているため、MCUとしては8×8ドットが4ブロックとなり、(B)に示すようにY成分は4ブロック分であり、(C)に示すようにCb/Crはそれぞれ1ブロック分のデータ量となる。これらのデータが、(D)に示すように、まとめられて1つのMCUとなる。各成分は図示のような順序でメモリに格納又は伝送される。
【0041】
次に画像データが格納されるバッファメモリとして一般的によく使われるSDRAM(シンクロナス・DRAM)のアクセス動作を説明する。
【0042】
図8及び図9は、SDRAMにおける読み出し(read)動作の後に書き込み(write)動作を行うアクセス動作例のタイムチャートである。図8は、CL(CAS latency)=2で4ワード(word)連続アクセスの場合で、上半分がBL(burst length)=4の場合で、下半分がBL=1の場合である。下半分の例では、BLが異なるが、ページモード動作を行うことによって、BLの大きな上半分の場合と同じサイクルでアクセスが行えるようにしている。
【0043】
図9は、4+2wordをreadアクセスする時の動作を示し、上半分は同一ページである場合の動作を、下半分は同一頁でない時の動作を示す。SDRAMでは、同一のページでない場合には、ページを決定するためのROWアドレスを与える必要があるため、同じ4+2wordのアクセスでも、12CLKサイクルと19CLKサイクルという大きな差が出る。すなわち、SDRAMとの間でデータを転送する場合、同一ページの連続したアドレスをアクセスすれば高速に転送できる。
【0044】
以上、JPEGフォーマットにおける画像データの格納方法と、SDRAMのデータ転送について説明したが、これらは広く知られているので、これ以上の説明は省略する。
【0045】
図10はJPEGの符号化処理(encoding)の流れを示すフローチャートであり、図11はJPEGの復号化処理(decoding)の流れを示すフローチャートである。
【0046】
図10において、ステップS7及びS8での処理については、ハフマン符号表を用いることにより処理を省略することができる。また、ステップS2で記録する量子化テーブルに関しても最適値を入力画像や出力装置によって実験的に求めることも可能であるが、その代わりにいわゆる自然画像でディスプレイでもそれなりに表示できるテーブルがよく使われる場合もある。
【0047】
本発明に関係する主な処理は、ステップS5、S6及びS12の処理であり、特にS12での処理は一番複雑な処理である。
【0048】
図11において、本発明に関係する主な処理は、ステップS7の処理である。
【0049】
つまり上述した図10のステップS5、S6及びS12の処理、及び図11のステップS7の処理が、複数のJPEG処理コア27A〜27Dが行う処理の大部分を占める。本実施例では、これら処理を効率的に高速に行い、およびこれらの処理を行う上での消費電力を低減する。
【0050】
JPEGの符号化・復号化処理については広く知られているので、これ以上の説明は省略する。
【0051】
次に、実施例におけるYCbCr画像データ及びJPEG画像データを格納する汎用メモリ2とJPEG処理部14との間のデータ転送及びJPEG符号化・復号化処理時のデータへのアクセスについて説明する。
【0052】
図12は、符号化(encoding)処理時の画像データの流れを説明する図である。処理対象の画像データは最小符号化ユニット(MCU)に分割され、JPEG処理コア27A〜27DでMCUごとに処理される。後述するように、動作させるJPEG処理コアの個数は適宜設定されるが、ここでは4個のJPEG処理コア27A〜27Dが処理を行うものとする。前述のように、図2に示したような4個のJPEG処理コア27A〜27Dと4個のデータ格納領域24A〜24Dが第2内部バス28で接続されている構成であれば、各JPEG処理コアはいずれのデータ格納領域にもアクセス可能である。各JPEG処理コアは、処理対象のMCUが転送されたデータ格納領域にアクセスして処理を行う。
【0053】
なお、4個のJPEG処理コア27A〜27Dと4個のデータ格納領域24A〜24Dを1対1に対応させ、1個のJPEG処理コアは1個のデータ格納領域24A〜24Dにのみアクセス可能なように構成してもよい。これであれば、各JPEG処理コアは、専用のデータ格納領域に常時アクセス可能であり、各JPEG処理コアによるJPEG処理の処理速度が向上する。
【0054】
ここでは、4個のJPEG処理コア27A〜27Dは、4個のデータ格納領域24A〜24Dにそれぞれ転送されたMCUを処理対象とし、それらにそれぞれアクセスするとして説明する。
【0055】
符号化処理を行う時には、汎用メモリ2に格納されているYCbCr画像データ3のうち、4個のJPEG処理コア27A〜27Dで処理するデータを、共有バスコントローラ21及び共有バス11を介して、バーストモードで対応する4個のデータ格納領域24A〜24Dに転送する。このデータ転送は、バスアービター12からバス占有権を獲得して行われる。次に、4個のJPEG処理コア27A〜27Dが対応するデータ格納領域24A〜24Dにアクセスして転送されたYCbCr画像データに対して符号化処理を行う。この処理は、JPEG処理部14による共有バスコントローラ21及び共有バス11を介しての画像データの転送を行わずに実行できるため、共有バス11の割当てを待つ時間が生じないため処理速度は高速であり、他の要素の共有バス11へのアクセスを妨げない。符号化処理されたJPEG画像データは一旦対応するデータ格納領域24A〜24Dに格納される。転送された分のデータに対する4個のJPEG処理コア27A〜27Dによる符号化処理が終了した時点で、格納領域24A〜24Dに格納されたJPEG画像データを。共有バスコントローラ21を介して、汎用メモリ2内のJPEG画像データ4の格納領域に転送する。このデータ転送は、バスアービター12からバス占有権を獲得して行われる。
【0056】
復号化処理を行う時には、汎用メモリ2に格納されているJPEG画像データ4のうち、4個のJPEG処理コア27A〜27Dで処理するデータを、共有バスコントローラ21及び共有バス11を介して、バーストモードで対応する4個のデータ格納領域24A〜24Dに転送する。このデータ転送は、バスアービター12からバス占有権を獲得して行われる。次に、4個のJPEG処理コア27A〜27Dが対応するデータ格納領域24A〜24Dにアクセスして転送されたYCbCr画像データに対して符号化処理を行う。上記のように、この処理の処理速度は高速であり、他の要素の共有バス11へのアクセスを妨げない。復号化処理されたYCbCr画像データは一旦対応するデータ格納領域24A〜24Dに格納される。転送された分のデータに対する4個のJPEG処理コア27A〜27Dによる復号化処理が終了した時点で、格納領域24A〜24Dに格納されたYCbCr画像データを、共有バスコントローラ21及び共有バス11を介して、汎用メモリ2内のYCbCr画像データ3の格納領域に転送する。このデータ転送は、バスアービター12からバス占有権を獲得して行われる。言い換えれば、復号化処理を行う時には、図12に示した符号化処理時と逆方向のデータ転送が行われる。
【0057】
共有バス11を使っての汎用メモリ2へのアクセスにおけるアドレッシングに関しては、前述のように、符号化処理の場合には、どのMCUのデータを取り込みたいかによって一意にアドレスを決定することができる。また復号化処理の場合には、データ格納領域24A〜24Dに格納されたJPEG画像データは、MCU単位に対応するJPEG画像データ4と同じ構造のデータが順に並んでいるため、この場合にもMCU単位のデータを順番に転送して配置することは容易に行える。
【0058】
また、上記のように、共有バス11の効率的な使用の面から考えると可能な限りバーストモードで転送することが重要であるが、たとえバーストモードで転送しなくても、JPEG処理コアは直接には共有バス11を使用せずに処理が行えるので従来例に比べて処理の高速化が可能である。
【0059】
図13は、汎用メモリ2から4個のMCU1、MCU2、MCU3及びMCU4をバーストモードでデータ格納領域24A〜24Dにデータ転送を行う様子を示す。
【0060】
各MCUに関しては図7の構成のようにY,Cb,Crのデータとなっているとする。図13に示すように、4個分のMCUのデータを取り込むとすると、1MCU当たりY成分では横方向に16ドット分のデータを取り込むことになるため、4個のMCUだと全部で64ドット分のデータがシーケンシャルに並んでいることになる。1ドットのデータは1バイト(byte)であり、通常汎用メモリ2のバス幅は主プロセッサのバス幅と同じ32/64ビット(4/8バイト)とすることが多い。ここでは、32ビットバス幅であるとすると16バーストモードのアクセスを行うことにより、4個のMCUのY成分の横1列のデータを取り込むことができる。
【0061】
これに対してCb、Crのデータはその半分である8バーストアクセスでデータを取り込むこととなる。
【0062】
以上のような横1列のデータ転送を、Y成分であれば16列分、CbとCr成分であれば8列分取り込むことによって4MCU分のデータを取り込むこととなる。
【0063】
図14は、データ格納領域24A〜24Dから、MCU1、MCU2、MCU3及びMCU4から符号化した4個のJPEG画像データJMCU1、JMCU2、JMCU3及びJMCU4を、汎用メモリ2にバーストモードでデータ転送を行う様子を示す。データ格納領域24A〜24Dに格納されたJPEG画像データJMCU1、JMCU2、JMCU3及びJMCU4は、JPEG画像データ4と同じ構造のデータであるため、データを順番に転送して汎用メモリ2内のJPEG画像データの領域にそのまま配置すればよい。
【0064】
次にデータ格納領域24A〜24Dの構成とそこに入るデータについて記載する。
【0065】
図15は、データ格納領域24の構成を示す。データ格納領域24には符号化/復号化処理を行うデータと処理を行った後のデータを格納するという側面があるため、図15に示すように、データ格納領域24は、処理前のMCUを格納する領域24Pと、MCUを処理したデータJMCUを格納する領域24Qと、で構成される。
【0066】
また、それぞれの面のアドレッシングについては論理的および物理的ないずれかの方法で独立制御できる形となっている方が性能面では優位だと考えられる。本実施例では、共有バスコントローラ21を通してデータを取り込む場合に、1つのデータ格納領域24Pに1つのMCUを格納するように、また1つのデータ格納領域24Qに1つのJMCUを格納するようにしている。ここでは、このデータ格納領域24の枠組は論理的もしくは物理的に独立であるように示しているが、必ずしも物理的にすべてが独立している必要はない。
【0067】
データ格納領域24と共有バスコントローラ21との間のデータのアドレッシングと、データ格納領域24とJPEG処理コア27との間のデータのアドレッシングは、どのように行ってもよい。
【0068】
図16は、FIFO方式のデータ格納領域24の動作を示す図である。FIFO方式であれば特別なアドレッシングを行うことなくデータを特定することが可能である。共有バスコントローラ21からデータ格納領域24に対してアクセス指示、具体的にはデータの書き込み又は読み出しを指示することにより、第1内部バス26とデータ格納領域24の間で全データを1つの固まりとしてデータ転送が行われる。また、JPEG処理コア27からJPEG処理部内制御部25を介してデータ格納領域24に対してアクセス指示を行うことにより、第1内部バス26とデータ格納領域24の間で全データを1つの固まりとしてデータ転送が行われる。
【0069】
FIFO方式のデータ格納領域24は、FIFOメモリにより実現できる。この場合、処理前のMCUを格納する領域24Pと、MCUを処理したデータJMCUを格納する領域24Qは、別のFIFOメモリで構成し、入出力の方向を逆にする。
【0070】
しかし、データの部分的な再送などが必要な場合にはFIFO方式は不利である。
【0071】
図16のFIFO方式のデータ格納領域24の代わりに、バスで接続する場合の一般的なアクセス方式である、アドレスを指定してアドレッシングする方式のデータ格納領域24を使用することも可能である。図17は、この場合のデータ格納領域24の動作を示す図である。
【0072】
図17のアドレッシング方式では、共有バスコントローラ21及びJPEG処理コア27から、データ格納領域24に対してアドレスを指定してアクセスする。すなわち、読み出しを行う場合には、データ格納領域24の読み出しを行うデータが格納されたアドレスを指定し、書き込みを行う場合には、データ格納領域24の書き込みを行うデータが格納されたアドレスを指定する。この方式の場合には、データ格納領域24は、例えば、デュアルポートメモリで構成する。
【0073】
このアドレッシングを用いた方式であれば、再送などの対応は簡単であるが、FIFO方式に比べて、データを取り出す手続きおよびアドレス判断回路が必要である。
【0074】
図16及び図17の構成例では、共有バスコントローラ21及びJPEG処理コア27とデータ格納領域24との間を同じアドレッシング方式としたが、一方を異なる方式とすることも可能である。例えば、共有バスコントローラ21とデータ格納領域24との間をアドレスを指定してアドレッシングする方式とし、JPEG処理コア27とデータ格納領域24との間をFIFO方式をすることも、その逆も可能である。
【0075】
更に、図18に示すように、データ格納領域24とJPEG処理コア27の間を、JPEG処理コア27より各データ格納領域24A、24Bに対して、MCU番号を指定したデータ(ここではMCU2)を転送するような指示を行うパケットが転送され、それに対応したMCU番号のデータを持ったデータ格納領域(ここでは24B)が応答パケットを転送するというデータ転送方法も可能である。JPEG処理コア27での処理結果をデータ格納領域24に格納する場合も同様である。
【0076】
本発明の場合には、データ格納領域へのアドレッシングについては、共有バスコントローラ21とデータ格納領域24との間でデータ転送が行え、データ格納領域24とJPEG処理コア27の間でデータ転送が行えれば、どのような方法でもよいが、共有バスコントローラ21による第1内部バス26の制御方法に適した形で決定する必要がある。また、データ格納領域27の構成は、どのようなアドレッシング方法を用いるかに応じて適宜決定する。
【0077】
なお、図12から図14では、各MCU及びJMCUは物理的に独立したデータ格納領域に格納されるように示したが、図19に示すように、物理的には1個のデータ格納領域に複数のMCU及びJMCUにしても、データ格納領域とJPEG処理コアの間の第2内部バスのアドレスで論理的に分かれていれば、論理的には等価である。
【0078】
図20は、図17に示したアドレスを指定してアドレッシングする方式の場合の汎用メモリ2から各データ格納領域24へのデータ転送のタイムチャートを示し、(A)が汎用メモリ2から共有バスコントローラ21への転送を示し、(B)が共有コントローラ21から各データ格納領域24への転送を示す。
【0079】
図20の(A)に示すように、共有バスコントローラ21がバスアービター12にバス権(バスReq)を要求し、バス許可(バスAck)が出されると、汎用メモリ2の転送するMCUが格納されたアドレスを出力する。これに応じて汎用メモリ2はデータを出力する準備を行い、所定時間後に準備が整うと、所定サイクル連続して(ここでは7サイクル連続で)データを出力する。共有バスコントローラ21は、共有バス11に出力されたデータを取り込む。
【0080】
図20の(B)に示すように、共有バスコントローラ21は、データを取り込むと、第1内部バス26にアドレス及び取り込んだデータを出力し、データ格納領域24に書き込む。共有バスコントローラ21は、取り込んだデータをそのまま(スルーで)第1内部バス26に出力しても、一旦バッファした後に第1内部バス26に出力してもよい。
【0081】
図21は、図17に示したアドレスを指定してアドレッシングする方式の場合の各データ格納領域24から汎用メモリ2へのデータ転送のタイムチャートを示し、(A)が各データ格納領域24から共有コントローラ21への転送を示し、(B)が共有バスコントローラ21から汎用メモリ2への転送を示す。
【0082】
図21の(A)に示すように、共有バスコントローラ21は、各データ格納領域24のJMCUが格納されたアドレスを第1内部バス26に出力し、各データ格納領域24が指示されたアドレスのJMCUデータを第1内部バス26に出力する。共有バスコントローラ21は、第1共有バス11に出力されたデータを取り込む。共有バスコントローラ21は、第1内部バス26に出力されたデータを取り込む。
【0083】
図21の(A)に示すように、共有バスコントローラ21がバスアービター12にバス権(バスReq)を要求し、バス許可(バスAck)が出されると、汎用メモリ2の転送するJMCUを格納するアドレスを出力すると共に、所定サイクル連続して(ここでは7サイクル連続で)データを共有バス11に出力する。これに応じて汎用メモリ2は共有バス11のデータを取り込み、指示されたアドレスに格納する。
【0084】
図22は、図17に示したアドレスを指定してアドレッシングする方式の場合の各JPEG処理コア27と各データ格納領域24の間のデータ転送のタイムチャートであり、(A)がデータ格納領域24からJPEG処理コア27へのデータ転送を、(B)がJPEG処理コア27からデータ格納領域24へのデータ転送を示す。
【0085】
図22の(A)に示すように、JPEG処理コア27がJPEG処理部内制御部25に第2内部バス28のバス権(バスReq)を要求し、バス許可(バスAck)が出されると、データ格納領域24の処理対象のMCUを格納したアドレスを第2内部バス28に出力する。これに応じてデータ格納領域24はデータを出力する準備を行い、所定時間後に準備が整うと、所定サイクル連続して(ここでは7サイクル連続で)データを第2内部バス28に出力する。JPEG処理コア27は、第2内部バス28に出力されたデータを取り込む。
【0086】
図22の(B)に示すように、JPEG処理コア27がJPEG処理部内制御部25に第2内部バス28のバス権(バスReq)を要求し、バス許可(バスAck)が出されると、データ格納領域24の処理済みのJMCUを格納するアドレスを第2内部バス28に出力すると共に、処理済みデータを出力する。これに応じてデータ格納領域24はデータを取り込む(書き込む)準備を行い、所定時間後に準備が整うと、所定サイクル連続して(ここでは7サイクル連続で)データを書き込む。
【0087】
なお、図15に示すように、データ格納領域24は、処理前データを格納する領域24Pと、処理済データを格納する領域24Qで構成されるため、処理が終了してJMCUが処理済データを格納する領域24Qに格納された後は、JMCUを汎用メモリ2に転送する前に、次に処理するMCUを処理前データを格納する領域24Pに転送することも可能である。
【0088】
以上、汎用メモリとデータ格納領域間のデータ転送及びJPEG処理コアとデータ格納領域との間のアクセス動作を説明したが、上記のように各種の変形例が可能である。
【0089】
実際のJPEG処理では、直前のMCUとの差をDC成分とし、MCUの先頭ドットから始まって、隣り合うドットとの差分をAC成分として求めていくため、処理にはMCU内のデータの他に隣接した直前のMCUの先頭ドットのデータが必要となる。これに関しての入手方式も複数ある。
【0090】
まず1つ目は共有バスコントローラ21経由でデータを格納している時に必要データをJPEG処理内部制御部25に取り込み、その情報が必要なJPEG処理コアに対して、能動的もしくは受動的に通知を行う方法である。
【0091】
2番目は、データ格納領域24に該当のデータがMCUとセットで専用に格納され、JPEG処理コア27の指示に従って、転送される方法である。
【0092】
他にも2番目の方法と構成は類似しているが、図19に示すように複数のMCUが(物理的には)1つのデータ格納領域に格納されている場合には、セットで専用に格納されているというより、処理するMCUもその前のMCUのデータ自身もそこに存在している。そのため、指示があればデータを転送するという方法で容易に実現でき、データ取り出し指示インタフェースのやり方はアドレッシング同様複数考えられる。
【0093】
次に、JPEG処理コアの動作クロック周波数の変更について説明する。図2に示すように、本実施例のJPEG処理部14は、動作クロック制御部22を有し、JPEG処理コア27A〜27Dの動作状態に応じてその動作クロック周波数を変更することにより消費電力を低減している。例えば、JPEG処理を高速で行う必要がない時には、JPEG処理コア27A〜27Dの動作クロック周波数を低くする。動作クロック制御部22は、JPEG処理部内制御部25内に設けることも可能である。
【0094】
図23は、動作クロック制御部22の構成を示す。一般的にLSI内部で使用されるクロックは、外部入力の源発振信号よりPLL回路31などを使用してより早い周波数を作り出したあとに、必要に応じて分周回路32で分周などを行っている。本実施例ではあらかじめ分周回路32で複数の周波数パターンを準備して、各JPEG処理コアに対応して設けたセレクタ34に入力する。選択入力33は、JPEG設定格納レジスタ23に格納された動作モードパターンを受けて、セレクタ34からどの周波数のクロックを出力するかを制御する。このようにして選択された周波数のクロックが各JPEG処理コアに供給される。
【0095】
実際の動作については、例えば動作周波数が1/2となると消費電力は1/4となる。そのため、後述するJPEG処理コアの動作個数の制御と合わせて、動作クロック周波数を1/22としてJPEG処理コアの動作個数を2倍にすると、性能はそのままで全体の消費電力は1/4×2=1/2となる。
【0096】
また共有バスを占有している時間は大幅に短縮されるため、共有バスを駆動している時間が短くなることによる消費電力削減も同時に見込むことができる。
【0097】
JPEG処理コア27の動作クロック周波数はデータ格納領域24へのデータ転送もしくはデータ格納領域27からのデータ転送とは無関係であり、あくまでもJPEG処理コア27の動作に関係があるものである。そのため動作周波数の変更は上記のJPEG符号化処理であれば、すべてのJPEG処理コア27が現在実施している符号化処理を終え、次のデータ格納領域中のデータ処理を開始するところで周波数変更を行う。この切り替えタイミング以前に行われた変更に関しては周波数変更の追従は行わない。
【0098】
次に、JPEG処理コアの周波数変更を実施した場合におけるデータ転送について説明する。
【0099】
周波数変更が行われている部分は、あるJPEG処理コア27に割り当てられている単位でのJPEG処理コア27部分とデータ格納領域24がセットで周波数設定されている。更に、ある周波数に対してのT倍速のクロックで制御を行う。データ格納領域24と共有バスコントローラ21間はシステムクロックで動作している。データ格納領域24はデュアルポートメモリであるため、このような構成が可能である。
【0100】
ここで、JPEG処理コア27とデータ格納領域24間のインタフェースについて周波数変更に対しての具体例を説明する。
【0101】
図24は、要求・許可(Req & Ack)方式によるアクセス方式の例を説明する図であり、(A)が信号経路を、(B)が信号の流れを示す。
【0102】
この方式は、非常に単純でアクセスの主導的立場であるJPEG処理コア27側からアクセスに対する要求(Req)を出し、アクセスを受け入れられる状態になると許可(Ack)を返すという方法である。この場合も、第2内部バス28のバスアービトレーション機能は、JPEG処理部内制御部25内に設けられる。
【0103】
図2のJPEG処理部14中において、第2内部バス28がデータ格納領域24A〜24DおよびJPEG処理コア27A〜27Dを接続しており、JPEG処理部内制御部25が第2内部バスのバス権を管理するこの方法であれば、バス権を取った後の転送方法は、前述のどの方法でもよい。必要なことはアクセスされる側のデータ格納領域24の特定であり、それさえ行われればお互いにアクセスを行う同士の周波数は一致しているため、簡単にアクセスが行われる。
【0104】
図24では、バス権を持ったJPEG処理コアが処理するMCUを格納したデータ格納領域24に対して、アクセスされることを通知している。
【0105】
また、図19に示すように物理的には同一のところに複数のデータ格納領域24が存在し、JPEG処理コア27とのインタフェース箇所が共用化されている場合でも、バス権を持ったJPEG処理コア27がどれかによって、周波数は特定されるため、その共用化されているインタフェース箇所の周波数を変更すれば、問題なくアクセスできる。その場合の動作を図25に示す。データ格納領域24には周波数選択部29が設けられ、JPEG処理部内制御部25からのアクセスコア番号の通知に応じて複数の周波数入力から対応する周波数の動作クロックを選択し、データ格納領域24はこの選択された動作クロックで動作する。
【0106】
図26は、トークン(Token)方式によるアクセス方式の例を説明する図であり、(A)が信号経路を、(B)が信号の流れを、(C)が動作タイムチャートを示す。
【0107】
図26の(A)に示すように、トークン方式によるアクセス方式では、JPEG処理コア27A〜27D間でトークンを巡回させ、アクセスを行いたいJPEG処理コアが自分がトークンを持っている時点で、図26の(B)及び(C)に示すように、アクセスを開始し、アクセス完了後、次のJPEG処理コアにトークンを渡す。この時、トークンの獲得がJPEG処理部内制御部25に通知され、どのJPEG処理コアがアクセスをするかが分かるので、図24と同じように、アクセスされるデータ格納領域に通知してアクセスを行う。ここで、動作クロック周波数のT倍でのアクセスであるため、アクセス方法を非同期によるやりとりとし、必ずどの周波数でも認識可能な長さの規定によるアドレス出力およびアクセス依頼に対して、アクセス動作認識および読み出しデータ出力、書き込み完了を行う。
【0108】
図27は、別のアクセス方式であるスイッチ・マトリクス(sw matrix)構造による接続方式の構成を示す図である。
【0109】
この方式では、スイッチ・マトリクス40によりデータ格納領域24およびJPEG処理コア27間の接続がすべて支配されており、論理的に直結している。また、スイッチ・マトリクス40内のスイッチ自体の構成については、一般的なShardメモリ型のスイッチでもクロスバー型のスイッチでも他のスイッチ構成でもよい。
【0110】
これまで説明したアクセス方法の中でこのスイッチ・マトリクス方式に最も適したアクセス方法は、図18に示したパケット方式である。
【0111】
図28は、スイッチ・マトリクス方式でのパケットの例を示す図である。
【0112】
図28の(A)は、JPEG処理コア27からデータ格納領域24への読み出し(Read)コマンドのパケットである。ディスティネーションアドレスは、読み出すデータが格納されたデータ格納領域24における位置(アドレス)を示す。ソースアドレスは、アクセスを行っているJPEG処理コアの番号を示す。コマンドは、アドレスで示される読み出し開始位置から何バイト転送するかを示す。トレーラーは、このパケットが正しいかを判断するためのもので、CRCなどの総パケットバイト数や、チャックサムや、プロトコルに応じて付加される。
【0113】
図28の(B)は、JPEG処理コア27からデータ格納領域24への書き込み(Write)コマンドのパケットである。ディスティネーションアドレスは、書き込むデータを格納するデータ格納領域24における位置(アドレス)を示す。ソースアドレス、コマンド及びトレーラーは、図28の(A)と同じである。データは、実際に書き込むデータを示す。
【0114】
図28の(C)は、データ格納領域24からJPEG処理コア27への書き込み(Write)アクノリッジ・パケットである。ディスティネーションアドレスは、アクセスが行われたデータ格納領域24を示す。ソースアドレスは、アクセスを行ったJPEG処理コアの番号を示す。コマンドは、Writeコマンドに対するアクノリッジであり、必要があれば、どのようなものをWriteしたかを示す。例えば、アドレスで示される書き込み開始位置から何バイトWriteしたかを示す。トレーラーは、このパケットが正しいかを判断するためのもので、CRCなどの総パケットバイト数や、チャックサムや、プロトコルに応じて付加される。
【0115】
図28の(D)は、データ格納領域24からJPEG処理コア27への読み出し(Read)アクノリッジ・パケットである。ディスティネーションアドレス、ソースアドレス、コマンド、データ及びトレーラーは、Readコマンドに対するアクノリッジである点以外は図28(B)と同じである。このパケットが正しいかを判断するためのもので、CRCなどの総パケットバイト数や、チャックサムや、プロトコルに応じて付加される。
【0116】
次に、JPEG処理コア27A〜27D及びデータ格納領域24A〜24Dの動作個数の動的変更について説明する。これは、動作の必要のないJPEG処理コア27A〜27D及びデータ格納領域24A〜24Dは動作を停止して消費電力を低減するものである。
【0117】
このJPEG処理コア27A〜27D及びデータ格納領域24A〜24Dの動作状態変更は、周波数変更と同様に、JPEG処理コアが符号化処理を終えたところで実施する。処理に使用するJPEG処理コアの数が減る場合には、次のデータ格納領域中のデータの符号化処理の並列化の時に使用するJPEG処理コア数を減らして動作を行う。またJPEG処理コア数が多くなる場合には、データ格納領域中に次に割り当てるデータ転送が行われていないので、データ格納領域に空きがあれば、先行してデータ転送を実施し、できるだけロスの少ない形での処理ができるようにする。
【0118】
またデータ格納領域の増減も同様であるが、データ格納領域が減る場合には現在までに先行して取り込んでいる画像データもしくは符号化処理後のデータが処理された時点で、新たにそのデータ格納領域を未使用とする。逆にデータ格納領域が追加された場合にのみ、そのデータ格納領域を有効に使用するために画像データの先行転送を実施する。
【0119】
次に、JPEG復号化処理を説明する。
【0120】
図29はJPEG復号化処理時の共有メモリからデータ格納領域へのデータ転送の様子を示し、図30はJPEG復号化処理時のデータ格納領域から共有メモリへのデータ転送の様子を示し、それぞれ符号化時の図13及び図14に対応する。
【0121】
図29に示すように、JPEG復号化処理時には、汎用メモリ2に格納されたJPEG画像データ4から各JPEG処理コアで処理する単位のデータ、例えばMCUに対応するJMCUを、共有バスコントローラ21を介して、各JPEG処理コアに対応するデータ格納領域24の処理前格納領域に転送する。例えば、JPEG処理コア27Aで処理するJMCUを、対応するデータ格納領域24Aの処理前格納領域にデータ転送する。
【0122】
図30に示すように、各JPEG処理コアで処理されて復号化された画像データのMCUは、データ格納領域の処理済格納領域に格納される。格納されたMCUを、データ格納領域24Aの処理済格納領域から、共有バスコントローラ21を介して、汎用メモリ2に転送する。
【0123】
このように、JPEG復号化処理時のデータ転送は、転送する方向とデータ格納領域の処理前格納領域と処理済格納領域が逆であるだけで、他は同じである。
【0124】
図11の復号処理の流れにおいて、ステップS27のMCUの復号の前までの処理に関しては、JPEG処理部内制御部25がデータを解析し実行する。ステップS27のMCUの復号処理に関しては、符号化と同様に並列処理を行うために、まず最若番のJPEG処理コアがMCUの区切りを見つけるためにハフマン復号化処理を実施し、MCUの区切りがわかった段階で次のJPEG処理コアが同様にMCUの区切りを見つけるためにハフマン復号化処理を順次行う。その後の復号化処理は独立しているため、それぞれのJPEG処理コアが並列処理で復号化処理を実行する。その復号化処理で得られた画像データは、データ格納領域の処理済格納領域に一旦格納され、例えば、4MCU分の処理が終わった段階でバースト転送で汎用メモリ2に書き込まれる。このバースト転送は符号化でのデータ取り込みと同様に通常では離散的なアドレス体系になっているため、転送処理のトータル時間が非常にかかっていたのに対して、まとめてバースト転送を行うことにより非常に効率的にデータ転送を行うことができる。
【0125】
次に、JPEG設定格納レジスタ23に設けられた、JPEG制御を行う上で必要な制御レジスタについて、それぞれのレジスタの意味と詳細について順に説明する。
【0126】
図31は、本実施例のJPEG制御レジスタの構成を示す図である。図示のように、16個のレジスタが設けられ、各レジスタは、16個のJPEG処理コア、32個のデータ格納領域の構成で、3パターンの動作周波数で符号化(encode)処理及び復号化(decode)処理を最大2処理同時に行えるものとしてビット数などが設定されている。ただし、本発明は、これに制限されるものではない。
【0127】
図32は、動作モードレジスタの構成を示す。動作モードレジスタは、JPEG処理コアの動作を設定するものである。JPEG処理の基本動作としては符号化(encode)と復号化(decode)があるため、それらのうちどちらを実行するのか、およびどの処理をどのJPEG処理コアで処理するかを設定する。また各処理を行うJPEG処理コアの周波数設定も本レジスタにより行われる。JPEG処理コアおよびデータ格納領域はすべて等価であるため、各処理に割り当てるJPEG処理コアの数とデータ格納領域の数および周波数設定と、動作していないものに対して割り当てる周波数設定を行うことができる。
【0128】
図32の(A)のレジスタは、符号化(encode)処理及び復号化(decode)処理の個数分設けられ、各処理に割当てるJPEG処理コアとデータ格納領域が規定される。(B)は、各処理を行うか行わないか(停止する)、及び動作クロック周波数を設定し、各処理に2ビットが割当てられ、”00”で停止、”01”、”10”、”11”で周波数を設定する。
【0129】
図33は、コマンドレジスタの構成を示し、(A)の各ビットは、各JPEG処理コアのリセット実行指示を行い、(B)は符号化(encode)処理及び復号化(decode)処理のそれぞれのリセット実行指示及び全コアのリセット実行指示を行い、(C)は符号化(encode)処理及び復号化(decode)処理のそれぞれの起動指示を行う。
【0130】
図34は、動作状態表示レジスタの構成を示し、各JPEG処理コアに2ビットが割当てられ、”00”で非動作状態を、”01”でリセット中/障害発生中を、”10”で符号化処理中を、”11”で復号化処理中を示す。
【0131】
図35は、画像縦/横サイズレジスタの構成を示す。このレジスタは、符号化(encode)及び復号化(decode)の処理ごとに設けられ、符号化を行う画像又は復号化を行う画像の縦/横サイズを示す。符号化時にはこのレジスタを読み取って符号化処理を行う画像のサイズを認識し、復号化時にはこのレジスタに復号化の結果を書き込む。
【0132】
図36は、割込み状態/マスクレジスタの構成を示し、現在の割り込み状態およびマスク状態を示す。(A)は、各1ビットが、符号化(encode)処理及び復号化(decode)処理が正常に終了したことを示す割込み状態及び処理に異常が生じた異常割込み状態を、示す。(B)は、各1ビットが、処理のマスク状態を示す。
【0133】
図37は、エラー割り込み状態詳細/マスクレジスタの構成を示し、(A)及び(B)はそれぞれ4×8ビット構成で、各ビットが各処理に対応し、エラー状態及びマスク状態と共に4種類のエラー要因及びマスク状態を示す。主なエラー要因としては、
・動作中にリセットを実行し、動作が途中で停止した。
【0134】
・符号化/復号化用データ取り込み中のバスエラー
・圧縮データ解析中に発生したエラー(JPEGヘッダ処理)
・伸長時のハフマン符号化処理中に発生したエラー
・バッファオーバーフロー
・符号化/復号化処理中のタイマータイムアウト、などがある。
【0135】
図38は、データバッファ開始アドレスレジスタの構成を示す。このレジスタは符号化/復号化処理ごとに設けられ、(A)はJPEGデータの開始アドレスを示し、復号化時にはこのレジスタを読み取って、復号化処理を行うJPEGデータの開始アドレスを認識し、符号化時にはこのレジスタの開始アドレスから符号化結果(変換されたデータ)を書き込む。(B)は各成分の開始アドレスを示し、符号化時にはこのレジスタを読み取って符号化処理を行う画像データの各成分の開始アドレスを認識し、復号化時にはこのレジスタの開始アドレスから復号化結果を書き込む。
【0136】
図39は、JPEGデータサイズレジスタの構成を示す。このレジスタは、符号化処理の処理済みのJPEGデータ量をリアルタイムにレポートする。このレジスタは、同時に行うことが可能な符号化処理の個数分設けられる。
【0137】
図40は、障害監視タイマ/コア番号通知レジスタの構成を示し、符号化/復号化処理ごとに設けられる。(A)は障害の発生を監視するためのタイマであり、(B)は最初に障害が発生したJPEG処理コアの番号を示す。
【0138】
複数のJPEG処理コアで1つの符号化/復号化処理を行う場合に、ほぼ同時に複数のJPEG処理コアが起動されるが、今回の発明では処理サイズが小さいため、大きく処理時間が変わることはなく、ある一定時間差以内に同時処理を行ったすべての処理が終わることが予想される。そのため、直前の処理を行っているJPEG処理コアの動作終了時間よりも次の処理を行っているJPEG処理コアの動作終了が本障害監視タイマに設定された時間経っても終了しない場合には障害とみなし、障害通知を行う。全てのビットがゼロの時には監視を行わない。また障害通知後の動作は次に説明する障害時アクションレジスタの設定による。
【0139】
(B)は、発生ビットは障害が発生すると”1”になり、それと共に障害が発生したJPEG処理コアの番号を通知書き込み、通知する。発生ビットに”0”を書き込むとJPEG処理コアの番号と共にクリアされる。複数のJPEG処理コアが同時にタイムアウトとなった場合には、一番最初にタイムアウトとなったJPEG処理コア番号を示す。
【0140】
図41は、障害時アクションレジスタの構成を示し、符号化/復号化処理ごとに設けられる。このレジスタは、前述のタイムアウト障害が発生した時にどのような処理を行うか規定する。図示の例では、設定された値により、以下のアクションを行う。
【0141】
”000”:何もしない。
【0142】
”001”:余っているJPEG処理コアへの自動割り当て動作
障害が発生したJPEG処理コアを停止し、現在使用していないJPEG処理コアに動作を割り当てる。割り当てるJPEG処理コアがない場合には障害JPEG処理コアの切り離しを行う。
【0143】
”010”:自動再開
自己リセットを行って再度動作を再開する。ただし無限の再開になる可能性があるため、レジスタの再開スレッシュホールドの値の回数まで再開を繰り返し行い、それ以降は障害JPEG処理コアを切り離す。
【0144】
”011”:障害切り離し
障害JPEG処理コアを切り離す。障害JPEG処理コアが実行していた処理に関しては、別のJPEG処理コアが引き続き実行する。
【0145】
”100”:全体の動作を完全にストップ
これ以外にも量子化テーブルやハフマンテーブルを規格書に記載されている以外のものを使用するために、内部にバッファを持ち、そこに値を入れてそれを使用したり、規格で決められているものと切り替えて使用するなどについての動作を規定するためにレジスタを設けてもよい。
【0146】
次に、上記のようなレジスタに具体的な値を設定して動作を行う場合の実際の動作の流れについて説明する。
【0147】
以下の条件でレジスタに値を設定し、JPEG符号化処理を行うものとする。
【0148】
動作モード:割り当てJPEG処理コア数=4個、データ格納領域=8個、符号化(encode)処理Aに割り当て、周波数はパターン0、
割り込み:終了割り込み、異常割り込み全解除、エラー要因詳細マスクも全解除
画像縦横サイズ:1600×1200
障害監視タイマ:1000CLK
障害アクション:余っているJPEG処理コアへ自動割り当て
バッファ開始アドレス:0x10000000番地
画像データアドレス:Y 0x20000000番地
Cb 0x30000000番地
Cr 0x40000000番地
これらの設定を実施したあとにコマンドレジスタで符号化処理Aの動作を起動する。起動後、JPEGのファイルの実際のMCUの符号化されたデータより前に格納されるSOI、フレームヘッダ、量子化テーブル、ハフマンテーブルなどに関しては、設定された内容もしくは規格に記載されている内容など、実際の符号化処理に使用するものをJPEG処理内部制御部25で処理を行い、JPEGGデータのバッファ開始アドレスに記載する。
【0149】
実際にデータを符号化する処理である、図10で示したステップS5、S6及びS12を行うために、画像データアドレスを元にアドレス計算を行ってデータ格納領域にデータを格納していく。例示の設定では8個のデータ格納領域を確保しているため、まず先頭のアドレスより8MCU分のデータをバーストアクセスでデータ格納領域に転送していく。従来の方式ではMU単位での転送であるため、各列毎にアドレスが大きく切り替わるため、データ転送効率が非常に悪く、図9の下のようになってしまうが、8MCUまとめて転送を行うため、図9の上のようにMCUの横1列分の8倍のデータをバーストアクセスで転送できる。それを8列分データ転送が完了した後にステップS5の処理を開始する。
【0150】
データ転送とJPEG処理コアおよびデータ格納領域の割り当ての様子を図42に示す。実際のステップS5の動作ではDC成分に関しては隣のブロックのDC成分との差を記録することになるが、上記の通り並列処理を行う分のデータを先に取り込んでおり、隣のDC成分との差分はわかっているため、それぞれのJPEG処理コアが並列にMCU単位で処理を行う。各JPEG処理コアはMCU単位でのJPEG符号化処理が終了すると、その符号化したデータをデータ格納領域に一旦書き込む。JPEG符号化データはもとの画像データよりも圧縮されており、そのサイズはかなり小さくなっていることが予想されるため、SDRAMの動作で説明した通りある程度まとまった単位で転送した方が効率が良くなる。
【0151】
また各JPEG処理コアの動作はほぼ同時に開始し、同時に終了するため、この例であれば4つのMCUが処理された段階で、JPEG符号化データをまとめてバースト転送することになる。またすでに次の処理を行う各JPEG処理コア分のMCUデータは入手済みであるため、引き続きJPEG符号化処理を継続して行えるとともに、JPEG符号化データを書き込み後に処理済のMCUデータが格納されていたデータ格納領域に4MCUC分の次のデータを取り込むことができる。つまり並列処理分だけでなく、データ転送がJPEG処理コアのJPEG符号化処理時間と完全にオーバーラップすることになり、更なる高速化が行える。
【0152】
次に、あるJPEG処理コアがタイムアウト(Timeout)エラーを起こした場合を考える。例では障害時自動割り当て、障害通知ありという設定になっており、元々JPEG処理コア27A〜27Dが割り当てられていたとし、MCU1〜MCU4を処理中にJPEG処理コア27Cが異常となったことを想定して、その動作について説明する。
【0153】
JPEG処理コア27Cがタイムアウトしたことにより、障害情報がレジスタに書き込まれるとともに割り込みが発生する。またタイムアウト詳細表示でどのJPEG処理コアがタイムアウトとなったかがわかる。
【0154】
また、JPEG処理コアの動作状態は動作状態表示レジスタで新しくJPEG処理コア27Eが割り当てられたことがわかる。割り当てられたJPEG処理コア27EはJPEG処理コア27Cが実際実施するはずだった符号化処理を行いJPEG符号化が完了した段階で、正常な動作と同様に共有バッファへのデータ転送が行われる。
【0155】
またアクションレジスタが自動再開の場合には、再開スレッシュホールドの値に達するもしくは動作が正常動作となるまで障害となると自己リセットを発生させて、復旧できるようにする。
【0156】
障害切り離しが指定されていた場合には、新たなJPEG処理コアを割り当てたりリセットによる自己復旧作業を行わず、障害を通知後、すでに処理が終了しているJPEG処理コア27AにJPEG処理コア27Cの処理を肩代わりさせ、処理が終了した段階で正常な動作と同様に共有バッファへのデータ転送を行うとともに、その後の動作は3個のJPEG処理コアで実行される。
【0157】
全体の動作を完全に停止する場合には、この障害が発生した時の並列処理に関しては、処理が終了しているJPEG符号化データがあったとしてもその転送は行わない。次にこれらの処理を再開するためには、この符号化処理で使用していたJPEG処理コアに対してリセットを発生させたあとに、再度初期設定から実施する。
【0158】
上記で障害となったJPEG処理コア27Cはどのアクションが選択されていたとしても、障害となった瞬間にリセット状態となり、リセットを解除しないかぎり符号化/復号化処理に割り当てることはできない。
【0159】
次にJPEG処理コアがタイムアウトした場合についての動作を説明する。JPEG処理コアがタイムアウトした場合には例では別のJPEG処理コアを割当てることになっているため、符号化処理の時と同様に、たとえばJPEG処理コア27Cが障害となった場合にはJPEG処理コア27Eが新たに割当てられてJPEG処理コア27Cの動作を引き継ぐ。上記の説明の通り、MCUの区切りがわかっているところまで処理が進んでいた場合には別のMCUを処理しているJPEG処理コアの方が動作が先に完了してしまうが、共有バッファへのデータ転送はJPEG処理コア27Eの動作が完了するまで、待ってから転送することになる。
【0160】
またアクションが自動復旧、切り離し、全動作停止に関しては符号化処理および前述の別JPEG処理コア割り当てと同様な動作となる。
【0161】
次にタイムアウト処理の詳細を説明する。
【0162】
図43はタイムアウト検出処理を説明する図である。図43に示すように、本発明ではシステムの絶対時間を示すタイマ41が存在しており、それぞれのJPEG処理コアの処理開始時間と処理終了時間を監視して格納している。タイムアウトの条件を満たしているかどうかは、各JPEG処理コアの処理開始時間から見て、直前の処理を実施しているJPEG処理コアの処理時間+タイムアウト時間(タイムアウトレジスタ設定レジスタ42に設定された時間)が過ぎても処理が終わっていない状態であることである。
【0163】
つまりシステムの絶対時間で各JPEG処理コアの処理時間を割り出す本発明の方法であれば、タイムアウトが実際に発生した場合でも、直前の処理を実施しているJPEG処理コアが処理にかかった時間は新しい処理が実行されるまで保存されているため正確に通常かかると思われる処理時間に対するタイムアウトの時間として設定することができ周波数の変更による正常動作時の処理時間を考慮して タイムアウトの時間を設定する必要がない。
【0164】
また上記の処理時間を見ることができれば、処理量が把握することにより容易に実施しようとしている符号化/復号化処理に必要な時間を予想することができる。
【0165】
この実施案で説明したデータ転送方法、障害監視方法、障害からの復旧方法は一例であり、またJPEG処理方法も記載した以外の方式もあり得る。
(付記1)
画像メモリに接続される共有バスと、
前記共有バスに接続され、前記共有バスを介して前記画像メモリから得た処理前データをJPEGフォーマットで処理し、処理済データを前記共有バスを介して前記画像メモリに出力するJPEG処理部と、を備えるJPEG画像処理回路であって、
前記JPEG処理部は、
複数のJPEG処理コアと、
前記複数のJPEG処理コアに対応して設けられた複数のデータ格納領域と、を備え、
各JPEG処理コアで処理を行う時には、前記処理前データの各JPEG処理コアでの処理に必要な部分を、各JPEG処理コアに対応する各データ格納領域に格納することを特徴とするJPEG画像処理回路。(1)
(付記2)
各JPEG処理コアでの処理済データは、対応する前記データ格納領域に格納した後、前記共有バスを介して前記画像メモリに出力される付記1に記載のJPEG画像処理回路。(2)
(付記3)
各データ格納領域に格納する前記処理前データ量は任意に設定可能である付記1に記載のJPEG画像処理回路。
(付記4)
各データ格納領域に格納する前記処理前データ量は、動的に可変である付記1に記載のJPEG画像処理回路。(3)
(付記5)
各データ格納領域に格納する前記処理前データ量は、JPEG処理の最小符号化ユニット(MCU)である付記1に記載のJPEG画像処理回路。(4)
(付記6)
前記JPEG処理部は、制御部を備え、
前記制御部は、動作モードに応じて、前記複数のJPEG処理コアの使用方法を変更する付記1に記載のJPEG画像処理回路。
(付記7)
前記JPEG処理部は、制御部を備え、
前記制御部は、前記複数のJPEG処理コアのうち動作状態にある個数を動的に変更する付記1に記載のJPEG画像処理回路。(5)
(付記8)
前記JPEG処理部は、各JPEG処理コアの動作クロック周波数を動作に応じて設定する動作クロック制御部を備える付記1に記載のJPEG画像処理回路。(6)
(付記9)
前記動作クロック制御部は、各JPEG処理コアの動作クロック周波数を動的に変化させる付記8に記載のJPEG画像処理回路。(7)
(付記10)
前記JPEG処理部は、制御部を備え、
前記制御部は、前記複数のJPEG処理コアの障害発生を自動的に検出して発生した障害情報を通知する付記1に記載のJPEG画像処理回路。(8)
(付記11)
前記制御部は、前記障害情報に基づいて、障害の発生したJPEG処理コアでの処理を他のJPEG処理コアに割当てて、処理を継続させる付記10に記載のJPEG画像処理回路。(9)
(付記12)
前記制御部は、各JPEG処理コアでの処理時間をモニタして、処理時間が基準時間を超えるタイムアウトを判定することにより障害の発生を検出し、
前記タイムアウト判定を、前記JPEG処理コアの絶対時間タイマによる処理開始からの経過時間を検出し、前記経過時間を前記基準時間と比較することにより行う付記11に記載のJPEG画像処理回路。(10)
(付記13)
前記制御部は、前記タイムアウトが発生した後再度処理を開始した場合に、前記基準時間を変更する付記12に記載のJPEG画像処理回路。
【産業上の利用可能性】
【0166】
本発明は、JPEG画像処理回路であればどのようなものにも適用可能である。
【図面の簡単な説明】
【0167】
【図1】実施例のJPEG処理部を含むシステムLSIの概要ブロック図である。
【図2】実施例のJPEG処理部のブロック構成図である。
【図3】画面上の点の座標とメモリ上のアドレスの関係を示す図である。
【図4】画像データの成分分離を説明する図である。
【図5】JPEG処理の基本単位を説明する図である。
【図6】ノンインタリーブとインタリーブを説明する図である。
【図7】MCUの構成を説明する図である。
【図8】SDRAMのアクセスシーケンスを示すタイムチャートである。
【図9】SDRAMの読み出し(Read)アクセスシーケンスを示すタイムチャートである。
【図10】符号化処理の流れを示すフローチャートである。
【図11】復号化処理の流れを示すフローチャートである。
【図12】符号化処理時のデータの流れを示す図である。
【図13】JPEG符号化処理時の汎用メモリからデータ格納領域までのデータ転送を説明する図である。
【図14】JPEG符号化処理時のデータ格納領域から汎用メモリまでのデータ転送を説明する図である。
【図15】データ格納領域の構成を示す図である。
【図16】FIFO方式データ格納領域の動作を説明する図である。
【図17】アドレス方式データ格納領域の動作を説明する図である。
【図18】パケット方式データ格納領域の動作を説明する図である。
【図19】複数MCUを格納するデータ格納領域を説明する図である。
【図20】汎用メモリからデータ格納領域へのデータ転送のタイムチャートである。
【図21】データ格納領域から汎用メモリへのデータ転送のタイムチャートである。
【図22】JPEG処理コアとデータ格納領域間のデータ転送のタイムチャートである。
【図23】動作クロック制御部の構成を示す図である。
【図24】要求・許可方式によるアクセス方式を説明する図である。
【図25】共通データ格納領域での要求・許可方式によるアクセス方式を説明する図である。
【図26】トークン(Token)方式によるアクセス方式を説明する図である。
【図27】スイッチ・マトリク構造による接続方式を説明する図である。
【図28】スイッチ・マトリク方式でのコマンド例を示す図である。
【図29】JPEG復号化処理時の汎用メモリからデータ格納領域までのデータ転送を説明する図である。
【図30】JPEG復号化処理時のデータ格納領域から汎用メモリまでのデータ転送を説明する図である。
【図31】JPEG制御レジスタの構成を示す図である。
【図32】動作モードレジスタの構成を示す図である。
【図33】コマンドレジスタの構成を示す図である。
【図34】動作状態表示レジスタの構成を示す図である。
【図35】画像縦/横サイズレジスタの構成を示す図である。
【図36】割り込み状態/マスクレジスタの構成を示す図である。
【図37】エラー割り込み状態詳細/マスクレジスタの構成を示す図である。
【図38】データバッファ開始アドレスレジスタの構成を示す図である。
【図39】JPEGデータサイズレジスタの構成を示す図である。
【図40】障害監視タイマ/コア番号通知レジスタの構成を示す図である。
【図41】障害時アクションレジスタの構成を示す図である。
【図42】複数のMCUの並列処理を説明する図である。
【図43】タイムアウト検出処理を説明する図である。
【符号の説明】
【0168】
1 JPEG処理システムLSI
2 汎用メモリ(SDRAM)
11 共有バス
14 JPEG処理部
47 REF制御回路
21 共有バスコントローラ
22 動作クロック制御部
23 JPEG設定格納レジスタ
24、24A〜24D データ格納領域
25 JPEG処理部内制御部
26 第1内部バス
27、27A〜27D JPEG処理コア
28 第2内部バス
【出願人】 【識別番号】000005223
【氏名又は名称】富士通株式会社
【出願日】 平成18年8月15日(2006.8.15)
【代理人】 【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤

【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一

【識別番号】100113826
【弁理士】
【氏名又は名称】倉地 保幸


【公開番号】 特開2008−48130(P2008−48130A)
【公開日】 平成20年2月28日(2008.2.28)
【出願番号】 特願2006−221576(P2006−221576)