Qualcomm: Spel ska funka utan portning på Snapdragon-datorer

Permalänk
Melding Plague

Qualcomm: Spel ska funka utan portning på Snapdragon-datorer

Qualcomm gav utvecklare av Windows-spel tre alternativ inför de kommande bärbara datorerna med Snapdragon X Elite-processorer, varav ett var att inte göra något alls.

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 kan leda till avstängning. Kontakta redaktionen om du vill uppmärksamma fel i artikeln eller framföra andra synpunkter.

Permalänk
Snusfri

Intressant.
Hoppas även på lite billigare laptops med SXE samt även MiniPC's med SXE.

Visa signatur

WS: i9 13900K - 128GB RAM - 6.5TB SSD - RTX 3090 24GB - LG C2 42" - W11 Pro
LAPTOP 1: Lenovo Gaming 3 - 8GB RAM - 512GB SSD - GTX 1650
LAPTOP 2: Acer Swift 3 - 8GB RAM - 512GB SSD
SERVER: i5 10400F - 64GB RAM - 44TB HDD
NALLE: Pixel 7 Pro

Permalänk
Medlem

Har inte Intel lovat att stämma skiten ur dem om de använder x86-delen av AMD64 utan x86-licens?

Visade det sig att det inte var juridiskt möjligt?

Permalänk
Medlem
Skrivet av KAD:

Har inte Intel lovat att stämma skiten ur dem om de använder x86-delen av AMD64 utan x86-licens?

Visade det sig att det inte var juridiskt möjligt?

Jo, de har även hotat Microsoft med stämningar. Men x86-patenten har nog gått ut. X64 däremot har levande patent.

Men det är främst arkitektur som är patenterat, inte en instruktionsuppsättning i sig. Och du bygger aldrig arkitekturen så det är rejält snårigt rent juridiskt vad som gäller. Då är det Intellectual Property man får gå efter istället.

Så blir spännande att se hur det utvecklas. Intel måste göra något åtminstone om de vill fortsätta vara relevanta år 2030.

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

Vågar man hoppas på en smidig och prisvärd dator med löstagbart skrivbord?

Visa signatur

JJ2 Multiplayer
JJ2 ZStats

[1] Ryzen 5800X | 5500XT | Kingston A2000 | Lenovo G24-10 144Hz [2] Ryzen 5700G | RX 560 | WD Blue SN550 [3] Ryzen 5600G | Kingston A2000 [4] Ryzen 3600 | GT 740 | 850 EVO [5] Ryzen 3600 | Geforce 405 | 850 EVO (alla är i bruk)

Permalänk
Datavetare
Skrivet av KAD:

Har inte Intel lovat att stämma skiten ur dem om de använder x86-delen av AMD64 utan x86-licens?

Visade det sig att det inte var juridiskt möjligt?

Hade någon av ARM64 tillverkarna lagt in möjlighet att direkt avkoda och köra x86-kod hade vi med 100 % säkerhet sett en stämning.

Det både Microsoft och Apple gör är samma sak: man översätter x86_64 koden till ekvivalent ARM64 kod, det som sedan körs är ARM64 instruktioner. Detta är långt mer effektivt jämfört med emulering och undviker patentproblematik då ingen x86_64 baserad teknik behöver läggas in i CPUn

Det enda Apple lagt in i "Apple Silicon" och som jag tror vi kan förutsätta Qualcomm kommer lägga in i Snapdragon X Elite (givet att det är samma person som är arkitekt bakom båda designerna) är stöd för minneskonsistens-modellen i x86, TSO.

TSO är mindre effektiv jämfört med modellen ARM64 normalt använder, så det används bara när man kör översatt x86_64 kod. Men är mer effektivt att implementera TSO i HW jämfört med att implementera det med ARM64 instruktioner. TSO är en välkänd teknik som används sedan länge och används av långt fler än x86.

Tror att det Qualcomm säger här kan stämma bra även i verkligheten. Kör ARM64 versionen av Windows 11 (på en M3 Max via Parallels desktop), blivit positivt överraskad hur bra Windows motsvarighet till MacOS "Rosetta 2" fungerar.

Just spel tenderar vara rätt kraftigt GPU-bundna, framförallt med så snabb CPU som Snapdragon X Elite kommer vara kopplat med en iGPU. Krävs typ 4090 i 1920x1080 eller ibland även 1280x720 för att man ska vara speciellt CPU-bunden med moderna Intel/AMD CPUer, så den 10-30 % prestandaförlust man får av att köra binäröversatt spelkod lär vara försumbar.

Finns ändå klara vinster om spel skrivs om till "native" ARM64. Dels drar då CPUn mindre effekt då koden är mer optimal. Dels tar det en del tid att göra binäröversättning, något man noterar som rätt långa laddningstider hos program som körs via Rosetta 2 eller motsvarande i Windows.

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

Att emulera någon annans CPU artiktuetur kod tro jag inte på. Du tappar mycket prestandard på vägen. Det är ingent nytt under solen direkt. Redan på Atari tiden kunden man köra PC emulering, dvs en 68000 körde 8086 kod , Så en 68000 på 8 mhz gav en PC som tickade runt max 1 Mhz ( Orginalhastigheten var 4,77 mhz )

Permalänk
Medlem

Drivrutiner till GPUn tror jag blir ett mycket större problem för Qualcomm än att emulera x64 kod.

Permalänk
Medlem
Skrivet av klein:

Att emulera någon annans CPU artiktuetur kod tro jag inte på. Du tappar mycket prestandard på vägen. Det är ingent nytt under solen direkt. Redan på Atari tiden kunden man köra PC emulering, dvs en 68000 körde 8086 kod , Så en 68000 på 8 mhz gav en PC som tickade runt max 1 Mhz ( Orginalhastigheten var 4,77 mhz )

Det är skillnad på att emulera och att översätta. Och här är det översätta det handlar om. Som @yoshman skriver blir inte overheaden vid översättningen så stor. Vi som kör Linux lever med diverse översättningar hela tiden tex direktX till vulkan och det har nästan samma prestanda som på Windows...

Märkligt att vi ska få en värld där utvecklare inte kan förmås byta plattform de utvecklar för utan att vi istället översätter till vad vi nu behöver ha.

Visa signatur

Min Dator: AMD 3600 | GTX 680 | 16 GB RAM | Asus X570 Prime | Fractal Design Arc R2 | Thermalright Silver Arrow | Dell U2412M | Ibm Model M

Permalänk
Medlem

I presentationen kallas det tydligt emulation upprepade gånger, men i denna tråd påstås det vara översättning och inte emulering det handlar om. Om det stämmer har Qualcomm inte koll på terminologin runt sitt eget arbete, inte ens The Verge som skrev originalartikeln har noterat detta.

Visa signatur

Data: B650 + 7800X3D + 4080 Super + 64GB (2x32) + 2TB T700 + 850W
Ljud: Cambridge Audio DacMagic + SPL Phonitor 2 + AKG K812
Bild: MSI MAG 274UPF (27" 4K)

Permalänk
Medlem

Dom får börja stoppa in både arm och x86 på moderkorten.. Lite som ungerfär C128, den hade både 6502 och en Z80

Skrivet av hölmiz:

Det är skillnad på att emulera och att översätta. Och här är det översätta det handlar om. Som @yoshman skriver blir inte overheaden vid översättningen så stor. Vi som kör Linux lever med diverse översättningar hela tiden tex direktX till vulkan och det har nästan samma prestanda som på Windows...

Märkligt att vi ska få en värld där utvecklare inte kan förmås byta plattform de utvecklar för utan att vi istället översätter till vad vi nu behöver ha.

Permalänk

Om det är något mer komplicerat som körs så måste hela windows plus andra program också emuleras. Och man faller tillbaka till att virtuella maskiner med windows behöver kunna köras.
Hade det varit för 15år sedan hade detta varit rätt sätt att gå, idag ser jag mer som att man kan fjärrstyra dessa applikationer. Om de får till någon grym variant av typ Remote Desktop App med bra grafikprestanda att fungera på Snapdragon-datorerna så blir allt superbra.
Alltså man har sin programgenväg, på alla sätt ser det ut som programmet körs lokal, men det det körs någon annanstans.

Nå jag förstår att många som har väldigt stort behov att köra spel vill göra det lokal för att minska laggning.

Permalänk

Som framkommer i kommentarerna verkar CPU delen av körningen av spel inte vara något sörre problem. Men hur är det med GPU delen? Hur bra är Adreno på att köra Directx 12?. Som ett mobilt 3050?

Permalänk
Datavetare
Skrivet av MadMantiz:

I presentationen kallas det tydligt emulation upprepade gånger, men i denna tråd påstås det vara översättning och inte emulering det handlar om. Om det stämmer har Qualcomm inte koll på terminologin runt sitt eget arbete, inte ens The Verge som skrev originalartikeln har noterat detta.

"Emulera" är ett exempel på ord vars betydelse är så överlagrat att det blir lite poänglöst att använda termen.

Processen att kunna köra en ISA på en annan ISA kallas normalt "CPU emulering" eller "CPU simulering". Så ur den aspekten är det en form av emulering.

Precis som @klein skriver betyder ofta "emulering" att man måste göra något som tappar rätt mycket prestanda. Är specifikt här jag tror det är väldigt viktigt att särskilja det man typiskt menar med "emulering" från vad som faktiskt görs här.

Det som Rosetta 2 och Windows motsvarighet gör har långt mer gemensamt med just-in-time kompilering som Java, C#, m.fl. använder sig av för att kunna köra en virtuell maskinkod (intermediate representation, IR) på alla ISA som tekniken har en implementation för. I detta fall råkar IR-dialekten vara x86_64 kod!

Viktigast i kontext av spel är denna del av The Verge texten

"And while Qualcomm sees some slight hit to CPU performance when it’s translating or transitioning between x64 and ARM64, it only happens the first time a block of code gets translated — “subsequent passes are direct cache access,” Khalil says."

D.v.s. väldigt likt hur JVM/CLR kör kod och tror inte speciellt många anser att dessa tekniker leder till hopplöst långsam kod. Det betyder också att när väl översättningen är gjort, handlar det inte längre om "emulering" då man kör en ARM64 binär från cache.

Det är en kostnad att göra detta, resultatet blir bättre optimerat om man kompilerar direkt till ARM64 jämfört med att ta källkoden->x86_64->LLVM IR->ARM64 (vilket är vägen jag förstått både Rosetta 2 och Windows motsvarighet använder).

Testade några av mina egna Go-program. Go är väldigt trevligt för att testa detta då man enkelt kan välja vilket OS/CPU resultatet ska kompileras för.

Skillnaden mellan darwin/arm64 (i.e. MacOS native) och darwin/amd64 är att den senare kör på ~80 % av den förra.
Motsvarande med windows/arm64 och windows/amd64 i Windows 11 under parallels desktop ger att den senare kör på ~75 % av den förra. Så redan nu verkar Microsofts teknik vara väldigt nära Rosetta 2 i prestanda.

Och med 75-80 % effektivitet är min M3 Max lika snabb eller snabbare än min jobb-desktop med 5950X på att köra x86_64 (vilket i sig är helt galet), så kostnaden för "emulering" är inte alls jämförbar med den "order of magnitude" kostnad man brukar associera med emulering. Men ändå, det är egentligen inte fel att kalla det emulering men man ska nog ändå låta bli att göra det då det ger helt fel idé om vad tekniken är kapabel till.

Ovanpå det: specifikt för spel tenderar den effektiva kostnaden bli ännu mindre då OS-kärna, vilket inkluderar GPU-drivare, kommer köra "native" även om spelet är x86_64. Ett spel som är primärt GPU-bundet kommer då har det mesta av den CPU-kritiska delen som "native-kod".

För just spel fungerar Rosetta 2 väldigt bra. För andra saker fungerar det OK, och för vissa direkt uselt (kompilatorer och liknande som är relativt kortlivade processer som är kraftigt CPU-bundna).

Visa signatur

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

Permalänk
Datavetare
Skrivet av Anders Andersson:

Som framkommer i kommentarerna verkar CPU delen av körningen av spel inte vara något sörre problem. Men hur är det med GPU delen? Hur bra är Adreno på att köra Directx 12?. Som ett mobilt 3050?

Tror inte man ska förvänta sig en "gaming laptop"... De resultat som läck från lite olika benchmarks pekar på att denna kommer ligga någonstans mellan GPU i M3 och M3 Pro. För att sätta dessa i relation till något ligger M3 i nivå eller strax över AMDs 780M.

Så om Qualcomm vill bli relevanta som spelplattform behöver de längre fram släppa något med betydligt mer GPU-kraft. I ett första steg lär det vara långt viktigare att visa att det faktiskt fungerar.

Den här artikeln nämner "snabbare än M2", men Qualcomm har efter lansering av M3 också sagt, "snabbare än M3" (fast möjligen menar man där bara i MT ställt mot vanliga M3).

Om Snapdragon X Elite presterar på den nivå Qualcomm hävdar är ändå det viktigaste denna plattform tillför en CPU-design för bärbara som fixar lika CPU-tunga saker som Apple Silicon bärbara.

D.v.s. man kan få x86-desktop-klass-prestanda i en bärbar (så bättre än alla x86-baserad laptops utanför de "släpbara desktop-replacement modellerna på >3-4kg") som fortfarande är kompakt och inte försöker rymma från sin plats när fläktarna körs på maxfart. Det samtidigt som "det går att spela vissa spel, men glöm AAA-titlar i någon form av relevant kvalitétsnivå".

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

Jag tror det viktigaste här är kompileraren, dvs. den mjukvara som översätter din programkod (alltså om du t.ex. programmerar i C-Sharp. C++. Python etc.) till Maskinkod.

Arm har alltid varit en form ut av RISC processor (som står för Reduced Instruction Set Computer), ARM är en Advanced Risc Machine som är en form av RISC. Dom har blivit mera och mera utvecklade och avancerade över tid, och kan absolut vara ett alternativ till t.ex. Intel och Amd's x86 arkitektur, men då RISC styrka har legat i att vara snabba o effektiva med vissa instruktioner, så är därför arkitekturen mycket annorlunda än en x86 processor, man kan säga att x86 har flera och kraftfullare kommandon som Mikroprocessor, men det går långsammare, medan en RISC processor har mindre kommandon men kan utföra dom snabbare.

Detta kräver egen kod för RISC arkitekturen, och om man vil t.ex. programmera i C-Sharp (C#) så går det utmärkt att kompilera för båda arkitekturer.

TL:DR; det kommer mycket mera an på programmeringsmiljön, alltså att det finns en översättare (Compiler!) som översätter till ARM Maskinkod (RISC) såväl som x86 Maskinkod smärtfritt och effektivt. Och att det finns ARM spelmotorer som också finns till x86 arkitekturen.

Permalänk
Skrivet av JoOngle:

JDetta kräver egen kod för RISC arkitekturen, och om man vil t.ex. programmera i C-Sharp (C#) så går det utmärkt att kompilera för båda arkitekturer.

Problemet är dock att man ofta anropar andra program och komponenter.
T.ex. ett program med OLE koppling(Object Linking and Embedding) emot Excel eller Autocad. Där man skulle hela källkoden för Excel/Autocad och också kompilera om denna för arm.
Varvid jag tror det moderna idag är att försöka undvika att ha alla program på alla klienter, det är ett förlegat sätt att jobba. Väldigt ofta är ett helt omskrivet interface för webb det bästa.

Permalänk
Medlem
Skrivet av JoOngle:

Jag tror det viktigaste här är kompileraren, dvs. den mjukvara som översätter din programkod (alltså om du t.ex. programmerar i C-Sharp. C++. Python etc.) till Maskinkod.

Arm har alltid varit en form ut av RISC processor (som står för Reduced Instruction Set Computer), ARM är en Advanced Risc Machine som är en form av RISC. Dom har blivit mera och mera utvecklade och avancerade över tid, och kan absolut vara ett alternativ till t.ex. Intel och Amd's x86 arkitektur, men då RISC styrka har legat i att vara snabba o effektiva med vissa instruktioner, så är därför arkitekturen mycket annorlunda än en x86 processor, man kan säga att x86 har flera och kraftfullare kommandon som Mikroprocessor, men det går långsammare, medan en RISC processor har mindre kommandon men kan utföra dom snabbare.

Detta kräver egen kod för RISC arkitekturen, och om man vil t.ex. programmera i C-Sharp (C#) så går det utmärkt att kompilera för båda arkitekturer.

TL:DR; det kommer mycket mera an på programmeringsmiljön, alltså att det finns en översättare (Compiler!) som översätter till ARM Maskinkod (RISC) såväl som x86 Maskinkod smärtfritt och effektivt. Och att det finns ARM spelmotorer som också finns till x86 arkitekturen.

RISC vs CISC har väl inte varit särskilt relevant på 30-40 år i alla fall? Dagens arkitekturer är snarare hybrider och blandar RISC:iga och CISC:iga instruktioner friskt. Men olika instruktionsuppsättningar kräver olika kodgenerering oavsett, det har ingenting med RISC vs CISC att göra.

Men problemet är inte så mycket kompilatorer, det finns ARM64-kompilatorer för det mesta nu för tiden, utan alla tredjepartsbibliotek som spelen ofta använder. Det är en sak att kompilera om sin egen kod, men det kan vara svårare att övertyga andra att göra samma sak. Kör man istället på lösningen som Apple och nu även Microsoft använder med binäröversättning så undviker man det problemet.

Permalänk
Datavetare
Skrivet av JoOngle:

Jag tror det viktigaste här är kompileraren, dvs. den mjukvara som översätter din programkod (alltså om du t.ex. programmerar i C-Sharp. C++. Python etc.) till Maskinkod.

Arm har alltid varit en form ut av RISC processor (som står för Reduced Instruction Set Computer), ARM är en Advanced Risc Machine som är en form av RISC. Dom har blivit mera och mera utvecklade och avancerade över tid, och kan absolut vara ett alternativ till t.ex. Intel och Amd's x86 arkitektur, men då RISC styrka har legat i att vara snabba o effektiva med vissa instruktioner, så är därför arkitekturen mycket annorlunda än en x86 processor, man kan säga att x86 har flera och kraftfullare kommandon som Mikroprocessor, men det går långsammare, medan en RISC processor har mindre kommandon men kan utföra dom snabbare.

Detta kräver egen kod för RISC arkitekturen, och om man vil t.ex. programmera i C-Sharp (C#) så går det utmärkt att kompilera för båda arkitekturer.

TL:DR; det kommer mycket mera an på programmeringsmiljön, alltså att det finns en översättare (Compiler!) som översätter till ARM Maskinkod (RISC) såväl som x86 Maskinkod smärtfritt och effektivt. Och att det finns ARM spelmotorer som också finns till x86 arkitekturen.

Historiskt var det helt klart så att samma program kompilerad till x86 tog mindre plats och innehåll färre instruktioner jämfört med t.ex. samma program kompilerad till MIPS eller SPARC.

Arm har alltid varit en uddafågel här. En fördel med 32-bitars Arm är att den tenderar leda till väldigt kompakt binär, ofta mindre än x86.

Problemet med 32-bit Arm ISA är att dessa "smarta" finesser visade sig sätta rätt många käppar i hjulen om man försökte skala upp en Arm-baserad mikroarkitektur till att bli väldigt superskalär. Så ARM64 och 32-bit Arm ISA skiljer sig rätt kraftigt på en rad områden.

Det som är "killer feature" för både ARM64 och även RISC-V är att de har designats mot bakgrund av att "ingen längre skriver assembler", allt går via en kompilator, JIT eller liknande. Man har fokuserat på att ha de instruktioner som passar bäst för en kompilator, något som gör att samma program tenderar bestå av färre ARM64 instruktioner än x86_64 instruktioner trots att den förra är "RISC".

Vilket i sig lite visar hur poänglös RISC/CISC separationen är idag, handlar mer om "load-store design" eller ej där den förra bara accepterar register som argument till instruktioner som utför något form av beräkning. De flesta, men inte alla RISC är "load-store designs" inklusive 32-bit Arm och ARM64.

Är man intresserad att testa lite är compiler explorer en lysande resurs. Där kan man jämföra kodsnuttar och se vad de kompilerar till på olika ISA.

Tar jag ett av de Go-program jag testade ovan består det av 208k instruktioner på x86_64 medan det är 171k instruktioner för ARM64 och 160k instruktioner för 32-bit Arm (alla kompileras då för Linux som OS).

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:

Historiskt var det helt klart så att samma program kompilerad till x86 tog mindre plats och innehåll färre instruktioner jämfört med t.ex. samma program kompilerad till MIPS eller SPARC.

Arm har alltid varit en uddafågel här. En fördel med 32-bitars Arm är att den tenderar leda till väldigt kompakt binär, ofta mindre än x86.

Problemet med 32-bit Arm ISA är att dessa "smarta" finesser visade sig sätta rätt många käppar i hjulen om man försökte skala upp en Arm-baserad mikroarkitektur till att bli väldigt superskalär. Så ARM64 och 32-bit Arm ISA skiljer sig rätt kraftigt på en rad områden.

Det som är "killer feature" för både ARM64 och även RISC-V är att de har designats mot bakgrund av att "ingen längre skriver assembler", allt går via en kompilator, JIT eller liknande. Man har fokuserat på att ha de instruktioner som passar bäst för en kompilator, något som gör att samma program tenderar bestå av färre ARM64 instruktioner än x86_64 instruktioner trots att den förra är "RISC".

Vilket i sig lite visar hur poänglös RISC/CISC separationen är idag, handlar mer om "load-store design" eller ej där den förra bara accepterar register som argument till instruktioner som utför något form av beräkning. De flesta, men inte alla RISC är "load-store designs" inklusive 32-bit Arm och ARM64.

Är man intresserad att testa lite är compiler explorer en lysande resurs. Där kan man jämföra kodsnuttar och se vad de kompilerar till på olika ISA.

Tar jag ett av de Go-program jag testade ovan består det av 208k instruktioner på x86_64 medan det är 171k instruktioner för ARM64 och 160k instruktioner för 32-bit Arm (alla kompileras då för Linux som OS).

Okej,

Tack för förtydligandet, det var nog den bästa summering och förklarning jag har läst på länge!
Ger fullständigt mening.

Permalänk
Skrivet av Yoshman:

...

Är man intresserad att testa lite är compiler explorer en lysande resurs. Där kan man jämföra kodsnuttar och se vad de kompilerar till på olika ISA.

...

Oh vilket häftigt "lekplats" denna sida är (eller, kan vara, för en amateur iaf)! Tack för länken!

Visa signatur

--------------------------

Permalänk
Medlem

Mycket initierat!

Mycket bra beskrivningar av Yoshman, läs dem - inklusive resonemang om skillnad på RISC/CISC när "alla" är hybrider samt om skillnad på emulering/simulering/JITC - i det senare fallet torde största skillnaden vara när i tiden "tolkningen" av de underliggande instruktionerna görs - en gång i starten av hela programmet som Rosetta och liknande eller hela tiden löpande instruktion för instruktion som traditionella emulatorer.

Igen, läs Yoshmans inlägg (pluralis) för tydliga och initierade beskrivningar 😊

Skrivet av Yoshman:

Historiskt var det helt klart så...

Visa signatur

Dell XPS 17 - RTX 2060 - 4k touch - ersätter MSI GS73VR efter tre år
Byggen: Simply Red med 950 Pro - Liten Lian Li

Permalänk
Rekordmedlem

Så här 40 år efter hypen så kanske BBC och Acorn lyckas locka mig till sin plattform, ja givet att annat än spel också fungerar bra då.

Visa signatur

R5 5600G, Asus ROG STRIX X470-F Gaming, WD SN850X 2TB, Seasonic Focus+ Gold 650W, Aerocool Graphite v3, Tittar på en Acer ET430Kbmiippx 43" 4K. Lyssnar på Behringer DCX2496, Truth B3031A, Truth B2092A. Har också oscilloskop, mätmikrofon och colorimeter.