DEC_Alpha
[Wikipedia|▼Menu]

Alpha開発者DEC
ビット数64ビット
発表1992年
デザインRISC
タイプレジスタ-レジスタ
エンコード固定
エンディアンバイエンディアン
拡張バイト/ワード拡張 (BWX)、平方根と浮動小数点数変換拡張 (FIX)、カウント拡張 (CIX)、マルチメディア拡張 (MVI)
オープンYes[1]
レジスタ
汎用32本
浮動小数点32本
DEC Alpha AXP 21064 のダイDEC Alpha AXP 21064 のパッケージAlpha AXP 21064 のダイを埋め込んだ名刺Compaq Alpha 21264CAlphaを複数のチップで実装した初期のマルチチップモジュール

DEC Alphaは、Alpha AXPとしても知られ、ディジタル・イクイップメント・コーポレーション (DEC) の64ビットRISC命令セットアーキテクチャ (ISA) であり、32ビットVAX CISC ISA とその実装を置換すべく設計された。AlphaはDECがマイクロプロセッサとして実装し生産した。Alphaマイクロプロセッサは特にDECのワークステーションサーバに使用され、ミッドレンジ以上のあらゆるコンピュータで採用された。サードパーティもAlphaを使ったシステムを製造しており、PCのフォームファクタマザーボードなども作られた。

オペレーティングシステム (OS) としてはDEC版UNIX (Tru64 UNIX) やVMSをサポートした。後に、Linux (Debian GNU/Linux, Gentoo Linux, Red Hat Linux) や一部のBSD (NetBSD, OpenBSD, FreeBSD) のようなオープンソースのOSもAlpha上で動作するようになった。マイクロソフトWindows NT 4.0 SP6までAlphaをサポートしたが、Windows 2000 RC2を最後にサポートは打ち切られた。

1998年、DECがコンパックに買収されると、Alphaアーキテクチャもコンパックのものとなった。コンパックはインテルの顧客でもあり、予定されていたHP/インテルのItaniumアーキテクチャを採用するためAlphaを徐々にフェーズアウトさせることにし、Alpha関連の知的財産権を2001年にインテルに売却し、実質的に製品として見切りをつけた。2002年HPがコンパックを買収し、2004年まで既存製品の開発を継続し、既存顧客向けに2006年10月までAlphaベースのシステムの販売継続を約束した(その後2007年4月に延長)[2]
歴史

Alphaは、それ自体以前の複数のプロジェクトの最終生成物である、PRISM(英語版)という初期のRISCプロジェクトから生まれた。パロアルトの設計チームが MIPS R2000 を使ったUnix専用ワークステーション (DECstation 2100) を提案し、そちらの方が早く市場に出せることから PRISM はキャンセルされた。PRISMと他のRISCプロセッサの違いの中でも、Epicode と呼ばれるユーザープログラム可能なマイクロコードのサポートがPRISMの特徴である。PRISMは Mica と呼ばれる新オペレーティングシステムが動作するよう設計されていた。Micaは「ネイティブ」なプログラムはフルスピードで実行でき、同時にVAX向けの既存のVMSプログラムを若干変換して実行することができる。DEC経営陣は既存の稼ぎ頭を新しいマシンで置き換える必要性を理解せず、結局1988年にプロジェクトは中止された。

しかし、中止の時点でより新しいSPARCやMIPSといった第2世代のRISCチップはすでにVAXシリーズよりずっと良い価格性能比を誇っていた。第3世代のチップは価格だけでなく、全ての面においてVAXを完全に上回るであろうことは明らかだった。そのため、VMSを直接サポートする新しいRISCアーキテクチャが可能かどうかを調べる別の研究が始まった。新しいデザインはほとんどのPRISMの基本コンセプトを踏襲したが、VMSとVMSのプログラムを適度なスピードで全く変換せずに実行できるように、方針が転換された。主なRISCベンダと同様に、PRISMの32ビットから完全な64ビットの実装に設計を変更する決定もなされた。結果として、新しいアーキテクチャがAlphaとなった。Alphaの命令セットのアーキテクトはリチャード・L・サイツとリチャード・T・ウィテクである。PRISMのEpicodeは、AlphaのPALcode(英語版)となった。PALcodeはプラットフォーム固有およびプロセッサ実装固有の機能への抽象化されたインタフェースを提供する。PALcodeは、表面的にはマイクロコードそのものであるが、実体は「割り込み不可能なサブルーチン」であり、特権モードの生成などに使われた。VMSはCPUの動作モードとしてカーネル、エグゼクティブ、スーパバイザ、ユーザーの4種類を必要とするが、UNIXはカーネルとユーザーの2つでよい。モード切り替えの機能をPALcodeとして分離することで、RISCの単純さを保ちつつ、アーキテクチャの異なるOSのサポートを可能にしたのである。

