seegongsik
構造

メモリアドレス わかりやすく

前のレッスンで、記憶のマスをたくさん集めるとメモリになると話しました。では、そのたくさんのマスの中から、目当てのたった一つのマスにどうやって一気にたどり着くのでしょうか。

01

マスが多すぎると見つけられない

記憶のマスは数十億個にもなります。
では、これほど多くのマスの中から、「さっき保存したあの値」がどのマスにあるのかを、どうやってもう一度見つけるのでしょうか。
マスには名前もなく、見た目もまったく同じなのに。

どのマスも同じ見た目なので、一つだけを選び出す方法がありません。

何万冊もの本が番号もなしにでたらめに並んだ図書館を思い浮かべてください。
目当ての本を見つけるのは、ほとんど不可能です。
メモリも同じ問題を抱えているので、解決策が必要です。

02

すべてのマスに番号をつける

解決策は、プールのロッカーと同じです。
同じ形のロッカーには、0番、1番、2番と番号がついています。
メモリも、すべてのマスに順番に番号をつけておくのです。

0番
72
1番
101
2番
108
3番
108
4番
111

上はマスの番号(アドレス)、下はそのマスに入っている値。

この番号をアドレスと呼びます。
家ごとに住所があるから郵便物が正しく届くように、マスごとにアドレスがあれば、目当てのマスに正確にたどり着けます。

03

アドレスを呼べば、そのマスへ

アドレスがあれば、探すのは一瞬です。
「3番のマスの値を持ってきて」と言えば、メモリはまっすぐ3番のマスへ行って中の値を取り出します。
マスが数十億個あっても、番号さえわかれば一度で着きます。
下でアドレスを入れて「読み出し」を押すと、そのマスの値が表示されます。

0番
72
1番
101
2番
108
3番
108
4番
111
5番
0
6番
0
7番
0
アドレスを入れて「読み出し」を押してください

アドレスを入れると、そのマスへ行きます。

番号一つで目当てのマスにすぐ行けること、これがメモリの速さの秘密です。
最初から一つずつ数えずに、アドレスでまっすぐ指し示すからです。

04

目当てのマスに値を入れる

取り出すだけではありません。
「5番のマスにこの値を入れて」と言えば、そのマスに値が保存されます。
読み出しはアドレスで取り出すこと、書き込みはアドレスで入れることです。
この二つが、メモリのする仕事のすべてです。

0番
72
1番
101
2番
108
3番
108
4番
111
5番
0
6番
0
7番
0
アドレスと値を入れて「書き込み」を押してください

アドレスを決めて値を入れます。

アドレスで読んで、アドレスで書く。単純です。
けれども、この単純な二つの動きが、あらゆるプログラムの土台なのです。
変数も写真も、どんなものでも、結局はこうしてアドレスで出入りしています。

05

CPUはアドレスで頼む

ここで全体像を見てみましょう。
計算をするCPUは、値が必要になるとメモリにアドレスで頼みます。
「3番の値をちょうだい、この結果は7番に入れて」という具合です。
CPUとメモリは、こうしてアドレスをやりとりしながら仕事を進めていきます。

CPU計算
3番ちょうだい→←はい、値
メモリ (番号つきのマス)

アドレスでやりとりします。

これで、コンピュータという体の土台をひと回りしました。
0と1から始まって、計算し、記憶し、アドレスでたどり着くところまで来ました。
次のレッスンからは、これらの部品がどうやって本物の命令に従うのかを見ていきます。

一言でいうと同じ見た目の数えきれないマスに、ロッカーのように番号をつけたもの、それがアドレスです。アドレスで読み、アドレスで書くという単純な二つの動きが、あらゆるプログラムの土台です。
← 構造
このページがお役に立ったなら支援する