Cyrix 6x86 (コード名 M1)は、サイリックスが設計しIBMとSGS-Thomsonが製造した第6世代32ビットx86互換マイクロプロセッサである。1996年にリリースされた。
Cyrix 6x86 のブロック図
6x86 は、RISC的な面とCISC的な面を併せ持っている。コアは、スーパースケーラかつスーパーパイプラインで、レジスタ・リネーミング、投機的実行、アウト・オブ・オーダー実行、データ依存性除去といった機能を備えている。しかし、セントールテクノロジーのWinChipと同様ネイティブのx86命令を実行するようになっており、競合するインテルやAMDは既にPentium ProやAMD K5で内部でRISC命令に変換していた。
内蔵キャッシュに関しては、16KiBの一次キャッシュを搭載しており、ソケットはPentium P54C互換であった。x86系の設計では唯一、256バイトの「レベル0」スクラッチパッドキャッシュを備えていた。性能レベルは6段階ある (PR 90+, PR 120+, PR 133+, PR 150+, PR 166+, PR 200+)。これらの性能レベルの数字は実際のチップのクロック周波数とは対応しない(例えば、PR 133+は110MHzで動作し、PR 166+は133MHzで動作する、など)。
なお、6x86と6x86LはPentiumの命令セットと完全互換ではない。このため、ハードウェア上は外部に486であるように見せていて、CPUID命令はデフォールトでは使えないようになっていた。CPUID 命令サポートを有効にするには、まず拡張CCRレジスタを有効にし、次にCCR4のビット7をセットする必要があった。Pentium完全互換でないため、一部アプリケーションでは既にPentium固有命令を使い始めていたことから問題が生じた。一部企業は、自社製品を6x86で動作させるためのパッチをリリースしていた。
初期の6x86は発熱問題があった。当時の他のプロセッサに比べて発熱量が多いことが主な原因で、それに気づかずに適切な冷却処置をせずに実装していたメーカーがあったことが問題を大きくした。発熱量は最大で25Wであり、Pentiumは最大でも15Wであった。
また、6x86はマルチプロセッサ対応ではなかった。
6x86Lは上述の発熱問題に対処したバージョンとしてサイリックスからリリースされた。"L" は "low-power" の略である。別のバージョンとして、6x86MXがある。MMX互換機能を追加し、EMMI命令セットを追加し、一次キャッシュを4倍の64KiBに拡張している。このチップはPentium IIと競合するものであることを明確化するため、MII と改称した。
IBM のラベル付きで販売された Cyrix 6x86L PR166+
Cyrix 6x86MX PR200
専門家は、6x86 は当時のビジネス指向ベンチマーク(特にジフデービスのWinstoneベンチマーク)でよい性能を示すよう設計されていると推測した[1]。 Winstone は、いくつかの一般的なアプリケーションを使って様々に性能を測定するものである。1990年代中盤に良く使われたベンチマークである。
6x86の整数演算性能は非常に優れていた。先述したようにサイリックスはPRレーティング (Performance Rating) で性能を表し、インテルのPentium Classic(P55C以前)と比較した数字を提示していた。何故なら低いクロック周波数で高クロック周波数のPentiumと対抗可能であるため、クロック周波数をそのまま提示すると性能が低く見えるためであった。例えば、133MHzの6x86は166MHzのPentium Classicを凌駕しており、サイリックスは133MHzのチップをPentium 166Mhzの同等品としてマーケティングすることができた。またPRレーティングが必要となった別の要因として、6x86がPentiumほど高いクロック周波数では駆動できなかったからという点も挙げられる。そのためにも、低いクロック周波数でも高い周波数のPentiumと同等であるという見方を顧客に植え付ける必要があった。しかし、PRレーティングは6x86の性能全体を正しく表しているわけではなかった。
整数演算性能は素晴らしかったが、浮動小数点演算性能に関しては素晴らしいとは言えない状況だった。そのFPUは(P6 FPUどころか)Pentiumのそれよりもかなり貧弱だった。6x86開発時、主なアプリケーション(オフィススイート)はほとんど整数命令だけを使っていた。設計者は、今後も命令の使用状況はそのままであると予測した。そのため、アプリケーションが最もよく使うと考えた命令を中心に最適化し、整数命令実行部分に多くのリソース(トランジスタ)を割り当てた。
6x86のFPU性能が貧弱な理由は、主なFPU命令が最低でも4クロックサイクルかかり、しかもパイプライン化されていなかったためである。同クロック周波数の486 FPUと比べても高速とは言えない。Pentiumが大きなシェアを占めているため、多くのソフトウェア開発者がアセンブリ言語でPentiumの低レイテンシのFPUに最適なコードを書いた。例えば、ファーストパーソン・シューティングゲームQuakeは、そのようなPentium FPUに最適化したアセンブリ言語コードを使っている。結果として、Pentiumはゲームに関しては他のCPUよりも高性能を発揮した。6x86(およびAMD K6)にとって幸運なことに、それらが販売されている時期も整数演算主体のゲームは多数存在した。
6x86の後継であるMIIは市場に登場するのが遅く、クロック周波数もうまく向上させられなかった。サイリックスは6x86に関してミスを犯した。これは、AMDがK5でやったのと同じミスである。すなわち、クロック向上の余地を考慮せずに、整数演算性能を極端に最適化してしまったのである。そのため、6x86とMIIはローエンド市場に注力せざるを得なくなった。何故なら、AMD K6とインテル Pentium IIは常にクロック周波数で一歩先を行っていたからである。浮動小数点演算性能が低く、P6とK6が整数演算性能でも追いついたため、サイリックスは性能ではこれらに太刀打ちできなくなってしまった。
Processor
|
P-Rate (MHz)
|
周波数 (MHz)
|
倍率
|
ベースクロック (MHz)
|
コア電圧 (V)
|
MII
|
233 |
200 |
3.0 |
66 |
2.9
|
MII
|
266 |
208 |
2.5 |
83 |
2.9
|
MII
|
300 |
233 |
3.5 |
66 |
2.2
|
MII
|
300 |
233 |
3.5 |
66 |
2.9
|
MII
|
300 |
225 |
3.0 |
75 |
2.9
|
MII
|
333 |
263 |
3.0 |
75 |
2.9
|
MII
|
333 |
250 |
3.0 |
83 |
2.9
|
MII
|
350 |
250 |
3.0 |
83 |
2.9
|
MII
|
350 |
270 |
3.0 |
90 |
2.9
|
MII
|
366 |
250 |
2.5 |
100 |
2.9
|
MII
|
400 |
285 |
3.0 |
95 |
2.2
|
MII
|
433 |
300 |
3.0 |
100 |
2.2
|