Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

AmpereOneのL1-I Cacheが小さいぞ!

はじめに

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 ということですが。

www.coelacanth-dream.com

おわりに

AmpereOneのL1-I Cacheのサイズが小さいのは、どうしてでしょうか?

www.semianalysis.com

によると、

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.