Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

8086とは? わかりやすく解説

はちまるはちろく【8086】

読み方:はちまるはちろく

米国インテル社開発した同社初の16ビットマイクロプロセッサーの製品名


8086

マイクロプロセッサのほかの用語一覧
Intel:  Sandy Bridge  シングルチップ・クラウド・コンピュータ  440GX  8086  Tick-Tockモデル  Viiv  x86

Intel 8086

(8086 から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/01/01 09:29 UTC 版)

8086
生産時期 1978年から1998まで
生産者 Intel, AMD, NEC, 富士通, Harris (インターシル), OKI, シーメンス, テキサス・インスツルメンツ, 三菱, パナソニック (松下)
CPU周波数 5 MHz から 10 MHz
命令セット x86 (16ビット)
パッケージ 40ピン DIP
前世代プロセッサ Intel 8085
次世代プロセッサ Intel 80286
トランジスタ 29000
コプロセッサ Intel 8087, 8089英語版
テンプレートを表示

Intel 8086(インテル8086)はインテルが開発した16ビット マイクロプロセッサ(CPU)。x86(80x86)アーキテクチャの最初のマイクロプロセッサで、1978年に発表された。

日本電気PC-9801などパーソナルコンピュータに広く採用された。対応するオペレーティングシステムに、MS-DOS、PC-DOS、CP/M-86があった。

シリーズには、外部データバスを8ビットにした低価格版の8088があり、初代のIBM PCにも採用された。密結合な構成で、協調して働くように準備されていた数値演算コプロセッサ8087があった[1]。また、使われる機会は少なかったが、8089英語版というI/Oプロセッサも存在した。

当時ライバルとされた製品には、モトローラ68000系プロセッサがある[2]

アーキテクチャ

8086は8ビットアーキテクチャであった8080を16ビットに拡張し、乗除算などの命令を強化したCPUである。アドレスバスは20ビットに、データバスは16ビットに拡張された(姉妹品に外部データバスを8ビットに留めた8088もある)。8080とバイナリーレベルの互換性はないが、開発にあたってIntelは、8080からの速やかな移行を最重点事項に置き、8080のアセンブラソースコードに一切の手を加えることなく再アセンブルするだけで、8086用のバイナリを生成する事も出来た[3]

8086のレジスタセット

8080のアーキテクチャと大きく異なるのは、演算用のアドレスレジスタのほかに、セグメントレジスタという、アドレス変換のための16ビットのレジスタを持っていることである。実際にCPUがアクセスするアドレスは、16ビット幅のレジスタによって指定された64KBのアドレスに、さらに16ビット幅のセグメントレジスタの値を16倍(左に4ビットシフト)して加算したアドレスとするため、1MBのメモリ空間を利用できた。

8086のアーキテクチャでは、プログラム内で通常表現されるアドレスの値は16ビット幅で64KBのメモリ空間である。当時、64KBのメモリ空間は1つのプログラムにとっては十分に広大であり[4]、セグメント機構はマルチタスクのために用意された[要出典]。(8086には保護がないので、アプリケーションがセグメントレジスタを操作できるが、本来はOSが操作するものである。) 内蔵する4本のセグメントレジスタの値を全て同一にすると、8ビットの8080と同等の環境となり、8080用ソースを8086へ移植するのが容易であるほか、実行バイナリのリロケータブル化が容易であるといったメリットもあった。

しかし、8086や、その互換品・後継品がロングセラーになって使われ続けた結果、より大規模なプログラムが作られる様になると、64KBのメモリ空間は狭くなってしまい、アプリケーションのプログラムが自力でセグメントレジスタを操作して64KB以上のメモリ空間にアクセスする手法が用いられるようになった。しかし、頻繁にセグメントレジスタを操作することはプログラムを煩雑にし、実行時のオーバーヘッドも増えるため、プログラマからは非常に嫌われた。

後に批判の的となってしまったセグメント方式だが、互換性を重視しつつ開発が短期間で完了でき、かつコストパフォーマンスに優れた選択肢であった。これは、当時モトローラと激しいシェア争いを演じていたintelにとって極めて重大な要素だった。

メモリ空間を1MBとしたのは、当時使われていた40DIPパッケージにアドレス・データバスを割り当てる際に、アドレスピンを効率良く増やして割り当てられる値であったとも言われる。

また、より大容量のアプリケーションを担い、高性能を発揮する次世代のプロセッサとしては、当時計画中であった32ビットCPU、iAPX432を充てる事が考えられていた。当初、8086は8ビットアーキテクチャから次世代のiAPX 432プロセッサへのつなぎとして考えられていたため、後に大規模な拡張を行う事は一切考えられていなかった[5]

演算に使えるレジスタが限定的だったり、メモリを直線的に使うのが面倒等の問題があったものの8080とのソースレベルでの互換性を重視し、既存の8080環境やCP/Mなどのアプリケーションの移植、プログラマの移行などにも積極的であったことから、IBM-PCへ採用され、現在のx86アーキテクチャの商業的な成功へとつながったと評価されている。

ハードウェア的には、供給クロックのデューティ比が1:2になっている。クロックジェネレータi8284に3倍のクロックを供給し、それを3分周することにより1:2のクロックを得る。[6]

プログラミングモデル

C言語から生成されたプログラムにおいて、コードとデータのそれぞれで、デフォルトのアクセスをセグメント内のオフセットのみとするか、セグメントも併用してアクセスするか、の違いにより「コード・データともセグメント内」「コードのみセグメント内」「データのみセグメント内」「コード・データともセグメント併用」といったパターンが存在し、ライブラリ等はそれぞれ異なるものを使うため煩雑であった。デフォルトでないアドレッシングには、ポインタに farnear という修飾を付ける。プログラミングモデルあるいはメモリモデル等ともいう。

