Principes van geheugenbeheer van een computersysteem. Virtueel geheugen en adresvertaling

Classificatie van MCMD-systemen

In een MCMD-systeem voert elk verwerkingselement (PE) zijn programma geheel onafhankelijk van andere PE's uit. Tegelijkertijd moeten de verwerkingselementen op de een of andere manier met elkaar interageren. Het verschil in de methode van een dergelijke interactie bepaalt de voorwaardelijke verdeling van MCMD-systemen in computers met gedeeld geheugen en systemen met gedistribueerd geheugen (Fig. 5.7).

In gedeelde geheugensystemen, die worden gekenmerkt als nauw gekoppeld, is dat wel het geval Gemeenschappelijk geheugen gegevens en opdrachten die toegankelijk zijn voor alle verwerkingselementen via een gemeenschappelijke bus of netwerk van verbindingen. Dergelijke systemen worden multiprocessors genoemd. Dit type omvat symmetrische multiprocessors (UMA (SMP), Symmetric Multiprocessor), systemen met uniforme toegang naar geheugen (NUMA, Non-Uniform Memory Access) en systemen met zogenaamd lokaal geheugen in plaats van cachegeheugen (COMA, Cache Only Memory Access).

Als alle processors gelijke toegang hebben tot alle geheugenmodules en alle I/O-apparaten, en elke processor uitwisselbaar is met andere processors, wordt zo'n systeem een ​​SMP-systeem genoemd. In systemen met gedeeld geheugen hebben alle processors gelijke toegang tot één adresruimte. Een enkel geheugen kan worden gebouwd als een enkel blok of modulair principe, maar de tweede optie wordt meestal beoefend.

SMP-systemen behoren tot de UMA-architectuur. Computersystemen met gedeeld geheugen, waarbij elke processor op uniforme wijze toegang heeft tot het geheugen en dezelfde tijd in beslag nemen, worden systemen met uniforme geheugentoegang (UMA) genoemd.

Vanuit het oogpunt van de geheugenniveaus die in de UMA-architectuur worden gebruikt, worden drie opties voor het construeren van een multiprocessor overwogen:

Klassiek (alleen met gedeeld hoofdgeheugen);

Met extra lokale cache voor elke verwerker;

Met extra lokaal buffergeheugen voor elke processor (Fig. 5.8).

Vanuit het oogpunt van de manier waarop processors omgaan met gedeelde bronnen (geheugen en interne opslag) in algemeen geval Er worden de volgende typen UMA-architecturen onderscheiden:

Met gemeenschappelijke bus- en tijdverdeling (7.9);

Met coördinatencommutator;

Gebaseerd op meertrapsnetwerken.

Door slechts één bus te gebruiken, wordt de grootte van een UMA-multiprocessor beperkt tot 16 of 32 processors. Verkrijgen grotere maat, is een ander type vereist communicatie netwerk. Het meest eenvoudig circuit aansluitingen – coördinaat commutator (Fig. 5.10). Dwarsschakelaars worden al tientallen jaren gebruikt om op willekeurige wijze een groep inkomende lijnen met een aantal uitgaande lijnen te verbinden.

De cross-country switch is een niet-blokkerend netwerk. Dit betekent dat de processor altijd verbonden zal zijn het benodigde blok geheugen, zelfs als een lijn of knooppunt al bezet is. Bovendien is er geen voorafgaande planning nodig.


Coördinatenschakelaars zijn zeer geschikt voor middelgrote systemen (Fig. 5.11).


Meertrapsnetwerken kunnen worden gebouwd met behulp van 2x2 switches. Een van de mogelijke opties– omega-netwerk (Fig. 5.12). Voor n processors en n geheugenmodules zijn log 2 n trappen vereist, n/2 schakelaars per trap, dat wil zeggen een totaal van (n/2) log 2 n schakelaars per trap. Dit is veel beter dan n 2 knooppunten (snijpunten), vooral voor grote n.

UMA-multiprocessors met één bus zijn doorgaans beperkt tot enkele tientallen processors, terwijl voor coördinaat- of schakelmultiprocessors dure processors nodig zijn. Hardware en ze zijn niet veel groter van formaat. Om meer dan 100 processors te krijgen, is verschillende geheugentoegang vereist.

Voor een grotere schaalbaarheid van multiprocessors is een architectuur met niet-uniforme geheugentoegang NUMA (NonUniform Memory Access) aangepast. Net als UMA-multiprocessors bieden ze één adresruimte voor alle processors, maar in tegenstelling tot UMA-machines is de toegang tot lokale geheugenmodules sneller dan die op afstand.

In het kader van het NUMA-concept worden benaderingen geïmplementeerd, aangeduid met de afkortingen NC-NUMA en CC-NUMA.

Als de toegangstijd tot het externe geheugen niet verborgen is (aangezien er geen cachegeheugen is), wordt een dergelijk systeem NC-NUMA (No Caching NUMA - NUMA without caching) genoemd (Fig. 5.13).

