Acasă / Diverse / Ce este RAM ECC? RAM tamponată - ce este? Unități funcționale secvențiale. Registers and Register Memory Register Memory

Ce este RAM ECC? RAM tamponată - ce este? Unități funcționale secvențiale. Registers and Register Memory Register Memory

Toată lumea știe că dispozitivele de calcul moderne au Berbec, unde informațiile sunt stocate numai în timpul funcționării. RAM este realizată sub formă de module cu microcircuite (cipuri) având un set de celule pentru stocarea informațiilor pe biți. Fiecare celulă de memorie este concepută pentru a stoca zero sau unu. 8 astfel de celule stochează 8 biți (acesta este deja 1 octet). Astfel de cipuri sunt realizate pe bază de semiconductori. Dar implementarea modulelor și a PC-ului are o serie de diferențe serioase, pe care le vom lua în considerare în acest articol.

Memorie de paritate.

Într-un stadiu incipient al dezvoltării tehnologiei informatice, tehnologia de producere a elementelor semiconductoare nu era încă foarte bine dezvoltată. Prin urmare, a existat o posibilitate de pierdere a informațiilor la scrierea în orice celulă de memorie: a fost scrisă una, dar nu a fost înregistrată (zero a rămas). Pentru a controla cumva procesul de scriere în memorie, a fost inventată o tehnologie simplă de verificare a datelor.

Înainte de a scrie un octet (8 biți), a fost calculată suma tuturor biților din acest octet. Dar nu întreaga sumă de control a fost reținută (pentru a economisi memorie), ci doar ultimul său bit, a cărui valoare (zero sau unu) a fost reținută într-un loc special desemnat pentru aceasta. Valoarea acestui bit (0 sau 1) depindea dacă suma biților a fost pară sau impară atunci când a fost adăugată. Prin urmare, acest bit a devenit cunoscut sub numele de bit de paritate.

După scrierea octetului original în celulele de memorie, a fost calculată suma biților unui astfel de octet stocat, iar paritatea acestei sume a fost comparată cu cea anterioară (a cărei valoare a fost stocată în bitul de paritate). Dacă paritățile sumelor de control se potriveau, atunci sa considerat că scrierea în memorie a avut succes. Și dacă nu se potriveau, atunci a fost generat un mesaj de eroare. Această tehnologie se numește control de paritate.

Memorie fără paritate.

De-a lungul timpului, au început să apară microcircuite mai fiabile. Probabilitatea de erori în ele a devenit mai mică. În același timp, s-a înregistrat o reducere a costului componentelor electronice. Producția și vânzările de computere au devenit masive. Pentru unii utilizatori, erorile în funcționarea computerelor nu au fost critice. Prin urmare, pe piață au început să fie produse modele care foloseau memorie fără paritate. Scăparea de al nouălea bit „în plus” (pentru fiecare octet) și de costurile „excesive” de calculare a sumelor de control a făcut posibilă reducerea oarecum a costurilor computerelor și să le facă accesibile maselor de consumatori. Astfel de computere au devenit foarte populare printre sistemele desktop (desktop).

Cu toate acestea, în anumite industrii, sisteme de importanță militară-apărare și sectorul bancar, inadmisibilitatea erorilor în sistemele de calcul rămâne una dintre cele mai importante sarcini.

Memorie cu control și corectare a erorilor.

Tehnologia de control al parității nu este perfectă. Nu poate detecta, de exemplu, „dispariția” a 2 biți în același timp (paritatea în acest caz nu se modifică). Prin urmare, s-a decis ca fiecare bit de date scris în memorie să fie inclus nu într-o singură sumă de control, ci în mai multe. Cu un astfel de sistem de control, a devenit posibilă detectarea simultană a mai multor erori, adresele acestora și, în plus, corectarea acestor erori. Această tehnologie a fost numită Cod de corectare a erorilor (ECC), deoarece a fost calculat un cod care permitea corectarea erorilor.

Desigur, sunt necesare registre suplimentare pentru a stoca sumele de control, ceea ce face ca astfel de module de memorie să fie mai scumpe, dar, în general, sistemele bazate pe memorie ECC sunt mai tolerante la erori. Astfel de module de memorie sunt cele mai utilizate pe scară largă în sistemele server.

Memoria cu paritate și tehnologia ECC poate fi utilizată atât în ​​sistemele server, cât și în cele desktop. În primul caz, acest lucru este justificat de importanța sarcinilor care sunt rezolvate (unde costul celei mai mici erori este foarte mare), iar în al doilea caz nu este întotdeauna recomandabil (din punct de vedere economic: până la urmă, pentru a folosi module cu control al erorilor, trebuie să aveți o placă de bază mai scumpă care să accepte această tehnologie, altfel controlul erorilor pur și simplu nu va funcționa).

memorie tampon.

În sistemele de calcul, controlul scrierii / citirii în și din memorie este efectuat de un controler de memorie special. Acest controler trebuie să aibă acces la toate celulele de memorie și să asigure transferul de informații din magistrală în memorie și invers. Sistemele desktop folosesc adesea procesoare cu un controler de memorie integrat. Unele dezavantaje ale acestei implementări sunt următoarele:

