特に高解像度ディジタルテレビジョン(high-definition digital TV)、時間シフト機能(time-shift functionality)を備えるセットトップボックス、3Dゲーム、ビデオ会議、MPEG−4アプリケーション等のようなデータフローアプリケーションのために備えられるデータ処理システムに対する設計労力は、このようなアプリケーションに対する増大する需要のために近年増大してきている。
ストリーム処理において、データのストリームについての連続命令(オペレーション)は異なるプロセッサによって実行される。例えば、第一のストリームは、画素の8×8ブロックのDCT(離散コサイン(余弦)変換(Discrete Cosine Transformation))係数のブロックの第二のストリームを生成するために第一のプロセッサによって処理される画像(イメージ)の画素(ピクセル)値(pixel value)から構成され得る。第二のプロセッサは、DCT係数の各々のブロックに対して選択されると共に圧縮される係数のブロックのストリームを生成するためにDCT係数のブロックを生成し得る。
データストリーム処理を実現するために複数のプロセッサがもたらされ、データオブジェクトのストリームからの次のデータオブジェクトからのデータが使用される度に、及び/又は当該ストリームにおける次のデータオブジェクトが生成される度に、各々は特定の命令(動作)を繰り返し実行し得る。ストリームは、あるプロセッサから他のプロセッサに伝送されるので、第一のプロセッサによって生成されるストリームは第二のプロセッサ等によって処理され得る。第一のプロセッサから第二のプロセッサにデータを伝送する一つのメカニズム(機構)は、第一のプロセッサによって生成されるデータブロックをメモリに書き込むことによる。ネットワークにおけるデータストリームはバッファされる。各々のバッファは、正確には一つのライタ(書き込み器(writer))と、一つ又はそれより多くのリーダ(読み出し器(reader))とを備えるFIFOとして実現される。このバッファリングのために、ライタ及びリーダは、チャネル上の個々の読み出し及び書き込み動作を相互に同期させる必要がない。通常のデータ処理システムは、それぞれ単一の用途専用の特定用途向けサブシステム(application specific subsystem)だけでなく完全にプログラム可能なプロセッサの混合体(mix)も含む。
このようなアーキテクチャの例が、Rutten氏他の“エクリプス:フレキシブルメディア処理のためのヘテロマルチプロセッサアーキテクチャ(IEEE コンピュータの設計及びテスト:エンベデッドシステム、第39乃至50頁、2002年7乃至8月)(“Eclipse: A Heterogeneous Multiprocessor Architecture for Flexible Media Processing”, IEEE Design and Test of Computers: Embedded Systems, pp. 39 − 50, July − August 2002)に示されている。必要とされる処理アプリケーションは、カーン(Kahn)プロセスネットワーク、すなわち一方向データストリーム(unidirectional data stream)によってデータを交換する並列(同時)実行タスク(concurrently executing task)のセットとして特定される。各々のアプリケーションタスクは特定のプログラム可能なプロセッサ又は専用プロセッサの一つの上にマップ(map)される。専用プロセッサは、弱く(薄く)しかプログラムされ得ないコプロセッサ(補助プロセッサ(coprocessor))によって実現される。各々のコプロセッサは、時分割(time-shared)によって複数のネットワーク又は単一のカーンネットワークからの複数のタスクを実行し得る。例えばメディア(媒体)処理アプリケーションのストリーミング特性は、参照の高い局所性(ローカリティ(locality))、すなわち隣接するデータのメモリアドレスに対する連続した参照(レファレンス)をもたらす。更にコプロセッサと通信ネットワークとの間、すなわちバスとメインメモリとの間に分散コプロセッサシェル(distributed coprocessor shell)が実現される。当該分散コプロセッサシェルは、マルチタスキング、ストリーム同期(シンクロナイゼーション)、及びデータ転送(伝送)等の多くのシステムレベルの問題を緩和するために使用される。自身の分散特性のために、シェルはそれが関連させられるコプロセッサの近くに実現され得る。各々のシェルにおいて、シェルに関連させられるコプロセッサ上にマップされるタスクに付随してストリームを処理するために必要とされる全てのデータはシェルのストリームテーブルに記憶される。
シェルは、メモリに書き込まれるとき又は読み出されるときにもたらされるデータアクセスレイテンシを低減させるためにキャッシュを有する。将来の処理ステップを実行するのに必要とされるデータはキャッシュ、すなわちメインメモリから分離させられていると共に、記憶されたデータを使用するプロセッサの近くにもたらされているより小さなメモリに記憶される。すなわち、キャッシュは中間記憶機能部(intermediate storage facility)として使用される。メモリアクセスレイテンシを低減させることによってプロセッサの処理速度は増加させられ得る。データ語(データワード)が、メインメモリからではなく自身のキャッシュからプロセッサによってアクセスされ得るだけの場合、平均アクセス時間(アクセスタイム)及びメインメモリアクセスの数はかなり低減させられるであろう。
共有メモリにおいて実現されるストリームバッファは、アドレスタグ(address tag)を記憶するのに制限された数のバンク(bank)及びキャッシュラインのような共有リソースに対して競合する。コプロセッサのタスクは入力/出力集約型(Input/Output intensive)になるため、タスク実行遅延をもたらし得るキャッシュリソースの競合(contention)を回避するために効率的なキャッシュ動作が必要とされる。
それ故に本発明の目的は、異なるストリームが、共有キャッシュリソースに対して競合するデータフローアプリケーションのために最適化される環境においてキャッシュ競合の発生を低減することにある。
本目的は、請求項1によるデータ処理システムと、請求項9によるタスク及びデータストリームを備えるデータフローアプリケーションを処理するために最適化されるデータ処理環境における使用のための半導体デバイスと、請求項10によるデータフローアプリケーションを処理するために最適化されるデータ処理環境においてキャッシュメモリをインデックスするための方法とによって解決される。
本発明は、各々のデータストリームに対してオーバラップしないキャッシュ位置を確保する概念に基づいている。それ故に各々のストリームに固有(特有)となるストリーム情報が、キャッシュメモリをインデックスするために使用される。この場合、当該ストリーム情報はストリーム識別体(符号)(stream information)によって表される。
特に共有キャッシュリソースに対して異なるストリームは競合するデータストリーム及びタスクを備えるデータフローアプリケーションを処理するように最適化されるデータ処理システムがもたらされる。明確なストリーム識別体(unambiguous stream identification)が前記データストリームの各々に関連させられる。前記データ処理システムは、ストリーミングデータを処理するための少なくとも一つのプロセッサ12と、複数のキャッシュブロックを有する少なくとも一つのキャッシュメモリ200であって、前記キャッシュメモリ200の一つは前記プロセッサ12の各々に関連させられる少なくとも一つのキャッシュメモリ200と、前記キャッシュメモリ200を制御するための少なくとも一つのキャッシュコントローラ300であって、前記キャッシュコントローラ300の一つは前記キャッシュメモリ200の各々に関連させられる少なくとも一つのキャッシュコントローラ300とを有する。前記キャッシュコントローラ300は、前記ストリーム識別体stream_idに応じて前記キャッシュメモリ200にデータストリームの要素(element)を記憶するための位置を選択するための選択手段350を有する。それ故に異なるストリームからのデータのキャッシュは効果的に切り離される。
本発明の更なる態様によれば、前記選択手段350は、前記ストリームの入力/出力アドレスのサブセットに応じて前記キャッシュメモリ200におけるキャッシュブロックの前記行内からキャッシュブロックのセットを選択するためのサブセット決定手段352を有する。
本発明の態様によれば、前記選択手段350は、キャッシュ行の数よりも小さくなる数に対して前記ストリーム識別体stream_idにハシュ関数を実行するためのハシュ関数手段(hashing function means)351を有する。
本発明の更なる態様によれば、前記ハシュ関数手段351はモジュロ演算(modulo operation)を実行するためのももである。異なるタスクに渡って利用可能なキャッシュ行を共有することによって、キャッシュメモリ200はより小さく具現化されることが可能であり、それによってシステム全体においてキャッシュメモリの費用は制限される。
本発明の更なる態様によれば、前記選択手段350は、前記データストリームに関連付けられるタスク識別体task_id及び/又はポート識別体port_idに応じて前記キャッシュメモリ200におけるデータストリームに対する位置を選択する。
本発明は、明確なストリーム識別体stream_idが前記データストリームの各々に関連させられ、異なるタスクが共有キャッシュリソースに対して競合するデータストリーム及びタスクを備えるデータフローアプリケーションを処理するように最適化されるデータ処理環境における使用のための半導体デバイスにも関する。前記デバイスは、複数のキャッシュブロックを有するキャッシュメモリ200と、前記キャッシュメモリ200を制御するためのキャッシュコントローラ300とを有しており、前記キャッシュコントローラ300は前記キャッシュメモリ200に関連させられる。前記キャッシュコントローラ300は、前記ストリーム識別体stream_idに応じて前記キャッシュメモリ200におけるデータストリームの要素を記憶するための位置を選択するための選択手段350を有する。
更に本発明は、異なるストリームが共有キャッシュリソースに対して競合するタスク及びデータストリームを備えるデータフローアプリケーションを処理するように最適化されるデータ処理環境においてキャッシュメモリ200をインデックスするための方法にも関する。前記キャッシュメモリ200は、複数のキャッシュブロックを有している。明確なストリーム識別体stream_idは前記データストリームの各々に関連させられる。前記キャッシュメモリ200においてデータストリームの要素を記憶するための位置は、異なるstream_idの可能な数に比べて、前記キャッシュメモリにおけるより小さな数のサブセットを識別するために前記ストリーム識別体stream_idに応じて選択される。
本発明の更なる態様は従属請求項に記載される。
本発明のこれら及び他の態様は図面を参照して更に詳細に説明される。
図1は、本発明の好ましい実施例によるデータオブジェクト(実体)(data object)のストリームを処理するための処理システムを示す。前記システムは、異なる層、すなわち計算(演算)層(computation layer)1と、通信サポート層(communication support layer)2と、通信ネットワーク層(communication network layer)3とに分割され得る。計算層1はCPU11と、二つのプロセッサ又はプロセッサ12a及び12bとを含む。これはただの例示であり、明らかなことに更に多くのプロセッサがシステムに含まれてもよい。通信サポート層2は、CPU11に関連するシェル21と、プロセッサ12a及び12bに関連するシェル22a及び22bとをそれぞれ有している。通信ネットワーク層3は、通信ネットワーク31及びメモリ32を有している。
プロセッサ12a及び12bは好ましくは専用プロセッサであり、各々は、限定された範囲のストリーム処理機能(関数)を実行するように特化されている。各々のプロセッサは、同じ処理命令をストリームの連続したデータオブジェクトに繰り返しもたらすように構成される。プロセッサ12a及び12bは各々、異なるタスク又は機能、例えば有効長デコーディング(variable length decoding)、実行長デコーディング(run-length decoding)、動き補償(motion compensation)、若しくは画像スケーリング(image scaling)を実行してもよく、又はDCT変換を実行してもよい。動作において、各々のプロセッサ12a及び12bは一つ又はそれより多くのデータストリーム上で命令を実行する。命令は、例えばストリームを受信するステップ及び他のストリームを生成するステップ、又は新たなストリームを生成することなくストリームを受信するステップ若しくはストリームを受信することなくストリームを生成するステップ又は受信ストリームを修正するステップを含んでいてもよい。プロセッサ12a及び12bは、他のプロセッサ12b及び12a若しくはCPU11によって生成されるデータストリーム、又はそれら自身で生成されたストリームさえも処理し得る。ストリームは、前記メモリ32を介してプロセッサ12a及び12bから転送されると共にプロセッサ12a及び12bに転送される一連のデータオブジェクトを有している。
シェル22a及び22bは、通信層になる、通信ネットワーク層に対する第一のインタフェース部を有している。当該層は全てのシェルに対して汎用性があると共に均質である。更にシェル22a及び22bは、シェル22a及び22bがそれぞれ関連させられているプロセッサ12a及び12bに対する第二のインタフェース部を有している。第二のインタフェース部は、タスクレベルインタフェース部(task-level interface)であり、前記プロセッサ12a及び12bの特定の要求(要望)に対処することを可能にするために、関連するプロセッサ12a及び12bに対してカスタマイズ(仕様変更(customise))される。従って、シェル22a及び22bはプロセッサ特定インタフェース部(processor-specific interface)を第二のインタフェース部として有するが、特定用途の採用及びパラメータ化(parameterisation)が可能になる一方で、システムアーキテクチャ全体においてシェルの再利用を容易にするために、シェルのアーキテクチャ全体は全てのプロセッサに対して均質であると共に汎用性がある。
シェル22a及び22bは、データ伝送のための読み出し/書き込みユニットと、同期ユニット(synchronisation unit)と、タスクスイッチングユニット(task switching unit)とを有している。当該三つのユニットはマスタ/スレーブ(master/slave)によって、関連するプロセッサと通信し、プロセッサはマスタとしての役割を果たす。従って、それぞれ三つのユニットは、プロセッサからの要求(リクエスト)によって初期化(イニシャライズ(initialise))させられる。好ましくは、引数(argument)値を渡すと共に、要求された値が返(戻)されるのを待つために、プロセッサと三つのユニットとの間の通信は要求肯定応答ハンドシェーク機構(request-acknowledge handshake mechanism)によって実現される。それ故に、前記通信は阻止(ブロック)される。すなわち、制御の各スレッド(thread)はそれらの完了を待つ。
シェル22a及び22bは、自身が関連させられるプロセッサ12a及び12bの近くに各々は実現され得るように分散させられる。各々のシェルは、自身のプロセッサ上にマップされるタスクに伴うストリームに対するコンフィギュレーションデータ(構成データ(configuration data))をローカルに(局所的に)含んでおり、当該データを適切に処理するように全ての制御論理をローカルに実現する。従って、ローカルストリームテーブルが、各々のストリーム、すなわち各々のアクセスポイントに対するフィールドの行を含むシェル22a及び22bで実現されてもよい。
更にシェル22は、プロセッサ12と通信ネットワーク31及びメモリ32との間のデータ伝送、すなわち読み出し動作及び書き込み動作のためのデータキャッシュを有している。シェル22におけるデータキャッシュの実現により、データバス幅の透明(トランスペアレント)な変換(transparent translation)、グローバル(広域)な相互接続部、すなわち通信ネットワーク31上のアライメント(調整(alignment))制限の解消、及びグローバルな相互接続部上のI/O動作の数の低減がもたらされる。
好ましくはシェル22は、読み出し及び書き込みインタフェース部においてキャッシュを有するが、これらのキャッシュはアプリケーション機能の視点から見えない。当該キャッシュは、プロセッサ読み出し及び書き込みポートを、通信ネットワーク3のグローバルな相互接続部から切り離すことにおいて重要な役割を果たす。これらのキャッシュは、速度、電力、及び面積に関するシステム特性に大きな影響を及ぼす。
図1によるアーキテクチャに関する更なる詳細な説明については、Rutten氏他の“エクリプス:フレキシブルメディア処理のためのヘテロマルチプロセッサアーキテクチャ(IEEE コンピュータの設計及びテスト:エンベデッドシステム、第39乃至50頁、2002年7乃至8月)(“Eclipse: A Heterogeneous Multiprocessor Architecture for Flexible Media Processing”, IEEE Design and Test of Computers: Embedded Systems, pp. 39 − 50, July − August 2002)を参照されたい。
図2は、図1によるアーキテクチャの一部を示す。特にプロセッサ12b、シェル22b、バス31、及びメモリ32が示されている。シェル22bは、自身のデータ伝送ユニットの部分としてキャッシュコントローラ300及びキャッシュメモリ200を有する。キャッシュコントローラ300は、ストリームテーブル320及び選択手段350を有する。キャッシュメモリ200は異なるキャッシュブロック210に分割されてもよい。
読み出し及び書き込み動作、すなわちI/Oアクセスがコプロセッサ12b上のタスクによって実行されるとき、当該アクセスがどの特定のタスク及びポートからデータを要求しているのか、又は当該アクセスがどの特定のタスク及びポートに対してデータを要求しているのかを示すアドレスに隣接してtask_id及びport_idパラメータを当該アクセスは供給する。前記アドレスは、共有メモリにおいてストリームバッファにおける位置を示す。ストリームテーブル320は、アクセスポイント及び各々のストリームに対するフィールドの行を含んでいる。特にストリームテーブルは、現在処理されているタスクを示すタスク識別子task_id及びデータが受信されるポートを示すポート識別子port_idからもたらされるストリーム識別子stream_idでインデックスされる。port_idは各々のタスクに対してローカルな範囲(スコープ)を有している。
本発明の第一の実施例は、復号化から直接エントリが決定される直接アドレス復号化(ダイレクトアドレスデコーディング(direct address decoding))を含むインデックスするステップによるアドレッシングに向けられる。それ故に前記選択手段350は、前記キャッシュメモリ200におけるキャッシュブロックの行を選択するためにストリーム識別子stream_idを使用する。選択されたキャッシュ行内からの特定のキャッシュブロックは、コプロセッサによって供給される前記アドレス、すなわちI/Oアドレスの下位ビット(lower bit)を通じてインデックスされる。代わりにアドレスの上位ビットがインデックスのために使用されてもよい。本実施例によるキャッシュメモリ200の構成体は、直接マップ(direct-mapped)によりなされる。すなわちアドレス及びストリーム識別子の全ての組み合わせは単一のキャッシュ位置にのみマップされ得る。従って、行におけるキャッシュブロックの数は、2のべき乗(power of two)に制限される。すなわち、複数のアドレスビットを復号化することによって列が選択されると、これは常に列の2乗の数に展開されるであろう。
図3は本発明の第二の実施例によるキャッシュ構成体の概念図を示しており、当該キャッシュ構成体は直接マップによりもたらされる。図2からの選択手段は、ハシュ関数手段351及びサブセット決定手段352を有する。I/Oアドレスは前記サブセット決定手段352に入力される一方、stream_idは前記ハシュ関数手段351に入力される。好ましくはハシュ関数手段351は、ストリーム識別子stream_idを、前記キャッシュメモリのより小さな数のキャッシュ行に変換するためにキャッシュ行の数に渡ってモジュロ演算を実行する。サブセット決定手段352は、コプロセッサによって供給される前記アドレス、すなわちI/Oアドレスの下位ビットを通じて前記キャッシュメモリの特定のキャッシュ列を決定する。代わりにアドレスの上位ビットがインデックスのために使用されてもよい。ハシュ関数手段351によって決定されるキャッシュ行及び前記サブセット決定手段352によって決定されるキャッシュ列によれば、特定のキャッシュブロックがインデックスされ得る。アドレス上のタグマッチング(タグ照合(tag matching))によって実際のデータ語が位置されてもよい。
代案として、ストリーム識別子stream_idの代わりにポート識別子port_idがハシュ関数手段351の入力部として使用されてもよく、ハシュ関数、すなわちキャッシュ行の数に渡るモジュロ演算が、キャッシュ行を選択するためにport_idをより小さな数のキャッシュ行にもたらすようにポート識別子port_idについて実行される。このことは、異なるタスクに渡って利用可能なキャッシュ行を共有することによってシェル22におけるキャッシュメモリ200はより小さく具現化されることが可能であり、それによってシステム全体においてキャッシュメモリの費用は制限されるという利点を有している。従って一つのタスクが複数のタスクポートとキャッシュ行を共有していてもよい。しかしながらこのことは、第二のタスクポートからいくつかのデータが散発的しか読み出されない一方、全てのデータが一つのタスクポートから読み出される場合に有益であると共に経済的である。それ故に各々のタスクポートのためのキャッシュ行に対するハードウエアの費用は低減され得る。
更なる代案において、キャッシュ行を選択するためにタスク識別子task_idがハシュ関数手段351に対する入力部として使用される。
本発明の動作原理は図1に記載のアーキテクチャを参照して記載されているが、実際のデータはアドレス上でタグマッチングを通じて更に位置される一方、stream_idはキャッシュ行を選択し、アドレスの下位ビットはキャッシュブロックのセットを選択するより一般的なセット関連のキャッシュ構成体に本発明によるキャッシュインデックス方式が展開され得ることは明らかである。