Architettura di un Computer Architettura dei computer • In un computer possiamo distinguere quattro unità funzionali: – il processore – la memoria principale – la memoria secondaria – i dispositivi di input/output • Il processore e la memoria principale costituiscono l’unità centrale Componenti principali di un computer Unità centrale Processore Memoria principale (centrale) Bus Controller Stampante Terminale Periferiche di input/output Memorie di massa (secondarie) Organizzazione fisica attuale Periferiche per l’input Unità di controllo ed elaborazione e memoria Tastiera e mouse Scanner CPU + HD, CD, Floppy Periferiche per l’output Hard Disk Lettore CD Floppy Disk RAM CPU La scheda madre Le idee ed i pionieri • Babbage • Turing • von Neuman Il computer è un calcolatore digitale programmabile dotato di memoria dati e programmi risiedono in memoria La memoria principale • Fornisce la capacità di “memorizzare” le informazioni (i dati e i programmi) • Può essere vista come una lunga sequenza di componenti elementari, ognuna delle quali può contenere un’unità di informazione (un bit) • Le componenti elementari della memoria sono aggregate tra di loro e formano strutture complesse dette celle che possono contenere otto bit (un byte) • La memoria può essere vista come una sequenza di celle La memoria principale 0 1 2 3 4 • Ciascuna cella è caratterizzata da un indirizzo • Gli indirizzi corrispondono all’ordinamento delle celle nella sequenza • Gli indirizzi sono numeri interi (partono da 0) • Gli indirizzi sono determinati dall’ordinamento consecutivo N • Un altro nome con cui viene indicata la memoria principale è memoria RAM (Random Access Memory) • Questa definizione indica che il tempo di accesso ad una cella è lo stesso indipendentemente dalla posizione della cella • Le operazioni che un Processore può effettuare sulla memoria sono le operazioni di lettura e scrittura di informazioni nelle celle • L’ indirizzo di una cella è un numero intero e quindi lo si può codificare in binario • Il numero di celle di memoria determina il numero di bit necessari a rappresentare l’indirizzo • Viceversa il numero di bit destinati all’indirizzo determina il numero di celle indirizzabili • questo numero viene chiamato Spazio di indirizzamento Dimensioni della Memoria • Le dimensioni della memoria principale variano a seconda del tipo di computer • Nei computer attuali le dimensioni tipiche della memoria principale vanno da 32MB a 1GB (1MB = 220 byte ~ 1.000.000 byte, 1GB = 230 byte ~ 1.000.000.000 byte) Spazio di indirizzamento • Nei computer attuali lo spazio di indirizzamento è di almeno 32 bit, con cui si possono indirizzare 232 byte = 4GB Parola di memoria • Una parola di memoria è, a seconda del tipo di computer, un aggregato di (due) quattro o otto byte, sul quale si può operare (leggere e scrivere) come su un blocco unico • Per eseguire le operazioni di lettura e scrittura sulla memoria, si deve specificare l’indirizzo della parola su cui si vuole operare • Gli indirizzi delle parole devono essere multipli del numero di celle (byte) che le compongono Indirizzamento • La cella è l’unità minima di memoria indirizzabile, non sono indirizzabili i singoli bit • La parola è l’unità massima di memoria che è possibile leggere e scrivere in un colpo solo (mediante un’unica istruzione) • La memoria è caratterizzata dal tempo di accesso (tempo necessario per leggere o scrivere un’informazione in una parola) • Le memorie principali dei computer attuali sono molto veloci e i loro tempi di accesso sono di pochi nanosecondi (= 10-9 sec, un miliardesimo di secondo) • Le memorie principali sono relativamente costose • La memoria principale perde ogni suo contenuto quando si interrompe l’alimentazione elettrica. Questa caratteristica viene chiamata volatilità • È quindi necessario per conservare le informazioni (programmi e dati) avere altri tipi di memoria che conservano il contenuto anche senza alimentazione elettrica Il Processore • Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale • L’elaborazione avviene eseguedo sequenze di istruzioni (istruzioni macchina) • Il linguaggio in cui si scrivono queste istruzioni viene chiamato linguaggio macchina • Il ruolo del processore è quindi quello di eseguire programmi in linguaggio macchina Componenti di un processore Bus Interno REGISTRI Program Counter (PC) Registro di Stato (PS) Unità di Controllo Registro Istruzioni (RI) Registri Generali (16 o 64) Unità AritmeticoLogica Registro Indirizzi Memoria (RIM) Registro Dati Memoria (RDM) Registro di Controllo (RC) L’unità di controllo • L’Unità di Controllo (UC) si occupa di coordinare le diverse attività che vengono svolte all’interno del processore • Il processore svolge la sua attività in modo ciclico: ad ogni ciclo corrisponde l’esecuzione di una istruzione macchina • Ad ogni ciclo vengono svolte diverse attività controllate e coordinate dalla UC si legge dalla memoria principale la prossima istruzione da eseguire si decodifica l’istruzione letta si esegue l’istruzione • La frequenza con cui vengono eseguiti i cicli di esecuzione è scandita da una componente detta clock • Ad ogni impulso di clock la UC esegue una (o poche) istruzioni macchina • La velocità di elaborazione di un processore dipende dalla frequenza del suo clock • I processori attuali hanno valori di frequenza di clock che variano tra i 1000 MHz e 3000 MHz (tra 1000 milioni e 3 miliardi di impulsi al secondo) Il Processore: i registri • Il processore contiene al suo interno un certo numero di registri (unità di memoria estremamente veloci) • Le dimensioni di un registro sono tipicamente quelle di una parola di memoria (ad esempio 4 o 8 byte) Esistono due tipi di registri: – i registri speciali utilizzati dalla UC per scopi particolari: • controllo dell’esecuzione del programma • scambio di dati con la memoria centrale – i registri generali (registri aritmetici) I registri speciali • PC: program counter, contiene l’indirizzo della prossima istruzione da eseguire • RI: registro istruzioni, contiene l’istruzione in esecuzione • PS: process state, informazione sullo stato dell’esecuzione e possibili errori • RIM: registro indirizzi di memoria, contiene l’indirizzo di memoria della cella (parola) in esame • RDM: registro dati memoria, contiene il dato da trasferire in o dalla cella di memoria in esame • RC: registro di controllo, contiene il codice dell’istruzione da eseguire 100 Codice op. Argomento1 Argomento2 Formato istruzione (esempio) Gli argomenti possono essere indirizzi La memoria principale (RAM) 0 1 2 cod. op.mem. Ind1/Reg1 Ind2/Reg2 ... istr. lettura (load)/scrittura (store) in memoria-registri cod. op. reg. Reg1 Reg2 istr. per operazione tra due registri ... + -2 00003752 k numero rappr.con segno, esponente e mantissa Il ciclo di esecuzione inizio PS:= start PC:= ind. 1a istr. no PS = stop? si fine RI:= istr ind. in PC PC:=PC+1 RC:= cod. istr. in RI esegui istruzione Esecuzione istruzione RC load store RIM:= ind. oper. in RI RDM:= cont. ind. in RIM ... add ROP1:= ROP1+ROP2 jump ... stop PC:= ind. oper. In RI PS:= stop 1000 Load 3568 R1 1001 Add R1 R2 1002 Store R1 3568 1003 Jump 3568 1000 44 Esempio di esecuzione • • • • • • • • • • PC = 1000 RC = Load RIM = 1000 RDM = (Load, 3568, R1) RI = (Load, 3568, R1) PC = 1001 RC = Load RIM = 3568 RDM = 44 R1 = 44 Lettura dell’istruzione all’indirizzo 1000 L’Unità Aritmetico-Logica • L'Unità Aritmetico-Logica (ALU) è costituita da un insieme di circuiti in grado di svolgere le operazioni di tipo aritmetico e logico • La ALU legge i dati contenuti all'interno dei registri generali, esegue le operazioni e memorizza il risultato in uno dei registri generali • Ad esempio, vi sono circuiti in grado di eseguire la somma di due numeri binari contenuti in due registri e di depositare il risultato in un registro, circuiti in grado di eseguire il confronto tra due numeri • In alcuni elaboratori oltre alla ALU si può avere un processore specializzato per effettuare operazioni matematiche particolari, il coprocessore matematico