Architetture I Lez. 1 Introduzione all'architettura degli elaboratori A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Finalità del corso • Fornire le nozioni di base relativamente ai principi di funzionamento di un calcolatore • Acquisire familiarità con i calcolatori e saperne valutare le differenze in termini tecnologici • Acquisire i rudimenti della programmazione Assembler A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Argomenti Principali • Il corso è strutturato in tre parti: • Introduzione alla programmazione assembler • Principi di Elettronica Digitale • Panoramica delle principali componenti di un calcolatore: CPU, Memoria, e alcuni dispositivi di I/O A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bibliografia • 4 ore di lezione settimanali (6 crediti) • Esame: • Scritto con domande a risposta multipla + orale • 3 Prove a Gennaio-Febbraio, Giugno, Luglio, Settembre • Lo scritto può essere sostituito per chi frequenta da prove in itinere • Libro di testo per la parte di teoria: G. Bucci, Architettura e organizzazione dei calcolatori (Fondamenti), McGraw-Hill • Sito ufficiale del corso: • Email: [email protected] A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Mainframe A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Desktop A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Laptop A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Smartphone A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Le componenti principali Motherboard Raffreddamento Processore Video Memoria Tastiera Alimentatore Mouse Case CD-DVD Scheda grafica Hard disk A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Un unico modello di riferimento: la macchina di Von Neumann INPUT MEMORIA CPU DATI PROGRAMMI OUTPUT A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Ciclo d’esecuzione A.A. 09/10 Carica dalla memoria la prox. istruzione FETCH Interpreta l’istruzione DECODE ESEGUI l’istruzione EXECUTE Architetture degli Elaboratori I © Danilo Bruschi Dettaglio (I) A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Dettaglio (II) A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Dettaglio (III) A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Rappresentare le informazioni A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bit e Byte • Un calcolatore svolge fondamentalmente due funzioni • Esegue calcoli a velocità elevatissime • Gestisce (memorizza, trasforma, invia, reperisce) DATI A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bit e Byte • Dati: sono sequenze di simboli scritti rispettando opportune regole, che descrivono attributi o proprietà di cose, persone, eventi di varia natura • I dati sono di diversa natura: • Numeri • Articoli o libri • Fotografie • Video • Suoni A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Bit e Byte • Rappresentazione dati • Analogica: uso un numero infinito di simboli • Digitale: uso un numero finito di simboli • Nei calcolatori i dati sono rappresentati in formato digitale usando esclusivamente due simboli: 1 e 0 chiamati BIT (b) (Binary Digit) • Per una maggiore potenza espressiva i calcolatori adottano come dato elementare il BYTE (B) (8 bit), che consente di rappresentare grandezze che assumono sino a 256 “stati” diversi • WORD (16b, 32 b), DWORD A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Informazione vs. Dato • Un dato diventa informazione nel momento in cui si procede ad una sua interpretazione, e diventa per noi informazione se arricchisce la nostra conoscenza DATI A.A. 09/10 SEMANTICA INFORMAZIONE Architetture degli Elaboratori I © Danilo Bruschi Rappresentazione dei numeri • Numero è un concetto astratto utile nelle operazioni di conteggio di oggetti di varia natura (cioè, di vari insiemi). • Un numero è un’astrazione legata al numero di elementi di un insieme • Di un numero possiamo avere diverse rappresentazioni A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi I sistemi di numerazione • Nati con lo scopo di rappresentare simbolicamente i numeri, ne conosciamo almeno due: • Decimale: esempio di sistema posizionale in quanto i simboli della rappresentazione (le cifre) acquistano significato diverso in base alla loro posizione; • Romano: esempio di sistema non posizionali in cui ogni simbolo rappresenta sempre un ben preciso numero, indipendentemente dalla posizione in cui compare. A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi La notazione posizionale • Introdotta dai Caldei e dai Babilonesi. • Ogni simbolo assume un significato diverso a seconda della posizione (casella) in cui compare. • Esempio: nel sistema decimale, nella rappresentazione 707 il 7 più a sinistra rappresenta il numero settecento, mentre il 7 più a destra rappresenta il numero sette A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Sistemi di numerazione posizionali • Per definire un sistema di numerazione posizionale occorre fissare: • il valore numerico della base b, cioè il peso dato alle diverse posizioni; • i simboli (cifre) utilizzabili nelle rappresentazioni: A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Notazione decimale • La notazione decimale è così chiamata: perché utilizza 10 simboli {0,1,2,3,..,9} e la sua base, il peso dei simboli è dato da potenze di dieci • Il motivo della denominazione è che : • unità: 100 = 1 • decine: 101 = 10 • centinaia: 102 = 100 • migliaia: 103 = 1000 • Ecc. A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Sistemi di numerazione posizionali • La notazione posizionale è universale, nel senso che il sistema resta invariato indipendentemente dalla base, che diventa il fattore determinante • Esempio: 707 può essere anche un numero in base otto,in questo caso il 7 più a sinistra “pesa” 64, mentre il 5 più a destra “pesa” 1 A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Convenzione • Se non è evidente dal contesto, è opportuno denotare la base del sistema di numerazione mettendola a pedice della rappresentazione numerica: • 5210 è la rappresentazione decimale di 52; • 526 è la rappresentazione in base 6 di 52. A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Sistemi posizionali in informatica • Nel mondo dell’informatica sono utilizzate le basi 2, 8 e 16 (sistemi binario, ottale e esadecimale). • sistema binario: base = 2, cifre: {0, 1}; • sistema ottale: base = 8, cifre: {0, 1, 2, 3, 4, 5, 6, 7}; • sistema esadecimale: base = 16, cifre: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}. A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Con tre bit : A.A. 09/10 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7 Architetture degli Elaboratori I © Danilo Bruschi 4 bit A.A. 09/10 0000 0 1000 8 0001 1 1001 9 0010 2 1010 10 0011 3 1011 11 0100 4 1100 12 0101 5 1101 13 0110 6 1110 14 0111 7 1111 15 Architetture degli Elaboratori I © Danilo Bruschi Numero combinazioni • Quindi: • con 1 bit possiamo rappresentare 2(21) numeri diversi; • con 2 bit possiamo rappresentare 4(22) numeri diversi; • con 3 bit possiamo rappresentare 8(23) numeri diversi; • con 4 bit possiamo rappresentare 16(24) numeri diversi; • –… • con n bit possiamo rappresentare 2n numeri diversi. • In generale in un sistema posizionale con base b, possiamo rappresentare bn numeri diversi utilizzando n cifre A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Un po’ di conti • Quanti bit sono necessari per rappresentare m numeri diversi? • il più piccolo valore n tale che 2n ≥m. • In generale n è il valore intero immediatamente superiore a log2m (denotato con log2m ) • Esempio: se devo rappresentare 110 valori o un valore inferiore a 110 avrò bisogno di 7 bit. A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Conversioni • Come passo da un numero rappresentato in una base b allo stesso numero rappresentato in base b’? • Esempio: come faccio a calcolare il corrispondente binario di 98 o viceversa? A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Conversione in base 10 • Per convertire in base 10 il numero x rappresentato in base b x = (xnxn-1…x0)b, è sufficiente eseguire il calcolo seguente: • (xn×bn+xn-1 ×bn-1+ … + x1×b1+ x0 ×b0)10 • Ad esempio: (B3E)16 = (11×162 + 3×161 + 14×160)10 = (11×256+ 3×48+ 14×1)10 = (2816+ 144+ 14)10 = (2974)10 A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Da base 10 a base b • Per passare da una rappresentazione in base 10ad una in base b, è sufficiente dividere successivamente(finché si ottiene zero come risultato) il numero di partenza per la base b e leggere i resti delle divisioni al contrario. • Esempio: convertire (324)10 in base 8 324 4 40 0 5 5 0 • (324)10 = (504)8 A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Passaggio da binario a ottale • È sufficiente dividere (a partire da destra) a gruppi di tre, i bit che compongono la rappresentazione binaria e convertire in cifra ottale ogni singolo gruppo di bit; • Es.: 11000110100101 11 000 110 100 101 3 A.A. 09/10 0 6 4 5 Architetture degli Elaboratori I © Danilo Bruschi Da ottale a binario • È sufficiente espandere ogni cifra del numero in ottale nel corrispondente binario: • Es.: A.A. 09/10 ( 657)8 = 110 101 111 Architetture degli Elaboratori I © Danilo Bruschi Da binario e esadecimale • È sufficiente dividere (a partire da destra) a gruppi di tre, i bit che compongono la rappresentazione binaria e convertire in cifra ottale ogni singolo gruppo di bit; • Es: 11000110100101 11 0001 1010 0101 3 A.A. 09/10 1 A 5 Architetture degli Elaboratori I © Danilo Bruschi Da Esadecimale a Binario • È sufficiente espandere ogni cifra del numero in esadecimale nel corrispondente binario: • Es.: A.A. 09/10 ( B79)8 = 1011 0111 1001 Architetture degli Elaboratori I © Danilo Bruschi Addizioni • Eseguire le addizioni di numeri è banale: • vanno sommate le singole cifre in posizioni corrispondenti, andando a leggere la tavola dell’addizione (incrociando la riga e la colonna relative alle cifre in gioco); • nel caso la somma abbia come risultato un numero di due cifre, si effettua il riporto di quella più a sinistra. A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Addizioni A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Moltiplicazione A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Aritmetica al calcolatore • Va ricordato che il calcolatore opera su dati di dimensione fissata • Quindi è in grado di gestire soltanto valori con un limite massimo prestabilito • Nel caso in cui durante un’operazione aritmetica si dovesse superare questo limite, viene dato origine ad un errore di OVERFLOW A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Numeri negativi • Per risolvere il problema della rappresentazione dei numeri negativi vi sono vari approcci: • rappresentazione con bit di segno; • notazione in complemento a uno; • notazione in complemento a due. A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Rappresentazione con bit di segno • Supponiamo di avere a disposizione 8 bit; dividiamo l’intervallo dei 256 valori rappresentabili in due parti: • 0…127 (rappresentanti i numeri da 0 a 127); • 128…255 (rappresentanti i numeri da –0 a –127). • Il bit più significativo (più a sinistra) rappresenta quindi il segno del numero: • 0: numero positivo (intervallo da 0 a 127); • 1: numero negativo (intervallo da 128 a 255). • Aspetti negativi: • lo zero ha due rappresentazioni: +0 (00000000), –0 (10000000) • Devo realizzare degli appositi circuiti per la sottrazione. A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Complemento a due • Dato X = xn-1 xn-2 … x0 otteniamo il suo opposto -X nel seguente modo: 1. calcolo il complemento a 1 di X invertendo tutti gli 1 in zero e gli zero in 1 2. Sommo al valore ottenuto al punto 1 il valore 1 A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Riassumendo A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Esempi A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi Binario-ottale-esadecimale • 10011012 = 1158 = 5D16 • 110001112 = 3078 = A716 A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi A.A. 09/10 Architetture degli Elaboratori I © Danilo Bruschi