x86 e ARM: possono funzionare contemporaneamente su un PC?

I dispositivi PostPC dovevano sostituire i PC, si diceva qualche anno fa. Alla fine? Stiamo lavorando con dispositivi che parlano lingue diverse e in alcuni casi ci costringono a passare da un dispositivo all'altro in ogni momento. Ma con il futuro arrivo di ARM-Basati su PC ci chiediamo se vedremo processori misti con x86.

Da una parte abbiamo i PC i cui programmi sono compilati per il set di registri e istruzioni x86, dall'altra abbiamo i cosiddetti dispositivi PostPC, le cui applicazioni parlano in ARM. Ma negli ultimi tempi i progettisti di processori per sistemi PostPC hanno dimostrato di voler fare il salto al PC, non a x86, ma ad avere PC basati su ARM.

x86 e ARM

Questo ha finito per far sì che alla fine ci siano due mercati diversi, ognuno che parla la sua lingua e un numero infinito di applicazioni incompatibili con un altro sistema. Lo scenario ideale? Avere un PC con la possibilità di eseguire programmi e sistemi su entrambi i lati, sia per ARM che per x86.

Ma è possibile? Cercheremo di spiegare i problemi che gli architetti dovrebbero affrontare quando progettano sia un sistema ibrido che un SoC ibrido, nonché il motivo per cui Intel e AMD non hanno rilasciato il loro processore misto.

AMD e Intel non sono interessate a una CPU mista tra ARM e x86

Intel-AMD-ARM

Il primo problema è che la licenza x86 è concessa in licenza solo da Intel e AMD, quindi queste due società sono le uniche in grado di realizzare un CPU compatibile con i binari x86. Quindi, prima di tutto, dobbiamo pensare un po 'a cosa accadrebbe se queste aziende realizzassero una CPU in grado di eseguire i programmi progettati per ARM.

Dobbiamo tenere presente che sarebbe impossibile eseguire l'ambiente su x86 e su ARM contemporaneamente, quindi la maggior parte degli sviluppatori sapendo che i PC con x86 potrebbero anche eseguire codice ARM non si preoccuperanno, a poco a poco, del codice x86 diventerebbe obsoleto e ARM crescerebbe in percentuale di utilizzo.

Un mondo in cui le persone non usano programmi x86 è un mondo che non vale la pena per Intel e AMD, quindi un processore da parte loro in grado di eseguire entrambi gli ambienti non sarebbe il loro ideale

Distribuzione di x86 e ARM su un unico sistema

rendere procuratore

Ne abbiamo un esempio? Sì, ne abbiamo uno che si trova in decine di milioni di case chiamate PlayStation 4, una console il cui processore principale è un SoC AMD basato su x86 ma poi ha un secondo processore con processore ARM. Questo processore viene attivato solo quando la console è in modalità stand-by, esegue un sistema operativo in parallelo e ne ha uno proprio RAM memoria.

L'idea più semplice per unificare entrambi i mondi è creare un computer che, a seconda del livello di consumo richiesto in ogni momento, attivi un SoC o un altro, il sistema si attiva in un modo o nell'altro, ma questo significa che sono presenti due sistemi in lo stesso computer e progettare l'intero sistema di distribuzione dell'alimentazione per i due sistemi, il che non è un compito arduo.

L'altro problema verrebbe nell'uso dei dispositivi I / O del sistema, tutti dovrebbero essere disponibili per i processori di entrambi gli ISA, quindi o l'hardware che accede alle periferiche viene duplicato o viene creato un elemento comune. , che è in conflitto con i diversi modi in cui ogni tipo di processore parla con loro.

Due ISA in esecuzione contemporaneamente su un SoC, è possibile?

BRACCIO x86

Se c'è qualcosa che caratterizza i SoC, non è solo che tutti i componenti sono sullo stesso chip, ma che condividono tutti lo stesso accesso alla memoria, ma cosa succede quando due processori non capiscono la stessa lingua? Bene, questo non è un problema poiché i SoC hanno nelle loro GPU un modo diverso dalla CPU per leggere i binari, tutto ciò che serve è contrassegnare nell'indirizzamento della memoria quale parte è per ARM e quale parte è per x86.

Sembra facile non è vero? Ebbene no, il motivo è che x86 è Little Endian, il che significa che passa attraverso la memoria dall'indirizzo di memoria più basso a quello più alto, ARM è Bi-Endian quindi i programmi possono iniziare da entrambe le estremità e salire o scendere a seconda del caso . In linea di principio, sarebbe facile associare un endpoint a ciascun ISA, ma esistono sistemi operativi per ARM che funzionano in Little Endian.

Circuito PCB

L'altro problema è il fatto che la RAM è progettata per servire un processore allo stesso tempo, quindi se abbiamo due processori che accedono allo stesso tempo, uno conterrebbe un conflitto sull'altro nell'accesso alla memoria, quindi le applicazioni progettate per entrambi gli ISA lo farebbero Non girava con la stessa facilità, senza contare che le risorse condivise tra entrambi all'interno del SoC lo farebbero anche.

Così. Com'è che a GPU può condividere lo spazio con una CPU senza problemi? Ebbene, per il semplice fatto che le GPU, sebbene manipolino dati ed eseguano programmi, non sono progettate per eseguire un sistema operativo, e l'esistenza di un sistema operativo completamente schizofrenico che può essere compreso con due architetture allo stesso tempo è impossibile. Dove ognuno ha il proprio modo di indirizzare la memoria e accedere alle periferiche.