メインコンテンツまでスキップ

memory

Overview

主記憶装置とも呼ばれる。

主記憶装置いは、一定の区画ごとに番号が割り振られていてこの番号を指定することで任意の場所を読み書きすることができる。
この番号のことをアドレス(または番地)と呼ぶ。

メモリ = 半導体メモリ

知らないと恥ずかしい?メモリの「RAM」と「ROM」の違い

メモリ領域の分類

プログラムから使用されるメモリは静的領域スタック領域ヒープ領域という大きく分けて3種類の領域に分けられます。

RAM(ラム) Random Access Memory

メインメモリのこと。
電源が落とすと消える媒体

メインメモリと呼ばれるRAMは、CPUが処理をしているときに使われる「作業用の領域」と言えます。 例えば、PCやスマートフォンなどのデバイスで作業する領域の例では、RAMの容量が大きければ大きいほど、たくさんのソフトやアプリの起動が可能です。 そして、RAMのデータはデバイスの電源が切れると、そのたびに消去されます。

ヒント

RAMは読み書きが自由にできるという特徴を持つが、その中身は電源を切ると消去されて後に残らない。この性質を揮発性と呼ぶ。

RAMはさらに主記憶装置に使われるDRAMキャッシュメモリに使われるSRAMの2種類に分かれる。

DRAM(Dynamic RAM)

安価で容量が大きく、主記憶装置に用いられるメモリ。
ただ読み書きはSRAMに比べて低速。
記憶内容を保つには定期的に内容を再書き込みするリフレッシュ動作が欠かせない。

ヒント

使用する回路はコンデンサ。

SRAM(Static RAM)

DRAMに比べて非常に高速だが価格が高く、したがって小容量のキャッシュメモリとして用いられるメモリ。
記憶内容を保持するのにリフレッシュ動作は必要ない。

ヒント

フリップフロップ回路を使用している。

ROM(ロム) Read Only Memory

こちらはRead Onlyという名前の通り、書き込み不可・読み出しのみ可能なメモリを指す。
たとえばゲームソフトや音楽CD・家電製品などがこれにあたる。
※なぜかデータを保存するストレージ容量を「ROM ○GB」として表記する慣習がある。2017年現在も大手3キャリアのスペック表を見ると、保存領域の容量をROMとして表現している。まるでRAMの対義語かのように。
どうやらこの表現を使っているのは日本だけのようで、海外では「Internal Memory Storage」(内部メモリストレージ)としっかり表記しているほうが多い。

ヒント

ROMは基本的には読み出し専用のメモリ。
そのため動作に必要なプログラムやデータはあらかじめメモリ内に書き込まれた状態で工場から出荷される。
決められた動作を行うだけでこれで事が足りる。

PROM(Programmable ROM)

専用の機器を使うと記憶内容の消去と書き込みができるPROMという種類も存在する。

ヒント

デジタルカメラなどで利用されるメモリカード(SDカード)などがある。
フラッシュメモリと呼ばれている。

主記憶装置と高速化手法

記憶装置ごとのアクセス速度は以下の通り

  1. CPUのレジスタ
  2. メモリ(主記憶装置)
  3. ハードディスクなどの磁気ディスク装置

レジスタとメモリ、メモリとハードディスクの間には「越えられない壁」と言っていいくらいの速度差がある。
そのためキャッシュを使用する。
装置間の速度ギャップを緩和させるために用いる手法で、レジスタとメモリの間に設けるキャッシュメモリや、メモリとハードディスクの間に設けるディスクキャッシュなどがある。

キャッシュメモリ

CPUがアクセスする順番に応じて1次、2次と名前がつけられる。
キャッシュメモリは読み出しだけではなく、書き込みでも使われる。
キャッシュメモリに書き出された内容は主記憶装置にも反映しないといけない。
書き換える方式には以下の2種類がある。

  1. ライトスルー方式
  2. ライトバック方式

ディスクキャッシュ

専用に半導体メモリを搭載したり、主記憶装置の一部を間借りするなどして実装する。

PCがもっさりする理由

参考URL

  • Chrome Chromeはメモリがあればあるだけ食う、メモリ食いアプリで有名。 タブを開きまくるのは気をつける。

  • ターミナルで sudo purge コマンドを用いてメモリを解放する。 アプリを開いている状態で実行しても気休めレベル
    行うとしたらアプリすべてを起動した逆順に終了していき Finder のみの状態で行わないと本来の価値半減(macOSの場合)

