Ryzen 5000シリーズはなぜ高速なのか? 秘密はZen 3の内部構造にあり AMD CPUロードマップ

文●大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII

2020年11月09日 12時00分

 このところAMDを取り上げる機会が異様に多いが、新製品投入ということもあるのでご容赦いただきたい。ということで今回はRyzen 5000シリーズの話だ。海外では11月5日の朝6時(太平洋時間)に解禁となったので、さっそくKTU氏による速攻レビューが掲載されているのでもうお読みの方も多いと思う。

 そのRyzen 5000シリーズがなぜこんなに高速になったのか、というところでZen 3アーキテクチャーの内部構造の詳細が、この情報解禁に合わせてもう少し明らかになったので、これを解説する。言ってみれば連載584回の答え合わせである。

Zen 2とほぼ変わらない構成とプロセスのまま
IPCを20%近く向上させたZen 3

 Zen 3の概要が下の画像だ。筆者の推定(ALU×5+AGU×3)はややハズレで、整数部はALU×4+AGU×3+BR(Branch Unit)という構成になった。

Zen 3の概要。ある意味先祖返り(K7→K8の変化)に近いものを感じる

 ALUの1つはBRと共用なので、要するにBRが2つに強化された形になる。またFPUは6wayの非対称構成であった。Micro-Op Cacheの帯域が8、という点は同じながらデコードは引き続き4命令/サイクルであり、意外なほどにフロントエンドの拡張が「一見」行なわれていないように見える。

 むしろ大きな違いは、バックエンドである。スケジューラーがALU+AGUを一つの塊として扱うように変更され、FPU側も2つに分離されている。下の画像の方がこのあたりの変化がわかりやすいかもしれない。大きなレベルで言えばZen 2とほとんど変わらない構成とプロセスのまま、20%近いIPC向上を獲得できたことになる。

Zen 2からの変更点。5命令/サイクルのデコードやALU×5以上のバックエンドを投入することで、まだ性能を引き上げられる余地が残っているという見方もできる

分岐予測の精度向上と高速化を果たした
フロントエンド

 まずフロントエンド。基本的な構成は変わらないものの、分岐予測の高速化や命令キャッシュとOp-Cacheの切り替えの高速化、分岐ミスからのリカバリーの高速化、および分岐予測の精度向上が挙げられている。

フロントエンドの基本的な構成は変わらない。細かい所で言えば、Zen 2ではMicro-Op Queueから直接Integer RenamingにDispatchしているのが、Zen 3ではここにDispatcherが入ったのも違いとなる

 このうちフェッチ/デコード段が下の画像だ。大きな違いはBTB(Branch Target Buffer:分岐先バッファ)の拡充である。

フェッチ/デコード段の概要。TAGEはZen 2からの採用となる

 Zen 2世代の構造は連載516回の画像にあるが、L0 BTBを廃止してL1とL2のみにした。そしてL1 BTBを512エントリーから1Kエントリーに増やし、その代わりL2 BTBを7K→6.5Kに減らしている。

 BTB全体としては(L0の16エントリーを除くと)トータル8Kエントリーで変わらないが、L1の比重を高めた格好だ。これが“Redistributed(再配置)”の意味合いかと思われる。

 なぜこんな変更が行なわれたかと言えば、分岐予測のレイテンシーそのものを減らしたかったためだろう。L0を廃止することで直接L1にアクセスできるため、これだけで1~2サイクルの短縮になる。

 またそもそもZen 3の設計目標が「特に規模の大きなプログラム、あるいは分岐の多いプログラムにおけるフェッチの高速化」というあたりで、L0は規模が小さい、あるいは分岐の少ないプログラムでは高速に分岐できるものの、規模が大きくなったりするとすぐ溢れてしまう(なにしろ16エントリーしかない)ため、結局L1 BTBを参照することになる。であればL0 BTBを廃し、その代わりL1 BTBを多少大きくした方が効率が上がると判断された模様だ。

 また連載584回で触れたZero Bubble Branch Predictionであるが、Mike Clark氏の説明を聞く限りはBranch Predictionのレイテンシーを削減したことで、特にL1 BTBにHitする限りはLatency 0(=No bubble)で分岐処理が行なえる、という程度の意味のようだ。

 さらに、デコード段からのMicro-Op供給とOp-cacheからの命令供給の切り替えも高速化されたとしている。これが“Faster sequencing of Op-cache fetches”に該当するのではないかと思われる。Op-cacheの容量そのものは4Kのままの据え置きになっている模様だ。

 実はこれに関しては、今年10月に開催されたIEEE MICRO 2020で、AMDのJagadish B. Kotra氏(Researcher, Member of Technical Staff, AMD Research)が“Improving the Utilization of Micro-operation Caches in x86 Processors”という論文を発表している。

 氏の論文はMicro-op Cacheの構造や容量をいろいろ変えながら、それが性能にどの程度のインパクトがあるかを論じたものだ。2Kをベースラインとして最大64Kまで容量を変化させながら性能を測定した結果、2K→4Kでは大幅な改善が見られるが、その後は容量を増やしていってもそれほど改善しないというもので、4Kにすると2Kの場合に比べて平均3.08%、最大11.27%の性能改善が見られたとしている。

 構造についてはCLASP(Cache Line boundary AgnoStic uoP cache design:キャッシュラインサイズ非依存の構造)+Compaction(Micro-opの圧縮)を組み合わせた技法が有効だとしている。

 ちなみにCompactionに関してはRAC(Replacement policy Aware Compaction)、PWAC(Prediction Window Aware Compaction)、F-PWAC(Forced Prediction Window Aware Compaction)の3つの技法を評価、それぞれ一長一短があるとしている。

 このCLASP+Compactionによって、Op-Cacheのフェッチ効率やDispatch帯域、分岐ミスのペナルティー軽減やトータル性能向上、さらに消費電力低減にも効果があったとまとめている。これはあくまでMicro-Op Cacheの技法についての論文であり、実際の製品の紹介ではないのだが、Micro-Op Cacheの容量がZen 2から4Kのまま据え置きというのは、このあたりも関係しているものと思われる。

スケジューラーの構造を大きく変更した
バックエンド

 次がバックエンドである。先にも書いたが、Integer(整数演算)が最大8イシュー、Float(浮動小数点演算)が最大6イシューとなり、その意味ではどちらも同時実行命令数は増えてはいるのだが、やや筆者の予想と異なる最適化の方向性になっていた。

