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


197

Чим відрізняється ядро ​​від процесора?

Я вже шукав це в Google, але я просто маю багатоядерне та багатопроцесорне визначення, але воно не відповідає тому, що я шукаю.

Відповіді:


197

Ядро, як правило, є базовою обчислювальною одиницею процесора - воно може запускати один програмний контекст (або декілька, якщо він підтримує апаратні потоки, такі як гіперпереробка на процесорах Intel), підтримуючи правильний стан програми, регістри та правильний порядок виконання, і виконання операцій через АЛУ . Для оптимізації ядро ​​може також містити кеші на основних ядрах з копіями часто використовуваних фрагментів пам'яті.

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

На додаток до одного або багатьох ядер, процесор буде включати деякий взаємозв'язок, який з'єднує ядра із зовнішнім світом, і зазвичай також великий спільний кеш "останнього рівня". Існує кілька інших ключових елементів, необхідних для роботи процесора, але їх точне розташування може відрізнятися залежно від дизайну. Вам знадобиться контролер пам'яті для розмови з пам'яттю, контролерами вводу / виводу (дисплей, PCIe, USB тощо). У минулому ці елементи знаходилися поза процесором, доповнюючи «чіпсет», але більшість сучасних конструкцій інтегрували їх у процесор.

Крім того, процесор може мати інтегрований графічний процесор, і майже все інше, що дизайнер хотів підтримувати поруч щодо продуктивності, потужності та виробничих міркувань. Дизайн процесора в основному трендує те, що називається системою на чіпі (SoC).

Це "класичний" дизайн, який використовується більшістю сучасних пристроїв загального призначення (клієнтський ПК, сервери, а також планшети та смартфони). Ви можете знайти більш складні конструкції, як правило, в академії, де обчислення не проводяться в основних "ядроподібних" одиницях.


@Leeor, так що для 4-х процесорних та 2-х ядерних машин, якщо я запускаю цикл, він не повинен залучати лише 1 процесор і 1 ядро ​​(тобто 50%) лише одного процесора? Моє спостереження показує, що він залучає весь процесор на 100% ... чогось не вистачає в моєму розумінні ...
Nrj

2
@Nrj, якщо ви запускаєте одну однопоточну програму, вона буде розподілена на одне ядро ​​і активує на ній лише одну нитку HW. Цей потік зможе використовувати 100% цього ядра, оскільки поряд з ним не працює інший потік. Якщо ви активуєте іншу програму, вона, як правило, буде виділена іншим ядром і так далі, поки ви не наситите кількість ядер. Крім того, будь-який додатковий потік буде запланований знову до тих же ядер за допомогою SMT. У цей момент використання основних процесів буде розподілено між двома потоками (і якщо вони поводяться симетрично, кожен, швидше за все, досягне ~ 50%)
Ліор

@Leeor, мабуть, це було моє очікування, але його не те, що я знайшов. Я бачив, що всі чотири CPU (у менеджері завдань) стрибають, щоб показати 100% використання. Код був простим - for (int i = 0; i <Integer.MAX_VALUE; i ++) {System.out.println (k); }
Nrj