PC もっさり改善

最低でも週1再起動した方がいい。
使用頻度が高いのであれば2、3日に1度は再起動をするべき。

メモリで意識すべきこと

参考URL

メモリデフラグを気にすることが重要。
メモリは一度デフラグすると再起動するまで解放されない。

たとえばアプリA B Cがあったとして下記条件。

アプリ起動順番 : A B C パソコン搭載メモリ容量 : 8GB メモリ使用容量 A : 1GB B : 3GB C : 2GB D : 残メモリ容量2GB (総容量8 - 使用量6)

ここでアプリBを終了すると、空き容量は計5GBになります。
ただし、一度に使用できる容量が5GBではありません。
2GBと3GBという個別の空き容量があるだけで、使えるのはそのどれか。 この分かれた状態を、デフラグと言います。

メモリを正しく開放するには、起動した逆順にアプリを終了していかないといけません。 今回の場合だとC B Aですね。
そうしないと上記2GBと3GBというような断片化が生じます。
メモリ空き容量はあるけど、メモリ不足って状態です。
こうやって断片化したメモリは、パソコン再起動しない限りは開放されません。

内蔵ストレージの空き容量も重要。
システムが入っているストレージの空き容量が重要で、外付けに空き容量あってもまったく関係ない、意味ありません。

一時作業領域、メモリ不足時(スワップ)に内蔵ストレージを代用します。
Macなら常に20GB以上、理想35GB以上の空き容量確保。
それに加え、行う作業、開くファイルの大きさに応じて、より空き容量を加算確保していく。
たとえば動画編集で扱う素材が計25GBで、書き出しが20GBとしたら、45GB以上を加算する必用があるって事です。

もし内蔵ストレージがSSDなら、空き容量はより重要になります。 全体の最低でも25%以上の空き容量を常に確保しないとSSD本来の速度が出ません。

デフラグについて

参考URL

デフラグとはコンピュータのファイルを書き込んだり、削除したりを繰り返していると、ファイルがあちこちに点在した状態となります。データは順序よく並べて書き込まれているのではなく状況によっては飛び飛びの領域に書き込まれます。 この断片化したデータを整理し、ファイルや空き領域を配置し直すことをデフラグと呼んでいます。

HDDの場合、デフラグは必要。
SSDの場合はHDDと構造が異なるため、断片化は速度低下の原因にならない。

その代わりに「最適化」を行うことで削除したデータをTrim機能によってSSD上から削除ができます。 そうすることで次にデータを書き込むことが高速になります。

Trim機能とは

Trim機能とはOSがSSDに削除したデータをSSDに不要なファイルであるという情報を伝達することで消去を行うことです。

この情報を伝達することでSSD側でゴミ箱で消去した不要ファイルであるとSSDが判断し、タイミングをみて消去が行われ、消去によって空いたブロックにデータの記録が行われるようになるというものです。

Macではデフラグは不要

それでは、Macでも同じHDDやSSDを使用しているのだからデフラグが必要なのではないかと思われるでしょう。

Macでは自動デフラグ機能がバックグラウンドで常時起動しているため、デフラグは自動的に行わます。

OS側でファイルに書き込むときはディスク領域を最適化して、サイズの大きいファイルが断片化されないように実行しているため、デフラグに関しては意識する必要がないということです。

Macで処理速度の改善が見込める方法

上記でMacではデフラグが必要ではないと書きましたが、Macを使用し続けると処理速度が遅くなる。
そのため再起動やディスクユーティリティの修復を使って改善する。

Macでのメモリ使用量を把握する。

Macのメモリ使用量を簡単に減らす7つの方法 (MacBook Pro、Air、iMacで適用可)
アクティビティモニターの見方

アクティビティモニター初期表示では仮装メモリ使用量のため実メモリ使用量のタブを増やしてみること。

Macのハードディスクの空き容量を開放する

参考URL

LRU【Least Recently Used】LRU方式 / LRU制御方式

参考URL

LRUとは、広さの限られた一時的な保管場所が満杯になったとき何を棄てるか決定する基準の一つで、最も過去に使用されたものから順に破棄する方式。IT分野以外でも書類の整理方法などに応用されている。