IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-05
(54)【発明の名称】データ処理システム
(51)【国際特許分類】
   G06F 13/28 20060101AFI20240129BHJP
   G06F 12/04 20060101ALI20240129BHJP
   G06F 13/16 20060101ALI20240129BHJP
   G06F 13/12 20060101ALI20240129BHJP
【FI】
G06F13/28 310K
G06F12/04 530
G06F13/16 520B
G06F13/28 310Y
G06F13/12 340C
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023542900
(86)(22)【出願日】2022-01-24
(85)【翻訳文提出日】2023-07-25
(86)【国際出願番号】 GB2022050179
(87)【国際公開番号】W WO2022157510
(87)【国際公開日】2022-07-28
(31)【優先権主張番号】2100858.6
(32)【優先日】2021-01-22
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(74)【代理人】
【識別番号】110002848
【氏名又は名称】弁理士法人NIP&SBPJ国際特許事務所
(72)【発明者】
【氏名】パーソン、ホーカン ラーズ-ヨーラン
(72)【発明者】
【氏名】ドルジェンコ、ヴラディミール
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160DA08
(57)【要約】
処理ユニット(1)、(2)、(3)、(10)と、メモリ(6)にアクセスするバストランザクションをその上で実行することができる通信バス(5)と、を備えるデータ処理システムが開示される。本システムは、コーデック(20)を含み、処理ユニット(1)、(2)、(3)、(10)は、コーデック(20)がメモリ(6)にアクセスすることを含むバストランザクションを通信バス(5)上で開始することができる。
【選択図】図2
【特許請求の範囲】
【請求項1】
データ処理システムであって、
処理ユニットと、
コーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
前記処理ユニットは、前記コーデックが前記メモリにアクセスすることを含むバストランザクションを前記通信バス上で開始するように動作可能であり、
前記コーデックは、前記処理ユニットが前記バストランザクションを前記通信バス上で開始したことに応答して、前記メモリにアクセスするように動作可能である、
データ処理システム。
【請求項2】
前記処理ユニットは、前記コーデックが前記メモリにアクセスすべきであることを示す信号を前記通信バス上で発行するように動作可能であり、前記コーデックは、前記コーデックが前記メモリにアクセスすべきであることを示す前記信号を受信したことに応答して、前記メモリにアクセスするように動作可能である、請求項1に記載のシステム。
【請求項3】
前記メモリにおいて、圧縮データが1つ以上のメモリ空間領域に記憶され、各メモリ空間領域は、1つ以上のメモリ空間サブ領域に分割されており、
前記処理ユニットは、前記メモリ空間領域のうちの1つのメモリアドレスと、そのメモリ空間領域の前記メモリ空間サブ領域のうちの1つを示すインデックスと、を示す信号を前記通信バス上で発行するように動作可能であり、
前記コーデックは、前記信号を受信したことに応答して、前記メモリアドレスに基づく前記インデックス及び前記信号により示されるインデックスによって示される前記メモリ空間サブ領域のメモリアドレスを判定し、前記判定されたメモリアドレスにアクセスするように動作可能である、
請求項1又は2に記載のシステム。
【請求項4】
前記処理ユニットは、圧縮データに関連付けられたヘッダのメモリアドレスを示す信号を前記通信バス上で発行するように動作可能であり、前記コーデックは、
読み出すべき圧縮データに関連付けられたヘッダのメモリアドレスを示すメモリアドレス指示信号を受信したことに応答して、前記ヘッダの前記示されたメモリアドレスと、前記圧縮データの前記ヘッダの前記メモリアドレスに対するメモリアドレスオフセットを示す前記ヘッダ内のメモリアドレスオフセット情報とに基づいて、前記圧縮データのメモリアドレスを判定し、
書き込むべき圧縮データに関連付けられたヘッダのメモリアドレスを示すメモリアドレス指示信号を受信したことに応答して、前記圧縮データの前記ヘッダの前記メモリアドレスに対するメモリアドレスオフセットを示す前記ヘッダ内のメモリアドレスオフセット情報を書き込む
ように動作可能である、請求項1~3のいずれか一項に記載のシステム。
【請求項5】
前記処理ユニットは、前記処理ユニットにより提供されたデータを前記コーデックが圧縮して圧縮データを生成することを含むバストランザクションを前記通信バス上で開始するように動作可能である、請求項1~4のいずれか一項に記載のシステム。
【請求項6】
前記処理ユニットは、前記コーデックが、圧縮データを復元して復元データを生成することと、前記復元データを前記処理ユニットに提供することと、を含むバストランザクションを前記通信バス上で開始するように動作可能である、請求項1~5のいずれか一項に記載のシステム。
【請求項7】
前記処理ユニットは、前記コーデックが、
データを圧縮又は復元するときに使用されるパラメータ及び/又はプロパティを示す情報を前記処理ユニットから前記通信バスを介して受信することと、
前記情報により示される前記パラメータ及び/又はプロパティに従って、データを圧縮又は復元することと、
を含むバストランザクションを前記通信バス上で開始するように動作可能である、請求項1~6のいずれか一項に記載のシステム。
【請求項8】
前記コーデックは、データを圧縮及び復元するように構成されたエンコーダ及びデコーダ回路を備え、前記処理ユニットは、
前記処理ユニットが、前記コーデックが前記メモリにアクセスすべきであることを示す信号と、データを圧縮又は復元するときに使用されるパラメータ及び/又はプロパティを示す情報と、を前記通信バス上で発行することを含むバストランザクションを前記通信バス上で開始するように動作可能であり、
前記コーデックは、前記通信バス上で前記信号を受信したことに応答して、前記情報により示された前記パラメータ及び/又は前記プロパティに従ってデータを圧縮又は復元するように前記エンコーダ及びデコーダ回路を構成するように動作可能である、
請求項1~7のいずれか一項に記載のシステム。
【請求項9】
前記処理ユニットは、前記コーデックが、前記圧縮データを読み出すことなく、前記圧縮データに関連付けられたメタデータを前記メモリから読み出すことと、前記読み出されたメタデータを前記処理ユニットに返すことと、を含むバストランザクションを前記通信バス上で開始するように動作可能である、請求項1~8のいずれか一項に記載のシステム。
【請求項10】
前記処理ユニットは、前記コーデックが、前記通信バスを介して、関連付けられた圧縮データを表すシグネチャを前記処理ユニットから受信すること、又は、関連付けられた圧縮データを表すシグネチャを前記処理ユニットに提供すること、を含むバストランザクションを前記通信バス上で開始するように動作可能である、請求項1~9のいずれか一項に記載のシステム。
【請求項11】
前記コーデックは、
前記メモリにアクセスするバストランザクションを前記通信バス上で開始するように構成されたバストランザクション開始回路を備え、
前記コーデックは、前記コーデックの前記バストランザクション開始回路が、前記メモリにアクセスするバストランザクションを前記通信バス上で開始することによって、前記メモリにアクセスするように動作可能である、
請求項1~10のいずれか一項に記載のシステム。
【請求項12】
コーデックであって、
メモリにアクセスするバストランザクションを通信バス上で開始するように構成されたバストランザクション開始回路と、
前記コーデックが前記メモリにアクセスする要求を前記通信バス上で受信したことに応答して、前記バストランザクション開始回路に、前記メモリにアクセスするバストランザクションを前記通信バス上で開始させるように構成された処理回路と、
を備える、コーデック。
【請求項13】
データ処理システムを動作させる方法であって、前記データ処理システムは、
処理ユニットと、
コーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
前記処理ユニットは、前記コーデックが前記メモリにアクセスすることを含むバストランザクションを前記通信バス上で開始するように動作可能であり、
前記コーデックは、前記処理ユニットが前記バストランザクションを前記通信バス上で開始したことに応答して、前記メモリにアクセスするように動作可能であり、
前記方法は、
前記処理ユニットが、前記コーデックが前記メモリにアクセスするバストランザクションを前記通信バス上で開始することと、
前記コーデックが、前記処理ユニットが前記バストランザクションを前記通信バス上で開始したことに応答して、前記メモリにアクセスすることと、
を含む、方法。
【請求項14】
前記処理ユニットが前記バストランザクションを開始することは、前記処理ユニットが、前記コーデックが前記メモリにアクセスすべきであることを示す信号を前記通信バス上で発行することを含み、
前記コーデックが前記メモリにアクセスすることは、前記コーデックが前記メモリにアクセスすべきであることを示す前記信号を受信したことに応答して、前記コーデックが前記メモリにアクセスすることを含む、請求項13に記載の方法。
【請求項15】
前記メモリにおいて、圧縮データが1つ以上のメモリ空間領域に記憶され、各メモリ空間領域は、1つ以上のメモリ空間サブ領域に分割されており、
前記処理ユニットが前記バストランザクションを開始することは、前記処理ユニットが、前記メモリ空間領域のうちの1つのメモリアドレスと、そのメモリ空間領域の前記メモリ空間サブ領域のうちの1つを示すインデックスと、を示す信号を前記通信バス上で発行することを含み、
前記コーデックが前記メモリにアクセスすることは、前記コーデックが、前記信号を受信したことに応答して、前記メモリアドレスに基づく前記インデックス及び前記信号により示されるインデックスによって示される前記メモリ空間サブ領域のメモリアドレスを判定することと、前記判定されたメモリアドレスにアクセスすることと、を含む、
請求項13又は14に記載の方法。
【請求項16】
前記処理ユニットが前記バストランザクションを開始することは、前記処理ユニットが、圧縮データに関連付けられたヘッダのメモリアドレスを示す信号を前記通信バス上で発行することを含み、前記方法は、前記コーデックが、
読み出すべき圧縮データに関連付けられたヘッダのメモリアドレスを示すメモリアドレス指示信号を受信したことに応答して、前記ヘッダの前記示されたメモリアドレスと、前記圧縮データの前記ヘッダの前記メモリアドレスに対するメモリアドレスオフセットを示す前記ヘッダ内のメモリアドレスオフセット情報とに基づいて、前記圧縮データのメモリアドレスを判定すること、及び/又は、
書き込むべき圧縮データに関連付けられたヘッダのメモリアドレスを示すメモリアドレス指示信号を受信したことに応答して、前記圧縮データの前記ヘッダの前記メモリアドレスに対するメモリアドレスオフセットを示す前記ヘッダ内のメモリアドレスオフセット情報を書き込むこと
を含む、請求項13~15のいずれか一項に記載の方法。
【請求項17】
前記処理ユニットが前記バストランザクションを開始することは、前記処理ユニットが、前記コーデックが前記処理ユニットにより提供されたデータを圧縮して圧縮データを生成するバストランザクションを開始することを含み、前記方法は、
前記コーデックが、前記処理ユニットが前記バストランザクションを開始したことに応答して、
前記処理ユニットにより提供されたデータを圧縮して圧縮データを生成することを含む、
請求項13~16のいずれか一項に記載の方法。
【請求項18】
前記処理ユニットが前記バストランザクションを開始することは、前記処理ユニットが、前記コーデックが圧縮データを復元して復元データを生成し、前記復元データを前記処理ユニットに提供するバストランザクションを開始することを含み、前記方法は、
前記コーデックが、前記処理ユニットが前記バストランザクションを開始したことに応答して、
圧縮データを復元して復元データを生成することと、
前記復元データを前記処理ユニットに提供することと、
を含む、請求項13~16のいずれか一項に記載の方法。
【請求項19】
前記コーデックが、データを圧縮するときに使用されるパラメータ及び/又はプロパティを示す情報を前記処理ユニットから前記通信バスを介して受信することと、前記情報によって示された前記パラメータ及び/又は前記プロパティに従って前記データを圧縮することと、を含む、請求項17に記載の方法、
あるいは、
前記コーデックが、データを復元するときに使用されるパラメータ及び/又はプロパティを示す情報を前記処理ユニットから前記通信バスを介して受信することと、前記情報によって示された前記パラメータ及び/又は前記プロパティに従って前記圧縮データを復元することと、を含む、請求項18に記載の方法。
【請求項20】
前記コーデックは、データを圧縮及び復元するように構成されたエンコーダ及びデコーダ回路を備え、前記方法は、
前記処理ユニットが、前記コーデックが前記メモリにアクセスすべきであることを示す信号と、データを圧縮又は復元するときに使用されるパラメータ及び/又はプロパティを示す情報と、を前記通信バス上で発行することと、
前記コーデックが、前記信号を前記通信バス上で受信したことに応答して、前記情報により示された前記パラメータ及び/又は前記プロパティに従ってデータを圧縮又は復元するように前記エンコーダ及びデコーダ回路を構成することと、
を含む、請求項13~19のいずれか一項に記載の方法。
【請求項21】
前記処理ユニットが前記バストランザクションを開始することは、前記処理ユニットが、前記コーデックが、前記圧縮データを読み出すことなく、前記圧縮データに関連付けられたメタデータを前記メモリから読み出し、前記読み出されたメタデータを前記処理ユニットに返すバストランザクションを開始することを含み、前記方法は、
前記コーデックが、前記処理ユニットが前記バストランザクションを開始したことに応答して、
前記圧縮データを読み出すことなく、前記圧縮データに関連付けられたメタデータを前記メモリから読み出すことと、
前記読み出されたメタデータを前記処理ユニットに返すことと、
を含む、請求項13~16のいずれか一項に記載の方法。
【請求項22】
前記処理ユニットが前記バストランザクションを開始することは、前記処理ユニットが、前記コーデックが、前記通信バスを介して、関連付けられた圧縮データを表すシグネチャを前記処理ユニットから受信する、又は、関連付けられた圧縮データを表すシグネチャを前記処理ユニットに提供する、バストランザクションを開始することを含み、前記方法は、
前記コーデックが、前記処理ユニットが前記バストランザクションを開始したことに応答して、
前記通信バスを介して、関連付けられた圧縮データを表すシグネチャを前記処理ユニットから受信すること、又は、関連付けられた圧縮データを表すシグネチャを前記処理ユニットに提供すること、
を含む、請求項13~16のいずれか一項に記載の方法。
【請求項23】
前記コーデックが、前記メモリにアクセスするバストランザクションを前記通信バス上で開始するように構成されたバストランザクション開始回路を備え、
前記コーデックが前記メモリにアクセスすることは、前記コーデックの前記バストランザクション開始回路が、前記メモリにアクセスするバストランザクションを前記通信バス上で開始することを含む、
請求項13~22のいずれか一項に記載の方法。
【請求項24】
メモリにアクセスするバストランザクションを通信バス上で開始するように構成されたバストランザクション開始回路を備えるコーデックを動作させる方法であって、
前記方法は、
前記コーデックが前記メモリにアクセスする要求を前記通信バス上で受信したことに応答して、前記バストランザクション開始回路に、前記メモリにアクセスするバストランザクションを前記通信バス上で開始させること、
を含む、方法。
【請求項25】
コンピュータプログラムであって、前記プログラムがデータプロセッサ上で実行されると、請求項13~24のいずれか一項に記載の方法を実行するためのコンピュータソフトウェアコードを備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に記載される技術は、データ処理システムに関し、特に、グラフィック処理システムなどのデータ処理システムにおける圧縮及び復元に関する。
【0002】
グラフィックプロセッサ(グラフィック処理ユニット(graphics processing unit、GPU))は、典型的には、非圧縮形態のデータを処理することによってグラフィック処理動作を実行する。そのような動作が特定の出力(例えばフレーム)を生成したとき、出力されたデータは次いで、グラフィックプロセッサによる更なる処理の前に記憶するために、メモリに書き込まれ得る。
【0003】
メモリとの間で転送する必要があるデータの量、並びにそのようなデータを前後に移動させる関連付けられた電力コストを低減するために、データは、メモリに書き込まれる前に圧縮され得る。これにより、データを、圧縮されたフォーマットで記憶することが可能になる。次いで、グラフィックプロセッサが更なる処理のためにデータを要求するとき、圧縮データは、メモリから読み出され、更にグラフィックプロセッサによる処理に好適なフォーマットになるように、復元される。
【0004】
出願人らは、データ処理システムにおけるそのような圧縮構成及び復元構成に対する改善の余地が依然として存在すると考える。
【図面の簡単な説明】
【0005】
本明細書に記載される技術の実施形態を、単なる例として、添付図面を参照して説明する。
図1】本明細書に記載される技術の一実施形態によるデータ処理システムを示す。
図2】本明細書に記載される技術の実施形態によるデータ処理システムを概略的に示す。
図3A】本明細書に記載される技術の実施形態によるメモリレイアウトを概略的に示す。
図3B】本明細書に記載される技術の実施形態によるメモリレイアウトを概略的に示す。
図3C】本明細書に記載される技術の実施形態によるメモリレイアウトを概略的に示す。
図4A】本明細書に記載される技術の一実施形態による圧縮データ読み出しトランザクションを概略的に示す。
図4B】本明細書に記載される技術の一実施形態による圧縮データ読み出しトランザクションを概略的に示す。
図5A】本明細書に記載される技術の一実施形態による圧縮データ書き込みトランザクションを概略的に示す。
図5B】本明細書に記載される技術の一実施形態による圧縮データ書き込みトランザクションを概略的に示す。
図6A】本明細書に記載される技術の実施形態によるデータ処理システムを概略的に示す。
図6B】本明細書に記載される技術の実施形態によるデータ処理システムを概略的に示す。
図7】本明細書に記載される技術の一実施形態によるコーデックユニットを概略的に示す。
【0006】
適切な場合、図面中の同様の構成要素に対して、同様の参照番号が使用される。
【発明を実施するための形態】
【0007】
本明細書に記載される技術の第1の実施形態は、データ処理システムであって、
処理ユニットと、
コーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
処理ユニットは、コーデックがメモリにアクセスすることを含むバストランザクションを通信バス上で開始するように動作可能であり、
コーデックは、処理ユニットがバストランザクションを通信バス上で開始したことに応答して、メモリにアクセスするように動作可能である、
データ処理システムを含む。
【0008】
本明細書に記載される技術の第2の実施形態は、データ処理システムを動作させる方法であって、データ処理システムは、
処理ユニットと、
コーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
処理ユニットは、コーデックがメモリにアクセスすることを含むバストランザクションを通信バス上で開始するように動作可能であり、
コーデックは、処理ユニットがバストランザクションを通信バス上で開始したことに応答して、メモリにアクセスするように動作可能であり、
方法は、
処理ユニットが、コーデックがメモリにアクセスするバストランザクションを通信バス上で開始することと、
コーデックが、処理ユニットがバストランザクションを通信バス上で開始したことに応答して、メモリにアクセスすることと、
を含む、方法を含む。
【0009】
本明細書に記載される技術は、データを圧縮及び復元するように動作可能なコーデックユニットを含む、一実施形態ではグラフィック処理システムなどの、データ処理システムに関する。
【0010】
システムは、一実施形態では中央処理装置(central processing unit、CPU)又はグラフィック処理ユニット(GPU)などの、一実施形態ではバス(インターコネクト)上でバストランザクションを開始することによって、通信バス(インターコネクト)を介してメモリにアクセスすることができる、処理ユニットを含む。したがって、処理ユニットは、バスマスタとして機能するように動作可能であってもよく、一実施形態ではそのように動作可能である。処理ユニットが開始できるバストランザクションは、非圧縮データを読み出す又はそれをメモリに書き込むために処理ユニットがデータ処理システムのメモリにアクセスするバストランザクションを含んでもよく、一実施形態ではそのようなバストランザクションを行う。
【0011】
本明細書に記載される技術では、例えば、非圧縮データが処理ユニットによって読み出されること又は書き込まれることに関与する、このような、例えば「ダイレクト」バストランザクションを開始することができるだけでなく、処理ユニットは、(圧縮)コーデックがメモリにアクセスするバストランザクションを開始することができる。以下でより詳細に説明されるように、これらの「コーデックバストランザクション」は、圧縮データを読み出す又はそれをメモリに書き込むために、あるいは、圧縮データに関連付けられたメタデータを読み出す又はメモリに書き込むために、コーデックがメモリにアクセスすることを含んでもよく、一実施形態ではそのようなトランザクションを行う。
【0012】
特に、コーデックは、処理ユニットによりトリガされた「コーデック」バストランザクション中に、処理ユニットにより提供されたデータを圧縮し、圧縮データをメモリに書き込んでも、あるいは、メモリから圧縮データを読み出し、圧縮データを復元し、復元データを処理ユニットに提供してもよく、一実施形態ではこれらの動作を行う。
【0013】
出願人らは、処理ユニット、例えばCPU及び/又はGPUが、バストランザクションを使用してコーデックと通信し、それによってコーデックを制御することができるようにデータ処理システムを構成することが可能であることを認識した。コーデックを制御するためにバストランザクションを使用することによって、コーデックユニットは、通信バスを介してアクセス可能であるだけでよく、したがって、圧縮動作及び復元動作を要求する処理ユニット(単数又は複数)とあまり緊密に統合されていなくてもよい。
【0014】
これにより、データ処理システムにおける圧縮及び復元のための構成をより柔軟にすることを可能にできる。例えば、本明細書に記載される技術では、複数の異なる処理ユニットは、バストランザクションを使用して、同じ単一の(例えば、外部の)コーデックを制御することができ、一実施形態ではそのようなコーデックを制御し、同様に、単一の処理ユニットは、例えば一実施形態では、異なる符号化(圧縮)方式を実装する複数の異なる(例えば、外部の)コーデックを制御することができ、一実施形態ではそのようなコーデックを制御する。
【0015】
更に、本明細書に記載される技術の様式におけるバストランザクションの使用は、特に率直かつ効率的な様式でこの柔軟性を提供することができる。例えば、出願人らは、AXIなどの既存のバスプロトコルに対する比較的小さな修正により、本明細書に記載される技術の様式におけるバストランザクションを使用したコーデックの制御が可能にできることを認識した。
【0016】
更に、本明細書に記載される技術では、処理ユニットは、他の、例えば「ダイレクト」バストランザクションに使用するのと同じバスインターフェースを介して、コーデックを制御することができ、一実施形態ではそのようなコーデックを制御する。したがって、処理ユニットは、メモリ内の非圧縮データにアクセスするのと本質的に同じ様式で、例えば一実施形態では「ランダムアクセス」様式で、メモリ内の圧縮データにアクセスすることが可能であってもよく、一実施形態ではアクセスすることができる。同様に、処理ユニットは、同じ単一のバスインターフェースを介して複数の異なるコーデックユニットを制御することが可能であり得る。
【0017】
これは、例えば、本明細書に記載される技術が、データ処理システムにおいて圧縮動作及び復元動作を実行することに関連付けられる全体的なハードウェア/シリコン面積のコストを低減できることを意味する。更に、圧縮動作及び復元動作を実行するときのシステムの全体的なエネルギー消費を低減することができる。これは一般的に有利であるが、ポータブルデバイス、例えば携帯電話及びタブレットにおいてなど、リソースが限られているコンテキストでは特に有利であり得る。
したがって、本明細書に記載される技術は、改善されたデータ処理システムを提供することが理解されよう。
【0018】
処理ユニットは、任意の好適な処理ユニットであり得る。処理ユニットは、例えば一実施形態では、中央処理装置(CPU)、グラフィック処理ユニット(GPU)(グラフィックプロセッサ)、ビデオプロセッサ、サウンドプロセッサ、画像信号プロセッサ(image signal processor、ISP)、デジタル信号プロセッサ(digital signal processor、DSP)、ニュートラルネットワークプロセッサ、又はディスプレイコントローラであり得る。他の処理ユニットも可能である。
【0019】
処理ユニットは、(データ処理システムの)メモリにアクセスするバストランザクションを通信バス上で開始することができる。一実施形態における処理ユニットは、通信バス(インターコネクト)と通信しているバスインターフェース(バスアダプタ)を備え、それを介して、処理ユニットはバス(インターコネクト)上でバストランザクションを開始することができる。処理ユニットは、通信バス(インターコネクト)上でバストランザクション要求を発行することによってバストランザクションを開始するように、一実施形態では、要求によって開始されたバストランザクションを制御するように動作可能でなければならず、一実施形態ではそのように動作可能である。したがって、処理ユニットは、バスマスタとして機能するように動作可能でなければならず、一実施形態ではそのように動作可能である。更に、システムは、通信バスを介してアクセスすることができるメモリを備えなければならず、一実施形態ではそのようなメモリを備える。
【0020】
メモリは、一実施形態では、画像データ、テクスチャデータ、グラフィック処理フラグメントデータ又はグラフィック処理バーテックスデータ、ビデオデータ、サウンドデータ、ニューラルネットワークデータなどのような、データ処理システムが使用及び/又は生成する任意の好適な(例えば、圧縮データ及び/又は非圧縮(圧縮されていない))データを記憶するための任意の好適な所望の記憶装置であり得る。
【0021】
通信バスを介してアクセスすることができる1つ以上の、例えば複数の異なるメモリが存在し得る。一実施形態では、メモリは外部メモリである(例えば、処理ユニット及び/又はコーデックと同じチップ上にない)。例えば、メモリは、一実施形態では、コーデック(及び処理ユニット)が(同じ(システム)バスを介して)アクセスすることができるデータ処理システムのメイン(システム)メモリである。
【0022】
システムは、メモリアドレスを(論理メモリアドレスと物理メモリアドレスとの間で)適切に変換するように動作可能なメモリに関連付けられたメモリ管理ユニット(memory management unit、MMU)を備え得る。
【0023】
通信バスは、(例えば、メイン)メモリにアクセスするバストランザクションをその上で実行することができる任意の好適な所望のインターコネクトであり得る。バスは、(バストランザクション中に)任意の好適な信号及びデータを(少なくとも)メモリとの間で転送することが可能であってもよく、これらの目的のために、任意の好適なチャネルのセットを備えてもよい。
【0024】
例えば、通信バスは、制御データ、及び/又はアドレスデータ、及び/又は読み出しデータ、及び/又は書き込みデータ(書き込むべきデータ)を搬送するための1つ以上のチャネルを備え得る。制御データ、アドレスデータ、及び「ユーザ」データに対して別個の(独立した)チャネルが存在してもよく、あるいは、制御データ、アドレスデータ、及び「ユーザ」データのうちの2つ以上に対して同じチャネルを使用してもよい。同様に、読み出しトランザクション及び書き込みトランザクションに対して別個の(独立した)チャネルが存在してもよく、あるいは、読み出しトランザクションと書き込みトランザクションの両方に対して同じチャネルを使用してもよい。
【0025】
一実施形態では、通信バスは、例えば一実施形態ではAMBA(Advanced Microcontroller Bus Architecture、アドバンスドマイクロコントローラバスアーキテクチャ)の仕様に記載されているAdvanced eXtensible Interface(AXI、アドバンスドエクステンシブルインターフェース)に従った、読み出しアドレスチャネル、読み出しデータチャネル、書き込みアドレスチャネル、書き込みデータチャネル、及び書き込み応答チャネルを備える。他のチャネル構成も可能である。
【0026】
システムは、これに対応して、バストランザクションがAXIなどのバスプロトコルに従って実行されるように構成しなければならず、一実施形態ではそのように構成される。処理ユニット、バス、メモリ、コーデックなどは、それに応じて、(問題になっているデータ処理システムの、かつそのための)バスプロトコルに従って動作するように適切に構成されなければならず、一実施形態ではそのように構成される。
【0027】
コーデックは、データを圧縮及び復元することができる任意の好適なコーダ/デコーダユニットであり得る。コーデックは、データを圧縮及び復元するように構成されたエンコーダ及びデコーダ回路を備えなければならず、一実施形態ではそのようなエンコーダ及びデコーダ回路を備える。エンコーダ及びデコーダ回路は、エンコーダ回路及びデコーダ回路を備えてもよく、エンコーダ回路とデコーダ回路とは別個の回路を備えてもよく、あるいは、共有処理回路から少なくとも部分的に形成されてもよい。(圧縮)コーデック(のエンコーダ及びデコーダ回路)は、好適な符号化方式(単数又は複数)に従ってデータを圧縮及び復元するように構成されなければならず、一実施形態ではそのように構成される。例えば、コーデックによって実装される符号化方式は、好適でありかつ所望されるように、非可逆的(lossless)又は可逆的(lossy)であり得る。
【0028】
符号化方式は、例えば、その内容全体が参照により本明細書に組み込まれる米国特許出願公開第2012/0281007号明細書に記載されているような適応型スケーラブルテクスチャ圧縮(Adaptive Scalable Texture Compression、ASTC)、あるいはその内容全体が参照により本明細書に組み込まれる米国特許出願公開第2013/0036290号明細書及び米国特許出願公開第2013/0198485号明細書に記載されているようなアームフレームバッファ圧縮(Arm Frame Buffer Compression、AFBC)を含むことができる。
【0029】
一実施形態では、以下により詳細に説明されるように、処理ユニットは、例えばコーデックが使用すべき符号化方式及び/又はオプションを通信バスを介してコーデックに示すことができる。したがって、コーデック(のエンコーダ及びデコーダ回路)は、一実施形態では、通信バス上で構成可能である。
【0030】
コーデックは、処理ユニットの外部にあってもよい(例えば、処理ユニットと同じチップ上になくてもよい)。しかしながら、一実施形態では、コーデックは、処理ユニットと同じチップ上に提供される。コーデック及び処理チップを同じチップ上に配置することにより、エネルギー消費を低減することができる。コーデックユニット及び処理ユニットは、通信バス(インターコネクト)を介して通信することが可能であり得る。コーデックは、一実施形態では(論理的には)処理ユニットと(例えばメイン)メモリとの間にあり、例えば一実施形態では、それによって、コーデックは、処理ユニットとメモリとの間のバストランザクション通信を妨害することができる。
【0031】
コーデックは、(論理的には)処理ユニットとメモリ管理ユニットとの間にあってもよく、その場合、コーデックは、論理メモリアドレスを使用してメモリにアクセスし得る。代替的に、コーデックは、(論理的には)メモリとメモリ管理ユニットとの間にあってもよく、その場合、コーデックは、物理メモリアドレスを使用してメモリにアクセスし得る。
【0032】
コーデックは、例えばバスインターフェースを介してバス(インターコネクト)に接続されたスタンドアロンモジュールであってもよい。代替的に、コーデックは、バス(インターコネクト)に統合されていてもよい。
【0033】
一実施形態では、コーデックは、(一実施形態では、処理ユニットと同様に)メモリにアクセスするバストランザクションを通信バス上で開始するように構成されたバストランザクション開始回路(例えば、バスインターフェース)を備える。一実施形態では、コーデックは、コーデックのバストランザクション開始回路が、メモリにアクセスするバストランザクションを通信バス上で開始することによって、メモリにアクセスするように動作可能である。したがって、一実施形態では、処理ユニットによって開始された(第1の)バストランザクションを受信したことに応答して、メモリにアクセスする(第2の)バストランザクションをコーデックが開始するような構成が効果的である。
【0034】
コーデックがこの様式でバストランザクションを開始することができるという思想は、それ自体が新規性及び進歩性を有し得ると考えられる。
【0035】
本明細書に記載される技術の別の実施形態は、コーデックであって、
メモリにアクセスするバストランザクションを通信バス上で開始するように構成されたバストランザクション開始回路と、
コーデックがメモリにアクセスする要求を通信バス上で受信したことに応答して、バストランザクション開始回路に、メモリにアクセスするバストランザクションを通信バス上で開始させるように構成された処理回路と、
を備える、コーデックを含む。
【0036】
本明細書に記載される技術の別の実施形態は、メモリにアクセスするバストランザクションを通信バス上で開始するように構成されたバストランザクション開始回路を備えるコーデックを動作させる方法であって、方法は、
コーデックがメモリにアクセスする要求を通信バス上で受信したことに応答して、バストランザクション開始回路に、メモリにアクセスするバストランザクションを通信バス上で開始させること、
を含む、方法を含む。
【0037】
これらの実施形態は、必要に応じて、本明細書に記載される任意選択の特徴のいずれか1つ以上又は全てを含むことができる。例えば、コーデックは、一実施形態では、通信バス上で構成可能である。したがって、一実施形態では、以下でより詳細に説明されるように、要求に応答して、コーデック(のエンコーダ及びデコーダ回路)は、例えば一実施形態では、要求によって示された(符号化)パラメータ及び/又はプロパティに従って、データを圧縮又は復元するように(処理回路によって)構成される。一実施形態では、メモリアクセスは、復元すべき圧縮データを読み出すこと、又は圧縮された圧縮データを書き込むことを含む。
【0038】
上記で説明したように、バストランザクションを介して制御することができるコーデックを提供することにより、複数の異なる処理ユニットが同じ単一のコーデックを制御すること、及び単一の処理ユニットが複数の異なるコーデックを制御することを容易にすることができる。したがって、一実施形態では、システムは、1つ以上の、一実施形態では複数の処理ユニットを備え、その各々は、本明細書で説明される実施形態の様式でメモリにアクセスするようにコーデックをトリガすることができる。一実施形態では、システムは、1つ以上の、一実施形態では複数のコーデックを備え、その各々は、本明細書で説明される実施形態の様式でメモリにアクセスするように(上記の)処理ユニットによりトリガすることができる。複数のコーデックの場合、各コーデックユニットは、一実施形態では、データを別様に、例えば異なる符号化方式に従って、圧縮及び復元するように構成される。
【0039】
また上記で説明したように、(上記の)処理ユニットは、一実施形態では(また)、一実施形態では通信バス(例えば、その制御チャネル又はアドレスチャネル)上で適切なバストランザクション要求を発行することによって、(コーデックがメモリにアクセスすることなく)処理ユニットがメモリにアクセスすることを含むバストランザクション、例えば、ダイレクトメモリアクセス(direct memory access、DMA)を通信バス上で開始するように動作可能である。(したがって、処理ユニットは、(バストランザクション中に)通信バスを介してメモリにアクセスするように動作可能でなければならず、一実施形態ではそのように動作可能である)。一実施形態におけるそのような「ダイレクト」バストランザクションは、メモリにデータを書き込むために処理ユニットがメモリにアクセスすること、及び/又はメモリからデータを読み出すために処理ユニットがメモリにアクセスすることを含む。この場合、メモリから読み出されるデータ又はメモリに書き込まれるデータは、一実施形態では、非圧縮形態である。
【0040】
処理ユニットは(また)、一実施形態では、コーデックを適切に機能する(動作する)ようにトリガする適切なバストランザクション要求を通信バス(の制御チャネル又はアドレスチャネルなど)上で発行することによって、(上記の)コーデックがメモリにアクセスすることを含むバストランザクションを通信バス上で開始するように動作可能である。言い換えれば、一実施形態では、処理ユニットにより発行された適切なバストランザクション要求(を受信すること)によってメモリにアクセスするように、コーデックをトリガすることができる。したがって、コーデックユニットは、バススレーブとして機能するように動作可能であってもよく、一実施形態ではバススレーブとして機能するように動作可能である。更に、コーデックは、(バストランザクション中に)通信バスを介してメモリにアクセスするように動作可能でなければならず、一実施形態ではそのように動作可能である。
【0041】
処理ユニット(単数又は複数)は、一実施形態では、(少なくとも)メモリにデータを書き込むためにコーデックがメモリにアクセスすること及び/又はメモリからデータを読み出すためにコーデックがメモリにアクセスすることを含む「コーデック」バストランザクション(コーデックが、処理ユニットからのバストランザクション要求に応答してメモリにアクセスする)を開始することができる。この場合、メモリから読み出されるデータ又はメモリに書き込まれるデータは、一実施形態では、圧縮形態である。
【0042】
一実施形態では、以下により詳細に説明されるように、処理ユニットはまた、又はその代わりに(一実施形態ではまた)、(一実施形態では、圧縮データに関連付けられたメタデータに関して、かつそのために)メモリからメタデータ(のみ)を読み出すために、及び/又はメモリにメタデータ(のみ)を書き込むためにコーデックがメモリにアクセスすることを含む「コーデック」バストランザクションを開始することができる。
【0043】
したがって、一実施形態では、処理ユニットは、一実施形態では非圧縮データを読み出す又は書き込むために、処理ユニットがメモリにアクセスすることを含む(「ダイレクト」)バストランザクションを開始し、かつ、一実施形態では圧縮データ及び/又は圧縮データに関連付けられたメタデータを読み出す又は書き込むために、コーデックがメモリにアクセスすることを含む(「コーデック」)バストランザクションを開始するように動作可能である。
【0044】
処理ユニットは、任意の好適な所望の様式で「コーデック」バストランザクションを開始することができる。一実施形態では、処理ユニットは、バストランザクションが圧縮データに関連する(したがって、コーデックがメモリにアクセスすることを含まなければならない)という指示を発行することができ、コーデックは、一実施形態では、(バストランザクション中にメモリに適切にアクセスすることによって)そのような指示に適切に応答する。
【0045】
処理ユニットにより発行されるそのような「圧縮データ」指示は、任意の好適な形態をとることができる。例えば、「コーデック」バストランザクションを開始するバストランザクション要求は、要求が圧縮データに関連するという指示を含んでもよく、コーデックは、それに基づいて適切に応答し得る。
【0046】
一実施形態では、処理ユニットは、関連付けられたバストランザクションが圧縮データに関連する(したがって、コーデックがメモリにアクセスすることを含まなければならない)ことを示す特定の信号、一実施形態では選択された信号、一実施形態では予め定められた信号を発行することができる。これに対応して、一実施形態におけるコーデックは、処理ユニットにより発行されたそのような「圧縮データ」信号を受信したことに応答して、適切に応答する(メモリにアクセスする)。
【0047】
そのような「圧縮データ」信号は、バスプロトコルにおいて適切に定義されなければならず、一実施形態では適切に定義される。「圧縮データ」信号は、例えば他の制御情報と一緒に、通信バスの制御チャネル又はアドレスチャネルなど、通信バスの任意の好適なチャネル上で発行されてもよく、任意の好適なチャネルによって搬送されてもよい。
【0048】
一実施形態では、処理ユニットは、バストランザクション要求がメモリにアクセスするためにコーデックをトリガすべきか否かを示すことができる。処理ユニットは、例えば、バストランザクション要求が圧縮データに関連するときには「圧縮データ」信号を発行してもよく、バストランザクション要求が圧縮データに関連しないときには(例えば、非圧縮データに関連するときには)そのような信号を発行しなくてもよい(例えば、異なる信号を発行してもよい)。更に、複数の異なるコーデックが存在し得る場合、「圧縮データ」信号は、メモリにアクセスするためにトリガされるべき特定のコーデックを示し得る。
【0049】
これに対応して、一実施形態では、(上記の)コーデックは、受信されたバストランザクション要求に応答して、一実施形態では、要求が(例えば、適切な信号を含んでいることによって)コーデックがアクセスすべきであることを示すか否か(例えば、要求が圧縮データに関連するものとして示されるか否か)に基づいて、コーデックがメモリにアクセスすべきかどうかを判定する。受信されたバストランザクション要求に応答してメモリにコーデックがアクセスすべきであると判定されたとき、一実施形態におけるコーデックは、必要に応じてメモリにアクセスする。
【0050】
しかしながら、コーデックがメモリにアクセスすべきであると判定されない(判定されることを除く)とき、一実施形態におけるコーデックは、メモリにアクセスしない。コーデックは、コーデックが応答すべきであることを示さない(圧縮データに関連するものとして示されない)バストランザクション要求に(全く)応答しないことがある。しかしながら、一実施形態では、コーデックは、コーデックが応答すべきであることを示さない(例えば、圧縮データに関連するものとして示されない)任意のバストランザクション要求を(通信バス上で)転送するように動作可能であり、例えば、一実施形態では、それによって、転送された要求は、通信バス(インターコネクト)を介して他のコーデック(存在する場合)又はシステムの他の構成要素に適切に到達し、トリガすることができる。
【0051】
したがって、一実施形態では、(上記の)コーデックは、コーデックが応答すべきであることを示さない(例えば、圧縮データに関連するものとして示されない)受信されたバストランザクション要求を(通信バス上で)転送するように動作可能なバイパス回路を含む。しかしながら、他の実施形態では、システムは、コーデックが応答すべきバストランザクション要求のみがコーデックによって受信されるように、例えば、コーデックを対象としない要求がコーデックを迂回するように構成され得る。
【0052】
一実施形態では、コーデックは、受信されたバストランザクション要求に応答してコーデックがメモリにアクセスすべきかどうかを判定し、受信されたバストランザクション要求に応答してコーデックがメモリにアクセスすべきであると判定されたときにはメモリにアクセスし、受信されたバストランザクション要求に応答してコーデックがメモリにアクセスすべきであると判定されないときには(メモリにアクセスすることなく)受信されたバストランザクション要求を(通信バス上で)転送する、ように動作可能である。
【0053】
バストランザクションがコーデックに関与すべきであることを示すことができるだけでなく、処理ユニットは、バストランザクション中にコーデックが実行すべき動作を、例えば、一実施形態ではコーデックがデータを読み出すべきか、あるいは書き込むべきかを、コーデックに通信バスを介して示すことができなければならず、一実施形態では、そのように示すことができる。これに対応して、既に述べたように、コーデックは、通信バス上で構成可能であるべきであり、一実施形態では構成可能である。
【0054】
コーデックがデータを読み出すべきか、あるいは書き込むべきかを、処理ユニットによって任意の好適な所望の様式で示すことができる。例えば、処理ユニットは、コーデックがデータを読み出すべきときには通信バス上で「圧縮データ」信号を発行し、コーデックがデータを書き込むべきときには通信バス上で異なる「圧縮データ」信号を発行してもよい。一実施形態では、通信バスは、独立した読み出しチャネル及び書き込みチャネルを備え、処理ユニットは、コーデックが圧縮データを読み出すべきときには、読み出し(例えば、制御又はアドレス)チャネル上で「圧縮データ」信号を発行し、コーデックが圧縮データを書き込むべきときには書き込み(例えば、制御又はアドレス)チャネル上で「圧縮データ」信号を発行する(コーデックは、それに応じて応答して動作するように構成される)。
【0055】
一実施形態では、上述のように、メモリから圧縮データを読み出すべきであると処理ユニットがコーデックに示すときには、コーデックは、それに応答して、メモリから圧縮データを読み出し、読み出した圧縮データを復元して復元データを生成し、復元データを通信バスを介して処理ユニットに提供する。したがって、一実施形態では、処理ユニットは、コーデックが、メモリから圧縮データを読み出すことと、圧縮データを復元して復元データを生成することと、一実施形態では処理ユニットが通信バス上で適切な指示(例えば、信号(単数又は複数))を発行することによって、通信バスを介して復元データを処理ユニットに提供することと、を含む(「コーデック」)バストランザクションを開始するように動作可能である。
【0056】
同様に、一実施形態では、圧縮データをメモリに書き込むべきであると処理ユニットがコーデックに示すとき、コーデックは、それに応答して、通信バスを介して処理ユニットにより提供されたデータを圧縮して圧縮データを生成し、圧縮データをメモリに書き込む。したがって、一実施形態では、処理ユニットは、コーデックが、通信バスを介して処理ユニットにより提供されたデータを圧縮して圧縮データを生成することと、一実施形態では処理ユニットが通信バス上で適切な指示(例えば、信号(単数又は複数))を発行することよって、コーデックが圧縮データをメモリに書き込むことと、を含む(「コーデック」)バストランザクションを開始するように動作可能ある。
【0057】
これを容易にするために、一実施形態では、処理ユニットは、非圧縮データを圧縮するとき又は圧縮データを復元して復元データを生成するときにコーデックが使用すべき符号化パラメータ及び/又はプロパティを、通信バスを介してコーデックに示すことができる。処理ユニットは、例えば一実施形態では、使用すべき符号化方式を示し得る。
【0058】
同様に、一実施形態では、処理ユニットは、コーデックが圧縮すべき非圧縮データのパラメータ及び/又はプロパティ、あるいはコーデックが生成すべき復元データのパラメータ及び/又はプロパティを、通信バスを介してコーデックに示すことができる。示されたパラメータ及び/又はプロパティは、RGB/RGBA/YUV、成分数、(成分当たりの)ビット数、浮動小数点/符号なし/符号付き整数など、データ表現のパラメータ及び/又はプロパティのような任意の好適なパラメータ又はプロパティであり得る。
【0059】
一実施形態では、これらの指示は、処理ユニットが例えば他の制御データと一緒に通信バス(例えば、その制御チャネル又はアドレスチャネル)上で発行することができ、一実施形態ではバスプロトコルで定義される、1つ以上の信号の形態である。
【0060】
したがって、一実施形態では、処理ユニットは、コーデックが、データを圧縮又は復元するときに使用されるパラメータ及び/又はプロパティを示す情報を処理ユニットから通信バスを介して受信することと、示されたパラメータ及び/又はプロパティに従ってデータを圧縮又は復元することと、を含むバストランザクションを通信バス上で開始するように動作可能である。この情報は、例えば、圧縮記述子の形態であってもよい。一実施形態では、コーデック(のエンコーダ及びデコーダ回路)は、情報を受信したことに応答して、情報により示されたパラメータ及び/又はプロパティに従ってデータを圧縮又は復元するように構成される。
【0061】
したがって、本明細書に記載される技術の一実施形態は、データ処理システムであって、
処理ユニットと、
エンコーダ及びデコーダ回路を備えるコーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
処理ユニットは、
処理ユニットが、コーデックがメモリにアクセスすべきであることを示す信号と、データを圧縮又は復元するときにコーデックにより使用されるべきパラメータ及び/又はプロパティを示す情報と、を通信バス上で発行することと、
コーデックが、信号を通信バス上で受信したことに応答して、情報により示されたパラメータ及び/又はプロパティに従ってデータを圧縮又は復元するようにエンコーダ及びデコーダ回路を構成することと、
を含む、バストランザクションを通信バス上で開始するように動作可能である、データ処理システムを含む。
【0062】
本明細書に記載される技術の一実施形態は、データ処理システムを動作させる方法であって、データ処理システムは、
処理ユニットと、
エンコーダ及びデコーダ回路を備えるコーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
方法は、
処理ユニットは、
処理ユニットが、コーデックがメモリにアクセスすべきであることを示す信号と、データを圧縮又は復元するときにコーデックにより使用されるべきパラメータ及び/又はプロパティを示す情報と、を通信バス上で発行することと、
コーデックが、信号を通信バス上で受信したことに応答して、情報により示されたパラメータ及び/又はプロパティに従ってデータを圧縮又は復元するようにエンコーダ及びデコーダ回路を構成することと、
を含む、バストランザクションを通信バス上で開始すること、
を含む、方法を含む。
【0063】
これらの実施形態は、必要に応じて、本明細書に記載される任意選択の特徴のいずれか1つ以上又は全てを含むことができる。例えば、バストランザクションは、コーデックが、データを復元し、復元データを処理ユニットに返すこと、又は、データを圧縮し、圧縮データをメモリに書き込むこと、を含み得る。
【0064】
通信バス上で処理ユニットにより発行される「コーデック」バストランザクション要求は、任意の他の好適な情報を含むことができる。一実施形態では、処理ユニットは、コーデックがアクセスすべきメモリアドレスの指示、及び/又はコーデックがアクセスすべきメモリアドレスをそこから判定することができる情報を発行することができ、コーデックは、通信バスを介してメモリアドレスの指示を受信したことに応答して、メモリアドレスの指示に基づいてメモリアドレスにアクセスする(例えば、そこから圧縮データを読み出す、又はそこに圧縮データを書き込む)。一実施形態では、このようなメモリアドレスの指示は、処理ユニットが通信バス(例えば、その制御チャネル又はアドレスチャネル)上で発行することができ、かつ、コーデックが通信バスを介して受信することができ、一実施形態ではバスプロトコルで定義される、信号の形態である。
【0065】
処理ユニットにより発行されたメモリアドレス指示信号は、コーデックがアクセスすべきメモリ内のメモリアドレスをコーデックに直接示すことができる。例えば、メモリアドレス指示信号は、アクセスすべきメモリ内の実際のメモリアドレスの指示を含んでもよい。
【0066】
一実施形態では、メモリアドレス指示信号は、アクセスすべきメモリ内のメモリアドレスを判定するためにコーデックが使用することができる情報を含む。
【0067】
例えば、データのアレイが複数のブロックに分割され、各ブロックの圧縮データが、それぞれのブロックが表すアレイ内の位置に基づいて判定することができるそれぞれのメモリロケーションでメモリに記憶される(例えば、米国特許出願公開第2013/0036290号明細書及び/又は米国特許出願公開第2013/0198485号明細書に記載されているような)場合、メモリアドレス指示信号は、対応するアクセスすべきメモリアドレスをコーデックがそこから判定することができるデータアレイ内の位置の指示を、例えば、ブロックのセットを示す「ベース」アドレス及びブロックのそのセット内のブロックを示すインデックスの形態で含んでもよい。
【0068】
このようにしてメモリアドレスを間接的に示すことは、例えば、「ベース」メモリアドレスと「ブロック」メモリアドレスの両方を明示的に示すことと比較して、アクセスすべきメモリアドレスを示すために通信バス上で処理ユニットとコーデックとの間をパスするために必要な情報量を低減することができる。例えば、一実施形態では、ブロックインデックスは、通信バス上をパスするアドレス情報の1つ以上の最下位ビットによって示され得る。
【0069】
通信バス上で処理ユニットにより発行されたメモリアドレス指示信号は、圧縮データをそこから読み出す(又は、圧縮データをそこに書き込む)ためにコーデックがアクセスすべきメモリ内のメモリアドレスを判定することを可能にするためにコーデックが要求する情報の全てを含み得る。
【0070】
例えば、メモリアドレス指示信号がベースアドレス及びインデックスを示す場合、インデックスとメモリアドレスオフセットとの間に暗黙的関係が存在することがあり、それによって、各インデックスが、ベースアドレスに対する特定のメモリアドレスオフセットを「暗示」し、アクセスすべきメモリアドレスをメモリアドレス指示信号内の情報(のみ)(及び「暗黙的(implicit)」関係の知識)から(コーデックにより)判定することができる。これは、例えば一実施形態では、連続するメモリ空間領域(「チャンク」)が固定サイズのサブ領域に分割され、各サブ領域がそれぞれのインデックスに関連付けられている場合であり得る。
【0071】
一実施形態では、圧縮データは、圧縮データが書き込まれた(例えば、第1の)メモリアドレスを判定するためにコーデックが(後で)使用することができる情報と一緒にメモリに書き込まれ得る。この場合、通信バス上で処理ユニットにより発行されたメモリアドレス指示信号は、圧縮データをそこから読み出すためにコーデックがアクセスすべきメモリ内のメモリアドレスを判定することを可能にするためにコーデックが要求する情報の全てよりも少数を含み得る。
【0072】
したがって、一実施形態では、コーデックは、圧縮データをメモリに書き込むときには、圧縮データが記憶されているメモリアドレスを判定するために使用することができる関連付けられたメモリアドレス情報をメモリに書き込み、圧縮データをメモリから読み出すときには、関連付けられたメモリアドレス情報をメモリから読み出し、読み出したメモリアドレス情報を使用して圧縮データを読み出すべきメモリアドレスを判定する。
【0073】
このメモリアドレス情報は、任意の好適な所望の形態で提供することができる。一実施形態では、圧縮データは、ヘッダに関連付けてメモリに記憶され(圧縮データは、それぞれのヘッダに関連付けられた(そのための)「本体」データである)、圧縮データのメモリアドレス情報は、その圧縮データに関連付けられたヘッダに記憶される。
【0074】
ヘッダは、関連付けられた本体データに割り当てられているメモリアドレスの連続セットと連続する、例えばその前又は後のメモリ内のメモリアドレスの連続セットに割り当てられ得る。
【0075】
一実施形態では、複数のブロックの本体データが一緒に記憶され、それらのブロックの対応するヘッダは一緒に記憶される。したがって、一実施形態では、関連付けられたヘッダと本体データの複数のそれぞれのセットが存在し、単一のメモリ領域はヘッダデータの全てを記憶し、別個の本体データ領域は本体データの全てを記憶する。一実施形態では、(一実施形態では固定サイズの)各「チャンク」に対して、それぞれ別個の「ヘッダ」メモリ領域及び「本体」メモリ領域が存在する。他の構成も可能である。
【0076】
ヘッダが使用される場合、通信バス上で処理ユニットにより発行されたメモリアドレス指示信号は、一実施形態では、アクセスすべき圧縮データに関連付けられたヘッダのメモリアドレス(例えば、第1のメモリアドレス)を示す(次いで、コーデックは、例えば一実施形態では、ヘッダを読み出し、ヘッダ内のメモリアドレス情報を使用して圧縮データ自体にアクセスする)。したがって、コーデックは、処理ユニットにより発行されたメモリアドレス指示信号により示されるメモリアドレスからヘッダ情報を読み出す、又はそのメモリアドレスにヘッダ情報を書き込むことができる。
【0077】
ヘッダ情報は、圧縮データが記憶されているメモリアドレス、例えば、関連付けられた本体データのメモリアドレスを判定するために使用され得る任意の好適な情報を含み得る。ヘッダデータは、例えば一実施形態では、関連付けられた本体データのサイズを含むことができる。
【0078】
一実施形態では、ヘッダ情報は、コーデックが圧縮データを読み出すためにアクセスし得るメモリ内のメモリアドレスを判定するためにヘッダのメモリアドレスに適用することができるヘッダのメモリアドレスに対するメモリアドレスオフセットを示す、メモリアドレスオフセット情報を含む。したがって、一実施形態では、コーデックは、読み出すべき圧縮データに関連付けられたヘッダのメモリアドレス(及び一実施形態ではインデックス)を示すメモリアドレス指示信号を受信したことに応答して、ヘッダのメモリアドレスに対するメモリアドレスオフセットを示すヘッダ内のメモリアドレスオフセット情報からのメモリアドレスオフセットを判定し、ヘッダのメモリアドレス及び判定されたメモリアドレスオフセット(及び一実施形態ではインデックス)から、読み出すべき圧縮データのメモリアドレスを判定する。
【0079】
これに対応して、一実施形態では、コーデックは、書き込むべき圧縮データに関連付けられたヘッダのメモリアドレスを示すメモリアドレス指示信号を受信したことに応答して、圧縮データとヘッダのメモリアドレスとの間のメモリアドレスオフセットを示すヘッダ内のメモリアドレスオフセット情報を書き込む。
【0080】
圧縮データに関連付けられたヘッダのメモリアドレスに対するオフセットを使用して圧縮データをアドレス指定するという思想は、それ自体が新規性及び進歩性を有し得ると考えられる。
【0081】
したがって、本明細書に記載される技術の別の実施形態は、データ処理システムであって、
圧縮データを記憶するためのメモリと、
処理回路であって、
ヘッダに関連付けられている圧縮データをメモリから読み出すときに、ヘッダのメモリアドレスと、圧縮データに関するヘッダのメモリアドレスに対するメモリアドレスオフセットを示すヘッダ内のメモリアドレスオフセット情報とに基づいて、圧縮データのメモリアドレスを判定し、
ヘッダに関連付けられている圧縮データをメモリに書き込むときに、圧縮データのヘッダのメモリアドレスに対するメモリアドレスオフセットを示すヘッダ内のメモリアドレスオフセット情報を書き込む、
ように構成されている、処理回路と、
を備えるデータ処理システムを含む。
【0082】
本明細書に記載される技術の別の実施形態は、圧縮データを記憶するためのメモリを備えるデータ処理システムを動作させる方法であって、方法は、
ヘッダに関連付けられている圧縮データをメモリから読み出すときに、ヘッダのメモリアドレスと、圧縮データに関するヘッダのメモリアドレスに対するメモリアドレスオフセットを示すヘッダ内のメモリアドレスオフセット情報とに基づいて、圧縮データのメモリアドレスを判定することと、
ヘッダに関連付けられている圧縮データをメモリに書き込むときに、圧縮データのヘッダのメモリアドレスに対するメモリアドレスオフセットを示すヘッダ内のメモリアドレスオフセット情報を書き込むことと、
を含む、方法を含む。
【0083】
これらの実施形態は、必要に応じて、本明細書に記載される任意選択の特徴のいずれか1つ以上又は全てを含むことができる。例えば、処理ユニットは、メモリアドレスを示してもよく、コーデックは、メモリアドレスを判定し(アクセスし)得る。一実施形態では、ヘッダ内のメモリアドレスオフセット情報は、処理ユニットによりトリガされたバストランザクション中に、コーデックによって書き込む又は読み出すことができる。使用されるメモリアドレスシグナリング構成は、使用されるメモリ内の圧縮データの特定の構成に対応すべきであることが理解されよう。
【0084】
一実施形態では、既に述べたように、連続するメモリ空間領域(「チャンク」)が固定サイズのサブ領域に分割され、各サブ領域がそれぞれのインデックスに関連付けられている。この場合、1つの(例えば、最初又は最後の)サブ領域をヘッダデータのために確保してもよく、他のサブ領域の各々は、圧縮(本体)データのそれぞれのブロックのために確保され得る。代替的に、例えばヘッダが使用されない場合、サブ領域の全てが、圧縮データのそれぞれのブロックのために確保され得る。
【0085】
この場合、一実施形態では、インデックスと「チャンク」のベース(例えば、第1の)アドレスに対するメモリアドレスオフセットとの間に暗黙的関係が存在する。したがって、この場合、一実施形態では、メモリアドレス指示信号は、「チャンク」のベースアドレスと、その「チャンク」内のサブ領域のうちの1つを示すインデックスとを示す。この場合、コーデックは、チャンクのベース(例えば、第1の)アドレス及びそのチャンク内のサブ領域のインデックスから(インデックスとサブ領域のメモリアドレスオフセットとの間の「暗黙的」関係に基づいて)(また、存在する場合には、ヘッダ情報に基づいて)、サブ領域の(例えば、第1の)メモリアドレスを判定することが可能であり得る。
【0086】
上述のように、一実施形態では、コーデックが圧縮データ自体を読み出すことを含む(「コーデック」)バストランザクションを開始することができるだけでなく(又はその代わりに)、処理ユニットは、コーデックが、圧縮データに関連付けられたメタデータをメモリから読み出すことと、一実施形態では、読み出されたメタデータを処理ユニットに提供することと、を含む(「コーデック」)バストランザクションを開始するように動作可能である。
【0087】
したがって、本明細書に記載される技術の一実施形態は、データ処理システムであって、
処理ユニットと、
コーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
処理ユニットは、コーデックが、圧縮データを読み出すことなく、圧縮データに関連付けられたメタデータをメモリから読み出すことと、読み出されたメタデータを処理ユニットに返すことと、を含むバストランザクションを通信バス上で開始するように動作可能であり、
コーデックは、処理ユニットが通信バス上でそのようなバストランザクションを開始したことに応答して、圧縮データを読み出すことなく、圧縮データに関連付けられたメタデータをメモリから読み出し、読み出されたメタデータを処理ユニットに返すように動作可能である、
データ処理システムを含む。
【0088】
本明細書に記載される技術の一実施形態は、データ処理システムを動作させる方法であって、データ処理システムは、
処理ユニットと、
コーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
処理ユニットは、コーデックが、圧縮データを読み出すことなく、圧縮データに関連付けられたメタデータをメモリから読み出すことと、読み出されたメタデータを処理ユニットに返すことと、を含むバストランザクションを通信バス上で開始するように動作可能であり、
コーデックは、処理ユニットが通信バス上でそのようなバストランザクションを開始したことに応答して、圧縮データを読み出すことなく、圧縮データに関連付けられたメタデータをメモリから読み出し、読み出されたメタデータを処理ユニットに返すように動作可能であり、
方法は、
処理ユニットが、コーデックが、圧縮データを読み出すことなく、圧縮データに関連付けられたメタデータをメモリから読み出し、読み出されたメタデータを処理ユニットに返すべきであるバストランザクションを通信バス上で開始することと、
コーデックが、処理ユニットがそのようなバストランザクションを通信バス上で開始したことに応答して、圧縮データを読み出すことなく、圧縮データに関連付けられたメタデータをメモリから読み出し、読み出されたメタデータを処理ユニットに返すことと、
を含む、方法を含む。
【0089】
これらの実施形態は、必要に応じて、本明細書に記載される任意選択の特徴のいずれか1つ以上又は全てを含むことができる。
【0090】
これらの実施形態では、メタデータは、一実施形態において、関連付けられた圧縮データの1つ以上のプロパティを表すデータである。例えば、メタデータは、(関連付けられた圧縮データを生成するために圧縮された)関連付けられた非圧縮データ値を表してもよく、一実施形態では、関連付けられた非圧縮データ値から導出され得る。したがって、メタデータは、一実施形態では、圧縮されたデータに関する情報を、そのデータをフェッチし復元する必要なく提供することができる。
【0091】
この構成は、一実施形態では、処理ユニットが、コーデックが圧縮データに関連付けられたメタデータのみを通信バスを介して読み出す(かつ返す)が、圧縮データ自体は読み出さない(又は返さない)、(「コーデック」)バストランザクションを開始することができるようなものである。
【0092】
これらの構成を容易にするために、処理ユニットは、コーデックがメタデータ(のみ)にアクセスすべきであることを、通信バスを介してコーデックに示すことが可能でなければならず、一実施形態では、そのように示すことができる。一実施形態では、コーデックは、コーデックが圧縮データにアクセスすべきか、あるいは圧縮データに関連付けられたメタデータにアクセスすべきかを通信バスを介してコーデックに示すことができる。これは、任意の好適な所望の様式で達成することができる。
【0093】
一実施形態では、処理ユニットは、圧縮データにアクセスすべきであることを示す「圧縮データ」信号を通信バス上に発行し、圧縮データに関連付けられたメタデータ(のみ)にアクセスすべきであることを示す異なる「圧縮データ」信号を通信バス上に発行するように動作可能である(コーデックは、それに応じて応答して動作するように構成されている)。
【0094】
メタデータは、任意の好適な所望の様式でメモリに記憶され得る。圧縮データがヘッダに関連付けられて(例えば、上述したように)本体データとしてメモリに記憶される場合、一実施形態では、メタデータは、問題になっている圧縮データのヘッダに記憶される。
【0095】
したがって、一実施形態では、処理ユニットは、コーデックが、一実施形態では、関連付けられた本体データ(又は、存在する場合には、他のヘッダデータ)を読み出すことなく、ヘッダ(内のメタデータ)を読み出すことと、一実施形態では、ヘッダ(から読み出されたメタデータ)を(一実施形態では、本体データ(又は他のヘッダデータ)なしに)通信バスを介して処理ユニットに提供することとを含む、(「コーデック」)バストランザクションを開始するように動作可能である。
【0096】
一実施形態では、処理ユニットからメタデータを読み出す要求に応答して、コーデックがそのようなメタデータを、例えばメモリ内に存在しないことに起因して、読み出すことができない場合、コーデックは、メタデータを読み出すことができなかったという指示を処理ユニットに返す。
【0097】
メタデータが通信バスを介して処理ユニットに返されると、処理ユニットは、任意の好適な所望の様式のメタデータを使用することができる。
【0098】
一実施形態では、処理ユニットは、圧縮データに関連付けられたメタデータを使用して、その圧縮データを復元すべきかどうかを判定する。したがって、一実施形態では、圧縮データは、圧縮データに関連付けられたメタデータが、圧縮データを復元すべきであることを示すとき(のみ)、コーデックによって復元される。
【0099】
例えば、一実施形態では、メタデータは画像合成の目的のために使用される。この場合、(例えば、メモリ内の異なる圧縮バッファに記憶されている)異なるレイヤの画像データを組み合わせることによって表示のために画像を合成しているディスプレイコントローラは、コーデックにより提供されたメタデータを使用して、レイヤの圧縮データを読み出して復元して、最終合成画像を生成する必要があるか否かを判定することができる。
【0100】
例えば、メタデータが、画像要素が透明であることを示す場合、それらの画像要素の実際の色値は、例えば、最終合成画像に影響を与えないので、判定する必要がない。同様に、不透明な画像要素の後ろのレイヤの画像データは、読み出して復元する必要がないことがある。同様に、メタデータが、画像要素が全て同じ色であることを示し、その色を示す場合、関連付けられた圧縮データを復元せずに、示された色を使用してもよい。
【0101】
したがって、一実施形態では、メタデータは、圧縮された画像要素のセットの全ての要素が(完全に)透明であるかどうか、及び/又は(完全に)不透明であるかどうか、及び/又は同じ色であるかどうかを示し、一実施形態では色を示す。一実施形態では、次いで、圧縮画像データは、メタデータによって示されるように、復元することが適切なときに(のみ)コーデックによって復元される。
【0102】
したがって、一実施形態では、処理ユニットからの要求に応答して、コーデックは、通信バスを介して処理ユニットにメタデータ(のみ)を返し、一実施形態では、処理ユニットは次いで、返されたメタデータを使用して、メタデータに関連付けられた圧縮データを復元すべきかどうかを判定する。圧縮データを復元すべきであると判定されるとき、一実施形態における処理ユニットは、圧縮データを読み出して復元する(更なる)要求を通信バスを介してコーデックに発行し、それに応答して、コーデックは、圧縮データを読み出して復元し、復元データを通信バスを介して処理ユニットに返す。圧縮データを復元すべきであると判定されないとき、一実施形態における処理ユニットは、そのような要求を発行せず、したがって、コーデックは、圧縮データの読み出し又は復元を行わない。
【0103】
コーデックがメタデータを読み出すことについて上述したが、それに加えて、処理ユニットが、圧縮データに関連付けられたメタデータをコーデックが書き込むことに関与するバストランザクションを開始することもまた、又はその代わりに可能である。
【0104】
したがって、一実施形態では、処理ユニットは、圧縮データに関連付けられたメタデータをメモリにコーデックが書き込むことを含む(「コーデック」)バストランザクションを通信バス上で開始するように動作可能である。
【0105】
同様に、メタデータが、圧縮データを復元すべきかどうかを示し、圧縮データを復元すべきかどうかを判定するために使用されることについて上述したが、メタデータは、任意の他の好適なデータプロパティを示し、任意の他の好適な目的のために使用され得る。
【0106】
例えば一実施形態では、メタデータはエラー検出の目的のために使用される。例えば、圧縮プロセス又は復元プロセスにおけるエラーに起因して、記憶された圧縮データの破損又は上書きに起因して、あるいは、通信バス(インターコネクト)上でデータを伝送する際のエラーに起因して、エラーが発生し得る。
【0107】
この場合、一実施形態におけるメタデータは、関連付けられた圧縮データを表し、一実施形態では対応する(例えば、圧縮されていない又は復元された)データ値を示し、そこから導出される、又はそれに基づく、「シグネチャ」を含む。そのような「シグネチャ」は、例えば一実施形態では、データ値から導出されるチェックサム、CRC、又はハッシュ値など、データ値を表すと見なすことができる導出される情報の任意の好適なセットを含み得る。好適なシグネチャは、CRC32などの標準的なCRC、又はMD5、SHA 1などの他の形式のシグネチャを含む。
【0108】
一実施形態では、シグネチャ(例えば、チェックサム)を含むメタデータが、非圧縮データ値に基づいて生成され、非圧縮データが圧縮され、シグネチャと圧縮データとを互いに関連付けてメモリに記憶する。シグネチャ(例えば、チェックサム)は、圧縮データが復元されるときにエラー検出の目的のために使用される。この場合、シグネチャ(例えば、チェックサム)は、一実施形態では、復元データから再生成され、非圧縮データから生成されたメモリに記憶されたシグネチャ(例えば、チェックサム)と比較される。この比較は、一実施形態では、エラーが発生したかどうか(否か)を判定するために使用される。
【0109】
また、又はその代わりに、圧縮データからシグネチャ(例えば、チェックサム)を生成する(かつ、そのようなシグネチャに基づいて比較を実行する)ことが可能である。例えば、非可逆圧縮方式の場合、圧縮データから生成されたシグネチャは、いくつかのタイプのエラーを捕捉し得る。
【0110】
シグネチャの比較を使用して、任意の好適な所望の様式でエラーが発生したかどうかを判定することができる。例えば、シグネチャが完全に一致するときにはエラーが発生しなかったと判定することができ、シグネチャが完全に一致しないときにはエラーが発生したと判定することができる。あるいは、シグネチャが十分に類似しているときにはエラーが発生しなかったと判定することができ、シグネチャが十分には類似していないときにはエラーが発生したと判定することができる。この後者の場合は、例えば、シグネチャが非圧縮データ値/復元データ値から生成される非可逆符号化方式の場合に適切であり得る。
【0111】
したがって、一実施形態では、コーデックは、圧縮データと、圧縮データに関連付けられた(関連付けられた非圧縮データから生成された)メタデータ(例えば、シグネチャ)とをメモリから読み出し、圧縮データを復元して復元データを生成し、次いで、復元データからメタデータ(例えば、シグネチャ)が(再)生成され、圧縮データに関連付けられた(非圧縮データから生成された)メタデータと復元データから生成されたメタデータとが比較され、この比較を使用してエラーが検出される。
【0112】
これらの実施形態は、任意の好適な所望の様式で達成することができる。例えば、処理ユニットは、(非圧縮データ及び/又は復元データから)メタデータ(例えば、シグネチャ)を生成するように構成され得る。加えて又は代替的に、コーデックは、(非圧縮データ及び/又は復元データから)メタデータ(例えば、シグネチャ)を生成するように構成され得る。
【0113】
したがって、一実施形態では、処理ユニットはメタデータ生成回路を備え、加えて又は代替的に、コーデックはメタデータ生成回路を備える。一実施形態では、メタデータ生成回路が、処理ユニットが生成した(非圧縮)データから、及び/又はコーデックが復元した(復元)データからメタデータ(例えばシグネチャ)を生成することができるような構成である。
【0114】
同様に、メタデータ(例えば、シグネチャ)の比較は、処理ユニットによって、及び/又はコーデックによって実行され得る。
【0115】
メタデータ(シグネチャ)の生成及び/又は比較がコーデックによって実行される場合、コーデックは、一実施形態では、通信バス上で処理ユニットにより発行された好適なバストランザクション要求によって生成及び/又は比較するようにトリガされる。
【0116】
更に、コーデックがメタデータ(例えば、シグネチャ)を生成し、かつ/又は処理ユニットにメタデータを提供する場合、メタデータは、処理ユニットによりトリガされたバストランザクション中に、処理ユニットに通信バス(インターコネクト)上で伝送され得る。
【0117】
したがって、一実施形態では、処理ユニットは、コーデックが、(コーデックにより生成された、及び/又はコーデックによりメモリから読み出された)メタデータを通信バスを介して処理ユニットに提供することと、一実施形態では、処理ユニットが、提供されたメタデータ(シグネチャ)を使用して(例えば、エラー検出の目的のために)比較を実行することと、を含む(「コーデック」)バストランザクションを通信バス上で開始するように動作可能である。
【0118】
同様に、処理ユニットがメタデータ(例えば、シグネチャ)を生成する場合、処理ユニットにより生成されたメタデータは、処理ユニットによりトリガされたバストランザクション中に、コーデックに通信バス(インターコネクト)上で伝送され得る。この場合、コーデックは、処理ユニットにより提供されたメタデータ(シグネチャ)を比較し、かつ/又は処理ユニットにより提供されたメタデータ(シグネチャ)をメモリに書き込んでもよい。
【0119】
したがって、一実施形態では、処理ユニットは、処理ユニットが、処理ユニットにより生成されたメタデータ(例えば、シグネチャ)をコーデックに通信バスを介して提供することと、一実施形態では、コーデックが、提供されたメタデータをメモリに書き込むこと及び/又は提供されたメタデータを使用して(例えば、エラー検出の目的のために)比較を実行することと、を含む(「コーデック」)バストランザクションを通信バス上で開始するように動作可能である。
【0120】
1つのそのような実施形態では、メタデータ(例えば、シグネチャ)は、コーデックにより生成と比較の両方が行われる。この構成により、メモリ内のデータの記憶並びに圧縮及び復元プロセスに関するエラーの検出が可能になり得る。しかしながら、一実施形態では、メタデータ(例えば、シグネチャ)は、処理ユニットにより生成と比較の両方が行われる。この構成により、メモリ内のデータの記憶並びに圧縮及び復元プロセスに関するエラーと、通信バスを介した処理ユニットとの間のデータの伝送に関するエラーも検出することが可能になり得る。
【0121】
したがって、本明細書に記載される技術の一実施形態は、データ処理システムであって、
処理ユニットと、
コーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
処理ユニットは、処理ユニットが、関連付けられた圧縮データを表すシグネチャをコーデックに通信バスを介して提供することと、コーデックが、関連付けられた圧縮データを表すシグネチャを処理ユニットから通信バスを介して受信することと、を含むバストランザクションを通信バス上で開始するように動作可能であり、
コーデックは、処理ユニットがそのようなバストランザクションを通信バス上で開始したことに応答して、関連付けられた圧縮データを表すシグネチャを処理ユニットから通信バスを介して受信するように動作可能である、
データ処理システムを含む。
【0122】
本明細書に記載される技術の一実施形態は、データ処理システムを動作させる方法であって、データ処理システムは、
処理ユニットと、
コーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
処理ユニットは、処理ユニットが、関連付けられた圧縮データを表すシグネチャをコーデックに通信バスを介して提供することと、コーデックが、関連付けられた圧縮データを表すシグネチャを処理ユニットから通信バスを介して受信することと、を含むバストランザクションを通信バス上で開始するように動作可能であり、
コーデックは、処理ユニットがそのようなバストランザクションを通信バス上で開始したことに応答して、関連付けられた圧縮データを表すシグネチャを処理ユニットから通信バスを介して受信するように動作可能であり、
方法は、
処理ユニットが、処理ユニットが、関連付けられた圧縮データを表すシグネチャをコーデックに通信バスを介して提供し、コーデックが、関連付けられた圧縮データを表すシグネチャを処理ユニットから通信バスを介して受信する、バストランザクションを通信バス上で開始することと、
コーデックが、処理ユニットがそのようなバストランザクションを通信バス上で開始したことに応答して、関連付けられた圧縮データを表すシグネチャを処理ユニットから通信バスを介して受信することと、
を含む、方法を含む。
【0123】
これらの実施形態は、必要に応じて、本明細書に記載される任意選択の特徴のいずれか1つ以上又は全てを含むことができる。例えば、シグネチャ及び/又は関連付けられた圧縮データは、一実施形態では、コーデックによってメモリに書き込まれ、かつ/又はメモリから読み出される。
【0124】
本明細書に記載される技術の一実施形態は、データ処理システムであって、
処理ユニットと、
コーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
処理ユニットは、コーデックが、関連付けられた圧縮データを表すシグネチャを処理ユニットに通信バスを介して提供することを含むバストランザクションを通信バス上で開始するように動作可能であり、
コーデックは、処理ユニットがそのようなバストランザクションを通信バス上で開始したことに応答して、関連付けられた圧縮データを表すシグネチャを処理ユニットに通信バスを介して提供するように動作可能である、
データ処理システムを含む。
【0125】
本明細書に記載される技術の一実施形態は、データ処理システムを動作させる方法であって、データ処理システムは、
処理ユニットと、
コーデックと、
メモリにアクセスするバストランザクションをその上で実行することができる通信バスと、を備え、
処理ユニットは、コーデックが、関連付けられた圧縮データを表すシグネチャを処理ユニットに通信バスを介して提供することを含むバストランザクションを通信バス上で開始するように動作可能であり、
コーデックは、処理ユニットがそのようなバストランザクションを通信バス上で開始したことに応答して、関連付けられた圧縮データを表すシグネチャを処理ユニットに通信バスを介して提供するように動作可能であり、
方法は、
処理ユニットが、コーデックが、関連付けられた圧縮データを表すシグネチャを処理ユニットに通信バスを介して提供すべきであるバストランザクションを通信バス上で開始することと、
コーデックが、処理ユニットがそのようなバストランザクションを通信バス上で開始したことに応答して、関連付けられた圧縮データを表すシグネチャを処理ユニットに通信バスを介して提供することと、
を含む、方法を含む。
【0126】
これらの実施形態は、必要に応じて、本明細書に記載される任意選択の特徴のいずれか1つ以上又は全てを含むことができる。例えば、シグネチャ及び/又は関連付けられた圧縮データは、一実施形態では、コーデックによってメモリに書き込まれ、かつ/又はメモリから読み出される。
【0127】
これらの実施形態では、同じシグネチャ(例えば、チェックサム)生成プロセスを(常に)使用してもよく、あるいは、シグネチャ生成プロセスを変更してもよい。例えば、異なる処理ユニットによって、又は圧縮バッファに書き込むときはいつでも、異なるシードが使用され得る。1つのそのような実施形態では、複数の処理ユニットの各々は、それぞれの一意のメタデータ生成プロセス(例えば、一意のシード)に関連付けられる。これにより、1つの処理ユニットのデータが異なる処理ユニットにより偶発的に上書きされるエラーの検出が可能になり得る。
【0128】
この場合、メタデータを生成するために使用されたメタデータ生成プロセス(例えば、シード)を示す情報は、メタデータと一緒にメモリに書き込まれてもよく、それにより、その情報をその後、比較の目的でメタデータを再生成するときに使用することができる。
【0129】
これを容易にするために、メタデータ生成プロセス(例えば、シード)を示す情報が、処理ユニットによりトリガされたバストランザクション中に通信バス(インターコネクト)上でコーデックに伝送され得る。
【0130】
したがって、一実施形態では、処理ユニットは、処理ユニットが、メタデータ生成プロセスを示す情報をコーデックに通信バスを介して提供することと、一実施形態では、コーデックが、情報をメモリに書き込むこと及び/又はメタデータ(例えば、シグネチャ)を生成するときに情報を使用することと、を含む(「コーデック」)バストランザクションを通信バス上で開始するように動作可能である。
【0131】
一実施形態では、処理ユニットは、コーデックが、メタデータ生成プロセスを示す情報をメモリから読み出すことと、通信バスを介して情報を処理ユニットに提供すること及び/又はメタデータ(例えば、シグネチャ)を生成するときに情報を使用することと、を含む(「コーデック」)バストランザクションを通信バス上で開始するように動作可能である。
【0132】
一実施形態では、処理ユニットは、コーデックが、通信バスを介して、メタデータ生成プロセスを示す情報を処理ユニットから受信すること、又は、メタデータ生成プロセスを示す情報を処理ユニットに提供すること、を含むバストランザクションを通信バス上で開始するように動作可能である。
【0133】
一実施形態では、データ処理システムは、ホストプロセッサ(及び任意選択でディスプレイ)を備える。一実施形態では、ホストプロセッサは、処理ユニットによるデータ処理を要求するアプリケーションを実行するように動作可能であり、処理ユニットは、ホストプロセッサ上で実行しているアプリケーションによってデータを処理することが要求されるとき、本明細書に記載される技術の様式で動作する。
【0134】
本明細書に記載される技術は、好適に動作可能なマイクロプロセッサベースのシステムなど、任意の好適なシステムに実装され得る。いくつかの実施形態では、本明細書に記載される技術は、コンピュータ及び/又はマイクロプロセッサベースのシステムに実装される。
【0135】
本明細書に記載される技術の様々な機能は、任意の所望の好適な様式で実行することができる。例えば、本明細書に記載される技術の機能は、所望に応じて、ハードウェア又はソフトウェアで実装することができる。したがって、例えば、本明細書に記載される技術の様々な機能要素、ステージ、ユニット、及び「手段」は、好適なプロセッサ(単数又は複数)、コントローラ(単数又は複数)、機能ユニット、回路構成、回路、処理ロジック、マイクロプロセッサ構成などを備えてもよく、それらは、適切に専用化されたハードウェア要素(処理回路/回路構成)、及び/又は所望の様式で動作するようにプログラムされ得るプログラム可能なハードウェア要素(処理回路/回路構成)などの、様々な機能などを実行するように動作可能である。
【0136】
本明細書では、本明細書に記載される技術の様々な機能などが、所与のプロセッサ上で並行して複製及び/又は実行されてもよいことにも留意されたい。同様に、様々な処理ステージは、所望される場合、処理回路/回路構成などを共有し得る。
【0137】
更に、本明細書に記載される技術の処理ステージ又はユニットのうちのいずれか1つ以上又は全ては、処理ステージ又はユニット回路/回路構成として、例えば、1つ以上の固定機能ユニット(ハードウェア)(処理回路/回路構成)の形態で、及び/又は所望の動作を実行するようにプログラムされ得るプログラム可能な処理回路構成の形態で具現化することができる。同様に、本明細書に記載される技術の処理ステージ又はユニット並びに処理ステージ又はユニット回路/回路構成のうちのいずれか1つ以上は、他の処理ステージ又はユニットあるいは処理ステージ又はユニット回路/回路構成のうちの任意の1つ以上に別個の回路要素として提供されてもよく、並びに/あるいは処理ステージ又はユニット及び処理ステージ又はユニット回路/回路構成のうちのいずれか1つ以上又は全ては、共有処理回路/回路構成から少なくとも部分的に形成されてもよい。
【0138】
本明細書に記載される技術の記載された実施形態の全てが、必要に応じて、本明細書に記載される任意選択の特徴のうちのいずれか1つ以上又は全てを含むことができることも当業者には理解されるであろう。
【0139】
本明細書に記載される技術による方法は、ソフトウェア、例えば、コンピュータプログラムを少なくとも部分的に使用して実施することができる。したがって、本明細書に記載される技術の更なる実施形態は、データプロセッサにインストールされたときに本明細書に記載される方法を実行するように特に適合されたコンピュータソフトウェア、プログラム要素がデータプロセッサ上で実行されると本明細書に記載される方法を実行するためのコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、及びプログラムがデータ処理システム上で実行されると本明細書に記載される方法(単数又は複数)の全てのステップを実行するように適合されたコードを含むコンピュータプログラム、を備える。データ処理システムは、マイクロプロセッサ、プログラム可能なFPGA(フィールドプログラマブルゲートアレイ)などであってもよい。
【0140】
本明細書に記載される技術はまた、グラフィックプロセッサを動作させるために使用されると、データプロセッサを備えるレンデラ又は他のシステムが、当該データプロセッサ、当該プロセッサ、レンデラ、又はシステムと連携して本明細書に記載される技術の方法のステップを実行させるようなソフトウェアを含むコンピュータソフトウェアキャリアにも及ぶ。そのようなコンピュータソフトウェアキャリアは、ROMチップ、CD ROM、RAM、フラッシュメモリ、若しくはディスクなどの物理的記憶媒体であってもよく、又は有線を介した電子信号、光信号、若しくは衛星などの無線信号などの信号であってもよい。
【0141】
本明細書に記載される技術の方法の全てのステップが、コンピュータソフトウェアによって実行される必要はなく、したがって、本明細書に記載される技術の更なる実施形態は、コンピュータソフトウェア、及び本明細書に提示された方法のステップの少なくとも1つを実行するためのコンピュータソフトウェアキャリアにインストールされたそのようなソフトウェアを備えることが更に理解されるであろう。
【0142】
したがって、本明細書に記載される技術は、コンピュータシステムと共に使用するためのコンピュータプログラム製品として好適に具現化され得る。そのような実装形態は、コンピュータ可読媒体、例えば、ディスケット、CD ROM、ROM、RAM、フラッシュメモリ、又はハードディスクなどの、有形の非一時的媒体上に固定された一連のコンピュータ可読命令を含んでもよい。それはまた、モデム又は他のインタフェースデバイスを介して、光通信回線又はアナログ通信回線を含むがこれらに限定されない有形の媒体経由で、又はマイクロ波、赤外線、若しくは他の伝送技術を含むがこれらに限定されない無線技術を無形に使用してコンピュータシステムに伝達可能な、一連のコンピュータ可読命令を含み得る。一連のコンピュータ可読命令は、本明細書で前述した機能の全て又は一部を具現化する。
【0143】
当業者であれば、そのようなコンピュータ可読命令は、多くのコンピュータアーキテクチャ又はオペレーティングシステムと共に使用するための複数のプログラミング言語で書き込まれ得ることを理解するであろう。更に、そのような命令は、半導体、磁気、若しくは光学を含むがこれらに限定されない現在又は将来の任意のメモリ技術を使用して記憶され得る、あるいは、光学、赤外線、若しくはマイクロ波を含むがこれらに限定されない現在又は将来の任意の通信技術を使用して送信され得る。そのようなコンピュータプログラム製品は、例えば、システムROM若しくは固定ディスク上のコンピュータシステムにプリロードされた、あるいは、サーバー若しくは電子掲示板からネットワーク、例えばインターネット若しくはワールドワイドウェブの上に配信されている、付随する印刷文書又は電子文書を有する取り外し可能な媒体、例えば、市販のソフトウェアとして配布されてもよいことが想定される。
【0144】
次に、本明細書に記載される技術の複数の実施形態について説明する。
【0145】
図1は、一実施形態によるデータ処理システムを示す。
【0146】
図1に示す例示的なデータ処理システムは、中央処理装置(CPU)1と、グラフィックプロセッサ(グラフィック処理ユニット(GPU))10と、ビデオ処理ユニット(VPU)2と、ディスプレイコントローラ3と、圧縮コーデック20と、を含むホストプロセッサを備える。図1に示すように、これらの処理ユニットは、バス5を介して通信し、バス5及びメモリコントローラ4を介したオフチップメモリシステム(メモリ)6へのアクセスを有することができる。他の処理ユニットを提供してもよい。
【0147】
このシステムの使用時、CPU1及び/又はVPU2及び/又はGPU10は、表示されるフレーム(画像)を生成し、ディスプレイコントローラ3は、表示のためにディスプレイ7にフレームを提供する。これを行うために、CPU1、及び/又はVPU2、及び/又はGPU10は、メモリ6からインターコネクト5を介してデータを読み込み、そのデータを処理し、インターコネクト5を介してメモリ6にデータを返すことができる。次いで、ディスプレイコントローラ3は、ディスプレイ7上に表示するために、インターコネクト5を介してメモリ6からそのデータを読み込むことができる。
【0148】
例えば、ホストプロセッサ(CPU)1上で実行しているゲームなどのアプリケーション8は、ディスプレイ7上に、グラフィック処理ユニットによりレンダリングされたフレームを表示することを要求してもよい。この場合、アプリケーション8は、CPU1上で実行しているグラフィック処理ユニット10用のドライバ9に、適切なコマンド及びデータを送信する。次いで、ドライバ9は、適切なコマンド及びデータを生成して、グラフィック処理ユニット10に、表示のために適切なフレームをレンダリングし、メインメモリ6内の適切なフレームバッファ内に、それらのフレームを記憶させる。次に、ディスプレイコントローラ3は、それらのフレームをディスプレイ用のバッファに読み込み、そこからデータを読み出して、ディスプレイ7の表示パネルに表示する。
【0149】
この処理の一部として、グラフィックプロセッサ10は、メモリ6からテクスチャ、レンダリングすべきジオメトリなどのデータを読み込み、そのデータを処理し、次いでデータを(例えば、表示される処理されたテクスチャ及び/又はフレームの形態で)メモリ6に返し、例えば上述したように、データが更に、ディスプレイ7上に表示するために、例えばディスプレイコントローラ3によってメモリ6から読み出される。
【0150】
したがって、メモリ6とデータ処理システムの処理ユニット(例えば、CPU1、VPU2、GPU10、ディスプレイコントローラ3)との間でデータを転送することが必要になる。これを容易にし、かつ、処理動作中にメモリとの間で転送される必要があるデータの量を低減するために、データは、メモリ6に圧縮形態で記憶され得る。
【0151】
処理ユニット(例えば、CPU1、VPU2、GPU10、ディスプレイコントローラ3)は、典型的には、非圧縮形態のデータに対して動作する必要があるので、したがって、これは、メモリ6に圧縮形態で記憶されているデータを、処理ユニットによる処理の前に復元する必要があり得ることを意味する。これに対応して、処理ユニット(例えば、CPU1、VPU2、GPU10)により生成されたデータは、メモリ6に記憶される前に圧縮する必要があり得る。
【0152】
メモリ6と処理ユニットとの間をパスするデータのそのような圧縮及び復元を容易にするために、図1に示すように、データ処理システムは、要求される圧縮動作及び復元動作を実行する圧縮コーデック20を含む。この実施形態では、コーデック20は、バスインターフェースを介してバス5に接続されている。他の実施形態では、コーデックは、バス5に統合されていてもよい。
【0153】
図2は、本出願の実施形態の動作に関連する、具体的には、メモリシステム6及び処理ユニットとの間のデータの圧縮形態での転送に関連するデータ処理システムの要素を、概略的に示している。当業者には理解されるように、図2には示されていないシステムなどの他の要素が存在してもよい。
【0154】
図2に示すように、コーデック20は、論理的には、各処理ユニット(例えば、CPU1、VPU2、GPU10、ディスプレイコントローラ3)とメモリ6との間にある。次いで、コーデック20は、メモリシステム6から受信したデータを復元した後に、処理ユニットによる使用のためにそのデータを非圧縮形態で提供し、逆に、処理ユニット1、2、3、10から受信したメモリシステム6に書き込むべきデータを圧縮した後に、そのデータを圧縮形態でメモリ6に書き込むように動作可能である。
【0155】
図2に示すように、コーデック20は、処理ユニット1、2、3、10がバストランザクションを通じて圧縮データの非圧縮ビューにアクセスできるように、メモリ6内の圧縮データの非圧縮ビュー21を、バスマスタとして機能している処理ユニット1、2、3、10に効果的に提示するように動作する。
【0156】
上述したように、このようにコーデックと通信し、コーデックを制御するためにバストランザクションを使用することは、データ処理システムにおける圧縮及び復元のための特に柔軟な構成を提供することができる。
【0157】
例えば、図1及び図2に示すように、複数の異なる処理ユニット1、2、3、10が、バストランザクションを使用して同じ単一の圧縮コーデック20を制御することができ、同様に、単一の処理ユニットが、バストランザクションを使用して複数の異なるコーデックを制御することができる。更に、この柔軟性は、AXIなどの既存のバスプロトコルに対する比較的小さな修正で達成することができる。したがって、例えば、処理ユニットは、他の、例えば「ダイレクト」バストランザクションに使用するのと同じバスインターフェースを使用して、コーデックを制御することができる。更に、「ランダムアクセス」様式で圧縮データにアクセスすることができる。
【0158】
次に、本明細書に記載される技術の実施形態について、圧縮画像データのコンテキストで説明する。しかしながら、他の実施形態は他のタイプの圧縮データに関することが理解されよう。
【0159】
図3は、実施形態に係る圧縮形態でメモリ6に記憶された画像データのレイアウトを示す。これらの実施形態は、「メモリページ圧縮」に関する。他のメモリレイアウトも可能であることが理解されよう。
【0160】
図3に示すように、本出願の実施形態では、圧縮画像データは、メモリ6内の1つ以上の圧縮フレームバッファ300に記憶され、各圧縮フレームバッファ300は、1つ以上の圧縮データブロック33からなる1つ以上のメモリページ30を含む。図3Bに示すように、圧縮フレームバッファ300は、走査線順に配列されたメモリページ30のセットを含むことができ、圧縮データブロック33は、各メモリページ30内で走査線順に配列される。あるいは、図3Cに示すように、圧縮データブロック33は、走査線順に連続して配列されてもよい。他の構成も可能である。
【0161】
図3Aに示すように、本出願の実施形態では、各メモリページ30は、ヘッダ31と、圧縮データブロック33を含む本体データ32と、を含むメモリアドレスの連続セット(「チャンク」)である。本体データ32は、未使用の、例えばパディング領域34を含むことができる。図3Aに示すように、メモリページ30内の各圧縮データブロック33は、この例では0から14に及ぶ一意のインデックスに関連付けられている。
【0162】
各圧縮データブロック33は、画像データのサブブロックのセットを表すことができる。本実施例では、各圧縮データブロックは、画像データの16個のサブブロックを表し、各サブブロックは、(例えば、データ処理システムにより使用されるバーストサイズに対応する)64バイトの非圧縮画像データを表している。したがって、各圧縮データブロック33は、1kBの非圧縮画像データを表している。それに応じて、各メモリページは、典型的な4kBのメモリページサイズとは対照的に、16kBを表す。より大きなページサイズを使用することは、バス上のアドレストラフィックを低減するのに役立ち得る。他の構成も可能である。
【0163】
図4及び図5は、本明細書に記載される技術の実施形態による、処理ユニット1、2、3、10が、メモリ6内の圧縮フレームバッファ300に記憶されている圧縮画像データの非圧縮ビューにアクセスすることができるバストランザクションを示す。
【0164】
図4Aは、一実施形態による、圧縮データ読み出しトランザクションを概略的に示し、図4Bは、対応するシーケンス図である。
【0165】
図4A及び図4Bに示すように、処理ユニット1、2、3、10が、メモリ6内の圧縮データブロック33に記憶されているデータを要求する場合、処理ユニットは、読み出しトランザクション要求400を、そのバスインターフェースを介してバス5の読み出しアドレスチャネル上で発行する。これは、要求がメモリ6内の圧縮データに関連し、コーデック20に関与するバストランザクションをトリガすべきであることを示す「COMPRESSED」信号を発行する処理ユニットを含む。
【0166】
図4Aに示すように、読み出しトランザクション要求400は、要求された圧縮データブロックのメモリアドレスの指示41、42と、圧縮記述子43とを更に含む。メモリアドレス情報は、圧縮データブロックのヘッダデータ31のロケーションの指示41と、ヘッダに関連付けられた本体データ32内のブロック33のロケーションの指示42とを含む。
【0167】
圧縮記述子43は、要求されたデータブロックがそれに従って圧縮される圧縮メカニズム(コーデック)を識別し、非圧縮データが処理ユニットに戻されるべきデータフォーマット及びデータタイプ(例えば、RGB、RGBA、YUV、成分数、成分当たりのビット、データ値が符号なし整数/符号付き整数であるか、浮動小数点数であるか、など)を識別する、信号ベクトルである。
【0168】
図4Bに示すように、コーデック20は、要求400を認識して妨害し、ヘッダメモリアドレス情報41を使用して、要求された圧縮データブロックのヘッダ情報31をメモリ6から読み出し401、次いで、本体メモリアドレス情報42を使用して、適切な圧縮データブロック33を読み出す402。次いで、コーデックは、圧縮記述子情報43に従って、読み出された圧縮データブロックを復元し403、復元データを処理ユニット1、2、3、10に提供し、読み出しトランザクションが完了したことを、バス5の読み出しデータチャネル上で処理ユニット1、2、3、10にシグナリングする404。
【0169】
図5Aは、一実施形態による、圧縮データ書き込みトランザクションを概略的に示し、図5Bは、対応するシーケンス図である。
【0170】
図5A及び図5Bに示すように、処理ユニット1、2、3、10が、メモリ6内の圧縮データブロック33に記憶されている(非圧縮)データを要求する場合、処理ユニットは、書き込みトランザクション要求500を、そのバスインターフェースを介してバス5上で発行する。これは、要求がメモリ6内の圧縮データに関連し、コーデック20に関与するバストランザクションをトリガすべきであることを示す「COMPRESSED」信号をバス5の書き込みアドレスチャネル上で発行する処理ユニットを含む。
【0171】
図5Aに示すように、書き込みトランザクション要求500は、処理ユニットがメモリ6に圧縮形態で記憶されるように要求する(非圧縮)データ54と、圧縮データブロックがメモリ6に記憶されるべきメモリアドレスの指示51、52と、圧縮記述子53とを更に含む。メモリアドレス情報は、圧縮データブロックのヘッダデータ31のメモリロケーションの指示51と、ヘッダに関連付けられた本体データ32内のブロック33のメモリロケーションの指示52とを含む。
【0172】
この場合、圧縮記述子53は、データがそれに従って圧縮されるべき圧縮メカニズム(コーデック)を識別し、非圧縮データが提供されるデータフォーマット及びデータタイプ(例えば、RGB、RGBA、YUV、成分数、成分当たりのビット、並びに、データ値が符号なし整数/符号付き整数であるか、浮動小数点数であるか、など)を識別する、信号ベクトルである。
【0173】
図5Bに示すように、コーデック20は、要求500を認識して妨害し、圧縮記述子情報53に従って非圧縮データ54を圧縮し501、メモリアドレス情報51、52に基づいて適切なヘッダ情報31と一緒に圧縮データブロックをメモリ6に書き込む502。メモリ書き込みが完了すると503、コーデック20は、書き込みトランザクションがバス5の書き込み応答チャネル上で完了したことを処理ユニット1、2、3、10にシグナリングする504。
【0174】
図6A及び図6Bは、本明細書に記載される技術の実施形態によるデータ処理システムのレイアウトを示す。図6A及び図6Bを見ると分かるように、メモリシステムは、メモリ6を含んでもよく、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)及び関連付けられたキャッシュシステム60の形態である。メモリコントローラ4は、仮想メモリアドレス及び物理メモリアドレスを変換する変換バッファユニット(translation buffer unit、TBU)4Aと、メモリ変換動作を制御する変換制御ユニット(translation control unit、TCU)4Bとを備え得る。他のメモリシステム構成も可能である。
【0175】
コーデック20は、論理的には処理ユニット1、2、3、10とメモリ6との間にあり、それによって、コーデック20は、処理ユニットとメモリ6との間のバストランザクション通信を「妨害する」ことができる。図6Aに示される実施形態では、コーデック20は、論理的には処理ユニット1、2、3、10とメモリコントローラ4A、4Bとの間にある。この場合、コーデック20は、メモリコントローラ4を介してメモリ6にアクセスするように動作可能であり、したがって、仮想メモリアドレスを使用してメモリ6をアドレス指定し得る。図6Bに示される実施形態では、コーデック20は、論理的にはメモリコントローラ4A、4Bとメモリ6との間にある。この場合、コーデック20は、物理メモリアドレスを使用してメモリ6をアドレス指定し得る。
【0176】
図7は、一実施形態によるコーデックユニット20をより詳細に示す。図7に示すように、コーデックユニット20は、バスインターフェースモジュール(bus interface module、BIU)71と、エンコーダモジュールと、デコーダモジュール73とを含む。バスインターフェースモジュール71は、バス5を介してバストランザクションを受信し、受信されたバストランザクションにコーデック20が応答すべき様式を判定する。
【0177】
圧縮データ読み出しトランザクションの場合、バスインターフェースモジュール71は、復元すべき圧縮データをデコーダモジュール73にパスし、デコーダモジュール73は、データを復元し、復元データをバスインターフェースモジュール71に返す。次いで、バスインターフェースモジュール71は、復元データを処理ユニット1、2、3、10に転送する。バスインターフェースモジュール71は、復元すべき圧縮データをメモリ6から読み出すバストランザクションを開始し得る。
【0178】
圧縮データ書き込みトランザクションの場合、バスインターフェースモジュール71は、圧縮すべきデータをエンコーダモジュール72にパスし、エンコーダモジュール72は、データを圧縮し、圧縮データをバスインターフェースモジュール71に返す。バスインターフェースモジュール71は、圧縮データをメモリ6に転送する。バスインターフェースモジュール71は、圧縮データをメモリ6に書き込むバストランザクションを開始し得る。
【0179】
圧縮データに関連するものとして示されていないバストランザクションの場合、バスインターフェースモジュール71は、エンコーダモジュール72又はデコーダモジュール73をアクティブ化することなく、バストランザクションを適切に転送する。
【0180】
図4及び図5に示す実施形態を見ると分かるように、圧縮メモリブロックのメモリアドレスは明示的には示されておらず、むしろメモリアドレス情報は、メモリページヘッダ41、51のメモリアドレス、及びそのメモリページ内の圧縮データブロックのインデックス42、52の形態である。それに応じて、コーデック20は、メモリページヘッダメモリアドレス及びブロックインデックスから圧縮メモリブロックのメモリアドレスを判定する。特に、コーデック20は、ブロックインデックス42、52からメモリアドレスオフセットを判定し、判定されたオフセットをメモリページヘッダメモリアドレス41、51に適用して、圧縮メモリブロックのアドレスを判定する。上述したように、これにより、メモリアドレスを示すために必要な情報量を低減することができる。
【0181】
本出願の実施形態では、ブロックインデックスとメモリアドレスオフセットとの間には固定的関係が存在する。特に、図3Aに示すように、本実施形態では、各メモリページ30は、固定された「チャンク」サイズを有し、同じサイズの連続するメモリサブ領域に分割される。サブ領域は、各圧縮メモリブロック33及びヘッダデータのために確保される。(本実施形態では、各メモリページのサイズは16kBであり、各サブ領域のサイズは1kBであるが、他の構成も可能である。)これは、メモリアドレスオフセットが各ブロックインデックスに対して「暗黙的」であることを意味し、したがって、メモリアドレスオフセットは、インデックス及びブロックインデックスとメモリアドレスオフセットとの間の予め定義された(固定的)関係から判定することができる。
【0182】
しかしながら、他の実施形態では、圧縮データブロックのために確保されたメモリの量は、例えば、データ、圧縮方式などに応じて変動し得る。この場合、ブロックインデックスとメモリアドレスオフセットとの間には固定的関係が存在しなくてもよい。この場合、ブロックインデックスとメモリアドレスオフセットとの間の関係を示す情報は、オフセットフィールドの形態でヘッダ31に含まれ得る。この場合、コーデック20は、読み出すべき圧縮メモリブロックのアドレスを判定するために、ヘッダからオフセットフィールド情報を読み出し得る。同様に、コーデック20は、圧縮メモリブロックをメモリ6に書き込むとき、オフセットフィールド情報をヘッダに書き込んでもよい。この場合、ヘッダ内のオフセットデータは、ヘッダのメモリアドレスに対するメモリアドレスオフセットを示し得る。
【0183】
他の実施形態では、圧縮データはヘッダなしでメモリに記憶されてもよい。この場合、メモリアドレスは、例えば、直接示されてもよく、又はメモリページのベースメモリアドレス及びそのページ内のメモリサブ領域のインデックスに基づいて判定可能であってもよい。他の構成も可能である。
【0184】
処理ユニットが、コーデック20が、ヘッダに関連付けられた本体データとして記憶されている圧縮データを読み出す又は書き込むバストランザクションをトリガすることについて全般的に上述したが、本明細書に記載される技術の実施形態では、処理ユニットは、コーデック20が、関連付けられた本体データ32を読み出すことなく、メモリ6内のヘッダデータ31のみを読み出すバストランザクションをトリガすることができる。特に、処理ユニットは、メモリ6からヘッダ情報のみを読み出し、ヘッダ情報を通信バス5を介して処理ユニットに提供するようにコーデック20をトリガする要求をバス5上で発行することができる。データがヘッダなしで記憶される場合、そのようなヘッダ読み出し要求は、ヘッダが存在しないという指示を返すことができる。
【0185】
一実施形態では、複数のヘッダが単一のトランザクションで読み出され、キャッシュされ得る。これにより、いくつかの隣り合ったデータブロックに立て続けにアクセスすることが予想され得る状況において、待ち時間を低減することができる。
【0186】
そのようなヘッダ読み出し要求は、コーデック20に、ヘッダデータの全て、又はヘッダデータの特定の部分のみを戻させることができる。例えば、メモリオフセット情報を含むことに加えて(又はその代わりに)、本明細書に記載される技術の実施形態では、ヘッダ31は、関連付けられた本体データ32の1つ以上のプロパティを示すメタデータを含む。この場合、処理ユニットは、ヘッダ31内のメタデータのみを通信バス5を介して処理ユニットに返す(が、例えば、任意の他のヘッダデータ又は関連付けられた圧縮データは返さない)ようにコーデック20をトリガするREAD_META要求を発行することができる。この場合、バスインターフェースモジュール71は、メタデータをメモリ6から読み出すバストランザクションを開始し得る。
【0187】
メタデータは、例えば、圧縮データブロック33の画像要素が全て同じ色であり、その色であることを示してもよい。テキストページ又はメニューページの背景など、特定のタイプの画像において、画像要素のセットが全て同じ色であってもよい。この場合、ディスプレイ7上での表示のためにフレームを合成するときに、例えばディスプレイコントローラ3により、メタデータを使用して、圧縮データブロックを復元する必要なく、その圧縮データブロックに使用すべき色を判定してもよい。これにより、画像データを復元するために必要な処理労力を低減することができる。同様に、圧縮データブロックの復元は、ブロックが完全に透明な画像データ又は完全に不透明な画像データに関連することをメタデータが示すときに省略され得る。更に、メタデータは、メタデータが関連付けられている圧縮データを復元すべきかどうかの直接的な指示を提供し得る。例えば、メタデータは、画像要素のセットの全ての画像要素が(完全には)透明ではないこと、(完全には)不透明ではないこと、及び同じ色ではないことを示し得る。
【0188】
本明細書に記載される技術の実施形態では、ヘッダ31はまた(又はその代わりに)、エラー検出の目的のために、例えば自律車両適用例のために使用される1つ以上のチェックサムを含む。この場合、チェックサムは、非圧縮データ値から生成されてもよく、非圧縮データ値は、圧縮データブロックを生成するためにコーデック20により圧縮され得る。次いで、チェックサムはヘッダ31に記憶され、圧縮データブロックは関連付けられた本体データ32に記憶され得る。次いで、コーデック20により圧縮データブロックを復元して復元データ値を生成するときに、チェックサムが復元データ値から再生成され得る。次いで、復元データ値から生成されたチェックサムを、非圧縮データ値から生成されたチェックサムと比較してもよく、この比較を使用して、エラーが発生したかどうかを判定し得る。
【0189】
1つのそのような実施形態では、コーデック20は、チェックサムを生成し、記憶し、比較する。これにより、コーデック20によるメモリ6内のデータの記憶並びに圧縮及び復元プロセスに関するエラーの検出が可能になり得る。
【0190】
しかしながら、別のそのような実施形態では、チェックサムは、処理ユニットにより生成され、比較される。この場合、チェックサムは、処理ユニットによりトリガされたバストランザクション中にバス5上で、コーデック20と処理ユニットとの間で伝送され得る。これにより、メモリ6内のデータの記憶並びにコーデック20による圧縮及び復元プロセスに関するエラーと、通信バス5を介した処理ユニットとの間のデータの伝送におけるエラーも検出することが可能になり得る。
【0191】
更に、各処理ユニット1、2、3、10は、チェックサム生成プロセスのために一意のシードを使用してもよい。これにより、ある処理ユニットのデータが異なる処理ユニットにより偶発的に上書きされるエラーの検出が可能になり得る。この場合、シードは、必要に応じて、ヘッダ31に記憶され、ヘッダ31から読み出され得る。更に、処理ユニットのためのシードは、処理ユニットによりトリガされたバストランザクション中にバス5上で、コーデック20と処理との間で伝送され得る。
【0192】
チェックサムを生成し比較することについて上述したが、ハッシュ値などの他の形式の代表的なデータを使用してもよい。
【0193】
上記から、本明細書に記載される技術は、少なくともその実施形態において、データ処理システムにおける圧縮動作及び復元動作のための改善された構成を提供することが理解されよう。これは、少なくとも本明細書に記載される技術の実施形態では、処理ユニットが、圧縮コーデックユニットを制御するバストランザクションを開始することによって達成される。
【0194】
前述の詳細な説明は、例示及び説明の目的のために提示されている。本明細書に記載される技術を、網羅すること、又は開示される正確な形態に限定することを意図するものではない。上記の教示に照らして、多くの修正及び変形が可能である。記載される実施形態は、本明細書に記載される技術及びその実用的な用途の原理を最良に説明するために選択され、それによって、当業者が、様々な実施形態において想定される特定の用途に適した様々な修正を用いて、本明細書に記載される技術を最良に利用することが可能となる。範囲は、本明細書に添付の特許請求の範囲によって定義されることが意図されている。
図1
図2
図3A
図3B
図3C
図4A
図4B
図5A
図5B
図6A
図6B
図7
【国際調査報告】