Разница между ядром и процессором

197

В чем разница между ядром и процессором?

Я уже искал его в Google, но у меня просто определение многоядерных и многопроцессорных систем, но оно не соответствует тому, что я ищу.

Саад Ахемал
источник

Ответы:

197

Ядро обычно является основной вычислительной единицей ЦП - оно может запускать один программный контекст (или несколько), если оно поддерживает аппаратные потоки, такие как гиперпоточность на процессорах Intel), поддерживая правильное состояние программы, регистры и правильный порядок выполнения, и выполнение операций через ALU . В целях оптимизации ядро ​​также может содержать кэш-память ядра с копиями часто используемых блоков памяти.

Процессор может иметь одно или несколько ядер для выполнения задач в данный момент времени. Этими задачами обычно являются программные процессы и потоки, запланированные ОС. Обратите внимание, что ОС может иметь много потоков для запуска, но ЦП может запускать X таких задач только в определенный момент времени, где X = число ядер * количество аппаратных потоков на ядро. Остальным пришлось бы ждать, пока ОС запланирует их, выгрузив текущие задачи или любым другим способом.

В дополнение к одному или нескольким ядрам, процессор будет включать в себя некоторое межсоединение, которое соединяет ядра с внешним миром, и обычно также большой общий кэш «последнего уровня». Есть несколько других ключевых элементов, необходимых для работы процессора, но их точное расположение может отличаться в зависимости от дизайна. Вам потребуется контроллер памяти для связи с памятью, контроллерами ввода / вывода (дисплей, PCIe, USB и т. Д.). В прошлом эти элементы находились вне процессора, в дополнительном «чипсете», но большинство современных разработок интегрировали их в процессор.

Кроме того, процессор может иметь встроенный графический процессор и почти все остальное, что разработчик хотел придерживаться с точки зрения производительности, мощности и производственных факторов. Конструкция ЦП в основном относится к так называемой системе на кристалле (SoC).

Это «классический» дизайн, используемый большинством современных устройств общего назначения (клиентские ПК, серверы, а также планшеты и смартфоны). Вы можете найти более сложные конструкции, как правило, в академии, где вычисления не выполняются в базовых «базовых» единицах.

Leeor
источник
@ Так что для 4-процессорного и 2-ядерного компьютера, если я запускаю цикл занятости, не должен ли он задействовать только 1 процессор и 1 ядро ​​(т. Е. 50%) только одного процессора? Мои наблюдения показывают, что он задействует весь процессор на 100% ... чего-то не хватает в моем понимании ...
Nrj
2
@Nrj, если вы запустите одно однопоточное приложение, оно будет выделено одному ядру и активирует только один поток HW. Этот поток сможет использовать 100% этого ядра, так как другой поток не работает вместе с ним. Если вы активируете другое приложение, оно обычно будет выделено другому ядру и так далее, пока вы не насытите количество ядер. Кроме того, любой дополнительный поток будет снова запланирован на те же ядра с использованием SMT. В этот момент загрузка ядра будет распределена между двумя потоками (и если они будут вести себя симметрично, каждый из них, вероятно, достигнет ~ 50%)
Лиор
@ Кажется, это было мое ожидание, но это не то, что я нашел. Я видел, что все четыре процессора (в TaskManager) перепрыгивают, чтобы показать 100% использования. Код был прост - for (int i = 0; i <Integer.MAX_VALUE; i ++) {System.out.println (k); }
Nrj
@ Мне кажется, я сделал тест неправильно. Это выглядит так, будто мое рабочее пространство в сети имеет виртуальные процессоры (4), но один процессор. Вот почему все они заняты. Когда я выполнил тест на физической машине с 2 процессорами (двухъядерный), я увидел, что загрузка процессора составляет около 25%, что соответствует ожиданиям.
Nrj
Обратите внимание, что эта терминология варьируется в зависимости от того, кого вы спрашиваете. Например, в моей системе Debian при проверке /proc/cpuinfoя вижу шестнадцать processor:строк, хотя там написано model: AMD Ryzen 7 2700X Eight-Core Processor. Так что, по крайней мере, в этом случае каждое из 8 «ядер» имеет два «процессора», что противоречит некоторым другим ответам.
JWD
130

Изображение может сказать более тысячи слов:

Изображение может сказать более тысячи слов

* Рисунок, описывающий сложность современной многопроцессорной, многоядерной системы.

Источник:

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

JohnTortugo
источник
114
Это, вероятно, говорит более тысячи слов для таких маленьких существ, как муравьи.
Sky
12
Я не имею ничего против использования изображений, но, по крайней мере, вы могли бы дать дополнительное объяснение, а не просто скопировать / вставить изображение.
Патрисио Сард
1
@Sky Будь осторожен с муравьями ... #hunter_x_hunter: 3
Саад Ахемал,
Для тех, кто сказал, что он слишком маленький для чтения, попробуйте щелкнуть по нему правой кнопкой мыши, Open images in new tabзатем увеличьте масштаб, используя cltr++
Ng Sek Long
28

Давайте сначала выясним, что такое ЦП и что такое ядро, ЦП центрального процессора, может иметь несколько ядерных блоков, эти ядра сами по себе являются процессором, способным выполнять программу, но они самодостаточны на одном чипе.

В прошлом один ЦП был распределен по нескольким чипам, но по мере развития закона Мура они создали полноценный ЦП внутри одного чипа (кристалла), так как с 90-х годов производитель начал размещать больше ядер в одном кристалле, так что это Концепция многоядерности.

