Dela via


Arm64EC – Skapa och porta appar för inbyggda prestanda på Arm

Arm64EC ("Emuleringskompatibel") gör att du kan skapa nya interna appar eller stegvis överföra befintliga x64-appar för att dra nytta av den inbyggda hastighet och prestanda som är möjlig med armdrivna enheter, inklusive bättre strömförbrukning, batteritid och accelererade AI- och ML-arbetsbelastningar.

Arm64EC är ett nytt program binärt gränssnitt (ABI) för appar som körs på Arm-enheter med Windows 11. Det är en Windows 11-funktion som kräver användning av Windows 11 SDK och inte är tillgänglig på Windows 10 på Arm.

Samverkan

Kod som byggts som Arm64EC samverkar med x64-kod som körs under emulering i samma process. Arm64EC-koden i processen körs med inbyggda prestanda, medan alla x64-kod körs med hjälp av emulering som levereras inbyggt med Windows 11. Även om din app förlitar sig på befintliga beroenden eller plugin-program som ännu inte stöder Arm, kan du börja återskapa delar av din app som Arm64EC för att få fördelarna med intern prestanda.

Arm64EC garanterar samverkan med x64 genom att följa x64-programvarukonventioner, inklusive anropskonventioner, stackanvändning, datastrukturlayout och definitioner för förprocessorer. Arm64EC-kod är dock inte kompatibel med kod som skapats som Arm64, som använder en annan uppsättning programvarukonventioner.

Själva Windows 11 på Arm-operativsystemet är starkt beroende av Arm64EC:s samverkan för att möjliggöra körning av x64-program. De flesta operativsystemkoder som läses in av en x64-app som körs på Windows 11 på Arm kompileras som Arm64EC, vilket möjliggör intern prestanda för koden utan att programmet vet om det.

En x64- eller Arm64EC-process kan läsas in och anropas i både x64- och Arm64EC-binärfiler, medan en Arm64-process bara kan läsa in Arm64-binärfiler. Båda arkitekturerna kan läsa in Arm64X-binärfiler eftersom de innehåller kod för både x64 och Arm64.

Processarkitektur x64 binär Arm64EC-binär Arm64 binär
x64/Arm64EC Supported Supported Stöds inte
Arm64 Stöds inte Stöds inte Supported

På samma sätt kan Arm64EC-binärfiler vid bygget länka i både x64- och Arm64EC-libs, medan Arm64-binärfiler bara kan länka i Arm64 libs.

PE-arkitektur x64 lib Arm64EC-bibliotek Arm64 lib
Arm64EC Supported Supported Stöds inte
Arm64 Stöds inte Stöds inte Supported

Mer information om hur Arm64EC ABI möjliggör samverkan finns i Förstå Arm64EC ABI och sammansättningskod.

Använd Arm64EC för att göra en befintlig app snabbare på Windows 11 på Arm

Med Arm64EC kan du stegvis överföra koden i din befintliga app från emulerad till intern. Vid varje steg på vägen fortsätter programmet att köras bra utan att behöva kompileras om på en gång.

Exempeldiagram som visar inkrementella uppdateringseffekter på armprestanda med arm64EC

Föregående bild visar ett förenklat exempel på en fullständigt emulerad x64-arbetsbelastning som tar en viss tid som sedan förbättras stegvis med arm64EC:

  1. Börjar som en fullständigt emulerad x64-arbetsbelastning
  2. Efter att ha omkompilerat de mest CPU-intensiva delarna som Arm64EC
  3. När du har fortsatt att kompilera om fler x64-moduler över tid
  4. Slutresultat av en helt inbyggd Arm64EC-app

Genom att omkompilera de moduler som tar mest tid eller är de mest CPU-intensiva från x64 till Arm64EC får du den största förbättringen för minsta möjliga ansträngning i varje steg.

Appberoenden

När du använder Arm64EC för att återskapa ett program använder du Arm64EC-versioner av beroenden, men du kan också förlita dig på x64-versioner av beroenden. Du kan inte använda Arm64-versioner av beroenden.

All x64-kod, inklusive kod från beroenden, i en Arm64EC-process körs under emulering i din app. Prioritera de mest CPU-intensiva beroendena för övergången från x64 till Arm64EC för att förbättra appens prestanda.

Identifiera Arm64EC-binärfiler och appar

Appar som körs på Windows 11 på Arm interagerar med Arm64EC-binärfiler som om de är x64-binärfiler. Appen behöver inte veta i vilken utsträckning koden i binärfilen omkompileras som Arm64EC. 

Om du vill identifiera dessa binärfiler kan du se dem i en kommandotolk för utvecklare med hjälp link /dump /headersav .

File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
    8664 machine (x64) (ARM64X)

Kombinationen av (x64) och (ARM64X) anger att en del av binärfilen omkompileras som Arm64EC, även om binärfilen fortfarande verkar vara x64. En binär fil med ett datorhuvud som innehåller (ARM64) och (ARM64X) är en Arm64X PE-fil som kan läsas in i både x64- och Arm64-appar.

Du kan också använda Windows Task Manager för att identifiera om en app kompileras som Arm64EC. På fliken Information i Aktivitetshanteraren visar kolumnen ArkitekturARM64 (x64-kompatibel) för program vars huvudsakliga körbara fil delvis eller helt kompileras som Arm64EC.

Skärmbild av Aktivitetshanteraren som visar ARM64 (x64-kompatibel) i arkitekturinformation.

Nästa steg

Se Komma igång med Arm64EC för att lära dig hur du skapar eller uppdaterar Win32-appar med Arm64EC.