概要
メモリ(RAM)は、CPUが仕事をするために、今使う情報を置いておく場所です。 CPUはここから命令とデータを読み書き(探しに行く・書く)します。
データはどこから探される?
CPUがデータを探しに行くとき、まずキャッシュ(近く)を見ます。 あればそこで終わり(速い)。なければメモリまで探しに行きます(ちょっと時間がかかる)。 下のデモで、その様子を体験できる。
キャッシュとメモリ
記憶装置の種類と役割
CPUに近い順に「探しに行く」先が並んでいます。
- レジスタ:計算の途中結果や、今実行している命令を置く。CPUの内部にある。
- キャッシュ:メモリの写しを置き、よく使うデータに素早く探しに行けるようにする。
- メモリ(RAM):今動かしているプログラムとそのデータを置く。電源を切ると消える。
- 補助記憶(SSD/HDD):プログラムやファイルを長く保存する。電源を切っても残る。
メモリの場所は番地(アドレス)で指定する
CPUがメモリの「どこ」に探しに行くかはアドレス(番地)で指定します。 1本の命令は、命令部(何をするか:足す・読む・書くなど)とアドレス部(どの番地を扱うか)の2つに分かれます。
1本の命令のイメージ
バイト単位で場所を指定する話や、アドレス空間・メモリマップは、基本情報では後半の単元で扱う。ここでは「番地で場所を指定する」イメージがわかれば十分である。
場所の指定のしかた(相対・基底)
「どの番地を探しに行くか」の指定のしかたがいくつかあります。 相対アドレス指定は「今いるところからどれだけ離れているか」、基底アドレス指定は「決めた基準の場所からどれだけ離れているか」で場所を表します。 細かい計算より、「基準が違う」と覚えておけば大丈夫です。
下のデモで、基準(PCまたはBR)とアドレス部を変えると、実際に探しに行く番地がどう変わるか確認できます。
実効アドレスの計算
実効アドレス = 1000 + 50 = 1050
近くにあった割合(ヒット率)
ヒット率は、探したデータが近く(キャッシュ)にあった割合です。 ヒット率が高いと、すぐ見つかることが多く、CPUが待たなくてすむので、全体が速く動きます。 「できるだけ近くに欲しいデータがあると楽」— それを数字で表したのがヒット率です。
下のデモで、キャッシュ・メモリの「探しに行くのにかかる時間」と「近くにあった割合」を変えると、だいたいどれくらい待つか(平均)がどう変わるか確認できます。
だいたいどれくらい待つか(平均)
結果
だいたいどれくらい待つか = 90%×10 + (1-90%)×100 = 19 ns
割り込み
割り込みは、CPUが通常のプログラム実行を一時止めて、別の処理(入出力の完了通知やエラーなど)に移る仕組みである。 基本情報では、外部割り込み(ハードウェア由来)と内部割り込み(プログラムやCPU由来)、マスク可能・マスク不可などの分類が出題される。
メモリインターリーブ
メモリインターリーブは、主記憶を複数のバンクに分け、CPUからのアクセス要求を並列に処理して、見かけのアクセスを速くする技術である。 連続したアドレスを別々のバンクに振り分けることで、連続アクセスでも待ち時間を減らせる。
メモリの種類(DRAM・SRAM・フラッシュ)
主記憶にはDRAM(Dynamic RAM)が使われることが多い。リフレッシュが必要だが大容量化しやすい。SRAM(Static RAM)は高速だがコストが高く、キャッシュメモリに使われる。フラッシュメモリは不揮発性で、SSDやUSBメモリに使われる。