Intel486

Intel486は、インテルのx86系マイクロプロセッサで、386の後継製品である。

当初の名称は「80486」で、後に廉価版の「486SX」をラインナップに追加した際に、従来の80486を「486DX」と改名し、同時にそれらの総称として「i486」の商標を使うようになった。"i" を付けたのは、米国では番号だけの名前は商標権を取れないためである。インテルが現在使用している名称はIntel486プロセッサ  である。

1. 概要
-----

486は386の上位ないし後継のx86マイクロプロセッサである。基本的な命令セットは386と同様にIA-32と後に呼ばれることになったもので、BSWAPなどいくつかの命令の追加がある。

実装としては、性能向上を重視した全くの新設計である。他に、新アーキテクチャの最初の実装のため386で発覚したいくつかの問題点の修正、NDPの標準での内蔵、x86系としては初のオンダイキャッシュ、などが主な特徴に挙げられる。なお、NDPを内蔵しない廉価版もある。

比較的複雑なx86およびIA-32命令セットを実装するため、8086以降386までは機能のほぼ全てをマイクロプログラム方式で実装していた。しかし、RISCブームなどもあり、インテルとしても性能向上は至上命題だったことから、ほとんどの命令をワイヤードロジックによる実行とし、5段パイプラインも動作周波数の向上を狙ったものである。周波数の向上と同時に、多くの命令のサイクル数も386と比べ大幅に削減され、基本的な命令は1サイクルとなった。またあまり本質的ではないが、当時の利用者にとって影響が大きかったものとしては仮想86モード中での入出力命令の高速化などもある。なお、乗算だけは42サイクルとなり386より1クロック遅くなった。ただし、複雑な動作を行う一部の命令についてはマイクロプログラムを併用している。浮動小数点モジュールは、統合によるオーバヘッドの削減による高速化のみで、パイプライン化はしていない。

2. 80486の判別
-----------

486系のプロセッサではロットによってCPUID命令を搭載しているものとそうでないものが混在しており、インテルはフラグレジスタを用いた判別法を示している。

CPUID命令の有無は32ビットフラグレジスタ  の第21ビットで確認できるようになっており、このビットが変更可能であれば、CPUID命令でプロセッサの種類を判別できる。ただしEFLAGSの上位ビットは80386以上のプロセッサにしか存在しないため、事前に80386以上のプロセッサであることを確認してからアクセスする必要がある。

CPUID命令が使用できない場合でも80486で追加されたEFLAGS第18ビットのAC  フラグで80386と80486は区別でき、このビットがセット可能であれば80486以上のプロセッサであると判断できる。また80386と同様に、286方式でリセットしたときのDXレジスタの内容からCPUIDにおけるEAX=1相当のプロセッサ・シグニチャの情報を得られる場合がある。

3. 80486の追加命令
-------------

80486では公式には6個の一般命令が追加されており、うち3つがCPUキャッシュ関連である。そのほか、前述のCPUIDのように非公開命令やロットによって存在する命令も存在する。またシステム関連ではテストレジスタにTR3,TR4,TR5が追加されているため、これらを読み書きするMOV命令にもそれらに対応した新たなコードが有効になっている。

3.1. 一般命令
---------

BSWAP  CMPXCHG  INVD  INVLPG  WBINVD  XADD 

4. システム関連レジスタ
-------------

当初80486で32ビットのフラグレジスタ  に追加されたフラグは上述のAC  だけだったが、上述のように後にCPUID命令の判別フラグも追加されている。

なおACビットはアラインメントチェックに使われるフラグである。80486では新たに例外17  のフォールトとしてアラインメントチェック割り込みが新設されている。例えばワードデータなのに奇数アドレスといった非整列なオペランドを検知するなどした場合にこの割り込みが発生する。この機能を有効にするには現在の特権レベル  が3である必要があり、さらにフラグレジスタのACフラグのほかに、CR0レジスタに追加されたAM  ビットを適切にセットしておく必要がある。

CR0・CR3レジスタのいくつかのビットには機能が追加された。

CD  - CR0の第30ビット。CPUキャッシュを無効化。
NW  - CR0の第29ビット。キャッシュのライトスルー機能などを無効化。
AM  - CR0の第18ビット。アラインメントチェックを無効化。
WP  - CR0の第16ビット。スーパーバイザモードでのユーザーレベルページの書き込みを制限する。
NE  - CR0の第5ビット。割り込みコントローラ8259A経由での数値演算エラーの通知を無効化し、本来の割り込み16で通知する。FPUが無効化されている486SXでもこのビットは変更可能だが、386コアをベースとした他社製486互換プロセッサはその限りではない。以下のPWTとPCDはページング有効時に、ページングされないバスサイクル中に外部ピンに出力される。

PWT  - CR3の第4ビット。プロセッサのPWTピンに出力され、外部キャッシュのライトスルー制御に使用される。
PCD  - CR3の第3ビット。プロセッサのPCDピンに出力され、外部キャッシュの制御に使用される。またテストレジスタにはCPUキャッシュのテストに使われるTR3・TR4・TR5が追加された。さらにTR7レジスタにもPL,LRU,PWT,PCDの各ビットが新たに設けられた。

デバッグレジスタにおいては80386ではDR7レジスタのLE・GEビットがセットされていると実行速度を落とす仕様があったが、80486ではこのビットが無視されるようになり、L0-L3がG0-G3のどれかがセットされていれば実行速度を落とすように変更された。