Als er coherente caches aanwezig zijn, wordt het systeem CC-NUMA (Coherent Cache Non-Uniform Memory Architecture - NUMA with cache coherence) genoemd (7.14).

Organisatie van het geheugen van de MPS. Geheugensegmentatie. Adresberekening. Intern cachegeheugen.

Geheugen microprocessor systeem vervult de functie van tijdelijke of permanente opslag van gegevens en opdrachten. De hoeveelheid geheugen bepaalt de toelaatbare complexiteit van de algoritmen die door het systeem worden uitgevoerd, en tot op zekere hoogte ook de snelheid van het systeem als geheel. Geheugenmodules worden geïmplementeerd op geheugenchips (RAM of ROM). Flash-geheugen wordt steeds vaker gebruikt als onderdeel van microprocessorsystemen. Flash-geheugen), een niet-vluchtig geheugen met de mogelijkheid om de inhoud meerdere keren te herschrijven.

Om de geheugenmodule op aan te sluiten systeem ruggengraat Er worden interfaceblokken gebruikt, waaronder een adresdecoder (selector), een circuit voor het verwerken van snelwegcontrolesignalen en databuffers (Figuur 7.4.1).

Figuur 7.4.1. Aansluitschema geheugenmodule.

De geheugenruimte van een microprocessorsysteem wordt doorgaans toegewezen aan verschillende speciale gebieden die speciale functies uitvoeren. Deze omvatten:

– opstartprogrammageheugen, uitgevoerd op ROM of flash-geheugen;

– geheugen voor de stapel of stapel (Stack) is een onderdeel werkgeheugen, bedoeld voor tijdelijke opslag van gegevens;

– interruptvectortabel met de startadressen van interruptverwerkingsprogramma's;

– geheugen van apparaten die op de systeembus zijn aangesloten.

Alle andere delen van de geheugenruimte hebben dat doorgaans wel universeel doel. Ze kunnen zowel gegevens als programma's bevatten (uiteraard in het geval van een architectuur met één bus).

Vaak wordt geheugenruimte met software in segmenten verdeeld veranderlijk adres het begin van het segment en vanaf vastgestelde omvang segment. Bijvoorbeeld, binnen Intel-processor 8086-geheugensegmentatie is als volgt georganiseerd.

Het gehele systeemgeheugen wordt niet weergegeven als een doorlopende ruimte, maar in de vorm van verschillende stukken - segmenten gegeven maat(elk 64 KB), waarvan de positie in de geheugenruimte programmatisch kan worden gewijzigd.

Voor het opslaan van geheugenadrescodes worden geen individuele registers gebruikt, maar paren registers:

Het segmentregister specificeert het startadres van het segment (dat wil zeggen de positie van het segment in het geheugen);

Het pointerregister (offsetregister) bepaalt de positie van het werkadres binnen het segment.

In dit geval wordt het fysieke 20-bits geheugenadres dat wordt blootgesteld aan de externe adresbus gevormd zoals weergegeven in figuur 7.4.2, dat wil zeggen door de offset en het segmentadres op te tellen met een verschuiving van 4 bits.

Figuur 7.4.2. Vorming van een fysiek geheugenadres uit een segmentadres en offset.

De locatie van dit adres in het geheugen wordt weergegeven in figuur 7.4.3.

Figuur 7.4.3. Locatie van fysiek adres in het geheugen

Een segment kan alleen beginnen bij een geheugengrens van 16 bytes (aangezien het startadres van het segment in wezen uit vier nulbits van lage orde bestaat, zoals te zien is in figuur 7.4.2), dat wil zeggen bij een adres dat een veelvoud van 16 is. geldige segmentgrenzen worden alineagrenzen genoemd.

Merk op dat de introductie van segmentatie voornamelijk te wijten is aan het feit dat de interne registers van de processor 16-bits zijn, en fysiek adres 20-bits geheugen (met een 16-bits adres kunt u slechts 64 KB geheugen gebruiken, wat duidelijk niet genoeg is).

Cachegeheugen bevindt zich tussen het hoofdgeheugen (RAM) en centrale verwerker om de tijd die wordt besteed aan CPU-toegang tot het OP te verminderen.

Het idee van cachegeheugen is gebaseerd op het voorspellen van de meest waarschijnlijke CPU-toegang tot het OP. De meest "waarschijnlijke" gegevens en instructies worden naar het snelle, CPU-getemperde cachegeheugen gekopieerd voordat ze direct door de CPU worden gebruikt, zodat toegang tot de gegevens en instructies die worden gebruikt in dit moment tijd, kan snel gebeuren, zonder een beroep te doen op het OP. Deze benadering is gebaseerd op het principe van programmalokaliteit of, zoals ze ook zeggen, de geneste aard van oproepen, wat betekent dat de adressen van opeenvolgende oproepen naar het OP in de regel een compacte groep vormen. Bij toegang tot het OP worden geen individuele gegevens naar het cachegeheugen gekopieerd, maar informatieblokken, inclusief de gegevens die hoogstwaarschijnlijk door de CPU in volgende werkstappen zullen worden gebruikt. In dit opzicht worden daaropvolgende instructies door de CPU geselecteerd, niet uit het OP, maar uit het snelle cachegeheugen. Wanneer de CPU bepaalde gegevens naar het RAM moet lezen of schrijven, controleert deze eerst de aanwezigheid ervan in het cachegeheugen. De efficiëntie van een cachesysteem hangt af van de blokgrootte en het programma-algoritme.

Multiprocessing computersystemen leiden tot het probleem van gelijktijdige geheugentoegang door verschillende processors. Afhankelijk van hoe het geheugen van een multiprocessorsysteem is georganiseerd, zijn er:

1. Computersystemen met gedeeld geheugen – Multiprocessors:

i. PVP (CrayT90)

ii. SMP (Intel SHV, SunFire, Dec8400, enz.)

i. COMA (KSR-1, DDM)

ii. CC-NUMA (Stanford Dash, Data General, enz.)

iii. NCC-NUMA (Crag T3E)

2. Computersystemen met gedistribueerd geheugen – Multicomputers:

ii. MPP – losjes gekoppelde systemen (Intel TFLOPS)

Het verschil tussen gedeeld en gedistribueerd geheugen is het verschil in de structuur van virtueel geheugen, dat wil zeggen in hoe dit geheugen er vanuit de processors uitziet. Met andere woorden: wat gedeeld geheugen onderscheidt van gedistribueerd geheugen is de manier waarop het geheugensubsysteem het celadres interpreteert dat wordt ontvangen van de microprocessor (globaal adres of lokaal adres).

Fysiek is bijna al het geheugen verdeeld in autonome componenten die onafhankelijk toegankelijk zijn.

Laten we modellen van BC-geheugenarchitecturen bekijken die waar zullen zijn voor zowel de MIMD- als de SIMD-gegevensstroomklassen:

UMA- VS met gedeeld geheugen, waarbij elke processor op uniforme wijze toegang heeft tot het geheugen en dezelfde tijd in beslag neemt. Systemen met uniforme geheugentoegang:

MP – gedeeld geheugen

Pi-processor

Gemeenschappelijke bus

Kenmerken: op elk moment kan slechts één van de processors op de bus communiceren. De prestaties nemen af ​​naarmate het aantal processors toeneemt. Meestal zijn er 4 tot 8 processors in het systeem, maximale prestatie= 2. Het systeem kan niet als fouttolerant worden geclassificeerd, aangezien het falen van één geheugenmodule of processor kan leiden tot het falen van het hele systeem.

IN deze klas architecturen bestaan multiprocessorsystemen met geheugen bestaande uit verschillende modules. De bus wordt vervangen door een schakelaar die processorverzoeken doorstuurt naar een van de verschillende geheugenmodules. Bovendien behoren alle geheugenmodules tot één adresruimte. Het voordeel is dat u meerdere aanvragen kunt verwerken.

NUMA– heterogene geheugentoegang. Er zijn hier verschillende klassen. Er wordt één adresruimte gebruikt, maar elke processor heeft lokaal geheugen (meestal een cache). Toegang tot de LP is veel sneller dan toegang tot extern geheugen via een netwerk of switch.


COMA – alleen met cache. Het lokale geheugen van elke processor is gebouwd als een grote cache. De caches van alle processors vormen samen het globale systeemgeheugen. De gegevens zijn niet statisch gebonden aan een specifieke geheugenmodule en hebben geen uniek adres. De gegevens worden overgebracht naar de cache van de processor die er het laatst om heeft gevraagd.



Het grootste nadeel: zeer complex beheer, het besturingssysteem is niet betrokken bij het beheerproces (alle taken worden toegewezen aan de hardware).

CC-NUMA is een model voor cache-coherente toegang tot heterogeen geheugen. Het is niet de cache die wordt gebruikt, maar de gebruikelijke fysieke gedistribueerd geheugen. Vereist geen software om veel bijgewerkte gegevens op te slaan. Het hardwareniveau regelt dit.

NCC-NUMA - het model gaat uit van het gebruik van één enkele adresruimte, maar garandeert geen consistentie van globale gegevens over de hele wereld hardwareniveau. Het beheer wordt aan de software toevertrouwd, dit wordt als een nadeel ervaren, maar het model is het meest veelbelovend in termen van het verhogen van de productiviteit.

Multicomputers - de blokken waaruit het systeem is opgebouwd, worden weergegeven door een processor en geheugen.

NORMA – architectuur zonder directe toegang naar het externe geheugen.


P – verwerker

M – lokaal geheugen

K0 en K1 – ingangs-/uitgangscontroller

Blokken zijn verwerkingselementen. Hieruit worden systemen samengesteld.

Elke processor in een dergelijk systeem heeft alleen toegang tot het geheugen op afstand door berichten uit te wisselen met de processors die eigenaar zijn van het adresseerbare geheugen. Alle PE's ten opzichte van elkaar worden beschouwd als invoer-uitvoerapparaten.

Om berichten naar een ander verwerkingselement te sturen, genereert de processor een datablok in zijn lokaal geheugen en informeert de lokale controller over de noodzaak om informatie naar een extern apparaat over te dragen. Via het interconnectienetwerk wordt dit bericht naar de ontvangende controller gestuurd, die een locatie in zijn lokale geheugen vindt en zijn processor op de hoogte stelt dat deze is aangekomen, evenals de bronprocessor dat het bericht is ontvangen.



Voordelen: bij het ontsluiten van data is er geen concurrentie om de bus of overstap. Omdat er geen gemeenschappelijke bus is, zijn er geen beperkingen op het aantal processors. In veel mindere mate is er een probleem met de betrouwbaarheid van de cache. Elke verwerker heeft het recht om zijn cache te wijzigen en zijn acties niet met anderen te coördineren.

Nadelen: Elk verwerkingselement heeft een interruptsysteem. Dit veroorzaakt de complexiteit van de informatie-uitwisseling (tijd om berichten te verzenden en te genereren, tijd om interruptverzoeken te genereren en deze te verwerken).

Een belangrijk onderdeel van computersystemen is geheugen. De organisatie van de interactie tussen de processor en het geheugen bepaalt de belangrijkste kenmerken van het computersysteem; de overige elementen zorgen voor de verbinding met deze link externe apparaten Met buitenwereld. Het geheugen is via de adresbus, databus en besturingsbus verbonden met de geheugencontroller (geheugenbeheerapparaat). De databusbreedte bepaalt hoeveel binaire bits tegelijkertijd (parallel) uit het geheugen kunnen worden gelezen. Elk binair cijfer (1 bit) wordt opgeslagen door een geheugenelement. Artikelen voor geheugen verschillende types zijn gebouwd op basis van verschillende fysieke principes informatie vastleggen en opslaan. Geheugenelementen worden gecombineerd tot geheugencellen. In dit geval worden alle elementen van de cel gelijktijdig en op dezelfde manier aangesproken en zo georganiseerd dat ze tegelijkertijd gegevens naar de databus kunnen sturen. Dergelijke gecombineerde cellen vormen een woord. Het aantal databits dat tegelijkertijd uit het geheugen wordt gelezen, wordt de samplelengte genoemd. Om 1 byte op te slaan, worden 8 geheugenelementen gebruikt. Geheugencellen van 8 bits zijn georganiseerd met behulp van een databus van 8 lijnen breed.

Geheugenmodules worden gemaakt op basis van geheugenmicroschakelingen (chips), die zijn geïnstalleerd in speciale sleuven(connectoren) van een computersysteem. Tegenwoordig zijn de meest voorkomende DIMM-modules geheugenmodules met twee rijen contacten.

De adresbusbreedte bepaalt de adresruimte, dat wil zeggen het aantal geheugencellen dat direct kan worden geadresseerd. Als de adresbusbreedte n is, wordt het aantal van alle mogelijke binaire combinaties (aantal adressen) bepaald als N = 2n.

Rijst. 1. Organisatie van de communicatie tussen het geheugensysteem en de processor

Geheugen computerapparaat kan drie bewerkingen uitvoeren:

a) opslag van informatie;

b) informatie vastleggen;

c) informatie lezen.

Geheugenspecificaties:

Geheugencapaciteit bepaalt maximaal aantal informatie opgeslagen in het geheugen en gemeten in bits, bytes, kilobytes, megabytes, gigabytes, terabytes, enz.

Specifieke capaciteit wordt gedefinieerd als de verhouding tussen de geheugencapaciteit en het fysieke volume dat het in beslag neemt.

Informatieregistratiedichtheid wordt gedefinieerd als de hoeveelheid informatie per oppervlakte-eenheid van de informatiedrager of per lengte-eenheid van de informatiedrager.

Toegangstijd geheugen. Geheugenprestaties worden bepaald door de duur van bewerkingen bij toegang tot geheugen. De toegangstijd bij het schrijven en de toegangstijd bij het lezen is de som van respectievelijk de tijd van het zoeken naar een geheugencel op een bepaald adres en het daadwerkelijke schrijven of lezen.

Geheugenclassificatie:

Werkgeheugen

Voor willekeurig toegankelijk geheugen ( elektronisch geheugen) is de toegangstijd niet afhankelijk van de locatie van het gezochte geheugengebied. Celselectie vindt plaats op adres met behulp van elektronische circuits.

Directe cyclische toegang

Bij contact schijf geheugen er wordt gebruik gemaakt van directe cyclische toegang. Het opslagmedium roteert continu, dus de mogelijkheid om toegang te krijgen tot hetzelfde geheugengebied is cyclisch.

Seriële toegang

Sequentiële toegang tot gegevens is mogelijk wanneer magneetband als medium wordt gebruikt opeenvolgende bezichtiging delen van de media zijn nodig om de benodigde gegevens te vinden.

Adresloos geheugen

Stack-gebaseerde en associatieve opslagapparaten kunnen als adresloos worden geclassificeerd. Bij toegang tot adresloos geheugen specificeert de opdracht voor geheugentoegang niet het celadres. In gestapelde geheugenapparaten wordt het adres van een geheugencel bijgehouden door een speciaal adresregister. Bij toegang tot de stapel wordt het adres uit dit register ingesteld. Bij contact associatief geheugen Het zoeken naar informatie wordt uitgevoerd op attribuut (tag) door de tags van alle geheugencellen te vergelijken met het associatieve attribuut. Het associatieve attribuut wordt geschreven om de vergelijkingsbewerking uit te voeren in een speciaal attribuutregister.

Classificatie van geheugen naar functioneel doel:

ROM - alleen-lezen geheugenapparaten of ROM (Read Only Memory), worden gebruikt om permanente gegevens en hulpprogramma's op te slaan.

SRAM - Super Random Access Memory, is een set registers algemeen doel- RON, bedoeld voor het opslaan van operanden en resultaten van een bewerking in de processor.

RAM - Random Access Memory of RAM (Random Access Memory - Random Access Memory), wordt gebruikt om het uitvoerende programma en de operationele gegevens op te slaan. Als een register toegankelijk is voor schrijven/lezen via zijn adres, dan vormt een dergelijke registerstructuur een RAM met willekeurige toegang.

Classificatie volgens de methode voor het opslaan van informatie:

Statisch geheugen

In statische opslagapparaten worden LSI's gemaakt op bistabiele triggergeheugenelementen (met twee stabiele toestanden - vandaar de naam geheugen).

Dynamisch geheugen

Dynamische geheugenapparaten gebruiken goedkopere LSI's, waarbij het opslagelement een condensator is. De condensator ontlaadt zich in de loop van de tijd (dit is de dynamiek), dus het is noodzakelijk om de potentiële waarde te behouden door de condensator op te laden. Dit proces wordt regeneratie genoemd.

Aanhoudende herinnering

Bij alleen-lezen geheugenapparaten is het opslagelement een gezekerde smeltbare verbinding of halfgeleider diode, waarin hij de rol speelt van een vernietigbare springer. In herprogrammeerbare ROM's worden cellen gemaakt van MOS-transistors met een zwevende en geïsoleerde poort gebruikt om informatie op te nemen en op te slaan. Informatie wordt elektrisch opgenomen wanneer stroom door het bron-/afvoerkanaal stroomt, ladingen worden op de poort afgezet en zo lang opgeslagen als nodig is; gewenst. Het wissen van informatie wordt uitgevoerd door een spanning met een ander teken aan te leggen op de source/drain-sectie in herprogrammeerbare ROM's met elektrisch wissen of bestraling met ultraviolette straling in ROM's met ultraviolet wissen.

Holografisch geheugen

In holografische opslagapparaten wordt informatie opgeslagen in het volume van een holografisch kristal in de vorm van een momentopname van de interferentie van twee golven, referentie en informatie. Dit veelbelovende type opslagapparaat heeft een hoge dichtheid aan informatieregistratie en is momenteel in ontwikkeling.

Biologisch geheugen

Biologische opslagapparaten maken gebruik van veranderingen in de toestand van organische moleculen die het vermogen hebben om lading op te slaan en elektronen uit te wisselen om informatie vast te leggen.

Geheugen aan magnetische media

In externe opslagapparaten op magnetische media wordt informatie opgeslagen in de vorm van delen van het ferromagnetische oppervlak van een schijf of magneetband die in een bepaalde richting zijn gemagnetiseerd.

Optisch geheugen

In optische externe opslagapparaten wordt informatie vastgelegd in de vorm van secties met verschillende lichtverstrooiingscoëfficiënten van een gerichte laserstraal.

Geheugen is een van de belangrijkste componenten van elke computer. De capaciteit en snelheid bepalen voor een groot deel de prestaties van het geheel computer systeem. IN deze kwestie werden als het meest beschouwd belangrijke technologieën creatie en details van geheugenorganisatie.

Organisatie van het geheugensubsysteem in een pc

Opslagapparaten (opslag) van het pc-geheugensubsysteem kunnen in de volgende hiërarchie worden gerangschikt (tabel 9.1):

Tabel 9.1. Hiërarchie van het pc-geheugensubsysteem
Geheugentype 1985 2000
Bemonsteringstijd Typisch volume Prijs/byte Bemonsteringstijd Typisch volume Prijs/byte
Superoperatief geheugen (registers) 0,2 5 ns 16/32 beetje $ 3 - 100 0,01 1ns 32/64/128 bits $ 0,1 10
Snel buffergeheugen (cache) 20 100 ns 8 KB - 64 KB ~ $ 10 0,5 - 2 ns 32 KB 1 MB $ 0,1 - 0,5
Operationeel (hoofd)geheugen ~0,5 ms 1 MB - 256 MB $ 0,02 1 2 ns 20 ns 128 MB - 4 GB $ 0,01 0,1
Externe opslag (massageheugen) 10 - 100 ms 1MB - 1GB $ 0,002 - 0,04 5 - 20 ms 1 GB - 0,5 TB $ 0,001 - 0,01

Processorregisters vormen de context en slaan gegevens op die worden gebruikt door momenteel processorinstructies uit te voeren. Processorregisters worden in de regel benaderd via hun geheugensteuntjes in processorcommando's.

De cache wordt gebruikt om de snelheid van de CPU en het hoofdgeheugen te matchen. Computersystemen gebruiken caches op meerdere niveaus: cache van niveau I (L1), cache van niveau II (L2), enz. IN desktopsystemen Meestal wordt op servers een cache met twee niveaus gebruikt, een cache met drie niveaus. In de cache worden instructies of gegevens opgeslagen die waarschijnlijk in de nabije toekomst door de processor zullen worden ontvangen voor verwerking. De werking van de cache is software transparant, waardoor de cache meestal niet softwarematig toegankelijk is.

RAM-winkels zijn in de regel functioneel compleet softwaremodules(kern besturingssysteem, het uitvoeren van programma's en hun bibliotheken, gebruikte apparaatstuurprogramma's, enz.) en hun gegevens die rechtstreeks betrokken zijn bij de werking van programma's, en wordt ook gebruikt om de resultaten van berekeningen of andere gegevensverwerking op te slaan voordat ze naar externe opslag worden verzonden, naar een gegevensuitvoer apparaat- of communicatie-interfaces.

Elke RAM-cel krijgt een uniek adres toegewezen. Organisatorische methoden voor het toewijzen van geheugen bieden programmeurs de mogelijkheid om dit te doen effectief gebruik het gehele computersysteem. Dergelijke methoden omvatten een continu ("plat") geheugenmodel en een gesegmenteerd geheugenmodel. Bij gebruik van een plat geheugenmodel werkt het programma met een enkele continue adresruimte, een lineaire adresruimte waarin geheugencellen opeenvolgend en continu worden genummerd van 0 tot 2n-1, waarbij n de CPU-bitdiepte op het adres is. Wanneer een gesegmenteerd model voor een programma wordt gebruikt, wordt het geheugen weergegeven door een groep onafhankelijke adresblokken die segmenten worden genoemd. Om een ​​geheugenbyte te adresseren, moet een programma een logisch adres gebruiken dat bestaat uit een segmentselector en een offset. Een segmentselector selecteert een specifiek segment, en een offset wijst naar een specifieke cel in de adresruimte van het geselecteerde segment.



Organisatorische methoden voor geheugentoewijzing maken het mogelijk een computersysteem te organiseren waarin de werkadresruimte van het programma groter is dan de grootte van het RAM dat daadwerkelijk in het systeem beschikbaar is, terwijl het gebrek aan RAM wordt opgevuld met extern langzamer of goedkoper geheugen (harde schijf , flash-geheugen, enz.). Dit concept wordt virtueel geheugen genoemd. In dit geval kan de lineaire adresruimte rechtstreeks aan de fysieke adresruimte worden toegewezen (een lineair adres is een fysiek adres) of met behulp van het pagingmechanisme. In het tweede geval wordt de lineaire adresruimte verdeeld in pagina's zelfde maat, die het virtuele geheugen vormen. Paginavertaling zorgt ervoor dat de vereiste virtuele geheugenpagina's worden toegewezen aan de fysieke adresruimte.

Naast het implementeren van een virtueel geheugensysteem worden externe geheugens gebruikt voor langdurige opslag van programma's en gegevens in de vorm van bestanden.

Cachegeheugen

Cachegeheugen is een opslagapparaat met hoge snelheid dat zich op dezelfde chip als de CPU bevindt, of extern aan de CPU. De cache dient als een snelle buffer tussen de CPU en het relatief trage hoofdgeheugen. Het idee van cachegeheugen is gebaseerd op het voorspellen van de meest waarschijnlijke CPU-toegang tot RAM. Deze benadering is gebaseerd op het principe van de temporele en ruimtelijke lokaliteit van het programma.



Als de CPU toegang heeft gekregen tot een RAM-object, is de kans groot dat de CPU binnenkort weer toegang zal krijgen tot dat object. Een voorbeeld van deze situatie is code of gegevens in lussen. Dit concept wordt beschreven door het principe van temporele lokaliteit, dat stelt dat veelgebruikte RAM-objecten "dichter" bij de CPU (in de cache) moeten zijn.

Om de inhoud van het cachegeheugen en RAM te coördineren, worden drie opnamemethoden gebruikt:

  • Doorschrijven - RAM wordt gelijktijdig met het cachegeheugen bijgewerkt.
  • Gebufferd doorschrijven - informatie wordt in een cachebuffer bewaard voordat deze naar RAM wordt geschreven en wordt naar RAM geschreven tijdens cycli waarin de CPU er geen toegang toe heeft.
  • Terugschrijven - de wijzigingsbit in het tagveld wordt gebruikt en de regel wordt alleen naar het RAM geschreven als de wijzigingsbit 1 is.