バックエンドの構成。スケジューラーの構造変更が最大のポイントかもしれない

 このレベルでの最大の相違点はスケジューラーの変更だ。Zen/Zen 2は、AGUとALUを別々に扱うという仕組みで、であれば7つの発行ポート全体をカバーするスケジューラーにした方が効率が良いという判断であった。この発想はインテルとかなり近い。これに対してZen 3では以下の4つに分解されることになった。

Zen 3のスケジューラー
Scheduler 0 ALU0+AGU0
Scheduler 1 ALU1+AGU1
Scheduler 2 ALU2+AGU2
Scheduler 3 ALU3+BRU1

 これはなぜかと言えば、おそらくだが実際に実行中のプロファイルを取ってみると、予想以上にメモリー演算が多かったのだろう。そもそもRISCの場合、演算命令はレジスターに対して行なう形で、メモリーアクセスが可能なのはロード/ストアー命令に限られている。だからこそAGUとALUは別々に動かしても問題ないという発想である。

 これはx86も同じで、x86なりx64そのものはCISCであるが、Micro-Opに変換した段階でRISC風になっているため、ALU命令そのものはすべて内部のレジスターに対して行なう形となり、これとは別にメモリーからレジスターへのロード命令が自動的に生成される形になる(ストアーに関しては原則として、x86/x64でも明示的に命令を発行する必要がある)。

 ただ、そうした「メモリーからのロード+演算」の組み合わせが少なければ、ALUとAGUを別々に駆動しても問題ないのだが、その頻度があまり多いようだと、ALUとAGUがペアになって動く方が効率が良いことになる。

 そもそも、先のフェッチ/デコード段の概要を説明する画像で、Dispatchから出てくるのは「Macro-Ops」であることに注意されたい。これはインテルの言うMacro-Opsと同じもので、要するに複数のMicro-Opsの組み合わせである。要するにフェッチの段階では

x86 ADD reg, Mem メモリー上の値を加算するx86のADD命令

 だったのがデコードの後では

Micro-Op load Mem, reg1 reg1にMemの内容をloadするMicro Op
add reg, reg1 regにreg1の内容を加算するMicro Op

 に変化し、これがDispatchを出るときには、以下のようにまとめられるわけだ。

Micro-Op load&add reg, reg1, Mem 上の2つのMicro OpをまとめたMacro Op

 今まではスケジューラーの中で、このMacro-Opをもう一度ほぐしてALUとAGUに命令を投入していた形だが、そうであれば最初からほぐさずにスケジューラーでは1つのMacro Opとしてスケジューリングを行ない、それを発行する段階で2つに分離した方が効率が良いと判断されたようだ。このあたりはK7→K8の構造の推移に非常に近い。

 下の画像は10 issue per cycleとあるが、これはStore Data×2が図には入っていないためだ。

整数演算の仕組み。AVX命令を実行しながら並行してレジスターの内容の保存が可能になった。したがって、スループットは0.5だったのが1になったことになる

 実際にはStore Dataの作業はロード/ストアーユニット側なのでここに計上するのは間違っているのかもしれないが、整数演算系で1サイクルあたり2つのストアーが可能(従来は1つ)というのは、特にメモリーに書き出しが多いアプリケーションでは性能向上につながることになる。

ALU内部の高速化で
レイテンシーとスループットを改善

 実は、これ以外にも大きな改善がある。それはALU内部の高速化である。11月6日付で、やっとZen 3に対応したSoftware Optimization Guideがリリースされた。そこで、全命令のレイテンシーおよびスループットを比較したところ、Zen 2で1486命令が定義されている(Zen3では1510命令)のだが、このうち619命令のレイテンシーまたはスループットが変わっていた。

 最初は軽い気持ちで一覧をご紹介しようと思ったのだが、さすがに600行のExcelリストを公開すると長くなるので、かいつまんでいくつか紹介しよう(Excelのリストを表にしたものを記事の最後に掲載)。

 例えばCRC32命令、Zen2では3 Micro-opに分解され、Latency 3/Throughput 0.33なのが、Zen 3では1 Micro-op/Latency 3 cycle/Throughput 1になっている。

 あるいは除算(DIV)。Zen 2が2 Micro-Op/Latency 12~41 cycle/Throughput 0.04~0.058なのが、Zen 3では2 Micro-Op/Latency 9~18/Throughput 0.1~0.25に向上しているといった具合である。

 CLCだとZen 2まではMicro codeの実装になっており、Latency 1 cycle/Throughput 4なのが、Zen 3ではLatency 0 cycle/Throughput 6と大幅に高速化されている。

 もっとも全部が全部高速化してるわけではなく、例えば(ALUではないが)FMULは1 Micro-op/Latency 5 cycle/Throughput 2が、1 Micro-op/Latency 6/Throughput 1になるといった具合に、レイテンシーが増えたりスループットが減ってたりする命令も含まれているのだが、全体の5分の2ほどの命令に変化があるというのは、ALU(とFPU)の中身のかなりの部分に手が入っているものと考えられる。全体としては以下のようになっている(重複ありなので注意されたい)。

ALU内部の最適化で、高速になった命令
x86から変換後のMicro-Opが減った 25命令
レイテンシーが削減された 173命令
スループットが増えた 286命令

 単にスケジューラだけではなく、かなりALUの中身まで見直しをかけたと考えて良いだろう。個々の性能改善はわずかであるが、それを積み重ねることでIPCの改善が実現できたと考えられる。

 次がFPU。実行ユニットが6に増えた、というのは当たったが、その実装は筆者の想定と異なるものだった。つまり(ADD+MUL)×3となると想定してたのだが、そうではなく(ADD+MUL+STORE)×2、という構成だった。

