Pomnilnik

Kaj se bomo v tem poglavju naučili

Spoznali bomo pomnilno celico, osnovne izraze v zvezi s pomnilnikom ter mehanizem shranjevanja podatkov pri paralelnih in serijskih pomnilnikih.

Pomnilna celica

Pomnilna celica je preprosto elektronsko vezje, ki mu lahko vsilimo eno od dveh možnih napetostnih stanj, ki ga nato vezje ohranja, dokler mu ne vsilimo drugega stanja. S tema dvema napetostnima stanjema lahko predstavimo dve vrednosti enobitnega podatka: nizka napetost (0V) pomeni binarno vrednost "0", višja napetost (5V) pa binarno vrednost "1".

Informacija, zapisana v pomnilniški celici, je majhna, zato celice združujemo v skupine po 8. Takšni skupini pomnilniških celic pravimo register, v našem primeru 8-bitni register. Vanj lahko vpišemo 8-bitni podatek, ga preberemo, vpišemo drug podatek … Dolžina pomnilniške besede je  lahko tudi 16 bit, 32 bit …

Pomnilnik

Pomnilnik sestavlja večje število registrov. Registrom v pomnilniku običajno rečemo lokacije. Da lahko uporabimo določeno lokacijo, mora ta imeti svoj naslov, nekakšno zaporedno številko oziroma "koordinate", s katerimi jo dosežemo.

Dolžina naslova pove, s kolikimi biti je lahko podan naslov posamezne lokacije. Če je naslov 16-biten (torej dolg do 16 binarnih mest), lahko zapišemo 216 različnih naslovov in torej naslovimo 216 pomnilniških lokacij. Iz dolžine naslova lahko ugotovimo število lokacij, ki jih ima  pomnilnik.

Najpogostejša organizacija pomnilnikov je N * 8 bit, najdemo pa tudi pomnilniška integrirana vezja z organizacijo  N * 1, s čimer lahko sestavimo pomnilnike z želeno dolžino pomnilniške besede. Pomnilniška beseda je skupina bitov, dostopnih na določenem pomnilniškem naslovu.
Če poznamo število naslovnih linij in dolžino pomnilniških besed (lokacij), lahko izračunamo celotno kapaciteto pomnilnika:

kapaciteta pomnilnika  = število lokacij  * dolžina pomnilniške besede


Dolžino pomnilniške besede izražamo v zlogih, enako tudi kapaciteto pomnilnikov. Za večje kapacitete uporabljamo predpone K (kilo), M (mega), G (giga), T (tera). Kilo tu pomeni 210, mega ni 220, giga 230, tera pa  240.

Primer 1:
Pomnilnik ime 12 naslovnih linij in 8-bitno podatkovne besede. Njegova kapaciteta je 212 zlogov (bajtov) ali 4*210 B = 4 KB.
 
Primer 2:
Pomnilnik ime 14 naslovnih linij in organizacijo N * 1. Njegova kapaciteta je 214 bit (!) =2*210 * (23 bit) = 2 * 210  zlogov (bajtov) ali 2 KB.


Vsebina lokacije je zaporedje binarnih vrednosti. Predstavlja lahko podatek ali del podatka, ukaz ali del ukaza. Če izpišemo (binarno) vsebino neke lokacije, ne moremo o njenem pomenu povedati ničesar, dokler ne vemo kaj predstavlja in kako je bila kodirana.
Izpis vsebine pomnilnika je ponavadi najpreglednejši v šestnajstiški (heksadecimalni) obliki.

Primer: " Na naslovu  0200C h  je shranjen podatek   EB h". Oznaka h pomeni heksadecimalni (šestnajstiški) zapis. Včasih je uporabljen znak $, ali posebna oblika zapisa, na primer 0x0200C.
Zapisani primer (velja tudi za spodnjo sliko) bi lahko zapisali tudi po dvojiško, kot je v resnici:
 "na naslovu 0000 0020 0000 0000 je shranjen podatek 1110 1011."  Poišči ta podatek! (najdeš ga v tretji vrstici)
Vsebina nekega pomnilnika
Slika: Primer vsebine nekega FlashRom pomnilnika. Naslovi so oštevilčeni v heksadecimalnem zapisu, prav tako vsebine. V vsaki vrstici so prikazane vsebine šestnajstih zaporednih lokacij. Vsebine v spodnjem delu slike so FF (dvojiško same enice), kakršna je bila v tem pomnilniku pred pisanjem (torej prazno).


Delovanje pomnilnika

Elementi pomnilnika
Kot elektronski (fizični) element mora imeti pomnilniško vezje način za določitev naslova izbrane lokacije in način za prenašanje podatkov. Skupina električnih vodnikov, ki prenašajo podatkovne signale, se imenuje podatkovno vodilo (an. Data Bus), skupina vodnikov, ki prenaša naslovne signale, pa naslovno vodilo (an. Address Bus).
Pomnilnik pa potrebuje še krmilne signale, s katerimi mu "povemo", ali bomo iz pomnilnika brali ali vanj pisali podatke.  Takšen krmilni signal se pogosto imenuje Read / *Write.  (Zvezdica pomeni negacijo pri nasprotnem ukazu Write. Kadar ima ta signal vrednost 1, pomeni to branje (Read), za pisanje pa to pomeni obratno, torej NE piši. Pomena se torej izključujeta in imata zmeraj nasprotno vrednost.)


Primer: 
Branje vsebine na lokaciji 0000000100.

Procesor ...
postavi na naslovno vodilo želeni naslov, torej 0000000100,
na krmilno linijo pa postavi signal za branje (visoko stanje, Read)

Pomnilnik...
 postavi vsebino izbrane lokacije na podatkovno vodilo. Od tod ga procesor lahko prebere.

Slika:
Ilustracija elementov pomnilnika s paralelnim prenosom podatkov in naslovov pri branju oz. pisanju.

Podobno poteka tudi pisanje v pomnilnik. Krmilni signal mora zdaj biti Write, podatek pa mora biti pripravljen na podatkovnem vodilu, da ga pomnilnik lahko shrani. Vidimo, da je podatkovno vodilo dvosmerno (podatki se vpisujejo v pomnilnik ali prihajajo iz njega),  naslovno vodilo pa enosmerno: naslov vedno postavlja procesor.



Serijski pomnilniki

To so pomnilniki, ki uporabljajo serijski (zaporedni) prenos podatkov. Serijski prenos podatkov pomeni prenos vsakega podatka bit za bitom po eni podatkovni liniji. Pri serijskih pomnilnikih poteka  serijsko tudi vsa druga komunikacija med procesorjem in pomnilnikom. Naslov lokacije za branje oziroma pisanje se prenese na enak način kot podatek. Namesto krmilnih signalov za branje, pisanje in druge možne operacije, pošiljamo serijskemu pomnilniku  ukaze.  
Pri vsakem opravilu s pomnilnikom (vpis, branje, zaporeno pisanje)
se najprej prenese koda operacije, ki "pove", kakšno opravilo se bo izvedlo.
Če je bila to koda za pisanje podatka, ji sledi naslov izbrane lokacije in nato še podatek, ki ga vpisujemo.

Serijski pomnilniki so zlasti zanimivi zaradi majhnih fizičnih dimenzij, saj imajo tipično zelo malo priključkov (nožic). Njihova uporaba je aktualna pri majhnih in prenosnih napravah.
Povezava serijskega pomnilnika

Slika: Mikrokrmilnik in trije serijski pomnilniki (EEPROMi). S signali CS1, CS2 in CS3 (an. chip select) izberemo enega od pomnilniških integriranih vezij, po linijah SDI (an. serial data input) in SDO (an. serial data output) pa tečejo podatki. Časovni diagram pri serijskem pisanju zloga v serijski EEPROM kaže zaporedje signalov pri vpisu enega zloga.

Pomnilniški moduli

Posamezne pomnilniška integrirana vezja se zaradi povečanja pomnilniške kapacitete poveže v večje pomnilniške module. Posamezen modul obravnavamo kot celoto. Seveda mora imeti izvedene vse potrebne signalne sponke: naslovne, podatkovne, krmilne, napajanje.

 

Preveri svoje znanje

1. Koliko 8-bitnih pomnilniških besed ima pomnilnik z 14-bitnim naslovom:

214
142
14*8
814

2. Koliko je kapaciteta pomnilnika z 8-bitnimi pomnilniškimi besedami, zadnja lokacija pa ima naslov 1023?

8184 bit
1023 zlogov
natanko 1 KB

3. Pomnilnik ima  FFFF(16) lokacij.  V kateri tretjini pomnilnika je lokacija 1FFF? Ali znaš utemeljiti svoj odgovor?

v prvi
v drugi
v tretji