Alpha 21264は非常に有名なプロセッサで、コンピュータアーキテクチャ系を生業とする者ならば必ず読んでおかなければならないものの一つに入る論文だと聞いている。が、私はまじめに読んだことが無いのでこの際きちんと理解しようと思う。
実行エンジン
図6は、6つの実行パイプラインを示したものである。各パイプラインは、対応するレジスタファイルの上下に配置されている。
- 浮動小数点
- 整数
2つのレジスタファイルが用意されているのは、クラスタ0とクラスタ1でレジスタの読み書きを分離し、合計で4ウェイ整数命令実行をサポートしている。クラスタリングとアービトレーションの簡素化により、性能コストは数パーセントダウンするが受け入れ可能である。
図6には浮動小数点実行パイプラインの構成も示している。1つのクラスタに2つの浮動小数点実行パイプラインがあり、72エントリの物理レジスタファイルを備えている。
21264には、21164には搭載されていなかった新規命令が搭載されている。
内部メモリシステム
内部メモリシステムにおいて、整数実行パイプから最大で2つのメモリアクセスを実行することができる。この2つのメモリアクセス命令はアウトオブオーダで実行される。
- 最大32個のインフライトメモリロード
- 最大32個のインフライトメモリストア
- 8つのインフライトキャッシュミス
を管理することができる。
64kBの2-wayセットアソシアティブデータキャッシュを搭載している。
データパス
21264は、1サイクル当たり2つのロード・ストア命令の任意の組み合わせをサポートしている。データキャッシュは、2ポートアクセスを許可するためにダブルポンプされている。これは、データキャッシュは毎サイクル2回参照され、クロックフェース上で2回アクセスが実行されている。
図7は、メモリシステムの内部データ経路を示したものである。
- 64ビットデータバス(x2) : 非常に重要なもので、各ロード命令、データキャッシュ、ストアデータバッファ、L2フィルなどのデータはこのデータバスを通じて授受される。
- ストア命令
図7は、内部メモリシステムとデータの出入り口についても示している。フィルされたデータはデータバスを経由して渡される。また、データフィルと同時にそのキャッシュの内容が読みだされ、バスインタフェースユニットを通じてそのEvictionデータを外部に書き戻す。