Arm64EC – Natív teljesítményre szolgáló alkalmazások létrehozása és portok létrehozása az Armen

Az Arm64EC ("Emulációkompatibilis") lehetővé teszi új natív alkalmazások készítését vagy a meglévő x64-alkalmazások növekményes áttűnést, hogy kihasználhassa az Arm-alapú eszközökkel elérhető natív sebességet és teljesítményt, beleértve a jobb energiafogyasztást, az akkumulátor élettartamát és a gyorsított AI- és ML-számítási feladatokat.

Az Arm64EC egy új alkalmazás bináris felülete (ABI) a Windows 11-et futtató Arm-eszközökön futó alkalmazásokhoz. Ez egy Windows 11-funkció, amely megköveteli a Windows 11 SDK használatát, és nem érhető el a Windows 10-ben arm rendszeren.

Interoperability

Az Arm64EC-ként létrehozott kód egy folyamaton belül emuláció alatt futó x64-kóddal működik együtt. A folyamat Arm64EC-kódja natív teljesítménnyel fut, míg minden x64-kód a Windows 11 beépített emulációjával fut. Még ha az alkalmazás olyan meglévő függőségekre vagy beépülő modulokra is támaszkodik, amelyek még nem támogatják az Armet, elkezdheti újraépíteni az alkalmazás részeit Arm64EC-ként, hogy kihasználhassa a natív teljesítmény előnyeit.

Az Arm64EC x64 szoftverkonvenciákat követve garantálja az x64-zel való együttműködést, beleértve a hívási konvenciók, a veremhasználat, az adatszerkezet elrendezése és az előprocesszor-definíciók követését. Az Arm64EC-kód azonban nem kompatibilis az Arm64-ként létrehozott kóddal, amely más szoftverkonvenciákat használ.

Maga a Windows 11 arm operációs rendszer erősen támaszkodik az Arm64EC együttműködési képességére az x64-alkalmazások futtatásának engedélyezéséhez. A Windows 11-en futó, Arm rendszeren futó x64-alkalmazás által betöltött legtöbb operációsrendszer-kód Arm64EC-ként van lefordítva, így az alkalmazás tudta nélkül natív teljesítményt biztosít a kódhoz.

Az x64- vagy Arm64EC-folyamatok az x64-et és az Arm64EC bináris fájlokat is betölthetik és meghívhatják, míg az Arm64-folyamatok csak Arm64 bináris fájlokat tölthetnek be. Mindkét architektúra betöltheti az Arm64X bináris fájljait , mivel ezek az x64-hez és az Arm64-hez egyaránt tartalmaznak kódot.

Folyamatarchitektúra x64 bináris fájl Arm64EC bináris Arm64 bináris
x64/Arm64EC Supported Supported Nem támogatott
Arm64 Nem támogatott Nem támogatott Supported

Hasonlóképpen, a létrehozáskor az Arm64EC bináris fájlok az x64-ben és az Arm64EC-libekben is összekapcsolhatók, míg az Arm64 bináris fájlok csak Arm64-libekben kapcsolhatók össze.

PE-architektúra x64 lib Arm64EC lib Arm64 lib
Arm64EC Supported Supported Nem támogatott
Arm64 Nem támogatott Nem támogatott Supported

Az Arm64EC ABI együttműködési lehetőségeit az Arm64EC ABI és a szerelvénykód ismertetése ismerteti.

Az Arm64EC használata egy meglévő alkalmazás gyorsabbá tétele az Armen futó Windows 11-en

Az Arm64EC lehetővé teszi, hogy fokozatosan haladva váltsa a meglévő alkalmazásban lévő kódot az emuláltból natívra. Minden lépésnél az alkalmazás továbbra is jól fut anélkül, hogy egyszerre kellene újrafordítást elvégeznie.

Példadiagram az Arm teljesítményére gyakorolt növekményes frissítési hatásokról az Arm64EC használatával

Az előző képen egy egyszerűsített példa látható egy teljes mértékben emulált x64-alapú számítási feladatra, amely némi időt vesz igénybe, amelyet aztán növekményesen fejleszt az Arm64EC használatával:

  1. Teljesen emulált x64-számítási feladatként indul
  2. A legnagyobb CPU-terhelésű részek Arm64EC-re való újrafordítása után
  3. Az idő múlásával folytatva több x64-modul újrafordítását
  4. Egy teljesen natív Arm64EC-alkalmazás végeredménye

Az x64-ről Arm64EC-re való átállás során a legtöbb időt vagy CPU-t igénybe vevő modulok újrafordításával minden lépésben a legnagyobb teljesítménynövekedést érheti el a legkevesebb erőfeszítéssel.

Alkalmazásfüggőségek

Amikor az Arm64EC-et használja egy alkalmazás újraépítéséhez, használja a függőségek Arm64EC-verzióit, de a függőségek x64-verzióira is támaszkodhat. A függőségek Arm64-verziói nem használhatók.

Az Arm64EC-folyamatokban található x64-kódok, beleértve a függőségekből származó kódot is, emuláció alatt futnak az alkalmazásban. Rangsorolja a leginkább processzorigényes függőségeket, hogy x64-ről Arm64EC-re váltson az alkalmazás teljesítményének javítása érdekében.

Arm64EC bináris fájlok és alkalmazások azonosítása

Az Armen futó Windows 11-en futó alkalmazások úgy használják az Arm64EC bináris fájljait, mintha x64 bináris fájlok lennének. Az alkalmazásnak nem kell tudnia, hogy a bináris kód milyen mértékben lesz újra lefordítva Arm64EC-ként. 

A végleges PE-rendszerkép (EXE vagy DLL) azonosításához használja link /dump /headers a fejlesztői parancssorban:

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

Az (x64) és a (ARM64X) kombináció azt jelzi, hogy a bináris egy része Arm64EC-ként lesz újra lefordítva, annak ellenére, hogy a bináris továbbra is x64-nek tűnik. Az (ARM64) és (ARM64X) számítógépfejlécet tartalmazó bináris fájl egy Arm64X PE-fájl, amely x64 - és Arm64-alkalmazásokba is betölthető.

Megjegyzés:

A build során létrehozott köztes OBJ- vagy LIB-fájlok vizsgálatakor (a végleges EXE vagy DLL helyett) link /dump /headers megjelenik A641 machine (ARM64EC). Ez az érték (0xA641) egy belső MSVC-azonosító, amelyet Arm64EC-objektumfájlokhoz használnak, és nincs definiálva a fájlban winnt.h. Ez nem érvényes végleges PE-géptípus – csak a csatolt EXE vagy DLL hordozza a 8664 (x64) (ARM64X) vagy AA64 (ARM64) (ARM64X) gépértéket.

A Windows Task Managerrel azt is megállapíthatja, hogy egy alkalmazás Arm64EC-ként van-e lefordítva. A Feladatkezelő Részletek lapján az Architektúra oszlop arm64 -et (x64-kompatibilis) jelenít meg azon alkalmazások esetében, amelyek fő végrehajthatósága részben vagy teljesen Arm64EC-ként van lefordítva.

Képernyőkép a Feladatkezelőről, amelyen az ARM64 (x64-kompatibilis) látható az architektúra részletei között.

Következő lépések

Az Arm64EC használatának első lépéseiből megtudhatja, hogyan hozhat létre vagy frissíthet Win32-alkalmazásokat az Arm64EC használatával.