Microsoft förenklar applikationsutveckling för Windows 11 för ARM

Permalänk
Melding Plague

Microsoft förenklar applikationsutveckling för Windows 11 för ARM

Nya ARM64EC gör det möjligt att blanda kodbaser för ARM och x64 och öppnar för att migrera applikationer beroende av x64.

Läs hela artikeln här

Visa signatur

Observera att samma trivselregler gäller i kommentarstrådarna som i övriga forumet och att brott mot dessa leder till avstängning. Kontakta redaktionen om du vill uppmärksamma fel i artikeln eller framföra andra synpunkter.

Permalänk
Medlem

Hoppas det blir lika bra som Apples Rosetta. Kul att det händer något i alla fall. Önskar att min nästa Windows laptop blir baserad på ARM och inte x86.

Permalänk
Medlem
Skrivet av Svantesson666:

Hoppas det blir lika bra som Apples Rosetta. Kul att det händer något i alla fall. Önskar att min nästa Windows laptop blir baserad på ARM och inte x86.

Tror inte det går för microsoft att göra något som blir som rosetta, rosetta kräver att man också har kontroll på hårdvaran... Men förhoppningsvis är det hyffsat bra.

Permalänk
Medlem
Skrivet av skewgen:

Tror inte det går för microsoft att göra något som blir som rosetta, rosetta kräver att man också har kontroll på hårdvaran... Men förhoppningsvis är det hyffsat bra.

Dom får väl göra en bättre Surface Pro X och visa var skåpet ska stå då. "Lead and they shall follow..."

Visa signatur

Dator: LianLi011D|X570S|5800X3D|3080ti|64GB|2x1TB SSD|AOC PD32M|Wasser

Permalänk
Medlem

ARM64EC som bara stöds av Microsoft. Får ändå säga att de är väldigt sluga de där rackarna. Det handlar bara om att låsa in folk till Windowsmiljö.

Det finns ingen poäng med detta i långa loppet. Den enda korrekta lösningen är att porta kodbasen rakt igenom, punkt. Microsoft tillåter nu utvecklare att porta _delar_ av kodbasen (och koden blir då beroende av ARM64EC). De är sannolikt fullt medvetna om att företag väljer den enklaste/snabbaste/billigaste vägen. Så om någon erbjuds möjligheten att "bara spendera" 1 timme istället för 2 timmar så kommer det bli så. På köpet har man låst in folk till Windows (i dagsläget åtminstone) och man sitter på nån halvmesyr...

Visa signatur

Citera mig för svar.
Arch Linux

Permalänk
Medlem

I slutänden är det värsta ändå att bygga 100 varianter av XAML-mallar för att stödja olika format. Horrible!

Har det blivit bättre?

Visa signatur

Error 412: Precondition Failed - You need to use a real browser in order to view this signature!

Permalänk
Hedersmedlem

@Dimman fast huruvida det är en poäng beror ju på prisskillnaden. En timme istället för två är kanske inte så mycket värt, men om man på några dagar kan få nästan samma prestanda som annars hade tagit månader (eller inte varit försvarbart alls) börjar det ju låta intressant. Eventuellt är ju också de förändringar man behöver göra så lika "riktig" arm64 att det faktiskt kan vara ett steg på vägen mot en fullständig portering.
Windows-program är ju dessutom ofta rätt hårt kopplade till Windows, så frågan är hur mycket extra inlåsning det ger.

Permalänk
Inofficiell ambassadör

Jag tror fortfarande att det här mest är ett steg på vägen för att leda Windows (sakta men säkert) till att landa helt på ARM en vacker dag.

Visa signatur

Mobo Aorus B550 Pro V2 CPU Ryzen 5600X RAM Corsair Vengance 16GB @ 36000 MHZ
GPU MSI GTX 1080 ti Gaming X Skärm Acer X34A

Permalänk
Datavetare

Egentligen använder sig varken Rossetta 2 eller motsvarigheten i Windows 10 av "emulering", båda bygger på binäröversättning av x86_64 maskinkod till logiskt ekvivalent ARM64.

Historiskt har detta gett en ganska stor prestandapåverkan, men det är ett område man lagt väldigt stora resurser på.

Apple bygger mycket på ett projekt som heter LLVM. Microsoft jobbar också med detta, t.ex. har Visual Studio officiellt stöd för att använda LLVM/Clang i stället för MSVC++.

I LLVM finns en rad "front-ends" för olika programspråk. Dessa kompilerar koden till en generellt mellanformat, en form av "virtuell assembler", som kallas IR. Från IR finns sedan olika "back-ends" för att generera x86_64, ARM64, etc.

I LLVM finns också ett allt bättre stöd att köra back-ends "baklänges", d.v.s. från t.ex. x86_64 kan man skapa motsvarande IR. Är detta som Rosetta 2 använder, man kör x86_64 -> IR -> ARM64. Skulle vara förvånad om Microsoft gjort något eget, gissar att deras lösning fungerar på samma sätt.

Problemet med att köra back-ends baklänges är att man inte riktigt kan återskapa samma IR som man skulle fått från front-end, viss information går förlorad i varje översättning. Specifikt för x86_64 -> ARM64 finns problematik kring hur de hanterar access mot RAM i system med fler än en CPU-kärna.

Här är ett konkret exempel på varför översättning av x86_64 till ARM64 resulterar i suboptimal ARM64 kod

Dold text

Ryktet gör gällande att Apples M1 också implementerar minnesmodellen från x86_64. Den modellen är mindre effektiv än den ARM64 använder, med undantag för fallet där man översätter x86_64 till ARM64, så M1 antas använda x86_64 modellen i processer som körs under Rosetta 2 och ARM64 modellen i normalfallet.

