余談だが初期の8086/8088のシステムではしばしば8089 IOPが登場する(図5)。名前の通りI/Oのハンドリングをつかさどるチップで、特にMulti-Processor Systemにおける非同期I/Oに要するCPUのOverheadを軽減するのが目的であった(図6)。もっとも、8089は勝手に作業をしてくれる訳ではなく、あくまでもIO Processorという事でプログラミングをする必要があり(このためにASM-89がIntelから提供された)、だったら8086/8088でやっても大差ないということや、IBM-PCが8089を採用しなかった(もともとの回路が8085ベースのIBM System/23 Datamasterのものを流用しており、当時は8089が存在しなかった)ことなどから、採用例は非常に限られたものになってしまった。
話を80186に戻す。そんな訳で80186/80188は「基本的に」、8086/8088のコアに周辺回路を統合したものである。80186のブロック図(図7)と8086のブロック図(図8)を比較すると
というあたりが主な相違点となる。
当然機能が増えている分ピン数も68pinに増えており、40pin DIPだった8086に対しCLCC/CPGA/PLCCの形で提供となった(図9)。
そんな訳で当然8086/8088に対するPlug-in Compatibilityは無いが、そもそも周辺チップを統合している段階で互換性があっても仕方ないのは明白で、これは問題にならない。またClock GeneratorはともかくPICやTimer、DMA Controllerの仕様は微妙に8259Aや8237、8253と異なっており、なのでIBM-PC用のOS(MS-DOSやCP/M-86)が無修正で動作する訳ではない。ただ80186/80188用のMS-DOSやCP/M-86などを作成するのは別に難しくなかったし、実際流通している。iRMXも80186用がIntelから提供された。アプリケーションの方は?というと、システムに関係する部分はそんな訳で当然修正が入るが、プログラムそのものは基本8086/8088とBinary Compatibleである。「基本」と書くのは若干相違点があるからで
といった命令が追加されている。逆に既存の8086/8088命令は、おおむねそのまま動作する(*1)と考えて良い。
(*1)厳密には、例えばOpCodeが63H/64H/65H/66H/67H/F1H/FEH XX111XXXB/FFH XX111XXXBの場合には、8086/8088はそれを無視するが、80186では未定義命令としてType 6の割り込みを発生するとか、そういう細かな違いはいくつかある。
Copyright © ITmedia, Inc. All Rights Reserved.