このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第333回

AMD次期プロセッサーZenはFP3がボトルネックになる?

2015年12月07日 12時00分更新

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

  • この記事をはてなブックマークに追加
  • 本文印刷

FPU構成はタイプミスでなければ
FP3がボトルネックになる

 次に2つ目のFPU構成である。これはFP2がどう動くかという問題である。さすがに長大なのでリストを掲載するのは避ける。GCCでは命令セットの定義に以下のフォーマットで記載を行なう。

(define_insn_reservation insn-name default_latency condition regexp)

 例をあげよう。

(define_insn_reservation "znver1_fp_mov_direct_load" 5
(and (eq_attr "cpu" "znver1")
(and (eq_attr "znver1_decode" "direct")
(and (eq_attr "type" "fmov")
(eq_attr "memory" "load"))))
"znver1-direct,znver1-load,znver1-fp3|znver1-fp1")

 この場合、znver1_fp_mov_direct_loadで定義される命令セットは処理に5サイクルを要し、実行ユニットとしてはznver1-loadに加えてznver1-fp1とznver1-fp3のどちらかを使うという意味だ。

 さて、ここで命令セットと、どの実行ユニットを使うかを一覧でまとめたのが下表である。命令は名前の通り実行されるFPUの命令、Load/StoreはLoad/Storeユニットを利用する場合にこれを表記(なければ使わない)、FPUは実際に使われるFPUのユニットである。

命令セットと実行ユニットの関係
命令 Load/Store FPU
fp_mov_direct_load load fp3|fp1
fp_mov_direct_store store fp2|fp3
fp_mov_double fp3
fp_mov_double_load load fp3
fp_mov_direct fp3
fp_spc_direct tfp2+fp3
fp_fsgn fp3
fp_fcmp fp0+fp2
fp_fcmp_load load fp0+fp2
fp_op_mul fp0
fp_op_mul_load load fp0
fp_op_imul_load load fp0
fp_op_div fp3
fp_op_div_load load fp3
fp_op_idiv_load load fp3
fp_insn fpu
mmx_add fp0|fp1|fp3
mmx_add_load load fp0|fp1|fp3
mmx_cmp fp0|fp3
mmx_cmp_load load fp0|fp3
mmx_cvt_pck_shuf fp1|fp2
mmx_cvt_pck_shuf_load load fp1|fp2
mmx_shift_move fp2
mmx_shift_move_load load fp2
mmx_move_store store fp2
mmx_mul fp0
mmx_load load fp0
avx256_log fpu
avx256_log_load load fpu
sse_log fpu
sse_log_load load fpu
avx256_log1 fp1|fp2
avx256_log1_load load fp1|fp2
sse_log1 fp1|fp2
sse_log1_load load fp1|fp2
sse_comi fp0|fp1
sse_comi_load load fp0|fp1
sse_comi_double fp0|fp1
sse_comi_double_load load fp0|fp1
sse_test fp1|fp2
sse_test_load load fp1|fp2
sseavx_mov fpu
sseavx_mov_store store fpu
sseavx_mov_load load fpu
avx256_mov fpu
avx256_mov_store store fpu
avx256_mov_load load fpu
sseavx_add fp2|fp3
sseavx_add_load load fp2|fp3
avx256_add fp2|fp3
avx256_add_load load fp2|fp3
sseavx_fma (fp0+fp3)|(fp1+fp3)
sseavx_fma_load load (fp0+fp3)|(fp1+fp3)
avx256_fma (fp0+fp3)|(fp1+fp3)
avx256_fma_load load (fp0+fp3)|(fp1+fp3)
sseavx_iadd fp0|fp1|fp3
sseavx_iadd_load load fp0|fp1|fp3
avx256_iadd fp0|fp1|fp3
avx256_iadd_load load fp0|fp1|fp3
ssecvt fp3
ssecvt_load load fp3
ssediv_ss_ps fp3
ssediv_ss_ps_load load fp3
ssediv_sd_pd fp3
ssediv_sd_pd_load load fp3
ssediv_avx256_ps fp3
ssediv_avx256_ps_load load fp3
ssediv_avx256_pd fp3
ssediv_avx256_pd_load load fp3
ssemul_ss_ps fp0|fp1
ssemul_ss_ps_load load fp0|fp1
ssemul_avx256_ps fp0|fp1
ssemul_avx256_ps_load load fp0|fp1
ssemul_sd_pd fp0|fp1
ssemul_sd_pd_load load fp0|fp1
ssemul_avx256_pd fp0|fp1
ssemul_avx256_pd_load load fp0|fp1
sseimul fp0
sseimul_avx256 fp0
sseimul_load load fp0
sseimul_avx256_load load fp0
sseimul_di fp0
sseimul_load_di load fp0
sse_cmp fp0|fp1
sse_cmp_load load fp0|fp1
sse_cmp_avx256 fp0|fp1
sse_cmp_avx256_load load fp0|fp1
sse_icmp fp0|fp3
sse_icmp_load load fp0|fp3
sse_icmp_avx256 fp0|fp3
sse_icmp_avx256_load load fp0|fp3

 FPUの意味は以下のとおり。表で太字のところはFP2を利用するという命令ユニットである。

