HPE Blog, Japan
1753918 メンバー
7618 オンライン
108810 解決策
新規ポスト
yoshihiko1989

【連載】導入前のアドバイス – メモリ①:メモリの種類・規格について

この記事は2020年12月に更新されました

 

連載記事「導入前のアドバイス」 - メモリ(メモリ全般)編です。

今回はメモリの種類や規格に関して内部構造を交えてご紹介します。メモリ.png

メモリとは

メモリとは、コンピューターのデータやコンピューターの命令を、電気的に保管しておく場所のことです。読み取りのみか読み書き可能か、データを保管する方法はどうか、転送方式、使用方法などによって様々な種類に分けられます。

ROMRAM

メモリの種類としては大きく分けて読み込み専用のROM(Read Only Memory)と、読み書き可能なRAM(Random Access Memory)がありますが、一般的にサーバーに搭載するメモリの場合は、RAMであるメインメモリ(主記憶装置)の事を指します。

DRAMSRAM

RAMの種類として、大きくDRAM(Dynamic Random Access Memory)SRAM(Static Random Access Memory)という2つの種類があります。

両者の詳細は非常に難しい話ですので詳述しませんが、一般的にDRAMは価格が安く大容量化が容易ですが速度が遅く、SRAMは高速なのですが価格が高く大容量化が難しいです。

PCやサーバーに搭載されるメインメモリでは、容量や価格、アクセス性能などの面から、DRAMが多く利用されています。一方、CPUの中に搭載されるキャッシュメモリは、容量は少なくてもとにかく高速で動く必要があるため、SRAMが使用されています。

 

メインメモリとキャッシュメモリ

前述でメインメモリとキャッシュメモリという言葉が出てきました。これはメモリそのものの物理的な差ではなく、メモリの役割による分け方となります。それぞれ見ていきましょう。

メインメモリとは

メインメモリとは、プロセッサーの命令によって直接読み書き可能な記憶装置(主記憶装置)です。実行中のプログラムや現在行っている処理に必要なデータなどが保存され、プロセッサーの作業場となります。

WindowsやLinuxなどのOSが起動すると、メインメモリにはOSの多くの部分や、使用されるデータやプログラムが格納され、プロセッサーが必要に応じてメインメモリからデータなどを取り出せるように構成されます。したがって、メインメモリへプロセッサーから高速アクセスできるかどうかで、サーバーのパフォーマンスは大きく変わります。また、メインメモリに使用されるDRAMは低価格化が進んでいることと、OSやアプリケーションの要求するメモリ容量が増加し続けていることから、サーバーの搭載メモリは大容量化が進んでいます。

システム構成図の「メモリ」の項目で選択されるメモリは、主にこのメインメモリの役割をするものです。

キャッシュメモリとは

キャッシュメモリ(緩衝記憶装置)とは、プロセッサーとメインメモリの速度差を補うために、プロセッサーとメインメモリの間に置かれた小容量のメモリの事です。メインメモリでDRAMが使用されるのに対し、こちらはより高速なSRAMが使用されます。

メインメモリも最近のものは非常に速くなってきてはいるのですが、それでもプロセッサーの速度にはかないません。そこで、メモリ_pic1.png上図のように、プロセッサーとメインメモリの間に高速なキャッシュメモリを置いて、よく使用するデータを一時的保管場所とすることで、高速化を図っているのです。

この高速なものと低速なものの間に高速なキャッシュを置くという事は、プロセッサーとメインメモリの間のキャッシュメモリのみならず、ストレージのキャッシュとしてアレイコントローラー上にメモリを置くなど、様々な所で使用される考え方となっています。

尚、キャッシュメモリ自体は、現在はプロセッサーに内蔵されるもので、個別にオプションとして選択することは出来ません。基本的にプロセッサーのグレードが高いほうが、内蔵キャッシュの容量が大きい傾向があります。

メモリ_pic2.png

 システム構成図では、プロセッサーの項目にキャッシュメモリについての記述があります。

 

メインメモリに使われるメモリの規格・種類

DDR4 SDRAMについて

2020年現在、PCやサーバーのメインメモリで一般的に使用されるメモリは、DDR4 SDRAM(Double Data Rate 4 Synchronous Dynamic Random Access Memory)という規格のメモリです。

かつてのメモリは、コンピューター本体のシステムバスのクロック信号(ベースクロック/FSB)とは別に動作していましたが、1993年にこのシステムバスにタイミングを同期して入出力などの制御を行うSDRAM(Synchronous Dynamic Random Access Memory)という規格が業界団体のJEDECにより策定されました。

最初は、クロック信号当たり1回のデータ転送のみが行えるSDR SDRAMというものだったのですが、後にクロック信号当たり2回のデータ転送を行えるDDR SDRAMが登場しました。さらに、DDR SDRAMの倍の転送能力を持つDDR2 SDRAM、さらにその倍のDDR3 SDRAMと進化し、現在のDDR4 SDRAMDDR3 SDRAMのさらに倍の転送能力を持っています。

メモリのランク数

サーバーで一般的に使用されるメモリは、DIMM(Dual Inline Memory Module)と呼ばれるモジュールタイプのもので、メモリを制御するメモリコントローラー(現在はプロセッサーに内蔵されています)と、ECC(Error-correcting code)のエラー訂正コード分を含んでランク単位でデータのやり取りを行っています。

一方、メモリモジュール基盤の上に載っている個々のメモリのICチップは、1個当たり4bitまたは8bitのデータ幅を持っています。そこで、1個当たり4bitのものは18個、1個当たり8bitのものは9個を一纏めにして、メモリに格納される実データとECCエラー訂正コードを含んで、72bit単位で1ランクを形成します。

