通常は複数の記憶装置や入出力装置が存在するので、 それらを区別するために番号を付ける。 これがアドレス (Address, 番地) である。 このアドレスを送るためにアドレスバス (Address Bus) を使用する。
複数の素子 (IC, LSI等) を接続している場合には、 どの素子に対して読み出しや書き込みを行なうのかを指定する必要がある。 このために、チップセレクト (Chip Select) という端子を用意している素子が多い。 チップセレクトがアクティブの時にのみ、読み出しや書き込みが可能となる。 下図で、RAM1のチップセレクトのみがアクティブである場合には、 RAM2は読み出しや書き込みの制御信号を無視する。
アドレスを調べて、対応する素子に対してチップセレクト信号を送る回路を アドレスデコーダ (Address Decoder) と呼ぶ。
メモリのように一つの素子に複数個のデータを格納している場合には、 チップセレクトとアドレスの両方を接続する。 チップセレクトでまず素子を選択し、 その中にあるデータを選択するためにアドレスを指定する。メモリとI/Oデバイスを区別して扱うCPUと、 全く区別しないで扱うCPUがある。 全く区別しない場合 (Memory Mapped I/O) は、 CPUはI/Oデバイスをメモリと同じ方法で読み書きする。 単に特定のアドレスに対して読み書きすれば I/Oデバイスに対する読み書きになる。
メモリとI/Oデバイスを区別して扱うCPUでは、 I/Oデバイスへの読み書き専用の命令を用意している。 また、信号線でメモリとI/Oデバイスを区別できるようになっている。 この信号線にも何種類かある。 たとえば、メモリとI/Oデバイスを区別する線があり、 高レベルならメモリ、低レベルならI/Oデバイスとする。 あるいは、メモリ読み出し、メモリ書き込み、I/O読み出し、I/O書き込みという 信号線を用意する。
(作成: 2002年10月29日, 最終更新: 2002年10月30日)