2.1 486の位置付け
- CISC(Complexed Instruction Set Computer)
- 80/86系
- 8080
- 8ビットCPUの源流
- Z80
- 8086
- 8ビットCPUの8080からの移行を容易にすることを主眼において開発された16ビットCPU
- 8088
- 8086と同アーキテクチャ、外部データバスを8ビットにしたもの
- 8087
- 数値演算専用のチップ
- 8086と協調して動作するように設計されたコプロセッサ
- 80186
- 8086に割り込みコントローラなどの各種コントローラ機能を加えて、さまざまな電子制御装置に内蔵しやすくしたもの
- 286
- 命令の実行速度の高速化
- プロテクトモードの導入
- MS-DOSとの互換性やセグメントの制約があったため、8086の高速版として利用されるのに留まった
- 386
- 86系で初の32ビットCPU
- セグメントのサイズは4Gバイトに
- 仮想8086モードとページング機能の追加
- 386DX
- 80386とも呼ばれる、32ビットCPU
- 後述する386SXの外部データバスが32ビットのもの
- 386SX
- 内部アーキテクチャは386DXと同じで、外部のデータバスを16ビットにしたもの
- 486
- Pentium
- 8080
- 68系
- 6800
- 6809
- 68000
- 68020
- 68030
- 68040
- 80/86系
- RISC(Reduced Instruction Set Computer)
- MIPS
- R2000
- R3000
- R4000
- SUN
- SPARC
- SuperSPARC
- IBM
- PowerPC
- MIPS
2.2 486のアーキテクチャ
- アーキテクチャ概要
- 386のアーキテクチャをそのまま引き継ぎ、性能を大幅に向上させたCPU
- いくつか種類があるが、486DXが基本形
- 486DXの特徴
- キャッシュメモリ
- メモリとCPUの演算処理部との中間に置く高速メモリ
- 486は8Kバイト
- メモリから読み込んだデータのコピーを保持しておく仕組み
- 高速なメモリチップは高価なので、低速なメモリを基本的には使うが、この場合CPUにウェイトがかかる現象が生じる
- そこで、キャッシュメモリに最近使われたデータを保持しておくことで、ウェイトがかかる頻度を減らすことができる
- キャッシュメモリと本来のメモリに書き込む方式は以下の2つがある
- ライトスルー方式
- キャッシュメモリと本来のメモリに同時に書き込む
- ライトバック方式
- 本来のメモリには、その後の別のタイミングで書き込む
- 高速な処理が可能な反面、一貫性を保つのが難しくなる
- ライトスルー方式
- CPU内蔵のキャッシュメモリのことを1次メモリ、外部のキャッシュメモリのことを2次メモリという
- FPU(浮動小数点プロセッサ)内蔵
- キャッシュメモリ
- 486SX
- 486DXは非常に集積度が高く、製造にかなりのコストがかかるため、比較的安価に製造できるよう486SXが考えられた
- 486DXのFPUの部分を無効にしたもの
- 浮動小数点演算を高速に実行することはできないが、487SXを追加することで浮動小数点演算機能を追加することができる
- 487SXはCPU部分も含んだ完全な486
- 486SXに487SXを装着すると、486SXは動作を停止し、487SXが代わりに動作する
- 486DX2/ODP
- クロックダブラー(CPU内部のクロック信号の倍速化)によって高速化を実現した486
- CPU外部は動作が遅い(外部のクロック速度になる)点に注意、但しCPU内部のキャッシュメモリがあるので、これにヒットしている間は倍速で実行できる
- DX4
- クロックトリプラー回路の内蔵
- キャッシュメモリの容量も16Kバイト(2倍)
- 消費電力が486DX2より小さい
2.3 486の操り方
- 基本機能とシステム管理機能
- 基本機能
- 一般命令
- メモリアクセス
- 演算・分岐
- 入出力
- 浮動小数点演算
- 特殊命令(リアルモードではモード移行のための一部の命令のみ実行可能)
- システム管理機能
- メモリ管理
- タスク管理
- 保護機能
- 一般命令
- 基本機能
2.4 486のレジスタ
- レジスタセット
- 一般レジスタ群
- 全てのソフトウェアが利用するレジスタ群
- セグメントレジスタ以外の各レジスタが32ビットに拡張
- セグメントレジスタもFG, GSが追加
- 浮動小数点レジスタ群
- 浮動小数点演算を行うプログラムが利用する
- 386まではFPUとして独立したチップでサポート
- システムレジスタ群
- オペレーティングシステムが利用するレジスタ群
- これらのレジスタを設定して、メモリ管理やタスク管理機能を働かせる
- デバッグレジスタ群
- デバッガが利用するレジスタ
- プログラムの実行を指定した条件で中断させ、プログラムの実行状況を確認するために使用
- 一般レジスタ群
2.5 486の32ビットアーキテクチャ
- 32ビットのサポート
16ビットCPU | 32ビットCPU | |
---|---|---|
オペランドサイズ(扱える数値の範囲) | 0~65535 -32768~32767 | 0~4294967295 -2147483648~2147483647 |
アドレスサイズ(扱えるアドレス空間オフセットアドレス) | 64Kバイトまで | 4Gバイトまで |
- 32ビットバス
- データバスが32ビット(本)に拡張
- 32ビットレジスタ
- 各レジスタの下位16ビットは8086のレジスタと全く同じ役割を持っており、8086のマシン語命令で扱うことができる