Ядра чи потоки: з’ясовуємо що важливіше для процесора
У специфікації кожного процесора обов’язково є інформація про кількість ядер і потоків. Правила «що більше, тим краще», у цій ситуації ніхто не скасовував, але давайте з’ясуємо, в яких завданнях віртуальні ядра здатні дати відчутний приріст продуктивності, а в яких залишаться марними.
Навіщо процесору кілька ядер?
Процесор – це обчислювальний центр будь-якого комп’ютера, планшета, смартфона та навіть ігрової консолі. Саме процесор приймає команди користувача, що вводяться в різних програмах і програмах, обробляє їх і розподіляє завдання між іншими вузлами системи – відеокартою , оперативною пам’яттю, твердотілим диском.
Саме тому процесор – це мозковий центр кожного комп’ютера, який відповідає за його обчислювальні здібності та швидкість роботи.
Перші процесори були єдиними пристроями, які приймали команди та виконували їх у суворій черговості. Одне ядро дозволяло вибирати процесор для придбання лише за показниками частоти. А дефіцит продуктивності спочатку компенсували створенням дво- і багатопроцесорних змін. У таких збірках команди користувача на введення обробляв перший процесор, інші операції по можливості рівномірно розподілялися між іншими. Для складання таких систем використовувалися двопроцесорні плати чи конфігурації на кілька сокетів.
Наступним кроком виробники створили багатоядерну архітектуру, що дозволяє на площі, здавалося б, невеликого мікрочіпа розміщувати кілька обчислювальних центрів, які, по суті, були самостійними процесорами. Так у продажу з’явилися дво-, чотири- та восьмиядерні пристрої, які обробляли відразу кілька потоків інформації.
Пізніше корпорація Intel у лінійці процесорів Pentium запровадила технічну можливість виконання одним ядром двох команд за такт, що стало початком нової доби у комп’ютерних технологіях – гіперпотоковість процесорів. Зараз фахівці компанії активно працюють над новою технологією реалізації чотирьох потоків на одному ядрі, і вже найближчим часом подібні процесори будуть представлені публіці.
Чим відрізняються ядра та потоки
Ядро – це самостійний обчислювальний блок в архітектурі процесора, здатний виконувати лінійну послідовність завдань за певний час. Якщо навантажити одне ядро декількома послідовностями завдань, воно буде поперемінно перемикатися між ними, обробляючи по одній задачі з кожного потоку. У масштабах системи це призводить до уповільнення роботи програм та сервісів.
Потік – це програмно виділена область у фізичному ядрі процесора. Така віртуальна реалізація дозволяє розділяти ресурси ядра та працювати паралельно з двома різними послідовностями команд. Таким чином, операційна система сприймає потік, як окремий обчислювальний центр, отже, ресурс ядра використовується більш раціонально, і швидкість обчислень збільшується.
Чи варто очікувати на подвоєння продуктивності?
Віртуальний поділ обчислювальної потужності процесора на потоки називається гіперпоточністю. Насправді це фізичне збільшення кількості ядер, отже, і обчислювальний потенціал процесора залишається незмінним.
Гіперпоточність – це інструмент, що дозволяє процесору оперативніше виконувати команди операційної системи та розподіляти обчислювальний ресурс.
Таким чином, подвоєна кількість потоків по відношенню до ядра здатна підвищити ефективність процесора за рахунок одночасного виконання декількох завдань кожним ядром. Але приріст навіть за запевненнями лідера ринку у виробництві процесорів Intel перебуватиме в межах 30%.
А ось про збільшення енергоспоживання та надмірне нагрівання хвилюватися не варто. Оскільки віртуальний поділ виконано з виробництва, то компанією прораховані всі робочі параметри, такі як потужність і TDP, зазначені у специфікації.
Що вибирати: ядра чи потоки?
Оскільки ядра – це фізичні «мозкові центри», що займаються обчисленнями, то загальну продуктивність центрального процесора відповідають саме вони. Тому кількістю ядер, та й ще частотою процесора визначається його продуктивність.
Але й кількість потоків також заслуговує на увагу. Розберемо з прикладу:
Двоядерний процесор з двома потоками навантажується операційною системою чотирма паралельними послідовностями команд, наприклад, від відкритих ігор та програм. Команди так і залишаться у чотирьох «чергах», і ядра поперемінно будуть проводити обчислення з кожної. При цьому продуктивність ядра найчастіше надмірна для обробки однієї команди. Тому частина обчислювального потенціалу ядра, а отже, і процесора залишиться в резерві.
Якщо взяти аналогічний процесор з двома ядрами, але вже на чотири потоки, то всі чотири черги будуть задіяні одночасно, по максимуму завантажуючи ядра. Отже, завдання буде вирішено швидше, а простою обчислювальних потужностей вдасться уникнути.
На практиці це дає можливість одночасно запускати кілька програм: працювати з документами, слухати музику, спілкуватися в месенджерах і виконувати пошук у браузері. При цьому програми працюватимуть ефективно, швидко, без гальмування та зависання.
У виробничих масштабах для комплектації робочих станцій чи серверів також слід віддати перевагу більшій кількості потоків при рівних числах ядер. За винятком особливих випадків, таких як робота з 1С, коли вирішальну роль грає тактова частота, та інших програм, активно використовують TCP/IP стек. У цих випадках розпаралелювання викликає суттєву затримку при обробці пакетів.
Таким чином, чим більше ядер буде в процесорі, тим вища його продуктивність та швидкість виконання різних завдань. А подвоєна кількість потоків дозволяє підвищити ефективність процесора та задіяти його технічний потенціал на повну.
На закінчення цікаве відео від компанії Intel про те, як вони створюють мікрочіпи.