浮動小数点数演算の仕組み。例えばVFADDxxxシリーズの命令は、いずれもLatency 5cycle/Throughput 2からLatency 4cycle/Throughput 2に高速化された。またCVT系はLatency 3~4cycle/Throughpu 1からLatency 3~4cycle/Throughput 1.5~2になっている

 Zen 2までの世代の最大の問題は、FP2の非対称構造である。連載333回の表を見ていただくとわかるが、AVXレジスターのロード/セーブは事実上FP2に集中している。これがスループットを上げられない最大の要因であった。

 そこでZen 3ではこのAVXレジスターのロード/セーブを新設した“STORE/F2I”に、General Register Operationや一部の特殊命令を“STORE/F2I”に移している。

 STOREでは MOVSS xmm1,xmm2 / MOVLPS xmm1,[mem] / MOVSD xmm1,xmm2 /MOVLPD xmm1,[mem] の4つの命令が処理され、一方F2IやSTORE/F2Iでは CVTPI2PS / CVTSI2SS / CVTSD2SS / CVTSS2SD / CVTSI2SD / RCPSS / ROUNDSS / ROUNDSD / RSQRTSS / SQRTSD / SQRTSS といった命令が扱われることになる。

 これにより、基本的にはZen 2と大きく変わらない構造のまま、実効性能を引き上げた格好になっている。

スループットとプリフェッチ性能が向上した
ロード/ストアーユニット

 最後がロード/ストアーユニットであるが、やや気になる表現があった。

ロード/ストアーの仕組み。Nested Pagingは、特に仮想環境においてPagingを高速化するための技法であるが、こちらも当然Secure化が進んでいる

 少し話が飛ぶが、Zen/Zen 2の世代からTLB smashingの機能が搭載されている。Smashingというのは強いて訳せば「エントリーの叩き込み」だろうか。

 例えば64bit OSではページサイズを4KBytesではなく1MB/2MBとか、大きいものだと1GBまでサポートする。こうした大きなページサイズは、TLBでサポートしていない(例えば1GB PageはL2 TLBで管理できない)のだが、特定の条件が成立する条件では、2MBのL2 TLBを利用して1GB Pageを管理可能になっている。

 この特定の条件下で、より小さいサイズのTLBを使う技法がSmashing(あるいはPage Smashing)であるが、Zen 2まではこれを管理できるのはINVLPGおよびINVLPGA命令のみだった。

 Zen 3ではこれがINVLPG、INVPCID、INVLPGBとINVLPGAの4命令に増えたほか、新たにSecure Nested Paging命令としてRMPUPDATE、PVALIDATE、PSMASHとRMPADJUSTの4つを追加している。“+4 TLB Walkers”の意味はたぶんこのSecure Nested Paging命令関連と思われる。

 さて、ロード/ストアーユニットの構成が下の画像だ。Zen 2までの構造と比較すると大きくは変わらない(大分省いてある)が、DTLBサイズやStore Queueを増やしたほか、ロード/ストアーのスループットを引き上げたのが大きな相違点である。

ロード/ストアーユニットの構成。Page Table Walkerが効こうとして独立しているのがわかる。Retired Store Bufferは、以前はStore Commitと表現されていた部分だ

 256bit、つまりAVX命令を利用する場合はロード×2、ストアー×1で変わりがないが、128bit(ALUやFPU、SSEまでの命令)ではロード×3、ストアー×2が可能になった。これもIPC向上には大きな効果がありそうだ。

 またStore-to-Load(ある命令で書き換えたメモリーの値を、後続する別の命令で参照する)の関係性の推定の向上(きちんとどの値を後続で参照しているかを判断できれば、それをレジスターに格納しておくことで、後継の命令のメモリーロードを行なわずに済む)とか、ページ境界を跨いでのプリフェッチ性能の向上など、細かな改良が積み重ねられているのがわかる。

19%のIPC向上は
ユニファイドL3キャッシュの効果が大きい

 こうした結果が、平均19%のIPC向上という結果だという。その19%の内訳が連載584回の画像になるわけだが、この中で見えない部分はCache Prefetchingくらいのもので、あとはおおむね納得できるものとなっている。

IPCは平均19%向上したという。POV-Rayの9%アップから、PUBGの39%まで向上率はさまざまだが、幾何平均を取ると19%という数字になる

 ちなみにZen 3における主要なバッファサイズやレイテンシーの比較が下の画像である。L3キャッシュのみ、レイテンシーが39→46と増えているが、これはCCXが8コアとなり、32MBのL3が共有になった=Tagの検索により時間がかかるようになったことを考えれば無理ないところだろう。

Zen 3における主要なバッファサイズやレイテンシーの比較。FADD/FMUL/FMAのみ、バッファサイズではなく実行のレイテンシーであるので注意

 またCCXが8コア単位になったということは、それだけコア間の調停にも時間がかかることになる。ただそうしたペナルティーを払っても、ユニファイドL3キャッシュの効果が大きいのはKTU氏のレビューにある「コア間レイテンシーを確認する」でも偲ばれる。

 このテストはコアというかスレッド間の通信に要するレイテンシーなので、L3アクセスのレイテンシーそのものではないのだが、スレッド間通信がL3経由で行なわれることを考えると、従来同じダイ上であっても異なるCCX同士では70ナノ秒以上かかっていたのが、25~27ナノ秒でアクセスできるようになったことの効果は大きいだろう。

 これだけいろいろ盛り込みつつ、実はプロセスはN7+ではなくN7のままだった、というのがこれまた驚きである。つまりプロセス変更による性能向上やトランジスタ密度向上の恩恵には一切預かっていないわけだ。

 AMDは現時点ではZen 3のダイサイズなどを発表していないが、早くもRyzen 5000シリーズを分解してダイサイズを測定した方がおられる。

 彼の測定によれば、Zen 2のCCDは7.43×10.31mmでおおむね76.6mm2、Zen 3のCCDは7.43×11.36mmで84.4mm2とされるが、ただ彼はAMD筋の数字としてZen 2が74mm2で39億トランジスタ、Zen 3は80.7mm2で41.5億トランジスタという数字も挙げており、どちらかというとこちらの方がリアルに近い気もする。

 どちらにせよ、ダイそのものは良く似てはいるものの、かなりの部分が再設計され、より高い効率で動作するようになった。ただダイサイズの増分はごくわずかなので、(パッケージそのものは再設計されたと思うが)、既存のAM4に問題なく収まったというわけだ。

 以上のことから、Zen 3は筆者の予想よりもはるかに手が入ったものであり、しかも将来のヘッドルームを十分持たせた設計であった。4命令/サイクルのデコーダーのままでここまで性能が引き上げられるのであれば、これを5命令/サイクルにしたらさらに性能が上がるだろう。

 Zen 4は来年、5nmプロセスでの投入になるが、この延長で言えばインテルのGolden Coveとも良い勝負になりそうである。

