8086
目次
8086開発の背景
8086のダイ
IBM PCのマザーボード
そのころ、IBMがパソコンを開発しようと動き出し、短期間で上市するために部品は既存製品を活用する方針を打ち出していた。インテルは他社に先駆けて16ビットCPUを開発しており、ホビーパソコンの8ビットCPUより高性能である点にIBMが惹かれた。(実際には廉価版の 8088 が搭載されることになる)
x86アーキテクチャ
8086のレジスタ
8086 は、8ビットCPU 8080 のデータバスを16ビットに拡張し、乗除算など命令を強化したが、レジスタ構成は 8080 に似ている。
AX はアキュムレータで、他のレジスタより高速に計算ができるほか、唯一除算命令が実行できる。BX はアドレス指定に使われる汎用レジスタ、CX はループカウンタなどに用いられる汎用レジスタ、DX レジスタはデータ処理に利用される汎用レジスタ。AX、BX、CX、DXの4本は、たとえばAXをAH+ALのように分けて8ビット汎用レジスタとして用いることも出来る。
BP はベースポインタとしてアドレス指定ができる。セグメントレジスタ SS をデフォルト参照する。
SP はスタックポインタで、セグメントレジスタSSを参照する。
SI と DI はインデクスレジスタとしてアドレス指定に使用できる。
フラグレジスタは、プロセッサ命令によって各種のフラグがセット/リセットされる。
インストラクションポインタ IP はセグメントレジスタ CS とセットで、現在実行しているプログラムのアドレスを示す。
AX はアキュムレータで、他のレジスタより高速に計算ができるほか、唯一除算命令が実行できる。BX はアドレス指定に使われる汎用レジスタ、CX はループカウンタなどに用いられる汎用レジスタ、DX レジスタはデータ処理に利用される汎用レジスタ。AX、BX、CX、DXの4本は、たとえばAXをAH+ALのように分けて8ビット汎用レジスタとして用いることも出来る。
BP はベースポインタとしてアドレス指定ができる。セグメントレジスタ SS をデフォルト参照する。
SP はスタックポインタで、セグメントレジスタSSを参照する。
SI と DI はインデクスレジスタとしてアドレス指定に使用できる。
フラグレジスタは、プロセッサ命令によって各種のフラグがセット/リセットされる。
インストラクションポインタ IP はセグメントレジスタ CS とセットで、現在実行しているプログラムのアドレスを示す。
セグメントレジスタと物理アドレス
セグメントレジスタ と呼ぶ4本の16ビット幅レジスタ(CS, DS, SS, ES)の値を左に4ビット・シフトして加算した20ビットをアドレスとして指定することができ、物理メモリ空間は1Mバイトに拡張された。
上図では、セグメントレジスタとオフセットのレジスタ値をセットして、物理アドレス &H C1234を指していることを表す。
メモリはセグメント切替のため、同一アプリケーションで利用できるメモリ空間は64Kバイトに制限されていたが、当時のプログラムはそれで十分だった。

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

OSとしては、1981年(昭和56年)、デジタルリサーチから CP/M の 8086 対応版となる CP/M-86 が発売されたが、同年、IBM PC に搭載された PC-DOS(後の MS-DOS)が主流となった。
上図では、セグメントレジスタとオフセットのレジスタ値をセットして、物理アドレス &H C1234を指していることを表す。
メモリはセグメント切替のため、同一アプリケーションで利用できるメモリ空間は64Kバイトに制限されていたが、当時のプログラムはそれで十分だった。
このように従来アーキテクチャを踏襲したことで、8086 の開発はスピーディかつ安価に行われ、CPU自体も安定していた。ソフトウェアは 8080 とバイナリレベルの互換はなかったものの、再アセンブルすることでほぼ移植ができた。
OSとしては、1981年(昭和56年)、デジタルリサーチから CP/M の 8086 対応版となる CP/M-86 が発売されたが、同年、IBM PC に搭載された PC-DOS(後の MS-DOS)が主流となった。
8086と iAPX 432
iAPX 432
前述のように、従来アーキテクチャを踏襲し、8080 の延長として 8086/8088 の名が冠せられた16ビットCPUは、32ビット・アーキテクチャへの中継ぎという位置づけだったようだ。当時、ライバルのモトローラも、32ビット・アーキテクチャを目指した MC68000 の開発を進めていた。
インテルも、1975年(昭和50年)に32ビットCPU「iAPX 432」の開発に着手していた。当初、8008、8080 に続くCPUとして 8800 と名付けられ、メインフレームの要求を目指した。
インテルも、1975年(昭和50年)に32ビットCPU「iAPX 432」の開発に着手していた。当初、8008、8080 に続くCPUとして 8800 と名付けられ、メインフレームの要求を目指した。
そこで、