@Leeor Я думаю, що я зробив тест неправильно. виглядає, що в моєму робочому просторі в Інтернеті є віртуальні процесори (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


114
Це, мабуть, говорить більше тисячі слів для маленьких істот, як мурашки.
Sky

12
Я не маю нічого проти використання зображень, але принаймні ви можете зробити додаткове пояснення, а не просто копіювати / вставляти зображення.
Патрісіо Сард

1
@Sky Будьте обережні з мурашками ... #hunter_x_hunter: 3
Saad Achemlal

Для тих, хто сказав, що це занадто мало для читання, спробуйте клацнути правою кнопкою миші, Open images in new tabа потім збільшити масштаб, використовуючи cltr++
Ng Sek Long

28

Давайте спочатку уточнимо, що таке процесор, а що таке ядро, центральний процесор процесора, може мати декілька основних ядер; ці ядра є процесором сам по собі, здатний виконувати програму, але він міститься на одній мікросхемі.

Раніше один процесор був розподілений між досить багато мікросхем, але в міру розвитку закону Мура вони створили повний процесор всередині однієї мікросхеми (die), оскільки з 90-х виробник почав вміщувати більше ядер в одну матрицю, тож це Концепція багатоядерних.

У ці дні можливо мати сотні ядер на одному і тому ж процесорі (чіп або штамповий) графічних процесорів Intel Xeon. Інша методика, розроблена в 90-х, була одночасною багатопотоковою передачею, в основному вони виявили, що можливо мати ще одну нитку в тому ж одноядерному процесорі, оскільки більшість ресурсів дублюються вже як ALU, декілька регістрів.

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


Навіть " Intel E5-2697 v2 " має лише 12 ядер ... Чому ви говорите "сотні ядер на одному процесорі"? Що обмежує кількість ядер, можливих в одному процесорі?
Pacerier

2
Вони дослідницькі мікропроцесори в кількості +100 ядер, а декілька на виробництві дивіться на: tomshardware.com/forum/318101-28-which-maximum-cores-cores
Germán Alfaro

9

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

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

Таким чином, Intel представила концепцію гіперточення, тобто вона перетворить єдиний процесор у два віртуальних процесора, тобто у нас є два ядра для нашого завдання. Зараз процесор єдиний, але він лише прикидається (маскується), що має подвійний процесор і виконує кілька завдань. Але мати справжні кілька ядер буде краще, ніж це, тому люди розвиватимуть виготовлення багатоядерних процесорів, тобто декількох процесорів на одній коробці, тобто захоплення декількох процесорів на одному великому процесорі. Тобто кілька ядер.


12
Що саме сталося у 2002 році?
Пітер Мортенсен

1
Intel не винайшла концепцію одночасної багатопотокової обробки. Вікіпедія говорить, що Альфа EV8 була першою великою комерційною реалізацією .
Пітер Кордес

3

У перші дні ... як і до 90-х ... процесори не змогли ефективно виконати багато завдань ... Тому що один процесор міг би впоратися з однією задачею ... тому коли ми говорили, що мій антивірус, слово microsoft, vlc тощо. програмне забезпечення працює одночасно ... це насправді не так. Коли я сказав, що процесор може одночасно обробляти один процес ... я мав на увазі це. Він фактично обробив би одне завдання ... тоді він використовував для призупинення цього завдання ... взяти інше завдання ... виконати його, якщо його короткий або знову призупинити і додати його до черги ... потім наступне. Але ця «пауза», яку я згадав, була настільки мала (приблизно 1 с), що ви не зрозуміли, що завдання було призупинено. Напр. На vlc під час прослуховування музики є й інші програми, які працюють одночасно, але, як я вам казав ... по одній програмі за раз ...

Але це стосувалося старих процесорів ...

Зараз процесори, тобто третій генератор, мають багатоядерні процесори. Тепер «ядра» можна порівняти з самими процесорами 1-го або 2-го ген ... вбудованими в єдиний чіп, єдиний процесор. Отже, тепер ми зрозуміли, що таке ядра, тобто вони є міні-процесорами, які об'єднуються в процесор. І кожне ядро ​​може обробляти один процес одночасно або декілька потоків, як призначено для ОС. І вони виконують ті ж кроки, що я згадував вище про один процесор.

Напр. Процесор i7 6gen має 8 ядер ... тобто 8 міні-процесорів за 1 i7 ... тобто його швидкість в 8 разів перевищує старі процесори. Ось як можна виконати багатозадачні завдання.

В одному процесорі може бути сотні ядер, наприклад. Intel i128.

Я сподіваюся, що я це добре пояснив.


0

Зображення Intel є корисним, про що свідчить найкраща відповідь Тортуги. Ось підпис до цього.

Процесор : Один напівпровідниковий чіп, процесор (центральний процесор), що знаходиться в одному розетці, приблизно в 1950-х - 2010-х роках. З часом на чіп CPU було набрано більше функцій. До випуску одночипових процесорів 1950-х років один процесор, можливо, поширився на декілька мікросхем. У середині 2010-х мікросхем системи на мікросхемі зробило трохи більш схематичним прирівнювати один процесор до одного мікросхеми, хоча це, як правило, те, що люди розуміють під процесором, як "у цьому комп'ютері є процесор i7" або "ця комп'ютерна система має чотири процесори ".

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


1
Ядро x86 логічно виконує інструкції по черзі в порядку програм, але насправді сучасні процесори витрачають багато транзисторів, щоб зберегти ілюзію робити це, насправді, будучи 4-широким надскалярним виконанням поза замовленням. realworldtech.com/haswell-cpu . (Або 5 або 6 широких, для Ryzen). Більш ніж 3 інструкції за годинник на практиці не є рідкістю для деяких кодів. Але набагато нижче 1 часто зустрічається і в іншому коді, що вузькі місця у кеш-пропусках та / або непередбачуваних галузях.
Пітер Кордес

Також архітектури VLIW, такі як Itanium, явно паралельні, і логічно, а також фізично виконують кілька інструкцій паралельно. До речі, цікавий історичний момент, що один процесор за перші дні брав більше однієї мікросхеми.
Пітер Кордес
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.