tutorato architettura degli elaboratori - unife

34
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga Architettura degli elaboratori Tutorato Dott. Damiano Braga

Upload: others

Post on 24-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Architettura degli elaboratori

Tutorato

Dott. Damiano Braga

Page 2: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Before we start..

• 22 Marzo h. 14.00-16.00 aula Info2• 30 Marzo h. 11.30-13.30 aula F6• 12 Aprile h. 14.00-16.00 aula Info1• 20 Aprile h. 11.30-13.30 aula F6• 10 Maggio h. 14.00-16.00 aula Info1• 18 Maggio h. 11.30-13.30 aula F6• 26 Maggio h. 11.30-13.30 aula F6• 7 Giugno h. 14.00-16.00 aula Info1

[email protected]

Orario

Page 3: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Base 10 (dieci)

Il nostro sistema di numerazione è posizionale !

.. ed è decimale, cioè in base 10

1789 = 1*10^3+ 7*10^2+8*10^1+9*10^03 2 1 0

Page 4: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

.. e le altre ?

Base10 unica base?

- Base2 , usata dai calcolatori

- BaseHex , comoda per raggruppare etc...

- Base8... e altre ..

Page 5: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Cambi di base

25 : 2 = 12 con resto 1 12 : 2 = 6 con resto 0 6 : 2 = 3 con resto 0 3 : 2 = 1 con resto 11 : 2 = 0 con resto 1

(25)10

(?)2

(25)10 = (11001)2

dal basso verso l’alto!!

Page 6: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Cambi di base

(11001)2

(?)10

110014 3 2 1 0

1*2^4 +1*2^3+ 0*2^2 + 0*2^1+ 1*2^0

= 25

Page 7: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Cambi di base

79 : 2 = 39 con resto 1 39: 2 = 19 con resto 1 19 : 2 = 9 con resto 1 9 : 2 = 4 con resto 14 : 2 = 2 con resto 02 : 2 = 1 con resto 01 : 2 = 0 con resto 1

(79)10

(?)2

(79)10 = (100 1111)2

dal basso verso l’alto!!

Page 8: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Cambi di base

(100 1111)2

(?)hex

01001111

4F

4F

Page 9: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Cambi di base

27 : 16 = 1 con resto 11 = 0xB 1 : 16 = 0 con resto 1 = 0x1

(27)10

(?)hex

(27)10 = 0x1B =(1B)hex

dal basso verso l’alto!!

Page 10: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Cambi di base

Page 11: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Aritmetica binaria

25 + 7 = 32

(25) =(11001)

(7) = (111)

10

10

2

2

Somma

Page 12: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Aritmetica binaria25 + 7 = 32 (25) =(11001)

(7) = (111)

10

10

2

2

1100100111

+=

100000

1111

(32)10

Page 13: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Aritmetica binaria

25 - 5 = 20

(25) =(11001)

(5) = (101)

10

10

2

2

Differenza

Page 14: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

manca qualcosa..

(-5)10

(?)2

Si usa il complemento a 2 !

1) Si prende |-5| = 5

2) (5) = (101)10 2

3)inversione di bit(101) (010)4)si somma 1

010+1 = 011

Page 15: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Aritmetica binaria

(10011001) * (1011) = ?2 2

Moltiplicazione

Page 16: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Aritmetica binariaDivisione

Risultato è 1012 (510), con il resto di 102 (210); ovvero 101,12 (5,510).

Page 17: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 1

Si considerino i due numeri interi a e b. In rappresentazione decimale sia a=-44 e in rappresentazione ottale sia b=074.- Si esprimano entrambi i numeri in rappresentazione binaria in complemento a due su 10 bit

Esercizio 1

Page 18: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 1

Si considerino i due numeri interi a e b. In rappresentazione decimale sia a=-44 e in rappresentazione ottale sia b=074.- Si esprimano entrambi i numeri in rappresentazione binaria in complemento a due su 10 bit

a=(-44)

b=(074)

10

8

su 10 bit !!

Page 19: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 1

Si considerino i due numeri interi a e b. In rappresentazione decimale sia a=-44 e in rappresentazione ottale sia b=074.- si utilizzi la rappresentazione binaria di cui sopra per calcolare c = 4*b - 2*a utilizzando l’operatore shift al posto della moltiplicazione quando possibile.. ( su 10 bit )

Detta m la base con cui il numero è espresso, uno spostamento di n posizioni verso destra delle cifre del numero equivale a una sua divisione per m^n. Analogamente, uno spostamento di n posizioni verso sinistra equivale a una sua moltiplicazione per m^n.

