From Wikipedia, the free encyclopedia
Priručna memorija (predmemorija,[1] brza memorija;[1] engl. cache), mala je memorija koja služi za pohranu podataka koji se često koriste u nekom računalskom sustavu. 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.
Pojavom jefitnijih ali sporijih dinamičkih DRAM memorijskih većeg kapaciteta kola zasnovanim na kondenzatorskoj tehnologiji koje je prvo razvila i patentiral tvrtka IBM 1967 godine.[2] DRAM skopovlje se počelo pojavljivati tržištu u ranim 1970-tim, primjer Intel 1103, što je do prave revolucije u razvoju računarskih 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 jezgri 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 mikroprocesori 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.
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 mikroprocesoru ili procesoru. Ovo je sobito važno su računalskim sustavima u kojima je brzina mikroprocesora ili obradnika mnogostruko viša od brzine glavne memorije (RAM-a).[3] 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.
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 čipu mikroprocesora | 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 cjeline 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.
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:
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 mikroprocesor 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 pridijeliti 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 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:
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:
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:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.