2. Circuite logice 2.11. Memorii Copyright Paul GASNER
Random Access Memory RAM Toate circuitele secvenţiale depind de memorii un flip-flop poate stoca doar un bit de informaţie un registru poate stoca un cuvânt (pe 8, 16, 32 sau 64 bits) RAM permite stocarea unor cantităţi mult mai mari de memorie. Trebuie rezolvate următoarele probleme: interfaţarea cu memoria implementarea ierarhizarea cipurilor Copyright Paul GASNER 2
RAM capabilităţi În general, o memorie trebuie să fie minimum capabilă: să stocheze o valoare să permită citirea valorii stocate să permită rescrierea valorii stocate RAM trebuie să îndeplinească cerinţele de mai sus, dar având în vedere că stochează mai multe valori, deci se asociază o adresă fiecărei locaţii de memorie şi atunci se redefinesc cerinţele: RAM trebuie să fie capabilă: să stocheze mai multe cuvinte, câte unul la fiecare adresă să permită citirea cuvintelor stocate la orice adresă să permită rescrierea cuvintelor stocate, indiferent de adresă Copyright Paul GASNER 3
Organizarea RAM operaţii memorie 2 k x n k n ADRS DATA CS WR OUT n CS WR Operaţie 0 x nimic 1 0 citirea cuvântului selectat 1 1 scrierea cuvântului selectat CS (Chip Select) activează sau dezactivează RAM ADRS adresa (locaţia) de memorie scrisă sau citită WR selectează citirea sau scrierea la adresa aleasă citire WR=0 şi OUT este valoarea n-bit stocată la ADRS scriere WR=1 şi valoarea n-bit de la DATA este stocată în memorie Copyright Paul GASNER 4
Organizarea RAM capacitate O memorie 2 k x n prezintă: 2 k locaţii de memorie k linii pentru accesarea adresei cuvântul stocat la o adresă conţine n biţi k n memorie 2 k x n ADRS DATA CS WR OUT De exemplu, o memorie 2 24 x16 RAM conţine 2 24 =16M cuvinte, fiecare de lungime 16 bits RAM are nevoie de 24 linii de adresă capacitatea totală de stocare este 2 24 28 x16=2 biţi n Copyright Paul GASNER 5
Mărimi utilizate Prefix Baza 2 Baza 10 K Kilo 2 10 = 1,024 10 3 = 1,000 M Mega 2 20 = 1,048,576 10 6 = 1,000,000 G Giga 2 30 = 1,073,741,824 10 9 = 1,000,000,000 O memorie 2 24 x16=2 28 biţi = 2 24 bytes=32mb Un sistem care utilizează 32 biţi pentru adrese poate accesa aproximativ 4 miliarde de locaţii dacă o locaţie poate stoca un byte, atunci sistemul poate accesa 4GB RAM a nu se confunda RAM cu memoria virtuală de pe HDD swap Adresă 00000000 00000001 00000002 00000003.............................. FFFFFFFC FFFFFFFD FFFFFFFE FFFFFFFF Date Copyright Paul GASNER 6
Operaţia de citire Pentru a citi din memorie, circuitul de control (controller de memorie) trebuie să: activeze cipul prin CS=1 selecteze operaţia de citire WR=0 trimită adresa dorită pe magistrala de adrese ADRS citească conţinutul adresei specificate la ieşirea OUT Intrarea DATA nu este utilizată la citire memorie 2 k x n k n ADRS DATA CS WR OUT n Copyright Paul GASNER 7
Operaţia de scriere Pentru a citi din memorie, circuitul de control (controller de memorie) trebuie să: activeze cipul prin CS=1 selecteze operaţia de scriere WR=1 trimită adresa dorită pe magistrala de adrese ADRS trimită datele pentru stocare pe magistrala de date DATA Ieşirea OUT nu este utilizată la scriere memorie 2 k x n k n ADRS DATA CS WR OUT n Copyright Paul GASNER 8
Memoria statică Există mai multe căi de implementare hardware a RAM memoria statică utilizată în cache şi video (cu excepţia ultimelor generaţii) memoria dinamică Memoria statică este construită cu ajutorul latch-urilor (la nivel de bit) şi nu a flip-flop-urilor: un latch necesită de cel puţin 2 ori mai puţine componente decât un flip-flop (are nevoie de 2 porţi NAND sau NOR) cu cât sunt mai puţine componente, cu atât circuitul este mai rapid, fără distorsiuni sau alte pierderi, mai fiabil şi consumă mai puţină energie rămâne problema sincronizării Copyright Paul GASNER 9
Celula RAM 1 bit Intrarea ADRS nu e necesară doar un singur bit Citirea: dacă CS=1 şi WR=0, atunci C=0 şi latch-ul D îşi păstrează starea conţinutul latch-ului aparea la ieşirea OUT Scrierea: dacă CS=1 şi WR=0, atunci C=0 şi latch-ul D îşi păstrează starea conţinutul latch-ului apărea la ieşirea OUT Copyright Paul GASNER 10
Cip 4x1 RAM ADRS are 2 biţi Cuvintele conţin doar 1 bit, deci DATA şi OUT sunt pe 1 bit Selectarea celulei se face prin decodorul legat la porturile de activare CS pe baza adresei introduse Numai o singură celulă poate fi scrisă sau citită la un moment dat RAM 4 bit Copyright Paul GASNER 11
Conectarea ieşirilor Nu este recomandată conectarea ieşirilor între ele, deoarece valori diferite ale acestora conduc la conflicte (logice şi electrice) conflict Combinarea ieşirilor se realizează cu OR sau MUX dar aceasta soluţie presupune complicarea circuitului Copyright Paul GASNER 12
Buffer 3 stări EN IN OUT 0 x Deconectat 1 0 0 1 1 1 Ieşirea unui buffer 3 stări (three-state buffer) poate lua 3 valori, spre deosebire de porţile clasice Deconectat semnifică absenţa oricărui semnal la ieşire, astfel încât OUT poate fi conectat în siguranţă la un alt semnal Stare deconectat este o stare de impedanţă ridicată Copyright Paul GASNER 13
Conectarea bufferelor Se pot interconecta ieşirile bufferelor doar dacă la un moment dat numai unul dintre ele este activ dacă decodorul este dezactivat, atunci toate bufferele sunt dezactivate şi toate ieşirile vor fi deconectate când decodorul este activat, doar un singur buffer este activ şi valoarea de la intrarea sa va fi transmisă la OUT Copyright Paul GASNER 14
4x4 RAM Copyright Paul GASNER 15
64K x 8 RAM => 256K x 8 RAM 16 8 8 8 16 18 linii la adrese primii 2 biţi cei mai semnificativi fiind la decodor şi selectează celula de memorie ceilalţi 16 biţi merg la cipurile de 64K Cipurile 64K x 8 partajează intrările WR şi DATA 8 Copyright Paul GASNER 16
Domeniile de adrese 8 16 11 1111 1111 1111 1111 (0x3ffff)... 11 0000 0000 0000 0000 (0x30000) 10 1111 1111 1111 1111 (0x2ffff)... 10 0000 0000 0000 0000 (0x20000) 01 1111 1111 1111 1111 (0x1ffff)... 01 0000 0000 0000 0000 (0x10000) 8 00 1111 1111 1111 1111 (0x0ffff)... 00 0000 0000 0000 0000 (0x00000) Copyright Paul GASNER 17
64K x 8 RAM => 64K x 16 RAM Se pot stoca şi cuvinte mai lungi: cei mai semnificativi 8 biţi în cipul din stânga cei mai puţin semnificativi 8 biţi în cipul din dreapta 16 8 8 8 8 Copyright Paul GASNER 18
Memorii dinamice Memoriile dinamice folosesc condensatori pentru stocarea informaţiilor prezenţa sarcinii electrice semnifică 1 logic absenţa sarcinii electrice semnifică 0 logic Consensatorii necesită reîncărcare permanentă de unde numele de memorie dinamică DRAM Memoria dinamică are dimensiuni fizice mult mai mici decât memoria statică: stocarea unui bit necesită un condensator şi un tranzistor la memoria dinamică, pe când la cea statică sunt necesari 4+6 tranzistori Copyright Paul GASNER 19
SDRAM Synchronous DRAM SDRAM Cipurile de memorie sunt organizate în module şi conectate la CPU printr-o magistrală de 64 biţi (8 bytes) Viteza: PC66, PC100, PC133 aka 66MHz, 100MHz, 133MHz Lăţimea de bandă: PC100: 100MHz x 8bytes = 800MB/ s PC133: 133MHz x 8bytes = 1GB/s Tensiune de alimentare 3.3V Copyright Paul GASNER 20
DDR-RAM Double Data Rate RAM Transferul de date se face foarte asemănător ca la SDRAM, dar se folosesc ambele fronturi (pozitiv şi negativ) de la semnalul de ceas La un bus de 100-133MHz, memoria apare ca 200-266MHz PC1600 = DDR 200MHz: 200MHz x 8bytes = 1600MB/s PC2100 = DDR 266MHz: 266MHz x 8bytes = 2100MB/s PC3200 = DDR 400MHz: 400Mhz x 8bytes = 3200MB/s Tensiune de alimentare 2.5V Copyright Paul GASNER 21
RDRAM Rambus Dynamic RAM Utilizate Playstation2 şi primele PC cu Pentium4 Busul de date este de 16 biţi şi memoria funcţionează la 400MHz (ambele fronturi de ceas) Rata de transfer de 1.6GB/s Duble channel 3.2GB/s Tensiune de alimentare 2.5V Copyright Paul GASNER 22
dinamic versus static Memoria dinamică are dimensiuni foarte mici comparativ cu cea statică Dezavantaje majore DRAM: viteză mică (nu satisface necesarul procesorului) latenţă mare Pentru a îmbunătăţi viteza, procesoarele utilizează memorie statică internă cache cu rolul de memorie tampon Tip modul SD RAM, PC100 SD RAM, PC133 Rambus, PC800 Rambus, Dual PC800 DDR 266 (PC2100) DDR 333 (PC2700) DDR 400 (PC3200) DUAL DDR PC3200 DUAL DDR2-400 DUAL DDR2-533 transfer maxm 800 MB/sec 1064 MB/sec 1600 MB/sec 3200 MB/sec 2128 MB/sec 2664 MB/sec 3200 MB/sec 6400 MB/sec 8600 MB/sec 10600 MB/sec Procesor Lăţime Maximum address bus RAM 8088, 8086 20 1 MB 80286, 80386SX 24 16 MB 80386DX, 80486, Pentium, Pentium 32 4 GB MMX, K5, K6 etc. Pentium Pro, Pentium II, III Pentium 4 36 64 GB Copyright Paul GASNER 23
ROM Read Only Memory ROM este un tip special de memorie, al cărei conţinut nu se modifică (uzual) nu prezintă port de activare a scrierii WR ca la RAM stocarea datelor în ROM se efectuează cu unelte speciale Sunt utilizate pentru stocarea datelor permanente: BIOS în PC-uri sisteme de operare PDA, telefoane, console de jocuri etc tabele matematice pentru sisteme de calcul 2 k x n ROM k ADRS OUT n CS Copyright Paul GASNER 24
ROM. Funcţii ROM este un circuit combinaţional, nu secvenţial Poate fi privit ca un circuit combinaţional care are la intrare adresa locaţiei de memorie, iar la ieşire conţinutul locaţiei respective Tabela ROM prezintă conţinutul memoriei, adică datele stocate la fiecare adresă Tabela ROM este ca o tabelă de adevăr şi se poate construi un circuit combinaţional pe baza acesteia Adresa A 2 A 1 A 0 Data V 2 V 1 V 0 000 000 001 100 010 110 011 100 100 101 101 000 110 011 111 011 Copyright Paul GASNER 25
ROM cu decodoare Tabela de adevăr poate fi convertită în circuit clasic combinaţional cu decodoare X Y Z C S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 Poate fi privit ca o memorie care stochează suma şi bitul de depăşire conform tabelei de adevăr Copyright Paul GASNER 26
Arhitectura ROM Într-adevăr, ROM-urile se bazează pe implementarea cu decodoare a funcţiilor un ROM nescris (blank) este o colecţie de decodoare şi porţi OR conexiunile dintre intrările porţilor şi ieşirile decodoarelor sunt programabile A scrie sau programa un ROM înseamnă realizarea conexiunilor dorite între decodor şi porţi Copyright Paul GASNER 27
Exemplu ROM Un ROM 8x3 pentru implementarea funcţiilor V2V1V0 V2 = Σm(1,2,3,4) V1 = Σm(2,6,7) V0 = Σm(4,6,7) Copyright Paul GASNER 28
Exemplu ROM Un ROM 8x3 pentru implementarea funcţiilor V2V1V0 A2 A1 A0 V2 = Σm(1,2,3,4) V1 = Σm(2,6,7) V0 = Σm(4,6,7) Copyright Paul GASNER 29
... sau prescurtat... Un ROM 8x3 pentru implementarea funcţiilor V2V1V0 A2 A1 A0 V2= Σm(1,2,3,4) V1 = Σm(2,6,7) V0= Σm(4,6,7) V2 V1 V0 Copyright Paul GASNER 30
... sau prescurtat Un ROM 8x3 pentru implementarea funcţiilor V2V1V0 A2 A1 A0 V2= Σm(1,2,3,4) V1 = Σm(2,6,7) V0= Σm(4,6,7) V2 V1 V0 Adresa A 2 A 1 A 0 Data V 2 V 1 V 0 000 000 001 100 010 110 011 100 100 101 101 000 110 011 111 011 Copyright Paul GASNER 31
Matrici logice programabile PLA Un ROM nu este optimizat, decodorul generează toţi mintermenii posibili Pentru a implementa o funcţie cu n intrări sunt necesare: un decodor nx2 n care conţine n inversoare şi 2 n porţi AND fiecare cu n intrări o poartă OR cu 2 n intrări numărul de porţi se dublează la fiecare intrare suplimentară O matrice programabilă programmable logic array PLA înglobează decodorul în partea programabilă a ROM şi se aleg doar produsele necesare implementării funcţiei (nu neapărat mintermeni) Copyright Paul GASNER 32
Un PLA 3x4x3 neprogramat PLA 3x4x3 = 3 intrări + 4 produse + 3 ieşiri chenarul reprezintă decodorul din RAM conexiunile se realizază în AND array pentru a obţine doar 4 mintermeni (nu toţi 8) produsele se sumează în OR array Inputs AND array OR array Outputs Copyright Paul GASNER 33
Optimizarea PLA cu K-map Optimizarea clasică utilizând diagrame Karnaugh ar duce la obţinerea a 6 produse diferite pentru cele 3 funcţii V2 V1 V0 Y 0 1 1 1 X 1 0 0 0 Z Y 0 0 0 1 X 0 0 1 1 Z Y 0 0 0 0 X 1 0 1 1 Z V2= Σm(1,2,3,4) V1 = Σm(2,6,7) V0= Σm(4,6,7) Copyright Paul GASNER 34
Optimizarea PLA cu K-map Pentru PLA se încearcă minimizarea pentru toate funcţiile împreună V2 = xy z + x z + x yz V1 = x yz + xy V0 = xy z + xy Y 0 1 1 1 X 1 0 0 0 Z Y 0 0 0 1 X 0 0 1 1 Z Y 0 0 0 0 X 1 0 1 1 Z V2= Σm(1,2,3,4) V1 = Σm(2,6,7) V0= Σm(4,6,7) Copyright Paul GASNER 35
Exemplu PLA A2 A1 A0 xy z xy x z x yz V2 = Σm(1,2,3,4) = xy z + x z + x yz V1 = Σm(2,6,7) = x yz + xy V0 = Σm(4,6,7) = xy z + xy V 2 V 1 V 0 Copyright Paul GASNER 36
PLA. Concluzii PLA k x m x n are k linii pentru adresă, 2 k locaţii fiecare stocând un cuvânt pe n biţi PLA k x m x n poate implementa n funcţii cu k intrări; funcţiile trebuie să poată fi exprimate prin maximum m termeni produs PLA nu permite stocarea tuturor valorilor posibile Deoarece se pot alege produsele generate, PLA are un număr mult mai mic de porţi logice şi intrări în porţi decât ROM ROM poate implementa toate funcţiile posibile cu k intrări, nu şi PLA Implementarea unei funcţii cu memorii reduce practic la zero timpul de calcul Copyright Paul GASNER 37