Siemens didactische computer

advertisement
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
Download