Mac業界の最新動向はもちろん、読者の皆様にいち早くお伝えしたい重要な情報、
日々の取材活動や編集作業を通して感じた雑感などを読みやすいスタイルで提供します。

Mac Fan メールマガジン

掲載日:

メモリの仕組み・役割を知ろう

メモリの仕組み・役割を知ろう

メモリが速度に影響する

本特集のテーマであるメモリですが、まず誤解のないように説明すると、ここでいうメモリとは、メインメモリ(揮発性メモリ)のことで、フラッシュメモリ(不揮発性メモリ)とは異なります。

メインメモリとフラッシュメモリは、速度と価格がまさに桁違いです。メインメモリは毎秒17GBで1GBあたり約1250円にもなりますが、フラッシュメモリが毎秒2~3000MBで1GBあたり約25円です。

このメインメモリは、Macを構成するハードウェアでCPUの次に重要なコンポーネントです。ソフトはもちろんmacOSなどのオペレーティングシステムも、このメインメモリとプロセッサが情報をやりとりして動作しています。

そのため、このメインメモリがMac全体のパフォーマンスを左右します。macOSではメインメモリをリアルタイムに管理しており、仮に少ない容量しかMacに搭載されていなくても多くのソフトを動かしファイルを開くことができますが、メインメモリが足りないときは速度が犠牲になります。

そんなメインメモリに関して、「容量は多いほうが良い」「容量が不足するとMacが遅くなる…」などといった知識はあるものの、正しく理由を説明できる人はどれくらいいるでしょうか。

そこで、ここではメモリの仕組みや使われ方、メモリ不足でMacが遅くなる理由などを解説していきましょう。

[Study 1]混同されがちなメインメモリとフラッシュメモリ

「(客)メモリ8GBのiPhoneください」「(携帯ショップ店員)お客様、現在のiPhoneは32GBからとなっています」という、コントようなやりとりがSNSに投稿され話題となりました。客はメインメモリのことを言っていますが、店員はフラッシュメモリ(ストレージ)と勘違いしているからです(現在8GBのメモリを搭載したiPhoneはありません)。同じような誤解をしているMacユーザも意外と多く、初心者と話が噛み合わなかった経験のある読者もいるのではないでしょうか。

Macに限らずコンピュータに使われているメインメモリとフラッシュメモリには、大きな違いがあります。まずフラッシュメモリは不揮発性メモリ(NVM=Non Volatile Memory)であり、電源の供給を止めてもデータを保持することが可能。ハードディスクなどのストレージの代わりに「SSD(Solid State Drive)」として利用されるほか、もちろんiPhoneのストレージにも採用されています。読み込み、書き込みともに高速で、特に電気を使って削除が「パッ」っとカメラのフラッシュのように行えることから、フラッシュ(Flash)メモリと呼ばれます。

一方、メインメモリにはRAM(Randam Access Memory)という揮発性メモリが使われており、電源の供給を止めるとデータが消えてしまいます。その代わりに非常に高速なため、CPUとデータとプログラムのやりとりに使われています。このRAMの速度は、SSDとの比較で7~30倍も高速であり、まさに桁違いなのです。しかし、そのぶんとても高価なので標準構成のMacでは8~16GBしか搭載されていません。

●メモリモジュール

もともとメインメモリはRAMチップが8~16個実装されたDIMMとよばれるモジュール単位でコンピュータに搭載されていました。これを交換したり増設したりして容量を増やせたのですが、最近のMacではスペース節約のためロジックボードに直接実装されることが多いです。 写真●iFixit.com

●SSDモジュール

フラッシュメモリは、HDDを置き換えられるようにした箱型のケースに入ったものや、一見メモリモジュールのような細長いものもの、チップがロジックボードに直付けされている場合もあり、形状の自由度が高い反面、交換するのは難しくなっています。 写真●iFixit.com

[Study 2]メモリはトランジスタとコンデンサで構成される

メモリはどのような構造になっているのでしょうか。ここでは、メモリの中でもコンピュータのメインメモリに使われているDRAM(Dynamic Random Access Memory)の構造を解説します。

