kan de köras på en PC samtidigt? –
Dels har vi PC-er vars program är kompilerade för en uppsättning x86-register och instruktioner, dels har vi så kallade PostPC-enheter vars applikationer talar ARM. Men på senare tid har processorutvecklare för PostPC-system visat att de vill gå över till PC, inte x86, utan till ARM-baserade PC.
Detta ledde till att det i slutändan fanns två olika marknader, som var och en talar sitt eget språk, och ett oändligt antal applikationer som är inkompatibla med ett annat system. Idealiskt scenario? Närvaron av en PC med möjlighet att köra program och system från båda sidor, för både ARM och x86.
Men är det möjligt? Vi kommer att försöka förklara de utmaningar som arkitekter kommer att möta när de utvecklar både ett hybridsystem och en hybrid SoC, samt varför Intel och AMD inte släppte sin blandade processor.
AMD och Intel är inte intresserade av en blandad CPU mellan ARM och x86
Det första problemet är att x86-licensen endast licensieras av Intel och AMD, så dessa två företag är de enda som kan ha en CPU som är kompatibel med x86-binärfiler. Så först och främst måste vi fundera lite på vad som kan hända om dessa företag skapade en CPU som kan köra program designade för ARM.
Vi måste komma ihåg att det inte skulle vara möjligt att köra en miljö på x86 och ARM samtidigt, så de flesta utvecklare, som vet att x86-datorer också kan köra ARM-kod, kommer inte att i det tysta oroa sig för koden. x86 kommer att bli föråldrad och ARM-användningen kommer att öka.
En värld där människor inte använder x86-program är inte värt det för Intel och AMD, så en processor på deras sida som kan fungera i båda miljöerna skulle inte vara deras ideal.
Installerar x86 och ARM på samma system
Har vi något exempel på detta? Ja, vi har den i tiotals miljoner hem som kallas PlayStation 4, en konsol som har en x86-baserad AMD SoC som huvudprocessor, men som sedan har en andra processor med en ARM-processor. Denna processor aktiveras endast när konsolen är i standby-läge, körs parallellt med operativsystemet och har ett eget direktminne.
Den enklaste idén att förena båda världarna är att skapa en dator som, beroende på vilken förbrukningsnivå som krävs vid varje tidpunkt, aktiverar en eller annan SoC, systemet aktiveras på ett eller annat sätt, men det betyder att två system finns i samma dator och att designa ett helt kraftdistributionssystem för två system, vilket inte är en svår uppgift.
Ett annat problem kan uppstå när du använder systemets I/O-enheter, alla måste vara tillgängliga för processorerna i båda ISA, därför dupliceras antingen hårdvaran som kommer åt kringutrustningen eller så skapas ett gemensamt element. , vilket motsäger de olika sätt som varje typ av processor interagerar med dem.
Är det möjligt att två ISA:er körs samtidigt på samma SoC?
Om det är något som kännetecknar en SoC så är det inte bara att alla komponenter finns på samma chip, utan att de alla har samma minnesåtkomst, men vad händer när två processorer inte förstår ett och samma språk? Tja, detta är inget problem, eftersom SoCs har ett annat sätt att läsa binärer än CPU:erna i sina GPU:er, allt som behövs är att markera i adressminnet vilken del som är för ARM och vilken som är för x86.
Låter enkelt, eller hur? Jo 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å program kan köras från båda ändar och gå upp eller ner i beroende på fallet . … I grund och botten skulle det vara lätt att binda en slutpunkt till varje ISA, men det finns operativsystem för ARM som fungerar med Little Endian.
Ett annat problem är att RAM är designat för att tjäna en processor samtidigt, så om vi har två processorer som åtkomst samtidigt, kommer den ena att ha strid om den andra när den kommer åt minnet, så applikationer som utvecklats för båda ISA kommer inte att fungera med samma lätthet, för att inte tala om att resurserna som delas av båda inom SoC kommer att fungera också.
Så. Hur kommer det sig att GPU / GRAFISK PROCESSOR kan dela utrymme med CPU utan problem? Jo, för det enkla faktum att GPU:er, samtidigt som de manipulerar data och kör program, inte är designade för att köra ett operativsystem, och att det är omöjligt att existera ett helt schizofrent operativsystem som kan förstås med två arkitekturer samtidigt. Där alla har sitt eget sätt att adressera minne och komma åt kringutrustning.