В наши дни возможно иметь сотни ядер на одном и том же CPU (чип или кристалл) GPU Intel Xeon. Другой техникой, разработанной в 90-х годах, была одновременная многопоточность, в основном они обнаружили, что возможно иметь другой поток в одном и том же одноядерном процессоре, поскольку большая часть ресурсов уже дублирована, как ALU, несколько регистров.

Таким образом, в основном ЦП может иметь несколько ядер, каждое из которых способно запускать один или несколько потоков одновременно, мы можем ожидать, что в будущем будет больше ядер, но с большей трудностью, чтобы иметь возможность эффективно программировать.

Герман Альфаро
источник
Даже у Intel E5-2697 v2 всего 12 ядер ... Почему вы говорите "сотни ядер на одном процессоре"? Что ограничивает количество ядер на одном процессоре?
Pacerier
2
Они являются исследовательскими микропроцессорами с количеством ядер +100, и некоторые из них на производстве обращаются по адресу
Герман Альфаро
9

ЦП является центральным процессором. С 2002 года у нас только одноядерный процессор, т.е. мы будем выполнять только одну задачу или программу за раз.

Чтобы одновременно запускать несколько программ, мы должны использовать несколько процессоров для одновременного выполнения нескольких процессов, поэтому нам потребовалась другая материнская плата для этого, и это очень дорого.

Итак, Intel ввела концепцию гиперпоточности, то есть она преобразует один ЦП в два виртуальных ЦП, т.е. у нас есть два ядра для нашей задачи. Теперь процессор одиночный, но он только притворяется (маскируется), что у него двойной процессор и он выполняет несколько задач. Но иметь реально многоядерные процессоры будет лучше, чем это, поэтому люди разрабатывают создание многоядерных процессоров, т.е. нескольких процессоров в одном корпусе, т.е. захвата нескольких процессоров в одном большом процессоре. Т.е. несколько ядер.

Химаншу Гупта
источник
12
Что именно произошло в 2002 году?
Питер Мортенсен
1
Intel не изобрела концепцию одновременной многопоточности. Википедия сообщает, что Alpha EV8 была первой крупной коммерческой реализацией .
Питер Кордес
3

В первые дни ... как и до 90-х годов ... процессоры не могли выполнять несколько задач эффективно, потому что один процессор мог справиться только с одной задачей ... поэтому, когда мы говорили, что мой антивирус, Microsoft Word, VLC и т. д. все программы работают одновременно ... на самом деле это не так. Когда я сказал, что процессор может обрабатывать один процесс за раз ... Я имел в виду. На самом деле он будет обрабатывать одну задачу ... затем он будет приостанавливать эту задачу ... выполнять другую задачу ... завершать ее, если она короткая, или снова ее приостанавливать и добавлять в очередь ... затем следующую. Но эта «пауза», о которой я упоминал, была настолько мала (около 1 нс), что вы не поняли, что задача была приостановлена. Например. На vlc во время прослушивания музыки одновременно работают другие приложения, но, как я уже говорил ... одна программа за раз ...

Но это было о старых процессорах ...

Современные процессоры, т.е. 3-го поколения, имеют многоядерные процессоры. Теперь «ядра» можно сравнить с самими процессорами 1-го или 2-го поколения ... встроенными в один чип, один процессор. Итак, теперь мы поняли, что такое ядра, то есть это мини-процессоры, которые объединяются, чтобы стать процессором. И каждое ядро ​​может обрабатывать один процесс за раз или несколько потоков, как разработано для ОС. И они следуют тем же шагам, которые я упоминал выше об одном процессоре.

Например. Процессор i7 6gen имеет 8 ядер ... т.е. 8 мини-процессоров в 1 i7 ... т.е. его скорость в 8 раз выше, чем у старых процессоров. И вот как многозадачность может быть выполнена.

В одном процессоре могут быть сотни ядер, например. Intel i128.

Надеюсь, я объяснил это хорошо.

Ришикеш Дабир
источник
0

Картина Intel полезна, как показывает лучший ответ Тортуги. Вот подпись к нему.

Процессор : одна полупроводниковая микросхема, центральный процессор (CPU), установленный в одном сокете, примерно 1950-х-2010-х годов. Со временем на микросхему процессора было добавлено больше функций. До выпуска одночиповых процессоров 1950-х годов один процессор мог распределяться между несколькими чипами. В середине 2010-х годов микросхемы «система-на-кристалле» несколько усложнили приравнивание одного процессора к одному чипу, хотя обычно это то, что люди имеют в виду под процессором, как в «этот компьютер имеет процессор i7» или «эта компьютерная система». имеет четыре процессора ".

Ядро : один блок процессора, выполняющий одну инструкцию за раз. (Вы увидите, что люди говорят одну инструкцию за такт, но некоторые процессоры используют несколько тактов для некоторых инструкций.)

Беннет Браун
источник
1
Ядро x86 логически выполняет инструкции по одному в программном порядке, но на самом деле современные процессоры тратят много транзисторов, чтобы сохранить иллюзию выполнения этого, в то время как на самом деле выполняется суперскалярное выполнение из четырех элементов в произвольном порядке. realworldtech.com/haswell-cpu . (Или шириной 5 или 6 для Райзена). Более 3 инструкций за такт не редкость на практике для некоторого кода. Но намного ниже 1 также часто встречается в другом коде, где узкие места в пропусках кэша и / или неправильном прогнозе ветвлений.
Питер Кордес
Кроме того, архитектуры VLIW, такие как Itanium, явно параллельны и логически, а также физически выполняют несколько инструкций параллельно. Кстати, интересный исторический момент: один процессор занимал более одного чипа в первые дни.
Питер Кордес