Яка різниця між багатоядерним процесом та багатопроцесорною системою?


18

Цікаво, в чому різниця між двоядерним комп'ютером і комп'ютером з двома процесорами на материнській платі. Я думаю, що це щось пов'язане з потоками, але я не дуже добре це розумію ..

Відповіді:


19

Кілька процесорів дозволяють вашому комп'ютеру робити буквально дві речі одночасно (замість того, щоб, здавалося б, робити дві речі одночасно, але насправді просто міняти між завданнями дуже швидко).

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

Можливо, є деякі відмінності в продуктивності, але ви нічого, ймовірно, не помітите.


2
Не тільки забираючи менше місця, але і генеруючи менше тепла (використовуючи менше енергії) та вимагаючи лише одного вентилятора охолодження.
CarlF

13

Дивіться це зображення, яке показує різницю між багатопроцесорним, гіперпоточним та багатоядерним:

введіть тут опис зображення


3

1
Посилання на "Різниця між багатопотоковим та багатоядерним програмуванням" порушена.
SparkAndShine

2

Ну, це про масштабування горизонтально, а не вертикально. За старих часів вони робили процесор швидшим і швидшим. З часом швидкість процесора зросла лише з декількох мегагерців до супершвидкісних до 3 гігагерц. Однак, досягнувши швидкості 3 гігагерца, виробники процесорів виявили обмеження, наскільки вони можуть натиснути швидкість на одному ядрі процесора.

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

Швидкий перехід до сьогодні. Межа швидкості процесора дещо досягнута, і замість того, щоб масштабувати вертикально (роблячи це швидше), виробники процесора починають масштабувати горизонтально, розміщуючи кілька ядер на одному мікросхемі. В даний час двоядерні чіпи є дуже поширеними, і незабаром чотирьохядерні ядра стануть еталоном. А тепер уявіть, що ви розмістили два квадроядерні ядра на одній материнській платі. Це означає, що операційна система матиме доступ до 8 процесорів, які працюють на рівні близько 3 гігагерців.

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


3
-1: Ця відповідь має багато неточностей. (1) 3 ГГц не є "обмеженням швидкості". Є процесори, які працюють на більш високих частотах, ніж 3 ГГц. Виробник лімітного процесора, з яким стикалися, - це встановлення процесорів більш високої продуктивності в рамках сталого енергозахисту. (2) З другого пункту випливає, що материнські плати з декількома процесорами були введені через те, що було досягнуто "обмеження швидкості". Насправді материнські плати з декількома розетками були приблизно 5-10 років раніше (можливо, навіть довше, я не можу знайти точну дату, коли сервери ПК перейшли на багатоядерні).
hanleyp

Я знаю, що це не на 100% правильно, і я намагався дотримати свою відповідь непростою. Це просто демпінгова версія, щоб люди наче зрозуміли, у чому різниця. Я впевнений, що коли люди дійсно захочуть дізнатися про плюси, вони вивчать більше для себе. Пункт 2 починається з "Тим часом", тоді як процесор, де робляться швидші багатопроцесорні материнські плати процесора, де створено (що близько 10 років тому).
Лука

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

Я радий внести зміни, але що саме ти хочеш, щоб я змінився? Що є процесори, які піднімаються до 3,2 гігагерца або, можливо, трохи вище? Ви можете, будь ласка, уточнити?
Лука

2
-1: Ви пояснюєте, чому ми бачимо багатоядерні системи, але це не те, що запитував запитувач. Ви не пояснили різницю між декількома ядрами та кількома процесорами.
Джон Фухі

1

З точки зору розробки програмного забезпечення різниця є порівняно незначною.

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

Основна відмінність двох сценаріїв для однакової загальної кількості доступних ядер (наприклад, 1x 4-ядерний процесор проти 2x 2-ядерного процесора) полягає в тому, що у випадку багатопроцесорного сценарію зазвичай є більша сукупна пам'ять -смуга. Це означає, що при будь-якому навантаженні, яке займає пам'ять, вам може бути краще з останнім. Однак зауважте, що блокування примітивів насправді може бути дещо повільнішим (залежно від апаратної реалізації), тому алгоритми, що використовують багато синхронізації, насправді можуть погіршувати останні.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.