パソコンやサーバーの面倒くさいメモリ規格

# はじめに
　先日、サーバーの修理をしたときにメモリの種類に悩まされました。サーバー用のメモリとか誰も知らん。そこで、メモリの規格をできる限り調べてきたので、私の自作PCの知識と混ぜながら簡単に紹介しようと思う。


## 種類
　メモリと言っても様々な種類があります。一般的にメモリと呼ばれるRAMももちろんですが、ストレージに使われるSSDやUSBメモリもフラッシュメモリと呼ばれています。違いはこんな感じです。
| 項目 | 特徴 | 
| -------- | -------- | 
| **RAM** |　ストレージと比べて段違いに速く、高価。揮発性のため、電源を切るとデータが消える。 |
| **フラッシュメモリ（ストレージ）** | 速度がRAMに比べて遅く、安価だが、電源を切ってもデータを保持できる  | 

今回はこのRAMについて詳しく説明していこうと思います。

## RAMの規格
### DRAM（メモリチップ規格）
RAMとはRandom Access Memoryの略でコンピュータの主記憶装置となります。ストレージから読み取ったプログラムやデータをここにメモリして、CPUがそれにアクセスするものになります。人間世界に例えると、机に仕事に必要な書類を出しておくみたいなものです。RAMには以下のような規格があります。
![絶対に失敗しない.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479060/3bee82b3-14e1-135c-a944-6d0069cc0195.png)
　RAMには**SRAM**と**DRAM**があります。SRAMは速いけど高価で、DRAMは遅いけど安価です。SRAMはCPUのキャッシュメモリとして使用されていますが、触ることはないので気にしないでください。DRAMはスマホやパソコンに使われるもので、これが進化してSDRAMという規格が誕生し、この**SDRAMの中にDDR**があります。
　このDDRはDouble-Data-Rateの略です。最新はDDR5です。この規格には互換性がないため、自作PCなどでDDR5を入れるはずなのにDDR4を買ってしまうと、どうにもなりません。

　スマホに搭載されているのは**LPDDR**というもので、LPはLow-Powerの略です。つまり、消費電力が少ないものです。薄いパソコンやタブレットはこのメモリが内蔵されています。

　規格はDDR7まで存在してはいます。ちなみにVRAMはGDDR6まで販売されてます。VRAMはグラフィックボードに搭載されているRAMのことで、グラフィック表示に特化したものになります。

### SIMMとDIMM（モジュール規格）
RAMの規格でモジュール規格といものもあり、**SIMM（Single Inline Memory Module）** と**DIMM（Dual Inline Memory Module）** があります。今はSIMMは使われていません。全部DIMMです。
| 項目 | 特徴 | 
| -------- | -------- | 
| **SIMM** |　1980年代に使われていた規格。端子の数が少なく、送れるデータも少ない32ビット。 |
| **DIMM** | 現在使われている規格。端子がSIMMの二倍になり、64ビットへ。データをたくさん送れるようになった。 | 

　このDIMMですが、この中にもたくさんの規格があります。
| DIMMの種類 | 特徴 | 
| -------- | -------- | 
| **UDIMM** |　一般的に使われているもの。Uは Unbuffered（アンバッファ－ド）の略でレジスタ回路が搭載されていない。|
| **RDIMM** | サーバーに使われるもの。RはRegistered（レジスタ－ド）の略でレジスタ回路が搭載されている。 | 
| **LRDIMM** | RDIMMを発展させたもの。 |
| **SO-DIMM** |　ノートパソコンなどに使われる小型のメモリ。LPDDRとは違う（LPDDRは内蔵、取り出せない）。|

　**レジスタ回路**は、マザーボード側のCPUやチップセットに内蔵されたメモリコントローラとメモリモジュール側のメモリチップの間で信号の取次を行う回路のことです。コントローラから送られてくるコマンド信号やアドレス信号を受け取り、整流、増幅してモジュール内の各メモリチップへ送信します。レジスタ回路がないものは、信号をすべてすべてのチップへ送信します。つまり、余分に容量を使用してしまいます。レジスタ回路があることで、整理されて送信され、メモリチップをフルに使うことが可能となります。そのため、RDIMMは容量も大きく、UDIMMが一般的なもので一枚32GBに対し、LRDIMMは一枚で最大128GBも容量があります。
　この規格は制御方法がことなるため、併用できません。これに私は２日間も悩まされました。さらに、サーバー用なのでかなり高価で全然売ってないです。

### ECCメモリ
　**ECCメモリはエラーを検出し**、64bitのうち1bitだけエラーした場合、**正しいデータに修正できます**。ただし、同時に2bitエラーした場合は修正できません。これも安定性が求められるサーバー用として使われます。
　
## 速度（帯域幅）
### メモリの帯域幅
　ネットでメモリを購入しようとして調べるとき、「DDR4-3200」のような表記を見たことがある人は多いと思います。これは「DDR4規格の速度3200MHzだよ」という意味です。それとは別に「PC4-25600」という表記を見たことはありませんか？DDR4-3200はメモリチップ規格表記（メモリクロックとも呼ばれる）、PC4-25600はモジュール規格表記になります。
　25600は帯域幅です。メモリモジュールが1秒間に転送可能なデータ容量を示すものです。それぞれ、単位が違います。帯域幅に1/8を乗算すると、だいたいクロックとほぼ同じになります。（2133HMzなどの微妙なクロックは少しずれます。）
| モジュール(規格) | クロック | 帯域幅　|
| -------- | -------- |-------- |
| PC3-12800 | DDR3-1600(MHz)　|12800 MB/s|
| PC4-25600 | DDR4-3200(MHz) | 25600 MB/s |

