(57)【要約】【課題】  ＣＰＵ、アクセラレータ、ＤＭＡＣなどがバス接続されたシステムにおいて、アクセラレータやＤＭＡＣが発行する割込みや、それらの処理終了判定のためのポーリングによるＣＰＵの性能低下を抑止し、実時間アプリケーションを中断することなく実現する。【解決手段】  ハードウェアイベントハンドル回路（モジュール）４０は、内部バス２０に接続され、アクセラレータやＤＭＡＣ６からの割込み信号をイベントとして入力する手段と、内部バス２０を介したレジスタアクセスをイベントとして入力する手段を持つ。また、イベントごとに次に示すイベントステートを有する。（１）イベントの組合せによって新規イベントを生成する手段を示すフィールド、（２）新規イベントをトリガにして、ＣＰＵに対して割込みを発行する手段、（３）バスマスタとして内部バスにアクセスする手段、（４）バスマスタ処理終了時点でＣＰＵに対して割込みを発行する手段である。【選択図】      図１
2006107041.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを実行すると共に、外部からの割込みに対応した処理を行うＣＰＵと、
前記ＣＰＵの処理の一部を代行するアクセラレータと、
前記ＣＰＵおよび前記アクセラレータが取扱うデータを格納する外部メモリに接続され、その外部メモリのアクセス制御を行うメモリコントローラと、
周辺の入出力機器であるＩＯデバイスおよび前記外部メモリの間でＤＭＡ（Direct Memory Access）によるデータ転送を行うＤＭＡＣ（Direct Memory Access Controller）と、
が内部バスに接続され、更に、前記ＤＭＡＣと、前記ＩＯデバイスとがＩＯバスに接続されて構成されるシステムにおいて、前記内部バスに接続されて、イベントの制御を行うハードウェアイベントハンドルモジュールであって、
前記内部バスに接続され、前記アクセラレータまたは前記ＤＭＡＣから出力される割込み信号またはイベント信号をイベントとして入力する手段と、
入力したイベントの組合せから新規イベントを生成し、その生成した新規イベントをトリガにして、前記ＣＰＵに対して割込みを発生させる手段と、
入力したイベントの組合せから新規イベントを生成し、その生成した新規イベントをトリガにして、バスマスタとして前記内部バスにアクセスする手段と、
を備えることを特徴とするハードウェアイベントハンドルモジュール。
【請求項２】
前記内部バスに接続され、前記ＣＰＵを含む外部からのレジスタアクセスをイベントとして入力する手段を更に備えることを特徴とする請求項１に記載のハードウェアイベントハンドルモジュール。
【請求項３】
前記ハードウェアイベントハンドルモジュールは、
新規イベントを発生させるために必要なイベント回数である実イベントベース回数が設定されるレジスタを備え、
前記入力したイベントの組合せから新規イベントを生成する場合、
前記アクセラレータまたは前記ＤＭＡＣから入力したイベント回数を計測し、そのイベント回数が、前記実イベントベース回数と等しくなったとき、または、前記実イベントベース回数より大きくなったとき、新規イベントを生成する
ことを特徴とする請求項１または請求項２に記載のハードウェアイベントハンドルモジュール。
【請求項４】
前記入力したイベントが、複数種類のイベントであっても、１つのカウンタでイベント回数を計測することを特徴とする請求項３に記載のハードウェアイベントハンドルモジュール。
【請求項５】
前記バスマスタとして内部バスにアクセスする手段は、前記外部メモリ間のデータコピーを行うことを特徴とする請求項１に記載のハードウェアイベントハンドルモジュール。
【請求項６】
前記バスマスタとして内部バスにアクセスする手段は、他のレジスタ空間に対してデータリードを行うことを特徴とする請求項１に記載のハードウェアイベントハンドルモジュール。
【請求項７】
前記バスマスタとして内部バスにアクセスする手段は、他のレジスタ空間に対してデータライトを行うことを特徴とする請求項１に記載のハードウェアイベントハンドルモジュール。
【請求項８】
前記他のレジスタ空間に対してデータライトを行うことによって、前記アクセラレータを起動することを特徴とする請求項７に記載のハードウェアイベントハンドルモジュール。
【請求項９】
前記他のレジスタ空間に対してデータライトを行うことによって、前記ＤＭＡＣを起動することを特徴とする請求項７に記載のハードウェアイベントハンドルモジュール。
【請求項１０】
前記メモリコントローラは、
前記外部メモリへのアクセスを高速化する２次レベルキャッシュメモリを備え、
前記バスマスタとして内部バスをアクセスする手段は、
前記外部メモリまたは前記ハードウェアイベントハンドルモジュールが備えるメモリから前記２次レベルキャッシュメモリにデータをフェッチする
ことを特徴とする請求項１に記載のハードウェアイベントハンドルモジュール。
【請求項１１】
前記バスマスタとして内部バスをアクセスする手段は、
前記アクセラレータまたは前記ＤＭＡＣから割込み信号を入力したとき、
その入力した割込み信号に対応して、前記ＣＰＵが実行する割込みハンドルルーチンを前記２次レベルキャッシュメモリに転送し、その後前記ＣＰＵに対して前記割込み信号に相当する割込みを発生させる
ことを特徴とする請求項１０に記載のハードウェアイベントハンドルモジュール。
【請求項１２】
前記バスマスタとして内部バスをアクセスする手段は、
そのバスマスタとしての処理が終了したとき、前記ＣＰＵに対して割込みを発生させることを特徴とする請求項１に記載のハードウェアイベントハンドルモジュール。
【請求項１３】
前記アクセラレータは、画像表示エンジンを含むことを特徴とする請求項１に記載のハードウェアイベントハンドルモジュール。
【請求項１４】
前記ＩＯデバイスは、ストリーム入力が可能なＩＯデバイスを含むことを特徴とする請求項１に記載のハードウェアイベントハンドルモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit）、ＤＭＡＣ（Direct Memory Access Controller）およびその他のハードウェア（アクセラレータやＩＯデバイス）がバス接続されたシステムに関する。
【背景技術】
【０００２】
ＬＳＩ（Large Scale Integrated Circuit）の高密度実装化に伴い、大規模システムを１つのＬＳＩ上で実現するＳＯＣ（System On Chip）化や１つのパッケージ内に複数のＬＳＩを搭載するＳＩＰ（System In Package）という技術が本格化している。このような大規模化により、組込み用途に見られる通り、ＣＰＵとＭＰＥＧ（Moving Picture Experts Group）ビデオデコーダや大規模なＤＭＡＣモジュールなどの全く異なった機能を１つのＬＳＩ内に実装することが可能となっている。
このような組込み用途におけるＣＰＵと他モジュールとの間のインタフェースには、２つのアプローチがとられ、一方は割込み方式、他方はポーリング方式である。割込み方式では、ＤＭＡＣやアクセラレータ（ＣＰＵの処理を肩代わりするハードウェア）が生成する割込み要求をＣＰＵが受託し、そのＣＰＵが、ＤＭＡＣやアクセラレータの再起動を行ったり、アクセラレータの処理を引き継いだりする。ポーリング方式では、ＣＰＵとＤＭＡＣやアクセラレータが協調的に動作し、ＣＰＵが、ＤＭＡＣやアクセラータの処理終了を監視し、処理終了の場合は、次のステップに進む。
組込み用途では、ネットワークによるデータ転送やハードディスク装置とのデータ転送など、異なるデータ転送速度でデータ転送を行うＩＯデバイスやアクセラレータが独立に動作し、ＣＰＵに対して割込みを発生させる、または、ＣＰＵによるポーリングを行っているため、これらのオーバヘッドによる性能低下が発生すると共に、その性能低下の度合いを見積もることが困難である。
【０００３】
そこで、特許文献１に記載の技術では、ＣＰＵからのアクセスレイテンシ（命令の実行を開始してから実際にメモリのリード／ライトが可能になるまでの待ち時間）が小さいプロセッサコア内に状態監視レジスタを配置し、割込み、イベント、ポーリングのための情報を、その状態監視レジスタに格納することで、ＣＰＵによる割込みやポーリングの負荷を低減している。また、特許文献２に記載の技術では、外部から発生するイベントの性質の変化に応じて、割込み方式を使用するか、ポーリング方式を使用するかを自動的に選択する仕組みを設け、最適な周辺回路との並列処理と同期化処理を行っている。
【特許文献１】特開平１１−３３８７３５号公報（段落００５４〜００７０、図１）
【特許文献２】特開平８−２４９０２０号公報（段落００１５〜００２２、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１や特許文献２には、割込みやポーリング起因のＣＰＵ負荷を削減する方式が開示されている。特に、組込み用途のような、イベントドリブンの処理に対しては、割込みやポーリング方法の最適化によって性能向上が実現できる。
しかしながら、ＳＯＣやＳＩＰといった大規模ＬＳＩにおいて、地上デジタル放送などの大規模な実時間（リアルタイム）アプリケーションを実現する場合、ＣＰＵには、システム全体を管理するのみでなく、実時間処理のアプリケーションの一部を担当させたいといった要求がある。ところが、非同期で入力される割込みやポーリングは、ソフトウェア開発者にとって発生タイミングを予想し難く、割込みハンドルルーチンやポーリングによる性能低下のサイクル数を予測することが困難である。このような状況下で、実時間アプリケーションの一部をＣＰＵが担う場合、性能予測が困難なため、実時間で全ての機能の完逐を保証することはできない。
【０００５】
そこで、本発明は、前記問題に鑑み、ＣＰＵ、アクセラレータ、ＤＭＡＣなどがバス接続されたシステムにおいて、アクセラレータやＤＭＡＣが発行する割込みや、アクセラレータやＤＭＡＣの処理終了を判定するためのポーリングによるＣＰＵの性能低下を抑止し、実時間アプリケーションを中断することなく実現する手段を提供することを課題とする。
【課題を解決するための手段】
【０００６】
前記課題を解決する本発明においては、ＣＰＵ、アクセラレータ、メモリコントローラおよびＤＭＡＣが接続された内部バスに、ハードウェアイベントハンドルモジュールを接続する。ハードウェアイベントハンドルモジュールは、アクセラレータまたはＤＭＡＣから出力される割込み信号またはイベント信号をイベントとして入力する手段を備える。また、ＣＰＵを含む外部からの内部バスを介したレジスタアクセスをイベントとして入力する手段を備える。
【０００７】
また、ハードウェアイベントハンドルモジュールは、イベントごとに次に示す手段を有する。すなわち、入力したイベントの組合せから新規イベントを生成し、その生成した新規イベントをトリガにして、ＣＰＵに対して割込みを発行させる手段、および、バスマスタとして内部バスにアクセスする手段を備える。そして、バスマスタとして内部バスにアクセスする手段は、外部メモリ間のデータコピーを行い、他のレジスタ空間に対してデータリードを行い、または、他のレジスタ空間に対してデータライトを行う。このデータライトを行うことによって、アクセラレータまたはＤＭＡＣを起動する。また、バスマスタとして内部バスにアクセスする手段は、そのバスマスタとしての処理が終了したとき、ＣＰＵに対して割込みを発生させる。
【０００８】
更に、バスマスタとして内部バスをアクセスする手段は、アクセラレータまたはＤＭＡＣから割込み信号を入力したとき、その入力した割込み信号に対応して、ＣＰＵが実行する割込みハンドルルーチンをメモリコントローラ内の２次レベルキャッシュメモリに転送（プリフェッチ）し、その後ＣＰＵに対して割込み信号に相当する割込みを発生させる。
【０００９】
なお、請求項におけるハードウェアイベントハンドルモジュールは、発明を実施するための最良の形態におけるハードウェアイベントハンドル回路またはハードウェアイベントハンドル装置に相当する。
【発明の効果】
【００１０】
本発明によれば、イベントの組合せから新規イベントを生成し、ＣＰＵを介在することなく、その新規イベントをトリガにしてアクセラレータやＤＭＡＣの起動を行うことによって、ＣＰＵの処理負荷を低減し、処理性能を向上させることができる。また、割込みハンドルルーチンのプリフェッチを実現することによって、ＣＰＵの割込み処理による性能低下を抑えることができる。以上によれば、実時間アプリケーションを中断することなく実現することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００１２】
≪システムの構成と動作≫
図１は、本発明の実施の形態に係る地上デジタル放送向けシステムのブロック構成を示す。
地上デジタル放送向けシステムは、ＣＰＵ１と、ＭＰＥＧ２ビデオデコーダ２およびオーディオデコーダ３からなる各種アクセラレータ群と、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）やＲＤＲＡＭ（Rambus Dynamic Random Access Memory）などで構成される外部メモリ３８にアクセスするためのインタフェース部であるメモリコントローラ４と、周辺回路および外部メモリ３８の間でＤＭＡ（Direct Memory Access）を行うＤＭＡＣ６とが、内部バス２０によって接続されて構成される。更に、ハードウェアイベントハンドル回路（以下、「イベントハンドル回路」という）４０が内部バス２０に接続される。イベントハンドル回路４０は、割込み起因となるイベント信号２４、２５、２７、６１０をイベントとして入力することが可能であると共に、ＣＰＵ１を含む外部からの内部バス２０を経由したレジスタアクセスをイベントとして入力することが可能である。そして、それらのイベントの組合せから新規イベントを生成し、その生成した新規イベントをトリガにして、バスマスタとして他のハードウェアを起動する、または、ＣＰＵ１に対する割込みを発生させることが可能である。なお、イベントハンドル回路４０は、請求項におけるハードウェアイベントハンドルモジュールに相当する。
【００１３】
ＭＰＥＧ２ビデオデコーダ２は、ＭＰＥＧ２符号化ストリームをＭＰＥＧ２復号化し、動画データを生成するアクセラレータである。ここで、ＭＰＥＧ２符号化ストリームの入力および生成した動画データの出力は、内部バス２０およびメモリコントローラ４を介して、外部メモリ３８に対して行う。そのデータ転送方法には、ＭＰＥＧ２ビデオデコーダ２が主体的にバスマスタとして行うモデルと、ＤＭＡＣなどの第三者であるモジュールが行うモデルとが存在するが、本実施の形態の説明では、前者を使用する。なお、ＭＰＥＧ２符号化技術による１フレーム分の画像デコード（符号化された画像データの復号化）が終了した時点で、画像デコード終了イベント信号２４を生成し、イベントハンドル回路４０に転送する。このとき、そのイベントの取扱いを示すイベントＩＤ（詳細は後記）も同時に返送する。この画像デコード終了イベント信号２４は、ＭＰＥＧ復号化処理において容易に生成可能であるため、このイベント信号の具体的な生成方法の説明は省略する。
【００１４】
オーディオデコーダ３は、ＭＰＥＧ−２  Ａｕｄｉｏなどの符号化方式による音声符号化ストリームを復号化し、音声データを生成し、ＤＡＣ（Digital Analog Converter）１３にデジタル音声３２を出力し、また、所定のデジタル音声処理装置（図示せず）にデジタル音声３３を出力する。ＤＡＣ１３は、入力したデジタル音声３２に対してデジタル／アナログ変換を行い、アナログ音声信号３４を生成する。現在、オーディオデコード（符号化された音声データの復号化）処理は、ＤＳＰ（Digital Signal Processor）やソフトウェアにより容易に実現可能であるため、その詳細な説明は省略する。なお、オーディオデコーダ３は、ＭＰＥＧ２ビデオデコーダ２と同様に、１フレーム分のオーディオデコードが終了した時点で、オーディオデコード終了イベント信号２５を生成し、イベントハンドル回路４０に転送する。このとき、そのイベントの取扱いを示すイベントＩＤ（詳細は後記）も同時に返送する。
【００１５】
メモリコントローラ４は、外部メモリ３８と内部バス２０との間に配置され、外部メモリ３８のアクセス制御を行うコントローラである。また、ＡＲＩＢ（Association of Radio Industries and Businesses、社団法人電波産業会）が規定するデジタル放送規格に適応した表示方式を実現するため、プレーン合成回路７がデータパス２１を介して接続される。
【００１６】
プレーン合成回路７は、複数の表示プレーン（表示画像データを複数の層に属性分離したときの各層のデータ）をアルファブレンド（透過度を示すアルファ値を使って複数の画像データを半透明合成すること）によって１つのプレーンに合成後、フォーマット変換を行い、１０８０ｉフォーマット画像３１（横１９２０画素、縦１０８０画素のインタレースモード）および４８０ｉフォーマット画像３０（横７２０画素、縦４８０画素のインタレースモード）の２種を出力する。１０８０ｉフォーマット画像３１は、ＤＡＣ１５に入力され、デジタル画像３６として出力される。４８０ｉフォーマット画像３０は、ＮＴＳＣ（National Television Standards Committee）エンコーダ１４に入力され、アナログ画像３５として出力される。
【００１７】
ＤＭＡＣ６は、ＩＯバス２３を介して、複数のＩＯデバイスと接続され、ＩＯと外部メモリ３８との間でＤＭＡを行う。本実施の形態では、ＩＯバス２３に接続するＩＯデバイスとして、ストリーム選択回路８、リモコンインタフェース９およびＴＳ（Transport Stream）分離回路１０が示されている。ストリーム選択回路８は、複数の入力ストリームから１つのストリームを選択し、ＤＭＡを行う。リモコンインタフェース９は、シリアルインタフェース（ＲＳ−２３２Ｃなど）やＩ２Ｃバス（Inter IC Bus）インタフェースなどによって入力されるリモコン情報をＤＭＡによって転送する。ＴＳ分離回路１０は、入力されたストリーム（パケット）をＤＭＡによって読み出し、画像パケット、音声パケット、字幕パケット、ＥＰＧパケットなどに分割し、複数のＤＭＡチャネルを使用して、再度、ＤＭＡによりデータを転送する。
【００１８】
ストリーム選択回路８には、地上デジタルチューナ１６を介して入力されるストリームと、ＢＳデジタルチューナ１７を介して入力されるストリームと、ＩＥＥＥ１３９４インタフェース１８を介してネットワークから入力されるストリームと、ＨＤＤ制御部１９を介して、ハードディスク装置から入力されるストリームとが入力される。ストリーム選択回路８は、これらの中から１つのストリームを選択し、ＤＭＡによって、外部メモリ３８にデータを転送するモジュールである。
【００１９】
ＴＳ分離回路１０には、暗号処理を行うデスクランブラ１１がパス２９を介して接続され、地上デジタル放送で使用されるＭｕｌｔｉ−２暗号方式や、ネットワーク配信で使用されるＡＥＳ（Advanced Encryption Standard）暗号方式などによる暗号化や復号化を行う。デスクランブラ１１は、ＴＳ分離回路１０からパス２９を介して入力したパケットに暗号化がなされていない場合、その入力したパケットをそのままパス２９経由でＴＳ分離回路１０に返送する。
【００２０】
なお、これらの周辺モジュールは、本実施の形態を説明するために掲げたモジュールであり、本発明は、周辺モジュールの種類について制限を持たない。
【００２１】
<ＣＰＵの構成と動作>
図２は、本発明の実施の形態に係るＣＰＵの詳細構成を示す。ＣＰＵ１は、一般的なハーバードアーキテクチャ型のＣＰＵである。ＣＰＵ１は、アドレス選択器１００、命令キャッシュ１０１、命令デコーダ１０２、レジスタ１０３、演算器１０４、データキャッシュ１０５およびキャッシュフェッチコントローラ１０６を含んで構成される。
【００２２】
アドレス選択器１００が生成するプログラムカウンタ値１０７に従って、命令１０８が、命令キャッシュ１０１から読み出され、出力される。その命令１０８は、命令デコーダ１０２に入力され、デコードされて、レジスタ１０３を読み出すためのレジスタ番号１０９および命令種１１５を出力する。命令種１１５がブランチ命令の場合は、ブランチ信号１１２が生成され、アドレス選択器１００に出力される。命令種１１５は、演算器１０４の制御命令、ロード命令、ストア命令など、命令の種類に従って、ＣＰＵ１全体を制御する信号である。
レジスタ１０３から読み出されたソースデータ１１０は、演算器１０４に投入され、命令種１１５に従って演算されて、その演算結果１１１がレジスタ１０３にライトバックされる。また、命令種１１５がブランチ命令の場合、演算結果１１１はブランチアドレスとして使用され、アドレス選択器１００に返送され、次のプログラムカウンタ値１０７の生成に使用される。命令種１１５がロード命令やストア命令の場合、データキャッシュ１０５とレジスタ１０３との間で、パス１１３を介してデータ転送が行われる。
【００２３】
命令キャッシュ１０１がキャッシュミスをした場合、パス１１６を介してキャッシュフェッチコントローラ１０６に対してフェッチ要求を発行し、内部バス２０に接続されたキャッシュフェッチコントローラ１０６は、外部メモリ３８に対してアクセスを行う。同様に、データキャッシュ１０５がキャッシュミスをした場合、パス１１４を介してキャッシュフェッチコントローラ１０６に対してフェッチ要求を発行し、キャッシュフェッチコントローラ１０６は、内部バス２０を介して外部メモリ３８にアクセスを行う。データキャッシュを有するシステムでは、通常のロード命令やストア命令に加え、データキャッシュのスワップ（データの入れ替え）もあり、これも同様にキャッシュフェッチコントローラ１０６を使用して処理する。
なお、アドレス選択器１００には、外部からの割込み信号４２が入力され、割込み処理にも対応する。
【００２４】
図３は、本発明の実施の形態に係るＣＰＵ内のアドレス選択器の詳細構成を示す。アドレス選択器１００は、割込み分岐アドレスレジスタ１０００、選択信号生成器１００１、セレクタ１００２、プログラムカウンタ１００３およびインクリメンタ１００４を含んで構成される。
【００２５】
アドレス選択器１００は、セレクタ１００２によって、主として３つのアドレスの中から１つのアドレス１００６を選択し、プログラムカウンタ１００３に格納し、そのプログラムカウンタ１００３からプログラムカウンタ値１０７を出力する。セレクタ１００２に入力されるアドレスには、通常の命令列時に、現在のプログラムカウンタ１００３に対し、インクリメンタ１００４がインクリメント（＋１更新）したインクリメントアドレス１００７、ブランチ命令時に選択されるブランチアドレス１１１および割込み発生時に選択される割込みアドレス１００５の３つがある。セレクタ１００２は、選択信号生成器１００１により生成される選択信号１００８によって制御される。選択信号生成器１００１は、割込み信号４２およびブランチ信号１１２によって制御される。その優先順位は、高い順に、割込み、ブランチ、インクリメントである。
割込み信号４２は、複数のビット幅を有し、異なった割込みごとに配置される。割込み時に選択される割込みアドレス１００５は、割込み分岐アドレスレジスタ１０００に格納されたアドレスから選択される。これらは、異なった割込みに対し、高速で割込み処理を選択するため、割込み分岐アドレスレジスタ１０００は複数のセットで構成される。
【００２６】
ＣＰＵ１およびアドレス選択器１００の説明で示したように、ＣＰＵ１はシンプルな構成である。
【００２７】
<その他の構成と動作>
図４は、本発明の実施の形態に係るメモリコントローラの詳細構成を示す。メモリコントローラ４は、外部メモリ３８との接続パス３７および内部バス２０の間に配置され、内部バス２０に接続されたスレーブモジュールとして動作する。メモリコントローラ４は、内部バスインタフェース４００、リードＦＩＦＯ４０４、ライトＦＩＦＯ４０５、プレーン制御回路４０６、２次レベルキャッシュメモリ４１０およびプレーンインタフェース４１２を含んで構成される。
【００２８】
内部バスインタフェース４００は、内部バス２０に接続され、アクセスがリードの場合、リードＦＩＦＯ４０４を介して、または、アクセスがライトの場合、ライトＦＩＦＯ４０５を介して、２次レベルキャッシュメモリ４１０にアクセスする。２次レベルキャッシュメモリ４１０がキャッシュヒットの場合、外部メモリ３８へのアクセスと比較して高速にアクセス可能であり、特にリードアクセスの場合には、レイテンシ（待ち時間）を低減し、性能向上を図ることができる。
【００２９】
メモリコントローラ４は、これら通常のバススレーブアクセスのデータパスに加え、画像表示用のデータフェッチ用インタフェースであるプレーンインタフェース４１２を備える。プレーンインタフェース４１２は、２次レベルキャッシュメモリ４１０にパス４１１を介して接続され、画像プレーンの読出しを行い、プレーン合成回路７にプレーンデータ２１ｂを出力する。従って、プレーンインタフェース４１２は、２次レベルキャッシュメモリ４１０とプレーン合成回路７との間に配置される一種のＤＭＡとして動作する。具体的には、プレーン合成回路７からＤＭＡ要求２１ａを受け取って動作を行う。
【００３０】
プレーン制御回路４０６は、プレーンインタフェース４１２を制御する。プレーン制御回路４０６は、ＡＲＩＢで規定する画像表示方法に従って、複数の画像プレーンの転送を実現するための情報がレジスタマッピングされたものを保持し、これらの情報を元に外部メモリ３８上の画像プレーンのアドレスを生成するモジュールである。従って、プレーン制御回路４０６は、内部バスインタフェース４００にパス４０３を介して接続され、画像プレーンの転送のためにレジスタ設定を行うことができる。なお、１プレーンの画像表示を終了した時点で、次のプレーンにフリップする（切り換える）必要がある。これは、プレーン領域の開始アドレスを変更することで実現する。
【００３１】
図５は、本発明の実施の形態に係るプレーン合成回路の詳細構成を示す。プレーン合成回路７は、ＡＲＩＢの規格に従って画像を表示するブロックである。プレーン合成回路７は、バッファメモリコントローラ７１、バッファメモリ７２、プレーン合成データパス回路７３、ビデオスケーラ７４およびフォーマット変換回路７５を含んで構成される。
【００３２】
バッファメモリコントローラ７１は、プレーン合成データパス回路７３からデータ読出し要求を示す要求信号７００を受け取り、メモリコントローラ４に対してＤＭＡ要求２１ａを発行する。それに対応して、メモリコントローラ４内のプレーンインタフェース４１２（図４参照）は、プレーンデータ２１ｂを返送し、バッファメモリ７２に格納する。ここで、バッファメモリ７２内のどのエントリにプレーンデータ２１ｂを格納するかは、バッファメモリコントローラ７１が生成するエントリアドレス７０３により決定する。バッファメモリ７２に格納するプレーンデータ２１ｂは、静止画プレーン７０４、動画・静止画切替えプレーン７０５、文字図形プレーン７０６、字幕プレーン７０７、ＥＰＧ（Electronic Program Guide、電子番組表）プレーン７０８、メニュープレーン７０９、アルファプレーン７１０および動画プレーン７１１である。ＥＰＧプレーン７０８は、ＡＲＩＢで規定する番組情報を示す。アルファプレーン７１０は、複数の画像の合成比率を示すパラメータである。動画プレーン７１１を除く７つのプレーンは、プレーン合成データパス回路７３に入力される。動画プレーン７１１は、ビデオサイズの拡大および縮小を行うビデオスケーラ７４に入力され、更に、ビデオスケーラ７４による動画プレーンスケーリング結果７１２が、プレーン合成データパス回路７３に入力される。また、バッファメモリコントローラ７１は、１フレーム分のデータ転送が終了した時点で、表示フリップイベント信号２７を出力する。
【００３３】
プレーン合成データパス回路７３は、入力された複数のプレーンを重ね合わせて表示プレーン７１３を生成し、その生成した表示プレーン７１３をフォーマット変換回路７５に入力する。フォーマット変換回路７５は、ＡＲＩＢの規格による表示方法に従って、１０８０ｉフォーマット画像３１（横１９２０画素、縦１０８０画素のインタレースモード）および４８０ｉフォーマット画像３０（横７２０画素、縦４８０画素のインタレースモード）の２種を出力する。
【００３４】
図６は、本発明の実施の形態に係るプレーン合成回路内のプレーン合成データパス回路の詳細構成を示す。プレーン合成データパス回路７３は、判断器７３０、アルファブレンド回路Ａ７３２、アルファブレンド回路Ｂ７３４、アルファブレンド回路Ｃ７３６、アルファブレンド回路Ｄ７３８、アルファブレンド回路Ｅ７４０、アルファ値生成回路７４１およびプレーン合成制御回路７４８を含んで構成される。プレーン合成データパス回路７３は、バッファメモリ７２（図５参照）から入力された静止画プレーン７０４、動画・静止画切替えプレーン７０５、文字図形プレーン７０６、字幕プレーン７０７、ＥＰＧプレーン７０８、メニュープレーン７０９およびアルファプレーン７１０、ならびに、ビデオスケーラ７４（図５参照）から入力された動画プレーンスケーリング結果７１２を重ね合わせ、１つの表示プレーン７１３を生成する。この重ね合わせ方法は、ＡＲＩＢの規格に従って行う。
【００３５】
まず、静止画プレーン７０４は、動画・静止画切替えプレーン７０５に従い、判断器７３０によって表示の有無が判断され、その判断結果により第１の表示データ７３１が生成される。ここで、静止画プレーン７０４を表示しない場合は、動画プレーンスケーリング結果７１２を表示する。すなわち、静止画プレーン７０４と動画プレーンスケーリング結果７１２とが排他的に選択されて表示される。第１の表示データ７３１および文字・図形プレーン７０６は、アルファブレンド回路Ａ７３２に入力され、アルファ値７４２に従って合成され、その結果として第２の表示データ７３３が生成される。第２の表示データ７３３および字幕プレーン７０７は、アルファブレンド回路Ｂ７３４に入力され、アルファ値７４３に従って合成され、その結果として第３の表示データ７３５が生成される。第３の表示データ７３５およびＥＰＧプレーン７０８は、アルファブレンド回路Ｃ７３６に入力され、アルファ値７４４に従って合成され、その結果として第４の表示データ７３７が生成される。第４の表示データ７３７およびメニュープレーン７０９は、アルファブレンド回路Ｄ７３８に入力され、アルファ値７４５に従って合成され、その結果として第５の表示データ７３９が生成される。第５の表示データ７３９および動画プレーンスケーリング結果７１２は、アルファブレンド回路Ｅ７４０に入力され、アルファ値７４７に従って合成され、その結果として表示プレーン７１３が生成される。
【００３６】
各アルファ値は、２つのプレーンの重ね合わせの度合いを示すパラメータであり、アルファ値生成回路７４１によってアルファプレーン７１０に基づいて生成される。アルファ値７４２、７４３、７４４、７４５は、それぞれ独立したアルファ値である。アルファ値７４７は、その４つのアルファ値から演算した結果である。本来、動画プレーンスケーリング結果７１２は、動画・静止画切替えプレーン７０５によって静止画プレーン７０４との切替えが行われ、アルファ値７４２によって重ね合わせが行われる。しかしながら、ここでは、その切替えの選択を最終段において行うため、アルファ値の重ね合わせが必要になる。
【００３７】
なお、プレーン合成制御回路７４８は、プレーン合成データパス回路７３の全体制御を行うと共に、プレーン合成処理の状況に応じて次のデータの読出しを要求する要求信号７００をバッファメモリコントローラ７１（図５参照）に出力する。
【００３８】
図７は、本発明の実施の形態に係るＤＭＡＣの詳細構成を示す。ＤＭＡＣ６は、ＩＯバス２３と内部バス２０との間に配置され、ＩＯデバイス、ＩＯバス２３、内部バス２０およびメモリコントローラ４を介したＤＭＡを行うモジュールである。ＤＭＡＣ６は、チャネルステートメモリ６００、アドレス発生器６０１、データバッファ６０２、チャネル選択器６０３およびＤＭＡ制御回路６０８を含んで構成される。
【００３９】
ＤＭＡＣ６は、複数のチャネル（本実施の形態ではＮチャネル）で動作するチャネル型のＤＭＡエンジンである。チャネルステートメモリ６００内には、Ｎ個のチャネル６０７が保存される。このチャネル６０７には、ＤＭＡを実現するための情報が格納される。予め、チャネル６０７には、ソフトウェアで転送内容を指定する。なお、複数のチャネル６０７から１つのチャネルを選択し、チャネルアドレス情報６０４およびチャネルデータ情報６０６を生成して処理を行う。
【００４０】
チャネル６０７に指定されたＤＭＡ転送の内容が、メモリからのＩＯへの転送の場合、データのプリフェッチを行うため、メモリリード要求としてチャネルアドレス情報６０４をアドレス発生器６０１に転送し、アドレス発生器６０１は、内部バス２０に対してリードアクセスを行う。データが返送された時点で、チャネルデータ情報６０６に従って、データバッファ６０２内にデータを格納しておく。この時点で、ＩＯバス２３からＤＭＡアクセス要求２３ａが発行された場合、そのＤＭＡアクセス要求２３ａがチャネル選択器６０３に入力される。そして、チャネル選択器６０３が、どのチャネルが選択されたかを判断し、パス６０５を介して、チャネルステートメモリ６００を読出し、チャネルデータ情報６０６に従って、データバッファ６０２を読出し、ＩＯバス２３にデータ２３ｂを返送する。このような処理を繰り返し行うことで、ＤＭＡライトアクセス、すなわち、メモリからのＩＯへのデータ転送を行う。
【００４１】
チャネル６０７に指定されたＤＭＡ転送の内容が、ＩＯからのメモリへの転送の場合、ＤＭＡＣ６およびＩＯがＤＭＡ転送レディになった後、チャネル選択器６０３は、ＤＭＡアクセス要求２３ａの待ち状態となる。ＩＯからＤＭＡアクセス要求２３ａが発行された場合、チャネル選択器６０３は、指定されたチャネル番号６０５の待ち状態となる。次に、ＩＯバス２３を介してデータ２３ｂがデータバッファ６０２に転送された時点で、待ち状態となったチャネル６０７が再開し、メモリライト要求を示すチャネルアドレス情報６０４を生成し、アドレス発生器６０１に転送する。アドレス発生器６０１は、メモリライト要求２０ａを内部バス２０に発行し、内部バス２０におけるバス権を得た時点で、データバッファ６０２からライトデータ２０ｂを読出し、内部バス２０にデータ転送する。このような処理を繰り返し行うことで、ＤＭＡリードアクセス、すなわち、メモリからのＩＯへのデータ転送を行う。
【００４２】
なお、ＤＭＡＣ６の全体制御を行うものが、ＤＭＡ制御回路６０８であり、ステートマシンなどの制御回路である。特に、ＤＭＡ転送が終了した時点で、ＤＭＡ転送終了イベント信号６１０を生成し、出力することができる。このＤＭＡ転送終了イベント信号６１０のフォーマットは、ＤＭＡ転送が終了したことを示すフラグおよびチャネル６０７に示されたイベント番号の２種である。
【００４３】
図８は、本発明の実施の形態に係るＤＭＡＣ内のチャネルの詳細構成を示す。本実施の形態の説明では、ＤＭＡ転送に２次元アドレス変換機能を有することを前提に記載するが、本発明は、ＤＭＡ転送方式に関して制限を持たず、他の方式であってもよい。
【００４４】
チャネル６０７は、ＤＭＡ転送の開始アドレスを示す開始アドレスフィールド６１１と、転送幅を示す幅フィールド６１２と、転送高さを示すための繰り返し数フィールド６１３と、次の幅までのピッチを示すピッチフィールド６１４と、メモリからのＩＯへのＤＭＡライト転送か、または、ＩＯからのメモリへのＤＭＡリード転送かを示すＤＭＡモードフラグ６１５と、イベントハンドル回路４０に対して転送するイベント番号６１６と、そのイベントを発生させるか発生させないかを示すイベント発生イネーブル６１７とから構成される。図８の右側に示すように、開始アドレスフィールド６１１と、幅フィールド６１２と、繰り返し数フィールド６１３と、ピッチフィールド６１４との組合せで、２次元転送を実現する。
図７のＤＭＡ制御回路６０８は、イベント発生イネーブル６１７がセットされ、最後のＤＭＡ転送が終了したことを認識すると、ＤＭＡ転送終了イベント信号６１０を出力する。
【００４５】
<ハードウェアイベントハンドル回路の構成と動作>
図９は、本発明の実施の形態に係るハードウェアイベントハンドル回路（以下、「イベントハンドル回路」という）の詳細構成を示す。イベントハンドル回路４０は、内部バスインタフェース４０００、イベント選択回路４００１、イベントステートメモリ４００２、イベントステートレジスタ４００３、加算器４００４、バスマスタ要求生成回路４００５および割込み発生回路４００６を含んで構成される。
【００４６】
イベントハンドル回路４０は１個のエージェントとして内部バス２０に接続され、イベントハンドル回路４０自身はバスマスタおよびバススレーブとして動作可能である。また、複数のイベント信号を入力可能で、その組合せから１つの新規イベントを生成し、その新規イベントにより、ＣＰＵ１に対して割込み信号４２を発行することができる。更に、前記新規イベントに対応して、バスマスタとして内部バス２０を介して他のハードウェアにアクセスする手段を持つ構成である。
イベントハンドル回路４０と内部バス２０との間のアクセスは、内部バスインタフェース４０００を介して行われる。バススレーブとしての動作は、イベントハンドル回路４０内のアドレスマッピングされたレジスタにアクセスすることである。すなわち、パス４０１１を介して、イベント選択回路４００１およびイベントステートメモリ４００２にアクセスすることによって行われる。バスマスタとしての動作は、バスマスタ要求生成回路４００５が生成するバスマスタ要求４０１７によって行われる。
【００４７】
このイベントハンドル回路４０の詳細な説明を行う前に、図１０を参照してイベント選択回路の詳細な説明を行い、図１１を参照してイベントステートの内容の詳細な説明を行う。
【００４８】
図１０に示すように、イベント選択回路４００１は、複数セットのイベントレジスタ４０３０、選択回路４０３６およびラウンドロビン選択回路４０３７を含んで構成される。イベントレジスタ４０３０は、イベントが発生したことを記憶するものであり、バリッド４０３１およびイベントカウントレジスタ４０３２の２つのフィールドに分かれる。このイベントレジスタ４０３０は、同一レジスタに対して複数のアドレスマッピングがなされ、パス４０１１を介して、少なくとも２種類のアクセス方式が可能である。１つ目は、イベントレジスタ４０３０をクリアするアクセス方式であり、バリッド４０３１およびイベントカウントレジスタ４０３２をクリアする。２つ目は、イベントレジスタ４０３０をインクリメントするアクセス方式であり、バリッド４０３１に１を設定し、イベントカウントレジスタ４０３２をインクリメントする。このインクリメントは、インクリメンタ４０３３によって行われる。すなわち、インクリメンタ４０３３は、イベントカウントレジスタ４０３２の現在値４０３４を入力し、その入力した値に１を加えたものを更新値４０３５としてイベントカウントレジスタ４０３２に設定する。複数セットのイベントレジスタ４０３０の選択は、選択回路４０３６によって行われる。
【００４９】
また、イベントレジスタ４０３０は、他モジュールから入力されるイベント信号２４、２５，２７，６１０によって、インクリメントすることができる。例えば、イベント番号およびイベント発生を示す信号で構成されるＤＭＡ転送終了イベント信号６１０が入力された場合、選択回路４０３６は、ＤＭＡ転送終了イベント信号６１０中のイベント番号によりどのセットのイベントレジスタ４０３０を更新するかを決定し、そのイベントカウントレジスタ４０３２をインクリメンタ４０３３により更新し、バリッド４０３１に１を設定する。
イベントレジスタ４０３０内のバリッド４０３１が設定されているセットはラウンドロビン選択回路４０３７に入力され、ラウンドロビン方式のアービトレーション（複数の要求に対する調停）により１つのセットが選択され、対応するイベント信号４０１０を出力する。イベント信号４０１０は、イベント発生を示すレベル信号４０１０ａ、対応するイベントＩＤおよびイベントカウント数４０１０ｂとから構成される。なお、本実施の形態の説明ではラウンドロビン方式のアービトレーションを用いているが、本発明は、これに限定されることはなく、他のアービトレーション方式でもよい。なお、ラウンドロビン選択回路４０３７に選択されたイベントレジスタ４０３０内のバリッド４０３１およびイベントカウントレジスタ４０３２は、その選択された時点でクリアされる。
このように、イベント選択回路４００１は、イベント信号２４、２５，２７，６１０およびレジスタアクセスによって、イベント発生をカウントする手段を有する。
【００５０】
次に、図１１を参照して、イベントステートメモリ４００２およびイベントステートレジスタ４００３に格納するイベントステートの詳細な説明を行う。イベントステートは、イベントカウンタ４０２０、実イベントベース回数４０２１、割込みイネーブルＢ４０２２、割込みイネーブルＡ４０２３、バスマスタイネーブル４０２４、転送モード４０２５、転送元アドレス４０２６、転送幅４０２７、転送先アドレス４０２８および転送データ４０２９を含んで構成される。
【００５１】
イベントカウンタ４０２０は、これまでに発生した総イベント数を示す。実イベントベース回数４０２１は、新規イベントを発生させるために必要なイベント回数を示す。割込みイネーブルＢ４０２２は、新規イベントが発生した際にＣＰＵ１に対して割込み信号４２を発生させるか否かを指定する。バスマスタイネーブル４０２４は、新規イベントが発生した際にそのイベントに関してバスマスタとしてアクセスするか否かを指定する。割込みイネーブルＡ４０２３は、バスマスタ処理が終了した時点でＣＰＵ１に対して割込みを発生させるか否かを指定する。ここで、バスマスタとして３種類の動作を選択可能で、１つ目はメモリからのメモリへの転送を行うＭＥＭＣＯＰＹモードであり、２つ目は転送データ４０２９をメモリ領域に転送するＭＥＭＷＲＩＴＥモードであり、３つ目はメモリからデータを読み出すＭＥＭＲＥＡＤモードである。転送モード４０２５は、それらのモードの切替えを行う。
【００５２】
転送元アドレス４０２６は、ＭＥＭＣＯＰＹモード時およびＭＥＭＲＥＡＤモード時の転送元となるアドレスを示す。転送幅４０２７は、その転送幅を示す。転送先アドレス４０２８は、ＭＥＭＣＯＰＹモード時およびＭＥＭＷＲＩＴＥモード時に転送先となるアドレスを示す。転送データ４０２９は、ＭＥＭＷＲＩＴＥモード時にライトするデータを格納する。これらの情報を使用して、新規イベントが発生した際に、ＣＰＵ１に対して割込みを発生させるか、バスマスタとしてアクセスするかを指定する。また、バスマスタ処理が終了した時点でＣＰＵ１に対して割込みを発生させることを指定することができる。
【００５３】
再び図９に戻り、イベントハンドル回路４０の説明を行う（適宜図１１参照）。
イベントステートメモリ４００２は、イベントステートを格納するメモリで、イベントＩＤ数分のエントリ数で構成されるメモリである。イベントが発生した場合、すなわち、イベント信号４０１０ａのバリッドが１の場合、イベント選択回路４００１により生成されたイベント信号４０１０が入力され、対応するイベントＩＤをエントリとして、イベントステートメモリ４００２の内容が読み出され、イベントステート出力４０１２をイベントステートレジスタ４００３に保存する。イベントステートレジスタ４００３のうち、イベントカウンタフィールド４０２０および実イベントベース回数４０２１が加算器４００４に入力され、イベント選択回路４００１から入力されるイベントカウント数４０１０ｂとイベントカウンタフィールド４０２０を加算する。この加算値４０１８によってイベントステートメモリ４００２内のイベントカウンタ４０２０が更新される。この加算値４０１３および実イベントベース回数４０２１は比較され、加算値４０１８が実イベントベース回数４０２１よりも大きい、または、等しい場合、新規イベント信号４０１４を生成し、バスマスタ要求生成回路４００５および割込み発生回路４００６に転送する。
【００５４】
バスマスタ要求生成回路４００５は、新規イベント信号４０１４およびイベントステートレジスタ４００３内のバスマスタイネーブル４０２４（パス４０１６経由による）が共に１の場合、バスマスタとして動作すると判断し、転送モード４０２５に従って、アドレス生成を行ってバスマスタ要求４０１７を生成し、内部バスインタフェース４０００に出力する。
【００５５】
転送モード４０２５がＭＥＭＣＯＰＹモードである場合、まず、転送元アドレス４０２６および転送幅４０２７により、メモリリード要求４０１７を生成し、内部バスインタフェース４０００に転送する。内部バスインタフェース４０００は、そのメモリリード要求４０１７に従って内部バス２０に対してリード処理を行う。対応するデータが返送された時点で、バスマスタ要求生成回路４００５は、転送先アドレス４０２８および転送幅４０２７を使用して、メモリライト要求４０１７を生成し、内部バスインタフェース４０００に出力する。内部バスインタフェース４０００は、先の返送されたデータや、メモリライト要求４０１７で示されたアドレスなどの情報に従って、内部バス２０に対してライト処理を行う。
【００５６】
転送モード４０２５がＭＥＭＷＲＩＴＥモードの場合、転送先アドレス４０２８および転送幅４０２７によって、メモリライト要求４０１７を生成する。ＭＥＭＷＲＩＴＥモード時のライトデータは転送データ４０２９を使用し、内部バスインタフェース４０００は、これらの情報を元に、内部バス２０に対してライト処理を行う。
【００５７】
転送モード４０２５がＭＥＭＲＥＡＤモードの場合、転送元アドレス４０２６および転送幅４０２７により、メモリリード要求４０１７を生成し、内部バスインタフェース４０００に転送する。内部バスインタフェース４０００は、そのメモリリード要求４０００に従って、内部バス２０に対してリード処理を行う。この返送されたデータは、すぐには使用されないが、メモリコントローラ４内の２次レベルキャッシュメモリ４１０に格納され、２次レベルキャッシュメモリ４１０へのプリフェッチとして動作する。
【００５８】
これらの振る舞いにより、複数イベントの組合せにより新規イベントを生成し、新規イベントにより、ＭＥＭＣＯＰＹモードによるメモリ間のデータの引渡しや、ＭＥＭＷＲＩＴＥモードにより、ＤＭＡＣやアクセラレータの起動のためのメモリライトを行うことができる。
割込み発生回路４００６は、新規イベント信号４０１４と割込みイネーブルＢ４０２２（パス４０１５経由による）が共に１の場合、ＣＰＵ１に対して割込み信号４２を出力する。また割込みイネーブルＡ４０２３が１の場合、バスマスタ処理が終了した時点で、ＣＰＵ１に対して割込み信号４２を出力する。
【００５９】
≪実際の例への適用≫
続いて、本発明の実施の形態を適用した実際の例について説明する。その例には、オーディオデコードの実現方法、画像表示のフリップ方法、割込みハンドルルーチンのプリフェッチ方法およびＣＰＵと他のハードウェアとの協調処理方式がある。
【００６０】
まず、本発明の実施の形態を適用したオーディオデコード（符号化された音声データの復号化）の実現方法を説明する。
図１に示す地上デジタル放送向けシステムにおいて、例えば、地上デジタルチューナ１６の出力に対してオーディオデコードを行う場合、ストリーム選択回路８は、地上デジタル放送のストリームを選択し、そのストリームデータをＤＭＡＣ６に対してＤＭＡ転送し、ＤＭＡＣ６は、それに対応して外部メモリ３８に対してＤＭＡ転送を行う。所定のＤＭＡ転送が終了した時点で、ストリーム選択回路８に対応してＤＭＡＣ６内に配置されたＤＭＡチャネルによって、ＤＭＡ転送終了イベント信号６１０が生成される。イベントハンドル回路４０において、このイベントに関するイベントＩＤを０とする。
イベントＩＤが０に対応するイベントステート（図１１参照）には、バスマスタイネーブル４０２４に１を設定し、割込みイネーブルＢ４０２２および割り込みイネーブルＡ４０２３に０を設定し、転送モード４０２５にＭＥＭＷＲＩＴＥモードを設定し、転送データ４０２９には、ＴＳ分離回路１０を起動するためのレジスタ設定シーケンスを設定しておく。これによって、ストリームデータのＤＭＡ転送が終了した後、ＴＳ分離処理が起動される。
【００６１】
同様に、ＴＳ分離回路１０では、画像パケット、音声パケット、字幕パケットおよびＥＰＧパケットのそれぞれにＤＭＡチャネルを配置し、音声パケットに対応するＤＭＡチャネルに関し、所定のデータ量のＤＭＡ転送が終了した時点でＤＭＡ転送終了イベント信号６１０を発生させるように設定しておく。イベントハンドル回路４０において、このイベントに関するイベントＩＤを１とする。また、オーディオデコーダ３のオーディオデコード終了イベント信号２５に関し、同一のイベントＩＤである１を設定しておく。
イベントＩＤが１に対応するイベントステート（図１１参照）には、実イベントベース回数４０２１に２を設定し、割込みイネーブルＢ４０２２および割込みイネーブルＡ４０２３に０を設定し、バスマスタイネーブル４０２４に１を設定し、転送モード４０２５にＭＥＭＷＲＩＴＥモードを設定し、転送データ４０２９にオーディオデコーダ３を起動するためのレジスタ設定シーケンスを設定しておく。これによれば、オーディオデコード終了イベント信号２５により、オーディオデコーダ３がアイドル状態であることを示し、ＤＭＡ転送終了イベント信号６１０により、所定のデータ量の音声パケットがたまったことを示す。イベントハンドル回路４０は、この２つの異なったイベント（複数種類の信号）の入力により、新規イベント４０１４（図９参照）を生成し、それに対応してオーディオデコード処理を起動する。この一連のシーケンスにより、ＣＰＵ１を介在することなく、オーディオデコード処理を実現することができる。
【００６２】
また、オーディオデコード処理のシーケンスと同様の設定を、ＭＰＥＧ２ビデオデコード処理に関して行うことで、所定の画像データが外部メモリ３８にＤＭＡ転送されたときに、ＭＰＥＧ２ビデオデコード処理を起動することが可能である。更に、このイベントステートには、割込みイネーブルＢ４０２２に１を設定しておく。これにより、次の１画面の画像デコードを開始する新規イベント、すなわち、一つ前の画像のデコードが終了したというイベントで割込みを発生させることが可能となる。ＣＰＵ１で実行される割込みハンドルルーチンでは、画像表示のフリップのための下準備などが行われる。一般的に、ＭＰＥＧ２は１秒間に３０枚のフレームを有するため、このイベントは１秒間に３０回発生する。
【００６３】
次に、本発明の実施の形態を適用した画像表示のフリップ方法を説明する。
図１に示す地上デジタル放送向けシステムにおいて、プレーン合成回路７は、１プレーンの表示が終了したことを受けて、表示フリップイベント信号２７を生成する。これに対応するイベントステートに、プレーン制御回路４０６（図４参照）に設定する画像フリップ情報を設定するＭＥＭＣＯＰＹシーケンスを記述することによって、ＣＰＵ１を介在することなく、画像のフリップが可能となる。このＭＥＭＣＯＰＹシーケンスは、先のＭＰＥＧ２ビデオデコード処理の割込みハンドルルーチン内で予め設定可能にしておく。なお、この画像フリップの頻度は、１秒間に６０回程度であり、割込みによる性能低下の度合いも低いため、割込みイネーブルＢ４０２２の設定による割込み方式を使用しても問題ない。
【００６４】
続いて、本発明の実施の形態を適用した、割込みハンドルルーチンの２次レベルキャッシュメモリ４１０へのプリフェッチ方法を説明する。割込みハンドルルーチンは割込みに対応してＣＰＵ１によって実行されるプログラムであるが、そのプログラム自体は外部メモリ３８に記憶されている。
ＣＰＵ１において、処理ステップ数の多い割込みハンドルルーチンは、命令キャッシュ１０１（図２参照）のミスヒット率が高くなり、性能低下が大きくなる。そこで、これに対応するイベントステート（図１１参照）には、割込みイネーブルＡ４０２３およびバスマスタイネーブル４０２４に１を設定し、転送モード４０２５にＭＥＭＲＥＡＤモードを設定する。また、転送データ４０２９は、割込みハンドルルーチンとする。これにより、新規イベント４０１４（図９参照）が発行された時点で、２次レベルキャッシュメモリ４１０に対して割込みハンドルルーチンのプリフェッチを行う。そして、そのプリフェッチのためのデータ転送が終了した時点で、割込みイネーブルＡ４０２３によってＣＰＵ１に対して本来の割込みを発生させることで、その割込みに対応した割込みハンドルルーチンの命令キャッシュミスを低減できる。
【００６５】
同様に、データアクセス容量の大きな割込みハンドルルーチンでは、参照データをプリフェッチすることで、その処理性能を向上させることができる。このようなプリフェッチ技術を使用した割込み方式により、ＥＰＧプレーンのデコードや字幕プレーンのデコードなどをＣＰＵ１によって実現できる。
【００６６】
更に、本発明の実施の形態を適用した、ＣＰＵ１とアクセラレータやＩＯデバイスとの協調処理方式について説明する。
図１に示す地上デジタル放送向けシステムにおいて、例えば、ＣＰＵ１によるアプリケーションの実行で生成された演算結果を、アクセラレータが使用するモデルについて説明する。この場合、まず、ＣＰＵ１は、アプリケーションを実行し、演算結果を生成する。次に、ＣＰＵ１は、アクセラレータがアイドル状態となるまでポーリングし、アイドル状態となった時点で、アクセラレータを起動する。アクセラレータおよびＣＰＵ１が同期を取りながら処理を行う場合、所定の同期の時点と次の同期の時点との間において、アクセラレータの処理量がＣＰＵ１の処理量より大きいとき、ＣＰＵ１によるポーリングサイクルの比重が増え、性能が低下することになる。
【００６７】
これに対して本発明の実施の形態を適用した場合、イベントステート（図１１参照）には、バスマスタイネーブル４０２４に１を設定し、実イベントベース回数４０２１に２を設定し、このイベントステートにアクセラレータの処理終了イベントを割当てる。また、転送データ４０２９には、アクセラレータの起動シーケンスを設定する。ＣＰＵ１は、演算結果を生成した時点で、イベントステートに対応するイベントＩＤを持って、バスマスタとしてイベントレジスタ４０３０（図１０参照）をインクリメントモードでアクセスする。この時点で、既にアクセラレータの処理終了イベントが起きていた場合、直ちにアクセラレータの再起動が可能となる。アクセラレータの処理終了イベントが発生していない場合、イベントステートは待ち状態となるが、アクセラレータからの処理終了イベントが発行された場合、直ちにアクセラレータの再起動が可能となる。
このように、ＣＰＵ１とアクセラレータとの処理量がアンバランスな場合においても、ＣＰＵ１とアクセラレータ共にアイドル状態となる頻度を削減することが可能で、処理性能を向上できる。
【００６８】
≪その他の実施の形態≫
以上本発明について好適な実施の形態について一例を示したが、本発明は前記実施の形態に限定されず、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。例えば、前記実施の形態では、主としてハードウェア制御によるハードウェアイベントハンドル回路について記載したが、その全部または一部をプログラムによって制御するハードウェアイベントハンドル装置であってもよい。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施の形態に係る地上デジタル放送向けシステムのブロック構成を示す図である。
【図２】本発明の実施の形態に係るＣＰＵの詳細構成を示す図である。
【図３】本発明の実施の形態に係るＣＰＵ内のアドレス選択器の詳細構成を示す図である。
【図４】本発明の実施の形態に係るメモリコントローラの詳細構成を示す図である。
【図５】本発明の実施の形態に係るプレーン合成回路の詳細構成を示す図である。
【図６】本発明の実施の形態に係るプレーン合成回路内のプレーン合成データパス回路の詳細構成を示す図である。
【図７】本発明の実施の形態に係るＤＭＡＣの詳細構成を示す図である。
【図８】本発明の実施の形態に係るＤＭＡＣ内のチャネルの詳細構成を示す図である。
【図９】本発明の実施の形態に係るハードウェアイベントハンドル回路（イベントハンドル回路）の詳細構成を示す図である。
【図１０】本発明の実施の形態に係るハードウェアイベントハンドル回路内のイベント選択回路の詳細構成を示す図である。
【図１１】本発明の実施の形態に係るハードウェアイベントハンドル回路内のイベントステートの詳細構成を示す図である。
【符号の説明】
【００７０】
１      ＣＰＵ
２      ＭＰＥＧ２ビデオデコーダ（アクセラレータ）
３      オーディオデコーダ（アクセラレータ）
４      メモリコントローラ
６      ＤＭＡＣ
７      プレーン合成回路（画像表示エンジン）
８      ストリーム選択回路（ストリーム入力が可能なＩＯデバイス）
２０    内部バス
２３    ＩＯバス
２４    画像デコード終了イベント信号
２５    オーディオデコード終了イベント信号
２７    表示フリップイベント信号
３８    外部メモリ
４０    ハードウェアイベントハンドル回路（ハードウェアイベントハンドルモジュール）
４２    割込み信号（割込み）
６１０  ＤＭＡ転送終了イベント信号
【図１】
2006107041.tif 000003
【図２】
2006107041.tif 000004
【図３】
2006107041.tif 000005
【図４】
2006107041.tif 000006
【図５】
2006107041.tif 000007
【図６】
2006107041.tif 000008
【図７】
2006107041.tif 000009
【図８】
2006107041.tif 000010
【図９】
2006107041.tif 000011
【図１０】
2006107041.tif 000012
【図１１】
2006107041.tif 000013