(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-02
(45)【発行日】2022-12-12
(54)【発明の名称】2の非累乗のメモリ構成
(51)【国際特許分類】
G06F 13/14 20060101AFI20221205BHJP
G06F 13/16 20060101ALI20221205BHJP
G06F 13/12 20060101ALI20221205BHJP
【FI】
G06F13/14 320B
G06F13/16 510D
G06F13/12 330B
(21)【出願番号】P 2021531209
(86)(22)【出願日】2019-12-02
(86)【国際出願番号】 US2019064017
(87)【国際公開番号】W WO2020117678
(87)【国際公開日】2020-06-11
【審査請求日】2021-07-07
(32)【優先日】2018-12-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】パツァニ ピライ
【審査官】松平 英
(56)【参考文献】
【文献】特開2016-085541(JP,A)
【文献】特表2019-520660(JP,A)
【文献】米国特許出願公開第2015/0089168(US,A1)
【文献】米国特許出願公開第2018/0019006(US,A1)
【文献】Takuya Toyoshima et al,An Application-adaptive Data Allocation Method for Multi-channel Memory,[online],米国,IEEE,2017年06月15日,pp. 1-3,[検索日:2022年6月24日], インターネット<https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7946381>,ISSN:2473-4683
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/00
3/18
12/00-12/06
13/10-13/42
(57)【特許請求の範囲】
【請求項1】
システムであって、
1つ以上のクライアントと、
総メモリチャネルに対するアクティブメモリチャネルの第1の比率を有するメモリサブシステムと、を備え、
前記メモリサブシステムは、
前記第1の比率を、第1の数対第2の数の第2の比率に低減することと、
前記1つ以上のクライアントのうち何れかのクライアントからメモリ要求を受信することと、
前記メモリ要求の物理アドレスビットの第1のサブセットが前記第1の数以上の値を有すると判別したことに応じて、
前記第1の数を法とする前記物理アドレスビットの第2のサブセットに対応する値に基づいて、第3の数を計算することと、
前記第3の数と、前記物理アドレスビットの第3のサブセットと、の連結を使用して、前記複数のメモリチャネルの中からメモリチャネルを選択することと、
選択されたメモリチャネルに対する前記メモリ要求を完了することと、
を行うように構成されている、
システム。
【請求項2】
前記
メモリサブシステムは、前記メモリ要求の前記物理アドレスビットの第1のサブセットが前記第1の数以上の値を有すると判別したことに応じて、
第5の数だけシフトアップされた前記物理アドレスビットの第1のサブセットに基づく第4の数を計算することであって、前記第5の数は、前記メモリサブシステムのアドレス空間のサイズに基づいて計算される、ことと、
正規化アドレスビットの第1のサブセットを、前記物理アドレスビットの第2のサブセットに等しいものとして計算することであって、上位ビットが前記物理アドレスビットの第1のサブセットで置き換えられる、ことと、
正規化アドレスビットの第2のサブセットを、物理アドレスビットの第4のサブセットと物理アドレスビットの第5のサブセットとの連結に等しいものとして計算することと、
前記選択されたメモリチャネルにおいて正規化アドレスに対する前記メモリ要求を完了することであって、前記正規化アドレスは、前記正規化アドレスビットの第1のサブセットと、前記正規化アドレスビットの第2のサブセットと、を含む、ことと、
をさらに行うように構成されている、
請求項1のシステム。
【請求項3】
前記メモリサブシステムは、2の非累乗の数のアクティブメモリチャネルを有する、
請求項
1のシステム。
【請求項4】
前記物理アドレスビットの第1のサブセットは、前記物理アドレスビットの第3のサブセットに隣接している、
請求項
1のシステム。
【請求項5】
前記物理アドレスビットの第4のサブセットは、前記物理アドレスビットの第1のサブセットに隣接している、
請求項
2のシステム。
【請求項6】
前記物理アドレスビットの第3のサブセットは、前記物理アドレスビットの第5のサブセットに隣接している、
請求項
2のシステム。
【請求項7】
前記
1つ以上のクライアントはグラフィックエンジンであり、前記メモリ要求は、ディスプレイに表示されるピクセルをレンダリングするためのアプリケーションの一部として生成される、
請求項1のシステム。
【請求項8】
方法であって、
第1のデバイスの制御ユニットによって、メモリサブシステム内の物理メモリチャネルの総数のうちアクティブメモリチャネルの数を決定することと、
前記物理メモリチャネルの総数に対する前記アクティブメモリチャネルの数の比率を、第1の数対第2の数に低減することと、
受信したメモリ要求の物理アドレスビットの第1のサブセットが前記第1の数以上であると判別したことに応じて、
前記第1の数を法とする物理アドレスビットの第2のサブセットに対応する値に基づいて、第3の数を計算することと、
前記第3の数と、物理アドレスビットの第3のサブセットと、の連結を使用して
、複数のメモリチャネルの中からメモリチャネルを選択することと、
選択されたメモリチャネルに対する前記メモリ要求を完了することと、を含む、
方法。
【請求項9】
前記メモリ要求の前記物理アドレスビットの第1のサブセットが前記第1の数以上であると判別したことに応じて、
第5の数だけシフトアップされた前記物理アドレスビットの第1のサブセットに基づく第4の数を計算することであって、前記第5の数は、前記メモリサブシステムのアドレス空間のサイズに基づいて計算される、ことと、
正規化アドレスビットの第1のサブセットを、前記物理アドレスビットの第2のサブセットに等しいものとして計算することであって、上位ビットが前記物理アドレスビットの第1のサブセットで置き換えられる、ことと、
正規化アドレスビットの第2のサブセットを、物理アドレスビットの第4のサブセットと物理アドレスビットの第5のサブセットとの連結に等しいものとして計算することと、
前記選択されたメモリチャネルにおいて正規化アドレスに対する前記メモリ要求を完了することであって、前記正規化アドレスは、前記正規化アドレスビットの第1のサブセットと、前記正規化アドレスビットの第2のサブセットと、を含む、ことと、をさらに含む、
請求項8の方法。
【請求項10】
前記メモリサブシステムは、2の非累乗の数のアクティブメモリチャネルを有する、
請求項
8の方法。
【請求項11】
前記物理アドレスビットの第1のサブセットは、前記物理アドレスビットの第3のサブセットに隣接している、
請求項
8の方法。
【請求項12】
前記物理アドレスビットの第4のサブセットは、前記物理アドレスビットの第1のサブセットに隣接している、
請求項
9の方法。
【請求項13】
前記物理アドレスビットの第3のサブセットは、前記物理アドレスビットの第5のサブセットに隣接している、
請求項
9の方法。
【請求項14】
前記メモリ要求を、ディスプレイに表示されるピクセルをレンダリングするためのアプリケーションの一部として生成することをさらに含む、
請求項8の方法。
【請求項15】
装置であって、
制御ユニットと、
複数のメモリチャネルを備えるメモリサブシステムと、を備え、
前記制御ユニットは、
前記メモリサブシステム内の物理メモリチャネルの総数のうちアクティブメモリチャネルの数を決定することと、
前記物理メモリチャネルの総数に対する前記アクティブメモリチャネルの数の比率を、第1の数対第2の数に低減することと、
受信したメモリ要求の物理アドレスビットの第1のサブセットが前記第1の数以上であると判別したことに応じて、
前記第1の数を法とする物理アドレスビットの第2のサブセットに基づいて、第3の数を計算することと、
前記第3の数と、物理アドレスビットの第3のサブセットと、の連結を使用して、前記複数のメモリチャネルの中からメモリチャネルを選択することと、
選択されたメモリチャネルに対する前記メモリ要求を完了することと、
を行うように構成されている、
装置。
【請求項16】
前記制御ユニットは、前記メモリ要求の物理アドレスビットの第1のサブセットが前記第1の数以上であると判別したことに応じて、
第5の数だけシフトアップされた前記物理アドレスビットの第1のサブセットに基づく第4の数を計算することであって、前記第5の数は、前記メモリサブシステムのアドレス空間のサイズに基づいて計算される、ことと、
正規化アドレスビットの第1のサブセットを、前記物理アドレスビットの第2のサブセットに等しいものとして計算することであって、上位ビットが前記物理アドレスビットの第1のサブセットで置き換えられる、ことと、
正規化アドレスビットの第2のサブセットを、物理アドレスビットの第4のサブセットと物理アドレスビットの第5のサブセットとの連結に等しいものとして計算することと、
前記選択されたメモリチャネルにおいて正規化アドレスに対する前記メモリ要求を完了することであって、前記正規化アドレスは、前記正規化アドレスビットの第1のサブセットと、前記正規化アドレスビットの第2のサブセットと、を含む、ことと、
をさらに行うように構成されている、
請求項15の装置。
【請求項17】
前記メモリサブシステムは、2の非累乗の数のアクティブメモリチャネルを有する、
請求項
15の装置。
【請求項18】
前記物理アドレスビットの第1のサブセットは、前記物理アドレスビットの第3のサブセットに隣接している、
請求項
15の装置。
【請求項19】
前記物理アドレスビットの第4のサブセットは、前記物理アドレスビットの第1のサブセットに隣接している、
請求項
16の装置。
【請求項20】
前記物理アドレスビットの第3のサブセットは、前記物理アドレスビットの第5のサブセットに隣接している、
請求項
16の装置。
【発明の詳細な説明】
【背景技術】
【0001】
最新のプロセッサ及びシステムオンチップ(SoC)は、高速で効率的な計算を容易にするために、様々な回路及びコンポーネントを含む。プロセッサとメモリとの間のデータ移動エネルギーは、プログラム実行中に消費される全チップエネルギーの大きな構成要素である。通常、メモリ構成は、2の累乗の数のメモリチャネルを有する。これにより、アドレス空間を簡単な方法でマッピングし、データを、処理ユニットとメモリサブシステムのメモリデバイスとの間で効率的なバーストで転送することができる。本明細書で使用する場合、「2の累乗のメモリ構成」は、2の累乗に等しい数のメモリチャネルを有するメモリサブシステムとして定義される。2の累乗の数の例は、2、4、8、16、32、64、128、256、512、1024等を含む。
【0002】
しかしながら、コンピューティングシステムが2の非累乗のメモリ構成を有する場合が存在する。本明細書で使用する場合、「2の非累乗のメモリ構成」は、2の累乗に等しくない数のアクティブなメモリチャネルを有するメモリサブシステムとして定義される。「2の非累乗のメモリ構成」の場合、メモリサブシステムは、実際には、数が2の累乗に等しいが、常駐メモリスロットの数が2の非累乗に等しい物理メモリチャネルを有してもよいことに留意されたい。場合によっては、物理メモリスロットは、占有されていない(unoccupied)か、機能していないメモリモジュール又はデバイスによって占有されている。機能しており、使用可能なメモリデバイスを有する占有メモリスロット(occupied memory slot)に接続された物理メモリチャネルは、「アクティブメモリチャネル」と呼ばれる。
【0003】
添付の図面と併せて以下の説明を参照することによって、本明細書に記載される方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【0004】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】2の累乗のメモリ構成のためのクライアントと物理メモリアドレスとの間のアドレス空間マッピングの一実施形態を示す図である。
【
図3】2の非累乗のメモリ構成を有するシステムのアドレス空間マッピングの一実施形態を示す図である。
【
図4】2の非累乗のメモリ構成を有するシステムのアドレス空間マッピングの別の実施形態を示す図である。
【
図5】メモリコントローラを有するメモリサブシステムの一実施形態のブロック図である。
【
図6】メモリサブシステムの別の実施形態のブロック図である。
【
図7】メモリチャネルを選択し、物理メモリアドレスを正規化アドレスに変換するための擬似コードの一実施形態を示す図である。
【
図8】メモリ要求に使用するためのマッピング方式及びアドレス変換方式のタイプを決定するための方法の一実施形態を示す一般化されたフロー図である。
【
図9】2の非累乗のメモリ構成の所定の物理アドレスに対するメモリチャネルを選択するための方法の一実施形態を示す一般化されたフロー図である。
【
図10】メモリチャネルを選択し、物理メモリアドレスを正規化アドレスに変換するための擬似コードの別の実施形態を示す図である。
【発明を実施するための形態】
【0005】
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が記載されている。しかしながら、当業者は、様々な実施形態がこれらの具体的な詳細無しに実施され得ることを認識すべきである。いくつかの例では、本明細書で説明するアプローチを不明瞭にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示す要素が必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている場合がある。
【0006】
2の非累乗のメモリ構成を管理するための様々なシステム、装置及び方法が、本明細書に開示されている。コンピューティングシステムは、少なくとも1つ以上のクライアントと、制御ユニットと、2の非累乗の数のアクティブメモリチャネルを有するメモリサブシステムと、を含む。一実施形態では、制御ユニットは、物理メモリチャネルの総数に対するアクティブメモリチャネルの数の比率を、第1の数に対する第2の数の比率に低減する。受信したメモリ要求の物理アドレスビットの第1のサブセットの値(つまり、大きさ)が第1の数以上である場合、制御ユニットは、第1の数を法とする物理アドレスビットの第2のサブセットの値(又は、物理アドレスビットのサブセットに対応する値)に基づく第3の数を計算し、制御ユニットは、第3の数のバイナリ表現と物理アドレスビットの第3のサブセットとの連結を使用して、受信したメモリ要求を発行するためのメモリチャネルを選択する。アドレスビットに対応する値は、アドレスビットの数学的操作に基づく値であってもよいし、その他に基づく値であってもよい。一実施形態では、物理アドレスビットの第1のサブセットは、非アクティブなメモリチャネルが、受信したメモリ要求によってターゲットとされているかどうかを判別する物理アドレスビットである。次に、制御ユニットは、選択されたメモリチャネルに対するメモリ要求を完了する。受信したメモリ要求の物理アドレスビットの第1のサブセットが第1の数以上であることは、メモリ要求が従来のアドレス指定方式で非アクティブなメモリチャネルをターゲットにすることを示している。このようにして、メモリ要求を発行するためのメモリチャネルを選択することによって、アドレス空間は、1つ以上のクライアントによるメモリサブシステムへの効率的なアクセスを可能にするように、2の非累乗の数のアクティブメモリチャネル全体に亘ってストライピング(striped)される。
【0007】
さらに、一実施形態では、受信したメモリ要求の物理アドレスビットの第1のサブセットの値が第1の数以上である場合、制御ユニットは、第5の数だけシフトアップされた物理アドレスの第1のサブセットに等しい第4の数を計算し、第5の数は、メモリサブシステムのアドレス空間のサイズに基づいて計算される。本技術分野で既知であるように、ビットを上方にシフトする毎に、2で乗算した前のバイナリ値に等しい値が生じる。また、受信したメモリ要求の物理アドレスビットの第1のサブセットの値が第1の数以上である場合、制御ユニットは、物理アドレスビットの第2のサブセットに等しいものとして、正規化されたアドレスビットの第1のサブセットを計算し、上位ビットは、物理アドレスビットの第1のサブセットで置き換えられる。さらに、受信したメモリ要求の物理アドレスビットの第1のサブセットの値が第1の数以上である場合、制御ユニットは、物理アドレスビットの第4のサブセットと物理アドレスビットの第5のサブセットとの連結に等しいものとして、正規化されたアドレスビットの第2のサブセットを計算する。さらに、受信したメモリ要求の物理アドレスビットの第1のサブセットの値が第1の数以上である場合、制御ユニットは、選択されたメモリチャネルにおいて、正規化されたアドレスに対するメモリ要求を完了し、正規化されたアドレスは、正規化されたアドレスビットの第1のサブセットと、正規化されたアドレスビットの第2のサブセットと、を含む。
【0008】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、プロセッサ105A~105Nと、入力/出力(I/O)インタフェース120と、バス125と、メモリコントローラ(複数可)130と、ネットワークインタフェース135と、メモリデバイス(複数可)140と、ディスプレイコントローラ(150)と、ディスプレイ155と、を少なくとも含む。他の実施形態では、コンピューティングシステム100は、他のコンポーネントを含み、及び/又は、異なるように構成されている。プロセッサ105A~105Nは、システム100に含まれる任意の数のプロセッサを表す。
【0009】
一実施形態では、プロセッサ105Aは、中央処理装置(CPU)等の汎用プロセッサである。一実施形態では、プロセッサ105Nは、高度に並列なアーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサは、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等を含む。いくつかの実施形態では、プロセッサ105A~105Nは、複数のデータ並列プロセッサを含む。一実施形態では、プロセッサ105Nは、ディスプレイ155に送られるピクセルをディスプレイコントローラ150に提供するGPUである。
【0010】
メモリコントローラ(複数可)130は、プロセッサ105A~105Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130は、任意の数及びタイプのメモリデバイス(複数可)140に結合されている。メモリデバイス(複数可)140は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス(複数可)140内のメモリのタイプとしては、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)等が挙げられる。
【0011】
I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、PCI(Peripheral Component Interconnect)バス、PCI-X(PCI-Extended)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺装置(図示省略)がI/Oインタフェース120に結合されている。このような周辺装置は、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶装置、ネットワークインタフェースカード等を含むが、これらに限定されない。ネットワークインタフェース135は、ネットワークを介してネットワークメッセージを送受信するために使用される。
【0012】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他のタイプのコンピューティングシステム若しくはコンピューティングデバイスである。コンピューティングシステム100のコンポーネントの数は、実施形態によって異なることに留意されたい。例えば、他の実施形態では、
図1に示す数よりも多い又は少ないコンポーネントが存在する。他の実施形態では、コンピューティングシステム100は、
図1に示されていない他のコンポーネントを含むことにも留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、
図1に示す以外の方法で構成される。
【0013】
図2を参照すると、2の累乗のメモリ構成のアドレス空間マッピング200の一実施形態が示されている。一実施形態では、クライアント205A~205Dは、2の累乗の数のメモリチャネル210A~210Dに亘って256バイトのストライドを使用しメモリ内のデータにアクセスする。この説明のために、クライアント205A~205Dは、通常、1つのメモリチャネル内で長さ1キロバイト(KB)のバーストでデータにアクセスすることが想定されており、これは、マッピング200のためにメモリにアクセスするための効率的な方法である。効率的なバーストを得るためにアドレス指定を跨ぐ計算は、2の累乗のメモリ構成を有するシステムでは簡単である。メモリバースト領域は、クライアント205A下のメモリチャネル210Aを表す列の最初の4つのブロックの周りの太字のアウトラインで強調表示されている。一実施形態では、クライアント205A~205Dは、レンダリングバックエンドである。他の実施形態では、クライアント205A~205Dは、他のタイプのグラフィックエンジンである。さらなる実施形態では、クライアント205A~205Dは、他のタイプの非グラフィックエンジンである。他の実施形態では、4以外の他の数のクライアントをメモリチャネル210A~210Dにマッピングすることができる。
【0014】
マッピング200は、2の累乗のメモリ構成のためのクライアント205A~205Dと、物理メモリアドレスと、メモリチャネル210A~210Dとの間のマッピングの一実施形態を示す。一実施形態では、各クライアント205A~205Dは、対応するメモリチャネル210A~210Dへの1対1のマッピングを有する。この実施形態のために、メモリアドレス空間は、サイズが256バイトのブロックでマッピングされると想定される。他の実施形態では、メモリアドレス空間は、他のサイズのブロックでマッピングされる。例えば、一実施形態では、クライアント205Aのアドレス0x0、0x400、0x800、0xC0について強調表示された4つのブロックは、クライアント205Aによる単一のメモリチャネル210Aへの効率的なアクセスバーストを表す。各クライアント205A~205Dの各々の別のメモリチャネル210A~210Dへのマッピングは、メモリへの効率的なアクセスを可能にする単純な構成である。しかしながら、以下の図に示すように、2の非累乗のメモリ構成は、通常、メモリへの非効率的なアクセスをもたらす。
【0015】
図3を参照すると、2の非累乗のメモリ構成を有するシステムのアドレス空間マッピング300の一実施形態が示されている。クライアント305A~305Dのメモリチャネル310A~310Cへのマッピング300は、2の非累乗のメモリ構成を有する従来技術のシステムの典型的な実施形態を示す。メモリチャネル310A~310Cへのデータブロックのマッピングは、
図3の右側に示すブロックの陰影によって示されている。したがって、陰影のないクリアなブロックがメモリチャネル310Aにマッピングされ、ドットを有するブロックがメモリチャネル310Bにマッピングされ、斜線を有するブロックがメモリチャネル310Cにマッピングされる。このマッピング300は、クライアント305A~305Dによるメモリチャネル310A~310Cへの非効率なアクセスをもたらす。例えば、メモリチャネル310Aについて強調表示されたブロックは、データの最初の1キロバイトがどのようにしてメモリチャネル310Aにマッピングされるかを示す。したがって、メモリチャネル310Aにマッピングされた最初の1キロバイトのデータは、効率的なバーストでアクセスできない。
【0016】
図4を参照すると、2の非累乗のメモリ構成を有するシステムのアドレス空間マッピング400の別の実施形態が示されている。マッピング400は、2の非累乗のメモリ構成を有するシステムの(
図3の)マッピング300と比較して改善されたマッピングである。マッピング400の改善は、各クライアント405A~405Dが、同じメモリチャネルへの4つのブロックに亘るアクセスを実行する能力を指す。例示的なシステム構成では3つのメモリチャネル410A~410Cが存在するので、各メモリチャネル410A~410Cは、4つの連続するブロックについてクライアント405Dに交互にマッピングされる。マッピング300と同様に、データブロックのメモリチャネル410A~410Cへのマッピング400は、
図4の右側に示すブロックの異なる陰影によって示される。
【0017】
マッピング400に示すように、クライアント405A~405Cが4ブロックのチャンクで3つのメモリチャネル410A~410Cにマッピングされた後、クライアント405Dは、アドレス0x300、0x700、0xB00、0xF00の4つのブロックについてメモリチャネル410Aにマッピングされる。次に、次の4ブロックのチャンクのセットが、クライアント405A~405Cからメモリチャネル410A~410Cへ通常のパターンでマッピングされる。これに続いて、クライアント405Dが、アドレス0x1300、0x1700、0x1B00、0x1F00の4つのブロックについてメモリチャネル410Bにマッピングされる。最後に、次の4ブロックのチャネルのセットが、クライアント405A~405Cのメモリチャネル410A~410Cに通常のパターンでマッピングされた後、クライアント405Dは、アドレス0x2300、0x2700、0x2B00、0x2F00の次の4つのブロックについてメモリチャネル410Cにマッピングされる。クライアント405Dが、メモリチャネル410A~410Cを交互に繰り返すことによってこのマッピングパターンを継続するが、クライアント405A~405Cは、それぞれ1対1でメモリチャネル410A~410Cにでマッピングされ続ける。このパターンは、メモリアドレス空間の残りの部分についても続行される。マッピング400が、3つのメモリチャネル及び4つのクライアントのための効率的なマッピングの一例を表すことに留意されたい。マッピング400は、他の数のクライアント及び/又は他の2の非累乗の数のメモリチャネルを有する他のシステムとともに使用されるように調整可能であることを理解されたい。
【0018】
図5を参照すると、メモリコントローラ505を有するメモリサブシステム500の一実施形態のブロック図が示されている。一実施形態では、メモリコントローラ505は、レジスタ520と、再マッピングユニット525と、を少なくとも含む。また、メモリコントローラ505は、図を不明瞭にすることを回避するために図示されていない他のコンポーネント及び/又は回路を含むことに留意されたい。一実施形態では、レジスタ520は、アクティブメモリチャネルの数520Aと、総メモリチャネルの数520Bと、クライアントの数520Cと、ストライドサイズ520Dと、を示す値を含む。他の実施形態では、レジスタ520は、他の数及び/又はタイプの値を含む。さらなる実施形態では、値520A~520Dは、他の場所に記憶される。
【0019】
一実施形態では、再マッピングユニット525は、物理アドレス510を受信し、物理アドレス510を正規化アドレス530に変換する。一実施形態では、再マッピングは、レジスタ520によって示されたアクティブメモリチャネル540A~540Nの数に基づいて実行される。この再マッピングは、メモリチャネル540A~540Nを介してメモリデバイス550A~550Nにアクセスする場合により高い効率を達成するのに役立つ。また、再マッピングユニット525は、本明細書では「制御ユニット」と呼ばれる場合もあることに留意されたい。メモリチャネル540A~540Nは、任意の数「N」のメモリチャネルを表し、「N」は、2の非累乗の整数である。各メモリチャネル540A~540Nは、対応するメモリモジュール550A~550Nに接続する。各メモリモジュール550A~550Nは、任意の適切なタイプのメモリ技術(例えば、DRAM)及び任意の数のメモリデバイスを使用して実装される。
【0020】
図6を参照すると、メモリサブシステム600の別の実施形態のブロック図が示されている。一実施形態では、制御ユニット605は、レジスタ620と、再マッピングユニット625と、を少なくとも含む。制御ユニット605は、図を不明瞭にすることを回避するために図示されていない他のコンポーネント及び/又は回路を含むことに留意されたい。一実施形態では、制御ユニット605は、入力/出力(I/O)ファブリックユニット内に配置されている。他の実施形態では、制御ユニット605は、他の場所に配置されている。一実施形態では、再マッピングユニット625は、メモリ要求の物理アドレス610を受信し、物理アドレス610を、アクティブメモリチャネル640A~640Nの数に基づいて正規化アドレス630に変換する。再マッピングは、レジスタ620によって示されたアクティブメモリチャネル640A~640Nの数に基づいて実行される。この再マッピングは、メモリチャネル640A~640Nを介してメモリモジュール650A~650Nにアクセスする場合により高い効率を達成するのに役立つ。メモリチャネル640A~640Nは、任意の数「N」のメモリチャネルを表し、「N」は、2の非累乗の整数である。
【0021】
図7を参照すると、メモリチャネルを選択し、物理メモリアドレスを正規化アドレスに変換するための擬似コード700の一実施形態が示されている。擬似コード700のために、メモリサブシステム内に3つのアクティブメモリチャネルが存在すると想定されている。或いは、別の言い方をすると、擬似コード700のために、物理メモリチャネルの総数に対するメモリサブシステム内のアクティブメモリチャネルの数の比率は、比率の減少後に3の分子を有すると想定されている。したがって、この実施形態では、擬似コード700の第1の行は、物理アドレスビット[11:10]が3に等しいかどうかをチェックし、3は、アクティブメモリチャネルの数である。一実施形態では、「アクティブメモリチャネル」という用語は、完全にポピュレートされ(fully-populated)、完全に機能するメモリモジュール又はメモリデバイスに接続されたアクティブメモリチャネルとして定義される。一方、「非アクティブメモリチャネル」は、完全にポピュレートされていないメモリモジュールに結合されたメモリチャネルとして定義される。
【0022】
擬似コード700の第1の行は、物理アドレスビット[11:10]が3に等しいかどうかに応じて、mod_IDビット[1:0]を、3を法とする物理アドレスビット[43:16]又は物理アドレスビット[11:10]の何れかに設定する。擬似コード700の第2の行では、チャネルIDビット[3:0]は、mod_IDビット[1:0]と物理アドレスビット[9:8]との連結に設定される。チャネルIDビット[3:0]は、受信したメモリ要求をルーティングするメモリチャネルを選択し、この特定の実施形態の場合には、メモリチャネルの最大数は16である。他の実施形態では、チャネルIDビットの数は、サポートされているメモリチャネルの最大数に従って変化し得る。
【0023】
ビットアレイupper_bits[43:16]は、物理アドレス[11:10]が3に等しいかどうかに応じて、変数(add_space-2)だけシフトアップされた値3又は0の何れかを記憶する。一実施形態では、変数addr_spaceは、特定のサイズとして指定された所定の単位における、システム内のアドレス指定可能な物理メモリの総量に等しい。一実施形態では、所定の単位のサイズは64KBである。他の実施形態では、所定の単位は、様々な他のサイズの何れかである。正規化アドレスのビット[43:12]は、ビットアレイupper_bits[43:16]と物理アドレスビット[43:16]との間のビット毎のOR演算の結果と等しく設定される。正規化アドレスのビット[11:0]は、物理アドレスビット[15:12]と物理アドレスビット[7:0]の連結と等しく設定される。例示的な擬似コード700は、特定の実施形態で使用可能なコードを示すことを理解されたい。擬似コード700で使用される様々なビットアレイ及び物理アドレス内の特定のビットのサイズは、他の実施形態の場合に変化し得る。使用される様々なビットアレイ及び物理アドレスの特定のビットのサイズは、総アドレス空間、ストライドサイズ、ブロックサイズ、アクティブメモリチャネルの数、物理メモリチャネルの数等に従って変化し得る。
【0024】
図8を参照すると、メモリ要求に使用するためのマッピング方式及びアドレス変換方式のタイプを決定するための方法800の一実施形態が示されている。説明のために、この実施形態のステップ及び
図9のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素の1つ以上が、同時に実行されてもよいし、図示した順序と異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。また、他の追加の要素も必要に応じて実行される。本明細書で説明する様々なシステム又は装置のいずれも、方法800を実施するように構成されている。
【0025】
制御ユニットは、レジスタからメモリ構成値を取得し、メモリ構成値は、システムが2の非累乗の数のメモリチャネルを有するかどうかを示す(ブロック805)。一実施形態では、ブロック805は、システムの電源投入時に実行される。他の実施形態では、メモリ構成値は、レジスタ以外の他の場所に記憶されている。
【0026】
前記値が、メモリチャネルの数が2の非累乗の数であることを示す第1の値である場合(条件ブロック810:「yes」)、制御ユニットは、第1のマッピングを使用してメモリ要求をメモリチャネルにマッピングする(ブロック815)。また、制御ユニットは、システムが2の非累乗のメモリ構成を有する場合、第1の変換方式を使用して物理アドレスを正規化アドレスに変換する(ブロック820)。第1のマッピング及び第1の変換方式の一例については、(
図9の)方法900に関連する以下の説明においてより詳細に説明する。
【0027】
前記値が、メモリチャネルの数が2の累乗の数であることを示す第2の値である場合(条件ブロック810:「no」)、制御ユニットは、第2のマッピングを使用してメモリ要求をメモリチャネルにマッピングし、第2のマッピングは第1のマッピングと異なる(ブロック825)。また、制御ユニットは、システムが2の累乗のメモリ構成を有する場合、第2の変換方式を使用して物理アドレスを正規化アドレスに変換し、第2の変換方式は第1の変換方式と異なる(ブロック830)。第1のマッピング及び第1の変換方式の一例は、
図2に関連して説明されている。ブロック820,830の後に、制御ユニットは、メモリ要求を、選択されたマッピング方式によって示され、選択された変換方式を使用して物理アドレスから変換された正規化アドレスを有するメモリチャネル上のメモリに転送する(ブロック835)。ブロック835の後に、方法800は終了する。
【0028】
図9を参照すると、2の非累乗のメモリ構成の所定の物理アドレスについてメモリチャネルを選択するための方法900の一実施形態が示されている。制御ユニットは、物理メモリチャネルの総数からアクティブメモリチャネルの数を決定する(ブロック905)。例えば、いくつかのメモリサブシステムでは、全ての物理メモリチャネルが占有及び/又はアクティブであるわけではない。また、「アクティブメモリチャネル」は、「常駐メモリチャネル」と呼ばれる場合もあることに留意されたい。一実施形態では、制御ユニットは、メモリコントローラ内に配置されている。他の実施形態では、制御ユニットは、他の場所に配置されている。
【0029】
制御ユニットは、物理メモリチャネルの総数に対するアクティブメモリチャネルの数の比率を、第1の数対第2の数に減少させる(ブロック910)。比率を減少させることは、各数量を最大公約数で除算することを含む。比率は、比率の数が最小の整数である場合に小さくなる。例えば、6つのアクティブメモリ及び8つの物理メモリチャネルがある場合、制御ユニットは、この比率を3対4に低減する。比率を減少することができない場合、第1の数は、アクティブメモリチャネルの数と等しくなり、第2の数は、物理メモリチャネルの総数と等しくなる。ブロック905~910は、システム起動時等のように事前に実行可能であることに留意されたい。したがって、ブロック905~910は、実施形態に応じて、方法900の一部として又は方法900とは別に実行することができる。
【0030】
後に、制御ユニットは、メモリ要求を受信する(ブロック915)。メモリ要求を受信したことに応じて、制御ユニットは、メモリ要求の物理アドレスビットの第1のサブセットが第1の数以上であるかどうかを判別する(ブロック920)。一実施形態では、物理アドレスビットの第1のサブセットは、物理アドレスとメモリチャネルとの間のマッピングを決定するビットの少なくとも一部である。ビットの第1のサブセットが第1の数以上である場合(条件ブロック925:「yes」)、制御ユニットは、第1の数を法とする物理アドレスビットの第2のサブセットに等しい第3の数を計算する(ブロック930)。言い換えると、第3の数は、物理アドレスビットの第2のサブセットによって表される値を第1の数で除算した後の余りに等しい。一実施形態では、物理アドレスビットの第2のサブセットは、物理アドレスビット[43:16]である。他の実施形態では、物理アドレスビットの第2のサブセットは、ブロックサイズ、ストライドサイズ、総アドレス空間サイズ及び/又は他の要因に依存する、物理アドレスビットの他の範囲である。別の実施形態では、ブロック930でのモジュロ演算は、元の物理アドレスビットではなく、物理アドレスビットの変換に対して実行される。本明細書で使用する場合、物理アドレスビットの「変換」は、アドレスビットのシフト、代替値へのアドレスビットのマッピング、又は、アドレスビットの何等かの他の数学的操作を指す。
【0031】
次に、制御ユニットは、物理アドレスビットの第3のサブセットと連結された第3の数を使用して、メモリ要求のためのメモリチャネルを選択する(ブロック935)。制御ユニットは、物理アドレスビットの第1のサブセットの代わりに第3の数を使用することに留意されたい。物理アドレスビットの第1のサブセットは、従来のアプローチにおいてメモリチャネルを選択するために使用される。一実施形態では、物理アドレスビットの第3のサブセットは、物理アドレスビット[9:8]である。また、制御ユニットは、第5の数だけシフトアップ(つまり、左にシフト)された物理アドレスビットの第1のサブセットに等しい第4の数を計算し、第5の数は、アドレス空間のサイズに基づいて計算される(ブロック940)。言い換えると、物理アドレスビットの第1のサブセットは、第5の数に等しいビット数だけ左にシフトされる。事実上、これは、ビットの第1のサブセットが2で乗算されて第5の数乗になる。別の実施形態では、制御ユニットは、第5の数だけシフトアップされた物理アドレスビットの第1のサブセットの変換に等しいものとして第4の数を計算する。次に、制御ユニットは、正規化アドレスビットの第1のサブセットを、物理アドレスビットの第2のサブセットに等しいものとして計算し、上位ビットが物理アドレスビットの第1のサブセットによって置き換えられる(ブロック945)。次に、制御ユニットは、正規化アドレスビットの第2のサブセットを、物理アドレスビットの第4のサブセットと物理アドレスビットの第5のサブセットとの連結に等しいものとして計算する(ブロック950)。一実施形態では、物理アドレスビットの第4のサブセットは、物理アドレスビット[15:12]であり、物理アドレスビットの第5のサブセットは、物理アドレスビット[7:0]である。別の実施形態では、物理アドレスビットの第4のサブセットは、物理アドレスビット[15:13]である。他の実施形態では、物理アドレスビットの第4のサブセット及び第5のサブセットは、ブロックサイズ、ストライドサイズ、総アドレス空間サイズ及び/又は他の要因に依存する、物理アドレスビットの他の範囲である。
【0032】
ビットの第1のサブセットが第1の数未満である場合(条件ブロック925:「no」)、制御ユニットは、従来のアプローチを使用して、メモリチャネルを選択し、メモリ要求の物理アドレスに対する正規化アドレスを生成する(ブロック955)。ブロック950,955の後に、メモリコントローラは、正規化アドレスを用いて、選択されたメモリチャネル上のメモリにアクセスして、メモリ要求を満たす(ブロック960)。ブロック960の後に、方法900は終了する。
【0033】
図10を参照すると、メモリチャネルを選択し、物理メモリアドレスを正規化アドレスに変換するための擬似コード1000の別の実施形態が示されている。擬似コード1000のために、メモリサブシステムの8つの物理メモリチャネルのうち5つのアクティブメモリチャネルが存在すると想定される。或いは、別の言い方をすれば、擬似コード1000のために、物理メモリチャネルの総数に対するメモリサブシステム内のアクティブメモリチャネルの数の比率は、この比率の減少後に、分子5及び分母8を有すると想定される。したがって、この実施形態では、擬似コード1000の第1の行は、物理アドレスビット[12:10]が5以上であるかどうかをチェックし、5は、アクティブメモリチャネルの数である。
【0034】
擬似コード1000の第1の行は、remap_IDビット[2:0]を、物理アドレスビット[43:16]を3で乗算した値と物理アドレスビット[12:10]との合計の5を法とする値に等しく設定する。擬似コード1000の第2の行は、物理アドレスビット[12:10]が5以上であるかどうかに応じて、mod_IDビット[2:0]を、remap_IDビット[2:0]又は物理アドレスビット[12:10]に等しく設定する。擬似コード1000の第3の行では、チャネルIDビット[4:0]は、mod_IDビット[2:0]と物理アドレスビット[9:8]との連結に等しく設定される。チャネルIDビット[4:0]は、受信したメモリ要求をルーティングするメモリチャネルを選択し、この特定の実施形態の場合、メモリチャネルの最大数は32である。他の実施形態では、チャネルIDビットの数は、サポートされるメモリチャネルの最大数に従って変化し得る。
【0035】
ビットアレイupper_bits[43:16]は、変数(addr_space-3)だけシフトアップされた物理アドレスビット[12:10]の値に等しく設定される。ビットアレイlower_bits[43:16]は、物理アドレスビット[43:16]と、変数(addr_space-3)だけシフトアップされた1から1を減じた値との間のビット毎のAND演算の出力に等しく設定される。正規化アドレスのビット[43:11]は、物理アドレスビット[12:10]が5以上であるかどうかに応じて、ビットアレイupper_bitsとビットアレイlower_bitsとの間のビット毎のOR演算の結果、又は、物理アドレスビット[43:16]に等しく設定される。正規化アドレスのビット[10:0]は、物理アドレスビット[15:13]と物理アドレスビット[7:0]との連結に等しく設定される。例示的な擬似コード1000が、特定の一実施形態で使用可能なコードを示すことを理解されたい。擬似コード1000内で使用される様々なビットアレイ及び物理アドレス内の特定のビットのサイズは、他の実施形態の場合に変化し得る。使用される様々なビットアレイ及び物理アドレス内の特定のビットのサイズは、総アドレス空間、ストライドサイズ、ブロックサイズ、アクティブメモリチャネルの数、物理メモリチャネルの数等に従って変化し得る。
【0036】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に記載された方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態において、そのようなプログラム命令は、高水準プログラミング言語によって表すことができる。他の実施形態では、プログラム命令は、高水準プログラミング言語からバイナリ、中間又は他の形式にコンパイルされてもよい。或いは、ハードウェアの動作又は設計を記述するプログラム命令を書き込むことができる。このようなプログラム命令を、C等の高水準のプログラミング言語によって表すことができる。或いは、Verilog等のハードウェア設計言語(HDL)を使用することができる。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、このようなコンピューティングシステムは、少なくとも1つのメモリと、プログラム命令を実行することができる1つ以上のプロセッサと、を含む。
【0037】
上記の実施形態は、実装態様の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に認識されると、当業者には多数の変形及び修正が明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含すると解釈されることが意図されている。