“PC”あるいは“Personal Computer”と呼ばれるもの、その変遷を辿る
PCのスケーラビリティを決定付けた超重要コンポーネント、地味にスゴイ「APIC」の登場(2/2 ページ)
本題に戻る。
IBM PC/ATではこれで良かったが、AT互換機がどんどん進化するにつれ、不都合も出てきた。最大のものはマルチプロセッサに対応できないことだ。
SMP、つまり対称型マルチプロセッサ構成の場合、OS Kernelはどれか1つのプロセッサの上でのみ稼働し、ドライバも当然そのプロセッサで動く。こうしたケースでは、IRQの信号はそのOS Kernelが動くプロセッサにだけ渡されないといけない。他のプロセッサが受け取っても、そのIRQをハンドリングするロジックはそのプロセッサ上に存在しないからだ。
これはIntel 8259の欠点といえば欠点なのだろうが、そもそもマルチプロセッサ構成を考慮しない、シングルプロセッサ向けIPCなのだから仕方がない。
PCベースのマルチプロセッサシステムは、Compaqが1989年に投入したSystemProが多分最初(Zenith Data SystemのZ-1000とどっちが先か微妙だが、多分Compaqが先と思われる)である。
Compaq SystemProはDual Intel386、Zenith Data System Z-1000は最大構成で80386×6という壮絶な構成であるが、どちらのシステムもPICに関しては独自実装されており、このためOSはCompaqなりZenith Data Systemなりが提供するものしか動作しなかった(SystemProはSCO UNIX、Z-1000はSCO Xenixがそれぞれ提供されたが、汎用品ではなくそれぞれのシステム向けのスペシャル版である)。
こうした独自インプリメントを何とかしないと、PC市場が広がらないことになる(当時Intelは、サーバマーケットまでx86を何とかして売りたいといろいろ画策していた)。実装としては、特定のCPUにだけ割り込みが掛かるという、「一見対称型に見えて、実は非対称なマルチプロセッサ」という方法もなくはない(そういう実装も存在する)が。
また、これはIntel 8259というよりもIBM PCとの互換性に絡む話だが、IBM PCではIRQ2が予約とされつつ、実際にはXT Busにつながっていた。ところがIBM PC/ATではこれがSlave PICにつながっているため、互換性維持のためにIRQ9が呼び出されたらIRQ2の割り込みルーティンを起動することにしたのだが、今度はIRQ9が使えなくなるという面倒な話になった。
Intel 8259はLevel Triggerできないのもネックであった。I/O Busで割り込み線のハンドリングには、Edge Trigger(信号のOn/Offのタイミングで割り込みを通知する)とLevel Trigger(信号の電圧レベルで割り込みを通知する)の2種類の方法もある。どちらが便利かといえばLevel Triggerの方で、複数のデバイスからの割り込みをまとめてハンドリングできる。
このためPCIではLevel Triggerを採用しているのだが、XTやISA、VL-BusなどはEdge Triggerだけ(EISAはLevel TriggerとEdge Triggerの両対応だが、現実問題としてLevel Triggerはほとんど使われなかった)という問題もあった。
時系列的にはAPICが出た後でPCIの策定作業が始まっているから、PCIの存在がAPICの登場を促した訳ではないのだが、おそらくIntel社内では8259の制約が将来のバスに影響を与えるであろうことは理解しており、それゆえ先取りする形で仕様を盛り込んだのだと思う。
前置きが長くなったが、そんなわけで1989年にIntel 486DXと併せて導入されたのがAPICである。主な特徴は、
- これまでシステムに1つだけだったPICを、各CPUごとに用意されるLocal APIC(LAPIC)と、I/Oデバイス側の管理をまとめて行うIO APICの2種類に分離し、これを専用レーンで接続する構造にした
- Intel 8259互換モードを実装し、後方互換性を確保
- マルチプロセッサ環境に対応、さらにプロセッサ間の割り込み(IPI:Inter-Processor Interrupt)にも対応
- SMP/AMP環境でのさまざまな割り込みニーズに対応
といった点が挙げられる。
最初に実装されたのはIntel 486DX向けに用意されたIntel 83489DXであるが、これはまだLAPICとIO APICが1つのパッケージに収められる格好になっており(写真5)、見た目にはそれまでAT互換機で搭載されていたIntel 8259×2を1つに収めたようになっている。
互換モードで動いている限りにおいては、従来のIntel 8259と同じ制約が掛かることになる。ただこの後、APICにOSがネイティブ対応するようになると、8259ベースでは不可能だったマルチプロセッサや1つのIRQで複数の割り込みハンドリングといった機能が利用できるようになった。
マルチプロセッサを当初から考慮したWindows NT 3.1やOS/2 2.1などでは、APICが使える場合にはAPICを使うようにインプリメントが行われるなど、大々的にアナウンスされたわけではないが確実にAPICが広まっていった。
このAPICをベースにMPS(Multi-Processor Specification)と呼ばれる、x86ベースでマルチプロセッサ環境を構築するための仕様(写真6)も1993年にIntelからリリースされている。
これはIntel 486やPentiumをベースにマルチプロセッサを構築する際の標準的な仕様をまとめたもので、これに基づく形でベンダーはサーバ向けのマルチプロセッサシステムの構築が可能になった。
APIC自身も進化している。LAPICはPentiumの第2世代(P54)からCPU側に内蔵されるようになり、一方IO APICはチップセット側に集約されるようになった。
さらにPentium 4の世代からx2 APICという新しい仕様が登場している。このx2 APICは、例えばProcessor IDが8bitから32bitに増やされたことで、255個までだった最大プロセッサ個数が約43億(2^32-1)個に増える、APICレジスタへのアクセス方法が改善されるなど、多くの改良がなされている。
PCIではMessage Signalled Interrupts(MSI)という機能が実装されたが、これもIO APICの存在を前提に行われているなど、APICの搭載はPCがシングルプロセッサの小規模システムから、大規模なマルチプロセッサシステムまで発展できるようになるための、重要な出来事であった。
Copyright © ITmedia, Inc. All Rights Reserved.
“PC”あるいは“Personal Computer”と呼ばれるもの、その変遷を辿る
RISCの歴史、Apple Siliconの歩みを語ってきた大原雄介さんのコンピュータ歴史連載、テーマはズバリ「PC」だ。
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
GMO、ランサム被害にあった顧客に新しいPC提供へ 犯行グループは1人の顧客情報公開か
-
2
NECのルータ「Aterm」、PHP脆弱性の影響なし 設定画面URLの「.php」は無関係
-
3
GMO、不正アクセス実行犯の手がかりに懸賞金 1億5000万円規模
-
4
「楽天トラベル」に不正アクセス 顧客情報最大約260万件など流出か 予約者約3.6万件のクレカ情報も
-
5
GMO、攻撃者の公開情報に「アクセスは絶対に控えて」 悪質な拡散者には法的措置を準備
-
6
Google、プライバシーポリシーに「Gmail」「Googleフォト」のデータを広告に使う例外を追加 回避方法は
-
7
So-net、会員情報約259万件が漏えい 一部メールサービスではパスワードも流出
-
8
メアドを検索→AIで“その人専用フィッシングメール”を生成する手法、クリック率が約2.7倍に 7000人以上で実験
-
9
「自分の個人情報が漏えいした……どうすれば?」 IPAが対処法公開
-
10
GMO不正アクセス、犯人側は「27日に顧客のPC攻撃」予告 GMOが端末回収、ホワイトハッカーが解析中
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR