|
![]() |
#1 |
kenova
Datum registracije: Sep 2003
Lokacija: München / Dubrovnik
Postovi: 919
|
Vodic kroz memoriju
Neznam gdje bi ovo postao, jer nema sekcija za memoriju ili vodice, pa evo ovdje. Dakle ovo sam sastavio u zadnjih par dana viska vremena i zanima me ima li sto netocno, ima li sto nerazumljivo, sto vam je lose itd... Kasnije cu (preko vikenda) uz ovaj tekst prikacit i razne dijagrame i bacit ga u pdf zasad je plain text Opcenito razlikujemo dvije vrste memorija - RAM i SAM. SAM je zapravo "Serial Access Memory" i oznacava memoriju kod koje su podaci organizirani u jedan niz, odnosno pojavljuju se jedan iz drugoga u dugoj liniji zapisa. Primjer su kazete i bilo koji oblici traka za pohranjivanje podataka - traka se vrti i na nju se snimaju podaci odredjenim redoslijedom. Kada je citamo, ne mozemo odmah npr. skociti na polovicu zapisa, nego moramo premotati polovicu trake koja nas dijeli od njega i tek ga onda procitati. RAM je "Random Access Memory" i oznacava bilo koji oblik memorije koji je organiziran tako da mozemo pristupiti bilo kojem elementu trenutacno. Znaci, ne moramo procitati sve zapise prije trazenog, nego odmah dobijamo trazeni podatak. To svojstvo se trazi od oblika memorije koji se koristi u racunalu, pa ga danas nalazimo svugdje. Sam naziv "RAM" dakle ne oznacava neki konacan proizvod, nego samo koncept izgradnje memorije - o znanstvenicima ovisi na koji nacin ce stvoriti memoriju koja se moze zvati RAM-om. RAM dalje dijelimo u dva oblika: SRAM i DRAM. SRAM je "Static RAM". "Static" se odnosi na svojstvo da takva memorija moze zadrzati podatke koje su pohranjeni neograniceno dugo vremena (odnosno, jako dugo). To svojstvo bi ocekivali od svakog oblika memorije, jer sam naziv implicira da se podaci pamte, ali DRAM to svojstvo nema, kao sto cemo kasnije vidjeti. SRAM je gradjen od niza celija koje sadrzavaju logicki sklop (ciji izgled nas ne zanima, inace se zove "flip-flop") koji je gradjen od 4-6 tranzistora. Svaka celija sadrzi vrijednost 1 (naboj postoji) ili 0 (nema naboja). SRAM je brz i energetski stedljiv ali je poprilicno skuplji od DRAM-a, zato sto svaka celija sadrzi veci broj tranzistora i proizvodni proces je kompliciran. Zato ga vidimo samo u obliku male L1 i L2 memorije na procesorima, gdje cak i malim kolicinama vidljivo povecava cijenu procesora. U idealnom svijetu sav RAM u racunalu bio bi SRAM (uz uvjet da proizvodni proces omoguci smanjenje njegovih komponenti na prihvatljivu velicinu). DRAM je "Dynamic RAM". "Dynamic" se odnosi na svojstvo da takva memorija s vremenom gubi podatke koje u sebi sadrzava - naboji pohranjeni u celijama "cure" i na kraju nestaju. To je zbog toga sto je svaka celija gradjena od samo jednog kondenzatora (naravno ne onog u klasicnom smislu, nego u obliku tranzistora) koji jednom pohranjeni naboj ne zadrzava beskonacno - elektroni napustaju celiju jako brzo. Zbog toga tu memoriju treba neprestano osvjezavati - ako izracunamo da naboj nestane nakon 1 sekunde, mozemo svakih 0.5 sekundi proci preko svih celija i one koje imaju 50% naboja ponovno vratiti na 100%. Postoji opasnost da necemo moci razlikovati "naboj ispod 50%" od stanja "nema naboja" pa je bolje uvijek drzati dovoljno naboja u celijama. Naravno, naboj se u stvarnosti gubi puno prije 1 s. Buduci da svaka celija sadrzava samo jedan tranzistor, proizvodnja DRAM memorije je jeftina i jednostavna. Takodjer, na istu povrsinu stane puno vise (4-6 puta) DRAM nego SRAM celija, a vise celija=veci kapacitet. U oba tipa RAM memorija, podaci se organiziraju u tablicu (ili matricu) koja ima odredjen broj redova i stupaca. Tako je svaki podatak, odnosno celija koja sadrzava podatak, odredjen jedinstvenom red+stupac kombinacijom. RAM u racunalu U racunalu pronalazimo SRAM u obliku L1 i L2 cache memorija na procesoru, a DRAM u obliku radne memorije. Memoriju na grafickim karticama i ostale oblike zanemarujemo i njih necemo objasnjavati ovaj put. Prvo cemo se pozabaviti radnom memorijom. Jos jedna stvar: da bi znali gdje smo pohranili podatak, svaka celija mora imati svoju adresu. Vec znamo da ima jedinstvenu kombinaciju red*stupac, ali u racunalu svaka celija zapravo ima svoj jedinstveni redni broj, koji pocinje od 0 i ide sve do rednog broja zadnje celije. Kada procesor trazi odredjeni komadic memorije, on samo zatrazi podatak na rednom broju X, a ne zanima ga je li memorija organizirana u obliku tablice ili dvostrukog heliksa (ha-ha). Dakle, svaki procesor vidi memoriju kao dugi niz adresa koje su poredane jedna iza druge i moze pristupiti bilo kojoj. Radna memorija Prvo cemo opisati strukturu radne memorije, odnosno od najjednostavnijih dijelova cemo polako doci do cijelog RAM modula kakvog danas imamo u racunalima. Nakon toga cemo opisati nacin na koji funkcionira, tako da se treba malo strpiti do zanimljivog dijela. Bez znanja o strukturi samog modula, nemozemo dalje. Zamislimo tvornicu memorije u kojoj sastavljamo zamisljeni modul. Nakon sto proizvedemo vec spomenutu matricu tranzistora dimenzija x*y, u kojoj ce podaci biti pohranjeni na temelju naboja u celijama, dodajemo joj logicke sklopove koji joj omogucuju da obavlja razne zadace - zapisivanje podataka, citanje podataka etc. Te logicke sklopove cemo detaljno objasniti kasnije, sada je samo potrebno znati da uz matricu stoji dosta dodatnih elemenata bez kojih nam ona nije od velike koristi. Sve skupa zapakiramo u keramicko kuciste, da se ne bi ostetilo pri rukovanju. Kroz kuciste prolaze jedino elektricni vodovi koji omogucuju interakciju sa matricom i logickim sklopovima - tako da im mozemo slati signale "spremi ovo u memoriju" ili "posalji mi sadrzaj odredjene celije". Takvo pakiranje naziva se memorijski cip. Uzmite jedan memorijski modul i pogledajte sto se nalazi na njezinoj povrsini - niz od osam crnih pravokutnika - memorijskih cipova. Vodova koji izlaze iz cipa ima raznih vrsta, a spomenuti cemo one koji su potrebni za daljnju raspravu: Adresni vodovi kojima saljemo adresu podatka s kojim cemo raditi u memorijski cip, podatkovni vodovi kojima prenosimo podatke, te jos neki vodovi koje cemo objasniti kasnije. Dakle, proizveli smo jedan memorijski cip sa tim dijelovima. Sada, nicim izazvani, uzimamo jednu plocicu i pricvrscujemo cip na nju. Na plocici se nalaze konektori koji se spajaju sa vodovima koji izlaze iz cipa. Od tih konektora na plocici vodovi idu dalje, sve do ruba. Na rubu vodovi opet prelaze u konektore - ovaj put one koje utaknemo u maticnu plocu. Konacni rezultat je da prateci vod koji izlazi iz cipa mozemo doci do ruba plocice. Plocica o kojoj govorim je tzv. PCB, "Printed Circuit Board" odnosno plocica sa otisnutim vodovima. Zasto ona uopce postoji, kad stvarno komplicira stvar? Postoji zbog toga sto se na istu plocicu moze pricvrstiti vise - standardno 8 - memorijskih cipova. Za korisnika se onda instalacija memorije odnosi na obicno uzimanje plocice sa svim vec postojecim cipovima i njezino guranje u odgovarajuci slot na maticnoj ploci. Maticne ploce su jednostavnijeg dizajna, memorija zauzima manje prostora, korisniku je zivot olaksan, prednosti ima dosta i izlaze iz opsega tutoriala. *Opcenito cemo izbjegavati povratak u proslost i opis arhaicnog hardware-a te usporedbe jucer-danas.* PCB se obicno sastoji od vise slojeva, a svaki sadrzi odredjen broj vodova kojima putuju signali. Sto je god veca udaljenost medju medijima kojima putuju signali, manja je sansa interferencije signala, te se zbog toga i koriste slojevi. Dakle, bacanjem 8 memorijskih cipova na istu plocicu, dobijamo standardni memorijski modul. Osim tih 8 cipova, modul jos sadrzava i tzv. SPD cip - "Serial Presence Detect". On sadrzava informacije o memoriji koje je unio proizvodjac. Te informacije se odnose na specifikacije memorije koje cemo obraditi kasnije - bitno je zapamtiti da pomocu tog cipa saznajemo koji su standardni parametri na kojima je proizvodjac zamislio da memorija radi. Neki moduli sadrzavaju i ECC chip, koji pruza vecu sigurnost u radu sa memorijom, provjeravajuci integritet podataka koji prolaze kroz njega, te ispravljajuci ih ako je doslo do greske. Ne mogu se ispraviti greske koje obuhvacaju vise od jednog bita, iako se mogu detektirati. Takve memorije, kao i "Buffered" tipovi memorija, koriste se u serverima gdje je integritet podataka od ogromne vaznosti, te nas kao takve ne zanimaju. Danas se svugdje koriste tzv. DIMM "Dual Inline Memory Module" moduli. Rijec "Dual" odnosi se na svojstvo da imaju niz konektora na obje strane modula - tako da se na maticnu plocu spajaju sa nizom konektora na desnoj i lijevoj strani, gledajuci odozgo. |
![]() |
![]() |
![]() |
#2 |
kenova
Datum registracije: Sep 2003
Lokacija: München / Dubrovnik
Postovi: 919
|
Kako radna memorija radi? Sad kada je taj dio iza nas, idemo vidjeti na koji nacin DRAM uopce obavlja svoj posao. Uzimamo proizvedeni modul i prikopcavamo ga u memorijski slot na maticnoj ploci. Time on postaje fizicki spojen sa vodovima na njoj, i ako bi pratili vod koji izlazi iz jednog memorijskog cipa na modulu, put bi bio sljedeci: Cip -> Modul -> Memorijski slot -> Vodovi koji idu do do memorijskog kontrolera na ploci -> Vodovi od kontrolera do North Bridge-a -> vodovi od NB-a do procesora. North Bridge je cip na maticnoj ploci, ne zanima nas za sto sluzi, vazno je samo da vodovi prolaze kroz njega. Na AMD Athlon 64 procesorima put je nesto drukciji, ali to nas nece smetati. Put izmedju NB-a i modula naziva se Memory Bus - Memorijska sabirnica. Zamislimo da je sada racunalo upaljeno, i svi vodovi iznenada ozive - signali putuju na sve strane. Na svakoj maticnoj ploci nalazi se element, kristal, koji generira odredjeni broj impulsa u sekundi. Recimo da generira 200 000 000 impulsa u sekundi. Tada je system clock jednak 200Mhz. U racunalu se svaka komponenta ravna po system clocku te svoj rad mora prilagoditi toj brzini od 200Mhz kako bi mogla komunicirati sa ostalim komponentama. Tako npr. procesor radi na 3Ghz, ali sa ostalim komponentama ne moze komunicirati brze od frekvencije koju mu dopusta memorijska sabirnica. Moze se reci da su sve komponente sinkronizirane sa system clock-om i koriste ga za svoj rad. DRAM memorija sinkronizirana sa system clockom naziva se SDRAM (Synchronous DRAM). To je vrsta memorije koja je uredjena tako da koristi system clock u svom radu, te se izmedju dva njegova "otkucaja" u modulu ne dogadja nista. Procesor komunicira sa memorijom putem koji je vec opisan. Recimo da je upravo primio instrukciju koja mu govori da na odredjenom podatku iz memorije mora obaviti odredjenu operaciju. Prvo, procesor mora postati tzv. bus master memorijske sabirnice. Buduci da je ona zapravo jednosmjerni kanal (kanal kojim se u jednom trenu komunikacija moze obavljati samo u jednom smjeru), mozda memorija bas u tom trenu nesto govori procesoru i zauzima sabirnicu. On zeli preuzeti kontrolu i poceti nesto govoriti memoriji - konkretno zeli joj reci "posalji mi podatak na lokaciji X". Dobija kontrolu sabirnice i na nju postavlja LOAD naredbu. Ona putuje do memorijskog kontrolera, koji odlucuje kojem modulu ce se naredba proslijediti. Sada "mala" digresija. Procesor ocekuje da ce se nakon odredjenog vremena na memorijskoj sabirnici pojaviti trazeni podatak. Ali, kada procesor zatrazi odredjeni podatak, on ne zeli da mu se vrati samo tocno ta vrijednost koju je trazio - on zeli i odredjeni broj podataka iza te vrijednosti, jer je velika sansa da ce one biti one koje ce mu uskoro trebati. Recimo da je procesor upravo zabavljen sviranjem nekog mp3 (ogg?) sadrzaja. Ako zatrazi podatak (dio audio sadrzaja) u memoriji na broju 902, zar ne bi bilo bolje da mu memorija odmah posalje i sljedece podatke, jer ce ionako uskoro trebati obraditi njih? Zato procesor kada zatrazi podatak, zeli napuniti cijelu liniju u svojoj cache memoriji. Dakle, vazna cinjenica: Kada procesor zatrazi podatak od memorije, zeli da mu memorija posalje dovoljno podataka da napuni cijelu liniju u svojoj internoj memoriji (mjestu gdje drzi stvari s kojima trenutno radi). Konkretno, ta linija se spremi u L1 i L2 cache memoriju. O velicini linije ovisi koliko podataka ce mem. kontroler poslati procesoru. Ako je cache line velik 64 bita (kao kod Athlon XP procesora), onda ce procesor i dobiti 64 bita. ALI, veliki faktor ogranicenja je propusnost memorijske sabirnice. Sto ako u jednom taktu (jednom otkucaju system clocka) kroz sabirnicu moze proci samo 16 bitova? Onda ce procesor morati cekati duze da napuni cijeli cache line. A ako procesor ne moze vrijeme potrositi zabavljajuci se nekim drugim aktivnostima, onda ce jednostavno - cekati. I ne raditi nista. Dakle, zelimo da nam sabirnica ima sto vecu propusnost. Idemo sada vidjeti na koji nacin ce jedan memorijski modul vulgaris ispuniti tu zelju za 64 bita podataka. Sjecate se kada smo rekli da je u memorijskom cipu jedna velika matrica u koju pohranjujemo podatke? E pa nije ![]() Ako smo to usvojili, mozemo nastaviti sa nasim zahtjevom memorije od strane procesora, koji smo poceli opisivati. Dakle, on je stigao do mem. kontrolera. On aktivira odredjeni memory bank, gdje se trazeni podatak nalazi. To se radi na sljedeci nacin: Svi SDRAM cipovi sadrzavaju CS (Chip select) vod. Preko njega kontroler porucuje cipovima da se naredbe koje salje odnose na njih. Oni takodjer sadrze i BA (bank) vodove, preko kojih porucujemo cipovima da se naredbe odnose na odredjeni bank kojeg oni sadrze. Dakle, aktiviramo potrebne CS i BA vodove. Svaki SDRAM cip ima i WE (Write enable) vod, kojim cipu govorimo da se podaci citaju, a ne pisu. Cipovi sadrzavaju i DQM vod kojim im govorimo da podatke stave na mem. sabirnicu, odnosno da prestanu sa outputom, ali on nam nije bitan za raspravu. WE nije aktiviran, jer zelimo procitati podatak. Memorijski kontroler pretvara adresu koju je dobio od procesora u kombinaciju red*stupac. Na adresni vod prvo stavlja red. Zatim aktivira RAS pin na cipovima. Aktivirani RAS pin daje im do znanja da je na adresnoj sabirnici adresa reda kojeg treba aktivirati. Svaka mala matrica ima skup elemenata koji se nazivaju "dekoderi reda". Oni dekodiraju adresu koja je na adresnoj sabirnici i aktiviraju trazeni red u matrici. Nazalost, oni to ne rade trenutacno, nego tek nakon odredjenog vremena aktivnosti RAS-a (jer mu treba odredjeno vrijeme da se stabilizira). Ta latencija je prva koju susrecemo i naziva se tRAC - "Row Access time". Predstavlja vrijeme koje prodje od aktivacije RAS pina do trena kada memorija aktivira trazeni red. |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
#3 |
kenova
Datum registracije: Sep 2003
Lokacija: München / Dubrovnik
Postovi: 919
|
Recimo nesto vazno o latencijama: Razlikujemo latencije izrazene u taktovima system clocka i one izrazene u sekundama. Svaka latencija izrazena u sekundama ima pridruzenu jednu izrazenu preko system clocka. Tako tRAC, koji traje X sekunda, ima pridruzen tRCD, odnosno "RAS to CAS Delay". tRCD je broj taktova potreban da protekne tRAC, odnosno tRCD=tRAC/(system clock u sekundama). Vidimo da kako system clock postaje brzi (traje manje sekundi) tRCD raste, jer se tRAC ne mijenja (on je osobina modula). Zato za vece frekvencije system clocka tRCD raste. Sada memorijski kontroler na adresnu sabirnicu stavlja adresu stupca u kojem je podatak, te aktivira CAS pin. Pomocu CAS dekodera dobijamo adresu stupca i sada je kombinacija red*stupac potpuna. Kao i kod RAS-a i ovdje je potrebna odredjena kolicina vremena od aktivacije CAS-a pa do trena dok se ne stabilizira, kada dekoderi povuku adresu stupca sa adresne sabirnice. Ta latencija je tCAC "Column Access time". Ovu latenciju cemo prosiriti na vrijeme od aktivacije CAS pina pa do trena kad se podatak odredjen red*stupac adresom ne pojavi na podatkovnim vodovima modula. Zasto? Zato sto tada tCAC latencija ima vecu prakticnu vrijednost, ne moramo izmisliti jos jednu koja bi obuhvacala vrijeme od dekodiranja stupca do pojave podataka. Latencija koja izrazava tCAC u otkucajima system clocka je tCAS, te je jednaka tCAS=tCAC/(system clock u sekundama). Ova jednadzba ipak nije tocna ako uzmemo u obzir da je tCAC vrijednost koja se ne moze promijeniti, a tCAS mozemo mijenjati na istom system clocku. Zasto je to tako? Tijekom tCAS latencije podatak odredjen red*stupac kombinacijom putuje podatkovnim vodovima iz malih matrica u cijelom banku te odlazi do ruba modula. Tada prestaje tCAS latencija. Dok podatak putuje prema rubu modula, prelazi neku fizicku udaljenost. Podatak je zapravo signal, te kao takav slabi tijekom putovanja. Zbog toga putem staje u buffere na modulu gdje se zadrzava po jedan takt, te nastavlja putovanje. Svaki put kad posjeti buffer, tCAS latencija je veca za jedan takt, ali je podatak sigurniji, jer je mala sansa da ce se destabilizirati na putu. Kada mijenjamo tCAS, zapravo mijenjamo broj buffera koje ce podatak posjetiti na putu do ruba modula. Prvi dio CAS latencije (vrijeme od aktivacije CAS-a do dekodiranja stupca) je osobina modula koja je nepromjenjiva i ovisi o kvaliteti modula. Sjetimo se da je mem. kontroler poslao ove naredbe cijelom banku, tako da sada na podatkovnim pinovima modula imamo podatke od svakog cipa koji je sadrzavao bank. Odnosno, opisani proces se odvijao u svim malim matricama koje su dio banka. Proces je trajao tRCD+tCAS, a taj zbroj jos oznacavamo sa tRAS latencijom. Znaci tRAS=tRCD+tCAS. Zbroju se obicno doda odredjena kolicina "praznih" taktova sabirnice u kojima se ne radi nista, da budemo sigurni da je tCAS zavrsio. Prije nego sto opet mozemo koristiti modul, znaci opet dovesti adresu retka na adresni vod, moramo cekati da se RAS pin stabilizira ("oporavi" od prijasnje upotrebe). Tu latenciju nazivamo tRP "Ras Precharge". Kada ona zavrsi, opet mozemo poceti proces citanja na istom banku. Zbroj tRCD+tCAS+tRP (odnosno tRAS+tRP) oznacavamo sa tRC. To je zapravo najmanje vrijeme aktivnosti memory banka. On nije tocno jednak zbroju tih latencija, jer bankovima uglavnom treba jos malo vremena prije nego sto ih mozemo koristiti, jos samo 1-2 takta system clocka "odmora". Tako ispada da je tRC malo veci od zbroja i u BIOS-u obicno imamo opciju da ga postavimo na vrijednost 1T, 2T itd. sto znaci da ce biti jednak tRAS+tRP+1T/2T itd. Sto se dogadja sa podacima koji su dosli na memorijsku sabirnicu? Mem. kontroler postaje bus master i salje ih nazad procesoru, kraj price ![]() Znaci, procesor je od zahtjeva za podacima (kada je poslao LOAD naredbu) cekao neko vrijeme dok zahtjev dodje do mem. kontrolera, onda neko vrijeme dok memorija ispuni zahtjev i onda jos neko vrijeme dok podaci dodju nazad do njega. To je poprilicno ubilo bandwith sabirnice, jer se vecinu vremena nije dogadjalo - nista. Memorija to kompenzira tzv. Burst nacinom rada u kojem salje odredjeni broj podataka i iza trazenog podatka, tako da sabirnica stalno bude puna. Tako procesor zatrazi adresu X, dolazi do tRCD latencije, aktivira se red, dolazi do tCAS latencije, podatak je na podatkovnim pinovima... Ali umjesto da se red koji citamo deaktivira i RAS otidje na precharge, ostavljamo red aktiviran i povecavamo adresu stupca koji nam je kontroler poslao - tako da sada dohvacamo sljedeci podatak u matrici. Nakon sto je taj na podatkovnim pinovima, uzimamo sljedeci, pa opet... Posljedica toga je da ovo citanje izgleda kao tRCD+tCAS+tCAS+tCAS...+tRP. Dobra stvar je sto je procesor nakon prvotnog dugog cekanja ostale podatke poceo dobijati velikom brzinom (koja ovisi o tCAS latenciji). Nacin na koji ce memorija burst-ati podatke zapisan je u tzv. Load Mode registru. Tu su zapisane i latencije koje mijenjamo u BIOS-u i omogucuje nam interakciju sa modulom. Podatak koji je procesor trazio zove se "critical word" i obicno je on prvi koji mu dostavimo tijekom burst-a, ali se mijenjanjem nacina burst-a moze staviti na bilo koje mjesto u nizu podataka koje ispucamo. Sto ako procesor odluci zapisati neki podatak u memoriju? Proces je vise manje jednak. Salje STORE naredbu, izvrsi se tRCD, ali tada aktiviramo WE pin (Write-enable). Tako cip zna da podatke na podatkovnoj sabirnici mora zapisati na trazenu lokaciju. Nakon tCAS podatak je zapisan. Zatim tRP... Zasto se memorija organizira u bankove i zasto je dobro imati ih sto vise? Kada banku posaljemo odredjenu adresu reda preko adresnog voda i aktiviramo RAS pin na svim cipovima gdje se bank nalazi (i odgovarajuce BA pinove koji cipu govore kojoj maloj matrici u njemu saljemo naredbe) on podatke iz trazenog reda povuce u pojacala signala. Kada mu posaljemo adresu stupca, podatci odredjeni red*stupac kombinacijom iz pojacala putuju globalnim pa centralnim vodovima do data pinova na cipu. Trazeni red ostaje u pojacalu, pa mozemo reci da je "ostao otvoren". Ako sljedeci put budemo trazili podatak u tom istom redu (npr. traje burst) dovoljno je cekati samo tCAS latenciju, jer tRCD ne postoji (red je vec u pojacalu). Veliki broj bankova - veliki broj redova koji su istovremeno otvoreni - velika vjerojatnost da ce podatak biti u vec aktiviranom redu i da ce ukupna latencija biti manja. Takodjer, dok jedan bank mijenja red, drugi moze uskociti sa podacima iz svoga aktivnog reda i puniti memorijsku sabirnicu. Ako je trazeni podatak u istom banku ali nekom drugom redu, onda trenutno otvoreni red iz pojacala vracamo u matricu i cijeli proces citanja pocinjemo od tRCD latencije. Na pocetku smo rekli da je osobina DRAM memorije da sa vremenom gubi podatke pohranjene u njoj, jer naboj curi iz celija. Dakle, na neki ga nacin stalno treba obnavljati. Primjecujemo da se naboji u odredjenom redu obnavljaju kada taj red procitamo, sto znaci da bi stalnim citanjem odredjenog reda sprijecili da se podaci u njemu izgube s vremenom - stalno bi obnavljali naboj. U svakom cipu postoji logika koja radi upravo to - koristi vrijeme kada nitko ne cita podatke i prolazi kroz sve redove matrica, osvjezavajuci naboje. Zato memorijske matrice imaju manje redova nego stupaca, da omoguce sto krace trajanje osvjezavanja. Iako se refresh trudi ne smetati zahtjevima procesora za memorijom, to je neizbjezno, jer se naboj mora obnavljati jako brzo, pa je refresh cest, a obavlja se nakon primanja AUTO REFRESH signala. U BIOS-u se moze promijeniti Row Refresh Cycle latencija, koja oznacava vrijeme osvjezavanja celija u matrici. U pricu dodajemo i jos i latenciju "Command Rate" koja oznacava broj taktova koje prolazi izmedju aktiviranja CS "Chip select" pina na odredjenom cipu kojeg trebamo, do vremena kada cip mozemo koristiti. Jos neki signali koji se koriste u radu sa memorijom su: PRECHARGE - Odredjenom banku govorimo da cemo ga uskoro koristiti, te mu porucujemo da se pripremi za primanje adrese retka. BURST TERMINATE - Prekidamo zapoceti burst, kako bi mogli ispuniti neki drugi zahtjev procesora. NO-OPERATION - Ovom naredbom mem. kontroler porucuje banku da ostane aktivan ali da ne radi nista. Koristi se da ispuni taktove koji prolaze za vrijeme raznih latencija (npr. tCAS) i da se osigura da dok latencija traje, bank ne radi nista. DDR SDRAM "Double Data Rate SDRAM" memorija je vrsta SDRAM memorije koja moze primiti naredbu svakih 0.5 taktova system clocka, odnosno po dvije naredbe u jednom taktu. Logika koja to omogucuje neznatno komplicira modul, zove se DQS i nema potrebe objasnjavati je. Moduli koji podrzavaju DDR oznacavaju se dvojako - preko oznake frekvencije koju podrzavaju i preko bandwitha kojeg pruzaju. Prvo, sto se tice frekvencije - nekada je PCX oznaka (PC100, PC133...) oznacavala frekvenciju na kojoj memorijski modul radi. Kod DDR-a oznacava frekvenciju kojom modul moze primati naredbe. Buduci da moze primiti dvije po Herz-u, uzimamo frekvenciju na kojoj modul radi i mnozimo je sa dva. PC400 tako oznacava modul koji radi na 200Mhz. Sto se tice bandwitha, ta oznaka se dobija tako da pomnozimo sirinu memorijske sabirnice sa frekvencijom na kojoj modul radi, opet puta 2. Zamislimo da je sirina sabirnice 64 bita (8 byteova) a frekvencija 200Mhz. Bandwith=8*200Mhz*2=3200byte/Mhz. To mozemo pretvoriti u 3.2GB/s. Ovaj bandwith nas modul nikada nece postici i ne sluzi nam previse (osim sto nam indirektno govori o frekvenciji na kojoj modul radi). Bandwith tako visok ne moze se postici zbog vremena koje prolazi nakon sto procesor posalje naredbu pa do stizanja do mem kontrolera, latencija samog modula etc. Povecavanjem velicine burst-a (podataka koji se salju iza onoga kojeg je procesor trazio) povecava se bandwith i burst spasava sabirnicu od katastrofalne propusnosti. |
![]() |
![]() |
![]() |
#4 |
kenova
Datum registracije: Sep 2003
Lokacija: München / Dubrovnik
Postovi: 919
|
*Dio o SRAM-u sa cacheom dolazi kasnije* |
![]() |
![]() |
![]() |
#5 |
Moderator
Datum registracije: Aug 2003
Lokacija: Zagreb
Postovi: 3,193
|
Maturalna? Odlicno ![]()
__________________
|
![]() |
![]() |
![]() |
#6 |
kenova
Datum registracije: Sep 2003
Lokacija: München / Dubrovnik
Postovi: 919
|
nije maturalna, obicni tutorial za net sa mogucim greskama ![]() |
![]() |
![]() |
![]() |
#7 |
kenova
Datum registracije: Sep 2003
Lokacija: München / Dubrovnik
Postovi: 919
|
Evo pdf verzije sa slikama ako je kome stalo: http://bxteam.org/tutoriali/hardware/memorija.pdf |
![]() |
![]() |
![]() |
#8 |
pUtNiK
Datum registracije: Feb 2004
Lokacija: na forumu
Postovi: 342
|
evo upravo sam skinuo pdf verziju pa ću je nekad kasnije pročitat uglavnom kad se nekom da napisat ovakav članak mogu uputit same pohvale ![]() |
![]() |
![]() |
![]() |
#9 |
Sannin
Datum registracije: Jun 2003
Lokacija: Split
Postovi: 1,568
|
mogao si odma stavit link... ![]() stvarno se neko potrudio...
__________________
YES - BUT / your evaluation is superb - behold the underlying truth |
![]() |
![]() |
![]() |
#10 |
kenova
Datum registracije: Sep 2003
Lokacija: München / Dubrovnik
Postovi: 919
|
pdf sam tek jucer sredio, inace bih odma postao link fkors ![]() |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
#11 |
Sannin
Datum registracije: Jun 2003
Lokacija: Split
Postovi: 1,568
|
ti si pisao? svaka cast ![]()
__________________
YES - BUT / your evaluation is superb - behold the underlying truth |
![]() |
![]() |
![]() |
#12 |
Treba kaj skurit??
Datum registracije: Jan 2004
Lokacija: Zgb
Postovi: 4,025
|
Svaka čast. ![]() |
![]() |
![]() |
![]() |
#13 |
(°_°)
Datum registracije: Nov 2001
Lokacija: Samobor
Postovi: 3,249
|
treba imati volje za napisati ovako nesto bez nekog profita ![]() predlazem da ovo postane sticky na forumu ![]()
__________________
Toshiba m200 TabletPC + Samsung 205BW |
![]() |
![]() |
![]() |
#14 | |
Registered User
Datum registracije: Oct 2003
Lokacija: Zagreb, Trešnjevka
Postovi: 5,767
|
Citiraj:
![]() |
|
![]() |
![]() |
![]() |
#15 |
hmhm...zzz svima...
Datum registracije: Mar 2004
Lokacija: 21000 Split
Postovi: 1,070
|
stvarno svaka čast....prvo triba imati jako puno volje da se napiše ovo a kamoli još proćita ...jedva san se natira da porćitam ![]() ![]()
__________________
moj zivot se mijenja... iz dana u dan ja kune neman ![]() pozzz svima koju me znaju, a i onima koj ne ![]() |
![]() |
![]() |
![]() |
#16 |
pUtNiK
Datum registracije: Feb 2004
Lokacija: na forumu
Postovi: 342
|
ajde moderatori šta čekate ![]() lipo stavite ovaj krasan tekstić kao sticky i to je to |
![]() |
![]() |
![]() |
#17 |
nemam kaj napisati
Datum registracije: May 2003
Lokacija: Međimurje
Postovi: 1,303
|
Za svaku pohvalu. Vrlo korisno. ![]() (Usput da pitam kako prebaciti neki tekst iz Worda u PDF) |
![]() |
![]() |
![]() |
#19 |
Treba kaj skurit??
Datum registracije: Jan 2004
Lokacija: Zgb
Postovi: 4,025
|
Jel bude to sticky jer stvarno zavrijeđuje. ![]() |
![]() |
![]() |
![]() |
#20 |
kenova
Datum registracije: Sep 2003
Lokacija: München / Dubrovnik
Postovi: 919
|
ako ce bit sticky onda cu izvuc tekst iz file-a, nema smisla poslat sticky link evo i drugi dio: http://bxteam.org/tutoriali/hardware/memorija2.pdf |
![]() |
![]() |
![]() |
#22 |
Tlacitelj i neznalica
Datum registracije: Dec 2003
Lokacija: Rijeka
Postovi: 1,868
|
Pohvale!
__________________
Tko nema ni jednog prijatelja ide kao stranac po zemlji. |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
|
|