L’architettura di Von Neumann CPU RAM Mem second bus I/O RAM = Random Access Memory memoria ad accesso casuale Nella RAM, come ovunque in un computer, le informazioni sono rappresentate con sequenze di 0 e di 1. Numeri binari. La RAM quindi è fatta per contenere tali numeri. •un bit può contenere o 0 o 1 •un byte è una sequenza di 8 bits •una parola consiste di 4 bytes bit quindi la RAM è una sequenza di bytes da cui si leggono ed in cui si scrivono singoli byte o blocchi di 4 bytes consecutivi: le parole. byte parola Indirizzamento di byte e parole byte 0 1 2 3 4 5 6 7 8 9 10 11 parola in binario 0 00000000 00000001 00000010 00000011 1 00000100 00000101 00000110 00000111 2 00001000 00001001 00001010 00001011 unità di misura della RAM 1 Kilo byte: 210 = 1024 bytes, 1000 1 Mega byte: 220 = 1.048.576 bytes, 1000000 1 Giga byte 230 = 1.073.741.824 bytes, 109 1 Tera byte 240 = 1.099.511.627.776 bytes, 1012 Caratteristiche della RAM • RAM accedere ad ogni byte ha la stessa durata (10-7 sec): non dipende da quale byte è stato acceduto prima • è volatile: se tolgo la spina l’informazione è persa (c’è anche la ROM) • ogni byte ha un indirizzo 0,1,2...... • il byte è la minima quantità accessibile (attraverso il suo indirizzo) La CPU: unità centrale di calcolo: esegue programmi che sono nella RAM bus CPU registri di calcolo R0 Rn ALU RC P CI1 CI2 CIk IP RAM La CPU esegue continuamente il ciclo ADE=Access/Decode/Execute • Access: preleva dalla RAM la prossima istruzione da eseguire (l’indirizzo è in P, l’istruzione viene messa in IP) • Decode: decifra il codice dell’istruzione I che si trova memorizzata in IP • Execute: la esegue attivando il circuito CI Memoria Secondaria: • è permanente • dischi fissi, floppy, nastri magnetici, CD • accesso sequenziale o misto (il tempo varia a seconda dell’accesso precedente) • è adatta per leggere/scrivere grandi quantità di dati (in posizioni contigue) I/O = Input/Output Dispositivi di comunicazione utente computer. In un personal computer: • Input = tastiera • output = video / stampanti • velocità diverse e molto minori delle altre parti del computer (decimi di sec) Rappresentazione dei dati nella RAM I dati fondamentali sono: INTERI, REALI e CARATTERI Il computer ha memoria finita e quindi l’insieme dei numeri interi rappresentabili, quello dei numeri reali rappresentabili e quello dei caratteri rappresentabili sono necessariamente finiti. Gli interi nel computer Generalmente gli interi occupano una parola di 32 bit: in tutto 232 numeri distinti. Con n bit bn-1…b1b0 si rappresentano interi positivi da 0 a 2n-1: x bn1 2 n 1 b1 2 b0 2 i 0 bi 2 1 n 1 0 i xmin i 0 0 2 0 n 1 e i negativi ? i xmax i 01 2 2 1 n 1 i n Riserviamo il primo bit per il segno: 0 = positivo 1 = negativo. I numeri positivi rappresentabili sono quelli compresi tra 0 e 2n-1-1 Vi sono due modi per rappresentare i numeri negativi detti rispettivamente rappresentazione con complemento a 1 e con complemento a 2. Complemento a uno Si complementa a 2n-1 il valore assoluto del numero. Esempio con n = 6 bit: la rappresentazione di –10 è: 6310= --53 in binario 111111001010= ------110101 Problemi: • 2 rappresentazioni per lo 0: +0 e –0 63111111in binario 0= 000000= --------63 111111 Concludendo: con n = 6 si rappresentano i numeri: Rappr. 0 1 ... 31 32 ... 63 Numero 0 1 ... 31 positivi -31 ... negativi -0 • complicata realizzazione delle operazioni aritmetiche Complemento a due Si complementa il valore assoluto del numero a 2n invece che a 2n-1. Esempio con n = 6 bit: la rappresentazione di –10 è: 6410= --54 in binario 1000000001010= ------0110110 Complementando 0 si ottiene ancora 0 64in binario 0= --64 ha gli ultimi 6 bit uguali a 0 1000000000000= ------1000000 Complementando 54 (che rappresenta –10) si ottiene 641000000in binario 54= --10 ha il bit 5 uguale a 0(positivo) 110110= ------0001010 Complementando 32 (che rappresenta –32) si ottiene 64in binario 32= --32 ha il bit 5 uguale a 1(negativo) 1000000100000= ------0100000 Concludendo: con n = 6 si rappresentano i numeri: Rappr. 0 1 ... 31 32 ... 63 Numero 0 1 ... 31 positivi -32 ... negativi -1 In generale: con n bits positivi negativi 0 .... 2n-1-1 -2n-1 .... -1 La somma è semplice (n = 6) Somma di numeri positivi: 10+12 10+ 12= --22 riporto 001000 001010+ in binario 001100= I due ultimi riporti ------sono uguali 0010110 Somma di numeri negativi: (-10)+(-12) -10 64-10 = 54 54+ 52= --106 -12 64-12 = 52 riporto 110100 110110+ in binario 110100= ------I due ultimi riporti 1101010 sono uguali 106-64=42 64-42 = 22 bit di overflow complemento -22 64-22= 42 verifica Somma con un numero negativo (-10)+12 -10 64-10 = 54 riporto 54+ 12= --66 66-64 = 2 in binario I due ultimi riporti sono uguali 111100 110110+ 001100= ------1000010 Risultato troppo grande 27+12 = -25 errore di overflow 27+ 12= --39 riporto in binario I due ultimi riporti sono diversi 64-39 = 25 011000 011011+ 001100= ------0100111 -25 64-25= 39