まず、コンデンサ(キャパシタ)と呼ばれる電荷(電気を帯びている量)を貯められる素子と、これを制御するトランジスタと対になったものをメモリセルと呼びます。このコンデンサに電荷が溜まっている状態が「1」、溜まっていない状態が「0」として、1ビットの情報を記憶できます。メモリセルは格子状にたくさん並べられ、それぞれが縦横に配線されていますから、任意かつ複数のセルの電荷を調べ、0か1かのビット情報を確認してデータとして利用しています。

DRAMは、電源のある状態ではデータが保持されると言われますが、実はコンデンサに蓄えている電荷は、時間の経過とともに少しずつ失われてしまい、そのままにしていると電荷のない状態、すなわち「0」との判別がつかなくなってしまいます。電源がなくなるとメモリセルに保持された電荷が次第に消失し、データが消えてしまうのはこのためです。そこで、1秒間に数回リフレッシュという作業で電荷を補っています。

メインメモリとして使われるDRAMは多くの場合、DIMMやSO-DIMMというメモリモジュール単位で搭載されています。ただし、ノート型のMacのメインメモリは、ロジックボードに直付けされており、4個ないしは8個単位のDRAMチップが実装されています。

●メモリの構造

メモリは格子状に並んだメモリセルに電荷を貯めることで「1」を、電荷がない状態を「0」としてデータを保存していて、電源がなくなると、電荷も消失します。

●直接実装がトレンド

2018年モデルの13インチMacBook Proのロジックボードです。赤い枠内が16GビットのDRAMチップで、4個搭載することで8GBの容量になっています。 写真●iFixit.com

[Study 3]メモリはストレージとCPUの中間管理職

CPUはとても高速な処理が可能ですが、データを保存しているストレージはCPUの演算結果をリアルタイムに書き込める速度ではありません。これまで主流であったHDDからより高速なSSDに移行が進んでいるとはいえ、CPUの処理速度は桁が2つ以上違うので追いつくことはないでしょう。この速度差を埋めるためCPUとストレージの間を取り持っているのがメインメモリです。

たとえばストレージにあるデータをCPUが処理する場合、ストレージから必要なデータをメインメモリに少しずつコピーし、CPUは高速なメインメモリ上で処理を行っています。データの書き込みでは、CPUの処理結果を一時的にメインメモリに保存して置くことで、ストレージへの書き込み速度が遅くても、ボトルネックになりにくいよう工夫されています。

メインメモリは古くから「机」にたとえられます。ストレージは「引き出し」、CPUは「人間」です。人間が何かの作業を行うときには、引き出しからいろいろなものを取り出して机の上に置きます。このときに机の上のスペースが広ければ広いほど作業が捗ります。これと同様にメインメモリの容量が大きければ大きいほどストレージから多くのデータを読み込め、CPUとメインメモリの間だけで処理が行えるようになり、コンピュータ全体の処理が速くなるのです。

なお、CPUそのものにも処理を高速化するためのキャッシュメモリが内蔵されています。キャッシュメモリにはDRAMよりも高速なSRAMが使われており、1次キャッシュなどと呼ばれています。高速なCPUからキャッシュ→メインメモリ→ストレージのように速度差を少しずつ埋めて、ボトルネックによるパフォーマンス低下を抑えています。

ならばメインメモリもSRAMにすればと思うかもしれませんが、DRAMに比べると十数倍も高価なのでコスト的に現実的ではないのです。

●メモリは作業机

ストレージ、メインメモリ、CPUを人間の作業にたとえると、ストレージは引き出しや棚、メインメモリは作業用の机になります。机が広ければストレージから多くのデータを机の上に置けるため、作業効率が上がります。少ないメインメモリの場合、机の上が狭いため、データを引き出しにしまいながら作業を行わなくてはならないので、パフォーマンスが発揮できません。

[Study 4]macOSのメモリ管理はとても賢い

メインメモリの仕組みと役割がわかったところで、macOSがどのように管理しているかについて理解しましょう。まず、前提としてMacに搭載されているハードウェアとしてのメモリ(メインメモリ)を物理メモリと呼びます。標準的なMacの物理メモリは8GB程度ですから、複数のソフトを起動するとすぐに物理メモリの容量を使い果たしてしまいますし、1つのソフトで大容量ファイルを開いていたり重い処理を行っても足りなくなります。そこでmacOSでは、各ソフトの要求する容量の仮想的なメモリ空間を提供します。あらかじめ物理メモリ以上のメモリ空間を用意する仮想メモリが働いているのです。物理メモリが8GBしかなくても、それ以上の容量のファイルを開けるのはそのためです。

しかし、仮想メモリでは物理メモリに入り切らなかったデータを起動ディスク(ストレージ)に退避させるので、速度が低下するデメリットがあります。ソフトの起動や切り替えが遅くなるのはデータをストレージからメモリに戻したり、逆にストレージからメモリに退避する作業が行われているからです。

そこで、OS X Mavericksからメインメモリの空き容量を増やす「メモリ圧縮」機能が搭載されました。メモリ上で使っていないデータを圧縮することで、なるべくストレージへのアクセスを減らす工夫です。こうしたmacOSのメモリ管理は「アクティビティモニタ」で確認が可能です。

今どのソフトがどの程度メインメモリを使っているか、メモリ圧縮の動作状況も確認できます。

●Macが管理するメモリ

macOSが管理しているメモリは搭載されている物理メモリの容量よりも大きくなります。物理メモリの中ではメモリ圧縮が行われ容量を増やしていて、ストレージ内にも仮想的メモリとして利用できる場所を確保しているのです。これらをメインメモリの空き容量に応じて、リアルタイムで制御、管理しています。アクティビティモニタを使うとmacOSがメモリを管理している様子が見られます。

[Study 5]広大なメモリ空間を作る仮想メモリ

仮想メモリは「メインメモリが足りなくなったときにHDDやSSDなどのストレージをメインメモリとして使う」と解説されることが多いのですが、厳密には正しくありません。まず、メモリ内にはデータを保存している場所を表すアドレスがあり、各ソフトから見ると、そのアドレスを指定してデータを読み書きしています。ソフトを開発する場合、本来メインメモリのアドレスを指定してどこを使うかきちんと意識して作らなければならないのですが、ほかのソフトやOSがメインメモリの同じ場所を使おうとしたり、そもそもユーザの環境によってメインメモリの容量は異なるので「どこを使う」といった指定は困難です。

こうした問題を解決するために考案され、使われているのが仮想メモリなのです。これにより、ソフト開発者がメインメモリのアドレスを指定する必要がなく、必要な容量のみをOSに要求するだけで済むのです。OS側は要求された容量を確保するわけですが、そのときメインメモリの空き容量が連続せず、バラバラに空いていたとしても連続したアドレスであるかのように利用可能な仮想的なアドレスを組み立てて、そのソフト向けに確保してくれるのです。したがってメインメモリが不足していなくても、仮想メモリは常に使われているわけです。

仮想メモリで速度が低下するのは、物理メモリの容量を超えたときに現在使われていないデータをストレージに退避する(スワッピング)が発生したときです。macOSでは、あらかじめスワッピングするためのスワップ領域が起動ディスク内に用意されています。

●仮想メモリの仕組み

仮想メモリは、ソフトウェアがメインメモリを使う際、本来指定しなくてはならない「アドレス」を指定しなくてもよくする技術で、その副産物として、ストレージ内にメモリ領域(スワップ領域)を確保できるようになりました。アクティビティモニタで確認すると、物理メモリに余裕がある場合でもその領域は用意されています。

[Study 6]メモリ不足を解決するメモリ圧縮

OS X Mavericksから搭載された機能「メモリ圧縮」は、メインメモリを効率よく使えるようにした機能です。メモリ不足をスワップだけで補おうとするとパフォーマンスが悪くなってしまうため、できるだけメインメモリの中で処理を行うために搭載されました。

