[CPU基礎知識] コアとスレッド: 複数の処理を高速に行うには

最終更新日 : 2022/10/01

※当サイトはアフィリエイト広告を利用しています

CPUのスペック表で良く目にするコア(Core)スレッド(Thread)。あまり馴染みのない言葉ですので、特に初心者の人には分かりにくい部分があるかと思いますが、どちらも性能に直結する重要な要素です。

ここではコア、スレッドに関して知っておきたいことや最適な数などについて、解説していきます。是非覚えて帰って下さい。

コアとスレッド

コアスレッドについては、CPUの基本的な仕組みやCPUの進化の歴史を知ると理解しやすいでしょう。以下に、CPUの大まかな進化の歴史をたどりながら、コア、スレッドとこれらにまつわる技術についてお話しします。

スレッド

簡単にいうと、スレッド(Thread)とはプログラムそのもののことです。その中身はCPUへの指令の集まりで、CPUはこの指令を順に処理していきます。

PCでは様々なプログラムが稼働していますので、スレッドもまた数十あるいは百以上になることも珍しくありません。ということは、全てのスレッドを処理するには少なくとも数十のCPUが必要になるはずですが、そんなに多くのCPUを搭載するPCは存在しません。ではなぜ滞ることなく処理が行われるのでしょう?

それは、CPUが1つのスレッドに割り当てる時間を非常に短くし、次々と別のスレッドに切り替えて処理を行っているからです。つまり、各スレッドを少し処理しては次のスレッドに移るということですが、これにより、まるで全てのプログラムを同時に処理しているように見えるのです。

ただ、この方法だけでは重いプログラムが処理しきれなかったり、その割を食って全体の挙動が遅くなったりしてしまいます。実際、昔のCPUは1つ重いプログラムがあるだけで、フリーズに近いほど全体が重くなることも珍しくありませんでした。

そんな中、ある技術が誕生します。

[技術]: SMT(Simultaneous Multi-Threading)

その技術とはSMT(Simultaneous Multi-Threading: 同時マルチスレッディング)です。

CPUの中には制御装置や演算装置など様々な部品が詰め込まれていますが、あるスレッドを処理している間、全ての装置がフルに使われている訳ではありません。そこで、空いている装置に別のスレッドの処理をさせることで、CPUを効率的に使う技術が考え出されました。それがSMTです。

SMTにより、複数プログラムの稼働に少し余裕ができました。ただ、SMTは理論上は最大で2スレッド分の処理を行うことができますが、現実的には平均すると20~30%ほどの性能アップに留まるようです。決して小さくはない数字ですが、過度な期待は禁物です。

また、Intelは自社のSMTのことをHTT(Hyper Threading Technology)と呼んでいますが、同じものと考えて差し支えありません。

コア

その後、1つのCPUの中に複数のCPUを詰め込むという方法も開発されました。このCPUの中のCPUのことをコア(Core)といいます。コアにはCPUに必要な装置が一通り内包されますが、キャッシュメモリのような他のコアと共有可能なものは、コアの外側のCPU内に設置されるという構造となっています。

SMTはスレッドの処理効率を上げる技術でしたが、コアの増加はCPUの増加のようなものですから、もっとダイレクトに性能アップに繋がります。CPUはある時期からシングルスレッド性能(1コア当たりの性能)があまり伸びなくなったのですが、コアを増やすことで性能を向上させてCPUを進化させてきました。それくらい性能への影響が大きいのです。

ただ、コア数が多いほど高性能といえることは確かですが、スレッドが各コアに上手く振り分けられなければ、そのパワーを持て余してしまうことになります。10個以上のコアがあっても2~3個しか使えなければ、せっかくのパワーも意味を成さないからです。

この辺りはプログラム次第という部分もあるのですが、最近のOSは処理の振り分けがうまくなっていますので、ある程度余裕のあるコア数を備えておくことは、実用上も精神衛生上も安心といえるでしょう。

また、コアにも新たな技術が導入されました。

[技術]: big.LITTLE