Există un singur controler, dar multe celule de memorie trebuie controlate - există o limită a numărului de bănci de memorie servite simultan, menținând în același timp performanța ridicată;

Pe o magistrală de date de la procesor sau alte componente ale computerului, este necesar să se transfere atât comenzile de control, cât și datele către toate modulele de memorie utilizate (sarcina pe magistrală crește).

Pentru a îmbunătăți situația, s-a decis implementarea unei părți din funcțiile controlerului în fiecare modul de memorie. Pentru a face acest lucru, în modulul de memorie este integrat un cip special, care acționează ca un buffer, care primește comenzi de la procesorul central pentru a controla și a seta adrese (în acest caz, fluxul de date către memorie merge de-a lungul magistralei paralel cu flux de comandă). Așa s-a născut memoria tamponată.

Mai târziu, funcțiile de corectare a erorilor (ECC) au început să fie implementate în acest buffer și, de asemenea, a devenit posibilă creșterea memoriei fără încărcare suplimentară pe magistrala de date. Chipurile suplimentare pentru implementarea bufferului au devenit cunoscute sub numele de registre, iar memoria însăși a devenit cunoscută ca memorie înregistrată.

De-a lungul timpului, au apărut și module de memorie complet tamponate (FB - fully buffered), în bufferul (registrul) cărora nu numai semnalele de control, ci și datele au început să fie transferate secvenţial într-un singur flux. Când se utilizează un buffer intermediar, există o oarecare încetinire a funcționării memoriei, deoarece este necesar un ciclu intermediar pentru a scrie în tampon.

O astfel de memorie este mult mai scumpă decât memoria neînregistrată din cauza prezenței unui cip de registru suplimentar și a utilizării tehnologiilor complexe. Dar, din cauza ergonomiei sale, a posibilității de a crește volumul, precum și a controlului erorilor, este utilizat pe scară largă în sistemele de server, unde lucrul stabil și fără erori cu cantități mari de date este foarte important.

Probleme de compatibilitate.

Modulele de memorie tampon în primele etape ale dezvoltării lor au fost folosite atât în ​​sisteme desktop, cât și în server, dar apariția memoriei înregistrate a eliminat posibilitatea utilizării acesteia într-un PC.

În sistemele desktop, utilizarea memoriei înregistrate este nepractică (cost excesiv) și adesea imposibilă, deoarece majoritatea plăcilor de bază utilizate în desktop-uri nu acceptă memoria înregistrată. Plăcile de bază utilizate în sistemele moderne de server, dimpotrivă, sunt proiectate să funcționeze numai cu memorie înregistrată, deoarece creșterea capacității (fără a schimba platforma) și capacitatea de a controla erorile sunt factori mai importanți pentru servere decât costul.

Foarte des, atunci când alegem componente, întâlnim diverși termeni și concepte de neînțeles. Atunci când alegeți RAM, acesta poate fi DDR, DDR2, DDR3, DDR4, RDRAM, RIMM etc. Dacă totul este mai mult sau mai puțin clar cu principalele tipuri de RAM și suportul pentru fiecare tip este indicat în descrierea plăcii de bază, atunci un astfel de parametru precum ECC ridică câteva întrebări pentru mulți. Ce este memoria ECC? Este posibil să utilizați RAM ECC pe un computer de acasă și care este principala diferență dintre RAM ECC și RAM non-ECC?

Ce este memoria ECC?

Acesta este un tip special de RAM cu hardware de corectare a erorilor încorporat. Astfel de module de memorie au fost dezvoltate special pentru servere, unde cerințele pentru corectitudinea datelor și fiabilitatea procesării lor sunt mult mai mari decât pe computerele personale.

ECC-Ram recunoaște automat modificările spontane ale datelor din blocurile de stocare, adică erorile care au apărut. Obișnuită - memoria desktop fără suport pentru mecanisme de corecție se numește non-ECC.

De ce este capabilă memoria ECC și cum funcționează?

Memoria de corectare a erorilor poate detecta și corecta 1 bit de date modificate în fiecare cuvânt al mașinii. Ce înseamnă? Dacă datele dintre scriere și citire au fost modificate dintr-un motiv oarecare (adică a apărut o eroare), atunci RAM-ul ECC va corecta valoarea la cea corectă. O astfel de funcționalitate necesită suport din partea controlerului RAM. Acest suport poate fi organizat de chipsetul plăcii de bază, controlerul RAM încorporat în procesoarele moderne.

Algoritmul de corectare a erorilor se bazează pe codul Hamming, dar alți algoritmi sunt utilizați pentru a corecta mai mult de o eroare. În practică, se folosesc module de memorie, unde la fiecare 8 cipuri de memorie se mai adaugă un cip care stochează coduri ECC (8 biți pentru fiecare 64 de biți ai memoriei principale).

De ce este distorsionată valoarea din celulele memoriei RAM?

