Alpha 21064

Alpha 21064 はディジタル・イクイップメント・コーポレーション (DEC) が開発・製造したマイクロプロセッサであり、Alpha命令セットアーキテクチャ (ISA) を実装している。当初 DECchip 21064 として登場し、1994年に改称された。コード名 EV4 でも知られている。1992年2月に発表され、1992年9月から量産出荷された。Alpha ISA の最初の商用実装であり、DECが外部に広く販売した最初のマイクロプロセッサである。1993年10月に派生品である Alpha 21064A に取って代わられた。

歴史

最初のAlphaプロセッサは評価用でコード名を EV3 といった。この評価用チップはDECの 1.0μm CMOS-3 プロセスで製造された。これにはFPUがなく、内蔵キャッシュも1KBだけだった。積極的な回路設計技法がうまく機能するかを確認するための評価用チップである。またシミュレータやエミュレータとあわせて、Alpha向けのファームウェアや各種オペレーティングシステムの開発にも使われた。量産版の EV4 はDECの 0.75μm CMOS-4 プロセスで製造された。マイクロアーキテクチャ設計はダーク・メイヤーとエドワード・マクレランである。マクレランが命令発行部の論理設計を行い、メイヤーが他の大部分を設計した。回路実装はジム・モンタナロが指揮した。EV3 を使って Alpha プラットフォーム向けのソフトウェア開発用コンピュータ Alpha Development Unit (ADU) を作り、DEC社内で使用した。
21064 は1992年2月に開催された第39回国際固体素子回路会議 (ISSCC) で発表された。具体的には1992年2月25日に発表され、150MHz版のサンプルも披露された。価格は100個で1個当たり3,375ドル、1,000個までなら1個当たり1,650ドル、1,000個以上の注文では1,560ドルとされた。量産出荷は1992年9月に始まった。
1993年2月初め、150MHz版の価格は（1,000個以上の場合）1,096ドルに値下げされた。
1993年2月25日、200MHz版が登場。サンプルキットの価格は3,495ドル。10,000個以上の注文での価格は1,231ドルとされた。量産品の注文は1993年6月から受付開始し、1993年8月から量産出荷を開始。150MHz版はさらに値下げされ、1993年4月からサンプルキットは3,375ドルから1,690ドルとなり、1993年7月から量産品（10,000個以上の場合）は1,355ドルから853ドルへと値下げした。
1993年9月10日に Alpha 21066 と Alpha 21068 を発表すると、DECは既存の 21064 のポジションを調整し、新たに166MHz版を499ドル（5,000個注文の場合）で導入した。同時に150MHz版も455ドル（5,000個注文時）へと値下げしている。
1994年6月6日、200MHz版を31%値下げして544ドルとし、60MHz版Pentiumに対抗しようとした。1994年7月3日から166MHz版を19%値下げして404ドル（5,000個注文時）とした。
Alpha 21064 はDECのマサチューセッツ州ハドソンとスコットランドサウスクイーンズフェリーのファウンドリで生産された。

性能

登場した1992年から1993年まで 21064 は世界最速のマイクロプロセッサだったが、IBMの POWER2 に追い抜かれた。POWER2 の性能を超えたのは275MHzの 21064A で、1993年10月のことである。

詳細

Alpha 21064 はスーパーパイプライン型で2命令同時発行のスーパースケーラ型マイクロプロセッサで、イン・オーダーで命令を実行する。4個の機能ユニット（整数演算ユニット、浮動小数点演算ユニット、アドレス演算ユニット、分岐ユニット）に対してクロックサイクル毎に最大2個の命令を発行できる。整数パイプラインは7段で、浮動小数点パイプラインは10段である。最初の4段までは両者で共通であり、I-box で実装している。

I-box

