Modules van hoofdgeheugensystemen. Geheugen van computersystemen

Geheugenorganisatie van de MPS. geheugen segmentatie. Adres berekening. Intern cachegeheugen.

Het geheugen van het microprocessorsysteem 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, evenals, tot op zekere hoogte, de snelheid van het systeem als geheel. Geheugenmodules worden uitgevoerd op geheugenchips (operationeel of permanent). Als onderdeel van microprocessorsystemen wordt steeds vaker flash-geheugen gebruikt, een niet-vluchtig geheugen met de mogelijkheid om de inhoud herhaaldelijk te herschrijven.

Om de geheugenmodule op de systeembus aan te sluiten, worden interfaceblokken gebruikt, waaronder een adresdecoder (selector), een circuit voor het verwerken van busbesturingssignalen en gegevensbuffers (Figuur 7.4.1).

Figuur 7.4.1. Aansluitschema geheugenmodule.

In de geheugenruimte van een microprocessorsysteem zijn er meestal verschillende speciale gebieden die speciale functies vervullen. Waaronder:

– opstartprogrammageheugen uitgevoerd op ROM of flashgeheugen;

- geheugen voor de stapel of stapel (Stack) is een onderdeel van RAM bedoeld voor tijdelijke opslag van gegevens;

– een tabel met onderbrekingsvectoren met de adressen van de start van programma's voor het afhandelen van onderbrekingen;

– geheugen van apparaten aangesloten op de systeembus.

Alle andere delen van de geheugenruimte hebben in de regel een universeel doel. Ze kunnen zowel data als programma's bevatten (uiteraard in het geval van een single-bus architectuur).

Vaak is de geheugenruimte opgedeeld in segmenten met een programmatisch veranderbaar segmentstartadres en een vaste segmentgrootte. In de Intel 8086-processor is geheugensegmentatie bijvoorbeeld als volgt georganiseerd.

Het volledige geheugen van het systeem wordt niet weergegeven als een continue ruimte, maar als verschillende stukken - segmenten van een bepaalde grootte (elk 64 KB), waarvan de positie in de geheugenruimte programmatisch kan worden gewijzigd.

Om geheugenadrescodes op te slaan, worden geen afzonderlijke registers gebruikt, maar registerparen:

Het segmentregister bepaalt het adres van het begin 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 is toegewezen 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 het fysieke geheugenadres uit het segmentadres en offset.

De positie van dit adres in het geheugen is weergegeven in figuur 7.4.3.

Figuur 7.4.3. Locatie van fysiek adres in geheugen

Een segment kan alleen beginnen bij een geheugengrens van 16 bytes (omdat het adres van het begin van een segment eigenlijk vier nullen van lage orde heeft, zoals te zien is in figuur 7.4.2), dat wil zeggen bij een adres dat een veelvoud is van 16. Deze 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 het fysieke geheugenadres 20-bits is (een 16-bits adres maakt het gebruik van slechts 64 KB geheugen mogelijk, wat duidelijk is niet genoeg).

Het cachegeheugen bevindt zich tussen het hoofdgeheugen (RAM) en de centrale processor om de tijd die de CPU nodig heeft om toegang te krijgen tot het RAM-geheugen, te verminderen.

Het idee van cachegeheugen is gebaseerd op het voorspellen van de meest waarschijnlijke CPU-toegangen tot het RAM. De meest "waarschijnlijke" gegevens en instructies worden gekopieerd naar de snelle cache met CPU-snelheid voordat ze daadwerkelijk door de CPU worden gebruikt, zodat de gegevens en instructies die momenteel in gebruik zijn snel toegankelijk zijn zonder een beroep te doen op het RAM-geheugen. Deze benadering is gebaseerd op het principe van programmalokaliteit of, zoals ze 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 RAM-geheugen worden geen individuele gegevens gekopieerd naar het cachegeheugen, maar informatieblokken, inclusief die gegevens die het meest waarschijnlijk in de CPU zullen worden gebruikt bij volgende werkstappen. In dit opzicht worden volgende instructies door de CPU niet langer uit het RAM-geheugen, maar uit het snelle cachegeheugen geselecteerd. Wanneer de CPU wat gegevens naar het RAM moet lezen of schrijven, controleert deze eerst of ze aanwezig zijn in de cache. De efficiëntie van het cachesysteem hangt af van de blokgrootte en het programma-algoritme.

Tabel 9.1. Hiërarchie van het pc-geheugensubsysteem
Geheugentype: 1985 2000
Proeftijd Typisch volume Prijs / byte Proeftijd Typisch volume Prijs / byte
1 Supersnel geheugen (registers) 0.2 5 ns 16/32 bit $ 3 - 100 0,01 1 ns 32/64/128 bits $ 0,1 10
2 Snel buffergeheugen (cache) 20 100 ns 8Kb - 64Kb ~ $ 10 0,5 - 2 ns 32Kb 1Mb $ 0,1 - 0,5
3 Operationeel (hoofd) geheugen ~ 0,5 ms 1Mb - 256Mb $ 0,02 1 2 ns 20 ns 128 MB - 4 GB $ 0,01 0,1
4 Externe opslag (massaopslag) 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 processoropdrachten uit te voeren. Processorregisters worden in de regel aangeduid met hun geheugensteuntjes in processorcommando's.

cache gebruikt om de snelheid van de CPU en het hoofdgeheugen aan te passen. In computersystemen wordt een cache met meerdere niveaus gebruikt: cache van niveau I (L1), cache van niveau II (L2), enz. Desktopsystemen gebruiken doorgaans een cache met twee niveaus, terwijl servers een cache met drie niveaus gebruiken. De cache slaat instructies of gegevens op die waarschijnlijk in de nabije toekomst door de processor zullen worden verwerkt. De werking van de cache is transparant voor de software, dus de cache is meestal niet toegankelijk voor software.

RAM slaat in de regel functioneel voltooide programmamodules op (kernel van het besturingssysteem, uitvoerende programma's en hun bibliotheken, stuurprogramma's van gebruikte apparaten, enz.) en hun gegevens die rechtstreeks betrokken zijn bij de werking van programma's, en wordt ook gebruikt om de resultaten van berekeningen op te slaan of andere verwerkingsgegevens voordat u deze naar externe opslag, uitvoerapparaten of communicatie-interfaces verzendt.

elke cel werkgeheugen een uniek adres toegewezen. Organisatorische methoden voor geheugentoewijzing bieden programmeurs de mogelijkheid om het hele computersysteem efficiënt te gebruiken. Deze methoden omvatten een solide ("plat") geheugenmodel en een gesegmenteerd geheugenmodel. Bij gebruik van een plat geheugenmodel werkt het programma op 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. Bij gebruik van een gesegmenteerd model (gesegmenteerd model) voor het programma, wordt het geheugen vertegenwoordigd door een groep onafhankelijke adresblokken, segmenten genoemd. Om een ​​geheugenbyte te adresseren, moet een programma een logisch adres gebruiken dat bestaat uit een segmentkiezer en een offset. De segmentkiezer selecteert een specifiek segment en de offset wijst naar een specifieke cel in de adresruimte van het geselecteerde segment.

Stuur uw goede werk in de kennisbank is eenvoudig. Gebruik het onderstaande formulier

Studenten, afstudeerders, jonge wetenschappers die de kennisbasis gebruiken in hun studie en werk zullen je zeer dankbaar zijn.

Gehost op http://www.allbest.ru/

1. Principes van informatie-uitwisseling tussen hiërarchische niveaus van het geheugensubsysteem.

2. Hoofdfuncties en hoofdsubsystemen van een computersysteem.

3. Het werkingsprincipe van het associatieve cachegeheugen.

4. Implementatie van interrupts van randapparatuur aangesloten via een seriële interface.

5. Wat zijn beschermingsringen?

6. Wat is RAM-segmentatie?

7. Belangrijkste kenmerken van videogegevens. Matrix en grafische weergave van video-informatie.

8. Wat is een bestand? Verschillen tussen een bestand en een map.

9. De belangrijkste fasen van de pijplijn van moderne processors.

10. Wat is het hernoemen van registers?

Vraag nummer 1. Principes van informatie-uitwisseling tussen de hiërarchische niveaus van het geheugensubsysteem

De implementatie van de geheugenhiërarchie van moderne computers is gebaseerd op twee principes: het principe van de plaats van oproepen en de kosten-prestatieverhouding. Het principe van oproeplocatie zegt dat de meeste programma's gelukkig niet met dezelfde waarschijnlijkheid al hun commando's en gegevens aanroepen, maar de voorkeur geven aan een deel van hun adresruimte.

De geheugenhiërarchie van moderne computers is op verschillende niveaus gebouwd, waarbij het hogere niveau kleiner en sneller is en hogere kosten per byte heeft dan het lagere niveau. De niveaus van een hiërarchie zijn met elkaar verbonden: alle gegevens op het ene niveau zijn ook op een lager niveau te vinden, en alle gegevens op dat lagere niveau zijn te vinden op het volgende lagere niveau, enzovoort, totdat we de onderkant van de hiërarchie bereiken.

De hiërarchie van het geheugen bestaat meestal uit vele niveaus, maar op elk moment hebben we te maken met slechts twee nabijgelegen niveaus. De kleinste informatie-eenheid die in een hiërarchie met twee niveaus aanwezig of afwezig kan zijn, wordt een blok genoemd. De blokgrootte kan vast of variabel zijn. Als deze grootte vast is, is de hoeveelheid geheugen een veelvoud van de blokgrootte.

Een succesvolle of mislukte oproep naar een hoger niveau wordt respectievelijk een hit of een misser genoemd. Een hit is een toegang tot een object in het geheugen dat op een hoger niveau wordt gevonden, terwijl een misser betekent dat het niet op dat niveau wordt gevonden. De hit rate of hit ratio is het aandeel hits dat op een hoger niveau wordt gevonden. Soms wordt het weergegeven als een percentage. De miss rate is het aandeel hits dat niet op een hoger niveau wordt gevonden.

Aangezien prestatieverbetering de belangrijkste reden is voor het verschijnen van de geheugenhiërarchie, is de hit-and-miss-rate een belangrijk kenmerk. De treffertijd is de tijd om een ​​hoger niveau van de hiërarchie te bereiken, waaronder met name de tijd die nodig is om te bepalen of de treffer een treffer of een misser is. De miss penalty is de tijd om een ​​blok in een hogere laag te vervangen door een blok in een lagere laag, plus de tijd om dat blok naar het gewenste apparaat (meestal een processor) te sturen. Verliezen bij een misser omvatten verder twee componenten: toegangstijd (toegangstijd) - de tijd om toegang te krijgen tot het eerste woord van het blok bij een misser, en overdrachtstijd - extra tijd om de resterende woorden van het blok over te dragen. De toegangstijd is gerelateerd aan de latentie van het geheugen op een lager niveau, terwijl de overdrachtstijd gerelateerd is aan de bandbreedte van de verbinding tussen de geheugenapparaten van twee aangrenzende niveaus.

Vraag nummer 2. Hoofdfuncties en belangrijkste subsystemen van een computersysteem

OS is een reeks onderling gerelateerde programma's die zijn ontworpen om de efficiëntie van computerhardware te vergroten door de bronnen rationeel te beheren, en om de gebruiker gemak te bieden door hem een ​​uitgebreide virtuele machine te bieden. De belangrijkste bronnen die door het besturingssysteem worden beheerd, zijn processors, hoofdgeheugen, timers, datasets, schijven, tapedrives, printers, netwerkapparaten en enkele andere. Middelen worden gedeeld tussen processen. Om problemen met resourcebeheer op te lossen, gebruiken verschillende besturingssystemen verschillende algoritmen, waarvan de kenmerken uiteindelijk het uiterlijk van het besturingssysteem bepalen. De belangrijkste OS-subsystemen zijn de proces-, geheugen-, bestands- en externe apparaatbeheersubsystemen, evenals de gebruikersinterface, gegevensbescherming en beheersubsystemen.

Hoofdfuncties:

* Uitvoeren op verzoek van programma's van die vrij elementaire (low-level) acties die de meeste programma's gemeen hebben en die vaak in bijna alle programma's worden aangetroffen (invoer en uitvoer van gegevens, starten en stoppen van andere programma's, toewijzen en vrijmaken van extra geheugen, enzovoort.).

* Gestandaardiseerde toegang tot randapparatuur (I/O-apparaten).

* RAM-beheer (verdeling tussen processen, organisatie van virtueel geheugen).

* Beheer de toegang tot gegevens op niet-vluchtige media (zoals een harde schijf, optische schijven, enz.), georganiseerd in een bepaald bestandssysteem.

* Zorg voor gebruikersinterface.

* Netwerkbewerkingen, ondersteuning voor de netwerkprotocolstack.

Extra functies:

* Parallelle of pseudo-parallelle uitvoering van taken (multitasking).

* Efficiënte verdeling van computersysteembronnen tussen processen.

* Differentiatie van toegang van verschillende processen tot resources.

* Interactie tussen processen: gegevensuitwisseling, onderlinge synchronisatie. Een proces is een dynamisch object dat in het besturingssysteem verschijnt nadat de gebruiker of het besturingssysteem zelf besluit om "het programma uit te voeren voor uitvoering", dat wil zeggen om een ​​nieuwe rekeneenheid te creëren. Een gebruiker is een persoon of organisatie die een draaiend systeem gebruikt om een ​​specifieke functie uit te voeren. Een bestand is een benoemd gebied van extern geheugen waarnaar kan worden geschreven en waarvan kan worden gelezen. De belangrijkste doelen van het gebruik van bestanden zijn: langdurige en betrouwbare opslag van informatie, evenals gedeelde toegang tot gegevens.

Vraag #3: Hoe associatieve cache werkt

In het associatieve geheugen worden elementen niet geselecteerd op adres, maar op inhoud. Laten we het laatste concept in meer detail uitleggen. Voor geheugen met een adresorganisatie werd het concept van de minimum adresseerbare eenheid (MAU) geïntroduceerd als een stuk data met een individueel adres. Laten we een soortgelijk concept introduceren voor associatief geheugen, en we zullen deze minimale opslageenheid in associatief geheugen een string van associatief geheugen (STRAP) noemen. Elke StrAP bevat twee velden: een tagveld en een dataveld. Een leesverzoek aan het associatieve geheugen kan als volgt in woorden worden uitgedrukt: selecteer een regel(s) waarvan de tag gelijk is (zijn) aan de opgegeven waarde.

In het bijzonder is een van de drie resultaten mogelijk met een dergelijke zoekopdracht:

1. er is precies één regel met de gegeven tag;

2. er zijn meerdere regels met de gegeven tag;

3. er is geen regel met de gegeven tag.

Zoeken naar een record op attribuut is een activiteit die typisch is voor databasetoegangen, en het doorzoeken van de database is vaak een associatieve zoekopdracht. Om een ​​dergelijke zoekopdracht uit te voeren, moet u alle vermeldingen bekijken en de gegeven tag vergelijken met de tag van elke vermelding. Dit kan ook bij gebruik van gewoon adresseerbaar geheugen voor het opslaan van records (en het is duidelijk dat dit veel tijd zal vergen - in verhouding tot het aantal opgeslagen records!). Men spreekt van associatief geheugen wanneer het associatief ophalen van gegevens uit het geheugen hardwarematig wordt ondersteund. Bij het schrijven naar het associatieve geheugen wordt het data-element in de StrAP geplaatst samen met de tag die inherent is aan dit element. Om dit te doen, kunt u elke gratis STRAP gebruiken.

Aan het begin van de operatie is het cachegeheugen leeg. Wanneer de eerste opdracht wordt uitgevoerd tijdens het ophalen, wordt de code, evenals een paar aangrenzende bytes van de programmacode, (langzaam) overgebracht naar een van de cacheregels en tegelijkertijd het bovenste deel van het adres wordt naar de bijbehorende tag geschreven. Zo wordt de cacheregel gevuld.

Als de volgende ophaalacties mogelijk zijn uit deze sectie, zullen ze worden gedaan met de CASH (fast) - "CASH hit". Als blijkt dat het vereiste element niet in de cache zit, - "CASH miss". In dit geval wordt het RAM (langzaam) benaderd en wordt tegelijkertijd de volgende cacheregel gevuld.

Toegang tot de cache is als volgt. Nadat het uitvoeringsadres is gevormd, worden de hoge bits, die de tag vormen, in hardware (snel) en gelijktijdig met de tags van alle cacheregels vergeleken. In dit geval zijn slechts twee van de drie hierboven genoemde situaties mogelijk: ofwel geven alle vergelijkingen een negatief resultaat (CASH-miss), ofwel wordt een positief resultaat van de vergelijking geregistreerd voor precies één rij (CASH-treffer).

Als bij het lezen een CACHE-treffer is vastgesteld, bepalen de onderste bits van het adres de positie in de cacheregel waaruit bytes moeten worden geselecteerd, en bepaalt het type bewerking het aantal bytes. Het is duidelijk dat als de lengte van een data-element groter is dan één byte, er situaties mogelijk zijn wanneer dit element (in delen) zich in twee (of meer) verschillende cacheregels bevindt, dan zal de tijd om zo'n element op te halen toenemen. Dit kan worden tegengegaan door operanden en instructies uit te lijnen langs de grenzen van de cacheregels, waarmee rekening wordt gehouden bij het ontwikkelen van optimaliserende vertalers of bij het handmatig optimaliseren van code.

Als er een cache-misser optreedt en er zijn geen vrije regels in de cache, moet u een regel van de cache vervangen door een andere regel.

Het belangrijkste doel van de vervangingsstrategie is om de regels die in de nabije toekomst het meest waarschijnlijk zullen worden geopend in de cache te bewaren en de regels te vervangen die in een meer verre tijd of helemaal niet zullen worden gebruikt. Het is duidelijk dat het optimale algoritme er een is die de regel vervangt die later in de toekomst zal worden gebruikt dan welke andere cacheregel dan ook.

Vraag nummer 4. Interrupts implementeren van randapparatuur aangesloten via een seriële interface

De seriële interface voor gegevensoverdracht in één richting maakt gebruik van één signaalleiding, waardoor informatiebits na elkaar worden verzonden. Deze transmissiemethode bepaalt de naam van de interface en de poort die deze implementeert (seriële interface en seriële poort). Seriële gegevensoverdracht kan in synchrone en asynchrone modus worden uitgevoerd.

Bij asynchrone verzending wordt elke byte voorafgegaan door een startbit, waarmee de ontvanger wordt gewaarschuwd dat de volgende verzending is begonnen, gevolgd door databits of een pariteitsbit. Beëindigt het verzenden van een stopbit.

Met het asynchrone verzendformaat kunt u mogelijke verzendfouten identificeren.

De synchrone transmissiemodus veronderstelt een constante activiteit van het communicatiekanaal. Het bericht begint met een synchronisatiebyte, op de voet gevolgd door een stroom databits. Als de zender geen gegevens heeft om te verzenden, vult deze de leemte op door continu sync-bytes te verzenden. Bij het overbrengen van grote data-arrays zal de synchronisatie-overhead in deze modus lager zijn dan in de asynchrone modus.

Interrupt (Engelse interrupt) -- een signaal dat de processor informeert over het optreden van een asynchrone gebeurtenis. In dit geval wordt de uitvoering van de huidige reeks opdrachten opgeschort en wordt de besturing overgedragen aan de interrupt-handler, die het werk van het afhandelen van de gebeurtenis uitvoert en de besturing teruggeeft aan de onderbroken code. Soorten onderbrekingen: Hardware (Engelse IRQ - Interrupt Request) - gebeurtenissen van randapparatuur (bijvoorbeeld toetsaanslagen op het toetsenbord, muisbewegingen, een signaal van een timer, netwerkkaart of schijfstation) - externe onderbrekingen of gebeurtenissen in de microprocessor - (bijvoorbeeld delen door nul) -- interne onderbrekingen; Software -- geïnitieerd door het uitvoerbare programma, d.w.z. al synchroon, niet asynchroon. Software-interrupts kunnen worden gebruikt om besturingssysteemservices aan te roepen.

Interrupts vereisen de opschorting van de uitvoering van de huidige instructiestroom (stateful) en de lancering van de uitvoering van de ISR (Interrupt Service Routine) interruptafhandelingsprocedure. Deze procedure moet eerst de bron van de onderbreking identificeren (en er kunnen er meerdere zijn), en vervolgens acties uitvoeren die verband houden met de reactie op de gebeurtenis. Als gebeurtenissen een actie van een toepassingsprogramma moeten veroorzaken, hoeft de interrupt-handler alleen een signaal (via het besturingssysteem) te geven om de instructiestroom die deze acties uitvoert te starten (of te wekken). De ISR-procedure zelf moet tijdgeoptimaliseerd zijn. Onderhoudsinterrupts, vooral in beveiligde modus, op x86-gebaseerde pc's hebben een aanzienlijke overhead. Om deze reden proberen ze hun aantal te verminderen. Identificatie van de bron van de onderbreking is een groot probleem - de architectuur van pc-compatibele computers gebruikt hiervoor traditionele, maar inefficiënte mechanismen. In sommige gevallen worden onderbrekingen van apparaten vervangen door polling - softwaregestuurde polling van de apparaatstatus. In dit geval worden de toestanden van meerdere apparaten opgevraagd door een onderbreking van een timer.

Vraag nummer 5. Wat zijn ringen van bescherming?

Rings of protection - een architectuur van informatiebeveiliging en functionele fouttolerantie die een hardwarescheiding van systeem- en gebruikersprivilegeniveaus implementeert. De structuur van privileges kan worden weergegeven als verschillende concentrische cirkels. In dit geval is de systeemmodus (supervisormodus of nulring, de zogenaamde "ring 0"), die maximale toegang tot bronnen biedt, de binnenste cirkel, terwijl de gebruikersmodus met beperkte toegang de buitenste is. Traditioneel biedt de x86-microprocessorfamilie 4 beschermingsringen.

Ondersteuning voor meerdere beschermingsringen was een van de revolutionaire concepten in het Multics-besturingssysteem, de voorloper van de huidige UNIX-achtige besturingssystemen.

De originele Multics hadden 8 beschermingsringen, maar veel moderne systemen hebben er meestal minder. Dankzij speciale machineregisters weet de processor altijd in welke ring de code wordt uitgevoerd.

Het ringmechanisme beperkt de paden waarlangs de controle van de ene ring naar de andere kan worden overgedragen ernstig. Er is een instructie die de controle overdraagt ​​van een minder veilige ring naar een veiligere (lager genummerde) ring. Dit mechanisme is ontworpen om de mogelijkheid van onopzettelijke of opzettelijke inbreuken op de beveiliging te beperken.

Een efficiënt gebruik van de ringbeveiligingsarchitectuur vereist een nauwe interactie tussen de hardware en het besturingssysteem. Besturingssystemen die zijn ontworpen om op een groot aantal platforms te draaien, kunnen op elk platform een ​​andere implementatie van het ringmechanisme hebben.

Vraag # 6. Wat is RAM-segmentatie?

Segmentatie is een techniek voor het organiseren van programma's, waarbij de adresstructuur van het programma de inhoudsverdeling weerspiegelt. Bij segmentatie wordt de adresruimte van elk programma onderverdeeld in segmenten van verschillende lengtes, die overeenkomen met betekenisvol verschillende delen van het programma. Een segment kan bijvoorbeeld een procedure of een gegevensgebied zijn. In dit geval bestaat het adres uit de segmentnaam en het adres binnen het -offset segment. Aangezien programmasegmenten op naam worden benaderd, is het mogelijk om segmenten toe te wijzen in niet-aangrenzende geheugengebieden bij het toewijzen van geheugen, bovendien hoeven niet alle segmenten tegelijkertijd in het RAM-geheugen te zijn, sommige ervan kunnen zich in het externe geheugen bevinden en naar het RAM worden verplaatst als nodig zijn.

Zoals reeds vermeld, vertegenwoordigt in een systeem met segmentatie elk adres een paar: s is de naam van het segment en d is de offset. Elk programma komt overeen met een tabel met segmenten die altijd in het geheugen aanwezig is, waarbij elk segment van dit proces overeenkomt met één invoer. Met behulp van deze tabel koppelt het systeem de programma-adressen aan de werkelijke OP-adressen. Het adres van de tafel wordt opgeslagen in een hardwareregister dat het segmenttabelregister wordt genoemd.

Adresberekening tijdens segmentatie wordt als volgt uitgevoerd. Voordat het systeem het adres kan berekenen, wordt de aanwezigheid van het segment in het OP door hardware gecontroleerd. Als het segment aanwezig is, wordt het segmenttabelregister gebruikt om toegang te krijgen tot de e rij van de segmenttabel, waar het adres van het segment in het geheugen wordt aangegeven. Omdat segmenten in verschillende lengtes verkrijgbaar zijn, moet de segmentgrens bekend zijn om lusvorming buiten het gespecificeerde segment te voorkomen.

Als het systeem op enig moment zijn aandacht wil afleiden naar een ander proces, zal het gewoon de inhoud van het segmenttabelregister vervangen door het adres van een andere segmenttabel, waarna de viewreferenties worden geïnterpreteerd volgens de nieuwe tabel.

Segmentatie van de adresruimte heeft veel voordelen ten opzichte van absolute adressering, en het belangrijkste is het efficiënte gebruik van RAM. Als er niet genoeg ruimte in het RAM-geheugen is voor alle segmenten van een bepaald programma, kunnen sommige zich tijdelijk in het hulpgeheugen bevinden. Als een programma een nieuw segment in het OP moet introduceren, kan het systeem elk segment uit het OP in een extra segment verwijderen. Het te verplaatsen segment hoeft niet te behoren tot het programma waarvoor het nieuwe segment in het OP wordt ingevoerd. Het maakt niet uit met welke segmenttabel het vervangen segment overeenkomt, het belangrijkste is dat wanneer het wordt overgebracht naar het hulpgeheugen, de waarde van het attribuut verandert in de overeenkomstige segmenttabel.

Vraag nummer 7. Belangrijkste kenmerken van videogegevens. Matrix en grafische weergave van video-informatie

Video-informatie kan zowel statisch als dynamisch zijn. Statische video-informatie omvat tekst, tekeningen, grafieken, tekeningen, tabellen, enz. Tekeningen zijn ook onderverdeeld in vlak - tweedimensionaal en driedimensionaal - driedimensionaal.

Dynamische video-informatie is videofilms en animatie die worden gebruikt om bewegende beelden over te brengen. Ze zijn gebaseerd op sequentiële blootstelling op het scherm in realtime van individuele frames in overeenstemming met het scenario.

De demonstratie van animatie- en diafilms is gebaseerd op verschillende principes. Animatiefilms worden zo getoond dat het menselijke visuele apparaat geen individuele frames kan vastleggen. Om animatie van hoge kwaliteit te krijgen, moeten frames ongeveer 30 keer per seconde worden gewijzigd. Bij het demonstreren van diafilms wordt elk frame zo lang op het scherm belicht als nodig is voor menselijke waarneming (meestal van 30 seconden tot 1 minuut). Diafilms kunnen worden geclassificeerd als statische video-informatie.

Bij computergebruik zijn er twee manieren om grafische afbeeldingen weer te geven; matrix (raster) en vector. Matrixindelingen (bitmap) zijn zeer geschikt voor afbeeldingen met complexe kleuren, schakeringen en vormen, zoals foto's, tekeningen en gescande gegevens. Vectorformaten zijn meer geschikt voor tekeningen en afbeeldingen met eenvoudige vormen, arcering en kleuren.

In matrixformaten wordt het beeld weergegeven door een rechthoekige matrix van punten -- pixels (beeldelement), waarvan de positie in de matrix overeenkomt met de coördinaten van de punten op het scherm. Naast de coördinaten wordt elke pixel gekenmerkt door een eigen kleur, achtergrondkleur of helderheidsgradatie. Het aantal bits dat wordt toegewezen om de kleur van een pixel aan te geven, is afhankelijk van het formaat. In afbeeldingen van hoge kwaliteit wordt de kleur van een pixel beschreven in 24 bits, wat ongeveer 16 miljoen kleuren oplevert. Het belangrijkste nadeel van matrix (raster) graphics is de grote geheugencapaciteit die nodig is om de afbeelding op te slaan. Daarom worden verschillende datacompressiemethoden gebruikt om afbeeldingen te beschrijven. Momenteel zijn er veel grafische bestandsindelingen die verschillen in compressie-algoritmen en manieren om matrixafbeeldingen weer te geven, evenals in de reikwijdte.

Vectorrepresentatie definieert, in tegenstelling tot matrixafbeeldingen, de beschrijving van de afbeelding niet door pixels, maar door curven - splines. Een spline is een vloeiende curve die door twee of meer ankerpunten gaat die de vorm van de spline bepalen.

Het belangrijkste voordeel van vectorafbeeldingen is dat de beschrijving van het object eenvoudig is en weinig geheugen in beslag neemt. Bovendien hebben vectorafbeeldingen de volgende voordelen ten opzichte van matrixafbeeldingen:

Gemak van het schalen van de afbeelding zonder afbreuk te doen aan de kwaliteit;

Onafhankelijkheid van de geheugencapaciteit die nodig is om de afbeelding op te slaan, van het geselecteerde kleurmodel.

Het nadeel van vectorafbeeldingen is hun kunstmatigheid, die erin bestaat dat elk beeld moet worden verdeeld in een eindige verzameling van zijn samenstellende primitieven. Net als bij matrixafbeeldingen zijn er verschillende bestandsindelingen voor vectorafbeeldingen.

Matrix- en vectorafbeeldingen bestaan ​​niet los van elkaar. Vectortekeningen kunnen dus ook matrixafbeeldingen bevatten. Bovendien kunnen vector- en matrixafbeeldingen naar elkaar worden geconverteerd. Grafische formaten waarmee u een matrix- en vectorbeschrijving van een afbeelding kunt combineren, worden metabestanden genoemd. Metabestanden zorgen voor voldoende compactheid van bestanden met behoud van een hoge beeldkwaliteit.

De overwogen vormen van presentatie van statische video-informatie worden met name gebruikt voor individuele frames die animatiefilms vormen. Om animatiefilms op te slaan, worden verschillende methoden voor informatiecompressie gebruikt, waarvan de meeste gestandaardiseerd zijn.

Vraag # 8. Wat is een bestand? Verschillen tussen een bestand en een map

computergeheugen operationele videogegevens

Bestand (Engels bestand - map) - een concept in informatica: een entiteit waarmee u toegang hebt tot elke bron van een computersysteem en die een aantal functies heeft:

Vaste naam (een reeks tekens, een nummer of iets anders dat het bestand uniek kenmerkt);

Een gedefinieerde logische weergave en de bijbehorende lees-/schrijfbewerkingen.

Het kan van alles zijn - van een reeks bits (hoewel we het in bytes lezen, of liever woorden-groepen van bytes, vier, acht, zestien elk) tot een database met een willekeurige organisatie of een tussenliggende optie; multidimensionale database, strikt geordend.

Het eerste geval komt overeen met lees-/schrijfbewerkingen van een stroom en/of een array (d.w.z. sequentieel of met toegang via index), het tweede - DBMS-opdrachten. Tussenliggende opties - lezen en ontleden van allerlei bestandsformaten.

Een bestand is een benoemde verzameling bytes van willekeurige lengte die zich op een opslagmedium bevindt, en een map is een benoemde plaats op een schijf waarop bestanden zijn opgeslagen. Een volledige bestandsnaam kan directory's bevatten, zoals C:\papka\file.txt, al dan niet C:\file.txt, en een directory is waar bestanden zich kunnen bevinden: C:\papka. De map kan niet in het programma worden geopend om er informatie in te schrijven of te lezen, het is bedoeld om bestanden in zichzelf op te slaan, het bestand daarentegen kan worden geopend en bewerkt.

Vraag nummer 9. De belangrijkste fasen van de pijplijn van moderne processors

De belangrijkste taak van de processor is om (en zo snel mogelijk) de instructies in het programma uit te voeren. De eenvoudigste manier (het verhogen van de klokfrequentie van de processor) is vrij snel uitgeput door technologische beperkingen. Daarom moeten we op zoek naar andere manieren om de prestaties te verbeteren. Het was een reeks architecturale innovaties die het mogelijk maakten om de prestaties van de Pentium te verhogen in vergelijking met 486-processors. De belangrijkste daarvan is de transportband.

De uitvoering van de opdracht bestaat uit een aantal stappen:

1) een commando uit het geheugen lezen,

2) lengtebepaling,

3) het bepalen van het adres van de geheugencel, indien deze wordt gebruikt,

4) uitvoering van de opdracht,

5) het resultaat opslaan.

In vroege processors werden al deze stappen voor elke instructie volledig uitgevoerd. De pijplijn maakte het mogelijk om het proces te versnellen: nadat het team een ​​van de fasen had doorlopen en naar de volgende was gegaan, begon de verwerking van het volgende commando. Deze oplossing verscheen in de nieuwste 486s (bijvoorbeeld in AMD 5x86-133). De Pentium introduceerde voor het eerst de dubbele pijplijn. Instructies kunnen parallel worden uitgevoerd (behalve voor drijvende-kommaberekeningen en springinstructies). Hierdoor konden we de productiviteit met ongeveer 30-35% verhogen.

Vraag 10. Wat is het hernoemen van registers?

Het hernoemen van registers is een methode om de onderlinge afhankelijkheden te verzwakken van instructies die worden gebruikt in processors die hun uitvoering buiten de volgorde uitvoeren.

