(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-19
(54)【発明の名称】マルチキューメモリコントローラのためのクレジット方式
(51)【国際特許分類】
G06F 13/36 20060101AFI20240312BHJP
G06F 12/00 20060101ALI20240312BHJP
G06F 13/16 20060101ALI20240312BHJP
【FI】
G06F13/36 310F
G06F12/00 560B
G06F12/00 571A
G06F13/16 520C
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023559128
(86)(22)【出願日】2022-03-21
(85)【翻訳文提出日】2023-10-30
(86)【国際出願番号】 US2022021148
(87)【国際公開番号】W WO2022212100
(87)【国際公開日】2022-10-06
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ケダーナシュ バラクリシュナン
(72)【発明者】
【氏名】シュリラム ラビチャンドラン
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CB01
5B160CD01
(57)【要約】
メモリコントローラは、アドレスデコーダと、第1のメモリチャネルに対するメモリアクセス要求を受信するためにアドレスデコーダの第1の出力に結合された第1のコマンドキューと、第2のメモリチャネルに対するメモリアクセス要求を受信するためにアドレスデコーダの第2の出力に結合された第2のコマンドキューと、を含む。要求クレジット制御回路は、第1のコマンドキュー及び第2のコマンドキューに結合され、未処理の要求クレジットの数を追跡するように動作する。要求クレジット制御回路は、第1のコマンドキュー及び第2のコマンドキューの利用可能なエントリの数に基づいて、指定されたイベントに応じて要求クレジットを発行する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
メモリコントローラであって、
メモリアクセス要求を受信するための第1の入力と、第1の出力と、第2の出力と、を有するアドレスデコーダと、
第1のメモリチャネルに対するメモリアクセス要求を受信するために前記アドレスデコーダの前記第1の出力に結合された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する第1のコマンドキューと、
第2のメモリチャネルに対するメモリアクセス要求を受信するために前記アドレスデコーダの前記第2の出力に結合された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する第2のコマンドキューと、
前記第1のコマンドキュー及び前記第2のコマンドキューに結合された要求クレジット制御回路であって、未処理の要求クレジットの数を追跡し、前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいて要求クレジットを発行するように動作可能な要求クレジット制御回路と、を備える、
メモリコントローラ。
【請求項2】
前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいてクレジット要求を発行することは、未処理の要求クレジットの数が前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの最小数よりも少ない場合に、クレジット要求を発行することを含む、
請求項1のメモリコントローラ。
【請求項3】
前記要求クレジット制御回路は、データ処理ユニットのデータファブリックに結合されており、前記データファブリックを介してメモリアクセスエージェントに要求クレジットを発行するように動作可能である、
請求項1のメモリコントローラ。
【請求項4】
前記要求クレジット制御回路は、前記第1のコマンドキュー及び前記第2のコマンドキューのうち最大数の利用可能なエントリを有するコマンドキューに割り当てられたメモリアクセス要求が受信された場合に、前記第1のコマンドキュー又は前記第2のコマンドキューからの対応する割り当て解除なしに要求クレジットを発行するように動作可能である、
請求項1のメモリコントローラ。
【請求項5】
前記要求クレジット制御回路は、メモリアクセス要求が前記第1のコマンドキュー及び前記第2のコマンドキューのうち何れかから割り当て解除され、その結果、前記第1のコマンドキュー及び前記第2のコマンドキューが等しい数の利用可能なエントリを有することに応じて、前記未処理の要求クレジットの数が前記等しい数の利用可能なエントリよりも少ない場合に要求クレジットを発行し、そうでない場合に、前記メモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行しないように動作可能である、
請求項1のメモリコントローラ。
【請求項6】
指定されたイベントは、メモリアクセス要求が前記第1のコマンドキュー及び前記第2のコマンドキューのうち何れかから割り当て解除されることである、
請求項1のメモリコントローラ。
【請求項7】
前記第1のコマンドキューからエントリを選択し、前記エントリを第1のメモリインターフェースキューに配置して、前記エントリを、前記第1のメモリチャネルを介して送信するために、前記第1のコマンドキューに結合された第1のアービタと、
前記第2のコマンドキューからエントリを選択し、前記エントリを第2のメモリインターフェースキューに配置して、前記エントリを、前記第2のメモリチャネルを介して送信するために、前記第2のコマンドキューに結合された第2のアービタと、を更に備える、
請求項1のメモリコントローラ。
【請求項8】
前記アドレスデコーダは、前記メモリアクセス要求のターゲットアドレスに基づいて、各メモリアクセス要求を前記第1のコマンドキュー又は前記第2のコマンドキューに向けるように動作可能である、
請求項1のメモリコントローラ。
【請求項9】
前記第1のコマンドキューは、前記第2のコマンドキューとは異なるサイズを有する、
請求項1のメモリコントローラ。
【請求項10】
少なくとも1つの追加のコマンドキューと、前記追加のコマンドキューに結合された少なくとも1つの追加のアービタと、を更に備え、
前記要求クレジット制御回路は、未処理の要求クレジットの数が、全てのコマンドキューの中で利用可能なエントリの最小数よりも少ない場合に、前記コマンドキューの何れかからメモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行し、そうでない場合に、前記メモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行しないように動作可能である、
請求項1のメモリコントローラ。
【請求項11】
方法であって、
メモリコントローラにおいて複数のメモリアクセス要求を受信することと、
前記メモリアクセス要求のアドレスを復号し、前記メモリアクセス要求の各々を受信するために第1のメモリチャネル及び第2のメモリチャネルのうち何れかを選択することと、
前記アドレスを復号した後に、各メモリアクセス要求を、前記第1のメモリチャネルに関連付けられた第1のコマンドキュー、及び、前記第2のメモリチャネルに関連付けられた第2のコマンドキューのうち何れかに送信することと、
指定されたイベントに応じて、前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいて要求クレジットを発行することと、を含む、
方法。
【請求項12】
前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいてクレジット要求を発行することは、未処理の要求クレジットの数が前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの最小数よりも少ない場合に、クレジット要求を発行することを含む、
請求項11の方法。
【請求項13】
前記第1のコマンドキュー及び前記第2のコマンドキューのうち最大数の利用可能なエントリを有するコマンドキューに割り当てられたメモリアクセス要求が受信された場合に、前記第1のコマンドキュー又は前記第2のコマンドキューからの対応する割り当て解除なしに要求クレジットを発行することを含む、
請求項12の方法。
【請求項14】
メモリアクセス要求が前記第1のコマンドキュー及び前記第2のコマンドキューのうち何れかから割り当て解除され、その結果、前記第1のコマンドキュー及び前記第2のコマンドキューが等しい数の利用可能なエントリを有することに応じて、前記未処理の要求クレジットの数が前記等しい数の利用可能なエントリよりも少ない場合にメモリアクセスクレジットを発行し、そうでない場合に、前記メモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行しないことを含む、
請求項12の方法。
【請求項15】
前記指定されたイベントは、メモリアクセス要求が前記第1のコマンドキュー及び前記第2のコマンドキューのうち何れかから割り当て解除されることである、
請求項11の方法。
【請求項16】
第1のアービタを用いて、前記第1のコマンドキューからエントリを選択し、前記エントリを第1のメモリインターフェースキューに配置して、前記エントリを、前記第1のメモリチャネルを介して送信することと、
第2のアービタを用いて、前記第2のコマンドキューからエントリを選択し、前記エントリを第2のメモリインターフェースキューに配置して、前記エントリを、前記第2のメモリチャネルを介して送信することと、を含む、
請求項11の方法。
【請求項17】
前記メモリアクセス要求のターゲットアドレスに基づいて、各メモリアクセス要求を前記第1のコマンドキュー又は前記第2のコマンドキューに向けることを含む、
請求項11の方法。
【請求項18】
データ処理システムであって、
データファブリックと、
第1のメモリチャネル及び第2のメモリチャネルと、
少なくとも1つのメモリアクセスエンジンから前記データファブリックを介して受信されたメモリアクセス要求を遂行するために、前記データファブリックと前記第1のメモリチャネル及び前記第2のメモリチャネルとに結合されたメモリコントローラと、を備え、
前記メモリコントローラは、
メモリアクセス要求を受信するための第1の入力と、第1の出力と、第2の出力と、を有するアドレスデコーダと、
第1のメモリチャネルに対するメモリアクセス要求を受信するために前記アドレスデコーダの前記第1の出力に結合された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する第1のコマンドキューと、
第2のメモリチャネルに対するメモリアクセス要求を受信するために前記アドレスデコーダの前記第2の出力に結合された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する第2のコマンドキューと、
前記第1のコマンドキュー及び前記第2のコマンドキューに結合された要求クレジット制御回路であって、未処理の要求クレジットの数を追跡し、前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいて要求クレジットを発行するように動作可能な要求クレジット制御回路と、を備える、
データ処理システム。
【請求項19】
前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいてクレジット要求を発行することは、未処理の要求クレジットの数が前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの最小数よりも少ない場合に、クレジット要求を発行することを含む、
請求項18のデータ処理システム。
【請求項20】
前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいてクレジット要求を発行することは、未処理の要求クレジットの数が前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの最小数よりも少ない場合に、クレジット要求を発行することを含む、
請求項18のデータ処理システム。
【請求項21】
前記要求クレジット制御回路は、前記データファブリックに結合されており、前記データファブリックを介してメモリアクセスエージェントに要求クレジットを発行するように動作可能である、
請求項18のデータ処理システム。
【請求項22】
前記要求クレジット制御回路は、前記第1のコマンドキュー及び前記第2のコマンドキューのうち最大数の利用可能なエントリを有するコマンドキューに割り当てられたメモリアクセス要求が受信された場合に、前記第1のコマンドキュー又は前記第2のコマンドキューからの対応する割り当て解除なしに要求クレジットを発行するように動作可能である、
請求項18のデータ処理システム。
【請求項23】
前記要求クレジット制御回路は、メモリアクセス要求が前記第1のコマンドキュー及び前記第2のコマンドキューのうち何れかから割り当て解除され、その結果、前記第1のコマンドキュー及び前記第2のコマンドキューが等しい数の利用可能なエントリを有することに応じて、前記未処理の要求クレジットの数が前記等しい数の利用可能なエントリよりも少ない場合に要求クレジットを発行するように動作可能である、
請求項18のデータ処理システム。
【請求項24】
前記要求クレジット制御回路のための各コマンドキュー内の利用可能なコマンドエントリの現在の数を計算するように動作可能なキュー占有回路を備える、
請求項18のデータ処理システム。
【請求項25】
前記第1のコマンドキューからエントリを選択し、前記エントリを第1のメモリインターフェースキューに配置して、前記エントリを、前記第1のメモリチャネルを介して送信するために、前記第1のコマンドキューに結合された第1のアービタと、
前記第2のコマンドキューからエントリを選択し、前記エントリを第2のメモリインターフェースキューに配置して、前記エントリを、前記第2のメモリチャネルを介して送信するために、前記第2のコマンドキューに結合された第2のアービタと、を備える、
請求項18のデータ処理システム。
【請求項26】
前記アドレスデコーダは、前記メモリアクセス要求のターゲットアドレスに基づいて、各メモリアクセス要求を前記第1のコマンドキュー又は前記第2のコマンドキューに向けるように動作可能である、
請求項18のデータ処理システム。
【請求項27】
前記メモリアクセスエンジンは、少なくとも1つのデータ処理ユニットからのメモリアクセス要求を実行するために前記データファブリックに結合されたコヒーレントメモリスレーブコントローラである、
請求項18のデータ処理システム。
【請求項28】
前記メモリアクセスエンジンは、少なくとも1つのデータ処理ユニットからのメモリアクセス要求を実行するために前記データファブリックに結合されたコヒーレントメモリマスタコントローラである、
請求項18のデータ処理システム。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、一般に、メインメモリ用の安価で高密度のダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)チップを使用する。今日販売されている殆どのDRAMチップは、Joint Electron Devices Engineering Council(JEDEC)によって広められた様々なダブルデータ速度(double data rate、DDR)DRAM規格と適合する。DDR DRAMは、高速アクセス回路を有する従来のDRAMメモリセルアレイを使用して、高い転送レートを達成し、メモリバスの利用を改善する。DDRメモリコントローラは、より多くのDRAMモジュールを収容し、単一のチャネルを使用するよりも速くデータをメモリと交換するために、複数のDDRチャネルとインターフェースし得る。例えば、いくつかのメモリコントローラは、2つ又は4つのDDRメモリチャネルを含む。
【0002】
現代のDDRメモリコントローラは、待ち状態のメモリアクセス要求を格納するためのキューを維持し、効率を高めるために待ち状態のメモリアクセス要求を、それらが生成又は格納された順序に関連して順不同で選択することを可能にする。特定のキューが満杯であるためにメモリアクセス要求が拒否されることを防止するために、メモリコントローラのデータインターフェースは、クレジット制御方式を使用してメモリアクセス要求のフローを制御し、このクレジット制御方式では、要求クレジットは、ホストシステムの様々な部分、例えば、そのデータインターフェースファブリックに提供され、ホストシステムは、コマンドキューに入るためのメモリ要求を送信することが可能になる。また、メモリコントローラは、異なるメモリタイプ、密度及びメモリチャネルトポロジのために構成され得るが、これらの異なるモードをサポートするためにチップコストを増加させ得る大量の追加の回路面積を必要としないように、十分に柔軟である必要がある。
【図面の簡単な説明】
【0003】
【
図1】先行技術で知られている加速処理ユニット(accelerated processing unit、APU)及びメモリシステムのブロック図である。
【
図2】いくつかの実施形態による、
図1と同様のAPUで用いるのに適したデュアルチャネルメモリコントローラを含む部分的なデータ処理システムのブロック図である。
【
図3】いくつかの実施形態による、
図2のクレジット制御回路を実装するのに適したクレジット制御回路のブロック図である。
【
図4】いくつかの実施形態による、要求クレジットを管理するためのプロセスのフロー図である。
【
図5】デュアルチャネルメモリコントローラにおいて要求クレジットを管理するための別のプロセスのフロー図である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0005】
メモリコントローラは、アドレスデコーダと、第1のコマンドキューと、第2のコマンドキューと、要求クレジット制御回路と、を含む。アドレスデコーダは、メモリアクセス要求を受信するための第1の入力と、第1の出力と、第2の出力と、を有する。第1のコマンドキューは、第1のメモリチャネルに対するメモリアクセス要求を受信するためにアドレスデコーダの第1の出力に接続された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する。第2のコマンドキューは、第2のメモリチャネルに対するメモリアクセス要求を受信するためにアドレスデコーダの第2の出力に接続された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する。要求クレジット制御回路は、第1のコマンドキューと、第2のコマンドキューと、に接続される。要求クレジット制御回路は、未処理の要求クレジットの数を追跡し、第1のコマンドキュー及び第2のコマンドキューの利用可能なエントリの数に基づいて要求クレジットを発行するように動作可能である。
【0006】
方法は、メモリコントローラにおいて複数のメモリアクセス要求を受信することを含む。メモリアクセス要求のアドレスが復号され、第1のメモリチャネル及び第2のメモリチャネルのうち何れかが、メモリアクセス要求の各々を受信するために選択される。アドレスを復号した後、本方法は、各メモリアクセス要求を、第1のメモリチャネルに関連付けられた第1のコマンドキュー及び第2のメモリチャネルに関連付けられた第2のコマンドキューのうち何れかに送信することを含む。指定されたイベントに応じて、本方法は、第1のコマンドキュー及び第2のコマンドキューの利用可能なエントリの数に基づいて要求クレジットを発行することを含む。
【0007】
データ処理システムは、データファブリックと、第1及び第2のメモリチャネルと、少なくとも1つのメモリアクセスエンジンからデータファブリックを介して受信されたメモリアクセス要求を遂行するためにデータファブリック並びに第1及び第2のメモリチャネルに接続されたメモリコントローラと、を含む。メモリコントローラは、アドレスデコーダと、第1のコマンドキューと、第2のコマンドキューと、要求クレジット制御回路と、を含む。アドレスデコーダは、メモリアクセス要求を受信するための第1の入力と、第1の出力と、第2の出力と、を有する。第1のコマンドキューは、第1のメモリチャネルに対するメモリアクセス要求を受信するためにアドレスデコーダの第1の出力に接続された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する。第2のコマンドキューは、第2のメモリチャネルに対するメモリアクセス要求を受信するためにアドレスデコーダの第2の出力に接続された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する。要求クレジット制御回路は、第1のコマンドキューと、第2のコマンドキューと、に接続される。要求クレジット制御回路は、未処理の要求クレジットの数を追跡し、第1のコマンドキュー及び第2のコマンドキューの利用可能なエントリの数に基づいて要求クレジットを発行するように動作可能である。
【0008】
図1は、従来技術において知られている加速処理ユニット(APU)100及びメモリシステム130のブロック図である。APU100は、ホストデータ処理システムにおけるプロセッサとして用いるのに適した集積回路であり、概して、中央処理ユニット(central processing unit、CPU)コア複合体110と、グラフィックスコア120と、ディスプレイエンジン122のセットと、データファブリック125と、メモリ管理ハブ140と、周辺コントローラ160のセットと、周辺バスコントローラ170のセットと、システム管理ユニット(system management unit、SMU)180と、を含む。
【0009】
CPUコア複合体110は、CPUコア112及びCPUコア114を含む。この例では、CPUコア複合体110が2つのCPUコアを含むが、他の実施形態では、CPUコア複合体110が任意の数のCPUコアを含むことができる。CPUコア112及び114の各々は、制御ファブリックを形成するシステム管理ネットワーク(system management network、SMN)及びデータファブリック125に双方向に接続され、データファブリック125にメモリアクセス要求を提供することができる。CPUコア112及び114の各々は、単体のコアであってもよく、又は、更にキャッシュ等の特定のリソースを共有する2つ以上の単体のコアを有するコア複合体であってもよい。
【0010】
グラフィックスコア120は、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を高度に統合された並列方式で実行することができる高性能グラフィックス処理ユニット(graphics processing unit、GPU)である。グラフィックスコア120は、SMN及びデータファブリック125に双方向に接続され、メモリアクセス要求をデータファブリック125に提供することができる。これに関して、APU100は、CPUコア複合体110とグラフィックスコア120とが同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体110とグラフィックスコア120とがメモリ空間の一部を共有する一方でグラフィックスコア120がCPUコア複合体110によりアクセスできないプライベートグラフィックスメモリも使用するメモリアーキテクチャの何れかをサポートすることができる。
【0011】
ディスプレイエンジン122は、モニタ上に表示するためにグラフィックスコア120によって生成されたオブジェクトをレンダリングしてラスタライズする。グラフィックスコア120及びディスプレイエンジン122は、メモリシステム130内の適切なアドレスへの一様な変換のために、データファブリック125を介して共通メモリ管理ハブ140に双方向に接続される。
【0012】
データファブリック125は、任意のメモリアクセスエージェントとメモリ管理ハブ140との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリックは、システム構成に基づいてメモリアクセスの送信先を判定するために、基本入力/出力システム(basic input/output system、BIOS)によって規定されるシステムメモリマップ、並びに、各仮想接続のためのバッファも含む。
【0013】
周辺コントローラ160は、ユニバーサルシリアルバス(universal serial bus、USB)コントローラ162及びシリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)インターフェースコントローラ164を含み、これらのそれぞれは、システムハブ166及びSMNバスに対して双方向で接続される。これらの2つのコントローラは、APU100で使用され得る周辺コントローラの単なる典型例である。
【0014】
周辺バスコントローラ170は、システムコントローラ又は「サウスブリッジ」(Southbridge、SB)172と、周辺構成要素相互接続エクスプレス(Peripheral Component Interconnect Express、PCIe)コントローラ174と、を含み、これらのそれぞれは、入力/出力(input/output、I/O)ハブ176及びSMNバスに対して双方向で接続される。また、I/Oハブ176は、システムハブ166及びデータファブリック125に対して双方向で接続される。したがって、例えば、CPUコアは、データファブリック125がI/Oハブ176を介してルーティングするアクセスにより、USBコントローラ162、SATAインターフェースコントローラ164、SB172、又は、PCIeコントローラ174内のレジスタをプログラムすることができる。APU100のためのソフトウェア及びファームウェアは、リードオンリーメモリ(read-only memory、ROM)、フラッシュ電気的消去可能プログラマブルROM(electrically erasable programmable ROM、EEPROM)等の様々な不揮発性メモリタイプの何れかであり得るシステムデータドライブ又はシステムBIOSメモリ(図示せず)に記憶される。一般に、BIOSメモリはPCIeバスを介してアクセスされ、システムデータドライブはSATAインターフェースを介してアクセスされる。
【0015】
SMU180は、APU100上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU180は、APU100上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU180は、APU100の構成要素のそれぞれにクロック信号を与えるために、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソース(図示せず)を含む。また、SMU180は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切な電力状態を判定するためにCPUコア112及び114並びにグラフィックスコア120から測定された電力消費値を受信することができる。
【0016】
メモリ管理ハブ140並びにその関連する物理インターフェース(physical interface、PHY)151及び152は、この実施形態ではAPU100と統合される。メモリ管理ハブ140は、メモリチャネル141及び142とパワーエンジン149とを含む。メモリチャネル141は、ホストインターフェース145、メモリチャネルコントローラ143及び物理インターフェース147を含む。ホストインターフェース145は、メモリチャネルコントローラ143を、シリアル存在検出リンク(serial presence detect、SDP)を介してデータファブリック125に対して双方向で接続する。物理インターフェース147は、メモリチャネルコントローラ143をPHY151に対して双方向で接続し、DDR PHYインターフェース(DDR PHY Interface、DFI)仕様に準拠する。メモリチャネル142は、ホストインターフェース146、メモリチャネルコントローラ144及び物理インターフェース148を含む。ホストインターフェース146は、別のSDPを介してメモリチャネルコントローラ144をデータファブリック125に対して双方向で接続する。物理インターフェース148は、メモリチャネルコントローラ144をPHY152に対して双方向で接続し、DFI仕様に準拠する。パワーエンジン149は、SMNバスを介してSMU180に対して、APBを介してPHY151及び152に対して双方向で接続されるとともに、メモリチャネルコントローラ143及び144に対して双方向で接続される。PHY151は、メモリチャネル131への双方向接続を有する。PHY152は双方向接続メモリチャネル133を有する。
【0017】
メモリ管理ハブ140は、2つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、共有パワーエンジン149を使用して、以下で更に説明する態様でメモリチャネルコントローラ143及びメモリチャネルコントローラ144の両方の動作を制御する。メモリチャネル141及び142のそれぞれは、DDRバージョン5(DDR version five、DDR5)、DDRバージョン4(DDR version four、DDR4)、低電力DDR4(low power DDR4、LPDDR4)、グラフィックスDDRバージョン5(graphics DDR version five、GDDR5)、及び、高帯域幅メモリ(high bandwidth memory、HBM)等の最先端DDRメモリに接続することができ、将来のメモリ技術に適合され得る。これらのメモリは、高いバス帯域幅及び高速動作をもたらす。同時に、それらのメモリは、ラップトップコンピュータ等のバッテリ駆動用途のための電力を節約するための低電力モードを与えるとともに、内蔵熱監視も行う。
【0018】
メモリシステム130は、メモリチャネル131及びメモリチャネル133を含む。メモリチャネル131は、DDRxバス132に接続されるデュアルインラインメモリモジュール(dual inline memory module、DIMM)のセットを含み、これには、本実施例では個別のランクに対応する代表的なDIMM134、136、138が含まれる。同様に、メモリチャネル133は、代表的なDIMM135、137、139を含む、DDRxバス129に接続されるDIMMのセットを含む。
【0019】
APU100は、ホストデータ処理システムの中央処理ユニット(CPU)として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインターフェースを与える。これらのインターフェースは、2つのダブルデータレート(double data rate、DDRx)メモリチャネル、PCIeリンクへの接続のためのPCIeルート複合体、USBネットワークへの接続のためのUSBコントローラ、及び、SATA大容量記憶デバイスへのインターフェースを含む。
【0020】
また、APU100は、様々なシステム監視機能及び節電機能も実装する。特に、1つのシステム監視機能は熱監視である。例えば、APU100が高温になる場合、SMU180は、CPUコア112、114及び/又はグラフィックスコア120の周波数及び電圧を低減することができる。APU100が高温になりすぎる場合、SMUを完全にシャットダウンすることができる。SMNバスを介してSMU180によって外部センサから熱事象を受けることもでき、SMU180は、それに応じてクロック周波数及び/又は電源電圧を低減することができる。
【0021】
図2は、
図1のようなAPUで用いるのに適したデュアルチャネルメモリコントローラ210を含む部分的なデータ処理システム200のブロック図である。データファブリック125に接続されたデュアルチャネルメモリコントローラ210が示されており、コヒーレントスレーブエージェント250及びコヒーレントマスタエージェント260を含むデータ処理システム200内に存在するいくつかのメモリエージェントと通信することができる。デュアルチャネルメモリコントローラ210は、2つの個別のメモリチャネルコントローラ143及び144(
図1)を置換し、データファブリック125及びデータ処理システム200内の様々なメモリアドレス指定エージェントに透過的な方法で2つのDDRxチャネルを一緒に制御することができ、その結果、単一のメモリコントローラインターフェース212を使用してメモリアクセスコマンドを送信し、結果を受信することができる。また、デュアルチャネルメモリコントローラ210は、例えば、DDR5 DRAMとともに使用するためのDDR5仕様において定義されるような2つのサブチャネル、又は、高帯域幅メモリ2(High Bandwidth Memory 2、HBM2)及びHBM3規格において定義されるそれらのサブチャネルを制御することができる。デュアルチャネルメモリコントローラ210は、概して、インターフェース212と、クレジット制御回路221と、アドレスデコーダ222と、異なるメモリチャネルにそれぞれ割り当てられたメモリチャネル制御回路223の2つのインスタンスと、を含む。メモリチャネル制御回路223の各インスタンスは、メモリインターフェースキュー214と、コマンドキュー220と、コンテントアドレッサブルメモリ(content addressable memory、CAM)224と、リプレイキュー230を含むリプレイ制御ロジック231と、タイミングブロック234と、ページテーブル236と、アービタ238と、エラー訂正符号(error correction code、ECC)チェック回路242と、ECC生成ブロック244と、データバッファ246と、アクティブ化カウンタ248を含むリフレッシュ制御ロジック232と、を含む。他の実施形態では、コマンドキュー230、アービタ238及びメモリインターフェースキュー214のみが、使用される各メモリチャネル又はサブチャネルに対して複製され、残りの図示された回路は、2つのチャネルとともに使用するように適合される。更に、図示されたデュアルチャネルメモリコントローラは、2つのメモリチャネル又はサブチャネルを制御するために、アービタ238、コマンドキュー220、及び、メモリインターフェースキュー214の2つのインスタンスを含むが、他の実施形態は、本明細書のクレジット管理技術に従って3つ又は4つのチャネル又はサブチャネル上でDRAMと通信するために使用される、3つ又は4つ以上等のより多くのインスタンスを含み得る。
【0022】
インターフェース212は、通信バスを介したデータファブリック125への第1の双方向接続と、クレジット制御回路221への第2の双方向接続と、を有する。この実施形態では、インターフェース212は、データファブリック125と通信するためのいくつかのチャネルを確立するためにスケーラブルデータポート(SDP)リンクを使用するが、他のインターフェースリンク規格も使用に適している。例えば、別の実施形態では、通信バスは、「AXI4」として知られている英国ケンブリッジのARM Holdings,PLCによって指定された高度拡張可能インターフェースバージョン4と適合するが、他の実施形態では他のタイプのインターフェースとなり得る。インターフェース212は、メモリアクセス要求を、「FCLK」(又は「MEMCLK」)ドメインとして知られている第1のクロックドメインから、「UCLK」ドメインとして知られているデュアルチャネルメモリコントローラ210の内部の第2のクロックドメインに変換する。同様に、メモリインターフェースキュー214は、UCLKドメインからDFIインターフェースに関連付けられる「DFICLK」ドメインへのメモリアクセスを与える。
【0023】
クレジット制御回路221は、インターフェース212への双方向通信リンクを含み、これは、アドレスデコーダ222と共有され得るか又は要求クレジットを管理するための専用SDPチャネルを含み得る。また、クレジット制御回路221は、両方のコマンドキュー220に接続された入力を有し、図では、アドレスデコーダ222と共有されるものとして示されている。クレジット制御回路221は、概して、両方のメモリチャネルのためのデータファブリックに割り当てられた要求クレジットを制御する。以下で更に説明するように、クレジット制御回路221によって実行される制御プロセスは、未処理の要求クレジットの数を追跡することと、未処理の要求クレジットの数が第1及び第2のコマンドキュー220の利用可能なエントリの最小数より小さい場合、第1及び第2のコマンドキュー220のうち何れかからメモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行することと、そうでない場合、メモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行しないことと、を含む。また、クレジット制御回路221は、最大数の利用可能なエントリを有する第1及び第2のコマンドキュー220のうち何れかに割り当てられたメモリアクセス要求が受信された場合、第1又は第2のコマンドキュー220からの対応する割り当て解除なしに要求クレジットを発行するように動作する。
【0024】
アドレスデコーダ222は、クレジット制御回路221への双方向リンクと、第1のコマンドキュー220(「コマンドキュー0」とラベル付けされている)に接続された第1の出力と、第2のコマンドキュー220(「コマンドキュー1」とラベル付けされている)に接続された第2の出力と、を有する。アドレスデコーダ222は、インターフェース212を介してデータファブリック125上で受信されたメモリアクセス要求のアドレスを復号する。メモリアクセス要求は、正規化フォーマットで表された物理アドレス空間内のアクセスアドレスを含む。アクセスアドレスに基づいて、アドレスデコーダ222は、要求を処理するために、コマンドキュー220のうち関連付けられた1つを有するメモリチャネルのうち1つを選択する。選択されたチャネルは、クレジット発行決定を行うことができるように、要求ごとにクレジット制御回路221に対して識別される。アドレスデコーダ222は、正規化されたアドレスを、メモリシステム130内の実際のメモリデバイスをアドレス指定するために及び関連するアクセスを効率的にスケジュールするために使用され得るフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループと関連付ける領域識別子を含む。起動時に、システムBIOSは、メモリシステム130内のメモリデバイスに問い合わせてそれらのサイズ及び構成を判定し、アドレスデコーダ222に関連付けられた構成レジスタのセットをプログラムする。アドレスデコーダ222は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。各メモリアクセス要求は、アドレスデコーダ222によって選択されたメモリチャネルに対するコマンドキュー220にロードされる。
【0025】
各コマンドキュー220は、CPUコア112及び114並びにグラフィックスコア120等のAPU100内の様々なメモリアクセスエンジンから受信されるメモリアクセス要求のキューである。各コマンドキュー220は、関連付けられたメモリチャネルを介して発行されるメモリアクセス要求をコマンドキュー220から選択するために、それぞれのアービタ238に双方向に接続される。各コマンドキュー220は、アドレスデコーダ222によって復号されたアドレスフィールド、並びに、それぞれのアービタ238がアクセスタイプ及びサービス品質(quality of service、QoS)識別子を含むメモリアクセスを効率的に選択できるようにする他のアドレス情報を記憶する。各CAM224は、書き込み後の書き込み(write after write、WAW)及び書き込み後の読み取り(read after write、RAW)順序規則等の順序規則を実施するための情報を含む。
【0026】
アービタ238は、それぞれ、適切なコマンドで実行されるメモリアクセス要求を選択するために、それぞれのコマンドキュー220に双方向に接続される。アービタ238は、概して、メモリチャネルのメモリバスの使用を改善するために、アクセスのインテリジェントスケジューリングによって、そのそれぞれのメモリチャネルの効率を改善する。各アービタ238は、それぞれのタイミングブロック234を使用して、それぞれのコマンドキュー220内の特定のアクセスがDRAMタイミングパラメータに基づいて発行に適格であるかどうかを判定することによって、適切なタイミング関係を実施する。例えば、各DRAMは、「tRC」として知られるアクティブ化コマンド間の最小指定時間を有する。各タイミングブロック234は、JEDEC仕様で定められたこのタイミングパラメータ及び他のタイミングパラメータに基づいて適格性を判定するカウンタのセットを維持し、リプレイキュー230に対して双方向で接続される。各ページテーブル236は、アービタ238のためのそれぞれのメモリチャネルの各バンク及びランクにおけるアクティブページに関する状態情報を維持し、そのそれぞれのリプレイキュー230に対して双方向で接続される。アービタ238は、復号されたアドレス情報、タイミングブロック234によって示されるタイミング適格性情報、及び、ページテーブル236によって示されるアクティブページ情報を使用して、サービス品質(QoS)要件等の他の基準を遵守しながら、メモリアクセスを効率的にスケジュールする。例えば、アービタ238は、メモリページを変更するために必要なプリチャージコマンド及びアクティブ化コマンドのオーバーヘッドを回避するために、オープンページへのアクセスの優先度を実装し、あるバンクへのオーバーヘッドアクセスを別のバンクへの読み取り及び書き込みアクセスとインターリーブすることによって隠す。特に、通常動作中、アービタ238は、通常、ページを、これらのページが異なるページを選択する前にプリチャージされる必要があるまで、異なるバンクで開いたままにする。アービタ238は、いくつかの実施形態では、それぞれのコマンドのターゲットメモリ領域に関するアクティブ化カウンタ248の少なくともそれぞれの値に基づいてコマンド選択の適格性を判定する。
【0027】
各エラー訂正コード(ECC)生成ブロック244は、メモリに送られる書き込みデータのECCを判定する。ECCチェック回路242は、受信されたECCを着信ECCと照合してチェックする。
【0028】
各リプレイキュー230は、アドレス及びコマンドパリティ応答等の応答を待っているアービタ238によって選択されたメモリアクセスを記憶するための一時的なキューである。リプレイ制御ロジック231は、ECCチェック回路242にアクセスして、戻されたECCが正しいか又はエラーを示すかを判定する。リプレイ制御ロジック231は、これらのサイクルのうち1つのパリティ又はECCエラーの場合にアクセスがリプレイされるリプレイシーケンスを開始して制御する。リプレイされたコマンドは、メモリインターフェースキュー214に配置される。
【0029】
リフレッシュ制御ロジック232の各インスタンスは、メモリアクセスエージェントから受信した通常の読み取り及び書き込みメモリアクセス要求とは別に生成される様々な電源断、リフレッシュ及び終端抵抗(ZQ)較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュ制御ロジックは、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュ制御ロジック232は、DRAMチップ内のメモリセルの蓄積キャパシタからの電荷の漏れによって引き起こされるデータエラーを防止するために、定期的に、定められた条件に応じて、リフレッシュコマンドを生成する。リフレッシュ制御ロジック232の各インスタンスはアクティブ化カウンタ248を含み、この実施形態では、アクティブ化カウンタ248は、メモリチャネルを介してメモリ領域に送信されるアクティブ化コマンドのローリング数をカウントするカウンタをメモリ領域ごとに有する。メモリ領域は、いくつかの実施形態ではメモリバンクであり、他の実施形態ではメモリサブバンクである。更に、リフレッシュ制御ロジック232は、システム内の熱変化に起因するオンダイ終端抵抗の不一致を防止するためにZQを定期的に較正する。
【0030】
ECC生成ブロック244は、インターフェース212から受信した書き込みメモリアクセス要求に応じて、書き込みデータに従ってECCを計算する。データバッファ246は、受信したメモリアクセス要求に関する書き込みデータ及びECCを記憶する。データバッファ246は、それぞれのアービタ238がメモリチャネルへのディスパッチのために対応する書き込みアクセスを選択すると、組み合わされた書き込みデータ/ECCをそれぞれのメモリインターフェースキュー214に出力する。
【0031】
3つ以上のメモリチャネル又はサブチャネルを有する実施形態では、追加のコマンドキュー、アービタ及びメモリインターフェースキューは、単一のアドレスデコーダ222及びクレジット制御回路221を使用して、図示されたものと並列に追加される。このような設計により、以下に説明するクレジット制御方式を3つ以上のチャネル又はサブチャネルとともに使用することが可能となり、キュー容量及びチャネル容量を使用する際に対応する効率が得られる。説明したように、メモリチャネル制御回路223のグループ全体は、各チャネル又はサブチャネルに対して再現されてもよく、あるいは、同じロジックブロックは、追加されたコマンドキュー、アービタ及びメモリインターフェースキューを追跡するために、追加された追加容量とともに使用されてもよい。
【0032】
図3は、いくつかの実施形態による、
図2のクレジット制御回路221を実装するのに適したクレジット制御回路300のブロック図を示す。クレジット制御回路300は、未処理クレジット追跡ロジック302と、キュー0占有ロジック304と、キュー1占有ロジック306と、インターフェースロジック308と、クレジット発行ロジック310と、要求モニタ312と、コマンドキューモニタ314と、先入れ先出し(first-in-first-out、FIFO)クレジットキュー316(FIFOキュー316)と、を含む。未処理クレジット追跡ロジック302は、概して、発行された要求クレジットのカウントを維持し、新しい要求クレジットを発行し、関連するメモリアクセス要求がメモリコントローラ210において受信された場合に有効化される要求クレジットを追跡する。要求クレジットは、データファブリック上の1つ以上の要求エージェントに発行される。この実施形態では、要求クレジットは、初期クレジットと、2つのコマンドキュー及び2つのチャネル又はサブチャネルの使用によって提供されるより高い容量のために発行される追加クレジットと、の2つのタイプのうち何れかである。追加クレジットを使用することにより、クレジット制御回路300は、両方のコマンドキューの容量をより完全且つ効率的に利用するために、特定の条件下で初期クレジットの数を超える更なるクレジットを発行することができる。追加クレジットは、初期クレジットと同じ方法で未処理クレジット追跡ロジックによって追跡され、総未処理クレジットに向かってカウントされる。
【0033】
キュー0占有ロジック304及びキュー1占有ロジック306は、それぞれのコマンドキュー内の割り当てられていないエントリの数のカウントを維持する。いくつかの実施形態では、カウントは、コマンドキューサイズから各コマンドキューの占有されたエントリの現在の数を減算することによって生成される。他の実施形態では、占有されていないエントリは、コマンドキューから直接的に追跡されるか、又は、各コマンドキューにロードされるエントリ及び各コマンドキューから割り当て解除されるエントリの追跡に基づいて間接的に追跡される。
【0034】
要求モニタ312は、何れのキューが各要求を受信するかを含めて、それぞれのコマンドキューにアドレスデコーダ222によって割り当てられた着信要求を監視する。この情報は、新しい要求クレジットが発行される場合及び発行されるかどうかを判定する際に、クレジット発行ロジック310によって使用される。コマンドキューモニタ314は、両方のコマンドキューを監視して、いつ要求がコマンドキューから割り当て解除されるかを判定する。FIFOキュー316は、
図5に関して説明するように、特定の条件下でコマンドが各コマンドキューから割り当て解除された場合に発行される追加の要求クレジットを保持する。これらのクレジットは、以下で更に説明するように、クレジット発行ロジック300が、これが許可されていると判定するとすぐに、ファブリックに解放される。クレジット発行ロジック310は、
図4及び
図5に関して以下で更に説明するように、未処理クレジットの数、各キューのキュー占有率、並びに、要求モニタ312及びコマンドキューモニタ314からの監視された情報を使用して、要求クレジットをいつ発行するかを決定する。いくつかのバージョンでは、クレジット制御機能は、メモリコントローラのアービタ(例えば、アービタ238、
図2)内のロジック回路を監視することで具現化される。他のバージョンでは、プロセスは、前述のサブアービタ305及び最終アービタ350において使用されるものとは異なるアービトレーション方法を使用しながら、同様の機能を有するデジタルロジック又はコントローラによって実行されてもよい。
【0035】
図4は、いくつかの実施形態による、要求クレジットを管理するためのプロセスのフロー
図400である。図示されたプロセスは、デュアルチャネルメモリコントローラ、2つ以上のメモリチャネル若しくはサブチャネルに結合されたメモリコントローラ、又は、未処理の要求クレジットを追跡し、デュアルチャネルメモリコントローラのために2つ以上のコマンドキューを監視する別の好適なデジタル制御回路において具現化された
図3のクレジット制御回路300等のクレジット制御回路によって実行されるのに適している。プロセスは、概して、コマンドキュー0及びコマンドキュー1に関連付けられた両方のメモリチャネルに対するメモリアクセス要求に対する要求クレジットを管理するように機能する。要求クレジットは、関連付けられたアクセス要求を受信するために何れのコマンドキュー及びメモリチャネルが最終的に選択され得るかとは無関係に、データファブリックによって使用される。すなわち、メモリコントローラによって管理される2つのメモリチャネル又はサブチャネルの存在は、データファブリック及びデータファブリックにアクセスする様々なメモリエージェントに対して透過的である。
【0036】
ブロック402において2つのメモリチャネルが初期化されたことに応じて、ブロック404におけるプロセスは、初期要求クレジットをデータファブリックに発行し、初期要求クレジットは、着信読み取り又は書き込みコマンドのために有効化される。また、書き込みコマンドは、データバッファ246(
図2)を管理するためにデータクレジットの使用を必要とする。データクレジットは、本明細書で説明する初期クレジット及び追加クレジットとは別に管理される。初期要求クレジットの数は、コマンドキュー220のサイズによって判定される。好ましくは、各コマンドキュー220内のエントリの半分を満たすのに十分な初期要求クレジットが解放され、単一のキュー内にコマンドを配置するために全てのクレジットが有効化された場合にオーバーフローしないことを保証する。2つのコマンドキューのサイズが等しい場合、解放されるクレジットの数は、通常、1つのコマンドキューのサイズである。2つのコマンドキューのサイズが等しくない場合、小さい方のコマンドキューのサイズを使用して初期クレジット数を判定し、最小のコマンドキューより大きくないクレジット量でクレジットプロセスが初期化されることを保証する。この時点で、データファブリックは、メモリコントローラ210に要求を送信するためにデータファブリックに接続された1つ以上のメモリアクセスエージェントによって使用され得る要求クレジットを所有する。
【0037】
ブロック406において、プロセスは、関連付けられた要求クレジットをそれぞれ有する読み取り及び書き込みメモリアクセス要求を受信し始める。受信されたアクセス要求ごとに、ブロック408において、クレジット制御回路は、例えば、未処理クレジット追跡ロジック302(
図3)において、未処理の要求クレジットを有効化する。また、アクセス要求は、アドレスデコーダ222によって処理されて、関連付けられたアドレスが復号され、このアドレスに基づいて、メモリアクセス要求を受信するためのメモリチャネルのうち何れかが選択される。ブロック410において、要求は、アドレスデコーダ222の制御下で選択されたメモリチャネルのコマンドキューにロードすることによって、メモリチャネルに割り当てられる。クレジット制御回路300は、ブロック410において各コマンドキューにロードされるアクセス要求を監視する。
【0038】
ブロック412において、プロセスは、1つ以上の追加の要求クレジットが既に発行されており、クレジット制御回路FIFOキュー316(
図3)において解放の保留中であるかどうかを判定する。追加の要求クレジットの解放は、
図5に関して更に説明される。追加の要求クレジットが解放の保留中である場合、プロセスはブロック420に進み、現在の着信要求に対して要求クレジットは解放されない。そうでない場合、プロセスはブロック414に進み、両方のコマンドキューが最大占有率にあるかどうかを判定する。そうである場合、プロセスはブロック420に進む。そうでない場合、プロセスはブロック416に進み、そこでプロセスは、未処理の要求クレジットが最大値であるかどうかを判定する。最大値は構成可能であり、典型的には、両方のコマンドキューの最大占有率の合計に設定される。ブロック416において未処理の要求クレジットが最大値である場合、プロセスはブロック420に進む。そうでない場合、プロセスはブロック418に進む。
【0039】
ブロック418において、プロセスは、最大数の利用可能なエントリを有するコマンドキューに要求が割り当てられたかどうかを判定する。そうである場合、プロセスはブロック422に進み、要求クレジットをデータファブリックに発行させる。クレジット発行ロジック310(
図3)又は他の好適なデジタルロジック若しくは制御回路は、要求クレジット発行を実行し、未処理のクレジットを更新する。ブロック422における要求クレジット発行は、コマンドキューのうち何れかからのコマンドの対応する割り当て解除なしに行われ、これは、2つのコマンドキューのより効率的な使用を可能にするので、図示されたプロセスにおいて有益である。ブロック418において、アクセス要求が、最も多い利用可能なエントリを有するコマンドキューに割り当てられていない場合、プロセスはブロック420に進み、この特定のアクセス要求が割り当てられていることに応じて、要求クレジットを発行しない。
【0040】
図示されたプロセスを使用すると、コマンドがあまり占有されていないコマンドキューに割り当てられる場合に「余分な」又は追加の要求クレジットが発行されることを可能にすることによって、各コマンドキューがより高い容量まで利用されるので、性能上の利点が達成される。図示されたプロセスを、
図2に示したようなデュアルアービタメモリコントローラアーキテクチャと組み合わせて使用すると、
図4及び
図5に示したキュー容量チェックなしでより悲観的な手法を使用する場合よりも、アービタが選択するためにコマンドキュー内で利用可能な多数のコマンドで概して動作しながら、各メモリチャネルを別々に調停することができるので、更なる性能上の利点が達成される。
【0041】
フローチャート400は、順番に発生するブロック410、412、414、416、及び418を示しているが、実際の実装形態では、これらの決定は、デジタルロジックによって行われ、様々な実施形態では、任意の好適な順番で、又は示された条件の一部若しくは全てを同時にチェックするロジック回路と並行して行われる。
【0042】
図5は、デュアルチャネルメモリコントローラにおいて要求クレジットを管理するための別のプロセスのフロー
図500である。この実施形態では、プロセスは、
図4のプロセスとともにクレジット制御回路300によって実行されて、要求クレジットがデュアルチャネルメモリコントローラ、又は、2つ以上のメモリチャネル若しくはサブチャネルのためのメモリコントローラに発行される2つの異なる方法が提供される。
【0043】
ブロック502において、プロセスは、メモリアクセス要求が2つのコマンドキューのうち何れかから割り当て解除されることに応じて開始する。ブロック504において、プロセスは、各コマンドキューにおいて利用可能なエントリの数を取得する。この情報は、クレジット制御回路、例えば、キュー0占有ロジック304及びキュー1占有ロジック306(
図3)において維持されることが好ましい。いくつかの実施形態では、プロセスは、ブロック504においてコマンドキューに直接アクセスして、各コマンドキュー内の利用可能なエントリの数を取得又は計算することができる。関連する数は、ブロック502における割り当て解除された要求を考慮した後の数である。
【0044】
ブロック506において、プロセスは、未処理の要求クレジットの数が、2つのコマンドキューの利用可能なエントリの最小数よりも少ないかどうかをチェックし、そうである場合、ブロック508において追加の要求クレジットを発行する。この要求クレジットは、FIFOキュー316(
図3)にロードされ、できるだけ早くデータファブリックに解放されることが好ましい。未処理クレジット追跡ロジック302は、追加の要求クレジットがFIFOキュー316を出て、データファブリック上の受信側メモリエージェントによって受信されたことが確認された場合に、追加の要求クレジットを未処理としてカウントすることが好ましい。ブロック506において、未処理の要求クレジットの数が、2つのコマンドキューの利用可能なエントリの最小数よりも少なくない場合、プロセスはブロック510に進み、ブロック502においてメモリアクセス要求が割り当て解除されることに応じて、要求クレジットを発行しない。
【0045】
このクレジット発行プロセスは、2つのコマンドキューのより効率的な使用を可能にするという利点を有する一方で、未処理のクレジットの数が、最も占有されたキューの利用可能なエントリより高くならないことを保証する。データファブリック及びそれにアタッチされた要求側メモリエージェントは、好ましくは、特定の要求クレジットが初期クレジットであるか追加クレジットであるかに関する情報を有さず、クレジット追跡プロセスはデータファブリックに対して透過的になる。データファブリックは、デュアルチャネルメモリコントローラを、単一チャネルのスループット容量より高いスループット容量を有する単一コントローラであるかのように扱うことができる。2つのコマンドキュー及び2つのメモリチャネルの容量は、データファブリックに対して透過的な方法で組み合わされ、一方で、単一コマンドキューのための典型的なクレジット管理プロセスが使用された場合より積極的に要求クレジットが発行されることが可能になる。
【0046】
図2のデュアルチャネルメモリコントローラ210、又は、クレジット管理回路221及びアドレスデコーダ222等のその任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(high level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取られることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクを様々な半導体製造工程で使用して、集積回路を製造することができる。代替的に、コンピュータアクセス可能格納媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックスデータシステム(Graphic Data System、GDS)IIデータであり得る。
【0047】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかである。例えば、デュアルチャネルメモリコントローラが例として使用されているが、本明細書の技術は、データファブリック及びホストデータ処理システムに透過的な方法でそれらの容量を組み合わせるために、3つ以上のメモリチャネルに適用されてもよい。例えば、3つ又は4つのメモリチャネルは、各チャネルに対して個別のコマンドキュー及びメモリチャネル制御回路を提供する一方で、単一のインターフェースと、アドレスデコーダと、個々のメモリチャネルから独立した要求クレジットをデータファブリックに発行するクレジット制御回路と、を提供することによって、本明細書の技術を使用して制御され得る。更に、デュアルチャネルメモリコントローラ210の内部アーキテクチャは、異なる実施形態では変化し得る。デュアルチャネルメモリコントローラ210は、高帯域幅メモリ(HBM)、RAMbus DRAM(RAMbus DRAM、RDRAM)等のような、DDRx以外の他のタイプのメモリとインターフェースすることができる。図示した実施形態は、個別のDIMM又はSIMMに対応するメモリの各ランクを示したが、他の実施形態では、各モジュールは複数のランクをサポートすることができる。更に他の実施形態は、ホストマザーボードに取り付けられたDRAM等のように、特定のモジュールに含まれていない他のタイプのDRAMモジュール又はDRAMを含むことができる。したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を網羅することを意図している。
【国際調査報告】