Поточні виміри продуктивності x86 порівняно з Apple M1 неправомірні
Примітка: Робота та заслуга за відкриття, про яке я розповім нижче, належать Усману Пірзаді з WCCFTech. Минулого тижня я був у відпустці, коли з’явилася ця новина, але я провів для нього кілька тестів на ноутбуці AMD, щоб переконатися, що ці висновки стосуються як процесорів Intel, так і AMD щодо M1.
Дозвольте мені чітко пояснити заголовок вище: „Вада”, про яку ми поговоримо, не є проблемою з якимось конкретним тестом чи рецензентом. Різниця в тому, як Apple M1 розподіляє та розподіляє ресурси, в порівнянні з процесорами x86.
Процесори x86 від AMD та Intel розроблені для використання техніки, відомої як симетрична багатопотоковість (Intel називає це Hyper-Threading). AMD та Intel реалізують цю функцію дещо по-різному, але в обох випадках центральні процесори із підтримкою SMT можуть планувати роботу з більш ніж одного потоку для виконання за один і той же тактовий цикл. Процесор, який не підтримує SMT, обмежується виконанням інструкцій з того самого потоку в будь-якому заданому циклі.
Сучасні процесори x86 від AMD та Intel використовують переваги SMT для підвищення продуктивності в середньому на 20-30 відсотків із часткою вартості або потужності, необхідної для побудови цілого другого ядра. Зворотним боком цього є те, що однопотокове робоче навантаження не може скористатися перевагою, яку пропонує SMT.
Apple M1 не має цієї проблеми. Деякі причини ширини M1 зводиться до низькорівневих конструктивних відмінностей між наборами команд x86 та ARM. Фронт-енд процесора RISC забезпечує, як правило, більш високу ефективність з точки зору інструкцій, декодованих для одного потоку. (WCCFTech має трохи більше про це).
Це не якась щойно виявлена вада в кишках процесорів Intel і AMD - це вся причина, по якій Intel побудувала HT, і причина, чому AMD також прийняла SMT. Процесор x86 досягає набагато вищої загальної ефективності, коли ви пропускаєте два потоки через одне ядро, частково тому, що вони були чітко розроблені та оптимізовані для нього, а частково тому, що SMT допомагає центральним процесорам з роз'єднаними інтерфейсами CISC досягти вищого загального IPC.
Як ця різниця впливає на результати порівняльних показників
У будь-якому даному порівнянні продуктивності 1T, процесори x86 працюють від 75 до 80 відсотків своєї ефективної продуктивності на ядро. У M1 цієї проблеми немає.
Графік нижче наведено WCCFTech. Червоні точки - це мій власний внесок у їхню роботу (який варто прочитати самостійно):
Цей графік дещо по-іншому розкручує речі. Коли ви запускаєте другий потік через процесори x86, їх продуктивність значно покращується. Насправді тут AMD Ryzen 4800U перевершує вусик M1.
Це справедливе порівняння? Це насправді залежатиме від того, що ви хочете виміряти. Ядро для ядра? Так. Нитка для нитки? Ні. Ця різниця у використанні створює ускладнення для порівнянь x86 та M1. Востаннє ми мали справу з чимось подібним у вимірах продуктивності, коли AMD Athlon XP протистояв Pentium 4 за допомогою Hyper-Threading. Оскільки AMD доводилося цінувати оборонно, іноді можна було придбати Athlon XP, який би обіграв P4 з рівноцінною ціною в однопотоковій продуктивності, але програв у SMT.
Кінцевим результатом цієї різниці є те, що не буде єдиного, простого способу порівняння масштабування між Apple і x86, як у нас для Intel і AMD. 1T на ядро ефективно відключає процесори x86 від можливостей, призначених для підвищення їх продуктивності. Запуск 2T на ядро як на x86, так і на M1 змусить процесор Apple перетворитися на потенційно неоптимальну конфігурацію і може погіршити його продуктивність.
Запуск 2T на x86 і порівняння з 1T на M1 є "справедливим", оскільки він працює в обох ядрах в оптимізованому виробником стані, але це буде порівняння одноядерної продуктивності, а не однопотокової продуктивності, і це не буде здивуйте людей, коли центральний процесор з 2T перевершує CPU з 1T. Нарешті, запуск 2T1C на x86 проти 2T2C на M1 створює варіацію вихідної проблеми: Процесор x86 обмежується продуктивністю одного фізичного ядра процесора, тоді як M1 виграє від двох фізичних ядер процесора.
Проблема тут полягає в тому, що процесори x86 розроблені для оптимальної роботи в конфігураціях 2T1C, як свідчить нещодавнє глибоке занурення Anandtech у переваги та недоліки ввімкнення SMT, тоді як M1 розроблений для оптимальної роботи в конфігурації 1T1C.
Це цілком може бути постійною проблемою для x86. Пам’ятайте, що масштабування кожного потоку є далеко не ідеальним і погіршується з кожним доданим потоком. Історично склалося так, що центральний процесор, який забезпечує найкращу продуктивність на ядрі в найменшій площі штампа і з найвищою продуктивністю на ват, є процесором, який виграє будь-який “раунд” воєн процесора, про який хочеться розглянути. Той факт, що x86 вимагає двох потоків, щоб зробити те, що Apple може зробити з одним, не є сильним. Чи буде лише завантаження процесора x86 одним потоком покаранням, залежатиме від того, яке порівняння ви хочете зробити, але потрібно визнати різницю в оптимальному підрахунку потоків та розподілі.
Великі вивезення M1 залишаються незмінними. У багатьох тестах центральний процесор демонструє стабільно вищі результати, ніж процесори x86, якщо вимірювати продуктивність на ват. Коли він перевершує процесори x86, це, як правило, чіпи, які споживають набагато більше енергії, ніж він сам. Здається, M1 приймає 20-30 відсотків продуктивності під час запуску програм, побудованих для Intel Macs, і там він може споживати більше енергії в цьому режимі. Екосистема емуляції Apple та підтримка сторонніх розробників все ще перебувають на початку і можуть не задовольнити потреби кожного користувача, залежно від того, наскільки ви підключені до загальної екосистеми Apple. Однак жодне з них не є прямим відображенням кремнію M1, який, як і раніше, виглядає як один з найцікавіших досягнень кремнію за останні кілька десятиліть - і передвістя проблем для Intel та AMD.