x86 og ARM: Kan de arbejde på en pc på samme tid?

PostPC-enheder måtte udskifte pc'er, det blev sagt for et par år siden. I slutningen? Vi arbejder med enheder, der taler forskellige sprog, og i nogle tilfælde tvinger de os til altid at skifte mellem forskellige enheder. Men med den fremtidige ankomst af ARM-baserede pc'er, vi spekulerer på, om vi vil se blandede processorer med x86.

På den ene side har vi pc'erne, hvis programmer er sammensat til x86-sæt af registre og instruktioner, på den anden side har vi de såkaldte PostPC-enheder, hvis applikationer taler i ARM. Men i nyere tid har designerne af processorer til PostPC-systemer vist, at de vil springe til pc'en, ikke til x86, men at have pc'er baseret på ARM.

x86 og ARM

Dette endte med at der i sidste ende er to forskellige markeder, der hver især taler sit sprog og et uendeligt antal applikationer, der er uforenelige med et andet system. Det ideelle scenario? At have en pc med evnen til at køre programmerne og systemerne på begge sider til både ARM og x86.

Men er det muligt? Vi vil forsøge at forklare de problemer, som arkitekter står overfor, når de designer både et hybridsystem og et hybrid SoC, samt årsagen til, at Intel , AMD har ikke frigivet deres blandede processor.

AMD og Intel er ikke interesseret i en blandet CPU mellem ARM og x86

Intel-AMD-ARM

Det første problem er, at x86-licensen kun er licenseret af Intel og AMD, så disse to virksomheder er de eneste, der er i stand til at lave en CPU kompatibel med x86-binære filer. Så først og fremmest skal vi tænke lidt over, hvad der ville ske, hvis disse virksomheder lavede en CPU, der var i stand til at udføre de programmer, der er designet til ARM.

Vi skal huske på, at det ville være umuligt at køre miljøet på x86 og på ARM på samme tid, så de fleste udviklere, der ved, at pc'er med x86 også kunne køre ARM-kode, vil ikke generer koden lidt efter lidt x86 ville blive forældet, og ARM ville vokse i procent af brugen.

En verden, hvor folk ikke bruger x86-programmer, er en verden, der ikke er det værd for Intel og AMD, så en processor fra deres side, der kan køre begge miljøer, ville ikke være deres ideal

Implementering af x86 og ARM på et enkelt system

gengive procesador

Har vi et eksempel på dette? Ja, vi har en der er i titusinder af millioner hjem kaldet PlayStation 4, en konsol, hvis hovedprocessor er en AMD SoC baseret på x86, men derefter har en anden processor med en ARM-processor. Denne processor aktiveres kun, når konsollen er i standby-tilstand, kører et operativsystem parallelt og har sin egen RAM hukommelse.

Den enkleste idé til at forene begge verdener er at oprette en computer, der afhængigt af det krævede forbrugsniveau til enhver tid aktiverer en eller anden SoC, systemet aktiveres på en eller anden måde, men det betyder, at to systemer er til stede i den samme computer og designe hele strømfordelingssystemet til de to systemer, hvilket ikke er en skræmmende opgave.

Det andet problem ville komme i brugen af ​​systemets I / O-enheder, alle skulle være tilgængelige for processorer fra begge ISA'er, så enten duplikeres den hardware, der får adgang til periferiudstyr, eller der oprettes et fælles element. , der er i konflikt med de forskellige måder, hvorpå hver type processor taler med dem.

To ISA'er kører på samme tid på en SoC, er det muligt?

ARM x86

Hvis der er noget, der karakteriserer SoC'er, er det ikke kun, at alle komponenterne er på den samme chip, men at de alle deler den samme hukommelsesadgang, men hvad sker der, når to processorer ikke forstår det samme sprog? Nå, det er ikke et problem, da SoC'erne har i deres GPU'er en anden måde end CPU'en til at læse binærfiler, alt hvad der er nødvendigt er at markere i hukommelsen, der adresserer, hvilken del der er til ARM, og hvilken del er til x86.

Det lyder let, ikke? Nå nej, årsagen er, at x86 er Little Endian, hvilket betyder, at den går gennem hukommelsen fra den laveste hukommelsesadresse til den højeste, ARM er Bi-Endian, så programmer kan starte i begge ender og gå op eller ned afhængigt af tilfældet . I princippet ville det være let at knytte et slutpunkt til hver ISA, men der er operativsystemer til ARM, der fungerer i Little Endian.

PCB-routing

Det andet problem er det faktum, at RAM er designet til at betjene en processor på samme tid, så hvis vi har to processorer, der får adgang på samme tid, vil den ene indeholde strid over den anden om at få adgang til hukommelsen, så applikationer designet til begge ISA'er ville ikke køre med samme lethed, for ikke at nævne at de ressourcer, der deles mellem begge inden for SoC, også ville gøre det.

Så. Hvordan er det, at en GPU kan dele plads med en CPU problemfrit? For det enkle faktum, at GPU'er, selvom de manipulerer data og kører programmer, ikke er designet til at køre et operativsystem, og eksistensen af ​​et helt skizofren operativsystem, der kan forstås med to arkitekturer på samme tid, er umuligt. Hvor hver enkelt har sin egen måde at adressere hukommelse på og få adgang til perifert udstyr.