(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-11-27
(45)【発行日】2024-12-05
(54)【発明の名称】ファイングレインDRAMにおける通常アクセス性能を回復するための方法及び装置
(51)【国際特許分類】
G06F 12/06 20060101AFI20241128BHJP
【FI】
G06F12/06 521C
G06F12/06 521G
G06F12/06 525A
(21)【出願番号】P 2024534636
(86)(22)【出願日】2022-12-07
(86)【国際出願番号】 US2022052164
(87)【国際公開番号】W WO2023114071
(87)【国際公開日】2023-06-22
【審査請求日】2024-07-08
(32)【優先日】2021-12-13
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】スリセシャン スリカーント
(72)【発明者】
【氏名】ヴィグネシュ アディナラヤナン
(72)【発明者】
【氏名】ジャガディッシュ ビー. コトゥラ
(72)【発明者】
【氏名】セルゲイ ブラゴドゥロフ
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2020-187747(JP,A)
【文献】特開2020-87477(JP,A)
【文献】特表2009-535748(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
ファイングレインダイナミックランダムアクセスメモリ(DRAM)であって、
複数のグレインに分割されたメモリアレイを含む第1のメモリバンクであって、各グレインは行バッファ及び入力/出力(I/O)回路を含む、第1のメモリバンクと、
第2のメモリバンクと、
前記第1のメモリバンク内の各グレインの前記I/O回路に結合されたデュアルモードI/O回路であって、第1のデータ幅を有するコマンドが各グレインにルーティングされ、各グレインにおいて個別に実行される第1のモードと、前記第1のデータ幅とは異なる第2のデータ幅を有するコマンドが前記グレインのうち少なくとも2つによって並列に実行される第2のモードと、で動作するデュアルモードI/O回路と、を備える、
ファイングレインDRAM。
【請求項2】
前記デュアルモードI/O回路は、マルチキャスト列アドレスストローブ(CAS)コマンドに応じて、前記第2のモードでコマンドを実行する、
請求項1のファイングレインDRAM。
【請求項3】
前記デュアルモードI/O回路は、前記グレインのうち少なくとも2つにおいて選択された列に対して列アドレスストローブを並列にアサートさせることによって、前記マルチキャストCASコマンドに応答する、
請求項2のファイングレインDRAM。
【請求項4】
前記デュアルモードI/O回路は、前記第1のメモリバンク内の各グレインの前記I/O回路内の列デコーダに結合されたマルチプレクサを含む、
請求項3のファイングレインDRAM。
【請求項5】
前記デュアルモードI/O回路は、前記第2のモードにおいて、前記マルチキャストCASコマンド内の初期グレイン識別子ビットを、異なるグレインに関連付けられた新しい値に置き換えることによって、前記マルチキャストCASコマンドのローカライズされたリレーを前記グレインのうち少なくとも2つのグレインの少なくとも1つに転送するように実行する、
請求項3のファイングレインDRAM。
【請求項6】
前記デュアルモードI/O回路は、ルックアップテーブル及び加算器のうち何れかを使用して前記新しい値を識別する、
請求項5のファイングレインDRAM。
【請求項7】
揮発性メモリを動作させる方法であって、
メモリコントローラから前記揮発性メモリ上の第1のバンクの第1のグレインに列アドレスストローブ(CAS)コマンドを送信することと、
前記揮発性メモリ上のデュアルモードI/O回路にマルチキャストCASコマンドを送信することと、
前記揮発性メモリにおいて、前記マルチキャストCASコマンドに応じて、前記第1のグレインを含む複数のグレインにCAS信号を送信することと、を含む、
方法。
【請求項8】
前記CASコマンドに応じて、第1のデータ幅を有するデータを読み取ることと、前記CAS信号に応じて、前記第1のデータ幅とは異なる第2のデータ幅を有する第2のデータを前記複数のグレインから並列に読み取ることと、を含む、
請求項7の方法。
【請求項9】
前記デュアルモードI/O回路において、前記マルチキャストCASコマンドを前記複数のグレインに分配することを含む、
請求項7の方法。
【請求項10】
前記デュアルモードI/O回路において、前記マルチキャストCASコマンド内の初期グレイン識別子ビットを、異なるグレインに関連付けられた新しい値で置き換えることによって、マルチキャストCASのローカライズされたリレーを前記複数のグレインのうち少なくとも1つに転送することを含む、
請求項7の方法。
【請求項11】
前記デュアルモードI/O回路は、ルックアップテーブル及び加算器のうち何れかを使用して前記新しい値を識別する、
請求項10の方法。
【請求項12】
ジャストインタイムコンパイラを使用して、元のメモリアクセス要求に基づいて前記マルチキャストCASコマンドを生成することを含む、
請求項7の方法。
【請求項13】
コンパイラを使用して、元のメモリアクセス要求に基づいて前記マルチキャストCASコマンドを生成することを含む、
請求項7の方法。
【請求項14】
メモリコントローラにおいて、所定のデータ幅に関連付けられた命令セットアーキテクチャ(ISA)コマンドを認識することに基づいて前記マルチキャストCASコマンドを生成することを含む、
請求項7の方法。
【請求項15】
メモリコントローラにおいて、前記メモリコントローラによって処理されるメモリコマンドに関連付けられたメモリ領域に基づいて前記マルチキャストCASコマンドを生成することを含む、
請求項7の方法。
【発明の詳細な説明】
【背景技術】
【0001】
高帯域幅ダイナミックランダムアクセスメモリ(dynamic random-access memory、DRAM)は、グラフィックス処理ユニット(Graphics Processing Unit、GPU)及び他のスループット指向の並列プロセッサによって使用される。次世代のGPU専用DRAMは、主に、先ず、グラフィックスダブルデータレートメモリとともに使用されるような高周波オフチップシグナリングを使用することによって、より最近では、プロセッサダイと、高帯域幅メモリ(High Bandwidth Memory、HBM/HBM2)モジュールにおいて使用されるようなDRAMチップのスタックへの広い高帯域幅インターフェースとのオンパッケージ統合を通して、帯域幅を最大化するように最適化されている。
【0002】
そのようなシステムのための多くの重要なワークロードクラスは、不規則なファイングレインメモリアクセス(fine-grained memory accesses)を経験する。そのようなワークロードとしては、グラフトラバーサル(graph traversal)(ソーシャルネットワーキング、検索、eコマース、クラウド、及びギグエコノミーにおいて広く使用される)、キーバリューストアアクセス(key-value store access)、及び、高性能コンピューティング(high performance computing、HPC)が挙げられる。次世代のグレインベースのスタック型DRAMは、エネルギー効率が良く、高帯域幅のファイングレインで不規則なアクセスを可能にするのに重要である。
【0003】
ファイングレインDRAM(Fine-grained DRAM、FG-DRAM)は、実用的な熱設計電力(Thermal Design Power、TDP)の限界を超えずに、HBM等のスタック型DRAMメモリがメモリ帯域幅をスケーリングすることを可能にする。FG-DRAMは、DRAMダイを、コマンドアドレス(command-address、CA)ピンではなく専用のDQピンを各々が有するより小さい独立したユニット(グレインと呼ばれる)にパーティション分割することによって、そのようなスケーリングを行う。例えば、従来のDRAMバンクを2つに分割して、元のバンクと比較して各々が半分の数の列を有する2つのグレインを実現することができる。その結果、メモリレベルの並列性の著しい向上が得られる。更に、活性化エネルギーの大幅な低減が実現される。
【0004】
しかしながら、そのようなグレインベースのアーキテクチャでは、各グレインがDRAMチャネルに対してより狭いインターフェースを有するので、開いた行(row)への列(column)アクセスコマンドを介したDRAMアトムのアクセスレイテンシは、バンクごとのグレインの数に比例して増加する。そのような増加は、レイテンシの影響を受けやすい通常アクセスのワークロードにとって有害である。
【図面の簡単な説明】
【0005】
【
図1】先行技術で知られている加速処理ユニット(accelerated processing unit、APU)及びメモリシステムのブロック図である。
【
図2】いくつかの実施形態による、
図1と同様のAPUで用いるのに適したメモリコントローラのブロック図である。
【
図3】グレインの使用を示す2つのDRAMの2つのメモリバンクを比較するブロック図である。
【
図4】グレインに依存しないフォーマットでインターリーブされたファイングレインDRAMメモリのためのアドレス線の配置を示すブロック図である。
【
図5】グレインストライプフォーマットでインターリーブされたファイングレインDRAMメモリのためのアドレス線の配置を示すブロック図である。
【
図6】先行技術による、ファイングレインメモリバンクを示すブロック図である。
【
図7】いくつかの実施形態による、ファイングレインメモリバンクを示すブロック図である。
【
図8】いくつかの追加の実施形態による、ファイングレインメモリバンクを示すブロック図である。
【
図9】いくつかの実施形態による、ファイングレインメモリを動作させるためのプロセスのフロー図である。
【
図10】いくつかの実施形態による、ファイングレインメモリを動作させるためのライブラリ命令を含むデータ処理システムを示すブロック図である。
【
図11】いくつかの実施形態による、ファイングレインメモリを動作させるためのプロセスのフロー図である。
【発明を実施するための形態】
【0006】
以下の説明において、異なる図面における同一の符号の使用は、同様のアイテム又は同一のアイテムを示す。別段の言及がなければ、「結合される(coupled)」という単語及びその関連する動詞形は、当該技術分野で周知の手段による直接接続及び間接電気接続の両方を含み、また、別段の言及がなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も同様に意味する。
【0007】
ファイングレインダイナミックランダムアクセスメモリ(DRAM)は、第1のメモリバンクと、第2のメモリバンクと、デュアルモードI/O回路と、を含む。第1のメモリバンクは、複数のグレインに分割されたメモリアレイを含み、各グレインは、行バッファ及び入力/出力(I/O)回路を含む。デュアルモードI/O回路は、第1のメモリバンク内の各グレインのI/O回路に結合され、第1のデータ幅を有するコマンドが各グレインにルーティングされ、各グレインにおいて個別に実行される第1のモードと、第1のデータ幅とは異なる第2のデータ幅を有するコマンドがグレインのうち少なくとも2つによって並列に実行される第2のモードと、で動作する。
【0008】
揮発性メモリを動作させる方法は、メモリコントローラから当該揮発性メモリ上の第1のバンク内の第1のグレインに列アドレスストローブ(column address strobe、CAS)コマンドを送信することを含む。本方法は、当該揮発性メモリ上のデュアルモードI/O回路にマルチキャストCASコマンドを送信することを含む。当該揮発性メモリにおいて、マルチキャストCASコマンドに応じて、本方法は、当該第1のグレインを含む複数のグレインにCAS信号を送信することを含む。
【0009】
データ処理システムは、複数の処理ユニットと、複数の処理ユニットに結合されたデータファブリックと、処理ユニットからのメモリアクセス要求に対応するためにデータファブリックに結合されたメモリコントローラと、メモリコントローラと通信するファイングレインダイナミックランダムアクセスメモリ(DRAM)と、を含む。ファイングレインDRAMは、第1のメモリバンクと、第2のメモリバンクと、デュアルモードI/O回路と、を含む。第1のメモリバンクは、複数のグレインに分割されたメモリアレイを含み、各グレインは、行バッファ及び入力/出力(I/O)回路を含む。デュアルモードI/O回路は、第1のメモリバンク内の各グレインのI/O回路に結合され、デュアルモードI/O回路は、第1のデータ幅を有するコマンドが各グレインにルーティングされ、各グレインにおいて個別に実行される第1のモードと、第1のデータ幅とは異なる第2のデータ幅を有するコマンドがグレインのうち少なくとも2つによって並列に実行される第2のモードと、で動作する。
【0010】
図1は、いくつかの実施形態による、加速処理ユニット(APU)100のブロック図である。APU100は、様々なホストデータ処理プラットフォームの一部であり得るシステムオンチップ(System-on-Chip、SoC)として実装される。この実施形態ではAPUが示されているが、中央処理ユニット(central processing unit、CPU)又はグラフィックス処理ユニット(graphics processing unit、GPU)等の他のデータ処理プラットフォームが使用されてもよい。例えば、いくつかの実施形態では、本明細書のファイングレインメモリアクセス技術は、グラフィックスカード又は他のグラフィックス処理モジュールにおいて採用されるGPUチップにおいて具現化される。他の実施形態では、インテリジェンス処理ユニット(intelligence processing unit、IPU)等の専用プロセッサコアが使用されてもよい。この実施形態では、APU100は、概して、CPUコア複合体110、グラフィックスコア120、ディスプレイエンジンのセット130、メモリ管理ハブ140、データファブリック150、周辺コントローラのセット160、周辺バスコントローラのセット170、システム管理ユニット(system management unit、SMU)180、フラッシュメモリ205、及び、FG_DRAMメモリコントローラのセット190を含む。
【0011】
CPUコア複合体110は、CPUコア112及びCPUコア114を含む。この例では、CPUコア複合体110が2つのCPUコアを含むが、他の実施形態では、CPUコア複合体110が任意の数のCPUコアを含むことができる。CPUコア112及び114の各々は、制御ファブリックを形成するシステム管理ネットワーク(system management network、SMN)145及びデータファブリック150に双方向に接続され、データファブリック150にメモリアクセス要求を提供することができる。CPUコア112及び114の各々は、単体のコアであってもよいし、更にキャッシュ等の特定のリソースを共有する2つ以上の単体のコアを有するコア複合体であってもよい。
【0012】
グラフィックスコア120の各々は、頂点処理、フラグメント処理、シェーディング、テクスチャーブレンディング等のグラフィックス動作を高度に統合化された並列方式で実行することができる高性能グラフィックス処理ユニット(GPU)である。各グラフィックスコア120は、SMN145及びデータファブリック150に双方向に接続され、メモリアクセス要求をデータファブリック150に提供することができる。これに関して、APU100は、CPUコア複合体110とグラフィックスコア120とが同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体110とグラフィックスコア120とがメモリ空間の一部を共有する一方でグラフィックスコア120がCPUコア複合体110によりアクセスできないプライベートグラフィックスメモリも使用するメモリアーキテクチャの何れかをサポートすることができる。
【0013】
ディスプレイエンジン130は、モニタ上に表示するために、グラフィックスコア120によって生成されたオブジェクトをレンダリング及びラスタライズする。グラフィックスコア120及びディスプレイエンジン130は、メモリ内の適切なアドレスへの均一な変換のために共通のメモリ管理ハブ140に双方向で接続され、メモリ管理ハブ140は、そのようなメモリアクセスを生成してメモリシステムから戻される読み取りデータを受信するためにデータファブリック150に双方向で接続される。
【0014】
データファブリック150は、任意のメモリアクセスエージェントとメモリコントローラ190との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリックは、システム構成に基づいてメモリアクセスの送信先を判定するための、基本入出力システム(basic input/output system、BIOS)によって規定されるシステムメモリマップ、及び、各仮想接続のためのバッファも含む。
【0015】
周辺コントローラ160は、USBコントローラ162及びシリアルアドバンストテクノロジーアタッチメント(serial advanced technology attachment、SATA)インターフェースコントローラ164を含み、その各々は、システムハブ166及びSMN145に双方向に接続される。これら2つのコントローラは、APU100において使用され得る周辺コントローラの単なる例示である。
【0016】
周辺バスコントローラ170は、システムコントローラハブ172及び周辺コントローラハブ174を含み、その各々は、入力/出力(I/O)ハブ176及びSMN145に双方向に接続される。システムコントローラハブ172は、適切な通信リンクを介してフラッシュメモリ205に接続する。I/Oハブ176は、システムハブ166及びデータファブリック150に対して双方向に接続される。したがって、例えば、CPUコアは、データファブリック150がI/Oハブ176を介してルーティングするアクセスにより、USBコントローラ162、SATAインターフェースコントローラ164、システムコントローラハブ172、又は、周辺コントローラハブ174内のレジスタをプログラムすることができる。
【0017】
SMU180は、APU100上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU180は、APU100上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。また、SMU180は、様々なプロセッサ及び他の機能ブロックの電力を管理する。
【0018】
SoC実施形態が示されているが、これは限定的なものではなく、他のコンピューティングプラットフォームも、本明細書で説明される技術から利益を得ることができる。
【0019】
図2は、
図1のようなAPUで使用するのに好適なメモリコントローラ200のブロック図である。メモリコントローラ200は、概して、インターフェース212、メモリインターフェースキュー214、コマンドキュー220、アドレス生成器222、コンテンツアドレサブルメモリ(content addressable memory、CAM)224、リプレイキュー230を含むリプレイ制御ロジック231、リフレッシュ制御ロジック232、リフレッシュ制御ロジック232、タイミングブロック234、ページテーブル236、アービタ238、エラー訂正コード(error correction code、ECC)チェック回路242、ECC生成ブロック244、及び、データバッファ246を含む。
【0020】
インターフェース212は、外部バスを介したデータファブリックに対する第1の双方向接続を有し、出力を有する。メモリコントローラ200において、この外部バスは、「AXI4」として知られている英国ケンブリッジのARM Holdings,PLCによって指定された高度拡張可能インターフェースバージョン4と適合するが、他の実施形態では他のタイプのインターフェースであり得る。インターフェース212は、メモリアクセス要求を、FCLK(又はMEMCLK)ドメインとして知られている第1のクロックドメインから、UCLKドメインとして知られているメモリコントローラ200の内部の第2のクロックドメインに変換する。同様に、メモリインターフェースキュー214は、UCLKドメインからDFIインターフェースと関連付けられるDFICLKドメインへのメモリアクセスを与える。
【0021】
アドレス生成器222は、AXI4バスを介してデータファブリックから受信されるメモリアクセス要求のアドレスを復号する。メモリアクセス要求は、正規化フォーマットで表された物理アドレス空間内のアクセスアドレスを含む。アドレス生成器222は、正規化されたアドレスを、メモリシステム内の実際のメモリデバイスをアドレス指定するために、及び、関連するアクセスを効率的にスケジュールするために使用され得るフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループと関連付ける領域識別子を含む。起動時に、システムBIOSは、メモリシステム内のメモリデバイスに問い合わせてそれらのサイズ及び構成を判定し、アドレス生成器222と関連付けられた構成レジスタのセットをプログラムする。アドレス生成器222は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー220は、CPUコア112、114及びグラフィックスコア120等のAPU100内のメモリアクセスエージェントから受信されるメモリアクセス要求のキューである。コマンドキュー220は、アドレス生成器222によってデコードされたアドレスフィールド、及び、アービタ238がアクセスタイプ及びサービス品質(quality of service、QoS)識別子を含むメモリアクセスを効率的に選択することを可能にする他のアドレス情報を記憶する。CAM224は、ライトアフターライト(write after write、WAW)及びリードアフターライト(read after write、RAW)順序規則等の順序規則を実施するための情報を含む。コマンドキュー220は、それぞれが複数のコマンドエントリを含む複数のエントリスタックを含むスタックされたコマンドキューであり、この実施形態では、以下で更に説明するように、それぞれが4つのエントリからなる32のエントリスタックである。
【0022】
誤り訂正コード(ECC)生成ブロック244は、メモリに送られる書き込みデータのECCを判定する。次いで、このECCデータは、データバッファ246内の書き込みデータに追加される。ECCチェック回路242は、受信されたECCを着信ECCと照合してチェックする。
【0023】
リプレイキュー230は、アドレス及びコマンドパリティ応答等の応答を待っているアービタ238によって選択されたメモリアクセスを記憶するための一時キューである。リプレイ制御ロジック231は、ECCチェック回路242にアクセスして、戻されたECCが正しいか又はエラーを示すかを判定する。リプレイ制御ロジック231は、これらのサイクルのうち何れかのパリティ又はECCエラーの場合にアクセスがリプレイされるリプレイシーケンスを開始して制御する。リプレイされたコマンドは、メモリインターフェースキュー214に配置される。
【0024】
リフレッシュ制御ロジック232は、メモリアクセスエージェントから受信した通常の読み取り及び書き込みメモリアクセス要求とは別に生成される様々な電源断、リフレッシュ及び終端抵抗(ZQ)較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュロジックは、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュ制御ロジック232は、DRAMチップ内のメモリセルの蓄積コンデンサからの電荷の漏れによって引き起こされるデータエラーを防止するために、定期的に、定められた条件に応じて、リフレッシュコマンドを生成する。リフレッシュ制御ロジック232は、アクティブ化カウンタ248を含み、この実施形態において、アクティブ化カウンタ248は、メモリチャネルを介してメモリ領域に送信されるアクティブ化コマンドのローリング数をカウントするカウンタをメモリ領域ごとに有する。メモリ領域は、以下で更に説明するように、いくつかの実施形態ではメモリバンクであり、他の実施形態ではメモリサブバンクである。更に、リフレッシュ制御ロジック232は、システム内の熱変化に起因するオンダイ終端抵抗の不一致を防止するためにZQを定期的に較正する。
【0025】
アービタ238は、コマンドキュー220に双方向に接続され、メモリコントローラ200の心臓部であり、メモリバスの使用を改善するためにアクセスのインテリジェントスケジューリングを実行する。この実施形態では、アービタ238は、以下で更に説明するように、複数のモードにおけるファイングレインメモリアクセスのためのコマンド及びアドレスを変換するためのグレインアドレス変換ブロック240を含む。いくつかの実施形態では、そのような機能はアドレス生成ブロック222によって実行され得る。アービタ238は、タイミングブロック234を使用して、コマンドキュー220内の特定のアクセスがDRAMタイミングパラメータに基づいて発行に適格であるかどうかを判定することによって、適切なタイミング関係を実施する。例えば、各DRAMは、「tRC」として知られるアクティブ化コマンド間の最小指定時間を有する。タイミングブロック234は、JEDEC仕様で定められたこのタイミングパラメータ及び他のタイミングパラメータに基づいて適格性を判定するカウンタのセットを維持し、リプレイキュー230に対して双方向で接続される。ページテーブル236は、アービタ238のためのメモリチャネルの各バンク及びランクにおけるアクティブページに関する状態情報を維持し、リプレイキュー230に対して双方向で接続される。アービタ238は、コマンドキュー220の各エントリスタックに対する単一のコマンド入力を含み、そこからコマンドを選択して、メモリインターフェースキュー214を介してDRAMチャネルにディスパッチするようにスケジュールする。
【0026】
インターフェース212から受信した書き込みメモリアクセス要求に応じて、ECC生成ブロック244は、書き込みデータに従ってECCを計算する。データバッファ246は、受信したメモリアクセス要求に関する書き込みデータ及びECCを記憶する。データバッファは、アービタ238がメモリチャネルへのディスパッチのために対応する書き込みアクセスを選択すると、組み合わされた書き込みデータ/ECCをメモリインターフェースキュー214に出力する。
【0027】
メモリコントローラ200は、関連するメモリチャネルへのディスパッチのためのメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーション決定を行うために、アドレス生成器222は、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループを含むプリデコードされた情報にデコードし、コマンドキュー220がプリデコードされた情報を記憶する。構成レジスタ(図示せず)は、アドレス生成器222が受信したアドレス情報をどのようにデコードするかを判定するための構成情報を記憶する。アービタ238は、デコードされたアドレス情報、タイミングブロック234によって示されるタイミング適格性情報、及び、ページテーブル236によって示されるアクティブページ情報を使用して、サービス品質(QoS)要件等の他の基準を遵守しながら、メモリアクセスを効率的にスケジュールする。例えば、アービタ238は、メモリページを変更するために必要なプリチャージコマンド及びアクティブ化コマンドのオーバーヘッドを回避するために、オープンページへのアクセスの優先度を実装し、あるバンクへのオーバーヘッドアクセスを別のバンクへの読み取り及び書き込みアクセスとインターリーブすることによって隠す。特に、通常動作中、アービタ238は、通常、ページを、これらのページが異なるページを選択する前にプリチャージされる必要があるまで、異なるバンクで開いたままにする。
【0028】
図3は、グレインの使用を示す2つのDRAMの2つのメモリバンク302及び304を比較するブロック
図300である。DRAMバンク302はグレインなしで構成され、一方、DRAMバンク304は2つのグレイン306及び308を含む。DRAMバンク304は、複数のDRAMバンクを含むより大きなDRAM集積回路の一部である。DRAMバンク304は、概して、複数のグレイン、この場合は2つのグレインに分割されたメモリアレイを含み、各グレインは、行バッファ及び入力/出力(I/O)回路を含む。
【0029】
DRAMバンク302の従来の非グレインアーキテクチャは、DRAMバンク302に割り当てられた擬似チャネル(pseudo-channel、pCH)上で8バースト又は「ビート(beats)」でアクセスされる32本のデータ線DQ[0:31]を介して32バイト(32B)メモリアクセスを実行することができる。バンク内の開いた行に列コマンドを発行することにより、8バーストで32バイト(32B)のデータが提供されるが、これは、バンクが擬似チャネルの32個全てのDQピンにアクセスしているためであり、ピンが分割されていないため、DRAMバンク304の2グレインアーキテクチャと比較して2倍高速のデータ読み出しが提供される。その結果、非グレインアーキテクチャにおいて、開いた行から64Bキャッシュ線を読み出すための時間は、2*8=16バーストに1つの追加の列から列への長い遅延時間(tCCDL)を加え、オーバーヘッド時間のデータバス上のバースト持続時間(tBURST)を引いた時間を要する。
【0030】
本明細書の技術なしにファイングレインアーキテクチャを使用する場合、DRAMバンク304は、pCHのデータ線の2つの指定されたセットDQ[0:15]及びDQ[16:31]を介して16Bアクセスでアクセスされる。グレイン専用の擬似チャネルの16個のDQピンを有するこの例示的な構成では、グレイン内の開いた行は、8バーストで16Bのデータを提供することによって列コマンドに応答する。したがって、開いた行から64Bキャッシュ線を読み出すための時間は、4*8=32バーストに追加の3(tCCDL-tBURST)サイクルのオーバーヘッドを加えた時間を要する。したがって、グレインアーキテクチャは、個々の32Bアクセスに対して33%のレイテンシペナルティを被る。
【0031】
図4は、グレインに依存しないフォーマットでインターリーブされたファイングレインDRAMメモリのためのアドレス線の配置を示す図である。図示した配置では、アドレス線番号は、各アドレス線番号の下にラベル付けされたアドレス線を使用して上部に示されている。「RO」は行を表し、「CO」は列を表し、「GR」はグレイン番号を表し、「BK」はバンク番号を表し、「BG」はバンクグループ番号を表し、「PCH」は擬似チャネルを表し、「X」はアドレス線が割り当てられていないことを示す。グレインに依存しないアドレスインターリーブでは、イレギュラースループット指向の16Bアクセスを可能にするためにストライピング(striping)は行われず、アドレス線12のグレインアドレスビットはバンクアドレスビットと同様に使用される。
【0032】
図5は、グレインストライプフォーマットでインターリーブされたファイングレインDRAMメモリのためのアドレス線の配置を示す図である。図示された実施形態は、グレインストライプアドレスインターリービングを用いてグレインのストライプの32B配置を実現するために、メモリコントローラにおいて修正されたアドレスインターリービングを展開する。32Bのデータは、それぞれ16Bの2つの相関グレインに分割される。GRアドレスビットは、最下位アドレス線(線4)に存在し、隣接するグレインがこのビットによってアドレス指定されることを意味する。この手法は、例えば、4つのグレイン、8つのグレイン又は16のグレイン等のように、バンクごとに増加した数のグレインをサポートするように拡張され得ることに留意されたい(理論的には、バンク内の列の数によってのみ制限される)。
【0033】
しかしながら、
図5のグレインストライプアドレスインターリービングを単独で単に使用するだけでは、同じ物理バンクへの列コマンド間に存在するtCCDL制約のために、許容できない追加の75%オーバーヘッドに悩まされる。このオーバーヘッドは、「パートナー」グレイン(隣接するアドレスで機能するグレイン)を異なるバンクグループに分離することによって、いくつかの実施形態ではtCCDSのオーバーヘッドまで下げることができる。しかしながら、そのような実装においてであっても、オーバーヘッドは依然として無視できない。更に、パートナーグレインの異なるバンクグループへのそのような分離は、2つのグレイン間の非同期レイテンシを回避するために、メモリコントローラに追加のスケジューリング及びデータ応答再構成の複雑さを課す。
【0034】
図6は、先行技術による、ファイングレインメモリバンク600のブロック図であり、
図7は、いくつかの実施形態による、ファイングレインメモリバンク700のブロック図である。
【0035】
メモリバンク600は、「グレイン0」及び「グレイン1」とラベル付けされた2つのグレインと、行デコーダ602と、2つの列デコーダ604及び606と、「Gr.Sel」とラベル付けされたグレイン選択回路608と、コマンドバス620と、アドレスバス622と、を含む。動作中、メモリバンク600は、メモリコントローラからコマンドバス620を介して送信される図示された列アドレスストローブ(CAS)コマンド等のコマンドでアクセスされる。図示されるように、アドレスバス622は、
図4のアドレス方式に従って、列アドレスビット(CO)を列デコーダ604及び606に提供し、グレインビット(GR)をグレインセレクタ回路608に提供する。メモリアクセスは、1つのグレインの幅であり、この例では16Bである。
【0036】
図7を参照すると、メモリバンク700は、「グレイン0」及び「グレイン1」とラベル付けされた2つのグレインと、行デコーダ702、2つの列デコーダ704及び706、各グレイン内の行バッファ(別々に図示せず)、「mCAS supp」(mCASサポート)とラベル付けされたデュアルモード入力/出力(I/O)回路708、720とラベル付けされたコマンドバス、並びに、アドレスバス722を含むI/O回路と、を含む。この実施形態では、デュアルモードI/O回路708は、メモリバンク内の各グレインのI/O回路に接続される。
【0037】
デュアルモードI/O回路708は、「mCASイネーブル」とラベル付けされた第1の入力と、「グレインビット」とラベル付けされた第2の入力と、「グレイン0イネーブル」とラベル付けされた第1の出力と、「グレイン1イネーブル」とラベル付けされた第2の出力と、を含む。第1の入力は、メモリコントローラからコマンドバス720を介してマルチキャストCASイネーブル信号を受信し、第2の入力は、グレインアドレスビット(GR、
図5)を受信する。第1の出力は列デコーダ704に接続され、第2の出力は列デコーダ706に接続される。
【0038】
デュアルモードI/O回路708は、概して、第1のデータ幅(16B)を有するコマンドが各グレインにルーティングされ、各グレインにおいて個別に実行される第1のモードと、第1のデータ幅とは異なる第2のデータ幅(32B)を有するコマンドがグレインのうち少なくとも2つによって並列に実行される第2のモードと、で動作する。そのような構成は、この例では両方ともバンク700のグレインである2つ以上のパートナーとなるグレイン(partnered grain)に対するマルチキャスト列アドレスストローブ(mCAS)コマンドを使用することによって、上記で説明したtCCDL制約によって課されるオーバーヘッドを克服する。mCASコマンドを構成するアドレスビットは、グレイン識別子ビットを除いて、両方のグレインと同一である。したがって、図示した実施形態は、mCASコマンドのサポートを用いて共有コマンド及びアドレス(CA)パス/論理を増強する。
【0039】
図示した2グレインの例では、デュアルモードI/O回路708は、mCASイネーブル信号で増強されたマルチプレクサを用いて実装されるが、他の実施形態では他の論理実装が採用される。デュアルモードI/O回路708は、図の右側により詳細に示されており、この実施形態では、マルチプレクサ710及び2つのORゲート712を含む。マルチプレクサ710は、グレインアドレスビットを受信する入力と、ORゲート712のそれぞれの入力に接続された2つの出力と、を有する。各ORゲート712は、マルチプレクサ710の出力に接続された第1の入力と、マルチキャストCASイネーブル信号を受信する第2の入力と、を有する。
【0040】
動作中、現在のCASコマンドがマルチキャストCASコマンドであることを知らせるためにマルチキャストCASイネーブル信号がHIGHである場合、ORゲート712の出力はHIGHになり、バンク700の両方のグレイン内の選択された列に対してCASをアサートさせることによってマルチキャストCASコマンドをイネーブルする。次いで、グレインは、CASに並列に応答して、より高いデータ幅を提供する。このモードでは、両方のグレインがmCASコマンドを受信し、両方が、アドレスバス上に示されたそれぞれのアドレスから読み取られた16Bのデータを用いて並列に応答する。マルチキャストCASイネーブル信号がローである場合、ORゲート712の一度に1つだけがハイ出力を有し、一度に1つのグレインだけがCASコマンドを受信することを可能にし、したがって通常のファイングレイン動作を提供する。
【0041】
この実施形態におけるバンク700は2つのグレインを有するが、デュアルモードI/O回路708内のマルチレベルマルチプレクサツリーを含むいくつかの実施形態では、より高いグレインカウントが提供される。例えば、バンク700内に8つのグレインを有する1つの例示的な実施形態では、各グレインは、第1のモードにおいて4Bの幅を有するファイングレインメモリアクセスを提供することができ、一方、第2のモードにおいて並列に動作する8つのグレイン全てが32Bの幅を有するアクセスを提供する。そのような実施形態におけるデュアルモードI/O回路708は、3つのグレインビットを受信する3レベルマルチプレクサツリーを含む。第1のモードでは、マルチプレクサツリーは、アドレス指定されている適切なグレインにCASコマンドをルーティングし、8つの列デコーダのうち1つのみをアクティブ化させる。第2のモードでは、デュアルモードI/O回路は、8つ全ての列デコーダをイネーブルすることによって、マルチキャストCASコマンドに応じて、CASコマンドを各グレインにおいてアサートさせる。
【0042】
図8は、いくつかの追加の実施形態による、ファイングレインメモリバンク800のブロック図である。メモリバンク800は、「グレイン0」及び「グレイン1」とラベル付けされた2つのグレインと、行デコーダ802、2つの列デコーダ804及び806、各グレイン内の行バッファ(別々に図示せず)、「Gr.Sel」とラベル付けされたグレイン選択回路808、「mCASリレー」とラベル付けされたマルチキャストCASリレー回路810、コマンドバス820並びにアドレスバス822を含むI/O回路と、を含む。
【0043】
この実施形態では、デュアルモードI/O回路は、
図7のようなマルチプレクサツリー実装ではなく、マルチキャストCASリレー回路810として具現化される。バンクごとに多数のグレイン(例えば、8又は16等のグレインの数「G」)が存在する場合、マルチプレクサツリー実装の追加の深さは、クリティカルパスコマンドレイテンシの増加を引き起こす。マルチプレクサツリーを使用する代わりに、図示した実施形態は、マルチキャストCASリレー回路810を用いて、CAS信号の局所化された非同期反復(リレー)を実行する。マルチキャストCASリレー回路810は、グレイン0の列デコーダ804と同じ場所に配置され、mCASイネーブル信号を受信する第1の入力と、グレイン1の列デコーダに接続された出力と、を含む。3つ以上のグレインを有する実施形態では、mCASを他のグレインに転送するために、複数のグレインのためのI/O回路内にマルチキャストCASリレー回路810が存在する。マルチキャストCASリレー回路810の構造は、そのより短い電気導体に起因して、マルチプレクサツリー実装よりも低いキャパシタンスを有し、したがって、多くのグレインがある場合にコマンドレイテンシをあまり増加させない。
【0044】
動作中、メモリバンク800は、メモリコントローラからコマンドバスを介して送信される図示された列アドレスストローブ(CAS)コマンド等のコマンドでアクセスされる。図示されるように、アドレスバスは、
図4のアドレス方式に従って、列アドレスビット(
図4のCO)を列デコーダ804及び806に運び、グレインビット(
図4のGR)をグレインセレクタ回路808に運ぶ。第1のモードでは、メモリアクセスは、1つのグレインの幅であり、この例では16Bである。第2のモードでは、メモリアクセスは、2つ以上のグレイン(この例では2つ、合計32B)の幅である。第2のモードは、メモリコントローラからマルチキャストCASリレー回路810に供給されるmCASイネーブル信号によってアクティブにされる。第2のモードでは、マルチキャストCASリレー回路810は、マルチキャストCASコマンド内の初期グレイン識別子値を他のグレインを識別する新しい値に置き換えることによって、マルチキャストCASコマンドのローカライズされたリレーを、少なくとも2つのグレインの別の1つに転送するように第2のモードで実行する。いくつかの実施形態では、マルチキャストCASリレー回路810は、ルックアップテーブル又は加算器を使用して新しい値を識別する。
【0045】
デュアルモードI/O回路のための2つの異なる実施形態が
図7及び
図8に関して説明されるが、他の好適なデジタル論理方式が第1のモード及び第2のモードにおいて動作するステップを実行するために、メモリにおいて実装されてもよい。
【0046】
図9は、いくつかの実施形態による、ファイングレインメモリを動作させるためのプロセスのフロー
図900である。この実施形態では、プロセスは、キャッシュミスの場合にメインメモリへの32B要求を使用する「LD」コマンドと、メインメモリからではなくオンチップスクラッチパッドからサービス可能な不規則なロードサイズ「x」を指定する「LD_x」コマンドと、単一の16B要求を介してメインメモリからサービス可能なサイズxの不規則なロードを指定する「LD_x_MEM」コマンドと、を含む、右側に列挙されているメモリロード(読み取り)コマンドの3つの変形形態を使用する。
【0047】
ブロック902に示されるように、プロセスは、選択されたLDメモリアクセス要求が、メインメモリからの16Bフェッチを引き起こさなければならない不規則な要求である場合、選択されたLDメモリアクセス要求をLD_x_MEM要求としてタグ付けすることを含む。ブロック902におけるタグ付けは、メモリアクセスコマンドが発生する元のソフトウェアを生成するプログラマによって、又は、指定されたメモリシステムのためのプログラミング命令を解釈するコンパイラ若しくはジャストインタイムコンパイラによって実行され得る。
【0048】
ブロック904において、メモリコントローラは、例えば、プログラム又はライブラリがブロック902においてタグ付けされた命令を実行する場合に、タグ付けされたメモリアクセス要求に関連付けられたメモリアクセス要求を受信する。この時点での要求は、図示したように16B等の第1のデータ幅、又は、図示したように32B等の第2のデータ幅を有することができる。ブロック906において、プロセスは、要求が第1のデータ幅、例えば16Bを有するかどうかを判定する。そうである場合、プロセスはブロック908に進み、そこで、16B幅のファイングレインメモリアクセスで要求に対応するために、要求にグレインに依存しないアドレスインターリービングを適用する。次に、メモリコントローラは、CASコマンドを16B幅のメモリグレインに発行して、コマンドを実行する。上述したように、この要求は、第1のモードにおいて、それぞれのメモリバンク内のメモリの単一グレインへのアクセスによって対応される。ブロック910で16B CASに対してアクティブ化が発行されると、メモリコントローラは、16bの8バーストでメモリから応答データを受信する。
【0049】
再びブロック906を参照すると、要求が16B要求でない場合、プロセスはブロック912~914に進み、上述したように第2のモードで動作するデュアルモードI/O回路を使用して要求に対応する。ブロック912において、32B要求は、例えば、
図5に示されるようなグレインのストライプ配置に従って互いに関連付けられた2つの16Bサブ要求に分割される。ブロック914において、そのようなグレインストライプ方式のためのアドレスインターリービングが2つの16Bコマンドに適用され、32BマルチキャストCASコマンドがメモリコントローラから発行されて、メモリからのコマンドの両方を実行する。マルチキャストCASコマンドに応じて、メモリは、少なくとも2つのグレイン内の選択された列に対して列アドレスストローブを並列にアサートさせることによって、要求に対応する。例えば、708(
図7)のデュアルモードI/O回路、又はマルチキャストリレー回路808(
図8)は、第2のモードで動作して、マルチキャストCASコマンドを複数のメモリグレインにおいてアサートさせる。得られたデータは、ブロック916に示すように、16B幅の2つの並列バーストでメモリコントローラに戻される。また、メモリコントローラは、受信されたデータの照合を実行して、元のメモリ要求に対する応答に適切な順序のデータを提供することができる。
【0050】
図10は、いくつかの実施形態による、ファイングレインメモリを動作させるためのライブラリ命令を含むデータ処理システム1000のブロック図である。データ処理システム1000は、オペレーティングシステム(operating system、OS)1002と、メモリコントローラ1008と、メモリ1010と、を含む。オペレーティングシステム1002は、データ処理システムの1つ以上のプロセッサ上で実行し、命令セットアーキテクチャ(instruction set architecture、ISA)コマンドライブラリ1004及びジャストインタイム(just-in-time、JIT)コンパイラ1006を含む。
【0051】
いくつかの実施形態では、拡張されたISAコマンドライブラリ1004は、ISAコマンドライブラリ1004内の省略記号によって示されるような一般的に使用されるISAライブラリ内の標準LDコマンド及び他のコマンドに加えて、
図9に関して上述したようなロードコマンドLD_x及びLD_x_MEMを含む。追加のISAコマンドは、本明細書で説明する2つのモードでファイングレインメモリにアクセスすることをサポートするために、異なる方法で使用され得る。追加のコマンドは、オペレーティングシステム1002に公開され、オペレーティングシステム1002において実行中のプログラムによる使用のために利用可能である。オペレーティングシステム1002は、オプションでJITコンパイラ1006を含み、2つのモードでファイングレインメモリアクセスを可能にするために、拡張されたISAコマンドセットよりもむしろJITコンパイラ1006が使用され得る。
【0052】
異なるモード、例えば、16B及び32Bアクセスの上述した2つのモードでOS支援メモリ(OS-assisted memory)ファイングレインメモリアクセスを提供するために、プログラマは、通常のLDコマンド又はLD_x_MEM及びLD_xコマンドを呼び出すプログラムをコンパイルすることができる。他の実施形態では、新しいISA命令の代わりに、デュアルモードファイングレインアクセスがOSに公開され、その結果、プログラマは、不規則なアクセスを被ることになるメモリ領域に注釈を付けることができる。そのような実施形態では、プログラマは、新しい「malloc」(メモリ割振り)命令を使用してグレインに好適な割振りを要求する。そのようなmalloc命令に応じて、OSは、対応する領域のページテーブルエントリにタグを付けて、アクセス粒度、すなわち、領域が16Bアクセスをサポートするか32Bアクセスをサポートするかを示す。プロセッサのロード及びストアは、メモリにアクセスする前に、プロセッサの変換索引バッファ(TLB)又は他のアドレス変換テーブルを調べるので、アクセス粒度タグは、各コマンドのアドレス変換から容易に取り出すことができる。このアクセス粒度タグは、好ましくは単一ビットとしてメモリコントローラに伝達され、関連するアクセスが有するのが第1の幅か第2の幅か、例えば16Bか32Bかを示す。
【0053】
このような機構の重大な制限は、割り当てられたメモリ領域全体が、通常、同じアクセス粒度を有する必要があること、又は、メモリ領域が、実行全体を通して同じアクセス粒度を受ける必要があることである。これらの制限に対処するために、いくつかの実施形態は、プログラマが、コンパイラによって生成されるLD対LD_X_Mem ISA命令等の特定のアクセス粒度でオーバーライドされ得るアクセス粒度で、割り振られたメモリ領域をタグ付けするハイブリッド手法を採用する。例えば、アプリケーションは、32Bアクセス粒度領域として構造にタグ付けすることができるが、静的コンパイラ又はJITコンパイラ1006は、16BアクセスをサポートすることができるLD_X_Mem ISA命令を生成することができる。このような方式は、メモリ領域に対するアクセス粒度を、元のアプリケーションプログラミングによって割り振られたものから動的に切り替えることを可能にする。理解できるように、メモリ1010は、メモリ領域のためのISAコマンド又は粒度情報を受信することに応じて、メモリコントローラ1008からの命令に従って、上述したような2つのモードの何れかで動作され得るファイングレインメモリバンクを含む。
【0054】
図11は、いくつかの実施形態による、ファイングレインメモリを動作させるためのプロセスのフロー
図1100である。ブロック1102において、プログラムは、2つ以上の粒度、例えば16B及び32Bの中からアクセス粒度を指定するメモリアクセスコマンドを用いて、説明したようにコンパイルされる。ブロック1104では、コンパイルされたプログラムがOSによって実行される。ブロック1106に示されるように、JITコンパイラ1006等のジャストインタイムコンパイラは、メモリにおいて利用可能なファイングレインアクセスに基づいて、それぞれの指定されたアクセス粒度のファイングレインコマンドを生成する。これらのコマンドは、メモリコントローラによって解釈されて、第2のアクセスモードがJITコンパイラによって呼び出されるメモリアクセスを実施するためのマルチキャストCASコマンドを生成する。
【0055】
図2、
図3、
図7、
図8の回路、又は、その任意の部分(アービタ238又はデュアルモードI/O回路708等)は、データベースの形態のコンピュータアクセス可能なデータ構造又は集積回路を製造するためにプログラムによって読み取られ、直接的又は間接的に使用され得る他のデータ構造によって説明又は表示され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(high level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であり得る。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次に、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされてもよい。次に、マスクを、様々な半導体製造工程で使用して、集積回路を製造してもよい。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望の場合、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであってもよい。
【0056】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。例えば、メモリコントローラ200は、異なる実施形態において異なり得る。メモリコントローラ200は、高帯域幅メモリ(HBM)、RAMbus DRAM(RAMbus DRAM、RDRAM)等のように、DDRx以外の他のタイプのメモリとインターフェースすることができる。図示した実施形態は、個別のDIMM又はSIMMに対応するメモリの各ランクを示したが、他の実施形態では、各モジュールは複数のランクをサポートすることができる。更に他の実施形態は、ホストマザーボードに取り付けられたDRAM等のように、特定のモジュールに含まれていない他のタイプのDRAMモジュール又はDRAMを含むことができる。したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。
【要約】
ファイングレインダイナミックランダムアクセスメモリ(DRAM)は、第1のメモリバンクと、第2のメモリバンクと、デュアルモードI/O回路と、を含む。第1のメモリバンクは、複数のグレインに分割されたメモリアレイを含み、各グレインは、行バッファ及び入力/出力(I/O)回路を含む。デュアルモードI/O回路は、第1のメモリバンク内の各グレインのI/O回路に結合され、第1のデータ幅を有するコマンドが各グレインにルーティングされ、各グレインにおいて個別に実行される第1のモードと、第1のデータ幅とは異なる第2のデータ幅を有するコマンドがグレインのうち少なくとも2つによって並列に実行される第2のモードと、で動作する。
【選択図】
図1