Чому всі процесорні ядра мають однакову швидкість замість різних?
Якщо ви коли-небудь зробили багато порівняння для нового процесора, ви могли помітити, що всі ядра мають швидше швидкість, ніж комбінацію різних. Чому так? Сьогоднішня стаття SuperUser Q&A має відповідь на запитання цікавого читача.
Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..
Питання
Читач від суперкористувача Джеймі хоче знати, чому всі процесорні ядра мають однакову швидкість, а не різні:
Загалом, якщо ви купуєте новий комп'ютер, ви повинні визначити, який процесор купуватиметься на основі очікуваного навантаження на комп'ютер. Продуктивність у відеоіграх, як правило, визначається швидкістю одного ядра, тоді як програми, такі як редагування відео, визначаються кількістю ядер. З точки зору того, що доступно на ринку, всі процесори мають приблизно однакову швидкість, причому основні відмінності полягають у тому, що більше ниток або більше ядер.
Наприклад:
- Intel Core i5-7600K, основна частота 3.80 ГГц, 4 ядра, 4 нитки
- Intel Core i7-7700K, основна частота 4.20 ГГц, 4 ядра, 8 потоків
- AMD Ryzen 5 1600X, базова частота 3.60 ГГц, 6 ядер, 12 потоків
- AMD Ryzen 7 1800X, базова частота 3.60 ГГц, 8 ядер, 16 потоків
Чому ми бачимо цю схему збільшення ядер, але всі ядра мають однакову тактову частоту? Чому немає варіантів з різними тактовими частотами? Наприклад, два "великих" ядра і багато дрібних ядер.
Замість, наприклад, чотирьох ядер на частоті 4,0 ГГц (тобто 4 × 4 ГГц, 16 ГГц максимум), як щодо ЦП з двома ядрами, що працюють на частоті 4,0 ГГц і чотирма ядрами на частоті 2,0 ГГц (тобто 2 × 4,0 ГГц + 4 × 2,0 ГГц, максимум 16 ГГц? Чи буде другий варіант настільки ж хорошим в одних потокових робочих навантаженнях, але потенційно краще при багатопоточних робочих навантаженнях?
Я запитую це як загальне питання, а не конкретно стосовно процесорів, перерахованих вище, або про будь-яку конкретну роботу. Мені просто цікаво, чому така модель є.
Чому ядра CPU мають однакову швидкість, а не різні?
Відповідь
Співробітник SuperUser bwDraco має відповідь для нас:
Це відоме як гетерогенна мульти-обробка (HMP) і широко прийнята мобільними пристроями. У пристроях на базі ARM, які реалізують big.LITTLE, процесор містить ядра з різними показниками продуктивності та потужності, тобто деякі ядра працюють швидко, але отримують велику потужність (більш швидка архітектура та / або вище), інші - енергоефективні, але повільні ( повільніша архітектура та / або нижчі годинники). Це корисно, тому що використання енергії має тенденцію до збільшення непропорційно, оскільки ви збільшуєте продуктивність після того, як ви пройдете певну точку. Ідея полягає в тому, щоб отримати продуктивність, коли вам це потрібно, і час автономної роботи, коли ви цього не зробите.
На настільних платформах споживана потужність є набагато меншою проблемою, тому це дійсно не потрібно. Більшість додатків очікують, що кожне ядро має аналогічні характеристики, а процеси планування для систем HMP набагато складніше, ніж планування для традиційних систем симетричної багатопроцесорної обробки (SMP) (технічно, Windows 10 має підтримку HMP, але головним чином призначена для мобільних пристроїв) пристрої, які використовують ARM big.LITTLE).
Крім того, більшість процесорів настільних комп'ютерів і ноутбуків сьогодні не обмежені термічно або електрично до точки, де деякі ядра повинні працювати швидше, ніж інші, навіть для коротких спалахів. Ми в основному потрапили в стіну на те, як швидко ми можемо зробити окремі ядра, тому заміна деяких ядер з більш повільними ядрами не дозволить, щоб інші ядра працювали швидше..
Хоча є кілька процесорів настільних ПК, які мають один або два ядра, здатних працювати швидше, ніж інші, ця функція наразі обмежена деякими високопродуктивними процесорами Intel (відомими як технологія Turbo Boost Max 3.0) і лише незначною вигодою. продуктивність для тих ядер, які можуть працювати швидше.
Хоча, звичайно, можна спроектувати традиційний процесор x86 з великими, швидкими ядрами і меншими, більш повільними ядрами, щоб оптимізувати робочі навантаження з великим потоком, це додасть значну складність дизайну процесора, і навряд чи програми належним чином підтримають його..
Візьмемо гіпотетичний процесор з двома ядрами Kaby Lake (7-го покоління) і вісьма повільними Goldmont (Atom) ядрами. У вас буде всього 10 ядер, а сильнопоточні робочі навантаження, оптимізовані для такого роду процесорів, можуть покращити продуктивність і ефективність над звичайним процесором Kaby Lake. Тим не менш, різні типи ядер мають різний рівень продуктивності, і повільні ядра навіть не підтримують деякі з інструкцій, які підтримують швидкі ядра, такі як AVX (ARM уникає цієї проблеми, вимагаючи як великих, так і малих ядер підтримувати ті ж самі інструкції). ).
Знову ж таки, більшість багатопоточних додатків на основі Windows припускають, що кожна ядро має однаковий або майже такий же рівень продуктивності, що може виконувати ті ж самі інструкції, тому така асиметрія, ймовірно, призведе до менш ефективної продуктивності, можливо навіть збій, якщо він використовує інструкції, які не підтримуються більш повільними ядрами. Хоча Intel може змінити повільні ядра, щоб додати додаткову підтримку інструкцій, щоб усі ядра могли виконувати всі інструкції, це не вирішує проблеми з програмною підтримкою для різнорідних процесорів.
Інший підхід до дизайну додатків, ближче до того, про що ви, напевно, думаєте у вашому питанні, буде використовувати GPU для прискорення дуже паралельних ділянок додатків. Це можна зробити за допомогою API, таких як OpenCL і CUDA. Що стосується рішення з одним чіпом, то AMD підтримує апаратну підтримку прискорення GPU у своїх APU, що поєднує традиційний процесор і високопродуктивний інтегрований GPU в той самий чіп, як Heterogeneous System Architecture, хоча це не бачило значного поширення індустрії поза декількох спеціалізованих програм.
Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.
Зображення: Mirko Waltermann (Flickr)