はじめに
AmpereOneのProduct Briefを見て、気が付いたこと。L1 Cacheのサイズが小さいこと。
L2: 2 MB per Core L1: 16 KB Instruction and 64 KB Data per Core
何故?
Altra Max を振り返る
Altra MaxのDataSheetを見たら、
128 Arm® v8.2+ 64-bit CPU cores up to 3.0 GHz maximum
- 64 KB L1 I-cache, 64 KB L1 D-cache per core
- 1 MB L2 cache per core
- 16 MB System Level Cache (SLC)
- 2x full-width (128b) SIMD
- Coherent Mesh Interconnect (CMI):
- Distributed snoop filtering
とありました。
L1 Cache は、I/D、共に64KB で、L2が 1MB です。
AmpereOneは、L1-I Cache が 16KB、L1-D Cache が 64KB、L2 が 2MB になっています。
コア数が
136 Cores | 144 cores | 160 cores | 176 cores | 192 cores
となっているので、L2 のトータルのサイズは大きくなりますが、L1-I の 16KB って、なんで小さくしたのでしょうか?
動作周波数も Altra Max と同じで最大 3.0GHz です。
ISA は、Armv8.6+, SBSA 5。Altra Max の ISAは、Armv8.2+, SBSA Level 4
Armv8.6 の特徴は、
Armv8.6-Aとは何? わかりやすく解説 Weblio辞書
によると、
BF16のサポート、っぽです。AmpereOneはBF16 をサポートしていると、Product Brief に書いてあります。
Apple Avalanche+Blizzard(A15, M2), Apple Everest+Sawtooth (A16) も Armv8.6のようです。
下記の記事によると、L1-I も L1-D と同じで64KB ということですが。
おわりに
AmpereOneのL1-I Cacheのサイズが小さいのは、どうしてでしょうか?
によると、
The real interesting change here is the reduction from a 64KB 4-way L1 instruction cache to a 16KB 4-way L1 instruction cache. This is an interesting move that I don’t know will be beneficial for performance. Now traditionally, a bigger L1 instruction cache (L1i) is traditionally considered better because staying in the caches closest to the core is much more power efficient then going out to higher level caches, like the L2 cache, as well as being higher bandwidth.