【参考資料】3ページ目で紹介した約600行のExcelリスト
(レイテンシーとスループットの比較表)

命令 Zen2 Zen3
MicroOp数 Latency
(cycle)
Throughput
(Cycle)
MicroOp数 Latency
(cycle)
Throughput
(Cycle)
ADCX 1 1 2 1 1 3
ADOX 1 1 2 1 1 3
BEXTR 1 1 4 1 1 2
BLENDPD 1 1 2 1 1 4
BLENDPS 1 1 2 1 1 4
BLENDVPD 1 3 2 1 1 2
BLENDVPS 1 3 2 1 1 2
BLSI 2 2 4 2 2 2
BLSMSK 2 2 4 2 2 2
BT 1 1 4 1 1 2
BTC 2 2 2 2 2 1
BTR 2 2 2 2 2 1
BTS 2 2 2 2 2 1
BZHI 1 1 4 1 1 2
CLC ucode 1 4 1 0 6
CMC 1 1 4 1 1 2
CMOVB 1 1 4 1 1 2
CMOVBE 2 2 2 1 1 2
CMOVL 2 2 2 1 1 2
CMOVLE 2 2 2 1 1 2
CMOVNB 1 1 4 1 1 2
CMOVNBE 2 2 2 1 1 2
CMOVNL 2 2 2 1 1 2
CMOVNLE 2 2 2 1 1 2
CMOVNO 1 1 4 1 1 2
CMOVNP 1 1 4 1 1 2
CMOVNS 1 1 4 1 1 2
CMOVNZ 1 1 4 1 1 2
CMOVO 1 1 4 1 1 2
CMOVP 1 1 4 1 1 2
CMOVS 1 1 4 1 1 2
CMOVZ 1 1 4 1 1 2
COMISD 1 1 2 2 1 1
COMISS 1 1 2 2 1 1
CQO 1 1 4 1 1 4
CRC32 3 3 0.33 1 3 1
CVTDQ2PD 2 3 1 1 3 2
CVTDQ2PS 1 3 1 1 3 2
CVTPD2DQ 2 3 1 1 3 2
CVTPD2PI 2 4 1 2 4 1.5
CVTPD2PS 1 3 1 1 3 2
CVTPI2PD 2 4 1 2 4 1.5
CVTPI2PS 2 4 2 2 4 1.5
CVTPS2DQ 1 3 1 1 3 2
CVTPS2PD 1 3 1 1 3 2
CVTPS2PI 1 3 1 1 3 2
CVTSS2SD 1 3 1 1 3 2
CVTTPD2DQ 2 3 1 1 3 2
CVTTPD2PI 2 4 1 2 4 1.5
CVTTPS2DQ 1 3 1 1 3 2
DIV 2 17 0.058823529 2 10 0.25
DIV 2 25 0.04 2 12 0.167
DIV 2 41 0.024390244 2 18 0.1
DIV 1 12 0.083333333 2 9 0.25
EXTRQ 2 2 1 2 4 1
EXTRQ 2 2 1 2 3 1
FABS 1 2 1 1 1 2
FADD 1 5 1 1 6 1
FCHS 1 1 1 1 1 2
FCOM 1 1 1 1 3 1
FCOMI 2 2 1 2 4 1
FCOMIP 2 2 1 2 4 1
FCOMP 1 1 1 1 3 1
FCOMPP 1 1 1 1 3 1
FIADD 2 9 1 2 10 1
FICOM 2 5 1 2 7 1
FICOMP 2 5 1 2 7 1
FIMUL 2 9 2 2 10 1
FISUB 2 9 1 2 10 1
FISUBR 2 9 1 2 10 1
FMUL 1 5 2 1 6 1
FMULP 1 5 2 1 6 1
FSUB 1 5 1 1 6 1
FSUBP 1 5 1 1 6 1
FSUBR 1 5 1 1 6 1
FSUBRP 1 5 1 1 6 1
FTST 1 1 1 1 3 1
FUCOM 1 1 1 1 3 1
FUCOMI 2 2 1 2 4 1
FUCOMIP 2 2 1 2 4 1
FUCOMP 1 1 1 1 3 1
FUCOMPP 1 1 1 1 3 1
FXAM 1 1 1 1 1 2
IDIV 2 17 0.058823529 2 10 0.25
IDIV 2 25 0.04 2 12 0.167
IDIV 2 41 0.024390244 2 18 0.1
IDIV 1 15 0.066666667 2 9 0.25
IMUL 1-2 3,4 1 1-2 3 1
LAHF ucode 1 1 2
LEA 1 1 4 1 2 2
LEA 1 2 2 1 1 4
MOVSD ucode 1 1 4
MOVSD 1 1 4 ucode
PADDB 1 1 3 1 1 4
PADDB 1 1 3 1 1 4
PADDD 1 1 3 1 1 4
PADDD 1 1 3 1 1 4
PADDQ 1 1 3 1 1 4
PADDQ 1 1 3 1 1 4
PADDSB 1 1 3 1 1 2
PADDSB 1 1 3 1 1 2
PADDSW 1 1 3 1 1 2
PADDSW 1 1 3 1 1 2
PADDUSB 1 1 3 1 1 2
PADDUSB 1 1 3 1 1 2
PADDUSW 1 1 3 1 1 2
PADDUSW 1 1 3 1 1 2
PADDW 1 1 3 1 1 4
PADDW 1 1 3 1 1 4
PBLENDVB 1 1 1 1 1 2
PBLENDW 1 1 3 1 1 4
PCLMULHQHQDQ ucode ucode
PCLMULHQLQDQ ucode ucode
PCLMULLQHQDQ ucode ucode
PCLMULLQLQDQ ucode ucode
PCLMULQDQ ucode 5 0.5 ucode 5 0.5
PCMPEQB 1 1 2 1 1 4
PCMPEQB 1 1 2 1 1 4
PCMPEQD 1 1 2 1 1 4
PCMPEQD 1 1 2 1 1 4
PCMPEQQ 1 1 2 1 1 2
PCMPEQW 1 1 2 1 1 2
PCMPEQW 1 1 2 1 1 2
PCMPESTRI ucode 3 0.333333333 ucode 3 0.333333333
PCMPESTRM ucode 4 0.333333333 ucode 4 0.333333333
PCMPGTB 1 1 2 1 1 4
PCMPGTB 1 1 2 1 1 4
PCMPGTD 1 1 2 1 1 4
PCMPGTD 1 1 2 1 1 4
PCMPGTQ 1 1 2 1 1 2
PCMPGTW 1 1 2 1 1 2
PCMPGTW 1 1 2 1 1 2
PCMPISTRI ucode 2 0.5 ucode 2 0.5
PCMPISTRM ucode 2 0.5 ucode 2 0.5
PDEP ucode 1 3 1
PEXT ucode 1 3 1
PEXTRB 2 2 1 2 2 1
PEXTRD 2 2 1 2 2 1
PEXTRW 2 2 1 2 2 1
PEXTRW 2 2 1 2 2 1
PHADDD ucode 2 1 ucode 2 1
PHADDSW ucode 2 1 ucode 2 1
PHADDW ucode 2 1 ucode 2 1
PHMINPOSUW 1 3 1 1 3 1
PHSUBD ucode 2 1 ucode 2 1
PHSUBSW ucode 2 1 ucode 2 1
PHSUBW ucode 2 1 ucode 2 1
PINSRB 1 1 1 1 1 2
PINSRB 2 3 1 2 3 1
PINSRD 1 1 1 1 1 2
PINSRD 2 3 1 2 3 1
PINSRQ 1 1 1 1 1 2
PINSRQ 2 3 1 2 3 1
PINSRW 1 1 1 1 1 2
PINSRW 2 3 1 2 3 1
PINSRW 1 1 1 1 1 2
PINSRW 2 3 1 2 3 1
PMADDUBSW 1 4 1 1 3 1
PMADDWD 1 3 1 1 3 1
PMADDWD 1 3 1 1 3 1
PMAXSB 1 1 2 1 1 4
PMAXSD 1 1 2 1 1 4
PMAXSW 1 1 2 1 1 4
PMAXSW 1 1 2 1 1 4
PMAXUB 1 1 2 1 1 4
PMAXUB 1 1 2 1 1 4
PMAXUD 1 1 2 1 1 4
PMAXUW 1 1 2 1 1 4
PMINSB 1 1 2 1 1 4
PMINSD 1 1 2 1 1 4
PMINSW 1 1 2 1 1 4
PMINSW 1 1 2 1 1 4
PMINUB 1 1 2 1 1 4
PMINUB 1 1 2 1 1 4
PMINUD 1 1 2 1 1 4
PMINUW 1 1 2 1 1 4
PMOVMSKB 1 1 1 1 1 1
PMOVMSKB 1 1 1 1 1 1
PMOVSXBD 1 1 2 1 1 2
PMOVSXBQ 1 1 2 1 1 2
PMOVSXBW 1 1 2 1 1 2
PMOVSXDQ 1 1 2 1 1 2
PMOVSXWD 1 1 2 1 1 2
PMOVSXWQ 1 1 2 1 1 2
PMOVZXBD 1 1 2 1 1 2
PMOVZXBQ 1 1 2 1 1 2
PMOVZXBW 1 1 2 1 1 2
PMOVZXDQ 1 1 2 1 1 2
PMOVZXWD 1 1 2 1 1 2
PMOVZXWQ 1 1 2 1 1 2
PMULDQ 1 3 1 1 3 2
PMULHRSW 1 4 1 1 3 2
PMULHUW 1 3 1 1 3 2
PMULHUW 1 3 1 1 3 2
PMULHW 1 3 1 1 3 2
PMULHW 1 3 1 1 3 2
PMULLD 1 4 1 1 3 2
PMULLW 1 3 1 1 3 2
PMULLW 1 3 1 1 3 2
PMULUDQ 1 3 1 1 3 2
PMULUDQ 1 3 1 1 3 2
POP 1 1 2 1 1 2
POP ucode ucode
POPA ucode ucode
POPAD ucode ucode
POPCNT 1 1 4 1 1 4
POPF ucode ucode
POPFD ucode ucode
POPFQ ucode ucode
POR 1 1 4 1 1 4
POR 1 1 4 1 1 4
PREFETCH
PREFETCHNTA 1 1
PREFETCHT0 1 1
PREFETCHT1 1 1
PREFETCHT2 1 1
PREFETCHW
PSADBW 1 3 1 1 3 2
PSADBW 1 3 1 1 3 2
PSHUFB 1 1 2 1 1 2
PSHUFD 1 1 2 1 1 2
PSHUFHW 1 1 2 1 1 2
PSHUFLW 1 1 2 1 1 2
PSHUFW 1 1 2 1 1 2
PSIGNB 1 1 2 1 1 2
PSIGND 1 1 2 1 1 2
PSIGNW 1 1 2 1 1 2
PSLLD 1 1 1 1 1 2
PSLLD 1 1 1 1 1 2
PSLLDQ 1 1 1 1 1 2
PSLLQ 1 1 1 1 1 2
PSLLQ 1 1 1 1 1 2
PSLLW 1 1 1 1 1 2
PSLLW 1 1 1 1 1 2
PSRAD 1 1 1 1 1 2
PSRAD 1 1 1 1 1 2
PSRAW 1 1 1 1 1 2
PSRAW 1 1 1 1 1 2
PSRLD 1 1 1 1 1 2
PSRLD 1 1 1 1 1 2
PSRLDQ 1 1 1 1 1 2
PSRLQ 1 1 1 1 1 2
PSRLQ 1 1 1 1 1 2
PSRLW 1 1 1 1 1 2
PSRLW 1 1 1 1 1 2
PSUBB 1 1 3 1 1 4
PSUBB 1 1 3 1 1 4
PSUBD 1 1 3 1 1 4
PSUBD 1 1 3 1 1 4
PSUBQ 1 1 3 1 1 4
PSUBQ 1 1 3 1 1 4
PSUBSB 1 1 3 1 1 2
PSUBSB 1 1 3 1 1 2
PSUBSW 1 1 3 1 1 2
PSUBSW 1 1 3 1 1 2
PSUBUSB 1 1 3 1 1 2
PSUBUSB 1 1 3 1 1 2
PSUBUSW 1 1 3 1 1 2
PSUBUSW 1 1 3 1 1 2
PSUBW 1 1 3 1 1 4
PSUBW 1 1 3 1 1 4
PTEST 1 1 2 2 2 1
RCL 1 1 4 1 1 2
RCPPS 1 5 1 1 3 2
RCPSS 1 5 1 1 3 2
RCR 1 1 1 1 1 2
ROL 1 1 4 1 1 2
ROR 1 1 4 1 1 2
RORX 1 1 4 1 1 2
ROUNDPD 1 3 1 1 3 2
ROUNDPS 1 3 1 1 3 2
ROUNDSD 1 3 1 1 3 2
RSQRTPS 1 5 2 1 3 2
RSQRTSS 2 5 2 1 3 2
SAHF 2 2 2 1 1 4
SAL 1 1 4 1 1 2
SAR 1 1 4 1 1 2
SARX 1 1 4 1 1 2
SBB 1 1 1 1 1 4
SETcc 1 1 4 2 1 1
SETcc 1 1 4 1 1 2
SHA1NEXTE 1 1 1 1 1 2
SHL 1 1 4 1 1 2
SHLD ucode 4-6 3 1
SHLX 1 1 4 1 1 2
SHR 1 1 4 1 1 2
SHRD ucode 4-6 3 1
SHRX 1 1 4 1 1 2
TZCNT 2 2 4 2 2 2
VBLENDPD 1 1 2 1 1 4
VBLENDPD 1 1 2 1 1 4
VBLENDPS 1 1 2 1 1 4
VBLENDPS 1 1 2 1 1 4
VBROADCASTF128 1 1 2 1 2
VBROADCASTI128 1 1 2 1 2
VBROADCASTSD 1 1 2 1 2
VBROADCASTSD 1 1 2 1 1 1
VCVTDQ2PD 1 3 1 1 3 2
VCVTDQ2PD 1 3 1 2 4 1
VCVTDQ2PS 1 3 1 1 3 2
VCVTDQ2PS 1 3 1 1 3 2
VCVTPD2DQ 1 3 1 1 3 2
VCVTPD2DQ 1 3 1 1 3 2
VCVTPD2PS 1 3 1 1 3 2
VCVTPD2PS 1 3 1 1 3 2
VCVTPH2PS 1 3 1 1 3 2
VCVTPH2PS 1 3 1 2 4 1
VCVTPS2DQ 1 3 1 1 3 2
VCVTPS2DQ 1 4 1 1 3 2
VCVTPS2PD 1 3 1 1 3 2
VCVTPS2PD 1 3 1 2 4 1
VCVTPS2PH 1 3 1 1 3 2
VCVTPS2PH 2 4 1 1 3 2
VCVTSI2SD 1 4 1 2 3 1
VCVTSI2SS 1 4 1 2 3 1
VCVTTPD2DQ 1 3 1 1 3 2
VCVTTPS2DQ 1 3 1 1 3 2
VCVTTPS2DQ 1 4 1 1 3 2
VEXTRACTF128 1 1 3 2 4 1
VEXTRACTF128 1 1 3 1 4 1
VEXTRACTPS 1 1 2 2 2 1
VFMADD132PD 1 5 2 1 4 2
VFMADD132PD 1 5 2 1 4 2
VFMADD132PS 1 5 2 1 4 2
VFMADD132PS 1 5 2 1 4 2
VFMADD132SD 1 5 2 1 4 2
VFMADD132SD 1 5 2 1 4 2
VFMADD132SS 1 5 2 1 4 2
VFMADD132SS 1 5 2 1 4 2
VFMADD213PD 1 5 2 1 4 2
VFMADD213PD 1 5 2 1 4 2
VFMADD213PS 1 5 2 1 4 2
VFMADD213PS 1 5 2 1 4 2
VFMADD213SD 1 5 2 1 4 2
VFMADD213SD 1 5 2 1 4 2
VFMADD213SS 1 5 2 1 4 2
VFMADD213SS 1 5 2 1 4 2
VFMADD231PD 1 5 2 1 4 2
VFMADD231PD 1 5 2 1 4 2
VFMADD231PS 1 5 2 1 4 2
VFMADD231PS 1 5 2 1 4 2
VFMADD231SD 1 5 2 1 4 2
VFMADD231SD 1 5 2 1 4 2
VFMADD231SS 1 5 2 1 4 2
VFMADD231SS 1 5 2 1 4 2
VFMADDSUB132PD 1 5 2 1 4 2
VFMADDSUB132PD 1 5 2 1 4 2
VFMADDSUB132PS 1 5 2 1 4 2
VFMADDSUB132PS 1 5 2 1 4 2
VFMADDSUB213PD 1 5 2 1 4 2
VFMADDSUB213PD 1 5 2 1 4 2
VFMADDSUB213PS 1 5 2 1 4 2
VFMADDSUB213PS 1 5 2 1 4 2
VFMADDSUB231PD 1 5 2 1 4 2
VFMADDSUB231PD 1 5 2 1 4 2
VFMADDSUB231PS 1 5 2 1 4 2
VFMADDSUB231PS 1 5 2 1 4 2
VFMSUB132PD 1 5 2 1 4 2
VFMSUB132PD 1 5 2 1 4 2
VFMSUB132PS 1 5 2 1 4 2
VFMSUB132PS 1 5 2 1 4 2
VFMSUB132SD 1 5 2 1 4 2
VFMSUB132SD 1 5 2 1 4 2
VFMSUB132SS 1 5 2 1 4 2
VFMSUB132SS 1 5 2 1 4 2
VFMSUB213PD 1 5 2 1 4 2
VFMSUB213PD 1 5 2 1 4 2
VFMSUB213PS 1 5 2 1 4 2
VFMSUB213PS 1 5 2 1 4 2
VFMSUB213SD 1 5 2 1 4 2
VFMSUB213SD 1 5 2 1 4 2
VFMSUB213SS 1 5 2 1 4 2
VFMSUB213SS 1 5 2 1 4 2
VFMSUB231PD 1 5 2 1 4 2
VFMSUB231PD 1 5 2 1 4 2
VFMSUB231PS 1 5 2 1 4 2
VFMSUB231PS 1 5 2 1 4 2
VFMSUB231SD 1 5 2 1 4 2
VFMSUB231SD 1 5 2 1 4 2
VFMSUB231SS 1 5 2 1 4 2
VFMSUB231SS 1 5 2 1 4 2
VFMSUBADD132PD 1 5 2 1 4 2
VFMSUBADD132PD 1 5 2 1 4 2
VFMSUBADD132PS 1 5 2 1 4 2
VFMSUBADD132PS 1 5 2 1 4 2
VFMSUBADD213PD 1 5 2 1 4 2
VFMSUBADD213PD 1 5 2 1 4 2
VFMSUBADD213PS 1 5 2 1 4 2
VFMSUBADD213PS 1 5 2 1 4 2
VFMSUBADD231PD 1 5 2 1 4 2
VFMSUBADD231PD 1 5 2 1 4 2
VFMSUBADD231PS 1 5 2 1 4 2
VFMSUBADD231PS 1 5 2 1 4 2
VFNMADD132PD 1 5 2 1 4 2
VFNMADD132PD 1 5 2 1 4 2
VFNMADD132PS 1 5 2 1 4 2
VFNMADD132PS 1 5 2 1 4 2
VFNMADD132SD 1 5 2 1 4 2
VFNMADD132SD 1 5 2 1 4 2
VFNMADD132SS 1 5 2 1 4 2
VFNMADD132SS 1 5 2 1 4 2
VFNMADD213PD 1 5 2 1 4 2
VFNMADD213PD 1 5 2 1 4 2
VFNMADD213PS 1 5 2 1 4 2
VFNMADD213PS 1 5 2 1 4 2
VFNMADD213SD 1 5 2 1 4 2
VFNMADD213SD 1 5 2 1 4 2
VFNMADD213SS 1 5 2 1 4 2
VFNMADD213SS 1 5 2 1 4 2
VFNMADD231PD 1 5 2 1 4 2
VFNMADD231PD 1 5 2 1 4 2
VFNMADD231PS 1 5 2 1 4 2
VFNMADD231PS 1 5 2 1 4 2
VFNMADD231SD 1 5 2 1 4 2
VFNMADD231SD 1 5 2 1 4 2
VFNMADD231SS 1 5 2 1 4 2
VFNMADD231SS 1 5 2 1 4 2
VFNMSUB132PD 1 5 2 1 4 2
VFNMSUB132PD 1 5 2 1 4 2
VFNMSUB132PS 1 5 2 1 4 2
VFNMSUB132PS 1 5 2 1 4 2
VFNMSUB132SD 1 5 2 1 4 2
VFNMSUB132SD 1 5 2 1 4 2
VFNMSUB132SS 1 5 2 1 4 2
VFNMSUB132SS 1 5 2 1 4 2
VFNMSUB213PD 1 5 2 1 4 2
VFNMSUB213PD 1 5 2 1 4 2
VFNMSUB213PS 1 5 2 1 4 2
VFNMSUB213PS 1 5 2 1 4 2
VFNMSUB213SD 1 5 2 1 4 2
VFNMSUB213SD 1 5 2 1 4 2
VFNMSUB213SS 1 5 2 1 4 2
VFNMSUB213SS 1 5 2 1 4 2
VFNMSUB231PD 1 5 2 1 4 2
VFNMSUB231PD 1 5 2 1 4 2
VFNMSUB231PS 1 5 2 1 4 2
VFNMSUB231PS 1 5 2 1 4 2
VFNMSUB231SD 1 5 2 1 4 2
VFNMSUB231SD 1 5 2 1 4 2
VFNMSUB231SS 1 5 2 1 4 2
VFNMSUB231SS 1 5 2 1 4 2
VHSUBPD ucode 4 0.5 ucode 4 1
VHSUBPS ucode 4 0.5 ucode 4 1
VINSERTF128 1 2 3 1 1 1
VINSERTI128 1 2 3 1 1 1
VMOVDQU 1 1 2 1 1 4
VMOVUPD 1 1 2 1 1 4
VMOVUPD 1 1 1 1 1 4
VMOVUPS 1 1 2 1 1 4
VMOVUPS 1 1 1 1 1 4
VPABSB 1 1 3 1 1 2
VPABSB 1 1 3 1 1 2
VPABSD 1 1 3 1 1 2
VPABSD 1 1 3 1 1 2
VPABSW 1 1 3 1 1 2
VPABSW 1 1 3 1 1 2
VPADDB 1 1 3 1 1 4
VPADDB 1 1 3 1 1 4
VPADDD 1 1 3 1 1 4
VPADDD 1 1 3 1 1 4
VPADDQ 1 1 3 1 1 4
VPADDQ 1 1 3 1 1 4
VPADDSB 1 1 3 1 1 2
VPADDSB 1 1 3 1 1 2
VPADDSW 1 1 3 1 1 2
VPADDSW 1 1 3 1 1 2
VPADDUSB 1 1 3 1 1 2
VPADDUSB 1 1 3 1 1 2
VPADDUSW 1 1 3 1 1 2
VPADDUSW 1 1 3 1 1 2
VPADDW 1 1 3 1 1 4
VPADDW 1 1 3 1 1 4
VPBLENDD 1 1 2 1 1 4
VPBLENDD 1 1 2 1 1 4
VPBLENDVB 1 1 1 1 1 2
VPBLENDVB 1 1 1 1 1 2
VPBLENDW 1 1 3 1 1 4
VPBLENDW 1 1 3 1 1 4
VPCMPEQB 1 1 2 1 1 4
VPCMPEQB 1 1 2 1 1 4
VPCMPEQD 1 1 2 1 1 4
VPCMPEQD 1 1 2 1 1 4
VPCMPEQW 1 1 2 1 1 4
VPCMPEQW 1 1 2 1 1 4
VPCMPGTB 1 1 2 1 1 4
VPCMPGTB 1 1 2 1 1 4
VPCMPGTD 1 1 2 1 1 4
VPCMPGTD 1 1 2 1 1 4
VPCMPGTW 1 1 2 1 1 4
VPCMPGTW 1 1 2 1 1 4
VPHMINPOSUW 1 1 1 3 2
VPMADDUBSW 1 4 1 1 3 2
VPMADDUBSW 1 4 1 1 3 2
VPMADDWD 1 3 1 1 3 2
VPMADDWD 1 4 1 1 3 2
VPMASKMOVD 1 1 2 ucode
VPMASKMOVD 2 1 2 ucode
VPMASKMOVD ucode 1 1 2
VPMASKMOVD ucode 1 1 2
VPMASKMOVQ 1 1 2 ucode
VPMASKMOVQ 2 1 2 ucode
VPMASKMOVQ ucode 1 1 2
VPMASKMOVQ ucode 1 1 2
VPMAXSB 1 1 2 1 1 4
VPMAXSB 1 1 2 1 1 4
VPMAXSD 1 1 2 1 1 4
VPMAXSD 1 1 2 1 1 4
VPMAXSW 1 1 2 1 1 4
VPMAXSW 1 1 2 1 1 4
VPMAXUB 1 1 2 1 1 4
VPMAXUB 1 1 2 1 1 4
VPMAXUD 1 1 2 1 1 4
VPMAXUD 1 1 2 1 1 4
VPMAXUW 1 1 2 1 1 4
VPMAXUW 1 1 2 1 1 4
VPMINSB 1 1 2 1 1 4
VPMINSB 1 1 2 1 1 4
VPMINSD 1 1 2 1 1 4
VPMINSD 1 1 2 1 1 4
VPMINSW 1 1 2 1 1 4
VPMINSW 1 1 2 1 1 4
VPMINUB 1 1 2 1 1 4
VPMINUB 1 1 2 1 1 4
VPMINUD 1 1 2 1 1 4
VPMINUD 1 1 2 1 1 4
VPMINUW 1 1 2 1 1 4
VPMINUW 1 1 2 1 1 4
VPMULDQ 1 3 1 1 3 2
VPMULDQ 1 3 1 1 3 2
VPMULHRSW 1 4 1 1 3 2
VPMULHRSW 1 3 1 1 3 2
VPMULHUW 1 3 1 1 3 2
VPMULHUW 1 3 1 1 3 2
VPMULHW 1 3 1 1 3 2
VPMULHW 1 3 1 1 3 2
VPMULLD 1 4 2 1 3 2
VPMULLD 1 3 1 1 3 2
VPMULLW 1 3 1 1 3 2
VPMULLW 1 3 1 1 3 2
VPMULUDQ 1 3 1 1 3 2
VPMULUDQ 1 3 1 1 3 2
VPSADBW 1 3 1 1 3 2
VPSADBW 1 3 1 1 3 2
VPSLLD 1 1 1 1 1 2
VPSLLD 1 1 1 1 1 2
VPSLLDQ 1 1 1 1 1 2
VPSLLDQ 1 1 1 1 1 2
VPSLLQ 1 1 1 1 1 2
VPSLLQ 1 1 1 1 1 2
VPSLLVD 1 3 1 1 3 2
VPSLLVD 1 3 1 1 3 2
VPSLLVQ 1 3 1 1 3 2
VPSLLVQ 1 3 1 1 3 2
VPSLLW 1 1 1 1 1 2
VPSLLW 1 1 1 1 1 2
VPSRAD 1 1 1 1 1 2
VPSRAD 1 1 1 1 1 2
VPSRAVD 1 3 1 1 3 2
VPSRAVD 2 3 1 1 3 2
VPSRAW 1 1 1 1 1 2
VPSRAW 1 1 1 1 1 2
VPSRLD 1 1 1 1 1 2
VPSRLD 1 1 1 1 1 2
VPSRLDQ 1 1 1 1 1 2
VPSRLDQ 1 1 1 1 1 2
VPSRLQ 1 1 1 1 1 2
VPSRLQ 1 1 1 1 1 2
VPSRLVD 1 3 1 1 3 2
VPSRLVD 1 3 1 1 3 2
VPSRLVQ 1 3 1 1 3 2
VPSRLVQ 1 3 1 1 3 2
VPSRLW 1 1 1 1 1 2
VPSRLW 1 1 1 1 1 2
VPSUBB 1 1 3 1 1 4
VPSUBB 1 1 3 1 1 4
VPSUBD 1 1 3 1 1 4
VPSUBD 1 1 3 1 1 4
VPSUBQ 1 1 3 1 1 4
VPSUBQ 1 1 3 1 1 4
VPSUBSB 1 1 3 1 1 2
VPSUBSB 1 1 3 1 1 2
VPSUBSW 1 1 3 1 1 2
VPSUBSW 1 1 3 1 1 2
VPSUBUSB 1 1 3 1 1 2
VPSUBUSB 1 1 3 1 1 2
VPSUBUSW 1 1 3 1 1 2
VPSUBUSW 1 1 3 1 1 2
VPSUBW 1 1 3 1 1 4
VPSUBW 1 1 3 1 1 4
VPTEST 1 1 1 2 2 1
VPTEST 1 1 2 2 4 1
VPUNPCKHBW 1 1 1 1 1 2
VPUNPCKHBW 1 1 1 1 1 2
VPUNPCKHDQ 1 1 1 1 1 2
VPUNPCKHDQ 1 1 1 1 1 2
VPUNPCKHQDQ 1 1 1 1 1 2
VPUNPCKHQDQ 1 1 1 1 1 2
VPUNPCKHWD 1 1 1 1 1 2
VPUNPCKHWD 1 1 1 1 1 2
VPUNPCKLBW 1 1 1 1 1 2
VPUNPCKLBW 1 1 1 1 1 2
VPUNPCKLDQ 1 1 1 1 1 2
VPUNPCKLDQ 1 1 1 1 1 2
VPUNPCKLQDQ 1 1 1 1 1 2
VPUNPCKLQDQ 1 1 1 1 1 2
VPUNPCKLWD 1 1 1 1 1 2
VPUNPCKLWD 1 1 1 1 1 2
VRCPPS 1 5 2 1 3 2
VRCPSS 1 5 2 1 3 2
VROUNDPD 1 3 1 1 3 2
VROUNDPD 1 3 1 1 3 2
VROUNDPS 1 3 1 1 3 2
VROUNDPS 1 3 1 1 3 2
VROUNDSD 1 3 1 1 3 2
VROUNDSS 1 3 1 1 3 2
VRSQRTPS 1 5 2 1 3 2
VRSQRTPS 1 5 1 1 3 2
VRSQRTSS 1 5 2 1 3 2
VZEROUPPER 1 0 4 1 0 1

■関連記事