コンピュータの主記憶中にある命令やデータの格納場所を特定するために, その場所に付けられた値はどれか。
平成24年度 春期 ITパスポート試験 問78
この問題の解説と、これまでの解答の記録です。
問 78
- ア
正解 主記憶(メインメモリ)は記憶単位(一般には 1 バイト)ごとに区切られており、その一つ一つの区画に 0 番から順に重複しない通し番号が割り当てられている。CPU は読み書きしたい区画をこの番号で指定するので、番号が分かれば主記憶上のどこに命令やデータが入っているかを一意に特定できる。この「格納場所に付けられた値」がアドレス(番地)であり、アが正解。たとえば CPU が命令を取り出すときは、次に実行する命令のアドレスをアドレスバスに送って主記憶に伝え、該当区画の内容をデータバス経由で受け取る、という手順を踏む。住所(アドレス)を指定すれば建物(データ)が特定できる、という日常の比喩そのままの仕組みである。
不正解イ
インデックスは索引のことで、配列の何番目の要素かを表す添字や、データベースで目的のレコードを速く探すために別に作る索引を指す。いずれも「表や集合の中での順番・検索の手がかり」であって、主記憶の物理的な格納場所そのものに付けられた値ではない。配列の添字は最終的にアドレス計算(先頭アドレス + 添字 × 要素の大きさ)に変換されて初めて主記憶の位置になるので、アドレスとは役割の段階が違う。
不正解ウ
カウンタは数を数える仕組み(計数器)で、回数や個数を保持・加算するもの。名前が似たプログラムカウンタは「次に実行する命令のアドレスを保持するレジスタ」であって、アドレスを入れる器であり、格納場所に付けられた値そのものではない。器と、そこに入る値とを取り違えないこと。
不正解エ
デコーダは符号を解読して対応する 1 本の出力を選び出す回路で、CPU 内では命令を解読する命令デコーダ、主記憶では受け取ったアドレスから該当する行を選ぶ選択回路として働く。アドレスを解釈して使う側の回路であり、値ではないので「場所に付けられた値」を問う本問の答えにはならない。逆向きの変換をするのがエンコーダ。
- アドレス(番地)=主記憶を記憶単位ごとに区切ったときに各区画へ一意に割り当てられる通し番号。CPU はこの値で読み書きの対象位置を指定し、アドレスバスで主記憶に伝える。
- 紛らわしい用語の切り分け:インデックスは表・配列内の位置を示す添字や検索用の索引、カウンタは計数する仕組み(プログラムカウンタは次命令のアドレスを入れるレジスタ)、デコーダは符号を解読する回路。値なのか、器なのか、回路なのかで区別すると迷わない。