| POČETNA STRANICA | SURADNICI | PROJEKTI | NASTAVA |
 
Pohranjivanje podataka
Radna memorija-organizacija Memorija, o kojoj je ovdje riječ, ugrađena je u samo računalo. To je ona memorija koju procesor (CPU) koristi za neposrednu pohranu i dobavu podataka. Dok je računalo uključeno i dok obrađuje podatke, ti podaci i programi nalaze se u radnoj memoriji. Zbog potrebe čuvanja podataka, računala sadrže ogromne količine sklopova koji čuvaju jedan jedini bit. Taj pričuvnik bitova u biti je radna memorija. Sklopovi glavne memorije računala organizirani su u jedinice kojima možemo pristupati, a zovu se ćelije (lokacije) tipične dužine od 8 bita. U stvari, skup od 8 bitova postao je toliko popularan da se je termin BYTE uobičajilo koristiti kao izraz koji označava skup bitova te veličine. Memorijske lokacije možemo zamisliti kao niz pretinaca, od kojih svaki ima svoju adresu. I ne samo da svaka memorijska jedinica ima svoju adresu, nego i unutar pojedinog bytea zna se točan redoslijed bitova prema važnosti. Krajnje lijevi bit u byteu je bit najveće važnosti, a onaj krajnje desni je najmanje značajan bit. Kao bitnu posljedicu označavanja (adresiranja) byteova i bitova u njima, čitavu glavnu memoriju možemo predstaviti jednim dugačkim redom. Dijelovi tog dugog reda mogu se iskoristiti za pohranjivanje uzorka bitova koji je dulji od 1 bytea. Obično ga spremamo u string koji je cjelobrojni višekratnik osnovne memorijske ćelije. Osim toga, ovakav način organiziranja memorije omogućava nam dobavljanje sadržaja sa svake memorijske lokacije posebno. Stoga se podacima može pristupati preko reda, bez obzira gdje su (kaotično – random) pa se ovakve memorije zovu RAM-ovi (random access memory). Osim tih vrsta memorije, glavnu memoriju čine i ROM-ovi (memorije koje služe samo za čitanje). Kapacitet memorije mjeri se ukupnim brojem bajtova koji se mogu u nju pohraniti. Današnja računala imaju 128 MB, 256 MB kapacitet glavne memorije.

Još malo općenito o kapacitetu:
Običaj je projektirati memorijski sustav tako da ukupan broj lokacija možemo izraziti kao potenciju broja 2. Suprotno tome, veličina memorije kod starijih sustava često se mjerila jedinicom od 1024 bita (2 na 10). Kako je 1024 otprilike jednako 1000, društveno je prihvaćen prefiks kilo kao dodatak osnovnoj jedinici. Stoga je termin kilobajt (KB) označavao 1024 bita, a za stroj sa 4096 adresnih lokacija govorilo se da ima 4 KB memorije. Kako je memorija postajala sve glomaznija, u upotrebu je došao termin mega (2na20) i giga. Primjena ovih prefiksa pogreška je u odnosu na terminologiju (km, MHz...), pa je negdje izazivala nesporazume. Jedan od novijih «pomirljivih» prijedloga predlaže upotrebu "kibi"-ja, kao skraćenicu za kilobinary, pa bismo kapacitet izražavali sa, primjerice 256 MebiByte-a.

Memorija-vrste
RAM-memorija je upisno ispisna memorija u koju se mogu upisivati podaci i iz nje čitati onoliko puta koliko želimo. Pohranjeni podaci ostaju u ovoj memoriji dok ih računalo namjerno ne promijeni ili dok se ne prekine napajanje memorije električnom energijom. Dakle RAM gubi svoj sadržaj prestankom napajanja, pa se naziva i nepostojana memorija (engl. Volatile)
Glavne značajke RAM-a su kapacitet i brzina rada. Poželjno je da RAM bude što većeg kapaciteta kako bi se pohranilo što više podataka. Neki RAM uspoređuju sa radnim stolom: što je veći to nam je dostupnija i preglednija veća količina različitih «papira», pa je logično da će računalo sa većim RAM-om biti ugodnije (brže) za korištenje. Brzina rada RAM-a određene je brzinom kojom ova memorija pohranjuje i izdaje podatke. Za čitanje nekog podatka iz memorije potrebno je navesti adresu memorijske lokacije na kojoj se nalazi podatak. Vrijeme koje protekne od trenutka kada se na adresnim sabirnicama pojavi adresa treženog podatka do trenutka kada se na podatkovnim sabirnicama pojavi sam podatak zove se vrijeme pristupa memoriji (access time). Vrijeme pristupa ograničava brzinu kojom se mogu čitati podaci iz memorije i upisivati u nju, pa može ograničiti brzinu rada cijelog računala. RAM-ovi današnje tehnologije imaju vrijeme pristupa 10.tak nanosekunda. Suvremeni RAM-ovi izgrađeni su u poluvodičkoj tehnologiji i razlikujemo dvije vrste:
  • statički
  • dinamički.

SRAM-statički RAM; vrsta je radne memorije kod koje je svaki bit pohranjen u jednom od bistabilnih sklopova smještenim u memorijskom integriranom sklopu. Prednosti SRAM-a su jednostavnost građe, jednostavnost pogona i veoma brz pristup memoriji. Nedostatak su mu relativno velike dimenzije bistabilnog sklopa, što ograničava broj bistabila koji se mogu smjestiti na jednu pločicu poluvodiča. SRAM-ovi su znatno manjeg kapaciteta od dinamičkih memorija, a znatno su veće cijene. U SRAM-u se pohranjuje mala količina podataka (npr. Pohrana karakterističnih parametara računala, cache-brza priručna memorija)
DRAM – dinamički RAM; vrsta je radne memorije kod koje je svaki bit pohranjen kao naboj u minijaturnom kondenzatoru smještenom u memorijskom integriranom sklopu. Zbog nesavršenosti dielektrika u kondenzatoru, naboj pohranjen u kondenzatoru postepeno se gubi, pa se time gubi i podatak. Kako se to ne bi dogodilo, potrebno je naboj obnoviti prije nego li se kondenzator potpuno isprazni. Obnavljanje se obavlja pomoću posebnih sklopova koji najprije čitaju podatke, a zatim obnavljaju naboj svakog kondenzatora sukladno očitanoj vrijednosti. Obnavljanje naboja (memory refreshing) provodi se svakih nekoliko milisekunda ili češće, što znatno usporava i komplicira komunikaciju DRAM-a s okolinom. Prednosti su malene dimenzije kondenzatora koji pohranjuje bit vrijednosti, pa je moguće smjestiti mnogo takvih kondenzatora na jednu pločicu poluvodiča. Nedostatak DRAM-a je potreba za relativno složenim pogonskim sklopom i sporost u radu uzrokovana obnavljanjem memorije. Cijena mu je niža od cijene statičkih memorija, tako da je DRAM uobičajena radna memorija u suvremenim osobnim računalima.

ROM memorija – (read only memory) ispisna je memorija, tj. Memorija u koju se podatak može upisati samo jednom. Nakon upisa podatak se može čitati onoliko puta koliko se želi, ali ne i mijenjati, brisati ili upisivati novi podatak. Zato je primjena ove memorije ograničena na pohranu podataka koji su uvijek jednaki i nepromijenjeni. Takvi su primjerice podaci u svezi s prikazom slova na ekranu, dijelovima operacijskog sustava, itd. Takvih, nepromijenjivih podataka ima relativno malo, pa je ugrađeni ROM malog kapaciteta (128 KB).

Brza priručna memorija – cache;

Kada procesor dobavlja podatke iz RAM-a, treba mu prosječno oko 60ns. Kako mikroprocesor radi puno brže (u ciklusima od 2 ns) to gubi jako puno vremena čekajući na podatke iz RAM-a. Problem se pojavio zbog nerazmjera u povećanju brzine rada između procesora i memorije. Naime, veći broj komponenti na jedinici površine integriranog sklopa rezultira većim povećanjem brzine rada procesora u odnosu na memoriju, što je vidljivo na slici Sl.1.



Sl.1. Krivulje koje pokazuju nejednako povećanje efikasnosti obzirom na broj komponenti integriranih na chipu

Zbog toga je trebalo postojeći sustav sistemske memorije poboljšati ili ugradnjom brže memorije, što bi značajno poskupilo cijenu sustava ili odgovarajućim tehničkim inovacijama. U ovom slučaju, hijerarhijska organizacija memorije (Sl.2.),pokazala se kao idealna jer se dodavanjem malenog kapaciteta brze memorije (SRAM tehnologije) trebala ubrzati velika



Sl.2. Hijerarhijska organizacija memorije

količina spore i manje skupe memorije. Tako je na samom procesoru ugrađen tzv. L1 cache, mala priručna memorija čiji sadržaj sa lokacija procesor dobavlja jednako brzo kao i iz svojih registara, a izvan procesora ugrađuje se u računarski sustav tzv. L2 cache, brzi memorijski spremnik u koji se pohranjuje dio podataka iz RAM-a za koje se pretpostavlja da će ih procesor ubrzo zatražiti. L2 cache otprilike je duplo brži od RAMa i ima kapacitet od 512KB do 1MB.

Kako cache funkcionira?

Glavna se memorija sastoji od 2^n adresibilnog prostora riječi, kod kojeg svaku riječ dohvaćamo pomoću n-bitne adrese. Da bismo podatke prebacili u cache, memoriju dijelimo na odgovarajuće blokove riječi fiksne dužine K. Stoga je ukupan broj blokova M=2^n/K. Cache je podijeljen na C linija u koje može stati K riječi. Kako je cache manji od memorije to će i broj raspoloživih linija biti manji od ukupnog broja blokova (C<<M) što znači da će samo određeni broj blokova moći biti u cacheu. Ako se čita neka riječ izodređenog bloka tada se čitav taj blok prebacuje u jednu liniju cache memorije. Kako ima više blokova nego linija, jedna se linija nikada ne može trajno pridjeliti samo jednom bloku nego svaka linija sadrži oznaku koja govori o tome koji memorijski blok trenutno zauzima određenu liniju cachea. Tag je formiran od dijela bitova koji specificiraju adresu bloka u glavnoj memoriji (Sl.3.).


Sl.3. Struktura cachea i glavne memorije

Efikasnost cache memorije:

Efikasnost cache memorije određuje broj koji govori koliko je puta procesoru stvarno i isporučen podatak nakon što ga je zatražio. U tom kontekstu često se koriste termini kao što je pogodak (hit) koji označava da je podatak kojeg procesor traži stvarno i pronađen u cache memoriji. U slučaju da ga tamo nema kažemo da je riječ o promašaju (miss). Postoje tri različita tipa promašaja:
  • Nezaobilazni (compulsory) promašaj pri prvom posezanju za podacima iz memorije kada je cache još prazan;
  • Kapacitetni (capacity) promašaj koji se javlja ako se svi potrebni blokovi ne mogu smjestiti odmah u cache nego ih se dobavlja kasnije. Uzrok promašaja je nedostatna veličina cache memorije.
  • Konfliktni promašaj je onaj koji nastaje zbog primijenjene strategije prebacivanja podataka u cache. Naime ukoliko više blokova iz RAM-a pretendira na isto mjesto u cache memoriji, ne mogu se svi učitati odmah nego ih se dobavlja kasnije. Ponekad se ova vrsta promašaja zove promašajem kolizije ili interferencije;

Vrijeme potrebno za dobavljanje podatka iz cachea je vrijeme pogotka (hit time). Ukoliko se podatak ne dohvati, govorimo o promašaju, pa u tom slučaju dohvaćaju se podaci iz hijerarhijski niže memorijske strukture i premještaju u cache. Vrijeme koje protekne da se dohvati blok iz niže memorijske strukture, a zatim prebaci u cache i iz njega dohvati podatak, nazivamo globom za promašaj (miss penalty). Uspješnost pogađanja (hit ratio) mjeri se kao postotak uspješno dobavljenih podataka iz cachea u odnosu na ukupan broj posezanja, neuspješnost (miss ratio) je komplementarna vrijednost i računamo je kao 1-hit_ratio. Cilj je da uspješnost pogađanja bude što je moguće veća.

Primjer:

Pretpostavimo da za dohvaćanje podataka iz L1 cachea treba 10 ns, a iz glavne memorije 100ns. Ukoliko je upsješnost pogađanja 90%, to znači da će tijekom 10 posezanja za podacima, 9 biti u cacheu, a 1 u RAMu. Bez cachea, trebalo bi nam ukupno

T1=10*100ns=1000ns

vremena za dobavljanje podataka. U slučaju cache-a, treba nam

T2=1*100+9*10=190ns,

što znači da smo čitav postupak ubrzali za 1000/190=5.3 puta.

Sa ciljem da se što više poveća postotak uspješnosti, razvijene su različite tehnike, koje djeluju na različite uzroke promašaja. Tehnike se odnose na:

  • veličinu cachea
  • funkcije koje preslikavaju podatke iz RAMa u cache
  • algoritme temeljem kojih se postojeći blokovi iz cachea zamjenjuju novima
  • načinom na koji se upisuju blokovi
  • odabirom veličine blokova
  • brojem cache memorija

Heksadecimalno označavanje
Kada promatramo unutarnju aktivnost u računalu, baratamo sa nizovima bitova koji mogu biti prilično dugi. Takvi se nizovi zovu stream-ovi. Na žalost, ljudski mozak nije prilagođen baratanju sa stream-ovima. Samo prepisivanje uzorka od desetak nula i jedinica je zamorno i podložno pogreškama. Zbog toga, da bismo sve skupa pojednostavnili koristi se heksadecimalno označavanje