Hvordan fungerer CPU-hurtigbufferen?

Siste oppdatering: 25 september 2020
Forfatter: Isaac
hurtigbuffer, CPU

La hurtigminne Det har ikke alltid vært i CPU-en. Faktisk hadde ikke eldre prosessorer en. Senere kom moduler som ligner på dagens RAM-moduler, slik at du eventuelt kunne legge til en hurtigbuffer for å forbedre CPU-ens ytelse, på samme måte som matematiske koprosessorer, eller FPU-er, ble lagt til.

I dagens mikroprosessorer har hurtigbufferen blitt integrert i selve brikken, nå en nesten uatskillelig del av dem, og med flere nivåer for å få større utbytte av det. I denne veiledningen lærer du mer om denne typen minne og dens betydning.

Hva er cachen?

Før jeg begynner å forklare hva hurtigminne er, vil jeg gjerne oppsummere det veldig kort. hvordan en CPU fungerer, slik at du bedre kan forstå ytelsen. Enkelt sagt er CPU-en ikke noe mer enn en "kalkulator" som behandler en serie operasjoner med biter av data.

Det er programvaren, programmet, som vil indikere hvilke beregninger CPU-en skal utføre. Programmet er bygd opp av en serie data og instruksjoner. Alle disse dataene og instruksjonene er lagret i sekundært minne (harddisk) vil bli sendt til hovedminnet (primærminnet). Derfra vil de bli fanget opp av CPU-en og lagt inn i internminnet. Instruksjonen vil indikere hva CPU-en skal gjøre med dataene. For eksempel kan det være en addisjonsinstruksjon. Slik kjøres programvaren…

Kort sagt brukte tidlige datamaskiner et enkelt nivå med tregt minne (en type ROM eller magnetisk lagring) for å hente disse instruksjonene og dataene. Men etter hvert som CPU-er utviklet seg og ble raskere, oppsto store flaskehalser på grunn av tregheten til dette minnet. Derfor ble et raskt bufferminne introdusert mellom CPU-en og sekundærminnet: RAM (SDRAM).

  Slik kontrollerer du viftehastigheten

Til tross for dette fortsatte CPU-en å utvikle seg raskere enn hastigheten til selve RAM-en, noe som skapte en ny flaskehals. Så ble et annet, mye raskere minne utviklet, nærmere prosessoren og plassert mellom RAM-en og CPU-en: cachen (SRAM).

Sekundærminne er billig, så du kan få stor kapasitet til en god pris. Når det gjelder RAM, er det raskere, men også dyrere enn sekundærminne. Det er derfor primærminnekapasiteten ikke er like stor. Hvis vi fortsetter nedover stigen, kommer vi over hurtigminne, som er enda dyrere, og derfor har svært lav kapasitet. Så har vi registrene, også ekstremt dyre og begrensede ...

Med dette hurtigbufferminnet kan CPU-kjernene mates mye raskere, slik at latenser og båndbredde RAM-en fungerer slik at den ikke påvirker CPU-ytelsen like mye. Det er en måte å gi disse dataene og instruksjonene mye mer lokalt og raskere ... Med andre ord, slik at de er mer "for hånden".

Nå for tiden har forbedringen av sekundærhukommelsen betydd et stort sprang. Jeg refererer til den nye SSD- eller solid-state-harddiskerDe er imidlertid fortsatt tregere enn RAM, så disse andre nivåene er fortsatt nødvendige.

Hurtigbuffernivåer i en moderne prosessor

Intel Pentium III (Tualatin) dieshot der jeg har markert den enhetlige L2-cachen i grønt og data- og instruksjons-L1-cachen i lilla.

I en moderne prosessor er det ikke bare ett nivå av hurtigbuffer, men det er delt inn i flere nivåer. Vanligvis er det mellom 2 og 4. nivåer eller nivåer (L):

  • LLC (Siste nivåbuffer)Dette er det siste nivået av hurtigbufferminne, det vil si det som er "nærmest" RAM, det med det høyeste tallet i prosessoren. Det kan være L4, L3 eller L2, avhengig av nivået. I nåværende Intel- og AMD-prosessorer er det for eksempel L3. Dette minnet kan nå flere megabyte og er enhetlig, noe som betyr at det lagrer både data og instruksjoner. Vanligvis deles denne typen minne av alle kjerner, hvis det er flere. Hvis det for eksempel er L3 og L2, kan L2 være dedikert til bare én kjerne eller deles av to kjerner, og L3 ville mate alle.
  • L1-cacheDenne hurtigbufferen er raskere enn den forrige og er plassert enda nærmere kontrollenheten, slik at den kan hente informasjon og sende den til utførelsesenhetene raskere. I motsetning til de høyere nivåene har L1 en lavere kapasitet, noe som er normalt, siden jo lavere nivåene er, desto lavere er kapasiteten. Men den mest bemerkelsesverdige forskjellen er at i mange prosessorer er den ikke enhetlig som de andre nivåene. I dette tilfellet er den delt inn i L1I og L1D, det vil si bare for instruksjoner og bare for data.
  PCL- vs. PostScript-drivere: Virkelige forskjeller og når du skal bruke dem

Hvorfor er det viktig?

CPU-kjerner

Vel, på dette tidspunktet vil du allerede ha et inntrykk av hvorfor det forbedrer ytelseEt praktisk eksempel vil hjelpe deg å forstå dette veldig godt. Tenk deg at du (CPU-en) må gå og hente verktøyene (instruksjoner og data) du trenger for å gjøre en jobb (et program).

Det er ikke det samme å ha verktøyene i butikken (sekundærminne), enn å ha dem i garasjen (RAM), eller å ha dem rett for hånden (cache). Hvis du må dra til butikken eller garasjen, vil det ta mye lengre tid enn om du kan rekke ut og hente dem rett ved siden av deg. Dette er ikke alltid tilfelle. Når du først trenger en instruksjon eller data, må du gå til rommet eller garasjen for å hente dem. Men når du har grepet dem og har dem rett ved siden av deg, vil du være mye mer effektiv neste gang du trenger dem.

CPU-en, gjennom en søke- og feilsøkingssystem Den vil alltid søke etter instruksjoner og data først i L1. Hvis det oppstår en feil, vil den søke i L2, og hvis det heller ikke er der, vil den gå til L3 (hvis det finnes en). Og hvis det også oppstår en feil, vil den ikke ha noe annet valg enn å søke i RAM, noe som tar flere klokkesykluser. Men hvis den lykkes, vil tilgangen være mye raskere. Husk at det tar færre sykluser å få tilgang til L1 enn L2, og L3 tar igjen færre sykluser å få tilgang til enn LXNUMX, og så videre.

Det er målet med hurtigbufferen, å redusere minnetilgangsforsinkelse. Jeg insisterer, jeg er oppsummerer mye hvordan det fungerer. Men i bunn og grunn er det slik det gjør at appene og spillene dine kjører mye raskere.

  Slik optimaliserer du den integrerte GPU-en for maksimal ytelse