Kaasaegsed protsessorid töötavad uskumatult kiiresti; need võivad oluliselt ületada süsteemi RAM-i. See protsessori ja mälu vaheline kiiruse tasakaalustamatus paneb teie protsessori sageli jõude seisma, oodates, kuni talle saadetakse andmed, et protsess saaks jätkata. Selle vältimiseks kasutatakse protsessori vahemälu, mis võimaldab protsessoritel üha kiiremini ja kiiremini töötada.
Kuidas protsessori vahemälu protsessorit kiirendab?
Protsessori vahemälu on loodud nii, et see oleks võimalikult kiire ja salvestaks seejärel CPU küsitud andmed vahemällu. Protsessori vahemälu kiirus on optimeeritud kolmel viisil: latentsus, ribalaius ja lähedus. Protsessori vahemälu töötab väga madala latentsusajaga, minimeerides tulemuse tagastamiseks kuluva aja. Näiteks Intel i9-9900k vahemälu latentsusaeg on L1, L2 ja L3 vahemälu jaoks vastavalt 0,8, 2,4 ja 11,1 nanosekundit. Võrdluseks, tänapäevase kiire RAM-i latentsusaeg on suurusjärgus 14 nanosekundit.
Näpunäide. Vahemälu tasemeid selgitatakse üksikasjalikumalt hiljem, kuid lihtsalt öeldes on vahemälu alumised kihid kiiremad, kuid kallimad, seega on väiksema mahutavusega. Nanosekund on miljardik sekundist, seega 0,8 sekundi latentsus tähendab, et tulemuse tagastamiseks kulub vähem kui miljardik sekundit.
Ribalaiuse osas pakub protsessori vahemälu märkimisväärseid jõudluse täiustusi võrreldes traditsioonilise salvestusruumi ja RAM-iga. L1 ja L3 vahemälu lugemiskiirused võivad olla vastavalt 2,3 TB/s ja 370 GB/s, samas kui RAM-i ribalaius on tavaliselt umbes 40 GB/s. See suurenenud ribalaius tähendab, et CPU vahemälu suudab andmeid protsessorisse edastada palju kiiremini kui RAM.
Maksimaalse võimaliku kiiruse saavutamiseks on protsessori vahemälu tegelikult sisse ehitatud CPU stantsi enda räni. See minimeerib vahemaa, mille elektrilised signaalid peavad läbima, hoides seega latentsusaja võimalikult madalana. Näiteks kui L3 vahemälu viidi esimest korda emaplaadilt CPU-vormingusse, suutis tolleaegne protsessor (Pentium 4 EE) jõudlust parandada 10-20%.
CPU vahemälu arhitektuur
Kaasaegsed CPU-d kasutavad tavaliselt kolme CPU-vahemälu kihti, millel on silt L1-3, kusjuures madalama numbriga vahemälud on protsessori tuumadele lähemal, kiiremad ja kallimad. Mitmetuumalise CPU igal üksikul CPU tuumal on oma L1 vahemälu. Tavaliselt on see jagatud kaheks osaks, L1I ja L1D. L1I-d kasutatakse protsessori juhiste vahemällu salvestamiseks, samas kui L1D-d kasutatakse andmete vahemällu salvestamiseks, mille alusel neid juhiseid tuleb täita.
Igal CPU tuumal on tavaliselt ka oma L2 vahemälu kaasaegsel protsessoril. L2 vahemälu on suurem ja aeglasem kui L1 vahemälu ning seda kasutatakse peamiselt andmete salvestamiseks, mis muidu L2 vahemällu ei mahuks. Kui tuuma kohta on spetsiaalne L2 vahemälu, välditakse vahemälu tüli. Vahemälu tüli on koht, kus erinevad tuumad võitlevad oma töökoormuse jaoks vahemäluruumi taotlemise nimel, mis võib viia oluliste andmete tühjendamiseni vahemälust.
L3 vahemälu on tavaliselt jagatud protsessori kõigi CPU tuumade vahel. Jällegi on L3 vahemälu aeglasem kui L2 vahemälu, kuid on odavam ja suurem. Jagatud vahemälu pakkumisega on võimalik vähendada andmete hulka, mis dubleeritaks tuumapõhise vahemälu madalamal tasemel.
Näpunäide. Näiteks vahemälu suuruste puhul on Inteli i9-9900K-l 64 KB L1 ja 256 KB L2 vahemälu tuuma kohta (kokku 512 KB L1 ja 2 MB L2), sellel on ka 16 MB jagatud L3 vahemälu.
Kuidas CPU vahemälu kasutatakse?
Protsessori vahemälu kõiki tasemeid kasutatakse protsessori jõudluse kiirendamiseks, salvestades andmeid RAM-i vahemällu. Kui protsessor küsib andmeid, otsib see tavaliselt esmalt vahemälukihte, et andmeid võimalikult kiiresti kätte saada. Kui andmed leitakse vahemälu tabamuses, saab CPU töötlemist jätkata. Kui andmeid ei ole vahemälus, nn vahemälu puudu, peab protsessor kontrollima RAM-i ja seejärel kõvaketast, kui andmeid seal pole. Maksimaalse jõudluse tagamiseks kontrollitakse alati esmalt kiiremaid kihte.
Selleks, et protsessoril oleks vahemälus vajalikke andmeid, kui ta neid vajab, üritab vahemälu ette näha, milliseid andmeid CPU järgmisena vajada võib. Näiteks kui protsessor on pildi jaoks küsinud andmeid, võib vahemälu renderdamine üritada ennetavalt rohkem pildiandmeid vahemällu salvestada, et need saaks võimalikult kiiresti protsessorisse edastada.