8086は x86アーキテクチャの元祖

1978年6月リリース
8086
8086
8086 は、インテルが1978年(昭和53年)に発表した16ビットCPUである。21世紀まで続く x86アーキテクチャの最初の製品となった。
外部データバスを8ビットにした廉価版の 8088 は、1981年(昭和56年)8月、IBM PC に採用され、オフィスへのパソコン普及に貢献した。
国内では、後に国民機と呼ばれる PC-9801 に搭載され、16ビット・パソコンの普及を牽引した。

目次

8086開発の背景

8086のダイ
8086のダイ
1970年代後半、8ビットCPUを搭載したホビーコンピュータが百花繚乱の様相を呈していた。販売台数で見ると、モトローラの 6800 をモデルとしてモステクノロジーが開発した 6502 を搭載した Apple IIPET 2001(国内ではファミコンやPC Engineが採用)と、インテルの 8080 を改良した Z80 を搭載したパソコンがしのぎを削っていた。
だが、8080 を開発したインテルは蚊帳の外であった。
IBM PCのマザーボード
IBM PCのマザーボード
そのころ、IBMがパソコンを開発しようと動き出し、短期間で上市するために部品は既存製品を活用する方針を打ち出していた。インテルは他社に先駆けて16ビットCPUを開発しており、ホビーパソコンの8ビットCPUより高性能である点にIBMが惹かれた。(実際には廉価版の 8088 が搭載されることになる)

x86アーキテクチャ

8086のレジスタ
8086のレジスタ
8086 は、8ビットCPU 8080 のデータバスを16ビットに拡張し、乗除算など命令を強化したが、レジスタ構成は 8080 に似ている。
AX はアキュムレータで、他のレジスタより高速に計算ができるほか、唯一除算命令が実行できる。BX はアドレス指定に使われる汎用レジスタ、CX はループカウンタなどに用いられる汎用レジスタ、DX レジスタはデータ処理に利用される汎用レジスタ。AXBXCXDXの4本は、たとえばAXをAH+ALのように分けて8ビット汎用レジスタとして用いることも出来る。
BP はベースポインタとしてアドレス指定ができる。セグメントレジスタ SS をデフォルト参照する。
SP はスタックポインタで、セグメントレジスタSSを参照する。
SIDI はインデクスレジスタとしてアドレス指定に使用できる。
フラグレジスタは、プロセッサ命令によって各種のフラグがセット/リセットされる。
インストラクションポインタ IP はセグメントレジスタ CS とセットで、現在実行しているプログラムのアドレスを示す。
セグメントレジスタと物理アドレス
セグメントレジスタと物理アドレス
セグメントレジスタ と呼ぶ4本の16ビット幅レジスタ(CS, DS, SS, ES)の値を左に4ビット・シフトして加算した20ビットをアドレスとして指定することができ、物理メモリ空間は1Mバイトに拡張された。
上図では、セグメントレジスタとオフセットのレジスタ値をセットして、物理アドレス &H C1234を指していることを表す。
メモリはセグメント切替のため、同一アプリケーションで利用できるメモリ空間は64Kバイトに制限されていたが、当時のプログラムはそれで十分だった。

このように従来アーキテクチャを踏襲したことで、8086 の開発はスピーディかつ安価に行われ、CPU自体も安定していた。ソフトウェアは 8080 とバイナリレベルの互換はなかったものの、再アセンブルすることでほぼ移植ができた。

OSとしては、1981年(昭和56年)、デジタルリサーチから CP/M8086 対応版となる CP/M-86 が発売されたが、同年、IBM PC に搭載された PC-DOS(後の MS-DOS)が主流となった。

8086と iAPX 432

iAPX 432
iAPX 432
前述のように、従来アーキテクチャを踏襲し、8080 の延長として 80868088 の名が冠せられた16ビットCPUは、32ビット・アーキテクチャへの中継ぎという位置づけだったようだ。当時、ライバルのモトローラも、32ビット・アーキテクチャを目指した MC68000 の開発を進めていた。
インテルも、1975年(昭和50年)に32ビットCPU「iAPX 432」の開発に着手していた。当初、80088080 に続くCPUとして 8800 と名付けられ、メインフレームの要求を目指した。
そこで、
  • ハードウェアレベルでのフォールトトレランス
  • マルチプロセッサー対応
  • マルチタスク
  • プロセス間通信機能
  • オブジェクト指向
  • 拡張可能な入出力
といった仕様を設計に盛り込んだ。なかでも「オブジェクト指向」は、複数のデータ型をハードウェア的に取り扱うことができるという画期的なもので、現在の64ビットCPUでも実現できていない。もちろん、1970~80年代の技術では到底無理な要求仕様であり、その複雑さがゆえに、プロセッサーコアである GDP(General Data Processor)は、命令でコードまでを行う iAPX 43201 と、実行モジュールの iAPX 43202 の2つに分かれた。さらに、メモリーコントローラーの iAPX 43205、入出力コントローラの iAPX 43203 と、シングルプロセッサー構成でも4つのプロセッサが必要となった。

8080 のダイサイズは 20mm2、8086 が 33mm2 だった時代に、iAPX 43201
  • iAPX 43201‥‥66.3mm2
  • iAPX 43202‥‥74.0mm2
  • iAPX 43203‥‥75.3mm2
と、桁外れに大きかった。1984年(昭和59年)に登場する 80286 ですら 47mm2 である。プロセスルールの微細化によってダイサイズが小さくなったこともあるが、当時のウェハーは直径50~100mmしかなかったから、そこに、これほど巨大なダイを作り込むということは、歩留まりが低くなることを意味した。
1981年(昭和56年)に iAPX 432 の出荷が始まるが、部品点数が多くて高価であり、動作周波数が低く性能も低かったため、まったく売れなかった。

一方、IBM PC に採用された 80868088 はインテルに想定外の利益をもたらした。それは、営業的に失敗した iAPX 432 の赤字を補って余りあるほどで、インテル単独では 80868088 の受注に追いつかなかった。
そこで、NECなどにセカンドソースして、 80868088 互換プロセッサの製造を認めることになる。

8086 と V30

V30のダイ
V30のダイ
1983年(昭和58年)に、日本電気(NEC)は V30(μPD70116)を商品化し、1985年(昭和60年)に自社製パーソナルコンピュータ PC-9801U に搭載した。
V308086 互換とされるが、厳密に言うとそうではない。NECが 8086 互換CPUとして開発したのは μPD8086 で、V30 は μPD8086 の上位互換CPUである。V30 をインテルとの比較で言い表すと、8086 の周辺IC(クロックジェネレータ、割り込みコントローラ、タイマ、DMAC、チップセレクタ)をワンチップ化した 80186 の上位互換CPUにあたる。V3080186 にない命令も搭載していたが、実際に使われることはほとんどなかった。
NMOSとCMOS
NMOSとCMOS
8086NMOS (エヌモス)  技術で製造された CPUだが、V30 は最初から CMOS (シーモス)  技術で製造された。
NMOSCMOS はトランジスタの製造技術を指す。
NMOS は、Nチャネル MOSFET のみで構成され、Nチャネル FET でスイッチングを行う。論理「1」(High)を出力するときにトランジスタがオンになって電流が流れ、論理「0」(Low)を出すときでも電源からグラウンドへ少し電流が流れ続けるため、回路は単純で動作速度も速いが、消費電力が大きくなる。
CMOS は、Nチャネル MOSFET と Pチャネル MOSFET で構成され、NチャネルとPチャネルを対にしてスイッチングを行う。つまり、NチャネルとPチャネルの片方がオンならもう片方はオフという補完動作をするため、スイッチング時以外はほとんど電流が流れず、消費電力を小さくできる。その分、回路は複雑で、動作速度も NMOS に比べて遅くなる。
8086 のプロセスルールは3μmだったが、NEC は V30 で2μmにすることで、CMOS化しつつ、80186 の機能も取り込んだうえで、8086 とピンコンパチブルなパッケージに仕上げた。さらに、乗除算をはじめとする主要な演算命令を専用回路で実装するワイヤードロジック を採用し、CPU内部のバスを増強してデータ転送効率を上げることで、同じクロックで 8086 の最大1.5倍のスピードに上げることに成功した。搭載トランジスタ数は、 8086 の 29,000個に対し、2倍以上の 63,000個に達した。

V308080 のハードウェア・エミュレーションモードを搭載していた。こちらも、厳密には NEC の 8080 互換プロセッサ μPD8080AF のエミュレータである。

