AMD K6

AMD K6はAdvanced Micro Devices（以下、AMD）が開発したx86互換マイクロプロセッサである。

概要 
K6はx86命令を内部でRISC86OPに変換し、内部のRISC86パイプラインで命令を高速実行する、Socket 7互換CPUである。

インテル製CPUとのソケット互換CPUとして、同一ソケットで同一クロック動作のインテル純正CPUを凌駕する高性能を発揮するため、低価格パーソナルコンピュータ (PC) を中心に普及し、また既存PCのアップグレード用としても市場に受け入れられた。
製造時期によって使用半導体製造プロセスが異なり、これにより166MHz〜233MHzと、200〜300MHzの2モデルに分類される。

開発経緯 
AMDは、x86互換プロセッサメーカーであった、Atiq Raza率いるNexGen社を買収し、当時NexGenが開発中だったNx686というx86互換CPUを手に入れた。AMDがもともと開発していたK6は性能がこのNx686より劣るものであったため、Nx686を元に開発した新プロセッサをK6として、1997年に市場に投入した。

本来、Nx686は前作Nx586やIntelのPentium Proなどと同様に2次キャッシュバスがフロントサイドバスから独立した構成の、専用バス・専用ソケットに対応するCPUとして開発が進められていたが、AMDはそれをSocket7対応に変更し、2次キャッシュバス廃止に伴うペナルティ軽減を目的に1次キャッシュを増量（32+32=64KB）の上で、Nx686独自のマルチメディア命令をIntelからライセンスを受けMMX命令セットに変更して完成させた。

このCPUは時期により様々な開発コードネームが用いられたが、その一つに「Catapult」があった。これは、この新CPUを強大なゴリアテ（=インテル）を打ち倒したダビデ (=AMD) の武器（投石機）になぞらえての命名であり、AMDが相当な自信と意気込みをもってこのCPUの開発に臨んだことを窺わせていた。

K6は上述の通りインテルのPentium (Socket 7) とソケット互換であり、出荷開始の段階でインテルのMMX Pentiumシリーズよりも高クロック（233MHz）動作モデルが提供され、発売当初は、x86系で最速クロック動作のCPUとなった。このため、AMDはK6を「インテル製品よりも高速な初めての互換プロセッサ」だとして大々的に売り出した。K6はその発売開始一か月後にインテルが販売開始した当時最速のインテル製プロセッサPentium IIと競合する製品であったとAMDは宣伝していたが、クロックあたりの命令実行効率ではPentium IIにやや劣っていた。発表から約1年後の1998年5月には、SIMD拡張命令セットである3DNow!を追加したK6-2という後継プロセッサが登場している。

Pentium IIでは、Socket 7ではなく、Slot 1 (P6バス) が採用されており、Socket 7ユーザーがPentium IIにアップグレードするには、マザーボードごと（そして多くの場合メモリも）交換しなければならなかった。これに対しK6はSocket 7を採用していたため、ローエンド向けPC用のCPUとして採用されたり、Socket 7ユーザーのアップグレード用CPUとしても使用された。

特徴 
K6は次のような特徴を備えている。
 第6世代RISC86スーパースケーラ・マイクロアーキテクチャ
 8192エントリー2レベル分岐予測
 16エントリーBTB
 最大2命令デコード
 投機的実行
 レジスタ・リネーム
 24エントリーリザベーションステーション
 アウト・オブ・オーダー実行
 1クロックあたり最高6個(5個＋分岐1個)のRISC86命令実行

メモリから読み出された命令は、まずフェッチユニットが16バイト分のブロックを1次キャッシュからフェッチを行い、命令バッファで命令が切り出され、デコーダに送られる。デコーダは、単純命令を処理できるショート・デコーダが同時に2命令のデコードが可能である。その他ロング・デコーダとベクター・デコーダがあるが、これら3種類のデコーダはサイクルあたりで同時稼働できない。したがって、ピークのX86命令デコード・スループットは2命令ということになる。また、MMX命令は二つのショートデコーダのうち最初のショートデコーダでしかデコードできない仕様になっている。

デコーダはRISC86OPという内部命令に変換され、サイクルあたり最大4つのRISC86OPが出力可能である。この4つのRISC86OPがグループ化され（4つに満たない場合NOP命令で埋められる）、後段の24エントリーあるリザベーション・ステーションに送られる。

命令は、リザベーション・ステーションから5命令、分岐予測ユニットから分岐命令が実行可能である、また内部に整数2つ、MMX1つ、FPU1つ、ロード1つ、ストア1つ、分岐1つの計7つの並列実行ユニットを備えている。MMX実行ユニットはレジスタXパイプラインにしか繋がっておらず、2つのMMX実行ユニットをもつMMX PentiumおよびPentium IIにこの点で劣っている。これはのちのK6-2でMMX命令が2命令実行できるように改良された。

また、K6は整数乗算をパイプライン実行できず、一方K5はパイプライン実行を行えるため、整数乗算命令のスループットは先代から大幅に低下している。

ただし、K6では分岐予測や投機実行の実装によりパイプラインを効率的に利用可能にするさまざまな機能がサポートされており、K5では分岐先予測のバッファを保持していなかったのに対し、分岐先予測バッファとして16エントリーを保持するようになっている。

さらに、レジスタリネーム機能もサポートされており、汎用レジスタ本数が少ないというx86系プロセッサの弱点を補っている。

各世代についての詳細

外部リンク 
 AMD-K6プロセッサデータシート
 モバイルAMD-K6製品情報

K6