Una dintre principalele cauze ale distorsiunii datelor sunt razele cosmice. Deși suntem pe Pământ sub protecția atmosferei, razele cosmice poartă cu ele câteva particule elementare care pot afecta electronica, inclusiv memoria computerului. Sub acțiunea energiei acestor particule, este posibilă o schimbare a stării celulei de memorie, ceea ce duce la distorsiuni și erori ale datelor. Interesant este că expunerea la razele cosmice crește odată cu altitudinea, astfel încât sistemele informatice de mare altitudine necesită o protecție mai bună.

Cum funcționează memoria ECC

Unul dintre mecanismele de control al erorilor din RAM este utilizarea tehnologiei de paritate, care vă permite să remediați faptul unei erori în date, dar nu vă permite să corectați datele.

Codul Hamming este folosit pentru corectarea ECC. ECC protejează sistemele computerizate de operarea incorectă din cauza coruperii memoriei și reduce probabilitatea unei defecțiuni critice a sistemului. Memoria cu suport ECC este cu 2-3% mai lentă decât memoria non-ECC, în funcție de aplicație.

Motive pentru a utiliza memoria ECC

Nu există niciun motiv obiectiv pentru a utiliza memoria RAM activată ECC în computerele desktop. Deoarece probabilitatea de apariție a erorilor de date este extrem de mică, în scenariile normale de utilizare a computerului, este extrem de puțin probabil ca o eroare să provoace probleme sau blocări în computer. Cel mai rău scenariu este aspectul ecran albastru Moartea BSOD. În plus, utilizarea RAM-ului ECC este îngreunată de faptul că procesoarele desktop și plăci de bază majoritatea nu suportă acest tip de RAM.

Utilizarea RAM cu corectarea erorilor ECC este relevantă pentru server și segmentul corporativ, unde cerințele pentru toleranța la erori și fiabilitatea sunt foarte mari, iar corectitudinea datelor poate afecta rezultatele calculelor și funcționarea sistemului în ansamblu. .

Ce mai faci? -

Poate fi distins Trei Principalele tipuri de memorie utilizate în microcontrolere:

● memorie programe, care este o memorie numai pentru citire concepută pentru a stoca codul programului și constantele. Această memorie nu își modifică conținutul în timpul execuției programului;

● memorie date, conceput pentru a stoca variabile (rezultate) în timpul execuției programului;

Inregistreaza-te memorie formată din registre interne ale microcontrolerului. Luați în considerare caracteristicile fiecăruia dintre aceste tipuri de memorie.

Memoria programului.

Necesitatea unei astfel de memorie se datorează faptului că microcontrolerul nu conține astfel de dispozitive de memorie precum un hard disk în computerul de pe care este încărcat programul executabil. Prin urmare, codul programului trebuie să fie permanent stocat în microcontroler.

Toate tipurile de memorie de program sunt la nevolatile memorie sau memorie doar pentru citire (ROM), al cărei conținut este reținut după ce microcontrolerul este oprit.

În timpul execuției, programul este citit din această memorie, iar unitatea de control (decodor de comandă) asigură decodificarea acestuia și efectuează operațiunile necesare. Conținutul memoriei programului nu poate fi modificat (reprogramat) în timpul execuției programului. Prin urmare, funcționalitatea microcontrolerului nu se poate schimba până când conținutul memoriei programului său nu este șters (dacă este posibil) și reprogramat (umplut cu instrucțiuni noi).

Trebuie remarcat faptul că bitness-ul microcontrolerului (8, 16 sau 32 biți) este indicat în conformitate cu bitness-ul magistralei sale de date.

Când se spune că un dispozitiv este de 8 biți, înseamnă numărul de biți de date pe care microcontrolerul este capabil să îi proceseze.

În arhitectura Harvard, instrucțiunile pot fi mai mari decât datele pentru a permite citirea unei întregi instrucțiuni într-un singur ciclu de ceas. De exemplu, microcontrolerele PIC, în funcție de model, folosesc comenzi cu o lățime de biți de 12, 14 sau 16 biți. ÎN Microcontrolere AVR Comanda are întotdeauna o lățime de 16 biți. Cu toate acestea, toate aceste microcontrolere au o magistrală de date pe 8 biți.

În dispozitivele cu arhitectură Princeton, lățimea datelor determină de obicei lățimea de biți (numărul de linii) a magistralei utilizate. În microcontrolerele Motorola 68HC05, o instrucțiune pe 24 de biți este situată în trei celule de memorie de program de 8 biți. Pentru a prelua complet o astfel de instrucțiune, este necesar să efectuați trei cicluri de citire ale acestei memorie.

Să aruncăm o privire la cinci tipuri memorie rezidentă non-volatilă sau Memorie numai în citire (ROM), utilizată pentru stocarea programelor.

Mască de memorie.

Mask ROM-urile (Mask-ROM sau pur și simplu ROM) sunt realizate în stadiul producției de microcontroler pentru un program complet depanat. Pe o fotomască de sticlă, atunci când utilizați programul, este creat un model de mască. Fotomasca rezultată cu o mască este folosită pentru a forma conexiuni între elementele care alcătuiesc memoria programului.