詳細は以下の通り。

Tiny
コードセグメントとデータセグメントが共通で、両者合わせて64Kバイト以内。拡張子が"COM"の実行ファイルがこのモデルである。
Small
コードセグメント、データセグメントのどちらも64Kバイト以内。
Compact
コードセグメントは64Kバイト以内、データセグメントはfarポインタ。コードは小さいが、扱うデータが大きいときに用いられる。
Medium
コードセグメントはfarポインタ、データセグメントは64Kバイト以内。コードが大きくても、扱うデータが小さい場合に利用される。
Large
コードセグメント、データセグメントのどちらもfarポインタ。変数(配列)のサイズは64Kバイトに制限される。
Huge
基本的にLargeと同じだが、配列などのメモリオブジェクトのサイズが64Kバイトに制限されない。

効率などの理由から、コンパイルはSmallモデルとし、必要に応じて明示的にセグメント操作をプログラマが指示する(適宜farまたはhugeポインタを使用し、また動的なメモリ確保によって64KBの制限を超える)ような作りのプログラムも多い。

データバスについて

8086の外部データバスは16ビットであるが、アドレッシングは8ビット単位で行われ、データバスの下位8ビットが偶数アドレス、上位8ビットが奇数アドレスとなる。

8086でシステムを構築する上で、従来からある8ビットCPU用の周辺チップ(8251英語版82558237英語版8259など)が多用されたが、これらのデータバスは8ビットであるため、8086に接続するには、8086のデータバスの上位もしくは下位8ビットのどちらかに接続することになった。

そのため、このような構成では、8086 CPUから見ると、周辺チップの連続するレジスタが偶数アドレスもしくは奇数アドレスのみにとびとびに割り当てられる格好となる。

PC-9800シリーズでは実際に上記のような構成になっており、I/Oマップが偶数アドレスと奇数アドレスで分断されている。 一方、外部データバスが8ビットの8088を採用したIBM PCではそのようなことはなく、8ビットの周辺チップは連続したアドレスに存在する。XTバスの拡張カードにより増設した機器も同様である。

そのため、後にPC/ATで16ビットのISAを採用した際に、8ビットの周辺機器をサポートするためにバス・サイジングの必要性が生じた。

また、PC-9800シリーズでも、PCカードのモデムなど、IBM PCシリーズ用に開発された8ビットの周辺機器をサポートする際に、バス・サイジングの必要性が生じた。

記念品

のちの2018年には、8086発売40周年を記念して、当時最新のCoffee Lakeマイクロアーキテクチャに基づくCore i7-8086Kを、限定品として発売している。Core i7-8086Kの最大周波数はインテルのCPUとしては初めて5GHzに達し[7]、8086のちょうど1000倍となっている[8]

脚注

  1. ^ 8086マイクロコンピュータ 1983, p. 86.
  2. ^ MC68000は8086よりも2年遅く登場し2倍以上のトランジスタを使っており、本来は同じ土俵で比べられるものではないが、しばしばライバル視される。
  3. ^ 詳細は86-DOS#PC DOS の誕生及びCP/M-86も参照のこと。
  4. ^ 参考までに、初代IBM PCはRAM 64KB(16KBモデルもあったが売れず)、初代NEC PC-9801はRAM 128KBだった。
  5. ^ ティム ジャクソン著 翔泳社刊 「インサイド インテル」より。
  6. ^ 沖電気製MSM80C86A-10(10MHz版)は1:1になっているなど、セカンドソースのメーカやクロック周波数によっては異なる場合もある。なお、インテルのi8086-1(10MHz版)では1:2である。
  7. ^ インテル「8086」発売40周年、限定版CPU「Core i7-8086K」を発表 CNET Japan、2018年6月6日(2020年6月14日閲覧)。
  8. ^ Core i7-8086K Limited Editionは50年のIntel史上最強のゲーミングCPU!? AKIBA PC Hotline!、2018年6月8日(2020年6月14日閲覧)。

参考文献

  • 田辺皓正編著『マイクロコンピュータシリーズ15 8086マイクロコンピュータ』丸善株式会社、1983年4月30日。 

関連項目


8086

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/09 03:26 UTC 版)

ステータスレジスタ」の記事における「8086」の解説

8086のステータスレジスタサイズ16ビットであり、フラグレジスタ呼ばれたBit 15 - 12. 未使用 Bit 11. オーバーフローフラグ Bit 10. ディレクションフラグ:ストリング操作命令で、ポインタ増減方向を示す。 Bit 9. インタラプトフラグ:クリアすると割り込み禁止されるBit 8.トラップフラグ:シングルステップモードでの実行制御するBit 7. サインフラグ:演算結果正負を示す。 Bit 6. ゼロフラグ Bit 5. 未使用 Bit 4. 補助キャリーフラグ:BCD演算使用されるキャリーフラグ Bit 3. 未使用 Bit 2. パリティフラグ:演算結果の 1 となるビット数が偶数のときセットされ奇数のときクリアされる。 Bit 1. 未使用 Bit 0. キャリーフラグ

※この「8086」の解説は、「ステータスレジスタ」の解説の一部です。
「8086」を含む「ステータスレジスタ」の記事については、「ステータスレジスタ」の概要を参照ください。

ウィキペディア小見出し辞書の「8086」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「8086」の関連用語

8086のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



8086のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【8086】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのIntel 8086 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのステータスレジスタ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS