Що таке багатоядерний процесор?

click fraud protection

Починаючи з середини нуля, настільні ЦП пропонують кілька ядер ЦП в одному пакеті. Це багатоядерний процесор. У той час як ранні розробки обмежувалися двома або чотирма ядрами ЦП, сучасні ЦП пропонують до 64 фізичних ядер на одному ЦП. Така висока кількість ядер не є стандартною для настільних процесорів і зазвичай зарезервована для високоякісних робочих станцій або серверів. Типова кількість ядер у сучасних настільних процесорах становить від 4 до 16. Але що такого в багатоядерних ЦП робить їх домінуючими в сучасних комп’ютерах?

Одноядерний

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

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

Усі ці фактори добре працюватимуть і забезпечуватимуть певну ефективність. Однак додавання одного або кількох ядер дозволяє все це, і миттєво дозволяє обробляти вдвічі більше даних одночасно.

Багатоядерний

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

Щоб належним чином скористатися перевагами багатоядерних систем і фактично побачити солідне підвищення продуктивності, програми потрібно запрограмувати на використання кількох потоків обробки. Багатопотокову логіку, як відомо, важко зробити надійно, оскільки її часто важко вивчити, і існує багато потенційних пасток. Одним із прикладів пастки є умова змагання. У стані змагання один процес припускає, що інший процес, який він запускає, працюватиме безперебійно, а потім намагається зробити щось, що покладається на безперебійну роботу іншого процесу. Наприклад, уявіть, що процес запускає інший процес, щоб закрити один документ і відкрити інший. Якщо початковий процес не перевіряє належним чином, чи завершився другий процес, це може призвести до неочікуваних результатів. Наприклад, якщо виникла проблема із закриттям першого документа, він може бути відкритим, коли початковий процес просто записує до нього додаткові дані.

У цій умові змагання значення змінної зчитується вдруге перед записом нового значення, що призводить до неправильної загальної відповіді.

Теплові проблеми

Однією з найбільших проблем багатоядерних процесорів є тепло. Хоча одне ядро ​​ЦП не виділяє так багато тепла, два виділяють більше. У ЦП з великою кількістю ядер ця концентрація тепла може призвести до нижчої тактової частоти, оскільки ЦП керує своєю температурою. Нижча тактова частота призведе до зниження продуктивності в однопоточних програмах. Це часто можна побачити в тестах ігрової продуктивності. Відеоігри часто залежать від одного потоку. Таким чином, однопотокова продуктивність часто є критичною для ігор. ЦП з високою кількістю ядер, наприклад 16-ядерні моделі, часто походять із високопродуктивних бункерів. Незважаючи на це, вони регулярно перевершують «менші» процесори з меншою кількістю ядер в однопоточних тестах. Ця проблема ще більш очевидна в процесорах із надвисокою кількістю ядер, таких як 64-ядерний AMD Threadripper, де тактова частота помітно нижча, ніж у високоякісних настільних процесорів.

Успіхи

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

Архітектурні варіанти

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

Архітектура центрального процесора для настільних ПК також рухається в напрямку гетерогенного дизайну ядра. Alder Lake 12 від Intelтис покоління лінійки Core CPU є першим настільним процесором, який це зробив. У цьому випадку основним рушійним фактором менших ядер є не обов’язково енергоефективність, а теплова ефективність, хоча це дві сторони однієї медалі. Наявність кількох потужних ядер забезпечує високу продуктивність, тоді як багато ефективних ядер можуть виконувати фонові завдання, не сильно впливаючи на основні ядра.

Висновок

Багатоядерний ЦП — це ЦП, який містить кілька процесорних ядер в одному корпусі, часто, але не виключно, на одному кристалі. Багатоядерні процесори не пропонують значного прямого підвищення продуктивності для багатьох програм, однак, збільшуючи кількість ядер, однопотокові програми не повинні конкурувати за процесорний час. Деякі програми можуть повністю використовувати переваги кількох ядер, безпосередньо використовуючи будь-яку кількість доступних. Це забезпечує значне підвищення продуктивності, хоча через обмеження тепла та потужності це підвищення не обов’язково є прямим подвоєнням продуктивності з подвоєнням ядер.