8080 のダイサイズは 20mm2、8086 が 33mm2 だった時代に、iAPX 43201 は
1981年(昭和56年)に iAPX 432 の出荷が始まるが、部品点数が多くて高価であり、動作周波数が低く性能も低かったため、まったく売れなかった。

一方、IBM PC に採用された 8086/8088 はインテルに想定外の利益をもたらした。それは、営業的に失敗した iAPX 432 の赤字を補って余りあるほどで、インテル単独では 8086/8088 の受注に追いつかなかった。
そこで、NECなどにセカンドソースして、 8086/8088 互換プロセッサの製造を認めることになる。
- ハードウェアレベルでのフォールトトレランス
- マルチプロセッサー対応
- マルチタスク
- プロセス間通信機能
- オブジェクト指向
- 拡張可能な入出力
8080 のダイサイズは 20mm2、8086 が 33mm2 だった時代に、iAPX 43201 は
- iAPX 43201‥‥66.3mm2
- iAPX 43202‥‥74.0mm2
- iAPX 43203‥‥75.3mm2
1981年(昭和56年)に iAPX 432 の出荷が始まるが、部品点数が多くて高価であり、動作周波数が低く性能も低かったため、まったく売れなかった。
一方、IBM PC に採用された 8086/8088 はインテルに想定外の利益をもたらした。それは、営業的に失敗した iAPX 432 の赤字を補って余りあるほどで、インテル単独では 8086/8088 の受注に追いつかなかった。
そこで、NECなどにセカンドソースして、 8086/8088 互換プロセッサの製造を認めることになる。
8086 と V30
V30のダイ
1983年(昭和58年)に、日本電気(NEC)は V30(μPD70116)を商品化し、1985年(昭和60年)に自社製パーソナルコンピュータ PC-9801U に搭載した。
V30 は 8086 互換とされるが、厳密に言うとそうではない。NECが 8086 互換CPUとして開発したのは μPD8086 で、V30 は μPD8086 の上位互換CPUである。V30 をインテルとの比較で言い表すと、8086 の周辺IC(クロックジェネレータ、割り込みコントローラ、タイマ、DMAC、チップセレクタ)をワンチップ化した 80186 の上位互換CPUにあたる。V30 は 80186 にない命令も搭載していたが、実際に使われることはほとんどなかった。
V30 は 8086 互換とされるが、厳密に言うとそうではない。NECが 8086 互換CPUとして開発したのは μPD8086 で、V30 は μPD8086 の上位互換CPUである。V30 をインテルとの比較で言い表すと、8086 の周辺IC(クロックジェネレータ、割り込みコントローラ、タイマ、DMAC、チップセレクタ)をワンチップ化した 80186 の上位互換CPUにあたる。V30 は 80186 にない命令も搭載していたが、実際に使われることはほとんどなかった。
NMOSとCMOS
8086 は NMOS 技術で製造された CPUだが、V30 は最初から CMOS 技術で製造された。
NMOS、CMOS はトランジスタの製造技術を指す。
NMOS は、Nチャネル MOSFET のみで構成され、Nチャネル FET でスイッチングを行う。論理「1」(High)を出力するときにトランジスタがオンになって電流が流れ、論理「0」(Low)を出すときでも電源からグラウンドへ少し電流が流れ続けるため、回路は単純で動作速度も速いが、消費電力が大きくなる。
NMOS、CMOS はトランジスタの製造技術を指す。
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個に達した。

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

