コア数も最高クロックもほとんど同じなのに Core i3 の方が Core i7 より演算性能が高いことがある?

CPU の性能を測ることは難しいです。CPU の演算性能に関する理論上の性能指標として GFLOPS があります。i3 より i5、i5 より i7 が速いというイメージがありますが、個別の型番で比べるとしばしば逆転することがあります。CPU 性能の比較方法として GFLOPS の計算方法と、i7、i5、i3 の演算性能の逆転に対する疑問に答えてみようと思います。

Yahoo! Japan 知恵袋に クロック周波数もコア数も同じなのに i7 のほうが低性能な理由は? という質問があります。これを見ての「コア数も最高クロックもほとんど同じなのに Core i3 の方が Core i7 より演算性能が高いことがあるの? i7 が一番高性能ではないの? 」という疑問に答えてみようと思います。

クロック周波数もコア数も同じなのにi7のほうが低性能な理由は?
下記三つのCPUはいずれも2コア4スレッドで、クロック周波数もほぼ同じです。

i3-3220T 最高クロック2.80GHz 浮動小数点演算性能 44.80 GFLOPS
i5-3210M 最高クロック3.10GHz 浮動小数点演算性能 40.00 GFLOPS
i7-3517U 最高クロック3.00GHz 浮動小数点演算性能 30.40 GFLOPS
http://hardware-navi.com/cpu.php

どうして、性能がi3>i5>i7と逆転しているのですか?

たとえば、i7-3517Uは通常時のクロック周波数が低いですが、性能値は最高クロック時のものを表示してますよね?
もし同コア数、同一クロックでも低消費電力版は性能が低いとしたら、その理由を教えて下さい。

Yahoo! Japan 知恵袋の クロック周波数もコア数も同じなのに i7 のほうが低性能な理由は? より

参考サイトには各CPUについて下図のように記載されています。

gflops_core_i3_3220t

gflops_core_i5_3210m

gflops_core_i7_3517u

はじめに

まずは以下について知る必要性があります。

  • 最高クロック(ターボブースト)
  • コアとスレッド
  • 浮動小数点
  • GFLOPS
  • CPUの設計(命令セット)

これらを知ることで、浮動小数点の演算性能に
なぜ差があるのかという理由が分かります。

最高クロック (ターボブースト)

図には (通常動作時の) クロック
最高クロックが併記されています。
それぞれ次のような意味を持っています。

(通常動作時の) クロック

(通常動作時の) クロックとは、一般的な動作条件において
継続的に CPU が働き続けられるクロック周波数を示しています。

最高クロック

最高クロックとは一時的に到達可能な
最高のクロック周波数
を示しています。

CPU が働くと熱を発生します。
あまり高温になると CPU は壊れてしまいます。

CPU が全力で働くと大きな熱が生まれますが、
逆に、ほとんど休止状態であればあまり発熱しません。

CPU が標準的な環境ではなく、特別に冷却されている場合や、
休止状態から急に大量の処理をし始めたばかりの場面では
CPU が熱っせられるまでに余裕があります。

このような場面において、一部の CPU (i5 や i7) は
通常動作時のクロックを超えて性能を高める機能
(ターボブースト) を備えており、一時的に
最高クロックで働くことができます。

典型的には、処理内容が複数コアで分担できず、
1コアのみが働き、それ以外のコアを有効に使えない
ような状況で、1コアが最高クロックで働きます。

どちらのクロックで性能を測るか

現実的な性能を測るのであれば実際に CPU を働かせてみて、
つまり発熱させてみて性能を測ることになります。
性能測定条件が同じでなければ正しく比較できませんから、
室温や CPU の冷却機構を併記する必要性があります。
測定条件によってターボブーストの効きが変わってくるからです。

最良の (冷却) 環境下の最高性能を測るのであれば
最高クロックで性能を考えれば良いことでしょう。

一般的な環境で安定的に発揮できる性能を測るのであれば
(通常動作時の) クロックで性能を考える方が良いでしょう。

一般的な環境において CPU が継続的に発揮できる性能を考えると
最高クロックではなく、(通常動作時の) クロックが基準になります。

コアとスレッド

CPU における計算処理はコアで行われます。

コアをどの程度使うかはスレッドの内容によります。
例えば、コアを人スレッドを仕事と考えると良いかもしれません。

極めて重い仕事 (スレッド) であれば、
その人 (コア) の全力が必要です。
同時に 1つの仕事しか片付けられません。

軽い仕事 (スレッド) であれば、
その人 (コア) が片手間でこなすことができます。
同時に 2つの仕事を扱うことも可能でしょう。

最大でどれだけの仕事を片付けられるかは
スレッドではなくコアで決まります。
1コア2スレッドでも、1コア4スレッドであっても
結局は1人が扱えるトータルの仕事量は1人分だからです。

CPU の理論上の最大性能を考えるには
スレッドではなくコアの数が基準になります。

浮動小数点

実世界のシミュレーション、3D グラフィックス、
動画、音楽などでは小数点の計算が利用されます。

浮動小数点とは、コンピュータで小数点を
扱うためのひとつの形式になります。

数値表現の精度が低い 32bit の浮動小数点を単精度、
数値表現の精度が高い 64bit の浮動小数点を倍精度
(32bit に対して 64bit は倍の bit数を持つ) などと呼ばれます。

GFLOPS

浮動小数点を英語で表すと Floating Point です。
FLOPS は FLating-point Operations Per Second なので、
FLOPS とは 1秒間に何回の浮動小数点の
演算が可能であるかを示す単位になります。

例えば、1 FLOPS なら 1秒あたり 1回の
浮動小数点の演算が可能であることを示します。

1000000 FLOPS なら 1秒あたり 1000000回の
浮動小数点の演算が可能であることを示します。

CPU は 1秒でもものすごい回数の演算が
できるため、0 が連なりすぎて分かりづらくなります。
そこで、1000000000 FLOPS を 1 GFLOPS として
演算性能を表記しています。

CPU のクロックが GHz 単位なので、その演算性能も
GFLOPS にすると分かりやすくなると言えるかもしれません。

  • CPUの設計(命令セット)
  • CPU はプログラムに従って働きます。
    ですから、プログラムが動作するときには、
    最終的に CPU に解釈可能な命令に置き換えられています。

    仮に、CPU に解釈可能な命令のなかに
    64bit の浮動小数点の足し算を行う命令があり、
    それを 1クロックで実行できるような
    回路が搭載されているとします。

    このような CPU であれば 1クロックで
    1つの浮動小数点 (倍精度) の演算が可能です。
    CPU が 1 GHz で動作するならば、この CPU は
    1 GFLOPS の浮動小数点演算性能を持ちます。

    別の例として、512bit の浮動小数点の掛け算を行う命令を持ち、
    それを 2クロックで実行できる回路を持った CPU があるとします。

    このような CPU は 1クロックあたりで見ると
    256bit 分の浮動小数点の掛け算を行えると言えます。
    また、 256bit は 64bit に対して 4倍の桁数を
    持っていますから、倍精度で言えば 1クロックあたり
    4つの浮動小数点の演算ができると見ることができます。
    CPU が 1 GHz で動作するならば、この CPU は
    4 GFLOPS の浮動小数点演算性能を持ちます。

    4 GFLOPS のコアを 4つ備えた CPU であれば
    16 GFLOPS の浮動小数点演算性能を持つことになります。

    このように、CPUの設計 (命令セット) によって
    クロックが同じであっても GFLOPS で表される
    浮動小数点演算性能は何倍も変わってきます。

    改めて i3、i5、i7 を比較してみる

    これらは Sandy Bridge マイクロアーキテクチャと
    呼ばれる CPU設計で作られたコアを持っています。

    これら CPU設計では Intel AVX という命令と
    それを 1クロックで実行する回路が備わっています。

    Intel AVX は 256bit の浮動小数点の
    掛け算と足し算を行う命令です。
    つまり 64bit (倍精度) の 4倍の桁数で
    2つの浮動小数点の演算を行うこととなり
    この命令は倍精度を基準としてみると
    8個の浮動小数点演算と見ることができます。

    これらの CPU はいずれも 2コア 4スレッドです。
    ですから、最大の仕事をさせた場合には
    2コア分の仕事が可能な作りになっています。

    CPU 全体で見ると 1クロックあたり
    16個の浮動小数点演算が可能になります。

    あとは、標準的な環境において継続的に
    発揮し続けられる性能として、それぞれの
    (通常動作時の) クロックを加味すれば
    浮動小数点演算性能を以下のように計算できます。

    Core i7-3517U
    1.9[GHz] x 2[コア] x 8[クロックあたりの演算] で
    30.4 GFLOPS

    Core i5-3210M
    2.5[GHz] x 2[コア] x 8[クロックあたりの演算] で
    40 GFLOPS

    Core i3-3220T は
    2.8[GHz] x 2[コア] x 8[クロックあたりの演算] で
    44.8 GFLOPS

    つまりは継続的に働き続けられる
    (通常動作時の) クロック周波数の違いが
    そのまま浮動小数点演算性能の違いとして現れています。

    同一クロック周波数であれば
    浮動小数点演算性能も同一となります。

    GFLOPS は実際の使用状況における性能を表さない

    GFLOPS (浮動小数点演算性能) は文字通り、
    最大で小数点の演算がどのくらい可能かを表すものです。
    実際の使用感をうまく表す指標とはちょっと違います。

    例えば Core Duo 2GHz は 6 GFLOPS です。
    Core i3-3220T の 44.8 GFLOPS はその 7倍以上
    ありますが、パソコンは 7倍も速くは感じないでしょう。
    それは、複数の部品やプログラムなど、
    複合的な要因がパソコンの速さを決めるからです。

    CPU は様々な何百もの命令をもち、
    プログラムも様々な命令から成り立ちます。
    もっとも小数点の計算を効率よく実行できる
    1つの命令 (Intel AVX) しか使わないと仮定して計算した、
    理論上の最高性能が出ることは現実的にはありえません。

    ですから、CPU設計が異なるもの同士では、
    理論上のGFLOPS (浮動小数点演算性能) の差を、
    プログラムの実行速度の差と考えることは難しいです。

    現実には i7 より i3 の方が速いという逆転はある

    これらの具体的な型番について見ると
    CPU 以外の条件が同じであるならば
    性能差はほとんどありません。

    Core i3-3220T が定格の 2.8 GHz で安定動作する条件ならば
    Core i5-3210M も同等のクロック周波数で働くことができます。

    Core i7-3517U は他の2つの 35W に対して 17W の TDPです。
    TDP は CPU に必要な冷却能力を表しています。
    小さいほど発熱が小さいということになるため、
    小さくて薄くて静かで軽い (=冷却性能が低い)
    パソコンを作るか、最高クロック (ターボブースト)
    で動作できる時間が長いパソコンを作れます。

    Core i3-3220T が定格の 2.8 GHz で安定動作する
    パソコンに Core i7-3517U を搭載したならば
    最高クロックの 3 GHz で働くことでしょう。
    また、冷却能力にさらに余裕があれば
    Core i5-3210M は 3.1 GHz で働くことでしょう。

    つまり、CPU 以外の条件を揃えた上で、
    GFLOPS ではなく、現実的な性能を考えるならば

    冷却能力に余裕がない場合:
    Core i7-3517U > i5-3210M = Core i3-3220T

    冷却能力に少し余裕がある場合:
    Core i7-3517U > i5-3210M > Core i3-3220T

    冷却能力にもう少し余裕がある場合:
    i5-3210M > Core i7-3517U > Core i3-3220T

    しかし、Core i7-3517U は冷却能力の点から見て、
    そもそも、Core i5-3210M や Core i3-3220T
    では発熱が大きすぎて使えないような場面で
    搭載する CPU という側面をもっています。

    小さくて薄くて静かで軽いパソコンに搭載されてしまえば
    Core i7-3517U が 3 GHz で働き続けることは難しくなります。

    Core i7-3517U は 1 kg を切るような
    小型ノートパソコン、Core i5-3210M と
    Core i3-3220T は 2.5 kg の大型
    ノートパソコンに搭載されているとすると
    以下のように発揮できる性能が逆転するかもしれません。
    i5-3210M > Core i3-3220T > Core i7-3517U

    低消費電力版だからといって CPU の
    性能が低いということはないのですが、
    低消費電力版の CPU を搭載するパソコンの
    冷却性能によっては最高の性能を発揮できない
    ということはしばしばあります。

    同程度の技術水準でパソコンを作る場合、
    値段が同じであれば、うるさくて重くて
    厚くて大きい方が高性能になります。
    なぜなら、そのようなパソコンは冷却性能の面で有利で、
    より発熱する (=高性能の) CPU を搭載できるからです。

    以上、CPU 選びの参考になれば幸いです。

    お問い合わせについて

    業務として技術コンサルティングやシステム設計・開発を行っております。
    気になることがありましたらご相談下さい。
    ご相談のみで完結する場合、コンサルティング費用の目安は
    内容によりますが1時間で5千円〜1万円ていどです。
    コンサルティングや開発を検討されるその前に、
    まずはお気軽にコメントやメールでご連絡下さい。
    ご契約前のコメントやメールでのやりとりは無料です。

    お問い合わせフォーム

    お急ぎの場合など、ただちに業務対応が必要な場合は、こちらのお問い合わせフォームをご利用ください。かきしちカンパニーお客様窓口が直ちに対応いたします。
    ※窓口へのお問い合わせ、お見積もりは無料です。


    お名前 (必須)

    メールアドレス (必須)

    題名

    メッセージ本文 (必須)

    Share

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    *