Computere og Netværk (dComNet)

Preview:

DESCRIPTION

Computere og Netværk (dComNet). http://www.cs.au.dk/dComNet. Jens Kargaard Madsen ( jkm@iha.dk ) Jens Bennedsen ( jbb@iha.dk ). Computere og netv ærk. Beskrivelse - PowerPoint PPT Presentation

Citation preview

dComNet 1

Computere og Netværk (dComNet)

Jens Kargaard Madsen (jkm@iha.dk)Jens Bennedsen (jbb@iha.dk)

http://www.cs.au.dk/dComNet

dComNet 2

Computere og netværkBeskrivelse

At give den studerende kendskab til computere og netværks opbygning og virkemåde. Herunder hvorledes en computer kan opfattes som niveauer af abstrakte maskiner realiseret i hardware og software [...]

LæringsmålDeltagerne skal ved afslutningen af kurset kunne:

• forklare opbygningen af computere som niveauer af virtuelle maskiner, • beskrive formål, opbygning og begreber på de enkelte niveauer, • anvende begreber og programmere på de enkelte niveauer. • forklare opbygningen af større og mindre netværk af computere.

dComNet 3

Undervisningsmateriale

Andrew S. TanenbaumStructured Computer Organisation (SCO)5. udgave, Prentice-Hall, 2005

Derudover kapitler fra bog omkring TCP/IP netværk.Noter, vejledninger og ugesedler hentes via www-siderne.

dComNet 4

ØvelserHold DA1, Allan Stisen, Onsdag 8-12, Stibitz-113 (21 studerende)

Hold DA2, Jonas Kölker, Onsdag 14-18, Stibitz-123  (24 studerende)

Hold DA3, Freek van Walderveen, Torsdag 8-12, Stibitz-123 (23 studerende)

Hold DA4, Jonas Kölker, Tirsdag 11-15, Stibitz-113  (23 studerende)

Hold DA5, Freek van Walderveen, Tirsdag 8-12, Stibitz-123  (25 studerende)

Hold IT1, Andreas S., Fredag 12-16, Stibitz-113 (17 studerende)

Hold IT2, Andreas S.Pedersen, Torsdag 11-15, Stibitz-113 (17 studerende)

Hold IT3, Anders Jensen, Tirsdag 12-16, Stibitz-123 (17 studerende)

Holdbytte kun muligt hvis man har en at bytte med!

Nogle af jer er ikke sat på et hold af studiekontoret. Mød op på det hold der passer jer bedst.

dComNet 5

Ugesedler og opgaverUgeseddel offentliggøres på hjemmesiden mandag eftermiddag:

Læsestof for fredagens forelæsningOpgaver til øvelser i den efterfølgende uge

Der trykkes ikke ugesedler:

Tavle- og diskussionsopgaverUgeopgaver

Ugeopgaver er obligatoriske og skal laves i grupper.

Dan grupper af 2-3 personer senest ved første øvelsesgang.

Grupper er faste og kan ikke gå på tværs af øvelseshold.

dComNet 6

Eksamen

Kræver at samtlige seks ugeopgaver er godkendt.

Eksamen er multiple choice eksamen (og derved skriftlig) og uden forberedelsestid. Eksamen varer 60 minutter.

Selvom det er MC er det IKKE en test af fakta

dComNet 7

?

dComNet 8

Computere og netværkBeskrivelse

At give den studerende kendskab til computere og netværks opbygning og virkemåde. Herunder hvorledes en computer kan opfattes som niveauer af abstrakte maskiner realiseret i hardware og software [...]

LæringsmålDeltagerne skal ved afslutningen af kurset kunne:

• forklare opbygningen af computere som niveauer af virtuelle maskiner, • beskrive formål, opbygning og begreber på de enkelte niveauer, • anvende begreber og programmere på de enkelte niveauer. • forklare opbygningen af større og mindre netværk af computere.

dComNet 9

Rigtige maskiner

Difference,Analytical Engine,

Babbage, 1834

ENIAC,

Mauchley, Eckert, 1946

PDP-1,

DEC, 1960

PDP-11,

DEC, 1970 IBM PC, 1981

transistorer1948

integreredekredsløb, 1958

VLSI, 1980

dComNet 10

Typisk opbygning

”von Neumann” maskinarkitektur:

