後藤弘茂のWeekly海外ニュース
処理能力が2倍に拡張されたAMD Zen 2のAVXユニット
2019年6月27日 12:11
SIMDユニットだけでなくレジスタとデータポートも2倍に
Zen 2の演算エンジンでもっとも強化されたのはAVX系命令を実行する「浮動小数点(Floating Point)/SIMD(Single Instruction, Multiple Data)」パイプ群だ。Zen 2では、SIMDパイプはZenまでの128-bit幅から256-bit幅へと拡張された。32-bitの単精度浮動小数点演算(FP32)なら8個のエレメントを同時に1サイクルで処理できる。Zen 2では、積和算(Fused Multiply Add:FMAまたはFMAD)が可能なSIMDユニットを2個備えているため、積和算なら1サイクルに32オペレーション分の処理が可能だ。
AMDは、AVX2の256-bit命令をZenでもサポートしていたが、SIMD演算ユニット自体は128-bit幅に留めていた。そのため、Zen 2では、256-bitのAVX-256命令を使う場合は、浮動小数点演算のスループットは2倍になった。ただし、512-bit幅SIMDのAVX-512はZen 2ではサポートされない。AVX-512は単にSIMD幅を2倍にしただけでなく、さまざまな拡張が加わっているからだ。
PDF版はこちら
Zen 2ではFP/SIMDパイプを256-bit幅にしたことに合わせて、物理レジスタファイルも従来の128-bit×160本から、256-bit×160本へと倍増させた。レジスタ容量は2.5KB分から5KB分へと増えたことになる。
さらに、FP/SIMDパイプの拡張に合わせて、L1データキャッシュとFPユニットのパスも、2個の256-bitロードと1個の256-bitストアを並列に可能に拡張した。従来のZenでは、2個の128-bitロードと1個の128-bitストアを並列に行なう仕様だった。ロード/ストアの帯域は2倍になったことになる。
整数コア側では、ロード/ストアのためのアドレス生成(Address Generation)も3パイプで並列になった。FP/SIMDの256-bitへの倍拡張に合わせてレジスタやポートも拡張された。
ただし、Zen 2でもFP/SIMDユニットの演算パイプは従来どおり4で、毎サイクル最大4個のMicro-OPsのディスパッチである点は変わっていない。たとえば、256-bitになったパイプに、各2個ずつ128-bitの演算Micro-OPsを発行することはできない。
命令スケジューラのキューは、Zenの96から、Zen 2では100へと小幅に拡張された。ちなみに、初代Bulldozerは128-bitのFMADパイプは2本だった。Bulldozerでは2つの整数コアで1個のFP/SIMDユニットを共有していたが、Zen/Zen 2ではSMT(Simultaneous Multithreading)時には2スレッドが1個のFP/SIMDを共有する。
PDF版はこちら
パイプによって機能が異なるZen系アーキテクチャのSIMDユニット
Zen/Zen 2アーキテクチャのFP/SIMDの4パイプは、浮動小数点(FP)の積和算(Fused Multiply Add:FMAまたはFMAD)と積算(Multiply:MUL)のパイプが2本、FPの加算(Addition:ADD)のパイプが2本の構成だ。浮動小数点演算なのでFMAD、FMUL、FMADとなる。FMADとFMULのパイプにはMULという名称がつけられているが、実際にはFMADユニットも実装されている。これは、Zen 2でも変わらない。
ちなみに、Zenのソフトウェア最適化ガイドではパイプがナンバリングされている。1つ目のMULがパイプ0、2つ目のMULがパイプ1、1つ目のADDがパイプ2、2つ目のADDがパイプ3。つまり、パイプ0とパイプ1がMUL、パイプ2とパイプ3がADDだ。
初代Zenでは、各パイプがサポートするファンクションが異なっており、パイプナンバーに識別できる。たとえば、パイプ0は浮動小数点(FP)の積和算(FMA)と積算(MUL)と整数のMULと加算(ADD)。パイプ1はFP FMAとMULと整数ADDは備えるが、整数MULを持たず、代わりにSIMDのシャッフルユニットを備える。
AMDによると、ソフトウェアの最適化を容易にするために、4本のパイプに機能を分散しており、Zen 2でも各パイプは非対称だという。下がZenのFP/SIMDパイプのユニット構成図だ。
3オペランドのFMADのサポート方式
Zen系マイクロアーキテクチャでは、MULとADDを組み合わせるFMADも従来どおりサポートする(ただし3オペランドフォーマットのFMA3のみ)。Zenでは、FMADは、FMULパイプとFMADパイプを連結させて使うわけではない。FMADユニット自体はFMULパイプに実装されている。しかし、ZenではFMADオペレーションの場合は、FMADのパイプの片方のパイプ3は使うことができない。それは、レジスタからの読み出しポートを、2本のFMADパイプが使ってしまうからだ。
FMADでは演算は3オペランドとなる。「a * b + c」で3つのソースオペランドをレジスタから読み出す。しかし、AMDのFP/SIMDパイプは通常の演算で必要となる2ソース読み出し分のレジスタリードポートしか備えていない。そこで、FMAD実行時は、レジスタからの読み出しパスをADDパイプから借用する。
具体的にはパイプ3の2本のレジスタリードパスを、パイプ0とパイプ1のFMADにそれぞれ1本ずつ接続される。その結果パイプ0とパイプ1のFMADは3レジスタリードが可能となり、3オペランド演算が可能になる。
PDF版はこちら
この構成は基本的にZen 2でも変わらないと見られる。それは、Zen 2のほうが、Zenよりさらにレジスタポートが高級になっているからだ。現在のベクタ幅の広いSIMD演算ユニットでは、演算ユニットそのものだけでなく、配線が実装上非常に複雑だ。256-bit SIMDユニットなら、256-bit幅のレジスタリードポートが2つ、同じく256-bit幅のレジスタライトポートが1つ必要になる。4個のSIMD演算ユニットがあれば、4倍のポートが必要で、それをコンフリクトフリーで実装する必要がある。
Zenが、こうしたレジスタポートの使い回し的な実装をしているのは、物理的なレジスタポート数を減らすためだ。ちなみに、IntelのSunny Coveコアも、まったく異なるものの、やはりレジスタポートをセーブしたSIMDユニット群の設計を採っている可能性が高い。
ちなみに、AMDはBulldozerでは4オペランドのFMAD命令をサポートしていた。しかし、Zen以降は3オペランドのFMADのみサポートされている。
Zen 2では、256-bitへとSIMDユニットが拡張されただけでなく、ユニット自体のパフォーマンスも上がった。Zenでは4サイクルだった乗算(MUL)のレイテンシがZen 2では3サイクルとなった。
PDF版はこちら
256-bit化によって内部命令を減らして制御を容易に
AMDは、Zenまで、AVX2の256-bit命令をサポートしていたが、演算ユニット自体は128-bit幅に留めていた。256-bitのAVX2命令は、2つのSIMDパイプを同期させて実行するのではなく、内部命令レベルで2個の命令に分割して実行していた。
たとえば、Zenでは、256-bit幅のAVX2命令は、フロントエンドでは1個の256-bit Instructionに変換される。しかし、ディスパッチされる段階で、256-bit Instructionは2個の128-bit 演算Micro-OPに変換され実行パスに送られる。
ちなみに、Bulldozer系の場合は、256-bit幅のAVX2命令は、フロントエンドで2個のMacroOPに変換(Fast-Path Double)されていた。
Zen 2では、内部が256-bit化されたことで、スループットが2倍になっただけでなく、スケジューリングリソースもセーブされ、より命令実行が効率的になり、省電力となり性能を引き上げる余地も増えたという。ZenのアーキテクトMike Clark氏(Corporate Fellow & Zen Architect, AMD)は次のように語る
「(AVX2 256-bit命令については)Zen 2とZenのどちらも、(x86/x64命令から)デコードしたあとは1個のInstructionだ。しかし、Zenではディスパッチのさいに2つの(128-bit)Micro-OPsになる。そのため、4つしかないディスパッチポートのうち2つを(1個のAVX2 256-bit命令で)使ってしまう。また、スケジューラにも2つのエントリが必要で、レジスタ読み出しも2セットの(128-bit)レジスタの読み出しとしなければならない。
加えてロードオペレーションがある。Zenでは、(1個のAVX2 256命令から)2個の(128-bit)ロード/ストアMicro-OPsをロードキューに入れる必要がある。そして、それらのすべてをリタイヤキューまでトラックする必要がある。
ところが、Zen 2ではそれぞれ1個(の256-bit Micro-OP)で済むようになる。これは、省電力と性能の面では、非常に有効だ。1個のリタイヤキューのエントリで、1個のスケジューラエントリ、1個のロードまたはストア、非常にすっきりした(笑)」。
PDF版はこちら
ストア専用のアドレス生成ユニットが加わる
Zen 2では、ロード/ストアユニットが2パイプから3パイプへと拡張された。従来は、アドレス生成ユニット(Address Generation Unit:AGU)が2個の構成だったが、新たなAGUが割り当てられた。従来からの2個のAGUはロードとストア両用、3個目のAGUはストア専用だ。この拡張に合わせて、ストアキューが従来の44エントリから48エントリへと増やされた。
Zenアーキテクチャでは、従来から2ロードと1ストアの3オペレーション/サイクルのロード/ストアスループットを備えていた。しかし、従来のAGUパイプは2本で、ピークのロード/ストアサイクルにマッチしていなかった。Zen 2アーキテクチャで、AGUパイプとロード/ストアオペレーションがマッチすることになる。
ちなみに、2個のロード/ストアAGUと1個のストアAGUの構成は、IntelのSkylakeと同じだ。Intelは、10nmのSunny Coveではロード/ストアのAGUをさらに4個に増やしている。Sunny Coveでは、インフライトでハンドルできるストア数は72だ。
ロード/ストアでは、このほかにも細かな改良が加えられている。メモリに格納するデータをコンバインする「WCB (Write Combine Buffer)」は、複数サイクルに分散するメモリライトを1つにまとめることで、省電力化と高性能化を実現する。AMDのWCBには、従来、複数の書き込みストリームへの対応に問題があった。
Zen 2では、複数の書き込みストリームを、よりよくハンドルできるようにしたという。また、データのL2キャッシュからL1キャッシュへのプリフェッチもアルゴリズムが改良された。ちなみに、AMDアーキテクチャではL3からのプリフェッチは行なわない。
L1データキャッシュの容量は32KBで従来のZenと同様。Translation Lookaside Buffer (TLB)は、L1 DTLBが64エントリと変わらず。L2 TLBは従来と同様命令とデータに分かれており、L2 DTLBは1.5Kエントリだったのが2Kになった。L2 DTLBはレイテンシが短縮されたほか、1Gページのサポートも加わった。
PDF版はこちら
CPUの設計思想を変えたAMD
Zen 2のFP/SIMDパイプラインの強化は、AMDのCPU設計思想の変化を明確に物語っている。それは、「FP/SIMD演算はGPUコアにまかせる」という発想から「CPUでもそれなりに高いFP/SIMD性能を」という路線への変更だ。AVX-512を実装するIntelほどCPUのFP/SIMDの強化は進めないが、明らかにCPU単体でのFP/SIMD性能も重視している。
以前のAMDは、CPUコアとGPUコアを融合させたAPU(Accelerated Processing Unit)にフォーカスしていた。一時は、サーバー向けにも大型APUを開発して投入する計画を持っていた。そのため、SIMD演算はどちらかというと、APUに内蔵したGPUコアにまかせるという傾向が強かった。
APUに内蔵したGPUコアで、CPUコアとメモリコヒーレンシを取り、粒度の小さな並列タスクもGPUコアに振って行く、というのがAMDの思想だった。そのため、AMDは、CPUコア側のFP/SIMDユニットはひかえめの実装に留める方向に見えた。Intelが256-bit SIMDユニットに移行したあとも、AMDは128-bit SIMDに抑えていた。
だが、AMDは、Zen世代からディスクリートCPU重視路線へと戻った。もちろん、APUもメインストリームに積極的に推進する。しかし、高性能分野も、ディスクリートCPUとディスクリートGPUというマッチングで、積極的にカバーするというのがAMDの現在の思想だ。
ここで、高性能のディスクリートCPUとディスクリートGPUの両方を持っているというAMDの強味を活かすことができるというのが、AMDの現在の戦略の根幹だと思われる。
楽天市場 売れ筋ランキング
Amazon売れ筋ランキング
Anker Soundcore Life P2 Mini【完全ワイヤレスイヤホン / Bluetooth5.3対応 / IPX5防水規格 / 最大32時間音楽再生 / 専用アプリ対応】ブラック
¥4,490
Anker Soundcore P40i (Bluetooth 5.3) 【完全ワイヤレスイヤホン/ウルトラノイズキャンセリング 2.0 / マルチポイント接続 / 最大60時間再生 / PSE技術基準適合】ブラック
¥7,990
イヤホン bluetooth ワイヤレスイヤホン 48時間の再生時間 重低音 LEDディスプレイ表示 小型/軽量 IPX7防水 ブルートゥース 接続瞬時 Hi-Fi ブルートゥースイヤホン Type-C 急速充電 ぶるーとぅーすイヤホン iPhone/Android/Pad適用 スポーツ/通勤/通学/WEB会議 (ホワイト)
¥39,999
【VGP 2025 金賞】EarFun Air Pro 4 ワイヤレスイヤホン Bluetooth 5.4/50dBアダプティブ式 ハイブリッドANC/最先端チップ「QCC3091」aptX Losslessに対応/ハイレゾ LDAC対応/Snapdragon Sound™ に対応/Auracast™に対応/52時間連続再生【6マイクAI 通話/PSE認証済み】 装着検出機能 (ブラック)
¥9,990
EarPods with 3.5 mm Headphone Plug
¥2,668
by Amazon 炭酸水 ラベルレス 500ml ×24本 強炭酸水 ペットボトル 500ミリリットル (Smart Basic)
¥1,409
by Amazon 天然水 ラベルレス 500ml ×24本 富士山の天然水 バナジウム含有 水 ミネラルウォーター ペットボトル 静岡県産 500ミリリットル (Smart Basic)
¥1,173
コカ・コーラ い・ろ・は・す天然水ラベルレス 560ml ×24本
¥2,131
キリン 自然が磨いた天然水 ラベルレス 水 2リットル 9本 国産 天然水 ミネラルウォーター ペットボトル 軟水
¥2,722
い・ろ・は・すラベルレス 2LPET ×8本 【Amazon.co.jp限定】
¥1,168
葬送のフリーレン(14) (少年サンデーコミックス)
¥583
薬屋のひとりごと 15巻 (デジタル版ビッグガンガンコミックス)
¥770
無職転生 ~異世界行ったら本気だす~ 22 (MFコミックス フラッパーシリーズ)
¥733
ブルーロック(33) (週刊少年マガジンコミックス)
¥594
黄泉のツガイ 9巻 (デジタル版ガンガンコミックス)
¥590