特許第5930439号(P5930439)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ▲ホア▼▲ウェイ▼技術有限公司の特許一覧

特許5930439メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法
<>
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000002
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000003
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000004
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000005
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000006
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000007
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000008
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000009
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000010
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000011
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000012
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000013
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000014
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000015
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000016
  • 特許5930439-メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5930439
(24)【登録日】2016年5月13日
(45)【発行日】2016年6月8日
(54)【発明の名称】メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法
(51)【国際特許分類】
   G06F 13/16 20060101AFI20160526BHJP
   G06F 12/00 20060101ALI20160526BHJP
   G06F 9/34 20060101ALI20160526BHJP
【FI】
   G06F13/16 520B
   G06F12/00 597R
   G06F9/34 350A
【請求項の数】17
【全頁数】36
(21)【出願番号】特願2014-552501(P2014-552501)
(86)(22)【出願日】2013年1月18日
(65)【公表番号】特表2015-508546(P2015-508546A)
(43)【公表日】2015年3月19日
(86)【国際出願番号】CN2013070710
(87)【国際公開番号】WO2013107393
(87)【国際公開日】20130725
【審査請求日】2014年8月19日
(31)【優先権主張番号】201210016351.2
(32)【優先日】2012年1月18日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】504277388
【氏名又は名称】▲ホア▼▲ウェイ▼技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
(74)【代理人】
【識別番号】100146835
【弁理士】
【氏名又は名称】佐伯 義文
(74)【代理人】
【識別番号】100140534
【弁理士】
【氏名又は名称】木内 敬二
(72)【発明者】
【氏名】▲陳▼ 明宇
(72)【発明者】
【氏名】▲ルアン▼ 元
(72)【発明者】
【氏名】崔 ▲澤▼▲漢▼
(72)【発明者】
【氏名】▲陳▼ ▲リ▼城
(72)【発明者】
【氏名】黄 永兵
(72)【発明者】
【氏名】▲陳▼ 明▲揚▼
【審査官】 中野 裕二
(56)【参考文献】
【文献】 特開2011−034214(JP,A)
【文献】 国際公開第2010/141059(WO,A2)
【文献】 特表2007−529828(JP,A)
【文献】 特表2012−529103(JP,A)
【文献】 特表2008−547099(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00−12/06
G06F13/16−13/18
G06F9/34
(57)【特許請求の範囲】
【請求項1】
メッセージ・ベースのメモリ・アクセス要求を送信するように構成されたメッセージ・ベースのコマンド・バスと、
前記メッセージ・ベースのコマンド・バスから送信された前記メッセージ・ベースのメモリ・アクセス要求を受信し、要求状態テーブル内の前記メッセージ・ベースのメモリ・アクセス要求に対して属性を設定し、前記設定された属性に従って、前記メッセージ・ベースのメモリ・アクセス要求から、複数の分割要求を生成し、前記複数の分割要求を要求パケットにパッケージ化し前記要求パケットを記憶モジュールに送信し、前記記憶モジュールにより返却された応答パケットを解析し前記応答パケットに含まれる返却データを取得するために前記応答パケットをアンパックするように構成されたメッセージ・ベースのメモリ・コントローラと、
要求パケットを前記記憶モジュールに送信し、応答パケットを前記メッセージ・ベースのメモリ・コントローラに送信するように構成されたメッセージ・チャネルと、
バッファ・スケジューラを備え、前記要求パケットを前記メッセージ・ベースのメモリ・コントローラから受信し、前記メモリ・アクセス要求を取得するために前記要求パケットをアンパックし、前記メモリ・アクセス要求の意味情報に従って前記メモリ・アクセス要求の実行シーケンスをスケジュールするように構成され、応答パケットを生成し、前記応答パケットを前記メッセージ・ベースのメモリ・コントローラに送信するように更に構成された前記記憶モジュールと、
を備える、メッセージ・ベースのメモリ・アクセス装置。
【請求項2】
前記メモリ・アクセス要求の前記意味情報は、前記メッセージ・ベースのメモリ・コントローラおよび前記バッファ・スケジューラにおけるメモリ・アクセス・コマンドのスケジューリングを指示するためのデータ・アクセス優先度を含む、請求項1に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項3】
前記メッセージ・ベースのメモリ・コントローラはさらに、
CPUと前記メッセージ・ベースのメモリ・コントローラの間で要求を交換するように構成されたメモリ・アクセス要求インタフェースと、
要求状態テーブルを備えた読取り/書込み要求予約局であって、前記要求状態テーブルは、新たに受信した要求ごとにテーブル・エントリを割り当てるように構成された読取り要求状態テーブルと書込み要求状態テーブルから構成され、バッファ・スケジューラが要求に応答するときまたはメッセージ・ベースのコントローラが要求応答を当該CPUに送信するときに、当該要求状態テーブル内の対応するテーブル・エントリを更新または削除する必要がある、読取り/書込み要求予約局と、
前記読取り/書込み要求予約局の状態に従って、前記メモリ・アクセス要求インタフェースから受信したメモリ・アクセス要求が前記読取り要求状態テーブルまたは前記書込み要求状態テーブルに挿入されるかどうかを制御するように構成された読取り/書込み要求ディストリビュータであって、書込み要求を受信した場合には、メモリに書き込むべきデータを書込みデータ・バッファに一時的に保存する必要がある、読取り/書込み要求ディストリビュータと、
前記書込み要求のデータを一時的に保存するように構成された前記書込みデータ・バッファと、
前記読取り要求のデータを一時的に保存するように構成された読取りデータ・バッファと、
を備える、請求項1または2に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項4】
前記メッセージ・ベースのメモリ・コントローラはさらに、
要求の長さや時限遅延を含む前記要求状態テーブルにおける要求属性に従って複数の要求を生成するように構成され、更に、要求をスケジュールし、処理すべき次の要求を前記読取り要求状態テーブルおよび前記書込み要求状態テーブルにおける未処理の要求から選択し、選択した要求をメッセージ・パケット化器に送信するように構成された要求生成スケジュール・コンポーネントと、
1つまたは複数の要求を前記メッセージ・チャネルのメッセージ・パケットにパッケージ化し、メッセージ・チャネル・インタフェースを介して前記メッセージ・パケットを前記バッファ・スケジューラに送信するように構成された前記メッセージ・パケット化器と、
1つまたは複数の要求をメッセージ・パケットから抽出し、各要求の対応するデータ内容を解析するように構成されたメッセージ・アンパッカと、
各要求に従って、前記読取り/書込み要求予約局の要求状態テーブルを更新し、前記メッセージ・アンパッカによって解析された前記対応するデータコンテンツを前記読取りデータ・バッファに一時的に保存するように構成された要求状態更新ユニットと、
要求応答を前記CPUに送信するように構成された要求応答コントローラと、
前記メッセージ・ベースのメモリ・コントローラのパラメータを構成し、または、前記メモリ・アクセス要求インタフェースから送信された要求の属性を指定するように構成されたコントローラ構成インタフェースであって、前記読取り要求状態テーブルと前記書込み要求状態テーブルの前記属性の対応する値が更新される、コントローラ構成インタフェースと、
メッセージ・パケットをバッファ・スケジューラで送信するように構成されたメッセージ・チャネル・インタフェースであって、メッセージ・チャネルの様々な物理的実装に基づいて、前記メッセージ・チャネル・インタフェースは対応するインタフェース・タイプを有する、メッセージ・チャネル・インタフェースと、
を備える、請求項3に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項5】
前記読取り/書込み要求予約局において、前記読取り要求状態テーブルは、前記要求状態テーブルの要求のシーケンス番号に対応する前記読取り要求状態テーブルの項目番号の前記属性を含み、前記項目番号は、処理する要求を一意に指定するために前記メッセージ・ベースのメモリ・コントローラおよび前記バッファ・スケジューラのメッセージ・パケットにおいて使用され、要求アドレスは、アクセスされる前記メモリのベース・アドレスであり、時限遅延は、前記要求を前記CPUに返却するための時間を指定し、コントローラ構成インタフェースにより設定され、返却粒度は、前記メッセージ・ベースのメモリ・コントローラから毎回前記CPUに返されるデータの長さから構成され、データ状態は、前記記憶モジュールから取得された要求データと取得されなかった要求データを指定し、データ位置は、前記読取りデータ・バッファにおける前記読取り要求の前記データの位置を指定する、請求項3または4に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項6】
要求応答コントローラはさらに、CPU要求が前記バッファ・スケジューラと前記記憶モジュールにより処理された後、前記読取り/書込み要求予約局における要求の状態を問い合わせ、要求応答を前記CPUに送信し、読取り要求が処理された場合には、前記読取りデータ・バッファの前記対応する要求データを送信するように構成された、請求項3または4に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項7】
前記メッセージ・パケットの各々は1つまたは複数のメモリ・アクセス要求または応答に関する情報を含み、前記メッセージ・パケットにおける前記メモリ・アクセス要求の各々には同期タイミング・シーケンスの制限がないが前記メモリ・アクセス要求を返却する最大遅延に関する情報を有し、
コントローラ構成インタフェースは特殊コマンド・アドレス空間を前記メッセージ・ベースのメモリ・コントローラに提供し、前記コントローラの属性の構成を可能とし、メモリ・アクセス要求の属性の設定を可能とし、対応するメモリ・アクセス・コマンドを発行する、
請求項4乃至6の何れか1項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項8】
前記メッセージ・ベースのメモリ・アクセス・コントローラは、対応するメモリ・アクセス・コマンドを用いることによって、メモリ・アクセス・システムがデータをレジスタまたはアドレス可能高速バッファに定期的にプッシュすること、および、算術論理動作と移動動作がメモリ・システムにおいて実施されることをサポートするように、特殊コマンド・アドレス空間を提供し、メモリ・アクセスの原子性が設定され、または前記算術論理動作および前記移動動作はバッチで行われ、
読取り/書込み要求予約局は読取り要求状態テーブルと書込み要求状態テーブルを提供し、処理すべき各要求は前記読取り要求状態テーブルまたは前記書込み要求状態テーブルにおいて対応するテーブル・エントリを有し、各テーブル・エントリは前記要求のアドレスと長さだけでなく時限返却遅延、返却粒度、データ状態、およびデータ位置も含み、メッセージ・パケットにおいて、各要求は前記対応する要求状態テーブルにおける一意な項目番号により決定され、
前記メッセージ・ベースのメモリ・コントローラは、複数の要求を1つのメッセージ・パケットに含めることを可能とするだけでなく、各要求を分割して、前記記憶モジュールに送信すべき1つまたは複数のメッセージ・パケットに含めることも可能とし、前記メッセージ・ベースのメモリ・コントローラはまた、前記記憶モジュールが1つまたは複数のメッセージ・パケットを使用して1つの要求を処理できるようにし、
前記メッセージ・ベースのメモリ・コントローラに対して、複数の要求または1つの要求の複数のメッセージ・パケットはばらばらに返される、
請求項3乃至7の何れか1項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項9】
前記メッセージ・ベースのメモリ・コントローラはさらに、
複数の記憶モジュールのメッセージ・パケットが1つの読取り要求に対する応答に使用される場合には、前記要求の前記対応する読取り要求状態テーブルにおけるデータ状態が返却データと未返却データを特定し、完全に返却されていないデータがアドレス可能バッファまたはアドレス不可能バッファに保存され、前記データが前記アドレス不可能バッファに一時的に保存される場合には、要求データが完全に返却された後にのみ、前記CPUの前記読取り要求が応答され、前記要求データが前記CPUに送信され、前記データが前記アドレス可能バッファに一時的に保存される場合には、前記CPUは返却されたデータ部分を読み取る状況において使用される、請求項3乃至7の何れか1項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項10】
前記メッセージ・パケットのタイプは、メモリ・アクセス読取り/書込み要求パケット、特殊コマンド要求パケット、メモリ状態問合せパケット、および/または応答パケットを含む、請求項7乃至9の何れか1項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項11】
前記記憶モジュールの前記バッファ・スケジューラは、
メッセージ・パケットを前記メッセージ・ベースのメモリ・コントローラで送信するように構成されたメッセージ・チャネル・インタフェースと、
メモリ・アクセス要求に関する情報を受信したメッセージ・パケットから取得するように構成されたメッセージ・アンパッカであって、前記情報は要求のシリアル番号、要求のタイプ、要求の意味情報、アドレス、およびデータを含み、前記メモリ・アクセス要求に関する前記情報に基づいて前記要求のタイプを決定した後に、前記メッセージ・アンパッカが前記対応するルールに従ってアンパック動作を実施するメッセージ・アンパッカと、
前記メッセージ・アンパッカが解析したメモリ・アクセス要求を要求待ち行列に配分するように構成された要求ディストリビュータであって、スケジューリングは、各要求のアクセス・データの意味情報、要求された返却時間、および粒度情報に依存する、要求ディストリビュータと、
未処理の読取り/書込み要求を保存するように構成された読取り/書込み要求待ち行列であって、前記未処理の読取り/書込み要求は優先度が異なる待ち行列から構成され、高優先度待ち行列は、アクセス・データの粒度が小さく要求された返却時間が短い読取り/書込み要求または高優先度とマークされた読取り/書込み要求を保存し、低優先度待ち行列は、アクセス・データの粒度が大きく要求された返却時間が長い読取り/書込み要求または低優先度とマークされた読取り/書込み要求を保存する読取り/書込み要求待ち行列と、
未処理の非読取り/書込み要求を保存するように構成された特殊要求待ち行列と、
メモリ・アクセス要求を要求待ち行列から取得し、前記要求をコマンド生成ユニットに転送し、返却されたメモリ・アクセス・データをデータ・バッファから取得し、前記データをメッセージ・パケット化器に転送するように構成された要求スケジューラと、
スケジュールした後に実行する必要があるメモリ・アクセス要求を取得し、前記メモリ・アクセス要求をメモリ・チップにアクセスするための特定のコマンドに変換し、前記メモリ・チップの状態を必要に応じて前記要求スケジューラにより維持するためのコマンドを発行するように構成された前記コマンド生成ユニットと、
返却されたデータと前記対応する要求シリアル番号を前記要求スケジューラから取得し、応答パケットを生成し、前記パケットを前記メッセージ・ベースのメモリ・コントローラに送信し戻すように構成されたメッセージ・パケット化器であって、前記要求スケジューラが生成した返却データに対するマークに従って、前記メッセージ・パケット化器が、複数の要求を1つの応答パケットにパッケージ化し前記メッセージ・ベースのメモリ・コントローラに送信できるようにする、メッセージ・パケット化器と、
メモリ・チップへのアクセスに関する返却データを保存するように構成されたデータ・バッファであって、前記返却データから、前記要求スケジューラが要求データを選択し、前記データを前記メッセージ・パケット化器に送信する、データ・バッファと、
メモリ・チップにアクセスするためのコマンドを前記コマンド生成ユニットから受信し、前記コマンドを前記記憶モジュールの前記メモリ・チップに送信し、返却データを受信した後に、前記データを前記データ・バッファに保存するように構成されたメモリ・チップ・インタフェースと、
を備える、請求項1乃至10の何れか1項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項12】
前記記憶モジュールの前記バッファ・スケジューラはさらに、
必要に応じて異なる時間間隔でパルスを出力し必要に応じて前記要求スケジューラと状態維持ユニットに対するクロック・トリガを有効にするように構成されたタイマと、
前記バッファ・スケジューラに接続された各メモリ・チップの状態を維持し、充電コマンドおよび/またはリフレッシュ・コマンドを発行するように構成された前記状態維持ユニットと、
を備える、請求項11に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項13】
前記要求スケジューラはさらに、要求の状況に従って高優先度待ち行列のメモリ・アクセス要求に対する動作を完了するように構成され、前記要求スケジューラは複数の要求に結合マークを付し、前記要求の全ての返却データが前記データ・バッファに保存されるときには、前記データを前記メッセージ・パケット化器に転送して1つの応答パケットにパッケージ化し、低優先度待ち行列におけるメモリ・アクセスのデータ量が大きい要求に対しては、前記要求スケジューラが前記要求を幾つかのステップに分割し各ステップの処理結果を前記メッセージ・パケット化器に転送して1つの応答パケットにパッケージ化して復帰する、請求項11に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項14】
前記記憶モジュールはさらに、
前記メッセージ・ベースのメモリ・コントローラからのメモリ・アクセス要求に対しては、前記記憶モジュールが前記要求を複数のステップで処理して複数の応答パケットを返し、前記メッセージ・ベースのメモリ・コントローラからの複数のメモリ・アクセス要求に対しては、前記記憶モジュールが前記要求の全てを処理し1つの応答パケットを用いて全ての要求に応答し、前記記憶モジュールが、要求の優先度、要求の意味情報、および前記記憶モジュールのメモリ・チップの状態に従って、前記メッセージ・ベースのメモリ・コントローラからのメモリ・アクセス要求を実行する順序をスケジュールするというという状況において使用される、請求項1乃至13の何れか1項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項15】
前記記憶モジュールのメモリ・ユニットは、同期メモリ・チップおよび/または非同期ネットワーク接続に基づくメモリ・チップである、請求項1乃至14の何れか1項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項16】
前記バッファ・スケジューラによりサポートされる特別なメッセージ・ベースのメモリ・アクセス命令は、タイミング・プッシュ命令、メモリ・システムにおける単純な算術論理動作および移動命令、ならびに圧縮記憶を含む、請求項1、11、または12の何れか1項に記載のメッセージ・ベースのメモリ・アクセス装置。
【請求項17】
前記メッセージ・チャネルは、メッセージ・パケット内のメッセージをパラレル・バス、ポイント・ツー・ポイント・シリアル・バス、または使用する他のトポロジ構造を有するネットワークで送信するように構成された、請求項1乃至16の何れか1項に記載のメッセージ・ベースのメモリ・アクセス装置。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の記載
本願は、発明の名称を「メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法」とした2012年1月18日に中国国家知的産権局に出願した中国特許出願第201210016351.2号に対する優先権を主張し、その全体を引用により本明細書に組み込む。
【0002】
本発明は、コンピュータ・システム設計の分野に関し、特に、メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法に関する。
【背景技術】
【0003】
コンピュータのメモリ・システムは、システム構造とソフトウェア性能に影響を及ぼす重要な要素の1つである。過去数十年の間に、プロセッサ性能とメモリ性能のギャップは益々増大し、メモリ・システムはシステム性能を制限するボトルネックとなっている。近年では、プロセッサがマルチコア構造および多コア構造に発展するにつれて、メモリ・システムのアクセス帯域幅の問題がより深刻になっている。当該問題は、マルチコアのプロセッサの開発範囲をさらに制限するものである。
【0004】
過去、有効な帯域幅を改善するための主なアプローチは、バス周波数を改良することおよびデータ・チャネルの数を増大させること、即ち、物理的な帯域幅を増大させることであった。しかし、同期バス・ベースのメモリ・アクセス構造は近年では大きな変化をもたらしていない。SDRAM(Synchronus Dynamic Random Access Memory、同期ダイナミック・ランダム・アクセス・メモリ)が1990年代半ばに現れ、SDRAM、DDR(Double Data Rate)、DDR2、およびDDR3へと発展し、現在ではDDR4が公開されようとしている。SDRAMは同期インタフェースを使用し、応答を得るために全ての要求が固定のクロック期間を待機する必要がある。SDRAMが公開されているので、メモリ・バス構造を本質的に変更することは困難である。基本的に、SDRAMはインタフェース周波数の一貫した改良を通じた帯域幅の改善に基づいて開発されている。
【0005】
現在、メモリ構造を変更しようとする試みが国際的規模で行われている。例えば、RambusのRDRAMおよびXDR(eXtreme Data Rate)の技術では、パケット・ベースの要求/応答プロトコルが使用され、比較的狭いが高いデータ速度を有するシリアル・メモリがデータ・パケットの送信に使用されている。アドバンスト・メモリ・バッファ(AMB、Advanced Memory Buffer)がIntelのFB−DIMM(Fully Buffered−DIMM)デュアル・インライン・メモリ・モジュール(DIMM)に追加され、高速シリアル・チャネルを介して隣接DIMM上のメモリ・コントローラまたはAMBにFB−DIMMを接続することができる。高周波数信号の品質を改善するために、同様な全データ・バッファ(all−data buffer)がLRDIMM(Load−Reduced DIMM)、DDR4、および他の技術で使用されている。しかし、これらの試みはメモリ構造を部分的に変更するにすぎない。具体的には、データ送信がパラレル・バス形式からパケット形式に変換されているが、同期アクセス・プロトコルが依然としてタイミング・シーケンスの点で必要である。
【発明の概要】
【発明が解決しようとする課題】
【0006】
一方では、既存の同期メモリ・システムは主に、単一のメモリ・アクセスの遅延が固定されかつ短いことを保証するために設計されている。しかし、マルチコア構造が使用されるときには、メモリ・アクセス遅延には実際には2つの部分、即ち、プロセッサのメモリ・アクセス待ち行列における待機時間とメモリ・アクセス・チャネル上の遅延が含まれる。明らかに、メモリ・アクセス・チャネル上の短い遅延では良好な全体メモリ・アクセス性能を保証することができない。
【0007】
他方では、従来のメモリ・アクセスのデータ粒度は固定され、かつ、増大する傾向にある。これは、1送信期間においてより多くのデータが送信されることを保証するためであり、各時刻でのデータ読出しの長さは基本的にCPUキャッシュ・ラインの長さである。しかし、実際のプログラムでは、データ・アクセスごとに実際の粒度は変化する。粒度が低く不規則な一部のアプリケーションのデータ・アクセスに関して、アクセスごとに大規模なデータ粒度が固定されているため無駄は避けられない。一部のアプリケーションのために大量のデータを読み出して書き込む必要があるときには、データ・アクセスを複数のメモリ・トランザクションに分割する必要がある。その結果、プロトコル・オーバヘッドが増大する。これらは全て、メモリ・アクセス帯域幅の無駄の原因となる。
【課題を解決するための手段】
【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で、要求スケジューリング・プロセスが終了する。タイマによる次のスケジューリング・プロセスのトリガを待機する。
【発明の効果】
【0081】
本発明の有利な効果は、元の同期メモリ・アクセス構造を変更することにより従来の同期バス・トランザクションが非同期要求メッセージと応答メッセージで置き換えられ、これにより、メモリ・アクセス構造およびアプリケーションのメモリ・アクセス・インタフェースの並列性と柔軟性が高まり、その結果、CPUメモリ・チャネルの利用率が向上することである。
【図面の簡単な説明】
【0082】
図1】本発明に従う、メッセージ・ベースのメモリ・アクセス装置の全体構造図である。
図2】本発明に従う、メッセージ・ベースのメモリ・コントローラと記憶モジュールの間で送信されるメッセージ・パケットのフォーマットの図である。
図3】本発明に従う、メッセージ・パケットのヘッダのフォーマットの図である。
図4】本発明に従う、メモリ・アクセス読取り/書込み要求パケットのフォーマットの図である。
図5】本発明に従う、状態問合せ要求パケットのフォーマットの図である。
図6】本発明に従う、応答パケットのフォーマットの図である。
図7】本発明に従うメッセージ・ベースのメモリ・コントローラの略構造図である。
図8】本発明に従う、メッセージ・ベースのメモリ・コントローラの読取り要求状態テーブルにおけるテーブル・エントリのフォーマットの図である。
図9】本発明に従う、記憶モジュールのバッファ・スケジューラの略構造図である。
図10A】本発明に従う、メッセージ・ベースのメモリ・アクセス方法の流れ図である。
図10B】本発明に従う、メッセージ・ベースのメモリ・アクセス方法の流れ図である。
図11】本発明に従う、メッセージ・ベースのメモリ・コントローラによりメモリ・アクセス要求を受信する流れ図である。
図12】本発明に従う、メッセージ・ベースのメモリ・コントローラによりメモリ・アクセス要求をスケジューリングし処理する流れ図である。
図13】本発明に従う、メッセージ・ベースのメモリ・コントローラにより応答パケットを受信し処理する流れ図である。
図14】本発明に従う、メッセージ・ベースのメモリ・コントローラによりCPUへの要求に応答する流れ図である。
図15】本発明に従う、バッファ・スケジューラによりメモリ・アクセス要求をスケジュールする流れ図である。
【発明を実施するための形態】
【0083】
以降、添付図面を参照して本発明の具体的な実施方式を詳細に説明する。本発明の目的は、CPUメモリ・チャネルの有効利用率を高め、メッセージ・ベースのメモリ・アクセス装置を提供することである。
【0084】
先ず、本発明では、物理的な帯域幅が制限されていても利用率を高めることによて有効な帯域幅を増大することができる。しかし、従来のメモリ・システムでは、遅延が固定され粒度が固定された受動的な同期シーケンス・メモリ・アクセス構造を使用している。当該構造では、可能で有効な技術的アプローチの適用が制限される。
【0085】
本発明では、「メッセージ」(message)に基づく新たな構造を検討する。従来の同期バス・トランザクションを、元の同期メモリ・アクセス構造を変更することにより、非同期で並列な要求メッセージと応答メッセージで置き換える。これにより、メモリ・アクセス構造とアプリケーションのメモリ・アクセス・インタフェースの柔軟性が向上し、それによりCPUメモリ・チャネルの利用率が向上する。
【0086】
本発明は、対応する動作を実施するようにメモリ・システムに指示するためのCPUにより生成されたメッセージ・ベースのメモリ・アクセス命令を送信するように構成されたメッセージ・ベースのコマンド・バスと、CPU要求をメッセージ・パケットにパッケージ化し当該パケットを記憶モジュールに送信し、当該記憶モジュールが返却したメッセージ・パケットを解析し、データをCPUに返すように構成されたメッセージ・ベースのメモリ・コントローラと、要求メッセージ・パケットと応答メッセージ・パケットを送信するように構成されたメッセージ・チャネルと、バッファ・スケジューラを備え、当該メッセージ・ベースのメモリ・コントローラから要求パケットを受信し、対応する要求を処理するように構成された当該記憶モジュールとを備えたメッセージ・ベースのメモリ・アクセス装置を提供する。
【0087】
当該メッセージ・ベースのコマンド・バスは要求のメモリ・アクセス長を指定してもよく、当該メモリ・アクセス長がレジスタの長さより大きいかまたは小さくてもよい。
【0088】
メッセージ・ベースのコマンド・バスに関して、キャッシュを通過することなく、要求データをキャッシュ、CPUのアドレス可能バッファ、またはレジスタもしくはレジスタ・グループに返してもよい。
【0089】
メッセージ・ベースのコマンド・バスに関して、当該メッセージ・ベースのメモリ・コントローラおよび当該バッファ・スケジューラにおけるメモリ・アクセス・コマンドのスケジューリングを指示するためのデータ・アクセス優先度に関する情報を要求に付加して、スケジューリングの基盤をメモリ・システムに提供してもよい。
【0090】
当該メッセージ・ベースのメモリ・コントローラと当該記憶モジュールの間のやりとりはメッセージ・パケットに基づいて完了する。各メッセージ・パケットは、1つまたは複数のメモリ・アクセス要求の情報またはデータを含むことができる。メッセージ・パケットの要求には同期タイミング・シーケンスの制限がないが、当該要求が当該要求の返却の最大遅延や他の情報を含んでもよい。
【0091】
当該メッセージ・ベースのメモリ・コントローラに関して、当該コントローラ構成インタフェース・ユニットは、特殊コマンド・アドレス空間を当該メッセージ・ベースのメモリ・コントローラに提供し、メモリ・アクセス要求の時限返却遅延や粒度の設定のような、当該コントローラの属性の構成やメモリ・アクセス要求の属性の設定を可能とし、特別なメモリ・アクセス・コマンドを発行できるようにする。
【0092】
当該メッセージ・ベースのメモリ・アクセス・コントローラとコマンド・アドレス空間は、特殊コマンドを使用することによって、メモリ・アクセス・システムがデータをレジスタまたはアドレス可能高速バッファに定期的にプッシュすること、および、単純な算術論理動作と移動動作が当該メモリ・システムにおいて実施されることをサポートしてもよい。この場合、メモリ・アクセス原子性を設定するか、または、動作をバッチで実施してもよい。
【0093】
当該メッセージ・ベースのメモリ・コントローラに関して、読取り/書込み要求予約局が読取り要求状態テーブルと書込み要求状態テーブルを提供する。処理すべき各要求は、読取り要求状態テーブルまたは書込み要求状態テーブルにおいて対応するテーブル・エントリを有する。各テーブル・エントリは、要求のアドレスと長さだけでなく、時限返却遅延、返却粒度、データ状態、データ位置、および要求の他の追加属性を含む。メッセージ・パケットでは、各要求は、対応する要求状態テーブル内の一意な項目番号によって決定される。
【0094】
当該メッセージ・ベースのメモリ・コントローラに関して、当該メッセージ・ベースのメモリ・コントローラは、複数の要求を1つのメッセージ・パケットに含めることを可能とするだけでなく、各要求を分割し記憶モジュールに送信すべき1つまたは複数のメッセージ・パケットに含めることを可能とする。当該メッセージ・ベースのメモリ・コントローラはまた、当該記憶モジュールが1つまたは複数の応答情報パケットを使用して1つの要求を処理できるようにする。
【0095】
当該メッセージ・ベースのメモリ・コントローラに関して、複数の要求または1つの要求の複数の応答メッセージ・パケットをばらばらに返却してもよい。
【0096】
当該メッセージ・ベースのメモリ・コントローラに関して、複数の記憶モジュールのメッセージ・パケットが1つの読取り要求に対する応答に使用される場合には、当該要求の対応する読取り要求状態テーブルにおけるデータ状態が返却データと未返却データを特定する。完全に返却されていないデータを、アドレス可能バッファまたはアドレス不可能バッファに保存してもよい。当該データがアドレス不可能バッファに一時的に保存される場合には、当該要求データが完全に返却された後にのみ、CPUの読取り要求が応答され当該要求データがCPUに送信される。当該データがアドレス可能バッファに一時的に保存される場合には、CPUは全てのデータが返却されるのを待機することなく返却データを読み取ることができる。
【0097】
当該メッセージ・パケットはメモリ・アクセスの意味情報を含んでもよい。メモリ・アクセスの意味情報には、スレッド情報、オブジェクト情報、および優先度情報が含まれるがこれらに限らない。
【0098】
当該メッセージ・チャネルに関して、データは、パラレル・バス、ポイント・ツー・ポイント・シリアル・バス、または使用する他のトポロジ構造を有するネットワークを用いてメッセージ・パケットで送信される。
【0099】
バッファ・スケジューラを備えた記憶モジュールに関して、メッセージ・ベースのメモリ・コントローラにより送信されたメモリ・アクセス要求を複数のステップで処理してもよく、当該要求に複数のメッセージ・パケットで応答してもよい。
【0100】
バッファ・スケジューラを備えた記憶モジュールに関して、複数のメッセージ・ベースのメモリ・コントローラにより送信されたメモリ・アクセス要求に対して、当該要求の処理後に1つのメッセージ・パケットだけで応答してもよい。
【0101】
バッファ・スケジューラを備えた記憶モジュールが、メッセージ・ベースのメモリ・コントローラが送信したメモリ・アクセス要求の実行順序を、要求の優先度、要求の意味情報、および当該記憶モジュールのメモリ・チップの状態に基づいてスケジュールしてもよい。
【0102】
バッファ・スケジューラを備えた記憶モジュールに関して、当該バッファ・スケジューラは、ロード/ストア以外の特別なメッセージ・ベースのメモリ・アクセス命令をサポートする。当該命令には、タイミング・プッシュ命令、当該メモリ・システムにおける単純な算術論理動作および(原子動作やバッチ処理をサポートする)移動命令、および圧縮記憶が含まれるがこれらに限らない。
【0103】
バッファ・スケジューラを備えた記憶モジュールに関して、当該記憶モジュールのメモリ・ユニットは、同期メモリ・チップまたは非同期ネットワーク接続に基づくメモリ・チップの何れかであってもよい。
【0104】
本発明の目的、技術的解決策、および利点をより明確にするために、以下では本発明のメッセージ・ベースのメモリ・アクセス装置とメッセージ・ベースのメモリ・アクセス方法を、本発明の添付図面と諸実施形態を参照してさらに説明する。本明細書の具体的な諸実施形態は本発明を説明するためのものにすぎず、本発明を限定するものではないことは理解される。
【0105】
図1に示すように、当該メッセージ・ベースのメモリ・アクセス装置は、メッセージ・ベースのコマンド・バス110、メッセージ・ベースのメモリ・コントローラ120、メッセージ・チャネル130、およびバッファ・スケジューラを備えた記憶モジュール140を備える。これらの機能ユニットは、メッセージ・パケットを用いることによりCPUのメモリ・アクセスを実施する。制御可能な遅延と可変な粒度が実現され、意味情報のメッセージ・ベースのメモリ・アクセスがサポートされる。
【0106】
CPUの特殊コマンド・アドレス空間に対するメモリ・アクセス命令またはアクセスが、メッセージ・ベースのコマンド・バス110上のメッセージ・ベースのメモリ・アクセス要求に変換される。従来のロード・ストアのメモリ・アクセス命令と比べると、当該メッセージ・ベースのメモリ・アクセス装置では、CPUが、メモリ・アクセス・データ粒度の大きさと速度、データ返却のタイミングと方式、および他の意味情報を指定することができる。
【0107】
メッセージ・ベースのメモリ・コントローラ120は、受信したメモリ・アクセス要求をスケジュールし、当該要求を要求パケットに変換し、当該パケットをメッセージ・チャネル130に配置して、処理されている全てのメモリ・アクセス要求の状態を維持する。メッセージ・チャネル130で返却された応答パケットを解析するとき、メッセージ・ベースのメモリ・コントローラ120は当該応答パケットをアンパックして、メモリ・アクセス要求の返却データを取得する。
【0108】
記憶モジュール140は、当該バッファ・スケジューラを介して要求パケットをメッセージ・チャネル130で受信し処理し、当該要求を解析し、特定のメモリ・チップにアクセスし、応答パケットに返却する必要があるデータをパッケージ化し、当該応答パケットをメッセージ・ベースのメモリ・コントローラ120に送信する。
【0109】
メッセージ・ベースのコマンド・バス110は主に、以下の3種類のメッセージ・ベースのメモリ・アクセス命令をサポートする。
【0110】
1.メッセージ・ベースのメモリ・ロード・ストア命令。これは、共通メモリ・ロード・ストア命令に対して粒度と優先度パラメータを追加することによって得られる。CPUは先ず、特殊コマンド・アドレス空間の特別な位置でメモリ・アクセス・データのサイズとアクセス優先度を設定し、メッセージ・ベースのメモリ・ロード・ストア命令を実行する。即ち、指定された長さのデータをメモリから取り出して、要求された優先度に基づいてキャッシュに保存することができる。
【0111】
2.時限返却命令。これにより、メモリ・システムは当該命令で指定されたデータ・アレイを後続の時間間隔において定期的に返却することができる。CPUは最初に当該時間間隔と、特殊コマンド・アドレス空間の指定位置でのメモリ・アクセスの返却時刻を設定し、時限返却命令を実行する。当該命令の実行中は、当該メッセージ・ベースのメモリ・コントローラまたはバッファ・スケジューラが要求された読取りコマンドを定期的に生成し、当該コマンドをコマンド待ち行列または要求待ち行列に挿入する。メモリ・システムにより返却されたデータはキャッシュを通ることなく直接レジスタに送信される。プリフェッチと比べて、時限返却ではバッファの占有が減る。
【0112】
3.原始性とバッチ処理をサポートする、メモリ・システムにおける単純な算術論理動作とコピー命令。当該命令により、メモリ・システムは、CPUを用いることなく、幾つかの単純な算術論理動作(加算、減算、AND、OR、XOR、およびその他の動作。動作結果はメモリ・ユニットに書き込まれる)およびメモリ・ユニットに対する幾つかのコピー動作を実施してもよい。当該命令はバッチ処理をサポートする。特殊コマンド・アドレス空間の指定位置で、メモリ・システムが実行する動作のタイプのような、命令のパラメータをそれが原子動作であるか否かに関わらず設定し、バッチ処理の動作時刻を設定し、次いで命令MOPR1、R2、R3を実行する必要がある。当該命令において、R1およびR2はソース・オペランドのアドレスを格納し、R3は宛先オペランドのアドレスを格納する。当該命令の実行中に、バッファ・スケジューラまたはメッセージ・ベースのメモリ・コントローラが当該動作とコピーを実行し、当該動作の原始性を保証し、動作回数を制御する。単純な動作ではデータをCPUに移動する必要はなく、それにより総メモリ・アクセス量が減る。
【0113】
メッセージ・ベースのメモリ・コントローラ120と記憶モジュール140は、メッセージ・パケットを用いることにより互いと通信する。サポートされるメッセージ・パケットのタイプには、メモリ・アクセス読取り/書込み要求パケット、特殊コマンド要求パケット、メモリ状態問合せパケット、および応答パケットがある。図2に示すように、メッセージ・パケット200は、1つのヘッダ202、および1つまたは複数のメモリ・アクセス要求または応答204、206、および208を含む。ヘッダ202は、パケット・タイプ、要求の数、各要求の長さ、パケットの長さ、耐故障、およびその他のような、メッセージ・パケットのメタデータを指定する。当該メッセージ・ベースのメモリ・コントローラから当該記憶モジュールに送信されたメモリ・アクセス読取り/書込み要求パケットは、1つまたは複数のメモリ・アクセス読取り/書込み要求を含んでもよい。202、204、または206を含む各メモリ・アクセス要求は要求識別子、メモリ・アクセス・アドレス、メモリ・アクセス粒度、およびメモリ・アクセス動作を含み、さらに、幾つかの意味情報を含んでもよい。加えて、書込み要求がさらにデータを含んでもよい。記憶モジュールから当該メッセージ・ベースのメモリ・コントローラに送信された応答パケットが1つまたは複数の応答を含んでもよく、各応答パケットは要求識別子、返却データ、およびその他を含む。
【0114】
各メッセージ・パケットがヘッダ300を含んでもよい。図3に示すように、ヘッダ情報は、パケット・タイプ302、ソース・モジュール識別子304、ターゲット・モジュール識別子306、含まれる要求/応答の数308、各要求/応答の長さ310、312、または314、パケット長316、およびパケット全体の耐故障情報318を含む。パケット・タイプ302は、バス上のパケットのタイプを指定する。サポートされるパケット・タイプには、メモリ・アクセス読取り/書込み要求パケット、特殊コマンド要求パケット、メモリ状態問合せパケット、および応答パケットが含まれる。ソース・モジュール識別子304は、メッセージ・パケットを送信するモジュール(メッセージ・ベースのメモリ・コントローラまたは記憶モジュール)の数を指定する。例えば、複数のメッセージ・ベースのメモリ・コントローラを備えたシステムに関して、ソース・モジュール識別子304はメモリ・アクセス読取り/書込み要求を送信したメッセージ・ベースのメモリ・コントローラの識別子を指定してもよい。ターゲット・モジュール識別子306は、メッセージ・パケットを受信し処理するモジュール(メッセージ・ベースのメモリ・コントローラまたは記憶モジュール)の数を指定する。含まれる要求/応答の数308は、メッセージ・パケットに含まれる要求または応答の数を指定する。含まれる要求がパケット・タイプと整合しなければならないことに留意されたい。例えば、パケット・タイプがメモリ・アクセス読取り要求パケットである場合には、当該メッセージ・パケット内の要求は全てメモリ・アクセス読取り要求でなければならない。各要求/応答の長さ310、312、または314は、各要求または応答のサイズを指定し、メッセージ・パケット内の各要求または応答の位置(オフセット)のアドレス指定を支援する。パケット長316は、メッセージ・パケット全体の長さを指定する。パケット全体の耐故障情報318は、バス上でのメッセージ・パケットの送信処理においてエラーが発生したかどうかを指定する。パケット全体の耐故障情報318には、パリティ・チェック(Parity)、チェックサム(Checksum)、エラー訂正コード(ECC)、および他の耐故障技術の使用が含まれるがこれらに限らない。
【0115】
メモリ・アクセス読取り/書込み要求パケットは、1つまたは複数のメモリ・アクセス読取り/書込み要求400を記憶モジュールに送信するためにメッセージ・ベースのメモリ・コントローラにより使用される。ヘッダに加えて、図4に示すように、各メモリ・アクセス読取り/書込み要求400は要求識別子402、動作コード404、メモリ・アクセス・アドレス406、およびメモリ・アクセス粒度408を含み、意味情報410をさらに含んでもよい。加えて、メモリ・アクセス書込み要求はさらにデータ412を含む。要求識別子402は、要求ごとにメッセージ・ベースのメモリ・コントローラにより配分された一意な識別子である。動作コード404は、読取り要求または書込み要求のようなメモリ要求動作を指定する。メモリ・アクセス・アドレス406は、メモリ・アクセス要求の基本物理アドレスを指定する。メモリ・アクセス粒度408は、小型粒度8Bまたは大型粒度4KBのような、メモリ・アクセス要求のデータの粒度(または長さ)を指定する。意味情報410は、記憶モジュールがメッセージ・ベースのメモリ・コントローラを介して送信したプログラム実行情報を指定し、メモリ・アクセス要求の優先度、メモリ・アクセス要求処理のタイムアウト(Timeout)、メモリ・アクセス要求を送信したCPUのコア識別子(Core ID)、およびその他のような、記憶モジュールのバッファ・スケジューラのスケジューリングを指示するために使用される。データ412は、さらにメモリ・アクセス書込み要求に含まれ、指定の物理アドレスに書き込まれるデータを指定する。
【0116】
特殊コマンド要求パケットは、単純な算術論理動作、移動動作、原子動作、圧縮等のような特殊な処理コマンドをメッセージ・ベースのメモリ・コントローラが記憶モジュールに送信するために使用される。
【0117】
メモリ状態問合せパケットは、メッセージ・ベースのメモリ・コントローラが記憶モジュール上の状態情報の様々なタイプを問い合わせるために使用される。各メモリ状態問合せパケットは1つの問合せ要求のみを含む。したがって、要求ヘッダ内の要求の数は常に1に設定される。図5に示すように、各状態問合せ要求500は状態問合せタイプ502と状態問合せ識別子504を含む。状態問合せタイプ502は、読取り/書込み要求待ち行列が満杯であるかどうか、特殊要求待ち行列が満杯であるかどうか、メモリ・チップが低電力消費状態にあるかどうか等のような、問い合わせた記憶モジュールの状態のタイプを指定する。状態問合せ識別子504は、メッセージ・ベースのメモリ・コントローラにより配分された状態問合せ要求識別子であり、メッセージ・ベースのメモリ・コントローラが応答を記憶モジュールから受信した後に状態問合せ要求をアドレス指定するために使用される。
【0118】
応答パケットは、記憶モジュールが1つまたは複数の返却された応答をメッセージ・ベースのメモリ・コントローラに送信するために使用される。ヘッダに加えて、図6に示すように、各応答600は応答タイプ602と要求識別子604を含み、さらに、副次的応答の数606、副次的応答識別子608、データ610、または状態値612を含んでもよい。応答タイプ602は、メモリ・アクセス読取り要求応答、状態問合せ要求応答、およびその他のような様々な種類の要求に対して返却された対応する応答を指定する。要求識別子604は、メモリ・アクセス読取り要求識別子または状態問合せ要求識別子のような、応答の対応する要求識別子である。メモリ・アクセス読取り要求応答に関しては、大きな粒度のデータが要求された場合には、記憶モジュールが、応答を返すときに1つの単体の要求データを複数の副次的応答に分割し、当該副次的応答を1つの応答パケットにパッケージ化して返すかまたは複数の応答パケットにパッケージ化して別々に返してもよい。この場合、副次的応答の数606は副次的応答の数を指定し、副次的応答識別子608は現在返却されている副次的応答の識別子を指定する。メッセージ・ベースのメモリ・コントローラが指定数の副次的応答を1つまたは複数の応答パケットから取得した後、メモリ・アクセス読取り要求が処理される。メモリ・アクセス読取り要求応答はさらに、記憶モジュールからメッセージ・ベースのメモリ・コントローラに読み出したデータ610を含む。状態問合せ要求応答はさらに、読取り/書込み要求待ち行列が満杯であることのような、メモリに対応する返却された状態値612を含む。
【0119】
図7に示すように、メッセージ・ベースのメモリ・コントローラは、メモリ・アクセス要求インタフェース700、読取り/書込み要求ディストリビュータ・ユニット701、書込みデータ・バッファ・ユニット702、読取りデータ・バッファ・ユニット703、読取り/書込み要求予約局704、要求生成スケジュール・コンポーネント705、メッセージ・パケット化器706、メッセージ・アンパッカ707、要求状態更新ユニット708、要求応答コントローラ709、コントローラ構成インタフェース710、およびメッセージ・チャネル・インタフェース711を備える。当該ユニットにより実装されたメッセージ・ベースのメモリ・コントローラはメッセージ・パケットを使用して、バッファ・スケジューラとの対話を実施し、記憶モジュール・ユニットを使用して要求の処理を完了する。当該メッセージ・ベースのメモリ・コントローラは、粒度が可変で返却タイミングが制限されたメモリ・アクセス要求の処理をサポートする。さらに、当該メッセージ・ベースのメモリ・コントローラにより、1つの読取り要求データを複数のメッセージ・パケットでばらばらに返却することができる。これにより、メモリ帯域幅の利用率を向上させることができる。
【0120】
メモリ・アクセス要求インタフェース700は、CPUとメッセージ・ベースのメモリ・コントローラの間の要求交換インタフェースである。当該インタフェースは、CPUがメモリ・アクセス要求をメッセージ・ベースのメモリ・コントローラに送信するために使用され、当該メッセージ・ベースのメモリ・コントローラがメモリ・アクセス要求応答をCPUに送信するためにも使用される。加えて、当該インタフェースが、メッセージ・ベースのメモリ・コントローラを構成するためのコマンドを送信してもよい。
【0121】
読取り/書込み要求ディストリビュータ・ユニット701は、図8に示すように、メッセージ・ベースのメモリ・コントローラの残存空間が含むことができるメモリ・アクセス要求の数のような、読取り/書込み要求予約局の状態に従って、当該メモリ・アクセス要求インタフェースから受信したメモリ・アクセス要求を読取り要求状態テーブルまたは書込み要求状態テーブルに挿入できるかどうかを制御する。書込み要求を受信した場合には、メモリに書き込むべきデータを書込みデータ・バッファ・ユニット702に一時的に保存する必要がある。
【0122】
書込みデータ・バッファ・ユニット702は、書込み要求のデータを一時的に保存するように構成される。当該書込み要求をスケジュールするとき、当該要求に対応するデータをメッセージ・パケットに埋めて、バッファ・スケジューラに送信する必要がある。
【0123】
読取りデータ・バッファ・ユニット703は、読取り要求のデータを一時的に保存するように構成される。メッセージ・ベースのメモリ・コントローラにより1つの要求データを複数のメッセージ・パケットで返却することができるので、読取りデータ・バッファ内のデータが当該要求の要求データの単なる一部であってもよく、ばらばらであってもよい。読取り要求状態テーブルは、各要求の返却データ・ブロックと対応するデータ位置とを読取りデータ・バッファに記録する。さらに、メッセージ・ベースのメモリ・コントローラは要求の時限返却の機能を有する。したがって、要求の全てのデータが読取りデータ・バッファに一時的に保存された場合でも、当該要求を即座に返却しなくともよい。
【0124】
読取り/書込み要求予約局ユニット704は、要求を制御し管理するための主要なユニットである。読取り/書込み要求予約局ユニット704は、読取り要求状態テーブルと書込み要求状態テーブルから構成される。当該要求状態テーブルは、新たに受信した要求ごとにテーブル・エントリを配分する。バッファ・スケジューラにより要求が応答されるかまたはメッセージ・ベースのメモリ・コントローラが要求の応答をCPUに送信するときに、当該要求状態テーブル内の対応するテーブル・エントリを更新するかまたは削除する必要がある。
【0125】
読取り要求状態テーブル内のテーブル・エントリを図8に示す。項目番号は当該要求状態テーブルの要求のシーケンス番号に対応する。当該項目番号は、当該メッセージ・ベースのメモリ・コントローラおよびバッファ・スケジューラのメッセージ・パケットにおいて、処理する要求を一意に指定するために使用される。要求アドレスは、アクセスされるメモリのベース・アドレスである。従来のメッセージ・ベースのメモリ・コントローラの固定されたメモリ・アクセス要求の長さとは異なり、当該メッセージ・ベースのメモリ・コントローラは、長い要求を処理してメモリ帯域幅の有効性を高める。時限遅延は、要求をCPUに返却する時間を指定し、主にコントローラ構成インタフェースを介して設定される。返却粒度は、当該メッセージ・ベースのメモリ・コントローラから毎回CPUに返されるデータの長さを指定する。データ状態は、記憶モジュールから取得された要求された要求データ、および、取得されていない要求された要求データを指定する。データ位置は、読取りデータ・バッファにおける取得された要求データの位置を指定する。
【0126】
要求生成スケジューリング・コンポーネント705は、一方では、要求の長さおよび時限遅延のような要求状態テーブルにおける要求属性に従って複数の小型要求を生成するように構成され、他方では、要求をスケジュールし、読取り要求状態テーブルおよび書込み要求状態テーブルにおける未処理の要求から処理すべき要求を選択して、選択した要求をメッセージ・パケット化器706に送信するように構成される。
【0127】
メッセージ・パケット化器706は、1つまたは複数の要求をメッセージ・パケットにパッケージ化し、メッセージ・チャネル・インタフェースを介してメッセージ・パケットをバッファ・スケジューラに送信するように構成される。
【0128】
メッセージ・アンパッカ707は、1つまたは複数の要求をメッセージ・パケットから抽出し、各要求の対応するデータ内容を解析するように構成される。
【0129】
要求状態更新ユニット708は、読取り/書込み要求予約局704内の要求の状態テーブルを更新し、当該要求とメッセージ・アンパッカ707の解析により得られた対応するデータに従ってデータを読取りデータ・バッファに一時的に保存するするように構成される。
【0130】
要求応答コントローラ709は、要求応答をCPUに送信するように構成される。要求応答コントローラ709は主に、読取り/書込み要求予約局704内の要求の状態を問い合わせる。CPUが送信した要求がバッファ・スケジューラと記憶モジュールにより処理された後、要求応答コントローラ709は要求応答をCPUに送信する。読取り要求が処理された場合には、要求応答コントローラ709は、読取りデータ・バッファ703内の当該要求の対応するデータを送信する必要がある。
【0131】
コントローラ構成インタフェース710は、時限遅延等のような、メッセージ・ベースのメモリ・コントローラのパラメータまたは指定の要求属性を構成するように構成される。要求またはメモリ・アクセス・アドレスの構成に関して、対応する値が読取り/書込み要求状態テーブルの属性において更新される。
【0132】
メッセージ・チャネル・インタフェース711は、メッセージ・パケットをバッファ・スケジューラで送信するように構成される。当該メッセージ・チャネルの様々な物理的実装に基づいて、メッセージ・チャネル・インタフェース711は、共有パラレル・バス・インタフェースまたはポイント・ツー・ポイント・シリアル・バス・インタフェースのような対応するインタフェース・タイプを有する。
【0133】
図9は、記憶モジュールのバッファ・スケジューラの略構造図である。図9に示すように、当該バッファ・スケジューラは、メッセージ・チャネル・インタフェース901、メッセージ・アンパッカ902、要求ディストリビュータ903、読取り/書込み要求待ち行列904、特殊要求待ち行列905、タイマ906、状態維持ユニット907、要求スケジューラ908、コマンド生成ユニット909、メッセージ・パケット化器910、データ・バッファ911、およびメモリ・チップ・インタフェース912を備える。
【0134】
当該バッファ・スケジューラは、当該記憶モジュールのメモリ・チップに接続された当該記憶モジュール上の独立な集積回路であってもよい。当該バッファ・スケジューラが、システムの主基板上のチップであってもよく、汎用記憶モジュールに接続されていもよい。バッファ・スケジューラの利用を、特殊用途向け集積回路チップ、プログラム可能論理装置、およびフィールド・プログラマブル・ゲート・アレイのような様々なハードウェアの方式で実装してもよい。以下で説明するバッファ・スケジューラは図9に基づくものであるが、追加モジュールを追加することまたはバッファ・スケジューラの特定の機能ユニットを結合することのように、他の方式で実装した例も適用可能である。
【0135】
メッセージ・チャネル・インタフェース901は、メッセージ・パケットをメッセージ・ベースのメモリ・コントローラで送信するように構成される。メッセージ・チャネルの物理的実装に基づいて、メッセージ・チャネル・インタフェース901は、共有パラレル・バス・インタフェースまたはポイント・ツー・ポイント・シリアル・バス・インタフェースのような対応するインタフェース・タイプを有する。
【0136】
メッセージ・アンパッカ902は、要求シリアル番号、要求のタイプ、要求意味情報、アドレス、データ等を含む、様々な情報を受信したメッセージ・パケットから取得するように構成される。様々な要求のタイプが様々なメッセージ・パケットのフォーマットに対応する。当該要求のタイプを決定した後、メッセージ・アンパッカ902が対応するルールに従ってアンパック動作を実施する。
【0137】
要求ディストリビュータ903は、メッセージ・アンパッカ902が解析したメモリ・アクセス要求を様々な要求待ち行列に配分する。このスケジューリングは、各要求の意味情報、要求された返却時間、およびアクセス・データ粒度、および他の情報に基づく。
【0138】
読取り/書込み要求待ち行列904は、未処理の読取り/書込み要求を保存するように構成され、優先度が異なる複数の待ち行列を含む。高優先度待ち行列は、アクセス・データの粒度が小さく要求された返却時間が短い読取り/書込み要求または高優先度とマークされた読取り/書込み要求を保存し、低優先度待ち行列は、アクセス・データの粒度が大きく要求された返却時間が長い読取り/書込み要求または低優先度とマークされた読取り/書込み要求を保存する。
【0139】
特殊要求待ち行列905は、論理動作、圧縮動作、移動動作、およびデータに対する他の動作のような未処理の非読取り/書込み要求を保存するように構成される。
【0140】
タイマ906は、必要に応じて異なる時間間隔でパルスを出力してもよく、必要に応じて、要求スケジューラ908と状態維持ユニット907に対してクロック・トリガを有効にする。
【0141】
状態維持ユニット907は、バッファ・スケジューラに接続された各メモリ・チップの状態を維持し、必要なときに充電コマンド、リフレッシュ・コマンド、および他のコマンドを発行するように構成される。
【0142】
要求スケジューラ908は、メモリ・アクセス要求を要求待ち行列から取得し、当該要求をコマンド生成ユニット909に転送し、返却されたメモリ・アクセス・データをデータ・バッファから取得して、データをメッセージ・パケット化器910に転送する。要求と返却データを転送することに加えて、要求スケジューラ908は必要に応じて一連の特殊動作を実施する。例えば、高優先度待ち行列内のメモリ・アクセス要求が一般に小さなメモリ・アクセス粒度を有し、従って、要求スケジューラ908が複数の要求に結合マークを付してもよい。その結果、当該要求の全ての返却データがデータ・バッファに保存されるときには、当該データをメッセージ・パケット化器910に転送して1つの応答パケットにパッケージ化する。低優先度待ち行列におけるメモリ・アクセスのデータ量が大きい要求に対しては、要求スケジューラ908が、要求処理を幾つかのステップに分割し、各ステップの処理結果をメッセージ・パケット化器910に転送して1つの応答パケットにパッケージ化して復帰してもよい。
【0143】
コマンド生成ユニット909は、スケジュールした直後に実行する必要があるメモリ・アクセス要求を取得し、当該要求をメモリ・チップにアクセスするための特定のコマンドに変換する。メモリ・チップの状態を維持するために、要求スケジューラ908は、当該メモリ・チップの状態を維持するためのコマンドを発行することをコマンド生成ユニット909に要求してもよい。
【0144】
メッセージ・パケット化器910は、返却されたデータと対応する要求シリアル番号とを要求スケジューラ908から取得し、応答パケットを生成し、当該パケットをメッセージ・ベースのメモリ・コントローラに送信し戻す。要求スケジューラ908が生成した返却データに対するマークに従って、メッセージ・パケット化器910は、複数の要求を1つの応答パケットにパッケージ化しメッセージ・ベースのメモリ・コントローラに送信できるようにする。
【0145】
データ・バッファ911は、メモリ・チップへのアクセスに関する返却データを保存する。要求スケジューラ908は、要求データを選択し当該データをメッセージ・パケット化器910に送信する。
【0146】
メモリ・チップ・インタフェース912は、メモリ・チップにアクセスするためのコマンドをコマンド生成ユニット909から取得し、当該コマンドを記憶モジュールのメモリ・チップに送信し、返却データを受信した後に、データをデータ・バッファ911に保存する。
【0147】
図10に示すように、メッセージ・ベースのメモリ・アクセス方法は以下のステップを含む。
【0148】
ステップ1001では、CPUがメモリ・アクセス要求を発行する。CPUは、当該要求のアクセス・データの長さ、優先度、および意味情報を指定してもよい。当該要求が、タイミング・アクセス、単純な算術論理動作、移動動作、原子動作、圧縮等のような読取り/書込み要求以外の他の任意の複雑なメモリ・アクセス要求であってもよい。
【0149】
ステップ1002では、当該要求がメッセージ・ベースのメモリ・コントローラの構成に関する情報を含むかどうかを判定する。含む場合にはステップ1003に進み、含まない場合にはステップ1004に進む。
【0150】
ステップ1003では、当該要求がメッセージ・ベースのメモリ・コントローラの構成に関する情報を含む場合には、当該メッセージ・ベースのメモリ・コントローラが当該構成情報に従って適切な調整を実施する。
【0151】
ステップ1004では、メッセージ・ベースのメモリ・コントローラが特定のフォーマットに基づいてCPUからのメモリ・アクセス要求をメッセージ・パケットにパッケージ化し、メッセージ・チャネルを介して当該メッセージ・パケットを対応する記憶モジュールのバッファ・スケジューラに送信し、要件に基づいて読取り/書込み要求予約局に記録を作成する。当該メッセージ・パケットは、特定のルールに基づいて複数の要求を含んでもよい。
【0152】
ステップ1005では、バッファ・スケジューラがメッセージ・ベースのメモリ・コントローラにより送信されたメッセージ・パケットを受信し解析し、CPUのメモリ・アクセス要求で適切な要求待ち行列を埋める。
【0153】
ステップ1006では、バッファ・スケジューラの要求スケジューラが、CPUのメモリ・アクセス要求優先度と意味情報に従って要求待ち行列内の複数の要求をスケジュールし、要求実行順序を構成する。
【0154】
ステップ1007では、CPUのスケジュールされたメモリ・アクセス要求を、(DDR標準のような)メモリ粒度基準に従う一連のコマンドに変換し、当該コマンドをメモリ・インタフェースに送信する。
【0155】
ステップ1008では、CPUのメモリ・アクセス要求が複雑なメモリ・アクセス要求であるかどうかを判定する。複雑なメモリ・アクセス要求である場合にはステップ1009に進み、複雑なメモリ・アクセス要求でない場合には、ステップ1011に進む。
【0156】
ステップ1009では、CPUのメモリ・アクセス要求が複雑なメモリ・アクセス要求である場合には、(単純な算術論理動作、移動動作等のような)バッファ・スケジューラの処理ロジックが単に当該メモリにより返却された当該データを処理する。
【0157】
ステップ1010では、複雑なメモリ・アクセス命令を処理した後、要求のタイプに従って、処理データを当該メモリに書き込むかどうかおよび処理データをCPUに返却するかどうかを判定する。当該処理データをメモリに書き戻す必要がある場合には、(DDR標準のような)メモリ粒度基準に従う一連のコマンドを使用してデータをメモリに書き込む。当該処理データをCPUに返却する必要がある場合には、当該データを応答パケットにパッケージ化して当該パケットをメッセージ・ベースのメモリ・コントローラに送信する。
【0158】
ステップ1011では、CPUのメモリ・アクセス要求が複雑なメモリ・アクセス要求でない場合には、当該要求が書込み要求であるかどうかを判定する。書込み要求である場合にはステップ1015に進み、書込み要求でない場合にはステップ1012に進む。
【0159】
ステップ1012では、CPUからの要求が読取り要求である場合には、読取りデータを応答パケットにパッケージ化しメッセージ・チャネルを介して当該パケットをメッセージ・ベースのメモリ・コントローラに送信する。応答パケットのパッケージ化プロセス中は、要件に基づいて、1つの要求の返却データを複数の応答パケットにパッケージ化し、複数の要求の返却データを1つの応答パケットにパッケージ化してもよい。
【0160】
ステップ1013では、要件に従って、メッセージ・ベースのメモリ・コントローラが応答パケットを受信し解析し、当該応答パケット内のデータを当該メッセージ・ベースのメモリ・コントローラのキャッシュまたは内部アドレス可能バッファに保存する。
【0161】
ステップ1014では、当該メッセージ・ベースのメモリ・コントローラが、CPUのメモリ・アクセス要求の応答パケットの全体が返却されたかどうかを判定する。返却された場合にはステップ1015に進み、返却されていない場合には、ステップ1013に進む。
【0162】
ステップ1015では、CPUのメモリ・アクセス要求を処理した後、当該要求に関する記録がメッセージ・ベースのメモリ・コントローラの当該読取り/書込み要求予約局に存在する場合には記録をクリアする。
【0163】
図11に示すように、メッセージ・ベースのメモリ・コントローラがメモリ・アクセス要求を受信する処理手続きは以下の通りである。
【0164】
ステップ1101で、メッセージ・ベースのメモリ・コントローラが、メモリ・アクセス要求インタフェースを介してCPUにより送信された読取り/書込み要求を受信する。
【0165】
ステップ1102では、読取り/書込み要求ディストリビュータ701が、要求が読取り要求であるかどうかを判定する。読取り要求である場合にはステップ1104に進み、読取り要求でない場合にはステップ1103に進む。
【0166】
ステップ1103では、受信した要求が書込み要求である場合には、書込み要求状態テーブルに空の項目が存在するかどうかを判定する。存在する場合にはステップ1105に進み、存在しない場合にはステップ1102に進む。
【0167】
ステップ1104では、受信した要求が読取り要求である場合には、読取り要求状態テーブルに空の項目が存在するかどうかを判定する。存在する場合にはステップ1106に進み、存在しない場合にはステップ1102に進む。
【0168】
ステップ1105では、受信した要求が書込み要求であり、空の項目が書込み要求状態テーブルに存在する場合には、当該要求に関するテーブル・エントリを配分し、当該書込み要求内のデータを書込みデータ・バッファに保存し、そうでない場合には、ステップ1102に進む。
【0169】
ステップ1106では、受信した要求が読取り要求であり空の項目が読取り要求状態テーブルに存在する場合には、当該要求に関するテーブル・エントリを配分し、そうでない場合には、ステップ1102に進む。
【0170】
ステップ1107では、要求の受信を停止し、メモリ・アクセス要求インタフェースを介して受信した要求の処理を続ける。
【0171】
図12に示すように、メッセージ・ベースのメモリ・コントローラによる要求のスケジューリングと処理は以下のステップを含む。
【0172】
ステップ1201では、要求生成スケジュール・コンポーネント705が、読取り/書込み要求状態テーブルのテーブル・エントリをスキャンする。
【0173】
ステップ1202では、要求生成スケジューリング・コンポーネント705が、未処理であり読取り/書込み要求状態テーブルで処理する必要がある要求が存在するかどうかを問い合わせる。存在する場合にはステップ1203に進み、存在しない場合にはステップ1201に進む。
【0174】
ステップ1203では、未処理の要求がある場合には、要求生成スケジューリング・コンポーネントが、対応する要求状態テーブルにおける要求属性に従って大型の要求を複数の小型要求に分割し、処理すべき次の要求をスケジューリング・アルゴリズムに従って選択する。
【0175】
ステップ1204では、処理すべき要求が読取り要求であるかどうかを判定する。読取り要求である場合には、ステップ1206に進み、読取り要求でない場合にはステップ1205に進む。
【0176】
ステップ1205では、処理すべき要求が書込み要求である場合には、当該要求の対応するデータを書込みデータ・バッファから取得し、そうでない場合には、ステップ1206に進む。
【0177】
ステップ1206では、メッセージ・パケット化器706が1つまたは複数の要求をメッセージ・パケットにパッケージ化する。
【0178】
ステップ1207では、パッケージ化したメッセージをメッセージ・ベースのメモリ・コントローラとバッファ・スケジューラの間のメッセージ・チャネル・インタフェースに送信して、次の処理ラウンドのためにステップ1201に進む。
【0179】
図13に示すように、メッセージ・ベースのメモリ・コントローラがメッセージ・パケットをバッファ・スケジューラから受信した後、以下のステップを実施する。
【0180】
ステップ1302では、バッファ・スケジューラからメッセージ・ベースのメモリ・コントローラに送信された応答パケットのヘッダ情報を解析して、当該応答を1つずつ解析するためにヘッダ内の応答の数および各応答の長さを取得する。
【0181】
ステップ1304では、解析する必要がある次の応答が存在するかどうかを判定する。存在する場合には、ステップ1306に進んで当該次の応答を解析し、存在しない場合には当該応答パケット解析は終了する。
【0182】
ステップ1306では、当該次の応答のタイプと要求識別子を解析する。以下のステップで要求のタイプに従って応答を様々な方法で処理する。
【0183】
ステップ1308では、当該応答がメモリ・アクセス読取り要求応答であるかどうかを判定する。メモリ・アクセス読取り要求応答である場合には、ステップ1310に進んでさらに解析を行い、メモリ・アクセス読取り要求応答でない場合には、当該応答はメモリ状態問合せ要求応答またはメモリ・アクセス書込み要求応答であり、ステップ1312に進んで対応する状態情報を取得する。
【0184】
ステップ1310では、ヘッダにより指定された応答の長さに従って当該応答をアドレス指定し、返却データをメモリ・アクセス読取り要求応答から取得する。
【0185】
ステップ1312では、ヘッダにより指定された応答の長さに従って当該応答をアドレス指定する。当該応答が状態問合せ要求応答である場合には、返却された状態値を当該応答から取得する。当該応答がメモリ・アクセス書込み要求応答である場合には、書込み要求状態テーブル内の要求属性を更新する。次いで応答の解析が終了し、ステップ1304に戻る。
【0186】
ステップ1314では、パケットが副次的応答を含むかどうかに従って、読取り要求のメモリ・アクセス・データがバッファ・スケジューラにより複数の応答に分割された後に返却されるかどうかを判定する。当該データが複数の応答に分割されない場合には、メモリ・アクセス読取り要求を処理し、ステップ1318に進む。当該データが分割された場合には、当該パケットを解析して、取得した副次的応答の数および現在の副次的応答の識別子を取得し、ステップ1316に進む。
【0187】
ステップ1316では、現在の応答がメモリ・アクセス読取り要求の最後の副次的応答であるかどうかを、現在の副次的応答の識別子が副次的応答の数に等しいかどうかに従って判定する。等しい場合には、現在のメモリ・アクセス読取り要求を処理し、ステップ1318に進み、等しくない場合には、現在のメモリ・アクセス読取り要求はまだ処理されておらず、現在の副次的応答の返却データを対応するデータ・バッファに書き込み、更新されたデータ状態、データ位置、および他の情報を読取り要求状態テーブルに書き込んで、ステップ1304に戻る。
【0188】
ステップ1318では、メモリ・アクセス読取り要求を処理した後、データをメッセージ・ベースのメモリ・コントローラからCPUに送信し戻す準備を行い、ステップ1304に戻る。
【0189】
図14に示すように、メッセージ・ベースのメモリ・コントローラにより要求応答をCPUに送信するためのステップは以下の通りである。
【0190】
ステップ1401では、要求応答コントローラ709が読取り/書込み要求状態テーブルをスキャンする。
【0191】
ステップ1402では、処理された要求が書込み要求状態テーブルに存在するかどうかを問い合わせる。存在する場合にはステップ1404に進み、存在しない場合にはステップ1403に進む。
【0192】
ステップ1403では、処理された要求項目が書込み要求状態テーブルに存在しない場合には、処理された要求項目が読取り要求状態テーブルに存在するかどうかを問い合わせる。存在する場合にはステップ1404に進み、存在しない場合にはステップ1402に進む。
【0193】
ステップ1404では、処理された要求が書込み要求状態テーブルまたは読取り要求状態テーブルに存在する場合には、処理した要求が時限遅延の要求のような要求属性の要件を満たすかどうかを判定する。満たす場合にはステップ1405に進み、満たさない場合にはステップ1402に進む。
【0194】
ステップ1405では、全ての属性の要件を満たす要求の応答を送信する。当該応答のデータ内容も返却粒度および当該要求の他の属性と整合する必要がある。
【0195】
図15に示すように、要求スケジューラ908によりメモリ・アクセス要求をスケジュールするステップは以下の通りである。
【0196】
ステップ1510では、タイマ906が、設定条件に従って、要求スケジューラ908をトリガして新たな要求スケジューリング・プロセスを開始する準備を行わせる。
【0197】
ステップ1520では、トリガ条件はチップ状態維持が要求されることであるかどうかをチェックする。そうである場合にはステップ1530に進み、そうでない場合にはステップ1540に進む。
【0198】
ステップ1530では、トリガ条件はチップ状態維持が要求されることである場合には、チップ状態維持コマンドを発行し、ステップ1590に進む。
【0199】
ステップ1540では、トリガ条件は特殊要求待ち行列を処理する必要があることであるかどうかをチェックする。そうである場合には、ステップ1550に進み、そうでない場合には、ステップ1560に進む。
【0200】
ステップ1550では、トリガ条件が特殊要求待ち行列を処理する必要があることである場合には、当該特殊要求待ち行列における要求を読み取り、一連の読書き動作に変換する。当該要求を処理した後、当該待ち行列における要求状態を修正するかまたは当該要求状態をクリアする。ステップ1590に進む。
【0201】
ステップ1560では、トリガ条件は最高優先度の読取り/書込み要求待ち行列を処理する必要があることであるかどうかをチェックする。そうである場合にはステップ1570に進み、そうでない場合にはステップ1580に進む。
【0202】
ステップ1570では、トリガ条件が最高優先度の読取り/書込み要求待ち行列を処理する必要があることである場合には、当該待ち行列内の全ての要求をクリアし、全ての読取り要求に結合マークを付し、ステップ1590に進む。
【0203】
ステップ1580では、トリガ条件は最高優先度を有さない読取り/書込み要求待ち行列を処理する必要があることである。当該読取り/書込み要求の最新状態に従って、対応する優先度を有する要求待ち行列における要求にアクセスし、必要な読書き動作を生成する。当該要求を処理した後、当該待ち行列における要求状態を修正するかまたは当該要求状態をクリアし、ステップ1590に進む。
【0204】
ステップ1590では、要求スケジューリング・プロセスが終了する。タイマによる次のスケジューリング・プロセスのトリガを待機する。
【0205】
以上の説明は本発明の技術的概念の基本的な説明にすぎない。不揮発性メモリ等に対する任意の新たなメモリ技術のような、本発明の技術的解決策に基づく任意の均等な変形は本発明の保護範囲に入るものとする。
【0206】
当業者は、特許請求の範囲で指定した本発明の範囲から逸脱しない修正を以上の内容に加えてもよい。したがって、本発明の保護範囲は以上の説明には限定されず、特許請求の範囲で指定した範囲に従って決定される。
【符号の説明】
【0207】
120 メッセージ・ベースのメモリ・コントローラ
130 メッセージ・チャネル
700 メモリ・アクセス要求インタフェース
701 読取り/書込み要求ディストリビュータ
702 書込みデータ・バッファ
703 読取りデータ・バッファ
704 読取り/書込み要求予約局
705 要求生成スケジューリング・コンポーネント
706 メッセージ・パケット化器
707 メッセージ・アンパッカ
708 要求状態更新ユニット
709 要求応答コントローラ
710 コントローラ構成インタフェース
711 メッセージ・チャネル・インタフェース
901 メッセージ・チャネル・インタフェース
902 メッセージ・アンパッカ
903 要求ディストリビュータ
904 読取り/書込み要求待ち行列
905 特殊要求待ち行列
906 タイマ
907 状態維持ユニット
909 メモリ・コマンド生成ユニット
910 メッセージ・パケット化器
912 メモリ・チップ・インタフェース
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10A
図10B
図11
図12
図13
図14
図15