Priručna memorija

Izvor: Wikipedija
Skoči na: orijentacija, traži

Priručna memorija (predmemorija,[1] brza memorija;[1] engl. cache), mala je memorija koja služi za pohranu podataka koji se često koriste. U nju se, za razliku od međuspremničke memorije može pisati na koje mjesto se želi i čitati s kojeg mjesta se želi.

Zašto se koristi predmemorija[uredi VE | uredi]

Kada procesor dobavlja podatke iz RAM-a, treba mu prosječno oko 60ns. Kako mikroprocesor radi puno brže (u ciklusima od 2 ns) znači da 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, a da bi se na neki način donekle smanjila ta razlika u brzini između brzog mikroprocesora i sporih memorija i ostalih komponenti računala, uvodi se cache memorija.


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, pokazala se kao dobrom jer se dodavanjem malenog kapaciteta brze memorije (SRAM tehnologije) trebala ubrzati velika količina spore i manje skupe memorije. Tako je na samom procesoru ugrađen tzv. L1 predmemorija, mala priručna memorija čiji sadržaj s lokacija procesora dobavlja jednako brzo kao i iz svojih registara (spremnika), 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.

Način rada priručne memorije[uredi VE | uredi]

Glavna se memorija sastoji od 2n adresibilnog prostora riječi, kod kojeg svaku riječ dohvaćamo pomoću n-bitne adrese. Da bismo podatke prebacili u priručnu memoriju, a glavnu memoriju dijelimo na odgovarajuće blokove riječi fiksne dužine K. Stoga je ukupan broj blokova . Priručna memorija je podijeljena na C linija u koje može stati K riječi. Kako je priručna memorija manji od glavne 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 priručnoj memoriji. Ako se čita neka riječ iz određenog bloka tada se čitav taj blok prebacuje u jednu liniju priručne 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 priručne memorije. Oznaka se stvara od dijela bitova koji naznačavaju adresu bloka u glavnoj memoriji

Učinkovitost priručne memorije[uredi VE | uredi]

Učinkovitost priručne 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 izraz kao što je pogodak (engl. 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 (engl. miss).

Postoje tri različita tipa promašaja:

  • nezaobilazni (engl. compulsory) promašaj pri prvom posezanju za podacima iz memorije kada je cache još prazan;
  • kapacitetni (engl. 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 priručne memorije.
  • konfliktni promašaj je onaj koji nastaje zbog primijenjene strategije prebacivanja podataka u cache. Naime ako više blokova iz RAM-a pretendira na isto mjesto u priručnoj (cache) memoriji, ne mogu se svi učitati odmah nego ih se dobavlja kasnije. Ponekad se ova vrsta promašaja zove promašajem kolizije (sudara) ili interferencije.


Vrijeme potrebno za dobavljanje podatka iz priručne memorije je vrijeme pogotka (engl. hit time). Ako 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 međuspremnik. Vrijeme koje protekne da se dohvati blok iz niže memorijske strukture, a zatim prebaci u priručnu memoriju 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 priručne memorije u odnosu na ukupan broj posezanja, neuspješnost (engl. 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 sljedeće:

  • brzina dohvaćanja podataka iz L1 priručne memorije je 10 ns
  • brzina dohvaćanja podataka iz glavne memorije je 100ns
  • uspješnost pogađanja 90 %, to znači da će tijekom 10 posezanja za podacima, 9 biti u priručnoj memoriji, a 1 u RAM-u.


Bez priručne memorije, trebalo bi nam ukupno

T1=10*100ns=1000ns

vremena za dobavljanje podataka. U slučaju priručne memorije, treba nam

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

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

S 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 priručne memorije
  • funkcije koje preslikavaju podatke iz RAM-a 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 priručnih memorija memorija (L1,L2...)

Izvori[uredi VE | uredi]

  1. 1,0 1,1 Miroslav Kiš, Joško Buljan, Sanja Vuković, Ozren Anić, Englesko – hrvatski informatički rječnik : s računalnim nazivljem, Školska knjiga, Zagreb, 1993., str. [71.]

Vanjske poveznice[uredi VE | uredi]