12800/8＝1600
3200*8＝25600

### 電圧と速度（オーバークロック）
**DDR3は1.5V、DDR4は1.2Vが定格ですが、電圧を上げることで周波数を上げる、オーバークロックが可能**です。このオーバークロックですが、マザーボード側で対応していないとできません。ここでよくあるのが価格ドットコムなどのネットの表記に騙されることです。
　例えば、PC4-25600（3200 MHz）のメモリを探しました。見つけたものは、こんなスペックでした。
| 電圧 | 速度 | 
| -------- | -------- | 
| 1.2V |2666 MHz|
| 1.35V | 3200 MHz | 

　これは1.2Vで2666 MHz、1.35Vで3200 MHzという意味です。今、3200MHzのメモリを探しています。電圧は1.35Vです。オーバークロックされています。ちなみに、**メモリは何も設定しないと、定格電圧1.2Vで動作**します。知らずに買うと、2666 MHzで動作します。

　もちろん、1.2Vで3200 MHz動作をするものも存在します。しかし価格ドットコムでは、例のようなオーバークロックして3200MHzのものとごちゃ混ぜで出てきます。ですから、設定が不安という方は、しっかりとスペックも確認しましょう。これは自作PCでよくある話なのでご注意ください。設定を簡単にする方法は下のXMPをご覧ください。



### メモリの本当の速度
　**3200 MHzのメモリは、実際は1600 MHzで動作**しています。これはDDR（Double-Data-Rate）という規格が関係しており、一度で二倍のデータを送り出せるため、メーカーやお店では2倍の数値が表示されています。
CPU-zというソフトを使うと、実際の速度を見ることができます。
【図1】
![スクリーンショット 2023-07-18 095726.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479060/d4cde1d6-cf09-be4f-8137-8fd9f116ffca.png)
![スクリーンショット 2023-07-18 095839.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479060/99a57222-11e4-993d-0c38-54efcf0d2fe7.png)

### 遅延（レイテンシ）・メモリタイミング
　図1の下のtimings tableの中やメーカースペック表で、17-17-17-40という数字があります（CL17という表記もある）。これはメモリタイミングと呼ばれるものです。簡単に言えば、データを送るタイミングを示したものです。この例で言うと、17クロック分書き込みに待ち時間が発生するよという意味です。そして、ここから計算され値をレイテンシといいます。つまり、レイテンシはデータを送るまでの待ち時間のようなものです。

**レイテンシ　＝　タイミング　/　クロック周波数(Hz)**

　ここのクロック周波数は、先に紹介した実際のクロック周波数つまり、メーカー表記の1/2の周波数になります。
**例：17(Clock) ÷ 1,333,333,333(Hz) ＝ 0.000000013(秒) ＝13ns(ナノ秒)**
見ての通り、物凄く小さい値です。ですから、ほとんどの人が気にする必要はありません。

## 選ぶ
### 対応メモリ
　パソコンやサーバーには必ず、メモリの対応規格が存在します。ですから、自作PCを作るときも、メモリの増設をするときも、しっかりとメーカーサイトや説明書を調べてください。

**例**：私の持っている自作のマザボ仕様
- デュアルチャネル DDR5 Memory テクノロジ
- 4 x DDR5 DIMM スロット
- DDR5 non-ECC、アンバッファード・メモリに対応 最大 6400+(OC)*
- システムメモリの最大容量: 192GB
- Intel® 究極のメモリプロファイル (XMP) 対応 3.0
　この場合、DDR5で最大6400MHzのUDIMMに対応しているとわかり、ECCメモリ非対応、最大容量は合計で192GBとなります。

### メモリの種類
　先ほど、UDIMMやRDIMMと紹介しましたが、その種類はメモリ本体にこのように表記されています。参考にしてください。
- UDIMM :PC3-10600**U** （もしくは無記）
- RDIMM :PC3-10600**R** （もしくは無記にregisteredと表記）
- ECC :PC3-10600**E**
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333437393036302f61623266663431342d613462392d343461622d386133392d376131653330656236.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3479060/e93f4761-c300-24b0-34c3-6502c447f744.jpeg)
下がUDIMM、上がRDIMM



### XMP
 XMPはメモリの設定プロファイルのことです。対応メモリには、そのメモリに適したメモリタイミング・電圧などのプログラムが書き込まれています。つまり、オーバークロックが簡単にできます。マザーボードで対応しているかを確認できれば、電圧を気にする必要はありません。自作PCをする場合は参考にしてください。

# 最後に
　メモリの規格は非常に多いことがわかりますね。これは疲れます。サーバー用なんて、ほとんどの人が知りません。いい勉強になりました。皆さんも良ければ、自分のPCのメモリは何なのかを調べてみてください。（なにか間違っていたらごめんなさい）

### 参考
https://akiba-pc.watch.impress.co.jp/docs/sp/1231939.html

https://e-words.jp/