(57)【特許請求の範囲】
【請求項１】
メッセージ・ベースのメモリ・アクセス要求を送信するように構成されたメッセージ・ベースのコマンド・バスと、
前記メッセージ・ベースのコマンド・バスから送信された前記メッセージ・ベースのメモリ・アクセス要求を受信し、要求状態テーブル内の前記メッセージ・ベースのメモリ・アクセス要求に対して属性を設定し、前記設定された属性に従って、前記メッセージ・ベースのメモリ・アクセス要求から、複数の分割要求を生成し、前記複数の分割要求を要求パケットにパッケージ化し前記要求パケットを記憶モジュールに送信し、前記記憶モジュールにより返却された応答パケットを解析し前記応答パケットに含まれる返却データを取得するために前記応答パケットをアンパックするように構成されたメッセージ・ベースのメモリ・コントローラと、
要求パケットを前記記憶モジュールに送信し、応答パケットを前記メッセージ・ベースのメモリ・コントローラに送信するように構成されたメッセージ・チャネルと、
バッファ・スケジューラを備え、前記要求パケットを前記メッセージ・ベースのメモリ・コントローラから受信し、前記メモリ・アクセス要求を取得するために前記要求パケットをアンパックし、前記メモリ・アクセス要求の意味情報に従って前記メモリ・アクセス要求の実行シーケンスをスケジュールするように構成され、応答パケットを生成し、前記応答パケットを前記メッセージ・ベースのメモリ・コントローラに送信するように更に構成された前記記憶モジュールと、
を備える、メッセージ・ベースのメモリ・アクセス装置。
【請求項２】
前記メモリ・アクセス要求の前記意味情報は、前記メッセージ・ベースのメモリ・コントローラおよび前記バッファ・スケジューラにおけるメモリ・アクセス・コマンドのスケジューリングを指示するためのデータ・アクセス優先度を含む、請求項１に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項３】
前記メッセージ・ベースのメモリ・コントローラはさらに、
ＣＰＵと前記メッセージ・ベースのメモリ・コントローラの間で要求を交換するように構成されたメモリ・アクセス要求インタフェースと、
要求状態テーブルを備えた読取り／書込み要求予約局であって、前記要求状態テーブルは、新たに受信した要求ごとにテーブル・エントリを割り当てるように構成された読取り要求状態テーブルと書込み要求状態テーブルから構成され、バッファ・スケジューラが要求に応答するときまたはメッセージ・ベースのコントローラが要求応答を当該ＣＰＵに送信するときに、当該要求状態テーブル内の対応するテーブル・エントリを更新または削除する必要がある、読取り／書込み要求予約局と、
前記読取り／書込み要求予約局の状態に従って、前記メモリ・アクセス要求インタフェースから受信したメモリ・アクセス要求が前記読取り要求状態テーブルまたは前記書込み要求状態テーブルに挿入されるかどうかを制御するように構成された読取り／書込み要求ディストリビュータであって、書込み要求を受信した場合には、メモリに書き込むべきデータを書込みデータ・バッファに一時的に保存する必要がある、読取り／書込み要求ディストリビュータと、
前記書込み要求のデータを一時的に保存するように構成された前記書込みデータ・バッファと、
前記読取り要求のデータを一時的に保存するように構成された読取りデータ・バッファと、
を備える、請求項１または２に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項４】
前記メッセージ・ベースのメモリ・コントローラはさらに、
要求の長さや時限遅延を含む前記要求状態テーブルにおける要求属性に従って複数の要求を生成するように構成され、更に、要求をスケジュールし、処理すべき次の要求を前記読取り要求状態テーブルおよび前記書込み要求状態テーブルにおける未処理の要求から選択し、選択した要求をメッセージ・パケット化器に送信するように構成された要求生成スケジュール・コンポーネントと、
１つまたは複数の要求を前記メッセージ・チャネルのメッセージ・パケットにパッケージ化し、メッセージ・チャネル・インタフェースを介して前記メッセージ・パケットを前記バッファ・スケジューラに送信するように構成された前記メッセージ・パケット化器と、
１つまたは複数の要求をメッセージ・パケットから抽出し、各要求の対応するデータ内容を解析するように構成されたメッセージ・アンパッカと、
各要求に従って、前記読取り／書込み要求予約局の要求状態テーブルを更新し、前記メッセージ・アンパッカによって解析された前記対応するデータコンテンツを前記読取りデータ・バッファに一時的に保存するように構成された要求状態更新ユニットと、
要求応答を前記ＣＰＵに送信するように構成された要求応答コントローラと、
前記メッセージ・ベースのメモリ・コントローラのパラメータを構成し、または、前記メモリ・アクセス要求インタフェースから送信された要求の属性を指定するように構成されたコントローラ構成インタフェースであって、前記読取り要求状態テーブルと前記書込み要求状態テーブルの前記属性の対応する値が更新される、コントローラ構成インタフェースと、
メッセージ・パケットをバッファ・スケジューラで送信するように構成されたメッセージ・チャネル・インタフェースであって、メッセージ・チャネルの様々な物理的実装に基づいて、前記メッセージ・チャネル・インタフェースは対応するインタフェース・タイプを有する、メッセージ・チャネル・インタフェースと、
を備える、請求項３に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項５】
前記読取り／書込み要求予約局において、前記読取り要求状態テーブルは、前記要求状態テーブルの要求のシーケンス番号に対応する前記読取り要求状態テーブルの項目番号の前記属性を含み、前記項目番号は、処理する要求を一意に指定するために前記メッセージ・ベースのメモリ・コントローラおよび前記バッファ・スケジューラのメッセージ・パケットにおいて使用され、要求アドレスは、アクセスされる前記メモリのベース・アドレスであり、時限遅延は、前記要求を前記ＣＰＵに返却するための時間を指定し、コントローラ構成インタフェースにより設定され、返却粒度は、前記メッセージ・ベースのメモリ・コントローラから毎回前記ＣＰＵに返されるデータの長さから構成され、データ状態は、前記記憶モジュールから取得された要求データと取得されなかった要求データを指定し、データ位置は、前記読取りデータ・バッファにおける前記読取り要求の前記データの位置を指定する、請求項３または４に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項６】
要求応答コントローラはさらに、ＣＰＵ要求が前記バッファ・スケジューラと前記記憶モジュールにより処理された後、前記読取り／書込み要求予約局における要求の状態を問い合わせ、要求応答を前記ＣＰＵに送信し、読取り要求が処理された場合には、前記読取りデータ・バッファの前記対応する要求データを送信するように構成された、請求項３または４に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項７】
前記メッセージ・パケットの各々は１つまたは複数のメモリ・アクセス要求または応答に関する情報を含み、前記メッセージ・パケットにおける前記メモリ・アクセス要求の各々には同期タイミング・シーケンスの制限がないが前記メモリ・アクセス要求を返却する最大遅延に関する情報を有し、
コントローラ構成インタフェースは特殊コマンド・アドレス空間を前記メッセージ・ベースのメモリ・コントローラに提供し、前記コントローラの属性の構成を可能とし、メモリ・アクセス要求の属性の設定を可能とし、対応するメモリ・アクセス・コマンドを発行する、
請求項４乃至６の何れか１項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項８】
前記メッセージ・ベースのメモリ・アクセス・コントローラは、対応するメモリ・アクセス・コマンドを用いることによって、メモリ・アクセス・システムがデータをレジスタまたはアドレス可能高速バッファに定期的にプッシュすること、および、算術論理動作と移動動作がメモリ・システムにおいて実施されることをサポートするように、特殊コマンド・アドレス空間を提供し、メモリ・アクセスの原子性が設定され、または前記算術論理動作および前記移動動作はバッチで行われ、
読取り／書込み要求予約局は読取り要求状態テーブルと書込み要求状態テーブルを提供し、処理すべき各要求は前記読取り要求状態テーブルまたは前記書込み要求状態テーブルにおいて対応するテーブル・エントリを有し、各テーブル・エントリは前記要求のアドレスと長さだけでなく時限返却遅延、返却粒度、データ状態、およびデータ位置も含み、メッセージ・パケットにおいて、各要求は前記対応する要求状態テーブルにおける一意な項目番号により決定され、
前記メッセージ・ベースのメモリ・コントローラは、複数の要求を１つのメッセージ・パケットに含めることを可能とするだけでなく、各要求を分割して、前記記憶モジュールに送信すべき１つまたは複数のメッセージ・パケットに含めることも可能とし、前記メッセージ・ベースのメモリ・コントローラはまた、前記記憶モジュールが１つまたは複数のメッセージ・パケットを使用して１つの要求を処理できるようにし、
前記メッセージ・ベースのメモリ・コントローラに対して、複数の要求または１つの要求の複数のメッセージ・パケットはばらばらに返される、
請求項３乃至７の何れか１項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項９】
前記メッセージ・ベースのメモリ・コントローラはさらに、
複数の記憶モジュールのメッセージ・パケットが１つの読取り要求に対する応答に使用される場合には、前記要求の前記対応する読取り要求状態テーブルにおけるデータ状態が返却データと未返却データを特定し、完全に返却されていないデータがアドレス可能バッファまたはアドレス不可能バッファに保存され、前記データが前記アドレス不可能バッファに一時的に保存される場合には、要求データが完全に返却された後にのみ、前記ＣＰＵの前記読取り要求が応答され、前記要求データが前記ＣＰＵに送信され、前記データが前記アドレス可能バッファに一時的に保存される場合には、前記ＣＰＵは返却されたデータ部分を読み取る状況において使用される、請求項３乃至７の何れか１項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項１０】
前記メッセージ・パケットのタイプは、メモリ・アクセス読取り／書込み要求パケット、特殊コマンド要求パケット、メモリ状態問合せパケット、および／または応答パケットを含む、請求項７乃至９の何れか１項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項１１】
前記記憶モジュールの前記バッファ・スケジューラは、
メッセージ・パケットを前記メッセージ・ベースのメモリ・コントローラで送信するように構成されたメッセージ・チャネル・インタフェースと、
メモリ・アクセス要求に関する情報を受信したメッセージ・パケットから取得するように構成されたメッセージ・アンパッカであって、前記情報は要求のシリアル番号、要求のタイプ、要求の意味情報、アドレス、およびデータを含み、前記メモリ・アクセス要求に関する前記情報に基づいて前記要求のタイプを決定した後に、前記メッセージ・アンパッカが前記対応するルールに従ってアンパック動作を実施するメッセージ・アンパッカと、
前記メッセージ・アンパッカが解析したメモリ・アクセス要求を要求待ち行列に配分するように構成された要求ディストリビュータであって、スケジューリングは、各要求のアクセス・データの意味情報、要求された返却時間、および粒度情報に依存する、要求ディストリビュータと、
未処理の読取り／書込み要求を保存するように構成された読取り／書込み要求待ち行列であって、前記未処理の読取り／書込み要求は優先度が異なる待ち行列から構成され、高優先度待ち行列は、アクセス・データの粒度が小さく要求された返却時間が短い読取り／書込み要求または高優先度とマークされた読取り／書込み要求を保存し、低優先度待ち行列は、アクセス・データの粒度が大きく要求された返却時間が長い読取り／書込み要求または低優先度とマークされた読取り／書込み要求を保存する読取り／書込み要求待ち行列と、
未処理の非読取り／書込み要求を保存するように構成された特殊要求待ち行列と、
メモリ・アクセス要求を要求待ち行列から取得し、前記要求をコマンド生成ユニットに転送し、返却されたメモリ・アクセス・データをデータ・バッファから取得し、前記データをメッセージ・パケット化器に転送するように構成された要求スケジューラと、
スケジュールした後に実行する必要があるメモリ・アクセス要求を取得し、前記メモリ・アクセス要求をメモリ・チップにアクセスするための特定のコマンドに変換し、前記メモリ・チップの状態を必要に応じて前記要求スケジューラにより維持するためのコマンドを発行するように構成された前記コマンド生成ユニットと、
返却されたデータと前記対応する要求シリアル番号を前記要求スケジューラから取得し、応答パケットを生成し、前記パケットを前記メッセージ・ベースのメモリ・コントローラに送信し戻すように構成されたメッセージ・パケット化器であって、前記要求スケジューラが生成した返却データに対するマークに従って、前記メッセージ・パケット化器が、複数の要求を１つの応答パケットにパッケージ化し前記メッセージ・ベースのメモリ・コントローラに送信できるようにする、メッセージ・パケット化器と、
メモリ・チップへのアクセスに関する返却データを保存するように構成されたデータ・バッファであって、前記返却データから、前記要求スケジューラが要求データを選択し、前記データを前記メッセージ・パケット化器に送信する、データ・バッファと、
メモリ・チップにアクセスするためのコマンドを前記コマンド生成ユニットから受信し、前記コマンドを前記記憶モジュールの前記メモリ・チップに送信し、返却データを受信した後に、前記データを前記データ・バッファに保存するように構成されたメモリ・チップ・インタフェースと、
を備える、請求項１乃至１０の何れか１項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項１２】
前記記憶モジュールの前記バッファ・スケジューラはさらに、
必要に応じて異なる時間間隔でパルスを出力し必要に応じて前記要求スケジューラと状態維持ユニットに対するクロック・トリガを有効にするように構成されたタイマと、
前記バッファ・スケジューラに接続された各メモリ・チップの状態を維持し、充電コマンドおよび／またはリフレッシュ・コマンドを発行するように構成された前記状態維持ユニットと、
を備える、請求項１１に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項１３】
前記要求スケジューラはさらに、要求の状況に従って高優先度待ち行列のメモリ・アクセス要求に対する動作を完了するように構成され、前記要求スケジューラは複数の要求に結合マークを付し、前記要求の全ての返却データが前記データ・バッファに保存されるときには、前記データを前記メッセージ・パケット化器に転送して１つの応答パケットにパッケージ化し、低優先度待ち行列におけるメモリ・アクセスのデータ量が大きい要求に対しては、前記要求スケジューラが前記要求を幾つかのステップに分割し各ステップの処理結果を前記メッセージ・パケット化器に転送して１つの応答パケットにパッケージ化して復帰する、請求項１１に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項１４】
前記記憶モジュールはさらに、
前記メッセージ・ベースのメモリ・コントローラからのメモリ・アクセス要求に対しては、前記記憶モジュールが前記要求を複数のステップで処理して複数の応答パケットを返し、前記メッセージ・ベースのメモリ・コントローラからの複数のメモリ・アクセス要求に対しては、前記記憶モジュールが前記要求の全てを処理し１つの応答パケットを用いて全ての要求に応答し、前記記憶モジュールが、要求の優先度、要求の意味情報、および前記記憶モジュールのメモリ・チップの状態に従って、前記メッセージ・ベースのメモリ・コントローラからのメモリ・アクセス要求を実行する順序をスケジュールするというという状況において使用される、請求項１乃至１３の何れか１項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項１５】
前記記憶モジュールのメモリ・ユニットは、同期メモリ・チップおよび／または非同期ネットワーク接続に基づくメモリ・チップである、請求項１乃至１４の何れか１項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項１６】
前記バッファ・スケジューラによりサポートされる特別なメッセージ・ベースのメモリ・アクセス命令は、タイミング・プッシュ命令、メモリ・システムにおける単純な算術論理動作および移動命令、ならびに圧縮記憶を含む、請求項１、１１、または１２の何れか１項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項１７】
前記メッセージ・チャネルは、メッセージ・パケット内のメッセージをパラレル・バス、ポイント・ツー・ポイント・シリアル・バス、または使用する他のトポロジ構造を有するネットワークで送信するように構成された、請求項１乃至１６の何れか１項に記載のメッセージ・ベースのメモリ・アクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の記載
本願は、発明の名称を「メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法」とした２０１２年１月１８日に中国国家知的産権局に出願した中国特許出願第２０１２１００１６３５１．２号に対する優先権を主張し、その全体を引用により本明細書に組み込む。
【０００２】
本発明は、コンピュータ・システム設計の分野に関し、特に、メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法に関する。
【背景技術】
【０００３】
コンピュータのメモリ・システムは、システム構造とソフトウェア性能に影響を及ぼす重要な要素の１つである。過去数十年の間に、プロセッサ性能とメモリ性能のギャップは益々増大し、メモリ・システムはシステム性能を制限するボトルネックとなっている。近年では、プロセッサがマルチコア構造および多コア構造に発展するにつれて、メモリ・システムのアクセス帯域幅の問題がより深刻になっている。当該問題は、マルチコアのプロセッサの開発範囲をさらに制限するものである。
【０００４】
過去、有効な帯域幅を改善するための主なアプローチは、バス周波数を改良することおよびデータ・チャネルの数を増大させること、即ち、物理的な帯域幅を増大させることであった。しかし、同期バス・ベースのメモリ・アクセス構造は近年では大きな変化をもたらしていない。ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、同期ダイナミック・ランダム・アクセス・メモリ）が１９９０年代半ばに現れ、ＳＤＲＡＭ、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）、ＤＤＲ２、およびＤＤＲ３へと発展し、現在ではＤＤＲ４が公開されようとしている。ＳＤＲＡＭは同期インタフェースを使用し、応答を得るために全ての要求が固定のクロック期間を待機する必要がある。ＳＤＲＡＭが公開されているので、メモリ・バス構造を本質的に変更することは困難である。基本的に、ＳＤＲＡＭはインタフェース周波数の一貫した改良を通じた帯域幅の改善に基づいて開発されている。
【０００５】
現在、メモリ構造を変更しようとする試みが国際的規模で行われている。例えば、ＲａｍｂｕｓのＲＤＲＡＭおよびＸＤＲ（ｅＸｔｒｅｍｅ  Ｄａｔａ Ｒａｔｅ）の技術では、パケット・ベースの要求／応答プロトコルが使用され、比較的狭いが高いデータ速度を有するシリアル・メモリがデータ・パケットの送信に使用されている。アドバンスト・メモリ・バッファ（ＡＭＢ、Ａｄｖａｎｃｅｄ  Ｍｅｍｏｒｙ  Ｂｕｆｆｅｒ）がＩｎｔｅｌのＦＢ−ＤＩＭＭ（Ｆｕｌｌｙ  Ｂｕｆｆｅｒｅｄ−ＤＩＭＭ）のデュアル・インライン・メモリ・モジュール（ＤＩＭＭ）に追加され、高速シリアル・チャネルを介して隣接ＤＩＭＭ上のメモリ・コントローラまたはＡＭＢにＦＢ−ＤＩＭＭを接続することができる。高周波数信号の品質を改善するために、同様な全データ・バッファ（ａｌｌ−ｄａｔａ  ｂｕｆｆｅｒ）がＬＲＤＩＭＭ（Ｌｏａｄ−Ｒｅｄｕｃｅｄ  ＤＩＭＭ）、ＤＤＲ４、および他の技術で使用されている。しかし、これらの試みはメモリ構造を部分的に変更するにすぎない。具体的には、データ送信がパラレル・バス形式からパケット形式に変換されているが、同期アクセス・プロトコルが依然としてタイミング・シーケンスの点で必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方では、既存の同期メモリ・システムは主に、単一のメモリ・アクセスの遅延が固定されかつ短いことを保証するために設計されている。しかし、マルチコア構造が使用されるときには、メモリ・アクセス遅延には実際には２つの部分、即ち、プロセッサのメモリ・アクセス待ち行列における待機時間とメモリ・アクセス・チャネル上の遅延が含まれる。明らかに、メモリ・アクセス・チャネル上の短い遅延では良好な全体メモリ・アクセス性能を保証することができない。
【０００７】
他方では、従来のメモリ・アクセスのデータ粒度は固定され、かつ、増大する傾向にある。これは、１送信期間においてより多くのデータが送信されることを保証するためであり、各時刻でのデータ読出しの長さは基本的にＣＰＵキャッシュ・ラインの長さである。しかし、実際のプログラムでは、データ・アクセスごとに実際の粒度は変化する。粒度が低く不規則な一部のアプリケーションのデータ・アクセスに関して、アクセスごとに大規模なデータ粒度が固定されているため無駄は避けられない。一部のアプリケーションのために大量のデータを読み出して書き込む必要があるときには、データ・アクセスを複数のメモリ・トランザクションに分割する必要がある。その結果、プロトコル・オーバヘッドが増大する。これらは全て、メモリ・アクセス帯域幅の無駄の原因となる。
【課題を解決するための手段】
【０００８】
上述の問題を解決するため、本明細書ではメッセージ・ベースのメモリ・アクセス装置とそのアクセス方法を提供する。本発明の目的は、ＣＰＵメモリ・チャネルの有効利用率を高めることと、メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法を提供することである。
【０００９】
本発明は、対応する動作を実施するようにメモリ・システムに指示するためのＣＰＵにより生成されたメッセージ・ベースのメモリ・アクセス命令を送信するように構成されたメッセージ・ベースのコマンド・バスと、ＣＰＵ要求をメッセージ・パケットにパッケージ化し当該パケットを記憶モジュールに送信し、当該記憶モジュールが返却したメッセージ・パケットを解析し、データを当該ＣＰＵに返すように構成されたメッセージ・ベースのメモリ・コントローラと、要求メッセージ・パケットと応答メッセージ・パケットを送信するように構成されたメッセージ・チャネルと、当該メッセージ・ベースのメモリ・コントローラから要求パケットを受信し、対応する要求を処理するように構成された当該記憶モジュールと、を備えたメッセージ・ベースのメモリ・アクセス装置を開示する。
【００１０】
当該メッセージ・ベースのコマンド・バスはさらに、要求のメモリ・アクセス長を指定するように構成され、当該メモリ・アクセス長はレジスタの長さより大きいかまたは小さく、要求データは、キャッシュを通過することなく、キャッシュ、ＣＰＵアドレス可能バッファ、またはレジスタもしくはレジスタ・グループに返却され、要求に、当該メッセージ・ベースのメモリ・コントローラおよびバッファ・スケジューラにおけるメモリ・アクセス・コマンドのスケジューリングを指示するためのデータ・アクセス優先度に関する情報を付加して、メモリ・システムにスケジューリングの基礎をもたらす。
【００１１】
当該メッセージ・ベースのメモリ・コントローラはさらに、ＣＰＵとメッセージ・ベースのメモリ・コントローラの間で要求を交換するように構成されたメモリ・アクセス要求インタフェースと、要求状態テーブルを備えた読取り／書込み要求予約局であって、当該要求状態テーブルは、新たに受信した要求ごとにテーブル・エントリを割り当てるように構成された読取り要求状態テーブルと書込み要求状態テーブルから構成され、バッファ・スケジューラが要求に応答するときまたはメッセージ・ベースのコントローラが要求応答を当該ＣＰＵに送信するときに、当該要求状態テーブル内の対応するテーブル・エントリを更新または削除する必要がある読取り／書込み要求予約局と、読取り／書込み要求予約局の状態に従って、当該メモリ・アクセス要求インタフェースから受信したメモリ・アクセス要求が読取り要求状態テーブルまたは書込み要求状態テーブルに挿入されるかどうかを制御するように構成された読取り／書込み要求ディストリビュータであって、書込み要求を受信した場合には、メモリに書き込むべきデータを書込みデータ・バッファに一時的に保存する必要がある読取り／書込み要求ディストリビュータと、当該書込み要求のデータを一時的に保存するように構成された当該書込みデータ・バッファと、当該読取り要求のデータを一時的に保存するように構成された読取りデータ・バッファと、を備える。
【００１２】
当該メッセージ・ベースのメモリ・コントローラはさらに、一方では、要求の長さや時限遅延のような要求状態テーブルにおける要求属性に従って複数の小型要求を生成するように構成され、他方では、要求をスケジュールし、読取り要求状態テーブルおよび書込み要求状態テーブルにおける未処理の要求から処理すべき次の要求を選択し、選択した要求をメッセージ・パケット化器に送信するように構成された要求生成スケジュール・コンポーネントと、１つまたは複数の要求をメッセージ・チャネルのメッセージ・パケットにパッケージ化し、メッセージ・チャネル・インタフェースを通じて当該メッセージ・パケットをバッファ・スケジューラに送信するように構成されたメッセージ・パケット化器と、１つまたは複数の要求をメッセージ・パケットから抽出して、夫々の対応する要求データを解析するように構成されたメッセージ・アンパッカと、当該要求と当該メッセージ・アンパッカの解析により得られた対応するデータに従って、当該読取り／書込み要求予約局の要求の状態テーブルを更新し、当該データを読取りデータ・バッファに一時的に保存するように構成された要求状態更新ユニットと、要求応答をＣＰＵに送信するように構成された要求応答コントローラと、メッセージ・ベースのメモリ・コントローラのパラメータを構成するかまたは要求の属性を指定するように構成されたコントローラ構成インタフェースであって、要求またはメモリ・アクセス・アドレスを構成した後に、読取り要求状態テーブルと書込み要求状態テーブルの対応する属性値が更新されるコントローラ構成インタフェースと、メッセージ・パケットをバッファ・スケジューラにより送信するように構成されたメッセージ・チャネル・インタフェースであって、メッセージ・チャネルの様々な物理的実装に基づいて、当該メッセージ・チャネル・インタフェースが対応するインタフェース・タイプを有するメッセージ・チャネル・インタフェースと、を備える。
【００１３】
読取り／書込み要求予約局では、読取り要求状態テーブルの項目番号は当該要求状態テーブルの要求のシーケンス番号に対応し、当該項目番号は、処理する要求を一意に指定するためにメッセージ・ベースのメモリ・コントローラおよびバッファ・スケジューラのメッセージ・パケットにおいて使用され、要求アドレスはアクセスされるメモリのベース・アドレスであり、時限遅延は要求をＣＰＵに返却するための時間を指定し、主にコントローラ構成インタフェースを介して設定され、返却粒度はメッセージ・ベースのメモリ・コントローラから毎回ＣＰＵに返されるデータの長さから構成され、データ状態は記憶モジュールから取得された要求データおよび取得されなかった要求データを指定し、データ位置は読取りデータ・バッファにおける取得された要求データの位置を指定する。
【００１４】
要求応答コントローラはさらに、読取り／書込み要求予約局における要求の状態を問い合わせ、ＣＰＵ要求がバッファ・スケジューラと記憶モジュールにより処理された後に要求応答をＣＰＵに送信し、読取り要求が処理された場合には、読取りデータ・バッファの対応する要求データを送信するように構成される。
【００１５】
メッセージ・ベースのメモリ・コントローラと記憶モジュールの間のやりとりはメッセージ・パケットに基づいて完了し、かかるメッセージ・パケットの各々は、１つまたは複数のメモリ・アクセス要求または応答に関する情報を含み、当該メッセージ・パケットにおける要求には同期タイミング・シーケンスの制限がないが要求を返却する最大遅延に関する情報を有する。
【００１６】
メッセージ・ベースのメモリ・コントローラ構成インタフェース・ユニットは、特殊コマンド・アドレス空間をメッセージ・モード・メモリ・コントローラに提供し、当該コントローラの属性を構成できるようにし、メモリ・アクセス要求の属性を設定できるようにし、対応するメモリ・アクセス・コマンドを発行する。
【００１７】
メッセージ・ベースのメモリ・アクセス・コントローラはさらに、当該メッセージ・ベースのメモリ・アクセス・コントローラとコマンド・アドレス空間が、対応するメモリ・アクセス・コマンドを用いることによって、当該メモリ・アクセス・システムがデータをレジスタまたはアドレス可能高速バッファに定期的にプッシュすること、および、単純な算術論理動作と移動動作がメモリ・システムにおいて実施されることをサポートするように構成される。メモリ・アクセスの原子性が設定されるか、または、当該動作がバッチで行われる。
読取り／書込み要求予約局は読取り要求状態テーブルと書込み要求状態テーブルを提供し、処理すべき各要求は読取り要求状態テーブルまたは書込み要求状態テーブルにおいて対応するテーブル・エントリを有し、各テーブル・エントリは要求のアドレスと長さだけでなく、時限返却遅延、返却粒度、データ状態、およびデータ位置も含み、メッセージ・パケットにおいて、各要求は対応する要求状態テーブル内の一意な項目番号によって決定される。
メッセージ・ベースのメモリ・コントローラは、複数の要求を１つのメッセージ・パケットに含めることを可能とするだけでなく、各要求を分割して記憶モジュールに送信すべき１つまたは複数のメッセージ・パケットに含めることを可能とする。当該メッセージ・ベースのメモリ・コントローラはまた、当該記憶モジュールが１つまたは複数のメッセージ・パケットを使用して１つの要求を処理できるようにする。当該メッセージ・ベースのメモリ・コントローラに対して、複数の要求または１つの要求の複数のメッセージ・パケットはばらばらに返される。
【００１８】
メッセージ・ベースのメモリ・コントローラはさらに、複数の記憶モジュールのメッセージ・パケットが１つの読取り要求に対する応答に使用される場合には、当該要求の対応する読取り要求状態テーブルにおけるデータ状態が返却データと未返却データを特定し、完全に返却されていないデータがアドレス可能バッファまたはアドレス不可能バッファに保存され、当該データが当該アドレス不可能バッファに一時的に保存される場合には、要求データが完全に返却された後にのみ、ＣＰＵの読取り要求が応答され当該要求データがＣＰＵに送信され、当該データが当該アドレス可能バッファに一時的に保存される場合には、ＣＰＵは返却されたデータ部分を読み取るという状況において使用される。
【００１９】
メッセージ・パケットには、メモリ・アクセス読取り／書込み要求パケット、特殊コマンド要求パケット、メモリ状態問合せパケット、および／または、応答パケットが含まれる。
【００２０】
記憶モジュールのバッファ・スケジューラは、メッセージ・パケットをメッセージ・ベースのメモリ・コントローラにより送信するように構成されたメッセージ・チャネル・インタフェースと、メモリ・アクセス要求に関する情報を受信したメッセージ・パケットから取得するように構成されたメッセージ・アンパッカであって、当該情報は、要求シリアル番号、要求のタイプ、要求意味情報、アドレス、およびデータを含み、当該メッセージ・アンパッカは、当該要求のタイプを決定した後に対応するルールに従ってアンパック動作を実施するメッセージ・アンパッカと、当該メッセージ・アンパッカにより解析されたメモリ・アクセス要求を要求待ち行列に配分するように構成された要求ディストリビュータであって、このスケジューリングは各要求のアクセス・データの意味情報、要求された返却時間、および粒度情報に依存する要求ディストリビュータと、未処理の読取り／書込み要求を保存するように構成され、優先度が異なる待ち行列から構成された読取り／書込み要求待ち行列であって、高優先度待ち行列は、アクセス・データの粒度が小さく要求された返却時間が短い読取り／書込み要求または高優先度とマークされた読取り／書込み要求を保存し、低優先度待ち行列は、アクセス・データの粒度が大きく要求された返却時間が長い読取り／書込み要求または低優先度とマークされた読取り／書込み要求を保存する読取り／書込み要求待ち行列と、未処理の非読取り／書込み要求を保存するように構成された特殊要求待ち行列と、メモリ・アクセス要求を要求待ち行列から取得して当該要求をコマンド生成ユニットに転送し、返却されたメモリ・アクセス・データをデータ・バッファから取得し、当該データをメッセージ・パケット化器に転送するように構成された要求スケジューラと、スケジュールした直後に実行する必要があるメモリ・アクセス要求を取得し、メモリ・チップにアクセスするための特定のコマンドに当該要求を変換し、当該メモリ・チップの状態を必要に応じて当該要求スケジューラにより維持するためのコマンドを発行するように構成されたコマンド生成ユニットと、返却されたデータと対応する要求シリアル番号を要求スケジューラから取得し、応答パケットを生成し、当該パケットをメッセージ・ベースのメモリ・コントローラに送信し戻すように構成されたメッセージ・パケット化器であって、要求スケジューラが生成した返却データに対するマークに従って、当該メッセージ・パケット化器は、複数の要求を１つの応答パケットにパッケージ化して当該メッセージ・ベースのメモリ・コントローラに送信することを可能とするメッセージ・パケット化器と、メモリ・チップへのアクセスに関する返却データを保存するように構成されたデータ・バッファであって、当該データ・バッファから、要求スケジューラが要求データを選択し当該データを当該メッセージ・パケット化器に送信するデータ・バッファと、メモリ・チップにアクセスするためのコマンドをコマンド生成ユニットから受信し、当該コマンドを記憶モジュールのメモリ・チップに送信し、返却データを受信した後に、当該データをデータ・バッファに保存するように構成されたメモリ・チップ・インタフェースと、を備える。
【００２１】
記憶モジュールのバッファ・スケジューラはさらに、必要に応じて異なる時間間隔でパルスを出力し、必要に応じて要求スケジューラと状態維持ユニットに対するクロック・トリガを有効にするように構成されたタイマと、当該バッファ・スケジューラに接続された各メモリ・チップの状態を維持し充電コマンドおよび／またはリフレッシュ・コマンドを発行するように構成された状態維持ユニットと、を備える。
【００２２】
当該要求スケジューラはさらに、要求の状況に従って高優先度待ち行列におけるメモリ・アクセス要求に対する動作を完了し、当該要求スケジューラは複数の要求に結合マークを付し、当該要求の全ての返却データがデータ・バッファに保存されるときには、当該データをメッセージ・パケット化器に転送して１つの応答パケットにパッケージ化し、低優先度待ち行列におけるメモリ・アクセスのデータ量が大きい要求に対しては、当該要求スケジューラは当該要求を幾つかのステップに分割し各ステップの処理結果を当該メッセージ・パケット化器に転送して１つの応答パケットにパッケージ化して復帰するように構成される。
【００２３】
当該記憶モジュールはさらに、メッセージ・ベースのメモリ・コントローラからのメモリ・アクセス要求に対しては、当該記憶モジュールが当該要求を複数のステップで処理し、複数の応答パケットを返し、当該メッセージ・ベースのメモリ・コントローラからの複数のメモリ・アクセス要求に対しては、当該記憶モジュールが当該要求の全てを処理し１つの応答パケットを用いて全ての要求に応答し、当該記憶モジュールが、当該記憶モジュール上の要求の優先度、要求の意味情報、および当該記憶モジュールのメモリ・チップの状態に従って、当該メッセージ・ベースのメモリ・コントローラからのメモリ・アクセス要求を実行する順序をスケジュールするという状況で使用される。
【００２４】
当該記憶モジュールのメモリ・ユニットは、同期メモリ・チップおよび／または同期ネットワーク接続に基づくメモリ・チップである。
【００２５】
当該バッファ・スケジューラによりサポートされる特別なメッセージ・ベースのメモリ・アクセス命令は、タイミング・プッシュ命令、当該メモリ・システムにおける単純な算術論理動作および移動命令、および圧縮記憶を含む。
【００２６】
当該メッセージ・チャネルは、メッセージ・パケット内のメッセージをパラレル・バス、ポイント・ツー・ポイント・シリアル・バス、または使用する他のトポロジ構造を有するネットワークで送信するように構成される。
【００２７】
本発明はさらにメッセージ・ベースのメモリ・アクセス方法を開示する。当該方法は、以下のステップを含む。
【００２８】
ステップ１００１では、ＣＰＵがメモリ・アクセス要求を発行する。ＣＰＵは当該要求のアクセス・データの長さ、優先度、および意味情報を指定する。当該要求は、読取り／書込み要求以外の他の任意の複雑なメモリ・アクセス要求である。
【００２９】
ステップ１００２では、当該要求がメッセージ・ベースのメモリ・コントローラの構成に関する情報を含むかどうかを判定する。含む場合にはステップ１００３に進み、含まない場合にはステップ１００４に進む。
【００３０】
ステップ１００３では、当該要求が当該メッセージ・ベースのメモリ・コントローラの構成に関する情報を含む場合には、当該メッセージ・ベースのメモリ・コントローラが当該構成情報に従って適切な調整を実施し、次いで当該要求をスケジュールし処理する。
【００３１】
ステップ１００４では、要求に従って、当該メッセージ・ベースのメモリ・コントローラが当該ＣＰＵからのメモリ・アクセス要求をメッセージ・パケットにパッケージ化し、メッセージ・チャネルを介して当該メッセージ・パケットを対応する記憶モジュールのバッファ・スケジューラに送信し、読取り／書込み要求予約局に記録を作成する。当該メッセージ・パケットは複数の要求を含む。
【００３２】
ステップ１００５では、記憶モジュールのバッファ・スケジューラが送信されたメッセージ・パケットを解析して、ＣＰＵのメモリ・アクセス要求に対して動作を実施する。
【００３３】
ステップ１００６では、ＣＰＵのメモリ・アクセス要求を処理した後、当該要求に関する記録が当該メッセージ・ベースのメモリ・コントローラの読取り／書込み要求予約局に存在する場合には、当該レコードをクリアする。ステップ１００６の前に、以下のステップをさらに含める。
【００３４】
ステップ１００７では、ＣＰＵのメモリ・アクセス要求が読取り要求である場合には、読取りデータを応答パケットにパッケージ化しメッセージ・チャネルを介して当該パケットをメッセージ・ベースのメモリ・コントローラに送信する。応答パケットのパッケージ化プロセス中は、要求に基づいて、１つの要求の返却データが複数の応答パケットにパッケージ化され、複数の要求の返却データが１つの応答パケットにパッケージ化される。
【００３５】
ステップ１００８では、要求に従って、当該メッセージ・ベースのメモリ・コントローラが応答パケットを受信し解析し、当該応答パケット内のデータを当該メッセージ・ベースのメモリ・コントローラのキャッシュまたは内部アドレス可能バッファに保存する。
【００３６】
ステップ１００９では、メッセージ・ベースのメモリ・コントローラが、ＣＰＵに対する応答パケットが全て返却されたかどうかを判定する。返却された場合にはステップ１００６に進み、返却されていない場合にはステップ１００８に進む。ステップ１００５の後、以下のステップをさらに含める。
【００３７】
ステップ１０１０では、バッファ・スケジューラがメッセージ・ベースのメモリ・コントローラにより送信されたメッセージ・パケットを受信し解析し、ＣＰＵのメモリ・アクセス要求で適切な要求待ち行列を埋める。
【００３８】
ステップ１０１１では、バッファ・スケジューラの要求スケジューラが要求待ち行列内の複数の要求をスケジュールし、ＣＰＵのメモリ・アクセス要求優先度と意味情報に従って要求実行順序を構成する。
【００３９】
ステップ１０１２では、スケジュールされたＣＰＵ要求をメモリ粒度基準に従う一連のコマンドに変換し、当該コマンドをメモリ・インタフェースに送信する。
【００４０】
ステップ１０１３では、ＣＰＵのメモリ・アクセス要求が複雑なメモリ・アクセス要求であるかどうかを判定する。複雑なメモリ・アクセス要求である場合にはステップ１０１４に進み、複雑なメモリ・アクセス要求でない場合には、ステップ１０１６に進む。
【００４１】
ステップ１０１４では、ＣＰＵのメモリ・アクセス要求が複雑なメモリ・アクセス要求である場合には、バッファ・スケジューラの処理ロジックが単純に当該メモリにより返却された当該データを処理する。
【００４２】
ステップ１０１５では、複雑なメモリ・アクセス命令を処理した後、要求のタイプに従って、処理データをメモリに書き込むかどうかおよび処理データをＣＰＵに返却するかどうかを判定する。当該処理データをメモリに書き戻す必要がある場合には、メモリ粒度基準に従う一連のコマンドを使用して当該データを当該メモリに書き込み、当該処理データをＣＰＵに返却する必要がある場合には、当該データを応答パケットにパッケージ化して当該パケットをメッセージ・ベースのメモリ・コントローラに送信する。
【００４３】
ステップ１０１６では、ＣＰＵのメモリ・アクセス要求が複雑なメモリ・アクセス要求でない場合には、当該要求が書込み要求であるかどうかを判定する。書込み要求である場合にはステップ１００６に進み、書込み要求でない場合にはステップ１００７に進む。ステップ１００４はさらに以下のステップを含む。
【００４４】
ステップ１１０１で、メッセージ・ベースのメモリ・コントローラが、メモリ・アクセス要求インタフェースを通じてＣＰＵにより送信された読取り／書込み要求を受信する。
【００４５】
ステップ１１０２では、読取り／書込み要求ディストリビュータが、要求が読取り要求であるかどうかを判定する。読取り要求である場合にはステップ１１０４に進み、読取り要求でない場合にはステップ１１０３に進む。
【００４６】
ステップ１１０３では、受信した要求が書込み要求である場合には、書込み要求状態テーブルに空の項目が存在するかどうかを判定する。存在する場合にはステップ１１０５に進み、存在しない場合にはステップ１１０２に進む。
【００４７】
ステップ１１０４では、受信した要求が読取り要求である場合には、読取り要求状態テーブルに空の項目が存在するかどうかを判定する。存在する場合にはステップ１１０６に進み、存在しない場合にはステップ１１０２に進む。
【００４８】
ステップ１１０５では、受信した要求が書込み要求であり、空の項目が書込み要求状態テーブルに存在する場合には、当該要求に関するテーブル・エントリを配分し、当該書込み要求内のデータを書込みデータ・バッファに保存する。そうでない場合には、ステップ１１０２に進む。
【００４９】
ステップ１１０６では、受信した要求が読取り要求であり空の項目が読取り要求状態テーブルに存在する場合には、当該要求に関するテーブル・エントリを配分し、そうでない場合には、ステップ１１０２に進む。
【００５０】
ステップ１１０７では、要求の受信を停止し、メモリ・アクセス要求インタフェースを介して受信した要求の処理を続ける。
【００５１】
当該メッセージ・ベースのメモリ・コントローラによる要求のスケジューリングと処理は以下のステップを含む。
【００５２】
ステップ１２０１では、要求生成スケジュール・コンポーネントが読取り／書込み要求状態テーブル内のテーブル・エントリをスキャンする。
【００５３】
ステップ１２０２では、要求生成スケジュール・コンポーネントが、未処理であり読取り／書込み要求状態テーブルで処理する必要がある要求が存在するかどうかを問い合わせる。存在する場合には、ステップ１２０３に進み、存在しない場合にはステップ１２０１に進む。
【００５４】
ステップ１２０３では、未処理の要求がある場合には、要求生成スケジューリング・コンポーネントが、対応する要求状態テーブルにおける要求属性に従って大型の要求を複数の小型要求に分割し、処理すべき次の要求をスケジューリング・アルゴリズムに従って選択する。
【００５５】
ステップ１２０４では、処理すべき要求が読取り要求であるかどうかを判定する。読取り要求である場合にはステップ１２０６に進み、読取り要求でない場合にはステップ１２０５に進む。
【００５６】
ステップ１２０５では、処理すべき要求が書込み要求である場合には、対応する要求データを書込みデータ・バッファから取得し、そうでない場合には、ステップ１２０６に進む。ステップ１２０６では、メッセージ・パケット化器が１つまたは複数の要求をメッセージ・パケットにパッケージ化する。
【００５７】
ステップ１２０７では、パッケージ化したメッセージをメッセージ・ベースのメモリ・コントローラとバッファ・スケジューラの間のメッセージ・チャネル・インタフェースに送信して、次の処理ラウンドのためにステップ１２０１に進む。ステップ１０１３はさらに以下のステップを含む。
【００５８】
ステップ１３０１では、バッファ・スケジューラからメッセージ・ベースのメモリ・コントローラに送信された応答パケットのヘッダ情報を解析して、以下で１つずつ応答を解析するために当該ヘッダ内の応答の数と各応答の長さを取得する。
【００５９】
ステップ１３０２では、解析する必要がある次の応答が存在するかどうかを判定する。存在する場合には、ステップ１３０３に進んで当該次の応答を解析し、存在しない場合には、応答パケットの解析が終了する。
【００６０】
ステップ１３０３では、当該次の応答のタイプと要求識別子を解析する。以下のステップで要求のタイプに従って応答を様々な方法で処理する。
【００６１】
ステップ１３０４では、応答がメモリ・アクセス読取り要求応答であるかどうかを判定する。メモリ・アクセス読取り要求応答である場合には、ステップ１３０５に進んでさらに解析を行い、メモリ・アクセス読取り要求応答でない場合には、当該応答はメモリ状態問合せ要求応答またはメモリ・アクセス書込み要求応答であり、ステップ１３０６に進んで対応する状態情報を取得する。
【００６２】
ステップ１３０５では、ヘッダにより指定された応答の長さに従って当該応答をアドレス指定し、当該返却データをメモリ・アクセス読取り要求応答から取得する。
【００６３】
ステップ１３０６では、ヘッダにより指定された応答の長さに従って応答をアドレス指定する。応答が状態問合せ要求応答である場合には、返却された状態値を当該応答から取得し、応答がメモリ・アクセス書込み要求応答である場合には、書込み要求状態テーブル内の要求属性を更新する。次いで応答の解析が終了し、ステップ１３０２に戻る。
【００６４】
ステップ１３０７では、当該パケットが副次的応答を含むかどうかに従って、読取り要求のメモリ・アクセス・データがバッファ・スケジューラにより複数の応答に分割された後に返却されるかどうかを判定する。当該データが複数の応答に分割されない場合には、ステップ１３０９に進んでメモリ・アクセス読取り要求を処理し、当該データが分割された場合には、当該パケットを解析して取得した副次的応答の数と現在の副次的応答の識別子を取得し、ステップ１３０８に進む。
【００６５】
ステップ１３０８では、現在の応答がメモリ・アクセス読取り要求の最後の副次的応答であるかどうかを、現在の副次的応答の識別子が副次的応答の数に等しいかどうかに従って判定する。等しい場合にはステップ１３０９に進んで現在のメモリ・アクセス読取り要求を処理し、等しくない場合には、現在のメモリ・アクセス読取り要求はまだ処理されておらず、対応するデータ・バッファ内の現在の副次的応答の返却データ、更新されたデータ状態、データ位置、および他の情報を読取り要求状態テーブルに書き込み、ステップ１３０２に戻る。
【００６６】
ステップ１３０９では、現在のメモリ・アクセス読取り要求を処理し、メッセージ・ベースのメモリ・コントローラからのデータをＣＰＵに送信し戻す準備を行い、ステップ１３０２に戻る。ステップ１００６はさらに以下のステップを含む。
【００６７】
ステップ１４０１では、要求応答コントローラが読取り要求状態テーブルと書込み要求状態テーブルをスキャンする。
【００６８】
ステップ１４０２では、処理された要求が書込み要求状態テーブルに存在するかどうかを問い合わせる。存在する場合にはステップ１４０４に進み、存在しない場合にはステップ１４０３に進む。
【００６９】
ステップ１４０３では、処理された要求項目が書込み要求状態テーブルに存在しない場合には、処理された要求項目が読取り要求状態テーブルに存在するかどうかを問い合わせる。存在する場合にはステップ１４０４に進み、存在しない場合にはステップ１４０２に進む。
【００７０】
ステップ１４０４では、処理された要求が書込み要求状態テーブルまたは読取り要求状態テーブルに存在する場合には、当該処理された要求が要求属性の要件を満たすかどうかを判定する。満たす場合にはステップ１４０５に進み、満たさない場合にはステップ１４０２に進む。
【００７１】
ステップ１４０５では、全ての属性の要件を満たす要求の応答を送信する。当該応答のデータ内容も返却粒度および当該要求の他の属性と整合する必要がある。ステップ１０１１はさらに以下のステップを含む。
【００７２】
ステップ１５０１では、タイマが、設定条件に従って、当該要求スケジューラをトリガして新たな要求スケジューリング・プロセスを開始する準備を行わせる。
【００７３】
ステップ１５０２では、トリガ条件はチップ状態維持が要求されることであるかどうかをチェックする。そうである場合にはステップ１５０３に進み、そうでない場合にはステップ１５０４に進む。
【００７４】
ステップ１５０３では、タイマのトリガ条件はチップ状態維持が要求されることである。チップ状態維持コマンドを発行し、ステップ１５０９に進む。
【００７５】
ステップ１５０４では、トリガ条件は特殊要求待ち行列を処理する必要があることであるかどうかをチェックする。そうである場合にはステップ１５０５に進み、そうでない場合にはステップ１５０６に進む。
【００７６】
ステップ１５０５では、トリガ条件は特殊要求待ち行列を処理する必要があることである。当該特殊要求待ち行列における要求を読み取り、当該要求を一連の読書き動作に変換する。当該要求を処理した後に、当該待ち行列における要求状態を修正するかまたは要求状態をクリアする。ステップ１５０９に進む。
【００７７】
ステップ１５０６では、トリガ条件は最高優先度の読取り／書込み要求待ち行列を処理する必要があることであるかどうかをチェックする。そうである場合にはステップ１５０７に進み、そうでない場合にはステップ１５０８に進む。
【００７８】
ステップ１５０７では、トリガ条件は最高優先度の読取り／書込み要求待ち行列を処理する必要があることである。当該待ち行列内の全ての要求をクリアし、全ての読取り要求に結合マークを付す。ステップ１５０９に進む。
【００７９】
ステップ１５０８では、トリガ条件は、最高優先度を有さない読取り／書込み要求待ち行列を処理する必要があることである。当該読取り／書込み要求の最新状態に従って、対応する優先度を有する要求待ち行列における要求にアクセスし、必要な読書き動作を生成する。当該要求を処理した後、当該待ち行列における要求状態を修正するかまたは当該要求状態をクリアする。ステップ１５０９に進む。
【００８０】
ステップ１５０９で、要求スケジューリング・プロセスが終了する。タイマによる次のスケジューリング・プロセスのトリガを待機する。
【発明の効果】
【００８１】
本発明の有利な効果は、元の同期メモリ・アクセス構造を変更することにより従来の同期バス・トランザクションが非同期要求メッセージと応答メッセージで置き換えられ、これにより、メモリ・アクセス構造およびアプリケーションのメモリ・アクセス・インタフェースの並列性と柔軟性が高まり、その結果、ＣＰＵメモリ・チャネルの利用率が向上することである。
【図面の簡単な説明】
【００８２】
【図１】本発明に従う、メッセージ・ベースのメモリ・アクセス装置の全体構造図である。
【図２】本発明に従う、メッセージ・ベースのメモリ・コントローラと記憶モジュールの間で送信されるメッセージ・パケットのフォーマットの図である。
【図３】本発明に従う、メッセージ・パケットのヘッダのフォーマットの図である。
【図４】本発明に従う、メモリ・アクセス読取り／書込み要求パケットのフォーマットの図である。
【図５】本発明に従う、状態問合せ要求パケットのフォーマットの図である。
【図６】本発明に従う、応答パケットのフォーマットの図である。
【図７】本発明に従うメッセージ・ベースのメモリ・コントローラの略構造図である。
【図８】本発明に従う、メッセージ・ベースのメモリ・コントローラの読取り要求状態テーブルにおけるテーブル・エントリのフォーマットの図である。
【図９】本発明に従う、記憶モジュールのバッファ・スケジューラの略構造図である。
【図１０Ａ】本発明に従う、メッセージ・ベースのメモリ・アクセス方法の流れ図である。
【図１０Ｂ】本発明に従う、メッセージ・ベースのメモリ・アクセス方法の流れ図である。
【図１１】本発明に従う、メッセージ・ベースのメモリ・コントローラによりメモリ・アクセス要求を受信する流れ図である。
【図１２】本発明に従う、メッセージ・ベースのメモリ・コントローラによりメモリ・アクセス要求をスケジューリングし処理する流れ図である。
【図１３】本発明に従う、メッセージ・ベースのメモリ・コントローラにより応答パケットを受信し処理する流れ図である。
【図１４】本発明に従う、メッセージ・ベースのメモリ・コントローラによりＣＰＵへの要求に応答する流れ図である。
【図１５】本発明に従う、バッファ・スケジューラによりメモリ・アクセス要求をスケジュールする流れ図である。
【発明を実施するための形態】
【００８３】
以降、添付図面を参照して本発明の具体的な実施方式を詳細に説明する。本発明の目的は、ＣＰＵメモリ・チャネルの有効利用率を高め、メッセージ・ベースのメモリ・アクセス装置を提供することである。
【００８４】
先ず、本発明では、物理的な帯域幅が制限されていても利用率を高めることによて有効な帯域幅を増大することができる。しかし、従来のメモリ・システムでは、遅延が固定され粒度が固定された受動的な同期シーケンス・メモリ・アクセス構造を使用している。当該構造では、可能で有効な技術的アプローチの適用が制限される。
【００８５】
本発明では、「メッセージ」（ｍｅｓｓａｇｅ）に基づく新たな構造を検討する。従来の同期バス・トランザクションを、元の同期メモリ・アクセス構造を変更することにより、非同期で並列な要求メッセージと応答メッセージで置き換える。これにより、メモリ・アクセス構造とアプリケーションのメモリ・アクセス・インタフェースの柔軟性が向上し、それによりＣＰＵメモリ・チャネルの利用率が向上する。
【００８６】
本発明は、対応する動作を実施するようにメモリ・システムに指示するためのＣＰＵにより生成されたメッセージ・ベースのメモリ・アクセス命令を送信するように構成されたメッセージ・ベースのコマンド・バスと、ＣＰＵ要求をメッセージ・パケットにパッケージ化し当該パケットを記憶モジュールに送信し、当該記憶モジュールが返却したメッセージ・パケットを解析し、データをＣＰＵに返すように構成されたメッセージ・ベースのメモリ・コントローラと、要求メッセージ・パケットと応答メッセージ・パケットを送信するように構成されたメッセージ・チャネルと、バッファ・スケジューラを備え、当該メッセージ・ベースのメモリ・コントローラから要求パケットを受信し、対応する要求を処理するように構成された当該記憶モジュールとを備えたメッセージ・ベースのメモリ・アクセス装置を提供する。
【００８７】
当該メッセージ・ベースのコマンド・バスは要求のメモリ・アクセス長を指定してもよく、当該メモリ・アクセス長がレジスタの長さより大きいかまたは小さくてもよい。
【００８８】
メッセージ・ベースのコマンド・バスに関して、キャッシュを通過することなく、要求データをキャッシュ、ＣＰＵのアドレス可能バッファ、またはレジスタもしくはレジスタ・グループに返してもよい。
【００８９】
メッセージ・ベースのコマンド・バスに関して、当該メッセージ・ベースのメモリ・コントローラおよび当該バッファ・スケジューラにおけるメモリ・アクセス・コマンドのスケジューリングを指示するためのデータ・アクセス優先度に関する情報を要求に付加して、スケジューリングの基盤をメモリ・システムに提供してもよい。
【００９０】
当該メッセージ・ベースのメモリ・コントローラと当該記憶モジュールの間のやりとりはメッセージ・パケットに基づいて完了する。各メッセージ・パケットは、１つまたは複数のメモリ・アクセス要求の情報またはデータを含むことができる。メッセージ・パケットの要求には同期タイミング・シーケンスの制限がないが、当該要求が当該要求の返却の最大遅延や他の情報を含んでもよい。
【００９１】
当該メッセージ・ベースのメモリ・コントローラに関して、当該コントローラ構成インタフェース・ユニットは、特殊コマンド・アドレス空間を当該メッセージ・ベースのメモリ・コントローラに提供し、メモリ・アクセス要求の時限返却遅延や粒度の設定のような、当該コントローラの属性の構成やメモリ・アクセス要求の属性の設定を可能とし、特別なメモリ・アクセス・コマンドを発行できるようにする。
【００９２】
当該メッセージ・ベースのメモリ・アクセス・コントローラとコマンド・アドレス空間は、特殊コマンドを使用することによって、メモリ・アクセス・システムがデータをレジスタまたはアドレス可能高速バッファに定期的にプッシュすること、および、単純な算術論理動作と移動動作が当該メモリ・システムにおいて実施されることをサポートしてもよい。この場合、メモリ・アクセス原子性を設定するか、または、動作をバッチで実施してもよい。
【００９３】
当該メッセージ・ベースのメモリ・コントローラに関して、読取り／書込み要求予約局が読取り要求状態テーブルと書込み要求状態テーブルを提供する。処理すべき各要求は、読取り要求状態テーブルまたは書込み要求状態テーブルにおいて対応するテーブル・エントリを有する。各テーブル・エントリは、要求のアドレスと長さだけでなく、時限返却遅延、返却粒度、データ状態、データ位置、および要求の他の追加属性を含む。メッセージ・パケットでは、各要求は、対応する要求状態テーブル内の一意な項目番号によって決定される。
【００９４】
当該メッセージ・ベースのメモリ・コントローラに関して、当該メッセージ・ベースのメモリ・コントローラは、複数の要求を１つのメッセージ・パケットに含めることを可能とするだけでなく、各要求を分割し記憶モジュールに送信すべき１つまたは複数のメッセージ・パケットに含めることを可能とする。当該メッセージ・ベースのメモリ・コントローラはまた、当該記憶モジュールが１つまたは複数の応答情報パケットを使用して１つの要求を処理できるようにする。
【００９５】
当該メッセージ・ベースのメモリ・コントローラに関して、複数の要求または１つの要求の複数の応答メッセージ・パケットをばらばらに返却してもよい。
【００９６】
当該メッセージ・ベースのメモリ・コントローラに関して、複数の記憶モジュールのメッセージ・パケットが１つの読取り要求に対する応答に使用される場合には、当該要求の対応する読取り要求状態テーブルにおけるデータ状態が返却データと未返却データを特定する。完全に返却されていないデータを、アドレス可能バッファまたはアドレス不可能バッファに保存してもよい。当該データがアドレス不可能バッファに一時的に保存される場合には、当該要求データが完全に返却された後にのみ、ＣＰＵの読取り要求が応答され当該要求データがＣＰＵに送信される。当該データがアドレス可能バッファに一時的に保存される場合には、ＣＰＵは全てのデータが返却されるのを待機することなく返却データを読み取ることができる。
【００９７】
当該メッセージ・パケットはメモリ・アクセスの意味情報を含んでもよい。メモリ・アクセスの意味情報には、スレッド情報、オブジェクト情報、および優先度情報が含まれるがこれらに限らない。
【００９８】
当該メッセージ・チャネルに関して、データは、パラレル・バス、ポイント・ツー・ポイント・シリアル・バス、または使用する他のトポロジ構造を有するネットワークを用いてメッセージ・パケットで送信される。
【００９９】
バッファ・スケジューラを備えた記憶モジュールに関して、メッセージ・ベースのメモリ・コントローラにより送信されたメモリ・アクセス要求を複数のステップで処理してもよく、当該要求に複数のメッセージ・パケットで応答してもよい。
【０１００】
バッファ・スケジューラを備えた記憶モジュールに関して、複数のメッセージ・ベースのメモリ・コントローラにより送信されたメモリ・アクセス要求に対して、当該要求の処理後に１つのメッセージ・パケットだけで応答してもよい。
【０１０１】
バッファ・スケジューラを備えた記憶モジュールが、メッセージ・ベースのメモリ・コントローラが送信したメモリ・アクセス要求の実行順序を、要求の優先度、要求の意味情報、および当該記憶モジュールのメモリ・チップの状態に基づいてスケジュールしてもよい。
【０１０２】
バッファ・スケジューラを備えた記憶モジュールに関して、当該バッファ・スケジューラは、ロード／ストア以外の特別なメッセージ・ベースのメモリ・アクセス命令をサポートする。当該命令には、タイミング・プッシュ命令、当該メモリ・システムにおける単純な算術論理動作および（原子動作やバッチ処理をサポートする）移動命令、および圧縮記憶が含まれるがこれらに限らない。
【０１０３】
バッファ・スケジューラを備えた記憶モジュールに関して、当該記憶モジュールのメモリ・ユニットは、同期メモリ・チップまたは非同期ネットワーク接続に基づくメモリ・チップの何れかであってもよい。
【０１０４】
本発明の目的、技術的解決策、および利点をより明確にするために、以下では本発明のメッセージ・ベースのメモリ・アクセス装置とメッセージ・ベースのメモリ・アクセス方法を、本発明の添付図面と諸実施形態を参照してさらに説明する。本明細書の具体的な諸実施形態は本発明を説明するためのものにすぎず、本発明を限定するものではないことは理解される。
【０１０５】
図１に示すように、当該メッセージ・ベースのメモリ・アクセス装置は、メッセージ・ベースのコマンド・バス１１０、メッセージ・ベースのメモリ・コントローラ１２０、メッセージ・チャネル１３０、およびバッファ・スケジューラを備えた記憶モジュール１４０を備える。これらの機能ユニットは、メッセージ・パケットを用いることによりＣＰＵのメモリ・アクセスを実施する。制御可能な遅延と可変な粒度が実現され、意味情報のメッセージ・ベースのメモリ・アクセスがサポートされる。
【０１０６】
ＣＰＵの特殊コマンド・アドレス空間に対するメモリ・アクセス命令またはアクセスが、メッセージ・ベースのコマンド・バス１１０上のメッセージ・ベースのメモリ・アクセス要求に変換される。従来のロード・ストアのメモリ・アクセス命令と比べると、当該メッセージ・ベースのメモリ・アクセス装置では、ＣＰＵが、メモリ・アクセス・データ粒度の大きさと速度、データ返却のタイミングと方式、および他の意味情報を指定することができる。
【０１０７】
メッセージ・ベースのメモリ・コントローラ１２０は、受信したメモリ・アクセス要求をスケジュールし、当該要求を要求パケットに変換し、当該パケットをメッセージ・チャネル１３０に配置して、処理されている全てのメモリ・アクセス要求の状態を維持する。メッセージ・チャネル１３０で返却された応答パケットを解析するとき、メッセージ・ベースのメモリ・コントローラ１２０は当該応答パケットをアンパックして、メモリ・アクセス要求の返却データを取得する。
【０１０８】
記憶モジュール１４０は、当該バッファ・スケジューラを介して要求パケットをメッセージ・チャネル１３０で受信し処理し、当該要求を解析し、特定のメモリ・チップにアクセスし、応答パケットに返却する必要があるデータをパッケージ化し、当該応答パケットをメッセージ・ベースのメモリ・コントローラ１２０に送信する。
【０１０９】
メッセージ・ベースのコマンド・バス１１０は主に、以下の３種類のメッセージ・ベースのメモリ・アクセス命令をサポートする。
【０１１０】
１．メッセージ・ベースのメモリ・ロード・ストア命令。これは、共通メモリ・ロード・ストア命令に対して粒度と優先度パラメータを追加することによって得られる。ＣＰＵは先ず、特殊コマンド・アドレス空間の特別な位置でメモリ・アクセス・データのサイズとアクセス優先度を設定し、メッセージ・ベースのメモリ・ロード・ストア命令を実行する。即ち、指定された長さのデータをメモリから取り出して、要求された優先度に基づいてキャッシュに保存することができる。
【０１１１】
２．時限返却命令。これにより、メモリ・システムは当該命令で指定されたデータ・アレイを後続の時間間隔において定期的に返却することができる。ＣＰＵは最初に当該時間間隔と、特殊コマンド・アドレス空間の指定位置でのメモリ・アクセスの返却時刻を設定し、時限返却命令を実行する。当該命令の実行中は、当該メッセージ・ベースのメモリ・コントローラまたはバッファ・スケジューラが要求された読取りコマンドを定期的に生成し、当該コマンドをコマンド待ち行列または要求待ち行列に挿入する。メモリ・システムにより返却されたデータはキャッシュを通ることなく直接レジスタに送信される。プリフェッチと比べて、時限返却ではバッファの占有が減る。
【０１１２】
３．原始性とバッチ処理をサポートする、メモリ・システムにおける単純な算術論理動作とコピー命令。当該命令により、メモリ・システムは、ＣＰＵを用いることなく、幾つかの単純な算術論理動作（加算、減算、ＡＮＤ、ＯＲ、ＸＯＲ、およびその他の動作。動作結果はメモリ・ユニットに書き込まれる）およびメモリ・ユニットに対する幾つかのコピー動作を実施してもよい。当該命令はバッチ処理をサポートする。特殊コマンド・アドレス空間の指定位置で、メモリ・システムが実行する動作のタイプのような、命令のパラメータをそれが原子動作であるか否かに関わらず設定し、バッチ処理の動作時刻を設定し、次いで命令ＭＯＰＲ１、Ｒ２、Ｒ３を実行する必要がある。当該命令において、Ｒ１およびＲ２はソース・オペランドのアドレスを格納し、Ｒ３は宛先オペランドのアドレスを格納する。当該命令の実行中に、バッファ・スケジューラまたはメッセージ・ベースのメモリ・コントローラが当該動作とコピーを実行し、当該動作の原始性を保証し、動作回数を制御する。単純な動作ではデータをＣＰＵに移動する必要はなく、それにより総メモリ・アクセス量が減る。
【０１１３】
メッセージ・ベースのメモリ・コントローラ１２０と記憶モジュール１４０は、メッセージ・パケットを用いることにより互いと通信する。サポートされるメッセージ・パケットのタイプには、メモリ・アクセス読取り／書込み要求パケット、特殊コマンド要求パケット、メモリ状態問合せパケット、および応答パケットがある。図２に示すように、メッセージ・パケット２００は、１つのヘッダ２０２、および１つまたは複数のメモリ・アクセス要求または応答２０４、２０６、および２０８を含む。ヘッダ２０２は、パケット・タイプ、要求の数、各要求の長さ、パケットの長さ、耐故障、およびその他のような、メッセージ・パケットのメタデータを指定する。当該メッセージ・ベースのメモリ・コントローラから当該記憶モジュールに送信されたメモリ・アクセス読取り／書込み要求パケットは、１つまたは複数のメモリ・アクセス読取り／書込み要求を含んでもよい。２０２、２０４、または２０６を含む各メモリ・アクセス要求は要求識別子、メモリ・アクセス・アドレス、メモリ・アクセス粒度、およびメモリ・アクセス動作を含み、さらに、幾つかの意味情報を含んでもよい。加えて、書込み要求がさらにデータを含んでもよい。記憶モジュールから当該メッセージ・ベースのメモリ・コントローラに送信された応答パケットが１つまたは複数の応答を含んでもよく、各応答パケットは要求識別子、返却データ、およびその他を含む。
【０１１４】
各メッセージ・パケットがヘッダ３００を含んでもよい。図３に示すように、ヘッダ情報は、パケット・タイプ３０２、ソース・モジュール識別子３０４、ターゲット・モジュール識別子３０６、含まれる要求／応答の数３０８、各要求／応答の長さ３１０、３１２、または３１４、パケット長３１６、およびパケット全体の耐故障情報３１８を含む。パケット・タイプ３０２は、バス上のパケットのタイプを指定する。サポートされるパケット・タイプには、メモリ・アクセス読取り／書込み要求パケット、特殊コマンド要求パケット、メモリ状態問合せパケット、および応答パケットが含まれる。ソース・モジュール識別子３０４は、メッセージ・パケットを送信するモジュール（メッセージ・ベースのメモリ・コントローラまたは記憶モジュール）の数を指定する。例えば、複数のメッセージ・ベースのメモリ・コントローラを備えたシステムに関して、ソース・モジュール識別子３０４はメモリ・アクセス読取り／書込み要求を送信したメッセージ・ベースのメモリ・コントローラの識別子を指定してもよい。ターゲット・モジュール識別子３０６は、メッセージ・パケットを受信し処理するモジュール（メッセージ・ベースのメモリ・コントローラまたは記憶モジュール）の数を指定する。含まれる要求／応答の数３０８は、メッセージ・パケットに含まれる要求または応答の数を指定する。含まれる要求がパケット・タイプと整合しなければならないことに留意されたい。例えば、パケット・タイプがメモリ・アクセス読取り要求パケットである場合には、当該メッセージ・パケット内の要求は全てメモリ・アクセス読取り要求でなければならない。各要求／応答の長さ３１０、３１２、または３１４は、各要求または応答のサイズを指定し、メッセージ・パケット内の各要求または応答の位置（オフセット）のアドレス指定を支援する。パケット長３１６は、メッセージ・パケット全体の長さを指定する。パケット全体の耐故障情報３１８は、バス上でのメッセージ・パケットの送信処理においてエラーが発生したかどうかを指定する。パケット全体の耐故障情報３１８には、パリティ・チェック（Ｐａｒｉｔｙ）、チェックサム（Ｃｈｅｃｋｓｕｍ）、エラー訂正コード（ＥＣＣ）、および他の耐故障技術の使用が含まれるがこれらに限らない。
【０１１５】
メモリ・アクセス読取り／書込み要求パケットは、１つまたは複数のメモリ・アクセス読取り／書込み要求４００を記憶モジュールに送信するためにメッセージ・ベースのメモリ・コントローラにより使用される。ヘッダに加えて、図４に示すように、各メモリ・アクセス読取り／書込み要求４００は要求識別子４０２、動作コード４０４、メモリ・アクセス・アドレス４０６、およびメモリ・アクセス粒度４０８を含み、意味情報４１０をさらに含んでもよい。加えて、メモリ・アクセス書込み要求はさらにデータ４１２を含む。要求識別子４０２は、要求ごとにメッセージ・ベースのメモリ・コントローラにより配分された一意な識別子である。動作コード４０４は、読取り要求または書込み要求のようなメモリ要求動作を指定する。メモリ・アクセス・アドレス４０６は、メモリ・アクセス要求の基本物理アドレスを指定する。メモリ・アクセス粒度４０８は、小型粒度８Ｂまたは大型粒度４ＫＢのような、メモリ・アクセス要求のデータの粒度（または長さ）を指定する。意味情報４１０は、記憶モジュールがメッセージ・ベースのメモリ・コントローラを介して送信したプログラム実行情報を指定し、メモリ・アクセス要求の優先度、メモリ・アクセス要求処理のタイムアウト（Ｔｉｍｅｏｕｔ）、メモリ・アクセス要求を送信したＣＰＵのコア識別子（Ｃｏｒｅ  ＩＤ）、およびその他のような、記憶モジュールのバッファ・スケジューラのスケジューリングを指示するために使用される。データ４１２は、さらにメモリ・アクセス書込み要求に含まれ、指定の物理アドレスに書き込まれるデータを指定する。
【０１１６】
特殊コマンド要求パケットは、単純な算術論理動作、移動動作、原子動作、圧縮等のような特殊な処理コマンドをメッセージ・ベースのメモリ・コントローラが記憶モジュールに送信するために使用される。
【０１１７】
メモリ状態問合せパケットは、メッセージ・ベースのメモリ・コントローラが記憶モジュール上の状態情報の様々なタイプを問い合わせるために使用される。各メモリ状態問合せパケットは１つの問合せ要求のみを含む。したがって、要求ヘッダ内の要求の数は常に１に設定される。図５に示すように、各状態問合せ要求５００は状態問合せタイプ５０２と状態問合せ識別子５０４を含む。状態問合せタイプ５０２は、読取り／書込み要求待ち行列が満杯であるかどうか、特殊要求待ち行列が満杯であるかどうか、メモリ・チップが低電力消費状態にあるかどうか等のような、問い合わせた記憶モジュールの状態のタイプを指定する。状態問合せ識別子５０４は、メッセージ・ベースのメモリ・コントローラにより配分された状態問合せ要求識別子であり、メッセージ・ベースのメモリ・コントローラが応答を記憶モジュールから受信した後に状態問合せ要求をアドレス指定するために使用される。
【０１１８】
応答パケットは、記憶モジュールが１つまたは複数の返却された応答をメッセージ・ベースのメモリ・コントローラに送信するために使用される。ヘッダに加えて、図６に示すように、各応答６００は応答タイプ６０２と要求識別子６０４を含み、さらに、副次的応答の数６０６、副次的応答識別子６０８、データ６１０、または状態値６１２を含んでもよい。応答タイプ６０２は、メモリ・アクセス読取り要求応答、状態問合せ要求応答、およびその他のような様々な種類の要求に対して返却された対応する応答を指定する。要求識別子６０４は、メモリ・アクセス読取り要求識別子または状態問合せ要求識別子のような、応答の対応する要求識別子である。メモリ・アクセス読取り要求応答に関しては、大きな粒度のデータが要求された場合には、記憶モジュールが、応答を返すときに１つの単体の要求データを複数の副次的応答に分割し、当該副次的応答を１つの応答パケットにパッケージ化して返すかまたは複数の応答パケットにパッケージ化して別々に返してもよい。この場合、副次的応答の数６０６は副次的応答の数を指定し、副次的応答識別子６０８は現在返却されている副次的応答の識別子を指定する。メッセージ・ベースのメモリ・コントローラが指定数の副次的応答を１つまたは複数の応答パケットから取得した後、メモリ・アクセス読取り要求が処理される。メモリ・アクセス読取り要求応答はさらに、記憶モジュールからメッセージ・ベースのメモリ・コントローラに読み出したデータ６１０を含む。状態問合せ要求応答はさらに、読取り／書込み要求待ち行列が満杯であることのような、メモリに対応する返却された状態値６１２を含む。
【０１１９】
図７に示すように、メッセージ・ベースのメモリ・コントローラは、メモリ・アクセス要求インタフェース７００、読取り／書込み要求ディストリビュータ・ユニット７０１、書込みデータ・バッファ・ユニット７０２、読取りデータ・バッファ・ユニット７０３、読取り／書込み要求予約局７０４、要求生成スケジュール・コンポーネント７０５、メッセージ・パケット化器７０６、メッセージ・アンパッカ７０７、要求状態更新ユニット７０８、要求応答コントローラ７０９、コントローラ構成インタフェース７１０、およびメッセージ・チャネル・インタフェース７１１を備える。当該ユニットにより実装されたメッセージ・ベースのメモリ・コントローラはメッセージ・パケットを使用して、バッファ・スケジューラとの対話を実施し、記憶モジュール・ユニットを使用して要求の処理を完了する。当該メッセージ・ベースのメモリ・コントローラは、粒度が可変で返却タイミングが制限されたメモリ・アクセス要求の処理をサポートする。さらに、当該メッセージ・ベースのメモリ・コントローラにより、１つの読取り要求データを複数のメッセージ・パケットでばらばらに返却することができる。これにより、メモリ帯域幅の利用率を向上させることができる。
【０１２０】
メモリ・アクセス要求インタフェース７００は、ＣＰＵとメッセージ・ベースのメモリ・コントローラの間の要求交換インタフェースである。当該インタフェースは、ＣＰＵがメモリ・アクセス要求をメッセージ・ベースのメモリ・コントローラに送信するために使用され、当該メッセージ・ベースのメモリ・コントローラがメモリ・アクセス要求応答をＣＰＵに送信するためにも使用される。加えて、当該インタフェースが、メッセージ・ベースのメモリ・コントローラを構成するためのコマンドを送信してもよい。
【０１２１】
読取り／書込み要求ディストリビュータ・ユニット７０１は、図８に示すように、メッセージ・ベースのメモリ・コントローラの残存空間が含むことができるメモリ・アクセス要求の数のような、読取り／書込み要求予約局の状態に従って、当該メモリ・アクセス要求インタフェースから受信したメモリ・アクセス要求を読取り要求状態テーブルまたは書込み要求状態テーブルに挿入できるかどうかを制御する。書込み要求を受信した場合には、メモリに書き込むべきデータを書込みデータ・バッファ・ユニット７０２に一時的に保存する必要がある。
【０１２２】
書込みデータ・バッファ・ユニット７０２は、書込み要求のデータを一時的に保存するように構成される。当該書込み要求をスケジュールするとき、当該要求に対応するデータをメッセージ・パケットに埋めて、バッファ・スケジューラに送信する必要がある。
【０１２３】
読取りデータ・バッファ・ユニット７０３は、読取り要求のデータを一時的に保存するように構成される。メッセージ・ベースのメモリ・コントローラにより１つの要求データを複数のメッセージ・パケットで返却することができるので、読取りデータ・バッファ内のデータが当該要求の要求データの単なる一部であってもよく、ばらばらであってもよい。読取り要求状態テーブルは、各要求の返却データ・ブロックと対応するデータ位置とを読取りデータ・バッファに記録する。さらに、メッセージ・ベースのメモリ・コントローラは要求の時限返却の機能を有する。したがって、要求の全てのデータが読取りデータ・バッファに一時的に保存された場合でも、当該要求を即座に返却しなくともよい。
【０１２４】
読取り／書込み要求予約局ユニット７０４は、要求を制御し管理するための主要なユニットである。読取り／書込み要求予約局ユニット７０４は、読取り要求状態テーブルと書込み要求状態テーブルから構成される。当該要求状態テーブルは、新たに受信した要求ごとにテーブル・エントリを配分する。バッファ・スケジューラにより要求が応答されるかまたはメッセージ・ベースのメモリ・コントローラが要求の応答をＣＰＵに送信するときに、当該要求状態テーブル内の対応するテーブル・エントリを更新するかまたは削除する必要がある。
【０１２５】
読取り要求状態テーブル内のテーブル・エントリを図８に示す。項目番号は当該要求状態テーブルの要求のシーケンス番号に対応する。当該項目番号は、当該メッセージ・ベースのメモリ・コントローラおよびバッファ・スケジューラのメッセージ・パケットにおいて、処理する要求を一意に指定するために使用される。要求アドレスは、アクセスされるメモリのベース・アドレスである。従来のメッセージ・ベースのメモリ・コントローラの固定されたメモリ・アクセス要求の長さとは異なり、当該メッセージ・ベースのメモリ・コントローラは、長い要求を処理してメモリ帯域幅の有効性を高める。時限遅延は、要求をＣＰＵに返却する時間を指定し、主にコントローラ構成インタフェースを介して設定される。返却粒度は、当該メッセージ・ベースのメモリ・コントローラから毎回ＣＰＵに返されるデータの長さを指定する。データ状態は、記憶モジュールから取得された要求された要求データ、および、取得されていない要求された要求データを指定する。データ位置は、読取りデータ・バッファにおける取得された要求データの位置を指定する。
【０１２６】
要求生成スケジューリング・コンポーネント７０５は、一方では、要求の長さおよび時限遅延のような要求状態テーブルにおける要求属性に従って複数の小型要求を生成するように構成され、他方では、要求をスケジュールし、読取り要求状態テーブルおよび書込み要求状態テーブルにおける未処理の要求から処理すべき要求を選択して、選択した要求をメッセージ・パケット化器７０６に送信するように構成される。
【０１２７】
メッセージ・パケット化器７０６は、１つまたは複数の要求をメッセージ・パケットにパッケージ化し、メッセージ・チャネル・インタフェースを介してメッセージ・パケットをバッファ・スケジューラに送信するように構成される。
【０１２８】
メッセージ・アンパッカ７０７は、１つまたは複数の要求をメッセージ・パケットから抽出し、各要求の対応するデータ内容を解析するように構成される。
【０１２９】
要求状態更新ユニット７０８は、読取り／書込み要求予約局７０４内の要求の状態テーブルを更新し、当該要求とメッセージ・アンパッカ７０７の解析により得られた対応するデータに従ってデータを読取りデータ・バッファに一時的に保存するするように構成される。
【０１３０】
要求応答コントローラ７０９は、要求応答をＣＰＵに送信するように構成される。要求応答コントローラ７０９は主に、読取り／書込み要求予約局７０４内の要求の状態を問い合わせる。ＣＰＵが送信した要求がバッファ・スケジューラと記憶モジュールにより処理された後、要求応答コントローラ７０９は要求応答をＣＰＵに送信する。読取り要求が処理された場合には、要求応答コントローラ７０９は、読取りデータ・バッファ７０３内の当該要求の対応するデータを送信する必要がある。
【０１３１】
コントローラ構成インタフェース７１０は、時限遅延等のような、メッセージ・ベースのメモリ・コントローラのパラメータまたは指定の要求属性を構成するように構成される。要求またはメモリ・アクセス・アドレスの構成に関して、対応する値が読取り／書込み要求状態テーブルの属性において更新される。
【０１３２】
メッセージ・チャネル・インタフェース７１１は、メッセージ・パケットをバッファ・スケジューラで送信するように構成される。当該メッセージ・チャネルの様々な物理的実装に基づいて、メッセージ・チャネル・インタフェース７１１は、共有パラレル・バス・インタフェースまたはポイント・ツー・ポイント・シリアル・バス・インタフェースのような対応するインタフェース・タイプを有する。
【０１３３】
図９は、記憶モジュールのバッファ・スケジューラの略構造図である。図９に示すように、当該バッファ・スケジューラは、メッセージ・チャネル・インタフェース９０１、メッセージ・アンパッカ９０２、要求ディストリビュータ９０３、読取り／書込み要求待ち行列９０４、特殊要求待ち行列９０５、タイマ９０６、状態維持ユニット９０７、要求スケジューラ９０８、コマンド生成ユニット９０９、メッセージ・パケット化器９１０、データ・バッファ９１１、およびメモリ・チップ・インタフェース９１２を備える。
【０１３４】
当該バッファ・スケジューラは、当該記憶モジュールのメモリ・チップに接続された当該記憶モジュール上の独立な集積回路であってもよい。当該バッファ・スケジューラが、システムの主基板上のチップであってもよく、汎用記憶モジュールに接続されていもよい。バッファ・スケジューラの利用を、特殊用途向け集積回路チップ、プログラム可能論理装置、およびフィールド・プログラマブル・ゲート・アレイのような様々なハードウェアの方式で実装してもよい。以下で説明するバッファ・スケジューラは図９に基づくものであるが、追加モジュールを追加することまたはバッファ・スケジューラの特定の機能ユニットを結合することのように、他の方式で実装した例も適用可能である。
【０１３５】
メッセージ・チャネル・インタフェース９０１は、メッセージ・パケットをメッセージ・ベースのメモリ・コントローラで送信するように構成される。メッセージ・チャネルの物理的実装に基づいて、メッセージ・チャネル・インタフェース９０１は、共有パラレル・バス・インタフェースまたはポイント・ツー・ポイント・シリアル・バス・インタフェースのような対応するインタフェース・タイプを有する。
【０１３６】
メッセージ・アンパッカ９０２は、要求シリアル番号、要求のタイプ、要求意味情報、アドレス、データ等を含む、様々な情報を受信したメッセージ・パケットから取得するように構成される。様々な要求のタイプが様々なメッセージ・パケットのフォーマットに対応する。当該要求のタイプを決定した後、メッセージ・アンパッカ９０２が対応するルールに従ってアンパック動作を実施する。
【０１３７】
要求ディストリビュータ９０３は、メッセージ・アンパッカ９０２が解析したメモリ・アクセス要求を様々な要求待ち行列に配分する。このスケジューリングは、各要求の意味情報、要求された返却時間、およびアクセス・データ粒度、および他の情報に基づく。
【０１３８】
読取り／書込み要求待ち行列９０４は、未処理の読取り／書込み要求を保存するように構成され、優先度が異なる複数の待ち行列を含む。高優先度待ち行列は、アクセス・データの粒度が小さく要求された返却時間が短い読取り／書込み要求または高優先度とマークされた読取り／書込み要求を保存し、低優先度待ち行列は、アクセス・データの粒度が大きく要求された返却時間が長い読取り／書込み要求または低優先度とマークされた読取り／書込み要求を保存する。
【０１３９】
特殊要求待ち行列９０５は、論理動作、圧縮動作、移動動作、およびデータに対する他の動作のような未処理の非読取り／書込み要求を保存するように構成される。
【０１４０】
タイマ９０６は、必要に応じて異なる時間間隔でパルスを出力してもよく、必要に応じて、要求スケジューラ９０８と状態維持ユニット９０７に対してクロック・トリガを有効にする。
【０１４１】
状態維持ユニット９０７は、バッファ・スケジューラに接続された各メモリ・チップの状態を維持し、必要なときに充電コマンド、リフレッシュ・コマンド、および他のコマンドを発行するように構成される。
【０１４２】
要求スケジューラ９０８は、メモリ・アクセス要求を要求待ち行列から取得し、当該要求をコマンド生成ユニット９０９に転送し、返却されたメモリ・アクセス・データをデータ・バッファから取得して、データをメッセージ・パケット化器９１０に転送する。要求と返却データを転送することに加えて、要求スケジューラ９０８は必要に応じて一連の特殊動作を実施する。例えば、高優先度待ち行列内のメモリ・アクセス要求が一般に小さなメモリ・アクセス粒度を有し、従って、要求スケジューラ９０８が複数の要求に結合マークを付してもよい。その結果、当該要求の全ての返却データがデータ・バッファに保存されるときには、当該データをメッセージ・パケット化器９１０に転送して１つの応答パケットにパッケージ化する。低優先度待ち行列におけるメモリ・アクセスのデータ量が大きい要求に対しては、要求スケジューラ９０８が、要求処理を幾つかのステップに分割し、各ステップの処理結果をメッセージ・パケット化器９１０に転送して１つの応答パケットにパッケージ化して復帰してもよい。
【０１４３】
コマンド生成ユニット９０９は、スケジュールした直後に実行する必要があるメモリ・アクセス要求を取得し、当該要求をメモリ・チップにアクセスするための特定のコマンドに変換する。メモリ・チップの状態を維持するために、要求スケジューラ９０８は、当該メモリ・チップの状態を維持するためのコマンドを発行することをコマンド生成ユニット９０９に要求してもよい。
【０１４４】
メッセージ・パケット化器９１０は、返却されたデータと対応する要求シリアル番号とを要求スケジューラ９０８から取得し、応答パケットを生成し、当該パケットをメッセージ・ベースのメモリ・コントローラに送信し戻す。要求スケジューラ９０８が生成した返却データに対するマークに従って、メッセージ・パケット化器９１０は、複数の要求を１つの応答パケットにパッケージ化しメッセージ・ベースのメモリ・コントローラに送信できるようにする。
【０１４５】
データ・バッファ９１１は、メモリ・チップへのアクセスに関する返却データを保存する。要求スケジューラ９０８は、要求データを選択し当該データをメッセージ・パケット化器９１０に送信する。
【０１４６】
メモリ・チップ・インタフェース９１２は、メモリ・チップにアクセスするためのコマンドをコマンド生成ユニット９０９から取得し、当該コマンドを記憶モジュールのメモリ・チップに送信し、返却データを受信した後に、データをデータ・バッファ９１１に保存する。
【０１４７】
図１０に示すように、メッセージ・ベースのメモリ・アクセス方法は以下のステップを含む。
【０１４８】
ステップ１００１では、ＣＰＵがメモリ・アクセス要求を発行する。ＣＰＵは、当該要求のアクセス・データの長さ、優先度、および意味情報を指定してもよい。当該要求が、タイミング・アクセス、単純な算術論理動作、移動動作、原子動作、圧縮等のような読取り／書込み要求以外の他の任意の複雑なメモリ・アクセス要求であってもよい。
【０１４９】
ステップ１００２では、当該要求がメッセージ・ベースのメモリ・コントローラの構成に関する情報を含むかどうかを判定する。含む場合にはステップ１００３に進み、含まない場合にはステップ１００４に進む。
【０１５０】
ステップ１００３では、当該要求がメッセージ・ベースのメモリ・コントローラの構成に関する情報を含む場合には、当該メッセージ・ベースのメモリ・コントローラが当該構成情報に従って適切な調整を実施する。
【０１５１】
ステップ１００４では、メッセージ・ベースのメモリ・コントローラが特定のフォーマットに基づいてＣＰＵからのメモリ・アクセス要求をメッセージ・パケットにパッケージ化し、メッセージ・チャネルを介して当該メッセージ・パケットを対応する記憶モジュールのバッファ・スケジューラに送信し、要件に基づいて読取り／書込み要求予約局に記録を作成する。当該メッセージ・パケットは、特定のルールに基づいて複数の要求を含んでもよい。
【０１５２】
ステップ１００５では、バッファ・スケジューラがメッセージ・ベースのメモリ・コントローラにより送信されたメッセージ・パケットを受信し解析し、ＣＰＵのメモリ・アクセス要求で適切な要求待ち行列を埋める。
【０１５３】
ステップ１００６では、バッファ・スケジューラの要求スケジューラが、ＣＰＵのメモリ・アクセス要求優先度と意味情報に従って要求待ち行列内の複数の要求をスケジュールし、要求実行順序を構成する。
【０１５４】
ステップ１００７では、ＣＰＵのスケジュールされたメモリ・アクセス要求を、（ＤＤＲ標準のような）メモリ粒度基準に従う一連のコマンドに変換し、当該コマンドをメモリ・インタフェースに送信する。
【０１５５】
ステップ１００８では、ＣＰＵのメモリ・アクセス要求が複雑なメモリ・アクセス要求であるかどうかを判定する。複雑なメモリ・アクセス要求である場合にはステップ１００９に進み、複雑なメモリ・アクセス要求でない場合には、ステップ１０１１に進む。
【０１５６】
ステップ１００９では、ＣＰＵのメモリ・アクセス要求が複雑なメモリ・アクセス要求である場合には、（単純な算術論理動作、移動動作等のような）バッファ・スケジューラの処理ロジックが単に当該メモリにより返却された当該データを処理する。
【０１５７】
ステップ１０１０では、複雑なメモリ・アクセス命令を処理した後、要求のタイプに従って、処理データを当該メモリに書き込むかどうかおよび処理データをＣＰＵに返却するかどうかを判定する。当該処理データをメモリに書き戻す必要がある場合には、（ＤＤＲ標準のような）メモリ粒度基準に従う一連のコマンドを使用してデータをメモリに書き込む。当該処理データをＣＰＵに返却する必要がある場合には、当該データを応答パケットにパッケージ化して当該パケットをメッセージ・ベースのメモリ・コントローラに送信する。
【０１５８】
ステップ１０１１では、ＣＰＵのメモリ・アクセス要求が複雑なメモリ・アクセス要求でない場合には、当該要求が書込み要求であるかどうかを判定する。書込み要求である場合にはステップ１０１５に進み、書込み要求でない場合にはステップ１０１２に進む。
【０１５９】
ステップ１０１２では、ＣＰＵからの要求が読取り要求である場合には、読取りデータを応答パケットにパッケージ化しメッセージ・チャネルを介して当該パケットをメッセージ・ベースのメモリ・コントローラに送信する。応答パケットのパッケージ化プロセス中は、要件に基づいて、１つの要求の返却データを複数の応答パケットにパッケージ化し、複数の要求の返却データを１つの応答パケットにパッケージ化してもよい。
【０１６０】
ステップ１０１３では、要件に従って、メッセージ・ベースのメモリ・コントローラが応答パケットを受信し解析し、当該応答パケット内のデータを当該メッセージ・ベースのメモリ・コントローラのキャッシュまたは内部アドレス可能バッファに保存する。
【０１６１】
ステップ１０１４では、当該メッセージ・ベースのメモリ・コントローラが、ＣＰＵのメモリ・アクセス要求の応答パケットの全体が返却されたかどうかを判定する。返却された場合にはステップ１０１５に進み、返却されていない場合には、ステップ１０１３に進む。
【０１６２】
ステップ１０１５では、ＣＰＵのメモリ・アクセス要求を処理した後、当該要求に関する記録がメッセージ・ベースのメモリ・コントローラの当該読取り／書込み要求予約局に存在する場合には記録をクリアする。
【０１６３】
図１１に示すように、メッセージ・ベースのメモリ・コントローラがメモリ・アクセス要求を受信する処理手続きは以下の通りである。
【０１６４】
ステップ１１０１で、メッセージ・ベースのメモリ・コントローラが、メモリ・アクセス要求インタフェースを介してＣＰＵにより送信された読取り／書込み要求を受信する。
【０１６５】
ステップ１１０２では、読取り／書込み要求ディストリビュータ７０１が、要求が読取り要求であるかどうかを判定する。読取り要求である場合にはステップ１１０４に進み、読取り要求でない場合にはステップ１１０３に進む。
【０１６６】
ステップ１１０３では、受信した要求が書込み要求である場合には、書込み要求状態テーブルに空の項目が存在するかどうかを判定する。存在する場合にはステップ１１０５に進み、存在しない場合にはステップ１１０２に進む。
【０１６７】
ステップ１１０４では、受信した要求が読取り要求である場合には、読取り要求状態テーブルに空の項目が存在するかどうかを判定する。存在する場合にはステップ１１０６に進み、存在しない場合にはステップ１１０２に進む。
【０１６８】
ステップ１１０５では、受信した要求が書込み要求であり、空の項目が書込み要求状態テーブルに存在する場合には、当該要求に関するテーブル・エントリを配分し、当該書込み要求内のデータを書込みデータ・バッファに保存し、そうでない場合には、ステップ１１０２に進む。
【０１６９】
ステップ１１０６では、受信した要求が読取り要求であり空の項目が読取り要求状態テーブルに存在する場合には、当該要求に関するテーブル・エントリを配分し、そうでない場合には、ステップ１１０２に進む。
【０１７０】
ステップ１１０７では、要求の受信を停止し、メモリ・アクセス要求インタフェースを介して受信した要求の処理を続ける。
【０１７１】
図１２に示すように、メッセージ・ベースのメモリ・コントローラによる要求のスケジューリングと処理は以下のステップを含む。
【０１７２】
ステップ１２０１では、要求生成スケジュール・コンポーネント７０５が、読取り／書込み要求状態テーブルのテーブル・エントリをスキャンする。
【０１７３】
ステップ１２０２では、要求生成スケジューリング・コンポーネント７０５が、未処理であり読取り／書込み要求状態テーブルで処理する必要がある要求が存在するかどうかを問い合わせる。存在する場合にはステップ１２０３に進み、存在しない場合にはステップ１２０１に進む。
【０１７４】
ステップ１２０３では、未処理の要求がある場合には、要求生成スケジューリング・コンポーネントが、対応する要求状態テーブルにおける要求属性に従って大型の要求を複数の小型要求に分割し、処理すべき次の要求をスケジューリング・アルゴリズムに従って選択する。
【０１７５】
ステップ１２０４では、処理すべき要求が読取り要求であるかどうかを判定する。読取り要求である場合には、ステップ１２０６に進み、読取り要求でない場合にはステップ１２０５に進む。
【０１７６】
ステップ１２０５では、処理すべき要求が書込み要求である場合には、当該要求の対応するデータを書込みデータ・バッファから取得し、そうでない場合には、ステップ１２０６に進む。
【０１７７】
ステップ１２０６では、メッセージ・パケット化器７０６が１つまたは複数の要求をメッセージ・パケットにパッケージ化する。
【０１７８】
ステップ１２０７では、パッケージ化したメッセージをメッセージ・ベースのメモリ・コントローラとバッファ・スケジューラの間のメッセージ・チャネル・インタフェースに送信して、次の処理ラウンドのためにステップ１２０１に進む。
【０１７９】
図１３に示すように、メッセージ・ベースのメモリ・コントローラがメッセージ・パケットをバッファ・スケジューラから受信した後、以下のステップを実施する。
【０１８０】
ステップ１３０２では、バッファ・スケジューラからメッセージ・ベースのメモリ・コントローラに送信された応答パケットのヘッダ情報を解析して、当該応答を１つずつ解析するためにヘッダ内の応答の数および各応答の長さを取得する。
【０１８１】
ステップ１３０４では、解析する必要がある次の応答が存在するかどうかを判定する。存在する場合には、ステップ１３０６に進んで当該次の応答を解析し、存在しない場合には当該応答パケット解析は終了する。
【０１８２】
ステップ１３０６では、当該次の応答のタイプと要求識別子を解析する。以下のステップで要求のタイプに従って応答を様々な方法で処理する。
【０１８３】
ステップ１３０８では、当該応答がメモリ・アクセス読取り要求応答であるかどうかを判定する。メモリ・アクセス読取り要求応答である場合には、ステップ１３１０に進んでさらに解析を行い、メモリ・アクセス読取り要求応答でない場合には、当該応答はメモリ状態問合せ要求応答またはメモリ・アクセス書込み要求応答であり、ステップ１３１２に進んで対応する状態情報を取得する。
【０１８４】
ステップ１３１０では、ヘッダにより指定された応答の長さに従って当該応答をアドレス指定し、返却データをメモリ・アクセス読取り要求応答から取得する。
【０１８５】
ステップ１３１２では、ヘッダにより指定された応答の長さに従って当該応答をアドレス指定する。当該応答が状態問合せ要求応答である場合には、返却された状態値を当該応答から取得する。当該応答がメモリ・アクセス書込み要求応答である場合には、書込み要求状態テーブル内の要求属性を更新する。次いで応答の解析が終了し、ステップ１３０４に戻る。
【０１８６】
ステップ１３１４では、パケットが副次的応答を含むかどうかに従って、読取り要求のメモリ・アクセス・データがバッファ・スケジューラにより複数の応答に分割された後に返却されるかどうかを判定する。当該データが複数の応答に分割されない場合には、メモリ・アクセス読取り要求を処理し、ステップ１３１８に進む。当該データが分割された場合には、当該パケットを解析して、取得した副次的応答の数および現在の副次的応答の識別子を取得し、ステップ１３１６に進む。
【０１８７】
ステップ１３１６では、現在の応答がメモリ・アクセス読取り要求の最後の副次的応答であるかどうかを、現在の副次的応答の識別子が副次的応答の数に等しいかどうかに従って判定する。等しい場合には、現在のメモリ・アクセス読取り要求を処理し、ステップ１３１８に進み、等しくない場合には、現在のメモリ・アクセス読取り要求はまだ処理されておらず、現在の副次的応答の返却データを対応するデータ・バッファに書き込み、更新されたデータ状態、データ位置、および他の情報を読取り要求状態テーブルに書き込んで、ステップ１３０４に戻る。
【０１８８】
ステップ１３１８では、メモリ・アクセス読取り要求を処理した後、データをメッセージ・ベースのメモリ・コントローラからＣＰＵに送信し戻す準備を行い、ステップ１３０４に戻る。
【０１８９】
図１４に示すように、メッセージ・ベースのメモリ・コントローラにより要求応答をＣＰＵに送信するためのステップは以下の通りである。
【０１９０】
ステップ１４０１では、要求応答コントローラ７０９が読取り／書込み要求状態テーブルをスキャンする。
【０１９１】
ステップ１４０２では、処理された要求が書込み要求状態テーブルに存在するかどうかを問い合わせる。存在する場合にはステップ１４０４に進み、存在しない場合にはステップ１４０３に進む。
【０１９２】
ステップ１４０３では、処理された要求項目が書込み要求状態テーブルに存在しない場合には、処理された要求項目が読取り要求状態テーブルに存在するかどうかを問い合わせる。存在する場合にはステップ１４０４に進み、存在しない場合にはステップ１４０２に進む。
【０１９３】
ステップ１４０４では、処理された要求が書込み要求状態テーブルまたは読取り要求状態テーブルに存在する場合には、処理した要求が時限遅延の要求のような要求属性の要件を満たすかどうかを判定する。満たす場合にはステップ１４０５に進み、満たさない場合にはステップ１４０２に進む。
【０１９４】
ステップ１４０５では、全ての属性の要件を満たす要求の応答を送信する。当該応答のデータ内容も返却粒度および当該要求の他の属性と整合する必要がある。
【０１９５】
図１５に示すように、要求スケジューラ９０８によりメモリ・アクセス要求をスケジュールするステップは以下の通りである。
【０１９６】
ステップ１５１０では、タイマ９０６が、設定条件に従って、要求スケジューラ９０８をトリガして新たな要求スケジューリング・プロセスを開始する準備を行わせる。
【０１９７】
ステップ１５２０では、トリガ条件はチップ状態維持が要求されることであるかどうかをチェックする。そうである場合にはステップ１５３０に進み、そうでない場合にはステップ１５４０に進む。
【０１９８】
ステップ１５３０では、トリガ条件はチップ状態維持が要求されることである場合には、チップ状態維持コマンドを発行し、ステップ１５９０に進む。
【０１９９】
ステップ１５４０では、トリガ条件は特殊要求待ち行列を処理する必要があることであるかどうかをチェックする。そうである場合には、ステップ１５５０に進み、そうでない場合には、ステップ１５６０に進む。
【０２００】
ステップ１５５０では、トリガ条件が特殊要求待ち行列を処理する必要があることである場合には、当該特殊要求待ち行列における要求を読み取り、一連の読書き動作に変換する。当該要求を処理した後、当該待ち行列における要求状態を修正するかまたは当該要求状態をクリアする。ステップ１５９０に進む。
【０２０１】
ステップ１５６０では、トリガ条件は最高優先度の読取り／書込み要求待ち行列を処理する必要があることであるかどうかをチェックする。そうである場合にはステップ１５７０に進み、そうでない場合にはステップ１５８０に進む。
【０２０２】
ステップ１５７０では、トリガ条件が最高優先度の読取り／書込み要求待ち行列を処理する必要があることである場合には、当該待ち行列内の全ての要求をクリアし、全ての読取り要求に結合マークを付し、ステップ１５９０に進む。
【０２０３】
ステップ１５８０では、トリガ条件は最高優先度を有さない読取り／書込み要求待ち行列を処理する必要があることである。当該読取り／書込み要求の最新状態に従って、対応する優先度を有する要求待ち行列における要求にアクセスし、必要な読書き動作を生成する。当該要求を処理した後、当該待ち行列における要求状態を修正するかまたは当該要求状態をクリアし、ステップ１５９０に進む。
【０２０４】
ステップ１５９０では、要求スケジューリング・プロセスが終了する。タイマによる次のスケジューリング・プロセスのトリガを待機する。
【０２０５】
以上の説明は本発明の技術的概念の基本的な説明にすぎない。不揮発性メモリ等に対する任意の新たなメモリ技術のような、本発明の技術的解決策に基づく任意の均等な変形は本発明の保護範囲に入るものとする。
【０２０６】
当業者は、特許請求の範囲で指定した本発明の範囲から逸脱しない修正を以上の内容に加えてもよい。したがって、本発明の保護範囲は以上の説明には限定されず、特許請求の範囲で指定した範囲に従って決定される。
【符号の説明】
【０２０７】
１２０  メッセージ・ベースのメモリ・コントローラ
１３０  メッセージ・チャネル
７００  メモリ・アクセス要求インタフェース
７０１  読取り／書込み要求ディストリビュータ
７０２  書込みデータ・バッファ
７０３  読取りデータ・バッファ
７０４  読取り／書込み要求予約局
７０５  要求生成スケジューリング・コンポーネント
７０６  メッセージ・パケット化器
７０７  メッセージ・アンパッカ
７０８  要求状態更新ユニット
７０９  要求応答コントローラ
７１０  コントローラ構成インタフェース
７１１  メッセージ・チャネル・インタフェース
９０１  メッセージ・チャネル・インタフェース
９０２  メッセージ・アンパッカ
９０３  要求ディストリビュータ
９０４  読取り／書込み要求待ち行列
９０５  特殊要求待ち行列
９０６  タイマ
９０７  状態維持ユニット
９０９  メモリ・コマンド生成ユニット
９１０  メッセージ・パケット化器
９１２  メモリ・チップ・インタフェース
【図１】
0005930439.tif 000002
【図２】
0005930439.tif 000003
【図３】
0005930439.tif 000004
【図４】
0005930439.tif 000005
【図５】
0005930439.tif 000006
【図６】
0005930439.tif 000007
【図７】
0005930439.tif 000008
【図８】
0005930439.tif 000009
【図９】
0005930439.tif 000010
【図１０Ａ】
0005930439.tif 000011
【図１０Ｂ】
0005930439.tif 000012
【図１１】
0005930439.tif 000013
【図１２】
0005930439.tif 000014
【図１３】
0005930439.tif 000015
【図１４】
0005930439.tif 000016
【図１５】
0005930439.tif 000017