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.