IBM PC、PC/AT互換機からDOS/Vマシン、さらにはArmベースのWindows PC、M1 Mac、そしてラズパイまでがPCと呼ばれている昨今。PCとは一体何なのかという原点を確認するため、コンピュータ史に詳しい大原雄介さんがその源流からたどっていく。
MCA(Micro Channel Architecture)を使わない、という決断をしたAT互換機業界であるが、MCAが解決しようとした性能の問題そのものは当然互換機業界にも押しかかってくる訳で、これに対してMCAに対抗する、ただしオープン規格の新しいバスを開発しよう、という機運が盛り上がった。
元々の言い出しっぺはおそらくCompaqだったと思うのだが、この辺りの正確な記録は残っていない。ただ、当時の互換機メーカーやこれに関連するメーカー(主にチップセットベンダー)などは同じ思いを抱いていたであろうことは間違いなく、その意味では自然発生的に盛り上がった、というのが一番状況として近いのではないかと思う。
ただその中でもCompaqが比較的先行していただろうな、と思われるのは、同社が1987年に投入した「Deskpro 386」というマシンである。Deskpro 386には、Flex Architectureと呼ばれるCompaq独自のバスが採用されていた。なんでこうした独自バスが必要か? というのは、もともとのXTバス/ATバスの生い立ちが絡んでくる。
図1はIBM PCやIBM PC/XTの内部構造である。
CPUから出てくるAddress/Data/Controlの各信号を、そのまま拡張スロットに分配するという非常にシンプルな仕組みである。実は拡張スロットだけでなく、SRAMもそのまま接続できるのだが、DRAMの場合にはそのままではいかない(アドレスが多重化されているし、Refreshその他のDRAM特有の信号を作ってやる必要がある)ということで、間にMemory Controllerがはさまっている。
逆に言えば違いはそこだけであり、そのためIBM PCやIBM PC/XT向けにDRAM拡張ボード(ボードの上にDRAMとメモリコントローラーが載っている)が多数販売されていた。ちなみにこの拡張スロットがXTバスと呼ばれるものだが、アドレスは20bit(1MB分)、データ幅は8bitであった。
これがIBM PC/ATになり、構成は図2のようになった。
80286になり、物理アドレスが24bit(16MB)に増えたほか、データバスも16bit幅になった。この結果、拡張バスもXTバスに追加される形で8bit分のデータバスと4bit分のアドレスが拡張された。この拡張されたものをATバスと呼ぶわけだ。
さて、ここまではそれでもまあ良かった。問題はここからだ。
まず80386になると、アドレスバスが32bit、データバスの幅も32bitに拡張された。これは何とかなるというか、XTバス→ATバスと同じように、もう一回拡張すればいいことになる。
問題はバスの速度である。XTバスは4.77MHz、ATバスは当初6MHz、のちに8MHzになった。これらは要するにCPUの速度にそのまま連動してスピードが上がるという話である。ところがこの辺りからCPUの速度は急激に上がり始めた。80286は最終的に12MHz(AMDの互換品は最大20MHz)まで動作周波数が上がったし、80386は当初12MHzだったのが最終的には40MHzまで動作周波数が上がっている。
図1や図2の構造を踏襲した場合、CPUの動作周波数に合わせてバスの速度も自動的に引き上げられるが、8MHzそこそこならともかく16MHzとかになると、既にI/Oデバイスの側が追い付かない。だからといって、CPUの速度を落とすのは論外である。
この結果として、「CPUのバスとI/Oバスを分離しよう」という機運が高まった。というよりも分離せざるを得なかったというべきか。具体的には図3のように、CPUにつながるバスにはメモリとか一部の高速なデバイスのみとし、I/Oはその先にBus Bridgeをはさみ込んで、その先で従来のATバスを動かすという形をとることになった。
これによってバスの問題は解決したかと思いきや、むしろここから始まったというべきか。
コンピュータの場合、バスを新規に作る場合、Specification(仕様書)によって、そのバスの電気的特性や信号の振る舞い、異常時の対応、コネクター類がある場合はその電気機械的な要求事項、さらには配線の引き回しなどに関する細かな注意事項が延々と規定されることになる。
そのSpecificationを見ながら実装していくというのがごく当たり前だし、逆にこれがなかったら相互接続性とか互換性がエライことになりかねない。「一見動いているようで、ちょっと何かあると止まる」なんてパターンだ。
この当時のAT互換機業界の置かれていた立場がまさにこれで、「Specificationが存在しない」状態だった。IBM PCやIBM PC/ATが問題なかったのは、それぞれi8088なりi80286の信号そのものが出ていたから、不明な点はそれぞれのCPUのデータシートを参照すればよかった。ところが図3の構造だと、今度は信号を作るのはBus Bridgeである。このBus Bridgeは基本i80286の信号を模して作る訳だが、全部が全部CPUそのままではないから、動作の細かいふるまいは必ずしも一致していない。
この辺りはSpecificationがあれば、きちんと一致させるべき振る舞いが規定されるから、そこさえ守っていればいいのだが。そんな訳で、AT互換機を作るに当たっても、バスのSpecificationは必要という状況になっていた。
Copyright © ITmedia, Inc. All Rights Reserved.
Special
PR