「組み込み」ならではの基礎知識 ――スタートアップ・ルーチンからハードウェアまで
8 メモリとポート
コンピュータは,論理的な処理を得意としています.メモリに納められている命令に従って,計算したり,判断したりします.ところが,人との対話を含む外の世界とのやりとりは,メモリがつながっているだけでは実現できません.組み込み機器では,周辺装置(I/O:input/output)を制御しなければなりません.つまり,モータを駆動したり,ブザーを鳴らしたり,スイッチの状態を読んだりします.ここでは,コンピュータがどのようにして論理の世界と,外の世界を操るかを見ていきましょう.
●CPUとデバイスはどうつながっているのか
コンピュータは,CPUとデバイス(メモリとI/O)から構成されています.CPUは,番地(アドレス)が付けられている場所の内容を指定して,読んだり書いたり(アクセス)することができます.ですから,CPUに接続されるデバイスにはすべて番地が付けられています.このCPUがアクセスできる場所を総称して「アドレス空間」といいます.アドレス空間は論理的な世界です.CPUには,メモリをつなぐための空間(メモリ空間)のほかにI/Oをつなぐための空間(I/O空間)を持つもの(図8-1)と,I/O空間を持たないもの(図8-2)の2通りがあります.I/O空間を持たないCPUでは,メモリ空間にI/Oを配置します(このつなぎかたを,メモリ・マップドI/O,またはメモリ・マップ方式のI/Oという).
今回は,図8-2(メモリ・マップドI/O)の方式のCPUを使って説明します.この方式のCPUは,図8-3のようにCPUとデバイスを接続します.アドレス・バスは場所を指定するために使う信号線,データ・バスは場所の内容をやりとりするために使う信号線です.
アドレス空間の大きさは,アドレス・バスが何本の信号線から構成されているかによって決まります.アドレス・バスにn本の線があれば,2nヵ所の番地にアクセスできます.例えば,16本あれば216で65,536番地,32本あれば232=4×1,024×1,024×1,024で,4G(ギガ)番地分に対してアクセスできます.