A20 si memoria de un mega

Categorii: Programare

12-Mar-2014 11:11 - 921 vizionari

Prin anii 80 existau calculatoare IBM PC care functionau cu maxim un Mega de memorie RAM, folosind procesoare Intel 8086 si 8088.

Un Mega de memorie (un milion de blocuri de 8 biti) se poate accesa folosind o adresare de 20 de biti (A0 . . . A19), pentru ca 2 la puterea 20 = 220 = un milion.
20 de biti de adresa de memorie se obtineau din 16 biti indicator de program + 4 biti selector de segment.
Indicatorul de program (contorul de program) este pe 16 biti, pentru ca Intel 8086 si 8088 sunt procesoare pe 16 biti si instructiunile se executa in blocuri de 64k (16 biti).

In 1982 a aparut procesorul 80286 (sau 286 pe scurt) si putea adresa maxim 16 Mega de memorie RAM, folosind o magistrala de adresare memorie de 24 de biti, 224 = 16 milioane.

Dimensiunile memoriei sunt imense, pentru ca sunt pana la 16 milioane de instructiuni sau litere incarcate si folosite in memorie.
Au existat sisteme de operare care s-au descurcat excelent cu memorie de maxim 65536 (64k) si nu au avut nevoie de extensii de memorie.

Ca o comparatie, prin vremea aceea (anii 82-90) existau calculatoare Sinclair Spectrum (HC 85, CIP, CoBra, HC 90 – calculatoare facute in Romania) cu procesoare Z80 cu memorie maxim 65536 (64k) de instructiuni, dintre care 16384 (16k) erau rezervate sistemului de operare, iar restul de 48k erau dedicate programelor si aproximativ 95% erau jocuri.
Z80 este un procesor pe 8 biti si foloseste o adresare a memoriei pe 16 biti, fara posibilitatea de segmentare, total 64k RAM.
(Exista niste artificii combinate hard-soft prin care Z80 putea folosi 128k RAM.)
Primul limbaj de asamblare l-am invatat pe un calculator CoBra (Computer Brasov – I.T.C.I. Brasov) pe procesor Z80 (MMN 80 produs de Micro Electronica Bucuresti) si inca imi mai amintesc instructiunile specifice Z80.

Z80 folosea un singur bloc de 64k de memorie, dar 8086 si 8088 foloseau 16 blocuri de 64k, total 64x16 = 1 Mega de RAM.

Primele PC-uri compatibile IBM foloseau maxim 1M RAM, dar procesorul 286 a ridicat standardul la 16M RAM.

Dupa 8088 a aparut procesorul 80186, dar avea extensii incompatibile cu calculatoarele IBM PC.
80186 avea incluse pe cipul procesorului inca doua circuite integrate, unul pentru controlul accesului direct la memorie (DMA) si altul pentru controlul intreruperilor, dar adresa circuitelor era fixa si nu putea fi utilizata pe calculatoarele IBM PC.

Unele programe considerau ca nu au nevoie de mai mult de un Mega - Google bill gates about 1 mb memory.
Ca sa se pastreze compatibilitatea cu calculatoarele mai vechi, procesorul 286 pornea in modul standard (maxim 1M RAM) si folosea magistrala pe 20 de biti numai.
Tehnica de activare a adresarii memoriei pe mai mult de 20 de biti pe calculatoarele IBM PC s-a numit activarea A20.
Pana si cele mai noi calculatoare cu procesoare Intel® Core™ i7 si, probabil, i9 folosesc activarea A20.
S-a incercat inlocuirea sistemului IBM PC cu standardul PC2001 (google pc2001), renuntand la activarea A20, dar pana in 2011 sistemul inca nu a fost implementat, spune un articol de la elektronik-kompendium.de.

Calculatoarele cu procesoare 286 sau mai mult erau construite cu mai multa memorie si cu posibilitatea de activare A20 prin controlerul de tastatura.
Asadar, prin program, la pornirea sistemului de operare se verifica starea A20 si, daca nu era activata, se instruia controlerul de tastatura sa o activeze.
Unele calculatoare pastrau A20 dezactivata, se folosea A0 … A19, iar altele porneau cu A20 deja activata.
S-a folosit controlerul de tastatura pentru ca acesta avea iesiri nefolosite.
S-a considerat ca metoda de activare/dezactivare A20 prin controlerul de tastatura este lenta si s-au implementat si alte tehnici (alte porturi de comanda pe clone PS/2 sau non PS/2).
Se pare ca dezactivand A20 se iese din modul protejat si se intra in modul real de functionare al procesorului, dar nu cred ca este recomandat.

Activarea A20 este dificila si cel mai bine se face de catre BIOS, iar programatorul trebuie sa verifice daca activarea este cu succes si, daca nu, sa foloseasca alte metode.

De multe ori, recunosc sincer, am vazut mesaje privind activarea A20 si verificarea activarii ei atunci cand porneau programele, dar nu le-am dat atentie, pana de curand cand am inceput sa investighez in detaliu procesul de pornire al unui calculator: initializarea procesorului sau procesoarelor, detectarea si alocarea memoriei, detectarea perifericelor, incarcarea sistemului de operare din primul dispozitiv de stocare gasit potrivit, etc …

Procesorul 80386 poate adresa maxim 4 Giga de RAM, adica 232, pentru ca are magistrala de adresare memorie de 32 de biti.
Teoretic procesoarele pe 64 de biti pot adresa mult mai mult (16 milioane de tera = 16 exa) si aproximativ prin anul 2060, dupa legea lui Moore, o persoana fizica (nu armata, nu guvernul, nici alta institutie privata) va putea cumpara un calculator personal cu maximum de memorie suportat de procesor.
Procesoarele actuale pe 64 de biti au adresare de memorie pe 46 de biti (64 tera RAM), datorita limitarilor impuse de tabele de optimizare a accesului la memorie (memory cache) si isi vor atinge limitele, pentru publicul larg, prin anul 2032.

Estimarile de mai sus le-am facut considerand ca in anul 2003 mi-am cumparat un PC cu 64M RAM si in anul 2011 un PC cu 8G RAM.
Institutiile militare si guvernamentale sunt cu cel putin 15-20 ani inaintea publicului.
Calculatorul cu cea mai mare memorie, google biggest ram server sau biggest server in the world, se pare ca avea 2.5 Tera RAM in 2004, dar nu este accesibil publicului.
Nu am gasit ceva concret pe Internet datorita limitarii arhitecturii existente a magistralei de date (maxim 64 de biti) si a accesului concurent la memorie.
Datorita marimii prea mici a magistralei de date nu se pot construi calculatoare performante care sa justifice costurile si, la un moment dat, prea mult RAM incetineste calculatorul.

Mai multe detalii: Wikipedia A20 si OS Dever Tutorials – intrebari si raspunsuri si A20 o durere din trecut.

Alte componente pastrate pentru compatibilitatea cu IBM PC: cipul PIC, controlerul PS/2, cipul PIT.



Ultimele pagini: RSS

Alte adrese de Internet

Categorii

Istoric



Contorizari incepand cu 9 iunie 2014:
Flag Counter

Atentie: Continutul acestui server reprezinta ideile mele si acestea pot fi gresite.