(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-13
(45)【発行日】2023-11-21
(54)【発明の名称】連動メモリデバイスに対するメモリ要求のスケジューリング
(51)【国際特許分類】
G06F 12/06 20060101AFI20231114BHJP
G06F 12/02 20060101ALI20231114BHJP
【FI】
G06F12/06 550A
G06F12/02 560D
(21)【出願番号】P 2020534405
(86)(22)【出願日】2018-09-19
(86)【国際出願番号】 US2018051791
(87)【国際公開番号】W WO2019125563
(87)【国際公開日】2019-06-27
【審査請求日】2021-09-15
(32)【優先日】2017-12-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジェームズ レイモンド マグロ
【審査官】北村 学
(56)【参考文献】
【文献】特開平06-089227(JP,A)
【文献】特開2000-099397(JP,A)
【文献】特開2003-208353(JP,A)
【文献】特開2003-208354(JP,A)
【文献】特開2008-146330(JP,A)
【文献】特開2011-013835(JP,A)
【文献】特開2013-137713(JP,A)
【文献】特表2007-519121(JP,A)
【文献】米国特許出願公開第2003/0002376(US,A1)
【文献】米国特許出願公開第2009/0327596(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/00 - 12/06
(57)【特許請求の範囲】
【請求項1】
単一のクライアントメモリ要求が、第1のメモリ要求及び第2のメモリ要求に対応する非連続的なデータアドレスを対象にしているという指標を含むメモリ要求を受信するための第1のインターフェースと、
前記メモリ要求に対応するメモリアクセスコマンドをメモリデバイスに送るためのコマンドバス、前記メモリデバイスにアドレスを送るための第1のアドレスバス、及び前記メモリデバイスにアドレスを送るための第2のアドレスバスを含む、第2のインターフェースと、
回路を備える制御論理であって、前記単一のクライアントメモリ要求に対応する任意のメモリアクセスコマンドが任意の時点で発行されるようにスケジューリングされると判断することと、前記任意のメモリアクセスコマンドが前記第1のメモリ要求及び前記第2のメモリ要求の両方を提供するという指標を検出することと、に応答して、前記任意の時点で、前記任意のメモリアクセスコマンドを、前記コマンドバスを介して前記メモリデバイスに送ること、前記第1のアドレスバス上で前記第1のメモリ要求に対応する第1のアドレスを送ることであって、前記第1のアドレスは、第1のデータを格納する前記メモリデバイスにおける第1の場所を指し示す、前記第1のアドレスを送ること、及び、前記第2のアドレスバス上で前記第2のメモリ要求に対応する第2のアドレスを送ることであって、前記第2のアドレスは、第2のデータを格納する前記メモリデバイスにおける第2の場所を指し示す、前記第2のアドレスを送ることを行うように構成される、前記制御論理と、を備える、メモリコントローラ。
【請求項2】
前記制御論理は、前記第1のメモリ要求及び前記第2のメモリ要求のそれぞれが任意の範囲のメモリアドレス内のデータを対象にすると判断することに応答して、前記任意のメモリアクセスコマンドが前記第1のメモリ要求及び前記第2のメモリ要求の両方を提供するという指標を格納するようにさらに構成される、請求項1に記載のメモリコントローラ。
【請求項3】
前記任意の範囲のメモリアドレスはメモリのページに対する範囲である、請求項2に記載のメモリコントローラ。
【請求項4】
前記第1のメモリ要求は、前記第2のメモリ要求が対象とするデータと連続していないデータを対象とする、請求項1に記載のメモリコントローラ。
【請求項5】
前記第2のアドレスは前記第1のアドレスに対するオフセットである、請求項1に記載のメモリコントローラ。
【請求項6】
前記第1のメモリ要求及び前記第2のメモリ要求のそれぞれが対象とするデータは、同じサイズを有する、請求項1に記載のメモリコントローラ。
【請求項7】
前記第2のインターフェースは、前記メモリコントローラと前記メモリデバイスとの間でデータを転送するためのデータバスをさらに含み、前記第1のデータ及び前記第2のデータのそれぞれはサイズ閾値より小さいサイズを有する、請求項1に記載のメモリコントローラ。
【請求項8】
前記第1のデータ及び前記第2のデータは前記データバス上で同時に転送される、請求項7に記載のメモリコントローラ。
【請求項9】
前記制御論理は、前記メモリアクセスコマンドが完了したとの判断に応答して、前記第1のメモリ要求、及び前記第2のメモリ要求のそれぞれを完了とマークするようにさらに構成される、請求項1に記載のメモリコントローラ。
【請求項10】
回路を備える第1のインターフェースによって、第1のメモリ要求及び第2のメモリ要求に対応する非連続的なデータアドレスを対象にしているという指標を含む単一のクライアントメモリ要求を含む1つ以上のクライアントメモリ要求を受信することと、
前記単一のクライアントメモリ要求に対応する任意のメモリアクセスコマンドが任意の時点で発行されるようにスケジューリングされると判断することと、前記任意のメモリアクセスコマンドが前記第1のメモリ要求及び前記第2のメモリ要求の両方を提供するという指標を検出することと、に応答して、制御論理によって、前記任意の時点で、前記任意のメモリアクセスコマンドを、コマンドバスを介してメモリデバイスに送ること、第1のアドレスバス上で前記第1のメモリ要求に対応する第1のアドレスを送ることであって、前記第1のアドレスは、第1のデータを格納する前記メモリデバイスにおける第1の場所を指し示す、前記第1のアドレスを送ること、及び、第2のアドレスバス上で前記第2のメモリ要求に対応する第2のアドレスを送ることであって、前記第2のアドレスは、第2のデータを格納する前記メモリデバイスにおける第2の場所を指し示す、前記第2のアドレスを送ることと、を含む、方法。
【請求項11】
第1のメモリ要求及び第2のメモリ要求のそれぞれが任意の範囲のメモリアドレス内のデータを対象にすると判断することに応答して、前記任意のメモリアクセスコマンドが前記第1のメモリ要求及び前記第2のメモリ要求の両方を提供するという指標を格納することをさらに含む、請求項10に記載の方法。
【請求項12】
前記任意の範囲のメモリアドレスはメモリのページに対する範囲である、請求項11に記載の方法。
【請求項13】
前記第2のアドレスは前記第1のアドレスに対するオフセットである、請求項10に記載の方法。
【請求項14】
前記第1のメモリ要求及び前記第2のメモリ要求のそれぞれが対象とするデータは、同じサイズを有する、請求項10に記載の方法。
【請求項15】
第2のインターフェース
が、メモリコントローラと前記メモリデバイスとの間でデータを転送するためのデータバスを
有しており、前記第1のデータ及び前記第2のデータのそれぞれはサイズ閾値より小さいサイズを有する、請求項10に記載の方法。
【請求項16】
前記任意のメモリアクセスコマンドが完了したとの判断に応答して、前記第1のメモリ要求、及び前記第2のメモリ要求のそれぞれを完了とマークすることをさらに含む、請求項10に記載の方法。
【請求項17】
メモリデバイスと、
前記メモリデバイスに格納されるデータに対する
前記メモ
リ要求を生成するように構成されるプロセッサと、
請求項1~9の何れかのメモリコントローラと、を備える、コンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【0001】
<関連技術の説明>
比較的高いレベルの性能を維持することは、格納されたデータへの迅速なアクセスを要する。いくつかのタイプのデータ集約型アプリケーションは、いくつかのローカル及びリモートプログラムならびにこれらのユーザに信頼できる高性能を提供するためにデータストレージへの迅速なアクセスに頼っている。さまざまなコンピューティングデバイスは、システム機能性を提供するために多数のタイプのICを統合する不均一集積を利用する。多数の機能は、音声/映像(A/V)データ処理、医療分野及びビジネス分野に向けた他の高度なデータ並列アプリケーション、汎用命令セットアーキテクチャ(ISA)の命令の処理、ならびに、デジタル、アナログ、混合信号、及び無線周波数(RF)機能などを含む。多数のタイプのICを統合するためにシステムパッケージングで処理ノードを配置するためのさまざまな選定がある。いくつかの例には、システムオンチップ(SOC)、マルチチップモジュール(MCM)、及びシステムインパッケージ(SiP)がある。
【0002】
システムパッケージングの選定にかかわらず、いくつかの使用では、1つまたは複数のコンピューティングシステムの性能は、処理ノードに左右される可能性がある。1つの例では、処理ノードは、いくつかの異なるタイプのアプリケーションを起動させる、場合によっては、情報を多数のユーザ(ローカル及びリモート両方)に一度に中継するモバイルコンピューティングデバイス内で使用される。別の例では、処理ノードはデスクトップ内で使用される。さらに別の例では、処理ノードは、マルチソケットサーバのソケットにおける多数の処理ノードのうちの1つである。サーバを使用して、リモートコンピューティングデバイスにおける他のコンピュータプログラムのみならず、サーバ内のコンピュータプログラムにサービスを提供する。
【0003】
上記のさまざまなコンピューティングシステムのそれぞれにおける記憶階層は、プロセッサダイ上のレジスタ、及びプロセッサダイ上に位置するまたはプロセッサダイに接続されるキャッシュなどの比較的高速の揮発性メモリから、磁気ハードディスクなどの不揮発性の比較的低速のメモリに移行する。記憶階層は、実行中のコンピュータプログラムによる迅速なアクセス要求に対する高性能を維持するための課題を提供する。1つの課題は、キャッシュサブシステム以外に位置するランダムアクセスメモリ(RAM)であるが不揮発性ディスクメモリを含まない、システムメモリにおける時間を低減することである。同時性ダイナミックRAM(SDRAM)及び他の従来のメモリ技術は、限定された帯域幅によりシステムメモリのストール時間を低減させるが、アクセスレイテンシはこれらの技法では改善しない。さらに、システムメモリに格納されたデータにアクセスするためのインターフェース及びプロトコルをサポートするために、相当量のオンダイ面積及び電力消費が使用される。
【0004】
上記を考慮して、コンピューティングシステムに対する効率的なメモリアクセスを行うための効率的な方法及びシステムが所望されている。
【0005】
本明細書に説明される方法及び機構の利点は、添付の図面と併せて以下の説明を参照することによって、より良く理解され得る。
【図面の簡単な説明】
【0006】
【
図1】コンピューティングシステムの1つの実施形態のブロック図である。
【
図2】メモリコントローラの1つの実施形態のブロック図である。
【
図3】コンピューティングシステムに対する効率的なメモリアクセスを行うための方法の1つの実施形態のフロー図である。
【
図4】コンピューティングシステムに対する効率的なメモリアクセスを行うための方法の1つの実施形態のフロー図である。
【発明を実施するための形態】
【0007】
本発明は、さまざまな修正及び代替的な形態をなすことが可能であるが、具体的な実施形態は、図面に例として示されており、本明細書に詳細に説明されている。しかしながら、図面及びこれに対する詳細な説明は、本発明を開示された特定の形態に限定することを意図するものではなく、むしろ、本発明は、添付の特許請求の範囲によって定められる本発明の範囲内にある全ての修正、等価物、及び代替物を包含するものとすると理解されるべきである。
【0008】
下記の説明では、本明細書に提示される方法及び機構を十分に理解してもらうために、多数の具体的詳細が示されている。しかしながら、さまざまな実施形態がこれらの具体的詳細なしで実践され得ることを、当業者は認識するべきである。いくつかの事例では、周知の構造、構成要素、信号、コンピュータプログラム命令、及び技法は、本明細書に説明されるアプローチを不明瞭にすることを回避するために詳細に示されていない。例示を簡略化しかつ明確にするために、図に示される要素が必ずしも一定尺度で描かれているわけではないことは理解されるであろう。例えば、要素のいくつかの寸法は他の要素に対して誇張される場合がある。
【0009】
コンピューティングシステムに対する効率的なメモリアクセスを行うための、さまざまなシステム、装置、方法、及びコンピュータ可読媒体が開示される。さまざまな実施形態では、コンピューティングシステムはアプリケーションを処理するための1つまたは複数のクライアントを含む。クライアントの例には、汎用中央処理装置(CPU)、グラフィック処理ユニット(GPU)、加速処理ユニット(APU)、及び入出力(I/O)デバイスなどがある。メモリコントローラは、メモリコントローラと、それぞれがメモリデバイスに接続される2つのチャネルとの間でトラフィックを転送するように構成される。いくつかの実施形態では、2つのメモリデバイスの1つまたは複数は、デュアルインラインメモリモジュール(DIMM)上のさまざまなランダムアクセスメモリ(RAM)のうちの1つである。他の実施形態では、2つのメモリデバイスの1つまたは複数は、マザーボードにソケット付けされるまたは、はんだ付けされるRAMデバイスである、平面実装RAMデバイスである。さらに他の実施形態では、2つのメモリデバイスの1つまたは複数は、三次元集積回路(3D IC)である。一実施形態では、メモリコントローラにおけるコマンドプロセッサは、クライアントから受信されるメモリ要求を、メモリデバイスの選択されたタイプ(複数可)によって処理されるコマンドに翻訳する。
【0010】
一実施形態では、クライアントは、同じページ内の不連続データを対象にした2つの32バイト要求があることを指定する指示と共に64バイトメモリ要求を送る。メモリコントローラは2つのアドレスを生成する。メモリコントローラは同じページにおけるデータにアクセスするために単一のコマンド及び2つのアドレスを2つのチャネルに送る。1つの実施形態では、メモリコントローラは、別個の生成済みの2つのアドレスまたはこれらの一部分を2つのチャネルに送る。いくつかの実施形態では、1つのアドレスは、2つの生成済みアドレスの他のアドレスに対するオフセットである。いくつかの実施形態では、2つのアドレスを有する単一のコマンドは、同じページにおける不連続データにアクセスする。他の実施形態では、2つのアドレスを有する単一のコマンドは同じページにおける連続データにアクセスする。従って、連続データまたは不連続データである(同じページ内の)隣接するデータには同時にアクセスする。従って、メモリコントローラは、単一の32バイトメモリ要求に対して64バイトを転送せず、64バイトのうちの32バイトを破棄し、これは非効率的である。もっと正確に言えば、メモリコントローラは、メモリの1ページ内など、メモリアドレスの範囲内のデータにアクセスする2つの32バイトメモリ要求に対して64バイトを転送する。
【0011】
図1を参照すると、コンピューティングシステム100の1つの実施形態の一般化されたブロック図が示されている。示されるように、クライアント110及び112は、メモリ要求を、データファブリック120を介してメモリコントローラ130A及び130Bに送る。示されるように、それぞれのメモリコントローラは、2つのアドレスを送ることが可能である単一のメモリチャネルを有する。例えば、メモリコントローラ130Aは、アドレス生成器142A及びアドレス生成器144Aを有するメモリチャネル140Aを含む。同様に、メモリコントローラ130Bは、アドレス生成器142B及びアドレス生成器144Bを有するメモリチャネル140Bを含む。メモリコントローラ130Aは、チャネル152A及び154A上のコマンド、アドレス、及びデータをメモリデバイス160A及び162Aに転送する。メモリコントローラ130Bは、チャネル152B及び154B上のコマンド、アドレス、及びデータをメモリデバイス160B及び162Bに転送する。
【0012】
入出力(I/O)デバイス、電力マネージャ、及び任意のリンクに対するI/Oインターフェース、及びネットワーク接続用のインターフェースは、例示を容易にするためにコンピューティングシステム100に示されていない。いくつかの実施形態では、コンピューティングシステム100の構成要素は、システムオンチップ(SOC)などの集積回路(IC)上の個々のダイである。他の実施形態では、構成要素は、システムインパッケージ(SiP)またはマルチチップモジュール(MCM)における個々のダイである。いくつかの実施形態では、クライアント110及び112は、中央処理装置(CPU)、グラフィック処理ユニット(GPU)、及びマルチメディアエンジン用のハブなどの1つまたは複数を含む。クライアント110及び112のそれぞれは、アプリケーションを処理しかつメモリ要求を生成することが可能であるさまざまなコンピューティングリソースのうちの1つである。
【0013】
クライアント110~112のうちの1つが中央処理装置(CPU)である時、いくつかの実施形態では、CPUにおける1つまたは複数のプロセッサコアのそれぞれは、任意の選択済み命令セットアーキテクチャ(ISA)に従った命令を実行するための回路網を含む。さまざまな実施形態では、CPUにおけるプロセッサコアのそれぞれは、任意のISAの命令を処理するために使用されるスーパースカラーマルチスレッドマイクロアーキテクチャを含む。一実施形態では、クライアント110~112のうちの1つがグラフィック処理ユニット(GPU)である時、かなりの数の並列実行レーンを有する高度な並列データマイクロアーキテクチャを含む。1つの実施形態では、マイクロアーキテクチャは、並列実行レーンに対して単一命令複数データ(SIMD)パイプラインを使用する。クライアント110~112のうちの1つがマルチメディアエンジンである時、マルチメディアアプリケーションに対する音声データ及び映像データを処理するためのプロセッサを含む。クライアント110~112に対するメモリ要求を生成する処理ユニットの他の例は可能でありかつ考えられる。
【0014】
さまざまな実施形態では、通信ファブリック120は、クライアント110及び112とメモリコントローラ130A及び130Bとの間でトラフィックを相互に転送する。データファブリック120は、各通信プロトコルをサポートするためのインターフェースを含む。いくつかの実施形態では、通信ファブリック120は、要求及び応答を格納するためのキュー、内部ネットワークにわたって要求を送る前に受信した要求の間のアービトレーションを行うための選択論理、パケットを構築しかつ復号するための論理、及びパケットに対する経路を選択するための論理を含む。
【0015】
さまざまな実施形態では、メモリコントローラ130A~130Bは、通信ファブリック120を介してクライアント110~112からメモリ要求を受信し、メモリ要求をコマンドに翻訳し、オフチップディスクメモリ(図示せず)、及びメモリデバイス160A、162A、160B、及び162Bにおけるさまざまなランダムアクセスメモリ(RAM)のうちの1つとして実装されるシステムメモリの1つまたは複数にこのコマンドを送る。メモリコントローラ130はまた、メモリデバイス160A、162A、160B、及び162B、ならびにディスクメモリから応答を受信し、かつこの応答を、クライアント110~112の対応するソースに送る。
【0016】
いくつかの実施形態では、コンピューティングシステム100のアドレス空間は、少なくとも、クライアント110~112、及び、入出力周辺デバイス(図示せず)及び他のタイプのコンピューティングリソースなどの1つまたは複数の他の構成要素の間で分割される。メモリマップは、どのアドレスがどの構成要素にマッピングされるか、ひいては、クライアント110~112のうちのどれに特定のアドレスに対するメモリ要求がルーティングされるべきなのかを判断するために維持される。クライアント110~112の1つまたは複数は、対応するプロセッサコアに対するメモリレイテンシを低減するためのキャッシュメモリサブシステムを含む。さらに、いくつかの実施形態では、共有のキャッシュメモリサブシステムは、メモリデバイス160A、162A、160B、及び162Bにアクセスする前にラストレベルキャッシュ(LLC)としてプロセッサコアによって使用される。本明細書で使用されるように、「メモリアクセス」という用語は、対応する要求アドレスの要求されたデータがキャッシュにある場合キャッシュヒットが生じる、メモリ読み出し要求またはメモリ書き込み要求動作を行うことを指す。代替的には、メモリアクセス要求は、要求されたデータがキャッシュにない場合にキャッシュミスが生じる。
【0017】
さまざまな実施形態では、システムメモリはマルチチャネルメモリアーキテクチャを含む。このタイプのアーキテクチャは、メモリコントローラ130A及び130Bへのデータの転送速度を、チャネル152A、154A、152B、及び154Bなど、これらメモリコントローラの間での通信のより多くのチャネルを追加することによって増大させる。一実施形態では、マルチチャネルアーキテクチャは、多数のメモリモジュール、及び、多チャネルをサポートすることが可能であるマザーボード及び/またはカードを利用する。
【0018】
いくつかの実施形態では、コンピューティングシステム100は、システムメモリを提供するためにさまざまなダイナミックRAM(DRAM)のうちの1つを利用する。他の実施形態では、コンピューティングシステム100は、システムメモリを提供するために三次元集積回路(3D IC)を利用する。このような実施形態では、3D集積DRAMは、オフチップメモリアクセスを低減させるために低レイテンシ相互接続及び追加のオンチップメモリストレージ両方共を提供する。1つまたは複数の行バッファまたは他の同等の構造を含む行ベースアクセススキームを使用するシステムメモリの他のメモリ技術は、可能でありかつ考えられる。他のメモリ技術の例には、相変化メモリ、スピントルク移行磁化反転抵抗性メモリ、及びメモリスタなどが挙げられる。
【0019】
さまざまな実施形態では、メモリコントローラ130B内の構成要素は、メモリコントローラ130Aにおける構成要素と同じ機能性を有する。いくつかの実施形態では、メモリコントローラ130A及び130B内の制御ユニット132A及び132Bは、受信したメモリ要求を、読み出し/書き込みトランザクション、ならびにアクティブ化及びプリチャージトランザクションなどのトランザクションに翻訳する。本明細書で使用されるように、「トランザクション」は「コマンド」とも称される。さまざまな実施形態では、チャネル152A、154A、152B、及び154Bのうちのそれぞれ1つは、メモリデバイス160A、162A、160B、及び162Bの対応する1つ内の多数のバンクに対する、コマンドバス、アドレスバス、及びデータバスを含むリンクである。
【0020】
さまざまな実施形態では、メモリデバイス160A、162A、160B、及び162Bは多数のランクを含み、このそれぞれは、多数のメモリアレイバンクを有する。バンクのそれぞれは、多数の行及び行バッファを含む。それぞれの行バッファは、メモリアレイバンク内の多数の行のうちのアクセスした行に対応するデータを格納する。アクセスした行は、受信したメモリ要求におけるDRAMアドレスによって識別される。典型的には、それぞれの行はデータのページを格納する。ページのサイズは、設計検討に基づいて選定される。このようなページサイズは、1キロバイト(1KB)、4キロバイト(4KB)、または任意の他のサイズとすることができる。
【0021】
メモリチャネル140A及び140BはPHY150A及び150Bとインターフェース接続する。いくつかの実施形態では、物理インターフェースPHY150A及び150Bのそれぞれは、メモリコントローラ130A及び130Bからのコマンドストリームを、メモリデバイス160A、162A、160B、及び162Bに任意のタイミングで伝達する。プロトコルは、1クロックサイクル当たりのデータ転送数、信号電圧レベル、信号タイミング、信号及びクロック位相、ならびにクロック周波数などの情報転送に使用される値を判断する。いくつかの実施形態では、PHY150A及び150Bのそれぞれは、プロトコルにおいて指定される初期化及び較正シーケンスのための状態機械を含む。
【0022】
さらに、一実施形態では、PHY150A及び150Bのそれぞれは、セルフテスト、診断、ならびに誤差検出及び補正ハードウェアを含む。PHY150A及び150Bとメモリデバイス160A、162A、160B、及び162Bとの間の対応するインターフェースのプロトコル例には、DDR2 SDRAM、DDR3 SDRAM、GDDR4(Graphics Double Data Rate、バージョン4) SDRAM、GDDR5 SDRAM、及びGDDR6 SDRAMが挙げられる。
【0023】
示されるように、メモリチャネル140Aはアドレス生成器142A及び144Aを含み、メモリチャネル140Bはアドレス生成器142B及び144Bを含む。さまざまな実施形態では、アドレス生成器142A及び144Aは、メモリコントローラ130Aによって受信されるメモリ要求アドレスを、メモリデバイス160A及び162Aのうちの1つにおける任意のランク、任意のバンク、及び任意の行を識別する値に翻訳する。2つのアドレス生成器が示されるが、他の実施形態では、別の数のアドレス生成器がメモリコントローラ130Aに含まれる。
【0024】
いくつかの実施形態では、アドレス生成器144Aは、アドレス生成器142Aによって生成された第1のアドレスに対するオフセットとして第2のアドレスを生成する。1つの実施形態では、アドレス生成器144Aは、第2のアドレスにおいて、メモリデバイス160A及び162Aのうちの1つ内の任意のランク、任意のバンク、及び任意の行を識別するために、アドレス生成器142Aによって生成された第1のアドレスと同じ識別子を使用する。さらに、一実施形態では、第1のアドレスは、識別された行における要求される第1のデータの開始バイトを識別し、第2のアドレスは、第1のデータと重複しない要求される第2のデータの開始バイトを識別する。一実施形態では、第2のデータは識別された行における第1のデータに連続している。他の実施形態では、第2のデータは識別された行における第1のデータに連続していない。従って、単一のメモリコントローラ130Aは、データ及びコマンドを2つのチャネル152A及び154Aに転送し、また、2つの異なる要求に対して同じ行におけるデータへの同時アクセスをサポートする。
【0025】
さまざまな実施形態では、制御ユニット132Aは、制御ユニット132Aが第1のメモリ要求及び第2のメモリ要求のそれぞれが任意の範囲のメモリアドレス内のデータを対象にすると判断する時、任意のメモリアクセスコマンドが、第1のメモリ要求、及び第1のメモリ要求と異なる第2のメモリ要求のそれぞれに応えるという指示を格納する。一実施形態では、任意の範囲のメモリアドレスは、メモリデバイス160A及び162Aのうちの1つにおけるメモリのページに対する範囲である。いくつかの実施形態では、制御ユニット130Aは、任意のメモリアクセスコマンドが完了したとの判断に応答して、第1のメモリ要求及び第2のメモリ要求のそれぞれを完了とマークする。
【0026】
図2を参照すると、メモリコントローラ200の1つの実施形態の一般化されたブロック図が示されている。示された実施形態では、メモリコントローラ200は、通信ファブリックを介したコンピューティングリソースに対するインターフェース210と、受信したメモリアクセス要求及び受信した応答を格納するためのキュー220と、制御ユニット250と、少なくとも物理インターフェース及び少なくとも2つのチャネルを介したメモリデバイスに対するインターフェース280と、を含む。インターフェース210及び280のそれぞれは、各通信プロトコルをサポートする。
【0027】
一実施形態では、キュー220は、受信した読み出し要求を格納するための読み出しキュー232、及び受信した書き込み要求を格納するための別個の書き込みキュー234を含む。他の実施形態では、キュー220は、メモリ読み出し要求及びメモリ書き込み要求両方共を格納するための統一キューを含む。1つの実施形態では、キュー220は、読み出しキュー232、書き込みキュー234、または使用される場合は統一キューから選択された、スケジューリング済みメモリアクセス要求を格納するためのキュー236を含む。キュー236は、保留キュー236とも称される。いくつかの実施形態では、制御レジスタ270は現在のモードの指示を格納する。例えば、オフセットチップメモリデータバス及びメモリデバイスは、任意の時間で読み出しモードまたは書き込みモードのどちらかをサポートする。従って、トラフィックは、現在のモード中に任意の一方向にルーティングされ、かつ現在のモードが終了する時に方向を変更する。
【0028】
いくつかの実施形態では、読み出しスケジューラ252は、読み出しキュー232からの読み出し要求を順不同で選択するためのアービトレーション論理を含む。読み出しスケジューラ252は、サービス品質(QoS)または他の優先情報、期間、プロセスまたはスレッド識別子(ID)、及び、同じメモリチャネルを対象にすること、同じランクを対象にすること、同じバンクを対象にすること、及び/または同じページを対象にすることなどの他の格納された要求との関係に基づいて、メモリデバイスに対する読み出しキュー232内の格納済み要求の順不同の発行をスケジューリングする。書き込みスケジューラ254は、書き込みキュー234に対する同様の選択論理を含む。一実施形態では、応答スケジューラ256は、優先度に基づいて、メモリデバイスから受信されたコンピューティングリソースに対する応答を順不同で発行するための同様の論理を含む。
【0029】
さまざまな実施形態では、コマンドプロセッサ272は、受信したメモリ要求を、読み出し/書き込みトランザクション、ならびにアクティブ化及びプリチャージトランザクションなどの1つまたは複数のトランザクション(またはコマンド)に翻訳する。いくつかの実施形態では、コマンドはキュー232~236に格納される。他の実施形態では、別個のキューのセットが使用される。示されるように、制御ユニット250はアドレス生成器260及び262を含む。さまざまな実施形態では、アドレス生成器260及び262は、メモリコントローラ130Aによって受信されたメモリ要求アドレスを、メモリコントローラ200に接続されるメモリデバイスのうちの1つにおける、任意のランク、任意のバンク、及び任意の行を識別する値に翻訳する。2つのアドレス生成器が示されているが、他の実施形態では、別の数のアドレス生成器が制御ユニット250に含まれる。
【0030】
いくつかの実施形態では、アドレス生成器262は、アドレス生成器260によって生成される第1のアドレスに対するオフセットとして第2のアドレスを生成する。1つの実施形態では、アドレス生成器262は、第2のアドレスにおいて、メモリデバイスのうちの1つ内の、任意のランク、任意のバンク、及び任意の行を識別するために第1のアドレスと同じ識別子を使用する。さらに、一実施形態では、第1のアドレスは、識別された行における要求されるデータの開始バイトを識別し、第2のアドレスは、第1のデータと重複せず、かつ識別された行における第1のデータに連続していない要求されるデータの開始バイトを識別する。従って、単一のメモリコントローラ200は、データ及びコマンドを少なくとも2つのチャネルに転送し、また、不連続データへの同時アクセスをサポートする。
【0031】
さまざまな実施形態では、制御ユニット250は、第1のメモリ要求及び第2のメモリ要求のそれぞれが任意の範囲のメモリアドレス内のデータを対象にしていると制御ユニット250が判断する時、キュー220に格納される任意のメモリアクセスコマンドが、キュー220に格納される、第1のメモリ要求、及び第1のメモリ要求と異なる第2のメモリ要求のそれぞれに応えるという指示を格納する。一実施形態では、任意の範囲のメモリアドレスは、メモリデバイスのうちの1つにおけるメモリのページに対するアドレス範囲である。いくつかの実施形態では、制御ユニット250は、任意のメモリアクセスコマンドが完了したとの判断に応答して、第1のメモリ要求及び第2のメモリ要求のそれぞれを完了とマークする。
【0032】
いくつかの実施形態では、制御レジスタ270は現在のモードの指示を格納する。例えば、メモリデータバス及びメモリデバイスは、任意の時間で読み出しモードまたは書き込みモードどちらかをサポートする。従って、トラフィックは、現在のモード中に任意の一方向にルーティングされ、かつデータバスのターンアラウンドレイテンシの後に現在のモードが変更される時に方向を変更する。さまざまな実施形態では、制御レジスタ270は、読み出しモード中に送るために読み出し要求数の閾値(読み出しバースト長)を格納する。いくつかの実施形態では、制御レジスタ270は、発行するためにキュー232~236に格納される要求を選択するために読み出しスケジューラ252及び書き込みスケジューラ254における選択アルゴリズムによって使用される基準に対する重みを格納する。
【0033】
コンピューティングシステム100と同様に、2つのメモリチャネルをメモリコントローラ200に接続することは、「連動させること」と称される。物理インターフェースを介してメモリコントローラ200に接続される少なくとも2つのチャネルのそれぞれは、選択されたメモリデバイス内の同じページにおけるデータにアクセスする同じコマンドを受信する。さらに、それぞれのチャネルはこれ自体のアドレスを有する。例えば、第1のチャネルはアドレス生成器260から第1のアドレスを受信し、第1のチャネルと異なる第2のチャネルはアドレス生成器262から第2のアドレスを受信する。一実施形態では、アドレス生成器260及び262によって生成されるアドレスは、DRAM用の列アドレスである。さまざまな実施形態では、メモリコントローラ200は不連続データに同時にアクセスする。
【0034】
いくつかの実施形態では、メモリコントローラ200はGDDR6 DRAMプロトコルをサポートする。このような実施形態では、インターフェース280は、16ビット(2バイト)の幅を有する(2つのチャネルの)1チャネル当たりの読み出し及び書き込みトランザクションをサポートし、バースト長は16である。2つの連動した16ビット幅のチャネルは、32ビット(4バイト)幅のチャネルに相当するものを提供する。64バイト要求について、2つのチャネル及び16のバースト長によって提供される、32ビット(4バイト)幅に相当するチャネルは、64バイトメモリ要求に応えるために64バイトを転送する。2つのチャネルは連動し、メモリコントローラ200は両方の16ビット幅のインターフェースを管理する。
【0035】
GDDR6プロトコルを使用する実施形態では、制御ユニット250は、32バイト要求に対する2つの独立した32バイトのインターフェースとして64バイトのインターフェースを管理する。一実施形態では、制御ユニット250は、両方の16ビットチャネルにわたって同じページを同時に開くためのコマンドを送る。例えば、制御ユニット250は、2つのチャネルのそれぞれに対するアクティブ化コマンドを同時に発行し、かつ2つのチャネルのそれぞれに対するメモリアクセスコマンドを同時に発行するが、制御ユニット250は、開かれたページに同時にかつ独立してアクセスするためにアドレス生成器260及び262を介して2つの異なるアドレスを送る。不連続データでもある(同じページ内の)隣接するデータには同時にアクセスする。従って、メモリコントローラ200は、単一の32バイトメモリ要求に対して64バイトを転送せず、64バイトのうちの32バイトを破棄し、これは非効率的である。もっと正確に言えば、メモリコントローラ200は、メモリの1ページ内など、メモリアドレスの範囲内の不連続データにアクセスする2つの32バイトメモリ要求に対して64バイトを転送する。
【0036】
いくつかの実施形態では、制御ユニット250は、2つの32バイトメモリ要求がメモリデバイスのうちの1つにおける同じページ内の不連続データにアクセスする時を判断する。他の実施形態では、GPUなどのクライアントは、2つの32バイトメモリ要求がメモリデバイスのうちの1つにおける同じページにアクセスする時を判断する。クライアントは、同じページ内の不連続データを対象にする2つの32バイト要求があることを指定する指示と共に64バイトメモリ要求を送る。一実施形態では、制御ユニット250が64バイトコマンドを発行する時、アドレス生成器262からのアドレスは無視される。
【0037】
ここで
図3を参照すると、コンピューティングシステムに対する効率的なメモリアクセスを行うための方法300の1つの実施形態が示されている。論述の目的で、この実施形態における(及び
図4における)ステップは、順番に示されている。しかしながら、説明される方法のさまざまな実施形態において、説明される要素の1つまたは複数が、示されるのとは異なる順序で同時に行われる、または完全に省略されることは留意されたい。他のさらなる要素も要望通りに行われる。本明細書に説明されるさまざまなシステムまたは装置のいずれかは、方法300を実施するように構成される。
【0038】
1つまたは複数のクライアントは、コンピュータプログラムまたはソフトウェアアプリケーションを実行する。クライアントは、任意のメモリアクセス要求がキャッシュメモリサブシステム内で見落とされていると判断し、メモリコントローラを介してシステムメモリにメモリアクセス要求を送る。メモリ要求は、受信されると格納される(ブロック302)。受信したメモリ要求がサイズ閾値より小さいデータサイズを有するデータを要求しない場合(条件ブロック304の「いいえ」ブランチ)、メモリ要求はコマンドに翻訳される(ブロック310)。いくつかの実施形態では、メモリ要求は、64バイト及び32バイトのサイズを有するデータを要求する。一実施形態では、サイズ閾値は64バイトで設定される。従って、64バイトのデータサイズを有するデータを要求するメモリ要求は、サイズ閾値より小さいデータサイズを有するデータを要求しない。
【0039】
さまざまな実施形態では、メモリ読み出し要求などのメモリ要求は、アクセスしているメモリに基づいて1つまたは複数のコマンドに変換される。例えば、DRAM内の制御論理は、識別された行に一度アクセスするために、及び、行バッファに格納された修正済みコンテンツをクローズトランザクション中に識別された行に一度戻すために、DRAM内のデータライン及び制御ラインのアクティブ化(オープン)トランザクション及びプリチャージなどの複雑なトランザクションを行う。アクティブ化/オープン、列アクセス、読み出しアクセス、書き込みアクセス、及びプリチャージ/クローズなどの異なるDRAMトランザクションのそれぞれは、異なる対応するレイテンシを有する。
【0040】
メモリアクセスコマンドは、メモリ要求に応えるために発行するようにスケジューリングされる(ブロック312)。いくつかの実施形態では、メモリアクセスコマンドは、少なくとも、対応するメモリ要求の優先度及び対象に基づく順不同の発行に対してマークされる。他の実施形態では、メモリ要求は、コマンドへの翻訳の前にスケジューリングされる。従って、メモリコントローラはメモリ要求に対する順不同の発行をサポートする。
【0041】
受信したメモリ要求がサイズ閾値より小さいデータサイズを有し(条件ブロック304の「はい」ブランチ)、かつ第1のメモリ要求及び第2のメモリ要求が同じ任意のアドレス範囲を対象にしない(条件ブロック306の「いいえ」ブランチ)場合、方法300はブロック310に移り、ここで、メモリ要求はコマンドに翻訳される。しかしながら、受信したメモリ要求がメモリデータバスのサイズより小さいデータサイズを有し(条件ブロック304の「はい」ブランチ)、かつ第1のメモリ要求及び第2のメモリ要求が同じ任意のアドレス範囲を対象にする(条件ブロック306の「はい」ブランチ)場合、任意のメモリアクセスコマンドが、第1のメモリ要求及び第2のメモリ要求のそれぞれに応えるという指示が格納される(ブロック308)。その後、方法300はブロック310に移り、ここで、メモリ要求はコマンドに翻訳される。
【0042】
図4に移ると、コンピューティングシステムに対する効率的なメモリアクセスを行うための方法400の1つの実施形態が示されている。任意のメモリアクセスコマンドが第1のメモリ要求及び第2のメモリ要求のそれぞれに応えるという指示が検出される(ブロック402)。任意のメモリアクセスコマンドはメモリデバイスに送られる(ブロック404)。例えば、メモリコントローラにおけるスケジューリング論理は、優先レベル及び期間などに基づいてメモリデバイスに対して発行するための任意のメモリアクセスコマンドを選択する。
【0043】
メモリコントローラは、メモリデバイスに、第1のデータを格納するメモリデバイスにおける第1の場所を指し示す第1のアドレスを送る(ブロック406)。メモリコントローラは、メモリデバイスに、第1のデータに連続していない第2のデータを格納するメモリデバイスにおける第2の場所を指し示す第2のアドレスを送る(ブロック408)。第1のメモリ要求及び第2のメモリ要求のそれぞれは、任意のメモリアクセスコマンドが完了したとの判断に応答して完了とマークされる(ブロック410)。
【0044】
さまざまな実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、先に説明した方法及び/または機構を実施する。プログラム命令は、Cなどの高水準プログラミング言語でハードウェアの挙動を表す。代替的には、Verilogなどのハードウェア設計言語(HDL)が使用される。プログラム命令は非一時的なコンピュータ可読記憶媒体上に格納される。多数のタイプの記憶媒体が利用可能である。記憶媒体には、プログラム実行のためにコンピューティングシステムにプログラム命令及び付随のデータを提供するために使用中のコンピューティングシステムによってアクセス可能である。コンピューティングシステムは、プログラム命令を実行するように構成される、少なくとも1つまたは複数のメモリ及び1つまたは複数のプロセッサを含む。
【0045】
上述した実施形態が実施態様の非限定的な例に過ぎないことは、強調されるべきである。上記の開示を十分に理解することで、多数の変形及び修正が当業者には明らかとなるであろう。下記の特許請求の範囲がこのような変形及び修正全てを含んでいると解釈されることが意図される。