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