メインメモリは、システムや起動している複数のソフトが同時に使用しているため、使っていないソフトを終了しなければ空き容量が増えません。しかし、ソフトを起動したり終了したりすることは面倒でしょう。そこでメインメモリの空き容量が不足してきたときに、あまり使われていないデータをメインメモリ内で圧縮するのがメモリ圧縮です。メモリ内での圧縮や展開なのでスワッピングよりも高速でありパフォーマンス低下を防げます。現在のmacOSでは、メモリ圧縮と仮想メモリのスワップをうまく組み合わせて必要なメモリを確保しています。

このメモリ圧縮と聞いて、往年のMacユーザなら懐かしさを覚えるかもしれません。なぜなら、メモリ圧縮は1990年代に大ヒットした「RAM Doubler」と基本的な考え方が同じだからです。RAM Doublerは、インストールするだけでメモリが2倍になるというソフトで、当時は8MBのメモリが約6万円した時代なので、とてもよく売れました。もっとも、当時のOSの仮想メモリとの折り合いが悪く、Macが不安定になるデメリットがあり、メモリ価格の下落とともに廃れていきました。

なお、メモリ圧縮の搭載されたmacOSではメモリの空き容量を増やすためにサードパーティ製のメモリ解放ツールは使わないほうが賢明です。アクティビティモニタでは、メモリ圧縮が行われているソフトを確認できますが、メモリの空き容量が十分にある状態でも、ほとんどのソフトでメモリ圧縮が行われ、空き容量の確保がなされています。この状態でメモリ解放ツールを使用してしまうと、圧縮されていたデータを改めて取得し、再度圧縮するため一時的にパフォーマンスが低下したり、macOSが不安定になってしまうためです。

●メモリ圧縮が動作している様子

メモリ圧縮はメインメモリの空き容量を確保するために自動で行われます。アクティビティモニタで確認すると、性質上メモリ圧縮が行えない「kernel_task」以外のすべてのプロセスでメモリ圧縮が行われていることがわかります。これは物理メモリの空き容量に余裕がある場合でも同様です。ここでは使用済みメモリ6.72GBのうち、2.82GBが圧縮されています。

[Conclusion]メモリ不足で速度が低下する理由とは?

「メモリが不足するとMacが遅くなる」と聞きますが、どのような仕組みで遅くなってしまうのでしょうか? ここまでの解説を踏まえて、そのメカニズムを明らかにしましょう。

まず、メモリ圧縮は仮想メモリによる速度低下を抑える技術ではありますが、当然ながら非圧縮部分に比べると、展開が必要なために若干パフォーマンスが低下します。特に空き容量に余裕がない場合、メモリ圧縮/展開を頻繁に繰り返すことでCPUの負荷も多くなり、無視できないパフォーマンス低下につながります。

そして、メモリ圧縮では賄えなくなると、macOSはストレージへのスワッピングで補います。メモリの速度は3万4000MB/秒ですが、SSDは最新のMacでも2100MB/秒(書き込み)、HDDは100MB/秒しかありません。このように桁違いに遅いSSDやHDDにアクセスするため急激にパフォーマンスが低下するわけです。

ところで、メインメモリだけでなく、SSDも空き容量が少なくなると、パフォーマンスがさらに低下します。フラッシュメモリに書き込みを行う場合、連続した空き容量が多ければ高速で書き込めますが、断片化しているといったん整理してから書き込むため余計な時間がかかるのです。仮に物理メモリとSSDの空き容量が不足しているとなれば、マイナスの相乗効果でMac全体のパフォーマンスは著しく低下してしまうでしょう。あまりにもMacが遅いときは起動ディスクの空き容量もチェックしてください。

●Macが管理するメモリ

メモリ圧縮とスワッピングよって段階的にMacのパフォーマンスが低下していきます。

●主な記憶装置の速度比較

HDD、SSD、メモリの速度を比較してみました。このようにメモリがたいへん高速なことがわかるでしょう。ただし、DRAMチップ単体ではそれほどではなく、複数のモジュールに同時アクセスすることでこの速度を得ています。 ※DDR3-2133のデュアルチャンネル時の転送速度。