Alphaのマイクロプロセッサ業界への主な貢献と、その優秀な性能の主な理由は、アーキテクチャというよりはむしろ優れた実装によるものである。当時(現在も同じだが)、マイクロチップ産業は自動化された設計およびレイアウトツールが中心となっていた。DECのチップ設計陣は過度に複雑なVAXアーキテクチャを扱うために、人手による洗練された回路設計を追求し続けた。シンプルでクリーンなアーキテクチャに適用された人手による回路設計は、自動化された設計システムによるものよりもずっと高い動作周波数を可能にするということを、Alphaチップは示した。これらのチップは、マイクロプロセッサ設計コミュニティにカスタム回路設計というルネッサンスをもたらした。

Alphaのプロセッサは当初 DECchip 21x64 シリーズと呼ばれていたが、1990年代中ごろに "DECchip" から "Alpha" に変更した。番号の先頭2桁である "21" は21世紀を意味し、最後の2桁 "64" は64ビットであることを意味している。Alphaは当初から64ビットとして設計されており、32ビットのバージョンは存在しない。真ん中の数字はAlphaアーキテクチャの世代を表す。社内では EV 番号でも識別され、EVは公式には "Extended VAX" の略とされていた。

Alphaチップの最初の頃の世代のものは、当時もっとも革新的なものであった。最初のバージョンである 21064 (EV4) は、より高性能なECLミニコンピュータメインフレームに匹敵する動作周波数を誇る最初のCMOSマイクロプロセッサである。2代目の21164 (EV5) は、大容量の2次キャッシュをチップの中に持つ最初のマイクロプロセッサであった。3代目の21264 (EV6) は、高い動作周波数とより複雑なアウト・オブ・オーダー実行を組み合わせた最初のマイクロプロセッサであった。21364 (EV7) はオンチップのメモリコントローラを持つ最初の高性能プロセッサだった。21464(英語版) (EV8) は初の同時マルチスレッディングをサポートしていたが、コンパックによるDEC買収後にキャンセルされた。コード名 Tarantula はEV9と呼ばれるはずの研究プロジェクトで、ベクターユニットをAlphaに搭載する計画だった[3]

Alphaのコード名はEVAX (Extended VAX) であったが、実際の製品名の決定は難航した。最後に「ARA (Advance RISC Architecture)」が残ったが、一部の国で「不適切な言葉」とされたため白紙に戻った。最終的に「Alpha」という名前が決まってからも、商標上の問題からAlpha AXPとなった。実際には、この追加は必要なかったようで、最終的にAlphaに戻ったようである。AXPの意味には諸説あるが、真相は商標コンサルティング会社が考えたもので意味はないそうである。DEC社内に流れた文書によると「覚えやすい3文字」「Xを含むと先進的なイメージがある」「他社の商標権を侵害しない」ということで決まったということだ。DEC社内では "Acronym eXpert is Paid too much"(略語の専門家に多額の金が払われた)の略というジョークがささやかれていた。

余談だがAMD社のAthlonプロセッサで採用されたEV6バスは21264 (EV6)のバスと同じものであり、信号レベルでは互換性がある。実際にAthlonプロセッサ用チップセットをAlphaプロセッサ用マザーボードに使用した例もある。
設計原則

Alphaアーキテクチャは性能を最重要として設計されている。DECは25年で1000倍の性能向上を達成することを意図していた。そのため、複数命令の発行、クロック周波数向上、マルチプロセッシングといった方向性を妨げるアーキテクチャ上の特質は徹底的に取り除かれた。結果としてAlphaでは、以下のような特質を持たない。

分岐遅延スロット

命令の抑制

バイト単位のロード/ストア命令。ただし後にバイト/ワード拡張 (BWX) として追加した。

条件コード

Alphaでは整数命令に条件コードが存在せず、ステータスレジスタの条件コードがボトルネックとなる可能性を排除している。例えば加算命令でオーバーフローとなるような場合、和の下位64ビット(あるいは32ビット加算なら下位32ビット)をレジスタに書き込み、あふれた部分を無視する。キャリーが発生したかどうかが必要なら、加算結果と加算前の2つの数値を符号なし数値として比較する。
レジスタ

アーキテクチャでは整数用レジスタが32本、浮動小数点用レジスタが32本定義されており、さらにプログラムカウンタ、2本のロックレジスタ、1本の浮動小数点コントロールレジスタ (FPCR) がある。他にも実装上必要な場合にのみ実装されるオプションのレジスタ群が定義されている。また、PALcode(英語版)用のレジスタ群が定義されている。

整数レジスタは R0 から R31 と表記され、浮動小数点レジスタは F0 から F31 と表記される。R31とF31は常にゼロであり、それらに書き込もうとしても無視される。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:53 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef