【課題を解決するための手段】
【0008】
上述の問題を解決するため、本明細書ではメッセージ・ベースのメモリ・アクセス装置とそのアクセス方法を提供する。本発明の目的は、CPUメモリ・チャネルの有効利用率を高めることと、メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法を提供することである。
【0009】
本発明は、対応する動作を実施するようにメモリ・システムに指示するためのCPUにより生成されたメッセージ・ベースのメモリ・アクセス命令を送信するように構成されたメッセージ・ベースのコマンド・バスと、CPU要求をメッセージ・パケットにパッケージ化し当該パケットを記憶モジュールに送信し、当該記憶モジュールが返却したメッセージ・パケットを解析し、データを当該CPUに返すように構成されたメッセージ・ベースのメモリ・コントローラと、要求メッセージ・パケットと応答メッセージ・パケットを送信するように構成されたメッセージ・チャネルと、当該メッセージ・ベースのメモリ・コントローラから要求パケットを受信し、対応する要求を処理するように構成された当該記憶モジュールと、を備えたメッセージ・ベースのメモリ・アクセス装置を開示する。
【0010】
当該メッセージ・ベースのコマンド・バスはさらに、要求のメモリ・アクセス長を指定するように構成され、当該メモリ・アクセス長はレジスタの長さより大きいかまたは小さく、要求データは、キャッシュを通過することなく、キャッシュ、CPUアドレス可能バッファ、またはレジスタもしくはレジスタ・グループに返却され、要求に、当該メッセージ・ベースのメモリ・コントローラおよびバッファ・スケジューラにおけるメモリ・アクセス・コマンドのスケジューリングを指示するためのデータ・アクセス優先度に関する情報を付加して、メモリ・システムにスケジューリングの基礎をもたらす。
【0011】
当該メッセージ・ベースのメモリ・コントローラはさらに、CPUとメッセージ・ベースのメモリ・コントローラの間で要求を交換するように構成されたメモリ・アクセス要求インタフェースと、要求状態テーブルを備えた読取り/書込み要求予約局であって、当該要求状態テーブルは、新たに受信した要求ごとにテーブル・エントリを割り当てるように構成された読取り要求状態テーブルと書込み要求状態テーブルから構成され、バッファ・スケジューラが要求に応答するときまたはメッセージ・ベースのコントローラが要求応答を当該CPUに送信するときに、当該要求状態テーブル内の対応するテーブル・エントリを更新または削除する必要がある読取り/書込み要求予約局と、読取り/書込み要求予約局の状態に従って、当該メモリ・アクセス要求インタフェースから受信したメモリ・アクセス要求が読取り要求状態テーブルまたは書込み要求状態テーブルに挿入されるかどうかを制御するように構成された読取り/書込み要求ディストリビュータであって、書込み要求を受信した場合には、メモリに書き込むべきデータを書込みデータ・バッファに一時的に保存する必要がある読取り/書込み要求ディストリビュータと、当該書込み要求のデータを一時的に保存するように構成された当該書込みデータ・バッファと、当該読取り要求のデータを一時的に保存するように構成された読取りデータ・バッファと、を備える。
【0012】
当該メッセージ・ベースのメモリ・コントローラはさらに、一方では、要求の長さや時限遅延のような要求状態テーブルにおける要求属性に従って複数の小型要求を生成するように構成され、他方では、要求をスケジュールし、読取り要求状態テーブルおよび書込み要求状態テーブルにおける未処理の要求から処理すべき次の要求を選択し、選択した要求をメッセージ・パケット化器に送信するように構成された要求生成スケジュール・コンポーネントと、1つまたは複数の要求をメッセージ・チャネルのメッセージ・パケットにパッケージ化し、メッセージ・チャネル・インタフェースを通じて当該メッセージ・パケットをバッファ・スケジューラに送信するように構成されたメッセージ・パケット化器と、1つまたは複数の要求をメッセージ・パケットから抽出して、夫々の対応する要求データを解析するように構成されたメッセージ・アンパッカと、当該要求と当該メッセージ・アンパッカの解析により得られた対応するデータに従って、当該読取り/書込み要求予約局の要求の状態テーブルを更新し、当該データを読取りデータ・バッファに一時的に保存するように構成された要求状態更新ユニットと、要求応答をCPUに送信するように構成された要求応答コントローラと、メッセージ・ベースのメモリ・コントローラのパラメータを構成するかまたは要求の属性を指定するように構成されたコントローラ構成インタフェースであって、要求またはメモリ・アクセス・アドレスを構成した後に、読取り要求状態テーブルと書込み要求状態テーブルの対応する属性値が更新されるコントローラ構成インタフェースと、メッセージ・パケットをバッファ・スケジューラにより送信するように構成されたメッセージ・チャネル・インタフェースであって、メッセージ・チャネルの様々な物理的実装に基づいて、当該メッセージ・チャネル・インタフェースが対応するインタフェース・タイプを有するメッセージ・チャネル・インタフェースと、を備える。
【0013】
読取り/書込み要求予約局では、読取り要求状態テーブルの項目番号は当該要求状態テーブルの要求のシーケンス番号に対応し、当該項目番号は、処理する要求を一意に指定するためにメッセージ・ベースのメモリ・コントローラおよびバッファ・スケジューラのメッセージ・パケットにおいて使用され、要求アドレスはアクセスされるメモリのベース・アドレスであり、時限遅延は要求をCPUに返却するための時間を指定し、主にコントローラ構成インタフェースを介して設定され、返却粒度はメッセージ・ベースのメモリ・コントローラから毎回CPUに返されるデータの長さから構成され、データ状態は記憶モジュールから取得された要求データおよび取得されなかった要求データを指定し、データ位置は読取りデータ・バッファにおける取得された要求データの位置を指定する。
【0014】
要求応答コントローラはさらに、読取り/書込み要求予約局における要求の状態を問い合わせ、CPU要求がバッファ・スケジューラと記憶モジュールにより処理された後に要求応答をCPUに送信し、読取り要求が処理された場合には、読取りデータ・バッファの対応する要求データを送信するように構成される。
【0015】
メッセージ・ベースのメモリ・コントローラと記憶モジュールの間のやりとりはメッセージ・パケットに基づいて完了し、かかるメッセージ・パケットの各々は、1つまたは複数のメモリ・アクセス要求または応答に関する情報を含み、当該メッセージ・パケットにおける要求には同期タイミング・シーケンスの制限がないが要求を返却する最大遅延に関する情報を有する。
【0016】
メッセージ・ベースのメモリ・コントローラ構成インタフェース・ユニットは、特殊コマンド・アドレス空間をメッセージ・モード・メモリ・コントローラに提供し、当該コントローラの属性を構成できるようにし、メモリ・アクセス要求の属性を設定できるようにし、対応するメモリ・アクセス・コマンドを発行する。
【0017】
メッセージ・ベースのメモリ・アクセス・コントローラはさらに、当該メッセージ・ベースのメモリ・アクセス・コントローラとコマンド・アドレス空間が、対応するメモリ・アクセス・コマンドを用いることによって、当該メモリ・アクセス・システムがデータをレジスタまたはアドレス可能高速バッファに定期的にプッシュすること、および、単純な算術論理動作と移動動作がメモリ・システムにおいて実施されることをサポートするように構成される。メモリ・アクセスの原子性が設定されるか、または、当該動作がバッチで行われる。
読取り/書込み要求予約局は読取り要求状態テーブルと書込み要求状態テーブルを提供し、処理すべき各要求は読取り要求状態テーブルまたは書込み要求状態テーブルにおいて対応するテーブル・エントリを有し、各テーブル・エントリは要求のアドレスと長さだけでなく、時限返却遅延、返却粒度、データ状態、およびデータ位置も含み、メッセージ・パケットにおいて、各要求は対応する要求状態テーブル内の一意な項目番号によって決定される。
メッセージ・ベースのメモリ・コントローラは、複数の要求を1つのメッセージ・パケットに含めることを可能とするだけでなく、各要求を分割して記憶モジュールに送信すべき1つまたは複数のメッセージ・パケットに含めることを可能とする。当該メッセージ・ベースのメモリ・コントローラはまた、当該記憶モジュールが1つまたは複数のメッセージ・パケットを使用して1つの要求を処理できるようにする。当該メッセージ・ベースのメモリ・コントローラに対して、複数の要求または1つの要求の複数のメッセージ・パケットはばらばらに返される。
【0018】
メッセージ・ベースのメモリ・コントローラはさらに、複数の記憶モジュールのメッセージ・パケットが1つの読取り要求に対する応答に使用される場合には、当該要求の対応する読取り要求状態テーブルにおけるデータ状態が返却データと未返却データを特定し、完全に返却されていないデータがアドレス可能バッファまたはアドレス不可能バッファに保存され、当該データが当該アドレス不可能バッファに一時的に保存される場合には、要求データが完全に返却された後にのみ、CPUの読取り要求が応答され当該要求データがCPUに送信され、当該データが当該アドレス可能バッファに一時的に保存される場合には、CPUは返却されたデータ部分を読み取るという状況において使用される。
【0019】
メッセージ・パケットには、メモリ・アクセス読取り/書込み要求パケット、特殊コマンド要求パケット、メモリ状態問合せパケット、および/または、応答パケットが含まれる。
【0020】
記憶モジュールのバッファ・スケジューラは、メッセージ・パケットをメッセージ・ベースのメモリ・コントローラにより送信するように構成されたメッセージ・チャネル・インタフェースと、メモリ・アクセス要求に関する情報を受信したメッセージ・パケットから取得するように構成されたメッセージ・アンパッカであって、当該情報は、要求シリアル番号、要求のタイプ、要求意味情報、アドレス、およびデータを含み、当該メッセージ・アンパッカは、当該要求のタイプを決定した後に対応するルールに従ってアンパック動作を実施するメッセージ・アンパッカと、当該メッセージ・アンパッカにより解析されたメモリ・アクセス要求を要求待ち行列に配分するように構成された要求ディストリビュータであって、このスケジューリングは各要求のアクセス・データの意味情報、要求された返却時間、および粒度情報に依存する要求ディストリビュータと、未処理の読取り/書込み要求を保存するように構成され、優先度が異なる待ち行列から構成された読取り/書込み要求待ち行列であって、高優先度待ち行列は、アクセス・データの粒度が小さく要求された返却時間が短い読取り/書込み要求または高優先度とマークされた読取り/書込み要求を保存し、低優先度待ち行列は、アクセス・データの粒度が大きく要求された返却時間が長い読取り/書込み要求または低優先度とマークされた読取り/書込み要求を保存する読取り/書込み要求待ち行列と、未処理の非読取り/書込み要求を保存するように構成された特殊要求待ち行列と、メモリ・アクセス要求を要求待ち行列から取得して当該要求をコマンド生成ユニットに転送し、返却されたメモリ・アクセス・データをデータ・バッファから取得し、当該データをメッセージ・パケット化器に転送するように構成された要求スケジューラと、スケジュールした直後に実行する必要があるメモリ・アクセス要求を取得し、メモリ・チップにアクセスするための特定のコマンドに当該要求を変換し、当該メモリ・チップの状態を必要に応じて当該要求スケジューラにより維持するためのコマンドを発行するように構成されたコマンド生成ユニットと、返却されたデータと対応する要求シリアル番号を要求スケジューラから取得し、応答パケットを生成し、当該パケットをメッセージ・ベースのメモリ・コントローラに送信し戻すように構成されたメッセージ・パケット化器であって、要求スケジューラが生成した返却データに対するマークに従って、当該メッセージ・パケット化器は、複数の要求を1つの応答パケットにパッケージ化して当該メッセージ・ベースのメモリ・コントローラに送信することを可能とするメッセージ・パケット化器と、メモリ・チップへのアクセスに関する返却データを保存するように構成されたデータ・バッファであって、当該データ・バッファから、要求スケジューラが要求データを選択し当該データを当該メッセージ・パケット化器に送信するデータ・バッファと、メモリ・チップにアクセスするためのコマンドをコマンド生成ユニットから受信し、当該コマンドを記憶モジュールのメモリ・チップに送信し、返却データを受信した後に、当該データをデータ・バッファに保存するように構成されたメモリ・チップ・インタフェースと、を備える。
【0021】
記憶モジュールのバッファ・スケジューラはさらに、必要に応じて異なる時間間隔でパルスを出力し、必要に応じて要求スケジューラと状態維持ユニットに対するクロック・トリガを有効にするように構成されたタイマと、当該バッファ・スケジューラに接続された各メモリ・チップの状態を維持し充電コマンドおよび/またはリフレッシュ・コマンドを発行するように構成された状態維持ユニットと、を備える。
【0022】
当該要求スケジューラはさらに、要求の状況に従って高優先度待ち行列におけるメモリ・アクセス要求に対する動作を完了し、当該要求スケジューラは複数の要求に結合マークを付し、当該要求の全ての返却データがデータ・バッファに保存されるときには、当該データをメッセージ・パケット化器に転送して1つの応答パケットにパッケージ化し、低優先度待ち行列におけるメモリ・アクセスのデータ量が大きい要求に対しては、当該要求スケジューラは当該要求を幾つかのステップに分割し各ステップの処理結果を当該メッセージ・パケット化器に転送して1つの応答パケットにパッケージ化して復帰するように構成される。
【0023】
当該記憶モジュールはさらに、メッセージ・ベースのメモリ・コントローラからのメモリ・アクセス要求に対しては、当該記憶モジュールが当該要求を複数のステップで処理し、複数の応答パケットを返し、当該メッセージ・ベースのメモリ・コントローラからの複数のメモリ・アクセス要求に対しては、当該記憶モジュールが当該要求の全てを処理し1つの応答パケットを用いて全ての要求に応答し、当該記憶モジュールが、当該記憶モジュール上の要求の優先度、要求の意味情報、および当該記憶モジュールのメモリ・チップの状態に従って、当該メッセージ・ベースのメモリ・コントローラからのメモリ・アクセス要求を実行する順序をスケジュールするという状況で使用される。
【0024】
当該記憶モジュールのメモリ・ユニットは、同期メモリ・チップおよび/または同期ネットワーク接続に基づくメモリ・チップである。
【0025】
当該バッファ・スケジューラによりサポートされる特別なメッセージ・ベースのメモリ・アクセス命令は、タイミング・プッシュ命令、当該メモリ・システムにおける単純な算術論理動作および移動命令、および圧縮記憶を含む。
【0026】
当該メッセージ・チャネルは、メッセージ・パケット内のメッセージをパラレル・バス、ポイント・ツー・ポイント・シリアル・バス、または使用する他のトポロジ構造を有するネットワークで送信するように構成される。
【0027】
本発明はさらにメッセージ・ベースのメモリ・アクセス方法を開示する。当該方法は、以下のステップを含む。
【0028】
ステップ1001では、CPUがメモリ・アクセス要求を発行する。CPUは当該要求のアクセス・データの長さ、優先度、および意味情報を指定する。当該要求は、読取り/書込み要求以外の他の任意の複雑なメモリ・アクセス要求である。
【0029】
ステップ1002では、当該要求がメッセージ・ベースのメモリ・コントローラの構成に関する情報を含むかどうかを判定する。含む場合にはステップ1003に進み、含まない場合にはステップ1004に進む。
【0030】
ステップ1003では、当該要求が当該メッセージ・ベースのメモリ・コントローラの構成に関する情報を含む場合には、当該メッセージ・ベースのメモリ・コントローラが当該構成情報に従って適切な調整を実施し、次いで当該要求をスケジュールし処理する。
【0031】
ステップ1004では、要求に従って、当該メッセージ・ベースのメモリ・コントローラが当該CPUからのメモリ・アクセス要求をメッセージ・パケットにパッケージ化し、メッセージ・チャネルを介して当該メッセージ・パケットを対応する記憶モジュールのバッファ・スケジューラに送信し、読取り/書込み要求予約局に記録を作成する。当該メッセージ・パケットは複数の要求を含む。
【0032】
ステップ1005では、記憶モジュールのバッファ・スケジューラが送信されたメッセージ・パケットを解析して、CPUのメモリ・アクセス要求に対して動作を実施する。
【0033】
ステップ1006では、CPUのメモリ・アクセス要求を処理した後、当該要求に関する記録が当該メッセージ・ベースのメモリ・コントローラの読取り/書込み要求予約局に存在する場合には、当該レコードをクリアする。ステップ1006の前に、以下のステップをさらに含める。
【0034】
ステップ1007では、CPUのメモリ・アクセス要求が読取り要求である場合には、読取りデータを応答パケットにパッケージ化しメッセージ・チャネルを介して当該パケットをメッセージ・ベースのメモリ・コントローラに送信する。応答パケットのパッケージ化プロセス中は、要求に基づいて、1つの要求の返却データが複数の応答パケットにパッケージ化され、複数の要求の返却データが1つの応答パケットにパッケージ化される。
【0035】
ステップ1008では、要求に従って、当該メッセージ・ベースのメモリ・コントローラが応答パケットを受信し解析し、当該応答パケット内のデータを当該メッセージ・ベースのメモリ・コントローラのキャッシュまたは内部アドレス可能バッファに保存する。
【0036】
ステップ1009では、メッセージ・ベースのメモリ・コントローラが、CPUに対する応答パケットが全て返却されたかどうかを判定する。返却された場合にはステップ1006に進み、返却されていない場合にはステップ1008に進む。ステップ1005の後、以下のステップをさらに含める。
【0037】
ステップ1010では、バッファ・スケジューラがメッセージ・ベースのメモリ・コントローラにより送信されたメッセージ・パケットを受信し解析し、CPUのメモリ・アクセス要求で適切な要求待ち行列を埋める。
【0038】
ステップ1011では、バッファ・スケジューラの要求スケジューラが要求待ち行列内の複数の要求をスケジュールし、CPUのメモリ・アクセス要求優先度と意味情報に従って要求実行順序を構成する。
【0039】
ステップ1012では、スケジュールされたCPU要求をメモリ粒度基準に従う一連のコマンドに変換し、当該コマンドをメモリ・インタフェースに送信する。
【0040】
ステップ1013では、CPUのメモリ・アクセス要求が複雑なメモリ・アクセス要求であるかどうかを判定する。複雑なメモリ・アクセス要求である場合にはステップ1014に進み、複雑なメモリ・アクセス要求でない場合には、ステップ1016に進む。
【0041】
ステップ1014では、CPUのメモリ・アクセス要求が複雑なメモリ・アクセス要求である場合には、バッファ・スケジューラの処理ロジックが単純に当該メモリにより返却された当該データを処理する。
【0042】
ステップ1015では、複雑なメモリ・アクセス命令を処理した後、要求のタイプに従って、処理データをメモリに書き込むかどうかおよび処理データをCPUに返却するかどうかを判定する。当該処理データをメモリに書き戻す必要がある場合には、メモリ粒度基準に従う一連のコマンドを使用して当該データを当該メモリに書き込み、当該処理データをCPUに返却する必要がある場合には、当該データを応答パケットにパッケージ化して当該パケットをメッセージ・ベースのメモリ・コントローラに送信する。
【0043】
ステップ1016では、CPUのメモリ・アクセス要求が複雑なメモリ・アクセス要求でない場合には、当該要求が書込み要求であるかどうかを判定する。書込み要求である場合にはステップ1006に進み、書込み要求でない場合にはステップ1007に進む。ステップ1004はさらに以下のステップを含む。
【0044】
ステップ1101で、メッセージ・ベースのメモリ・コントローラが、メモリ・アクセス要求インタフェースを通じてCPUにより送信された読取り/書込み要求を受信する。
【0045】
ステップ1102では、読取り/書込み要求ディストリビュータが、要求が読取り要求であるかどうかを判定する。読取り要求である場合にはステップ1104に進み、読取り要求でない場合にはステップ1103に進む。
【0046】
ステップ1103では、受信した要求が書込み要求である場合には、書込み要求状態テーブルに空の項目が存在するかどうかを判定する。存在する場合にはステップ1105に進み、存在しない場合にはステップ1102に進む。
【0047】
ステップ1104では、受信した要求が読取り要求である場合には、読取り要求状態テーブルに空の項目が存在するかどうかを判定する。存在する場合にはステップ1106に進み、存在しない場合にはステップ1102に進む。
【0048】
ステップ1105では、受信した要求が書込み要求であり、空の項目が書込み要求状態テーブルに存在する場合には、当該要求に関するテーブル・エントリを配分し、当該書込み要求内のデータを書込みデータ・バッファに保存する。そうでない場合には、ステップ1102に進む。
【0049】
ステップ1106では、受信した要求が読取り要求であり空の項目が読取り要求状態テーブルに存在する場合には、当該要求に関するテーブル・エントリを配分し、そうでない場合には、ステップ1102に進む。
【0050】
ステップ1107では、要求の受信を停止し、メモリ・アクセス要求インタフェースを介して受信した要求の処理を続ける。
【0051】
当該メッセージ・ベースのメモリ・コントローラによる要求のスケジューリングと処理は以下のステップを含む。
【0052】
ステップ1201では、要求生成スケジュール・コンポーネントが読取り/書込み要求状態テーブル内のテーブル・エントリをスキャンする。
【0053】
ステップ1202では、要求生成スケジュール・コンポーネントが、未処理であり読取り/書込み要求状態テーブルで処理する必要がある要求が存在するかどうかを問い合わせる。存在する場合には、ステップ1203に進み、存在しない場合にはステップ1201に進む。
【0054】
ステップ1203では、未処理の要求がある場合には、要求生成スケジューリング・コンポーネントが、対応する要求状態テーブルにおける要求属性に従って大型の要求を複数の小型要求に分割し、処理すべき次の要求をスケジューリング・アルゴリズムに従って選択する。
【0055】
ステップ1204では、処理すべき要求が読取り要求であるかどうかを判定する。読取り要求である場合にはステップ1206に進み、読取り要求でない場合にはステップ1205に進む。
【0056】
ステップ1205では、処理すべき要求が書込み要求である場合には、対応する要求データを書込みデータ・バッファから取得し、そうでない場合には、ステップ1206に進む。ステップ1206では、メッセージ・パケット化器が1つまたは複数の要求をメッセージ・パケットにパッケージ化する。
【0057】
ステップ1207では、パッケージ化したメッセージをメッセージ・ベースのメモリ・コントローラとバッファ・スケジューラの間のメッセージ・チャネル・インタフェースに送信して、次の処理ラウンドのためにステップ1201に進む。ステップ1013はさらに以下のステップを含む。
【0058】
ステップ1301では、バッファ・スケジューラからメッセージ・ベースのメモリ・コントローラに送信された応答パケットのヘッダ情報を解析して、以下で1つずつ応答を解析するために当該ヘッダ内の応答の数と各応答の長さを取得する。
【0059】
ステップ1302では、解析する必要がある次の応答が存在するかどうかを判定する。存在する場合には、ステップ1303に進んで当該次の応答を解析し、存在しない場合には、応答パケットの解析が終了する。
【0060】
ステップ1303では、当該次の応答のタイプと要求識別子を解析する。以下のステップで要求のタイプに従って応答を様々な方法で処理する。
【0061】
ステップ1304では、応答がメモリ・アクセス読取り要求応答であるかどうかを判定する。メモリ・アクセス読取り要求応答である場合には、ステップ
1305に進んでさらに解析を行い、メモリ・アクセス読取り要求応答でない場合には、当該応答はメモリ状態問合せ要求応答またはメモリ・アクセス書込み要求応答であり、ステップ1306に進んで対応する状態情報を取得する。
【0062】
ステップ1305では、ヘッダにより指定された応答の長さに従って当該応答をアドレス指定し、当該返却データをメモリ・アクセス読取り要求応答から取得する。
【0063】
ステップ1306では、ヘッダにより指定された応答の長さに従って応答をアドレス指定する。応答が状態問合せ要求応答である場合には、返却された状態値を当該応答から取得し、応答がメモリ・アクセス書込み要求応答である場合には、書込み要求状態テーブル内の要求属性を更新する。次いで応答の解析が終了し、ステップ1302に戻る。
【0064】
ステップ1307では、当該パケットが副次的応答を含むかどうかに従って、読取り要求のメモリ・アクセス・データがバッファ・スケジューラにより複数の応答に分割された後に返却されるかどうかを判定する。当該データが複数の応答に分割されない場合には、ステップ1309に進んでメモリ・アクセス読取り要求を処理し、当該データが分割された場合には、当該パケットを解析して取得した副次的応答の数と現在の副次的応答の識別子を取得し、ステップ1308に進む。
【0065】
ステップ1308では、現在の応答がメモリ・アクセス読取り要求の最後の副次的応答であるかどうかを、現在の副次的応答の識別子が副次的応答の数に等しいかどうかに従って判定する。等しい場合にはステップ1309に進んで現在のメモリ・アクセス読取り要求を処理し、等しくない場合には、現在のメモリ・アクセス読取り要求はまだ処理されておらず、対応するデータ・バッファ内の現在の副次的応答の返却データ、更新されたデータ状態、データ位置、および他の情報を読取り要求状態テーブルに書き込み、ステップ1302に戻る。
【0066】
ステップ1309では、現在のメモリ・アクセス読取り要求を処理し、メッセージ・ベースのメモリ・コントローラからのデータをCPUに送信し戻す準備を行い、ステップ1302に戻る。ステップ1006はさらに以下のステップを含む。
【0067】
ステップ1401では、要求応答コントローラが読取り要求状態テーブルと書込み要求状態テーブルをスキャンする。
【0068】
ステップ1402では、処理された要求が書込み要求状態テーブルに存在するかどうかを問い合わせる。存在する場合にはステップ1404に進み、存在しない場合にはステップ1403に進む。
【0069】
ステップ1403では、処理された要求項目が書込み要求状態テーブルに存在しない場合には、処理された要求項目が読取り要求状態テーブルに存在するかどうかを問い合わせる。存在する場合にはステップ1404に進み、存在しない場合にはステップ1402に進む。
【0070】
ステップ1404では、処理された要求が書込み要求状態テーブルまたは読取り要求状態テーブルに存在する場合には、当該処理された要求が要求属性の要件を満たすかどうかを判定する。満たす場合にはステップ1405に進み、満たさない場合にはステップ1402に進む。
【0071】
ステップ1405では、全ての属性の要件を満たす要求の応答を送信する。当該応答のデータ内容も返却粒度および当該要求の他の属性と整合する必要がある。ステップ1011はさらに以下のステップを含む。
【0072】
ステップ1501では、タイマが、設定条件に従って、当該要求スケジューラをトリガして新たな要求スケジューリング・プロセスを開始する準備を行わせる。
【0073】
ステップ1502では、トリガ条件はチップ状態維持が要求されることであるかどうかをチェックする。そうである場合にはステップ1503に進み、そうでない場合にはステップ1504に進む。
【0074】
ステップ1503では、タイマのトリガ条件はチップ状態維持が要求されることである。チップ状態維持コマンドを発行し、ステップ1509に進む。
【0075】
ステップ1504では、トリガ条件は特殊要求待ち行列を処理する必要があることであるかどうかをチェックする。そうである場合にはステップ1505に進み、そうでない場合にはステップ1506に進む。
【0076】
ステップ1505では、トリガ条件は特殊要求待ち行列を処理する必要があることである。当該特殊要求待ち行列における要求を読み取り、当該要求を一連の読書き動作に変換する。当該要求を処理した後に、当該待ち行列における要求状態を修正するかまたは要求状態をクリアする。ステップ1509に進む。
【0077】
ステップ1506では、トリガ条件は最高優先度の読取り/書込み要求待ち行列を処理する必要があることであるかどうかをチェックする。そうである場合にはステップ1507に進み、そうでない場合にはステップ1508に進む。
【0078】
ステップ1507では、トリガ条件は最高優先度の読取り/書込み要求待ち行列を処理する必要があることである。当該待ち行列内の全ての要求をクリアし、全ての読取り要求に結合マークを付す。ステップ1509に進む。
【0079】
ステップ1508では、トリガ条件は、最高優先度を有さない読取り/書込み要求待ち行列を処理する必要があることである。当該読取り/書込み要求の最新状態に従って、対応する優先度を有する要求待ち行列における要求にアクセスし、必要な読書き動作を生成する。当該要求を処理した後、当該待ち行列における要求状態を修正するかまたは当該要求状態をクリアする。ステップ1509に進む。
【0080】
ステップ1509で、要求スケジューリング・プロセスが終了する。タイマによる次のスケジューリング・プロセスのトリガを待機する。