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 stroomuitvalkop 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