Alpha 21364
歴史
1998年10月、コンパックが Microprocessor Forum で発表したもので、Alpha 21264 に1.5MBの6ウェイ・セットアソシアティブの二次キャッシュと Direct Rambus DRAM メモリコントローラと他のマイクロプロセッサと接続するためのネットワークコントローラを内蔵させたものと説明された。21264コアへの変更点としては、ビクティム・バッファを4倍の32エントリとし、命令キャッシュとデータキャッシュそれぞれに16エントリずつとした。Microprocessor Report 誌には、分岐予測の実装を若干変更して予測精度を上げ、誤予測時に使用するミスバッファの容量を21264の8エントリから16エントリへと倍増させる予定だという記事が掲載された。
1999年後半にテープアウトする予定で、2000年前半にサンプル出荷、2000年後半に量産出荷を予定していた。しかしスケジュールは遅延し、テープアウトは2001年4月となった。21364を採用したシステムが登場したのは2002年1月20日のことである。動作周波数は1.25GHzだが、AlphaServer ES47/ES80/GS1280 では1.0GHzおよび1.15GHzで駆動していた。それまでの Alpha マイクロプロセッサとは異なり、Alpha 21364 は一般市場で販売されなかった。
Alpha 21364 というモデル番号は元々は Alpha 21264 の後継を意図し、EV8 というコード名で、4ウェイの同時マルチスレッディング (SMT) を実装する予定だった。このEV8は1999年10月の Microprocessor Forum で発表されたが、開発がだいぶ進んだ2001年6月25日に中止となった。
開発
Alpha 21364 の開発においては、メモリ性能とマルチプロセッサのスケーラビリティの向上に重点を置いていた。メモリ性能を重視していたことは、Microprocessor Report 誌でAlphaアーキテクチャのチーフアーキテクトだったリチャード・L・サイツが書いた "It's the Memory, Stupid!" と題したコラムに現れている。そのコラムは「次の10年間、メモリサブシステムの設計がマイクロプロセッサの唯一の重要な設計課題となるだろう」という一文で結ばれていた。
詳細
Alpha 21364 は Alpha 21264 に1.75MBの二次キャッシュを内蔵し、2つのメモリコントローラとネットワークコントローラを統合したものである。
コア
Alpha 21364 のコアは Alpha 21264 の派生の1つである EV68CB (Alpha 21264C) に基づいている。唯一の変更点はビクティム・バッファを4倍の32エントリにしたことである。命令キャッシュとデータキャッシュにそれぞれ16エントリずつ割り当てられている。21364はAlphaアーキテクチャの第4世代の実装だが、コア自体は Alpha 21264 から大きく変化していない。
キャッシュ
二次キャッシュは命令/データを統合したキャッシュで、容量は1.75MBである。7ウェイ・セットアソシアティブで、ラインサイズは64バイト、ライト時のポリシーはライトバックである。1ビットの誤りを訂正でき、2ビットの誤りを検出できる (SECDED) 誤り訂正符号 (ECC) を採用している。キャッシュコントローラとは128ビットのデータパスで接続されている。二次キャッシュへのアクセスは完全にパイプライン化されており、1.0GHzで動作する場合、16GB/sの帯域幅を継続的に提供できる。
必要なデータが一次キャッシュになく、二次キャッシュから持ってくる場合、12サイクルかかる。このレイテンシは Microprocessor Report 誌などの評論家には大きすぎると見られていた。レイテンシを改善しなければ性能向上は見込めないと見られていた。21364が採用している21264をベースとしたコアは外付け二次キャッシュを使うよう設計されたもので、通常のSRAMを使うので二次キャッシュのレイテンシは21364の場合より遥かに大きい。したがって、データ転送レートは制限されていた。レイテンシをそれ以上改善できないことが明らかになると、設計者らは二次キャッシュの電力消費量を減らすことに集中した。レイテンシ問題の解決には Alpha 21264 コアの大幅な修正を必要とするため、コンパックはその点に目をつぶることにした。レイテンシが大きいことを逆に利用し、要求されたデータがどのバンクにあるかを調べるのにキャッシュタグを見る際、バンク本体を活性化させる必要が無い設計とした。このため、二次キャッシュアクセスでの電力消費量を低減させている。
二次キャッシュのタグ部分には575万トランジスタ、データ部分には1億800万トランジスタを使っている。
メモリコントローラ
21364は2つのメモリコントローラを統合しており、プロセッサのクロック周波数の3分の2の周波数で操作できる RDRAM をサポートしている。1.2GHzなら800MHzで駆動できる。コンパックが設計したメモリコントローラには通常のRDRAM対応のコントローラにはない機能があり、128ページをオープンしてそれらのページのアクセスレイテンシを低減できる。また、独自のフォールトトレラント機能も備えている。
メモリコントローラはそれぞれ5つのRDRAMチャネルを提供し、各チャネルは PC800 RIMM をサポート可能である。そのうち4チャネルは通常のメモリ用だが、5つめはRAIDのような冗長性を提供する。各チャネルは16ビット幅で400MHzで駆動する。そしてクロック信号の立ち上がりと立ち下がりでデータ転送するので（ダブルデータレート）、転送レートは 800MT/s となり、1.6GB/s の帯域幅となる。8本のチャネルを合計するとメモリ帯域幅は 12.8GB/s となる。
メモリコントローラはキャッシュコヒーレンシも提供する。それぞれのメモリコントローラにコヒーレンシエンジンがある。21364ではディレクトリによるキャッシュコヒーレンシ方式を採用しており、メモリの一部を使ってMESIプロトコル相当のコヒーレンシデータを格納する。
R-box
R-box はネットワークルーターである。North、South、East、West と名付けられた4つのポートを使ってマイクロプロセッサ間を相互接続する。各ポートは2つの39ビットの一方向リンクからなり、800MHzで駆動される。そのうち32ビットがデータ、7ビットがECCである。第5のポートもあり、I/Oに使用する。このI/O用ポートには IO7 というASICを接続し、それが AGP 4x バスと2つの PCI-X バスへのブリッジになっている。I/Oポートは2つの32ビットの一方向リンクからなり、200MHzで駆動され、ピーク帯域幅は 3.2GB/s となる。他のポートよりも駆動周波数が低いのは、I/O ASIC の設計を単純化するためである。
シャッフルと2Dトーラスという2種類のネットワークトポロジーを使い、最大127個のマイクロプロセッサを接続できる。シャッフルというトポロジーは他のマイクロプロセッサとより直接的に経路を確保し、レイテンシも小さい。したがって性能が向上するが、最大8プロセッサしか接続できない。2Dトーラスというトポロジーでは最大128プロセッサのネットワークを構成できる。
マルチプロセッシングシステムでは、各プロセッサはそれぞれローカルメモリを持ったノードとなる。他のノードのメモリにもアクセスできるが、ローカルメモリよりもレイテンシが大きい。距離が離れるほどレイテンシは大きくなるので、Alpha 21364 のマルチプロセッシングはNUMAである。I/Oも同様に分散配置できる。またマルチプロセッサシステムでは、ローカルなメモリやI/Oがなくとも他の Alpha 21364 のメモリやI/Oデバイスを使うことでノードを動作させることも可能である。
フォールトトレラント性
Alpha 21364 を使ったシステムは、ロックステップ方式のフォールトトレラントシステムとして構成可能である。これは、タンデムのフォールトトレラント・サーバをMIPSアーキテクチャからAlphaに移行させるとコンパックが決定したために付与された機能である。しかし実際には Itanium を採用したため、Alpha を使ったフォールトトレラントシステムは開発されなかった。
製造
総トランジスタ数は1億5200万個である。寸法は 21.1mm × 18.8mm で、面積は 397mm² である。IBMが 0.18μm で7層銅配線のCMOSプロセスで製造した。1,443接点のLGA (Land Grid Array)でパッケージされている。電源電圧は1.65Vで、外部インタフェースの電圧レベルは1.5Vである。消費電力は1.25GHzで155Wとなっている。
Alpha 21364A
コード名 EV79（当初は EV78）で、Alpha 21364 の発展バージョンである。最後のAlphaアーキテクチャのマイクロプロセッサとなる予定だった。2004年に登場予定だったが、2003年10月23日にキャンセルとなった。ヒューレット・パッカード (HP) は性能問題とスケジュール問題を理由に挙げている。代替として同日、EV7z が発表された。
2003年2月、国際固体素子回路会議 (ISSCC) でHPからプロトタイプが紹介されている。動作周波数は1.45GHz、ダイ面積は 251mm²、電源電圧は1.2V、消費電力は100W（推定）だった。
主な改良点はクロック周波数を 1.6GHz から 1.7GHz に上げることと、1066Mbit/s のRDRAMに対応することである。IBMが 0.13μm のSOIプロセスで製造する予定だった。それによってダイは小さくなり、電圧も低くなるので、電力消費も抑えられる。
EV7z
EV7z は Alpha 21364 の発展版である。最後のAlphaアーキテクチャのマイクロプロセッサとなった。2003年10月23日、HPが Alpha 21364A をキャンセルした際に代替としてEV7zを発表した。2004年8月16日に登場した AlphaServer GS1280 がEV7z を採用した唯一のシステムである。2007年4月27日にそのシステムが販売終了となり、このプロセッサも製造されなくなった。1.3GHzで動作し、PC1066 RIMM をサポートしている。Alpha 21364 と同じ 0.18μm プロセスで製造された。従来の Alpha 21364 に比べると14%から16%高速だが、Alpha 21364A の予想された性能には及ばない。