I-box は制御装置であり、命令をフェッチし、デコードし、発行すると同時にパイプラインを制御する。第1ステージでは一次命令キャッシュから2つの命令をフェッチする。第2ステージでは、I-Box内の論理回路で分岐予測を行う。静的予測と動的予測のいずれかを使用する。静的予測では、分岐命令のディスプレースメント部の符号（正か負か）を調べ、負の場合（戻る分岐命令の場合）は分岐すると予測する（ループの先頭に戻る分岐命令と判断する）。動的予測では2,048エントリの1ビットの分岐履歴テーブルを調べ、対応するエントリが1なら分岐すると予測する。動的予測を使った場合の分岐予測の当たる確率はおおよそ80%である。分岐予測が外れた場合のペナルティは4サイクルである。
第3ステージでは2つの命令の命令デコードを行う。第4ステージでは、2つの命令で必要とするリソースが使えるかどうかを I-box がチェックする。リソースが利用可能ならその命令を発行するが、同時に発行する2命令の組み合わせには制限がある。どういう命令が組み合わせ可能かは、それら命令が使用する整数レジスタファイルのリード/ライトのポート数で決まる。21064が同時に発行できる命令の組み合わせは、整数演算命令と浮動小数点演算命令、任意のロード/ストア命令と任意のその他の演算命令、整数演算命令と整数分岐命令、浮動小数点演算命令と浮動小数点分岐命令である。不可能な組み合わせは2種類あり、整数演算命令と浮動小数点ストア命令、浮動小数点演算命令と整数ストア命令である（同じ種類の命令も同時に発行できない）。2つの命令が不可能な組み合わせの場合、1命令だけ発行し、残る命令を発行するまでパイプラインの最初の4段がストールする。リソースが利用可能でない場合や依存関係問題が発生した場合、命令を発行できないので、パイプラインの最初の4段がストールする。
I-box には仮想アドレスを物理アドレスに変換する2つのトランスレーション・ルックアサイド・バッファ (TLB) が含まれる。これらのTLBを instruction translation buffers (ITBs) と呼ぶ。ITBs には命令フェッチで最近使ったページテーブルのエントリがキャッシュされている。2つのITBとは、8KBページ用の8エントリのITBと4MBページ用の4エントリのITBである。どちらもフルアソシアティブで、置換アルゴリズムとしては「最後に使われたエントリ以外を置換する」方式である。

実行

第5ステージからあらゆる命令の実行が始まる。第4ステージでレジスタファイルからのリードを行っておく。第5ステージ以降のパイプラインはストールできない。

整数演算ユニット

整数演算ユニットは、整数演算命令を受け持つ。整数レジスタファイル (IRF) と E-box で構成されている。IRFには32本の64ビットレジスタがあり、4つのリードポートと2つのライトポートがある。これらポートは整数演算ユニットと分岐ユニットに同数ずつ配分されている。E-box には、加算器が1つ、論理演算ユニットが1つ、バレルシフタが1つ、乗算器が1つある。乗算とシフトとバイト操作を除く多くの整数演算命令は第5ステージで実行を完了するので、レイテンシは1サイクルである。バレルシフタはパイプライン化されているが、シフト命令とバイト操作命令は第6ステージの最後まで完了しないので、レイテンシは2サイクルとなる。乗算器は回路面積を節約するためパイプライン化されていない。そのため乗算命令のレイテンシは、オペランドの値によって19サイクルから23サイクルまで変化する。第7ステージで、整数演算命令は結果をIRFに書き込む。

アドレス演算ユニット

アドレス演算ユニットは A-box とも呼ばれ、ロード/ストア命令を実行する。アドレス演算ユニットと整数演算ユニットを同時に使えるようにするため、ロード/ストアの実効アドレス（仮想アドレス）を計算する加算器を A-box にも備えている。仮想アドレスを物理アドレスに変換するため、32エントリのフルアソシアティブなトランスレーション・ルックアサイド・バッファ (TLB) を使用する。このTLBを data translation buffer (DTB) と呼ぶ。21064は43ビットの仮想アドレスと34ビットの物理アドレスを実装しており、仮想アドレス空間は8TBまで、物理アドレス空間は16GBまでアドレス指定可能である。
ストア命令の結果は32バイト4エントリのライトバッファでバッファリングされる。連続なアドレスへの書き込みはライトバッファ上でマージされるので、バッファリングによって遅延が生じるものの、バス上のライト回数を減らす効果がある。そのためバストラフィックが軽減され、ロードも高速化される。

浮動小数点演算ユニット

