(57)【要約】本発明の装置は、マルチコア又はマルチプロセッサシステムが、犠牲に適したキャッシュメモリ（１００）のブロックを確実に識別しうるようにするとともに、近い将来に必要とするキャッシュメモリのブロックを犠牲にするのを阻止しうるようにすることにより、コンピュータシステムの性能を改善する。これらの目的を達成するために、システムが、適切なプリフェッチ及びライトバック判定を行ってデータ伝送がプロセッサの実行と重複するようにする推定プロダクションタイム（ＥＰＴ）カウンタ（１０２）及び推定コンサンプションタイム（ＥＣＴ）カウンタ（１０４）の形態で得られるスケジュール情報を有するＦＩＦＯを具えるようにする。
2009521054.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、このプロセッサと通信してこのプロセッサからの命令を受けるとともに、この命令に応答してデータのラインをこのプロセッサに伝える少なくとも１つのレベルのキャッシュメモリと、このキャッシュメモリと通信してデータの特定のラインに対するプロダクションタイムを推定する第１のカウンタと、前記キャッシュメモリと通信してデータの特定のラインに対するコンサンプションタイムを推定する第２のカウンタとを具えるデータストリーム処理装置において、前記第１及び第２のカウンタにより、このデータストリーム処理装置が命令のスケジューリングを最適化しうるようにしたデータストリーム処理装置。
【請求項２】
請求項１に記載のデータストリーム処理装置において、前記第１及び第２のカウンタの各々が最大しきい値を有し、この最大しきい値に達すると、このカウンタがキャッシュメモリの犠牲を可能にするようになっているデータストリーム処理装置。
【請求項３】
請求項１に記載のデータストリーム処理装置において、このデータストリーム処理装置が更に、タスクのスケジュールを有する複数のプロセッサを具えており、これらの複数のプロセッサと前記キャッシュメモリとが通信するようになっており、各カウンタが予め決定した最大しきい値を有し、この最大しきい値に達すると、カウンタがキャッシュメモリの犠牲を可能にするようになっているデータストリーム処理装置。
【請求項４】
請求項１に記載のデータストリーム処理装置において、このデータストリーム処理装置が更に、タスクのスケジュールを有する複数のプロセッサを具えており、これらの複数のプロセッサと前記キャッシュメモリとが通信するようになっており、各カウンタが利用可能な最大しきい値を有し、この最大しきい値に達すると、カウンタがキャッシュメモリの犠牲を可能にするようになっているデータストリーム処理装置。
【請求項５】
請求項１に記載のデータストリーム処理装置において、このデータストリーム処理装置が更に、タスクのスケジュールを有する複数のプロセッサを具えており、これらの複数のプロセッサと前記キャッシュメモリとが通信するようになっており、各カウンタが、前記複数のプロセッサに対するタスクのスケジュールに静的に基づく最大しきい値を有し、この最大しきい値に達すると、カウンタがキャッシュメモリの犠牲を可能にするようになっているデータストリーム処理装置。
【請求項６】
タスクのスケジュールを有する複数のプロセッサを含むデータ処理手段と、前記プロセッサと共有通信してプロセッサから命令を受けるとともに、これらの命令に応答してプロセッサにデータのラインを伝達する少なくとも１つのレベルのキャッシュメモリと、このキャッシュメモリと通信してデータの特定のラインに対しプロダクションタイムを推定する推定プロダクションタイム（ＥＰＴ）カウンタと、前記キャッシュメモリと通信してデータの特定のラインに対するコンサンプションタイムを推定する推定コンサンプションタイム（ＥＣＴ）カウンタとを具えるデータストリーム処理システムであって、ＥＰＴカウンタ及びＥＣＴカウンタは、前記複数のプロセッサに対するタスクのスケジュールに静的に基づく最大しきい値を有し、この最大しきい値に達すると、カウンタが特定のキャッシュメモリラインの犠牲を可能にするようになっているデータストリーム処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムに関するものであり、特にキャッシュ（メモリ）管理を最適化したマルチプロセッサシステムに関するものである。
【背景技術】
【０００２】
コンピュータのハードウェア及びソフトウェア技術の進歩の結果として、マルチプロセッサコンピュータシステムは、このシステムを種々のタスクに論理的に分割することにより極めて複雑な並列処理を実行しうるようになっている。プロセッサは、代表的に少なくとも２レベルのキャッシュを有する１つ以上のプロセッサモジュールを存在させることができる。
【０００３】
キャッシュ（メモリ）は代表的に、主メモリよりも著しく高速にアクセスしうる。キャッシュは代表的に、プロセッサモジュール上に、又はプロセッサ内に位置している。キャッシュは、近時に用いられた命令やデータを保持して、これらの命令やデータが必要になる度に主メモリからこれらの命令やデータを取り出すのに要する待ち時間を低減させるバッファとして作用する。
【０００４】
ある種のキャッシュは、主メモリから最も頻繁に用いられたメモリラインを保持している。メモリラインは、８バイトのような、メモリから読み取ることのできるデータの最小単位であり、キャッシュラインは、キャッシュ中の対応する単位である。キャッシュラインはメモリラインを記憶している為、これらメモリラインを用いる度に、これらメモリラインを、比較的低速な主メモリから取り出す必要がない。
【０００５】
代表的には、最も頻繁に用いられるメモリラインのみがキャッシュに記憶される。その理由は、比較的高速で高価なキャッシュは主メモリに比べて小型である為である。従って、キャッシュメモリは、通常、トランザクション処理に必要とするデータを全て記憶するものではない。上述したことは一般に、最長時間未使用の入力、すなわちキャッシュラインを追跡し、これらの最長時間未使用のキャッシュラインを、キャッシュの現在の内容が満足しえない最新のキャッシュ要求と関連するメモリラインと置き換えることにより達成される。キャッシュラインが主メモリにシフトした為に、満足されないキャッシュ要求
はしばしば、キャッシュミスと称されている。その理由は、プロセッサは要求をキャッシュに送るが、メモリラインの内容をキャッシュから取り出す機会を失った為である。
【０００６】
プロセッサは代表的に、命令のような頻繁に使用されるメモリラインのコピーを得るためのレベル１（Ｌ１）のキャッシュを有している。このキャッシュがないと、これらメモリラインはしばしば、比較的低速の主メモリからアクセスされる。Ｌ１キャッシュは、場合によっては主メモリをアクセスする数千サイクルの待ち時間を、キャッシュをアクセスするのに要する数サイクルに低減させることができる。しかし、Ｌ１キャッシュは一般に小型である。その理由は、プロセッサ内で用いられる領域の容積が制限されている為である。
【０００７】
レベル２（Ｌ２）のキャッシュはしばしば、プロセッサに物理的に接近しているプロセッサモジュールに存在する。Ｌ２キャッシュはＬ１キャッシュよりも大きくしうる。その理由は、Ｌ２キャッシュは廉価に製造でき、例えば、近時に使用した多数のメモリラインを維持する構成としうる。
【０００８】
Ｌ２キャッシュは、プロセッサモジュールにおける１つよりも多いプロセッサに対する大型の共有キャッシュとして、又はプロセッサモジュールにおける各プロセッサに対する別々の専用キャッシュとして構成することができる。大型で共有のＬ２キャッシュは、多数のメモリラインへのアクセスを含むプロセッサに関するワークロードデマンドにとって有益である。例えば、プロセッサが大きなデータベースをアクセスしている場合に、多数のメモリラインを繰り返しアクセスすることができる。しかし、Ｌ２キャッシュが多数の繰り返しアクセスされたメモリライン、すなわちブロックを保持するのに充分大きくない場合には、最初にアクセスされたメモリラインに上書きされ（すなわち、最初にアクセスされたメモリラインが犠牲にされ）、プロセッサはこれらのブロックの要求を主メモリから再び行う必要がある。
【０００９】
ＹＡＰＩ及びＴＳＳＡのようなストリーミングアプリケーションモデルは、ＦＩＦＯを介して通信するタスクより成っている。代表的には、データへのアクセスの待ち時間を低減させるために、ＦＩＦＯがキャッシュに格納されている。しかし、平均のＦＩＦＯキャッシュ条件が、１つのキャッシュが対処しうるよりも大きい場合には、このことはしばしばキャッシュミスマッチとなる。実際のキャッシュの大きさと所望のキャッシュの大きさとの間のこのミスマッチは、特定のＦＩＦＯに対し用いるためにキャッシュ内に存在する他のメモリブロックを犠牲にする。
【００１０】
例えば、ある場合には、直ちに必要とするメモリブロックが間違って犠牲として選択され、その結果、追加の不必要なデータ伝送が行われるおそれがある。又、近い将来に確実に用いられることがなく、従って、適切な犠牲候補であるブロックが犠牲とならないという他のおそれがある。従って、どのメモリブロックがすぐの近い将来に書き込み又は読み出しに用いられようとしているかを表すための決定論的方法が望まれている。
【００１１】
タスクスケジューラと通信する入力計数ユニット及び出力計数ユニットを有するＦＩＦＯレジスタを具える幾つかのシステムが開発された。１つの特定の種類のＦＩＦＯレジスタは、このＦＩＦＯレジスタにおいて通信すべきデータに対する予想プロダクション（生成）タイム（ＥＰＴ）及びこのＦＩＦＯレジスタにおいて通信すべきデータに対する予想コンサンプション（使用）タイム（ＥＣＴ）を計数するカウンタを有する。このようなカウンタは、メモリブロックの無効な犠牲を最少にするのに用いることができる。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の装置は、マルチコア又はマルチプロセッサシステムが、犠牲にしてかまわないキャッシュメモリブロックを確実に識別しうるようにすることにより、コンピュータシステムの性能を改善するとともに、近い将来に必要となるメモリブロックの犠牲をも回避するようにする。
【課題を解決するための手段】
【００１３】
上述した目的を達成するために、システムが、ＥＰＴ及びＥＣＴカウンタの形態で得られるスケジュール情報を有するＦＩＦＯを用いるようにする。
【００１４】
本発明の上述した概要は、本発明の開示する各実施例又は全ての観点を表すものではない。他の観点、詳細及び実施例は以下の図面に関する説明に与えられている。
【００１５】
本発明は、以下の図面に関する本発明の種々の実施例の詳細な説明を考慮することによりより一層完全に理解しうるであろう。
【発明を実施するための最良の形態】
【００１６】
本発明には種々の変形が可能であるが、本発明の特定例を図面につき詳細に説明するものである。しかし、本発明はこれらの特定例に限定されるものではなく、特許請求の範囲に規定した本発明の精神及び範囲内の全ての等価例及び変形例を含むものである。
【００１７】
図１は、ＥＰＴカウンタ１０２と、ＥＣＴカウンタ１０４とを有するキャッシュ１００を示す。キャッシュ１００は、このキャッシュ１００の一部を占める５つのＦＩＦＯを有する。このキャッシュ１００は、本発明の一実施例では単一レベルのメモリとすることができる。本発明の他の実施例によれば、キャッシュ１００はマルチレベルを有するようにしうる。本発明の他の態様は、複数のプロセッサに対し共有するキャッシュ１００か、又は複数のプロセッサコアを有する単一のプロセッサを具えることができる。
【００１８】
データは代表的に、プロセッサ又はコントローラから得られる作業要求の形態をとる。これらの作業要求は通常、キュー又はスタックに組織化されている。作業要求の各キュー又はスタックはＦＩＦＯに供給され、他の処理のために先入れ先出しの順序で（通常、一時的に）記憶される。本発明は、ＦＩＦＯにおいてＥＰＴ及びＥＣＴカウンタを用いる場合につき説明するが、本発明は、これらのカウンタを、キュー又はスタックからの作業要求を逆の順序で処理するＬＩＦＯと関連して用いるようにすることもできること勿論である。従って、ＥＰＴ及びＥＣＴカウンタは、それぞれのＦＩＦＯにおいてデータを生成又は使用しうるのに残された時間（又はサイクル）を表す。
【００１９】
ＥＰＴカウンタ１０２及びＥＣＴカウンタ１０４は何れかの特定のＦＩＦＯと関連している。ＥＰＴカウンタ１０２及びＥＣＴカウンタ１０４は有効化又は無効化の何れにもすることができる。
【００２０】
可能性としては以下の３通りが存在する。第１の可能性は、特定のＦＩＦＯのＥＰＴカウンタ１０２及びＥＣＴカウンタ１０４を無効化する場合であり、このことは、これらのカウンタが表しているＦＩＦＯの如何なるキャッシュ関連動作にもこれらのカウンタが影響を及ぼさないということを意味する。第２の可能性は、ＥＰＴカウンタ１０２及びＥＣＴカウンタ１０４のうちの一方が無効化され、他方が有効化されている場合である。第３の可能性は、ＥＰＴカウンタ１０２及びＥＣＴカウンタ１０４の双方が有効化されている場合である。従って、これらの３つの可能性のそれぞれに対する結果が存在する。
【００２１】
所定の如何なる時でも、これらの３つのカウンタに対し３つの動作上の可能性があるが、ＥＰＴカウンタ又はＥＣＴカウンタの何れかの状態（有効化又は無効化）を時間とともに変更させることもできること勿論である。本発明の一態様によれば、ＥＰＴカウンタ又はＥＣＴカウンタの状態を予め決定する。特に、有効化又は無効化の何れかを行うことができる。本発明の他の態様によれば、ＥＰＴカウンタ又はＥＣＴカウンタの何れかの状態、或いはこれらの双方の状態が、特別に規定した事象の発生又は不発生に応答するようにしうる。本発明の更に他の態様によれば、ＥＰＴカウンタ又はＥＣＴカウンタの何れかの状態、或いはこれらの双方の状態を、特別に規定した事象の発生又は不発生に、及び現在のシステム負荷に応答して選択するようにしうる。本発明の更に他の態様によれば、ＥＰＴカウンタ又はＥＣＴカウンタの何れかの状態、或いはこれらの双方の状態を、特別に規定した事象の発生又は不発生に、及び予想されるシステム負荷に応答して選択するようにしうる。予想されるシステム負荷は、予測解析を用いて予想することができる。
【００２２】
ＥＰＴカウンタ及びＥＣＴカウンタが有効化されると、これらカウンタの各々が、データのプリフェッチや、予め決定した意思決定基準に基づいてデータをキャッシュからより低いメモリレベルにライトバックすることに関し決定を行う。ＥＰＴカウンタにより行われるプリフェッチ決定は、ＥＣＴカウンタにより行われる決定とは無関係である。従って、本発明の一態様によれば、この意思決定プロセスで同じデータを用いても、ＥＰＴカウンタの決定による結果がＥＣＴカウンタにより行われる意思決定に影響を及ぼさないようにする。
【００２３】
特定のＦＩＦＯは、最小値を有するＥＰＴカウンタ及びＥＣＴカウンタを具えることができ、この場合、このＦＩＦＯに対応するデータを用いる前に、このデータを変更する可能性は最少となる。或いはまた、ＦＩＦＯは、最大値を有するＥＰＴカウンタ及びＥＣＴカウンタを具えることができ、この場合、このＦＩＦＯに対応するデータを用いる前に、このデータを変更する可能性は大きくなる。カウンタの有用性は変化し、カウンタ値が増大するにつれ、カウンタが実質的に無意味となる最小値を有する状態が生じるまで減少すること勿論である。従って、本発明によれば、カウンタ値が最大のしきい値に達した際に、ＥＰＴカウンタ及びＥＣＴカウンタを無効化する。
【００２４】
最大のカウンタしきい値は、どのくらいのスペースが処理用に準備されているかを表すものである。本発明の１つの態様によれば、カウンタしきい値を予め決定する。本発明の他の態様によれば、カウンタしきい値を特定のプロセッサトランザクションの特性に応じて変化させるとともに、種々のプロセッサに対するタスクスケジュールに静的に基づかせる。本発明の更に他の態様によれば、カウンタしきい値を、予め決定したスループットの最適化スキームに応じて動的に変化させる。
【００２５】
ＥＰＴ及びＥＣＴデータがそのＦＩＦＯに対応する最大しきい値の付近にある場合、データが近い将来に変更されない可能性が強くなり、従って、このＦＩＦＯが占めるキャッシュラインを除去することができる。従って、このＦＩＦＯに相当するいかなる変更されたデータをもライトバックするライトバック動作が開始される。簡単に言うと、ＥＰＴカウンタ及びＥＣＴカウンタが最大しきい値に達した際に、特定のＦＩＦＯ内に記憶されたデータが犠牲のためにキュー処理される。
【００２６】
ＥＰＴカウンタが最大値を有して無効化され、且つＥＣＴカウンタが小さな値を有すると、このことは、データプロデューサが充分なデータを発生してスケジュールから外される可能性を表している。データコンシューマはプロセッサの１つでスケジュールに入れられ、データの使用を開始する。ＦＩＦＯに対するデータがまだキャッシュされていない場合には、ＥＣＴカウンタのサンプル値に基づいて適切なプリフェッチ処理が自動的に開始され、このＦＩＦＯに対応するデータがキャッシュに入れられる。データのプリフェッチレートは処理工程と、最も重要性の高いＥＣＴカウンタの値とに依存する。従って、キャッシュリソースが最適化される。
【００２７】
ＥＰＴカウンタが小さな値を有し、且つＥＣＴカウンタが最大値を有して無効化される場合には、データプロデューサのみがスケジュールに入れられ、データコンシューマはまだ実行のスケジュールに入れられない。従って、データコンシューマは、データプロデューサにより発生されるデータを近い将来に用いない。この場合、キャッシュはライトバックバッファとして動作しうる。データプロデューサにより発生されるデータをライトバックさせるのに、適切なライトバック命令が用いられる。ライトバック命令のデータレートはＥＰＴカウンタのしきい値に基づいている。
【００２８】
ＥＰＴカウンタ及びＥＣＴカウンタの双方が小さな値を有して有効化される場合、このことは、発生データがデータコンシューマによって使用される為に、ＦＩＦＯの平均充填率を小さくすることができるということを意味する。
【００２９】
本発明は幾つかの特定の実施例につき説明したが、特許請求の範囲に規定した本発明の精神及び範囲を逸脱することなく、種々の変形例を加えうること、当業者にとって明らかである。
【図面の簡単な説明】
【００３０】
【図１】図１は、ＦＩＦＯバッファと、予想プロダクションタイム（ＥＰＴ）及び予想コンサンプションタイム（ＥＣＴ）カウンタとを示す線図である。
【図１】
2009521054.tif 000003
【国際調査報告】
2009521054.tif 000004
2009521054.tif 000005