また、NECは 8088 互換の V20:blue] や、それに周辺チップを組み込んだ {v25 を開発・販売していた。その後、V30 の周辺LSIを取り込んだ V40V50 を発売した。
この時代、日米両国間では半導体の貿易摩擦が起き、インテルがNECに対してVシリーズはマイクロコードの著作権を侵害しているという裁判を起こすという噂が立ち、NECは先手を打って、1984年(昭和59年)にインテルの著作権を侵害していない旨の確認訴訟を米国カリフォルニア州連邦裁判所に提訴した。1989年(昭和64年)に要約判決が下り、8086 に著作権表示がなかったことから NECの訴えが認められた。しかし同時に、マイクロコードの著作権が認められ、32ビットのインテル 80486 の互換 CPU を製造していた米国内メーカーに大きなインパクトを与えた。
NEC はマイクロコードの著作権侵害を回避するため、ほぼすべてをワイヤードロジックで実装した V33 を用意する。さらに、インテルCPUとは全く異なる32ビットCPU V60 や、組み込み用途に特化した V800系 を発売する。

乗除算命令の高速化をめぐって

8086 は、16ビット整数の乗算命令は最大154クロックサイクル、除算命令は194クロックサイクルを要する。つまり、5MHzなら 1秒間に約3万2千回の整数乗算を行うことができる。
乗除算命令を持たない 8080Z80 に比べれば長足の進歩だが、それでも、8080 の延長線上にあるアーキテクチャだから、タイガー計算機のハンドルを回しているのと大差ない。

その後に登場する16ビットCPUは、乗除算の結果をより速く出す方へ進化していく。
1980年(昭和55年)にモトローラが発売した16ビットCPU 68000 は、8086 に遅れること2年、その2.5倍の約7万トランジスタを搭載していた。乗算命令は最大74クロックサイクルと、8086 の半分以下になった。
インテルも負けてはいない。1984年(昭和59年)に発売した 80286 では24クロックサイクルと、劇的に短縮した。前述のNEC V30 は53クロックサイクルだ。
32ビットCPUの 8038680486 になると、逆にクロックサイクルが大きくなってしまった。一方、モトローラの32ビットCPU 68030 は28クロックサイクルと、80286 並に短くなっている。

Excelのような事務処理ソフトを使う範囲では、乗除算速度が問題になることはないが、シューティングゲームには影響が出る。
当時のディスプレイはブラウン管であったから、画面の書き換え時間(リフレッシュレート)は30~60Hz(1秒間に30~60回)だった。この期間中に計算が終わっていなければ、敵の位置が動かないまま背景だけ動いているという結果になりかねない。

アセンブラとMS-DOS

個人的には、こうしたクロックサイクルまで勘案して機械語プログラムをアセンブルしたのは x86アーキテクチャ が最後だったように思う。その後は、年々歳々CPUのクロック数が上昇したから、プログラミングで工夫するよりコストが安くなったからだ。

MS-DOSには、マイクロソフト製アセンブラ MASM(Microsoft Macro Assembler)が標準で付いてきた。マクロやプロシージャに対応しており、高級言語に近い構造化プログラミングが可能だった。

主要スペック

項目 仕様
メーカー Intel
発売開始 1978年6月
トランジスタ数 29,000
データバス 16ビット
アドレスバス 20bit
物理メモリ 1MB
CPUクロック 5~10MHz
プロセスルール 3μm
命令セット x86
ソケット 40ピンDIP
最大消費電力 1.87W

CPUの歴史

発表年 メーカー CPU名 ビット数 最大クロック
1970年Garrett
AiResearch
MP944 (軍用)20bit375KHz
1971年インテル40044bit750KHz
1974年インテル80808bit3.125MHz
1975年モステクノロジーMOS 65028bit3MHz
1976年ザイログZ808bit20MHz
1978年インテル808616bit10MHz
1979年モトローラMC68098bit2MHz
1979年ザイログZ800016bit10MHz
1980年モトローラMC6800016bit20MHz
1983年NECV3016bit16MHz
1984年インテル8028616bit12MHz
1985年インテル8038632bit40MHz
1985年インテルi96032bit100MHz
1985年サン・マイクロシステムズSPARC32bit150MHz
1986年MIPSR200032bit15MHz
1987年ザイログZ28016bit12MHz
1987年モトローラMC6803032bit50MHz
1989年インテル8048632bit100MHz
1989年インテルi86032bit50MHz
1991年MIPSR400064bit200MHz
1990年モトローラMC6804032bit40MHz
1993年インテルPentium32bit300MHz
1994年IBM, モトローラPowerPC 60332bit300MHz
1995年サイリックスCyrix Cx5x8632bit133MHz
1995年AMDAm5x8632bit160MHz
1995年サン・マイクロシステムズUltraSPARC64bit200MHz
1999年IBM, モトローラPowerPC G432bit1.67GHz
1999年AMDAthlon32bit2.33GHz
2000年インテルPentium 432bit3.8GHz
2001年インテルItanium64bit800MHz
2003年AMDOpteron64bit3.5GHz
2003年インテルPentium M32bit2.26GHz
2006年SCE,ソニー,IBM,東芝Cell64bit3.2GHz
2006年インテルCore Duo32bit2.33GHz
2006年インテルCore 2 Duo64bit3.33GHz
2008年インテルCore i9/i7/i5/i364bit5.8GHz
2017年AMDRyzen64bit5.7GHz
2020年AppleM1/M2/M3/M464bit3.49GHz
2023年インテルCore Ultra 9 / 7 / 564bit5.1GHz

参考書籍

表紙 忘れ去られたCPU黒歴史
著者 大原 雄介
出版社 角川アスキー総合研究所
サイズ 単行本
発売日 2012年07月10日頃
価格 1,540円(税込)
ISBN 9784048867719

参考サイト

(この項おわり)
header