x86 Real Mode – zeul compatibilității retro

May 3, 2020

Dacă ar exista un zeu al retro-compatibilității, acesta ar purta denumirea de x86. De ce? Pentru că procesoarele care suporta arhitectura x86, inclusiv modele de ultimă generație x86-64 precum Ryzen 9 cu 12/16 core-uri, suportă modul real de operare. În acest mod memoria maxima adresabilă este de 1MB, iar software-ul are acces direct către fiecare adresă de memorie, inclusiv adrese I/O și periferice. Modul real se trage din arhitectura primelor procesoare x86 (8086, 8088, și 80186) acesta fiind și singurul mod în care acestea operau.

Windows 1.0 pe Ryzen 3900X?

Pentru că procesoarele x86 moderne suportă acest mod, putem rula software scris în anii ’80 direct pe hardware de ultimă generație. De exemplu, pe un procesor AMD Ryzen 3900x cu 32GB DDR4 și o placă video nVidia RTX 2070 Super – am instalat DOS 5 pe un SSD, de unde am pornit instalarea Windows 1.01 – software ce datează din anul de grație 1985. Singura problema de incompatibilitate a fost driverul video. În 1984 a fost lansat standardul EGA (Enhanced Graphics Adapter) iar în 1987 standardul VGA (Video Graphics Array) care a rămas printre noi și-n ziua de astăzi. Practic toate PC-urile din 1990 și până astăzi ofera suport pt acest standard. Cum Windows 1.0 a fost lansat in 1985, nu știa decât de standardul EGA și deși un adaptor VGA e compatibil și cu standardul EGA, RTX-ul pur și simplu n-a vrut să meargă în Windows 1.0 în mod EGA. Poți să-l învinovățești? Problema s-a rezolvat cu un driver VGA adițional și, minune, Windows-ul a pornit. Cu o placa video mai veche ar fi mers și modul EGA.

De ce a fost menținut pe post modul real?

La începutul anilor ’80, 1 megabyte de memorie era considerată o cantitate relativ mare. La o adică, un PC IBM 5150  suporta intre 64K si maxim 256K RAM de memorie on board, la care se mai puteau adăuga până la 640K prin intermediul unor plăci de extensie – nici nu se putea atinge limita de 1MB oferită de modul real.
Totuși, limita de 1MB de memorie RAM  s-a dovedit o problemă majoră mult mai rapid decât s-a anticipat. Problema a fost rezolvată de Intel prin arhitectura 286 care putea accesa până la 16MB RAM, fiind introdus și un nou mod de operare denumit „protected mode”.  Acest nou mod a venit la pachet cu funcții avansate însă era necesar ca sistemul de operare să fie special scris pentru noua arhitectură.  Ce te faci însă cu software-ul scris specific pentru modul real? Dintr-o dată nu-l poți folosi pe un PC mai nou? Nu, nici vorbă. Unul din conceptele de bază ale arhitecturii x86 este acela de „backward compatibility”. Această compatibilitate retro înseamnă că software-ul mai vechi trebuie să să ruleze în mod nativ pe hardware-ul mai nou, ceea ce s-a și întâmplat. Pentru a realiza acest deziderat, procesoarele 286 au fost concepute să pornească mai întâi în modul real și modul protejat să fie activat la cerere. Aceeași filosofie s-a aplicat și mult mai avansatele procesoare pe 32bit -386 introduse în 1985. Acestea puteau accesa până la 4GB memorie, puteau folosi și memorie virtuală dar în același timp erau perfect compatibile cu software-ul scris pentru modul real. Să nu uităm că MS-DOS funcționează în modul real motiv pentru care putem rula diverse versiuni de DOS și pe cele mai noi procesoare.

Cât costa un PC IBM 5150 în 1981?

O nimica toată, doar vreo 4300 de dolari în banii de astăzi…

IBM PC 5150 1981

Apple? Think different.

Cum stă Apple la retro-compatibilitate? Teribil.  Nici nu se pune problema să luăm un software scris pentru un Macintosh scris în anii ’80 și să-l rulăm în mod direct pe hardware de ultimă generație. Apple a folosit inițial procesoare Motorola, din 1994 până în 2006 a adoptat procesoare PowerPC de la IBM, apoi a trecut la arhitectura x86 din 2006 în prezent. Bineînțeles, aceste generații sunt incompatibile între ele.

Comentarii

Nelamuriri? Intrebari?

Intreaba sau cauta raspunsul la sectiunea de intrebari si raspunsuri.