5. Bespreek de Von Neumann-cyclus - martenserver.com

advertisement
Voorbeeldvragen Systeemarchitectuur
Gebaseerd op een pdf van Stoffel met alle eerder gestelde vragen, en een file van Nonkelronnie met
de oplossing tot de meeste van die vragen. Deze oplossingen heb ik hier wat proberen verduidelijken,
uitbreiden, en desnoods verbeteren. De bronnen staan er elkens bij.
Maw dank aan Stoffel voor de lijst, Nonkelronnie voor vele oplossingen en Noxius voor de
samenvatting.
Cheers,
Anq
1. Bespreek de Harvard-architectuur
Opgeloste vragen Nonkelronnie + tekst ‘Inleiding tot microprocessortechniek’
Dit is een waarbij programmageheugen en datageheugen afzonderlijk gespecialiseerde eenheden
zijn. (bv bij microcontrollers en DSP-chips)
 Von Neumann-architectuur: datageheugen en programmageheugen zit in een een
gemeenschappelijk niet-gespecialiseerd geheugen.
2. Verschillen tussen een microcontroller en microprocessor
Opgeloste vragen Nonkelronnie + tekst ‘Inleiding tot microprocessortechniek’
Microprocessor:
Een CPU die ondergebracht is op 1 chip. De CPU is een eenheid die in staat is opeenvolgende
opdrachten van het programma in te lezen en uit te voeren, waarbij data uit het datageheugen en uit
de buitenwereld gehaald worden, verwerkt worden en via de uitvoer naar de buitenwereld gestuurd
worden. Bestaat uit componenten van digitale electronica (multiplexers, rekenschakelingen,
registers, ...)
Microcontroller:
Wanneer men een volledig microcomputersysteem opbouwt uit 1 enkele chip (m.a.w processor,
geheugenvoorzieningen en I/O-voorzieningen op 1 chip). Het wordt gebruikt om 1 bepaald
programma uit te voeren, dat ‘ingebakken’ is bij de productie van de chip.
Voorbeelden: -
audio en video-apparatuur
meet- en regelapparatuur
sensoren
3. Bespreek de bussen op processorniveau
Opgeloste vragen Nonkelronnie + tekst ‘Inleiding tot microprocessortechniek’
Waarom bussen? Microprocessorsystemen transporteren zeer veel gegevens tussen verschillende
bouwstenen van het systeem, en het is onlogisch en onmogelijk om tussen elke 2 bouwstenen een
directe, individuele verbinding te maken. Bussen zijn dus de verbindingen tussen de verschillende
bouwstenen waarover de bouwstenen met elkaar communiceren en benodigde gegevens
doorspelen.
Bussen komen op verschillende niveaus voor: intern (inwendig in de microprocessor, verbinden van
de inwendige componenten), extern (tussen toestellen onderling) en op processorniveau (tussen I/O,
microprocessor en geheugen, met als voorbeelden PCI, EISA, ...)
Deze laatsten bestaan uit 3 fundamentele delen:
-
-
-
Databus: staat in voor het transport van àlle gegevens tussen de verschillende
geheugenchipsn I/O-interfacechips en de microprocessor.ze is bidirectioneel omdat de
verschillende componenten zowel data op de bus moeten kunnen plaatsen, als kunnen
lezen.
Adresbus: groep lijnen waarop de buscontroller (vooral de CPU) het adres van de oorsprong
van de gevraagde data of van de bestemming van de uitgebrachte data zet. Alleen de CPU
heeft adresuitgangen, de andere chips enkel adresingangen. Daardoor is deze bus
unidirectioneel.
Controlelijnen: duiden aan welke onderdelen aan een data-transfert deelnemen, en welke
daarvan schrijft of leest. Zorgt ook voor de timing van de transfert, welke oftewel synchroon
(op ritme van een kloksignaal) of asycnhroon (handshaking) geschiedt.
4. Bespreek de controleeenheid
Opgeloste vragen Nonkelronnie + tekst ‘Inleiding tot microprocessortechniek’
Deze coördineert de microprocessorwerking: samenspel van ALU, registers, ophalen van instructies,
wegschrijven data en het decoderen instructies die in het instructieregister worden geladen.(=
continueVon Neumann-cyclus). Het werkt op basis van een klok (afgeleid van een kristal met een
frequentie van bv 3,5 Ghz).
5. Bespreek de Von Neumann-cyclus
Opgeloste vragen Nonkelronnie + tekst ‘Inleiding tot microprocessortechniek’
Instruction Fetch: Ophalen van de instructie (kan ook meerdere cycli nodig hebben, in deze tekening
wordt ervan uit gegaan dat er maar 1 nodig is)
Decode: decoderen van die instructie
Data Fetch: Ophalen van de data
Execute: de instructie uitvoeren
De Von Neumann-cyclus wordt door de controle-eenheid in een oneindige lus gerealiseerd.
6. Geef en bespreek de soorten RAM
Opgeloste vragen Nonkelronnie + tekst ‘Inleiding tot microprocessortechniek’
RAM = Random Access Memory, zowel lees- als schrijfbaar
SRAM: statische RAM, maakt gebruik van flipflops en zijn zeer snel.
DRAM: dynamische RAM, maakt geen gebruik van flipflops maar elke cel bestaat uit één transistor
en een condensatortje. Gegevens moeten opgefrist(refresh) worden om verlies door lekking te
voorkomen (om de 2ms). Hiervoor is een complexere interface nodig, maar het heeft wel een grote
capaciteit (pakt minder ruimte in)
7. Geef en bespreek de soorten ROM
Opgeloste vragen Nonkelronnie + tekst ‘Inleiding tot microprocessortechniek’
ROM = Read Only Memory
8. Leg uit: I/O Interfacechip + DMA + Isolated I/O + Memory
Mapped I/O
Opgeloste vragen Nonkelronnie + tekst ‘Inleiding tot microprocessortechniek’
Wordt ook later in het boek gezien, dat deel is hier ook als laatste bijgevoegd (p.222 + Noxius’
samenvatting)
Een interfacechip is de vertaler die zorgt voor de communicatie tussen I/O toestellen en de
microprocessor. Het zorgt voor de communicatie van de computer met de buitenwereld. De
interfacechip bevat 3 soorten registers:
-
Dataregisters: verzenden data van microprocessor naar randapparatuur
Controleregisters: microprocessor zegt hoe interface met randapp moet werken
Statusregisters: randapp meldt iets aan de microprocessor
De synchronisatie tussen microprocessor en I/O-interfacechip kan op 2 manieren verlopen:
-
Actieve synchronisatie (polling = om de zoveel tijd iets zelf gaan doen)
Het initiatief ligt hier bij de microprocessor. De output stuurt telkens iets, de input kijkt
telkens of er iets binnen gekomen is
Nadeel: als tijdsinterval te groot is, kunnen er gegevens van de input verloren gaan door
onvoldoende buffercapaciteit
Voordeel: eenvoudig, bij output is er geen probleem
-
Interrupts: (I/O-device neemt het initiatief)
Ze onderbreken de microprocessor in zijn gewone bezigheden waarna de processor wordt
verplicht voorrang te geven aan de functies die dienen voor de afhandeling van dieinterrupt.
Voor adressering van I/O bestaan 2 basisprincipes:
-
Memory Mapped I/O: (bv Motorola)
o Microprocessor maakt geen onderscheid tussen I/O en geheugenchips.
o externe decodeerlogica bepaalt welke chip geactiveerd wordt
o adresruimte = “memory map”
o bewerkingen op gegevens mogelijk
-
Isolated I/O: (bv Intel)
o 2 adresruimten nodig: geheugenadresruimte en I/O adresruimte
o enkel uithalen + inschrijven + speciale I/O instructies nodig (LOAD/STORE)
Datatransfer tussen geheugen en I/O kan op 2 manieren:
-
via geprogrammeerde overdracht: gecontroleerd door geprogrammeerde instructies dat
loopt in de microprocessor. Als er een byte van I/O naar het geheugen moet, zal deze eerst
worden opgehaald vanuit een dataregister van de I/O-interface behorende bij dat apparaat,
-
overgebracht worden naar de microprocessor, en daarna (2de cyclus) vanuit de processor
naar het geheugen.
via Direct Memory Access(DMA):
o veel vlugger want de microprocessor komt er niet in tussen, er worden rechtstreeks
blokken gegevens overgebracht van het geheugen naar de randapparaten
o bij overdracht wordt gebruik gemaakt van bussen (normaal is microprocessor
buscontroller, dus hebben we een nieuwe nodig (DMA-controller, kortweg DMAC)
Gangbare I/O chips zijn:
-
-
UART (Universal Asynchronous Reciever Transmitter): is een chip die een byte uit de databus
kan lezen en deze bit voor bit op een lijn kan zetten voor een terminal, of die data van een
terminal kan invoeren.
USART( Universal Synchronous Asynchronous Reciever Transmitter): kan naast alle UARTfuncties ook synchrone transmissie afhandelen op basis van allerlei protocollen
PIO-chips(Parallel Input/Output): heeft 24 I/O-lijnen die als interface kunnen dienen met elk
TTL-compatibel apparaat. Het CPU-programma kan een 0 of een 1 naar een willekeurige lijn
schrijven of ervan lezen -> veel flexibiliteit
9. Verschil tussen interpretatie en vertaling
Gewoon een mogelijke vraag uit men eigen samenvatting
Vertaling: Elke instructie in T1 te vervangen door een equivalente serie instructies in T0.
Interpretatie: Een programma schrijven in T0 dat programma’s in T1 als invoerdata accepteert en ze
uitvoert door de instructies een voor een te analyseren en de equivalente T0 instructies uit te
voeren.
Verschil tussen de twee: Bij vertaling wordt het hele T1 programma omgezet in een T0 programma,
en dan wordt dat programma uitgevoerd. De controle ligt dus in handen van het T0-programma.
Bij interpretatie wordt elke instructie na analyse en decodering direct uitgevoerd. Er is geen vertaald
programma, de interpreter heeft de controle over de computer.
10.
CISC  RISC
Opgeloste vragen Nonkelronnie + samenvatting Noxius
CISC (Complex Instruction Set Computer):
Deze computers zijn het gevolg van de tendens om steeds ingewikkelder instructies op te nemen in
de hardware, waardoor complexe bewerkingen met minder instructies en sneller konden werken.
Het probleem is dat men te veel instructies heeft willen opnemen in de hardware, waardoor men
grotere chips zou moeten maken. Men is van deze manier van werken teruggekeerd.
RISC (Reduced Instruction Set Computer):
Hier is de aanpak om alleen de instructies te implementeren die echt nodig zijn of veel voorkomen en
deze optimaliseren we, omdat 90% van de programmas toch met simpele instructies werkt.
RISC veel sneller als CISC, waarom vleef CISC bestaan?
- Kwestie v terugwaardse compatibiliteit en Intel corp.
- Intel integreerde RISC in CISC( RISC kern die de simpelste instructies in 1 datacyclus toepaste terwijl
de gecompliceerde op de CISC manier werden verwerkt)
11.
Bespreek moderne programmeersprincipes
Opgeloste vragen Nonkelronnie + boek p.59 ev
De doelstellingen waaraan de meeste ontwerpers proberen te voldoen tegenwoordig:
-
Veel voorkomende instructies worden uitgevoerd door hardware (rechtstreeks, zonder
microprocessor)
Maximaliseer de frequentie waarmee instructies worden opgestart (zoveel mogelijk
instructies per seconde starten, parallellisme is hier heel belangrijk)
Instructies moeten gemakkelijk decodeerbaar zijn (regelmatig, vaste lenge en klein aantal
velden, hoe minder verschillende formaten hoe beter)
Toegang tot geheugen enkel via LOAD/STORE, alle andere instructies mogen alleen op
registers werken
Zorg dat er genoeg registers zijn (zo weinig mogelijk naar het geheugen gaan, dat is te traag,
dus we moeten een groot genoege register-buffer hebben)
12.
Bespreek pipelining
Opgeloste vragen Nonkelronnie + boek p.61 ev
Bij het ontwerpen van een micro-architectuur moeten we kosten afwegen tegenover snelheid
(sneller, groter chipoppervlak = duurder).
Hoe kunnen we nu de verwerkingssnelheid verhogen:
-
reduceren van het aantal klokcycli nodig voor het uitvoeren van een instructie
organisatie zo eenvoudig mogleijk houden (kortere klokcycli)
meer instructies “tegelijkertijd” (parallel) laten verlopen = pipelining
Pipelining is parallellisme op instructieniveau. De uitvoering van een instructie zal in een groot
aantal delen gesplits worden(stadia), waarbij elk deel door een speciaal daarvoor bestemd stuk
hardware wordt afgehandeld, en dat allemaal parallel. (analogie met een cakefabriek, p.61) (hell
alle beetjes helpen ook al lijken ze kinderachtig :p)
Moeilijkheden zijn er vooral om rekening te houden met het traagste station, en met
spronginstructies.
Superscalaire structuren: 1 pijplijn, maar meerdere functionele eenheden (zie fig p.65)
13.
Bespreek parallellisme op processorniveau
Samenvatting Noxius+ boek p.65ev
Om de snelheid met een factor van 50, 100 of meer te versnellen, moet met computers met
meerdere CPU’s ontwerpen. Hiervan zijn er:
-
-
-
Arraycomputers:
o Arrayprocessors: Bestaan uit een groot aantal identieke processors die dezelfde serie
instructies uitvoeren op verschillende gegevens.
Oorspronkelijk: 4kwadranten: 8x8 processor/geheugenelementen,
1besturingseenheid per kwadrant zond instructies uit, die dan netjes in de maat door
alle processors werden uitgevoerd, waarbij elke processor zijn eigen data uit zijn
eigen geheugen gebruikte: SIMD (Single Instruction-stream Multiple Data-stream).
Maar: kosten te groot: slechts 1 kwadrant gemaakt
o Vectorprocessors: Anders dan arrayprocessors worden alle optellingsoperaties
uitgevoerd in 1 opteller die sterk van pipelining gebruikt maakt.
Multiprocessors:
o Meerdere CPU’s die een gemeenschappelijk geheugen gebruiken, gecoordineerd
zodat ze elkaar niet zouden hinderen (via software). Deze nauwe interactie tussen
CPU’s noemt men ‘lously coupled’
o Om concurrentie te verminderen krijgt elke processor wat lokaal geheugen voor
zichzelf. De toegang naar dat geheugen gaat niet over de gemeenschappelijke
bus,dus verkeerd wordt sterk gereduceerd. (ook andere oplossingen mogelijk mbv
caches, maar daar gaat men niet verder op in)
Multicomputers:
o Groot aantal onderling verbonden computers, zonder gemeenschappelijk geheugen
(dit noemen ze ‘loosly coupled’)
o De CPU’s communiceren dmv berichten, zo’n beetje gelijk email maar dan sneller
14.
Bespreek synchrone bussen
Opgeloste vragen Nonkelronnie + nota’s + boek p.184
-
-
-
De data wordt getransfereerd op het ritme van een meegeleverd kloksignaal. Klok heeft
bepaalde frequentie. Kloksignaal gaat trapsgewijs met stijgende en dalende flanken, omdat
een elektrisch signaal niet in een tijdsinterval 0 kan veranderen van waarde.
Geheugen en microprocessor wisselen hun taken af. Ze hebben elk een vaste tijd (op basis
van vertrouwen). De componenten rekenen erop dat de andere componenten hun taken
binnen de hun bedeelde tijd afwerken.
voordeel: eenvoudig, gemakkelijk te bouwen. (CPU zet signalen aan en geheugen reageert
gewoon)
nadeel:
 (tempo) kloksnelheid van de bus is aangepast aan de traagste component
 Alles gebeurt in gehele veelvouden van de klok (als een CPU en een geheugen
in staat zijn een transfer in 3,1sycli te doen, moeten ze het rekken tot 4,0
omdat gedeeltelijke cycli verboden zijn
15.
Bespreek asynchrone bussen
Opgeloste vragen Nonkelronnie + boek p.185
-
-
-
Niet verwarren met ‘niet-gesynchroniseerd’. Asynchrone buscontrole werkt op basis van
‘hand-shaking’. Elke gebeurtenis wordt veroorzaakt door een eerdere gebeurtenis, niet door
de klok.
Werking (een volledige handshake):
1. microprocessor heeft iets nodig uit geheugen (adres op adresbus + melden aan
geheugen dat er iets opstaat)
2. Geheugen gaat kijken en voert aanvraag uit (zet data op databus)
3. Geheugen zegt microprocessor dat er een antwoord is op de databus
4. Microprocessor neemt gegevens aan, beïndigd de cyclus en alles wordt terug stil
Nadeel: veel te veel signalen voor wat bereikt moet worden  ingewikkelder
Voordeel: elke chip werkt op zijn eigen snelheid, als er koppels trage componenten
samenwerken, heeft dat geen gevolg voor de eventuele snellere transacties daarna
Meeste bussen tegenwoordig zijn synchroon, omdat ze makkelijker te maken zijn. De CPU zet
gewoon signalen aan en het geheugen reageert gewoon. En ook omdat er veel in de
technologie van synchrone bussen is geïnvesteerd.
16.
Bespreek de werking van interrupts
Opgeloste vragen Nonkelronnie + nota’s
-
-
-
-
Men voorziet de I/O-interfacechips van een signaal dat rechtstreeks naar de microprocessor
gaat. Wordt dit signaal door de interface geactiveerd, dan zal de microprocessor verplicht
worden om het lopende programma even te onderbreken en voorrang te geven aan een
reeks van andere instructies die de aanvragende interface zullen bedienen.
Interrupts houden wijzigingen in in het besturingsverloop die niet veroorzaakt worden door
het lopende programma, maar door iets anders. Het I/O-device neemt het initiatief. Ze
onderbreken de microprocessor in zijn gewone bezigheden.
Wanneer de CPU een interrupt ontvangt overloopt hij volgende stapen:
1. De microprocessor werkt zijn huidige instructie af en houdt bij waar hij mee bezig was.
2. PC en SR op stack plaatsen, beginadres van ISR in PC plaatsen, nodige registers bewaren
3. ISR (Interrupt Service Routine) begint, de I/O wordt afgehandeld
4. RFI (Return From Interrupt) is een speciale instructie die de ISR afsluit(RETI). CPU wordt
terug in de modus en de toestand gebracht voordat de interrupt optrad. Oude PC en SR
worden terug van de stack gehaald. De computer gaat verder waar hij gebleven was.
Op de Microprocessor zijn 2 aanvraaglijnen:
 NMI (Non Maskable Interrupt): kan niet genegeerd worden. Bv bij
stroomuitvalkop van de HD omhoog
 IRQ (Interrupt Request): De gewone interrupt request. Indien er meerdere
IRQ’s tegelijk aan de microprocessor komen, dan wordt de interrupt met
hoogste prioriteit eerst afgewerkt.
17.
Bespreek het verschil tussen de PCI-bus en de USB-bus
Opgeloste vragen Nonkelronnie + boek p. 220
(Dees zijn echt zo’n rotvragen e.. Der kunde nen boek over schrijve ffs.. Daar _zijn_ boeken over
geschreven trouwens. Nu goed, gewoon de bekende onder elkaar zetten dan maar, en sebiet
bespreken we de PCI-Expres nog voor de volledigheid)
-
-
-
De ISA (Industry Standard Architecture) bus: aangepaste vorm van de IBM PC-bus (omwille
van ‘backward compatibility’ nog terug te vinden op alle Intel computers). De ISA bus is een
verouderde bus met een maximale bandbreedte van 16,7 MB/s (volstond niet meer voor
nieuwe software)
De PCI (Peripheral Component Interconnect) bus: is sneller dan de USB. Hij heeft een
bandbreedte van 528MB/S en loopt op een hogere kloksnelheid dan de ISA-bus. De PCI bus
gebruikt synchrone buscontrole. Werd ontworpen om te voldoen aan de vraag om meer
bytes per cyclus over te brengen, vooral voor games en full-screen video (hiervoor is later de
AGP erbij gekomen.
De USB (Universial Serial Bus): Dit is een I/O-bus voor langzame randapparatuur, daar zou PCI
te duur voor zijn. Het voordeel van USB is dat je indien je randapparatuur wilt aansluiten je je
computerkast niet moet openmaken. Een ander belangrijke eigenschap van USB is dat 1
kabel gebruikt wordt voor zowel datatransfer van en naar de randapparatuur als dat het de
randapparatuur van stroom voorziet. We hebben de versies 1.0(1,5 Mbps), 1.1(12 Mbps) en
2.0(480 Mbps)
18.
Bespreek PCI-Expres
Samenvatting Noxius+ boek p.214 ev
-
-
Gooit parallelle bus met zijn vele masters en slaves overboord en stapt over naar een
ontwerp dat gebaseerd is op snelle seriële punt-tot-puntverbindingen
Neemt veel over van de techniek voor lokale netwerken, nl switched ethernet (pakketten,
protocolstack, ...)
Levert een een general-purpose schakelaar om chips met seriële links te verbinden
Traditionele bridgechip + een switch die verbonden is met de bridge, elk van de I/O-chips
heeft een dedicated punt-tot-puntverbinding met de switch
3 belangrijke verschillen met vroeger:
 gecentraliseerde switch <=> multidrop-bus
 smalle seriële p2p-verbindinen <=> brede parallelle bus
 master-slave <=> pakketten versturen tussen apparaten (pakket = header +
payload, header bevat besturingsinformatie, payload bevat de data)
kleine verschillen:
 foutcorrigerende code voor de paketten = hoge betrouwbaarheid
 verbinding tss chip en switch is langer
 systeem is uitbreidbaar geworden
 apparaten zijn 'hot plugable'= kunnen toegevoegd of verwijderd worden
terwijl het systeem draait
 apparaten en computers zijn kleiner
19.
Adrescodering: hoe kan men geheugenchips aansluiten op
een µ-processor?
Via I/O-chips zou ik denken, die (erg) uitgebreid worden besproken in vraag 8. In de nota’s beginnen
ze bij deze vraag over memory-mapped I/O, isolated I/O en interrupts. Dus ik zou hier die 3 dingen
bespreken adhv wat ik hierboven heb gegeven.
20.
-
Wat is JVM en wat is zijn nut?
Java Virtual Machine, met als onderdeel het IVJM (Integer JVM), die bespreken we hier
verder want ik heb geen idee wat ik kan zeggen over JVM, buiten dat het op alle platformen
werkt lol.
- IJVM is een interpreter, een programma dat functioneert op het microarchitectuurniveau en
dat de instructiesetarchitectuur (ISA, macroarchitectuur) interpreteert.
Voor meer info kan je nog beginnen over het geheugenmodel van de IJVM (p.251) ed, maar ik heb
echt geen idee of dat de bedoeling is.
21.
Bespreek datapad, timing, µ-instructies en sequentiering
adhv Mic-1
Opgeloste vragen Nonkelronnie + boek p. 232
-
Het datapad is het deel van de microprocessor dat de ALU bevat met de bijbehorende input
en output (bevat de ALU, shifter, bussen en registers).
-
Timing: een datacyclus zal uit verschillende deelcycli bestaan. De cyclus start op de dalende
flank van het kloksignaal, en de cycli beschrijven verschillende stappen telkens een eindige
vertraging introduceren. Deze werkwijze functioneert enkel bij een nauwkeurige timing, een
lange klokcyclus, een bekende minimale voortplantingstijd door de ALUen een korte laadtijd
van de registers vanuit de C-bus.
De deelcycli zijn:
 een deelcyclus voor het aandrijven van het datapad (initialisatie)
 een deelcyclus voor het beschrijven van de A en B bussen (gevraagde
waarden worden hierop gezet)
 een deelcyclus voor de verwerking van de gegevens in de ALU en de shifter
 een deelcyclus voor voortplanting vanuit de shifter over de C-bus naar de
registers
-
De juiste bewerkingen staan beschreven in de micro-instructies, dit zijn een set controlesignalen nodig om het datapad te besturen gedurende 1 cyclus.
-
De Mic-1 benadert het geheugen op 2 manieren:
 lezen en schrijven van data (9 bytes) gebeurt met MAR (Memory Address
Register) en MDR (Memory Data Register)  aangegeven door rd en wr in
de micro-instructies
 lezen van instucties (1 byte) gebeurt met PC (Program Counter) en MBR
(Memory Buffer Register)  aangegeven door fetch in de micro-instructies
Deze 2 benaderingen kunnen tegelijkertijd gebeuren
-
De volgordebepaling (sequentiëring) bepaalt welke stuursignalen tijdens elke cyclus worden
ingeschakeld. Dit wordt verzorgd door de sequencer, die verantwoordelijk is voor het in
volgorde uitvoeren van de operaties die een enkele ISA-instructie realiseren. De sequencer
moet tijdes iedere cyclus twee soorten informatie produceren:
 De status van ieder stuursignaal binnen het systeem
 Het adres van de volgende uit te voeren micro-instructie
-
Het geheugen waar het volledige microprogramma in wordt bewaard, noemt men de control
store. Dit verschilt in één grote manier van het hoofdgeheugen: in het hoofdgeheugen
worden instructies altijd in adresvolgorde uitgevoerd, bij µ-instructies is dit niet het geval.
22.
Verbeteringen MIC2 tov MIC1
Opgeloste vragen Nonkelronnie + boek p.282 ev
-
MIC2 is sneller dmv prefetching in de IFU(Instruction Fetch Unit), dit is een unit die de ALU
ontlast door onafhankelijk de instructies op te halen en te verwerken, die de PC
onafhankelijk kan ophogen en bytes uit de instructiestroom kan ophalen voordat die
daadwerkelijk nodig zijn. Hier heeft die enkel een incrementer voor nodig.
-
Gebruikt een kleinere Control Store
-
kosten van de Instruction Fetch Unit zijn iets groter dan de winst die we maken door
oppervlak van Control Store te verkleinen, iets duurder, maar de snelheid die we ervoor in de
plaats krijgen compenseert dat
23.
Verbeteringen MIC3 tov MIC2
Opgeloste vragen Nonkelronnie
Datapadcyclus bestaat uit 3 delen: 1. Plaatsen registers op A- en B-bus
2. ALU en Shifter
3. Opslaan resultaten via bus C
Tot hiertoe: de ene cyclus moest wachten op de volgende (sequentieel)
Nu: terwijl 2 bezig is kan 1 al nieuwe waarden laden (pipelining)
Hoe? Voor iedere bus is er een extra latch (=register) waarnaar er iedere cyclus geschreven wordt
(soort tussenoplossing-ruimte)
Gevolg: klok kan sneller omdat de maximale vertraging kleiner is, datapad wordt in 3 verdeeld dus in
principe kan de klok 3 keer sneller gaan. Alle onderdelen van het datapad worden tegelijkertijd door
andere instructie in de pipeline gebruikt. De ALU kunnen we nu tijdens iedere cyclus inzetten en
kunnen we dus 3 keer zoveel werk doen.
24.
Verbeteringen MIC4 tov MIC3
Thread op inwe: antwoorden van Bentium (thanks  )Ik snap het zelf maar half, dus ik durf het
niet echt in eigen woorden zetten. Maw ik quote Bentium grotendeels, buiten het italic-gedoe (kon
het ni laten)
-
Pipelining gebeurt bij MIC4 in 7 stadia
-
De mic3 doet 1 microstep per klok, maar omdat pad korter is, kan de klok nu op een veel
hogere snelheid lopen. Je instructie duurt wel nu meerdere klokcycli erover voor hij 1
instructie afhandelt, maar aangezien we er meer kunnen doen per seconde (dankzij hogere
klok) is ie sneller.
De mic4 kan meerdere microinstructies per klok uitvoeren, dus elk deel van het datapad is
per klok met een andere microinstructie bezig.
-
Eigenlijk feitelijk verloopt het gepijp (gvd.. ik heb ze al is gewaarschuwd in men samenvatting
van netwerkprogrammatie, nu gaan ze derover!) op den mic3 niet zo goed, je kunt namelijk
geen ¾ verschillende instructies tergelijk uitvoeren, want je hebt maar 1 MIR =>1actie
tergelijk laden ed, waardoor toch nog sequentieel wordt verwerkt.
Bij mic4 hebben ze nu 4 MIR's => elke aparte secite van het datapad heeft een eigen MIR,
waardoor die nu wel volledig onafhankelijk van mekaar kunnen werken
25.
Bespreek cache + lokaliteitsbeginsel
Opgeloste vragen Nonkelronnie
-
Cachegeheugen is een klein stukje heel snel geheugen tussen microprocessor en traag
hoofdgeheugen.
-
Het basisprincipe heet het “Lokaliteitsbeginsel”. “Geheugenfuncties die in een kort
tijdsinterval optreden gebruiken slecht een klein deel van de totale geheugenruimte”. We
kunnen spreken van tijdelijke lokaliteit en ruimtelijke lokaliteit
Tijdelijke: dezelfde instructies of data worden snel terug gebruikt.
Ruimtelijke: nieuwe adressen liggen dikwijls in de buurt van vorige adressen. Dit houdt in dat
we niet enkel een bepaald adres in het cache stoppen, maar ook de blok errond. Indien een
adres opgevraagd wordt uit het hoofdgeheugen stoppen we de inhoud en de inhoud van de
blok er rond ook in de cache
-
Er zijn 3 soorten caches: associatieve, set-associatieve en direct-mapped
o Associatieve: cache geheugen is opgebouwd als een tabel met 1 entry per tabel-slot.
Deze manier is wel niet goed voor grote caches. Wanneer een bepaald bloknummer
moet gezocht worden in cache (bij elk slot een comparator zetten).
voordeel: zeer snel
nadeel: parallelle comparatoren nodig om te zoeken of bepaald blok zich reeds in de
cache bevindt of niet. Neemt zeer veel plaats in op cachechip
Wat als cache vol zit? Iets anders uit cache moet plaats maken. Hier bestaan 3
manieren van aanpakken voor:

LRU (Least Recently Used): Wat langst geleden gebruikt werd wordt
vervangen
nadeel: je moet van elk slot bijhouden wanneer het laatst gebruikt werd +
moet aangepast worden bij elk gebruik

FIFO (First In, First Out): Oudste element wordt vervangen (<> LRU)
voordeel: je moet enkel bijhouden wanneer het element in de tabel kwam

Random element vervangen
o Direct-mapped: Er bestaat een relatie tussen bloknummer en slotnummer. Index
wordt berekend. (beetje alla hashfunctie?)
Deze manier is wel geen goede manier voor kleine caches
nadeel: meerdere blokken op zelfde slotnummer afgebeeld. Hoe onderscheiden we
deze? Dmv TAGS. Een Tag zijn een unieke 16-bits waarde die aangeeft uit welke
geheugenregel de gegevens stammen. Wanneer de tag van gezochte overeenkomt
met inhoud slot waar we op dat moment naar kijken  OK (Cache Hit). Wanneeer
dit niet zo is  Cache Miss. Waarde in cache wordt overschreven door nieuwe
waarde.
o Set-associatieve: combinatie van a. en b
26.
Bespreek de relatie tussen cache en schrijfbewerkingen
Opgeloste vragen Nonkelronnie (weet ni meer jus over wa dit ging, zie p. 305 als ge wilt, tis vo mij
al te laat dak dit aant toevoegen ben )
Er kunnen zich 2 situaties voordoen:
-
Het adres zit reeds in het cachegeheugen (door voorgaande bewerking):
2 manieren van aanpakken:
o Write through: onmiddellijk aanpassen in cache en geheugen
voordeel: cache en geheugen werken steeds met dezelfde gegevens
nadeel: veel extra dataverkeer
o Copy Back: Aanpassen van het hoofdgeheugen gebeurt pas als blok uit de cache
verdwijnt (en gewijzigd is)
voordeel: minder dataverkeer
nadeel: geen permanente gelijkheid tussen hoofdgeheugen en cache
-
Het adres zit nog niet in het cachegeheugen:
27.
Bespreek cache en I/O
Nota’s
-
Uit den boze, I/O kan cache niet aanpassen
-
Memory mapped I/O: programeur moet cache uitschakelend bij I/O bewerking
-
Isolated I/O: de µprocessor schakelt automatisch cache uit bij I/O adres
28.
Bespreek sprongvoorspelling
Opgeloste vragen Nonkelronnie+ boek p.307 ev
-
Pipelining werkt perfect zolang programma sequentieel werkt. Problemen treden op bij
sprongen in het programma. Vroeger stopte de pipeline als er een sprong inzat, nu proberen
we de sprong te voorspellen (maken we de sprong of niet?)
-
Sprongen kunnen voorwaardelijk of onvoorwaardelijk zijn
-
Statische sprongvoorspelling: vooraf door de compiler voorspeld
-
Dynamische sprongvoorspelling: at runtime dmv een historietabel met een bit die bijhoudt
of de sprong vorige keer gemaakt werd of niet. Voor problemen met geneste lussen,
gebruiken we historietabellen met 2 voorspellingsbits: één voor wat verwacht wordt dat er
bij de sprong zal gebeuren, en één voor wat er de laatste keer werkelijk gebeurde
-
Als de sprongvoorspelling fout is, kan men 2 dingen doen:

Toelaten dat het programma gewoon doorgaat, totdat het probeert de
toestand van de machine te veranderen (door iets in een register op te slaan)
Hierbij gebruikt men een kladregister die alles bijhoudt tot men weet of de
voorspelling juist was.

Alles opslaan voor er een beslissing wordt genomen, om nadien een rollback
mogelijk te maken.
29.
Bespreek de mogelijke adresseringsmodi
Opgeloste vragen Nonkelronnie
Adresseermodes zijn enkele methodes waarmee de microprocessor het “effectief adres” bepaalt.
Indien een programma gebruik wil maken van operanden moet het weten waar het die operanden
kan vinden. Het programma ontvangt een adresveld, en wat het daarmee moet doen hangt af van de
adresseringsmodus.
Het zijn technieken die toelaten om de specificatie van adresdelen te verkorten en het adres
dynamisch vast te stellen.
a) Onmiddelijke adressering:
ipv het adres in het adresgedeelte te zetten, zetten we al onmiddellijk de operand zelf erin.
voordeel: geen extra geheugenbewerking (om operand op te halen)
nadeel: alleen constanten kunnen worden geladen
b) Directe adressering:
Men specifieert het volledige adres van de operand in het geheugen.
voordeel: gemakkelijk voor adressen die vast zijn (vb I/O adressen) + globale variabelen
nadeel: niet voor lokale variabelen
c) Registeradressering:
Idem als directe adressering maar ipv een geheugenlocatie wordt nu een register
gespecifieerd
Deze methode wordt het meest toegepast
d) Indirecte adressering:
Het adres wordt niet opgenomen in de instructie, maar staat in een register (=pointer).
voordeel: geen groot geheugenadres meer in de instructie
e) Geïndexeerde adressering:
Het adresseren van het geheugen gebeurt hier via een register (= pointer) en een constante
offset(=index), kijk op plaats (pointer + offset)
f) Relatieve adressering:
relatief tov Program Counter (dwz in het programmageheugen)
Plaats waar we nu zijn + “een sprong” (bijv. spring x plaatsen vooruit of achteruit = BRANCH
voordeel: laat toe om programma-relocatie te realiseren wat met absolute sprongadressen
(JUMPS) niet kan.
g) Stack adressering:
postfixnotatie
infixnotatie
30.
Bespreek macro’s
Opgeloste vragen Nonkelronnie + samenvatting Noxius
-
Reeks commandos die vaak samen voorkomen groeperen als 1 opdracht.
Het is een methode die een naam toekent aan een reeks instructies.
-
Wanneer een reeks instructies veelvuldig voorkomt, dan kunnen we
- steeds opnieuw schrijven: tijdrovend
- een subroutine maken: trager door de sprongen en het terugkeren
- macros gebruiken: telkens als de macro-naam vermeld is zal assembler deze vervangen
door stukjes tekst.
-
Voordeel: sneller dan steeds opnieuw typen.
Nadeel: niet compacter, wordt terug vervangen bij het compileren
-
macroaanroep:als assembler macro tegenkomt slaat hij deze op in een macrodefinitietabel,
vanaf dat moment vervangt deze elke voorkomen van de naam van de macro als opcode
door de body van de macro, het gebruik van de macronaam als opcode noemt
macroaanroep en de vervanging ervan door de body van de macro: macro-expansie (gebeurt
tijdens het assembleren, niet tijdens uitvoering)
31.
Bespreek het assembleerproces
Opgeloste vragen Nonkelronnie
Nota: van H7 weet ik zelf nog niet echt alles perfect, dus veel eigen interpretatie zal er niet aan te
pas komen 
-
2 lezingen of gangen (passes) omdat er voorwaartse referenties kunnen zijn(verwijzingen
naar onbekende symbolen later in het programma)
-
1e gang: aanmaken symbooltabel via opcodetabel en pseudo-instructietabel
Na deze eerste pass zijn alle symbolen gekend, er is geen sprake meer van voorwaartse
referenties.
-
2e gang = vertaling (Elk statement wordt gelezen, geassembleerd en als uitvoer gegeven)
genereren van objectprogramma en eventueel maken van een .lst file (fouten in code
worden hierin gezet)
genereren van de gegevens voor de linker
De vertaling wordt opgezocht in de symbooltabel en de opcodetabel.
-
Linken en laden= samenvoegen van verschillende objectmodules tot 1 uitvoerbaar binair
programma( .exe).
relocatieprobleem
-
externe referenties: de assembler weet niet welk adres hij in de instr. CALL B moet zetten
Oplossing: linker voegt alle afzonderlijke adresruimtes van de objectmodules samen in 1
lineaire adresruimte. Opstellen tabel  lengte module + zijn startadres
32.
Bespreek linken
Samenvatting Noxius
Voor de vertaling van een bronprogramma zijn 2 stappen nodig:
1) compileren of assembleren van de bronprocedures
2) linken van de objectmodules
De functie van de linker: afzonderlijke vertaalde procedures te verzamelen en te koppelen tot een uit
te voeren geheel dat een uitvoerbaar binair programma wordt genoemd.
33.
Bespreek dynamisch linken + vb
Opgeloste vragen Nonkelronnie
-
Dynamisch linken houdt in dat we enkel de procedures (in .dll) linken die daarwerkelijk
aangeroepen worden. Vroeger werd alles gelinkt, ook procedures die uitzonderlijk gebruikt
werden
-
Voorbeeld:
in een programma wordt procedure A aangeroepen (niet in programma, zit in dll)
deze dll wordt geladen:
- impliciet: in het begin van programma
- expliciet: tijdens programma
34.
Bespreek relocatie – dynamische binding + waarom
Geen idee, staat hier vooral voor de volledigheid. Zoals ik zei: van H7 weet ik echt nog niet veel
35.
Leg uit:
Hier zet ik een resem dingen die ergens in de leerstof passen, maar die te klein zijn voor een hele
vraag, of die ik nu maar pas ontdekt, of die ik niet weet waar te plaatsen. Ook grotendeels
gebaseerd op nonkelronnie zen lijst
1. Busarbitrage:
Wanneer er 2 of meer apparaten tegelijk een bus willen gebruiken, moet er kunnen beslist
worden wie er voorrang krijgt. Dit gebeurt oftewel gecentraliseerd, met meestal de CPU als
arbiter, of gedecentraliseerd.
o Gecentraliseerd: Er wordt dan een mechanisme van daisy chaining ongevoerd (verg.
met kerstlichtjes). Als de bus wordt aangevraagd gaat een lijn aangezet worden die
door alle apparaten loopt, en elk apparaat checkt of hij de bus nodig had. Zo niet, zet
hij het signaal verder. De dichtste bij de CPU, krijgt de bus.
o Gedecentraliseerd is ook mogelijk: Als een apparaat de buslijn wilt, zet die de
aanvraaglijn aan. Alle apparaten houden de aanvraaglijnen in de gaten. Zorgt voor
meer lijnen, maar vermijdt de kost van de arbiter.
2. Wat is RAW-afhankelijkheid
Read After Write. Dit geeft bij pipelining aan dat een microstap een register wilt lezen,
waarnaar nog niet geschreven is. Er zit dan niets anders op dan te wachten tot dit gebeurd is.
3. Horizontale microprogrammering
-
Maximaal ongecodeerd: codeerder wordt weggelaten.
-
ieder nodig signaal moet als afzonderlijk signaal worden behandeld
is snel zoveel mogelijk signalen
-
op de chip: veel lijnen, dus veel kosten
4. Verticale microprogrammering
-
Maximaal gecodeerd: zo klein mogelijke opdrachten in zo weinig mogelijk lijnen
-
Trager maar meer ruimtebesparend dan Horizontale Microprogrammering
-
Indien men nog meer wil besparen op plaats  nanoprogrammering
5. Nanoprogrammering
Is interessant als in een programma bepaalde opdrachten regelmatig terugkeren.
6. µ-instructie
1 set van signalen die toelaten het datapad te besturen gedurende 1 cyclus
7. Program Counter
Deze bevat het adres in het programmageheugen van de volgende uit te voeren instructie.
De microprocessor plaatst een adres uit de Program counter op de adresbus. Geheugen
plaatst inhoud van het gevraagde adres op de databus. Microprocessor leest de inhoud van
de databus en steekt die data in het instructieregister.
8. Mnemonics
Mnemonics zijn de afkortingen die gebruikt worden bij het programmeren op assemblerniveau. (bv JMP, ADD, MOVE). Assembler wordt vertaald door de machine waarop je een
programma schrijft. Het voordeel van het schrijven van programma’s in Assembler is dat ze
zeer snel zijn. Er bestaat ook nog zoiets als “cross-assembler”. Dit is nodig als een programma
wordt geschreven voor een ander type toestel.
9. Wat is ‘Big-Endian’ en ‘Little-Endian’
Geheugen is een 1dimensionele matrix van elementair adresseerbare eenheden (BAU: Basi
Adressable Units) meestal 1byte. Gegevens die meer dan 1 byte in beslag nemen kan men
op 1 manier opslaan:
- Big Endian: het meest beduidende bit wordt eerst opgeslaan (IBM)
- Little Endian: het minst beduidende bit wordt eerst opgeslaan (Intel)
10. Wat is Infixnotatie/Postfixnotatie?
Heeft te maken met stack-adressering(tja...)
11. Tri-state
Busaansluitingen hebben 3 toestanden (hoog “1” , laag “0” , hoogimpedant “Z”)
De aangesloten componenten die niet bij het betrokken zijn bij het dataverkeer(= stroom)
bevinden zich in een hoogimpêdante toestand (hoge weerstand). Zo belasten ze de bus niet.
12. Opcode
Opcode is een unieke combinatie van enen en nullen die aanduidt welke operatie de
microprocessor moet uitvoeren. Het duidt aan hoe het eropvolgende adresdeel
geïnterpreteerd moet worden.
De opcode en het adresdeel zijn de 2 onderdelen van een instructie.
13. controle-eenheid
De controle-eenheid voert een micro-programma uit. Het realiseert de Von Neumann cyclus
via een oneindige lus. Het interpreteert de ISA-instructies. De controle-eenheid coördineert
zo het ophalen van instructies, wegschrijven van data, decodeert de instructies die in het
instructieregister worden geladen.
14. Statusregister
Om toe te laten beslissingen te nemen op basis van berekende resultaten, is de ALU
gekoppeld aan een statusregister (ook toestandsregister of vlaggenregister). Het is als
een verzameling van vlaggen (komt iets voor: ja of nee). De 4 meest voorkomende
vlaggen zijn:
o Z-vlag (Zero): vlaggetje wordt gezet als resultaat van een berekening in de ALU 0 is
o N-vlag (Negative): wordt gezet als de meest beduidende bit van het resultaat uit de
ALU 1 is
o C-vlag (Carry): overdracht van een bit bij som of verschil
o V-vlag (overflow): als grens van getallen wordt overschreden
That’s it voor mijn contributie. Kick ass m8s!
Bye,
Anq
Download