x86 ja ARM: Voivatko ne toimia tietokoneella samanaikaisesti?

PostPC-laitteiden oli korvattava tietokoneet, kuten sanottiin muutama vuosi sitten. Lopussa? Työskentelemme laitteiden kanssa, jotka puhuvat eri kieliä, ja joissakin tapauksissa ne pakottavat meidät vaihtamaan jatkuvasti eri laitteiden välillä. Mutta tulevan saapumisen kanssa ARM-tietokoneissa ihmettelemme, näkisekö sekoitettuja prosessoreita x86: n kanssa.

Toisaalta meillä on PC: t, joiden ohjelmat on koottu x86-rekisteri- ja käskyjoukolle, ja toisaalta meillä on ns. PostPC-laitteet, joiden sovellukset puhuvat ARM: ssä. Mutta viime aikoina PostPC-järjestelmien prosessoreiden suunnittelijat ovat osoittaneet, että he haluavat siirtyä tietokoneeseen, ei x86: een, mutta että heillä on ARM-pohjaiset tietokoneet.

x86 ja ARM

Tämä on päätynyt siihen, että lopulta on olemassa kaksi erilaista markkinaa, joista kukin puhuu sen kieltä ja loputon määrä sovelluksia, jotka eivät ole yhteensopivia toisen järjestelmän kanssa. Ihanteellinen skenaario? PC, jolla on kyky ajaa ohjelmia ja järjestelmiä molemmilta puolilta, sekä ARM: lle että x86: lle.

Mutta onko tämä mahdollista? Yritämme selittää ongelmat, joita arkkitehdit kohtaavat suunnitellessaan sekä hybridijärjestelmää että hybridi-soC: ta, sekä syy miksi Intel ja AMD eivät ole julkaisseet sekaprosessoriaan.

AMD ja Intel eivät ole kiinnostuneita sekoitetusta prosessorista ARM: n ja x86: n välillä

Intel-AMD-ARM

Ensimmäinen ongelma on, että x86-lisenssillä on vain Intelin ja AMD: n lisenssi, joten nämä kaksi yritystä ovat ainoat, jotka pystyvät tekemään prosessori yhteensopiva x86-binaarien kanssa. Joten ensinnäkin meidän on ajateltava vähän siitä, mitä tapahtuisi, jos nämä yritykset tekisivät suorittimen, joka kykenisi suorittamaan ARM: lle suunnitellut ohjelmat.

Meidän on pidettävä mielessä, että olisi mahdotonta käyttää ympäristöä x86: lla ja ARM: llä samanaikaisesti, joten useimmat kehittäjät tietäen, että tietokoneet, joissa on x86, voivat käyttää myös ARM-koodia, eivät vähitellen häiritse koodia x86 vanhentuu ja ARM kasvaa käyttöprosentteina.

Maailma, jossa ihmiset eivät käytä x86-ohjelmia, on maailma, joka ei ole sen arvoinen Intelille ja AMD: lle, joten prosessori heidän puolestaan, joka pystyy ajamaan molempia ympäristöjä, ei olisi heidän ihanteellinen

X86: n ja ARM: n käyttöönotto yhdessä järjestelmässä

tehdä prosessori

Onko meillä esimerkki tästä? Kyllä, meillä on yksi, joka on kymmenissä miljoonissa kodeissa PlayStation 4, konsoli, jonka pääprosessori on x86-pohjainen AMD SoC, mutta jolla on sitten toinen prosessori, jossa on ARM-prosessori. Tämä prosessori aktivoidaan vain, kun konsoli on valmiustilassa, sillä on käyttöjärjestelmä rinnakkain ja sillä on oma RAM muisti.

Yksinkertaisin idea yhdistää molemmat maailmat on luoda tietokone, joka aktivoi yhden tai toisen SoC: n aina vaaditun kulutustason mukaan, järjestelmä aktivoituu tavalla tai toisella, mutta tämä tarkoittaa, että kaksi järjestelmää on läsnä sama tietokone ja suunnitella koko virranjakojärjestelmä kahdelle järjestelmälle, mikä ei ole pelottava tehtävä.

Toinen ongelma johtuisi järjestelmän I / O-laitteiden käytöstä, kaikkien niiden pitäisi olla käytettävissä kummankin ISA: n prosessoreille, joten joko oheislaitteita käyttävä laitteisto kopioidaan tai luodaan yhteinen elementti. , joka on ristiriidassa eri tavoilla, joilla kukin prosessorityyppi puhuu heille.

Kaksi ISA: ta käynnissä samanaikaisesti yhdellä SoC: lla, onko mahdollista?

ARM x86

Jos on jotain, joka luonnehtii SoC: itä, ei vain se, että kaikki komponentit ovat samalla sirulla, että niillä kaikilla on sama muistin käyttömahdollisuus, mutta mitä tapahtuu, kun kaksi prosessoria eivät ymmärrä samaa kieltä? No, tämä ei ole ongelma, koska SoC: n GPU: illa on eri tapa kuin CPU: lla binäärien lukemiseen, tarvitsee vain merkitä muistiin osoite, mikä osa on ARM: lle ja mikä osa x86: lle.

Kuulostaa helpolta, eikö niin? No ei, syy on, että x86 on Little Endian, mikä tarkoittaa, että se kulkee muistin läpi pienimmästä muistiosoitteesta korkeimpaan, ARM on Bi-Endian, joten ohjelmat voivat aloittaa molemmista päistä ja mennä ylös tai alas tapauksesta riippuen . Periaatteessa päätepisteen liittäminen kuhunkin ISA: han olisi helppoa, mutta Little Endianissa toimii ARM-käyttöjärjestelmiä.

PCB-reititys

Toinen ongelma on se, että RAM on suunniteltu palvelemaan prosessoria samanaikaisesti, joten jos meillä on kaksi prosessoria samanaikaisesti, yksi sisältäisi kiistoja toisen suhteen päästäessään muistiin, joten molempiin ISA: hin suunnitellut sovellukset ei suoriteta samalla vaivalla, puhumattakaan siitä, että molempien välillä SoC: n kesken jaetut resurssit tekisivät niin.

Niin. Kuinka a GPU voi jakaa tilaa CPU: n kanssa sujuvasti? No, siitä yksinkertaisesta tosiasiasta, että vaikka grafiikkasuoritimia, vaikka ne manipuloivatkin tietoja ja suorittavat ohjelmia, ei ole suunniteltu käyttämään käyttöjärjestelmää, ja täysin skitsofreenisen käyttöjärjestelmän olemassaolo, joka voidaan ymmärtää kahdella arkkitehtuurilla samanaikaisesti, on mahdotonta. Jos jokaisella on oma tapansa osoittaa muistia ja käyttää oheislaitteita.