Computerarchitectuur en Netwerken –1– Computerarchitectuur Lennart Herlaar 8 september 2014 Opbouw van het vak Eerst (6 keer) over de opbouw van computer en operating system Collegedictaat Systeemarchitectuur Eindigt met Internet programma’s (WWW server) Daarna gaan we kijken hoe het Internet in elkaar zit Boek Kurose en Ross: Computer Networking (zesde editie) Lennart Herlaar Computerarchitectuur en Netwerken – 1 1 Werkcollege Elke week één keer Elke keer 4 inleveropgaven maken. Indien nodig thuis afmaken en volgende week inleveren op het werkcollege groep 1-4: woensdagochtend 9-11 (Algemeen, Gametech) groep 5: woensdagochtend 11-13 (TWIN, IKU, extern, overig) Start woensdag a.s. Werkgroepjes van 5 personen schrijven een paper Indeling in werkgroepjes tijdens college en werkcolleges Reserveren onderwerpen later via de website Lennart Herlaar Computerarchitectuur en Netwerken – 1 2 Inhoud dit college Inleiding netwerken ⇐= architectuur communicatie Opbouw computer geheugen CPU randapparatuur – input en output (I/O) Lennart Herlaar Computerarchitectuur en Netwerken – 1 3 Inleiding Waarom dit vak? Netwerken zijn belangrijk in elke organisatie/elk bedrijf en ook voor persoonlijk gebruik Het Internet is één van de belangrijkste technologische ontwikkelingen van de afgelopen en de komende 10 jaar Wat moet je leren? Weten wat haalbaar is en waarom (niet) De relatie van Internet met de rest van de computer en de software Daarom ook de structuur en opbouw van computers en operating systems Berekeningen o.a. over de capaciteit van een netwerk Protocollen (de manier waarop computers met elkaar informatie uitwisselen) Lennart Herlaar Computerarchitectuur en Netwerken – 1 4 Wat we niet doen Computers uit elkaar slopen Netwerken bouwen Netwerken hacken Internetprogramma’s schrijven Leren wat je in Windows moet aanklikken om een netwerk aan de praat te krijgen Lennart Herlaar Computerarchitectuur en Netwerken – 1 5 Computernetwerken Computer Netwerk = Verzameling computers, die onderling verbonden zijn met behulp van communicatiemedia, die informatie kunnen uitwisselen om gezamenlijke taken uit te voeren. Computers: ruim opvatten – vaak hosts genoemd PC’s Printers GSM’s Koffiezetapparaat met Internet aansluiting Lennart Herlaar Computerarchitectuur en Netwerken – 1 6 Computers, Architectuur Wat verstaan we onder architectuur? De architectuur van een systeem is een abstracte kijk op de eigenschappen en de opbouw van het systeem. abstract = met weglating van details De architectuur beschrijft de eigenschappen van een computersysteem waar de directe gebruikers mee te maken krijgen. Voor een assembler-programmeur of compilerschrijver zijn dat de instructies die de CPU kent. Voor een gewone programmeur zijn dat o.a. de functies die het Operating System levert Voor een gebruiker is het wat hij op zijn scherm ziet en wat hij kan doen Lennart Herlaar Computerarchitectuur en Netwerken – 1 7 Architectuur vs. implementatie Tegenover de architectuur staat de implementatie: de specifieke manier waarop deze functies verwezenlijkt zijn. Bijv de specifieke elektronica van de chip. Of de manier waarop het O.S. van binnen opgebouwd is. Voorbeeld: Win32 is de architectuur van verschillende Windows systemen Windows 95, 98, NT, 2000, XP zijn verschillende implementaties van deze architectuur. Unix is een totaal andere architectuur met verschillende implementaties (o.a. Linux) Windows Vista, 7, 8, Mac OS X Mavericks, iOS, Android ? In dit vak kijken we vooral naar architectuur, en minder naar implementaties Lennart Herlaar Computerarchitectuur en Netwerken – 1 8 Netwerk – communicatie werkstation werkstation file server werkstation Internet print server gateway werkstation Lennart Herlaar file server Computerarchitectuur en Netwerken – 1 9 Communicatie in een computer Firefox window manager O.S. muis driver muis interface muis Lennart Herlaar Computerarchitectuur en Netwerken – 1 10 Communicatie in een netwerk Firefox window manager mini O.S. muis driver muis interface muis O.S. netwerk softw netwerk softw netwerk werkstation of server X terminal Lennart Herlaar Computerarchitectuur en Netwerken – 1 11 Opbouw van een computer CPU geheugen cache snelle controller langzame controller CD-ROM video harde schijf floppy modem Lennart Herlaar Computerarchitectuur en Netwerken – 1 12 Opbouw van een computer CPU geheugen cache snelle bus langzame bus snelle controller langzame controller CD-ROM video harde schijf floppy modem Lennart Herlaar Computerarchitectuur en Netwerken – 1 13 Opbouw van een computer CPU: doet berekeningen/beslissingen geheugen (intern): hierin staan de gegevens en de instructies waarop de CPU werkt bus: verbindt de onderdelen van de computer en verzorgt het transport van gegevens randapparatuur: alles wat communiceert met de buitenwereld harde schijven: bevatten permanente opslag, worden ook als randapparaten beschouwd Lennart Herlaar Computerarchitectuur en Netwerken – 1 14 Geheugen Informatie in een computer wordt opgeslagen als bits. Een bit kan twee waarden aannemen: 0 en 1. In het geheugen worden de bits meestal aangesproken in groepjes van 8 bits = een byte of octet. Een byte kan 256 (28 ) waarden hebben. 00000000 00000001 00000010 00000011 00000100 ... 11111111 Lennart Herlaar Computerarchitectuur en Netwerken – 1 15 Adressen Elke byte heeft een nummer, adres genoemd. De adressen lopen van 0 t/m een groot getal. De CPU gebruikt een adres om aan te geven welke byte(s) gelezen (opgehaald) of geschreven (opgeborgen) worden. Adressen kunnen door de CPU ook opgeslagen worden, en er kan mee gerekend worden. Een adres is ook gewoon een rijtje bits 0 1 2 3 4 ... ... N Het aantal bits in een adres bepaalt (o.a.) de maximale hoeveelheid geheugen Tegenwoordig meestal 32 of 64 bits. Lennart Herlaar Computerarchitectuur en Netwerken – 1 16 Pointers In programmeertalen spreken we over pointers (= abstractie van een adres). Pascal (o.a. Delphi), C, C++, C# hebben pointers Java, Visual Basic e.d. niet (maar intern stiekem wel) In C, C++, C# kan met pointers gerekend worden Java gebruikt intern pointers voor objecten (instances) Als p een pointer is, dan is ∗p het object waar de pointer naar wijst Als x een object is dan is &x het adres van x, wat in een pointer gezet kan worden. (p = &x) Een pointer ophogen (p + +) heeft tot gevolg dat hij naar het eerstvolgende object wijst. Lennart Herlaar Computerarchitectuur en Netwerken – 1 17 Voorbeeld pointers y x p a b c d q 0 Kopieer de tekst van het linkervak naar het rechtervak Lennart Herlaar Computerarchitectuur en Netwerken – 1 18 Voorbeeld pointers y x p a b c d 0 Lennart Herlaar q char* p; char* q; p = &x; q = &y; while (*p != 0) { *q = *p; p++; q++; } *q = 0; Computerarchitectuur en Netwerken – 1 18 Voorbeeld pointers y x p a b c d 0 Lennart Herlaar q a char* p; char* q; p = &x; q = &y; while (*p != 0) { *q = *p; p++; q++; } *q = 0; Computerarchitectuur en Netwerken – 1 18 Voorbeeld pointers p x y a b c d a b 0 Lennart Herlaar q char* p; char* q; p = &x; q = &y; while (*p != 0) { *q = *p; p++; q++; } *q = 0; Computerarchitectuur en Netwerken – 1 18 Voorbeeld pointers p Lennart Herlaar x y a b c d a b c d 0 q 0 char* p; char* q; p = &x; q = &y; while (*p != 0) { *q = *p; p++; q++; } *q = 0; Computerarchitectuur en Netwerken – 1 18 Inhoud Inleiding architectuur communicatie Opbouw computer geheugen CPU ⇐= randapparatuur – input en output (I/O) Lennart Herlaar Computerarchitectuur en Netwerken – 1 19 CPU Het “hart” (of “brein”) van een computer wordt de CPU genoemd (Central Processing Unit – Centrale Verwerkings Eenheid) De CPU doet alle berekeningen, neemt beslissingen, stuurt de hele zaak. Het geheugen bevat alle gegevens en opdrachten die op een moment actief in gebruik zijn CPU: Intel 4004 (4 bits) Lennart Herlaar Computerarchitectuur en Netwerken – 1 20 CPU - bits 4004 – 4 bits, 2300 transistors, 1969 8008 – 8/14 bits, 1972 8080 – 8/16 bits, 4500 transistors, 1974 8086 – 16/20 bits, 29000 transistors, 1978 80386 – 32 bits, 250000 transistors, 1985 Nu 32 of 64 bits, miljoenen transistors Wet van Moore (1965): aantal transistors/cm2 verdubbelt elk jaar. Nu: aantal transistors per chip verdubbelt elke anderhalf jaar. Lennart Herlaar Computerarchitectuur en Netwerken – 1 21 CPU registers cache rekeneenheid ALU PC / IP PSW bus interface Lennart Herlaar Computerarchitectuur en Netwerken – 1 22 Opbouw van CPU De CPU bevat een ALU (Arithmetic/Logic Unit) die het rekenwerk doet Gegevens die snel bij de hand moeten zijn worden in registers (zeer snel geheugen) opgeslagen Gegevens uit het geheugen worden naar registers getransporteerd of direct naar de ALU. Omgekeerd idem. Lennart Herlaar Computerarchitectuur en Netwerken – 1 23 Opbouw van CPU De CPU bevat een ALU (Arithmetic/Logic Unit) die het rekenwerk doet Gegevens die snel bij de hand moeten zijn worden in registers (zeer snel geheugen) opgeslagen Gegevens uit het geheugen worden naar registers getransporteerd of direct naar de ALU. Omgekeerd idem. In de CPU bevindt zich een bus (of bussen) die het transport verzorgen. De bus, registers en ALU hebben meestal evenveel bits: dit bepaalt de “bit-breedte” van de CPU Tegenwoordig meestal 32 of 64, vroeger 16 of 8. Wasmachines, e.d. gebruiken soms 8-bits CPU’s, horloges soms 4-bits. Lennart Herlaar Computerarchitectuur en Netwerken – 1 23 Werking van CPU De ALU kan alleen eenvoudige operaties uitvoeren (bijv. twee getallen optellen, vermenigvuldigen of testen of iets > 0 is. De uit te voeren operaties (instructies) staan in het geheugen Elke operatie heeft een code (instructiecode). In een instructie staat ook waar de gegevens (operanden) vandaan komen resp. naar toe gaan (register of geheugen) De CPU heeft een speciaal register (program counter of instruction pointer) die aangeeft op welk adres de uit te voeren instructie staat. Een compiler breekt ingewikkelder operaties af tot een rij instructies ADD A, B MOV x, y Lennart Herlaar Computerarchitectuur en Netwerken – 1 24 Bus Een “bus” is een soort snelweg voor gegevens Verzameling draden en connectors (slots) Afspraak over elektrische signalen (welke spanningen) Op de bus zitten verschillende onderdelen aangesloten die met elkaar kunnen communiceren: CPU, geheugen, interface, . . . Er kan maar één transport tegelijk plaatsvinden De snelheid wordt bepaald door: De “frequentie” van de bus (bijv. 266 MHz) Het aantal bits dat tegelijkertijd op de bus getransporteerd kan worden (de breedte van de bus). Lennart Herlaar Computerarchitectuur en Netwerken – 1 25 CPU/geheugen/cache Probleem: (betaalbaar) geheugen is meestal langzamer dan CPU. vb: CPU 1000-3000MHz, geheugen 5 nsec (=200MHz). Andere beperkingen: bus, andere geheugentoegang Gevolg: CPU moet wachten tot gegevens uit geheugen beschikbaar zijn. Snel geheugen is duur. Oplossing: zet een klein stukje snel geheugen (cache) tussen de CPU en het “gewone” geheugen. Waar? tussen de CPU en de bus Of: in de CPU. (zie CPU plaatje) Lennart Herlaar Computerarchitectuur en Netwerken – 1 26 Cache – 1 CPU cache bus Registers intern cache (level 1) geheugen level 2 cache Cache is sneller dan geheugen Cache is (veel) kleiner dan geheugen Vraag: wat stop je in de cache? Liefst: datgene dat je het meest nodig zult hebben Onmogelijk te voorspellen Daarom: wat het meest recent gebruikt is Lennart Herlaar Computerarchitectuur en Netwerken – 1 27 Cache – 2 Principe van localiteit: programma’s hebben de neiging om langere tijd in dezelfde buurt te blijven HIT = als de gevraagde geheugenplaats in de cache is MISS = het is er niet: de CPU moet wachten Bij een “miss” moet iets anders weggegooid worden: bijv. iets dat het langst geleden gebruikt is Schrijven via cache: writethrough: wacht tot het in het geheugen zit delayed-write: opbergen in geheugen gebeurt later Lennart Herlaar Computerarchitectuur en Netwerken – 1 28 Inhoud Inleiding architectuur communicatie Opbouw computer geheugen CPU randapparatuur – input en output (I/O) ⇐= Lennart Herlaar Computerarchitectuur en Netwerken – 1 29 Andere apparatuur Op de computer zit randapparatuur aangesloten, beeldscherm, toetsenbord, muis, geluidskaart etc. Een interface of controller is een stuk elektronica waarmee de CPU met de randapparaten communiceert. (Harde) schijven zijn randapparaten, bedoeld als opslag voor gegevens, die niet direct nodig zijn. De CPU, geheugen en interfaces zijn verbonden met een bus Lennart Herlaar Computerarchitectuur en Netwerken – 1 30 In- en uitvoer bus interface Gegevens moeten van de CPU naar interfaces en omgekeerd. De interface zit op de bus en krijgt/stuurt elektrische signalen Het apparaat op de interface (muis, toetsenbord, printer,. . . ) krijgt/stuurt elektrische signalen van/naar de interface. Hoe communiceert de CPU met de interface? input buffer IN output buffer UIT control register status register Lennart Herlaar Computerarchitectuur device interface en Netwerken – 1 31 I/O – 1 Op te lossen problemen: De interface moet instructies van de CPU herkennen Er moeten meerdere interfaces kunnen zijn die elkaar niet in de weg zitten. De volgende mogelijkheden worden gebruikt: 1 2 3 Lennart Herlaar Speciale IN/OUT put instructies Speciale adressen voor interfaces Direct memory access (DMA) Computerarchitectuur en Netwerken – 1 32 I/O – instructies Oplossing met speciale instructies: De CPU heeft speciale instructies voor in- en output Deze instructies hebben een I/O adres als parameter (of in een apart register) De data komt van/naar een ander register of geheugenadres vb. INP 16, R1 of: OUT 16, waarde Lennart Herlaar Computerarchitectuur en Netwerken – 1 33 I/O – instructies interface I/O R/W adres data I/O = 1 als er INP/OUT instructie uitgevoerd wordt I/O = 0 als er geheugen benaderd wordt R/W = 1 als data van CPU → bus R/W = 0 als data van bus → CPU Interface zet data op de bus als I/O == 1 ∧ R/W == 0 ∧ adres == 16 Interface haalt data van de bus als I/O == 1 ∧ R/W == 1 ∧ adres == 16 Lennart Herlaar Computerarchitectuur en Netwerken – 1 34 Memory-mapped I/O Oplossing zonder speciale instructies: Geen speciale I/O instructies Deel van de adresruimte wordt gebruikt voor I/O Gewoon geheugen reageert niet op deze adressen Interfaces reageren op “hun” adresbereik Vb: MOVE R1, 0x40000010 of MOVE 0x40000010, R1 Nadeel: “gat” in adresruimte N.B soms combinatie van INP/OUT instructie en memory-mapped I/O Lennart Herlaar Computerarchitectuur en Netwerken – 1 35 Memory-mapped I/O interface R/W adres data R/W = 1 als data van CPU → bus R/W = 0 als data van bus → CPU Interface zet data op de bus als R/W == 0 ∧ adres == (bijv.) 230 + 16 Interface haalt data van de bus als R/W == 1 ∧ adres == 230 + 16 Lennart Herlaar Computerarchitectuur en Netwerken – 1 36 DMA – 1 Oplossing met speciale hardware: Zowel I/O instructies als memory-mapped I/O verplaatsen kleine hoeveelheden data dus CPU is intensief bezig met I/O Voor sommige toepassingen kost dit teveel CPU tijd bijvoorbeeld het afspelen van een geluids- of videobestand DMA (Direct Memory Access) verplaatst blokken data tussen geheugen en interface Lennart Herlaar Computerarchitectuur en Netwerken – 1 37 DMA – 2 BUS interface geheugen DMA controller DMA controller is ook een interface De CPU geeft DMA controller opdracht, geheugenadres, I/O adres DMA controller “doet I/O na” CPU heeft tijdens DMA alle tijd voor andere instructies oppassen met DMA en cache (DMA gaat buiten cache om, dus cache mogelijk niet consistent met geheugen) Lennart Herlaar Computerarchitectuur en Netwerken – 1 38 Polling Hoe weten we dat een interface I/O kan accepteren? (Bijvoorbeeld dat er een input klaar staat of dat de interface output kan verwerken) Simpel systeem: polling = voortdurend controleren voorbeeld: toetsenbord interface: Als er een toets ingedrukt is wordt de code in het KB_DATA register gezet De interface zet een bit (KB_READY) aan in het status register KB_STATUS Als het KB_DATA register gelezen is wordt de KB_READY bit weer uitgezet. if (KB_STATUS & KB_READY == 1) verwerk toetsaanslag; else doe even iets anders; Lennart Herlaar Computerarchitectuur en Netwerken – 1 39 Polling vs. Interrupt Nadelen van Polling: Verspilling van tijd. Als je meer dan één interface in de gaten moet houden dan wordt het lastig Bij snelle apparaten kun je gemakkelijk iets missen als je ook iets anders wilt doen Interrupts: Laat de interface aangeven wanneer het nodig is. Lennart Herlaar Computerarchitectuur en Netwerken – 1 40 Interrupt Interface geeft een signaal aan de CPU dat er iets interessants gebeurd is De CPU onderbreekt het lopende programma om een ander stuk programma te gaan uitvoeren (Interrupt-routine) Dit vindt uit wat er aan de hand is en neemt actie Na afloop gaat de CPU verder met het onderbroken programma: onthouden waar we waren (=PC) programma interrupt signaal return-int. int.routine driver Lennart Herlaar Computerarchitectuur en Netwerken – 1 41 Interrupt architectuur Verschillende interrupts kunnen verschillende prioriteit hebben: hogere prioriteit interrupts kunnen lagere onderbreken, omgekeerd niet In het PSW (Program Status Word) staat de huidige prioriteit (moet bij interrupt opgeborgen worden!) Om te weten welke interface aandacht vraagt is het goed om elke interrupt een eigen interrupt routine te geven. Lennart Herlaar Computerarchitectuur en Netwerken – 1 42 Traps Traps zijn interrupts die niet door een interface gegenereerd worden maar door de CPU zelf. Meestal gerelateerd aan het uitvoeren van een specifieke instructie Lennart Herlaar Computerarchitectuur en Netwerken – 1 43 Traps Traps zijn interrupts die niet door een interface gegenereerd worden maar door de CPU zelf. Meestal gerelateerd aan het uitvoeren van een specifieke instructie Voorbeelden: door 0 delen gebruik van een adres dat niet bestaat Instructies die niet bestaan, b.v. float berekeningen in simpele CPU. een speciale TRAP instructie Sommige trap instructies worden voor debuggen gebruikt: trapt bij iedere opdracht. Lennart Herlaar Computerarchitectuur en Netwerken – 1 43 Samenvatting Inleiding architectuur communicatie Opbouw computer geheugen CPU randapparatuur – input en output (I/O) Lennart Herlaar Computerarchitectuur en Netwerken – 1 44
© Copyright 2024 ExpyDoc