Slides 1

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