(57)【要約】      （修正有）【課題】見かけのメモリ・アクセス待ち時間を少なくするための方法およびシステムを提供する。【解決手段】データ処理システムは、１つまたは複数の処理コアと、複数行のデータ記憶装置を有するシステム・メモリと、システム・メモリに対するアクセスを制御しかつ供給者ベースのメモリ・スペキュレーションを遂行するメモリ・コントローラとを含む。メモリ・アクセス・リクエストに応答して、メモリ・コントローラは、メモリ・アクセス・リクエストをサービスするためにシステム・メモリにおける選択された行に対するアクセスを指示する。メモリ・コントローラは、直後のメモリ・アクセスのアクセス待ち時間を少なくするよう、アクセスの後も、メモリ・スペキュレーション・テーブルにおける履歴情報に基づきその選択された行を活性化し続けることを暫定的に指示する。【選択図】  図１
2005174342.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数の処理コアと、
前記１つまたは複数の処理コアに結合され、複数の行を含むシステム・メモリに対するアクセスを制御し、事前のメモリ・アクセスに関する履歴情報を記憶するメモリ・スペキュレーション・テーブルを有する、メモリ・コントローラと、
を含み、
前記メモリ・コントローラは、
メモリ・アクセス・リクエストに応答して、前記メモリ・アクセス・リクエストをサービスするために前記システム・メモリにおける前記複数の行のうちの選択された行に対するアクセスを指示するための手段と、
前記メモリ・スペキュレーション・テーブルにおける前記履歴情報に基づいて、前記アクセスに続いて前記システム・メモリに前記選択された行を暫定的に活性化し続けさせるための手段と、
を含む、データ処理システム。
【請求項２】
前記メモリ・コントローラおよび前記１つまたは複数の処理コアが同じ集積回路チップ内に統合される、請求項１に記載のデータ処理システム。
【請求項３】
前記メモリ・スペキュレーション・テーブルが前記１つまたは複数の処理コアにおいて実行される複数のスレッドの各々に関するそれぞれのメモリ・アクセス履歴を記憶する、請求項１に記載のデータ処理システム。
【請求項４】
前記システム・メモリにおける前記複数の行が複数のバンク内に配列され、前記メモリ・スペキュレーション・テーブルがバンク単位を基準にして前記履歴情報を記憶する、請求項１に記載のデータ処理システム。
【請求項５】
前記複数の行が１つまたは複数のバンク内に編成され、前記選択された行を暫定的に活性化し続けさせるための前記手段が、前記選択された行と同じバンク内の他の行に対する次のアクセスまで、前記選択された行を暫定的に活性化し続けるための手段を含む、請求項１に記載のデータ処理システム。
【請求項６】
前記システム・メモリが第１システム・メモリを含み、
前記メモリ・コントローラが第１メモリ・コントローラを含み、
前記データ処理システムが第２システム・メモリおよび前記第２システム・メモリに対するアクセスを制御する第２メモリ・コントローラを更に含み、
前記選択された行を暫定的に活性化し続けさせるための手段が、前記第２メモリ・コントローラによって記録された履歴情報に基づいて前記選択された行を暫定的に活性化し続けるための手段を含む、
請求項１に記載のデータ処理システム。
【請求項７】
前記複数の処理コアを結合するシステム相互接続機構と、
前記システム・メモリからのデータをキャッシュする、前記複数の処理コアに結合された１つまたは複数のキャッシュ階層機構と、
を更に含む、請求項１に記載のデータ処理システム。
【請求項８】
データ処理システムにおいて複数の行を含むシステム・メモリを制御するためのメモリ・コントローラであって、
事前のメモリ・アクセスに関する履歴情報を記憶するメモリ・スペキュレーション・テーブルと、
メモリ・アクセス・リクエストに応答して、前記メモリ・アクセス・リクエストをサービスするように前記システム・メモリにおける前記複数の行のうちの選択された行に対するアクセスを指示するための手段と、
前記メモリ・スペキュレーション・テーブルにおける前記履歴情報に基づいて前記アクセスに続いて前記システム・メモリに前記選択された行を暫定的に活性化し続けさせるための手段と、
を含む、メモリ・コントローラ。
【請求項９】
前記メモリ・スペキュレーション・テーブルが前記データ処理システムにおいて実行される複数のスレッドの各々に関するそれぞれのメモリ・アクセス履歴を記憶する、請求項８に記載のメモリ・コントローラ。
【請求項１０】
前記システム・メモリにおける複数の行が複数のバンク内に配列され、前記メモリ・スペキュレーション・テーブルがバンク単位で前記履歴情報を記憶する、請求項８に記載のメモリ・コントローラ。
【請求項１１】
前記複数の行が１つまたは複数のバンク内に編成され、前記選択された行を暫定的に活性化し続けさせるための前記手段が、前記選択された行と同じバンク内の他の行に対する次のアクセスまで、前記選択された行を暫定的に活性化し続けるための手段を含む、請求項８に記載のメモリ・コントローラ。
【請求項１２】
前記選択された行を暫定的に活性化し続けるための前記手段が、他のメモリ・コントローラによって記録された履歴情報に基づいて前記選択された行を暫定的に活性化し続けるための手段を含む、請求項８に記載のメモリ・コントローラ。
【請求項１３】
データ処理システムにおいて複数の行を含むシステム・メモリのメモリ・コントローラを操作する方法であって、
前記メモリ・コントローラがメモリ・スペキュレーション・テーブルにおける事前のメモリ・アクセスに関する履歴情報を記憶するステップと、
メモリ・アクセス・リクエストの受領に応答して、前記メモリ・アクセス・リクエストをサービスするように前記システム・メモリにおける前記複数の行のうちの選択された行に対するアクセスを指示するステップと、
前記メモリ・スペキュレーション・テーブルにおける前記履歴情報に基づいて前記アクセスに続いて前記システム・メモリに前記選択された行を暫定的に活性化し続けるように指示するステップと、
方法。
【請求項１４】
前記記憶するステップが、前記データ処理システムにおいて実行される複数のスレッドの各々に関するそれぞれのメモリ・アクセス履歴を記憶するステップを含む、請求項１３に記載の方法。
【請求項１５】
前記システム・メモリにおける複数の行が複数のバンク内に配列され、前記記憶するステップがバンク単位で前記履歴情報を前記スペキュレーション・テーブルに記憶するステップを含む、請求項１３に記載の方法。
【請求項１６】
前記複数の行が１つまたは複数のバンク内に編成され、前記選択された行を暫定的に活性化するように指示する前記ステップが、前記選択された行と同じバンク内の他の行に対する次のアクセスまで、前記選択された行を暫定的に活性化し続けるステップを含む、請求項１３に記載の方法。
【請求項１７】
前記選択された行を暫定的に活性化し続ける前記ステップが、他のメモリ・コントローラによって記録された履歴情報に基づいて前記選択された行を暫定的に活性化し続けるステップを含む、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、総体的には、データ処理に関し、詳しくは、データ処理システム、並びにデータ処理システムのためのメモリ・サブシステムおよびメモリ・コントローラの改良に関するものである。更に詳しく言えば、本発明は、データ処理システムのメモリ・サブシステムにおけるスレッド・ベースのスペキュレーション（speculation）のための方法およびシステムに関するものである。
【背景技術】
【０００２】
対称マルチプロセッサ（ＳＭＰ）コンピュータ・システムは、一般に、１つまたは複数のＤＩＭＭ（デュアル・インライン・メモリ・モジュール）に対するアクセスを制御する単一の共通メモリ・コントローラに、複数のプロセッサ・チップが３状態バスによって供給されることによって実現されていた。この一般的な構成に関連する拡張容易性（scalability）の欠如および大きなアクセス待ち時間のために、より最新のマルチプロセッサ・コンピュータ・システムは、複数の処理ユニットがスイッチによって結合され、各処理ユニット・ダイが１つまたは複数のレベルのキャッシュ・メモリおよび複数の外部ＤＩＭＭに結合された統合メモリ・コントローラによってサポートされた複数のプロセッサ・コアを含む、というシステム・オン・チップ（ＳＯＣ）パラダイムに移行した。各ＳＯＣ処理ユニット・ダイはそれ自身の統合メモリ・コントローラを組み込んでいるので、それ以前のＳＭＰアーキテクチャに対して拡張容易性が改善されている。しかし、物理的に近いＤＩＭＭにマップされたアドレスに対するメモリ・アクセスのパーセンテージに関しては絶対的なメモリ待ち時間が減少しているが、現在のＳＯＣベースのシステム設計に関する平均的なメモリ・アクセス待ち時間の改善は、依然として、絶えず増加するプロセッサ・クロック周波数に比例して進んではいない。
【０００３】
上記のメモリ・サブシステムの設計動向に加えて、プロセッサ・コアがメモリ・アクセスを管理する方法を改良することによって命令当たりの平均サイクル（ＣＰＩ）を減らすようにプロセッサ・コアの設計に関しても機能拡張が図られてきた。特に、これらの機能拡張は、高度なアウト・オブ・オーダ命令実行、マルチレベル・ブランチ・スペキュレーション、同時マルチスレッド（ＳＭＴ）、および暫定的なデータおよび命令プリフェッチに関するサポートを含む。これらの各フィーチャの意図は、要求に先立ってメモリ・サブシステムからのデータの検索を開始することによって、見かけのメモリ・アクセス待ち時間をマスクすることである。これらの機能拡張はすべて、プロセッサ・コアがメモリ・サブシステムに対するメモリ・アクセスを制御し、その結果更に複雑で大きなプロセッサ・コアを生じさせることに、プロセッサ・コアにおけるロジックの増加量が充当されるという、一般的な「消費者制御」の設計哲学を反映している。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
プロセッサ・コアに対する上記の機能拡張は、現在および近い将来の所与のメモリおよびプロセッサ・テクノロジ、並びに動作周波数にかなりのパフォーマンスの恩恵を施すが、本発明者は、プロセッサ・コア設計における更なる複雑性の導入がプロセッサ・コアの動作周波数における予想される将来の増加に比例した平均メモリ・アクセス待ち時間の改善を生じそうにないと認識している。従って、本発明は、見かけのメモリ・アクセス待ち時間を更に少なくするために、メモリ・サブシステムの少なくとも部分的な「供給者ベースの」制御を実現する創造的な方法、メモリ・コントローラ、およびデータ処理システムを提供する。
【課題を解決するための手段】
【０００５】
１つの実施例では、データ処理システムが、１つまたは複数の処理コアと、複数行のデータ記憶装置を有するシステム・メモリと、システム・メモリに対するアクセスを制御し、供給者ベースのメモリ・スペキュレーションを実装するメモリ・コントローラとを含む。メモリ・コントローラは、事前のメモリ・アクセスに関する履歴情報を記憶するメモリ・スペキュレーション・テーブルを含む。メモリ・アクセス・リクエストに応答して、メモリ・コントローラは、メモリ・アクセス・リクエストをサービスするためにシステム・メモリにおける選択された行に対するアクセスを指示する。メモリ・コントローラは、直後のメモリ・アクセスのアクセス待ち時間を少なくするよう、アクセスの後も、メモリ・スペキュレーション・テーブルにおける履歴情報に基づきその選択された行を暫定的に活性化することを指示する。
【０００６】
本発明のすべての目的、特徴、および利点は、以下の詳細な説明において明らかになるであろう。
【発明を実施するための最良の形態】
【０００７】
次に、図面、特に、図１を参照すると、本発明の一実施例に従って、メモリ・アクセス待ち時間を減少させる例示的なデータ処理システム８の高レベル・ブロック図が示される。図示のように、データ処理システム８は、相互接続機構１２による通信のために結合された複数の処理ユニット１０ａ〜１０ｎを含む。相互接続機構１２は、例えば、１つまたは複数のアドレス・バス、データ・バス、および制御バスにより、またはスイッチング・ファブリックにより、またはバス接続リンク、交換リンク、および／または他の通信リンクを含む相互接続ネットワークにより実現することが可能である。その分野ではよく知られているように、相互接続機構１２は、入出力（Ｉ／Ｏ）ポートを介して、および、周辺装置（例えば、不揮発性記憶装置）および付加的な処理ノードの接続機構を介して、通信をサポートするブリッジおよびアダプタのような図示されてない付加的なコンポーネントに更に結合されることも可能である。
【０００８】
各処理ユニット１０は、１つまたは複数のプログラム・スレッドをそれぞれ独立してかつ同時に実行できる１つまたは複数のプロセッサ・コア１４を含む。各処理ユニット１０は、更に、プロセッサ・コア１４によってアクセスされそうなデータおよび命令のための低待ち時間記憶装置を提供するためにプロセッサ・コア１４に結合されたキャッシュ階層機構１６を含む。キャッシュ階層機構１６は、例えば、各プロセッサ・コア１４のための個別の２状態レベル１（Ｌ１）命令およびデータ・キャッシュ、複数のプロセッサ・コア１４によって共用される大きなレベル２（Ｌ２）キャッシュ、および任意選択的に１つまたは複数の更なるレベルのインラインまたはルックアサイド・キャッシュ・メモリを組み込んでもよい。そのような各キャッシュは、一般的な（または、一般的でない）キャッシュ・アレイ、キャッシュ・ディレクトリ、およびキャッシュ・コントローラを組み込んでもよい。キャッシュ階層機構１６は、周知の修正・排他的・共用・無効（Modified, Exclusive, Shared, Invalid - ＭＥＳＩ）キャッシュ・コヒーレンシ・プロトコルまたはそれらの変形を、キャッシュされたデータおよび命令のコヒーレンシ状態を追跡するためにそのキャッシュ・ディレクトリ内に実装することが望ましい。この方法では、データ処理システム内のすべてのキャッシュ階層機構１６にわたってメモリ・コヒーレンシを維持することが可能である。
【０００９】
各処理ユニット１０のキャッシュ階層機構１６およびプロセッサ・コア１４は、更に、高周波数の広帯域幅メモリ・バス２１によって処理ユニット１０に結合された外部システム・メモリ２２に対するアクセスを制御する統合メモリ・コントローラ（ＩＭＣ）１８に結合される。すべての処理ユニット１０のシステム・メモリ２２ａ−２２ｎは、データ処理システム８における最低レベルの揮発性メモリを集合的に形成する。一般に、揮発性メモリは、相互接続機構１２上に発生されたリクエスト・トランザクションを介してすべての処理ユニット１０にとってアクセス可能である。
【００１０】
当業者には明らかなように、メモリ・コヒーレンシが、ディレクトリ・ベースまたはスヌープ・ベースのコヒーレンシ・プロトコルを通してデータ処理システム８のようなコンピュータ・システムにおいて共通に維持される。いずれのメモリ・コヒーレンシ方法も本発明に従って使用することが可能であるが、以下では、データ処理システム８がスヌープ・ベースのコヒーレンシ・プロトコルを利用するものと仮定する。
【００１１】
スヌープ・ベースのプロトコルに従って、各処理ユニット１０は、相互接続機構１２上に発生された各リクエスト・トランザクション（例えば、読み取りリクエスト、修正意図を伴なう読み取り（read-with-intent-to-modify）リクエスト、無効化リクエスト、キャッシュ・フラッシュ・リクエスト、等）をスヌープする。リクエスト・トランザクションをスヌープすることに応答して、各処理ユニット１０は、そのリクエスト・トランザクションと、処理ユニット１０がそのリクエスト・トランザクションに応答して遂行することを提案している任意選択的な１つまたは複数のデータ・オペレーション（例えば、リクエストされたデータを供給すること、キャッシュされたデータを無効にすること、キャッシュされたデータを供給すること、等）とを、その処理ユニットが処理する能力を有すること（または、その能力を有しないこと）を表すスヌープ応答を供給する。そこで、これらのスヌープ応答が応答ロジック３０によってコンパイルされて、リクエスト・トランザクションのサービスを支持するために相互接続機構１２に接続されたすべての処理ユニット１０（および、存在する場合の他のエージェント）に供給される結合応答を生じさせる。
【００１２】
応答ロジック３０は、明瞭にするために別個に図示されたが、特定の処理ユニット１０（または、他のエージェント）内に統合されるかまたは複数の処理ユニット（または、他のエージェント）に分散されることが可能である。応答ロジック３０が分散態様で実装される場合、応答ロジック３０の一部分がスヌープ応答から部分的結合応答を生成することが可能である。その部分的結合応答は、データ処理システム８の結合応答全体を形成するように結合される。
【００１３】
次に説明をシステム・メモリ２２に転ずると、例示的な実施例では、各システム・メモリ２２が複数の再駆動（ＲＤ）チップ２４ａ−２４ｄを実装される。各再駆動チップは、複数（この場合には、２つ）のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）デュアル・インライン・メモリ・モジュール（ＤＩＭＭ）２６に対してアドレスおよびデータの関連付けを行う。即ち、ＲＤチップ２４ａがＤＩＭＭ２６ａ、２６ｅに接続され、ＲＤチップ２４ｂがＤＩＭＭ２６ｂ、２６ｆに接続され、ＲＤチップ２４ｃがＤＩＭＭ２６ｃ、２６ｇに接続され、ＲＤチップ２４ｄがＤＩＭＭ２６ｄ、２６ｈに接続される。各システム・メモリ２２を構成するＤＩＭＭ２６は、更に、複数の「ランク」２８ａ−２８ｂに編成される。各ランクは、ＲＤチップ２４ａ−２４ｄの各々に接続された１つのＤＩＭＭ２６を含む。例えば、ランク２８ａはＤＩＭＭ２６ａ−２６ｄを含み、ランク２８ｂはＤＩＭＭ２６ｅ−２６ｈを含む。全キャッシュ・ラインのメモリ・アクセスのためのアクセス待ち時間が減少するように、実メモリ・アドレスが各ランク２８を構成するＤＩＭＭ２６全体にわたってストライピングされることも可能である。
【００１４】
次に図２を参照すると、図１のデータ処理システム８おけるＤＩＭＭ２６の例示的実装態様の更に詳細なブロック図が示される。図示のように、ＤＩＭＭ２６は、ＤＲＡＭメモリ・セルの多数の行５２および列５４を有するＤＲＡＭメモリ・アレイ５０を含む。この行および列の各組み合わせは、特定の一意的な実メモリ・アドレスに対応する。図示のように、例示の実施例では、各列５４は、８バイト(６４ビット)幅であり、３２バイト・ワードの実アドレスを指定するメモリ・アクセスが関連するランク２８における４つのＤＩＭＭ２６の各々からの１列(８バイト)のデータに対する参照によってサービスされることを意味する。機能拡張されたアクセス帯域幅を提供するために、行５２は、ｍ個の行５２から成る複数（この場合には、３２個）のバンク５６(例えば、５６ａ、５６ｂ)に編成され、メモリ・アレイ５０が３２個のバンクの各々における１つの行５２に対する同時アクセスをサポートする。以下で明らかになるように、メモリ列の幅、バンクおよびランクの数、並びに本願において開示される実装態様に依存したパラメータは本発明の実施例の間で変わるであろう。
【００１５】
更に、ＤＩＭＭ２６は、制御回路６８、行デコーダ６０、感知増幅器６２、列デコーダ６４、およびＩ／Ｏ回路６６を含み、それらは、ＩＭＣ１８からＲＤ２４を介して受信された制御信号およびアドレス（および、書き込みアクセスの場合には、データ）に応答してメモリ・アレイ５０に対する読み取りアクセスおよび書き込みアクセスを遂行するために利用される。ＩＭＣ１８は、読み取り／書き込み(Ｒ／Ｗ)制御線を表明（asserting）または表明解除（deasserting）することによって、および実アドレスをＲＤチップ２４に供給することによって、ＤＩＭＭ２６に対するメモリ・アクセスを開始する。一方、ＲＤ２４は、制御信号および実アドレスをＤＩＭＭ２６に供給する。ＤＩＭＭ２６における制御回路６８は、少なくとも、行アクセス選択（ＲＡＳ）ラインの表明に応答して関連するＲＤチップ２４により与えられた実アドレスの行部分をラッチする。そこで、行デコーダ６０は、メモリ・アレイ５０における特定の行５２を読み出すために実アドレスの行部分をデコードする。行アドレスがメモリ・アレイ５０に対する直前のアクセスとは異なる行を決定する場合、制御回路６８はプレチャージ期間（ｔＲＰ）中に感知増幅器６２をプレチャージする。
【００１６】
制御回路６８は、行信号が確定することを可能にするために、待ち時間の期間ｔＲＣＤによってＲＡＳラインの表明に続く列アクセス選択（ＣＡＳ）ラインの表明に応答して関連する実アドレスの列部分をラッチする。実アドレスの列部分が列デコーダ６４によってデコードされ、列デコーダが感知増幅器６２およびＩ／Ｏ回路６６の間で実メモリ・アドレスに関連した８バイトのデータを転送する。ＣＡＳの表明とＩ／Ｏ回路６６の出力ピンにおける正しいデータの出現との間の期間はｔＣＡＣと呼ばれる。
【００１７】
従って、ＤＩＭＭ２６(または、任意の一般的なＤＲＡＭメモリ)の最悪ケースの内部メモリ・アクセス待ち時間（ｔＩＮＴ）は、一般に、ｔＲＰ、ｔＲＣＤ、およびｔＣＡＣの和を特徴とすることも可能である。読み取りトランザクションを発生するプロセッサ・コアの観点から、その合計アクセス待ち時間は、そのような内部メモリ・アクセス待ち時間（ｔＩＮＴ）のみならず、追加の通信待ち時間（ｔＣＯＭ）もまた含む。例えば、一般的なマルチプロセッサ・データ処理システムでは、読み取りトランザクションが低待ち時間のキャッシュ・メモリによってサービスされないことを確認する結合応答が受信されるまで、メモリ・コントローラはシステム・メモリに対するアクセスを開始しない。合計で数百プロセッサ・クロック・サイクルになることがあるこの通信待ち時間を一般的なマルチプロセッサ・データ処理システムが生じる主たる理由は、例えば、低待ち時間キャッシュ・メモリに対するアクセス、スヌーパ再試行、等によって不必要にされることがあるメモリ・アクセスによって生じる電力消費を回避するためである。
【００１８】
本発明は、ＤＩＭＭ２６の内部メモリ・アクセス待ち時間（ｔＩＮＴ）および通信待ち時間（ｔＣＯＭ）の両方を減少させるためにメモリ・スペキュレーションを使用するメモリ・コントローラ(例えば、ＩＭＣ１８)を実装することによって、処理ユニット１０が体験する合計アクセス待ち時間を改善する。好適な実施例では、各ＩＭＣ１８は、後述するように、メモリ・スペキュレーション・テーブル（ＭＳＴ）２０(図１)または履歴アクセス情報を記憶するための他の機構を参照することによって、そのようなメモリ・スペキュレーションを独立して遂行する。
【００１９】
次に図３を参照すると、本発明の一実施例に従ったＭＳＴ２０を説明するための実施例のブロック図が示される。図示の実施例では、ＭＳＴ２０は多数の行８０を含み、各行は、ソフトウェア構成体（例えば、スレッド、プロセス、または他の構成体）のクラスにおけるそれぞれのインスタンスと関連付けられる。この例では、ＭＳＴ２０は１２８行を含み、各スレッドに対して１つの行が、データ処理システム８のオペレーティング・システム（例えば、ＡＩＸ、Ｗｉｎｄｏｗｓ（登録商標）、またはＬｉｎｕｘ）によってサポートされる。各スレッドは、種々のアクティブ・スレッドのアクセス・パターンが独立しているという一般的な前提の下ではＭＳＴ２０におけるそれ自身の行８０に適合する。
【００２０】
ＭＳＴ２０における各行８０は、多数のエントリ８２（例えば、８２ａ、８２ｂ）を含み、各エントリは、ＤＩＭＭ２６におけるそれぞれのバンク５６に対応している。各エントリ８２は、タイミング・スペキュレーション・フィールド８４および行スペキュレーション・フィールド８６の少なくとも１つ、望ましくは、それらの両方を含む。タイミング・スペキュレーション・フィールド８４は、メモリ・アクセス・サイクルを開始する前に、ＩＭＣ１８が１つの選択されたコヒーレンシ・メッセージ（例えば、スヌープ応答、部分的結合応答、または完全結合応答）を待つべきかどうかを表す情報を含む。更に後述するように、ＩＭＣ１８は、選択されたコヒーレンシ・メッセージに先立ってリクエスト・トランザクションをサービスするためにメモリ・アクセス・サイクルを暫定的に開始することによって通信待ち時間（ｔＣＯＭ）を減少させるために、タイミング・スペキュレーション・フィールド８４に含まれた情報を利用する。行スペキュレーション・フィールド８６は、連続したメモリ・アクセスがＤＩＭＭ２６の同じ行にマップしそうであるかどうかを表す情報を含む。後述するように、ＩＭＣ１８は、同じ行５２に対するメモリ・アクセスが後続すると思われるメモリ・アクセスに続いてＲＡＳの表明を暫定的に継続することによって、内部メモリ・アクセス待ち時間（ｔＩＮＴ）を減少させるために、行スペキュレーション・フィールド８６に含まれた状態情報を使用する。ＩＭＣ１８は、その２つのタイプのスペキュレーションを独立して、またはスレッド毎を基本に結合して、選択的に使用することが可能である。
【００２１】
タイミング・スペキュレーション・フィールド８４は種々の方法で（例えば、カウンタとして）実装することが可能である。ある実施例では、タイミング・スペキュレーション・フィールド８４は複数ビット（例えば、８ビット）の履歴フィールドとして実装される。その場合、各ビットは、関連するバンク番号(例えば、バンク５)における記憶ロケーションにマップする実アドレスを持った、ＩＭＣ１８により受信された直前のリクエスト・トランザクションのそれぞれ１つを表す。第１ビット状態（例えば、「１」）は、ＤＩＭＭ２６ａ−２６ｈのうちの関連ある１つをアクセスすることによって関連するリクエスト・トランザクションがサービスされたことを表す。第２ビット状態（例えば、「０」）は、関連あるＤＩＭＭ２６をアクセスすることなく（例えば、リクエストされた読み取りデータをキャッシュ・コヒーレンシ１６から得ることによって）リクエスト・トランザクションがサービスされたことを表す。従って、ＩＭＣ１８は、特定のスレッドによる特定のメモリ・バンクに対するその後のアクセスがシステム・メモリ２２をアクセスすることによってサービスされるということがありそうかどうかを、履歴情報に基づいて決定することができる。この決定に基づいて、ＩＭＣ１８は、アクセス待ち時間全体のうちの通信待ち時間（ｔＣＯＭ）成分を減少させるために、リクエスト・トランザクションの受領に応答して暫定的なメモリ・アクセス・サイクルを選択的かつ知的に開始することができる。
【００２２】
行スペキュレーション・フィールド８６も、同様に、多数の種々の実装態様次第である。図４に示された１つの例示的な実装態様では、行スペキュレーション・フィールド８６が１つまたは複数のセグメント９０を含み、各セグメントは、履歴情報が記録されるバンク５６内のそれぞれの行５２に対応する。各セグメント９０は、対応する行５２を識別する行識別子（ＩＤ）９２（または、行アドレス）と、前のアクセスに続いてＲＡＳを表明し続けることによってその識別された行５２を「オープン」に保持するために、待ち時間の観点から、それが有益であったかどうかを表す経歴ビット９４とを含む。当業者には明らかであるように、行５２を、その同じ行５２に対する２つの連続したアクセスの間、オープンに保持することは、少なくとも、２番目のアクセスに対するＲＡＳ・ＣＡＳ間の待ち時間（ｔＲＣＤ）を効果的に排除する。従って、行５２をオープンに保持することから利益を受ける同じ行５２に対する連続したアクセスは、第１の論理的状態（「１」）によって表され、バンク５６における異なる行に対する連続したアクセスは、第２の論理的状態（「０」）によって表される。この履歴情報に基づいて、ＩＭＣ１８は、所与のバンク５６においてアクセスされる次の行５２となりそうな行５２を暫定的にかつ選択的にオープンに保持することによって内部アクセス待ち時間（ｔＩＮＴ）を減少させることができる。
【００２３】
図４に示されるように、行スペキュレーション・フィールド８６が２つ以上のセグメント９０を含む実施例では、１つのセグメント９０ａが「一次」セグメントとして指定されることが望ましく、第２のセグメント９０ｂが「二次」セグメントとして指定されることが望ましい。一次セグメント９０ａは、ＩＭＣ１８がアクセスに続いて暫定的に「オープン」に保持することが可能な「一次」行５２に関する履歴情報を記録する。二次セグメント９０ｂは、１つまたは複数の最近のアクセスにより、「一次」行５２を置換するための候補となりそうな、同じバンク５６における異なる「二次」行５２に関する履歴情報を記録する。
【００２４】
各ＩＭＣ１８は、一次行および実装された場合の二次行を置換するための選択された（または、プログラム可能な）置換方法を実装する。例えば、各セグメント９０が特定のメモリ・バンク５６に対する先行の８つのアクセスに関する履歴情報を記録するために８個の履歴ビット９４を使用するという実施例では、ＩＭＣ１８は、一次および二次行５２とは異なるそのバンク５６における行５２に対する２つの連続したアクセスに応答して、二次行セグメント９０ｂの行ＩＤフィールド９２ｂにおいて識別された二次行５２を置換することが可能である。ＩＭＣ１８は、同様に、一次行５２を暫定的にオープンに保持することによって利益をもたらさないバンク５６に対する少なくとも４つのアクセスを履歴ビット９４ａが表すことに応答して（即ち、履歴ビット９４ａは少なくとも４個のゼロ（「０」）を含む）、行ＩＤフィールド９２ａにおいて識別された一次行５２を現在の二次行５２でもって置換することも可能である。
【００２５】
ＩＭＣ１８によって使用される行予測アルゴリズム次第で、行スペキュレーション・フィールド８６は、表示されたバンク５６に対するメモリ・アクセスに関する追加の履歴情報を組み込んでもよい。例えば、上記の待ち時間改善表示に加えて、ＩＭＣ１８は、バンク５６に対する特定のアクセスに対して一次行が暫定的にオープンに保持されたかどうか、および別の行がそのアクセスに対してオープンに保持されたかどうかを更に記録してもよい。
【００２６】
次に、図５を参照すると、選択されたコヒーレンシ・メッセージ（例えば、スヌープ応答、部分的結合応答、または結合応答）の受信に先立って、メモリ・アクセス・サイクルを暫定的に開始すべきかどうかを決定するために、ＩＭＣ１８がリクエスト・トランザクションを処理する例示的プロセスの高レベルの論理的フローチャートが示される。論理的フローチャートとして図示されたステップのうちのあるものは、同時にまたは図示のシーケンスとは異なるシーケンスで遂行することが可能である。
【００２７】
図示のように、プロセスは、処理ユニット１０における相互接続機構１２または関連あるプロセッサ・コア１４からのリクエスト・トランザクション（例えば、データ読み取り）のＩＭＣ１８による受信に応答して、ブロック１００において開始する。種々の実装態様において、ＩＭＣ１８は、関連するプロセッサ・コア１４により発生されたリクエスト・トランザクションを、相互接続機構１２におけるそのリクエスト・トランザクションの発生に関して種々の時間に受け取ることが可能であるが、本願では、説明を簡単にするために、リクエスト・トランザクションが相互接続機構１２において発生されるとき、（例えば、ローカル・キャッシュ階層機構１６におけるミスに続いて）ＩＭＣ１８が関連するプロセッサ・コア１４からリクエスト・トランザクションを受け取るものと仮定する。リクエスト・トランザクションは、トランザクション・タイプ（例えば、読み取り、修正意図を伴なう読み取り、フラッシュ、キル、等）、そのリクエスト・トランザクションを生成した命令のスレッドＩＤおよびリクエスト・アドレスを含むことが望ましい。
【００２８】
次に、プロセスは、ブロック１００からブロック１０２に進む。ブロック１０２は、リクエスト・トランザクションによって指定されたリクエスト・アドレスが付属のシステム・メモリ２２における記憶ロケーションに割り当てられるかどうかをＩＭＣ１８が決定することを示している。この決定は、例えば、メモリ・マップを参照することによって、および／または、リクエスト・トランザクションが指定したリクエスト・アドレスをハッシュすることによって、行うことが可能である。リクエスト・アドレスが付属のシステム・メモリ２２にマップしていないという決定がブロック１０２において行われる場合、ブロック１０４に示されるように、ＩＭＣ１８は、指定されたリクエスト・アドレスが付属のシステム・メモリ２２にマップしていないことを表すヌル・スヌープ応答を供給する。図８および図９を参照して後述するように、ＩＭＣ１８は、事前にスヌープされたリクエストに関する履歴情報を任意選択的に供給することも可能である。しかる後、プロセスは接続符号Ａを通って、ブロック１３６において終了する。
【００２９】
しかし、指定されたメモリ・アドレスが付属のシステム・メモリ２２にマップしていることを、ブロック１０２においてＩＭＣ１８が決定する場合、ブロック１０５に示されるように、ＩＭＣ１８は、その付属のシステム・メモリ２２がその指定されたリクエスト・アドレスを含むアドレス範囲の現在の「ホーム」記憶ロケーションであることを表すホーム・スヌープ応答を供給する。上述したように、応答ロジック３０は、このスヌープ応答とキャッシュ階層機構１６および他のＩＭＣ１８によって供給されたスヌープ応答とを結合して、データ処理システム８の応答全体を表す結合応答をリクエスト・トランザクションに供給する。
【００３０】
更に、ブロック１０６に示されるように、ＩＭＣ１８は、例えば、メモリ・マップを参照することによって、またはリクエスト・アドレスをハッシュすることによって、その指定されたリクエスト・アドレスがマップしている付属のシステム・メモリ２２におけるメモリ・バンク５６も決定する。このバンク番号およびリクエスト・トランザクションに含まれたスレッドＩＤを利用して、ＩＭＣ１８は、ＭＳＴ２０における対応するタイミング・スペキュレーション・フィールド８４をアクセスする。次に、ブロック１０８に示されるように、ＩＭＣ１８は、選択されたタイミング・スペキュレーション・アルゴリズムをタイミング・スペキュレーション・フィールド８４に含まれた履歴情報に適用して、大抵は、メモリ・アクセスが開始されるべきであることを表すコヒーレンシ・メッセージ（例えば、スヌープ応答、部分的結合応答、または結合応答）の受信に先立って暫定的なメモリ・アクセスを開始すべきかどうかを決定する。ＩＭＣ１８によってタイミング・スペキュレーション・フィールド８４の内容に適用されたタイミング・スペキュレーション・アルゴリズムは、例えば、タイミング・スペキュレーション・フィールド８４におけるビットをＡＮＤすること、およびその結果が論理的「１」（このメモリ・バンク５６に対するこのスレッドによる事前の８つのリクエスト・トランザクションがＩＭＣ１８によってシステム・メモリ２２からサービスされたことを表す）であるかどうかを暫定的に決めるという決定を行うことを含んでもよい。それとは別に、ＩＭＣ１８は、事前の８つのアクセスに関する選択された数（例えば、６）がＩＭＣ１８によってシステム・メモリ２２からサービスされた場合に暫定的なメモリ・アクセスを開始することを決定してもよい。タイミング・スペキュレーション・アルゴリズムは、ＩＭＣ１８は、過去の予測成功、ローカルまたはグローバル電力損失、またはアクセス・タイプに関する情報（例えば、プリフェッチ、予約を伴なうロード（load-with-reserve）、等）のような他の要素を追加的に考察できるように、他の要素を考慮することも可能である。ブロック１０８においてＩＭＣ１８により適用されたタイミング・スペキュレーション・アルゴリズムが、システム・パフォーマンスの監視またはコンパイラ生成のヒントに基づいて動的に選択可能であってもよいということも明らかであろう。
【００３１】
ブロック１０８において、ＩＭＣ１８が暫定的なメモリ・アクセスを開始しないことを決定する場合、プロセスは、ブロック１０８からブロック１１０を通ってブロック１１２に進む。ブロック１１２は、何らかのメモリ・アクセスが存在する場合にそのメモリ・アクセスを開始する前に、ＩＭＣ１８が１つの選択されたコヒーレンシ・メッセージ（例えば、部分的結合応答または結合応答）の受信を待つことを示す。そのコヒーレンシ・メッセージの受信に応答して、ＩＭＣ１８は、ブロック１１４に示されるように、そのコヒーレンシ・メッセージによりシステム・メモリ２２に対するアクセスが指示された場合にはそのアクセスを開始する。前述のように、ＩＭＣ１８は、メモリ・バス２１を介して関連するＲＤチップ２４にアドレスおよび制御信号を供給することによってメモリ・アクセスを開始する。一方、そのＲＤチップは、それらの信号を適切なＤＩＭＭ２６に搬送する。ＩＭＣ１８がリクエスト・トランザクションをサービスする責任を有することをコヒーレンシ・メッセージが表す場合、ブロック１３２において、ＩＭＣ１８は、例えば、システム・メモリ２２から検索されたデータを要求者に供給することによってその指示されたデータ操作を遂行する。更に、ＩＭＣ１８は、ＩＭＣ１８がシステム・メモリ２２をアクセスすることによってリクエスト・トランザクションをサービスしたかどうかを表示するようにＭＳＴ２０を更新する。しかる後、プロセスはブロック１３６において終了する。
【００３２】
ブロック１０８に戻ると、システム・メモリ２２に対する暫定的なアクセスがタイミング・スペキュレーション・フィールド８４の内容にタイミング・スペキュレーション・アルゴリズムを適用することに基づいて開始されなければならない、ということをＩＭＣ１８が決定する場合、ＩＭＣ１８がリクエスト・トランザクションをサービスする責任を有するかどうか表すコヒーレンシ・メッセージを受け取る(ブロック１２２)前に、ＩＭＣ１８が前述の方法でシステム・メモリ２２に対するメモリ・アクセスを暫定的に開始する（ブロック１２０）。ブロック１２４において、ＩＭＣ１８がリクエスト・トランザクションをサービスする責任を有すること、即ち、スペキュレーションが正しかったこと、をコヒーレンシ・メッセージが表すという決定を、ＩＭＣ１８が行う場合、ブロック１３２および１３４に示されるように、ＩＭＣ１８は、かなり少ない待ち時間でその指示されたデータ操作を遂行し、ＭＳＴ２０を更新する。しかし、スペキュレーションが間違っていたことをコヒーレンシ・メッセージが表す場合、即ち、ＩＭＣ１８がリクエスト・トランザクションをサービスする責任を有しない場合、ブロック１３０に示されるように、ＩＭＣ１８は、リクエスト・トランザクションに関連したすべての誤ったデータを廃棄する(および、システム・メモリ２２に廃棄させる)。しかる後、ＩＭＣ１８は、ブロック１３４に示されるように、ＭＳＴ２０タイミング・スペキュレーション・フィールド８４を更新し、ブロック１３４において、プロセスが終了する。
【００３３】
図５に示されたプロセスに従ってメモリ・ベースのタイミング・スペキュレーションを通して得られた待ち時間の減少は、図７に示された読み取りトランザクションのタイミング図を参照することによって十分に認識することが可能である。図７に示されたＲＡＳおよびＣＡＳの状態は、システム・メモリ２２におけるこれらの信号の内部状態を表し、必ずしもＩＭＣ１８と関連するシステム・メモリ２２との間のインターフェースにおける信号の状態を表さない（その状態とは異なることがある）。
【００３４】
図示のように、各ＩＭＣ１８は、時間ｔ０ において、読み取りリクエスト・トランザクションのリクエスト・アドレス２２０を受け取る。ＩＭＣ１８がその付属のシステム・メモリ２２に対するアクセスを暫定的に開始することを決定する場合、ＩＭＣ１８は指定されたリクエスト・アドレス２２０(または、少なくとも行部分)をその付属のシステム・メモリ２２に供給し、未だにアクティブ低アドレスが後述の行ベースのスペキュレーションに従って暫定的に表明されない場合、参照番号２２２で表されるように、時間ｔ１においてアクティブ低ＲＡＳ信号に表明させる。ＩＭＣ１８は、その後、参照番号２３０で表されるように、時間ｔ２ においてアクティブ低ＣＡＳ信号に表明させる。その後、システム・メモリ２２は、時間ｔ３において所望のデータ２４０をＩＭＣ１８に供給する。
【００３５】
相互接続機構１２に結合された各スヌーピング・エージェントが時間ｔＡ において、システム・メモリ２２に対する暫定的なアクセスに対して非同期的にスヌープ応答２５０を供給し、応答ロジック３０が、時間ｔＢにおいて、すべてのエージェントに供給された結合応答２５２を生じるように結合する。スペキュレーションがない場合、ＩＭＣ１８は、必要に応じて、結合応答２５２の受信に応答してシステム・メモリ２２に対するアクセスを開始するであろう。したがって、本発明による成功したタイミング・スペキュレーションは、小さくともｔＲＣＤ＋ｔ３−ｔ２ に等しい、時間ｔ１ とｔＢ との間の待ち時間の減少を生じる。
【００３６】
次に図６を参照すると、本発明の一実施例に従って、履歴情報を参照することによる行スペキュレーションを選択的に使用することによって、ＩＭＣ１８がメモリ・アクセス待ち時間の内部成分（ｔＩＮＴ）を減少させる例示的プロセスの高レベルの論理的フローチャートが示される。図示のように、プロセスは、相互接続機構１２または処理ユニット１０における関連するプロセッサ・コア１４からのリクエスト・トランザクションがＩＭＣ１８によって受信されたことに応答して、ブロック１５０において開始する。上記のように、リクエスト・トランザクションは、トランザクション・タイプ(例えば、読み取り、修正意図を伴なう読み取り、フラッシュ、キル、等)、そのリクエスト・トランザクションを生成した命令のスレッドＩＤ、およびリクエスト・アドレスを含むことが望ましい。
【００３７】
次に、プロセスはブロック１５０からブロック１５２に進む。ブロック１５２は、リクエスト・トランザクションによって指定されたリクエスト・アドレスが付属のシステム・メモリ２２における記憶ロケーションに割り当てられるかどうかをＩＭＣ１８が決定することを示している。この決定は、例えば、メモリ・マップを参照することによって、および／または、そのリクエスト・トランザクションによって指定されたリクエスト・アドレスをハッシュすることによって、行うことが可能である。ブロック１５２において、リクエスト・アドレスが付属のシステム・メモリ２２にマップしないという決定が行われる場合、ＩＭＣ１８は、ブロック１５４において、指定されたリクエスト・アドレスが付属のシステム・メモリ２２にマップしていないことを表すヌル・スヌープ応答を供給する。上述のように、並びに、図８および図９に関して後述するように、ＩＭＣ１８は、事前にスヌープしたリクエストに関する履歴情報も任意選択的に供給する。しかる後、プロセスは接続記号Ｂを通って、ブロック１８２において終了する。
【００３８】
しかし、ブロック１５２において、指定されたメモリ・アドレスが付属のシステム・メモリ２２にマップしていることをＩＭＣ１８が決定する場合、ＩＭＣ１８は、ブロック１５６において、付属のシステム・メモリ２２がその指定されたリクエスト・アドレスと関連するデータの「ホーム」記憶ロケーションであることを表すホーム・スヌープ応答を供給する。上述したように、応答ロジック３０は、この応答とキャッシュ階層機構１６および他のＩＭＣによって供給されたスヌープ応答とを結合し、リクエスト・トランザクションに対するデータ処理システムの応答全体を表す結合応答を生じさせる。
【００３９】
ブロック１５８において更に示されるように、ＩＭＣ１８は、例えば、メモリ・マップを参照すること、および／または、リクエスト・アドレスをハッシュすることによって、指定されたリクエスト・アドレスがマップしている付属のシステム・メモリ２２におけるメモリ・バンク５６を決定する。更に、ブロック１６０において、ＩＭＣ１８は、リクエスト・トランザクション応答して付属のシステム・メモリ２２に対するメモリ・アクセスを開始すべきかどうかを決定する。図５に関連して説明したように、ＩＭＣ１８は、ＭＳＴ２０を参照することによって、ブロック１６０に示された決定を暫定的に行ってもよく、あるいは、単に、リクエスト・トランザクションの結合応答（または、他の指定されたコヒーレンシ・メッセージ）の受信に応答して決定を行ってもよい。
【００４０】
いずれの場合も、付属のシステム・メモリ２２に対するメモリ・アクセスが究極的に必要ない（例えば、リクエスト・トランザクションが低待ち時間のキャッシュ階層機構１６を参照することによってサービスされる）場合、プロセスはブロック１６０からブロック１８０に進む。ブロック１８０は、このリクエスト・トランザクションに対して一次行をオープンに保持することが待ち時間を減少させないことを表すために、ＩＭＣ１８がＭＳＴ２０内の関連する行スペキュレーション・フィールド８６における履歴ビット９４を更新することを表す。上記したように、ＩＭＣ１８は、行スペキュレーション履歴が記録される一次行、および／または、二次行を置換することによって、行スペキュレーション・フィールド８６を代替え的にまたは付加的に更新することも可能である。しかる後、図６に示されたプロセスはブロック１８２において終了する。
【００４１】
再びブロック１６０に戻ると、ＩＭＣ１８がメモリ・アクセスを開始する決定をしたことに応答して、ブロック１７０に示されるように、ＩＭＣ１８は、付属のシステム・メモリ２２に対するリクエストされた読み取りまたは書き込みアクセスを遂行する。更に、ブロック１７２に示されるように、ＩＭＣ１８は、選択された行スペキュレーション・アルゴリズムを関連する行スペキュレーション・フィールド８４の内容に適用することによって、そのアクセスに続くリクエスト・アドレスを含んだ行５２をオープンに保持すべきかどうかを決定する。上述のように、ＩＭＣ１８は、ブロック１７２に示された決定を行うために、種々の異なる行スペキュレーション・アルゴリズムのいずれを使用することも可能である。例えば、ＩＭＣ１８は、一次行セグメント９０ａにおける履歴ビット９４ａの選択された数（例えば、８個のうちの６個）が「１」である場合、および／または、最近の履歴ビット９４ａの連続した数（例えば、４個）が「１」である場合、暫定的にその行をオープンのままにすることが可能である。ＩＭＣ１８は、過去の予測成功、ローカル電力消費に対する望ましい限界の強化（例えば、一時にオープンに保持可能な行の合計数の上限を課すことによる）、グローバル電力消費量、またはアクセス・タイプ（例えば、プリフェッチ、予約を伴なうロード、等）のような他の要素を代替え的にまたは付加的に考察することも可能である。
【００４２】
ブロック１７４において、ＩＭＣ１８が行５２を暫定的にオープンに保持することを決定した場合、ブロック１７８に示されるように、ＩＭＣ１８（および／または、ＲＤチップ２４）は、同じメモリ・バンク５６に対するＩＭＣ１８によるその後のメモリ・アクセスまで、ＲＡＳ信号にシステム・メモリ２２内で表明し続けさせる。一方、ＩＭＣ１８が行５２をオープンに保持しないことを決定した場合、ブロック１７６に示されるように、ＩＭＣ１８は、その後の如何なるアクセスにも関係なくそのアクセスに続いて生じるアクティブ低ＲＡＳ信号の表明を中止させる。いずれの場合でも、ブロック１８０に示されるように、ＩＭＣ１８は、完了したメモリ・アクセスの結果を反映するようにＭＳＴ２０における関連する行スペキュレーション・フィールド８６を更新する。しかる後、プロセスはブロック１８２において終了する。
【００４３】
図７に示されたタイミング図を再び参照すると、図６に示されたプロセスによる行スペキュレーションを通して得られた待ち時間の減少がわかるであろう。上述のように、ＩＭＣ１８は、時間ｔ 1  においてアクティブ低ＲＡＳ信号に表明させることによって、リクエスト・アドレス２２０の受信に応答して、行５２に記憶されたデータ２４０に対するアクセス開始する。しかる後、ＩＭＣ１８は、時間ｔ２においてアクティブ低ＣＡＳ信号に表明させる。その信号は、時間ｔ３ においてＤＩＭＭ２６に所望のデータ２４０を出力（または、記憶）させる。
【００４４】
図６に示された行スペキュレーション方法によれば、ＩＭＣ１８は、通常の方法で行５２を「クローズ」してもよく、参照番号２２４ａで示されるように、ＲＡＳに表明解除させることによってバンク５６のリフレッシュを開始してもよい。別の方法として、列スペキュレーション・アルゴリズムを関連する列スペキュレーション・フィールド８６に適用することによって表される場合、ＩＭＣ１８は、参照番号２３２で示されるように、少なくとも１つのその後のリクエスト・アドレス２２１が受信され、ＤＩＭＭに送信され、そしてＣＡＳの再表明に応答してラッチされるまで、ＲＡＳに表明し続けさせることによって暫定的に行５２をオープンのままにしてもよい。同じ行５２に対する１つまたは複数の更なるメモリ・アクセス（または、予測誤り）の後、参照番号２２４ｂで示されるように、ＩＭＣ１８はその行をクローズし、リフレッシュ・サイクルを開始するであろう。このように、内部メモリ待ち時間（ｔＩＮＴ）の２／３またはそれ以上になることがあるＲＡＳ・ＣＡＳ間の待ち時間（ｔＲＣＤ）は、行スペキュレーションが正しいことを証明するデータ２４２に対するその後のアクセスにとって都合よく排除される。しかし、予測誤りに対するペナルティは、更なる電力消費および少なくともｔＲＰ（即ち、バンク５６をリフレッシュするために必要なｔ４およびｔ５ の間の時間）というその予測誤りしたアクセスに対するアクセス待ち時間の増加の両方を含むので、高い成功率を有する行スペキュレーション・アルゴリズムを実現することが重要であるということは明らかであろう。
【００４５】
前述の行スペキュレーション方法が、いわゆる「バースト」アクセスを含む通常のメモリ・アクセスとは大きく異なっていることは当業者には明らかであろう。通常のバースト・アクセスでは、メモリ・コントローラは、ＲＡＳを表明し続けながら、バースト・コマンドに応答して、メモリの同じ行における複数列のデータを順次にアクセスする。しかし、そのような場合、複数のアクセス中のＲＡＳの継続した表明は、その複数のアクセスがすべてバースト・コマンドによって指定されるので、暫定的ではない。更に、バーストを構成するすべてのアクセスがバースト・コマンドによって指定されるので、メモリ・コントローラは、複数のアクセス中にＲＡＳを表明することによってその行をオープンに保持すべきかどうかを決定するために、履歴情報（例えば、ＭＳＴ２０に記録された情報のような）を調べることはない。
【００４６】
本発明によって導入されたメモリ・ベースのタイミング・スペキュレーションおよび行スペキュレーションは、ＩＭＣ１８間で履歴情報を共有することによって更に機能強化することが可能である。例えば、図８は、図１のデータ処理システム８の処理ユニット１０におけるＩＭＣ１８の別の実施例を示す。図示のように、この別の実施例では、各ＩＭＣ１８は、その付属のシステム・メモリ２２に対する一次ＭＳＴ２０ａおよびデータ処理システム８における他のそれぞれのＩＭＣ１８に対する付加的な陰のＭＳＴ２０ｂ−２０ｎを含む。陰のＭＳＴ２０ｂ−２０ｎの各々は、それぞれの関連するＩＭＣ１８におけるＭＳＴ２０ａの内容の弱く同期した陰のコピーを記憶する。それらのＩＭＣ１８における種々の一次ＭＲＴ２０ａに含まれた分散履歴情報を共用することによって、タイミング・スペキュレーションおよび列スペキュレーションの精度を改善することが可能である。
【００４７】
一次ＭＳＴ２０ａに含まれた履歴情報を種々のＩＭＣ間で通信するために、多くの種々の手法が使用可能である。図９に示された１つの好適な実施例では、ＩＭＣ１８によって発生された各スヌープ応答２６０は、通常のスヌープ情報２６２のみならず、リクエスト・トランザクションにおいて指定された特定のスレッドＩＤおよびリクエスト・アドレスと関連したＭＳＴエントリ８２の内容を含むＭＳＴエントリ・フィールド２６４も含む。幾つかのまたはすべてのスヌープ応答が各ＩＭＣ１８にとって可視的であると仮定すると、各ＩＭＣ１８のスヌープ応答において一次ＭＳＴ２０ａからのＭＳＴエントリのコピーを含むことは、他のＩＭＣ１８がそれらの陰のＭＳＴ２０を適正に更新することを可能にする。
【００４８】
ＩＭＣ１８によるタイミング・スペキュレーションおよび行スペキュレーションの精度は、更なる履歴情報をＩＭＣ１８に供給するようにキャッシュ階層機構１６に指示することによって更に強化することが可能である。データ処理システム８のメモリ・システムおよびプロセッサ・コア１４により実行されるソフトウェアが適切に設計される場合、プロセッサ・コア１４によってリクエストされたデータ・アクセス・オペレーションの高いパーセンテージがキャッシュ階層機構１６によってサービスされ、そのリクエストに関してなにも知ることのないようにＩＭＣ１８を効果的に「遮蔽する」。従って、データ・アクセス履歴情報をＩＭＣ１８に供給するキャッシュ階層機構がない場合、ＩＭＣ１８は、データ・アクセス・オペレーションの合計数のわずかなパーセンテージしか表さない履歴情報に基づいてタイミング・スペキュレーション、および／または、行スペキュレーションを遂行するであろう。
【００４９】
従って、１つの実施例では、キャッシュ階層機構１６のキャッシュ・コントローラは、キャッシュ階層機構１６を参照することによってサービスされたデータ・アクセス・リクエストから収集された、少なくとも１スレッド当たりのバンク・アクセス履歴情報をＩＭＣ１８に送る。そのバンク・アクセス履歴情報は、リクエスト・トランザクションに関連して、または非同期の特殊目的メッセージによってＩＭＣ１８に送ることが可能である。そこで、暫定的に１つの行をオープンに保持すべきかどうかを決定すると、このようなバンク・アクセス履歴情報はＩＭＣ１８による参照が可能となる。
【００５０】
次に図１０を参照すると、本発明の一実施例に従って、ＩＭＣ１８の一実施例のより詳細なブロック図が示される。図示のように、ＩＭＣ１８は、リクエスト・バッファ３００において、ローカル・プロセッサ・コア１４から、および他の処理ユニット１０におけるプロセッサ・コア１４から、種々のメモリ・アクセス・リクエストを受け取る。リクエスト・バッファ３００は、そのような各リクエストが、中央状態マシン３０６の指示のもとに廃棄されるか、またはメモリ・コントローラ（ＭＣ）キュー３０２の１つに割り当てられるまで、そのような各リクエストを保持する。
【００５１】
更に後述するように、ＭＣキュー３０２は限られたリソースであり、メモリ・アクセス・リクエストをサービスするために、選択された数のキューをそのリソースからシステム・メモリ２２の各バンクに割り振ることが可能である。即ち、一旦、メモリ・アクセス・リクエストが中央状態マシン３０６によってリクエスト・バッファ３００からＭＣキュー３０２に転送されると、中央状態マシン３０６は、（介入メッセージがなくても）ＲＡＳ状態マシン（ＳＭ）３０４およびメモリ・スペキュレーション・テーブル（ＭＳＴ）３１０によって供給されたメモリ・アクセス・リクエストおよび履歴アクセス情報に従ってシステム・メモリ２２に対するアクセスを指示するであろう。ＭＣキュー３０２は珍しいリソースであるので、中央状態マシン３０６がメモリ・アクセス・リクエストに基づいてシステム・メモリ２２に対するアクセスを開始する必要がある確率が高い場合、中央状態マシン３０６は、リクエスト・バッファ３００におけるメモリ・アクセス・リクエストにキュー３０２を割り振ることが望ましい。
【００５２】
次に図１１を参照すると、図１０のＭＳＴ３１０の詳細なブロック図が示される。図示のように、ＭＳＴ３１０は多数の行３１２を含み、各行は、関連するプロセッサ・コア１４によってサポートされる１２８個のコンカレント・スレッドのそれぞれ１つを関連付けられている。各行３１２は、関連するシステム・メモリ２２における３２個のバンクの各々に対するエントリ３１４（例えば、３１４ａ、３１４ｂ）を含む。
【００５３】
更に図１１に示されるように、システム・メモリ２２の特定のバンクに対するすべてのエントリ３１４が、本質的には、各スレッドに対して２つのセグメント３１６、３１８を含む１２８エントリのキャッシュを形成する。各エントリ３１４における一次セグメント３１６および二次セグメント３１８は、行ＩＤフィールド３２０および２つの履歴ビット・フィールド３２２、３２４によって同様に編成される。
【００５４】
履歴ビット・フィールド３２２は、複数ビット（例えば、４ビット）履歴フィールドとして実装されることが望ましく、各ビットは、行ＩＤフィールド３２０において表された関連するバンクおよび行ＩＤにマップする実アドレスを持った、ＩＭＣ１８が受け取った直前のリクエスト・トランザクションのそれぞれ１つを表す。第１のビット状態（例えば、「１」）は、対応するメモリ・アクセス・リクエストがＤＩＭＭ２６のうちの関連したものをアクセスすることによってサービスされたことを表し、第２のビット状態（例えば、「０」）は、システム・メモリ２２の関連したＤＩＭＭ２６をアクセスすることなく（例えば、リクエストされたデータをキャッシュ・メモリ１６から得ることによって）サービスされたことを表す。
【００５５】
履歴ビット・フィールド３２４におけるビットは、逆に、関連するバンクおよび行ＩＤフィールド３２０によって識別された行にマップする直前のリクエスト・トランザクションがシステム・メモリ２２に対してアクセスすることなくサービスされたかどうかを表す。従って、第１のビット状態（例えば、「１」）は、関連するメモリ・アクセス・リクエストがシステム・メモリ２２に対するアクセスなしにサービスされたことを表し、第２のビット状態（例えば、「０」）は、メモリ・アクセス・リクエストがシステム・メモリ２２に対するアクセスによってサービスされたことを表す。従って、履歴ビット・フィールド３２２がすべて１を含む場合、履歴ビット・フィールド３２４はすべて０を含むであろうし、履歴ビット・フィールド３２４がすべて１を含む場合、履歴ビット・フィールド３２２はすべて０を含むであろう。上述のように、図３に関して、ＩＭＣ１８の中央状態マシン３０６は、特定のスレッドによる特定のメモリ・バンクに対するその後のアクセスがシステム・メモリ２２をアクセスすることによってサービスされるであろうということがありそうかどうかを決定するために、履歴ビット・フィールド３２２および３２４における履歴情報を利用する。この決定に基づいて、ＩＭＣ１８は、アクセス待ち時間のうちの通信待ち時間（ｔＣＯＭ）を減少させるために、所定のコヒーレンシ応答メッセージ（例えば、スヌープ応答、部分的結合応答、または結合応答）に先立って暫定的なメモリ・アクセス・サイクルを選択的かつ知的に開始することができる。
【００５６】
図１１と図３とを比較すれば明らかであるように、ＭＳＴ３１０がメモリ・ベースの行スペキュレーションにおいて利用された履歴情報を記憶しないという点で、ＭＳＴ３１０は図３のＭＳＴ２０とは異なる。図１０に示されたＩＭＣ１８の実施例によれば、メモリ・ベースの行スペキュレーションを制御するために利用された履歴情報が、その代わりに、それぞれのＲＡＳ状態マシン３０４におけるシステム・メモリ２２の各バンクに対して個々に維持される。
【００５７】
次に図１２を参照すると、本発明の一実施例に従って、例示的なＲＡＳ状態マシン３０４の状態図が示される。図示の実施例は６個の状態Ｐ、Ｑ、Ｒ、Ｓ、Ｔ、Ｕを含み、その状態の各々が関連するＲＡＳ状態を有する。例えば、状態Ｐでは、関連するメモリ・バンク５６にはメモリ・ベースの行スペキュレーションは存在せず、アクティブ低ＲＡＳ信号に対するデフォルト状態は高い論理的状態（例えば、「１」）である。逆に、ＲＡＳ状態マシン３０４が状態Ｑにある場合、中央状態マシン３０６は、選択された行アドレスに対して、アクティブ低ＲＡＳ信号を低い論理的状態（例えば、「０」）に暫定的に保持することによってシステム・メモリ２２の関連するバンク５６に対してメモリ・ベースの行スペキュレーションを使用する。
【００５８】
ＲＡＳ状態マシン３０４は、例えば、優先順位に基づいて、中央状態マシン３０６によってＭＣキュー３０２から選択されたそれらのメモリ・アクセス・リクエストを入力として受け取る。図１２に示されるように、ライン・スタイルを変えることによってＲＡＳ状態マシン３０４は、次のような３つのタイプの入力に基づいてそれの現在状態を評価する。
（１） 関連するバンク３１４におけるエントリの行ＩＤフィールド３２０において指定された行アドレスの１つに一致するアドレスを指定し、関連するシステム・メモリ２２に対するアクセスによってサービスされた、メモリ・アクセス・リクエスト、
（２）関連するメモリ・バンクに対するエントリ３１４における行ＩＤフィールド３２０の１つにおいて表された行ＩＤの１つに一致するが、関連するシステム・メモリ２２に対するアクセスによってサービスされないアドレスを指定する、メモリ・アクセス・リクエスト、
（３）プリフェッチ・リクエストとしてマークされるか、または関連するバンクに対するエントリの関連するセットにおいてキャッシュされたいずれのＩＤにも一致しないリクエスト・アドレスを指定する、メモリ・アクセス・リクエスト。
【００５９】
これらの３つのクラスのメモリ・アクセス・リクエストは、図１２において、それぞれ、太い破線、実線、および細い破線によって表される。
【００６０】
動作時には、ＲＡＳ状態マシン３０４が状態Ｐに初期設定される。その状態Ｐでは、アクティブ低ＲＡＳ信号が、関連するメモリ・バンク５６に対するメモリ・ベースの行スペキュレーションが全く遂行されないことを意味する論理的に高いデフォルト状態を有する。即ち、メモリ・バンク５６における特定の行を暫定的にオープンに保持することによってかなりの待ち時間の減少が得られることを提唱するメモリ・アクセス・オペレーションの履歴がコンパイルされてない場合、電力消費が減少するようにメモリ・ベースの行スペキュレーションは遂行されない。矢印３３０、３４０、３５０、および３６０によって表されるように、すべてが特定の行アドレスを指定し、すべてがシステム・メモリ２２に対するアクセスによってサービスされるメモリ・アクセス・リクエストの途切れのないシーケンスを受け取ることに応答して、状態マシン３０４が状態Ｑ、Ｒ、およびＳを通して状態Ｔに遷移する。なお、それらの状態では、メモリ・ベースの行スペキュレーションが遂行される。従って、メモリ・バンクの同じ行に対する４つの直列的なメモリ・アクセス・リクエストが受信される場合、関連するＲＡＳ状態マシン３０４は、アクティブ低ＲＡＳ信号が、同じメモリ行に対するその後のアクセスの間、中央状態マシン３０６によって論理的低状態に維持されなければならない。これは、システム・メモリ２２がそのようなリクエストをサービスするという統計上の可能性があるためである。
【００６１】
矢印３３２、３４２、３５２、および３６２によって表されるように、状態Ｐから状態Ｔへの遷移中の任意の時間に、行スペキュレーションの潜在的な目標である同じ行アドレスにマップするメモリ・リクエストがシステム・メモリ２２に対するアクセスなしにサービスされる場合、ＲＡＳ状態マシン３０４は状態Ｐに戻るであろう。図１２は、更に、ＲＡＳ状態マシン３０４がプリフェッチ・メモリ・アクセス・リクエストを関連するプロセッサ・コア１４から受け取りたことに応答して、或いは、関連するメモリ・バンク５６に対応したＭＳＴ３１０の行ＩＤフィールド３２０においてミスする指定されたメモリ・アドレスを有するメモリ・アクセス・リクエストを受け取ったことに応答して、状態を変えないであろうということを示している。
【００６２】
ＲＡＳ状態マシン３０４が状態Ｔに入ることによって表されるように、特定の行アドレスに対するメモリ・ベースのスペキュレーションが確立される場合、ＲＡＳ状態マシン３０４は、その後の各メモリ・アクセス・リクエストが、プリフェッチ・リクエストであるか、ＭＳＴ３１０をミスした行アドレスを指定するか、またはＭＳＴ３１０においてヒットし、システム・メモリ２２の参照によりサービスされる行アドレスを指定する限り、状態Ｔのままであろう。ＲＡＳ状態マシン３０４がＭＳＴ３１０においてヒットした行アドレスを指定するメモリ・アクセス・リクエストを受け取り、それがシステム・メモリ２２の参照によりサービスされない場合、ＲＡＳ状態マシン３０４は、矢印３７２によって表されるように、状態Ｔから状態Ｕに遷移するであろう。ＲＡＳ状態マシン３０４が状態Ｕにある場合、中央状態マシン３０６は、依然として、アクティブ低ＲＡＳ信号を論理的低状態に保持することによってその選択された行アドレスに対するメモリ・ベースの行スペキュレーションを遂行するであろう。その後のメモリ・アクセス・リクエストがＭＳＴ３１０においてヒットし、システム・メモリ２２の参照によってサービスされる場合、ＲＡＳ状態マシン３０４は、状態Ｕから状態Ｔに戻ることが可能である（矢印３８０）。しかし、ＲＡＳ状態マシン３０４が状態Ｕにあり、ＭＳＴ３１０においてヒットする行アドレスを指定するメモリ・アクセス・リクエストを受け取り、それがシステム・メモリ２２の参照によってサービスされない場合、ＲＡＳ状態マシン３０４は、矢印３８２によって表されるように、状態Ｕから状態Ｐに遷移する。
【００６３】
要約すると、図１２は、その後のアクセスが事前にアクセスされた行内のアクセスになる高い確率が存在することを、システム・メモリ２２の特定のバンクにおける履歴アクセス・パターンが示す場合、中央状態マシン３０６がメモリ・ベースの行スペキュレーションを知的に遂行することを可能にする例示的なＲＡＳ状態マシン３０４を示す。このように、メモリ・アクセスの間、システム・メモリ２２のバンク内の行をオープンに保持することによって生じる電力消費は、スペキュレーションが遂行されるメモリ・アクセスの間のメモリ・アクセス待ち時間をかなり減少させる高い確率を有する。
【００６４】
次に図１３乃至図１６を参照すると、図１０のＩＭＣ１８の中央状態マシン３０６が、関連するシステム・メモリ２２に対するメモリ・アクセス待ち時間を最適化するためにメモリ・ベースのタイミング・スペキュレーションおよび行スペキュレーションの両方を結合して使用するプロセスの高レベルの論理的フローチャートが示される。先ず、図１３を参照すると、プロセスは、相互接続機構１２または処理ユニット１０における関連するプロセッサ・コア１４からのメモリ・アクセス・トランザクション（例えば、データ読み取り）をＩＭＣ１８が受け取りたことに応答して、ブロック４００で開始する。上述のように、リクエスト・トランザクションは、トランザクション・タイプと、リクエスト・トランザクションを発生した命令のスレッドＩＤ（例えば、ロードまたはストア）と、リクエスト・アドレスとを含むことが望ましい。以後、トランザクション・タイプは「読み取り」であると仮定する。
【００６５】
次に、プロセスはブロック４００からブロック４０２に進む。ブロック４０２は、リクエスト・トランザクションによって指定されたリクエスト・アドレスが付属のシステム・メモリ２２における記憶ロケーションに割り当てられているかどうかをＩＭＣ１８が決定することを示している。リクエスト・アドレスが付属のシステム・メモリ２２にマップしていないという決定がブロック４０２において行われる場合、ブロック４０４において、ＩＭＣ１８は、指定されたリクエスト・アドレスが付属のシステム・メモリ２２にマップしていないことを表すヌル・スヌープ応答を供給する。更に、図８および図９を参照して上述したように、ＩＭＣ１８は、事前にスヌープしたメモリ・アクセス・リクエストに関する履歴情報を提供することも可能である。しかる後、プロセスはブロック４０６において終了する。しかし、ブロック４０２において、指定されたメモリ・アドレスが付属のシステム・メモリ２２にマップしていることをＩＭＣ１８が決定する場合、ＩＭＣ１８は、ブロック４１０に示されるように、その付属のシステム・メモリ２２が、その指定されたリクエスト・アドレスに関連したデータの「ホーム」記憶ロケーションであることを表すホーム・スヌープ応答を供給する。上述のように、スヌープ応答は、応答ロジック３０によって他のスヌープ応答と結合され、リクエスト・トランザクションに対する全応答性のデータ処理システム８を表す結合応答を発生する。
【００６６】
ブロック４１２に示されるように、ＩＭＣ１８は、指定されたリクエスト・アドレスがマップする付属のシステム・メモリ２２におけるメモリ・バンク５６も決定する。リクエスト・トランザクションに含まれたこのバンク番号およびスレッドＩＤを利用して、ＩＭＣ１８は、ＭＳＴ３１０における対応するエントリをアクセスする。ＭＳＴ３１０におけるその情報に基づいて、ＩＭＣ１８は、それぞれ、図１４、図１５、および図１６に示された３つの方法の１つでメモリ・アクセス・リクエストをサービスする。
【００６７】
例えば、ブロック４２０に示されるように、ＩＭＣ１８がＭＳＴ３１０の参照およびメモリ・アクセス・リクエストによって、
（１）メモリ・アクセス・リクエストがプリフェッチ・リクエストではないこと、
（２）リクエスト・アドレスがＭＳＴ３１０においてヒットすること、および
（３）ＩＭＣ１８がこの行アドレスに対する前のｎ個（即ち、この場合には４個）のリクエストの各々をサービスしたこと、
を決定する場合、ＩＭＣ１８はタイミング・スペキュレーション、および、もし可能ならば、図１４に示されたプロセスによる行スペキュレーションを利用してメモリ・アクセス・リクエストをサービスする。一方、ＩＭＣ１８が、
（１）メモリ・アクセス・リクエストがプリフェッチ・リクエストであること、または
（２）リクエスト・アドレスがＭＳＴ３１０においてヒットし、関連する履歴ビット・フィールド３２４が、ＩＭＣ１８がこの行に対する前のｎ個（即ち、４個）のリクエストをサービスしなかったことを表すすべて１にセットされること
を決定する場合、ＩＭＣ１８は、図１６に示されたプロセスに従ってタイミング・スペキュレーションまたは行スペキュレーションなしでメモリ・アクセス・リクエストをサービスする。他のメモリ・アクセス・リクエスト、即ち、ＭＳＴミスの結果生じたメモリ・アクセス・リクエストまたは履歴ビット・フィールド３２２および３２４のいずれもすべて１にセットされないことによるメモリ・アクセス・リクエストは、図１５に示されたプロセスに従って行スペキュレーションまたはタイミング・スペキュレーションなしでサービスされる。従って、リソースの付随使用がその正当性を証明しているということを表す履歴アクセス・パターンに対する選択されたメモリ・アクセス・リクエストのためのアクセス待ち時間を少なくするために、ＩＭＣ１８は、タイミング・スペキュレーションおよび行スペキュレーションを利用してメモリ・アクセス・リクエストを選択的にかつ知的にサービスする。
【００６８】
次に図１４を参照すると、プロセスは、ページ接続符号Ｃの後のブロック４３０において継続する。ブロック４３０は、中央状態マシン３０６がＭＣキュー３０２をメモリ・アクセス・リクエストに割り振ることを示す。即ち、中央状態マシン３０６は、それがＭＳＴ３１０を調べた結果に基づいて、ＩＭＣ１８がメモリ・アクセス・リクエストをサービスする責任を持つことを表す部分的結合応答または完全結合応答のようなコヒーレンシ応答の受信に先立って、ＭＣキュー３０２をメモリ・アクセス・リクエストに暫定的に割り振る。
【００６９】
次に、ブロック４３２において、中央状態マシン３０６は、アクティブ低ＲＡＳ信号が、現在、正しい行アドレスに対してアクティブであるかどうかを決定する。換言すれば、中央状態マシン３０６は、正しい行に対する行スペキュレーションが、正しい行をオープンに保持することによって、現在遂行されつつあるかどうかを決定する。それが否定される場合、中央状態マシン３０６は、システム・メモリ２２の関連するバンクにおいて現在表明されつつあるＲＡＳ信号に、ブロック４３４に示されるように表明解除を行わせ、アクティブ低ＲＡＳ信号を、ブロック４３６に示されるように正しい行を表明させる。しかし、行スペキュレーションが正しい行に対して現在遂行されつつあることを中央状態マシン３０６が決定する場合、ブロック４３４および４３６に起因する内部待ち時間（ｔＲＰ＋ｔＲＣＤ）は排除することが可能である。この場合、中央状態マシン３０６は、プリチャージ待ち時間（ｔＲＰ）またはＲＡＳ・ＣＡＳ間の待ち時間（ｔＲＣＤ）を生じることなく、ブロック４４０に示されるように単にアクティブ低ＣＡＳ信号に表明させることが可能である。
【００７０】
ＲＡＳ信号およびＣＡＳ信号の表明に応答して、中央状態マシン３０６は、ブロック４４２に示されるように、リクエストされたデータをＤＩＭＭ２６のうちの関連したものから受け取る。ブロック４５０において、ＩＭＣ１８は、選択されたコヒーレンシ・メッセージ、例えば、部分的結合応答または完全結合応答を受け取るまで、受け取ったデータをバッファする。
【００７１】
コヒーレンシ応答メッセージの受信に続いて、中央状態マシン３０６は、ブロック４５２に示されるように、現在、行スペキュレーションを監視されつつある行に対する選択されたＲＡＳ状態を再設定する。中央状態マシン３０６は、ブロック４５４において、リクエストされたデータをシステム・メモリ２２から得るために使用される暫定的なアクセスが正しかったことを、選択されたコヒーレンシ・メッセージが表すかどうかも決定する。それが否定される場合、ブロック４５６において、中央状態マシン３０６は、システム・メモリ２２から検索されたデータをＩＭＣ１８に廃棄させる。しかし、スペキュレーションが正しかった場合、それは、選択されたコヒーレンシ・メッセージがＩＭＣ１８をそのリクエストされたデータのソースとして指示したことを意味し、ブロック４６０に示されるように、ＩＭＣ１８は、リクエストされたデータを要求者に供給する。ブロック４５６またはブロック４６０に続いて、中央状態マシン３０６はＭＳＴ３１０における関連するエントリの履歴ビット・フィールド３２２および３２４を更新する。しかる後、プロセスはブロック４６４において終了する。
【００７２】
次に図１５を参照すると、ＩＭＣ１８が、ＭＳＴミスを生じるメモリ・アクセス・リクエストをサービスする例示的プロセスおよびＮＳＴ３１０の関連エントリにおける履歴ビット・フィールド３２２、３２４のいずれもすべてが１ではないということに関する例示的プロセスが示される。図示のように、プロセスは、図１３のページ接続符号Ｄからブロック４７０に続く。ブロック４７０は、中央状態マシン３０６がＭＣキュー３０２をメモリ・アクセス・リクエストに暫定的に割り振ることを示している。更に、ブロック４７２に示されるように、中央状態マシン３０６は、必要な場合にはプリチャージ・サイクルを開始するために、アクティブ低ＲＡＳ信号に表明解除させる。選択されたコヒーレンシ・メッセージ（例えば、結合応答）の受信に先立ってＲＡＳ信号を表明解除することによって、中央状態マシン３０６は、メモリ・アクセス・リクエストのサービスに関連したプリチャージ待ち時間（ｔＲＰ）をマスクする。次に、中央状態マシン３０６は、ブロック４７４に示されるように、選択されたコヒーレンシ・メッセージ（例えば、部分的結合応答または完全結合応答）の受信を待つ。
【００７３】
ＩＭＣ１８が、リクエストされたデータを供給する責任を持たないことを、選択されたコヒーレンシ・メッセージが示す場合、プロセスはブロック４７６からブロック４８８に進む。ブロック４８８は、中央状態マシンが、メモリ・アクセス・リクエストに暫定的に割り振られたＭＣキュー３０２を割り振り解除することを示している。その場合、リクエスト・バッファ３００内に保持された他のメモリ・アクセス・リクエストは、究極的にはＩＭＣ１８によってサービスされなかったメモリ・アクセス・リクエストにＭＣキュー３０２を暫定的に割り振るために、更なるアクセス待ち時間を生じることがある。ブロック４８８に続いて、図１５に示されたプロセスはブロック４９０において終了する。
【００７４】
ブロック４７６に戻ると、ブロック４７４において受信された選択されたコヒーレンシ・メッセージは、ＩＭＣ１８がリクエストされたデータを供給されなければならないことを示す場合、プロセスはブロック４７６からブロック４７８に進む。ブロック４７８は、中央状態マシン３０６がリクエスト・アドレスによって指定された行をアクティブ行ＲＡＳ信号に表明させることを示す。次に、ｔＲＣＤの遅れに続いて、ブロック４８０に示されるように、中央状態マシン３０６はアクティブ低ＣＡＳ信号に表明させる。次に、ブロック４８２に示されるように、中央状態マシン３０６は、行スペキュレーションのための候補として選択された行に対して選択されたＲＡＳ状態を再設定する。
【００７５】
ブロック４８４に示されるように、中央状態マシン３０６が、リクエストされたデータをＤＩＭＭ２６の１つから受け取るとき、ブロック４８６に示されるように、中央状態マシン３０６はそのリクエストされたデータを要求者に供給する。しかる後、中央状態マシン３０６は、ブロック４８８において、メモリ・アクセス・リクエストに割り当てられたＭＣキュー３０２を割り振り解除し、ブロック４９０においてメモリ・リクエストの処理を終了する。従って、図１５は、履歴情報が使用可能でないか、或いは使用可能な履歴情報が未定であるメモリ・アクセス・リクエストにＭＣキュー３０２を暫定的に割り振るというＩＭＣ１８の実施例を示す。しかし、そのようなメモリ・アクセス・リクエストに対して、中央状態マシン３０６の図示の実施例は、電力を節約しかつミススペキュレーションによって生じる更なる待ち時間を回避するためにタイミング・スペキュレーションおよび行スペキュレーションを遂行しない。
【００７６】
次に図１６を参照すると、プリフェッチ・リクエストであるメモリ・アクセス・リクエストを、またはＩＭＣ１８によってサービスされる確率が低いことを履歴情報が示すメモリ・アクセス・リクエストをＩＭＣ１８の例示的な実施例がサービスするプロセスが示される。図示のように、プロセスは図１３からページ接続符号Ｅを通してブロック５００に続く。ブロック５００は、メモリ・アクセス・リクエストをサービスするための何らなのアクションをとる前に、中央状態マシン３０６が、選択されたコヒーレンシ・メッセージ(例えば、部分的結合応答または完全結合応答)の受信を待つことを示す。従って、ＩＭＣ１８がメモリ・アクセス・リクエストをサービスする責任を持つかどうかを中央状態マシン３０６がその選択されたコヒーレンシ・メッセージから決定するまで、メモリ・アクセス・リクエストはリクエスト・バッファ３００内にバッファされたままである。
【００７７】
選択されたコヒーレンシ・メッセージの受信に応答して、メモリ・アクセス・リクエストがプリフェッチ・リクエストではない場合、中央状態マシン３０６はＭＳＴ３１０の適切なエントリ３１４における履歴ビット・フィールド３２２および３２４を更新する。即ち、中央状態マシン３０６がプリフェッチ・リクエストに関する情報でもってＭＳＴ３１０を「汚染」しないことが望ましい。これは、そのようなリクエストが非常に暫定的であり、かつ低い局所性の基準を示すこともあるためである。
【００７８】
ブロック５０４に示されるように、中央状態マシン３０６は、ＩＭＣ１８がメモリ・リクエストをサービスしなければならないことを、ブロック５００において受信された選択されたコヒーレンシ・メッセージが示すかどうかも決定する。それが否定される場合、ブロック５０６においてプロセスは終了する。しかし、ＩＭＣ１８がリクエストされたデータを供給しなければならないことを、選択されたコヒーレンシ・メッセージが示す場合、プロセスはブロック５１０に進む。ブロック５１０は、中央状態マシン３０６がＭＣキュー３０２をメモリ・アクセス・リクエストに割り振ることを示している。ＩＭＣ１８が究極的にはメモリ・アクセス・リクエストをサービスしなければならないという統計的な確率が低いため、中央状態マシン３０６は、選択されたコヒーレンシ・メッセージの受信に先立ってＭＣキュー３０２をメモリ・アクセス・リクエストに割り振らない。この方法では、ＭＣキュー３０２によって表された限定リソースが、ＩＭＣ１８によってサービスされそうな他のメモリ・アクセス・リクエストにとって使用可能である。
【００７９】
図１６に示されたプロセスはブロック５１０からブロック５１２に進む。ブロック５１２は、中央状態マシン３０６が、必要な場合に、リクエスト・アドレスによって指定されたメモリ行をプリチャージするためにアクティブ低ＲＡＳ信号に表明解除させることを示している。プロセスは、ブロック５１２からページ接続符号Ｆを通して図１５のブロック４７８に進み、上述したブロックに続く。
【００８０】
上述したように、本発明は、メモリ・アクセス待ち時間が選択的なメモリ・ベースのタイミング・スペキュレーション、および／または、行スペキュレーションを通して有効に減少することを可能にする改良されたメモリ・アクセスの方法およびシステムを提供する。メモリ・アクセスの通信待ち時間（ｔＣＯＭ）成分および内部的待ち時間（ｔＩＮＴ ）成分の一方または両方を少なくすることによって、平均メモリ・アクセス・タイムが減少し、システム・パフォーマンスが改善される。
【００８１】
好適な実施例を参照して本発明を詳しく説明したが、本発明の真意および範囲から逸脱することなく形式および細部に関する種々の変更を行うことが可能であることは当業者には明らかであろう。例えば、ＤＲＡＭが使用される特定の実施例に関して本発明を説明したが、本発明は、ＮＶＲＡＭ、ＥＤＲＡＭ、等のような他のメモリ・テクノロジに対しても、等しく適用可能である。
【図面の簡単な説明】
【００８２】
【図１】本発明の一実施例によるデータ処理システムの高レベル・ブロック図である。
【図２】図１のデータ処理システムにおいて使用可能なデュアル・インライン・メモリ・モジュール（ＤＩＭＭ）の高レベル・ブロック図である。
【図３】本発明の一実施例によるシステム・メモリ・コントローラのメモリ・スペキュレーション・テーブル（ＭＳＴ）の高レベル・ブロック図である。
【図４】図３のＭＳＴにおける行スペキュレーション・フィールドの例示的実施例を更に詳細に示す図である。
【図５】本発明の一実施例によるメモリ・ベースのタイミング・スペキュレーションのプロセスに関する高レベルの論理的フローチャートを示す図である。
【図６】本発明の一実施例によるメモリ・ベースの行スペキュレーションのプロセスに関する高レベルの論理的フローチャートを示す図である。
【図７】本発明によるメモリ・ベースのタイミング・スペキュレーションおよび行スペキュレーションのタイミングを示す図である。
【図８】本発明に従って複数のメモリ・スペキュレーション・テーブルを有する統合メモリ・コントローラの代替的な実施例の高レベル・ブロック図である。
【図９】本発明の一実施例に従ってスヌープ応答の例示的フォーマットを示すブロック図である。
【図１０】本発明に従ってＩＭＣの一実施例を示す詳細なブロック図である。
【図１１】図１０に示されたＭＳＴの詳細なブロック図である。
【図１２】本発明の一実施例に従って例示的なＲＡＳ状態マシンの状態図を示す図である。
【図１３】システム・メモリに対するメモリ・アクセス待ち時間を最適化するために中央状態マシンがメモリ・ベースのタイミング・スペキュレーションおよび行スペキュレーションを結合して使用するプロセスの高レベルの論理的フローチャートを示す図である。
【図１４】システム・メモリに対するメモリ・アクセス待ち時間を最適化するために中央状態マシンがメモリ・ベースのタイミング・スペキュレーションおよび行スペキュレーションを結合して使用するプロセスの高レベルの論理的フローチャートを示す図である。
【図１５】システム・メモリに対するメモリ・アクセス待ち時間を最適化するために中央状態マシンがメモリ・ベースのタイミング・スペキュレーションおよび行スペキュレーションを結合して使用するプロセスの高レベルの論理的フローチャートを示す図である。
【図１６】システム・メモリに対するメモリ・アクセス待ち時間を最適化するために中央状態マシンがメモリ・ベースのタイミング・スペキュレーションおよび行スペキュレーションを結合して使用するプロセスの高レベルの論理的フローチャートを示す図である。
【図１】
2005174342.tif 000003
【図２】
2005174342.tif 000004
【図３】
2005174342.tif 000005
【図４】
2005174342.tif 000006
【図５】
2005174342.tif 000007
【図６】
2005174342.tif 000008
【図７】
2005174342.tif 000009
【図８】
2005174342.tif 000010
【図９】
2005174342.tif 000011
【図１０】
2005174342.tif 000012
【図１１】
2005174342.tif 000013
【図１２】
2005174342.tif 000014
【図１３】
2005174342.tif 000015
【図１４】
2005174342.tif 000016
【図１５】
2005174342.tif 000017
【図１６】
2005174342.tif 000018