x86 a ARM: Mohou pracovat na PC současně?

Zařízení PostPC musela nahradit počítače, to bylo řečeno před několika lety. Na konci? Pracujeme se zařízeními, která mluví různými jazyky, a v některých případech nás nutí neustále přepínat mezi různými zařízeními. Ale s budoucím příchodem ARMPC na bázi jsme zvědaví, jestli uvidíme smíšené procesory s x86.

Na jedné straně máme počítače, jejichž programy jsou kompilovány pro sadu registrů a instrukcí x86, na druhé straně máme takzvaná zařízení PostPC, jejichž aplikace mluví v ARM. V poslední době však návrháři procesorů pro systémy PostPC ukázali, že chtějí přeskočit na PC, nikoli na x86, ale mít počítače založené na ARM.

x86 a ARM

To nakonec vedlo k tomu, že existují dva různé trhy, z nichž každý hovoří svým jazykem a nekonečné množství aplikací nekompatibilních s jiným systémem. Ideální scénář? Mít PC se schopností spouštět programy a systémy na obou stranách, pro ARM i x86.

Ale je to možné? Pokusíme se vysvětlit problémy, kterým by architekti čelili při návrhu hybridního systému i hybridního SoC, a také důvod, proč Intel a AMD nevydali svůj smíšený procesor.

AMD a Intel nemají zájem o smíšený procesor mezi ARM a x86

Intel-AMD-ARM

Prvním problémem je, že licence x86 je licencována pouze společnostmi Intel a AMD, takže tyto dvě společnosti jsou jediné, které jsou schopné procesor kompatibilní s binárními soubory x86. Nejprve tedy musíme trochu přemýšlet o tom, co by se stalo, kdyby tyto společnosti vytvořily CPU schopné vykonávat programy určené pro ARM.

Musíme mít na paměti, že by nebylo možné provozovat prostředí na x86 a na ARM současně, takže většina vývojářů, kteří vědí, že počítače s x86 mohou také spouštět ARM kód, se nebude krok za krokem obtěžovat x86 by zastaralo a ARM by rostlo v procentech využití.

Svět, ve kterém lidé nepoužívají programy x86, je svět, který pro Intel a AMD nestojí za to, takže procesor z jejich strany, který dokáže provozovat obě prostředí, by nebyl jejich ideál.

Nasazení x86 a ARM v jednom systému

vykreslit procesador

Máme toho příklad? Ano, máme tu, která se nachází v desítkách milionů domů PlayStation 4, konzole, jejíž hlavní procesor je AMD SoC založený na x86, ale poté má druhý procesor s procesorem ARM. Tento procesor je aktivován pouze v případě, že je konzola v pohotovostním režimu, běží paralelně operační systém a má svůj vlastní RAM Paměť.

Nejjednodušší myšlenkou sjednocení obou světů je vytvořit počítač, který v závislosti na požadované úrovni spotřeby po celou dobu aktivuje jeden SoC nebo jiný, systém je aktivován tak či onak, ale to znamená, že v stejný počítač a návrh celého systému distribuce energie pro tyto dva systémy, což není skličující úkol.

Dalším problémem by bylo použití I / O zařízení systému, všechna by měla být k dispozici pro procesory obou ISA, takže je duplikován hardware, který přistupuje k periferním zařízením, nebo je vytvořen společný prvek. , což je v rozporu s různými způsoby, jak s nimi jednotlivé typy procesorů mluví.

Je to možné, dva ISA běžící současně na jednom SoC?

ARM x86

Pokud existuje něco, co charakterizuje SoC, je to nejen to, že všechny komponenty jsou na stejném čipu, ale že všechny sdílejí stejný přístup do paměti, ale co se stane, když dva procesory nerozumí stejnému jazyku? To není problém, protože SoC mají ve svých GPU jiný způsob, než CPU čte binární soubory, vše, co je potřeba, je v paměti označit, která část je pro ARM a která pro x86.

Zní to jednoduše, že? Ne, důvod je ten, že x86 je Little Endian, což znamená, že prochází pamětí od nejnižší adresy paměti po nejvyšší, ARM je Bi-Endian, takže programy mohou začínat na obou koncích a v závislosti na případu mohou jít nahoru nebo dolů . V zásadě by bylo snadné přiřadit koncový bod ke každému ISA, ale existují malé operační systémy pro ARM, které fungují v Little Endian.

Směrování PCB

Druhým problémem je skutečnost, že RAM je navržena tak, aby obsluhovala procesor současně, takže pokud máme dva procesory přistupující současně, jeden by obsahoval spor o druhý v přístupu k paměti, takže aplikace navržené pro oba ISA by neběží se stejnou lehkostí, nemluvě o tom, že by to dělaly také prostředky sdílené mezi oběma v rámci SoC.

Tak. Jak to, že a GPU umí plynule sdílet prostor s CPU? Pro jednoduchou skutečnost, že GPU, i když manipulují s daty a spouštějí programy, nejsou navrženy pro provozování operačního systému, a existence zcela schizofrenního operačního systému, kterému lze rozumět současně se dvěma architekturami, je nemožná. Každý z nich má svůj vlastní způsob adresování paměti a přístupu k periferním zařízením.