(57)【要約】画像のようなデータは、それぞれのデータアドレスに個々に関連付けられたデータアイテム（画素）で構成される。データを表現する圧縮ブロックはメモリシステムに記憶される。圧縮データアイテムを表現する各ブロックは、それぞれのデータのアドレスのサブレンジ内のデータアドレスに関連付けられる。各ブロックは、マルチアドレス転送のためのそれぞれの優先開始アドレスから始まる。各ブロックのアドレスのサブレンジは、優先開始アドレス間のアドレス間隔に対応する長さを有し、圧縮のためにブロックの間に特定のブロックによって占有されていないメモリアドレスをそのまま残す。伸長器はプロセシングエレメントとメモリシステムとの間に結合される。伸長器は、プロセシングエレメントがブロックへのアクセスを必要とするときに動的にメモリシステムから必要な１個のブロックのマルチアドレスメモリ転送を開始し、次の１個のブロックのための優先開始アドレスまでブロックの直ぐ後に続くメモリアドレスを転送中に転送されないままに残す。転送されたデータは伸長され、プロセッサへ渡される。
2006524858.tif 000002
【特許請求の範囲】
【請求項１】
データアドレスのレンジ内のそれぞれのデータアドレスに個々に関連付けられたデータアイテムを処理する装置にして、
前記データアイテムを表現する圧縮ブロックがメモリシステムに記憶され、
メモリアドレスが前記メモリシステムのマルチアドレス転送のためのそれぞれの優先開始アドレスから開始する各ブロックによって占有され、
各ブロックが前記レンジのそれぞれのサブレンジ内のデータアドレスに関連付けられた圧縮データアイテムを表現し、
前記サブレンジが連続的に隣接し、
特定のサブレンジのそれぞれが、前記特定のサブレンジ内で前記データアイテムを表現する特定のブロックのアドレスが開始する優先開始アドレスと、次の連続的なサブレンジのための次の１個のブロックのアドレスが開始する優先開始アドレスとの間のアドレス間隔に対応する長さを有し、
ブロックとブロックの間に前記特定のブロックによって占有されないメモリアドレスを残す、装置であって、
前記優先開始アドレスだけから開始し、または、前記優先開始アドレス以外のアドレスから開始するよりもオーバーヘッドが小さい、選択可能な長さのマルチアドレスメモリ転送を実行する能力を備えた前記メモリシステムと、
前記データアイテムを処理するプロセシングエレメントと、
前記プロセシングエレメントと前記メモリシステムとの間に結合された伸長器と、
を具備し、
前記伸長器が、前記プロセシングエレメントが前記ブロックへのアクセスを必要とするときに動的に前記メモリシステムから必要な１個のブロックのマルチアドレスメモリ転送を開始し、次の１個のブロックのための優先開始アドレスまで前記ブロックの直ぐ後に続くメモリアドレスを転送中に転送されない状態で残し、前記データアイテムを前記プロセシングエレメントへ渡す前に、前記必要な１個のブロックからの前記データアイテムを伸長するように構成される、装置。
【請求項２】
前記プロセシングエレメントが、転送されるべき前記必要な１個のブロックの前記優先開始アドレスから開始する連続的により小さいアドレスを必要とする一連の種々の伸長オプションから選択された伸長オプションを、前記伸長器へ指示するように構成され、
前記伸長器が指示された伸長オプションに応じて前記メモリ転送の前記長さを設定する、
請求項１に記載の装置。
【請求項３】
前記伸長器が、前記必要な１個のブロックの長さに応じて選択されたワード数が転送完了したときに前記必要な１個のブロックの前記マルチアドレスメモリ転送を終了するため、前記メモリシステムへ信号を送信するように構成される、請求項１に記載の装置。
【請求項４】
前記伸長器が前記マルチアドレスメモリ転送から前記必要な１個のブロックの前記長さを表現する情報を取り出すように構成され、
前記伸長器が前記情報に応じて前記信号を発生する、
請求項３に記載の装置。
【請求項５】
前記伸長器が、
前記必要な１個のブロックよりも先に取り出されたブロックのマルチアドレスメモリ転送から前記必要な１個のブロックの前記長さを表現する情報を取り出し、
前記必要な１個のブロックのための前記マルチアドレスメモリ転送の開始時に前記情報から得られた転送長さ選択信号を前記メモリシステムへ送信するように構成される、
請求項１に記載の装置。
【請求項６】
前記サブレンジの前記長さが連続的な優先開始アドレスの間の間隔以上であり、
前記伸長器が前記ブロックの前記長さに条件付きで応じて前記必要な１個のブロックのための後のマルチアドレスメモリ転送を開始するように構成される、
請求項１に記載の装置。
【請求項７】
各ブロックが互いに独立して伸長可能である複数のサブブロックを含み、
各サブブロックが前記ブロックの前記サブレンジのそれぞれの等しいサイズの部分に対応し、
前記伸長器が前記マルチアドレスメモリ転送中に読み出された圧縮データの前記サブブロックをバッファリングするバッファメモリ領域と前記サブブロックから連続的に伸長されたデータを格納する中間メモリ領域とを具備し、
前記伸長器が前記メモリ転送中に読み出されたそれぞれのサブブロックからの前記伸長データを前記中間メモリ内で連続して相互に交換する、
請求項６に記載の装置。
【請求項８】
前記伸長器が非可逆ブロック圧縮に対応する伸長を適用するように構成される、請求項１に記載の装置。
【請求項９】
前記伸長器が可変長ブロック圧縮に対応する伸長を適用するように構成される、請求項１に記載の装置。
【請求項１０】
前記サブレンジが相互に等しい長さを有する、請求項１に記載の装置。
【請求項１１】
優先開始アドレスのペアの間の間隔に等しい長さを有する前記サブレンジのそれぞれに関連付けられた前記データアイテムを圧縮する圧縮器を具備し、
前記圧縮器が前記サブレンジの１個ずつに関連付けられた前記データアイテムを、前記ブロックの対応する１個に圧縮し、
前記圧縮器が前記ブロックの１個ずつのための対応するマルチアドレスメモリ転送を使用して前記圧縮ブロックを前記メモリシステムに格納するように構成され、
各転送が前記優先開始アドレスの対応する１個から始まり、
前記伸長器が各ブロックの格納の終了時に、前記ブロックが要求されないときに次の優先開始アドレスまで書き込むことなく、前記マルチアドレスメモリ転送を終了する、
請求項１に記載の装置。
【請求項１２】
前記プロセシングエレメントが圧縮のための前記データアイテムを計算し、
前記圧縮器が前記プロセシングエレメントから圧縮のための前記データアイテムを受信するように構成される、
請求項１１に記載の装置。
【請求項１３】
前記圧縮器が前記メモリシステムへアクセスするため利用可能な帯域幅の動的に測定されたレベルに応じて前記データの圧縮のための圧縮率を適応させるように構成される、請求項１１に記載の装置。
【請求項１４】
各データアイテムがデータアドレスのレンジ内のそれぞれのデータアドレスに関連付けられたデータアイテムの組を処理する方法であって、
マルチアドレスメモリ転送が独占的に開始される、または、前記開始アドレス以外のアドレスからよりもオーバーヘッドが小さい、等間隔の優先開始アドレスの部分集合を含むメモリアドレスを有するメモリシステムを準備し、
圧縮ブロックを前記メモリシステムに格納し、前記ブロックの１個ずつのため使用されるアドレスが前記優先開始アドレスの対応する１個から開始し、各ブロックが前記レンジのそれぞれのサブレンジ内のデータアドレスに関連付けられた圧縮データアイテムを表現し、前記サブレンジが連続的に隣接し、特定のサブレンジのそれぞれが、前記特定のサブレンジ内で前記データアイテムを表現する特定のブロックが開始する優先開始アドレスと、次の連続的なサブレンジのための次の１個のブロックが開始する優先開始アドレスとの間のアドレス間隔に対応する長さを有し、ブロックとブロックの間に前記特定のブロックによって占有されないメモリアドレスを残す、方法。
【請求項１５】
前記ブロックから得られた圧縮データアイテムを処理し、
必要な１個のブロックが格納され始める前記優先開始アドレスから開始するマルチアドレスメモリ転送を使用して、前記処理のため前記メモリシステムから前記必要な１個のブロックを取り出し、
前記必要な１個のブロックの長さに応じて前記必要な１個のブロックのための前記マルチアドレスメモリ転送を終了し、前記必要な１個のブロックのため使用されたアドレスの直ぐ後に続くメモリアドレスの内容を転送されないまま残す、
請求項１４に記載の方法。
【請求項１６】
前記マルチアドレスメモリ転送における転送のため前記必要な１個のブロックの長さを表現する情報を前記必要な１個のブロックと共に前記メモリシステムに格納する、請求項１４に記載の方法。
【請求項１７】
論理的に先行する１個のブロックのためのマルチアドレスメモリ転送における転送のため、前記マルチアドレスメモリ転送における転送のため前記必要な１個のブロックの長さを表現する情報を、前記必要な１個のブロックから先行するデータアイテムの前記処理の間にデータアイテムの通常処理が始まる前記論理的に先行する１個のブロックと共に格納する、請求項１４に記載の方法。
【請求項１８】
前記論理的に先行する１個のブロックから前記情報を読み出し、
前記必要な１個のブロックのための前記マルチアドレスメモリ転送の開始時に前記情報に応じて選択された転送長さ選択信号を前記メモリシステムへ送信する、
請求項１７に記載の方法。
【請求項１９】
非圧縮データの非可逆ブロック圧縮が前記ブロックを生成するため使用される、請求項１４に記載の方法。
【請求項２０】
非圧縮データの可変長ブロック圧縮が前記ブロックを生成するため使用される、請求項１４に記載の方法。
【請求項２１】
前記可変長ブロック圧縮の圧縮率が前記メモリシステムにアクセスするための動的に利用可能な帯域幅に応じて動的に調節される、請求項２０に記載の方法。
【請求項２２】
請求項１４から２１のいずれか一項に記載のメモリ転送および伸長を制御する機械命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリに記憶されたデータに圧縮を使用するデータ処理装置に関する。
【背景技術】
【０００２】
米国特許第６，１７３，３８１号から、バスを介して接続されたプロセッサおよびシステムメモリを備えたデータ処理システムは知られている。画像データのようなデータは、圧縮または非圧縮形式でシステムメモリに記憶される。プロセッサは、システムメモリとの間でデータを書き込み、読み出すときに、データを圧縮し、圧縮データを伸長する集積メモリコントローラを介してシステムメモリに接続される。米国特許第６，１７３，３８１号は、圧縮形式でのデータの記憶が非圧縮形式の同じデータのために必要なメモリロケーションよりも少ないメモリロケーションを占有するので、メモリ占有およびバス帯域幅を削減するために圧縮が使用される方法を教示する。
【０００３】
圧縮形式でのデータ記憶は、処理がデータの範囲内の様々なロケーションのアドレスを必要とするときに、データの処理を妨げる可能性がある。圧縮、特に、可変長圧縮のために、非圧縮データの様々な要素間のアドレス間隔は圧縮データにおいて保存されない。米国特許第６，１７３，３８１号は、プロセッサと集積メモリコントローラとの間でキャッシュメモリを使用し、伸長データをキャッシュに記憶することによりこの問題を解決する。かくして、伸長データは、伸長データの仮想アドレスを使用してキャッシュメモリ内でプロセッサによってアドレス指定可能である。集積メモリコントローラは、圧縮データがキャッシュフェッチまたはライトバックの間に適切なシステムメモリアドレスで読み出しと書き込みが行われることを保証する。米国特許第６，１７３，３８１号は、どのようにして圧縮データが適切にアドレス指定されるかについては開示していないが、おそらく、プロセッサによって出された伸長データの仮想アドレスが圧縮形式のデータの物理アドレスに変換され、データがこれらの物理アドレスへ書き込まれ、物理アドレスから読み出されるのであろう。仮想アドレスの物理アドレスへの変換は処理の速度を落とす。
【０００４】
多数の最新データ処理システムにおいて、データは、たとえば、６４〜１２８バイトまでの多数のアドレス可能なワードを含むブロックが単一アドレスごとに応じてメモリとプロセッサとの間で転送されるバス転送中に取り出される。このような転送は、典型的に互いに等間隔である特定の開始アドレス（以下では、優先開始アドレスと呼ぶ）、たとえば、１２８バイトのブロック境界のアドレス（多数の下位ビットが０であるアドレス）から開始する必要があり、転送が優先開始アドレスではないアドレスから始まらなければならないならば、少なくとも余分なオーバーヘッドが必要になる。転送の長さは選択可能である。これはメモリ帯域幅を増加させる。従来のプロセッサでは、このワード数は圧縮パラメータと無関係である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特に、本発明の目的は、データをアクセスするため必要なバス帯域幅が、データの様々なアドレス指定可能な部分へのアクセスを複雑化することなく、圧縮によって削減されたデータ処理装置および方法を提供することである。
【０００６】
特に、本発明の目的は、画像および／または音声データにアクセスするため必要なバス帯域幅が、データの様々なアドレス指定可能な部分へのアクセスを複雑化することなく、圧縮によって削減されたデータ処理装置および方法を提供することである。
【０００７】
特に、本発明の目的は、伸長データを使用するプロセスのため使用されるバス帯域幅が動的に適応させられるデータ処理装置および方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明によるデータ処理装置は請求項１に記載されている。この装置は、ｘ、ｙアドレスに関連付けられた画像の画素、または、サンプリング時点ｔｎに関連付けられた時間的データのような、データアドレスのレンジ内のそれぞれのデータアドレスに個々に関連付けられたデータアイテムを処理する。データアドレスのレンジのそれぞれのサブレンジからのデータアイテムを個々に表現する圧縮ブロックが使用される。サブレンジの長さは、マルチアドレスメモリ転送のための優先開始メモリアドレスのペアの間の間隔に対応するように選択される。好ましくは、各サブレンジは同じ長さを有する。圧縮ブロックはメモリシステムに記憶され、それぞれが優先開始メモリアドレスから始まるので、次のブロックの開始メモリアドレスまでのアドレス間隔は、ブロック内のデータアイテムに関連付けられたデータアドレスのサブレンジの長さに対応する。
【０００９】
かくして、ブロックが転送完了したときに終了するマルチアドレスメモリ転送を使用することにより、ブロックを格納し取り出すためのメモリアクセス帯域幅を削減することが可能になる。ブロックの開始アドレスの間の間隔は非圧縮データの場合と同じであるので、転送の開始アドレスは、たとえば、データアドレスの上位部を利用することにより、必要な非圧縮データアイテムのデータアドレスから直接的に決定される。その結果として、圧縮ブロックが記憶されるメモリアドレスのレンジは、非圧縮データアイテムの場合に必要とされるレンジと実質的に同じである。したがって、占有されたメモリのアドレスレンジの削減は実現されないが、帯域幅使用量だけが削減される。
【００１０】
プロセシングエレメントは、フィルタリングのような処理演算をこれらのデータアイテムに適用する。典型的に、プロセシングエレメントは、（たぶん、あるオフセットで修正された）データアドレスを用いてデータアイテムをアドレス指定するが、プロセッサは、たとえば、次のデータアイテムが必要であることを単に示すだけで隣接したデータアドレスを有するデータアイテムを呼び出すことにより、そのデータアドレスを非明示的にのみ使用することが可能である。好ましくは、伸長ブロック内のすべてのデータアドレスに対する伸長データは、このような取り出しのためバッファに記憶されるが、或いは、ブロック内のアドレス指定されたデータだけをその都度伸長することが可能である。メモリシステムは、たとえば、メモリバスが付属する単一の半導体メモリであるか、または、アドレスに応答してデータを供給するため協働するメモリの組み合わせである。
【００１１】
圧縮データのブロックが伸長のため取り出されるとき、マルチアドレスメモリ転送の長さは実際のブロックサイズに応じて選択される。メモリ転送中に、転送は、次のブロックの開始までのデータが転送完了する前に、圧縮データのブロックからのデータが転送完了したときに終了する。かくして、圧縮データのブロックは最小バス帯域幅で取り出され、他の圧縮データのブロックのサイズの知識を必要とすることなくアドレス指定される。
【００１２】
データがまとめて圧縮ブロックに圧縮されたアドレスのサブレンジの長さは、好ましくは、連続した優先開始メモリアドレスのペアの間の間隔と同じである。これは、メモリバス利用の効率を高め、メモリアクセスレイテンシーを削減する可能性がある。しかし、本発明を逸脱することなく、サブレンジは、連続した優先開始メモリアドレスの間の複数の間隔に拡張される。これにより、圧縮率が高くなるので、メモリ帯域幅が減少する。この場合、複数のマルチアドレスメモリ転送が１個のブロックを転送するため使用される。
【００１３】
圧縮データのブロックの長さに関する情報は、好ましくは、ブロックと共に記憶される。したがって、これらの長さは、ブロックが転送されたときに、さらなるメモリアドレッシングを必要とすることなく、自動的に利用可能になる。一実施形態では、圧縮データのブロックの長さ情報はブロック自体と共に記憶される。かくして、信号がブロック自体にある情報に基づいて転送を終了させるため発生される。別の実施形態では、論理的に次の圧縮データのブロックの長さ情報は圧縮データのブロックと共に記憶される。（論理的に次のブロックは、そのプロセシングエレメントによって次にアクセスされるブロックを意味し、たとえば、ブロックは、隣接した画像領域の画像データを符号化するとき、論理的に互いに隣り合う）。したがって、長さ情報は、ブロックがアドレス指定される前に、ブロックのための転送長さを設定するため利用できるようになる。これは、転送長さが各転送の開始時に設定されるべきときに役立つ。
【００１４】
好ましくは、伸長の品質が長さの長いブロックと短いブロックを使用することにより適応されるスケーラブル伸長技術が使用される。かくして、帯域幅使用量は、ブロックからのデータの転送の長さを適応させることにより、伸長品質を犠牲にして動的に適応される。
【００１５】
好ましくは、特に、データが人間の知覚の表現（たとえば、画像データまたは音声データ）を対象とするとき、非可逆圧縮が使用される。非可逆圧縮後、データは一般に伸長によって正確に再現できないが、それは、圧縮率に応じて、かなりの程度またはそれほどでなくても同じ知覚内容を伝える。一実施形態では、圧縮率は、動的に利用可能なメモリ帯域幅に応じて、動的に適応される。
【００１６】
別の実施形態では、異なる伸長オプションが利用可能であり、使用するデータを様々に徐々に減少させると、再現されるデータの精度が徐々に低下するので、メモリ転送をより早く終了することにより、精度は低下するが、使用される帯域幅が少なくなる。
【発明を実施するための最良の形態】
【００１７】
本発明の上記ならびにその他の目的と有利な態様は添付図面を使用して説明される。
【００１８】
図１は、バス１２によって相互接続されたメモリ１０と多数台のプロセシングエレメント１４（一実施例として２台だけが表されている）とを備えたデータ処理装置を表す。プロセシングエレメント１４は、プロセッサ１４０、伸長器１４２および圧縮器１４４を含む。プロセッサ１４０は、伸長器１４２および圧縮器１４４を介してバス１２に結合される。本願のコンテキストでは、メモリ１０およびバス１２は、メモリ１０内のデータにアクセスするメモリシステムの一部であるといわれる。
【００１９】
図２は、図１の装置の動作中に、バス１２を介してメモリ１０によって生じるメモリ転送を説明する。一実施例として、図２は、別個のアドレス信号２０、データ信号２２およびエンド信号２４を例示する。メモリ１０からのデータの読み出しまたは書き込みを行うため、プロセシングエレメント１４は、最初に、アドレス信号２０にブロックアドレス２１を出力する。次に、多数のデータワード２３がそのブロックアドレス２１に対して転送される。読み出し動作の場合、データワード２３は、ブロックアドレス２１から始まるアドレスをもつ連続的なメモリロケーションからのデータワードである。書き込み動作の場合、データワード２３は、ブロックアドレス２１から始まるアドレスをもつ連続的なメモリロケーションに書き込まれるべきプロセシングエレメント１４からのデータワードである。
【００２０】
多数のデータワード２３の転送後、プロセシングエレメント１４は、ブロックアドレス２１に対するメモリ転送の終了と、次のブロックアドレス２７での次のメモリ転送のためのバス１２の可用性を示すエンド信号２５を発生する。かくして、データワード２３はタイムスロット２６の間に送信され、その長さはプロセシングエレメント１４によって制御される。（実際的な実施では、アドレス信号２０、データ信号２２、および／または、エンド信号２４とは異なるタイプの信号が使用されるが、同じ情報を表現する。たとえば、エンド信号は転送の開始時に送信される長さコードによって表現される）。
【００２１】
図３は、メモリ１０における実際のメモリ占有３０と、プロセッサ１４０から見えるような仮想メモリ占有３２とを表す。ブロック３００ａ−ｄに編成されたメモリ１０が表され、ブロック３００ａ−ｄは上下に表されている。ブロックの長さは、様々なブロックアドレス２１によってアドレス指定される連続的なロケーションの間のワード数に対応する。典型的に、長さは２のべき乗であり、たとえば、１ブロック当たり６４ワードまたは１２８ワードである。
【００２２】
一実施形態では、マルチアドレスメモリ転送がブロック境界アドレスだけから、たとえば、アドレスの下位７または８ビットがゼロである１２８バイトまたは２５６バイト離れたアドレスから開始するように構成されたメモリ１０（本質的に知られている）が使用される。マルチアドレスメモリ転送の要求に応答して、メモリは、最初に、メモリ内で連続的にアドレス指定するロケーションと同等の効果をもたらす信号を発生し、それらのロケーションのアドレスはアドレスの下位ビットに異なる値をもつ。このようなメモリシステムのアーキテクチャは、ラインの開始からのこのタイプのアクセスに対して（バス利用率およびレイテンシーの観点で）最適な性能を出すように設計される。これは、読み出しと書き込みの両方に当てはまる。本実施形態における開始アドレスは用語「優先開始アドレス」と呼ばれるが、実際には、それらは事実上マルチアドレスメモリ転送の場合に限り可能な開始アドレスである。
【００２３】
別の実施形態では、マルチアドレスメモリ転送の開始アドレスの最下位部がオプションとして、少なくとも余分なメモリクロックサイクルを犠牲にして、マルチアドレスメモリ転送の開始アドレスを選択するため使用されるメモリ（本質的に知られている）が使用される。この場合、信号は、この余分なクロックサイクルを使用するためではなく、適応された開始アドレスのため１個以上の余分なクロックサイクルを使用することなく、最小オーバーヘッドで標準的な開始アドレスから直ぐにマルチアドレスメモリ転送を開始するため、メモリ１０へ送信される。用語「優先開始アドレス」は本実施形態ではこれらの標準的なアドレスを表すために使用される。当然ながら、両方の実施形態は、最大転送長さが連続的な優先開始アドレスの間の間隔によって定められるので、転送されるべきブロックが２個以上の開始アドレスに広がるならば、新しいマルチアドレス転送が優先開始アドレスごとに開始されなければならないさらなる実施形態があるが、本発明はこのようなさらなる実施形態に限定されない。
【００２４】
好ましくは、圧縮ブロックサイズは、非圧縮データの連続的なブロックの間の間隔がマルチアドレスメモリ転送の開始アドレスのペアの間の間隔に等しくなるように選択される。多数の圧縮アルゴリズムでは、ブロックサイズは調節可能であり、または、圧縮ブロックはより大きなブロックに結合されるので、メモリアーキテクチャによって規定されるような所要ブロックサイズが実現される。以下で説明するように、圧縮ブロックサイズは、このメモリシステムのブロックサイズの整数倍に設定してもよい。ブロックからの圧縮データが伸長されるとき、伸長データの各ブロックは、メモリ１０内の優先開始アドレスのペアの間の間隔に対応する長さを有する。好ましくは、伸長データの全ブロックは同じ長さを有する。
【００２５】
圧縮データによって占有された実際のメモリ占有３０におけるこれらのメモリロケーションは斜線領域で示されている。実際のメモリ占有３０に表されているように、可変長圧縮が使用されるとき、メモリ転送ユニット３００ａ−ｄの様々な部分が圧縮データによって占有されずに残される。
【００２６】
プロセシングエレメント１４は伸長器１４２および圧縮器１４４を含む。伸長器１４２は、圧縮データのブロックのブロックアドレス２１を供給し、アドレス指定されたブロックからのすべての圧縮データの転送が終わり、すべての物理的なメモリ転送ユニットの内容の転送が終わる前にメモリ転送を終了するためエンド信号２５を発生することにより、バス１２を介してメモリ１０から圧縮データを取り出す。伸長器１４２はアドレス指定されたブロックから取り出されたデータを伸長し、伸長データをプロセッサ１４０へ供給する。
【００２７】
同様に、圧縮器１４４はプロセッサ１４０によって生成されたデータを圧縮し、バス１２を介して圧縮データをメモリ１０へ書き込む。この場合に、圧縮器１４４は、圧縮データのブロックの単一ブロックアドレス２１を供給し、圧縮ブロックからの圧縮データワードを送信し、圧縮データを表現するワード数が転送完了し、物理的なメモリ転送ユニット内の全ワードが上書き完了する前に、ブロックアドレス２１の転送を終了するため信号を送信する。
【００２８】
プロセッサ１４０は伸長データのアドレスを用いてブロック内のデータをアドレス指定する。すなわち、データアドレスは一般に伸長ブロックのブロックアドレスと伸長ブロック内のワードアドレスとにより構成される。ワードアドレスは所定の伸長ブロックサイズまでの任意の値をとる。したがって、プロセッサ１４０から、アドレス空間は仮想メモリ占有３２に表されるように見え、各ブロック３２０ａ−ｄは同じ所定数のロケーションを占有する。プロセッサ１４０が読み出し要求を出すとき、それはデータアドレスを伸長器１４２へ供給する。アドレス指定されたデータがキャッシュされるまで、伸長器１４２はバス１２を介してメモリ１０をアドレス指定するためデータアドレスのブロックアドレス部を使用する。続いて、伸長器１４２はアドレス指定されたブロックから、圧縮ブロックを表現するために必要な実際のワード数を取り出し、メモリ転送はこの実際の数が転送完了したときに、しかし、一般には所定のブロックの長さの全体が転送完了する前に終了される。伸長器１４２は取り出されたデータを伸長し、プロセッサ１４０からのデータアドレスによってアドレス指定されたデータを選択し、選択されたデータをプロセッサ１４０へ返す。
【００２９】
好ましくは、伸長器１４２は、伸長ブロックの全データアドレスのデータを記憶するバッファメモリ（別個に表されていない）を含む。ブロックが伸長されたとき、伸長データはこれらの全ロケーションに書き込まれ、プロセッサ１４０によってアドレス指定されたデータはこれらのロケーションからプロセッサ１４０へ供給される。或いは、その都度にデータからのアドレス指定されたワードだけが、または、アドレス指定されたワードを含むワードの部分集合が伸長される。一般に、１ワードだけでなく、ブロックの全ワードを伸長するために追加的な努力は殆ど不要であり、全ワードをバッファリングすることにより、アクセスレイテンシーは平均的に減少する。しかし、一実施形態では、圧縮ブロックは、互いに独立して伸長可能であるサブブロックにより構成されることが理解されるであろう。この場合に、１個のサブブロックからのデータが必要であるとき、メモリシステム１０からの新しいブロックをフェッチすることなく、１個のサブブロックの伸長データは、バッファメモリ内の同じブロックからの別のサブブロックのデータを上書きする。
【００３０】
プロセッサ１４０がデータを書き込むとき、プロセッサ１４０は、書き込みデータのため圧縮器１４４によって使用されるデータアドレスを供給する。典型的に、圧縮器１４４は、完全な非圧縮ブロックからのデータを格納し、データアドレスによってアドレス指定されたアドレスでこの非圧縮データを置き換えるため書き込みデータを使用し、その後で、データを圧縮し、プロセッサ１４０によって使用されるデータアドレスからのブロックアドレスを使用して圧縮データをメモリ１０に書き込む。圧縮器１４４は、ブロックアドレスの圧縮データが転送完了し、一般に、連続的なブロックアドレスの間の間隔に対応する所定数のワードがメモリ１０へ転送完了する前に、転送を終了する。
【００３１】
その結果として、プロセッサ１４０が実質的にすべての伸長データをアドレス指定するとき、プロセシングエレメント１４とメモリ１０との間でバス１２を介して転送されるべきワード数は圧縮データの総ワード数よりも少なく、他の転送のためより多くのバスとメモリの帯域幅が残される。圧縮データによって占有されるメモリ空間は、一般に圧縮データを使用しても削減されないが、その理由は、非占有空間は、伸長ブロックの使用されたブロックアドレスが圧縮ブロックを取り出すためのブロックアドレスとして使用することを可能にするため、メモリ１０内の各圧縮ブロックの背後に残されるからである。
【００３２】
一実施形態では、圧縮ビデオ画像はメモリ内の複数の連続した圧縮ブロックに分散して記憶される。伸長後、プロセッサ１４０は、この画像の画素を個別にアドレス指定する。この場合、圧縮画像によって占有されたメモリロケーションの最小アドレスと最大アドレスとの間の間隔は、非圧縮画像を記憶するために必要とされる間隔と実質的に同じであり、この場合もその理由は、使用されていないメモリロケーションが各圧縮ブロック３００ａ−ｄの最後にそのまま残されるからである。この場合、テレビジョンモニタのようなビデオ表示装置は、伸長器およびバス１２を介してメモリ１０に結合され、或いは、カメラまたはケーブル入力のようなビデオソースが圧縮器およびバス１２を介してメモリ１０に結合される。
【００３３】
圧縮器１４４および伸長器１４２は、好ましくは、各圧縮ブロック内の圧縮データの長さをブロック内の特定の非圧縮データに適応させる可変長圧縮を使用する。これは、メモリおよびバス帯域幅使用量を最小化することが可能である。
【００３４】
画像データ、または、音声データのようなその他の知覚データの場合に、ある種の情報の損失を犠牲にしてデータを圧縮する非可逆圧縮が使用される。これは、同様にメモリおよびバス帯域幅使用量を最小化することが可能である。一実施形態では、圧縮率（したがって、損失の量）は動的に利用可能なバス帯域幅に動的に適応される。本実施形態では、バスモニタ装置（図示せず）が帯域幅使用量を決定するためバス１２に結合される。これは、たとえば、プロセシングエレメント１４が要求された帯域幅使用量を示すためバスモニタへ信号を送信するように設計されているとき、または、バスモニタが単位時間当たりに使用されていないバスサイクル数をカウントするときに実現できる。バスモニタは、動的に、または、圧縮データの書き込みを開始するためプロセシングエレメント１４からの要求に応答して、圧縮器１４４の圧縮率を設定するため圧縮器１４４に結合される。
【００３５】
好ましくは、圧縮器１４４は、圧縮データのブロック内のワード数を示すため、圧縮データの各ブロックに長さコードを組み込む。長さコードは、たとえば、圧縮データよりも前にある圧縮ブロックの第１ワードに組み込まれる。かくして、ブロックのフォーマットは、
（ブロックの長さコード、圧縮データ）
である。伸長器１４２が圧縮ブロックを取り出すためにブロックアドレスを使用するとき、伸長器１４２は圧縮ブロックから長さコードを読み出し、ブロックアドレスのためのメモリ転送が何ワード後に終了されたかをメモリ１０へ知らせるためこの長さコードを使用する。
【００３６】
代案として、圧縮器１４４は、メモリ１０内の特定の圧縮ブロックに隣接する先行および／または後続の圧縮ブロック内の特定の圧縮ブロックごとに長さコードを記憶するように構成される。
【００３７】
（先行および／または後続ブロックの長さコード、圧縮データ）
この場合、伸長器１４２は、メモリ転送に含まれるべきワード数を決定するため、最初に先行または後続のブロックを読み出す必要がある。ブロックは、メモリに格納された順序で大半が転送されるので、伸長器１４２は、一般に、次にフェッチされる圧縮ブロックのためのメモリ転送の長さを制御するために圧縮ブロックからの長さコードを保持することにより、長さコードを取り出すための付加的なメモリ転送を回避する。これは、メモリ転送の開始時に長さコードを供給できるようにする。一般に、データは一方向のアドレス方向だけでアクセスされる。この場合、この一方向の隣接ブロックのための長さコードを特定の圧縮ブロックのそれぞれに格納すれば十分である。別の実施形態では、いずれかの方向に読み出すときに長さコードの別個の読み出しを回避するため、両方向の隣接ブロックの長さコードが収容される。この連続的な転送のプロセスが開始されるとき、第１のブロックの長さは未知である。このような場合、非圧縮長さの全体が転送され、１回目の転送に限り僅かな不利益が生じる。
【００３８】
さらに別の実施形態では、長さコードが特定の圧縮ブロックと共にメモリ１０に収容された特定の圧縮ブロックは、連続的にブロックをアドレス指定する期待される方法に適応され、たとえば、一つおきの伸長ブロックを飛び越すことが期待されるならば、二つ先の圧縮ブロックの長さコードが各ブロックと共に収容される。さらなる実施形態では、長さコードが収容されている論理的に後に続くブロックを示すため、次のブロックコードがブロックと共に収容される。この場合、ブロックフォーマットは、たとえば、
（論理的に後に続くブロックを識別するコード、論理的に次に続くブロックの長さコード、現在ブロックの圧縮データ）
である。
【００３９】
たとえば、圧縮画像データが記憶される一実施形態では、インターレース画像がアクセスされるとき、１本おきの画像ラインを飛び越すことが望ましい。それに応じて、各画像ラインの最後の長さコードは、１本おきの画像ラインの開始のための圧縮ワードの個数を記述するように構成される。
【００４０】
図４は、キャッシュメモリ４０およびキャッシュ管理ユニット４２を備えたプロセシングエレメントの一実施形態を表す。キャッシュメモリ４０は、一方側のプロセッサ１４０と、反対側の圧縮器１４４および伸長器１４２との間に結合される。動作中に、キャッシュメモリ４０は、伸長データの１個以上のブロックと、それに加えてキャッシュされたブロックのアドレスに関する情報を記憶する。プロセッサ１４０がキャッシュされたブロックからのデータをアドレス指定するとき、バス１２へのアクセスは必要ない。プロセッサ１４０がキャッシュメモリ４０にないデータをアドレス指定するとき、キャッシュ管理ユニット４２は、伸長後にアドレス指定されたデータを取り出すことができる圧縮ブロックを取り出すように伸長器１４２をトリガーする。伸長器１４２は取り出されたブロックを伸長し、伸長ブロックをキャッシュメモリに書き込むので、その後にアドレス指定される。
【００４１】
必要に応じて、キャッシュ管理ユニット４２は、前の非圧縮データのブロックのため使用されたキャッシュメモリ空間を再利用することにより、キャッシュメモリ４０に余裕を作る。プロセッサ１４０がこのブロック内のデータを更新したとき、キャッシュ管理ユニット４２は、最初に、非圧縮ブロックを圧縮し、圧縮ブロックをメモリ１０（図示せず）に書き込むように圧縮器１４４へ信号を送る。ライトスルー（プロセッサ１４０がキャッシュメモリ４０内のデータワードを更新するときに圧縮および書き込みを行う）、または、ライトバック（新しい非圧縮ブロックのためのキャッシュ空間が必要なときに限る）のような種々の従来型のキャッシュライトバック戦略が使用される。
【００４２】
圧縮データのブロックをメモリ１０へ書き込むとき、圧縮器１４４は、一般に、プロセッサ１４０によって１ワードしか更新されなかったとしても、非圧縮データの全ブロックを必要とすることに注意すべきである。したがって、データワードを書き込むため、メモリ１０から圧縮データのブロックを取り出し、圧縮データのブロックを伸長し（好ましくは、伸長器１４２を使用して）、非圧縮データのブロック内の関連した１ワード以上のデータワードを更新し、更新されたブロックを圧縮し、圧縮ブロックをライトバックしなければならない。しかし、一般には、非圧縮ブロックの多数の様々なデータワードは連続的に更新される。好ましくは、ライトバックは、非圧縮ブロックの処理が完了したときに限り行われる。その上、多くの場合に、伸長ブロック内の全データは更新されるので、旧いブロックの伸長は必要ない。
【００４３】
一実施形態では、圧縮および伸長は任意的である。本実施形態では、圧縮ブロックと伸長ブロックの両方がメモリ１０に記憶される。圧縮するかしないかの選択は、たとえば、圧縮制御レジスタ（図示せず）を設定することにより、または、データアドレスが所定のアドレスレンジの範囲内にあるとき圧縮を選択し、所定のアドレスレンジの範囲外にあるとき圧縮なしを選択することにより、プロセッサ１４０によって実行される。非圧縮データの場合、圧縮器１４４および１４２は、たとえば、一つ以上の特定のアドレスレンジの範囲外にあるデータアドレスに対して効果的に迂回される。データアドレスからのビットは、たとえば、圧縮データまたは非圧縮データがアドレス指定されたレンジ内のアドレスか、または、レンジ外のアドレスかを示すために使用される。
【００４４】
別の実施形態では、伸長器１４２は、同じ圧縮データから、しかし、伸長データの徐々に小さくなる部分集合を使用して、それぞれに伸長情報を取得することができる一連の様々な圧縮オプションのうちの一つを使用するように構成される。メモリ内で、圧縮データのブロックごとに、最小の部分集合からのデータは最初に入れられ、その後には常に、次の大きさの部分集合を完成するために必要なさらなるデータが続く。たとえば、ブロックが一連の数字を用いて符号化されるとき、そのブロックの数字のより上位ビットを収容するワードは、最初にメモリに入れられ、次に、下位ビットを収容するワードが続けられ、該当するならば、さらに下位ビットを含むワードが続けられ、以下同様である、しかし、ブロックのサブサンプリングされた部分集合を表現する数字を入れるなどのような他の可能性も存在することが認められる。様々な圧縮オプションは、圧縮データの徐々に大きくなる部分集合を読み出し、それを用いて、伸長器は徐々に高品質の伸長データを再現することが可能である。ある特定の伸長オプションが使用されるとき、伸長器は、データの関連した部分集合が転送完了したときにメモリ転送を終了する。必要な転送の長さは使用されるオプションから計算され、妥当であれば、ブロックの長さコードから計算される（たとえば、より上位のビットが使用されるとき、転送されるべきビット数は、長さ（ブロック内の数字の個数）に使用されたより上位のビットの割合を掛けたものから得られる。これにより、バス１２上の帯域幅使用量は最小化される。
【００４５】
したがって、より少ないバス１２の帯域幅使用量は、徐々に品質が低下する伸長を使用することによって達成される。プロセッサ１４によって実行されるアルゴリズムの要求に応じて、プロセッサ１４は、伸長アルゴリズムの一つを選択し、伸長器１４２に対し選択された伸長アルゴリズムの使用を命令する。かくして、帯域幅使用量はプロセッサ１４の要求に適合される。同様に、バスマネージャ（図示せず）は、バス１２のバス帯域幅使用量を決定し（従来の帯域幅使用量を決定する方法が利用される）、バス１２上で利用可能な帯域幅に応じて伸長アルゴリズムを選択するように信号を送信するため設けられる。
【００４６】
データキャッシュ４０の他に、プロセシングエレメントは、プロセッサ１４０のための命令キャッシュ（図示せず）を具備する。好ましくは、命令キャッシュはバス１２への別個のインタフェースを有する。命令は、好ましくは、伸長なしに読み出され、レイテンシーを最小化し、伸長データとは別個にキャッシュ管理される。
【００４７】
ここまで、連続的な圧縮ブロックが圧縮ブロックに対応する伸長ブロックの開始データアドレスの間の間隔に対応するアドレス間隔で記憶される方法を説明した。好ましくは、間隔は、単一のブロックアドレスに応答してバス１２を介してマルチアドレスメモリ転送を開始するメモリシステムアーキテクチャによって規定されるような連続的な優先開始アドレスのペアの間の間隔に対応する。しかし、さらなる一実施形態では、間隔は、この間隔の整数倍に対応し、すなわち、他の優先開始アドレスによって分離された優先開始アドレスのペアの間の間隔に対応する。最大マルチアドレス転送長さが連続的な優先開始アドレスの間の間隔によって制限されるならば、この場合に圧縮ブロックのため利用可能なメモリ空間全体は単一のブロックアドレス２１によってアドレス指定できない。これは、原理的に、複数のブロックアドレス２１が圧縮ブロックにアクセスするために供給されるべきであることを意味する。圧縮ブロックが転送されるか、および／または、供給されたブロックアドレスでアクセスできる最終的なデータワード数を転送する必要がないとき、圧縮率に応じて１個以上のこれらのブロックアドレスが省略される。
【００４８】
本コンテキストで理解されるべき点は、用語「圧縮データのブロック」は他のブロックを参照することなく伸長されるデータの集まりを表すが、圧縮ブロックからの全データがブロック内のいずれかのワードを伸長するために必要であるということを意味しないということである。たとえば、圧縮データのブロックは、独立に伸長され得る圧縮データにより構成された多数のサブブロックを含む。同様に、ハフマン符号化のような可変長符号化が使用されるならば、非圧縮データの特定のアドレスに対するワードの開始点を決定するためだけに、他のワードのデータを参考にする必要がある。
【００４９】
図５は、ブロックの開始アドレスの間の非常に大きい間隔を利用する物理的なメモリ占有５０の一実施例を表す。本実施例では、圧縮率は２である。その結果として、転送のための２個のブロックアドレスを要求する伸長データ５２０ａ、ｂは、１個のブロックアドレスごとに転送できるサイズのメモリ空間５００ａ、ｂ（斜線領域で表される）に圧縮データとして格納される。このサイズの一つおきのメモリ空間（斜線なしの領域として表される）は圧縮データによって占有されず、その内容を転送する必要はない。かくして、メモリ１０へ供給されるべきブロックアドレスの個数は半分になる。他の圧縮率の場合、他の個数のメモリ空間が開放されることが分かるであろう。
【００５０】
原理的に、伸長ブロック内のアドレスを用いて容易にアドレス指定するため開放されたメモリ内の中間の空間は該当するデータがない。しかし、本発明から逸脱することなく、他のデータが他のプロセスによって使用するためこれらの中間の空間に格納される。さらに、他のブロックからの圧縮データのコピーがこれらの中間の空間に格納される。この場合、ルックアヘッドは、好ましいアドレスの間の全空間からデータを取り込むことにより、一部の演算において実現される。しかし、当然ながら、中間の空間のこのデータは、次の圧縮データのブロックが開始する次の優先開始アドレスを通り過ぎない。
【００５１】
さらに、伸長データの一部は圧縮データに依存しないダミーデータであることが分かるであろう。その結果として、２個のブロックアドレスの間に格納された圧縮データから伸長を使用して実際に取得されるデータワード数は、実際には、これらの２個のブロックアドレスの間のデータワード数よりも少ない。その上、圧縮データのブロック（オプションとして長さ情報を含む）は、好ましくは、優先開始アドレスから直ちに開始するが、本発明から逸脱することなく、オフセットが使用されることが分かるであろう。この場合、優先開始は、依然としてマルチアドレスメモリ転送の開始アドレスであるが、転送の開始からの一部の転送データは伸長のため使用されない状態で残される。同様に、マルチアドレス転送の終了アドレスを、圧縮ブロックの最終アドレスの少し向こうへオフセットさせることが可能である。帯域幅利得は、次の優先開始アドレスまでの一部のデータを転送されないまま残して転送を終了する限り、依然として実現される。
【００５２】
本発明は、非圧縮データのアドレスを明示的に供給するプロセシングエレメントと、メモリ内の圧縮ブロックをアドレス指定するためプロセシングエレメントによって供給されたアドレスを使用する圧縮器および伸長器との観点で説明されているが、プロセシングエレメントは、たとえば、アドレスの隣接アドレス（たとえば、右側の画素、または、時間的な信号の後のサンプル）への変更を示すために圧縮器または伸長器に「次」を信号で送ることにより、データを非明示的にアドレス指定してもよいことが分かるであろう。本発明が有利であるのは、非圧縮データのアドレスが圧縮データのブロックのメモリアドレスへ直接的に変換されるためだけでなく、ランダムアクセスの場合に廃棄されることになる不必要なブロックのためのデータをフェッチしなくてもよいからである。様々なブロックの開始点に関して管理を続ける必要がない。
【００５３】
本発明は、好ましくは、非圧縮データのアドレスの同じサイズのサブレンジ内のデータをそれぞれに表現する圧縮ブロックに適用されるが、本発明から逸脱することなく、種々のサイズのサブレンジが様々なブロックのため使用されることが分かるであろう。
【図面の簡単な説明】
【００５４】
【図１】データ処理装置を表す図である。
【図２】メモリアクセスを示す図である。
【図３】メモリ占有を表す図である。
【図４】プロセシングエレメントを表す図である。
【図５】メモリ占有を表す図である。
【図１】
2006524858.tif 000003
【図２】
2006524858.tif 000004
【図３】
2006524858.tif 000005
【図４】
2006524858.tif 000006
【図５】
2006524858.tif 000007
【国際調査報告】
2006524858.tif 000008
2006524858.tif 000009
2006524858.tif 000010