SSブログ

Apple Silicon MacのFirestormコア [日常のあれやこれや]

ここを経由してここ を教えてもらった。そこにApple M1 SoCの高性能側のコアであるFirestormのブロックダイアグラムがあって、なかなか面白い。
11042nd1.png
これだと8命令を同時にデコードできて、デコードした630個の命令の中から実行可能な命令を選び出せ(ディスパッチ)て、レジスタ名付け替え(Out-of-Order実行のキモの機構)が整数用に354エントリ浮動小数点用に384エントリあって、整数ALUが7つと分岐専用(?)ユニットがひとつ、そのうち整数の掛け算ができるのが2つと割り算までできるのが1つ(それ以外のALUはマイクロコードで実行か)、浮動小数点とベクタ演算のユニット(64ビット命令セットではスカラ浮動小数点もSIMDユニットが受け持つらしい。たしかに浮動小数点演算はヘビーでレイテンシも深くなりがちなのでALUに持たない方が簡単だな)が4つ、ロード/ストアユニットが4つとそれ用の深さ100以上のキューがそれぞれひとつずつ、それに192Kの命令用L1キャッシュと128Kのデータ用L1キャッシュと、L2キャッシュ用のTLBが3072ページぶんある(L2はコアに共通だったと思ったけど、それぞれTLBを持っててカチ合わないんだっけ?)、と描いてある。どこまでほんとなのかよくわからないけど、ディスパッチユニットのウィンドウサイズを測定したらしいデータを載せているので、そこそこ自信があるらしい。

ARMの32ビットモードは歴史を抱えてて結構複雑になってるので、やっぱり32ビット命令は無視してデコードユニットを軽くして、そのぶんALUの数を増やしたんだろうなあ。ベクタレジスタは128ビット幅なのでx64の半分だけど、浮動小数点/SIMDユニットが4つとレジスタリネームが384エントリもあってそれが4コアあるので、FFTとかサイズ次第では爆速じゃないかなあ。

ALUはx64とARMで実質的に同じことをすればいいんだけど、こう見るとx64は命令長が可変だというだけですごく不利のような気がしてくる。M1みたいに古い命令はサポートしない、みたいなことはできなくて「自分の過去は全て責任を持つ」でないといけないのでよけい厳しいよなあ。

ユニットのレイテンシの違いや分岐命令でストールしたり、整数演算とSIMDがバランスよく並ぶなんてこともないだろうから、全部のALUとFP/SIMDユニットがいつも動いてるなんてことはないだろうけど、FirestormのInstructions per Clockのスループットは最大8命令ということで、これだとクロック同じでコア数同じでも性能5割増しとか十分あり得そうだよなあ。

LLVMコンパイラもAppleが仕切ってるわけだから、ハードウェアサポートしたくない命令を吐かないようにしてしまえばいいわけで、ARMの実行効率に寄与しない部分は全部剥ぎ取ることができる。Appleはやろうと思えばバリバリ筋肉質のコアにできる、ということだな。IntelやAMDに言わせれば「ずるい」ということになるけど。

なんか、買ったばかりのMacbook Proが、ぜんぜん使ってないところに電気を食ってるんじゃないかと思えてくるよなあ。
nice!(0)  コメント(3) 

nice! 0

コメント 3

お名前(必須)

Intel は同じことやらないのかとか思いましたがそう言えば Itanium とかいうのありましたよね、64 bit 専用だとかいう。まだあるのかと思いきや来年で製造終了らしいです。時代が悪かったんでしょうね。今の発想で再設計すればもっといいものが生み出せると思いますが、垂直統合型のAppleのようにはなかなかできないでしょうね。
by お名前(必須) (2020-11-27 22:28) 

decafish

コメントありがとうございます。
Itaniumはどっちかといえばグチャグチャになったx86をすっぱり捨てて当時最先端のRISCとVLIWの組み合わせで64bitを出直そうとしたけど、結局32ビット互換モードとか当初の志からずれたことをせざるを得なくなって目標を見失った、というふうに僕には見えました。
それでも20年も持ち堪えたというのはやはりプロセサ開発はイナーシャが大きくて、むしろやめるにやめられなかったということなんでしょうか。

しかし十数年も経てばAppleにも同じことが起こるはずです。OSのコア部分はもう何年も書き換えられてなくてパラメータ調整だけのようなので、今は飛ぶ鳥落とすM1もいずれはそうなるでしょう。

Intelと違ってファブを持っていないので、Appleのいつもの手でM2、M3...M9ときて、MXはそれまでをすっぱり捨ててどっかから買ってくる、なんてことになりそうな気もしますが...
by decafish (2020-11-28 10:47) 

MISTLua

Itaniumが失敗したのはVLIWという設計原理がやってみるまで性能が出ないとはわからなかったというのが大きいと思いますね。末期のCPUは一度バラバラにしてOoO実行するという本末転倒なことをしていたみたいですし。
今回のApple Siliconがこれだけ成功したのはスマホで培った省電力と時価総額一位の企業による圧倒的な開発資金による力が大きいのかなあと思います。630個のリオーダーバッファは当時のIntelやAMDのCPUのそれよりも倍以上ありますから。
by MISTLua (2023-06-23 17:09) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

仕事で困ってることFirestormコアのALU ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。