DEC Alpha アーキテクチャの詳細
DEC Alpha(別名:Alpha AXP)は、
ディジタル・イクイップメント・コーポレーション (DEC) が開発した
64[[ビット]]
RISC命令セットアーキテクチャ (ISA) です。これは、
32[[ビット]]の
VAX CISC ISAを置き換えるために設計されました。Alphaは、DECが
マイクロプロセッサとして
実装および製造を行い、主に
ワークステーションや
サーバーで使用されました。また、サードパーティもAlpha搭載システムを製造し、PCフォームファクタの
マザーボードも登場しました。
Alphaは、当初DEC版
UNIX (Tru64
UNIX) やVMSをサポートしていました。その後、
Linux(Debian GNU/
Linux、Gentoo
Linux、Red Hat
Linux)や一部のBSD(
NetBSD、
OpenBSD、FreeBSD)などのオープンソースOSも動作するようになりました。MicrosoftもWindows NT 4.0 SP6までAlphaをサポートしていましたが、Windows 2000 RC2を最後にサポートを打ち切りました。
歴史的背景
Alphaは、PRISMという初期の
RISCプロジェクトから派生しました。PRISMは、Epicodeというユーザープログラム可能なマイクロコードのサポートが特徴でしたが、より早く市場投入可能なMIPS R2000を使ったUnix専用
ワークステーション (DECstation 2100) が優先され、プロジェクトは中止されました。
しかし、
VAXシリーズよりも優れた価格性能比を持つ
SPARCやMIPSなどの第2世代
RISCチップが登場し、さらに第3世代チップはあらゆる面で
VAXを上回ることが明らかになったため、VMSを直接サポートする新しい
RISCアーキテクチャの研究が始まりました。これがAlphaの誕生につながります。
PRISMの基本コンセプトを踏襲しつつ、VMSとそのプログラムを変換せずに実行できるように設計され、
32[[ビット]]から完全な
64[[ビット]]
実装に変更されました。Alphaの命令セットの設計者は、リチャード・L・サイツとリチャード・T・ウィテクです。PRISMのEpicodeは、AlphaのPALcodeとなり、プラットフォーム固有およびプロセッサ
実装固有の機能への抽象化されたインターフェースを提供しました。
Alphaの成功は、アーキテクチャ自体よりも優れた
実装によるものでした。DECのチップ設計チームは、複雑な
VAXアーキテクチャを扱うために、高度な手動回路設計を追求していました。シンプルなAlphaアーキテクチャに適用されたこの手動設計は、自動化された設計システムよりも高い動作周波数を実現しました。このことは、
マイクロプロセッサ設計コミュニティにカスタム回路設計のルネサンスをもたらしました。
プロセッサの進化
Alphaプロセッサは当初、DECchip 21x64シリーズと呼ばれていましたが、後に「Alpha」に変更されました。番号の「21」は21世紀を、「64」は
64[[ビット]]を意味しています。Alphaは当初から
64[[ビット]]設計であり、
32[[ビット]]版は存在しません。内部では、EV番号(Extended
VAXの略)でも識別されました。
最初のバージョンである21064 (EV4) は、高性能なECL
ミニコンピュータや
メインフレームに匹敵する動作周波数を誇る初の
CMOSマイクロプロセッサでした。21164 (EV5) は、大容量の2次キャッシュを内蔵した最初の
マイクロプロセッサで、21264 (EV6) は、高い動作周波数と
アウト・オブ・オーダー実行を組み合わせた最初の
マイクロプロセッサでした。21364 (EV7) は、オンチップの
メモリコントローラを搭載した初の高性能プロセッサでした。
Alphaの命名と商標
Alphaという名称は、「ARA (Advance
RISC Architecture)」という案が一部の国で不適切とされた後に決定されました。
商標上の問題から、当初はAlpha AXPという名称になりましたが、最終的にはAlphaに戻りました。AXPには諸説ありますが、
商標コンサルティング会社が考案したもので、特別な意味はないとされています。
設計原則
Alphaアーキテクチャは、性能を最優先に設計されました。DECは25年間で1000倍の性能向上を目標とし、分岐遅延スロットや命令の抑制、バイト単位のロード/ストア命令、条件コードを排除しました。条件コードの排除は、ステータスレジスタがボトルネックになる可能性を排除します。整数演算では、オーバーフローが発生しても、下位
ビットだけをレジスタに書き込みます。キャリーが必要な場合は、比較演算で確認します。
レジスタ
Alphaアーキテクチャでは、32本の整数レジスタと32本の浮動小数点レジスタが定義されています。また、プログラムカウンタ、ロックレジスタ、浮動小数点コントロールレジスタ (FPCR) があります。PALcode用のレジスタも定義されています。整数レジスタはR0からR31、浮動小数点レジスタはF0からF31で表され、R31とF31は常にゼロです。レジスタファイルは整数用と浮動小数点用に分離され、同時発行命令時のポート数を減らし、
実装の自由度を高めました。レジスタ本数も検討され、最終的に32本が選択されました。
データ型
Alphaでは、1バイトを
8[[ビット]]とし、
16[[ビット]]を
ワード、
32[[ビット]]をロング
ワード、
64[[ビット]]をクワッド
ワード、12
8[[ビット]]をオクタ
ワードと定義します。当初から、クワッド
ワード整数、ロング
ワード整数、IEEE倍精度/単精度
浮動小数点数が定義され、
VAXとの互換性のため、
VAX倍精度/単精度
浮動小数点数も含まれています。将来の拡張で12
8[[ビット]]のデータ型のサポートも考慮されていました。
メモリ
Alphaは
64[[ビット]]の平坦な仮想アドレス空間を持ち、
実装上は最小仮想アドレス幅を43
ビットとすることが許容されています。未使用
ビットはハードウェアでチェックされ、ゼロである必要があります。
命令フォーマット
Alpha ISAの命令長は
32[[ビット]]固定です。命令フォーマットには、整数演算、リテラル整数演算、浮動小数点演算、ロード/ストア、分岐、CALL_PALの6種類があります。各フォーマットは、
オペコード、オペランド、機能フィールド、レジスタ指定などの要素で構成されています。
命令セット
制御命令
制御命令には、条件分岐、無条件分岐、ジャンプ命令があります。条件分岐は、レジスタの最下位
ビットやゼロとの比較によって分岐します。無条件分岐は、指定されたアドレスにジャンプし、戻りアドレスをレジスタに保存します。ジャンプ命令は、別のレジスタのアドレスにジャンプします。
整数演算
整数演算命令には、ロング
ワードおよびクワッド
ワードの加算/乗算/減算、クワッド
ワードの比較があります。除算命令は存在せず、ハードウェアの単純さを優先しています。加減算命令には、シフトしてから加減算するスケール版があり、乗算命令は積の下位
64[[ビット]]をレジスタに格納します。オーバーフロー検出機能を持つ命令も用意されています。比較命令は、レジスタ同士またはレジスタとリテラルを比較し、条件が成立するかどうかをレジスタに格納します。
論理演算とシフト
論理演算命令には、AND、NAND、NOR、OR、XNOR、XORがあります。条件付き転送命令は、指定した条件が満たされる場合にレジスタの内容を別のレジスタに転送します。シフト命令には、算術右シフトと論理左シフトがあります。
拡張命令セット
バイト/ワード拡張 (BWX): 8[[ビット]]および16[[ビット]]のデータ型を操作する命令セットで、x86コードのエミュレーションを容易にしました。
マルチメディア拡張 (MVI):
SIMD拡張として、整数データ型を既存の整数レジスタで処理します。
浮動小数点拡張 (FIX): 平方根計算命令や整数レジスタと浮動小数点レジスタ間の転送命令を追加しました。
カウント拡張 (CIX):
ビットをカウントする命令を3種類追加しました。
バージョン
Alphaは、
1992年に最初のバージョンであるAlpha 21064 (EV4) が登場しました。その後、21164 (EV5)、21264 (EV6)、21364 (EV7) と進化しました。DECは、性能向上のために回路設計にこだわり、他の
RISCチップよりも高速な動作を実現しました。
1996年には、Alphaチップの生産が
サムスン電子にライセンスされました。
コンパックによるDECの買収後、Alphaの資産はAPI NetWorks, Inc.に移管され、最終的に
インテルに売却されました。HPは、
コンパック買収後もAlphaシリーズのサポートを継続しましたが、
2004年に最後のAlphaモデルがリリースされ、その歴史に幕を閉じました。
ISA拡張
Alpha ISAには、R (丸め処理)、B (BWX)、M (MVI)、F (FIX)、C (CIX)、T (ロック獲得性能向上) の拡張があります。
性能
Alphaは、同時代のHP-PAや
インテルベースのシステムと比較して、整数演算性能では肩を並べていましたが、浮動小数点演算性能では大きな差がありました。
Alphaベースのシステム
DECは、
ワークステーションや
サーバーとして、DEC 3000 AXP、4000 AXP、7000 AXP、10000 AXPシリーズを開発しました。また、PC風のAlpha
ワークステーションや組み込み用VMEバス向けワンボードマイコンも提供しました。1994年以降は、AlphaStationとAlphaServerシリーズを展開しました。
OEM向けの
マザーボードも製造され、サードパーティもAlpha
マザーボードを開発しました。ネットアップやクレイも、Alphaプロセッサを様々なシステムに採用しました。
Alphaプロセッサを採用した最も高性能な
スーパーコンピュータは、
ロスアラモス国立研究所の ASCI Q で、4096個のAlphaプロセッサを搭載し、7.727TFLOPSの性能を誇りました。
まとめ
DEC Alphaは、優れたアーキテクチャと
実装技術によって、高性能なプロセッサとして一時代を築きました。しかし、企業の買収や戦略変更により、その歴史は幕を閉じました。それでもなお、Alphaは
マイクロプロセッサ設計において重要な役割を果たし、業界に多大な影響を与えました。