Як працює переклад x86 у Windows on Arm?

click fraud protection

Багато Windows-додатків було написано для x86, але вони можуть працювати на процесорах Arm. Ось як це можливо.

Windows завжди створювали для Процесори x86 від Intel і AMD, але з тих пір, як десять років тому з’явилася Windows RT для смартфонів, операційна система поступово стає більш дружньою до Озброїти процесори. Сьогодні і Windows 10, і Windows 11 пропонують повну підтримку процесорів Arm, але є одна заковика. Хоча сама операційна система чудово працює на цих процесорах, більшість програм не запустили Arm-сумісну версію. Хоча Windows може працювати на чіпах Arm, мати мало програм для фактичного використання було б проблемою.

Однак Microsoft має в рукаві хитрість: емулятор для запуску програм x86 на машинах на базі Arm. Це ключова річ, яка надала Windows on Arm імпульсу з моменту появи перекладача у 2017 році. Ось як працює емулятор і чому ПК Arm потрібно його використовувати, якщо вони хочуть запускати програмне забезпечення, створене для мікросхем x86.

Емуляція коду x86 для процесорів Arm у реальному часі

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

На жаль, продуктивність емульованих програм буде гіршою порівняно з кодом, розробленим для апаратного забезпечення. Важко сказати, скільки продуктивності ви втрачаєте, запускаючи емульований код у Windows, оскільки даних тестування дуже мало, але для порівняння, Перекладач Apple Rosetta 2 (який також перетворює програми x86 на Arm) втрачає близько 20%. Можна зменшити це число, але зазвичай емуляція та переклад призводять до зниження продуктивності, незважаючи ні на що.

Чому програми x86 не можуть працювати на Arm без емуляції

Вам може бути цікаво, чому програмне забезпечення потрібно писати спеціально для процесорів x86, Arm та інших типів. Це зводиться до різниця в архітектурі, і в цьому випадку ми говоримо про архітектуру набору інструкцій (ISA). Вони є найфундаментальнішою конструкцією процесора і визначають, чи можна щось просте, як-от множення, чи щось складне, як-от AVX, можна зробити оригінально. Зміна ISA впливає на найбільш фундаментальний спосіб взаємодії програмного забезпечення з апаратним забезпеченням, аж до базових одиниць і нулів, які зчитує ЦП.

x86 — це ISA процесорів Intel і AMD, які історично були єдиними процесорами, на яких навіть може працювати Windows. Тим часом Arm здебільшого використовується для смартфонів, і програмне забезпечення для ПК і телефону дуже мало збігається. Природно, більшість програм створено або для x86, або для Arm, а для Windows на Arm це була величезна проблема, оскільки переклад не вийшов у 2020 році, тоді як Windows RT (перша версія Windows із підтримкою Arm) вийшла у 2012.

Минуло близько десяти років з тих пір, як Windows почала підтримувати Arm, тож де всі рідні програми? Основна проблема полягає в тому, що потрібен час і досвід, щоб переписати програмне забезпечення для іншої ISA, особливо якщо розробники хочуть зробити це добре. Розробники, які не належним чином переносять програму з однієї ISA на іншу, можуть призвести до збоїв і помилок. Чудовим прикладом цього є Photoshop для Windows on Arm. Він працює нативно на Windows on Arm, ще в нашому огляді Lenovo Thinkpad X13s, ми виявили кілька помилок і багато попереджень про те, що OpenCL і OpenGL не підтримуються. У поєднанні зі значно меншою базою користувачів, які використовують Arm on Windows, у розробників менше стимулів піклуватися.

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