tanke25616429のアウトプット

IT技術の基本を勉強したことをアウトプットします。Linux、Kubernetes、クラウド中心です。百番煎じくらいだけど誰かの役に立てばそれはそれでうれしい。

コンピュータにおける記憶領域

執筆の動機

コンピュータの勉強をしているとデータの置き場所である記憶領域について、「XXへの入出力はYYに比べ遅い」「XXはYYに比べ安価」といった文章が出てくる。初学者からすると、同じような話が複数出てくるので混同しやすい。しかもそれらはたいてい別の文脈で現れるので「あのときのあれの話と同じだっけ? 違うっけ?」のようなことが起きる*1*2。そこで代表的なものを一覧して並べることでどのような概念があるかを明確にする。

記憶領域一覧

コンピュータの仕組みと照らし合わせながら登場人物を理解する。

  • メモリからCPUのレジスタへプログラムやデータを読み出し、レジスタに対し演算を行い、演算結果をメモリに書き込む
  • メモリアクセスを毎回することによる速度低下を防ぐため、CPU上にあるキャッシュメモリ上でデータを読み書きする
  • プログラムは電源オン時やプログラム実行時などに補助記憶装置(HDD/SSD等)から読み込まれ、メモリ上にロードされる

メモリはメインメモリや主記憶装置とも呼ぶ。キャッシュはCPUの種類によって、L1からL3まで存在する(L2までしかないものもある)。電源をオフした際に情報が残る(=不揮発性)のは補助記憶装置だけである。 共通的な傾向として、高くて速い、安くて遅い、という風にまずは理解しておけばよい。したがってコンピュータ上では安い記憶装置ほど大容量で搭載されている。

これまでの話をまとめると以下の通り。

f:id:tanke25616429:20200622010223p:plain
コンピュータにおける記憶領域一覧

参考にしたもの

www.youtube.com

kuina.ch

8vivid.net

*1:こういった、似てるけど違うもの、違っているけど共通点があるもの、などをしっかり意識すると理解が進むと筆者は考えている。メモリもメインメモリと言ったり、主記憶装置と言ったり、呼称もいろいろある。「違う呼び名で呼ばれているものが同じものか、違うものか」を理解するのが大事とも言い換えられる。

*2:HDDよりSSDのほうが速いけど高い、という話まであるのでさらに混乱する。