Primele ROM-uri cu masca au aparut la inceputul anilor 1960 si sunt inca folosite si astazi datorita acestora virtuti ca cost scăzut în producția de masă a produselor și fiabilitate ridicată a stocării programelor.

dezavantaje masca ROM - orice modificare a programului de aplicație este asociată cu costuri și timp semnificative pentru crearea unui nou set de măști foto și introducerea lor în producție.

Memorie programabilă o singură dată.

Această memorie (One-Time Program mable ROM - OTPROM) este programabilă de utilizator și conține inițial celule cu biți unici. Numai acele celule de memorie sunt supuse programării, al căror conținut trebuie să ia valoarea 0. Pentru a face acest lucru, se aplică celulei de memorie o secvență de impulsuri de tensiune crescută.

Nivelul de tensiune, numărul de impulsuri și parametrii de timp ai acestora trebuie să respecte cu strictețe specificațiile. După ce ați scris zero, este imposibil să restabiliți o singură valoare. Din acest motiv, se numește memorie programabil o singură dată ROM. Cu toate acestea, ar trebui să subliniem posibilitatea programare suplimentară celule (neatinse) cu biți unici.

Microcontrolerele cu ROM programabilă unică sunt utilizate în produsele fabricate în loturi mici.

Memorie reprogramabilă cu ștergere ultravioletă.

Celula de memorie Erasable Programmable ROM (EPROM) este un tranzistor LIPSMOS (Floating Gate Avalanche Injection). În starea inițială (înainte de scriere), la accesarea unei celule, se citește o unitate logică. Programarea memoriei se reduce la scrierea zerourilor logice în celulele corespunzătoare. ROM-urile EP sunt capabile de programare multiplă, a cărei tehnologie este similară cu tehnologia ROM programabilă unică.

Înainte de fiecare sesiune de programare, operatie de stergere pentru a restabili starea originală a celulelor de memorie. Pentru aceasta, în carcasa microcontrolerului este prevăzută o fereastră specială, care este iradiată cu raze ultraviolete. Numărul de sesiuni de ștergere/programare ROM este de 25-100 de ori, în funcție de tehnologia de programare (valori setate ale tensiunilor de alimentare, numărul și durata impulsurilor) și tehnologia de ștergere (gama de lungimi de undă a sursei de radiații ultraviolete).

Microcontrolerele cu memorie EPROM sunt folosite în prototipuri de aplicații dezvoltate datorită costului lor ridicat.

Pentru a reduce costurile, cipurile EPROM sunt închise într-o carcasă fără fereastră (versiune EPROM cu programare unică). Datorită reducerii costurilor, versiunile EPROM sunt adesea folosite în locul ROM-urilor programabile cu mască.

Memorie reprogramabilă cu ștergere electrică.

Ca element de memorie cu ștergere electrică (Electrically Erasable Pro grammable ROM - EEPROM sau E2 PROM), se folosește un tranzistor cu structură MNOS (Metal, Silicon Nitrude, Silicon Oxide, Semiconductor), datorită căruia ROM-ul are un cost relativ scăzut. (in raport cu EPROM) si permite un numar maxim de cicluri de stergere/programare 10 4 -10 6 . În plus, tehnologia de programare a memoriei EEPROM vă permite să implementați stergerea octetilorȘi programarea octetilor, fără a scoate controlerul de pe placă, ceea ce vă permite să îl actualizați periodic software.

În ciuda acestor avantaje, acest tip de memorie nu este utilizat pe scară largă pentru stocarea programelor din două motive:

● EEPROM-urile au o capacitate limitată;

● Au aparut ROM-uri de tip FLASH, care au caracteristici de utilizator similare, dar la un cost mai mic.

Memorie flash.

Memoria FLASH programabilă și ștergabilă electric (FLASH ROM) a fost creată ca o alternativă între ROM-urile ieftine de mare capacitate programabile unice și ROM-urile EEPROM scumpe. capacitate mică. Memoria FLASH (cum ar fi EEPROM) și-a păstrat capacitatea de a șterge și de a programa în mod repetat.

Tranzistorul de adresare al fiecărei celule a fost scos din circuitul ROM, ceea ce, pe de o parte, a făcut imposibilă programarea fiecărui bit de memorie separat, pe de altă parte, a făcut posibilă creșterea cantității de memorie. Prin urmare, memoria FLASH este ștearsă și programată pagini sau blocuri.

Astfel, din punct de vedere funcțional, memoria FLASH diferă puțin de EEPROM. Principala diferență este metoda de ștergere a informațiilor înregistrate: dacă în memoria EEPROM ștergerea se realizează separat pentru fiecare celulă, atunci în memoria FLASH - în blocuri întregi. În microcontrolerele cu memorie EEPROM, este necesară schimbarea secțiunilor individuale ale programului fără a fi nevoie să reprogramați întregul dispozitiv.

În prezent, MCU-urile cu FLASH încep să înlocuiască MCU-urile cu ROM programabil unic (și chiar mascat).

programare ROM.

Rețineți că memoria Mask ROM este programată numai din fabrică în timpul fabricării MK. Tipurile de memorie OTPROM și EPROM oferă dezvoltatorului capacități de programare folosind un programator și o sursă de tensiune de amplificare care sunt conectate la ieșirile corespunzătoare ale MCU.

EEPROM și memorie FLASH se referă la reprogramabile sau reprogramabil memorie. Puterea crescută necesară pentru ștergere/programare este creată în modulele de memorie EEPROM și FLASH ale controlerelor moderne folosind circuite de amplificare a tensiunii încorporate numite generatoare de pompa. Datorită implementării controlul programului Prin pornirea și oprirea generatorului pompei, a devenit posibilă, în principiu, programarea sau ștergerea celulelor de memorie FLASH și EEPROM ca parte a sistemului în curs de dezvoltare. Această tehnică de programare se numește programare în sistem(În programarea sistemului - ISP).

Nu necesită echipamente speciale (programatoare), ceea ce reduce costurile de programare. Microcontrolerele cu memorie ISP pot fi programate după ce sunt instalate pe placa produsului final.

Să luăm în considerare modul în care este implementată (și utilizată) posibilitatea de programare a memoriei EEPROM sub controlul unui program de aplicație. Dacă programul cu algoritmul de programare este stocat într-un modul de memorie separat cu o tensiune nominală de alimentare, iar memoria EEPROM este prevăzută cu generatoare de pompă, atunci se poate efectua programarea ISP a memoriei EEPROM. Această circumstanță face din memoria EEPROM un dispozitiv de stocare nevolatil ideal pentru stocarea setărilor utilizatorului care sunt modificate în timpul funcționării produsului. Un exemplu este un televizor modern, ale cărui setări de canal sunt salvate atunci când alimentarea este oprită.

Prin urmare, una dintre tendințele de îmbunătățire a memoriei rezidente a MK-urilor pe 8 biți a fost integrarea a două module de memorie nevolatile pe cipul MK: FLASH (sau OTP) - pentru stocarea programelor și EEPROM - pentru stocarea constantelor reprogramabile.

Luați în considerare tehnologia (re) Programare FLASH– memorie cu un generator de pompă încorporat controlat de un program de aplicație. În primul rând, observăm două fapte:

● dacă memoria EEPROM este încorporată în MK pentru stocarea constantelor reprogramabile, atunci programarea mai multor biți de memorie FLASH în timpul funcționării produsului finit nu are sens. Dacă este necesar, este mai bine să utilizați imediat modul de reprogramare;

● Nu ar trebui să stocați programul de programare cu memorie FLASH în memoria FLASH în sine, deoarece trecerea la modul de programare va face imposibilă citirea în continuare. Programul de programare trebuie să fie amplasat într-un alt modul de memorie.

Pentru a implementa tehnologia de programare în sistem, este selectat unul dintre porturile seriale MC, care este deservit de un program de monitorizare a comunicațiilor, situat în masca rezidentă ROM MK. Prin portul serial Calculator personalîncarcă programul în RAM programareȘi aplicat program, care este apoi stocat în memoria FLASH. Deoarece RAM rezidentă a MK are o cantitate mică, programul de aplicație este încărcat în blocuri (porțiuni) separate. Dacă în MCU este instalat un modul de memorie de mască cu un program de programare, în RAM este încărcat doar programul de aplicație.

Microcontrolerele care implementează tehnologia de programare în sistem includ adesea patru tip de memorie:

FLASH - memorie program, Mask ROM - memorie monitor de comunicare, EEPROM - memorie pentru stocarea constantelor variabile și RAM de date intermediare.

Tehnologia de programare în sistem este acum din ce în ce mai folosită pentru a introduce programe de aplicație în microcontrolere situate pe placa produsului final. A ei demnitate- lipsa unui programator și fiabilitatea ridicată a programării, datorită stabilității modurilor interne specificate ale MC.

Ca exemplu, prezentăm indicatorii memoriei FLASH rezidente a familiei MC HC08 de la Motorola:

● număr garantat de cicluri de ștergere/programare - 10 5 ;

● Timp de stocare garantat a informatiilor inregistrate - 10 ani, care este practic ciclul de viata al produsului; Modulele de memorie FLASH funcționează și sunt programate la tensiunea de alimentare MK de la 1,8 la 2,7 V;

● Timpul de programare echivalent pentru 1 octet de memorie este de 60 µs.

Memoria de date.

Folosit ca memorie rezidentă de date static Memoria cu acces aleatoriu (RAM), care vă permite să reduceți frecvența ceasului la valori arbitrar mici. Conținutul celulelor RAM (spre deosebire de memoria dinamică) este stocat la frecvența zero. O altă caracteristică a RAM statică este capacitatea de a reduce tensiunea de alimentare la un anumit nivel minim admisibil, la care programul de control al microcontrolerului nu este executat, dar conținutul din RAM este salvat.

Nivelul de stocare are o valoare de ordinul unui volt, ceea ce permite, dacă este necesar, transferul MK-ului la alimentare de la o sursă autonomă (baterie sau acumulator) pentru salvarea datelor. Unele MK (de exemplu, DS5000 de la Dallas Semiconductor) au o sursă de alimentare autonomă în carcasă, care garantează păstrarea datelor în RAM timp de 10 ani.

O trăsătură caracteristică a microcontrolerelor este cantitatea relativ mică (sute de octeți) de memorie cu acces aleatoriu (RAM) utilizată pentru stocarea variabilelor. Acest lucru poate fi explicat prin mai mulți factori:

● eforturi pentru simplificarea hardware-ului MC;

● utilizarea anumitor reguli la scrierea programelor care vizează reducerea cantității de memorie RAM (de exemplu, constantele nu sunt stocate ca variabile);

● distribuirea resurselor de memorie în așa fel încât în ​​loc de a plasa date în RAM, utilizarea la maximum a hardware-ului (temporizatoare, registre index etc.);

● orientarea programelor de aplicație pentru a funcționa fără utilizarea unor matrice mari de date.

Caracteristici de stivă.

În microcontrolere, o parte a memoriei RAM, numită grămadă.În timpul acestor operațiuni, conținutul contorului de programe și registrele principale (acumulator, registru de stare, index și alte registre) sunt salvate și restaurate la întoarcerea la programul principal. Amintiți-vă că stiva funcționează conform principiului: ultimul intrat - primul ieşit(Last In, First Out-LIFO).

În arhitectura Princeton, RAM este folosită pentru a implementa multe funcții hardware, inclusiv funcții de stivă. În spațiul de adrese de memorie sunt alocate zone separate pentru comenzi, registre de uz general, registre de funcții speciale etc. Acest lucru reduce performanța controlerului, deoarece accesele la diferite zone de memorie nu pot fi efectuate simultan.

Microprocesoarele Harvard pot aborda memoria programului, memoria de date (inclusiv spațiul I/O) și stiva în paralel (simultan).

De exemplu, când este activată o instrucțiune de subrutină CALL, mai multe acțiuni sunt efectuate simultan.

În arhitectura Princeton, atunci când o instrucțiune CALL este executată, următoarea instrucțiune este preluată numai după ce conținutul contorului programului a fost împins în stivă.

Datorită capacității mici a RAM în microcontrolerele ambelor arhitecturi, pot apărea probleme la executarea programului:

● dacă se alocă o stivă separată, atunci după ce aceasta este completată, conținutul indicatorului stivei este schimbat ciclic, drept urmare indicatorul stivei începe să se refere la celula stivei umplută anterior. Prin urmare, după prea multe instrucțiuni CALL, adresa de retur greșită va fi pe stivă, care a fost scrisă în loc de adresa corectă;

● Dacă microprocesorul folosește o zonă de memorie comună pentru a găzdui datele și stiva, atunci suprascrisul stivei va suprascrie datele. Să luăm în considerare caracteristicile de salvare a conținutului registrelor pe stivă, din cauza lipsei de instrucțiuni de încărcare pe stivă (PUSH) și de ieșire din stivă (POP). În astfel de microcontrolere, în loc de instrucțiunile PUSH și POP, sunt utilizate două instrucțiuni și un registru index, care indică în mod explicit zona stivei. Secvența de instrucțiuni trebuie să fie astfel încât o întrerupere între prima și a doua instrucțiune să nu aibă ca rezultat pierderea datelor. Următoarea este o simulare a comenzilor PUSH și POP, ținând cont de cerința specificată.

APĂSAȚI ; Încărcați datele pe indexul de decrementare a stivei; Mutare la următoarea locație a stivei mutare [index], as; Depozitați conținutul acumulatorului pe stiva POP; Pop date din stack move as, ; Împingeți valoarea stivei în indicele de creștere a acumulatorului; Treceți la celula anterioară a stivei

Dacă programul este întrerupt după prima instrucțiune, conținutul stivei nu se va pierde după ce întreruperea este gestionată.

memorie de înregistrare.

Microcontrolerele (cum ar fi sistemele informatice) au multe registre care sunt folosite pentru management diverse noduri interne şi dispozitive externe. Acestea includ:

● registre miezul procesorului(baterie, registre de stare, registre de index);

● registre management(registre de control întrerupere, registre de control temporizator);

● registre de intrare/ieșire de date (registre de date și registre de control de intrare/ieșire paralele, seriale sau analogice).

După modul în care sunt plasate registrele în spațiul de adrese, putem distinge:

● microcontrolere, în care se află toate registrele și memoria de date unu spațiul de adrese, adică registrele sunt aliniate cu memoria de date. În acest caz, dispozitivele I/O sunt mapate la memorie;

