コアとプロセッサの違い


197

コアとプロセッサの違いは何ですか?

私はすでにGoogleでそれを探しましたが、マルチコアおよびマルチプロセッサの定義を持っているだけですが、探しているものと一致しません。

回答:


197

コアは通常、CPUの基本的な計算単位です。コアは、単一のプログラムコンテキスト(またはIntel CPUのハイパースレッディングなどのハードウェアスレッドをサポートしている場合は複数のプログラムコンテキスト)を実行し、正しいプログラム状態、レジスター、および正しい実行順序を維持します。ALUを介して操作を実行する。最適化のために、コアは頻繁に使用されるメモリチャンクのコピーを含むオンコアキャッシュも保持できます。

CPUは、所定の時間にタスクを実行するための1つ以上のコアを備えている場合があります。これらのタスクは通常、OSがスケジュールするソフトウェアプロセスとスレッドです。OSには多くのスレッドを実行する必要がある場合がありますが、CPUは特定の時間にXのようなタスクしか実行できません。ここで、X =コア数*コアあたりのハードウェアスレッド数。残りは、現在実行中のタスクをプリエンプトするか、その他の方法でOSがそれらをスケジュールするのを待つ必要があります。

CPUには、1つまたは複数のコアに加えて、コアを外部の世界に接続する相互接続と、通常は大きな「最後のレベル」の共有キャッシュも含まれます。CPUを機能させるために必要な他の主要な要素がいくつかありますが、それらの正確な位置は設計によって異なる場合があります。メモリ、I / Oコントローラ(ディスプレイ、PCIe、USBなど)と通信するには、メモリコントローラが必要です。以前は、これらの要素はCPUの外部、つまり補完的な「チップセット」にありましたが、最新の設計のほとんどは、それらをCPUに統合しています。

さらに、CPUにはGPUが統合されている場合があり、設計者がパフォーマンス、電力、製造上の考慮事項のために密接に維持したかったものはほとんどすべてあります。CPUの設計は、主にシステムオンチップ(SoC)と呼ばれるものに傾向があります。

これは「クラシック」なデザインで、最新の汎用デバイス(クライアントPC、サーバー、タブレット、スマートフォン)で使用されています。通常はアカデミーで、計算が基本的な「コアのような」単位で行われない、より精巧なデザインを見つけることができます。


@Leeor 4 CPUおよび2コアマシンの場合、ビジーループを実行する場合、1つのCPUと1つのCPUの1つのコア(つまり50%)だけを使用しないでください。私の観察では、すべてのCPUが100%使用されていることを示しています...理解に欠けているものがあります...
Nrj

2
@ Nrj、1つのシングルスレッドアプリケーションを実行すると、そのアプリケーションはシングルコアに割り当てられ、その上で1つのHWスレッドのみをアクティブにします。他のスレッドが実行されていないので、そのスレッドはコアの100%を利用できます。別のアプリケーションをアクティブ化すると、通常は別のコアに割り当てられ、コアの数が飽和するまで続きます。さらに、追加のスレッドは、SMTを使用して同じコアに再度スケジュールされます。その時点で、コア使用率は2つのスレッド間で分散されます(それらが対称的に動作する場合、それぞれが約50%に達する可能性があります)
Leeor

@リーアーはどうやらこれは私の期待でしたが、私が見つけたものではありませんでした。4つのCPU(タスクマネージャ内)がすべてジャンプして100%の使用率を示しているのがわかりました。コードはシンプルでした-for(int i = 0; i <Integer.MAX_VALUE; i ++){System.out.println(k); }
Nrj 2018

@リーアー私はテストを間違ってやったと思います。私のオンラインワークスペースには仮想CPU(4)が1つのプロセッサしか搭載されていないように見えます。それが彼ら全員が忙しくなる理由です。2 CPUの物理マシン(デュアルコア)でテストを実行したところ、CPU使用率が約25%であり、期待と一致しています。
Nrj

この用語は、質問者によって異なることに注意してください。たとえば、私のDebianシステムでは、を調べていますが、/proc/cpuinfo16 processor:行ありますmodel: AMD Ryzen 7 2700X Eight-Core Processor。したがって、少なくともこの場合、8つの「コア」のそれぞれに2つの「プロセッサ」があり、これは他のいくつかの回答とは矛盾しています。
jwd

130

画像は千以上の単語を言うかもしれません:

1つの画像で1000語以上の言葉を言うことがある

*最新のマルチプロセッサ、マルチコアシステムの複雑さを説明する図。

ソース:

https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization


114
アリのような小さな生き物については、おそらく千の言葉以上と言っています。

12
画像の使用に反対することは何もありませんが、少なくとも画像をコピーして貼り付けるだけではなく、さらに詳しい説明を行うことができます。
Patricio Sard

1
@Skyアリに注意してください... #hunter_x_hunter:3
Saad Achemlal 2017年

読むには小さすぎると言った人は、右クリックして、+Open images in new tabcltr+
Ng Sek Long

28

まず、CPUとコアとは何なのかを明確にしましょう。中央処理装置CPUは、複数のコアユニットを持つことができます。これらのコアは、それ自体がプロセッサであり、プログラムを実行できますが、同じチップに内蔵されています。

過去には1つのCPUがかなりの数のチップに分散されていましたが、ムーアの法則が進展するにつれて、1つのチップ(ダイ)内に完全なCPUが組み込まれるようになりました。マルチコアの概念。