big.LITTLE(ビッグリトル)とは、消費電力の大きい高性能コアと、性能は高くないものの省電力な高効率コアを両方備えて、処理をその重さに合わせて適切なコアに振り分ける技術のことです。携帯機器向けのプロセッサで有名なArm社により開発されました。

Intelは、第12世代Coreからこの技術を取り入れて、高性能コアのことをPコア(Performance)、高効率コアのことをEコア(Efficient)と呼ぶようになりました。big.LITTLEのメリットは、軽い処理を行う時にEコアを使うことで消費電力を下げることができ、かついざという時にはハイパワーなPコアを動員できる点にあります。

ただ、頻繁にある訳ではありませんが、本来Pコアで処理すべき重い処理がEコアに割り当てられることもあって、この場合はパワー不足により処理に支障が出ることもありますので、注意が必要です。




細かい機能を含めると、まとめきれないほどの膨大な数になってしまいますので、コアとスレッドの重要な分岐点となった出来事を中心にお話ししました。

CPUにマルチスレッディングマルチコアという概念がなかった時代、重いプログラムを動かす時には他の不要なプログラムを終了させるなどして、システム全体をできる限り軽くすることがテクニックの一つとなるくらい、CPUパワーは不足していました。

もちろん今でもフリーズは起こり得ますが、全てのコア、スレッドがフルパワーという状況はほぼありませんので、最低限の動作は保証されているといえるでしょう。CPUに限らずですが、パワーに余裕があるということは非常に重要です。

最適なコア数は?

最適なコア数というのは、用途によって変わってきます。当然といえば当然ですが、利用するプログラムが多くのコアを有効活用できるのであれば、コアが多いほど処理は楽になるでしょう。

しかし、そうでないならば、コア数はある程度絞った方がパフォーマンスは上がります

なぜなら、TDPという縛りがあるからです。TDPは発熱量の目安です。CPUやGPUなどのプロセッサは動作時に熱を発しますが、ハイパワーであればあるほど発熱量も増えてしまいます。この熱をの冷却するための目安として、TDPが定められているという訳です。

TDPは全コアがフル稼働した場合を想定した指標です。よって、TDPがあまりにも高くなってしまう場合はクロック周波数を落とすなどしてTDPを下げる必要があるのですが、これは必然的にCPUのパワーダウンを意味します。

つまり、メニーコア(たくさんのコア)が有効なケースは限定的ということになるのです。


別の角度からも見てみましょう。以下に、IntelAMDの現行世代CPUのコア / スレッド数の一覧を示します。

Intel (12th Gen)コア / スレッド数AMD (4th Gen)
Core i916 / 2416 / 32Ryzen 9
Core i712 / 208 / 16Ryzen 7
Core i56 / 126 / 12Ryzen 5
Core i34 / 8--

おおよそは上記のような数字となりますが、同一ブランドでもコア / スレッド数が異なる場合があります。ここでは各ブランドで最も一般的な数を採用していますが、第12世代Intel Coreの上位クラスはPコア(高性能コア)Eコア(高効率コア)を足したものとなっていますので、ご注意下さい。


では本題ですが、分類上はCore i7 / Ryzen 7ハイクラスCore i5 / Ryzen 5ミドルクラスとなりますので、売れ筋はこの辺りということになるでしょう。

実はこの売れ筋かどうかというのは、非常に重要なファクターとなります。もしソフトウェア開発者が10コア以上をターゲットとした場合、ハイエンドCPUでなければ条件を満たすことが難しくなってしまいますが、このクラスのCPUはシェアが非常に低いため、ユーザーの母数が少なくなってしまうのです。これでは売り上げが期待できませんから、開発者は基本的にミドルクラス程度の性能があれば問題はないレベルを目標とします。

ということは、現在の状況では6~8コア辺りが鉄板といえそうですが、旧世代のシステムを使う人もまだまだ多いですから、当面は4コアもあれば普段使いで困ることはないでしょう。

とはいえ、今あえて下位クラスに留めておく理由は価格の安さ以外ありませんし、将来性や安定性を考えると、やはり最新世代のミドルクラス以上にしておいた方が無難です。