(57)【要約】【課題】  ダイレクト・メモリ・アクセス・コントローラの転送操作を減らし、画像データ転送のバス効率を従来に比べて大幅に向上させるデータ転送システムおよびその方法を提供する。【解決手段】  画像の処理のために、第１のメモリとプロセッサによってアクセス可能な第２のメモリとの間でデータを転送する方法が提供される。この方法によれば、複数のブロックに編成されているデータが、画像の処理のために第１のメモリに提供され、この各ブロックは画像の部分と関連している。ダイレクト・メモリ・アクセス・コントローラによって、データの少なくとも一部が、第１のメモリとプロセッサによってアクセス可能な第２のメモリとの間でブロック単位で転送される。【選択図】  図１０
2006065864.tif 000002
【特許請求の範囲】
【請求項１】
画像の処理のために、それぞれプロセッサによるアクセスが可能な第１のメモリと第２のメモリとの間でデータを転送する方法であって、
前記画像の処理のために、前記第１のメモリに、複数のブロックに編成されたデータを与えるステップを有し、前記各ブロックは、前記画像の部分に関連するものであり、
ダイレクト・メモリ・アクセス・コントローラによって、前記データの少なくとも一部を前記第１のメモリと前記第２のメモリとの間でブロック単位で転送するステップを有する、方法。
【請求項２】
前記画像は横方向の画像幅および垂直方向の画像高によって定義される領域を有し、前記画像は前記部分を複数有し、前記部分の各々は前記画像幅よりも画像幅が狭く、かつ前記画像高よりも画像高が低い請求項１に記載の方法。
【請求項３】
前記第２のメモリは前記プロセッサ専用のローカル・メモリである請求項１に記載の方法。
【請求項４】
前記ブロックの１つが表している前記画像の各部分は直線状である請求項１に記載の方法。
【請求項５】
前記ブロックの１つが表している前記画像の各部分は横方向に配置された第１の複数のピクセルと、垂直方向に逐次配置された第２の複数のピクセルとを有する所定の複数のピクセルを有し、前記第１の複数のピクセルと前記第２の複数のピクセルとはピクセル数が等しいかまたは異なる請求項４に記載の方法。
【請求項６】
前記データは複数のバイトを有し、各ピクセルは１バイト以上によって表される請求項５に記載の方法。
【請求項７】
前記複数のバイトは、２４バイトの行と１６バイトの列とを有するバイトの配列として配置された３８４バイトを有する請求項６に記載の方法。
【請求項８】
前記第２のメモリは前記第１のメモリよりもプロセッサと密接に関連している請求項１に記載の方法。
【請求項９】
前記第１のメモリは第１の速度でプロセッサによってアクセスされるように動作可能であり、前記第２のメモリは前記第１の速度よりも高速な第２の速度でプロセッサによってアクセスされるように動作可能である請求項１に記載の方法。
【請求項１０】
前記第１のメモリは第１の量のデータを記憶するように動作可能であり、前記第２のメモリは前記第１の量より大きい第２の量のデータを記憶するように動作可能である請求項１に記載の方法。
【請求項１１】
前記ブロックの各々は輝度データを表す第１のデータ単位の配列、第１の色度データを表す第２のデータ単位の配列、および第２の色度データを表す第３のデータ単位の配列を有する請求項１に記載の方法。
【請求項１２】
前記各データ単位は複数のデータの完全バイトからなる請求項１１に記載の方法。
【請求項１３】
前記データは圧縮されている請求項１に記載の方法。
【請求項１４】
前記データは輝度データおよび色度データを有し、前記データはＭＰＥＧ形式に従って圧縮されている請求項１３に記載の方法。
【請求項１５】
前記ブロックの少なくとも一部は動き補償処理を実行するためのデータを含む請求項１に記載の方法。
【請求項１６】
画像の表示のために、複数のブロックに編成されて第１のメモリに記憶されているデータを処理するように動作可能なプロセッサであって、前記プロセッサは、ダイレクト・メモリ・アクセス・コントローラを制御して前記第１のメモリから前記プロセッサによるアクセスが可能な第２のプロセッサに前記データをブロック単位で転送させるように動作可能であり、前記プロセッサは前記データを処理するために前記第２のメモリから前記データにアクセスするようにさらに動作可能であるプロセッサ。
【請求項１７】
プロセッサと、
前記プロセッサによる画像の処理のために、複数のブロックに編成されたデータを記憶するように動作可能な第１のメモリと、
前記プロセッサによるアクセスが可能な第２のメモリと、
前記データの少なくとも一部を前記第１のメモリと前記第２のメモリとの間でブロック単位で転送するように動作可能なダイレクト・メモリ・アクセス・コントローラと、を備えたシステム。
【請求項１８】
画像の表示のために、複数のブロックに編成されてメイン・メモリに記憶されているデータを処理するようにそれぞれ動作可能な複数のプロセッサと、
前記複数のプロセッサのうちのプロセッサからの要求に応えて、前記データの少なくとも一部を、前記メイン・メモリと要求元の前記プロセッサ専用のローカル・メモリとの間でブロック単位で転送するように動作可能なダイレクト・メモリ・アクセス・コントローラと、を備えたシステム。
【請求項１９】
複数のプロセッサと、
前記プロセッサのうちの少なくとも１つのプロセッサによる画像の処理のために、複数のブロックに編成されているデータを記憶するように動作可能な前記複数のプロセッサによって共有されているメイン・メモリと、
それぞれが前記複数のプロセッサのうちの特定のプロセッサ専用である複数のローカル・メモリと、
前記複数のプロセッサのうちのプロセッサからの要求に応えて、前記データの少なくとも一部を、前記メイン・メモリと要求元の前記プロセッサの専用の前記ローカル・メモリとの間でブロック単位で転送するように動作可能なダイレクト・メモリ・アクセス・コントローラと、を備えたシステム。
【請求項２０】
画像の処理のために、それぞれプロセッサによるアクセスが可能な第１のメモリと第２のメモリとの間でデータを転送する方法を実行するために記録された命令を有する記録媒体であって、前記方法は、
前記画像の処理のために、前記第１のメモリに、複数のブロックに編成されたデータを提供するステップを有し、各ブロックは前記画像の部分と関連するものであり、
ダイレクト・メモリ・アクセス・コントローラによって、前記データの少なくとも一部を前記第１のメモリと前記第２のメモリとの間でブロック単位で転送するステップと、を有する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・プロセッサの編成および動作に関し、より詳細には、第１のメモリ（データ・プロセッサに対してローカルなメモリなど）と別のメモリとの間での画像データの転送に関する。
【背景技術】
【０００２】
通常、高画質の画像、特に標準のテレビ受像器、ビデオテープ録画装置（ＶＴＲ）、デジタル・ビデオ・ディスク（ＤＶＤ）プレーヤなどと同等以上の表示速度と解像度を有する画像を作成して表示するには、メモリから大量のデータをプロセッサに転送して処理させる必要がある。
【０００３】
近年、ビデオ画像を含め、許容できる画質の画像を表示するのに必要なデータ量を減らすために、国際標準化機構（ＩＳＯ）によって採用され、ＭＰＥＧ−２（Motion Picture Experts Group-2）と一般に呼ばれている標準などのデジタル・ビデオ圧縮標準が開発されてきた。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、メモリからプロセッサに転送すべきデータ量を減らしても、画像データの転送操作の効率を低下させ、画像処理性能に影響を及ぼすボトルネックを生じるおそれのある問題が未だ存在する。
【０００５】
画像処理システムの性能向上にとっての課題に、画像処理のためダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）が実行するデータ転送のオーバーヘッドの低減がある。ＤＭＡＣとは、一般に、メイン・メモリとローカル・メモリとの間の、バスを介した所定の最小サイズのデータ転送を処理するために設計されたハードウェアであり、この最小サイズは“ハードウェア転送サイズ”と呼ばれる。通常、命令ストリーム内の命令は、その関連データと同様にメモリの連続した領域を占めるため、この操作は、一般に命令ストリームと関連のデータの一部をメイン・メモリからプロセッサのローカル・メモリに転送するのに適している。このように、命令および／または関連のデータは、ＤＭＡＣのハードウェア転送サイズを単位として転送することが可能である。
【０００６】
しかし、上記のような状況は、画像データにはあてはまらない。画像データの場合、ＭＰＥＧ−２データなどの処理対象のデータは、ＤＭＡＣのハードウェア転送サイズを単位とした転送をメイン・メモリと別のメモリの間で行うには困難なように編成されていることが多い。メモリにおいて、データは、ライン単位でフェッチとストアができるように、多数のメモリ・ラインとして編成され得る。これにより、少なくとも２つの問題が生じる。１つ目の問題は、全てのデータ・ラインをあるメモリから別のメモリに転送するには、ＤＭＡＣが膨大な操作を実行しなければならないという点である。ＤＭＡＣは、通常、一度にできるデータ転送操作数が制限される設計となっている。ＤＭＡＣが、プロセッサなどから多数のデータ転送要求を一度に受け取ると、ＤＭＡＣの処理能力を超えてしまい、要求を受け付けなくなることがある。すると、プロセッサは転送要求が受け付けられるまで要求の発行を中止してしまうことがある。もう１つの問題は、通常はメモリの１ラインが、ＤＭＡＣのハードウェア転送サイズよりも小さいという点である。例えば、あるシステムにおいて、画像データの１ラインの大きさはメモリの１６バイトであるが、ハードウェア転送サイズは１２８バイトである。このような場合、メモリのラインに格納されている１６バイトしか使用されないため、１回の転送操作（１２８バイト）で転送されるデータの大半（８７．５％）が廃棄されてしまう。このため、上記の条件でのシステムの“バス効率”は１２．５％であるとされる。
【０００７】
したがって、画像データを転送するためにダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）が実行する多くの転送操作を減らし、画像データ転送のバス効率を従来に比べて大幅に向上させるデータ転送システムおよびその方法を提供することが所望されている。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、画像の処理のために、それぞれプロセッサによるアクセスが可能な第１のメモリと第２のメモリとの間でデータを転送する方法が提供される。この方法によれば、複数のブロックに編成されているデータが、画像の処理のために第１のメモリに提供され、この各ブロックは画像の部分と関連している。ダイレクト・メモリ・アクセス・コントローラによって、データの少なくとも一部が第１のメモリと第２のメモリとの間でブロック単位で転送される。
なお、前記ブロックの各々は輝度データを表す第１のデータ単位の配列、第１の色度データ（chroma data）を表す第２のデータ単位の配列、および第２の色度データを表す第３のデータ単位の配列を有する方法も提供される。
また、各データ単位を複数のデータの完全バイト（whole bytes of data）からなるようにしてもよい。
【０００９】
本発明の別の態様によれば、画像の表示のために、複数のブロックに編成されて第１のメモリに記憶されているデータを処理するように動作可能なプロセッサが提供される。この態様によれば、プロセッサは、ダイレクト・メモリ・アクセス・コントローラを制御して第１のメモリからプロセッサによってアクセス可能な第２のプロセッサにデータをブロック単位で転送させるように動作可能であり、データを処理するために第２のメモリからデータにアクセスするようにさらに動作可能である。
【００１０】
本発明の別の態様によれば、プロセッサと、プロセッサによる画像の処理のために、複数のブロックに編成されたデータを記憶するように動作可能な第１のメモリと、プロセッサによってアクセス可能な第２のメモリとを備えたシステムが提供される。このシステムは、データの少なくとも一部を第１のメモリと第２のメモリとの間でブロック単位で転送するように動作可能なダイレクト・メモリ・アクセス・コントローラをさらに備える。
【００１１】
本発明のさらに別の態様によれば、画像の表示のために、複数のブロックに編成されてメイン・メモリに記憶されているデータを処理するようにそれぞれ動作可能な複数のプロセッサを備えたシステムが提供される。この態様によれば、このシステムは、複数のプロセッサのうちのプロセッサからの要求に応えて、データの少なくとも一部を、メイン・メモリと要求元のプロセッサ専用のローカル・メモリとの間でブロック単位で転送するように動作可能なダイレクト・メモリ・アクセス・コントローラをさらに備える。
【００１２】
本発明のさらに別の態様によれば、複数のプロセッサと、プロセッサのうちの少なくとも１つのプロセッサによる画像の処理のために、複数のブロックに編成されているデータを記憶するように動作可能な複数のプロセッサによって共有されているメイン・メモリとを備えたシステムが提供される。本発明のこの態様によるシステムは、それぞれが複数のプロセッサのうちの特定のプロセッサ専用である複数のローカル・メモリと、複数のプロセッサのうちのプロセッサからの要求に応えて、データの少なくとも一部を、メイン・メモリと要求元のプロセッサの専用のローカル・メモリとの間でブロック単位で転送するように動作可能なダイレクト・メモリ・アクセス・コントローラとをさらに備える。
【００１３】
本発明のさらに別の態様によれば、画像の処理のために、それぞれプロセッサによるアクセスが可能な第１のメモリと第２のメモリとの間でデータを転送する方法を実行するために記録された命令を有する記録媒体が提供される。この方法では、画像の処理のために、複数のブロックに編成されているデータが第１のメモリに提供され、各ブロックは画像の部分と関連している。データの少なくとも一部が、ダイレクト・メモリ・アクセス・コントローラによって第１のメモリと第２のメモリとの間でブロック単位で転送される。
【発明を実施するための最良の形態】
【００１４】
以下に記載する本発明の各種実施形態は、特定の実施形態が有利に用いられたコンピュータ・システムに関連する記述を通じてよりよく理解できるであろう。
【００１５】
このコンピュータ・システムでは、別の実施形態が有利にその一部を形成している。図１に、このようなコンピュータ・システム１０１のアーキテクチャ全体を示す。
【００１６】
この図に示すように、システム１０１にはネットワーク１０４が含まれ、複数のコンピュータとコンピューティング・デバイスがこのネットワークと接続されている。ネットワーク１０４の例として、ローカル・エリア・ネットワーク（local area network：ＬＡＮ）、インターネットのようなグローバル・ネットワーク、あるいは他のコンピュータ・ネットワークが挙げられる。
【００１７】
ネットワーク１０４と接続されたコンピュータとコンピューティング・デバイス（ネットワークの“メンバー”）の中には、クライアント側コンピュータ１０６、サーバー・コンピュータ１０８、個人用情報機器（personal digital assistant：ＰＤＡ）１１０、デジタル・テレビ（ＤＴＶ）１１２およびその他の有線または無線コンピュータとコンピューティング・デバイスなどが含まれる。ネットワーク１０４のメンバーによって用いられるプロセッサは、同じ共通のコンピューティング・モジュールから構成される。またこれらのプロセッサは、好適には、命令セット・アーキテクチャ（instruction set architecture：ＩＳＡ）がすべて同じで、好適には同じ命令セットに従って処理を実行する。個々のプロセッサ内に含まれるモジュールの数は、そのプロセッサが必要とする処理パワーによって決められる。
【００１８】
例えば、システム１０１のサーバー１０８は、クライアント１０６より実行するデータ処理およびアプリケーション処理が多いので、クライアント１０６より多いコンピューティング・モジュールを含むことになる。一方、ＰＤＡ１１０では最低量の処理しか実行されない。このため、ＰＤＡ１１０は、備えるコンピューティング・モジュールの数が最も少ない。ＤＴＶ１１２の処理量は、クライアント１０６とサーバー１０８の中間である。このため、ＤＴＶ１１２が備えるコンピューティング・モジュールの数は、クライアント１０６とサーバー１０８のコンピューティング・モジュールの数の中間となる。以下に説明するように、各コンピューティング・モジュールの中には、処理用コントローラと、ネットワーク１０４を介して伝送されるデータおよびアプリケーションの並列処理を実行する複数の同じ処理ユニットとが含まれる。
【００１９】
システム１０１がこのように均質な構成を有することから、アダプタビリティ（適合性）、処理速度および処理効率が改善される。システム１０１の各メンバーが、同じコンピューティング・モジュールのうち１つまたはそれ以上（またはコンピューティング・モジュールの一部）を用いて処理を実行するので、データとアプリケーションの実際の処理をどのコンピュータまたはコンピューティング・デバイスで実行するかは重要ではなくなる。さらに、特定のアプリケーションおよびデータの処理を、ネットワークのメンバー間で分散させることができる。システムの全体にわたって、システム１０１が処理したデータとアプリケーションを含むセルを一意的に識別することにより、この処理がどこで行われたかにかかわらず、処理を要求したコンピュータまたはコンピューティング・デバイスへその処理結果を伝送することが可能となる。この処理を実行するモジュールが共通の構造と共通のＩＳＡとを有するので、プロセッサ間の互換性を達成するためのソフトウェアの追加層の計算上の負担が回避される。このアーキテクチャとプログラミング・モデルによって、リアルタイムのマルチメディア・アプリケーションなどの実行に必要な処理速度が改善される。
【００２０】
システム１０１によって改善される処理速度と効率というさらなる利点を利用するために、このシステムによって処理されるデータとアプリケーションとは、一意的に識別され、それぞれ同じフォーマットを有するソフトウェア・セル１０２にパッケージ化される。各ソフトウェア・セル１０２は、アプリケーションとデータの双方を含むか、あるいは含み得る。また各ソフトウェア・セルには、ネットワーク１０４とシステム１０１全体でセルをグローバルに識別するためのＩＤが含まれる。ソフトウェア・セルがこの均一な構造を有しており、ネットワークの中でソフトウェア・セルが一意的に識別されることによって、ネットワークの任意のコンピュータまたはコンピューティング・デバイスでのアプリケーションとデータの処理が改善される。例えば、クライアント１０６は、ソフトウェア・セル１０２の作成を行うこともできるが、クライアント１０６側の処理能力は限られていることから、このソフトウェア・セルをサーバー１０８へ伝送して処理してもらうこともできる。したがって、ソフトウェア・セルは、ネットワーク１０４全体を移動してネットワーク上での処理用リソースの可用性に基づいて処理を受けることが可能となる。
【００２１】
また、システム１０１のプロセッサとソフトウェア・セルが均質な構造を有することで、今日の異質なネットワークの混在という問題の多くを防ぐことができる。例えば任意の命令セットを用いる任意のどのＩＳＡ上でもアプリケーションを処理できるようにする非効率的なプログラミング・モデル（Ｊａｖａのバーチャル・マシンのような仮想マシンなど）を使用せずに済む。このため、システム１０１は、今日のネットワークよりもはるかに効率的、かつはるかに効果的に広帯域処理を実現できる。
【００２２】
ネットワーク１０４のすべてのメンバーのための基本となる処理用モジュールはプロセッサ・エレメント（ＰＥ）である。図２にＰＥの構造が例示されている。この図に示すように、ＰＥ２０１は、処理ユニット（ＰＵ）２０３、ダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）２０５、複数の付加処理ユニット（ＡＰＵ）、すなわち、ＡＰＵ２０７、ＡＰＵ２０９、ＡＰＵ２１１、ＡＰＵ２１３、ＡＰＵ２１５、ＡＰＵ２１７、ＡＰＵ２１９、ＡＰＵ２２１を具備する。ローカルＰＥバス２２３は、ＡＰＵと、ＤＭＡＣ２０５と、ＰＵ２０３との間でデータとアプリケーションとを伝送する。ローカルＰＥバス２２３は、従来型のアーキテクチャなどを備えていてもよいし、あるいはパケット交換式ネットワークとして実現されてもよい。パケット交換式ネットワークとして実現される場合、より多くのハードウェアが必要となり、その一方で利用可能な帯域幅が増加する。
【００２３】
ＰＥ２０１は、デジタル論理回路を実現する様々な方法を用いて構成可能である。しかし、ＰＥ２０１は、シリコン基板上の相補型金属酸化膜半導体（complementary metal oxide semiconductor：ＣＭＯＳ）を利用した単一の集積回路として構成されることが好ましい。基板の代替材料の中には、ガリウム砒素、ガリウム・アルミニウム砒素、多種多様のドーパントを用いるその他のいわゆるIII−Ｖ族化合物が含まれる。またＰＥ２０１は、超伝導材料（高速単一磁束量子（rapid single-flux-quantum：ＲＳＦＱ）論理回路など）を用いて実現することもできる。
【００２４】
ＰＥ２０１は、高帯域メモリ接続部２２７を介してダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）２２５と密接に関連する。ＤＲＡＭ２２５はＰＥ２０１用のメイン・メモリとして機能する。ＤＲＡＭ２２５はダイナミック・ランダム・アクセス・メモリであることが好ましいものの、他の手段、例えばスタティック・ランダム・アクセス・メモリ（static random access memory：ＳＲＡＭ）として、磁気ランダム・アクセス・メモリ（magnetic random access memory：ＭＲＡＭ）、光メモリまたはホログラフィック・メモリなどを用いてＤＲＡＭ２２５を実現することもできる。ＤＭＡＣ２０５によって、ＤＲＡＭ２２５と、ＰＥ２０１のＡＰＵとＰＵとの間のデータ転送が改善される。以下にさらに説明するように、ＤＭＡＣ２０５によって、ＤＲＡＭ２２５内の排他的領域が各ＡＰＵに対して指定されるが、この排他的領域へは指定されたＡＰＵだけしかデータの書き込みができず、指定されたＡＰＵだけしかこの排他的領域からのデータ読み出しを行うことができない。この排他的領域は“サンドボックス”と呼ばれる。
【００２５】
ＰＵ２０３は、データとアプリケーションのスタンド・アローン型処理が可能な標準プロセッサなどであってもよい。作動時に、ＰＵ２０３は、ＡＰＵによるデータとアプリケーションの処理のスケジュール管理と全般的管理（orchestrate）とを行う。ＡＰＵは、単一命令複数データ（single instruction, multiple data：ＳＩＭＤ）プロセッサであることが好ましい。ＡＰＵは、ＰＵ２０３の制御によって、並列的かつ独立にこれらのデータとアプリケーションの処理を実行する。ＤＭＡＣ２０５は、共用ＤＲＡＭ２２５に格納されているデータとアプリケーションに対する、ＰＵ２０３とＡＰＵによるアクセスを制御する。ＰＥ２０１は、８個のＡＰＵを含むことが好ましいものの、必要とする処理パワーに応じて、ＰＥ内のＡＰＵの個数をこれより増減してもよい。また、ＰＥ２０１のようにいくつかのＰＥを結合（まとめてパッケージ化）して処理パワーの改善を図ることもできる。
【００２６】
例えば、図３に示すように、１つ以上のチップ・パッケージなどの中に４つのＰＥをパッケージ化（まとめて結合）してネットワーク１０４のメンバー用の単一プロセッサを形成してもよい。この構成は広帯域エンジン（ＢＥ）と呼ばれる。図３に示すように、ＢＥ３０１には４つのＰＥ（ＰＥ３０３、ＰＥ３０５、ＰＥ３０７、ＰＥ３０９）が含まれる。これらのＰＥ間の通信はＢＥバス３１１を介して行われる。共用ＤＲＡＭ３１５とこれらのＰＥ間の通信は広帯域メモリ接続部３１３によって行われる。ＢＥバス３１１の代わりに、ＢＥ３０１のＰＥ間の通信は、ＤＲＡＭ３１５とこのメモリ接続部とを介して行うことができる。別の実施形態では、ＤＲＡＭ３１５がＢＥ３０１に組み込まれて、ＢＥバス３１１と接続されていてもよく、この場合、ＤＲＡＭ３１５は、バス３１１を介してＰＥ３０３，３０５，３０７，３０９のそれぞれからアクセスでき、これらとの間でデータの転送を行う。
【００２７】
入出力（Ｉ／Ｏ）インターフェース３１７と外部バス３１９とは、広帯域エンジン３０１とネットワーク１０４のその他のメンバー間の通信を実現する。ＢＥ３０１の各ＰＥは、ＰＥのＡＰＵによって行われるアプリケーションとデータの並列的かつ独立した処理と同じような並列的かつ独立した方法で、データとアプリケーションの処理を実行する。
【００２８】
図４はＡＰＵの構造を例示する図である。ＡＰＵ４０２は、ローカル・メモリ４０６、レジスタ４１０、４つの浮動小数点演算ユニット（ＦＰＵ）４１２および４つの整数演算ユニット４１４を備える。この場合も、必要とする処理パワーに応じて、浮動小数点演算ユニット４１２および整数演算ユニット４１４の個数はこれより加減してもよい。好適な一実施形態では、ローカル・メモリ４０６は１２８キロバイトの記憶容量を有し、レジスタ４１０の容量は１２８×１２８ビットである。浮動小数点演算ユニット４１２は、好ましくは毎秒３２０億浮動小数点演算（３２ＧＬＯＰＳ）の速度で動作し、整数演算ユニット４１４は、好ましくは毎秒３２０億回の演算速度（３２ＧＯＰ）で動作する。
【００２９】
ローカル・メモリ４０６はキャッシュ・メモリではない。ローカル・メモリ４０６は、ＳＲＡＭとして構成されることが好ましい。ＡＰＵに対するキャッシュ・コヒーレンシー（キャッシュの整合性）のサポートは不要である。ＰＵでは、当該ＰＵで開始されるダイレクト・メモリ・アクセスをサポートするためにキャッシュの整合性が要求される場合もある。しかし、ＡＰＵが開始するダイレクト・メモリ・アクセスや、外部装置からのアクセスおよび外部装置へのアクセスにはキャッシュの整合性のサポートは不要である。
【００３０】
ＡＰＵ４０２にはさらに、ＡＰＵとの間でアプリケーションとデータとを伝送するためのバス４０４が含まれる。好適な一実施形態では、このバスのバス幅は１，０２４ビットである。ＡＰＵ４０２は、内部バス４０８，４２０，４１８をさらに備える。好適な一実施形態では、バス４０８は２５６ビットの幅を有し、ローカル・メモリ４０６とレジスタ４１０間の通信を実現する。ＡＰＵ４０２は、一般に、ＤＲＡＭ２２５にアクセスするよりも高速でローカル・メモリにアクセスすることができる。バス４２０と４１８とは、それぞれレジスタ４１０と浮動小数点演算ユニット４１２との間、およびレジスタ４１０と整数演算ユニット４１４との間の通信を実現する。好適な一実施形態では、レジスタ４１０から浮動小数点演算ユニット４１２または整数演算ユニット４１４へのバス４１８と４２０の幅は、３８４ビットであり、浮動小数点演算ユニット４１２または整数演算ユニット４１４からレジスタ４１０へのバス４１８と４２０の幅は１２８ビットである。レジスタ４１０から浮動小数点演算ユニットまたは整数演算ユニットへのバス幅のほうが、これらのユニットからレジスタ４１０へのバス幅よりも広いことで、処理中にレジスタ４１０からのデータのフローのほうをより多く収容することができる。各計算に必要なワード数は最大で３ワードである。しかし、各計算の結果に要するワード数は通常１ワードのみである。
【００３１】
図５は、本発明の別の実施形態による他の形態のプロセッサ５００を示す。ここに示すように、プロセッサシステム５００は、中央処理装置（“ＣＰＵ”）５０５を有し、このＣＰＵは、単一命令単一データ（“ＳＩＳＤ”）方式で命令を実行するように動作可能な単一のプロセッサ・エレメントを備え得る。別の実施形態では、ＣＰＵ５０５は、単一命令複数データ（single instruction multiple data：“ＳＩＭＤ”）方式で命令を実行するように動作可能な複数のプロセッサ・エレメントを備える。さらに別の実施形態では、ＣＰＵ５０５は、独立または半独立のプロセッサ・エレメント（図示せず）を複数備えていてもよく、それぞれのプロセッサ・エレメントは、他のプロセッサ・エレメントからある程度独立して命令を実行するように動作可能である。さらに別の実施形態では、ＣＰＵ５０５は、前述した複数の種類のプロセッサ構成を組合せた構成を有していてもよい。ＣＰＵ５０５には、好ましくはＣＰＵ５０５が１つ以上のプログラムを実行するために用いる命令とデータの記憶用のキャッシュ５０２が備えられている。
【００３２】
必須の要素ではないものの、プロセッサ５００は、グラフィック・データを効率よく操作するために特別に設計されたグラフィック処理プロセッサ（“ＧＰＵ”）５１５も備えていることが好ましい。ＧＰＵが存在する場合、ＧＰＵ５１５は、プロセッサ５００のために画像データ処理タスクの大半を処理し、ＣＰＵ５０５はそれ以外のタスクの大半を処理し得る。別の実施形態では、ＣＰＵ５０５とＧＰＵ５１５とは、協調して画像データを処理することができる。ＣＰＵ５０５と同様に、ＧＰＵ５１５には、ＧＰＵ５１５が１つ以上のプログラムを実行するために用いる命令とデータの記憶用のキャッシュ５１２が備えられている。
【００３３】
ＣＰＵ５０５は、前述した数多くの構成のいずれかで構成することができるが、簡潔を期するために、以下の説明では、ＣＰＵ５０５が単一のプロセッサ・エレメントを備え、ＧＰＵ５１５も単一のプロセッサ・エレメントを備える構成のみを採り上げる。
【００３４】
ＣＰＵ５０５とＧＰＵ５１５（存在する場合）とは、ＣＰＵ５０５およびＧＰＵ５１５とメモリ５１０との間でデータ、命令、コマンドおよびアドレスを転送するために、バス５０４に結合されている。メモリ５１０は、任意の適した半導体素子技術（solid-state technology）を用いて実施することが好ましく、この例には、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、フラッシュ・メモリ、磁気抵抗ランダム・アクセス・メモリ（ＭＲＡＭ）などが含まれるが、これらに限定されない。
【００３５】
データ（オペランドおよび／または命令を含んでいてもよい）の転送は、バス５０４に結合されたダイレクト・メモリ・アクセス・コントローラ（“ＤＭＡＣ”）５２０の制御の下で、メモリ５１０と、ＣＰＵ５０５と関連するキャッシュ・メモリ５０２またはＣＰＵ５１５と関連するキャッシュ・メモリ５１２との間のダイレクト・メモリ・アクセス（“ＤＭＡ”）操作として実行される。換言すると、ＤＭＡＣ５２０は、転送の実行が要求されるメモリ５１０とキャッシュ・メモリ５０２（またはキャッシュ・メモリ５１２）間の通信の各段階で、ＣＰＵ５０５やＧＰＵ５１５の介入を受けずにこのデータ転送を実行する。また、プロセッサ５００は、好ましくは、ディスプレイ画面５９５上に表示する画像を生成するためのディスプレイ・コントローラ５９０も備える。バス５０４は、データ、命令、コマンド、アドレスなどの情報を外部ストレージ５４０に転送するために、入出力インターフェース（“Ｉ／Ｏインターフェース”）５３０にも結合されている。メモリ５１０と外部ストレージ５４０間の転送は、ＤＭＡＣ５２０の制御下でのダイレクト・メモリ・アクセス操作として実行されることが好ましい。
【００３６】
Ｉ／Ｏインターフェース５３０は、データ、命令、コマンド、アドレスなどの情報を、ネットワークに結合されている別のデバイス（別のプロセッサ５５０など）に転送するために、ネットワーク５３５にも結合されている。ネットワーク５３５は、どのような種類のネットワークであってもよい。例えば、ネットワーク５３５は、ローカル・エリア・ネットワーク（ＬＡＮ）トポロジのネットワークまたは広域ネットワーク（ＷＡＮ）トポロジのネットワークのいずれかに限定されず、有線ネットワーク、無線ネットワークの一方に限定されることはない。さらに、ネットワーク５３５の種類は、インターネット・プロトコル（ＩＰ）ネットワーク、ｘ.２５ネットワーク、非同期転送モード（Asynchronous Transfer Mode：“ＡＴＭ”）ネットワーク等のセル・トランスポート・ネットワークといったパケット交換方式など、コンピュータ間での通信の転送を主目的とするネットワークに限定されない。さらに、ネットワーク５３５は、セルラー・デジタル・パケット・データ（“ＣＤＰＤ”）、汎用パケット・ラジオ・サービス（“ＧＰＲＳ”）といった無線ネットワーク（これらに限られない）だけではなく、一般加入電話網（“ＰＳＴＮ”）、ケーブル通信ネットワーク、衛星通信ネットワークといった、より汎用的な従来のネットワークなどの特定の種類のネットワークに限定されない。
【００３７】
プロセッサ５５０は、プロセッサ５００との通信にはネットワーク５３５を経由しなければならないため、“リモート”プロセッサと呼ぶことができる。プロセッサ５００，５５０に関し、“リモート”との用語がこれ以外の意味を持つことはない。換言すると、“リモート”との用語が、プロセッサ５００とプロセッサ５５０の間の最短距離を意味したり暗示することはなく、ネットワーク５３５を経由しなければならないという点を除いては、プロセッサ５００とプロセッサ５５０の間の通信が困難であるということを意味したり暗示することはない。
【００３８】
一実施形態では、プロセッサ５５０は、内部的には、ＤＭＡＣ、内部メモリ、および少なくとも１つのキャッシュを備えたＣＰＵを有するプロセッサ５００と同じか類似する内部構成を有しており、この場合は“均質な”デバイスのネットワークが形成されているといえる。別の実施形態では、プロセッサ５５０は別の構成を有していてもよく、この場合ネットワークは“異種”である。例えば、半導体素子を利用したランダム・アクセス・メモリ、ＤＭＡＣまたはキャッシュのうちの１つ以上を、プロセッサ５５０の内部構成から省いてもよい。プロセッサ５００とプロセッサ５５０間でのデータ転送は、ＤＭＡＣ５２０の制御の下、あるいはＤＭＡＣ５２０の支援の下で、ダイレクト・メモリ・アクセスによって行われることが好ましい。
【００３９】
ここに記載する本発明の各種実施形態は、データ処理を支援するため、あるメモリ（メイン・メモリなど）と別のメモリ（ローカル・メモリなど）との間のデータ転送に特に利用される。例えば、ある実施形態では、ＤＲＡＭ２２５（図２）などのメモリと、ＡＰＵのローカル・メモリ４０６（図４）との間でデータが転送される。あるいは、メモリ５１０と、ＧＰＵ５１５のキャッシュ５１２（図５）との間でデータが転送される例もある。本発明の特定の実施形態は、ＭＰＥＧ−２などの圧縮フォーマットに準拠した画像データの符号化（エンコード）および／または復号化（デコード）をサポートするために、このようなデータ転送に適用される。後述する本発明の実施形態をよりよく理解するには、ＭＰＥＧ−２に準拠して符号化された画像データの編成とそのフローを概説することが有益であろう。
【００４０】
ＭＰＥＧ−２は、ビデオおよび音声の双方の符号化形式を規定している。図６Ａに、ＭＰＥＧ−２符号化ビデオの原理を示す。この図に示すように、ＭＰＥＧ−２符号化ビデオのシーケンス、例えば映画[デジタル・ビデオ・ディスク（ＤＶＤ）に記録されているものなど]のワンシーンは、“ピクチャ”・グループＧＯＰ０、ＧＯＰ１、ＧＯＰ２、...、ＧＯＰｎが順に並んだシーケンスを含んでおり、各グループ内の“ピクチャ”は、モニタやテレビ受像器などの表示装置に、実際のビデオ・フレームのシーケンスを表示するのに必要な符号化された画像情報を全て含んでいる。ＭＰＥＧ−２に従った符号化では、各ピクチャ・グループ（group of pictures：ＧＯＰ）は、最大３種類の“フレーム”を含んでおり、これらの各種類は、実際の表示可能ビデオ・フレームまたは画像のピクセルに相当する、符号化・圧縮されたデータである。説明をわかりやすくするために、以降は、モニタまたはテレビ受信器に表示されるビデオのフレームを“画像”と呼び、ＧＯＰの符号化されている“フレーム”と区別する。種類の異なるフレームを使用することで、ビデオ・データを時間的に圧縮することが可能となる。換言すると、ビデオ・データの圧縮では、画像の符号化に必要となる完全な情報を有する“Ｉ”（イントラ）タイプのフレームは、ＧＯＰのごく一部に過ぎず、大部分のフレームは、Ｐ（予測）タイプまたはＢタイプ（双方向インターポレーション）であり、これらは、その（Ｐ）または（Ｂ）フレームと、当該フレームの前または後に存在する１つ以上の別のフレームとの差分を示すデータしか含まない。Ｂタイプのフレームを復号するには、そのフレームの前のフレームと後のフレームにある対応するデータが、画像データの伸張に使用できる必要がある。
【００４１】
ＢタイプおよびＰタイプのフレームは、通常ＧＯＰの中で最も多いフレームである。このため、これらのフレームは、ビデオ・シーケンスの表示中に最も頻繁にアクセスされ、ある種類のメモリ（キャッシュ等のプロセッサに密接に関連するローカル・メモリなど）、および別のメモリ（コンピューティング・システムのメイン・メモリなど）で最も頻繁にアクセスされる。
【００４２】
Ｂタイプのフレーム６１０とＩタイプのフレーム６１５を結ぶ曲線矢印と、Ｂタイプのフレーム６１０とＰタイプのフレーム６２０を結ぶ曲線矢印とによって一例を示す。このＢタイプのフレーム６１０が、復号化のためにプロセッサのキューに入った場合、Ｂタイプフレーム６１０に対応する画像を表示するには、Ｂフレーム６１０が参照しているＩタイプフレーム６１５とＰタイプフレーム６２０にアクセスする必要がある。
【００４３】
さらに図６Ａに示すように、ＧＯＰの各符号化フレームは“スライス”に編成されており、スライスは、それぞれが画像の横方向部分を表している。各スライス（スライス０、スライス１、...、スライスｎなど）は、順に並んだマクロブロックＭＢ０、ＭＢ１、ＭＢ２、ＭＢ３、...、ＭＢｎのシーケンスに編成されている。特にＢタイプおよびＰタイプのフレームの場合、各マクロブロック（ＭＢ１など）は、画像の、サイズ１６×１６のピクセル配列を表す圧縮データを有する。さらに各マクロブロックは、符号１，２，３，４で示す輝度（Ｙ）データの４つの“ブロック”のグループ６２５を有しており、その各ブロックは、画像のサイズ８×８のピクセル配列のグレースケール値に関する符号化・圧縮された情報を含む。さらに、各マクロブロックは、画像の同じ１６×１６のピクセル領域に対応する２種類の符号化された色差情報、すなわち青色度（choroma blue）データと赤色度（choroma red）データを含むブロックを含む。青色度（Ｃｂ）データと赤色度（Ｃｒ）データは、それぞれ１つのブロックを有し、輝度データ（Ｙ）のように４つのブロックを有さないが、これは、ＭＰＥＧ−２が行ったヒューマン・インターフェースに関する研究の結果、各方向の色の解像度を半分に落としても問題ないことがわかったからである。Ｂタイプのフレームの復号は、ＧＯＰの先行する（すなわち“過去の”）フレームのマクロブロックと、後続する（すなわち“未来の”）フレームのマクロブロックとの情報を使用して行われる。この復号は、マクロブロックのレベルで行われる。
【００４４】
図６Ｂは、順次走査方式、すなわちノンインタレース・ビデオのフレームに関連する動き補償ブロック（motion compensation block：“ＭＣＢ”）に従った画像データの編成を示す。図６Ｂからわかるように、過去のフレームでも未来のフレームでも、データの編成は変わらない。一般に、現時点で“未来の”画像を表しているフレームがいずれ“現在の”フレームとなり、その後“過去の”フレームとなる。図６Ｂは、過去のフレームに関連する１つのＭＣＢ６５０と、未来のフレームに関連する１つのＭＣＢ６６０とを示している。このようなＭＣＢは、好ましくは、フレーム間での画像の移動に動き補償を提供するなどの特定の目的に使用できるデータを含む。図６Ｂに示すように、ＭＣＢ６５０は、輝度（Ｙ）データ用の１７バイト×１７バイトの配列のほか、青色度（Ｃｂ）データ用の９バイト×９バイトの配列と赤色度（Ｃｒ）データ用の９バイト×９バイトの配列とを有する。マクロブロック（図６Ａ）のそれぞれは、輝度（Ｙ）データ用の１６×１６の配列のほか、ＣｒデータとＣｂデータ用の８×８の配列を１つずつ含んでいるため、ＭＣＢ６５０またはＭＣＢ６６０は、２つ以上のマクロブロックと共通するデータを含んでいる。
【００４５】
ＧＯＰ内の現在のフレームがＢタイプのフレームの場合、１つの過去のＭＣＢ６５０と１つの未来のＭＣＢ６６０とにアクセスする必要がある。２つのＭＣＢ６５０，６６０は、合わせて６つの異なるデータのバイト配列（別に記憶されており、通常は別のフェッチ操作によってフェッチする必要があるデータの配列）を含んでいる。
【００４６】
図７は、インタレース・ビデオの過去のフレームのＭＣＢ７００，７１０と、インタレース・ビデオの未来のフレームのＭＣＢ７２０，７３０とを有する別の種類のデータ編成を示し、このインタレース・ビデオは、米国全国テレビ方式委員会（National Television Systems Committee：ＮＴＳＣ）によって採用された標準に従ってフォーマットされたものなどである。すなわち、図７は、インタレース・ビデオの過去のフレームの奇数フィールドのＭＣＢ７００のデータ編成と、過去のフレームの偶数フィールドのＭＣＢ７１０のデータ編成を示している。同様に、図７は、未来のフレームの奇数フィールドのＭＣＢ７２０と、未来のフレームの偶数フィールドのＭＣＢ７３０を示している。インタレース・ビデオの場合、ＭＣＢ７００，７１０，７２０，７３０の各々は、輝度（Ｙ）データ用の９バイト×１７バイトの配列のほか、青色度（Ｃｂ）データ用の５バイト×９バイトの配列と赤色度（Ｃｒ）データ用の５バイト×９バイトの配列を有する。前述の場合と異なり、Ｂフレームを復号するには、インタレース・ビデオの過去のフレームと未来のフレームの両方の奇数フィールドと偶数フィールド、合計４つのＭＣＢ７００，７１０，７２０，７３０にアクセスする必要がある。４つのＭＣＢ７００，７１０，７２０，７３０は、合わせて１２の異なるデータのバイト配列（別に記憶されており、通常は別のフェッチ操作によってフェッチする必要があるデータの配列）を含んでいる。
【００４７】
ここに記載する本発明の実施形態が解決しようとする課題の１つに、１枚の画像の現在のフレームのたった１つのマクロブロックに関連する画像情報を復号するために、非常に多くのデータ転送が必要となることがある。図２と図４を参照して前述したように、図１〜４に示したシステム構成によれば、ダイレクト・メモリ・アクセス（ＤＭＡ）方式の転送は、ＤＲＡＭ２２５と、プロセッサ・ユニット（ＰＵ）の各ＳＰＵのローカル・メモリ４０６との間の転送に好適である。同様に、図５の別法による構成では、ＤＭＡＣ５２０によるダイレクト・メモリ・アクセスは、メモリ５１０とキャッシュ・メモリ５０２または５１２との間のデータ転送に好適な方法である。
図８は、図７に示したようなＭＣＢ７００のバイト配列に格納されているデータにアクセスする方法を示す。図８に例示されるように、Ｙ（輝度）データ８１０が、Ｙデータ８１０の個々の行８０１，８０２，８０３，...，８０９のそれぞれについて独立した転送操作を行うラスタスキャン方式によって転送され、その後、Ｃｒ（赤色度）データ８２０のラスタスキャン（行８１１，８１２，８１３，...の個々の転送）と、Ｃｂ（青色度）データ８３０の行８２１，８２２，８２３，...の個々の転送とが行われる。このようにして、図８に示すＭＣＢ８００について、通常は、Ｙデータの配列８１０、Ｃｒデータの配列８２０およびＣｂデータの配列８３０の各行が、ＤＭＡＣ２０５（図２）またはＤＭＡＣ５２０（図５）などのＤＭＡＣが制御する独立した転送操作によって転送される。Ｃｒデータの場合、図２，４を参照すると、配列の各行の幅は幅９バイトであるため、ＤＭＡＣ２０５は、ＤＲＡＭ２２５とローカル・メモリ４０６との間で１行単位でデータ転送を実行し、その際、ＤＭＡＣ２０５は、当該行の９バイトの色度データを含む１６バイトのデータを転送する。インタレース方式のフィールドのＣｒデータ・ブロックには５行存在するため、たった１つのＢタイプのフレームの１つのＭＣＢの１つのフィールドにアクセスするのに、ＤＭＡＣ２０５によってこのような１６バイトの転送を５回実行しなければならない。その上、Ｃｂデータの転送も同様であり、ＤＭＡＣは転送操作を５回実行する必要がある。しかし、Ｙデータの場合には、配列の各行の幅が１７バイトであり、１６バイトの転送幅を越えるため、３２バイトの転送操作が実行される。したがって、Ｙデータの９行は１行ずつ転送され、各行が、３２バイトの転送操作によってＤＲＡＭ２２５（図２）とローカル・メモリ４０６（図４）との間で転送される。別例では、図５を参照すると、ＤＭＡＣ５２０によって“Ｙ”データの９行が、メモリ５１０と、キャッシュ・メモリ５０２またはキャッシュ・メモリ５１２との間で１行ずつ転送される。さらに別の例では、ＤＭＡＣ５２０の制御下で、Ｙデータの９行が外部ストレージ５４０とメモリ５１０との間で１行ずつ転送される。
【００４８】
メモリ・システムのコストや、高い動作周波数（すなわち高い転送速度でのデータ転送）が要求されるなどの設計上の制約により、ＤＭＡコントローラは、通常、１回の転送操作につき転送するデータ量を最小化するように、ハードウェア・エンコードされているか、ファームウェアまたはミドルウェアによってプログラムされている。例えば、ＤＭＡＣ２０５（図２）は、好ましくは、メモリとの間で、一度に少なくとも１２８の連続バイトのデータを転送するようにハードウェア・エンコードされている。しかし、個々の行について転送する必要のあるデータ量（すなわち１行のＣｂ色度データまたはＣｒ色度データでは１６バイト、１行のＹデータでは３２バイト）は、ハードウェアのデータ転送サイズである１２８バイトよりも小さい。同じことは、ＤＭＡＣ５２０のハードウェア転送サイズにも当てはまり、転送すべき個々の行の長さよりもはるかに大きい例が挙げられる。このような場合、ＤＭＡＣ２０５（図２）のハードウェアは、１６バイトの転送操作のために、ＤＲＡＭ２２５（図２）とローカル・メモリ４０６（図４）との間で１２８バイトのデータを転送し、転送された１２８バイトのデータ中の不要な部分は廃棄される。このため、この場合は、個々のラインの合計転送量（１２８バイト）のうち、実際に必要なのはわずか１６バイトである。この関係は、ＤＲＡＭ２２５とＤＭＡＣ２０５との間で転送されるデータの利用についての“バス効率”の目安となる。したがって、データの１６バイト幅の行が、それぞれ１２８バイトのハードウェア転送操作によって転送される場合、バス効率は１６／１２８（１２．５％）となる。裏を返せば、各ハードウェア転送によって転送されるデータの８７．５％が破棄される。データ転送幅が３２バイトの場合には、データの使用される部分（３２バイト）がハードウェア転送される総データ量の１／４（３２／１２８）を占めるようになり、バス効率は２５％に向上する。プロセッサ５００（図５）でもバス効率は同様の影響を受け、転送される各行のサイズ（１６バイトなど）は、ＤＭＡＣ５２０のハードウェア転送サイズのごく一部を占めるに過ぎない。
【００４９】
さらに、ラスタスキャン方式を使用する場合、過去のフレームおよび未来のフレームの両方について、奇偶のインタレース・フィールドの各ＭＣＢのＹ、ＣｒおよびＣｂのデータにアクセスするために、膨大なデータの行を転送しなければならないことが明らかである。図７を再び参照すると、この図に示すように、ＤＭＡＣの制御によるデータ転送回数の最小値は、各ＭＣＢの各ブロックの行数に等しくなる。このように、４つのフィールドの対応するＭＣＢ７００，７１０，７２０，７３０のＹデータにアクセスするには、４つのＭＣＢの各Ｙブロックにはそれぞれ９行存在するので、少なくとも９＋９＋９＋９＝３６回の行転送が必要となる。しかし、４つのフィールドのＭＣＢ７００，７１０，７２０，７３０の対応するＣｒデータにアクセスするには、４つのＭＣＢの各Ｃｒブロックにはそれぞれ５行存在するので、少なくとも５＋５＋５＋５＝２０回の行転送が必要となる。同様に、４つのフィールドのＭＣＢ７００，７１０，７２０，７３０の対応するＣｂデータにアクセスするには、４つのＭＣＢの各Ｃｂブロックにはそれぞれ５行存在するので、５＋５＋５＋５＝２０回の行転送が必要となる。これらを合算すると、１つのＧＯＰの１つのＢフレームを復号するため、過去のフレームおよび未来のフレームの奇数フィールドおよび偶数フィールドのＭＣＢにアクセスするには、７６回のＤＭＡ転送操作が必要となる。
【００５０】
図９は、メモリ内で、データのＭＣＢ９００が、データの１６バイト幅の領域９１０，９１２，９１４，９１６の境界に必ずしも揃わないという、ラスタスキャン方式の別の複雑な問題を示している。この場合、ブロック９００は、図６Ｂまたは図７を参照して上に示しかつ記載したものなど、フレームまたはフレームのフィールドのデータのＹブロック、ＣｒブロックまたはＣｂブロックなどであり得る。このようなずれが生じた場合、図９に示すように、４つの領域９１０，９１２，９１４，９１６の全てについて、ＤＭＡ転送によるデータ・アクセスが必要となる。図８を参照して上述したように、転送すべき各データ・ブロックのあらゆる行でこのようなずれが生じたとすると、４×７６＝３０４回の転送が必要となることが明らかである。多くのＤＭＡ要求が行われると、その結果、処理能力の低下がＤＭＡセットアップ・オーバーヘッドの形で生じる。また、一度に実行中の転送の数が、ＤＭＡＣの構成上許容されているキューのエントリの数を上回る場合、ＤＭＡ操作の速度が低下する。
【００５１】
上記の懸念に対処するために、本発明の一実施形態による新しい編成を有するマクロブロック１０００が提供される。この実施形態では、マクロブロック１０００のＹデータ１００２、Ｃｒデータ１００４およびＣｂデータ１００６を、グループ化して連続したデータ構造１０１０にまとめており、これにより、このマクロブロック・データ構造（以下“ＭＤＳ”と称する）は、ＤＭＡＣ２０５（図２）またはＤＭＡＣ５２０（図５）などのＤＭＡコントローラによる１回の転送操作でアクセスすることができる。さらに、ＭＤＳ１０１０は、合理化を図る特徴を有しており、これには１６バイト幅×２４行の編成が含まれる。このため、ビデオのフレームのフィールド（奇数または偶数）のＭＣＢ７００（図７）の符号化に要する全情報が、２４のデータ行を有するＭＤＳ１０１０に記憶でき、このＭＤＳ１０１０は、各行が１６バイトであり、合計サイズは３８４である。この量のデータがＤＭＡＣ２０５（図２）またはＤＭＡＣ５２０（図５）によって転送される際には、転送対象データである３８４バイトはハードウェア転送量（１２８バイト）の倍数（３倍）になっているため、比較的少ないハードウェア転送操作で行われる。さらに、このＭＤＳ１０１０の転送時には、１２８バイトのハードウェア転送操作１回につき転送される全データが、転送を要求されたデータとしてローカル・メモリに送られるため、１００％のバス効率が達成され、図８を参照して上記したような、１行のサイズの単なる超過分についてのデータ転送が生じることはない。
【００５２】
インタレース・ビデオの場合の、ＢフレームのＭＣＢ７００について図７と比較して上記した場合と同様に、過去のフレームの奇偶のフィールドのそれぞれについて１つずつ、未来のフレームの奇偶のフィールドのそれぞれについて１つずつ、計４つのＭＤＳ１０１０にアクセスする必要があることは明らかである。各ＭＤＳ１０１０がメモリの境界に完全に揃っている場合、毎回の転送サイズが３８４バイトであれば、４回のＤＭＡ転送が必要である。しかし、各ＭＤＳ１０１０が、ＤＲＡＭ２２５（図２）またはメモリ５１０（図５）などのメモリのメモリ境界に完全には揃わない場合には、各ＭＤＳの完全な情報にアクセスするには、メモリとの間で実行しなければならない転送の回数が増える。
【００５３】
本発明の一実施形態は、１回のＤＭＡ転送操作に３８４バイトのほか、２つのＭＤＳに含まれるのと同じデータ量が転送できるように７６８バイトのデータを使用することによって、ずれの可能性を考慮している。図１１の７６８バイトの転送操作“転送１”および“転送２”において、この各操作で転送されるデータは、メモリの隣接する連続ブロックに存在していることが望ましい。例えば、転送対象のデータ・ブロックは、図１１に示すように水平方向に隣接していても、垂直方向に隣接していてもよい。このような７６８バイトの転送操作のそれぞれにおいて、水平方向に隣接するロケーションにあるデータにアクセスする場合、データは、水平方向に１６バイトの境界１１１０で接しており、垂直方向に２４行バイトおきに設けられた垂直の境界１１２０で区切られた２つの連続するデータ・ブロックとして転送される。
【００５４】
したがって、ＭＤＳ１０１０が１６バイトの境界にも２４行の境界にも揃っていない場合には、２回の７６８バイトのＤＭＡ転送操作によって十分なデータにアクセスできるため、これだけでＭＤＳ１０１０にアクセスできる。過去のフレームおよび未来のフレームについて、インタレース・ビデオの奇数フィールドと偶数フィールドのデータを含む４つのマクロブロック１０００を使用する動き補償処理に関する前述のデータ・アクセスの例に戻ると、各ＭＤＳについて最大２回の転送操作が必要となるため、必要な４つのＭＤＳには最大８回の７６８バイトＤＭＡ転送操作によりアクセスできることは容易に理解できる。
【００５５】
さらに、ＭＤＳへのアクセスに必要なＤＭＡの回数が最大８回であるというのは有利に少なく、ＤＭＡＣ２０５（図２）やＤＭＡＣ５２０（図５）などのＤＭＡコントローラのキュー長の範囲に収まる。ハードウェア・コスト上の制約のため、ＤＭＡコントローラのキュー長は設計によって制限される。キュー長は、同時にキューに入れることができる未処理のＤＭＡ転送要求の最大個数を表している。このため、例えば、ＤＭＡのキュー長が１６と短いシステムでは、一度に待機させることができる要求された転送操作の個数は最大１６となる。要求された転送操作の数がキュー長を越える場合、ＤＭＡコントローラは越えた分を処理することができない。
【００５６】
本実施形態では、過去のフレームと現在のフレームを使用してインタレース・ビデオの動き補償処理をサポートするために必要となる転送操作は最大８回であり、これは、ＤＭＡキューのエントリの許容最大数の１６を下回っている。このため、ＤＭＡセットアップ・オーバーヘッドの発生を回避でき、これに起因するＤＭＡの処理能力の低下が発生しない。
【００５７】
以上、具体的な実施形態を用いて本発明を説明したが、これらの実施形態は、本発明の原理および利用の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
【図面の簡単な説明】
【００５８】
【図１】本発明のコンピュータ・ネットワークのアーキテクチャ全体を示す図である。
【図２】本発明のプロセッサ・エレメント（ＰＥ）の構造を示す図である。
【図３】本発明の広帯域エンジン（ＢＥ）の構造を示す図である。
【図４】本発明の付加処理装置（ＡＰＵ）の構造を示す図である。
【図５】本発明の一実施形態による、ネットワークに結合された状態のプロセッサを示す図である。
【図６Ａ】ＭＰＥＧ−２に準拠したビデオ符号化の原理を示す図である。
【図６Ｂ】順次走査方式ビデオの過去のフレームおよび未来のフレームの動き補償ブロックの編成を示す図である。
【図７】インタレース・ビデオの過去のフレームの奇偶のフィールド、ならびに未来のフレームの奇偶のフィールドの動き補償ブロックの編成を示す図である。
【図８】動き補償ブロックのデータを転送するラスタスキャン方式を示す図である。
【図９】メモリのデータ境界をまたいでいる動き補償ブロックを示す図である。
【図１０】本発明の実施形態に使用するマクロブロック・データ構造（ＭＤＳ）の編成を示す図である。
【図１１】本発明一実施形態によるＤＭＡ転送境界をまたいでいるマクロブロック・データ構造を示す図である。
【符号の説明】
【００５９】
２０５，５２０…ダイレクト・メモリ・アクセス・コントローラ
２２５，５１０…メイン・メモリ（第１のメモリ）
４０２，５０５，５１５…プロセッサ
４０６，５０２，５１２…ローカル・メモリ（第２のメモリ）
１０１０…ブロック
【図１】
2006065864.tif 000003
【図２】
2006065864.tif 000004
【図３】
2006065864.tif 000005
【図４】
2006065864.tif 000006
【図５】
2006065864.tif 000007
【図６Ａ】
2006065864.tif 000008
【図６Ｂ】
2006065864.tif 000009
【図７】
2006065864.tif 000010
【図８】
2006065864.tif 000011
【図９】
2006065864.tif 000012
【図１０】
2006065864.tif 000013
【図１１】
2006065864.tif 000014