最近では、同じCPU(チップまたはダイ)GPU、Intel Xeonに数百のコアを搭載することが可能です。90年代に開発された他の手法は、同時マルチスレッド化でした。基本的に、リソースのほとんどがすでにALUや複数のレジスターのように複製されているため、同じシングルコアCPUで別のスレッドを使用できることがわかりました。

そのため、基本的にCPUは複数のコアを備え、それぞれが1つ以上のスレッドを同時に実行できます。将来的にはより多くのコアが見込まれますが、効率的にプログラミングすることはさらに困難になります。


Intel E5-2697 v2」でも12コアしかない...なぜ「同じCPUに数百のコア」と言うのですか?1つのCPUで可能なコアの数を制限するものは何ですか?
パセリエ2016年

2
彼らは、100個のコアの数には、研究のマイクロプロセッサであり、生産上のいくつかはに見てみましょう:tomshardware.com/forum/318101-28-which-maximum-cores-cores
ヘルマン・アルファロ

9

CPUは中央処理装置です。2002年以降、コアプロセッサは1つしかありません。つまり、一度に1つのタスクまたはプログラムのみを実行します。

一度に複数のプログラムを実行するには、一度にマルチプロセスを実行するためにマルチプロセッサを使用する必要があるため、そのために別のマザーボードが必要であり、非常に高価です。

そこで、Intelはハイパースレッディングの概念を導入しました。つまり、単一のCPUを2つの仮想CPUに変換します。つまり、タスクに2つのコアがあります。現在、CPUはシングルですが、デュアルCPUを備え、複数のタスクを実行しているように見せかけています(マスカレード)。しかし、実際のマルチコアを持つことはそれよりも優れているので、人々はマルチコアプロセッサ、つまり単一のボックスで複数のプロセッサを作成することを開発します。つまり、複数のコア。


12
2002年に正確に何が起こったのですか?
Peter Mortensen

1
Intelは同時マルチスレッドの概念を発明しませんでした。 ウィキペディアによると、Alpha EV8は最初の主要な商用実装でした。
Peter Cordes

3

初期の頃は... 90年代の前と同じように...プロセッサーはマルチタスクを効率的に実行できませんでした...単一のプロセッサーで単一のタスクしか処理できなかったので...アンチウイルス、マイクロソフトワード、vlcなど ソフトウェアはすべて同時に実行されています...実際にはそうではありません。プロセッサは一度に1つのプロセスを処理できると言ったとき、それはつまり、それは実際には単一のタスクを処理します...その後、そのタスクを一時停止するために使用されます...別のタスクを実行します...短いものの場合は完了しますか、もう一度一時停止してキューに追加します...次に、次のタスクを実行します。しかし、私が述べたこの「一時停止」は非常に小さいため(約1ns)、タスクが一時停止されたことを理解できませんでした。例えば。音楽を聴きながらvlcで同時に実行している他のアプリがありますが、あなたが言ったように...一度に1つのプログラム...

しかし、これは古いプロセッサに関するものでした...

現在のプロセッサ、つまり第3世代のPCにはマルチコアプロセッサが搭載されています。「コア」は、第1世代または第2世代のプロセッサ自体と比較できます。シングルチップ、シングルプロセッサに組み込まれています。これで、コアとは何であるかがわかりました。つまり、これらは組み合わせてプロセッサになるミニプロセッサです。また、各コアは、OS向けに設計されたように、一度に1つのプロセスまたはマルチスレッドを処理できます。そして、彼らは私が単一のプロセッサについて上で述べたのと同じステップをフォローします。

例えば。i7 6genプロセッサには8つのコアがあります。つまり、1つのi7に8つのミニプロセッサがあります。つまり、その速度は古いプロセッサの8倍です。そして、これがマルチタスクを実行できる方法です。

1つのプロセッサに数百のコアが存在する可能性があります。Intel i128。

私はこれをよく説明したいと思います。


0

トルトゥーガのベストアンサーが示すように、インテルの写真は参考になります。これのキャプションは次のとおりです。

プロセッサ:1つの半導体チップ、1つのソケットに装着されたCPU(中央処理装置)、1950年代から2010年代頃。時間の経過とともに、より多くの機能がCPUチップに搭載されてきました。1950年代のシングルチッププロセッサのリリース以前は、1つのプロセッサが複数のチップに分散していた可能性があります。2010年代の半ばに、システムオンチップチップにより、1つのプロセッサを1つのチップと同等にするのが少しおおざっぱになりました。 4つのプロセッサを搭載しています。」

コア:CPUの1つのブロックで、一度に1つの命令を実行します。(クロックサイクルごとに1つの命令を言う人もいますが、一部のCPUは、いくつかの命令に複数のクロックサイクルを使用します。)


1
x86コアは、命令をプログラムの順序で1つずつ論理的に実行しますが、実際のところ、最近のCPUは、実際に4ワイドのスーパースカラーアウトオブオーダー実行でありながら、多くのトランジスタを使用してそのような錯覚を維持しています。realworldtech.com/haswell-cpu。(またはRyzenの場合は5または6幅)。一部のコードでは、クロックあたり3つを超える命令は実際には珍しくありません。しかし、1をはるかに下回ることは、キャッシュミスやブランチの予測ミスのボトルネックとなる他のコードでも一般的です。
Peter Cordes

また、ItaniumなどのVLIWアーキテクチャは明示的に並列であり、論理的にも物理的にも複数の命令を並列に実行します。ところで、初期の頃は1つのCPUが複数のチップを使用していたという興味深い歴史的ポイントがあります。
Peter Cordes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.