浮動小数点演算ユニットは浮動小数点数レジスタファイル (FRF) と F-box で構成される。FRFには32本の64ビットレジスタがあり、リードポートが3つ、ライトポートが2つある。F-box には浮動小数点演算用パイプラインとパイプライン化されていない除算ユニットがある。除算ユニットは1サイクルに1ビット結果を出力する。
第4ステージでは、浮動小数点数レジスタファイルからデータを読み込むと、それを仮数部、指数部、符号にフォーマットする。加算命令の場合、まず加算器で指数部の差分を計算し、結果を正規化するために仮数部の桁あわせを行う準備をする。
第5および第6ステージで、加減算の場合は正規化のためのシフトを行いスティッキービットの計算を行う。乗算はパイプライン化され2ウェイ・インターリーブされた配列を使い、基数8のブースの乗算アルゴリズムを使用する。第8ステージで最後の加算を行い、並行して丸めを実施する。第10ステージで結果をFRFに書き込む。
このパイプラインで実行される命令のレイテンシは6サイクルとなる。単精度（32ビット）と倍精度（64ビット）の除算はパイプライン化されていない除算ユニットを使用し、レイテンシはそれぞれ31サイクルと61サイクルである。

キャッシュ

21064には、8KBのデータキャッシュ（ライトスルー方式）と8KBの命令キャッシュという2つの一次キャッシュが内蔵されている。どちらもダイレクトマップ方式で1サイクルでアクセスでき、ラインサイズは32バイトである。6トランジスタのSRAMセルで構成されており、98μm² の面積を占めている。1,024セル×66セルという形で構成されており、上端の2列は冗長性を持たせるために用意されている。
二次キャッシュはオプションで外付け可能で、128KBから16MBまでの容量をサポートしている。プロセッサの内部クロック周波数の3分の1から16分の1の速度で駆動し、200MHzなら12,5MHzから66,67MHzとなる。ダイレクトマップ方式でラインサイズはデフォルトでは128バイトであり、ラインサイズをもっと大きくすることもできる。二次キャッシュにはシステムバス経由でアクセスする。

外部インタフェース

外部インタフェースは128ビットのデータバスであり、内部クロック周波数の半分から8分の1の周波数で駆動する（200MHzなら25MHzから100MHz）。バス幅は変更可能で、64ビットにすることもできる。アドレスバスは34ビットである。

製造

総トランジスタ数は168万個である。最初のEV4はDECの CMOS-4 プロセスで製造されており、0.75μmルールとなっていて、3層のアルミニウム配線である。寸法は 13.9mm × 16.8mm で、面積は 233.52 mm² である。後のEV4Sは CMOS-4S プロセスで製造されており、0.675μm ルールを採用してCMOS-4から10%縮小している。こちらの寸法は 12.4mm × 15.0mm で、面積は 186 mm² である。
21064の電源電圧は3.3ボルト (V) である。EV4では200MHzのとき最大30Wの電力消費となる。EV4Sの場合、150MHzのとき21.0W、166MHzのとき22.5W、200MHzのとき27.0Wとなる。

パッケージ

21064のパッケージは431ピンでアルミナセラミックス製の pin grid array (PGA) であり、寸法は 61.72mm × 61.72mm である。431ピンのうち291ピンが信号線で、140ピンは電源または接地用である。ヒートシンクはパッケージに直付けする形で、タングステン製ヒートスプレッダから突き出ている2つのスタッドで固定する。

Alpha 21066

Alpha 21066（コード名 LCA4、Low Cost Alpha）は当初 DECchip 21066 と呼ばれ、Alpha 21064 の低価格版として1993年9月10日に発表され、1994年初めごろから量産出荷された。当初166MHz版で5,000個注文時の単価が385ドルだった。組み込みシステム向けの100MHz版も存在した。サンプル出荷は1994年後半に始まり、1995年第3四半期から量産出荷を開始した。Microprocessor Report 誌によれば、21066はPCIコントローラを内蔵した世界初のマイクロプロセッサだった。
主に Windows NT の動作するパーソナルコンピュータをターゲットとしていた。DECはデスクトップPCの Multia、OEM用マザーボード AXPpci 33、ワンボードマイコン AXPvme で採用している。DEC以外では、Aspen Systems のワークステーション Alpine、Carrera Computers のワークステーション Pantera I、NekoTech の PCである Mach 1-166、Parsysのスーパーコンピュータ TransAlpha TA9000 シリーズといった採用例がある。
プロセスを縮小させたため、組み込みシステムのコスト低減を図った機能を追加することができた。二次キャッシュとECCをサポートしたメモリコントローラ、8MBのVRAMに対応した限定的なグラフィックス・アクセラレータ機能、PCIコントローラ、外部から33MHzのクロック供給を受けて内部クロック周波数を発生する位相同期回路 (PLL) クロックジェネレータといった機能を内蔵している。
メモリコントローラは、64KBから2MBまでの二次キャッシュと2MBから512MBまでのメモリをサポートする。ECCは1ビット、2ビット、4ビットの誤りを検出し、1ビットの誤りを訂正できる。コスト低減のため、システムバスを64ビットに限定し、ピン数とパッケージサイズの縮小につながっている。バス幅縮小により帯域幅も低くなっており、性能も20%ほど低下しているが、許容範囲とされていた。
総トランジスタ数は175万個で、寸法は 17.0mm × 12.3mm、面積は 209.1 mm² である。CMOS-4S プロセスで製造され、0.675μmルールで3層配線である。パッケージは287ピンPGAで、57.404mm × 57.404 mm である。

