2025/11/11 @shiracamus様にご指摘いただき、一部修正しました。
アドレス指定してアクセスしてるじゃん
無作為じゃないぢゃん。
いくら僕が統計学エアプだからって、さすがにそのくらいの言葉の意味は分かるぞ。
とここまで書いたら GitHub Copilot が補完で勝手に教えてくれた。
RAM は「Random Access Memory」の略で、「ランダムアクセス可能なメモリ」を意味します。ここでの「ランダムアクセス」とは、データに対して任意のアドレスを指定して直接アクセスできることを指します。
ここでの「random」は、「無作為」という意味ではないらしい。
RAM の仕組み
RAM 上にデータを記憶させる際、メモリ空間のどこにデータを配置するかをアドレスとして指定します。
CPU はこのアドレスを使って、必要なデータに直接アクセスします。
例えば Python だと、それぞれのオブジェクトのメモリアドレスはこんな感じで確認できます。
a = 1 # メモリ上に1というオブジェクトを作り、変数aから参照する
b = a # 変数aのオブジェクトを変数bからも参照する(値を共有する)
print("a: ", id(a)) # 変数aが参照しているオブジェクトのアドレスを表示する
print("b: ", id(b)) # 変数bが参照しているオブジェクトのアドレスを表示する
b = 2 # メモリ上に2というオブジェクトを作り、変数bから参照する
print("a: ", id(a)) # 変数aが参照しているオブジェクトのアドレスを表示する
print("b: ", id(b)) # 変数bが参照しているオブジェクトのアドレスを表示する
a: 101374310002960 # 変数aが参照しているオブジェクト(整数値1)のアドレス
b: 101374310002960 # 変数bも同じオブジェクトを参照している
a: 101374310002960 # 変数aはオブジェクト1を参照したまま
b: 101374310002992 # 変数bは変数aとは違うオブジェクト(整数値2)を参照している
ランダムアクセスは、「任意のアドレスを指定してアクセスする」方式というわけですね。
逆にランダムじゃないアクセスって?
対になるのは「シーケンシャルアクセス」という方式で、データに先頭から順番にアクセスしていくというものです。
RAM が頭にあると「そんなものあるのか?」と一瞬思ったのですが、磁気テープや CD なんかがその例になります。
これらを使用する際、目的のデータに到達するためには、まず先頭から順番に読み進めていく必要があります。つまり、「早送り」しないといけないわけですね。
アクセスしたいデータが 1GB 先にあったらそれだけ読み込まないといけないわけで、当然ランダムアクセスに比べて時間がかかるので、主記憶には使われません。
まとめ
- RAM は「Random Access Memory」の略で、「任意のアドレスを指定して直接アクセスできるメモリ」を意味する
- 対になるのは「シーケンシャルアクセス」で、データの先頭から順番にアクセスしていく方式