In het geval dat het, in overeenstemming met twee of meer instructies, nodig is om gegevens naar één register te schrijven, wordt hun correcte out-of-order uitvoering onmogelijk, zelfs als er geen gegevensafhankelijkheid is. Dergelijke onderlinge afhankelijkheden worden vaak vals genoemd.

Aangezien het aantal architectuurregisters meestal beperkt is, is de kans op valse onderlinge afhankelijkheden vrij groot, wat kan leiden tot een afname van de processorprestaties.

Register hernoemen is de transformatie van softwareverwijzingen naar architectuurregisters in verwijzingen naar fysieke registers en stelt u in staat de impact van valse onderlinge afhankelijkheden te verminderen door een groot aantal fysieke registers te gebruiken in plaats van een beperkt aantal architecturale registers. In dit geval bewaakt de processor de staat van de fysieke registers die overeenkomen met de staat van de architecturale, en de uitvoer van de resultaten wordt uitgevoerd in de volgorde die door het programma wordt gegeven.

bronnen

Internetbron - http://www.chinapads.ru/

Ryazantsev OI, Nedzelsky D.O., Guseva S.V. Architectuur en structurele organisatie van boekhoudsystemen. Hoofd helper. - Lugansk: Uitzicht. SNU im. V. Dahl, 2008.

Internetbron - http://studopedia.net/

Internetbron - http://proc.ucoz.ru/load/ustrojstvo_processora/1-1-0-2

E. Tannenbaum. Computerarchitectuur, 4e druk. SPb. Pieter 2006.

Internetbron - http://193.108.240.69/moodle/file.php/5/navch_pos_OS.doc

Internetbron - http://znanija.com/task/1788585

Gehost op Allbest.ru

Vergelijkbare documenten

    Classificatie van computergeheugen. Gebruik van operationeel, statisch en dynamisch willekeurig toegankelijk geheugen. Hoe DDR SDRAM werkt. Magnetische schijven formatteren. Het belangrijkste probleem van synchronisatie. Theorie van computationele processen. geheugen adressering.

    scriptie, toegevoegd 28-05-2016

    De geschiedenis van de opkomst en ontwikkeling van random access memory. Algemene kenmerken van de meest populaire moderne soorten RAM - SRAM en DRAM. Faseveranderingsgeheugen (PRAM). Thyristor random access memory, zijn specificiteit.

    scriptie, toegevoegd 21-11-2014

    Het eenvoudigste schema voor de interactie van RAM met de CPU. Het apparaat en de werkingsprincipes van RAM-geheugen. De evolutie van dynamisch geheugen. EDO-DRAM BEDO (Burst EDO) geheugenmodule - batch EDO RAM. Geheugenmodule SDRAM, DDR SDRAM, SDRAM II.

    samenvatting, toegevoegd 13-12-2009

    Het concept, de typen en de belangrijkste functies van computergeheugen - onderdelen van een computer, een fysiek apparaat voor het opslaan van gegevens die in berekeningen worden gebruikt, voor een bepaalde tijd. Schematisch diagram van RAM. Flexibele magnetische schijven.

    presentatie, toegevoegd 18-03-2012

    Geheugen voor computersystemen, het maken en kenmerken van functies. Creatie van geheugenapparaten en elementaire prestatiekenmerken. Functionele diagrammen en een methode voor het organiseren van een matrix van opslagelementen. Soorten magnetisch en flashgeheugen.

    presentatie, toegevoegd 01/12/2009

    Opslag van verschillende informatie als het belangrijkste doel van het geheugen. Kenmerken van de soorten geheugen. Geheugentype SRAM en DRAM. Cachegeheugen of scratchgeheugen, de bijzonderheden en toepassingen. De laatste ontwikkelingen op het gebied van in-memory.

    presentatie, toegevoegd 12/01/2014

    Generalisatie van de belangrijkste typen en het doel van computer-RAM. Vluchtig en niet-vluchtig geheugen. SRAM en DRAM. Triggers, dynamisch RAM-geheugen en zijn wijzigingen. cachegeheugen. Persistent opslagapparaat. Flash-geheugen. Soorten extern geheugen.

    scriptie, toegevoegd 17-06-2013

    Verbetering van de parameters van geheugenmodules. De werking en interactie van het besturingssysteem met RAM. Analyse van de belangrijkste typen, parameters van RAM. Het softwaregedeelte met de verwerking van de uitvoering van de opdracht en de plaatsing in het RAM.

    scriptie, toegevoegd 12/02/2009

    De algemene structuur van de microprocessor. De structuur van het 64-bits geheugensubsysteem. I/O-poort selectie. Kenmerken van de interface van microprocessorsystemen. Ontwerpen van een geheugensubsysteem op basis van Itanium 2. Berekening van informatie-inhoud en benodigde volumes.

    scriptie, toegevoegd 12/05/2012

    Het concept en de functionele kenmerken van computeropslagapparaten, hun classificatie en typen, vergelijkende kenmerken: ROM, DRAM en SRAM. Evaluatie van de voor- en nadelen van elk type RAM, aanwijzingen en manieren om ze te gebruiken.

Het multiprocessorkarakter van computersystemen leidt tot het probleem van gelijktijdige toegang tot geheugen door meerdere processors. Afhankelijk van hoe het geheugen van een multiprocessorsysteem is georganiseerd, zijn er:

1. Computersystemen met gedeeld geheugen - Multiprocessors:

l. PVP (CrayT90)

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

l. COMA (KSR-1, DDM)

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

iii. NCC-NUMA (Crag T3E)

2. Computersystemen met gedistribueerd geheugen (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, hoe dit geheugen eruitziet vanuit de processors. Met andere woorden, wat gedeeld geheugen onderscheidt van gedistribueerd geheugen, is hoe het geheugensubsysteem het celadres interpreteert dat van de microprocessor is ontvangen (algemeen adres of lokaal adres).

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

Overweeg modellen van vliegtuiggeheugenarchitecturen die waar zijn voor zowel de MIMD meervoudige datastroomklasse als de SIMD:

UMA- VS met gedeeld geheugen, waarbij de toegang van elke processor tot het geheugen uniform wordt uitgevoerd en even lang duurt. Systemen met uniforme geheugentoegang:

Mp - gedeeld geheugen

Pi - Processor

Gemeenschappelijke bus

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

In deze klasse van architecturen zijn er multiprocessorsystemen met geheugen dat uit meerdere modules bestaat. De bus is vervangen door een switch die processorverzoeken doorstuurt naar een van de verschillende geheugenmodules. Bovendien zijn alle geheugenmodules opgenomen in één adresruimte. Het voordeel is dat u meerdere aanvragen kunt verwerken.

NUMA– heterogene geheugentoegang. Er zijn hier meerdere 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 vertegenwoordigen samen het globale geheugen van het systeem. De data is niet statisch gebonden aan een specifieke geheugenmodule en heeft geen uniek adres. De gegevens worden overgebracht naar de cache van de processor die er het laatst om heeft gevraagd.



Het belangrijkste nadeel: zeer complexe besturing, het besturingssysteem neemt niet deel aan het besturingsproces (alle taken zijn toegewezen aan de hardware).

CC-NUMA is een cache-coherent niet-homogeen geheugentoegangsmodel. Er wordt geen cache gebruikt, maar gewoon fysiek gedistribueerd geheugen. Er is geen software nodig om veel bijgewerkte gegevens op te slaan. Dit wordt afgehandeld door het hardwareniveau.

NCC-NUMA - het model gaat uit van het gebruik van een enkele adresruimte, maar garandeert niet de consistentie van globale gegevens op hardwareniveau. Het beheer is toegewezen aan de software, dit wordt als een nadeel beschouwd, maar het model is het meest veelbelovend in termen van productiviteitsverhoging.

Multicomputers - de blokken waaruit het systeem is opgebouwd, zijn voorzien van een processor en geheugen.

NORMA is een architectuur zonder directe toegang tot extern geheugen.


P - processor

M - lokaal geheugen

K0 en K1 - I/O-controller

Blokken zijn verwerkingselementen. Hieruit worden systemen samengesteld.

Elke processor in een dergelijk systeem heeft alleen toegang tot het externe geheugen door berichten uit te wisselen met de processors die eigenaar zijn van het geadresseerde geheugen. Alle PE's in relatie tot elkaar worden beschouwd als input-output-apparaten.

Om berichten naar een ander verwerkingselement te sturen, vormt de processor een gegevensblok in zijn lokale geheugen en stelt hij zijn lokale controller op de hoogte van de noodzaak om informatie over te dragen naar een extern apparaat. Dit bericht wordt via het interconnectienetwerk naar de ontvangende controller gestuurd, die een plaats in zijn lokale geheugen vindt en de processor meldt dat het is aangekomen, evenals de bronprocessor dat het bericht is ontvangen.



Voordelen - bij toegang tot gegevens is er geen strijd voor de bus of switch. Aangezien er geen gemeenschappelijke bus is, is er geen limiet op het aantal processors. In veel mindere mate is er de kwestie van cachevaliditeit. Elke processor heeft het recht om zijn cache te wijzigen en zijn acties niet met anderen te coördineren.

Nadelen: Elk processorelement heeft een interruptsysteem. Hieruit volgt de complexiteit van informatie-uitwisseling (tijd om een ​​bericht te verzenden en te genereren, tijd om interruptverzoeken te genereren en hun verwerking).

Hoofdstuk 11

Geheugenorganisatie van computersystemen

In computersystemen die veel parallelle processors of machines combineren, is het probleem van de juiste geheugenorganisatie een van de belangrijkste. Het verschil tussen CPU- en geheugensnelheid is altijd een struikelblok geweest bij VM's met één processor. Het multiprocessorkarakter van de CS leidt tot een ander probleem: het probleem van gelijktijdige toegang tot geheugen door meerdere processors.

Afhankelijk van hoe het geheugen van multiprocessor (multi-machine) systemen is georganiseerd, zijn er computersystemen met gedeeld geheugen (gedeeld geheugen) en computersystemen met gedistribueerd geheugen (gedistribueerd geheugen). IN gedeelde geheugensystemen(vaak gedeeld of gedeeld geheugen genoemd) De VM wordt behandeld als een gedeelde bron en elk van de processors heeft volledige toegang tot de volledige adresruimte. Systemen met gedeeld geheugen heten sterk verbonden(nauw gekoppelde systemen). Een vergelijkbare constructie van computersystemen vindt zowel in de SIMD-klasse als in de MIMD-klasse plaats. Soms worden, om deze omstandigheid te benadrukken, speciale subklassen geïntroduceerd, waarbij de afkortingen SM-SIMD (Shared Memory SIMD) en SM-MIMD (Shared Memory MIMD) worden gebruikt om ze aan te duiden.

In de variant gedistribueerd geheugen elk van de processors krijgt zijn eigen geheugen. Processoren worden samengevoegd in netwerk en kunnen, indien nodig, gegevens uitwisselen die in hun geheugen zijn opgeslagen, waarbij ze de zogenaamde berichten. Dit type vliegtuig heet los verbonden(los gekoppelde systemen). Losjes gekoppelde systemen zijn ook te vinden in zowel de SIMD-klasse als de B MIMD-klasse, en soms worden de subklassen DM-SIMD (Distributed Memory SIMD) en DM-MIMD (Distributed Memory MIMD) geïntroduceerd om deze functie te benadrukken.

In sommige gevallen worden computersystemen met gedeeld geheugen genoemd multiprocessors, en systemen met gedistribueerd geheugen - meerdere computers.

Het verschil tussen gedeeld en gedistribueerd geheugen is het verschil in de structuur van virtueel geheugen, dat wil zeggen, hoe het geheugen er aan de processorzijde uitziet. Fysiek is bijna elk geheugensysteem opgedeeld in autonome componenten die onafhankelijk toegankelijk zijn. Wat gedeeld geheugen van gedistribueerd geheugen scheidt, is hoe het geheugensubsysteem het celadres interpreteert dat van de processor is ontvangen. Stel bijvoorbeeld dat de processor een load RO, i-instructie uitvoert, wat betekent "Laad register R0 met de inhoud van cel i". In het geval van gedeeld geheugen is i een globaal adres en verwijst het naar dezelfde locatie voor elke processor. In een gedistribueerd geheugensysteem is i een lokaal adres.Als twee processors een load RO, i-instructie uitgeven, heeft elk van hen toegang tot de i-de locatie in zijn lokale geheugen, dat wil zeggen, verschillende locaties, en ongelijke waarden kunnen in de R0-registers worden geladen.

Het verschil tussen de twee geheugensystemen moet door de programmeur in aanmerking worden genomen, aangezien dit de manier bepaalt waarop de delen van een parallel programma samenwerken. In de variant met gedeeld geheugen volstaat het om een ​​datastructuur in het geheugen aan te maken en verwijzingen naar deze structuur door te geven aan de parallel gebruikte subroutines. In een gedistribueerd geheugensysteem is het noodzakelijk om een ​​kopie van de gedeelde gegevens in elk lokaal geheugen te hebben. Deze kopieën worden gemaakt door gedeelde gegevens in te bedden in berichten die naar andere verwerkers worden gestuurd.

Interleaved geheugen

Fysiek bestaat het geheugen van een computersysteem uit meerdere modules (banken), terwijl de essentiële vraag is hoe de adresruimte (de verzameling van alle adressen die de processor kan vormen) in dit geval wordt verdeeld. Een manier om virtuele adressen aan geheugenmodules toe te wijzen, is door de adresruimte in opeenvolgende blokken te verdelen. Als het geheugen is P banken, dan de cel met het adres l tijdens bloksplitsing zal in de bank staan ​​met het nummer l/ N. In systeem interleaved geheugen(interleaved memory) opeenvolgende adressen bevinden zich in verschillende banken: de cel met adres i bevindt zich in de bank met nummer i mod P. Laat het geheugen bijvoorbeeld uit vier banken bestaan ​​van elk 256 bytes. In een blokadresseringsschema zou aan de eerste bank virtuele adressen 0-255 worden toegewezen, aan de tweede 256-511, enz. In een interleaved-schema zouden opeenvolgende cellen in de eerste bank virtuele adressen 0, 4, 8 hebben. , .. .. in de tweede bank - 1, 5, 9, enz. (Fig. 11.1, a).

De verdeling van de adresruimte door modules maakt het mogelijk om gelijktijdig verzoeken om geheugentoegang te verwerken, als de corresponderende adressen tot verschillende banken behoren, kan de processor toegang vragen tot een cel in een van de cycli l en in de volgende lus - naar cel j. Als lEnJ zich in verschillende banken bevinden, wordt de informatie in opeenvolgende cycli verzonden. Hier verwijst een cyclus naar een processorcyclus, terwijl een volledige geheugencyclus meerdere processorcycli duurt. In dit geval hoeft de processor dus niet te wachten tot de volledige cyclus van toegang tot de cel is voltooid. l. De overwogen techniek maakt het mogelijk de doorvoer te vergroten: als het geheugensysteem bestaat uit:

Rijst. 11.1 - Interleaved geheugen: a - adresdistributie; B- elementen opgehaald in stappen van 9 uit een 8 x 8 array

voldoende aantal banken, is het mogelijk om informatie uit te wisselen tussen de processor en het geheugen met een snelheid van één woord per processorcyclus, ongeacht de duur van de geheugencyclus.

De beslissing welke adresdistributieoptie moet worden gekozen (blokkeren of gestreept) hangt af van de verwachte volgorde van toegang tot informatie. Programma's zijn zo gecompileerd dat sequentiële instructies zich in cellen met sequentiële adressen bevinden, dus het is zeer waarschijnlijk dat nadat de instructie uit de cel met adres i is geëxtraheerd, de instructie uit de cel wordt uitgevoerd l + 1. De compiler plaatst ook de elementen van vectoren in opeenvolgende cellen, zodat u de voordelen van de interleaving-methode kunt gebruiken bij bewerkingen met vectoren. Om deze reden gebruiken vectorprocessors meestal een vorm van adresinterleaving. Multiprocessors met gedeeld geheugen gebruiken nog steeds blokadressering, omdat geheugentoegangspatronen in MIMD-systemen sterk kunnen variëren. In dergelijke systemen is het doel om de processor te verbinden met een geheugenblok en de maximale hoeveelheid informatie daarin te gebruiken voordat naar een ander geheugenblok wordt overgeschakeld.

Geheugensystemen bieden vaak extra flexibiliteit bij het ophalen van elementen van vectoren. In sommige systemen is het mogelijk om elk n-de element van een vector tegelijkertijd te laden, bijvoorbeeld bij het extraheren van elementen van een vector V, opgeslagen in opeenvolgende geheugencellen; Bij P= 4, geheugen keert terug De afstand tussen elementen heet stap voor index of "Strijd"(stap). Een interessant gebruik van deze eigenschap is Matrix Access. Als de indexstap één groter is dan het aantal rijen in de matrix, zal een enkel geheugentoegangsverzoek alle diagonale elementen van de matrix retourneren (Figuur 11.1b). Het is de verantwoordelijkheid van de programmeur om ervoor te zorgen dat alle geëxtraheerde matrixelementen zich in verschillende banken bevinden.

Geheugenarchitectuurmodellen van computersystemen

Binnen zowel gedeeld als gedistribueerd geheugen zijn verschillende modellen van geheugensysteemarchitecturen geïmplementeerd.

Rijst. 11.2. Classificatie van geheugenarchitectuurmodellen van computersystemen

Op afb. 11.2 toont de classificatie van dergelijke modellen die worden gebruikt in computersystemen van de MIMD-klasse (het geldt ook voor de S1MD-klasse).

Modellen van gedeelde geheugenarchitecturen

In systemen met gedeeld geheugen hebben alle processors gelijke toegang tot dezelfde adresruimte. Een enkel geheugen kan worden gebouwd als een enkel blok of modulair, maar de tweede optie wordt meestal toegepast.

Computersystemen met gedeeld geheugen, waarbij de toegang van elke processor tot het geheugen uniform wordt uitgevoerd en even lang duurt, worden genoemd systemen met uniforme geheugentoegang en worden afgekort als UMA (Uniform Memory Access). Dit is de meest voorkomende parallelle vliegtuigarchitectuur met gedeeld geheugen.

Technisch gezien gaan UMA-systemen uit van de aanwezigheid van een knooppunt dat elk van de P processors met elk t geheugenmodules. De eenvoudigste manier om zo'n CS te bouwen, is door meerdere processors (P i) te combineren met een enkel geheugen (M p) via een gemeenschappelijke bus - wordt getoond in Fig. 11.3, maar. In dit geval kan echter slechts één van de processors op elk moment op de bus communiceren, dat wil zeggen dat de processors moeten strijden om toegang tot de piek. Wanneer processor P i een instructie uit het geheugen haalt, zullen de andere processors moet wachten tot de band vrij is. Als in Omdat er slechts twee processors het systeem binnenkomen, kunnen ze bijna maximale prestaties leveren omdat hun bustoegang kan worden interleaved: terwijl de ene processor een instructie decodeert en uitvoert, kan de andere de bus gebruiken om de volgende instructie uit het geheugen op te halen. Wanneer echter een derde processor wordt toegevoegd, beginnen de prestaties te dalen. Als er tien processors op de bus zijn, is de busprestatiecurve (Fig. H.3, maar) wordt horizontaal, dus het toevoegen van een 11e processor verbetert de prestaties niet langer. De onderste curve in deze afbeelding illustreert het feit dat geheugen en bus een vaste bandbreedte hebben die wordt bepaald door de combinatie van geheugencyclustijd en busprotocol, en in een multiprocessorsysteem met gedeelde bus wordt deze bandbreedte gedeeld over meerdere processors. Als de processorcyclus langer is dan de geheugencyclus, kunnen er veel processors op de bus worden aangesloten. In feite is de processor echter meestal veel sneller dan het geheugen, dus dit schema wordt niet veel gebruikt.

Rijst. 11.3. Gedeeld geheugen: a - het combineren van processors via een bus; b - systeem met lokale caches; in- systeemprestaties als functie van het aantal processors op de bus; d - multiprocessor VS met gedeeld geheugen bestaande uit afzonderlijke modules

Een alternatieve manier om een ​​multiprocessor-CS met gedeeld geheugen op basis van NML te bouwen, wordt getoond in Fig. 11.3, G. Hier is de piek vervangen door een schakelaar die processorverzoeken doorstuurt naar een van de verschillende geheugenmodules. Hoewel er meerdere geheugenmodules zijn, maken ze allemaal deel uit van een enkele virtuele adresruimte. Het voordeel van deze aanpak is dat de switch meerdere verzoeken tegelijk kan bedienen. Elke processor kan op zijn eigen geheugenmodule worden aangesloten en met de maximaal toegestane snelheid worden benaderd. Conflicten tussen processors kunnen optreden wanneer u tegelijkertijd probeert toegang te krijgen tot dezelfde geheugenmodule. In dit geval krijgt slechts één processor toegang en worden de andere geblokkeerd.

Helaas schaalt de UMA-architectuur niet goed. De meest voorkomende systemen bevatten 4-8 processors, veel minder vaak 32-64 processors. Bovendien kunnen dergelijke systemen niet als fouttolerant worden aangemerkt, aangezien het uitvallen van één processor of geheugenmodule het uitvallen van het hele vliegtuig met zich meebrengt.

Een andere benadering voor het bouwen van een gedeeld geheugenvliegtuig is: heterogene geheugentoegang, aangeduid als NUM A (Non-Uniform Memory Access).Dit heeft nog steeds een enkele adresruimte, maar elke processor heeft lokaal geheugen. De processor heeft rechtstreeks toegang tot zijn eigen lokale geheugen, wat veel sneller is dan toegang tot extern geheugen via een switch of netwerk. Een dergelijk systeem kan worden aangevuld met globaal geheugen, waarna lokale opslagapparaten de rol spelen van een snel cachegeheugen voor globaal geheugen. Een dergelijk schema kan de prestaties van het vliegtuig verbeteren, maar is niet in staat om directe prestatievereffening voor onbepaalde tijd uit te stellen. Als elke processor een lokale cache heeft (Fig. 11.3.6), is de kans groot (p > 0.9) dat de vereiste opdracht of gegevens zich al in het lokale geheugen bevinden. Een redelijke kans dat het lokale geheugen wordt geraakt, vermindert het aantal processortoegangen aanzienlijk naar globaal geheugen en leidt zo tot efficiëntiewinsten. De locatie van de breuk in de prestatiecurve (bovenste curve in Fig. 11.3, in), het punt waarop het toevoegen van processors nog steeds effectief is, verplaatst zich nu naar het 20-processorgebied en de dunne lijn waar de curve horizontaal wordt naar het 30-processorgebied.

Als onderdeel van het concept NUMA verschillende benaderingen worden geïmplementeerd, aangeduid met afkortingen SOMA,CC- NUMA En NCC- NUMA.

IN architectuur met alleen cache(COMA, Cache Only Memory Architecture) het lokale geheugen van elke processor is gebouwd als een grote cache voor snelle toegang vanaf "zijn" processor. De caches van alle processors worden gezamenlijk behandeld als het globale geheugen van het systeem. Er is geen echt globaal geheugen. Het belangrijkste kenmerk van het SOMA-concept komt tot uiting in dynamiek. Hier zijn de gegevens niet statisch gebonden aan een specifieke geheugenmodule en hebben ze geen uniek adres dat gedurende de gehele levensduur van de variabele ongewijzigd blijft. In de COMA-architectuur worden gegevens overgebracht naar het cachegeheugen van de processor die ze het laatst heeft aangevraagd, terwijl de variabele niet wordt vastgelegd door een uniek adres en op elk moment in elke fysieke cel kan worden geplaatst. Het overbrengen van gegevens van de ene lokale cache naar de andere vereist geen deelname van het besturingssysteem aan dit proces, maar omvat complexe en dure hardware voor geheugenbeheer. Om zo'n regime te organiseren, cache-mappen. Merk ook op dat het laatste exemplaar van een item nooit uit de cache wordt verwijderd.

Omdat de COMA-architectuur gegevens naar het lokale cachegeheugen van de eigenaarprocessor verplaatst, hebben dergelijke EC's een aanzienlijk prestatievoordeel ten opzichte van andere NUM A-architecturen.Aan de andere kant, als een enkele variabele of twee verschillende variabelen in dezelfde regel van dezelfde cache , zijn vereist door twee processors, deze cacheregel moet bij elke gegevenstoegang heen en weer worden verplaatst tussen processors. Dergelijke effecten kunnen afhankelijk zijn van de details van de geheugentoewijzing, wat tot onvoorspelbare situaties leidt.

Model cache-coherente toegang tot heterogeen geheugen(CC-NUMA, Cache Coherent Non-Uniform Memory Architecture) verschilt fundamenteel van het COMA-model. Het CC-NUMA-systeem gebruikt geen cachegeheugen, maar gewoon fysiek gedistribueerd geheugen. Er worden geen pagina's of gegevens tussen geheugenlocaties gekopieerd. Er wordt geen in software geïmplementeerd bericht doorgegeven. Er is slechts één geheugenkaart, met onderdelen fysiek verbonden door een koperen kabel, en "slimme" hardware. Hardware-cache-coherentie betekent dat er geen software nodig is om meerdere kopieën van bijgewerkte gegevens op te slaan of over te dragen. Dit alles wordt afgehandeld door het hardwareniveau. Toegang tot lokale geheugenmodules in verschillende knooppunten van het systeem kan tegelijkertijd worden uitgevoerd en is sneller dan tot externe geheugenmodules.

Het verschil tussen het model en cache-incoherente toegang tot heterogeen geheugen(NCC-NUMA, Non-Cache Coherent Non-Uniform Memory Architecture) van CC-NUMA is duidelijk uit de naam. De geheugenarchitectuur gaat uit van een enkele adresruimte, maar biedt geen globale gegevensconsistentie op hardwareniveau. Het gebruik van dergelijke gegevens is volledig de verantwoordelijkheid van de software (applicaties of compilers). Ondanks deze omstandigheid, die een nadeel van de architectuur lijkt te zijn, blijkt het zeer nuttig te zijn bij het verbeteren van de prestaties van computersystemen met een geheugenarchitectuur van het DSM-type, dat wordt beschouwd in de sectie "Gedistribueerde geheugenarchitectuurmodellen".

Over het algemeen worden NUMA-vliegtuigen met gedeeld geheugen genoemd architecturen met virtueel gedeeld geheugen(virtuele gedeelde geheugenarchitecturen). Dit type architectuur, in het bijzonder CC-NUMA, is onlangs beschouwd als een onafhankelijk en vrij veelbelovend type computersystemen van de MIMD-klasse, dus dergelijke CS's zullen hieronder in meer detail worden besproken.

Modellen van gedistribueerde geheugenarchitecturen

In een gedistribueerd geheugensysteem heeft elke processor zijn eigen geheugen en kan dit alleen adresseren. Sommige auteurs noemen dit type systeem multi-machine vliegtuigen of multicomputers, benadrukkend dat de bouwstenen van het systeem zelf kleine computersystemen zijn met een processor en geheugen. Modellen van architecturen met gedistribueerd geheugen worden gewoonlijk aangeduid als architecturen zonder directe toegang tot extern geheugen(NORMA, geen externe geheugentoegang). Deze naam komt van het feit dat elke processor alleen toegang heeft tot zijn eigen lokale geheugen. Toegang tot extern geheugen (lokaal geheugen van een andere processor) is alleen mogelijk door berichten uit te wisselen met de processor die eigenaar is van het adresseerbare geheugen.

Zo'n organisatie heeft een aantal voordelen. Ten eerste is er bij het benaderen van gegevens geen concurrentie voor de bus of switches - elke processor kan de bandbreedte van het communicatiepad volledig gebruiken met zijn eigen lokale geheugen. Ten tweede betekent het ontbreken van een gemeenschappelijke bus dat er geen bijbehorende beperkingen zijn op het aantal processors: de grootte van het systeem wordt alleen beperkt door het netwerk dat de processors combineert. Ten derde wordt het probleem van cachecoherentie verwijderd. Elke processor heeft het recht om onafhankelijk zijn gegevens te wijzigen, zonder zich zorgen te hoeven maken over het matchen van gegevenskopieën in zijn eigen lokale cache met de caches van andere processors.

Het belangrijkste nadeel van gedistribueerd geheugen CS is de complexiteit van de informatie-uitwisseling tussen processors. Als een van de processors gegevens uit het geheugen van een andere processor nodig heeft, moet deze berichten met deze processor uitwisselen. Dit resulteert in twee soorten kosten:

    het kost tijd om een ​​bericht van een te vormen en door te sturen! verwerker naar een andere;

    om te reageren op berichten van andere processors, moet de ontvangende processor een interruptverzoek ontvangen en de interruptroutine uitvoeren.

De structuur van een systeem met gedistribueerd geheugen wordt getoond in Fig. 1. 11.4. Links! onderdelen (afb. 11.4, maar)één verwerkingselement (PE) wordt getoond. Het omvat) de processor zelf (P), het lokale geheugen (M) en twee input / output-controllers (K o en CD aan de rechterkant (Fig. 11.4, B) een systeem met vier processors wordt getoond, dat illustreert hoe berichten van de ene processor naar de andere worden verzonden. Met betrekking tot elke PE kunnen alle andere processorelementen eenvoudig worden beschouwd als invoer- / uitvoerapparaten. Om een ​​bericht naar een andere PE te verzenden, vormt de processor een gegevensblok in zijn lokale geheugen en stelt hij zijn lokale controller op de hoogte van de noodzaak om informatie naar een extern apparaat over te dragen. Het interconnectienetwerk stuurt dit bericht door naar de ontvangende I/O-controller van de ontvangende PE. Deze vindt een plaats voor het bericht in zijn eigen lokale geheugen en stelt de bronverwerker op de hoogte van de ontvangst van het bericht.

Rijst. 11.4. Computersysteem met gedistribueerd geheugen: a - processorelement; B- processorelementen combineren over

Een interessante variant van een gedistribueerd geheugensysteem is; model- gedistribueerd gedeeld geheugen(DSM, Distribute Shared Memory), ook wel bekend onder een andere naam architectuur met heterogenegeheugentoegang en coherentiesoftware(SC-NUMA, software-coherente niet-uniforme geheugenarchitectuur). Het idee van dit model is dat de VS, fysiek een systeem met gedistribueerd geheugen, dankzij het besturingssysteem aan de gebruiker wordt gepresenteerd als een systeem met gedeeld geheugen. Dit betekent dat het besturingssysteem de gebruiker één adresruimte biedt, ondanks het feit dat de daadwerkelijke toegang tot het geheugen van de “buitenlandse” computer VS nog steeds via berichtenuitwisseling plaatsvindt.

Multiprocessorcache coherentie

Een multiprocessorsysteem met gedeeld geheugen bestaat uit twee of meer onafhankelijke processors, die elk ofwel een deel van een groot programma ofwel een onafhankelijk programma uitvoeren. Alle processors hebben toegang tot instructies en gegevens die zijn opgeslagen in een gemeenschappelijk hoofdgeheugen. Aangezien geheugen een gedeelde bron is, treedt er conflict op tussen processors wanneer het wordt gebruikt, wat resulteert in een toename van de gemiddelde latentie van geheugentoegang. Om deze latentie te verminderen, krijgt elke processor een lokale cache die, door lokale geheugentoegangen te bieden, in veel gevallen voorkomt dat toegang tot het gedeelde hoofdgeheugen nodig is. Het uitrusten van elke processor met een lokaal cachegeheugen leidt op zijn beurt tot de zogenaamde coherentie probleem of het verstrekken van volgenscachegeheugen. Volgens , is het systeem coherent als elke leesbewerking naar een adres uitgevoerd door een van de processors de waarde die is ingevoerd tijdens de laatste schrijfbewerking naar dit adres retourneert, ongeacht welke van de processors als laatste heeft geschreven.

In zijn eenvoudigste vorm kan het probleem van cachecoherentie als volgt worden verklaard (Figuur 11.5). Laat twee processors R G en Rr zijn via een bus verbonden met het gedeelde geheugen. Eerst lezen beide processors de variabele X. Kopieën van blokken die deze variabele bevatten, worden overgebracht van het hoofdgeheugen naar de lokale caches van beide processors (Fig. 11.5, maar). Vervolgens voert de processor Pt de operatie uit om de waarde van de variabele te verhogen x per eenheid. Aangezien een kopie van de variabele zich al in de cache van de processor bevindt, zal er een cache-hit plaatsvinden en wordt de waarde alleen in cache 1 gewijzigd. Als processor P 2 nu opnieuw een leesbewerking uitvoert X, dan zal er ook een cache-hit plaatsvinden en krijgt P 2 de "oude" waarde opgeslagen in zijn cache x(Afb. 11.5, B).

Het handhaven van consistentie vereist dat wanneer een gegevenselement wordt gewijzigd door een van de processors, de overeenkomstige wijzigingen worden aangebracht in het cachegeheugen van de andere processors, waar een kopie is van het gewijzigde gegevenselement, evenals in het gedeelde geheugen. Een soortgelijk probleem doet zich trouwens voor in systemen met één processor, waar er verschillende niveaus van cachegeheugen zijn. Hier is het nodig om de inhoud van caches van verschillende niveaus te coördineren.

Er zijn twee benaderingen om het coherentieprobleem op te lossen: software en hardware. Sommige systemen gebruiken strategieën die beide benaderingen combineren.

Software oplossingencoherentie problemen

Softwaretechnieken voor het oplossen van het coherentieprobleem stellen u in staat om het zonder extra apparatuur te doen of tot een minimum te beperken)