FPU FP1/FP2/FP3/FP4のどれか1つ
FP0+FP1 FP1とFP2を同時に利用
FP0|FP1 FP0とFP2のどちらか片方を利用

 さて、問題はなにかというと、例えばsseavx_fmaやavx256_iaddなどの命令が、(fp0+fp3)|(fp1+fp3)と表記されているが、これが正しいか否かである。

 もしこれが正しいとすれば、FMAを実行する場合にFP2が利用できないので、事実上FP3がボトルネックになることになる。したがって、FMA命令2つの同時発行はできないという制約が付くことになる。ちなみにWaldhauer氏はこれはタイプミスだとしている。さてこれはどっちだろう?

 ということで、以下筆者の見解だが、そもそもこのFP0~FP3の4つのFPUが、必ずしも同じ機能を持っているわけではないのは当然として、完全に2セットというわけではないようだ。

 例えば、fsgnやfp_moveなどがFP3でしかできない、FPUのShift演算はどうもFP2にしか実装されていないなど、いくらかの偏りはあるようだ。

 あるいは、完全に2つのセットだとすれば、普通に考えればFP0とFP2、FP1とFP3でそれぞれセットになるため、FP0とFP1はおおむね同等の機能になるはずだ。

 ところが、sseavx_logやavx256_logはFP1/FP2のどちらか、sseavx_addやavx256_addはFP2/FP3のどちらかという構成になっている。もっと端的なのがmmx_addで、FP0/FP1/FP3のみでFP2が対象になっていない。

 そもそも命令ユニットを見ると、乗算を行なうユニットはFP0/FP1にのみ搭載されているようだ。では加算は? というと、mmx_addなどではFP2以外にはすべて実装されているように見えるが、よく見るとavx256_addではFP2でも動作することになっている。つまりFP2にも加算が実装されていないと辻褄が合わない。

 ということで、全体としてみるとあちこち理屈に合わないことが多すぎる。そのことは間違いないのでタイプミスにしたいところであるが、これが全部タイプミスだとするとFPU周りはほぼ全部とは言わないまでも、かなりの部分が書き直しになる。

 もちろん、そこまで盛大に間違えていた可能性は否定できないが、筆者としてはタイプミスではなく本当にFP3がボトルネックになっている可能性が高いと考えている。

 もしもznver1_mmx_addが

"znver1-direct,znver1-fp0|znver1-fp1|znver1-fp3"

 ではなく

"znver1-direct,znver1-fpu"

 と記述されていれば、タイプミス(つまりMAC演算は同時に2命令発行できる)と判断していたのだが。ただそうなると、avx256_addが示唆するFP2に搭載されている加算はなに? という問題が残ることは指摘しておきたい。つまり派手にタイプミスしている可能性もまだ残っているということだ。

→次のページヘ続く (動作周波数は3GHzか4GHzか?

カテゴリートップへ

本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,280
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,390
3
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
4
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
¥1,240
5
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
6
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥937
7
NIMASO ガラスフィルム iPad 第11世代(A16) 2025用/iPad 10.9インチ 第10世代 2022用 衝撃吸収 強化 ガラス 保護フィルム 指紋防止 ガイド枠付き NTB22I574
NIMASO ガラスフィルム iPad 第11世代(A16) 2025用/iPad 10.9インチ 第10世代 2022用 衝撃吸収 強化 ガラス 保護フィルム 指紋防止 ガイド枠付き NTB22I574
¥1,359
8
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
¥652
9
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥1,590
10
UGREEN LANケーブル CAT8 1M メッシュLANケーブル カテゴリー8 コネクタ 超光速40Gbps/2000MHz CAT8準拠 イーサネットケーブル 爪折れ防止 シールド モデム ルータ PS3 PS4 Xbox等に対応 1M
UGREEN LANケーブル CAT8 1M メッシュLANケーブル カテゴリー8 コネクタ 超光速40Gbps/2000MHz CAT8準拠 イーサネットケーブル 爪折れ防止 シールド モデム ルータ PS3 PS4 Xbox等に対応 1M
¥699

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン