「組み込み」ならではの基礎知識 ――スタートアップ・ルーチンからハードウェアまで
一方,一つの番地とやりとりできるデータ量は,データ・バスの信号線の本数を上限とした大きさになります.データ・バスにm本の線があれば,mビットの情報を一つの番地と1回でやりとりできます.
CPUがデバイスから情報を読み出すときはリード信号を有効にします.また,CPUがデバイスに情報を書き込むときはライト信号を有効にします.
CPUが接続されているデバイスに対してどのように読み書きするかのタイミング図を示します(図8-4).
メモリ・マップドI/O方式のCPUは,すべてのデバイスをメモリとして扱います(つまり,部品としてのメモリICもI/Oもすべてメモリ空間に割り当てる).メモリ空間にアクセスするためには,メモリ・アクセス命令を使います.メモリ・アクセス命令には,メモリの内容を読み出す「リード命令」,メモリに書き込む「ライト命令」という2種類の命令があり,それぞれの命令に応じて,リード信号,ライト信号が有効になります.
リード命令を実行すると,CPUはアドレス・バスで番地を指定して,リード信号を有効にします.これに対応して,アドレス・バスで指定されている番地につながれているデバイスがデータ・バスにその内容を置き,CPUはリード信号の立ち上がりタイミングでデータ・バスの内容を取り込みます.ライト命令を実行すると,CPUはアドレス・バスで番地を指定して,データ・バスに書き込みたい内容を置き,ライト信号を有効にします.アドレス・バスで指定されているデバイスは,ライト信号の立ち上がりでデータ・バスの内容を取り込みます.
メモリがつながっている番地と区別するために,I/Oがつながっている番地を「I/Oポート」,もしくは単に「ポート」といいます.コンピュータが操作する論理世界とデバイスがつながっている現実世界をつなぐ場所をポート(港)とは,よく言ったものです.