Mūsdienu CPU darbojas neticami ātri; tie var ievērojami pārspēt sistēmas RAM. Šī ātruma nelīdzsvarotība starp centrālo procesoru un atmiņu liek jūsu procesoram bieži sēdēt dīkstāvē, gaidot, līdz tam tiks nosūtīti dati, lai tas varētu turpināt procesu. Lai tas nenotiktu, ļaujot CPU turpināt darboties ātrāk un ātrāk, tiek izmantota CPU kešatmiņa.
Kā CPU kešatmiņa paātrina CPU?
CPU kešatmiņa ir veidota tā, lai tā būtu pēc iespējas ātrāka un pēc tam saglabātu CPU pieprasītos datus. CPU kešatmiņas ātrums ir optimizēts trīs veidos: latentums, joslas platums un tuvums. CPU kešatmiņa darbojas ar ļoti zemu latentumu, līdz minimumam samazinot laiku, kas nepieciešams rezultāta atgriešanai. Piemēram, Intel i9-9900k kešatmiņas latentums L1, L2 un L3 kešatmiņai ir attiecīgi 0,8, 2,4 un 11,1 nanosekundes. Salīdzinājumam, mūsdienu ātrgaitas RAM latentums ir aptuveni 14 nanosekundes.
Padoms: kešatmiņas līmeņi tiks sīkāk izskaidroti vēlāk, taču, vienkārši sakot, zemākie kešatmiņas slāņi ir ātrāki, taču tie ir dārgāki, tāpēc tiem ir mazāka ietilpība. Nanosekunde ir sekundes miljardā daļa, tāpēc 0,8 sekunžu latentums nozīmē, ka rezultāta atgriešanai nepieciešama mazāk nekā sekundes miljardā daļa.
Runājot par joslas platumu, CPU kešatmiņa piedāvā ievērojamus veiktspējas uzlabojumus salīdzinājumā ar tradicionālo krātuvi un RAM. L1 un L3 kešatmiņas lasīšanas ātrums var sasniegt maksimumu attiecīgi 2,3 TB/s un 370 GB/s, savukārt RAM joslas platums parasti ir aptuveni 40 GB/s. Šis palielinātais joslas platums nozīmē, ka CPU kešatmiņa var pārsūtīt datus uz CPU daudz ātrāk nekā RAM.
Lai sasniegtu maksimālo iespējamo ātrumu, CPU kešatmiņa faktiski ir iebūvēta paša CPU veidnes silīcijā. Tādējādi tiek samazināts attālums, kas jāpārvar jebkuriem elektriskiem signāliem, tādējādi saglabājot pēc iespējas mazāku latentumu. Piemēram, kad L3 kešatmiņa pirmo reizi tika pārvietota no mātesplates uz CPU, tā laika procesors (Pentium 4 EE) spēja uzlabot veiktspēju par 10-20%.
CPU kešatmiņas arhitektūra
Mūsdienu CPU parasti izmanto trīs CPU kešatmiņas slāņus, kas apzīmēti ar L1-3, un kešatmiņas ar zemāku numuru ir tuvāk CPU kodoliem, ātrākas un dārgākas. Katram atsevišķam CPU kodolam daudzkodolu CPU ir sava L1 kešatmiņa. Tas parasti ir sadalīts divās daļās: L1I un L1D. L1I tiek izmantots, lai kešatmiņā saglabātu CPU instrukcijas, savukārt L1D tiek izmantots, lai kešatmiņā saglabātu datus, kuriem šīs instrukcijas ir jāizpilda.
Katram CPU kodolam parasti ir arī sava L2 kešatmiņa modernā CPU. L2 kešatmiņa ir lielāka un lēnāka nekā L1 kešatmiņa, un to galvenokārt izmanto, lai uzglabātu datus, kas citādi neietilpst L2 kešatmiņā. Ja katram kodolam ir speciāla L2 kešatmiņa, tiek novērsta strīda par kešatmiņu. Cīņa par kešatmiņu ir vieta, kur dažādi kodoli cīnās, lai pieprasītu vietu kešatmiņā savām darba slodzēm, kā rezultātā no kešatmiņas var tikt notīrīti svarīgi dati.
L3 kešatmiņa parasti tiek koplietota starp visiem procesora CPU kodoliem. Atkal, L3 kešatmiņa ir lēnāka nekā L2 kešatmiņa, taču tā ir lētāka un lielāka. Nodrošinot koplietotu kešatmiņu, ir iespējams samazināt datu apjomu, kas tiktu dublēts zemākos katra kodola kešatmiņas līmeņos.
Padoms. Piemēram, Intel i9-9900K kešatmiņai ir 64 KB L1 un 256 KB L2 kešatmiņa vienam kodolam (kopā 512 KB L1 un 2 MB L2), tam ir arī 16 MB koplietotā L3 kešatmiņa.
Kā tiek izmantota CPU kešatmiņa?
Visi CPU kešatmiņas līmeņi tiek izmantoti, lai paātrinātu procesora veiktspēju, saglabājot datus kešatmiņā no RAM. Kad centrālais procesors pieprasa datus, tas parasti vispirms veic meklēšanu kešatmiņas slāņos, cenšoties iegūt datus pēc iespējas ātrāk. Ja dati tiek atrasti kešatmiņas trāpījumā, CPU var turpināt apstrādi. Ja dati nav kešatmiņā, tā sauktajā kešatmiņas izlaidumā, centrālajam procesoram ir jāpārbauda operatīvā atmiņa un pēc tam arī cietais disks, ja arī datu nav. Lai nodrošinātu maksimālu veiktspēju, vienmēr vispirms tiek pārbaudīti ātrākie slāņi.
Lai centrālajam procesoram kešatmiņā būtu nepieciešamie dati, kad tas ir nepieciešams, kešatmiņa mēģina iepriekš noteikt, kādi dati centrālajam procesoram varētu būt nepieciešami tālāk. Piemēram, ja centrālais procesors ir pieprasījis dažus attēla datus, tas renderē kešatmiņu, iespējams, mēģināt iepriekš kešatmiņā saglabāt vairāk attēla datu, lai tos pēc iespējas ātrāk varētu ievadīt centrālajam procesoram.