Kaj je predpomnilnik CPU?

Sodobni procesorji delujejo neverjetno hitro; lahko bistveno prekašajo sistemski RAM. To neravnovesje hitrosti med CPE in pomnilnikom bi povzročilo, da vaš procesor pogosto miruje in čaka, da se mu pošljejo podatki, da lahko nadaljuje z izvajanjem procesa. Da bi preprečili, da bi se to zgodilo in omogočili, da CPE še naprej delujejo hitreje in hitreje, se uporablja predpomnilnik CPE.

Kako predpomnilnik CPE pospeši CPE?

Predpomnilnik CPE je zasnovan tako, da je čim hitrejši in da nato predpomni podatke, ki jih CPE zahteva. Hitrost predpomnilnika CPU je optimizirana na tri načine: zakasnitev, pasovna širina in bližina. Predpomnilnik CPE deluje z zelo majhnimi zamudami, kar zmanjšuje čas, potreben za vrnitev rezultata. Na primer, Intel i9-9900k ima latenco predpomnilnika 0,8, 2,4 in 11,1 nanosekunde za predpomnilnik L1, L2 in L3. Za primerjavo, latenca sodobnega hitrega RAM-a je približno 14 nanosekund.

Nasvet: ravni predpomnilnika bodo podrobneje razložene kasneje, vendar preprosto povedano, nižje plasti predpomnilnika so hitrejše, vendar dražje, zato imajo nižje zmogljivosti. Nanosekunda je milijarda sekunde, zato latenca 0,8 sekunde pomeni, da za vrnitev rezultata potrebuje manj kot milijardo sekunde.

Kar zadeva pasovno širino, predpomnilnik CPU ponuja znatne izboljšave zmogljivosti v primerjavi s tradicionalnim pomnilnikom in RAM-om. Hitrosti branja predpomnilnika L1 in L3 so lahko najvišje pri 2,3 TB/s oziroma 370 GB/s, medtem ko je pasovna širina RAM-a običajno okoli 40 GB/s. Ta povečana pasovna širina pomeni, da lahko predpomnilnik CPE prenaša podatke v CPE veliko hitreje kot RAM.

Za doseganje največjih možnih hitrosti je predpomnilnik CPU dejansko vgrajen v silicij samega CPU-ja. To minimizira razdaljo, ki jo morajo prepotovati električni signali, s čimer je zakasnitev čim manjša. Na primer, ko je bil predpomnilnik L3 prvič premaknjen z matične plošče na CPE, je takratni procesor (Pentium 4 EE) lahko dosegel 10-20-odstotno izboljšanje zmogljivosti.

Arhitektura predpomnilnika CPU

Sodobni procesorji običajno uporabljajo tri plasti predpomnilnika CPE z oznako L1-3, pri čemer so predpomnilniki z nižjim številom bližje jedrom CPU, hitrejši in dražji. Vsako posamezno jedro CPE v večjedrnem CPU ima svoj predpomnilnik L1. Običajno je razdeljen na dva dela, L1I in L1D. L1I se uporablja za predpomnilnik navodil za CPE, medtem ko se L1D uporablja za predpomnilnik podatkov, na katerih se ta navodila izvajajo.

Vsako jedro CPU ima običajno tudi svoj predpomnilnik L2 na sodobnem CPU. Predpomnilnik L2 je večji in počasnejši od predpomnilnika L1 in se uporablja predvsem za shranjevanje podatkov, ki se sicer ne bi prilegali v predpomnilnik L2. Z namenskim L2 predpomnilnikom na jedro se izognemo prepirom predpomnilnika. Prepir med predpomnilnikom je tam, kjer se različna jedra borijo, da bi zahtevala prostor v predpomnilniku za svoje delovne obremenitve, kar lahko vodi do brisanja pomembnih podatkov iz predpomnilnika.

Predpomnilnik L3 si običajno delijo vsa jedra CPU procesorja. Ponovno je predpomnilnik L3 počasnejši od predpomnilnika L2, vendar je cenejši in večji. Z zagotavljanjem skupnega predpomnilnika je mogoče zmanjšati količino podatkov, ki bi se podvojili na nižjih ravneh predpomnilnika na jedro.

Nasvet: na primer, pri velikostih predpomnilnika ima Intelov i9-9900K 64 KB L1 in 256 KB L2 predpomnilnika na jedro (skupaj 512 KB L1 in 2 MB L2), ima tudi 16 MB skupnega predpomnilnika L3.

Kako se uporablja predpomnilnik CPU?

Vse ravni predpomnilnika CPE se uporabljajo za pospešitev delovanja procesorja s predpomnjenjem podatkov iz RAM-a. Ko CPE zahteva podatke, običajno najprej išče po svojih predpomnilnih slojih, da bi čim hitreje pridobil podatke. Če se podatki najdejo v zadetku v predpomnilniku, lahko CPE nadaljuje z obdelavo. Če podatkov ni v predpomnilniku, v tako imenovanem zgrešenem predpomnilniku, mora CPU preveriti RAM in nato trdi disk, če tudi podatkov ni. Hitrejše plasti se vedno najprej preverijo za največjo učinkovitost.

Da bi CPE-ju pomagal imeti podatke, ki jih potrebuje, v predpomnilniku, ko jih potrebuje, poskuša predpomnilnik vnaprej izvzeti, katere podatke bi CPE morda potreboval naslednje. Na primer, če je CPU zahteval nekaj podatkov za sliko, ki jo upodablja, lahko predpomnilnik poskuša preventivno predpomniti več slikovnih podatkov, da jih je mogoče čim hitreje prenesti v CPE.