このページの本文へ

ロードマップでわかる!当世プロセッサー事情第106回

バスの歴史を振り返る XT Bus~ISA Bus編

2011年06月20日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/

  • この記事をはてなブックマークに追加
  • 本文印刷

CPUを使わずにデータ転送する
DMAの導入

 XT Busを理解するためには、「DMA」についても説明する必要がある。DMAは「Direct Memory Access」の略だ。たとえばFDDの場合、読み書きはセクター単位になるので、1回あたり512byteが読み書きされる。

 XT BusなどのI/Oデバイスに対して読み書きする場合には、通常は「PIO」(Programmable I/O)という方法を使う。これを使うことにより、CPUはメモリーではなくI/O Bus(XT Bus)に対してアクセスできるようになるのだが、結果としてFDDからデータを読み出す場合、図5のような作業によって1byte分の読み出しが完了する。

図5 PIOによるFDDからのデータ読み出しの流れ
  • ① FDD I/Fから1byteデータを読み出す(図5赤矢印)
  • ② 読み出したデータをメモリーに書き出す(図5緑矢印)

 ①の段階では、読み出したデータはCPU内部のレジスターに保持されているだけなので、メモリーに書き出さないとすぐにあふれてしまう。つまり、1セクター分を読み出す場合、①と②を512回繰り返す必要がある。これは恐ろしく効率が悪い。

 そこで考え出されたのがDMAである。DMAを使う場合、転送を始める前にあらかじめメモリーの中に512byte分の読み込みエリアを確保しておき、これを「DMAC」(DMAコントローラー)に教えておく。するとDMACは、FDD I/FからCPUを介さず直接メモリーに対して書きこむように制御する(図6)。書き込むアドレスは順次変えてゆくので、同じアドレスに上書きする心配もない。

図6 DMAによるFDDからのデータ読み出しの流れ

 このDMAを制御するための信号線が、「DQR」(DMA Request)と「DACK」(DMA Acknowledge)で、XT Busの場合は「1」と「3」の2種類のDMAが準備用意されていた。

i80286に合わせて導入された
16bitバス「ISA Bus」

 8bit幅のわりには62ピンという比較的本数の多いコネクターを採用したXT Busであったが、当時はまだ相手が8088だったからこれで十分だった。バスの速度はCPUにあわせて4.77MHzだったが、XT互換機の中には、6~8MHzと少しCPUが高速で動く製品もあった。そのためこうした互換機に搭載されたXT Busは、当然ながら6MHzとか8MHzのバス速度になる。この頃はまだ、そうした速度がクリティカルな問題になることはなかった。

 状況が変わってくるのは、これに続いて「IBM PC/AT」が登場してからである。IBM PC/ATはCPUに「i80286」を搭載。利用できる実メモリーは16MBになり、バス幅は16bitに増えた(関連記事)。これに対応すべく、XT Busとの互換性を保ちながら16bitに拡張したのが、「ISA Bus」である(図7)。

図7 ISA Busの信号線配置の概要

 まず最初に拡張されたのがアドレスである。上位4bit(SA20~SA23)を追加するのではなく、上位7bit(LA17~LA23)をラッチ(バッファ)を介して提供している。ここはわかりにくいので、図8を見ていただきたい。

ISA Busでのアドレス下位と上位の振り分け

 アドレス下位17bitは無条件でSA0~17に、上位4bitは無条件でLA20~23に行く。残る17~19bitは、両方のアドレスバスに信号が渡る形になっている。データ側はこんな面倒な話はなく、素直に下位8bitは引き続きXT Bus側、上位8bitがISA Busの拡張側に接続されている。

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン