CPUの選択と効率追求
CPUやSoCを処理性能の観点から選択しようとする場合、どのように決めていったらよりベターな選択ができるでしょうか。
ここでは、その基本的な考え方について、筆者なりにまとめてみました。
■製造技術が進むと省電力化が進む
一般論ですが、製造技術が進むと回路をより小さくでき、一つのトランジスタで必要とする、あるいは溜められる電子の量が減少するため、同じ処理を行うのに消費される電力が下がります。
28nmだとか10nmだとかいうプロセス(回路を構成する単位長さ)が小さくなったときに大きな変化が生じますが、同じプロセスでも改良が入ってより省電力になることもあります。
他にも回路から電子が勝手に漏れていってしまわないように素材を工夫したり、不要な回路には電源やクロックを供給しない設計とするなど、基本的には新しい製品ほど省電力である可能性が高いと言えます。(出来不出来の波もあるので一概には言い切れませんが)
■単純にクロックを上げるのが得策じゃないから各社工夫をしている
同じ設計でもクロックを上げれば単純に性能を上げられるのですが、ただクロック上げるだけだと消費電力が非実現的に増えてしまうので、どこのCPUメーカーも1クロックでなるべく多くの処理をこなせるように工夫をし続けています。
CPUの性能は製造技術によりところが大きいですが、仮に同レベルの製造技術が確保できている場合はこのCPUコアの基本設計の優劣がそのまま処理効率の優劣に繋がってしまいます。
しかしながら、1クロック辺りの処理性能も単純に追求するだけだと、回路ばっかり増えて結局電力バカ食いになってしまいかねず、製造コストとの兼ね合いもあって時代時代でバランスを見極めているといった感じです。
バランスの良い回路規模とクロックと電圧。まずはこのバランスの良い設計で作られているコアを選択するのが基本条件です。
■処理効率だけを考えるなら一番電圧が低いのが良いよ
極論から言いますと、基本特性としてクロックに比例、電圧の二乗に比例して消費電力が増加していきます。そして、より高いクロックで動作させるためにはより高い電圧が必要になります。
もちろん、Threshold電圧があるので電圧を下げるには限界がありますし、電圧を上げる方向にも破損の危険や電流量の限界、リーク電流など様々な要因がありますので、どのレンジでも上記の法則が当てはまるというわけではありません。
しかしながら、上記の法則が当てはまるような中庸なレンジで比較する場合、性能を向上させようとすると消費電力は三乗のオーダーで増加します。
昔Intelが例として示したのは、デスクトップPC向けCPUの8割のクロックと8割の電圧で消費電力半分のノートPC向けCPUが出来る、というものでした。0.8^3=0.512ということで、2割性能を落とすだけで消費電力は半減できるよ、ということです。
現在においても、例えばCore i7-7700シリーズがTDP95Wで4.2GHz、TDP65Wで3.8GHz、TDP35Wで2.9GHzとTDPが大きく下がってもクロックはそれほど落ちません。(現在のTDPは実際の消費電力とは大きくかけ離れている場合がありますのであくまで一つの指標に過ぎません。また、現在のCPUにはGPUも内蔵していてそちらの最大クロックはCore i7-7700シリーズで同一だったりしますので、単純に三乗の法則を適用できるわけではありません。)
つまり、CPU単体の電力対処理性能効率で言えば、動作できる最低電圧でなるべくクロック高く取るのが一番良いよ、ってことになります。
■求める性能に応じて省電力性能を妥協してゆく
しかしながら、それだけでは使っていて満足できるほどの性能が確保できる可能性は非常に少ないでしょう。そこで、求める性能に応じて、消費電力を妥協しながら性能を上げていきます。
今現在使用しているアプリの処理速度を速くしたいのであればクロック上昇を考慮することになりますが、上記の通り三乗のオーダーで消費電力が増加していくことに注意が必要です。
一方、コアを増やすという選択肢もあります。今現在使用しているアプリの処理速度はほとんど速くはなりませんが、今のPCは様々な処理が裏で動いていますのでそれらの負荷が分散されます。CPUの奪い合いを減らすことが出来る分くらいは今現在使用しているアプリの処理速度にも好影響をもたらしてくれるかもしれません。そして、大雑把に言ってしまうとコア数を増やしたら消費電力は比例での増加です。
つまり一つのアプリの処理速度にそれほど拘らないのであればクロックが高速なCPUよりもコア数の多いCPUを選択するほうが得策となります。アプリの中には複数のコアを上手に使って処理速度を向上させてくれるものもありますので、そういうアプリではコアを増やすことがある程度直接処理速度向上にも繋がります。
ただし、一つのアプリで複数のコアを活用するということにはどうしても限界があります。コアを増やしても不足だと感じるならクロックを上げていくしかありません。
■お金が有るなら最上位を買うと良いよ
身も蓋も無いことを言うようですが、CPUの場合は最上位≒とりわけ良く製造できた製品を選別している、なので、同じクロックでもより低い電圧で動作できたり、同じ電圧でもより高いクロックで動作できたりします。
すなわち、そもそも省電力性能には秀でたものが優先して最上位に割り当てられているのです。
それでも高いクロックで動作させれば消費電力はそれなり高くなりますので、必要が無い分はクロックを制限して抑えてしまえば良いのです。
最上位を買って、クロックと電圧を抑えて運用するのが最も省電力な使い方です。(無駄に贅沢とも言う)
元々TDPの高いCPUを選択すると、それに応じた強力な冷却機構が備わることになりますから、冷却性能にも余裕が生じて静かに使える可能性も増します。
デスクトップ向けのCPUなどでは付属するCPUクーラーがTDPやグレードによって異なりますので、強力なクーラーを入手するために高TDPの製品を選択するという手も無くもないです。(ただ、本当に拘るなら専用のCPUクーラーを別に購入した方が良いので、付属CPUクーラーの種類に拘り過ぎることは得策ではありません。)
■コア数を取るかクロックを取るか
多くの人はそう簡単に最上位というわけに行かないので、妥協点を探して行くことになります。人それぞれに優先度重要度が異なるので、妥協の選択肢もたくさんあります。
例えば、Intelのこの2つの製品。結構悩ましげな選択肢だと思いませんか?
Core i5-7400が3.0GHz(TBは3.5GHz) 4C4T TDP65Wで\22,780。Core i3-7320が4.1GHz 2C4T TDP51Wで\19,130。
さて、どっちを選びましょう?
それこそ人によりますよね。まぁ、筆者は数年前にCore i5-4570S 2.9GHz(TB3.6GHz) 4C4T TDP65W \17,998で購入していますけれども、その頃はCore i3のクロックがここまで高くはなかったからなぁ。
■あまりストイックに追求すると実用寿命が短くなることも
必要十分な性能だけを確保して、極力省電力なCPUを選択する。と、その時点では最適解かもしれませんが、アップデート等で処理が重くなってきたときに一気に使いづらくなる危険性が生じてきます。
最悪、まだ使えるのに使う気になれないなんてことにもなると、そこでそのCPUの実用寿命が尽きてしまいます。
そういう意味では将来に向けて性能の余裕を確保しておくこともある程度考慮しておいた方が良いかもしれません。
ほんの2、3千円程度の差が一年長く使えたかどうかに結び付いてしまうのならば、今ちょっと頑張っておいた方が良いかもしれませんよね。
■スマホやタブレットでも考え方は一緒
なのですが、PC向けのCPUみたいに現行製品のほとんどが最先端プロセスなんてことはなく、現在でもミドル以下は28nmプロセスのSoCが主流です。
特に省電力であることのメリットが大きいモバイル製品では、性能を求めると発熱やバッテリー駆動時間とのバランスに苦慮することになります。
28nmで中途半端に性能を高めたSoCに手を出すくらいだったら、28nmの場合は割り切ってローエンド、そうでないなら10nmや14nm、16nmプロセスのSoCを頑張って選択するくらいの方が良いかもしれません。かなり高価になりますけど。
ただ、非常に主観的な話になりますけど、Coretex-A7は流石にもうしんどい。一方、Coretex-A53は良いものだ、って筆者は思ってます。
直近で気になるのはMT6799(MediaTek HelioX30)。big.LITTLEを3段階に拡張して、bigでは超リッチなCortex-A73コアでシングルスレッド性能を追求しつつ、ミドル~ローによく搭載されるCortex-53を真ん中に、より省電力で小さなCortex-A35コアをLITTLEに持ってくるARMコアの現在のバリエーションを最大限に活かそうとしているSoCでしかも10nmプロセスです。まだ製品が出ていませんが、要注目です。
もう一つはSnapdragon660。Kryo 260x8コアで14nmプロセスというミドルレンジ(ハイ寄り)のSoCですが、価格がそれほど高くならなければ決定版的な匂いを感じさせる期待大の製品です。