5. バリエーション
----------

Intel486 DX当初のラインナップ。当初は「80486」と呼ばれ、後に「486SX」が登場した時から「486DX」と呼ばれるようになった。486SX数値演算コプロセッサ機能無効の廉価版IntelDX2DXの2倍クロックダブリング。当初の名称は「486DX2」。DX4DXの3倍クロックダブリング。SX2SXの2倍クロックダブリング486SL486DXの省電力版

5.1. 内部が486の製品
--------------

オーバードライブプロセッサ486DXや486SXを486DX2相当に変更する DX2ODP486DXや486SXを486DX4相当に変更する DX4ODP486SXを486SX2相当に変更する SX2ODP数値演算コプロセッサ486SXと組み合わせ486DX相当を実現する 487SX486SX2と組み合わせ486DX2相当を実現する 487SX280386ピン互換の486DX相当プロセッサ。486コアはFPUを内蔵しているため、80387のソケットにはダミーを挿して使う。

6. 発売履歴
-------

1989年: 80486発売。
1991年: 486SX発売。内蔵されていた数値演算コプロセッサの機能を無効化し、普及製品として価格を抑えたもの。外部バスはアドレス/データ共に32ビットのままであり、486DXとピン配置もほぼ同じである。また、486SX搭載機に後から浮動小数点演算機能を追加する目的で487SXが登場したが、従来のx87的コプロセッサではなく、486DXの機能を全て含んでおり、内部的に同じものである。487SXを接続すると、従来の486SX CPU側は機能を停止する。
1992年: 486DX2発売。486DXにクロックダブラを内蔵し、内部クロックを2倍にし、システムクロック周波数はそのままにしたもの。周辺チップなどを高速なシステムクロックに対応させる必要なく、486DXで使用されていた周辺回路をそのまま利用してシステムを組むことが出来る。
1992年: 486SX2発売。486SXの内部クロックを2倍にしたもの。
1994年: IntelDX4発売。1次キャッシュメモリ容量を従来製品の2倍の16KBに増やし、486DXの内部クロックを3倍にした。低電力モードが導入された。密かに乗算命令も高速化された。3倍なのにDX3ではない理由は、2.5倍での設定も可能であり、単なる3ではないことを意図している。名称に「Intel」と、従来の「i」よりさらに長いプレフィックスを含めたのは、他社の類似製品名との差別化と、商標権を主張しにくい単なる数字と記号の羅列を避けたため。同時に486DX2や486SX2もIntelDX2やIntelSX2と改称している。

7. 互換他社製品
---------

7.1. 正規
-------

IBM 486SLCインテルとIBMの提携に基づく、IBMによる改良・製造版。IBM 386SLCをベースに内蔵キャッシュを16Kに増やし、486SLと同レベルの性能を実現したもの。名称より「486SLベース」との誤解が多いがコアは386SLベースである。名称の「C」はCacheの略とも言われる。インテル版に相当する「i486SLC」は存在しない。IBM 486SLC2IBM 486SLCの内部クロック倍増版。50/25など。IBM 486DX4インテルとIBMの提携に基づく、IntelDX4のIBM製造版。IBM 486DLC3インテルとIBMの提携に基づく、486SL  ベースの内部クロック3倍速版。1次キャッシュ16Kを内蔵し、386DXピン互換では最高速と言われた。通称IBM Blue Lightningのため「486BL」とも呼ばれた。486SX日本電気とインテルジャパンが共同設計した486SXベースのCPU。ノートPC向けに省電力化が図られている。このほかに、486DXベースの486DX  が存在する。いずれもデータバスが16ビットとなっており、386SX用マザーボードの製造技術が流用出来た。

7.2. 非正規
--------

7.2.1. AMD
----------

AMD Am486SXAMD Am486DXAMD Am486DX2アドバンスト・マイクロ・デバイセズ  が開発した、486互換プロセッサ。それぞれ486SX、486DX、486DX2相当。AMD Am486DX4アドバンスト・マイクロ・デバイセズ  が開発した、486互換プロセッサ。DX4相当の3倍速動作だが、一次キャッシュがIntelのDX4より少ない8KB止まりの製品もある。AMD Am5x86 アドバンスト・マイクロ・デバイセズ  が開発した、486互換プロセッサ。システムクロックの4倍で動作。

7.2.2. Cyrix
------------

Cyrix Cx486SCyrix Cx486DXCyrix Cx486DX2Cyrix Cx486DX4サイリックスが開発した、486互換プロセッサ。従来のCx486DLC/Cx486DRx2とは違い、i486ピン互換となった。それぞれ486SX、486DX、486DX2、486DX4相当。DX2相当品ではIntel版には無い80MHz版が存在した。Cyrix Cx5x86サイリックスが開発した、486互換プロセッサ。486とピン互換ではあるものの、内部は Cyrix 6x86 ・ AMD K5 ・ インテル Pentium のような第五世代のプロセッサと多くの共通点を持ち、486や他の486互換プロセッサとは基本的な設計から異なっている。

8. 脚注
-----

9. 参考文献
-------

成田佳應「80x86/x87 ハンドブック」ナツメ社。ISBN 9784816318344

10. 外部リンク
---------

[1]