За останні три роки комп’ютери Mac на власних процесорах від Apple здобули неабияку репутацію: для одних вони є магічними, а для інших – лише знаходять недоліки. У цій новій серії ми спробуємо пояснити деякі з найбільш суперечливих аспектів цих комп’ютерів – від продуктивності та енергоспоживання до температури та енергоефективності.
Чіпи
Чіпи серії M – це радикальний відхід від комп’ютерів Intel Mac, які мали окремі чіпсети для виконання функцій, що тепер містяться в єдиній системі на кристалі (SoC). Замість того, щоб мати окремі процесор, пам’ять, відеокарту та мікросхеми для керування введенням і виведенням даних до мережі та периферійних пристроїв, комп’ютери Mac інтегровані в одну мікросхему. З цією інтеграцією пов’язано ще два відмінності:
- є два типи ядер центрального процесора;
- пам’ять для процесорних ядер, графічного процесора (GPU) та інших є спільною для них усіх, а не розділеною як раніше – уніфікована пам’ять (Unified memory).
Починаючи з центрального процесора, очікується, що в сімействі M3 буде чотири різних чіпа: базовий M3, M3 Pro, M3 Max і неанонсований M3 Ultra. Попередні сімейства M1 і M2 відрізнялися кількістю своїх ядер, але M3 – перше, в якому з’явилося таке чітке розмежування між Pro і Max.
Типи ядер
Кожен чіп M-серії містить два різних типи ядер: продуктивність (P) і ефективність (E), хоча кількість кожного з таких ядер залежить від того, до якого сімейства вони належать і якої моделі. Я почну з базової версії, яка є найбільш узгодженою між трьома сімействами, оскільки вона має 4 ядра P і 4 ядра E в кожному випадку. Запам’ятайте скорочення (Р) та (Е), надалі вони будуть часто зустрічатись
Це дуже відрізняється від конструкції процесорів Intel, що використовуються в комп’ютерах Mac, у яких всі ядра ідентичні. Метою використання двох різних типів ядер є краще узгодження продуктивності та енергоспоживання. Потоки – загальні фрагменти коду, які виділяються для виконання на ядрах – не всі мають однаковий пріоритет або вимоги до продуктивності. Фонові завдання, такі як побудова індексів Spotlight, не є критичними за часом, тому можуть виконуватися на повільніших ядрах, які споживають менше енергії; користувацькі завдання, такі як робота з елементами керування у вікні, повинні виконуватися якомога швидше, навіть якщо це означає, що вони не такі енергоефективні.
Використання ядер
У деяких моделях багатоядерних процесорів, таких як Intel, процесор вирішує, на якому типі ядра виконувати завдання, відповідно до набору правил. У кремнієвих процесорах Apple є більше гнучкості, оскільки саме macOS приймає це рішення на основі пріоритетів, призначених потокам, – параметра, відомого як якість обслуговування (Quality of Service, QoS). Потоки з низьким QoS майже завжди виконуються на ядрах E, в той час як потоки з вищим QoS переважно розподіляються на ядра P, але при необхідності можуть бути запущені на ядрах E.
Найкращий спосіб побачити, як це працює, – на прикладі.
Кілька секунд тому Time Machine почала створювати одну зі своїх автоматичних щогодинних резервних копій, і в даний момент вона виконує два основних потоки. Оскільки це фонові процеси з низьким QoS, macOS розподілила їх на чотири ядра в кластері E. Далі, нове повідомлення надходить у програму “Повідомлення”, відтворюючи звичайну мелодію і публікуючи сповіщення. Ви відкриваєте програму “Повідомлення” і починаєте друкувати відповідь. Хоча деякі з потоків, пов’язаних з цим, можуть мати низький рівень якості, більшість з них призначені для користувача, тому мають високий рівень якості. macOS розподіляє їх між чотирма ядрами в кластері P0, де вони працюють на максимальній швидкості, щоб гарантувати, що ваш Mac буде продуктивним і виконуватиме завдання так швидко, як тільки зможе.
У цих двох кластерах має бути достатньо обчислювальної потужності, щоб впоратися з цими простими завданнями. Але що станеться, якщо ви також кодуєте відео або редагуєте зображення з високою роздільною здатністю, коли надійде нове повідомлення? Користувацькі завдання можуть майже повністю зайняти чотири ядра P у кластері P0. Тоді macOS стає гнучкішою у розподілі потоків: коли немає ядра P, щоб прийняти новий потік з високим QoS, він розподіляє його на ядро E, як переповнення. Щоб гарантувати, що потік все одно буде оброблятися якомога швидше, ядра E працюють на вищій частоті, тому вони працюють майже так само добре, як і ядра P.
Змінна частота
Це ще одна ключова особливість кремнієвих ядер Apple: на відміну від більшості старих процесорів, ядра можуть працювати на різних частотах або тактових частотах, від 696 МГц до 4 056 МГц для ядер M3 P. Хоча я не знаю, чи використовують ядра M3 цю можливість, можливо, що їхня напруга також може бути змінною.
Більшу частину часу ядра E, що виконують фонові потоки в чипі M3, працюють на мінімальній частоті 744 МГц, але коли вони використовуються для виконання потоків, що переповнили ядра P, їхня частота може зрости до максимальної – 2748 МГц. Таким чином, переповнені потоки на ядрах E не можуть отримати таку ж високу продуктивність, як на ядрах P, але вони працюють набагато швидше, ніж фонові потоки.
Кластери
Однотипні ядра об’єднуються в кластери. У межах кожного кластера всі ядра працюють на однаковій частоті і мають спільну локальну пам’ять у кеші другого рівня (L2). Це також полегшує переміщення потоків між ядрами в одному кластері. У чіпах сімейств M1 і M2 ядра E і P розташовані в кластерах до чотирьох ядер; Apple змінила цю схему в M3, кластери якого можуть складатися з 6 ядер, причому всіх однотипних. У всіх базових версіях процесорів M-серії є один кластер з 4 ядер E і один кластер з 4 ядер P, тому процесор можна позначити як 4P+4E. Версії Pro, Max і Ultra мають різну кількість ядер і можуть мати два (або більше) кластерів P ядер.
M3 Pro – єдиний процесор з 6 ядрами E в одному кластері разом з 6 ядрами P, що робить його в 1,5 рази продуктивнішим за базовий M3 (6P+6E). Це збільшує його пропускну здатність як для фонових, так і для потоків з високим QoS. Оскільки 4-ядерний E-кластер не завжди повністю зайнятий фоновими потоками, основна роль цих додаткових E-ядер полягає у забезпеченні переповнення його P-ядер.
M3 Max наразі має найбільшу продуктивність процесора серед сімейства M3 з двома 6-ядерними кластерами P ядер, але лише 4 E ядра (12P+4E), що робить його менш здатним справлятися з переповненням.
M3 Pro і Max також доступні в “урізаних” версіях з меншою кількістю P-ядер. Виробництво чіпів призводить до того, що в багатьох з них не всі ядра працюють належним чином; чіпи M3 Pro з 5 ядрами P (5P+6E) і M3 Max з 10 ядрами P (10P+4E) все ще мають нормальну кількість ядер, але одне або два ядра P були навмисно відключені, оскільки вони не функціонують належним чином.
Бенчмарки
Таким чином, порівняння продуктивності між трьома чіпами сімейства M3 пов’язане з певними труднощами, коли мова йде про багатоядерну продуктивність. У базовому M3 багатоядерний бенчмарк виконується на всіх 8 ядрах, але лише половина з них є високопродуктивними. У M3 Pro це співвідношення однакове для 12 ядер, а M3 Max має вдвічі більше ядер, ніж базовий M3, але у співвідношенні 3:1 P:E, а не 1:1, що є значною перевагою в тестах. При звичайному використанні, коли потоки з високим QoS не переповнюють ядра E, M3 Pro розрахований на навантаження в 1,5 рази більше, ніж базова модель, а M3 Max – в 3 рази більше, ніж базова. Результати багатоядерних тестів приховують ці важливі тонкощі.
Порівнювати одноядерну продуктивність на двох типах ядер в чіпі M-серії складно через велику різницю в їхніх робочих частотах. Потоки на ядрах E з низьким QoS зазвичай виконуються на частоті лише 744 МГц, тоді як потоки на ядрах P можуть досягати 4056 МГц, що більш ніж у п’ять разів перевищує швидкість. Оцінки P і E ядер M1 показують, що його E ядра мають приблизно половину обчислювальної потужності від P ядер, але я не бачив порівнянної роботи для ядер M3. Вимірювання продуктивності всередині ядра показують, що E-ядра M3 ближчі до P-ядер на тій самій частоті. Якщо це розумне наближення, то найкраща продуктивність, очікувана від ядра M3 E, становить близько 70% від продуктивності ядра M3 P.
Тести продуктивності також, як правило, не містять інформації про потужність, яка є центральною темою наступної статті в цій серії. В якості вступу до неї, дозвольте мені навести деякі цифри для приблизної потужності, що споживається різними типами ядер. Це не потужність в розетці, а виміряна для самого процесора.
При повному завантаженні, коли кожне ядро працює на 100%, шестиядерний P-кластер споживає від 5 до 13 Вт залежно від типу завдання. Шестиядерний E-кластер використовує менше 0,2 Вт при виконанні потоків з низьким QoS на низькій частоті, і близько 1,2 Вт при виконанні переповнених потоків з високим QoS на максимальній частоті. Це величезна різниця, яка ілюструє потенційні переваги двох типів ядер.
Концепції
- Кремнієві мікросхеми Apple інтегрують функції цілого набору мікросхем, що включає два типи ядер процесора та уніфіковану пам’ять.
- Два типи ядер спеціалізуються на ефективності (E) та продуктивності (P) і пропонуються в різних кількостях і співвідношеннях у кожному сімействі.
- Фонові потоки з низьким QoS виконуються на ядрах E для мінімізації споживання енергії; потоки з високим QoS, орієнтовані на користувача, виконуються переважно на ядрах P, але можуть переповнюватися на ядрах E.
- Ядра працюють на змінній частоті (і, можливо, напрузі), причому E-ядра працюють на низькій частоті для фонових потоків і на високій частоті для переповнених потоків з високим QoS.
- Ядра групуються в однотипні кластери, що працюють на одній частоті і мають спільний кеш L2. Максимальний розмір кластерів M1 і M2 становить 4, а в M3 збільшується до 6.
- Багатоядерні бенчмарки збивають з пантелику кількістю і співвідношенням типів ядер.
- Потужність, яку використовує 6-ядерний кластер E, становить близько 0,2 Вт на низькій частоті, а 6-ядерний кластер P може використовувати 5-13 Вт залежно від завдання.
Оригінал статті Ґоварда Уоклі на сайті eclecticlight.co
Інші статті циклу: