460 likes | 650 Views
SWI Inleiding Informatica. Brookshear hoofdstuk 2 Data Manipulatie. Overzicht college 3. 2.1 Central processing unit (CPU) 2.2 Stored-program concept 2.3 Progamma executie NIET: 2.4 Rekenkundige/logische instructies 2.5 Communicatie met randapparatuur NIET: 2.6 Andere architecturen.
E N D
SWI Inleiding Informatica Brookshear hoofdstuk 2 Data Manipulatie Basiscursus Informatica 98/99
Overzicht college 3 • 2.1 Central processing unit (CPU) • 2.2 Stored-program concept • 2.3 Progamma executie • NIET: 2.4 Rekenkundige/logische instructies • 2.5 Communicatie met randapparatuur • NIET: 2.6 Andere architecturen Basiscursus Informatica 98/99
Overzicht college 3 • 2.1 Central processing unit (CPU) • 2.2 Stored-program concept • 2.3 Progamma executie • 2.5 Communicatie met randapparatuur Basiscursus Informatica 98/99
Eenvoudig CPU model CPU Bus Arithmetic/ Logic Unit Control Unit Main memory Registers Basiscursus Informatica 98/99
CPU • Cruciaal onderdeel van computer dat bewerkingen uitvoert: • 1. controle eenheid: coördinatie van uitvoering instructies • 2. ALU = rekenkundige/logischeeenheid: voert instructies uit • 3. registers: zeer tijdelijke opslag in CPU voor data en instructies Basiscursus Informatica 98/99
Bus en Cache • Bus: snelle verbinding tussen CPU en werkgeheugen • Cache: hulpgeheugen van CPU, vormt snelle buffer tussen CPU en werkgeheugen • voordeel: snelle toegang voor CPU • voordeel: ontlasting van de bus Basiscursus Informatica 98/99
computer memory CPU main memory mass storage Controlunit Arithmetic/ Logic Unit registers cache Soorten computer geheugen general special purpose Basiscursus Informatica 98/99
Registers • Algemene registers (general purpose): bevatten doorgaande invoer en uitvoer naar ALU • Speciale registers: programma-teller en instructie register (komt later in par 2.3) Basiscursus Informatica 98/99
Taken controle eenheid • Verplaatst data van werkgeheugen/cache naar de algemene registers van CPU • Geeft door aan ALU in welke registers de data zitten • Activeert ALU • Geeft door aan ALU in welk register resultaat gezet moet worden Basiscursus Informatica 98/99
Bereken: x + y = z • Stap 1. Haal waarde x op, stop in register 1 • Stap 2. Haal waarde y op, stop in register 2 • Stap 3. Activeer optel-circuit (ALU) met inhoud van regs 1, 2 en reg 3 voor resultaat • Stap 4. Zet inhoud register 3 in werkgeheugen • Stap 5. Stop Basiscursus Informatica 98/99
Soorten machine-instructies • data transfer instructies (LOAD, STORE) (stap 1, 2, 4) NB. copy, geen move • rekenkundige/logische instructies (AND, OR, XOR, SHIFT, ROTATE) (stap 3) • controle instructies (STOP, JUMP) (stap 5) Basiscursus Informatica 98/99
Data transfer instructies LOAD CPU Bus Arithmetic/ Logic unit Control Unit Main memory Registers STORE Basiscursus Informatica 98/99
Voorbeeld JUMP • Stap 1 LOAD register 1 met waarde uit geheugen • Stap 2 LOAD register 2 met andere waarde geheugen • Stap 3 JUMP, als 2e waarde = nul, naar stap 6 • Stap 4 ALU: deel inhoud 1e register door inhoud 2e register stop resultaat in 3e register • Stap 5 STORE inhoud 3e register in geheugen • Stap 6 STOP Basiscursus Informatica 98/99
JUMP • Unconditional JUMP • spring naar stap 6 • Conditional JUMP • als waarde = 9, dan spring naar stap 6 • Als 0 = 0, dan spring naar stap 6 Basiscursus Informatica 98/99
Overzicht college 3 • 2.1 Central processing unit (CPU) • 2.2 Stored-program concept • 2.3 Progamma executie • 2.5 Communicatie met randapparatuur Basiscursus Informatica 98/99
‘Stored-program concept’ • Eerste computers: eenvoudig programma ‘hard-wired’, alleen data gecodeerd • Analogie: wasmachine met vaste was-programma’s, de was is variabel • Later: programma ook gecodeerd, gebruikt vaste, elementaire instructie-set van CPU • Programma en data zitten in hetzelfde geheugen Basiscursus Informatica 98/99
Voorbeeld machine (Appendix C) • 16 algemene registers van 8 bits (0 .. F) • 2 special purpose registers • programma teller (1 byte) • instructie register (2 bytes) • 256 geheugencellen van 8 bits (00 .. FF) • machine instructie is 16 bits (2 bytes): • 4 bits op-code, 12 bits operand Basiscursus Informatica 98/99
Hexidecimaal Bit patroon Hexidecimaal 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 Bit patroon Hexidecimaal 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F Machine-instructie = 16 bits = 2 bytes = 4 hex codes Basiscursus Informatica 98/99
Voorbeeld architectuur Main memory CPU Control unit Registers Adres Cel 0 00 Program counter 1 01 2 02 Bus Arithmetic/Logic unit 3 03 Instruction register .... .... .... .... F FF Basiscursus Informatica 98/99
Machine-instructie • op-code veld • code voor de basisoperaties (STORE, AND, ADD, JUMP, HALT, etc.) • operand veld • gedetailleerde info over operatie (registers, geheugen-cellen in operatie 4 hexidecimale cijfers (4 x 4 = 16 bits = 2 bytes) Op-code Operand Basiscursus Informatica 98/99
Voorbeeld machinetaal 1RXY LOAD reg R met inhoud van geheugen cel XY bv: 14A3 Stop inhoud van cel A3 in reg 4 bv: 1347 Stop inhoud van cel 47 in reg 3 2RXY LOAD reg R met bitstring XY bv: 20A3 Stop bitstring “A3” in reg 4 bv: 2347 Stop bitstring “47” in reg 3 3RXY STORE inhoud van reg R in geheug cel met adres XY bv: 35B1 Stop inhoud van reg 5 in geheug cel B1 40RS MOVE bitstring in reg R naar reg S bv: 40A4 Copieer inhoud reg A naar reg 4 5RST ADD bitstrings in reg S en T en stop res in reg R Basiscursus Informatica 98/99
Machinetaal (vervolg) 6RST ADD (breuken) 7RST OR 8RST AND 9RST XOR AR0X ROTATE BRXY JUMP naar instructie in geheug cel met adres XY als bitstring in reg R gelijk is aan bitstring in reg 0. Anders ga door met volgende instructie B43C Als inhoud reg 4 = reg 0, ga naar geheugencel 3C COOO HALT Basiscursus Informatica 98/99
Vragen • Waarom is B03C een onvoorwaardelijke sprong naar de instructie in cel 3C? • Hoeveel instructies kunnen in deze voorbeeld-taal nog worden toegevoegd? • Hoe kent de machine het verschil tussen data en instructies? Basiscursus Informatica 98/99
Nogmaals: optellen • Stap 1. Haal 1ste waarde op, stop in register X • Stap 2. Haal 2de waarde op, stop in register Y • Stap 3. Activeer optel-circuit (rek/log) met inhoud van regs X, Y en reg Z voor resultaat • Stap 4. Sla resultaat op in Z • Stap 5. Stop Basiscursus Informatica 98/99
Stap 1. Haal waarde op uit cel 6C, stop in reg 5 Stap 2. Haal waarde op uit cel 6D, stop in reg 6 Stap 3. Tel op inhoud reg 5 en 6, stop in reg 0 Stap 4. Sla resultaat cel 6E Stap 5. Stop Stap 1. 156C Stap 2. 166D Stap 3. 5056 Stap 4. 306E Stap 5. C000 Voorbeeld programma Basiscursus Informatica 98/99
Overzicht college 3 • 2.1 Central processing unit (CPU) • 2.2 Stored-program concept • 2.3 Progamma executie • 2.5 Communicatie met randapparatuur Basiscursus Informatica 98/99
Speciale registers • Programma teller • geheugenadres van volgende instructie • rol: bijhouden waar programma is • Instructie register • bevat de huidige instructie • Machine cyclus van de controle eenheid: • fetch, decode, execute Basiscursus Informatica 98/99
Teller and instructie register Main memory CPU Control unit Registers Adres Cel 0 00 Program counter 1 01 2 02 Bus Arithmetic/Logic unit 3 03 Instruction register .... .... .... .... F FF Basiscursus Informatica 98/99
Machine cyclus • Fetch • haal volgende instructie op (raadpleeg teller) • stop in instructie-register • update teller naar volgende instructie • Decode • analyseer op-code en operand velden • Execute • voer instructie uit • ga naar fetch, tenzij C000 Basiscursus Informatica 98/99
JUMP instructie • B258: als inhoud reg2=reg0, spring naar instructie in cel 58 • Wat er gebeurt in de “executie”: • als inhoud reg2=reg0, stop adres “cel 58” in programma teller • overschrijf oude waarde die eerder in cyclus was opgehaald • Volgende “fetch” heeft nieuw adres (van JUMP) Basiscursus Informatica 98/99
Stap 1. Haal waarde op uit cel 6C, stop in reg 5 Stap 2. Haal waarde op uit cel 6D, stop in reg 6 Stap 3. Tel op inhoud reg 5 en 6, stop in reg 0 Stap 4. Sla resultaat cel 6E Stap 5. Stop Stap 1. 156C Stap 2. 166D Stap 3. 5056 Stap 4. 306E Stap 5. C000 Voorbeeld executie Basiscursus Informatica 98/99
Programma in geheugen • Stap 1. 156C • Stap 2. 166D • Stap 3. 5056 • Stap 4. 306E • Stap 5. C000 AdresInhoud celcel A0 15 A1 6C A2 16 A3 6D A4 50 A5 56 A6 30 A7 6E A8 C0 A9 00 Basiscursus Informatica 98/99
Voorbeeld executie 0 • Programma in centraal geheugen • begin op A0 • opeenvolgende adressen • 1 cel=1 byte, 1 instructie =2bytes (1 instr in 2 cel) • Teller telkens 2 adressen ophogen (A0, A2, A4, ...) AdresInhoud celcel A0 15 A1 6C A2 16 A3 6D A4 50 A5 56 A6 30 A7 6E A8 C0 A9 00 Basiscursus Informatica 98/99
Voorbeeld executie 1 • Begin: teller op A0 • Fetch: 156C + teller A2 • Decode: LOAD • Execute • Na eerste cyclus: • teller: A2 • Instructie reg: 156C AdresInhoud celcel A0 15 A1 6C A2 16 A3 6D A4 50 A5 56 A6 30 A7 6E A8 C0 A9 00 Basiscursus Informatica 98/99
Voorbeeld executie 2 • Teller op A2 • Fetch: 166D + teller A4 • Decode: LOAD • Execute • Na tweede cyclus: • teller: A4 • Instructie reg: 166D AdresInhoud celcel A0 15 A1 6C A2 16 A3 6D A4 50 A5 56 A6 30 A7 6E A8 C0 A9 00 Basiscursus Informatica 98/99
Voorbeeld executie 3 • Teller op A4 • Fetch: 5056 + teller A6 • Decode: ADD • Execute • Na derde cyclus: • teller: A6 • Instructie reg: 5056 AdresInhoud celcel A0 15 A1 6C A2 16 A3 6D A4 50 A5 56 A6 30 A7 6E A8 C0 A9 00 Basiscursus Informatica 98/99
Voorbeeld executie 4 • Teller op A6 • Fetch: 306E + teller A8 • Decode: STORE • Execute • Na vierde cyclus: • teller: A8 • Instructie reg: 306E AdresInhoud celcel A0 15 A1 6C A2 16 A3 6D A4 50 A5 56 A6 30 A7 6E A8 C0 A9 00 Basiscursus Informatica 98/99
Voorbeeld executie 5 • Teller op A8 • Fetch: C000 + teller AA • Decode: HALT • Execute • Na vijfde cyclus: • teller: AA • programma is klaar AdresInhoud celcel A0 15 A1 6C A2 16 A3 6D A4 50 A5 56 A6 30 A7 6E A8 C0 A9 00 AA Basiscursus Informatica 98/99
Programma versus Data • Beide worden bewaard in centraal geheugen • Beide bestaan uit bitstrings • Machine weet niet of bits programma of data is • Wat gebeurt er als de teller een geheugenadres aangeeft met gewone data? Basiscursus Informatica 98/99
Overzicht college 3 • 2.1 Central processing unit (CPU) • 2.2 Stored-program concept • 2.3 Progamma executie • 2.5 Communicatie met randapparatuur Basiscursus Informatica 98/99
Randapparatuur • Printer • Modem • Extra disk • Soundblaster • Zipdrive • etc.
Randapparaat Randapparaat Controller Controller CPU Main memory Bus verbindingen Bus Elk randapparaat heeft eigen controler Basiscursus Informatica 98/99
Controller • Insteekmodule of vast op moederbord, elk ‘device’ heeft eigen controller • Kleine computertjes op zich die een randapparaat aansturen • Kan soms direct werkgeheugen lezen door bus --> Direct Memory Access (DMA) • bus competitie: Von Neuman bottleneck • CPU kan controler vragen data te lezen en op bepaald adres tijdelijk op te slaan (buffer) Basiscursus Informatica 98/99
Communicatie: contr-CPU • Analoog aan CPU-werkgeheugen • Memory-mapped: controller is “onderdeel” van werkgeheugen (1 adres-systeem) • Niet memory-mapped: aparte adressering • I/O adres (bv. D82A ipv 382A) • Poort: representeert de toegang tot het ‘geheugengebied’ van een controller Basiscursus Informatica 98/99
2-weg communicatie • Controller communiceert met CPU, maar ook met randapparatuur • Controller stuurt randapparatuur aan, maar krijgt ook ‘status’ informatie terug, bv ‘ready’ signaal, ‘out-of-paper’, ‘cannot read’, etc. • Speciaal bitpatroon van het randapparaat: status word, bepaalt mede de normale verwerking van een programma Basiscursus Informatica 98/99
Parallelle/seriële comm. • Parallel: bits in string worden parallel verstuurd • elke bit op een apart kanaal • snel, maar vereist moderne technologie • Serieel: bit voor bit op zelfde kanaal • kan met oudere tech., bv. telefoonlijn/modem • Snelheid in bps (bits per second) • glasvezel: > 100 Mbps en meer Basiscursus Informatica 98/99