Alpha 21264

Alpha 21264 のマイクロアーキテクチャ
Alpha 21264 はディジタル・イクイップメント・コーポレーション (DEC) が開発・製造したRISCマイクロプロセッサであり、Alpha命令セットアーキテクチャ (ISA) を実装している。コード名 EV6 でも知られている。1996年10月に登場した。

**詳細**
Alpha 21264 はクロックサイクル毎に最大4個の命令を同時発行できるスーパースケーラ型マイクロプロセッサであり、アウト・オブ・オーダー実行と投機的実行を実装している。最大6命令を同時に実行できる。命令パイプラインは7段構成。

**アウト・オブ・オーダー実行**
同時代の他のマイクロプロセッサをしのぎ、複数のパイプラインの各ステージを合わせると、最大80個の命令を同時に処理する能力を有する。
デコードした命令を命令キュー群にキューイングし、オペランドが利用可能となった命令から発行する。整数命令キューには20命令、浮動小数点命令キューには15命令まで蓄えることができる。それぞれのキューは対応するパイプライン群と同数の命令を発行できる。

**Ebox**
Eboxは整数演算命令、ロード/ストア命令を実行する。2つの整数演算ユニットと2つのロード/ストアユニットと2つの整数レジスタファイルを持つ。整数レジスタファイルはそれぞれ80エントリで、うち31本はアーキテクチャ上のレジスタ、41本はレジスタ・リネーミング用、8本はPALcode用レジスタである。R31レジスタは常にゼロなので、レジスタファイル内のエントリを使っていない。
レジスタファイルはそれぞれ、整数演算ユニット1つとロード/ストアユニット1つに対応しており、それら3つをまとめて「クラスタ」と称する。2つのクラスタをそれぞれ U0 および U1 と呼ぶ。このような構成になっているのは、レジスタファイルのリードおよびライトのポート数を削減するためであり、結果としてレジスタファイルに必要なチップ面積を低減し、高クロック周波数での動作を可能とする。まるでマルチコアのような構成だがマルチコアではないので、レジスタファイルへの書き込みは常に同期を必要とし、結果として1%の性能ペナルティを生ずる。この性能ペナルティを補償するため、第一により高いクロック周波数で動作させ、第二にもう一方のクラスタが使用中のレジスタをオペランドとして必要とする命令を発行機構が発行しないようにして依存関係が発生するのを防いでいた。
2つのクラスタには2つの違いがある。U1には7サイクルのパイプライン化乗算器があり、U0にはマルチメディア拡張 (MVI) 命令用の3サイクルのパイプラインがある。MVIは Alpha ISA のSIMD命令拡張である。
ロード/ストアユニットは、メモリアクセスのための実効アドレス（仮想アドレス）を計算する単純な演算装置を含んでいる。これを単純な算術命令や論理命令の実行にも使用することができる。命令発行機構はこれを考慮しており、アドレス計算をしていない状態であればロード/ストアユニットに対してロード/ストア命令以外の命令も発行する。
Eboxには64ビット加算器が4つ、論理演算ユニットが4つ、バレルシフタが2つ、条件分岐命令用論理回路が2組あり、それらが U1 と U0 に同数ずつ配備されている。

**Fbox**
Fboxは浮動小数点演算命令を実行する。2つの浮動小数点演算パイプラインと1つの浮動小数点レジスタファイルがある。2つのパイプラインは同一ではなく、加算パイプラインは乗算以外のあらゆる浮動小数点命令を実行し、もう1つは乗算命令専用である。加算パイプラインにはパイプライン化されていない浮動小数点除算ユニットと平方根ユニットが接続されている。加算や乗算など多くの命令のレイテンシは4サイクルで、倍精度除算のレイテンシは16サイクル、単精度除算のレイテンシは33サイクルである。浮動小数点レジスタファイルは72エントリで、うち32本がアーキテクチャ上のレジスタ、残り40本はレジスタ・リネーミング用である。

