やかんです。
現在、FUJITSU Processor A64FXについて眺めています。データシートを眺めるだけでもお腹いっぱいですが、やっぱり「行間」が残るのでその行間を可能な限り埋めていきたい所存です。
このプロセッサについては、富士通さんがHot Chips 30というプロセッサ系の学会?で発表をされているようで、その資料が公開されていました↓
すごいですね、難しそうです。これに頑張って食らいついていこう、という試みになります。特に、キャッシュの部分ですねー、見たいのは。頑張ります。
Level 1 Cache
スライドの22枚目です。
まず、
L1 cache throughput maximizes core performance
とあります。L1キャッシュのスループット(の良さ)がコアのパフォーマンスに影響するぜ、みたいな話だと思います。キャッシュのスループット、というのは、レスポンスのことでしょうかね?キャッシュにアクセスした時のレスポンスの速さ。
でもそれだとスループットよりもレイテンシですよね。なんだろうキャッシュのスループットって。gpt-4oくんに尋ねてみます。
もちろん、あくまで参考程度。
ふむ。キャッシュというか、メモリについてスループットと言った時とレイテンシと言った時、多分そんなに違いはないんじゃないのかな。どうなんだろう。まあでも、ポートがめっちゃあればスループットは向上するか。
次、
An unaligned SIMD load crossing cache line keeps the same throughput
とあります。これは呪文の様ですね。
“unaligned SIMD load”てなわけで、アラインメントが整っていないデータをキャッシュラインから読み込むってことだと思います。それは結局、キャッシュラインを跨いで1つのデータを読むことになりますが、キャッシュラインを跨ぐ場合でも、またがない場合と同じスループットを示すよってことですね。
お次は、
“Combined Gather” mechanism increasing gather throughput
です。スライドに掲載されている図がわかりやすいですが、スパコンにおいて、一連のデータにおけるレジスタの近接性というのは非常に大事なんだそうです。これについて、メモリ的に飛び飛びなデータでも近接したレジスタに格納するよ、というメカニズムがある的な話なんじゃないでしょうか。
あとこれは予想ですが、Combined Gatherメカニズムは暗黙のうちにハードウェアがやってくれるんじゃないでしょうか?プロセッサの話だしね。。
Many-Core Architecture
スライド13枚目。
まず、
A64FX consists of four CMGs (Core Memory Group)
とあります。「CMGってなんぞや?」て感じですね。聞き覚えはありますが。もうちょっと読み進めてみます。
A CMG consists of 13 cores, an L2 cache and a memory controller
ふむ。
One out of 13 cores is an assistant core which handles daemon, I/O, etc.
ふむ。一つのCMGは13このコアとL2キャッシュとメモリコントローラからなるよってことですね。で、その13個のコアのうち1つはアシスタントコアで、特定の用途に使われるよと。
Four CMGs keep cache coherency by ccNUMA with on-chip directory
ccNUMAってなんじゃ。NUMAはNon Uniform Memory Accessであるという知識はありますが、理解してないのでまずこれの理解を試みます。確かUMAが、みんなで一つのメモリを共有するやつでしたよね、、
さーっとググってみました。NUMAはUMAと対比しながら理解するのが良さそう。
UMAは、1つのメモリを複数のプロセッサで共有します。また設計上、1つ1つのプロセッサからメモリに対するアクセス時間は等しくなるように設計されるそうです。
これに対しNUMAは、みんなで共有するメモリもあるけど、各プロセッサが独自のメモリ(ローカルメモリ)も持つ構成のようです。ローカルメモリがあるので、共有されたメモリへのプロセッサからのアクセス時間は均等じゃないそう。
で、ccNUMAの場合は、NUMAにて存在する各プロセッサのメモリキャッシュを、一定のプロトコルに基づいて揃えるよ、という機能が備わったものになります。
はい。次に、スライドに掲載されている図について考えます。
図は、権利周りよくわからないので載せません
引用の仕方とか勉強しておけばよかったな。。
まず、この図においてL2キャッシュが16wayであることがわかりますね。そして、一つのCMGには前述の通り13個のコアがあり、この13個のコアは1つのL2キャッシュを共有する形になります。各CMGにL2キャッシュが存在するわけですが、それらはccNUMAの構成により一貫性が保たれます。
すごいですね。。
だから、ソフトウェアはコア単位で実装するもよし、CMG単位で実装するもよし、みたいな話なんですかね?この辺よくわかってないですが。
High Bandwidth
スライド14枚目。
まず、
Extremely high bandwidth in caches and memory
bandwidthって帯域幅のことですよね、、?はい。ググったところ、これは合ってそうです。
キャッシュとメモリの帯域幅が大きいよってことですかね。ありがたい。
次に、
A64FX has out-of-order mechanisms in cores, caches and memory controllers. It maximizes the capability of each layer’s bandwidth
ふむ。A64FXはOoOに対応してると。OoOがキャッシュやメモリコントローラにも備わってるよってどういうことだ?gpt-4oくんにお尋ねしたところ、「キャッシュの更新とかキャッシュミスの処理も、OoOに載せるよ」みたいな話らしいです。ふむ。
次に、このスライドの図を見ていきます。非常にわかりやすい図ですね。
CMGにおけるアシスタントではない12個のコアは、それぞれL1Dキャッシュを持ちます。64KiBで4wayだそうです。また、このキャッシュのスループットについては11.0TB/sだそうです。で、コアの外側にL2キャッシュがあって、これは8MiBで16way。このスループットは3.6TB/sらしいです。最後に、コアの外側にメモリがあると。
以上踏まえて。
「何これ」っていう、知らないワードも出てきますがほんのわずかでも自分にわかるものがあるのは嬉しいです。まあ、全然わからないことだらけなんですけどね。
これらも踏まえて、コンピュータアーキテクチャのレポートに邁進します。
夏休みはまだまだ先。
こちらの記事は以上です。最後までお読みいただき、ありがとうございます。