x86 och ARM: Kan de fungera på en dator samtidigt?

PostPC-enheter var tvungna att ersätta datorer, det sa man för några år sedan. I slutet? Vi arbetar med enheter som talar olika språk och i vissa fall tvingar de oss att växla mellan olika enheter hela tiden. Men med den framtida ankomsten av ARM-baserade datorer undrar vi om vi kommer att se blandade processorer med x86.

Å ena sidan har vi datorerna vars program har sammanställts för x86-uppsättningen register och instruktioner, å andra sidan har vi så kallade PostPC-enheter, vars applikationer talar i ARM. Men på senare tid har designarna av processorer för PostPC-system visat att de vill hoppa till PC: n, inte till x86, utan att ha PC-baserade på ARM.

x86 och ARM

Det har slutat med att det i slutändan finns två olika marknader, var och en talar sitt språk och ett oändligt antal applikationer som är oförenliga med ett annat system. Det idealiska scenariot? Har en dator med möjlighet att köra program och system på båda sidor, för både ARM och x86.

Men är det möjligt? Vi kommer att försöka förklara de problem som arkitekter möter när de utformar både ett hybridsystem och en hybrid SoC, samt anledningen till att Intel och AMD har inte släppt sin blandade processor.

AMD och Intel är inte intresserade av en blandad CPU mellan ARM och x86

Intel-AMD-ARM

Det första problemet är att x86-licensen endast är licensierad av Intel och AMD, så dessa två företag är de enda som kan göra en CPU kompatibel med x86-binärer. Så först och främst måste vi tänka lite på vad som skulle hända om dessa företag gjorde en CPU som kunde utföra de program som är utformade för ARM.

Vi måste komma ihåg att det skulle vara omöjligt att köra miljön på x86 och på ARM samtidigt, så de flesta utvecklare som vet att datorer med x86 också kan köra ARM-kod kommer inte att bry sig, lite efter lite, koden x86 skulle bli föråldrad och ARM skulle växa i procent av användningen.

En värld där människor inte använder x86-program är en värld som inte är värt det för Intel och AMD, så en processor från deras sida som kan köra båda miljöerna skulle inte vara deras ideal

Implementerar x86 och ARM på ett enda system

göra processador

Har vi ett exempel på detta? Ja, vi har en som finns i tiotals miljoner hem PlayStation 4, en konsol vars huvudprocessor är en AMD SoC baserad på x86 men sedan har en andra processor med en ARM-processor. Denna processor aktiveras bara när konsolen är i beredskapsläge, kör ett operativsystem parallellt och har sitt eget ram minne.

Den enklaste idén att förena båda världarna är att skapa en dator som, beroende på vilken konsumtionsnivå som krävs hela tiden, aktiverar en eller annan SoC, aktiveras systemet på ett eller annat sätt, men det betyder att två system finns i samma dator och utforma hela kraftdistributionssystemet för de två systemen, vilket inte är en skrämmande uppgift.

Det andra problemet skulle komma i användningen av systemets I / O-enheter, alla borde vara tillgängliga för processorerna för båda ISA: erna, så antingen kopieras hårdvaran som får åtkomst till kringutrustningen eller så skapas ett gemensamt element. , som strider mot de olika sätten på vilka varje typ av processor pratar med dem.

Två ISA: er som körs samtidigt på en SoC, är det möjligt?

ARM x86

Om det finns något som kännetecknar SoC, är det inte bara att alla komponenter finns på samma chip, utan att de alla delar samma minnesåtkomst, men vad händer när två processorer inte förstår samma språk? Tja, det är inte ett problem eftersom SoC: er har i sina GPU: er ett annat sätt än CPU: n för att läsa binärfilerna, allt som behövs är att markera i minnet och adressera vilken del som är för ARM och vilken del är för x86.

Låter det enkelt, eller hur? Tja nej, anledningen är att x86 är Little Endian, vilket betyder att den går igenom minnet från den lägsta minnesadressen till den högsta, ARM är Bi-Endian så att program kan börja i båda ändar och gå upp eller ner beroende på fallet . I princip skulle det vara enkelt att associera en slutpunkt till varje ISA, men det finns operativsystem för ARM som fungerar i Little Endian.

PCB-routing

Det andra problemet är det faktum att RAM är utformat för att betjäna en processor samtidigt, så om vi har två processorer åtkomst samtidigt, skulle den ena innehålla strid över den andra för att få åtkomst till minnet, så applikationer som är utformade för båda ISA inte köra med samma lätthet, för att inte tala om att de resurser som delas mellan båda inom SoC också skulle göra det.

Så. Hur är det att en GPU kan du dela utrymme med en CPU smidigt? För det enkla faktum att GPU: er, även om de manipulerar data och kör program, inte är utformade för att köra ett operativsystem, och det är omöjligt att det finns ett helt schizofrens operativsystem som kan förstås med två arkitekturer samtidigt. Där var och en har sitt eget sätt att adressera minne och komma åt kringutrustning.