メモリ_pic3.png

現在、サーバー用に提供されているメモリモジュールは、UDIMMRDIMMLRDIMM3種類があります。ここではそれらの特徴と用途について述べたいと思います。

UDIMMについて

UDIMM(Unbuffered DIMM)は、メモリモジュールの基板上にレジスタ・バッファ等の回路を持たず、メモリコントローラーが各メモリチップを直接制御するタイプのメモリです。

メモリ_pic4.png UDIMMでは、メモリコントローラーが、メモリチップを直接管理しています。

メモリの構造としては最も基本的なものです。尚、一般的なPCで使用されるメモリは、全てこのUDIMMの形態となります。

このUDIMM、メモリコントローラーが途中に何も置かず直接メモリチップを管理する為、速度は一番速く、また回路も単純なため安価になります。

しかし、UDIMMには欠点があります。
メモリコントローラー単独で制御できるメモリチップの数には限界があるため、メモリチップの数が増えると、メモリ_pic5.pngという様に、メモリコントローラーの管理能力に早く限界が来てしまうのです。

各メモリチップはメモリモジュールの基盤の上に載っていますので、UDIMMは搭載可能なメモリモジュールの枚数が少なく、容量を大きくできないという欠点がある事になります。

そのため、HPE ProLiantサーバーでは搭載CPUの制約上、20207月現在発売中の機種では、UDIMMDL20 Gen10ML30 Gen10MicroServer Gen10といった、エントリーモデルの機種でのみサポートされています。また、1枚当たりの最大容量も16GBと、RDIMM64GBLRDIMM128GBに比べると少ないものになっています。

RDIMMについて

RDIMM(Registered DIMM)とは、メモリモジュールの基板上にレジスタ・バッファという回路を備え、メモリコントローラーが送るコマンド信号とアドレス信号を一旦このレジスタ・バッファが受け取り、整流・増幅してモジュール内のメモリチップに再送信するタイプのメモリです。

メモリコントローラーとメモリチップがあることはRDIMMでも変わりません。しかし、このRDIMMは、UDIMMよりメモリチップ自体を多く実装したり、UDIMMより多い枚数のモジュールをサーバーに搭載することができます。

メモリチップが増えたり、モジュール枚数が増えるとメモリコントローラーだけでは管理しきれません。そこで、メモリコントローラーとメモリチップの間に、レジスタ・バッファという、信号を一旦受け取って整理する役目のチップを設けました。

メモリ_pic6.png

このように、メモリコントローラーが今まで直接行っていた仕事のうち、コマンド信号とアドレス信号を一旦レジスタ・バッファが受け取って整理します。データ信号のやり取りは、今まで通りメモリコントローラーが直接行います。

こうすると、メモリコントローラーがコマンド信号とアドレス信号のやり取りを直接行うのは、レジスタ・バッファに対してのみで済みます。個々のメモリチップのコマンド信号とアドレス信号はレジスタ・バッファが一旦受け取って整理しますので、メモリコントローラーの負担が減り、より多くのメモリチップを制御できるようになる、つまりメモリの枚数を増やして大容量化することが出来るようになるのです。

このRDIMMはサーバーでは最も一般的なメモリで、ProLiantサーバーの多くの機種やSynergyなどでサポートされています。容量も1枚当たり最低8GBから最大64GBと、非常に多くのラインアップが用意されています。

メモリ_pic7.pngLRDIMMについて

LRDIMM(Load Reduced DIMM)とは、メモリコントローラーとメモリチップの間の全ての信号のやり取りをバッファを介して行うメモリで、特に大容量が必要な場合に使用されるものとなります。

先程、RDIMMの説明で、メモリコントローラーとメモリチップの間にレジスタ・バッファを設けることは説明しました。しかし、この場合においても、

メモリ_pic8.png

このように、さらにメモリチップが増えた場合、流石に限界が来てしまいます。

そこで、LRDIMMは、RDIMMではメモリコントローラーが直接行っていたデータ信号についても、間にデータ・バッファという、信号の整理を行うチップを設けました。

メモリ_pic9.png

このように、メモリコントローラーは、直接のやり取りはデータ信号についてはデータ・バッファ、コマンド信号とアドレス信号についてはレジスタ・バッファと行えば良くなります。個々のメモリチップとのやり取りは、データ・バッファとレジスタ・バッファがそれぞれ一度信号を受け取って整理した後に行うことになります。メモリコントローラーの負荷が大幅に減るため、よりメモリを大容量化することが出来るのです。

このLRDIMMですが、RDIMMに比べてデータ・バッファが追加されている分、価格は高価になります。また、メモリ1枚当たりの最低容量が64GB、最大容量は128GBと、大容量向けに特化した製品となります。

ProLiantサーバーでは、100シリーズ以降のDL/MLサーバー、Synergy 480 Gen10Synergy 660 Gen10で対応しています。LRDIMMは、サーバーに搭載するプロセッサーによって最大搭載可能な枚数や、容量の異なるメモリの混在などが異なる事もありますので、システム構成図のコメントにご注意ください。

メモリ_pic10.png

今回は、メモリの種類・規格についてご紹介しました。

次回は、ストレージ用途で使用するメモリ・メモリの保護機能に関してご紹介します。

 

「導入前のアドバイス」まとめリンク

0 感謝
作者について

yoshihiko1989

日本ヒューレット・パッカード株式会社で Server Solution / CloudNative関連のプリセールスを担当しています。