**キャッシュ**
キャッシュは一次と二次の2レベル構成である。Alpha 21164 の3レベル・キャッシュ構成は帯域幅に問題があるため採用されなかった。
 一次キャッシュ
 命令キャッシュとデータキャッシュに分かれている。どちらも容量は64KB。データキャッシュはデュアルポートだが、クロック信号の立ち上がりと立ち下がりのタイミングでデータを転送する。これにより、サイクル毎にロードとストアの任意の組み合わせに対応可能である。また、21164のように二重化する必要がない。二重化するとトランジスタを多く必要とするため容量が制限され、単位容量当たりの必要な面積と消費電力も増大する。
 二次キャッシュ
 二次キャッシュは外付けで1MBから16MBまでの容量をサポートしている。プロセッサ本体が制御することができ、同期SRAM (SSRAM) チップで実装する。クロック周波数はプロセッサの内部周波数の半分、3分の1、4分の1のいずれかであり、500MHz版なら133MHzから333MHzの範囲となる。SSRAMと同じ周波数で駆動した専用128ビットバスでアクセスする。DDR SSRAM を使う場合、専用バスはSSRAMのクロックの倍の周波数となる。ダイレクトマップ方式である。

**分岐予測**
分岐予測には統合分岐予測アルゴリズムを採用している。このアルゴリズムはDECの Western Research Laboratory (WRL) の Scott McFarling が開発したもので、1993年に論文で発表している。21264で実装された分岐予測機構は、予測失敗時のペナルティが最短で7サイクルとなる。命令キャッシュには2サイクルのレイテンシがあり、命令キューもあるため、平均的な誤予測のペナルティは11サイクルとなる。そのアルゴリズムは2種類の分岐予測方式（局所分岐予測とgshare分岐予測）を持ち、分岐命令毎にどちらの予測を採用するかを決定するもう1つの予測機構を持つ。

**外部インタフェース**
外部インタフェースは双方向64ビットdouble data rate (DDR) データバス、1方向15ビットの時分割多重化されたアドレスバス、信号線によって方向が異なるcontrol busで構成される。DECはこのバス仕様をアドバンスト・マイクロ・デバイセズ (AMD) にライセンス提供し、AMDはそれをAthlonに採用しEV6バスと称した。

**製造**
総トランジスタ数は1520万個である。論理回路は600万トランジスタを使用しており、残りはキャッシュと分岐予測用履歴テーブルで使っている。寸法は 16.7mm × 18,8mm、面積は 313.96mm2 である。0.35μm CMOS プロセス、6層配線で製造された。

**パッケージ**
587ピンの千鳥配置の pin grid array (IPGA) である。
Alpha Processor, Inc. は Alpha 21264 と二次キャッシュと電圧レギュレータをプリント基板上に実装し、Slot B という形にパッケージしたものを販売していた。これはインテルとAMDがスロット型のパッケージで成功していたことを真似たものである。Slot B は本来AMDのAthlon向けに設計され、量産効果で21264のパッケージのコスト低減を図る狙いがあった。しかしAMDは Slot A を採用したため、その狙いは外れてしまった。

**派生**
 Alpha 21264A
 コード名 EV67。21264のプロセス縮小版で、1999年後半に登場した。動作周波数は、600/667/700/733/750/833MHz がある。初めてカウント拡張 (CIX) を実装した。CIXは Alpha ISA の拡張命令セットで、ビットのカウントなどを行う。サムスン電子が 0.25μm CMOS プロセスで製造した（トランジスタは0.25μmルールだが、配線は0.35μmルール）。ダイ面積は 210mm2。電源電圧は2.0Vで、消費電力は600MHzで73W、700MHzで85W、750MHzで90Wなどとなっている。
 Alpha 21264B
 さらにクロック周波数を上げたバージョン。IBMが製造した EV68C とサムスン電子が製造した EV68A がある。
 EV68A は 0.18μm CMOS プロセス、アルミニウム配線で製造された。ダイ面積は 125mm2 で、21264Aの約3分の2になっている。電源電圧は1.7V。2001年、750MHz版、833MHz版、875MHz版、940MHz版が出荷された。消費電力は、750MHzで60W、833MHzで67W、875MHzで70W、950MHzで75Wである。
 EV68C は 0.18μm CMOS プロセス、銅配線で製造された。2000年初めにサンプル出荷を開始し、最高1.25GHzを達成している。1998年9月、サムスンはSOI技術を使い、0.18μmルール、銅配線で製造することで1.5GHz動作を達成したと発表したが、製品化されなかった。
 Alpha 21264C
 コード名 EV68CB。動作周波数は1.0GHz、1.25GHz、1.33GHz。1550万トランジスタを集積し、ダイ面積は 120mm2。IBMが 0.18μm CMOS プロセス、7層銅配線と低誘電率絶縁膜で製造した。パッケージは675接点のセラミックLGAで、寸法は 49.53mm × 49.53mm。電源電圧は1.7Vで、消費電力は1.0GHzで64W、1.25GHzで75W、1.33GHzde80Wである。
 Alpha 21264D
 コード名 EV68CD。IBMが製造したさらに高速なバージョン。
 Alpha 21264E
 コード名 EV68E。サムスン電子が発表したが後にキャンセルされた派生品。2000年10月10日、Microprocessor Forum 2000 で2001年中ごろ出荷と発表された。1.25GHzで、二次キャッシュ1.85MBを内蔵する予定だった。

