前回の続き:
キャッシュとメモリ・アクセス
- P870はアドレス生成用に3本のパイプを持っている。
- 2本のパイプはロードまたはストアを処理し、3本目のパイプはロードのみを処理する。
- Cortex X2、A710、Zen 4で見られるものと似ている。
- データ・キャッシュ・アクセスには4サイクルかかる。
- アドレス生成、タグ検索、データ・キャッシュ・アクセスは3サイクルで行われる。
- P870は、データを移動させるためだけに余分なパイプライン・ステージ(Drv)を費やしている。
- 将来の設計では、ロード・トゥ・ユースのレイテンシが3サイクルになるのだろうか。それは完全に可能なはずだ。
- 結局のところ、AMDのAthlonラインは、同じような周波数で動作しながら、古いプロセスノードで64KBのL1Dに対して3サイクルのレイテンシを達成した。
- 2本のパイプはロードまたはストアを処理し、3本目のパイプはロードのみを処理する。
- アドレス変換:64エントリーのDTLBで処理される
- 1024エントリーのL2 TLBでバックアップされる。
- 最近のL2 TLBは少し小さいが、ARMはCortex A710で同様のL2 TLBサイズを持っている。
- L1Dミスは、共有のExclusive L2キャッシュで処理される。
- L2キャッシュは複数のコアからのアクセスを処理するためにバンクされており、レイテンシは16サイクルである。
- インテルのEコアは、同様にL2を共有するクアッドコアクラスターに配置されており、L2レイテンシは20サイクルである。
- SiFive社ではL2サイズを設定できるが、例として4MBのL2構成を挙げている。
- コヒーレンシを処理するため、L2コンプレックスはスヌープ・フィルターを維持し、Cortex A72が使用していたものと同様の方式で、コア-プライベート・キャッシュの内容を追跡する。
- P870のL3キャッシュはクラスタ間で共有される。L3の容量とレイテンシは実装に依存するが、SiFiveは性能見積もりに16MBのL3構成を使用した。
信頼性機能
- SiFive P870-A
- エラー検出と訂正に特に注意を払ったP870コアの車載用バリアントである。
- キャッシュとレジスタ・ファイルに対するECCとパリティ保護の標準セット
- 高信頼性キャッシュ・コントローラと相互接続
- SiFiveがこれらのコンポーネントをより堅牢にするために特別に何をしたのかは分からないが、他のCPUはインターコネクトの様々なキューや送信リンクにパリティやECC保護機能を備えていることが多い。
- 例えば、Zen 4のスケーラブル・データ・ポート(Infinity Fabricへのインターフェース)はパリティ保護されており、UMC(メモリ・コントローラー)の前のキューはECC保護されている。
SiFive P870-A | AMD Zen 4 | Fujitsu SPARC64 VIIIfx | |
---|---|---|---|
Register Files | Parity | Parity | Parity |
L1 Instruction Cache | SECDED ECC for tags and data | Parity for tags and data | Data parity protected Tags parity protected and duplicated in L2 complex |
L1 Data Cache | SECDED ECC for tags and data | ECC for tags and data | ECC for data Tags parity protected and duplicated in L2 complex |
L2, L3 caches | SECDED ECC for tags and data | ECC for tags and data | SECDED ECC for tags a |
- SiFiveはP870コアのペアをロックステップで動作させ、信頼性をさらに向上させることができる。
- 航空機や宇宙船が複数のコンピューターで冗長計算を行うのと少し似ている。
- ランダムなビット反転が複数のコアに同じ影響を与える可能性は低いため、このアプローチでは、計算スループットは低下するが、基本的にすべてのコア構造を複製することで信頼性を劇的に向上させることができる。
- このようなロックステップ動作が可能なのは、各コアがリセット後に明確に定義された状態から始まり、その後の動作が決定論的だからである。