First Draft of a Report on the EDVAC, John von Neumann, 1946

Maskiner

Afvikle programmer gemt i lageret/hukommelsen.

Programmer skrives i et programmeringssprog

dComNet 11

Virtuelle / Abstrakte Maskiner

En (virtuel) maskine definerer instruktioner og datatyper.

En virtuel maskine kan programmeres som en fysisk maskine.

dComNet 12

Fornuftige spørgsmål om en maskine

1. Hvad skal maskinen bruges til?

2. Hvordan programmeres maskinen?

3. Hvordan er maskinen opbygget?

I dComNet vil vi undersøge de forskellige niveauer udfra disse spørgsmål, fokus afhænger af niveau ...

dComNet 13

Niveau 5: Højniveausprog

dComNet 14

Niveau 5: Højniveausprog

Java, C, C++, Pascal, SQL, Algol-60, Fortran, ...

Begrebervariabler, typer, værdier,.. tildelingssætninger, if-then-else, while,.. procedurer, funktioner, klasser, objekter, ...

Programmet er statisk, mens udførelsen er dynamisk

k = 6 - i – j;

værdier gemmes i variabler som ændres under udførelsen.

dComNet 15

Eksempel - Towers of Hanoi

Problem:

Flyt n skiver fra pind 1 til 3...

Algoritme:

- flyt n-1 skiver fra pind 1 til 2

- flyt 1 skive fra pind 1 til 3

- flyt n-1 skiver fra pind 2 til 3

dComNet 16

Eksempel - Towers of Hanoi

/* towers.c */

#include <stdio.h>

void towers(int n, int i, int j){ int k;

if (n == 1) printf ("Move a disk from %d to %d\n", i, j); else { k = 6 - i - j; towers(n-1, i, k); towers(1, i, j); towers(n-1, k, j); }}

int main(int argc, char *argv[]){ towers(3, 1, 3);}

/* Towers.java */

public class Towers { public static void towers(int n, int i, int j) {

int k;

if (n == 1) System.out.println ("Move a disk from " + i + " to " + j); else { k = 6 - i - j; towers(n-1, i, k); towers(1, i, j); towers(n-1, k, j); } }

public static void main(String[] args) { towers(3, 1, 3); }}

C kode Java kode

dComNet 17

Eksempel - Towers of Hanoi (2)

/* Towers.java */public class Towers { public static void towers(int n_, int n__, int n___) { int n____; if (n_ == 1)System.out.println("Move a disk from " + n__ + " to " + n___); else { n____ = 6 - n__ - n___; towers(n_-1, n__, n____); towers(1, n__, n___); towers(n_-1, n____, n___); } } public static void main(String[] args) { towers(3, 1, 3); } }

/* Towers.java */

