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 80386を参照)。

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命令にもそれらに対応した新たなコードが有効になっている。

## システム関連レジスタ

当初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のどれかがセットされていれば実行速度を落とすように変更された。

## 発売履歴

- 1989年: 80486発売(後に486DXと呼ばれるようになった)。
- 1991年: 486SX発売。内蔵されていた数値演算コプロセッサの機能を無効化し、普及製品として価格を抑えたもの。外部バスはアドレス/データ共に32ビットのままであり、486DXとピン配置もほぼ同じである。また、486SX搭載機に後から浮動小数点演算機能を追加する目的で487SXが登場したが、従来のx87的コプロセッサではなく、486DXの機能を全て含んでおり、内部的に同じものである。487SXを接続すると、従来の486SX CPU側は機能を停止する(この機能は後の486ベースのODPに活用された)。
- 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と改称している。