Cortex A serien har ingen motsvarande HW-stöd, så där får man göra det som listas ovan. Kanske inte ser så farligt ut men det är rätt mycket dyrare att köra "stlr" jämfört "str" då den förra är associerad med betydligt fler restriktioner som medför klart lägre potentiell ILP.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Egentligen använder sig varken Rossetta 2 eller motsvarigheten i Windows 10 av "emulering", båda bygger på binäröversättning av x86_64 maskinkod till logiskt ekvivalent ARM64.

Historiskt har detta gett en ganska stor prestandapåverkan, men det är ett område man lagt väldigt stora resurser på.

Apple bygger mycket på ett projekt som heter LLVM. Microsoft jobbar också med detta, t.ex. har Visual Studio officiellt stöd för att använda LLVM/Clang i stället för MSVC++.

I LLVM finns en rad "front-ends" för olika programspråk. Dessa kompilerar koden till en generellt mellanformat, en form av "virtuell assembler", som kallas IR. Från IR finns sedan olika "back-ends" för att generera x86_64, ARM64, etc.

I LLVM finns också ett allt bättre stöd att köra back-ends "baklänges", d.v.s. från t.ex. x86_64 kan man skapa motsvarande IR. Är detta som Rosetta 2 använder, man kör x86_64 -> IR -> ARM64. Skulle vara förvånad om Microsoft gjort något eget, gissar att deras lösning fungerar på samma sätt.

Problemet med att köra back-ends baklänges är att man inte riktigt kan återskapa samma IR som man skulle fått från front-end, viss information går förlorad i varje översättning. Specifikt för x86_64 -> ARM64 finns problematik kring hur de hanterar access mot RAM i system med fler än en CPU-kärna.

Här är ett konkret exempel på varför översättning av x86_64 till ARM64 resulterar i suboptimal ARM64 kod

Ryktet gör gällande att Apples M1 också implementerar minnesmodellen från x86_64. Den modellen är mindre effektiv än den ARM64 använder, med undantag för fallet där man översätter x86_64 till ARM64, så M1 antas använda x86_64 modellen i processer som körs under Rosetta 2 och ARM64 modellen i normalfallet.

Cortex A serien har ingen motsvarande HW-stöd, så där får man göra det som listas ovan. Kanske inte ser så farligt ut men det är rätt mycket dyrare att köra "stlr" jämfört "str" då den förra är associerad med betydligt fler restriktioner som medför klart lägre potentiell ILP.

Det är så härligt när du kommer med så detaljerade analyser och en överdos av nörderi. Även fast jag inte förstår 100% så förstår jag tillräckligt för att "typ" fatta

Tack för alla dina utförliga inlägg!

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Medlem
Skrivet av Mindfighter:

Dom får väl göra en bättre Surface Pro X och visa var skåpet ska stå då. "Lead and they shall follow..."

Det gick ju bra när Microsoft fick marknaden att flöda över med Windows-plattor sist

-"Kom kom! Gör en Windows-platta, så bjuder vi på licensen*!"
*Så länge skärmen är under 9".

Undrar vems genidrag det var att överge dessa med kravet på minst 9"-skärmar i Windows 11?

https://www.pcworld.com/article/2139080/microsoft-makes-windo...

Permalänk
Skrivet av walkir:

Det gick ju bra när Microsoft fick marknaden att flöda över med Windows-plattor sist

-"Kom kom! Gör en Windows-platta, så bjuder vi på licensen*!"
*Så länge skärmen är under 9".

Undrar vems genidrag det var att överge dessa med kravet på minst 9"-skärmar i Windows 11?

https://i.gifer.com/origin/43/4381cee4efb9b74ab41c7c2a2d38ce81_w200.webp

https://www.pcworld.com/article/2139080/microsoft-makes-windo...

Dom flesta om inte alla windows surfplattor med så små skärmar har väl ändå för lite lagringsutrymme, då väl windows 11 kräver 64GB.
64GB lagring som krav kommer utesluta väldigt många enheter från uppgradering.

Permalänk
Medlem
Skrivet av JonHolstein:

Dom flesta om inte alla windows surfplattor med så små skärmar har väl ändå för lite lagringsutrymme, då väl windows 11 kräver 64GB.
64GB lagring som krav kommer utesluta väldigt många enheter från uppgradering.

Det kravet i sig är lite underligt. Så här ser min installation av Windows 11 Pro ut nu:

Och då har jag inte ens aktiverat Compact OS. Som jag säkert nämnt ett tiotal gånger tidigare, så tar Windows 10 installationen på min Windows-platta inte ens upp 7 GB.

Ett skäl till att kräva 64 GB i utrymme på systemdisken är i de fall man är beroende av Hibernate. Men det ser jag mest som slöseri med utrymme. Samma sak gäller virtuellt minne som knappt behövs på ett optimerat system (vissa äldre program kräver det fortfarande).

Önskar bara att Microsoft gav oss fler möjligheter till att skräddarsy Windows utan att slänga upp pekpinnar i ansiktet.

Däremot har jag full förståelse för att Microsoft överdriver de rekommenderade systemkraven, men för oss som vet (eller tror oss veta) vad vi gör, så hade det varit skönt att slippa att plocka bort käppar från hjulen hela tiden.

Tyvärr är jag lite av en självplågare och älskar den utmaningen i Windows. Om någon säger att en sak inte ska gå, så försöker jag alltid motbevisa det

Men att installera ett 64-bitars OS på en maskin med 32-bitars UEFI ger inte ens jag mig på. Eller så gör jag det en regnig dag mha GRUB