現代のコンピュータの設計において、メモリジオメトリとはランダムアクセスメモリの内部構造を指します。メモリジオメトリは、コンピュータをアップグレードするユーザーにとって重要な情報です。なぜなら、古いメモリコントローラは新しい製品と互換性がない可能性があるからです。メモリジオメトリの用語は、重複する用語が多いため、混乱を招くことがあります。
メモリシステムの幾何学的構造は、多次元配列として考えることができる。各次元にはそれぞれ固有の特性と物理的な実現方法がある。例えば、メモリモジュール上のデータピンの数は、一つの次元である。
メモリジオメトリはRAMモジュールの論理構成を表しますが、消費者は常に物理構成を理解する方が簡単だと感じます。メモリジオメトリに関する混乱の多くは、物理構成が論理構成を不明瞭にしてしまう場合に発生します。RAMの最初の特徴はフォームファクタです。RAMモジュールは、ラップトップ、プリンタ、組み込みコンピュータ、小型フォームファクタコンピュータなど、スペースに制約のあるアプリケーション向けのコンパクトなSO-DIMM形式と、ほとんどのデスクトップで使用されるDIMM形式があります。
物理的な検査によって確認できるその他の物理的特性としては、メモリチップの数と、メモリスティックの両面にチップが実装されているかどうかが挙げられます。RAMチップの数が2のべき乗に等しいモジュールは、メモリのエラー検出または訂正をサポートしていません。2のべき乗の間の数のRAMチップが余っている場合は、それらがECCに使用されます。
RAMモジュールは、側面と底面に刻まれた「キー」によって識別されます。このキーは、モジュールの技術や分類(例えば、DDR2かDDR3か、デスクトップ用かサーバー用かなど)を示します。キーは、システムに誤ったモジュールを取り付けにくくするために設計されています(ただし、キーに示されている要件以外にも多くの要件があります)。モジュールのキーが、取り付けようとしているスロットのキーと一致していることを確認することが重要です。
モジュール上にメモリ以外のチップが追加で搭載されている場合、それはサーバー向けの大容量メモリシステム用に設計されたものであり、一般市場向けシステムとは互換性がない可能性があることを示唆している。
この記事の次のセクションでは、システム内のすべてのスロットにまたがる論理構造を網羅する論理アーキテクチャについて説明しますので、スロット自体の物理的な特徴が重要になります。マザーボードのドキュメントを参照するか、ボード上のラベルを読むことで、スロットの基本的な論理構造を把握できます。スロットが複数ある場合は番号が振られ、チャネルが複数ある場合は、異なるスロットが同様に番号で区別されます(通常は色分けされています)。
1990年代には、キャッシュコヒーレント非均一メモリアクセス(NUMA)を採用したコンピュータが登場し、それぞれ独自のメモリコントローラを持つ複数のコンピュータを組み合わせることが可能になりました。これにより、各コンピュータ上で動作するソフトウェアは、参加するすべてのシステムの入出力デバイス、メモリ、CPUをあたかも1つのシステムであるかのように利用できるようになりました(単一システムイメージ)。AMDがメモリコントローラをCPUに統合したOpteronを発表したことで、単一システム内で複数のメモリコントローラを共有するNUMAシステムが、一般的なデスクトップ以上の処理能力を必要とするアプリケーションで普及しました。
チャネルは、ローカルメモリコントローラレベルにおける最上位の構造です。現代のコンピュータは、2つ、3つ、あるいはそれ以上のチャネルを持つことができます。通常、いずれかのチャネル内の各モジュールに対して、他のすべてのチャネルの同じ場所に、論理的に同一のモジュールが存在することが重要です。
モジュール容量は、モジュール内の合計スペースをバイト単位、またはより一般的にはワード単位で測定したものです。モジュール容量は、ランク数とランク密度の積に等しく、ランク密度はランク深度とランク幅の積です。[ 1 ] この仕様を表す標準形式は、(ランク深度) Mbit × (ランク幅) × (ランク数) です。
ランクは、メモリ モジュールのサブ ユニットであり、同じアドレス バスとデータ バスを共有し、低レベル アドレス指定でチップ セレクト(CS) によって選択されます。たとえば、各チップが 8 ビット幅のデータ バスを持つ、各面に 8 個のチップを持つメモリ モジュールの場合、ランクの幅を 64 ビットと定義すると、各面に 1 つのランクがあり、合計 2 つのランクになります。Micron Technology MT47H128M16 チップで構成されたモジュールは、128 Mib × 16 の構成で、つまり、1 チップあたり 128 Mi のメモリ深度と 16 ビット幅のデータ バスを持ちます。モジュールのボードの両面にこれらのチップが 8 個ある場合、合計 16 個のチップ × 16 ビット幅のデータ = 256 ビット幅のデータになります。64 ビット幅のメモリ データ インターフェイスの場合、これは 4 つのランクを持つことに相当し、各ランクは 2 ビットのチップ セレクト信号によって選択できます。Intel 945チップセットなどのメモリコントローラは、サポートする構成を次のようにリストしています。「×8 および ×16 デバイス用の 256 Mib、512 Mib、および 1 Gib DDR2 テクノロジー」、「最大 512 Mibit 密度のすべての DDR2 デバイス用の 4 ランク」、「1 Gibit DDR2 デバイス用の 8 ランク」。例として、各モジュールの容量が 1 GiBである4 つのKingston KHX6400D2/1G メモリ モジュールを備えたi945メモリコントローラを考えます。[ 2 ] Kingston は、各モジュールが 8 ビット幅のデータ バスを持つ 16 個の「64M×8 ビット」チップで構成されていると説明しています。16 × 8 は 128 なので、各モジュールにはそれぞれ 64 ビットの 2 つのランクがあります。したがって、MCH の観点からは、4 つの 1 GB モジュールがあります。より高い論理レベルでは、MCH はそれぞれ 4 つのランクを持つ 2 つのチャネルも認識します。
一方、バンクは論理的にはランクと似ていますが、物理的なハードウェアでの実装方法は全く異なります。バンクは単一のメモリチップ内のサブユニットであるのに対し、ランクはモジュール上のチップのサブセットで構成されるサブユニットです。チップセレクトと同様に、バンクはメモリインターフェースの一部であるバンクセレクトビットによって選択されます。
メモリジオメトリでカバーされる最も低い組織形態は、「メモリデバイス」と呼ばれることもあります。これらは、各モジュール、つまり RAM モジュールを構成するコンポーネントICです。チップの最も重要な測定値は、ビット単位で測定される密度です。メモリバス幅は通常、チップの数よりも大きいため、ほとんどのチップは幅を持つように設計されており、内部で等しい部分に分割され、1 つのアドレス「深さ」が呼び出されると、1 つの値だけでなく、複数の値が返されます。深さに加えて、チップレベルでは、2 番目のアドレス指定次元であるバンクが追加されています。バンクを使用すると、1 つのバンクが使用可能である間、別のバンクはリフレッシュのために使用できなくなります。
モジュールの寸法には、サイズ、幅、速度、レイテンシなどがあります。メモリモジュールは、必要なモジュール幅に等しくなるように、メモリチップの倍数で構成されます。したがって、32ビットSIMMモジュールは、8ビット幅(×8)のチップ4個で構成される場合があります。メモリチャネルの項で述べたように、1つの物理モジュールは、1つ以上の論理ランクで構成できます。32ビットSIMMが8ビットチップ8個で構成されている場合、SIMMは2つのランクを持つことになります。
メモリチャネルはランクで構成されています。物理的には、メモリモジュールが1つだけのメモリチャネルでも、1つ以上の論理ランクを持つように構成される場合があります。
これは最高レベルです。一般的なコンピュータには、1つまたは2つのチャネルを持つメモリコントローラが1つしかありません。論理機能のセクションでは、メモリコントローラのネットワーク形式をとることができるNUMA構成について説明しました。たとえば、2ソケットのAMD K8では、各ソケットに2チャネルのメモリコントローラを搭載できるため、システム全体で合計4つのメモリチャネルを利用できます。
メモリジオメトリを指定する方法は様々あり、それぞれ異なる種類の情報を提供する。
(メモリ深度)×(メモリ幅)
メモリ幅は、メモリモジュールインターフェースのデータ幅をビット単位で指定します。たとえば、64 は 64 ビットのデータ幅を示し、これは SDR および DDR1-4 ファミリーの RAM で一般的な非 ECC DIMMに見られます。メモリ幅が 72 の場合は、エラー訂正コード症候群のためにデータ幅に 8 ビットが追加されている ECC モジュールを示します (ECC 症候群により、1 ビットのエラーを訂正できます)。メモリ深度は、ビット単位の総メモリ容量を非パリティメモリ幅で割った値です。メモリ深度は、32×64 または 64×64 のように、メガ (2 20 )単位で示される場合があり、それぞれ 32 メガ深度と 64 メガ深度を示します。
(メモリ密度)
これはチップの総メモリ容量です。例:128 MiB。
(メモリ深度)×(メモリ幅)
メモリ深度は、メモリ密度をメモリ幅で割った値です。例:容量128MIB、データバス幅8ビットのメモリチップの場合、16Meg × 8と表記されます。場合によっては「Mi」が省略され、16×8のように表記されることもあります。
(バンクあたりのメモリ深度)×(メモリ幅)×(バンク数)
例:上記と同じ容量とメモリ幅を持つが、4つのバンクで構成されたチップは、4 Mi × 8 × 4 と表記される。