x86 și ARM: pot lucra pe un computer în același timp?

Dispozitivele PostPC au trebuit să înlocuiască computerele, ceea ce se spunea acum câțiva ani. La sfarsit? Lucrăm cu dispozitive care vorbesc diferite limbi și, în unele cazuri, ne obligă să trecem între diferite dispozitive în orice moment. Dar odată cu sosirea viitoare a ARM-Computerele bazate ne întrebăm dacă vom vedea procesoare mixte cu x86.

Pe de o parte avem computerele ale căror programe sunt compilate pentru setul de registre și instrucțiuni x86, pe de altă parte avem așa-numitele dispozitive PostPC, ale căror aplicații vorbesc în ARM. Dar, în ultima vreme, proiectanții de procesoare pentru sistemele PostPC au arătat că vor să facă saltul la PC, nu la x86, ci să aibă PC-uri bazate pe ARM.

x86 și ARM

Acest lucru a ajuns să facă în cele din urmă să existe două piețe diferite, fiecare vorbind limba sa și un număr nesfârșit de aplicații incompatibile cu un alt sistem. Scenariul ideal? Având un computer cu capacitatea de a rula programele și sistemele pe ambele părți, atât pentru ARM, cât și pentru x86.

Dar este posibil acest lucru? Vom încerca să explicăm problemele cu care ar trebui să se confrunte arhitecții atunci când proiectează atât un sistem hibrid, cât și un SoC hibrid, precum și motivul pentru care Intel și AMD nu și-au lansat procesorul mixt.

AMD și Intel nu sunt interesați de un procesor mixt între ARM și x86

Intel-AMD-ARM

Prima problemă este că licența x86 este licențiată doar de Intel și AMD, astfel încât aceste două companii sunt singurele capabile să facă un Procesor compatibil cu binarele x86. Deci, în primul rând, trebuie să ne gândim puțin la ce s-ar întâmpla dacă aceste companii ar crea un procesor capabil să execute programele proiectate pentru ARM.

Trebuie să avem în vedere că ar fi imposibil să rulăm mediul pe x86 și pe ARM în același timp, astfel încât majoritatea dezvoltatorilor știind că PC-urile cu x86 ar putea rula și codul ARM nu vor deranja, încetul cu încetul, codul x86 ar deveni învechit și ARM ar crește în procente de utilizare.

O lume în care oamenii nu folosesc programe x86 este o lume care nu merită pentru Intel și AMD, așa că un procesor care poate rula ambele medii nu ar fi idealul lor

Implementarea x86 și ARM pe un singur sistem

render procesador

Avem un exemplu în acest sens? Da, avem unul numit în zeci de milioane de case PlayStation 4, o consolă al cărei procesor principal este un SoC AMD bazat pe x86, dar are apoi un al doilea procesor cu un procesor ARM. Acest procesor este activat numai atunci când consola este în modul stand-by, rulează un sistem de operare în paralel și are propriul său sistem RAM memorie.

Cea mai simplă idee de a unifica ambele lumi este crearea unui computer care, în funcție de nivelul de consum necesar în orice moment, activează un SoC sau altul, sistemul este activat într-un fel sau altul, dar asta înseamnă că două sisteme sunt prezente același computer și proiectarea întregului sistem de distribuție a energiei pentru cele două sisteme, ceea ce nu este o sarcină descurajantă.

Cealaltă problemă ar veni în utilizarea dispozitivelor I / O ale sistemului, toate acestea ar trebui să fie disponibile pentru procesoarele ambelor ISA, astfel încât fie hardware-ul care accesează perifericele este duplicat, fie este creat un element comun. , care intră în conflict cu diferitele moduri în care fiecare tip de procesor vorbește cu ei.

Două ISA care rulează în același timp pe un singur SoC, este posibil?

ARM x86

Dacă există ceva care caracterizează SoC-urile, nu numai că toate componentele sunt pe același cip, ci că toate au același acces la memorie, dar ce se întâmplă când doi procesoare nu înțeleg același limbaj? Ei bine, asta nu este o problemă, deoarece SoC-urile au în GPU-urile lor un mod diferit de CPU pentru a citi binare, tot ce este necesar este să marcați în memorie adresarea carei părți este pentru ARM și care parte este pentru x86.

Sună ușor, nu-i așa? Ei bine, nu, motivul este că x86 este Little Endian, ceea ce înseamnă că trece prin memorie de la cea mai mică adresă de memorie la cea mai mare, ARM este Bi-Endian, astfel încât programele pot începe de la ambele capete și pot merge în sus sau în jos, în funcție de caz . În principiu, ar fi ușor să asociați un punct final fiecărui ISA, dar există sisteme de operare pentru ARM care funcționează în Little Endian.

Rutare PCB

Cealaltă problemă este faptul că memoria RAM este concepută pentru a deservi un procesor în același timp, deci dacă avem două procesoare care accesează în același timp, unul ar conține dispută față de celălalt în accesarea memoriei, astfel încât aplicațiile proiectate pentru ambele ISA ar fi să nu ruleze cu aceeași ușurință, fără a menționa că resursele partajate între ambii în cadrul SoC ar face și acest lucru.

Asa de. Cum se face că a GPU pot partaja spațiu cu un procesor fără probleme? Ei bine, pentru simplul fapt că GPU-urile, deși manipulează date și rulează programe, nu sunt concepute pentru a rula un sistem de operare, iar existența unui sistem de operare complet schizofrenic care poate fi înțeles cu două arhitecturi în același timp este imposibilă. Unde fiecare are propriul său mod de a adresa memoria și de a accesa perifericele.