● microcontrolere, în care dispozitive de intrare/ieșire separat din spațiul total de adrese din memorie. Principalul avantaj al metodei de plasare a registrelor I/O într-un spațiu de adrese separat este că simplifică schema de conectare a memoriei programului și a datelor la o magistrală comună. Un spațiu I/O separat oferă un avantaj suplimentar procesoarelor cu arhitectură Harvard, permițând citirea instrucțiunii în timp ce registrul I/O este accesat.

Modul în care sunt accesate registrele are un impact semnificativ asupra performanței acestora. La procesoarele cu arhitectură RISC, toate registrele (de multe ori acumulatorul) sunt localizate la adrese explicite, ceea ce oferă o mai mare flexibilitate în organizarea muncii procesorului.

Despre memoria externă.

În cazurile în care nu există suficientă memorie de program rezidentă și memorie de date pentru aplicațiile dezvoltate, la microcontroler este conectată memorie externă suplimentară. cunoscut Două modalitati principale:

● conexiune memorie externa folosind o interfață de magistrală (ca în sistemele cu microprocesor). Multe microcontrolere au hardware special pentru această conexiune;

● conectarea memoriei la dispozitivele de intrare-ieșire.În același timp, memoria este accesată prin aceste dispozitive instrumente software. Această metodă permite utilizarea dispozitivelor I/O simple fără a implementa interfețe complexe de magistrală. Alegerea metodei depinde de aplicația specifică.

Adnotare: Se are în vedere principiul funcționării registrelor ca elemente ale memoriei electronice.

Registrul este un IC cu un grad mediu de integrare, conceput pentru a memora și stoca un cuvânt pe mai mulți biți.

registru-zăvor

Protozoare Inregistreaza-te este o conexiune paralelă a mai multor declanșatori (Fig. 8.1, a). Registrul-blocare UGO este prezentat în fig. 8.1, b. Dacă Inregistreaza-te construit pe flip-flops, se numește Inregistreaza-te-"zăvor". De regulă, amplificatoarele și controalele tampon fac parte din registrul IC, de exemplu, așa cum se arată în Fig. 8.2, a. Iată o diagramă funcțională a unui 8 biți D- registru de blocare KR580IR82 cu trei stari de iesire. UGO-ul său este prezentat în Fig. 8.2, b.


Orez. 8.1. Registrul „latch” pe patru biți cu ieșiri directe: a - diagramă funcțională; b - UGO

stat terț(primele două sunt 0 logic și 1 logic) este starea ieșirilor IC, în care sunt deconectate atât de la sursa de alimentare, cât și de la punctul comun. Alte nume pentru acest stat sunt rezistență ridicată, stare de impedanță ridicată, stare Z[ , din. 61 - 63; , din. 68 - 70].

Acest lucru este realizat stat terț soluție de circuit special [ , p. 117 - 118] în partea de ieșire a elementelor logice, când tranzistoarele de ieșire ale elementelor logice sunt blocate și nu furnizează nici tensiunea de alimentare și nici potențialul de masă (nu 0 și nu 1) la ieșire.

Inregistreaza-te KR580IR82 este format din 8 blocuri funcționale (Fig. 8.2, a). Fiecare dintre ele include D-trigger-latch cu înregistrare pe marginea de fugă și o poartă puternică de ieșire în 3 stări. STB- intrare stroboscopică, - activare transmisie - un semnal care controlează a treia stare: dacă , atunci informațiile sunt transferate de la intrări la ieșirile corespunzătoare, dacă , toate ieșirile sunt transferate în a treia stare. Când și IS funcționează în modul bus shaper - informațiile de la intrări sunt transmise la ieșiri neschimbate.

Când aplicați pentru marginea de fugă există un „snap” al informațiilor transmise în declanșatoare, adică își amintește ce era în momentul transmiterii . Pa, tampon Inregistreaza-te va stoca aceste informații, indiferent de informațiile de pe D-intrari. La aplicarea unei margini de avans când sunt salvate, starea ieșirilor se va schimba în conformitate cu modificarea intrărilor corespunzătoare. Dacă , atunci toate amplificatoarele de ieșire sunt transferate în a treia stare. În acest caz, indiferent de starea intrărilor, toate ieșirile Inregistreaza-te transferat în statul terț.

Toate ieșirile registrului pot avea un nivel zero activ, care este afișat pe UGO sub formă de semnale inverse și desemnări de ieșire.

Există multe varietăți registre, de exemplu, registrele de deplasare [ , capitolul 8], în care declanșatoarele sunt interconectate în așa fel încât să transfere informații secvențial de la un declanșator la altul [ , pp. 109 - 122], dar aici ne vom concentra asupra registrului latch și aplicarea acestuia.

Înregistrați memoria

Memoria înregistrată - fișier de registru - este o memorie cu acces extrem de aleatoriu (SRAM) - un circuit de mai multe registre concepute pentru a stoca mai multe cuvinte multi-biți.