public class Towers { public static void towers(int n, int from, int to) {

int via;

if (n == 1) System.out.println ("Move a disk from " + from + " to " + to); else { via = 6 - from - to; towers(n-1, from, via);//one disc left on from towers(1, from, to); //move the one disc towers(n-1, via, to); //move the rest } }

public static void main(String[] args) { towers(3, 1, 3); }}

Java kode v.2 Java kode v.3

dComNet 18

Niveau 4: Symbolsk maskinsprog

dComNet 19

Niveau 4: Symbolsk maskinsprogHøjniveausprog oversættes til symbolsk maskinsprog

gcc -S towers.cjavac towers.java; javap -c towers > towers.code

Begreber

ordrenavne movl $6,%edxregisternavne %edx, %eax, %ebp, %espetiketter (labels) .towers, .L3:operander $-4, 16(%ebp)direktiver .string “Move ...”

dComNet 20

towers.s (Pentium).section .rodata.LC0:.string "Move a disk from %d to %d\n".text

.align 4.globl towers

.type towers,@functiontowers:

pushl %ebpmovl %esp,%ebpsubl $24,%espcmpl $1,8(%ebp)jne .L3addl $-4,%espmovl 16(%ebp),%eaxpushl %eax

[…]

.L3:movl $6,%edxmovl %edx,%eaxsubl 16(%ebp),

%eaxmovl %eax,%edxsubl 12(%ebp),

%edxmovl %edx,-

4(%ebp)addl $-4,%espmovl -4(%ebp),

%eaxpushl %eaxmovl 12(%ebp),

%eaxpushl %eaxmovl 8(%ebp),%eaxdecl %eaxpushl %eaxcall towersaddl $16,%espaddl $-4,%esp

[…]

dComNet 21

Pentium ordrer

.L3:movl $6,%edxmovl %edx,%eaxsubl 16(%ebp),

%eaxmovl %eax,%edxsubl 12(%ebp),

%edxmovl %edx,-

4(%ebp)

[…]

dComNet 22

Pentium Registre

Værdier kan lagres i registre (register maskine).

k = 6 - i – j;

movl $6,%edx movl %edx,%eaxsubl 16(%ebp),%eaxmovl %eax,%edxsubl 12(%ebp),%edxmovl %edx,-4(%ebp)

dComNet 23

Pentium StakVærdier kan lagres også på stakken ...

k = 6 - i – j;

movl $6,%edx movl %edx,%eaxsubl 16(%ebp),%eaxmovl %eax,%edxsubl 12(%ebp),%edxmovl %edx,-4(%ebp)

Hver instans af towers har sin eget stakafsnit (stack frame) som udpeges af ebp registret.

dComNet 24

towers.code (JVM)

Method void towers(int, int, int)

0 iload_0

1 iconst_1

2 if_icmpne 42

5 getstatic #2

8 new #3

11 dup

[…]

29 iload_2

30 invokevirtual #7

33 invokevirtual #9

36 invokevirtual #10

39 goto 71

42 bipush 6 44 iload_1 45 isub 46 iload_2 47 isub 48 istore_3 49 iload_0 50 iconst_1 51 isub 52 iload_1 53 iload_3 […]

dComNet 25

JVM ordrer

42 bipush 6 44 iload_1 45 isub 46 iload_2 47 isub 48 istore_3

dComNet 26

JVM StakJVM giver kun mulighed for at lagre værdier på en stak…

k = 6 - i – j;

bipush 6 // 6,...iload_1 // i,6,...isub // 6-i,...iload_2 // j,6-i,...isub // 6-i-j,...istore_3 // ...

dComNet 27

IJVMSimplificering Java’s Virtuelle Maskine (JVM):

Senere vil vi behandle Pentium IA-32 markinarkitekturen.

dComNet 28

Niveau 2: Maskinniveau (ISA)

dComNet 29

Niveau 2: Maskinniveau (ISA)Programmer i symbolsk maskinsprog oversættes til absolut maskinkode.

von Neumann arkitektur

Program lagres som en sekvens af bitmønstre (absolut maskinkode).

Begreberlager, lagerceller, registre,ordrer, ordreformat, ...

dComNet 30

Pentium ordreformat

movl $6,%edx

dComNet 31

JVM / IJVM ordreformatbipush 6 svarer til 00010000 00000110 = 0x10 0x6

dComNet 32

Udførelse af maskinordrer

En program counter udpeger den aktuelle ordre i lageret ...

Typisk via et mikroprogram, der fortolker den aktuelle ordre ...

Via fetch-decode-execute cycle:

En aritmetisk/logisk enhed styresaf en kontrolenhed ...

dComNet 33

Niveau 1: Mikroarkitektur niveau

dComNet 34

Niveau 1: Mic-1 Mikroarkitektur

BegreberBusser, registre, dataoverførsel, kontrollager, mikroordrer, clock cykler, fetch-decode-execute,…

Fortolkning af maskininstruktioner:

dComNet 35

Mikroprogrammer

0x64 isub pop two words from stack; push their difference:

bipush 20 // 20, ...

bipush 12 // 12,20, ...

isub // 8, ...

Main1 PC=PC+1; fetch; goto (MBR)....isub1 MAR=SP=SP-1; rdisub2 H=TOSisub3 MDR=TOS=MDR-H; wr; goto Main1

dComNet 36

Niveau 0: Digitale niveau

dComNet 37

Niveau 0: Det Digital Niveau

BegreberPorte (gates), kombinatoriske kredsløb, lagerkredse, bit, digitale værdier, ...

dComNet 38

Kombinatoriske kredsløb og lagre

1-bit ALU

8-bit ALU

Clocked D-latch

dComNet 39

Computere og netværk

dComNet 40

TCP/IP Protokolstakken

dComNet 41

?

Recommended