Dom - Podaci
Utjecaj predmemorije na performanse računala. Što je predmemorija tvrdog diska i zašto je potrebna? Za što je odgovorna veličina predmemorije?

Ne radi se o gotovini, već o predmemorija-procesorska memorija i drugo. Od volumena predmemorija-trgovci memorijom napravili su još jedan komercijalni fetiš, posebno s predmemorijom središnjih procesora i tvrdih diskova (imaju je i video kartice - ali još nisu došle do toga). Dakle, tu je XXX procesor s 1MB L2 cache memorije i potpuno isti XYZ procesor s 2MB cache memorije. Pogodite koji je bolji? Ah - nemojte to učiniti odmah!

Predmemorija-memorija je međuspremnik koji pohranjuje ono što se može i/ili treba ostaviti sa strane za kasnije. Procesor radi i dolazi do situacija kada međupodatke treba negdje pohraniti. Pa, naravno u cache! - uostalom, on je nekoliko redova veličine brži od RAM-a, jer... nalazi se u samom procesoru i obično radi na istoj frekvenciji. A onda će nakon nekog vremena izvući te podatke natrag i ponovno ih obraditi. Grubo rečeno, to je kao sortirka krumpira na pokretnoj traci, koja svaki put kad naiđe na nešto osim krumpira (mrkvu), to baca u kutiju. A kad se napuni, ustane i izvadi ga njegov u susjednu sobu. U ovom trenutku pokretna traka stoji i zapaža se zastoj. Volumen kutije je predmemorija u ovoj analogiji. I Koliko njegov Trebate li 1MB ili 12? Jasno je da ako njegov volumen je mali, morat ćete potrošiti previše vremena na uklanjanje i to će biti jednostavno, ali od određenog volumena njegov daljnje povećanje neće učiniti ništa. Dobro, sortirnica će imati kutiju za 1000 kg mrkve - ali neće imati toliko tijekom cijele smjene i zbog toga NEĆE POSTATI DVA PUTA BRŽI! Postoji još jedna suptilnost - velika predmemorija može uzrokovati povećanje kašnjenja u pristupu, prvo, a istodobno se povećava vjerojatnost pogrešaka u njemu, na primjer tijekom overclockinga - drugo. (o tome KAKO utvrditi stabilnost/nestabilnost procesora u ovom slučaju i otkriti da se pogreška pojavljuje upravo u njegov cache, testirajte L1 i L2 - možete pročitati ovdje.) Treće - predmemorija pojede pristojnu količinu površine čipa i proračun tranzistora procesorskog kruga. Isto vrijedi i za predmemorija memorija tvrdog diska. A ako je arhitektura procesora jaka, imat će predmemoriju od 1024 KB ili više koju će zahtijevati mnoge aplikacije. Ako imate brzi HDD, prikladno je 16MB ili čak 32MB. Ali nikakva količina od 64 MB predmemorije neće to učiniti njegov brži ako se radi o trimu koji se zove zelena verzija (Green WD) s brzinom od 5900 umjesto potrebnih 7200, čak i ako potonji ima 8MB. Onda Intel i AMD procesori to koriste drugačije predmemorija(općenito govoreći, AMD je učinkovitiji i njihovim procesorima često odgovaraju niže vrijednosti). Osim toga, Intel predmemorija općenito, ali za AMD je osobno za svaku jezgru. Najbrži predmemorija L1 za AMD procesore je 64 KB za podatke i upute, što je dvostruko više nego za Intel. Predmemorija treća razina L3 obično je prisutna u vrhunskim procesorima poput AMD Phenom II 1055T X6 Socket AM3 2.8GHz ili konkurent Intel Core i7-980X. Prije svega, igre vole velike količine predmemorije. I predmemorija Mnogim profesionalnim aplikacijama se NE sviđa (pogledajte Računalo za renderiranje, uređivanje videa i profesionalne aplikacije). Točnije, prema njemu su uglavnom ravnodušni oni najzahtjevniji. Ali ono što definitivno ne biste trebali učiniti je odabrati procesor na temelju veličine predmemorije. Stari Pentium 4 u svojim najnovijim pojavama također je imao 2 MB predmemorije na radnim frekvencijama znatno iznad 3 GHz - usporedba njegov performanse s jeftinim dvojezgrenim Celeronom E1*** koji radi na frekvencijama od oko 2 GHz. Od starca neće ostaviti kamen na kamenu. Relevantniji primjer je visokofrekventni dual-core E8600, koji košta gotovo 200 USD (navodno zbog 6MB cache memorije) i Athlon II X4-620 2.6GHz, koji ima samo 2MB. To ne sprječava Athlonea da ubije svog konkurenta.

Kao što vidite na grafikonima, nema predmemorija neće zamijeniti dodatne jezgre. Athlon s 2MB cache-a (crveno) lako pobjeđuje Cor2Duo s 6MB cache-a, čak i pri nižoj frekvenciji i gotovo upola nižoj cijeni. Mnogi ljudi to također zaboravljaju predmemorija prisutan je u video karticama jer, općenito govoreći, one također imaju procesore. Nedavni primjer je video kartica GTX460, gdje su uspjeli ne samo smanjiti sabirnicu i kapacitet memorije (o čemu će kupac pogoditi) - već i PRIPREMA shaderi, odnosno, od 512 Kb do 384 Kb (o čemu kupac NEĆE pogoditi). A to će također dodati svoj negativni doprinos produktivnosti. Također će biti zanimljivo otkriti ovisnost performansi o veličini predmemorije. Ispitajmo koliko brzo raste s povećanjem veličine predmemorije na primjeru istog procesora. Kao što znate, procesori serije E6***, E4*** i E2*** razlikuju se samo po veličini predmemorije (svaki 4, 2 i 1 MB). Radeći na istoj frekvenciji od 2400 MHz, pokazuju sljedeće rezultate.

Kao što vidite, rezultati se ne razlikuju previše. Reći ću više - da je uključen procesor kapaciteta 6 MB, rezultat bi se malo više povećao, jer procesori dosežu zasićenje. Ali za modele s 512Kb pad bi bio primjetan. Drugim riječima, 2MB je dovoljno čak i za igre. Ukratko, možemo izvući sljedeći zaključak: predmemorija dobro je kad svega ima VEĆ puno. Naivno je i glupo mijenjati brzinu tvrdog diska ili broj jezgri procesora za veličinu predmemorije po istoj cijeni, jer čak ni najprostranija kutija za sortiranje neće zamijeniti drugi sortirnik, ali ima i dobrih primjera na primjer, Pentium Dual-Core u ranoj reviziji na 65 nm procesu imao je 1 MB predmemorije za dvije jezgre (serija E2160 i slične), a kasnija 45-nm revizija serije E5200 još uvijek ima 2 MB, ako su sve ostale stvari jednake ( i što je najvažnije - CIJENA). Naravno, trebali biste odabrati ovo drugo.

Predmemorija je međuspremnik s brzim pristupom koji sadrži informacije koje će najvjerojatnije biti zatražene. Pristup podacima u predmemoriji brži je od dohvaćanja izvornih podataka iz operativne memorije (RAM) i brži od vanjske memorije (tvrdi disk ili solid-state disk), čime se smanjuje prosječno vrijeme pristupa i povećava ukupna izvedba računalnog sustava.