また、NECは 8088 互換の V20:blue] や、それに周辺チップを組み込んだ {v25 を開発・販売していた。その後、V30 の周辺LSIを取り込んだ V40、V50 を発売した。
この時代、日米両国間では半導体の貿易摩擦が起き、インテルがNECに対してVシリーズはマイクロコードの著作権を侵害しているという裁判を起こすという噂が立ち、NECは先手を打って、1984年(昭和59年)にインテルの著作権を侵害していない旨の確認訴訟を米国カリフォルニア州連邦裁判所に提訴した。1989年(昭和64年)に要約判決が下り、8086 に著作権表示がなかったことから NECの訴えが認められた。しかし同時に、マイクロコードの著作権が認められ、32ビットのインテル 80486 の互換 CPU を製造していた米国内メーカーに大きなインパクトを与えた。
NEC はマイクロコードの著作権侵害を回避するため、ほぼすべてをワイヤードロジックで実装した V33 を用意する。さらに、インテルCPUとは全く異なる32ビットCPU V60 や、組み込み用途に特化した V800系 を発売する。
V30 は 8080 のハードウェア・エミュレーションモードを搭載していた。こちらも、厳密には NEC の 8080 互換プロセッサ μPD8080AF のエミュレータである。
また、NECは 8088 互換の V20:blue] や、それに周辺チップを組み込んだ {v25 を開発・販売していた。その後、V30 の周辺LSIを取り込んだ V40、V50 を発売した。
この時代、日米両国間では半導体の貿易摩擦が起き、インテルが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千回の整数乗算を行うことができる。
乗除算命令を持たない 8080 や Z80 に比べれば長足の進歩だが、それでも、8080 の延長線上にあるアーキテクチャだから、タイガー計算機のハンドルを回しているのと大差ない。

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

Excelのような事務処理ソフトを使う範囲では、乗除算速度が問題になることはないが、シューティングゲームには影響が出る。
当時のディスプレイはブラウン管であったから、画面の書き換え時間(リフレッシュレート)は30~60Hz(1秒間に30~60回)だった。この期間中に計算が終わっていなければ、敵の位置が動かないまま背景だけ動いているという結果になりかねない。
乗除算命令を持たない 8080 や Z80 に比べれば長足の進歩だが、それでも、8080 の延長線上にあるアーキテクチャだから、タイガー計算機のハンドルを回しているのと大差ない。
その後に登場する16ビットCPUは、乗除算の結果をより速く出す方へ進化していく。
1980年(昭和55年)にモトローラが発売した16ビットCPU 68000 は、8086 に遅れること2年、その2.5倍の約7万トランジスタを搭載していた。乗算命令は最大74クロックサイクルと、8086 の半分以下になった。
インテルも負けてはいない。1984年(昭和59年)に発売した 80286 では24クロックサイクルと、劇的に短縮した。前述のNEC V30 は53クロックサイクルだ。
32ビットCPUの 80386 や 80486 になると、逆にクロックサイクルが大きくなってしまった。一方、モトローラの32ビットCPU 68030 は28クロックサイクルと、80286 並に短くなっている。
Excelのような事務処理ソフトを使う範囲では、乗除算速度が問題になることはないが、シューティングゲームには影響が出る。
当時のディスプレイはブラウン管であったから、画面の書き換え時間(リフレッシュレート)は30~60Hz(1秒間に30~60回)だった。この期間中に計算が終わっていなければ、敵の位置が動かないまま背景だけ動いているという結果になりかねない。
アセンブラとMS-DOS
個人的には、こうしたクロックサイクルまで勘案して機械語プログラムをアセンブルしたのは x86アーキテクチャ が最後だったように思う。その後は、年々歳々CPUのクロック数が上昇したから、プログラミングで工夫するよりコストが安くなったからだ。

MS-DOSには、マイクロソフト製アセンブラ MASM(Microsoft Macro Assembler)が標準で付いてきた。マクロやプロシージャに対応しており、高級言語に近い構造化プログラミングが可能だった。
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 (軍用) | 20bit | 375KHz |
| 1971年 | インテル | 4004 | 4bit | 750KHz |
| 1974年 | インテル | 8080 | 8bit | 3.125MHz |
| 1975年 | モステクノロジー | MOS 6502 | 8bit | 3MHz |
| 1976年 | ザイログ | Z80 | 8bit | 20MHz |
| 1978年 | インテル | 8086 | 16bit | 10MHz |
| 1979年 | モトローラ | MC6809 | 8bit | 2MHz |
| 1979年 | ザイログ | Z8000 | 16bit | 10MHz |
| 1980年 | モトローラ | MC68000 | 16bit | 20MHz |
| 1983年 | NEC | V30 | 16bit | 16MHz |
| 1984年 | インテル | 80286 | 16bit | 12MHz |
| 1985年 | インテル | 80386 | 32bit | 40MHz |
| 1985年 | インテル | i960 | 32bit | 100MHz |
| 1985年 | サン・マイクロシステムズ | SPARC | 32bit | 150MHz |
| 1986年 | MIPS | R2000 | 32bit | 15MHz |
| 1987年 | ザイログ | Z280 | 16bit | 12MHz |
| 1987年 | モトローラ | MC68030 | 32bit | 50MHz |
| 1989年 | インテル | 80486 | 32bit | 100MHz |
| 1989年 | インテル | i860 | 32bit | 50MHz |
| 1991年 | MIPS | R4000 | 64bit | 200MHz |
| 1990年 | モトローラ | MC68040 | 32bit | 40MHz |
| 1993年 | インテル | Pentium | 32bit | 300MHz |
| 1994年 | IBM, モトローラ | PowerPC 603 | 32bit | 300MHz |
| 1995年 | サイリックス | Cyrix Cx5x86 | 32bit | 133MHz |
| 1995年 | AMD | Am5x86 | 32bit | 160MHz |
| 1995年 | サン・マイクロシステムズ | UltraSPARC | 64bit | 200MHz |
| 1999年 | IBM, モトローラ | PowerPC G4 | 32bit | 1.67GHz |
| 1999年 | AMD | Athlon | 32bit | 2.33GHz |
| 2000年 | インテル | Pentium 4 | 32bit | 3.8GHz |
| 2001年 | インテル | Itanium | 64bit | 800MHz |
| 2003年 | AMD | Opteron | 64bit | 3.5GHz |
| 2003年 | インテル | Pentium M | 32bit | 2.26GHz |
| 2006年 | SCE,ソニー,IBM,東芝 | Cell | 64bit | 3.2GHz |
| 2006年 | インテル | Core Duo | 32bit | 2.33GHz |
| 2006年 | インテル | Core 2 Duo | 64bit | 3.33GHz |
| 2008年 | インテル | Core i9/i7/i5/i3 | 64bit | 5.8GHz |
| 2017年 | AMD | Ryzen | 64bit | 5.7GHz |
| 2020年 | Apple | M1/M2/M3/M4 | 64bit | 3.49GHz |
| 2023年 | インテル | Core Ultra 9 / 7 / 5 | 64bit | 5.1GHz |
参考書籍
|
|
忘れ去られたCPU黒歴史 | ||
| 著者 | 大原 雄介 | ||
| 出版社 | 角川アスキー総合研究所 | ||
| サイズ | 単行本 | ||
| 発売日 | 2012年07月10日頃 | ||
| 価格 | 1,540円(税込) | ||
| ISBN | 9784048867719 | ||
参考サイト
- 8086誕生から40年、その歴史を振り返る:@IT
- Z80 で機械語を学ぶ:ぱふぅ家のホームページ
- Intel 80286 は MS-DOS上の最速CPU:ぱふぅ家のホームページ
- ダイナブック J-3100SS でモバイル生活:ぱふぅ家のホームページ
(この項おわり)



外部データバスを8ビットにした廉価版の 8088 は、1981年(昭和56年)8月、IBM PC に採用され、オフィスへのパソコン普及に貢献した。
国内では、後に国民機と呼ばれる PC-9801 に搭載され、16ビット・パソコンの普及を牽引した。