このページの本文へ

前へ 1 2 3 次へ

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

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

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

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

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

PC向けのプロセッサーロードマップ

 AMDの次期プロセッサーZenの内部構造を推察した前回の記事について、いろいろなご意見を読者の方からいただいた。さらに、Waldhauer氏とも引き続き議論を続けており、これに関してまとめてアップデートをお届けしたい。論点は3ヵ所となる。

  1. デコーダー構成
  2. FPU構成
  3. 動作周波数

Vector PathはK7~K10世代と同じ

 まず最初はデコーダー構成の話だ。筆者は前回Vector Pathの扱い方について「これまでこうした処理の仕方は見たことがなかった。逆に言えば、こんな処理の仕方を導入すること自体が、K12とZenでかなりの部分を共通化していることの傍証になるのではないかと思う」と書いたが、K7~K10までの世代も同じであるというご指摘をいただいた。

 ということで、GitHubのAthlonに関する記述を確認してみる。このファイルはK7/K8/K10を全部ひっくるめて扱っている関係で、非常に読みにくい構成になっている。

 こちらを参照されると整形されている分、若干読みやすいのだが、例えばAthlonの場合、整数のVector Pathについては以下の記述があり、間違いなくすべてのデコーダーが同期して動作する。

(exclusion_set "athlon-decodev" "athlon-decode0,athlon-decode1,athlon-decode2")

 一方の実行ユニットの方だが、命令スケジューラーに以下の記述があった。

(define_insn_reservation "athlon_ivector_both" 6
(and (eq_attr "cpu" "athlon,k8,generic")
(and (eq_attr "athlon_decode" "vector")
(and (eq_attr "unit" "integer,unknown")
(eq_attr "memory" "both"))))
"athlon-vector,athlon-load,
athlon-ieu,
athlon-ieu,
athlon-store")
(define_insn_reservation "athlon_ivector_both_amdfam10" 6
(and (eq_attr "cpu" "amdfam10")
(and (eq_attr "amdfam10_decode" "vector")
(and (eq_attr "unit" "integer,unknown")
(eq_attr "memory" "both"))))
"athlon-vector,athlon-load,
athlon-ieu,
athlon-ieu,
athlon-store")

 K8用とK10用の命令が入り乱れているのでわかりにくいが、ある種の命令は整数演算ユニットのかなりの部分(微妙に数が合わないので実際には全部ではない模様)をまとめてロックした形で実行されるようだ。

 一方FPUはもっとシンプルで、3つある実行ユニットが全部ロックされる。

;; Vector operations usually consume many of pipes.
(define_reservation "athlon-fvector" "(athlon-fadd + athlon-fmul + athlon-fstore)")

 ということで、前回書いた「こうした処理の仕方は見たことが無かった」のは単に筆者の不見識であった。お詫びして訂正する。

 ただ、x86/x64とAArch32/AArch64の違いを吸収して実行ユニットに引き渡すためには、一度中間命令に変換してからになり、その際にバッファを持つだろうという筆者の見解そのものに変化はない。

→次のページヘ続く (FP3がボトルネックになる

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

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