Brojni modeli središnjih procesorskih jedinica (CPU) imaju vlastitu predmemoriju kako bi se smanjio pristup memoriji s izravnim pristupom (RAM), koja je sporija od registara. Predmemorija može pružiti značajne prednosti performansi kada je brzina takta RAM-a znatno niža od brzine takta CPU-a. Brzina takta za predmemoriju obično nije mnogo manja od brzine procesora.

Razine predmemorije

CPU predmemorija podijeljena je na nekoliko razina. U današnjem procesoru opće namjene broj razina može doseći čak 3. Predmemorija razine N+1 obično je veće veličine i sporija u brzini pristupa i prijenosu podataka od predmemorije razine N.

Najbrža memorija je predmemorija prve razine - L1-cache. Zapravo, on je sastavni dio procesora, budući da se nalazi na istom čipu i dio je funkcionalnih blokova. U modernim procesorima L1 predmemorija je obično podijeljena u dvije predmemorije, predmemoriju instrukcija i predmemoriju podataka (Harvardska arhitektura). Većina procesora bez L1 predmemorije ne može raditi. L1 predmemorija radi na frekvenciji procesora i općenito joj se može pristupiti u svakom taktu. Često je moguće izvesti više operacija čitanja/pisanja istovremeno. Latencija pristupa obično je 2-4 ciklusa takta jezgre. Volumen je obično mali - ne više od 384 KB.

Drugi najbrži je L2-cache - predmemorija druge razine, obično smještena na čipu, poput L1. U starijim procesorima, skup čipova na matičnoj ploči. Volumen L2 predmemorije od 128 KB do 1?12 MB. U modernim višejezgrenim procesorima, predmemorija druge razine, koja se nalazi na istom čipu, zasebna je memorija - s ukupnom veličinom predmemorije od nM MB, svaka jezgra ima nM/nC MB, gdje je nC broj procesorskih jezgri. Obično je latencija L2 predmemorije koja se nalazi na jezgrenom čipu od 8 do 20 ciklusa takta jezgre.

Treća razina predmemorije je najmanje brza, ali može biti vrlo impresivne veličine - više od 24 MB. L3 predmemorija je sporija od prethodnih predmemorija, ali još uvijek značajno brža od RAM-a. U višeprocesorskim sustavima je u uobičajenoj uporabi i namijenjen je za sinkronizaciju podataka iz različitih L2.

Ponekad postoji i predmemorija 4. razine, obično se nalazi u zasebnom čipu. Korištenje predmemorije razine 4 opravdano je samo za poslužitelje i velika računala visokih performansi.

Problem sinkronizacije između različitih predmemorija (i jednog i više procesora) rješava se koherencijom predmemorije. Postoje tri opcije za razmjenu informacija između predmemorija različitih razina, ili, kako se kaže, arhitektura predmemorije: uključiva, isključiva i neisključiva.

Koliko je L3 predmemorija važna za AMD procesore?

Doista, ima smisla višejezgrene procesore opremiti namjenskom memorijom koju će dijeliti sve dostupne jezgre. U ovoj ulozi, brza predmemorija treće razine (L3) može značajno ubrzati pristup podacima koji se najčešće traže. Tada jezgre, ako je moguće, neće morati pristupati sporoj glavnoj memoriji (RAM).

Barem u teoriji. Nedavno AMD najavio procesor Athlon II X4, koji je Phenom II X4 model bez L3 cachea, nagovještavajući da nije toliko potreban. Odlučili smo izravno usporediti dva procesora (sa i bez L3 predmemorije) kako bismo testirali kako predmemorija utječe na performanse.

Kliknite na sliku za povećanje.

Kako radi predmemorija?

Prije nego što zaronimo u testove, važno je razumjeti neke osnove. Princip predmemorije je prilično jednostavan. Predmemorija sprema podatke u međuspremnik što je moguće bliže procesnim jezgrama procesora kako bi se zahtjevi procesora smanjili na udaljeniju i sporiju memoriju. Na modernim stolnim platformama hijerarhija predmemorije uključuje čak tri razine koje prethode pristupu RAM-u. Štoviše, predmemorije druge i, posebno, treće razine služe ne samo za međuspremnik podataka. Njihova je svrha spriječiti preopterećenje procesorske sabirnice kada jezgre trebaju razmjenjivati ​​informacije.

Pogoci i promašaji

Učinkovitost arhitektura predmemorije mjeri se stopom pogodaka. Zahtjevi za podacima koje predmemorija može zadovoljiti smatraju se pogocima. Ako ova predmemorija ne sadrži potrebne podatke, tada se zahtjev prosljeđuje dalje duž memorijskog cjevovoda i broji se promašaj. Naravno, promašaji dovode do više vremena potrebnog za dobivanje informacija. Kao rezultat toga, u računalnim cjevovodima pojavljuju se "mjehurići" (mirovanja) i kašnjenja. Hitovi, naprotiv, omogućuju vam da zadržite maksimalnu izvedbu.

Ulaz u predmemoriju, ekskluzivnost, koherencija

Pravila zamjene određuju kako se oslobađa prostor u predmemoriji za nove unose. Budući da se podaci upisani u predmemoriju na kraju moraju pojaviti u glavnoj memoriji, sustavi to mogu činiti istovremeno s pisanjem u predmemoriju (pisanje kroz) ili mogu označiti područja podataka kao "prljava" (unazadno pisanje) i pisati u memorije kada se izbaci iz predmemorije.

Podaci u nekoliko razina predmemorije mogu se pohraniti ekskluzivno, odnosno bez redundancije. Tada nećete pronaći iste podatkovne linije u dvije različite hijerarhije predmemorije. Ili predmemorije mogu raditi uključivo, to jest, niže razine predmemorije zajamčeno sadrže podatke prisutne u gornjim razinama predmemorije (bliže jezgri procesora). AMD Phenom koristi ekskluzivnu L3 predmemoriju, dok Intel slijedi inkluzivnu strategiju predmemorije. Protokoli koherentnosti osiguravaju cjelovitost i svježinu podataka u različitim jezgrama, razinama predmemorije, pa čak i procesorima.

Veličina predmemorije

Veća predmemorija može sadržavati više podataka, ali ima tendenciju povećanja latencije. Osim toga, velika predmemorija troši znatan broj procesorskih tranzistora, pa je važno pronaći ravnotežu između proračuna tranzistora, veličine matrice, potrošnje energije i performansi/latencije.

Asocijativnost

Unosi u RAM-u mogu se izravno preslikati u predmemoriju, to jest, postoji samo jedna pozicija predmemorije za kopiju podataka iz RAM-a, ili mogu biti n-smjerni asocijativni, to jest, postoji n mogućih lokacija u predmemorij gdje ovo podaci mogu biti pohranjeni. Viši stupnjevi asocijativnosti (do potpuno asocijativnih predmemorija) pružaju veću fleksibilnost predmemorije jer postojeće podatke u predmemoriji nije potrebno ponovno pisati. Drugim riječima, visok n-stupanj asocijativnosti jamči veću stopu pogodaka, ali također povećava latenciju jer je potrebno više vremena za provjeru svih tih asocijacija za pogodak. Obično je najviši stupanj povezanosti razuman za posljednju razinu predmemorije, budući da je tamo dostupan maksimalni kapacitet, a traženje podataka izvan ove predmemorije rezultirat će pristupom procesora sporom RAM-u.

Evo nekoliko primjera: Core i5 i i7 koriste 32 KB L1 predmemorije s 8-smjernom asocijativnošću za podatke i 32 KB L1 predmemorije s 4-smjernom asocijativnošću za upute. Razumljivo je da Intel želi da upute budu brže dostupne i da L1 predmemorija podataka ima maksimalnu stopu pogodaka. L2 predmemorija na Intelovim procesorima ima 8-smjernu asocijativnost, a Intel L3 predmemorija još je pametnija jer implementira 16-smjernu asocijativnost za maksimiziranje pogodaka.

Međutim, AMD slijedi drugačiju strategiju s Phenom II X4 procesorima, koji koriste dvosmjernu asocijativnu L1 predmemoriju za smanjenje latencije. Kako bi se nadoknadili mogući propusti, kapacitet predmemorije je udvostručen: 64 KB za podatke i 64 KB za upute. L2 predmemorija ima 8-smjernu asocijativnost, poput Intelovog dizajna, ali AMD-ova L3 predmemorija radi s 48-smjernom asocijativnošću. Ali odluka da se izabere jedna arhitektura predmemorije umjesto druge ne može se procijeniti bez razmatranja cijele CPU arhitekture. Sasvim je prirodno da rezultati testa imaju praktičan značaj, a cilj nam je bio upravo praktična provjera cijele ove složene strukture predmemoriranja na više razina.

Svaki moderni procesor ima namjensku predmemoriju koja pohranjuje procesorske upute i podatke, spremne za upotrebu gotovo trenutno. Ova razina se obično naziva predmemorija razine 1 ili L1 i prvi put je predstavljena u 486DX procesorima. Nedavno su AMD procesori postali standard sa 64 KB L1 predmemorije po jezgri (za podatke i upute), a Intel procesori koriste 32 KB L1 predmemorije po jezgri (također za podatke i upute)

L1 predmemorija se prvi put pojavila na 486DX procesorima, nakon čega je postala sastavni dio svih modernih procesora.

Predmemorija druge razine (L2) pojavila se na svim procesorima nakon izdavanja Pentiuma III, iako su prve njegove implementacije na pakiranju bile u procesoru Pentium Pro (ali ne na čipu). Moderni procesori opremljeni su s do 6 MB L2 predmemorije na čipu. U pravilu se taj volumen dijeli između dvije jezgre na procesoru Intel Core 2 Duo, na primjer. Tipične L2 konfiguracije daju 512 KB ili 1 MB predmemorije po jezgri. Procesori s manjim veličinama L2 predmemorije obično su na nižoj cjenovnoj razini. Ispod je dijagram ranih implementacija L2 predmemorije.

Pentium Pro je imao L2 predmemoriju u pakiranju procesora. U sljedećim generacijama Pentiuma III i Athlona, ​​L2 predmemorija implementirana je kroz zasebne SRAM čipove, što je bilo vrlo uobičajeno u to vrijeme (1998., 1999.).

Naknadna objava procesne tehnologije do 180 nm omogućila je proizvođačima da konačno integriraju L2 predmemoriju na procesorsku matricu.


Prvi dvojezgreni procesori jednostavno su koristili postojeće dizajne koji su uključivali dva matrica po paketu. AMD je predstavio dvojezgreni procesor na monolitnom čipu, dodao memorijski kontroler i prekidač, a Intel je jednostavno sastavio dva jednojezgrena čipa u jednom paketu za svoj prvi dvojezgreni procesor.


Po prvi put L2 predmemorija počela se dijeliti između dvije računalne jezgre na procesorima Core 2 Duo. AMD je otišao dalje i stvorio svoj prvi četverojezgreni Phenom od nule, a Intel je ponovno upotrijebio par matrica, ovaj put dva dvojezgrena Core 2 matrica, za svoj prvi četverojezgreni procesor kako bi smanjio troškove.

Predmemorija treće razine postoji od ranih dana procesora Alpha 21165 (96 KB, procesori predstavljeni 1995.) ili IBM Power 4 (256 KB, 2001.). Međutim, u arhitekturama temeljenim na x86, L3 predmemorija se prvi put pojavila s modelima Intel Itanium 2, Pentium 4 Extreme (Gallatin, oba procesora 2003.) i Xeon MP (2006.).

Rane implementacije jednostavno su omogućile drugu razinu u hijerarhiji predmemorije, iako moderne arhitekture koriste L3 predmemoriju kao veliki, zajednički međuspremnik za prijenos podataka između jezgri u višejezgrenim procesorima. To je naglašeno visokim n-stupnjem asocijativnosti. Bolje je tražiti podatke malo dulje u predmemoriji nego završiti u situaciji u kojoj nekoliko jezgri koristi vrlo spor pristup glavnom RAM-u. AMD je prvi predstavio L3 cache na desktop procesoru s već spomenutom Phenom linijom. 65 nm Phenom X4 sadržavao je 2 MB dijeljene L3 predmemorije, a moderni 45 nm Phenom II X4 već ima 6 MB dijeljene L3 predmemorije. Intel Core i7 i i5 procesori koriste 8 MB L3 predmemorije.

Moderni četverojezgreni procesori imaju namjenske L1 i L2 predmemorije za svaku jezgru, kao i veliku L3 predmemoriju koju dijele sve jezgre. Zajednička L3 predmemorija također omogućuje razmjenu podataka na kojima jezgre mogu raditi paralelno.


Pozdrav ljudi, razgovarajmo o procesoru, točnije o njegovoj predmemoriji. Predmemorija procesora može biti različita, npr. trenutno imam Pentium G3220 (1150 socket), ovo je moderan procesor i ima 3 MB predmemorije. Ali u isto vrijeme, stari model Pentium D965 (socket 775) ima 4 MB predmemorije. Ali u isto vrijeme, G3220 je nekoliko puta brži od D965, ono što mislim je da je predmemorija dobra, ali glavna stvar je da je predmemorija moderna. Priručna memorija starijih procesora mnogo je sporija od one novih, imajte to na umu.

Razgovarajmo o nekim uređajima koji utječu na performanse. Gledaj, uzmimo tvrdi disk, ima li predmemoriju? Da, postoji, ali je mali, iako ima blagi utjecaj na performanse. Što se onda događa? Zatim dolazi RAM, sve s čime radi program ili procesor, sve se to nalazi u RAM-u. Ako u RAM-u nema podataka, oni se čitaju s tvrdog diska, a to je vrlo sporo. Ali RAM je već vrlo brz, može ga biti dosta. Ali RAM je brz u usporedbi s tvrdim diskom; za procesor još uvijek nije jako brz, pa stoga potonji također ima svoju predmemoriju, koja je već super brza!

Na što utječe predmemorija procesora? Upravo u tu predmemoriju procesor sprema ono što često koristi, odnosno sve vrste naredbi i uputa. Prema tome, što ga je više, to bolje, ali to nije sasvim točno. Koliko predmemorije imate? Ako ne znate, onda ću vam pokazati kako da saznate, sve je jednostavno. Pa gle kakva zanimljiva situacija, vratimo se opet na stare procese. Čini se da ako ima puno predmemorije, onda je ovo dobro. Ali tu je Q9650 procesor (775 socket), koji ima 12 MB cache memorije, ali nije ni blizu modernim Core i5 pa čak ni Core i3 modelima. I5 ima puno manje cachea, odnosno samo 6 MB, a i3 ima još manje cachea - samo 3 MB.

Razumijem da su općenito moderni procesori puno brži od starih. Ali ja ne govorim o tome. Predmemorija i predmemorija se razlikuju; vrhunski Q9650 jednostavno ima sporu predmemoriju u usporedbi s procesorima na modernom socketu. Dakle, tih 12 MB nema nikakve koristi. Ovo je sve što mislim: ne jurite kvantitetu, jurite kvalitetu. Dakle ovako. Sve ovo sam vam napisao kao napomenu, nadam se da će vam biti od koristi

Evo jednostavne slike kako predmemorija radi:

I ovdje je još jedna slika, ovdje je također naznačen drugi uređaj, ovo je kontroler, koji vam samo govori ima li podataka u cacheu ili ne:

Cache memorija je super brza. Nisam toliko upućen u procesore, ali bilo bi zanimljivo znati, da je ova predmemorija... 100 MB... ili čak 1 GB... bi li procesor bio brži? Ovo je, naravno, fantastično čak i sada, ali sada postoje procesori s ogromnom količinom predmemorije... oko 30 MB ili više.. Nisam siguran u vezi ovoga, ali čini se da je ova predmemorija jako skupa i općenito ga je teško staviti u procesor, mislim na veliki volumen

Pa, sada ću vam pokazati kako saznati koliko predmemorije ima procesor. Ako imate Windows 10, onda je ovo super, jer može prikazati sve predmemorije, postoje tri razine. Iako se treća razina čini najvažnijom, ona je i najveća. Dakle, pogledajte, otvorite upravitelj zadataka i idite na karticu Performance i ovdje na kartici CPU možete vidjeti informacije o predmemorije, ovdje je:

Ovdje možete vidjeti da imam Pentium G3220, prilično dobar procesor, iako jeftin. Ali zapravo je brži od mnogih modela na socketu 775, koji se mogu nazvati skoro vrhunskim modelima i koji imaju mnogo više predmemorije... Ovo su stvari...

Ali iskreno ću vam reći da ovo nije jasan način da vidite koliko predmemorije procesor ima. Savjetujem vam da koristite uslužni program CPU-Z ako mislite: da, ovo je program, moram ga instalirati i sve to, ali hajde... Onda stani! Ovaj program koriste cool overlockeri koji overclockiraju svoje procesore. Tijekom instalacije, uslužni program ne stvara hrpu datoteka i zapravo je instalacija samo raspakiranje programa u programske datoteke, a zatim se cpuz.exe može kopirati bilo gdje i pokrenuti, radit će! Samo su ga lansirali i to je to, prikupila je informacije i pogledajte! Možete ga lako preuzeti s interneta jer ga ima na svakom uglu. Samo pazite da ne uhvatite viruse, preuzmite, na primjer, na soft portalu. CPU-Z radi na gotovo svim verzijama Windowsa, osim onih najstarijih...

Općenito, možete ga preuzeti na ovoj stranici: cpuid.com, samo iskreno nisam znao za to i navikao sam ga preuzimati s drugih stranica!

Pa, nadam se da ćete ga moći preuzeti bez problema. Sada ga pokrenete i sve o procesoru vam je na dohvat ruke. Pa sam pokrenuo CPU-Z i evo što je pokazao o mom Pentiumu G3220:

Tamo gdje sam zaokružio okvir, tamo se prikazuje predmemorija. Što je put, pa, kaže se 8-smjer, 12-smjer, pa, ne znam što je to, oprostite. Ali kao što možete vidjeti ovdje, možete jasno vidjeti ne samo predmemoriju, već i druge informacije, frekvenciju, jezgre i niti. Pa, ono što je također zanimljivo je što ovdje pokazuju jedan ili dva skrovišta. Pa, ovdje imam samo 3 MB upisana, odnosno imam samo 3 MB keša.

No, na primjer, što se tiče top-end Q9650, tamo je situacija malo drugačija, iako ima 12 MB cachea, ali to su u biti dva bloka od po 6 MB i CPU-Z to određuje:

Usput, kao što vidite, postoji overclocking na 4 GHz, što nije loše. Usput, takav overclocking može biti zračno hlađen. Ali to je sasvim druga priča...

Inače, još jedna zanimljivost je da modeli na socketu 775 nemaju L3 cache treće razine... Odnosno, postoje samo L1 i L2..., ali nisam znao...

Dakle, ovo su stvari. Nadam se da sam sve jasno napisao. Još jednom ponavljam, nemojte juriti za količinom. Tako da stvarno ne žalim zbog toga, ali svejedno... Ukratko, uzeo sam ga i izgradio si računalo na 1150 utičnici. Pa, mislim da je sve u redu. Ali malo sam se uvrijedio kad sam saznao da je izašao socket 1151 i da košta isto, ili čak malo jeftinije... Ali tamo su procesori zapravo brži... Pa dobro. Upravo sam kupio računalo već godinama, ali bilo mi je drago što moja ploča, i ovaj Asus Gryphon Z87, podržava procesore temeljene na jezgri Devil’s Canyon! Ovo je bio poklon, jer je Intel ranije izjavio da će ove procesore podržavati samo Z97 čipset, ali ja sam uzeo prokleti Z87!

Ukratko, ovo su stvari

To je sve dečki. Nadam se da će vam sve biti u redu i da su vam ove informacije bile korisne, sretno

kući! cache procesor 30.07.2016

virtmachine.ru

Utjecaj predmemorije na performanse računala

Svi korisnici dobro poznaju elemente računala kao što su procesor, koji je odgovoran za obradu podataka, kao i memorija s izravnim pristupom (RAM ili RAM), koja je odgovorna za njihovo pohranjivanje. Ali vjerojatno ne znaju svi da postoji i predmemorija procesora (Cache CPU), odnosno RAM samog procesora (tzv. ultra-RAM).

Funkcija predmemorije

Koji je razlog koji je potaknuo programere računala da koriste namjensku memoriju za procesor? Nije li kapacitet RAM-a računala dovoljan?

Doista, dugo su vremena osobna računala radila bez predmemorije. No, kao što znate, procesor je najbrži uređaj na osobnom računalu i njegova se brzina povećava sa svakom novom generacijom CPU-a. Trenutno se njegova brzina mjeri u milijardama operacija u sekundi. U isto vrijeme, standardni RAM nije značajno povećao svoje performanse tijekom svoje evolucije.

Općenito govoreći, postoje dvije glavne tehnologije memorijskih čipova – statička memorija i dinamička memorija. Ne ulazeći u detalje njihove konstrukcije, reći ćemo samo da statička memorija, za razliku od dinamičke, ne zahtijeva regeneraciju; Osim toga, statička memorija koristi 4-8 tranzistora za jedan bit informacije, dok dinamička memorija koristi 1-2 tranzistora. Sukladno tome, dinamička memorija je puno jeftinija od statičke memorije, ali u isto vrijeme puno sporija. Trenutno se RAM čipovi proizvode na temelju dinamičke memorije.

Približna evolucija omjera brzine procesora i RAM-a:

Dakle, kada bi procesor cijelo vrijeme uzimao informacije iz RAM-a, morao bi čekati sporu dinamičku memoriju, te bi cijelo vrijeme bio u stanju mirovanja. U istom slučaju, kada bi se statička memorija koristila kao RAM, cijena računala bi se povećala nekoliko puta.

Zato je razvijen razuman kompromis. Najveći dio RAM-a ostao je dinamičan, dok je procesor dobio vlastitu brzu predmemoriju temeljenu na statičkim memorijskim čipovima. Njegov je volumen relativno mali - na primjer, veličina predmemorije druge razine je samo nekoliko megabajta. Međutim, vrijedi zapamtiti da je cjelokupni RAM prvih IBM PC računala bio manji od 1 MB.

Osim toga, na preporučljivost uvođenja tehnologije predmemoriranja utječe i činjenica da različite aplikacije smještene u RAM-u različito opterećuju procesor, pa kao rezultat toga postoji mnogo podataka koji zahtijevaju prioritetnu obradu u odnosu na druge.

Povijest predmemorije

Strogo govoreći, prije nego što je predmemorija prešla na osobna računala, već se nekoliko desetljeća uspješno koristila u superračunalima.

Po prvi put, cache memorija od samo 16 KB pojavila se u računalu temeljenom na procesoru i80386. Danas moderni procesori koriste različite razine predmemorije, od prve (najbrža predmemorija najmanje veličine – obično 128 KB) do treće (najsporija predmemorija najveće veličine – do nekoliko desetaka MB).

Isprva je vanjska predmemorija procesora bila smještena na zasebnom čipu. Međutim, s vremenom je to uzrokovalo da sabirnica smještena između predmemorije i procesora postane usko grlo, usporavajući razmjenu podataka. U modernim mikroprocesorima i prva i druga razina predmemorije nalaze se u samoj jezgri procesora.

Dugo su vremena procesori imali samo dvije razine predmemorije, ali Intel Itanium CPU je bio prvi koji je imao predmemoriju treće razine, zajedničku za sve procesorske jezgre. Postoje i razvojni procesori s predmemorijom od četiri razine.

Arhitekture i principi predmemorije

Danas su poznata dva glavna tipa organizacije cache memorije, koji potječu iz prvih teorijskih razvoja u području kibernetike - Princeton i Harvard arhitekture. Princetonska arhitektura podrazumijeva jedan memorijski prostor za pohranjivanje podataka i naredbi, dok harvardska arhitektura znači odvojene. Većina x86 procesora osobnih računala koristi zasebnu vrstu predmemorije. Osim toga, u modernim procesorima pojavila se i treća vrsta predmemorije - takozvani međuspremnik asocijativnog prevođenja, dizajniran da ubrza pretvorbu adresa virtualne memorije operacijskog sustava u adrese fizičke memorije.

Pojednostavljeni dijagram interakcije između predmemorije i procesora može se opisati na sljedeći način. Prvo, procesor provjerava prisutnost informacija potrebnih procesoru u najbržoj predmemorije prve razine, zatim u predmemorije druge razine, itd. Ako potrebne informacije nisu pronađene ni na jednoj razini predmemorije, onda se to naziva pogreškom ili promašajem predmemorije. Ako uopće nema informacija u cacheu, tada ih procesor mora uzeti iz RAM-a ili čak iz vanjske memorije (s tvrdog diska).

Redoslijed kojim procesor traži informacije u memoriji:

Ovo je način na koji Procesor traži informacije

Za kontrolu rada predmemorije i njezine interakcije s računalnim jedinicama procesora, kao i RAM-a, postoji poseban kontroler.

Shema organizacije interakcije jezgre procesora, predmemorije i RAM-a:


Kontroler predmemorije je ključna veza između procesora, RAM-a i predmemorije

Treba napomenuti da je pohranjivanje podataka u predmemoriju složen proces koji koristi mnoge tehnologije i matematičke algoritme. Među osnovnim konceptima koji se koriste u predmemoriranju su metode pisanja u predmemoriju i arhitektura asocijativnosti predmemorije.

Metode pisanja u predmemoriju

Postoje dvije glavne metode za upisivanje informacija u predmemoriju:

  1. Write-back metoda – podaci se prvo zapisuju u predmemoriju, a zatim, kada se pojave određeni uvjeti, u RAM.
  2. Metoda pisanja – podaci se istovremeno zapisuju u RAM i predmemoriju.

Arhitektura asocijativnosti predmemorije

Arhitektura asocijativnosti predmemorije definira način na koji se podaci iz RAM-a mapiraju u predmemoriju. Glavne opcije za predmemoriranje arhitekture asocijativnosti su:

  1. Izravno mapirana predmemorija - određeni odjeljak predmemorije odgovoran je za određeni odjeljak RAM-a
  2. Potpuno asocijativna predmemorija - bilo koji dio predmemorije može biti povezan s bilo kojim dijelom RAM-a
  3. Mješovita predmemorija (set-asocijativno)

Različite arhitekture asocijativnosti predmemorije obično se mogu koristiti na različitim razinama predmemorije. Izravno mapirano RAM predmemoriranje je najbrža opcija predmemoriranja, pa se ova arhitektura obično koristi za velike predmemorije. Zauzvrat, potpuno asocijativna predmemorija ima manje pogrešaka (promašaja) predmemorije.

Zaključak

U ovom ste se članku upoznali s konceptom predmemorijske memorije, arhitekturom predmemorijske memorije i metodama predmemoriranja te naučili kako to utječe na performanse modernog računala. Prisutnost predmemorije može značajno optimizirati rad procesora, smanjiti vrijeme mirovanja i, posljedično, povećati performanse cijelog sustava.

biosgid.ru

Galerija efekata predmemorije procesora

Gotovo svi programeri znaju da je predmemorija procesora mala, ali brza memorija koja pohranjuje podatke iz nedavno posjećenih memorijskih područja - definicija je kratka i prilično točna. Međutim, poznavanje dosadnih detalja o mehanizmima predmemorije nužno je za razumijevanje čimbenika koji utječu na performanse koda.

U ovom ćemo članku pogledati niz primjera koji ilustriraju različite značajke predmemorija i njihov utjecaj na performanse. Primjeri će biti u C#; izbor jezika i platforme ne utječe uvelike na ocjenu izvedbe i konačne zaključke. Naravno, unutar razumnih granica, ako odaberete jezik u kojem je čitanje vrijednosti iz niza ekvivalentno pristupu hash tablici, nećete dobiti rezultate koji se mogu interpretirati. Bilješke prevoditelja ispisane su kurzivom.

Habracut - - -

Primjer 1: Pristup memoriji i izvedba
Što mislite koliko je brži drugi ciklus od prvog? int arr = novi int;

For (int i = 0; i // sekunda for (int i = 0; i) Primjer 2: utjecaj redaka predmemorije Kopajmo dublje - pokušajte s drugim vrijednostima koraka, ne samo 1 i 16: for (int i = 0; i

Imajte na umu da s vrijednostima koraka od 1 do 16, vrijeme rada ostaje gotovo nepromijenjeno. Ali s vrijednostima većim od 16, vrijeme rada smanjuje se za otprilike polovicu svaki put kada udvostručimo korak. To ne znači da petlja nekako magično počinje raditi brže, samo da se smanjuje i broj ponavljanja. Ključna točka je isto vrijeme rada s vrijednostima koraka od 1 do 16.

Razlog tome je što moderni procesori pristupaju memoriji ne bajt po bajt, već malim blokovima koji se nazivaju redovi predmemorije. Obično je veličina niza 64 bajta. Kada čitate bilo koju vrijednost iz memorije, barem jedan red predmemorije ulazi u predmemoriju. Naknadni pristup bilo kojoj vrijednosti iz ovog reda je vrlo brz. Budući da 16 int vrijednosti zauzima 64 bajta, petlje s koracima od 1 do 16 pristupaju istom broju redaka predmemorije, točnije, svim linijama predmemorije u nizu. U koraku 32 pristup se događa svakom drugom retku, u koraku 64 svakom četvrtom. Razumijevanje ovoga vrlo je važno za neke tehnike optimizacije. Broj pristupa njemu ovisi o položaju podataka u memoriji. Na primjer, neusklađeni podaci mogu zahtijevati dva pristupa glavnoj memoriji umjesto jednog. Kao što smo gore saznali, radna brzina će biti dva puta manja.

Primjer 3: Veličine predmemorije razine 1 i 2 (L1 i L2)
Moderni procesori obično imaju dvije ili tri razine predmemorije, koje se obično nazivaju L1, L2 i L3. Da biste saznali veličinu predmemorija na različitim razinama, možete koristiti uslužni program CoreInfo ili Windows API funkciju GetLogicalProcessorInfo. Obje metode također pružaju informacije o veličini retka predmemorije za svaku razinu. Na mom računalu, CoreInfo prijavljuje 32 KB L1 predmemorije podataka, 32 KB L1 predmemorije instrukcija i 4 MB L2 predmemorije podataka. Svaka jezgra ima svoje osobne L1 predmemorije, L2 predmemorije zajedničke su svakom paru jezgri: Karta logičkog procesora u predmemoriju: *--- Data Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64 *--- Instruction Cache 0, Razina 1, 32 KB, Assoc 8, LineSize 64 -*-- Data Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64 -*-- Instruction Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64 ** -- Unified Cache 0, Level 2, 4 MB, Assoc 16, LineSize 64 --*- Data Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64 --*- Instruction Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64 ---* Data Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64 ---* Instruction Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64 --** Unified Cache 1 , Level 2, 4 MB, Assoc 16, LineSize 64 Provjerimo ovu informaciju eksperimentalno. Da bismo to učinili, prođimo kroz naš niz, povećavajući svaku 16. vrijednost - jednostavan način za promjenu podataka u svakom retku predmemorije. Kad dođemo do kraja, vraćamo se na početak. Provjerimo različite veličine polja; trebali bismo vidjeti pad performansi kada polje više ne stane u predmemorije različitih razina. Kod je: int steps = 64 * 1024 * 1024; // broj ponavljanja int lengthMod = arr.Length - 1; // veličina niza -- potencija dva

za (int i = 0; i (

// x & lengthMod = x % arr.Length, jer potencije dvojke

Arr[(i * 16) & lengthMod]++; ) Rezultati testa:

Na mom računalu vidljivi su padovi u performansama nakon 32 KB i 4 MB - to su veličine L1 i L2 predmemorije.

Primjer 4: Paralelizam instrukcija
Sada pogledajmo nešto drugo. Po vašem mišljenju, koja će se od ove dvije petlje brže izvršiti? int koraci = 256 * 1024 * 1024; int a = novo int;

For (int i = 0; i // second for (int i = 0; i) Primjer 5: asocijativnost predmemorije Jedno od ključnih pitanja na koje se mora odgovoriti pri dizajniranju predmemorije jest mogu li se podaci iz određenog memorijskog područja pohraniti u bilo koju cache ćelije ili samo u nekim od njih Tri moguća rješenja:

  1. Izravno mapirana predmemorija, podaci svake retke predmemorije u RAM-u pohranjuju se na samo jednu unaprijed definiranu lokaciju predmemorije. Najjednostavniji način za izračunavanje preslikavanja je: row_index_in_memory % number_of_cache_cells. Dva retka preslikana na istu ćeliju ne mogu biti u predmemoriji u isto vrijeme.
  2. N-entry djelomično-asocijativna predmemorija, svaki redak može biti pohranjen na N različitih lokacija predmemorije. Na primjer, u predmemoriji sa 16 unosa, redak može biti pohranjen u jednoj od 16 ćelija koje čine grupu. Tipično, retci s jednakim najmanje značajnim bitovima indeksa dijele jednu grupu.
  3. Potpuno asocijativna predmemorija, bilo koja linija može biti pohranjena na bilo kojoj lokaciji predmemorije. Rješenje je po svom ponašanju ekvivalentno hash tablici.
Izravno mapirane predmemorije sklone su sukobima, na primjer, kada se dva retka natječu za istu ćeliju, naizmjenično izbacuju jedna drugu iz predmemorije, učinkovitost je vrlo niska. S druge strane, potpuno asocijativne predmemorije, iako nemaju ovaj nedostatak, vrlo su složene i skupe za implementaciju. Djelomično asocijativne predmemorije tipičan su kompromis između složenosti implementacije i učinkovitosti. Na primjer, na mom računalu, 4 MB L2 predmemorije je djelomična asocijativna predmemorija sa 16 unosa. Cjelokupni RAM je podijeljen u skupove linija prema najmanje značajnim bitovima njihovih indeksa, linije iz svakog skupa natječu se za jednu grupu od 16 L2 ćelija predmemorije.

Budući da L2 predmemorija ima 65.536 ćelija (4 * 220 / 64), a svaka grupa se sastoji od 16 ćelija, imamo ukupno 4.096 grupa. Dakle, nižih 12 bitova indeksa reda određuje kojoj skupini ovaj red pripada (212 = 4,096). Kao rezultat toga, retci s adresama koje su višekratnici broja 262 144 (4 096 * 64) dijele istu grupu od 16 ćelija i natječu se za prostor u njoj.

Da bi učinci asocijativnosti bili učinkoviti, moramo stalno pristupati velikom broju redaka iz iste grupe, na primjer, pomoću sljedećeg koda: public static long UpdateEveryKthByte(byte arr, int K) (

const int rep = 1024 * 1024; // broj ponavljanja

Štoperica sw = Štoperica.StartNew();

For (int i = 0; i p += K; if (p >= arr.Length) p = 0; ) sw.Stop();

return sw.ElapsedMilliseconds;

) Metoda povećava svaki K-ti element niza. Kad dođemo do kraja, krećemo ispočetka. Nakon prilično velikog broja ponavljanja (220) zaustavljamo se. Napravio sam nizove za različite veličine i K koraka (plavo - dugo vrijeme rada, bijelo - kratko):

Plava područja odgovaraju onim slučajevima kada, uz stalne promjene podataka, predmemorija nije u mogućnosti primiti sve potrebne podatke u isto vrijeme. Svijetlo plava boja označava vrijeme rada od oko 80 ms, gotovo bijela - 10 ms.

Pozabavimo se plavim područjima:

  1. Zašto se pojavljuju okomite linije? Okomite crte odgovaraju vrijednostima koraka pri kojima se pristupa previše redaka (više od 16) iz jedne grupe. Za ove vrijednosti, predmemorija sa 16 unosa mog stroja ne može primiti sve potrebne podatke.

    Neke od loših vrijednosti koraka su potencije dvojke: 256 i 512. Na primjer, uzmite u obzir korak 512 i niz od 8 MB. Ovim korakom postoje 32 odjeljka u nizu (8 * 220 / 262,144), koji se međusobno natječu za ćelije u 512 grupa predmemorije (262,144 / 512). Postoje 32 odjeljka, ali postoji samo 16 ćelija u predmemoriji za svaku grupu, tako da nema dovoljno mjesta za sve.

    Druge vrijednosti koraka koje nisu potencije dvojke su jednostavno nesretne, što uzrokuje veliki broj pristupa istim grupama predmemorije, a također dovodi do pojave okomitih plavih linija na slici. Na ovom mjestu ljubitelji teorije brojeva pozvani su na razmišljanje.

  2. Zašto se okomite linije prekidaju na granici od 4 MB? Kada je veličina polja 4 MB ili manje, predmemorija sa 16 unosa ponaša se kao potpuno asocijativna predmemorija, to jest, može primiti sve podatke u nizu bez sukoba. Ne postoji više od 16 područja koja se bore za jednu grupu predmemorije (262,144 * 16 = 4 * 220 = 4 MB).
  3. Zašto je gore lijevo veliki plavi trokut? Jer s malim korakom i velikim nizom, predmemorija ne može stati sve potrebne podatke. Stupanj asocijativnosti predmemorije ovdje igra sekundarnu ulogu; ograničenje je povezano s veličinom L2 predmemorije. Na primjer, s veličinom polja od 16 MB i korakom od 128, pristupamo svakom 128. bajtu, mijenjajući tako svaki drugi red predmemorije niza. Da biste pohranili svaki drugi redak u predmemoriju, potrebno vam je 8 MB predmemorije, ali na mom računalu imam samo 4 MB.

    Čak i kad bi predmemorija bila potpuno asocijativna, ne bi dopustila pohranjivanje 8 MB podataka u njoj. Imajte na umu da u već razmatranom primjeru s korakom od 512 i veličinom polja od 8 MB, trebamo samo 1 MB predmemorije za pohranu svih potrebnih podataka, ali to je nemoguće zbog nedovoljne asocijativnosti predmemorije.

  4. Zašto lijeva strana trokuta postupno dobiva na intenzitetu? Maksimalni intenzitet javlja se pri vrijednosti koraka od 64 bajta, što je jednako veličini retka predmemorije. Kao što smo vidjeli u prvom i drugom primjeru, sekvencijalni pristup istom retku ne košta gotovo ništa. Recimo, s korakom od 16 bajtova, imamo četiri pristupa memoriji po cijeni jednog. Budući da je broj ponavljanja isti u našem testu za bilo koju vrijednost koraka, jeftiniji korak rezultira kraćim vremenom izvođenja.
Otkriveni učinci traju pri velikim vrijednostima parametara:

Asocijativnost predmemorije je zanimljiva stvar koja se može manifestirati pod određenim uvjetima. Za razliku od drugih problema o kojima se raspravlja u ovom članku, nije toliko ozbiljan. To definitivno nije nešto što zahtijeva stalnu pozornost pri pisanju programa.

Primjer 6: Lažno particioniranje predmemorije
Na višejezgrenim strojevima možete naići na još jedan problem - koherenciju predmemorije. Procesorske jezgre imaju djelomično ili potpuno odvojene predmemorije. Na mom računalu, L1 predmemorija je odvojena (kao i obično), a postoje i dvije L2 predmemorije koje dijeli svaki par jezgri. Pojedinosti mogu varirati, ali općenito, moderni višejezgreni procesori imaju hijerarhijske predmemorije na više razina. Štoviše, najbrže, ali i najmanje predmemorije pripadaju pojedinačnim jezgrama.

Kada jedna jezgra modificira vrijednost u svom cacheu, druge jezgre više ne mogu koristiti staru vrijednost. Vrijednost u predmemoriji drugih jezgri mora se ažurirati. Štoviše, cijela linija predmemorije mora se ažurirati, budući da predmemorije rade na podacima na razini linije.

Pokažimo ovaj problem sa sljedećim kodom: private static int s_counter = new int;

privatni void UpdateCounter(int pozicija)

{

za (int j = 0; j ( s_brojač = s_brojač + 3; )

Ako na svom četverojezgrenom stroju pozovem ovu metodu s parametrima 0, 1, 2, 3 istovremeno iz četiri niti, tada će vrijeme izvođenja biti 4,3 sekunde. Ali ako pozovem metodu s parametrima 16, 32, 48, 64, tada će vrijeme izvođenja biti samo 0,28 sekundi. Zašto? U prvom slučaju, sve četiri vrijednosti koje su obradile niti u bilo kojem trenutku vjerojatno će završiti u jednom retku predmemorije. Svaki put kada jedna jezgra poveća vrijednost, označava ćelije predmemorije koje sadrže tu vrijednost u drugim jezgrama kao nevažeće. Nakon ove operacije, sve ostale jezgre će morati ponovno spremiti liniju u predmemoriju. To čini mehanizam predmemoriranja neoperativnim, ubijajući performanse.

Primjer 7: Složenost hardvera
Čak i sada, kada vam principi rada predmemorije nisu tajna, hardver će vas i dalje iznenaditi. Procesori se međusobno razlikuju po metodama optimizacije, heuristici i drugim suptilnostima implementacije.

L1 predmemorija nekih procesora može paralelno pristupiti dvjema ćelijama ako pripadaju različitim grupama, ali ako pripadaju istoj grupi, samo sekvencijalno. Koliko ja znam, neki čak mogu paralelno pristupiti različitim četvrtima iste ćelije.

Procesori bi vas mogli iznenaditi pametnim optimizacijama. Na primjer, kôd iz prethodnog primjera o lažnom dijeljenju predmemorije ne radi na mom kućnom računalu kako je zamišljeno - u najjednostavnijim slučajevima procesor može optimizirati rad i smanjiti negativne učinke. Ako malo izmijenite kod, sve dolazi na svoje mjesto. Evo još jednog primjera čudnih hardverskih hirova: privatni statički int A, B, C, D, E, F, G;

privatna statična praznina Weirdness()

{

for (int i = 0; i ( ) ) Ako zamijenite tri različite opcije, možete dobiti sljedeće rezultate:

Povećanje polja A, B, C, D traje dulje od povećanja polja A, C, E, G. Ono što je još čudnije jest da povećanje polja A i C traje dulje od polja A, C i E, G. Ne znam za sigurno koji su razlozi tome, ali možda su povezani s memorijskim bankama (da, s običnim trolitrenim štednim memorijskim bankama, a ne kako ste mislili). Ako imate bilo kakva mišljenja o ovoj temi, iznesite ih u komentarima.

Na mom stroju gore navedeno nije uočeno, međutim, ponekad postoje neuobičajeno loši rezultati - najvjerojatnije, planer zadataka vrši vlastite "prilagodbe".

Lekcija koju treba naučiti iz ovog primjera je da je vrlo teško potpuno predvidjeti ponašanje hardvera. Da, možete puno toga predvidjeti, ali svoja predviđanja morate neprestano potvrđivati ​​mjerenjem i testiranjem.

Zaključak
Nadam se da vam je sve što je gore navedeno pomoglo u razumijevanju dizajna predmemorije procesora. Stečeno znanje sada možete koristiti u praksi kako biste optimizirali svoj kod. * Izvorni kod je istaknut Markerom izvornog koda. Oznake:

Jedan od važnih čimbenika koji povećava performanse procesora je prisutnost predmemorije, odnosno njezin volumen, brzina pristupa i raspodjela među razinama.

Već duže vrijeme gotovo svi procesori imaju ovu vrstu memorije, što još jednom dokazuje korisnost njezine prisutnosti. U ovom ćemo članku govoriti o strukturi, razinama i praktičnoj namjeni predmemorije, što je vrlo važno. karakteristike procesora.

Što je cache memorija i njezina struktura

Cache memorija je ultrabrza memorija koju koristi procesor za privremenu pohranu podataka kojima se najčešće pristupa. Ovako možemo ukratko opisati ovu vrstu pamćenja.

Predmemorija je izgrađena na flip-flopovima, koji se pak sastoje od tranzistora. Skupina tranzistora zauzima puno više prostora od istih kondenzatora koji čine radna memorija. To za sobom povlači mnoge poteškoće u proizvodnji, kao i ograničenja u količini. Zbog toga je cache memorija vrlo skupa memorija, a ima zanemariv volumen. Ali iz ove strukture proizlazi glavna prednost takve memorije - brzina. Budući da flip-flopovi ne trebaju regeneraciju, a vrijeme kašnjenja vrata na kojima su montirani je malo, vrijeme prebacivanja flip-flopa iz jednog stanja u drugo događa se vrlo brzo. To omogućuje cache memoriji da radi na istim frekvencijama kao i moderni procesori.

Također, bitan faktor je i smještaj cache memorije. Nalazi se na samom čipu procesora, što značajno smanjuje vrijeme pristupa. Prethodno je predmemorija nekih razina bila smještena izvan procesorskog čipa, na posebnom SRAM čipu negdje na matičnoj ploči. Danas gotovo svi procesori imaju predmemoriju smještenu na procesorskom čipu.


Za što se koristi predmemorija procesora?

Kao što je gore spomenuto, glavna svrha predmemorije je pohranjivanje podataka koje procesor često koristi. Predmemorija je međuspremnik u koji se učitavaju podaci, a unatoč maloj veličini (oko 4-16 MB) moderni procesori, daje značajno povećanje performansi u bilo kojoj primjeni.

Da bismo bolje razumjeli potrebu za cache memorijom, zamislimo organiziranje memorije računala poput ureda. RAM će biti ormarić s mapama kojima računovođa povremeno pristupa kako bi dohvatio velike blokove podataka (tj. mape). A tablica će biti cache memorija.

Postoje elementi koji se nalaze na stolu računovođe, a koje on poziva nekoliko puta tijekom jednog sata. Na primjer, to mogu biti telefonski brojevi, neki primjeri dokumenata. Ove vrste informacija nalaze se na stolu, što zauzvrat povećava brzinu pristupa njima.

Na isti način, podaci se mogu dodati iz tih velikih podatkovnih blokova (mapa) u tablicu za brzu upotrebu, na primjer, dokument. Kada ovaj dokument više nije potreban, vraća se u ormarić (u RAM), čime se čisti tablica (cache memorija) i oslobađa ta tablica za nove dokumente koji će se koristiti u sljedećem vremenskom razdoblju.

Također s cache memorijom, ako postoje neki podaci kojima će se najvjerojatnije ponovno pristupiti, tada se ti podaci iz RAM-a učitavaju u cache memoriju. Vrlo često se to događa zajedničkim učitavanjem podataka koji će se najvjerojatnije koristiti nakon trenutnih podataka. Odnosno, postoje pretpostavke o tome što će se koristiti "poslije". To su složeni principi rada.

Razine predmemorije procesora

Moderni procesori opremljeni su predmemorijom koja se često sastoji od 2 ili 3 razine. Naravno, postoje iznimke, ali to je često slučaj.

Općenito, mogu postojati sljedeće razine: L1 (prva razina), L2 (druga razina), L3 (treća razina). Sada malo više detalja o svakom od njih:

Predmemorija prve razine (L1)– najbrža razina predmemorije koja radi izravno s jezgrom procesora, zahvaljujući ovoj čvrstoj interakciji, ova razina ima najkraće vrijeme pristupa i radi na frekvencijama bliskim procesoru. To je međuspremnik između procesora i predmemorije druge razine.

Razmotrit ćemo količine na procesoru visokih performansi Intel Core i7-3770K. Ovaj procesor je opremljen sa 4x32 KB L1 predmemorije 4 x 32 KB = 128 KB. (32 KB po jezgri)

Predmemorija druge razine (L2)– druga razina je većeg razmjera od prve, ali kao rezultat ima niže “brzinske karakteristike”. Sukladno tome, služi kao međuspremnik između razina L1 i L3. Ako ponovno pogledamo naš primjer Core i7-3770 K, tada je veličina L2 cache memorije 4x256 KB = 1 MB.

Predmemorija razine 3 (L3)– treća razina je, opet, sporija od prethodne dvije. Ali još uvijek je puno brži od RAM-a. Veličina L3 predmemorije u i7-3770K je 8 MB. Ako prethodne dvije razine dijele sve jezgre, tada je ova razina zajednička cijelom procesoru. Cifra je sasvim solidna, ali ne i pretjerana. Budući da je, primjerice, za procesore serije Extreme poput i7-3960X ona 15 MB, a za neke nove Xeon procesore i više od 20.



 


Čitati:



Glazba u boji na arduinu Glazba u boji na avr mikrokontroleru

Glazba u boji na arduinu Glazba u boji na avr mikrokontroleru

Lagana glazba na kontroleru atmega8 privukla je pozornost zbog jednostavnosti izrade. Kod ponavljanja sheme nije bilo potrebno računati...

Što učiniti ako se vaš Mac zagrije u sustavu Windows Ohladite svoj MacBook u sustavu Windows

Što učiniti ako se vaš Mac zagrije u sustavu Windows Ohladite svoj MacBook u sustavu Windows

Mnogi korisnici Maca vjerojatno su iskusili situaciju u kojoj je bio toliko visok da se činilo da će poletjeti. Obično ovo nije...

Vaš Mac će početi jako usporavati, ali to se može izbjeći

Vaš Mac će početi jako usporavati, ali to se može izbjeći

Za vlasnike aimaka, minija, macbooka i sve koji su zabrinuti zbog previsoke temperature svojih uređaja.UPD: sve dolje napisano je posebno...

Koje su značajke igre na europskom Archeage poslužitelju?

Koje su značajke igre na europskom Archeage poslužitelju?

Trion Worlds počeo je raditi na lokalizaciji korejske igre ArcheAge 2013., odmah otvorivši predregistraciju za beta test. 17...

feed-image RSS