TLB -cache, brug og definition af Translate Lookaside Buffer

TLB -cache

Hver processor, når den udfører en instruktion, skal lokalisere den i hukommelsen for at kunne udføre den. Søgetiden for det og de data, der skal manipuleres, er afgørende for at få den bedst mulige ydelse. Og hvad er dette? At udføre så mange instruktioner som muligt på kortest mulig tid, og en måde at opnå dette på er at reducere hukommelsesadgangstiden, og det er her, TLB -cache er nøglen .

Hvis du ser på diasene i de forskellige processorarkitekturer, og uanset dets mærke, vil du se, at en type cache vises med titlen TLB -cache. Denne type cache er ligesom den konventionelle relateret til adgangen til CPU til RAM, men i modsætning til den konventionelle, har det ikke at gøre med adgang til data, men snarere med søgning og placering af sig selv.

TLB, Oversæt Lookaside Buffer

Når en processor skal have adgang til systemets RAM, er det, den gør, at generere en virtuel adresse, der angiver placeringen af ​​dataene i hukommelsen fra CPU'ens synspunkt, som ikke matcher den fysiske hukommelsesadresse for systemet. .

Enheden, der er ansvarlig for at foretage overførslen fra en type adresse til en anden, er MMU, og i første omgang hvad disse enheder gør, er at gemme i en del af RAM'en, som de fik adgang til direkte for at foretage overførsel af virtuelle adresser. Selvfølgelig skal vi huske på, at en virtuel adresse består af tre komponenter:

  • Fast størrelse side, der gemmer et par kilobytes hukommelse.
  • Sidebord er naturligvis en tabel, der gemmer forskellige sider.
  • Katalog over sider, som indeholder alle sidetabellerne.

Når MMU'en således udfører konverteringen fra virtuelle til fysiske adresser, er det, hvad den gør, at konsultere disse tre sektioner, sidemappen er i lagerenheden og derfor længere væk fra processoren, men dette konsulteres ikke, da sidetabellen det kopieres til RAM. Tja, hvad TLB -cachen gemmer, er adresseoverførslen, der svarer til den aktuelle side, som CPU'en hele tiden kigger på.

Grunden til, at hukommelsesadressen søges først, skyldes, at i tilfælde af at TLB -cachen ikke har adressen, bliver sidetabellen i hukommelsen bedt om det. Med andre ord spørger en processor ikke først om en specifik instruktion eller data, men om dens placering. Den anden grund har at gøre med, at der altid søges efter RAM, hvor oplysningerne er, ikke selve oplysningerne.

Processen med at køre TLB -cachen

Accesso TLB

På en meget forenklet måde sker det som følger:

  • CPU'en sender en anmodning til en hukommelsesadresse.
  • MMU'en, der bruger TLB -cachen, genererer en fysisk adresse.
  • Det første niveau i cachen bliver spurgt, om dataene for den fysiske adresse i RAM'en findes inde i det, hvis dataene findes, markeres det som et "hit", og dataene ændres eller returneres til CPU'en efter behov.
  • I tilfælde af at den søgte adresse ikke findes i TLB'en, åbnes sidetabellen i RAM, og den næste side kopieres til TLB'en for at se, om adressen er der.

Som med caches og derfor for at fremskynde dataadgang kan vi finde flere niveauer af TLB, for eksempel og i nogle avancerede CPU -designs er der en TLB for hvert niveau i cachehierarkiet. I tilfælde af andre designs, hvad de gør, er at have en TLB til data og en anden til instruktioner, og de mere komplekse dem kombinerer begge begreber i arkitekturen.

TLB er derfor en hukommelse, der gemmer de seneste oversættelser foretaget af MMU, hvor den på den ene side gemmer den virtuelle adresse og på den anden side den fysiske. Takket være dette behøver MMU ikke at udføre overførslen igen, og det er så enkelt som at konsultere denne lille cache for at finde ud af, om adressen er på den aktuelle side.

Virtuelle caches, TLB og multicore

Caché virtuel

Problemet med den metode, vi har forklaret, er, at for hver hukommelsesforespørgsel, der foretages, er det nødvendigt at få adgang til TLB -cachen, og mange gange er dette kontraproduktivt, da vi øger latenstiden. Løsningen på det? Den såkaldte virtuelle cache, der i modsætning til hvad navnet siger, ikke er en ikke-eksisterende cache og derfor abstrakt, men er en cache, hvor de oplysninger, den indeholder, ikke er organiseret i henhold til dens fysiske adresse, men efter dens virtuelle adresse, derfor at adressen overførsel udføres efter søgningen af ​​dataene i cachen og kun hvis der opstår et "savn", hvilket betyder, at dataene ikke er i den virtuelle cache.

Problemet kommer, når to tråde i CPU'en hver har deres eget virtuelle adresserum, totalt adskilt på det fysiske adresseniveau, men med de samme virtuelle adresser. På en sådan måde, at hvis to applikationer ønsker at bruge den samme virtuelle adresse, skal de spørge den virtuelle cache, om der er en sådan virtuel adresse inde i den, selvom det indhold, der søges efter, er anderledes. Hvilket er fatalt i et multitasking -miljø, f.eks. 100% af de tilfælde i dag, hvor alle programmer af sikkerhedsmæssige årsager har deres egen virtualiserede hukommelsesadressering.

Den virtuelle cache er ikke almindelig i alle processorer og indebærer en dobbeltkontrol, hvilket betyder, at det i sidste ende er nødvendigt at gøre brug af TLB'en til at udføre overførslen af ​​instruktionerne fra MMU'en, hvilket eliminerer dens fordel. Alt dette eliminerer fuldstændigt fordelen ved at have en virtuel cache, men de fleste nutidige TLB'er gør brug af en form for virtuel cache indefra, som de tjekker inden de foretager det tilsvarende træk og opnår ydeevne i processen. Med andre ord integrerer de fleste af Trasnslate Lookaside Buffer, der er i CPU'er i dag, driften af ​​den virtuelle cache.