Page 20: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 1

Si considerino i due numeri interi a e b. In rappresentazione decimale sia a=-44 e in rappresentazione ottale sia b=074.- si utilizzi la rappresentazione binaria di cui sopra per calcolare c = 4*b - 2*a utilizzando l’operatore shift al posto della moltiplicazione quando possibile.. ( su 10 bit )

2= 2

4= 2

1

2

L’esponente ci dice di quanto dobbiamo effettuare lo shift

a = (44) = 0000101100010

=(88)10

b = (60) = 0000111100010

=(240)10

0

Page 21: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 1

Si considerino i due numeri interi a e b. In rappresentazione decimale sia a=-44 e in rappresentazione ottale sia b=074.- si calcoli d= 2*c in binario in complemento a due su 10 bit e si commenti il risultato

Page 22: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 2

Esercizio 2Nell'instruction set MIPS, l'istruzione addi Rs Rt imm viene codificata in formato binario su una parola di 32 bit (B31 . . . B0) nel modo seguente:B31 . . . B26 opcode B25 . . . B21 Rs B20 . . . B16 RtB15 . . . B0 imm L'opcode relativo alla istruzione addi è 001001. Si scriva esplicitamente la codifica binaria dell'istruzione addi R13 R17 -333.

Page 23: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 2

addi: addi $t , $s, imm

operazione: $t= $s+imm ; advance_pc(4) ;

cccc ccss ssst tttt iiii iiii iiii iiii

32 bit

Page 24: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 2

addi: addi $t , $s, imm

cccc ccss ssst tttt iiii iiii iiii iiii

L'opcode relativo alla istruzione addi è 001001.

cccc cc = 0010 01

Page 25: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 2

addi: addi Rs, Rt, imm

0010 01ss ssst tttt iiii iiii iiii iiii

Rs = R13Rt=R17Imm= -333

Page 26: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 2

addi: addi Rs, Rt, imm

0010 01ss ssst tttt iiii iiii iiii iiii

Rs = (1101)Rt=(10001)Imm= (1111111010110011)

2

2

2

0010 0101 1011 0001 1111 1110 1011 0011

Page 27: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 3

Esercizio 3

La codifica binaria di un istruzione è

Si scriva esplicitamente opcode , Rs , Rt , imm e quindi l’istruzione MIPS

0001 0000 1100 1100 1111 1101 1110 1101

Page 28: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 3

Esercizio 3

s = 6t = 12offset = -531

0001 00ss ssst tttt iiii iiii iiii iiii

if ($s == $t ) advance_pc(offset <<2) ; else advance_pc(4);

0001 0000 1100 1100 1111 1101 1110 1101

beq $s, $t, offset Branch on equal

Page 29: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 4

Esercizio 4int a[1000];int b[1000];...register int i;for (i=999;i>0;i--){a[i]= 2*b[i-1];

}

Page 30: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 5

in MIPS le parole iniziano sempre ad indirizzi multipli di 4 (Vincolo di allineamento). Quando abbiamo un indice di un vettore.. per ottenere l’indirizzo corretto in byte, l’offset da sommare al registro di base deve essere 4*indice.

Es: se dobbiamo selezionare A[8] l’offset sarà 4*8= 32

così selezioniamo A[8] e non A[8/4]

ATTENZIONE!

Page 31: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 4

addi R10,#999,R0inizioloop: beq R10,R0,fineloopaddi R11,#-1,R0sll R11,R11,2lw R15,8000(R11)sll R15,R15,1addi R11,4,R11sw 1200(R11),R15addi R10,-1,R10beq R0,R0,inizioloopfineloop

Page 32: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 5

Esercizio 5int a[1000];int *b[1000];...register int i;for (i=999;i>-1;i--){b[i]=&(a[i]);

}

Page 33: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 5

L' operatore & (operatore unario, o monadico) fornisce l'indirizzo di una variabile.

L' operatore * (operatore indiretto, o non referenziato) da' il contenuto dell'oggetto a cui punta un puntatore.

pointer= &x; assegna a pointer l'indirizzo di x

y=*pointer; assegna a y il contenuto di pointer

ATTENZIONE!

Page 34: Tutorato Architettura degli elaboratori - Unife

Architettura degli elaboratori - Tutorato - Dott. Damiano Braga

Esercizio 5

addi R20,#-1,R0addi R10,#999,R0inizioloop: beq R10,R20,fineloopsll R11,R10,2addi R15,1200,R11sw 8000(R11),R15addi R10,-1,R0beq R0,R0,inizioloopfineloop: