Didactische computer Siemens 1. Opbouw Het demonstratiemodel is uitgevoerd als eenvoudige 4 bits processor. Het is uiteraard veel eenvoudiger van opbouw dan onze huidige krachtige processoren, wat niet belet, dat de basiswerkingsprincipes dezelfde blijven. Onze huidige processoren zijn ontstaan uit een voortbouwen en verbeteren van dit basisconcept. 1.1 Bedieningspaneel Het bedieningspaneel is uitgevoerd als een blokschema. We herkennen alle belangrijke blokken alsook de data- en adresbussen van de micro-processor. De signaaltoestanden worden met gekleurde lampjes geïndiceerd. Een oplichtend rood lampje wijst op een “1 niveau” (spanning) en een gedoofd uiteraard op een “0 niveau” (geen spanning). Het gegevenstransport wordt met behulp van oranje pijlen aangeduid. Het bedieningsveld laat ons toe om de processor te laten werken met klokfrequenties gaande van stap voor stap, 0,5 Hz 2 Hz, 8 Hz tot 40.000 Hz. Siemens didactische computer 1/27 LM In vergelijking met de moderne processoren, die met frequenties boven de 3 GHz werken, is 40 KHz uiteraard zeer traag. De 40 kHz mode laat ons echter toe om de processor als een normale (trage ) computer te laten werken. Voor de studie van de werking is voornamelijk de stap voor stap mode interessant omdat deze ons toelaat de opeenvolgende bewerkingen van de processor goed te volgen. De afloop van een programma kan met behulp van de schakelaars “schritt” (stap) en “befehl” (instructie) omgeschakeld worden tussen 1 instructie per stap (1 instructie is 4 klokcycli) of één klok per stap (een stap wordt uitgevoerd bij het drukken op de schakelaar “schritt”. In het geval dat voor de mode “schritt” gekozen wordt kan men de afhandeling van een instructie volgen. Voor het afwerken van 1 instructie zijn dan 4 stappen nodig (4 klok signalen) Bij moderne processoren is het aantal kloksignalen afhankelijk van de complexiteit van de instructie. Met deze mode kan men goed aantonen dat het aantal instructies per seconde niet (altijd) gelijk is aan de klokfrequentie. Verder vinden we op het bedieningsveld de toetsen “stop” waarmee de afloop van een programma altijd kan onderbroken worden alsook de toets “rucksetzen” of reset. Hiermee wordt de processor opnieuw geïnitialiseerd en komt hij terug in zijn begintoestand. Het in- en uitvoerveld laat toe om signalen in hun binaire vorm in te voeren met schakelaars of via verbindingen op de 4 potentiaalvrije ingangen. De toestanden op de ingang worden aangeduid met 4 rode leds. Het uitvoerveld bestaat uit eveneens uit 4 rode leds die de uitvoertoestand op de onderliggende contactbussen weergeven. Het is eveneens mogelijk een invoer te geven via 2 anforderungs knoppen (anf 0 en anf 1) De Engelse term voor anforderung is interrupt. Met behulp van deze ingangen is een eenvoudige manier van interrupt (onderbreking van het lopende proces) mogelijk. 2. Programmering Het programmeren gebeurt in machine code (machine taal of assembler). Bij deze taal wordt enkel gebruik gemaakt van de interne instructies van de gebruikte processor. Een goede kennis van de processor, zowel wat betreft de instructies alsook van de beschikbare registers is nodig. Om niet in binaire vorm te moeten programmeren worden de instructies (opcodes) en de data (operands) met behulp van inplugbare modules ingevoerd. Siemens didactische computer 2/27 LM Het programmeerveld is hierdoor te vergelijken met een EPROM geheugen. Voor de diverse instructies bestaat er telkens een module met het opschrift van de desbetreffende instructie. Hetzelfde geldt voor de adressen of data (operands) Behoudens het programmeren met de modules blijft de mogelijkheid bestaan om met bit stekkers te programmeren (binair programmeren). Hiervoor, moet dan, voor elke instructie de bijbehorende binaire code opgezocht worden (zie tabel in bijlage) en deze ingeplugd worden in het programmeerveld. Er zijn 5 pinnen voor de opcode of opdracht, 5 pinnen voor de operand. He totale geheugen heeft 32 adressen (0 t/m 31), elk adres kan 10 bits bevatten. Met 5 bits voor de opcode zijn er dus 25 of 32 verschillende instructies mogelijk. Eveneens zijn er 25 of 32 verschillende operands mogelijk. Samengevat: Opcode:is de instructie (wat doe ik) Operand: is het adresloctie of gegeven (met wat doe ik de instructie of naar welke locatie verwijst de instructie) Siemens didactische computer 3/27 LM 3. Werking van een computer 3.1. Blokschema Bijna alle systemen zijn te herleiden tot onderstaand schema, ook een computer. input Verwerking output Bij de computer is de input bvb het toetsenbord, de muis, scanner, … De verwerking CVE of CPU (centrale verwerkingseenheid of central processing unit) gebeurt door de processor in samenwerking met geheugen en de periferie van de processor (chipset). De output is dan de beeldkaart, de printer, … Netwerkkaarten, modems, harde schijven, zijn zowel input als output. Als we het bovenstaande blokschema iets verder uitwerken dan komen we tot onderstaand schema. Een bus is een verzameling van draden. Zo zal bvb de databus voor het verplaatsen van een ASCII karakter in één keer 8 bits breed moeten zijn. De databus verplaatst de gegevens tussen de verschillende delen van de computer, Hoe breder de databus, hoe meer gegevens per keer kunnen verplaatst worden. De adresbus wijst aan waar de gegevens vandaan moeten komen en waar deze naar toe moeten. Hoe breder de adresbus, hoe meer geheugenlocaties kunnen aangewezen worden. De controlbus zorgt voor de juiste timing. Ze bevat ondermeer: • kloksignalen die de snelheid van bewerking aangeven • • lees/schrijf signaal ( R / W ) !zodat het RAM geheugen weet of data op de databus moet geplaatst worden of eraf gehaald worden. I/O signal dat aangeeft of het uitgestuurde adres voor het geheugen bestemd is, of voor de input/output. Siemens didactische computer 4/27 LM Samengevat: de databus is de: Wat bus de adresbus is de: Waar bus de controlbus is de: Wanneer bus 3.2. Computer architectuur De computer architectuur is de interne opbouw van de computer, welke bussen zijn er, hoe zijn ze opgebouwd, is er sprake van cache, hoe is het georganiseerd, is er een pipeline voor de instucties wordt er met een uitgebreide instructieset gewerkt (CISC of complex instruction set) of wordt er gewertkt met een snellere maar beperkte instructieset (RISC of reduced instruction set computer). Twee gekende basisstructuren zijn de Harvard- en de Von Neumann structuur. De Siemens didactische computer is opgebouwd volgens de Harvard structuur, de 80xx reeks en de Pentiums volgens de Von Neumann structuur. Een Harvard-architectuur is een ontwerp van CPU's dat, in tegenstelling tot de meer gebruikelijke Von Neumann-architectuur gescheiden bussen (en adresruimtes) heeft voor data en instructies. Dit resulteert (over het algemeen) in een snellere processor, daar het ophalen van de volgende instructie en het wegschrijven van het resultaat van de laatste instructie gelijktijdig kan gebeuren. Ook wordt vaak opslagruimte uitgespaard, daar data- en instructiegeheugens niet dezelfde woordbreedte hoeven te hebben. Het nadeel is dat sommige bewerkingen (zoals calculated jumps en pointers) onmogelijk of ingewikkelder zijn. De Harvard-architectuur wordt voornamelijk gebruikt in microcontrollers en DSP's, op "normale" processoren wordt de Von Neumann-architectuur gebruikt. Voorbeeld van de “Harvard structuur” let op de gescheiden bussen voor data en programma Siemens didactische computer 5/27 LM Voorbeeld van de “Von Neumann structuur”, data en programma maken gebruik van dezelfde databus Blokschema van de 8080 georganiseerd volgens de “Von Neumann” structuur Siemens didactische computer 6/27 LM Nogmaals het verschil in geheugenorganisatie tussen Harvard en Von Neumann Siemens didactische computer 7/27 LM Bij de Von Neumann structuur is de databus en het geheugen gemeenschappelijk voor programma en data. Net als bij de Harvard structuur haart de CPU haalt stap voor stap zijn instructies uit het geheugen. De werking is gebaseerd op het Turingprincipe, waarbij instructies een voor een opgehaald en uitgevoerd worden. Deze Cyclus wordt vaak de Von Neumann Cyclus of Von Neumann Controll Cyclus genoemd. Von Neumann Controll Cyclus Instruction Fetch Een instructie wordt als een rij bits ingelezen uit het werkgeheugen van de computer en over het algemeen gekopieerd naar het instructieregister binnen de processor. . Het aantal mogelijke instructies wordt onder andere bepaald door de breedte van het instructieregister. Instruction Decode De ingelezen instructie wordt gedecodeerd in de werkelijke processor-instructie en de eventuele parameters die aan de instructie meegegeven worden zodat de ALU of uitvoeringseenheid weet wat er moet gebeuren. Instruction Execution De gedecodeerde instructie wordt uitgevoerd. Om te bepalen welke instructie uit het werkgeheugen gelezen moet worden, is iedere processor uitgerust met een speciale teller, de instruction pointer of program counter. Deze teller bevat het geheugenadres van de instructie die dient te worden uitgelezen en wordt bij het uitvoeren van iedere instructie aangepast. Na de aanpassing wijst de teller naar de volgende instructie die uitgevoerd dient te worden. Normaal gesproken bestaat de aanpassing van de teller die de volgende op te halen instructie uit het geheugen aanwijst (adres van de instructie) uit een simpele ophoging met "de waarde van één enkele instructie". Siemens didactische computer 8/27 LM Dat wil zeggen: voor de ophoging wees de teller een instructie x aan in het geheugen. Na de ophoging wijst de teller naar de instructie die direct achter x staat (x+1) in het geheugen. Een uitzondering op deze regel vormen de sprong-instructies, waarbij de computer heel ergens anders verder gaat met uitvoeren dan waar hij gebleven was. De uitvoering hiervan bestaat vaak uit het simpelweg overschrijven van de instructieteller met geheugenadres, van de locatie waar men naar toe wil springen. Zo zal, bij een interrupt of anforderung het lopende programma onderbroken worden en naar een adres gesprongen worden dat hoort bij de interrupt. Eenmaal de onderbrekingsroutine afgehandeld is kan het programma terugkeren naar de plaats waar het onderbroken was. 3.3 Memoy mapped I/O en isolated I/O Een computer moet niet enkel instructie ophalen en data verwerken maar moet ook informatie kunnen ophalen en meedelen aan de buitenwereld. Dit gebeurt via I/O of input/output. Bij isolated I/O overlappen de adressen van input/output deze van het geheugengebied. Als de adresbus een adres genereert dan kan dit een geheugenlocatie of een I/O locatie zijn. Een aparte lijn, de I/O lijn zal dan als een soort van omschakelaar fungeren en bepalen of met het uitgestuurde adres de I/O bedoelt wordt of het geheugen. Bij memory mapped I/O worden bepaalde bepaalde geheugenlocaties opgeofferd (toegewezen) aan input of output. Een I/O apparaat wordt dan als een geheugenlocatie benaderd. Uiteraard zijn deze adressen niet meer bruikbaar voor het werkgeheugen. Isolated I/O neemt minder beslag op de beschikbare adresruimte die bepaalt wordt door het aantal adreslijnen. Bij dit systeem zijn er aparte besturingslijnen nodig. Siemens didactische computer 9/27 LM Voorbeeld van een memory mapped I/O. De I/O is een deel van het geheugengebied. In dit deel 0F80H tot 0FFH zijn geen geheugenlocaties maar enkel IO (bvb video, keyboard, printer, extern geheugen etc… Memory mapped versus isolated I/O (blauw is isolated I/O, rood is memory mapped) Bepaalde adreslocaties zijn dubbel gebruikt, dit wordt ondervangen door aparte besturingslijnen. Siemens didactische computer 10/27 LM 3.4. Timing in een computersysteem Zoals reeds eerder gezien zijn verschillende stappen van de Von Neuman Control Cycle zijn op te delen in substappen: fetch, decode, execute. Het ophalen van een waarde of instructie uit het geheugen is één deel van de control cycle, maar is terug op te splitsen in meerdere stappen. Veranderingen op data-, adres- en controlbus nemen immers tijd in beslag, denken we maar aan de rise- en fall time van signalen, toegangstijden van geheugens enzv. Bekijken we even een memory read cyclus: Bij het ophalen van een waarde uit het RAM geheugen zal eerst de gewenste locatie moeten aangewezen worden door de adresbus, als het adres stabiel is( na rise- en fall time van signalen), kan de controlbus het signaal geven aan het Ram geheugen dat het een leesbewerking is. Vervolgens kan het Ram geheugen de data ophalen en op de bus plaatsen (dit duurt even, afhankelijk van de access-time of toegangstijd van het geheugen). Als de data beschikbaar komt en stabiel is kan deze vervolgens door de processor ingelezen worden. Deze volledige read cyclus zal meerdere klok cycli duren. Voorbeeld van een memory read cyclus Siemens didactische computer 11/27 LM 1. 2. 3. 4. Haal de instructie op en plaats in het instructieregister Decodeer de instructie Voer de instructie uit Verhoog de instructieteller zodat deze naar de volgende instructie wijst Stap 1 is nog eens op te delen in de volgende substappen: Adres uitsturen leeslijn activeren data inlezen in het instructieregister Opm. Bij moderne systemen zal men door middel van pipelining deze stappen niet meer strikt na elkaar uitgevoerd worden, maar zullen deze elkaar overlappen. Een volgende instructie wordt reeds opgehaald terwijl de vorige nog gedecodeerd is. Hierdoor kan men snelheidswinst boeken. Uit bovenstaand zou je kunnen opmaken dat de computer steeds braaf zijn opdrachtjes (cyclus) afloopt Dit is echter niet altijd zo. Bepaalde I/O kan aandacht vragen via een interrupt (programma onderbreking). De normale afloopvolgorde wordt dan tijdelijk onderbroken. Het programma springt even naar een ander adres (jump) om het nodige te doen (een programma afwerken dat bij de interrupt hoort). Is de interrupt afgehandeld, dan keert de computer terug naar waar hij net voor de interrupt mee bezig was. Vergelijk met: je bent bezig met een taak; de bel gaat. Je laat je taak even liggen en springt naar het subprogramma telefoongesprek voeren (Jump). Eens je klaar bent met het subprogramma telefoongesprek voeren keer je terug naar je hoofdprogramma dat je onderbroken had en doe je verder op het punt waar je gestopt was (return). 3.5 Bevragen van I/O, interrupt of polling Wat bij het veranderen aan een ingang? Nemen we bvb het indrukken van een toets op een toetsenbord. Het computerprogramma moet dit ”merken” en het nodige doen voor de verwerking. Om te reageren op I/O zijn er twee mogelijkheden: interrupt en polling. Het hoofdprogramma kan met zeer grote regelmaat kijken naar de input om te zien of er iets moet gebeuren. Dit noemt men polling. Het hoofdprogramma (de cpu) wordt via een apart signaal “de interrupt” ervan op de hoogte gebracht dat er een input aandacht nodig heeft, dit is interrupt. Beide systemen hebben hun voor- en nadelen. Siemens didactische computer 12/27 LM 3.5.1 polling We kunnen in de instructielijst de nodige instructies opnemen zodat de computer bij het doorlopen van zijn instructielijst steeds kijkt naar de Input of er geen toets gedrukt is. Het voordeel is, dat de computer steeds braaf in dezelfde volgorde kan werken en dat er geen extra lijnen (hardware) nodig is om de CPU te onderbreken. Het nadeel is dat er vaak voor niets naar de input gekeken wordt. Een programma wordt som miljoenen keer per seconde doorlopen, een toets wordt misschien maar eens om de zoveel seconden ingedrukt. Bovendien kan het gebeuren dat, als het programma wat langer is, en de Input van zeer korte duur is, de computer net bezig is met het ander deel van het programma en de verandering aan de ingang mist. 3.5.2 Interrupt Een andere mogelijkheid is dat de input, bvb het toetsenbord, een aparte lijn krijgt om te melden aan de processor of er iets veranderd is. Wordt er een toets ingedrukt dan wordt op de processor een aansluitklem geactiveerd waardoor deze weet dat hij aandacht moet besteden aan de input. Voor de verschillende I/O zijn er dan andere klemmen nodig, dus meer harware dan bij polling. De interrupt waarschuwt de CPU, deze onderbreekt ogenblikkelijk de lopende taken, bewaart de lopende gegevens (inhoud van bvb accumulator en status-flag register) in een tijdelijk geheugen of stack en springt (jump) naar een andere geheugenlocatie waar het deelprogramma (interrupt routine) staat om de waarde van de input op te halen. Is de CPU klaar met het afhandelen van de subroutine, dan kan deze verder doen waarmee hij voordien bezig was. Hij keert terug naar de vorige adreslocatie (deze van bij het optreden van de interrupt en telt er één bij) De bewaarde gegevens worden van de stack gehaald en de processor doet vrolijk verder alsof er niets gebeurd is. Het voordeel van dit systeem is dat de input niet nodeloos bevraagd wordt, het nadeel is dat door het onderbreken van de normale programmasequentie op eender welk moment het programmeren iets moeilijker wordt. De stack heeft een LIFO structuur (Last In First Out) Vergelijk dit met een bordenwarmer in het restaurant. Het bord dat er het laatst in geplaatst wordt wordt er het eerst weer afgehaald. De geheugenlocaties in de stack worden bijgehouden door een register in de CPU, de stack Pointer. Het tegenovergestelde van een LIFO is een FIFO geheugen (First In First Out). Het terughalen van inhouden van de stack moet precies in de omgekeerde volgorde gebeuren als dit erop geplaatst is, anders hebben we niet dezelfde situatie in de CPU na de interrupt als voordien. De moderne PC werkt met meerdere interrupts. Omdat deze gelijktijdig kunnen optreden hebben deze elk hun eigen prioriteit. Siemens didactische computer 13/27 LM Uit: http://www.necel.com/en/faq/f_tech.html Zie ook: http://kernel.kaist.ac.kr/~jinsoo/course/cs330/slides/io.pdf Siemens didactische computer 14/27 LM 4 Beschrijving van de blokken van de didactische computer 4.1 Blokschema 4.2 CPU De CPU (central processing unit) of centrale verwerkingseenheid bestaat uit een aantal subdelen. Siemens didactische computer 15/27 LM Ram, ROM en I/O zijn niet ondergebracht in de CPU van een microprocessor. Bij een microcontroller is dit wel het geval. Een microntroller is dus een volledige computer in één chip. De Siemens computer is dus geen microntroller. 4.2.1 Instructie-teller De instructieteller wordt bij ieder normale instructie op het einde (bij de vierde klok) met één verhoogd, waardoor de volgende instructie aangewezen wordt. Bij spronginstructies wordt de instructieteller na de derde klok (na het decoderen van de spronginstructie) gevuld met de waarde van het sprongadres (operand van de spronginstructie). 4.2.2 Instructieregister Het instructieregister (9 bit) slaat de actuele (huidige) instructie op. Met behulp van de 9 Leds wordt de binaire code van de huidig instructie + operand weergegeven. Instructieregister en instructieteller maken de automatische afloop van programma’s mogelijk. Bij spronginstructies kan de waarde van het sprongadres vanuit de instructieregister doorgegeven worden aan de instructieteller. In dit geval wordt het programma niet meer sequentieel doorlopen. Siemens didactische computer 16/27 LM 4.2.3 Rekeneenheid (ALU) In de rekeneenheid of ALU (arithmetic and logic unit) wordt de 4 bit brede data parallel (alle vier tegelijkertijd) verwerkt, naargelang de gegeven instructie. In dit didactisch model is het aantal bevelen (instructies) beperkt ( zie instructieset in bijlage). De instructieset bestaat uit 4 transport (transfer) instructies, 4 spronginstructies, 2 rekenkundige-, 2 logische- en 2 schuif- of rotatie-instructies. Bij een deel van de instructies is indirecte adressering mogelijk. De uitgevoerde instructie wordt aangeduid met behulp van oranje lampjes in het blok rechenwerk (ALU) Omwille van de duidelijkheid worden de instructies, die in principe geen gebruik maken van de ALU (zoals BVB de sprong instructie die direct vanuit het instructieregister naar het adresregister doorgegeven wordt ), ook aangegeven met de lampjes in het ALU blok. De voorwaardelijke sprongen SAM, SGN, en SUL maken uiteraard wel gebruik van de ALU daar de sprong afhankelijk is van het resultaat van de ALU. http://en.wikipedia.org/wiki/Arithmetic_logic_unit 4.2.4 Accumulator De accumulator is direct toegewezen aan de ALU. Het dient als bewerking- en output register. Vóór de bewerking bevat het één van de operanden, na de bewerking wordt deze operand overschreven door het resultaat. Indien er twee operanden met elkaar moeten bewerkt worden, dan zal men eerst één operand in de accu moeten plaatsen, bvb door de instructie “LAD w1” (de inhoud van geheugenlocatie w1 wordt naar de accu gekopieerd) . De tweede operand wordt nu verwerkt met deze in de accu door bvb de opdracht “ADD w2”. De inhoud van geheugenlocatie w2 wordt hierdoor opgeteld bij de inhoud van de accu (dit was de inhoud van locatie w1). De som (inhoud w1 + inhoud w2 overschrijft de accu). Normaal gezien wordt dan de inhoud van de accumulator terug bewaard in het geheugen en daarna evt naar buiten gebracht zodat het resultaat meegedeeld wordt (bvb SPE en AUS w). Siemens didactische computer 17/27 LM 4.2.5 uberlauf register of overflow status flag Dit is een hulpregister dat aangeeft dat bij een bewerking de uitkomst groter is dan de beschikbare breedte in de accu. Het bereik gaat in dit geval, daar de computer werkt met 2 complement getallen en slechts 4 bits gebruikt, van -8 t/m +7. Het overflow status flag register is niet te verwarren met het carry status flag register (zie ook binair rekenen met twee-comlement getallen). Bij een normale computer zijn er veel meer status flag registers. (zie beschrijving andere processoren). Het status flag regsiter is dus een geheugen dat resultaten bijhoudt (flags of vlaggen) over de resultaten van bewerkingen in de ALU. Zo zal er bij de meeste computers een Zero status flag zijn. Dit bitje wordt geset (één gemaakt) als het resultaat van een bewerking in de ALU 0 is. Door middel van bevragen van dit bitje kan er beslist worden om bvb het lopende programma te onderbreken als het resultaat 0 is. 4.3 Geheugen Aangezien de Siemens didactische computer werkt volgens de Harvard structuur is er programmageheugen en data geheugen fysisch apart uitgevoerd. Hierdoor kan de databus voor programma en data verschillend van breedte zijn. 4.3.1 Programmageheugen In dit geheugen, dat zoals reeds eerder aangehaald, te vergelijken is met een PROM geheugen, worden de instructies gestockeerd. Het is inderdaad herprogrammeerbaar door het plaatsen van modules. Het is niet vluchtig (de modules zijn hardware bedraad, en doen niets anders dan een nul of een 1 niveau op de respectievelijke stekkerbussen brengen) Het actuele adres wordt d.m.v. een oranje lampje weergeven naast de actieve geheugenplaats. 4.3.2 data-geheugen Het datageheugen van onze didactische computer is 4 bits breed en heeft 8 adreslocaties. De adresbus moet bijgevolg 3 draden hebben, de databus 4. Elke cel (is opslaglocatie voor 1 bit) is uitgevoerd als een flip-flop. Voor één geheugenadres zijn dus 4 flip-flops nodig. Bij de pc is het hoofdgeheugen niet uigevoerd met flip-flops, maar door condensator geheugentjes (dynamisch geheugen). Enkel het cache geheugen is met flip-flops opgebouwd (statisch geheugen). Beide types geheugens zijn vluchtig, dit wil zeggen, ze verliezen hun info bij spanningsuitval. Dynamisch geheugen is goedkoper, en kleiner dan Statisch geheugen. Nadeel is dat ze trager zijn en dat ze, om het weglekken van de lading in de condensator te compenseren, ze Siemens didactische computer 18/27 LM regelmatig moeten gelezen en herschreven worden. In ons didactisch model is het RAM geheugen uitgevoerd als 8 nibble’s (8 x 4 bit). Via LEDS kan uitgelezen worden wat de inhoud van een bepaald RAM adres is 4.4 In- en uitvoerveld (I/O of input/output) Via de in- en uitvoerregisters kan met behulp van de instructies EIN en AUS informatie in- en uitgevoerd worden van en naar de computer. De informatie kan ingebracht worden via 4 schakelaars of 4 ingangsbussen (t.o.v. van massa). De informatie moet zolang aanwezig zijn totdat ze opgehaald is. Behalve de gewone ingangen is er ook een soort interruptsturing mogelijk via de knoppen/ingangen ANF 0 en ANF 1. Impulsen op deze ingangen worden bewaard (onthouden). ANF O heeft voorrang op ANF 1 (bij gelijktijdig activeren) ANF O veroorzaakt een programmastart vanaf adres 0, waar ANF 1 een programmastart veroorzaakt vanaf adres 1. Dit is niet te vergelijken met volwaardige computer daar hier geen gebruik gemaakt wordt van een stack en een stack pointer (zie beschrijving 8080). Het laat enkel een zeer rudimentaire vorm van interrupts (programmaonderbreking) toe. Siemens didactische computer 19/27 LM 5. Instructielijst didactische computer Siemens Instructiegroep instructie (Mnemonic) Omschrijving Verplaats (Transfer) LAD w Laden van de accummulator Laad de accumulator met de inhoud van RAM geheugenplaats met adres w SPE w Speichern De inhoud van de accumulator wordt bewaard in de RAM geheugenplaats met adres w EIN w Eingabe De inhoud van het invoerveld wordt in de accumulator en in het RAM geheugen met adres w bewaard AUS w De inhoud van de RAM geheugenlocatie met adres w wordt uitgevoerd naar het uitvoer register ADD w Addition De inhoud van de RAM geheugenplaats met adres w wordt opgeteld bij de inhoud van de accumulator. (! Let op: het resultaat van deze bewerking overschrijft de vorige inhoud) KPL Komplement nemen De inhoud van de accumulator wordt gecomplementeerd (twee complement) UND w Und De inhoud van de accumulator wordt met de inhoud van RAM adres w volgens de AND functie verwerkt ODR w ODER De inhoud van de accumulator wordt met de inhoud van RAM adres w volgens de OR functie verwerkt VLL Verschiebe logisch links De inhoud van de accumulator wordt met 1 bit naar links geschoven. Aan de rechterkant wordt bijgevuld met nullen. Rekenkundige (arithmetic) Logische (logic) Verschuiving (rotate) Siemens didactische computer 20/27 LM Instructiegroep Sprong (jump) Organisatorische instructie (Mnemonic) Omschrijving VLR Verschiebe logisch rechts De inhoud van de accumulator wordt met 1 bit naar rechts geschoven. Aan de linkerkant wordt bijgevuld met nullen. SPR a Sprung Er wordt gesprongen naar het programma met adres a. Het programma wordt van hieruit vervolgd. SGN a Springe falls accu gleich nul Springt naar het adres a indien de inhoud van de accumulator gelijk is aan nul. Indien de inhoud van de accu verschillend is van nul, wordt het programma gewoon op het volgende adres verder gezet. SAM a Springe falls accu minus Springt naar adres a indien het msb (most significant bit of meest linkse bit) van de accumulator 1 is. Is het msb = 0 wordt het programma gewoon vervolgd. SUL a Springe falls uberlauf Als het overflow register geset is (1 is) wordt naar adres a gesprongen. In het andere geval wordt het programma gewoon vervolgd. STP Stop Het programma wordt gestopt. Siemens didactische computer 21/27 LM Opcodes (instructies) Mnemonic binaire code LAD SPE EIN AUS SPR SGN SUL SAM ADD KPL UND ODR VLL VLR STP 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 0000 Siemens didactische computer 22/27 LM Adrescodes Decimaal binair omschrijving 0 1 2 3 4 5 6 7 000 001 010 011 100 101 110 111 Adres van de operanden (directe adressering) (0) (1) (2) (3) (4) (5) (6) (7) 10000 10001 10010 10011 10100 10101 10110 10111 Indirect adres van de operanden (indirecte adressering) N.B. Bij indirecte adressering wordt niet het directe adres meegeven maar de geheugenlocatie van de plaats waar zich het adres bevindt. Voorbeeld. Bij SPE 4 wordt naar adres 4 gesprongen. (directe adressering) BIJ SPE (4) wordt naar het adres gesprongen dat bewaard is in geheugenlocatie 4 (indirecte adressering). Bij indirecte adressering kan het sprongadres veranderen tijdens de uitvoer van het programma, waar dit bij directe adressering vastligt bij het programmeren zelf. Siemens didactische computer 23/27 LM Evolutie van de instructie-uitvoering per klokcyclus Klok 1 Actie Inlezen van de instructie. De instructie aangewezen door het instructieregister wordt ingelezen in het instructie register. In de praktijk zal dit nog eens onderverdeeld zijn in verschillende deelfasen (Adres uitsturen , read lijn laag maken, inhoud van de aangewezen cel inlezen) 2 Instructie decoderen De inhoud van het instructie register word gesplitst in opcode en operand (instructie gedeelte en adres gedeelte) In dit gedeelte ligt het verschil tussen een RISC en een CISC processor bij de hedendaagse PC’s 3 Instructie uitvoeren De inhoud van de aangewezen RAM adres (operand van de instructie) wordt verwerkt met de inhoud van de accu volgen de instructie gegeven in de opcode. Het resultaat komt in het hulpregister. 4 Inhoud hulpregister naar accu overbrengen Het resultaat wordt vanuit het hulpregister naar de accumulator gebracht. Hierbij wordt één van de operanden overschreven. De instructieteller wordt met één verhoogd. (Dit geldt niet bij sprong instructies) Bronnen Handleiding Siemens didactische computer Wikipedia Computermuseum Dirksen, microprocessoren Siemens didactische computer 24/27 LM Opgaven Opgave 1 Schrijf een programma om twee getallen in te lezen van het invoerveld. De twee getallen moeten opgeslagen worden op adres 0 en adres 1. Tel vervolgens de twee getallen samen en plaats het resultaat in adres 2. Voer het resultaat eveneens uit naar het uitvoerveld. Gebruik onderstaande lay-out voor uw oplossing. Nr opcode (mnemonic) operand beschrijving 1 EIN 0 lees het getal aan de ingang en plaats in adres 0 2 ... ... Plaats de modules in de simulator. Test eerst in de mode befehl (instructie per instructie) en vervolgens in de mode schritt (klok per klok). Let in de mode klok goed op de verschillende tussenstappen die nodig zijn om 1 instructie af te handelen) Opgave 2 Pas het programma van opgave 1 aan zodat het steeds herhaald word totdat één van beide operanden een 0 is. Is aan deze voorwaarde voldaan dan moet het programma stoppen. Siemens didactische computer 25/27 LM Opgave 3 Welk probleem is er met bovenstaand programma als we dit continu laten lopen, op hogere snelheid? Hoe kunnen we dit oplossen? Opgave4 schrijf een programma dat de and functie uitvoert op input bit0 met input bit 1 en de OR functie op input bit 2 en input bit 3. Het resultaat van de And moet uitgevoerd worden op uitvoer bit 0 en het resultaat van de OR op uitvoer bit1. Eens dit werkt probeer je het programma te vervolledigen zodat Bit 2 en bit 3 van de uitvoer steeds 0 zijn. Herhalingsvragen 1. Wat is de Von Neuman Controll Cycle? 2. Teken het schema van een computersysteem, wat is het doel van de verschillende bussen? 3. Wat is het nut van een bredere databus? 4. Wat is het nut van een bredere adresbus ?Heeft dit een directe invloed op de snelheid van een computer? 5. Wat is het verschil tussen een RISC en een CISC computer. Welke zijn de voor- en nadelen ten opzichte van elkaar? 6. Wat is de taak van de controlebus 7. Wat is het verschil tussen de Harvard en de Von Neumann structuur? 8. Wat bedoelt men met Pipelining bij een computerarchitectuur? Waarom past men dit toe? 9. Wat is een DSP? Waar worden deze toegepast? 10. Teken de afloop van een memory read Cyclus 11. Wat is memory-mapped I/O? Welk voordeel heeft dit, welk nadeel? 12. Wat is Isolated I/O? Welk voordeel heeft dit, welk nadeel? 13. Leg het verschil uit tussen polling en interrupt. Wat zijn de voor- en nadelen? 14. Wat is een interrupt? Kan bij de Siemens computer het programma steeds hervat Siemens didactische computer 26/27 LM worden op dezelfde plaats als het onderbroken is op het ogenblik van de interrupt? 15. Ga bij uw PC naar apparaatbeheer, kies in het menu beeld “bronnen op type” Bekijk: IRQ, geheugen, I/O en DMA. Zoek op wat DMA is. 16. Wat is de stack? Wat is de stack Pointer? 17. Wat is het verschil tussen een LIFO en een FIFO structuur? 18. Waarom heeft de stack een LIFO structuur? 19. Wat is de functie van de stap voor stap mode. Waarvoor kan dit interessant zijn, zelfs bij een moderne computer? 20. Wat is het verschil tussen de mode schritt en befehl? 21. Wat kunnen we hieruit afleiden i.v.m. de klokfrequentie en het afhandelen van de instructies. 22. Zoek in de instructieset van de 80386 op hoeveel klokcycli de volgende instructies in beslag nemen. Bereken de uitvoering van de totale tijd nodig om de instructie uit te voeren indien we uitgaan van een 40 MHz processor, de instructie is reeds in de registers van de processor aanwezig en moet niet meer opgehaald worden uit het geheugen. a. MOV r1,r2 b. CPL AX 23. Wat is het verschil tussen een microcontroller en een microcomputer. 24. Zoek op het internet een toepassing voor de PIC microntroller van Microchip. 25. Wat wordt bedoeld met programmeren in machinetaal of assembler? Zoek een voorbeeld van een korte Assembler routine voor de PIC. Zoek eveneens een voorbeeld van een hogere programmeertaal. 26. Geef 2 grote voordelen van assembler ten opzichte van een hogere programmeertaal, en één nadeel. 27. Welke is de functie van de instructieteller? 28. Welke is de functie van het instructieregister? 29. Wat gebeurt er in de ALU? 30. Wat is de accumulator? Siemens didactische computer 27/27 LM