Priručna memorija: razlika između inačica
m bnz |
Nema sažetka uređivanja |
||
| Nije prikazana jedna međuinačica | |||
| Redak 1: | Redak 1: | ||
Priručna memorija''' ('''predmemorija''',<ref name="Kiš1"/> '''brza memorija''';<ref name="Kiš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.]</ref> | '''Priručna memorija''' ('''predmemorija''',<ref name="Kiš1"/> '''brza memorija''';<ref name="Kiš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.]</ref> (eng. ''cache'', izg. kȅš), mala je brza [[Računalna memorija|memorija]] koja služi za pohranu podataka koji se često koriste u nekom računalskom sustavu radi brza pristupa tim podatcima.<ref>[https://hjp.znanje.hr/index.php?show=search_by_id&id=f11lXhk%3D&keyword=cache ''cache'']. Hrvatski jezični portal. Pristupljeno 11. travnja 2026.</ref> Time ubrzava reakciju sustava.<ref>Boris Plavljanić: [https://pcchip.hr/helpdesk/sto-je-ram-cache-predmemorija-i-kako-ju-ocistiti-na-windowsima/ ''Što je ‘RAM cache’ (predmemorija) i kako ju očistiti na Windowsima? '']. PC Chip. 29. kolovoza 2023. Pristupljeno 11. travnja 2026.</ref> U nju se, za razliku od [[buffer|međuspremničke]] memorije, u priručnu memoriju može pisati/čitati na koje mjesto/lokaciju iz bilo kojeg mjesta iz ili u glavnu memoriju. Priručna memorije mogu biti izvršene u sklopovlju koje mogu biti pri CPU, GPU, DSP, ili nekoj računarskoj mreži ili slično. Dok kod programatske priručna memorije koja je izvedena u softveru mogu vršiti funkcije kao recimo diskovna pričuvna memorija, web pričuvna, memorija za baze podataka. | ||
Dosta se često koristi u internetskim preglednicima. Slabost je toga, ali privremena, što se nakon promjene sadržaja stranice i dalje vidi prijašnja učitana odnosno u predmemoriju spremljena inačica, budući da preglednik prvo poseže ondje. Događa se da čak i pri osvježavanju stranice preglednik i dalje učitava spremljeno iz predmeorije. Za to riješiti, izvodi se "tvrdo osvježavanje" kojim se umjesto običnog F5 na Windowsu pritisne Ctrl+F5 čime se pregledniku nalaže izravno posegnuti za podatcima s poslužiteljima i zanemariti sadržaj priručne memorije.<ref>Ana Božić: [https://www.ofir.hr/sto-je-cache-memorija-i-kako-je-obrisati/ '' Što je cache memorija i kako je obrisati?'']. Ofir. 29. srpnja 2025. Pristupljeno 11. travnja 2026.</ref> | |||
== Povijest == | == Povijest == | ||
Pojavom | Pojavom cijenijih (jeftinijih) ali sporijih dinamičkih [[DRAM]]-memorijskih kola većeg kapaciteta koje su prvo razvili i patentirali tvrtka IBM i Robert Dennard [[računalstvo u 1968.|1968.]], zasnovanim na [[poluvodič]]koj memorijskoj arhitekturi <ref>[https://www.ibm.com/ibm/history/ibm100/us/en/icons/dram/ ''DRAM'']. IBM. Neaktivna stranica. Pristupljeno 11. travnja 2026.</ref><ref>[https://www.ibm.com/history/dram ''History. IBM Heritage. Dynamic random-access memory (DRAM)'']. IBM. Pristupljeno 11. travnja 2026.</ref>, DRAM skopovlje se počelo pojavljivati tržištu u ranim 1970-tim, primjer [[Intel 1103]], što je do prave revolucije u razvoju računalnih sustava. Do tada najveća prepreka u razvoju računarstva bila je skupoća memorijskih skopova jer je većina memorija za računarske sustave je bilo zasnovano na tehnologijama [[magnetsko jezgrena memorija|magnetskih jezgra]] ili [[tranzistor]]a ([[SRAM]]). Zbog sve veće dostupnosti boljih i jeftinijih DRAM memorijskih integriranih krugova, dizajeri su počeli razvijati računalne sustave s većim adresnim kapacitetom, kraćim ciklusima za izvršavanje naredbi koje su zauzimale sve manji i manji prostor. Pošto tehnologija silikonskih i DRAM integriranih krugova nemaju iste performanse kao i mikroobradnici to je ubrzo dovelo je to neravnoteže između brzine obradnika i brzine glavne memorije. Pošto ova neravnoteža je izražena u brojkama koja je 2, 10 ili 100 puta većom osobito ako se uzme u obzir brzina sekundarne memorije tada dizajneri računalskih sustava imaju dilemu kako učiniti cijeli sustav efikasnjim a da najbrže komponente imaju što veću iskoristivost tokom svoga rada a da su ekonomski isplativi. | ||
| Redak 109: | Redak 112: | ||
== Algoritmi za upravljanje predmemorijom == | == Algoritmi za upravljanje predmemorijom == | ||
{{stupci|4| | |||
* Béládyev algoritam | * Béládyev algoritam | ||
* FIFO | * FIFO | ||
| Redak 129: | Redak 130: | ||
* AC | * AC | ||
* CAR | * CAR | ||
}} | |||
== Vidi == | |||
*[[ROM]] | |||
*[[RAM]] | |||
*[[Međuspremnik]], [[međumemorija]] (eng. ''buffer'') | |||
*[[Magnetsko jezgrena memorija]] (eng. ''magnetic-core memory'') | |||
== Izvori == | == Izvori == | ||
Posljednja izmjena od 11. travanj 2026. u 00:52
Priručna memorija (predmemorija,[1] brza memorija;[1] (eng. cache, izg. kȅš), mala je brza memorija koja služi za pohranu podataka koji se često koriste u nekom računalskom sustavu radi brza pristupa tim podatcima.[2] Time ubrzava reakciju sustava.[3] U nju se, za razliku od međuspremničke memorije, u priručnu memoriju može pisati/čitati na koje mjesto/lokaciju iz bilo kojeg mjesta iz ili u glavnu memoriju. Priručna memorije mogu biti izvršene u sklopovlju koje mogu biti pri CPU, GPU, DSP, ili nekoj računarskoj mreži ili slično. Dok kod programatske priručna memorije koja je izvedena u softveru mogu vršiti funkcije kao recimo diskovna pričuvna memorija, web pričuvna, memorija za baze podataka.
Dosta se često koristi u internetskim preglednicima. Slabost je toga, ali privremena, što se nakon promjene sadržaja stranice i dalje vidi prijašnja učitana odnosno u predmemoriju spremljena inačica, budući da preglednik prvo poseže ondje. Događa se da čak i pri osvježavanju stranice preglednik i dalje učitava spremljeno iz predmeorije. Za to riješiti, izvodi se "tvrdo osvježavanje" kojim se umjesto običnog F5 na Windowsu pritisne Ctrl+F5 čime se pregledniku nalaže izravno posegnuti za podatcima s poslužiteljima i zanemariti sadržaj priručne memorije.[4]
Povijest
Pojavom cijenijih (jeftinijih) ali sporijih dinamičkih DRAM-memorijskih kola većeg kapaciteta koje su prvo razvili i patentirali tvrtka IBM i Robert Dennard 1968., zasnovanim na poluvodičkoj memorijskoj arhitekturi [5][6], DRAM skopovlje se počelo pojavljivati tržištu u ranim 1970-tim, primjer Intel 1103, što je do prave revolucije u razvoju računalnih sustava. Do tada najveća prepreka u razvoju računarstva bila je skupoća memorijskih skopova jer je većina memorija za računarske sustave je bilo zasnovano na tehnologijama magnetskih jezgra ili tranzistora (SRAM). Zbog sve veće dostupnosti boljih i jeftinijih DRAM memorijskih integriranih krugova, dizajeri su počeli razvijati računalne sustave s većim adresnim kapacitetom, kraćim ciklusima za izvršavanje naredbi koje su zauzimale sve manji i manji prostor. Pošto tehnologija silikonskih i DRAM integriranih krugova nemaju iste performanse kao i mikroobradnici to je ubrzo dovelo je to neravnoteže između brzine obradnika i brzine glavne memorije. Pošto ova neravnoteža je izražena u brojkama koja je 2, 10 ili 100 puta većom osobito ako se uzme u obzir brzina sekundarne memorije tada dizajneri računalskih sustava imaju dilemu kako učiniti cijeli sustav efikasnjim a da najbrže komponente imaju što veću iskoristivost tokom svoga rada a da su ekonomski isplativi.
Razvoj programskih priručnih memorija
Zašto se koristi priručna memorija pri skopovlju
Priručna se koristi da bi se ubrzalo izvršavanje programa u nekom računalu ili računalnom sustavu tako da se pojedini podatci, programi ili dijelovi programa koji se često rabe drže u memoriji koja je brža za pristup mikroobradniku ili procesoru. Ovo je sobito važno su računalskim sustavima u kojima je brzina mikroobradnika ili obradnika mnogostruko viša od brzine glavne memorije (RAM-a).[7] Ako se u priručnoj memoriji (predmemoriji) spremaju dijelovi memorije koje se mnogostruko koriste, i na taj način ubrzaju izvođenje pojedinih programa. Spremanje i odabiranje dijelova memorije koje se pohranjivaju u predmemoriji mnogo puta podlježu nekom algoritmu za odbabir ili uklanjanja obično nekog fiksnog memorijskog bloka ili stranice kao jednog od strukturalnih načina upravljanja priručnom memorijom.
L1 i L2 priručna memorija
Priručna je inače drugi stupanj memorijske hijerarhije. U mnogim modernijim računarskim sustavima memorijska hierarhija ima četiti stupnja:
| Stupanj | Ime | Mjesto | Opaska |
|---|---|---|---|
| 1 | registar | nalazi se na na čipu mikroobradnika | brzina takta mikroprocesora |
| 2 | priručna memorija | L1 (na čipu), L2 izvan čipa | |
| 3 | glavna memorija | RAM | |
| 4 | sekundarna memorija | Disk, optički |
Priručna memorija obično vrši službu posrednika između procesora (obradnika) i glavne memorije, no nekada i ulogu posrednika između obradnika
i sekundarne memorije. Uloga memorijske hierarhije je stvaranje strukture i sistematizacije rada memorijskih sustava u računalskim sustavima u cilju poboljšanja rad cijeline sustava te efikasnijim kori u svojoj cijeni i izvedbi. Inače, hijerarhijska organizacija memorije pokazala se učinkovitim jer se dodavanjem malenog kapaciteta brze memorije (SRAM tehnologije) moge ubrzati velika količina sporrije i jeftinije 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.
Primjer i način rada
Ako imamo glavnu memoriju koja se sastoji od 2n adresibilnog prostora riječi, kod kojeg svaku riječ dohvaćamo pomoću n-bitne adrese. I ako na primjer imamo sustav sa sljedećim svojstvima:
- Brzina glavne memorije (RAM) (ciklus): 60ns
- Brzina mikroobradnika (ciklus): 2ns
- Opaska: mikroobradnik ima ciklus koji je 30 puta kraćin neki ciklus glavne memorije
Kada procesor dobavlja podatke iz glavne memorija (RAM-a), treba mu prosječno oko 60ns za svaku operaciju. Pošto mikroprocesor radi puno brže (u ciklusima od 2 ns, tj 30 puta) znači da gubi jako puno vremena čekajući na podatke iz RAM-a, tj. za jedno memorijsku operaciju mikroobradnik može obaviti 30 operacija. 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.
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 manja 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. Pošto je priručna memorija mnogostruko brža od glavne memorije, za svako čitanje i zapisivanje u glavu memoriju potrebno je čekati određeno vrijeme. 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
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...)
Algoritmi za upravljanje predmemorijom
- Béládyev algoritam
- FIFO
- LIFO ili FILO
- LRU
- TLRU
- MRU
- P-MRU
- RR
- SLRU
- LFU
- LFRU
- LFUDA
- LIRS
- Clock-PRO
- ARC
- AC
- CAR
Vidi
- ROM
- RAM
- Međuspremnik, međumemorija (eng. buffer)
- Magnetsko jezgrena memorija (eng. magnetic-core memory)
Izvori
- ↑ 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.]
- ↑ cache. Hrvatski jezični portal. Pristupljeno 11. travnja 2026.
- ↑ Boris Plavljanić: Što je ‘RAM cache’ (predmemorija) i kako ju očistiti na Windowsima? . PC Chip. 29. kolovoza 2023. Pristupljeno 11. travnja 2026.
- ↑ Ana Božić: Što je cache memorija i kako je obrisati?. Ofir. 29. srpnja 2025. Pristupljeno 11. travnja 2026.
- ↑ DRAM. IBM. Neaktivna stranica. Pristupljeno 11. travnja 2026.
- ↑ History. IBM Heritage. Dynamic random-access memory (DRAM). IBM. Pristupljeno 11. travnja 2026.
- ↑ Smith, AJ 1982, "Cache Memorijes", 1982, Computing Surveys, Vol. 14, No. 3, rujan