Intel486

**Intel486**（インテルよんはちろく）は、インテルのx86系マイクロプロセッサで、386の後継製品である。

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

## 概要

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

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

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

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

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

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

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

### 一般命令
 BSWAP (Byte swap)
 CMPXCHG (Compare and exchange)
 INVD (Invalidate cache)
 INVLPG (Invalidate TLB entry)
 WBINVD (Write back and invalidate cache)
 XADD (Exchange and add)

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

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

CR0・CR3レジスタのいくつかのビットには機能が追加された。
* CD (Cache disable) - CR0の第30ビット。CPUキャッシュを無効化。
* NW (Not write-through) - CR0の第29ビット。キャッシュのライトスルー機能などを無効化。
* AM (Alignment mask) - CR0の第18ビット。アラインメントチェックを無効化。
* WP (Write protect) - CR0の第16ビット。スーパーバイザモード（特権命令を含む全命令の実行を可能にする）でのユーザーレベルページの書き込みを制限する。
* NE (Numeric exception) - CR0の第5ビット。割り込みコントローラ8259A経由での数値演算エラーの通知を無効化し、本来の割り込み16で通知する。FPUが無効化されている486SXでもこのビットは変更可能だが、386コアをベースとした他社製486互換プロセッサはその限りではない。

以下のPWTとPCDはページング有効時に、ページングされないバスサイクル中に外部ピンに出力される。
* PWT (Page write-through) - CR3の第4ビット。プロセッサのPWTピンに出力され、外部キャッシュのライトスルー制御に使用される。
* PCD (Page cache disable) - CR3の第3ビット。プロセッサのPCDピンに出力され、外部キャッシュの制御に使用される。

またテストレジスタにはCPUキャッシュのテストに使われるTR3・TR4・TR5が追加された。さらにTR7レジスタにもPL,LRU,PWT,PCDの各ビットが新たに設けられた。

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

## バリエーション
;Intel486 DX
:当初のラインナップ。当初は「80486」と呼ばれ、後に「486SX」が登場した時から「486DX」と呼ばれるようになった。
;486SX
:数値演算コプロセッサ機能無効の廉価版
;IntelDX2
:DXの2倍クロックダブリング。当初の名称は「486DX2」。
;DX4
:DXの3倍クロックダブリング。
;SX2
:SXの2倍クロックダブリング
;486SL
:486DXの省電力版（名称が似ているが、486SXの省電力版ではない）

### 内部が486の製品

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

## 発売履歴

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

### 非正規
#### AMD

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

#### Cyrix

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

## 脚注

### 注釈

### 出典

## 参考文献
* 成田佳應「80x86/x87 ハンドブック」ナツメ社（1995年）。ISBN 9784816318344

## 外部リンク

*- インテルミュージアム - 486画像