AMD Zenに、FMA4が搭載されている?!

「Zen」 CPUマイクロアーキテクチャにおいてAMDは書類上はFMA4のサポートを打ち切っています。現在、FMA3をサポートしています。しかし、「Zen」のハードウェアそのものはFMA4命令に対応しており、OSからは命令が見えないようにされているとのこと。FMA(Fused Multiply Add)は積和算を効率的に演算するためのセットです。またSSE3, SSE4とはことなりFMA3とFMA4の「3」と「4」は世代を表すものではなく、命令あたりのオペランド数を示すものなんです。AMDは2012年の「Bulldozer」でFMA4を実装し、Intelは2013年に「Haswell」でFMA3を実装しています。

AMDが「Zen」でFMA4を非推奨扱いとした理由にすいては不明だが、とある開発者はAMDのFMA4はより高いスループットが得られるものの、バグが多かったという話もでています。また、Intelが採用したFMA3の方がより一般的であり、ここ数年でより安定しているものとなっています。

実際に「Zen」でFMA4を使用したところ、「illegal instructionエラー」を返すこともなく、演算を完遂したというが、表向き「Zen」はFMA4をサポートせず、CPU IDでも出てくることはない、動かそうと思えば動かせるようです。なお、現在ではFMA3の方が主流で、「Zen」もFMA3をサポートしている(AMD CPUでのFMA3のサポートは「Piledriver」と「Kabini」から)。

FMA4が残っている理由は不明であります。Ryzen発表当時の記事を見ると、打ち切り扱いになっています。