8: Processor & Geheugen Flashcards
Hoe is het geheugen van een computer gescheiden met de CPU?
Zowel fysisch als functioneel.
Waarom is het geheugen en de CPU sterk met elkaar verbonden?
Veel van de instructies in de instructieset vereisen immers geheugentoegang.
Stel een eenvoudig blokschema van de processor met het geheugen voor.
Waaruit is het schema van de CPU met het geheugen opgebouwd?
Uit drie belangrijke onderdelen:
- de arithmetic/logic unit of ALU,
- de control unit of CU en
- het geheugen.
Welke onderdelen zitten er in een CPU? (schema)
De ALU en de CU zijn een onderdeel van de CPU.
Er is in de processor een input/output of I/O interface voorzien.
Waarvoor is de ALU verantwoordelijk?
De rekenkundige en logische eenheid is het onderdeel van de processor dat gegevens tijdelijk opslaat en er bewerkingen op uitvoert.
Waarvoor is de CU verantwoordelijk?
De controle-eenheid interpreteert en controleert de uitvoering van de instructies.
De controle-eenheid bepaalt welke specifieke instructie moet uitgevoerd worden door het uitlezen van de inhoud van de program counter, die een onderdeel is van de controle-eenheid.
Hoe gebeurt de control van de uitvoering van instructies?
Die controle gebeurt door het uitvoeren van een reeks handelingen die bij de fetch & execute cyclus horen.
Wat is een register?
Een register is een enkelvoudige opslagplaats in de CPU die kan gebruikt worden voor een specifieke taak.
Waarvoor wordt een register gebruikt?
Een register wordt gebruikt om een binaire waarde tijdelijk op te slaan, te bewerken of er berekeningen mee uit te voeren.
Wat bepaalt de specifieke functie van een register in een processor?
De grootte van het register, de manier waarop het aangesloten is en de bewerkingen waarvoor het gebruikt kan worden.
Wat is het verschil tussen een register in de CPU en een register in het geheugen?
Elk register in de CPU is verantwoordelijk voor een specifieke rol.
Dit is in tegenstelling tot het geheugen, waar elke cel identiek is.
Registers verschillen ook van het geheugen op het vlak van adressering. Registers hebben geen adres, maar worden direct door de control unit bestuurd bij de uitvoering van instructies.
Hoe breed kan een register zijn?
Registers kunnen een breedte hebben van één bit tot verschillende bytes.
Op welke verschillende manieren kunnen registers gebruikt worden in een computer?
Afhankelijk van het soort register, kan het gegevens bijhouden die verwerkt worden, een instructie die uitgevoerd wordt bevatten, een geheugen- of I/O-adres bevatten of speciale binaire codes bijhouden.
Deze codes bevatten informatie over de status van de computer, zoals voorwaarden die gebruikt worden bij sprongopdrachten.
Bepaalde registers kunnen voor verschillende taken gebruikt worden, terwijl andere slechts voor één specifieke taak ontworpen werden.
Er bestaan speciale registers voor het bijhouden van floating-point getallen.
Waartussen kan een computer geen onderscheid maken?
Tussen een getal dat gebruikt wordt als numerieke waarde in een programma en een getal dat een instructie voorstelt.
De betekenis wordt door de context bepaald.
Wat kan de inhoud van een register bevatten?
Zowel gegevens als instructies.
Wat is een accumulator?
Bij de processor worden berekeningen uitgevoerd in de accumulator.
Meestal zijn er in een CPU verschillende accumulators, die men ook general-purpose registers (voor de gebruiker zichtbare registers) noemt.
In bepaalde computers worden die general-purpose registers of accumulators beschouwd als een deel van de ALU, bij andere fabrikanten beschouwt men ze als een afzonderlijke registereenheid.
Bij de meeste computers worden die registers eveneens gebruikt om gegevens door te geven tussen verschillende geheugenadressen onderling, en tussen het geheugen en de I/O apparaten.
Over welke belangrijke registers beschikt de controle-eenheid?
- de program counter die het adres van de huidige (of volgende instructie bevat;
- het instructieregister dat de huidige instructie bevat;
- het memory address register of geheugenadresregister (MAR) dat het adres van een geheugenlocatie bevat;
- het memory data register of geheugeninhoudregister (MDR), ook memory buffer register genoemd (MBR), bevat de gegevens die moeten opgeslagen worden in - of uitgelezen worden uit - het geheugenadres dat op dat ogenblik in MAR staat.
Hoewel het MAR en MDR deel uitmaken van de CPU, zijn deze registers functioneel meer verwant met het geheugen zelf.
Wat zijn flags?
Vlaggen zijn regiters van één bit in de controle-eenheid.
Ze laten toe dat de computer speciale condities kan bijhouden zoals bijvoorbeeld rekenkundige carry en overflow.
Soms worden een aantal flags samengevoegd tot wat men een statusregister noemt.
Waarvoor zorgt de I/O-interface in een CPU?
Een I/O-interface verzorgt de in- en uitvoer van gegevens tussen de CPU en de verschillende randapparaten.
Waaruit bestaat een I/O-interface?
Voor de eenvoud zien we de I/O-interface als een paar I/O-registers.
Eén daarvan bevat het adres van het apparaat, terwijl het andere de gegevens bevat. Ze werken net zoals het MAR en het MDR.
Welke primaire soorten handelingen ondersteunen de meeste registers?
- Registers kunnen geladen worden met informatie uit andere locaties, meer in het bijzonder geheugenadressen en registers. Daarbij wordt de vorige inhoud van het register gewist.
- Gegevens uit een andere locatie kunnen opgeteld worden bij, of afgetrokken worden van de inhoud van de waarde in het register. Dan blijft de som of het verschil in het register staan.
- Gegevens kunnen naar links of rechts verschoven of geroteerd worden, over één of meer bits. Deze mogelijkheid is belangrijk bij het implementeren van de vermenigvuldiging en de deling.
Daarnaast zijn er vaak voorzieningen om de waarde 0 in het register te plaatsen (of een clear opdracht te geven) en de inhoud van een register te inverteren (wat overeenkomt met de 1-complement bewerking).
In het algemeen zijn er ook voorzieningen om de inhoud van het register met 1 te verhogen. Dit wordt een increment genoemd. Die opdracht kan gebruikt worden om de program counter te verhougen, te tellen in lussen bij het aanpassen van de index bij gebruik van array’s.
Soms is ook het verminderen met 1 voorzien. Dit is een decrement.
Als we de inverteeropdracht combineren met de incrementopdracht ontstaat het 2-complement van de waarde in het register. De meeste computers beschikken daarvoor over een specifieke instructie, maar hebben ook nog andere instructies voor het resetten, inverteren, verhogen en verlagen van de inhoud van general-purpose registers.
Hoe stelt de control unit toestandsvlaggen in?
Op 1 (set) of 0 (reset) ten gevolge van situaties die ontstaan tijdens de uitvoering van instructies.
Die vinden we in het statusregister terug.
Wat is het voordeel van registers in de processor?
Ze zijn veel sneller dan het werkgeheugen.
Toegang tot het werkgeheugen duurt één of twee klokcycli. Gegevens in een register benaderen, vraagt geen wachttijd.
Welke registers heeft een Intel 8086 processor?
- General Purpose Registers
- Index Registers
- Pointer registers
- Segment Registers
- Special Purpose Registers of Control Registers
Deze registers hebben een grootte van 16 bits.
Interne registers, zoals het instructieregister, memory address register en memory buffer register zijn niet vermeld.
General Purpose Registers?
- AX register of accumulator, waar de meeste bewerkingen (rekenkundige en logische) uitgevoerd worden. Hoewel de meeste bewerkingen ook in andere registers kunnen gebeuren, zijn ze meestal efficiënter uit te voeren in de accumulator.
- BX register of base, wordt gebruikt bij indirecte adressering.
- CX register of count, is bedoeld om als teller gebruikt te worden bij iteraties in lussen of bij het tellen van het aantal tekens in een string.
- DX register of data, bevat de overflow van bepaalde rekenkundige bewerkingen of het I/O-adres als er gegevens over de I/O-bus gestuurd worden.
Index Registers
- SI register of source index, kan gebruikt worden als pointer om indirect naar het geheugen te gaan, en bij het verwerken van strings.
- DI register of destination index, zie SI register.
Pointer registers?
- BP register of base pointer, voor het bereiken van parameters en lokale variabelen in een procedure.
- SP register of stack pointer, verwijst naar de program stack. Kan normaal niet gebruikt worden voor rekenkundige bewerkingen.
Segment Registers
- CS register of code segment, verwijst naar het geheugenblok van 64K waarin de programmacode terug te vinden is die op dat ogenblik uitgevoerd wordt. De waarde kan tijdens het uitvoeren van een programma wijzigen, zodat programma’s niet beperkt zijn tot 64K.
- DS register of data segment, verwijst naar het geheugenblok van 64K waarin globale variabelen terug te vinden zijn. Ook hier kan de waarde bij het uitvoeren van een programma aangepast worden.
- ES register of extra segment
- SS register of stack segment, verwijst naar de plaats waarde processor belangrijke informatie over de toestand van de machine bewaart. Daar staan ook de terugkeeradressen van subroutines, de parameters vna procedures en functies en lokale variabelen.
Special Purpose Registers of Control Registers
- IP register of instructiepointer, bevat het adres van de instructie die uitgevoerd wordt.
- F register of flags register, bevat een aantal binaire waarden die informatie geven over de toestand van de processor. Daaronder vinden we zero (ZF), carry (CF), overflow (OF) en sign flags (SF).
Wat vertegenwoordigt deze afbeelding?
Op de figuur zie je een vereenvoudigde voorstelling van de relatie tussen de registers MAR en MDR en het geheugen.
Elke cel van het geheugen onthoudt één bit. Die cellen zijn georganiseerd in groepen van één of meer bytes. Elke groep is samengesteld uit de datacellen die bij één geheugenadres horen.
Welke registers vormen een interface tussen de CPU en het geheugen?
- MAR
- MDR
Geef het synoniem van MDR.
Het MDR wordt door bepaalde fabrikanten ook Memory Register of MBR genoemd.
MAR-register?
Het MAR bevat het adres van waaruit gelezen moet worden.
Het MAR is verbonden met een decoder die één adreslijn in het geheugen activeert. Er bestaat voor elke groep cellen zo’n adreslijn. Als er met n-bits geadresseerd wordt, zullen we na de adresdecoder 2n adreslijnen moeten hebben.
MDR-register?
Het MDR is effectief verbonden met elke cel in het geheugen.
Elke bit van het MDR is verbonden met de overeenkomstige bit van elk geheugenadres. Door de adresseringswijze zijn we zeker dat er enkel één groep cellen op een gegeven ogenblik actief is.
Er kan dus maar één geheugenlocatie op een bepaald tijdstip geadresseerd worden.
Wat vertegenwoordigt deze afbeelding?
Een gedetailleerde voorstelling van een geheugencel.
Hoe worden gegevens doorgegeven tussen het MDR en het geheugen?
Er bestaan drie lijnen die de geheugencel besturen. Een adreslijn, een lees/schrijf-lijn en een activatielijn.
De adreslijn van een bepaalde cel staat op aan als de computer die gegevens adresseert (MAR).
Met de lees/schrijf-lijn wordt aangegeven of de gegevens van de cel naar het MDR (lezen) of van het MDR naar de cel (schrijven) moeten gebracht worden. Deze lijn werkt door één van de twee schakelaars (lezen of schrijven) op 1 te zetten, in samenwerking met de adreslijn en de activatielijn.
De leesschakelaar staat aan als de adreslijn en de activatielijn beiden aan staan, en de lees/schrijf lijn op lezen staat. De schakelaar verbindt dan de uitgang van de cel met het MDR. De schrijfschakelaar staat aan als de adreslijn en de activatielijn aan staan, en de lees/schrijf lijn op schrijf staat. De schakelaar verbindt dan de MDR-lijn met de ingang van de cel. Daardoor komt de databit van de MDR in de cel terecht.
Hoe verloopt de interactie tussen processor en geheugenregisters?
Om gegevens te lezen of te bewaren in een bepaalde geheugenlocatie zal de processor een adres uit één of ander register kopiëren naar het MAR. Merk op dat het alleen adressen zijn die naar het MAR mogen gestuurd worden. Er is nooit een reden om het omgekeerde te doen. De CPU controleert immers de geheugentransfer en weet welk adres er gebruikt moet worden.
Op het ogenblik dat het MAR geladen wordt, stuurt de CPU een bericht naar het geheugen om te melden of het om een lees- of schrijfopdracht gaat. Dit gebeurt door het instellen van de lees/schrijf-lijn.
Op het geschikte ogenblik (een tijdje na het doorgeven van het adres aan het MAR) zet de CPU de schakelaar aan die het MDR zal verbinden met de geheugencellen. Daardoor ontstaat een overdracht van gegevens uit het geheugen naar het MDR. Het MDR is een tweerichtingsregister. als er een schrijfopdracht gegeven wordt, zullen er gegevens uit een register naar het MDR gebracht worden. Van daaruit zullen ze worden weggechreven in het geheugen. De gegevens die oorspronkelijk op die plaats in het geheugen aanwezig waren, zullen verloren gaan. De nieuwe gegevens uit het MDR komen dna op die plaats terecht. Omgekeerd, als het een opdracht is om gegevens uit het geheugen te lezen, worden de gegevens van het geheugen naar het MDR gebracht, en van daaruit naar één van de registers in de CPU. In dit geval blijt de inhoud van het geheugen intact, maar de inhoud van het MDR wordt vervangen door de gegevens uit het geheugen.
Welke twee facotren bepalen de capaciteit van het geheugen?
Het aantal bits in het MAR bepaalt hoeveel verschillende locaties er kunnen gedecodeerd worden.
Een andere factor is het aantal bits in het adresveld van de instructieset. Dit bepaalt hoeveel adressen direct kunnen bereikt worden met de instructie.
Hoe berekent men het aantal mogelijke geheugenadressen voor MAR met k bits?
M = 2k
Wat bepaald de grootte van het woord dat in één opdracht wordt opgeslagen of gelezen?
De grootte van het MDR.
In welke veelvouden worden gegevens en instructies teruggevonden in de meeste moderne computers?
In veelvouden van 8-bits of bytes.
Wat bepaalt de de gegevens en instructies in veelvouden van 8-bits?
Dit bepaalt dat de kleinste instructie 8 bits breed is.
De meeste instructies passen niet in 8 bits. In dat geval beschik je maar over een opcode van 3 bits (8 verschillende instructies) en 5 bits voor adressering (32 adressen). Dat is ruim onvoldoende.
Daarom bestaan er langere instructies van 16, 24, 32 of zelfs meer bits die in opeenvolgende geheugenadressen bewaard worden.
Wat is een voorwaarde om snel te werken in het geheugen?
Om snel te werken is het nodig om een hele instructie op te halen met één fetch.
Waarom laten de meeste geheugenontwerpen toe om verschillende opeenvolgende bytes te lezen of weg te schrijven in één enkele opdracht?
Gegevens die gebruikt worden voor rekenkundige bewerkingen hebben een precisie van verschillende bytes.
Hoeveel verschillende geheugenadressen adresseert een 80x86-processor ten hoogste?
2n
Daarbij is n het aantal bits dat de adresbus breed is. Meestal zal die computer fysisch niet over die hoeveelheid geheugen beschikken. De 80x86-processoren hebben een adresbus die 20, 24, 32 of 36 adreslijnen bevat.
Met de 20, 24, 32 of 36 adreslijnen kunnen we respectievelijk 1MB, 16MB, 4GB of 64GB geheugen benaderen.
Leg deze afbeelding uit.
Om gegevens op een bepaald adres (bijvoorbeeld 250) te bewaren, plaatst de CPU die gegevens op de databus (1), en komt het adres 250 op de adresbus (2). Daarop wordt de schrijflijn geactiveerd (3), en worden de gegevens opgeslagen in de byte met adres 250 (4).
Leg deze afbeelding uit.
Bij het lezen uit het geheugen wordt het adres 250 op de adreslijnen (1) geplaatst. De juiste geheugencel wordt geselecteerd (2). Daarna wordt de leeslijn geactiveerd (3), en kan de informatie van de datalijnen gelezen worden (4).
Hoe leest de processor een word of een doubleword? (meer dan 8 bits)
De oplossing die de 80x86-familie gebruikt om een word op te slaan: de laagste orde byte op het opgegeven adres, en de hoogste orde byte op de volgende plaats. Daardoor zal een word twee opeenvolgende bytes in beslag nemen.
Een double word zal op die manier vier opeenvolgende bytes in beslag nemen. Het adres van een double word is het adres van zijn laagste orde byte. De hoogste orde byte vinden we op het adres van de laagste orde byte + 3.
Bytes, words en double words kunnen op elke geldige plaats in het geheugen bewaard worden.
Wat impliceert het feit dat een geheugen per byte adresseerbaar is?
De kleinste hoeveelheid geheugen die kan geadresseerd worden is 1 byte.
Als de processor 4 bits nodig heeft, zal er toch een byte moeten gebruikt worden. Dan worden de extra 4 bits van de acht niet gebruikt.