Alpha 21066A

Alpha 21066A（コード名 LCA45）は、21064Aの低価格版である。1994年11月14日に発表され、同日から100MHz版と233MHz版のサンプル出荷を開始した。量産出荷は1995年3月からである。発表時、5,000個注文での単価は175ドル（100MHz版）と360ドル（233MHz）だった。後に266MHz版が追加された。
三菱電機がセカンドソースとなり、M36066A を生産した。1994年11月に100MHz版と233MHz版の生産を発表している。発表時、サンプル出荷は1994年12月、量産サンプル出荷は1995年7月、量産出荷は1995年9月と予定されていた。233MHz版は1,000個注文で単価490ドルとされていた。
21064Aをベースとしているが、一次キャッシュはそれよりも小さい。パワーマネジメント機能を備えており、ソフトウェアから動作周波数を変更できる。
DECは21066を使っていた各種製品で21066Aを採用した。DEC以外では、Tadpole Technology がノートパソコン ALPHAbook 1 に233MHz版を採用した。
総トランジスタ数は180万個で、寸法は 14.8mm × 14.8mm、面積は 161.32 mm² である。DECの第5世代CMOSプロセスである CMOS-5 で製造され、0.5μmルールで3層配線となっていた。三菱電機の M36066A も 0.5μm ルール、3層配線で製造された。

Alpha 21068

Alpha 21068 は 21066 から派生した組み込みシステムに特化した製品で、当初 DECchip 21068 と呼ばれていた。21066と全く同一だが、動作周波数を下げて消費電力とコストを低減している。サンプル出荷は1993年9月10日から、量産出荷は1994年初めごろからである。66MHzで駆動し、消費電力は最大で9Wである。当初5,000個注文で単価221ドルとされていた。1994年6月6日、16%値下げして186ドルとすることを発表し、1994年7月3日から実際に値下げした。
DECでは、OEM向けマザーボード AXPpci 33、ワンボードマイコンの AXPvme 64 と 64LC で採用した。

Alpha 21068A

Alpha 21068A は 21066Aから派生した組み込みシステムに特化した製品で、当初 DECchip 21068A と呼ばれていた。動作周波数は100MHzである。

チップセット

21064と21064Aには当初、標準チップセットが存在しなかった。DECでは特製のASICを各コンピュータシステムで使っていた。このことはサードパーティがAlphaを採用した場合の開発コストを押し上げる要因となっていたため、DECは標準チップセット DECchip 21070 (Apecs) をOEM向けに開発した。
21070には2つのモデル DECchip 21071 と DECchip 21072 がある。21071はワークステーション、21072はハイエンド・ワークステーションとローエンド・サーバをターゲットとしている。両者の違いはメモリサブシステムで、21071のメモリバスは64ビットで最大2GBまでのパリティ付きメモリをサポートし、21072は128ビットバスで最大4GBまでのECC付きメモリをサポートしている。
チップセットは3種類のチップで構成される。二次キャッシュおよびメモリコントローラの COMANCHE、データバス・スライスの DECADE、PCIコントローラの EPIC である。DECADEはデータバスの32ビット幅部分を実装したもので、21071ではそれを2個、21072では4個使用する。EPICは32ビットPCIバスと64/128ビットのシステムバスとのインタフェースを提供する。
21070は1994年1月10日にサンプル出荷を開始した。5,000個注文時の単価は、21071は90ドル、21072は120ドルである。
21070を採用した例としては、Carrera Computers のワークステーション Pantera がある。DECではAlphaStationやシングルプロセッサのAlphaServerの一部機種で採用した。