Računalni procesori dosta su napredovali tijekom posljednjih nekoliko godina, s time da se veličina tranzistora smanjuje svake godine, a napredak je pogodio točku u kojoj Moore-ov zakon brzo postaje suvišan.
Kada su u pitanju procesori, ne računaju se samo tranzistori i frekvencije, nego i cache (predmemorija).
Možda ste čuli za cache memoriju kada se raspravlja o centralnim procesorskim jedinicama. Međutim, ne obraćamo previše pozornosti na ove brojeve, niti su oni uistinu primarni vrhunac reklamiranja ovih procesora.
Dakle, koliko je važan CPU cache i kako funkcionira?
Što je CPU cache?
Jednostavnije rečeno, predmemorija je samo stvarno brza vrsta memorije. Kao što možda znate, računalo ima više vrsta memorije u sebi. Postoji primarna pohrana, poput HDD-a ili SSD-a, koja pohranjuje većinu podataka – operativni sustav i sve programe.
Sljedeće, imamo Random Access Memory, obično poznat kao RAM. On je mnogo brži od primarne pohrane. Napokon, CPU ima još brže memorijske jedinice unutar sebe, koje znamo kao predmemoriju.
Memorija u računalu ima hijerarhiju, baziranu na brzini, a cache stoji na vrhu ove hijerarhije, budući da je najbrži. To je ujedno i najbliže mjesto gdje se odvija centralna obrada, kao dio samog CPU-a.
Predmemorija je statički RAM (SRAM), u usporedbi s RAM-om sustava, koji je dinamički RAM (DRAM). Statički RAM je onaj koji može držati podatke bez potrebe za stalnim osvježavanjem, za razliku od DRAM-a, što čini SRAM idealnim za upotrebu u predmemoriji.
Kako radi CPU cache?
Kao što možda već znate, program je osmišljen kao skup uputa kojima će upravljati CPU. Kada pokrenete program, ove upute moraju proći svoj put od primarne pohrane do CPU-a. Ovdje je bitna hijerarhija memorije.
Prvi se podaci učitavaju u RAM i zatim se šalju na CPU. Procesori danas mogu izvršiti ogroman broj zadataka u sekundi. Kako bi u potpunosti iskoristio svoju snagu, CPU treba pristup super brzoj memoriji. Za to je zaslužna cache memorija.
Memorijski kontroler obavlja posao preuzimanja podataka iz RAM-a i slanja u cache. Ovisno o tome koji je CPU u vašem sustavu, ovaj kontroler može biti na North Bridge čipsetu na matičnoj ploči ili unutar samog CPU-a.
Cache zatim izvodi podatke natrag i naprijed unutar CPU-a. Hijerarhija memorije također postoji u cache-u.
Razine Cache-a: L1, L2 i L3
CPU cache je podijeljen u tri glavne “Razine”, L1, L2 i L3. Hijerarhija je ovdje opet prema brzini, a time i veličini cache-a.
L1 (Razina 1) Cache-a je najbrža memorija koja je prisutna u računalnom sustavu. Što se tiče prioriteta pristupa, L1 cache ima podatke koje će CPU najvjerojatnije trebati dok ispunjava određeni zadatak.
Što se tiče veličine, L1 cache obično ide do 256KB. Međutim, neki doista snažni procesori sada zauzimaju blizu 1MB. Neki serverski chipseti (kao što su Intelovi vrhunski Xeon procesori) sada imaju negdje između 1-2MB L1 cache-a.
L1 cache također se obično dijeli na dva načina, u cache instrukcija i cache podataka. Cache instrukcija bavi se informacijama o operaciji koju CPU mora izvršiti, dok podatkovni cache sadrži podatke na kojima će se izvršiti operacija.
L2 (Razina 2) cache-a je sporija od L1 cache-a, ali veća po veličini. Njegova veličina obično varira između 256KB i 8MB, iako noviji, snažniji CPU-i teže tome. L2 cache sadrži podatke kojima će CPU-u moći sljedeći put pristupiti. Kod većine modernih CPU-a, L1 i L2 cache su prisutni na samim procesorskim jezgrama, pri čemu svaka jezgra dobiva vlastiti cache.
L3 (Razina 3) cache-a je najveća memorijska jedinica, a također i najsporija. Može se kretati brzinom od 4 MB do više od 50 MB. Moderni CPU-ovi imaju namjenski prostor na CPU-u za L3 predmemoriju, a ona zauzima veliki dio prostora.
Cache Hit (pogodak) ili Miss (promašaj) i Latencija
Podaci teku iz RAM-a u L3 cache, zatim u L2 i na kraju u L1. Kada procesor traži podatke za izvršenje operacije, najprije ih pokušava pronaći u L1 cache-u. Ako ih CPU može pronaći, uvjet se naziva hit cache-om. Zatim ih nastavlja pronalaziti u L2, a zatim u L3.
Ako ne pronađe podatke, pokušava mu pristupiti iz glavne memorije. To se naziva cache miss (promašajem).
Sada, kao što znamo, cache memorija je dizajnirana kako bi ubrzala informacije između glavne memorije i CPU-a. Vrijeme potrebno za pristup podacima iz memorije naziva se Latencija. L1 ima najnižu latenciju, koja je najbrža i najbliža jezgri, a L3 ima najvišu. Latencija se uvelike povećava kada se propusti cache memorija. To se događa jer CPU mora dobiti podatke iz glavne memorije.
Kako računala postaju brža i bolja, vidimo smanjenje latencije. Sada imamo DDR4 RAM s malom latencijom i super brze SSD-ove s niskim vremenom pristupa kao i kod primarne pohrane, što značajno smanjuje ukupnu latenciju.
Ranije su se dizajni cache-a koristili za L2 i L3 cache memorije izvan CPU-a, što je imalo negativan učinak na latenciju.
Međutim, napredak u procesima izrade koji se odnose na tranzistore CPU-a omogućio je da se milijarde tranzistora uklope u manji prostor nego što je prije bio slučaj. Kao rezultat toga, preostalo je više prostora za cache memoriju, što omogućuje da ona bude što je moguće bliže jezgri, značajno smanjujući latenciju.
Budućnost cache memorije
Dizajn cache memorije se uvijek razvija, pogotovo jer memorija postaje jeftinija, brža i gušća. Intel i AMD imali su velik dio eksperimentiranja s dizajnom cache-a, a Intel je čak eksperimentirao s L4 cache-om. CPU tržište se kreće brže nego ikada.
Uz to, zasigurno ćemo vidjeti dizajniranje cache memorije u korak s rastućom snagom procesora. Osim toga, postoji mnogo područja na kojima se radi kako bi se smanjio bottleneck modernih računala. Smanjenje latencije memorije je možda jedan od najbitnijih područja. Industrija radi na rješenjima za isto, a budućnost izgleda vrlo obećavajuće.
Piše: D.Z.