Pe fig. 8.3 prezintă un exemplu de implementare SOZU, constând din patru pe 8 biți registre(conexiunea RG2 și RG3 nu este afișată, se realizează în același mod). Dat SOZU are un volum de informații de 4x8 biți - 4 cuvinte de 8 biți sau 4 octeți. Aici DI - intrare de date- magistrală de date de intrare, Ieșire de date DO- magistrală de date de ieșire, WR- scrieți semnalul pe SRAM, RD- semnal pentru citirea informațiilor din SRAM, VSD - magistrală de date internă.

Fiecare Inregistreaza-te are o adresă din două cifre, care este alimentată la intrările decodorului. De exemplu, extrema stângă din Fig. 8.3 Inregistreaza-te RG1 are adresa , următorul - (nu este afișat în figură), următorul - (nu este afișat) și extrema dreaptă Inregistreaza-te RG4 are adresa .

Dacă există un semnal de scriere activ, decodorul, în conformitate cu codul adresei, emite către unul dintre registre semnal activ pe care informații din magistrala de date de intrare DI este scris la selectat Inregistreaza-te. Pe marginea de fugă, informațiile din aceasta Inregistreaza-te„snaps”.

Dacă, de exemplu, pe DI informațiile și adresa transmise Inregistreaza-te este egal cu , atunci semnalul activ la ieșirea „3” a decodorului va fi aplicat ca și registrului RG4. În acest moment, registrele rămase vor avea un nivel de semnal inactiv, prin urmare, informațiile din magistrala de date de intrare vor fi scrise pe RG4, iar informațiile înregistrate mai devreme vor fi stocate în registrele rămase.

Cu un semnal de citire activ, toate cele 8 multiplexere sunt activate (primul, al doilea și al optulea sunt prezentate în diagramă, restul sunt conectate în mod similar), deoarece un semnal activ este aplicat intrărilor lor de activare. In concordanta cu decodor de adrese, multiplexoarele comută informațiile din registrul selectat la magistrala de date de ieșire. De exemplu, adresa de înregistrare este . Apoi, pe toate multiplexoarele va fi, toți încep să selecteze informații în conformitate cu adresa. Prin urmare, pe magistrala de ieșire DO biți ai magistralei interne cu numerele 25 - de la primul multiplexer, 26 - de la al doilea, 27 - de la al treilea, 28 - de la al patrulea, 29 - de la al cincilea, 30 - de la al șaselea, 31 - de la al șaptelea și 32 - din al optulea multiplexer se va da. Astfel, informații care reprezintă o copie a conținutului Inregistreaza-te RG 4 cu adresa este transferat pe magistrala de date de ieșire DO - starea neschimbată a ieșirii multiplexorului.

Există două tipuri principale de memorie cu acces aleatoriu (RAM); sunt memorie tampon – sau memorie înregistrată – și memorie fără tampon. Memoria fără tampon este mai rapidă și adesea mult mai ieftină decât memoria tampon. Astfel, este un tip de modul care poate fi găsit în aproape toate computerele desktop și laptopuri de acasă. Memoria tamponată este mai scumpă decât cea fără tampon și este, de asemenea, mai lentă datorită modului în care gestionează stocarea și recuperarea datelor.
Memoria tamponată, totuși, este mult mai stabilă decât formele fără tampon, așa că este folosită în principal în computerele și serverele mainframe.

Memoria fără tampon este de departe cea mai comună formă de modul de memorie pentru computer găsită în utilizarea de zi cu zi. Aceste module de memorie sunt ieftine de fabricat în comparație cu modulele de memorie tampon, parțial datorită utilizării lor obișnuite în computerele de acasă și comerciale și, de asemenea, pentru că folosesc mai puțin hardware. Un modul de memorie fără tampon nu are hardware încorporat pentru a acționa ca un registru pentru instrucțiuni între cipul RAM și controlerul de memorie al computerului. Acest lucru are ca rezultat o performanță mai rapidă, dar crește riscul de pierdere a memoriei rezultat din natura aleatorie a plasării și regăsării informațiilor, în special în perioadele de activitate intensă.

Cel mai frecvent denumită memorie înregistrată este memoria tampon. Memoria fără tampon, destul de ciudat, și-a păstrat numele și nu a fost schimbată în memorie neînregistrată. Memoria tamponată diferă de tipul fără tampon prin faptul că are un registru hardware care stochează informații în cache pentru un ciclu al cipului de memorie. Deși această operațiune poate duce la un cip de memorie mai lent, oferă stabilitate suplimentară și reduce riscul erorilor de memorie.

În utilizarea generală a consumatorilor, diferența de viteză dintre cele două tipuri de module de memorie pare neglijabilă. În perioadele de schimb intens de informații, apare o latență, care se observă cu ajutorul registrului. Memoria tamponată este utilizată în mod obișnuit în computerele server și sistemele mainframe pentru a oferi stabilitate și protecție împotriva daunelor care pot apărea în modulele fără tampon atunci când sunt supuse unei utilizări intense în mod constant. Deși modulele tamponate sunt mai scumpe și, în general, funcționează mai lent, stabilitatea memoriei și securitatea datelor compensează cu mult acest lucru într-un mediu de producție.