In de regel kunt u met alle schrijfmethoden, behalve pass-through, schrijfbewerkingen in het RAM uitstellen en groeperen om de prestaties te verbeteren.

Er zijn twee soorten gegevensblokken in de cachegeheugenstructuur:

  • gegevensweergavegeheugen (de gegevens zelf, gedupliceerd vanuit RAM);
  • taggeheugen (tekens die de locatie van in de cache opgeslagen gegevens in RAM aangeven).

De geheugenruimte voor gegevenstoewijzing in de cache is verdeeld in lijnen - blokken met een vaste lengte (bijvoorbeeld 32, 64 of 128 bytes). Elke cacheregel kan een aaneengesloten uitgelijnd blok bytes uit RAM bevatten. Welk RAM-blok aan een bepaalde cacheregel wordt toegewezen, wordt bepaald door de regeltag en het toewijzingsalgoritme. Op basis van de algoritmen voor het toewijzen van RAM aan cache, zijn er drie soorten cachegeheugen:

  • volledig associatieve cache;
  • cache voor directe toewijzing;
  • meerdere associatieve cache.

Een volledig associatieve cache wordt gekenmerkt door het feit dat de cachecontroller elk RAM-blok in elke cacheregel kan plaatsen (Figuur 9.1). In dit geval wordt het fysieke adres in twee delen gesplitst: de offset in het blok (cacheregel) en het bloknummer. Wanneer een blok in de cache wordt opgeslagen, wordt het bloknummer opgeslagen in de bijbehorende regeltag. Wanneer de CPU toegang krijgt tot de cache voor noodzakelijk blok, wordt een cachemisser alleen gedetecteerd nadat de tags van alle regels zijn vergeleken met het bloknummer.

Een van de belangrijkste voordelen deze methode beeldscherm - goed gebruik van RAM, omdat Er zijn geen beperkingen op welk blok kan worden toegewezen aan een bepaalde cacheregel. De nadelen zijn onder meer de complexe hardware-implementatie van deze methode, die vereist grote hoeveelheid circuits (voornamelijk comparatoren), wat leidt tot een toename van de toegangstijd tot een dergelijke cache en een toename van de kosten ervan.

Afbeelding vergroten
Rijst. 9.1. Volledig associatieve 8x8 cache voor 10-bits adres

Alternatieve manier De toewijzing van RAM aan cache is een direct toegewezen cache (of associatieve cache met één invoer). In dit geval bepaalt het geheugenadres (bloknummer) op unieke wijze de cacheregel waarin de dit blok. Het fysieke adres is opgesplitst in drie delen: de offset in het blok (cacheregel), het cacheregelnummer en de tag. Dit of dat blok wordt altijd in een strikt gedefinieerde cacheregel geplaatst, waarbij indien nodig een ander blok wordt vervangen dat daar is opgeslagen. Wanneer de CPU de cache benadert voor een benodigd blok, hoeft hij alleen de tag van één regel te controleren om te bepalen of het een cachetreffer of een cachemisser is.

Duidelijke voordelen Dit algoritme is eenvoudig en goedkoop te implementeren. De nadelen zijn onder meer de lage efficiëntie van een dergelijke cache vanwege het waarschijnlijk frequent herladen van rijen. Wanneer u bijvoorbeeld toegang krijgt tot elke 64e geheugencel in het systeem in Fig. 9.2 zal de cachecontroller gedwongen worden om voortdurend dezelfde cacheregel te overbelasten, zonder de andere helemaal te gebruiken.

Afbeelding vergroten
Rijst. 9.2. 8x8 direct toegewezen cache voor 10-bits adres

Ondanks duidelijke tekortkomingen, deze technologie succesvolle toepassing gevonden, bijvoorbeeld in de Motorola MC68020 MP, voor het organiseren van de instructiecache op het eerste niveau (Fig. 9.3). Deze microprocessor implementeert een directe mapping-cache van 64 lijnen van 4 bytes. De lijntag bevat, naast 24 bits die het adres van het in de cache opgeslagen blok specificeren, een significantiebit dat de geldigheid van de lijn bepaalt (als de significantiebit 0 is, gegeven lijn wordt als ongeldig beschouwd en zal geen cachehit veroorzaken). Gegevenstoegang wordt niet in de cache opgeslagen.

Afbeelding vergroten
Rijst. 9.3. Cachegeheugenorganisatiediagram in de Motorola MC68020 MP

Een compromis tussen de eerste twee algoritmen is een meervoudige associatieve cache of een gedeeltelijk associatieve cache (Figuur 9.4). Met deze methode voor het organiseren van cachegeheugen worden regels gecombineerd in groepen, die 2, 4, : regels kunnen bevatten. In overeenstemming met het aantal lijnen in dergelijke groepen worden 2-invoer, 4-invoer, enz. onderscheiden. associatieve cache. Bij toegang tot het geheugen wordt het fysieke adres in drie delen verdeeld: de offset in het blok (cachelijn), het groepsnummer (set) en de tag. Een geheugenblok waarvan het adres overeenkomt met een bepaalde groep kan in elke rij van die groep worden geplaatst, en de overeenkomstige waarde wordt in de rijtag geplaatst. Het ligt voor de hand dat binnen de geselecteerde groep het principe van associativiteit in acht wordt genomen. Aan de andere kant kan een bepaald blok alleen in een strikt gedefinieerde groep vallen, wat het principe weerspiegelt van het organiseren van een directe mapping-cache. Om ervoor te zorgen dat de processor een cachemisser kan identificeren, hoeft hij de tags van slechts één groep (2/4/8/: regels) te controleren.

Afbeelding vergroten
Rijst. 9.4. 8x8 cache-associatief met twee ingangen voor 10-bits adres

Dit algoritme mapping combineert de voordelen van een volledig associatieve cache (goed geheugengebruik, hoge snelheid), en cache voor directe toegang (eenvoud en lage kosten), die qua deze kenmerken slechts iets minderwaardig zijn dan de oorspronkelijke algoritmen. Dit is de reden waarom de meervoudige associatieve cache het meest wordt gebruikt (Tabel 9.2).

Tabel 9.2. Kenmerken van het cachegeheugensubsysteem van de IA-32 CPU
Intel486 Pentium Pentium MMX P6 Pentium4
L1-instructiecache
Type 4-in. ass. 2-in. ass. 4-in. ass. 4-in. ass. 8-in. ass.
Tekenreeksgrootte, bytes -
Totaal volume, KB 8/16 8/16 12 kmop
L1-gegevenscache
Type Gedeeld met instructiecache 2-in. ass. 4-in. ass. 2/4 inch. ass. 4-in. ass.
Tekenreeksgrootte, bytes
Totaal volume, KB 8/16
L2-cache
Type Extern externe 4-in. ass. 4-in. ass. 8-in. ass.
Tekenreeksgrootte, bytes
Totaal volume, KB 256/512 128-2048 256/512

Opmerkingen: De Intel-486 gebruikt een enkele L1-instructie en datacache. In de Pentium Pro L1 is de datacache 8 KB associatief met 2 ingangen, in andere P6-modellen is deze 16 KB associatief met 4 ingangen. De Pentium 4 gebruikt een L1 micro-operation cache (trace cache) in plaats van een L1 instructie cache.

Om het cachegeheugen te organiseren, kunt u de Princeton-architectuur gebruiken (gemengde cache voor instructies en gegevens, bijvoorbeeld in Intel-486). Deze voor de hand liggende (en onvermijdelijke voor von Neumann-systemen met cachegeheugen extern aan de CPU) oplossing is niet altijd de meest effectieve. Het verdelen van het cachegeheugen in een instructiecache en een gegevenscache (Harvard-cache) verbetert de cache-efficiëntie om de volgende redenen:

  • Veel moderne verwerkers hebben een pijpleidingarchitectuur waarin de transportblokken parallel werken. Het ophalen van instructies en toegang tot instructiegegevens vinden dus plaats in verschillende fasen van de pijplijn, en het gebruik van een afzonderlijke cache maakt het mogelijk dat deze bewerkingen parallel worden uitgevoerd.
  • De instructiecache kan als alleen-lezen worden geïmplementeerd en vereist daarom geen implementatie van algoritmen terugschrijven, waardoor deze cache eenvoudiger, goedkoper en sneller wordt.

Daarom iedereen nieuwste modellen IA-32, te beginnen met Pentium, gebruikt de architectuur van Harvard om de cache op het eerste niveau te organiseren.

criterium efficiënt werk cache kan worden beschouwd als een vermindering van de gemiddelde geheugentoegangstijd in vergelijking met een systeem zonder cachegeheugen. In dit geval kan de gemiddelde toegangstijd als volgt worden geschat:

T av = (T hit x R hit) + (T miss x (1 R hit))

waarbij T hit de cachetoegangstijd is in het geval van een hit (inclusief de tijd om een ​​misser of hit te identificeren), T miss de tijd is die nodig is om een ​​blok uit het hoofdgeheugen in een cacheregel te laden in het geval van een cachemisser en daaropvolgende levering van de gevraagde gegevens aan de processor, R hit-hit frequentie.

Het is duidelijk dat hoe dichter de R-hitwaarde bij 1 ligt, hoe dichter de T-gemiddeldewaarde bij T-hit ligt. Het hitpercentage wordt voornamelijk bepaald door de cache-architectuur en de grootte ervan. Het effect van de aan- en afwezigheid van cachegeheugen en de omvang ervan op de groei van de CPU-prestaties wordt weergegeven in de tabel. 9.3.