**チップセット**
DECとアドバンスト・マイクロ・デバイセズ (AMD) が Alpha 21264 用チップセットを開発した。
 21272
 DEC製チップセットで、Tsunami および Typhoon とも呼ばれた。4プロセッサまでのマルチプロセッサ構成をサポートし、64ビット33MHzのPCIバスを2つまでサポートしている。メモリバス幅は128ビットから512ビットまでで、動作周波数は83MHz。最大帯域幅は5,312MB/sとなる。100MHzのレジスタ付き ECC SDRAM をサポートしている。
 Cチップ（メモリコントローラ）、Dチップ（データバス・スライス）、Pチップ（PCIコントローラ）という3種類のチップで構成されている。
 DEC、コンパック、ヒューレット・パッカードが AlphaServer のミッドレンジまでの下位機種と AlphaStation の全機種で採用した。Alpha Processor, Inc. もマザーボード UP2000+ で採用している。
 Irongate
 AMDが開発した21264互換チップセットで、AMD-751 とも呼ばれる。後継の Irongate-2 は AMD-761 とも呼ばれる。これらチップセットはAthlon向けに開発されたものだが、DECがAMDにライセンス提供したEV6バスが共通なので、21264にも流用可能となっている。サムスンがマザーボード UP1000 と UP1100 に採用した。Irongate-2 はサムスンがマザーボード UP1500 に採用した。

**脚注**

**参考文献**
 ref=harv- ref=harv

**関連文献**
 Compaq Computer Corporation (July 1999). Alpha 21264 Microprocessor Hardware Reference Manual.- Compaq Computer Corporation (March 2002). 21264/EV67 Microprocessor Hardware Reference Manual.- Gwennap, Linley (28 October 1996). "Digital 21264 Sets New Standard". Microprocessor Report, Volume 10, Number 14. MicroDesign Resources.- Kessler, R. E. (1999). "The Alpha 21264 Microprocessor". IEEE Micro, March–April 1999. pp. 24–36.- Leibholz, Daniel and Razdan, Rahul (1997). "The Alpha 21264: A 500 MHz Out-of-Order Execution Microprocessor". Proceedings of Compcon '97. pp. 28–36.- Matson, M. et al. "Circuit Implementation of a 600MHz Superscalar RISC Microprocessor". Proceedings of the International Conference on Computer Design: VLSI in Computers and Processors. pp. 104–110.- Benschneider, B.J. et al. (2000).  "A 1 GHz Alpha microprocessor". ISSCC Digest of Technical Papers, pp. 86–87.- Clouser, J. et al. (July 1999).  "A 600-MHz superscalar floating-point processor". IEEE Journal of Solid-State Circuits 34 (7): pp. 1026–1029.- Fischer, T.; Leibholz, D. (1998).  "Design trade offs in stall-control circuits for 600 MHz instruction queues". ISSCC Digest of Technical Papers, pp. 232–234, 444.- Gieseke, B.A. et al. (1997). "A 600 MHz superscalar RISC microprocessor with out-of-order execution". ISSCC Digest of Technical Papers, pp. 176–177, 451.- Gronowski, Paul E. et al. (May 1998). "High-performance microprocessor design". IEEE Journal of Solid-State Circuits 33 (5): pp. 676–686.- Hokinson, R. et al. (2001).  "Design and migration challenges for an Alpha microprocessor in a 0.18 µm copper process". ISSCC Digest of Technical Papers, pp. 320–321, 460.