Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche
Hardware: architettura dei computer (in breve) In un computer possiamo distinguere quattro unità funzionali: –il processore –la memoria principale –la memoria secondaria –i dispositivi di input (inserimento)/output (restituzione di risultati) Il processore e la memoria principale costituiscono l’unità centrale del computer
Componenti principali di un computer Unità centrale Processore Stampante Periferiche di input/output Memoria secondaria Memoria principale Tasteria e monitor Periferiche del calcolatore
L’uso dell’informazione Un computer deve: –memorizzare l’informazione usando la memoria principale (RAM) usando la memoria secondaria –elaborare l’informazione usando il processore (Central Processing Unit - CPU) –fare l’input/output dell’informazione usando i dispositivi di input/output
L’uso dell’informazione Un computer deve: –memorizzare l’informazione usando la memoria principale (RAM) usando la memoria secondaria –elaborare l’informazione usando il processore (Central Processing Unit - CPU) –fare l’input/output dell’informazione usando i dispositivi di input/output
I programmi Questa lezione: i programmi dal punto di visto dell’hardware I programmi: sequenze di istruzioni per l’elaborazione delle informazione –Definiscono quale debba essere il comportamento del processore
Istruzioni macchina I programmi: sequenze di istruzioni –Per ogni tipo di processore è definito un insieme di istruzioni, chiamate istruzioni macchina Ognuna delle quali corrisponde ad un’operazione elementare (somma dei numeri, confronta due numeri, leggi/scrivi dalla memoria, ecc.) Le operazione più complesse possono essere realizzate mediante sequenze di operazioni elementari
Istruzioni Per esempio: Codice istruzione Argomento 1Argomento 2 Codice istruzione Argomento 1 cosa faresu cosa operare
Istruzioni Per esempio: LOAD 3568 R2 –Operazione di lettura dalla memoria: richiede la lettura del valore contentuto nella cella con indirizzo 3568 e il suo caricamento nel registro R1 (Perché usiamo un indirizzo? Che cosa un registro? Vedremo…) Codice istruzione Argomento 1Argomento 2
Istruzioni Per esempio: ADD R1 R2 –Operazione aritmetica di somma: prevede la somma del contentuto dei registri R1 e R2 e il caricamento del risultato nel registro R1 (Perché R1 non R2? Non c’è una ragione: la decisione è arbitraria) Codice istruzione Argomento 1Argomento 2
Istruzioni Per esempio: cosa faresu cosa operare
Linguaggio macchina Il linguaggio in cui si scrivono queste istruzioni prende il nome di linguaggio macchina –Una sequenza di tali istruzioni prende il nome di programma in linguaggio macchina Il ruolo del processore: –Eseguire programmi in linguaggio macchina
I programmi I programmi e i dati risiedono nel memoria secondaria Processore Stampante Memoria secondaria Memoria principale
I programmi I programmi e i dati risiedono nel memoria secondaria Per essere eseguiti (i programmi) e usati (i dati) vengono copiati nella memoria principale Processore Stampante Memoria secondaria Memoria principale
I programmi I programmi e i dati risiedono nel memoria secondaria Per essere eseguiti (i programmi) e usati (i dati) vengono copiati nella memoria principale Il processore è in grado di eseguire le istruzioni di cui sono composti i programmi Processore Stampante Memoria secondaria Memoria principale
I programmi e i processori Famiglie di processori: Intel, Motorola, Sun, ecc. Ogni tipo di processore è in grado di eseguire un numero limitato di istruzioni Processori della stessa famiglia possono eseguire gli stessi programmi scritti in linguaggio macchina (ma non sempre) Processi di famiglie diverse non possono eseguire gli stessi programmi scritti in liguaggio macchina –Le istruzioni che “capiscono” sono diverse
Componenti del processore (CPU) La CPU è costituita da componenti diversi che svolgono compiti diversi Unità di controllo Unità aritmetico logica Program Counter REGISTRI Registro di Stato Bus Interno Registro Istruzioni Registri Generali 8 o 16 … Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo
Componenti del processore (CPU) La CPU è costituita da componenti diversi che svolgono compiti diversi Unità di controllo Unità aritmetico logica Program Counter REGISTRI Registro di Stato Bus Interno Registro Istruzioni Registri Generali 8 o 16 … Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo
Bus Permette la comunicazione tra i vari componenti dell’elaboratore I dati possono essere trasmessi in modalità seriale oppure parallela time parallela seriale
Componenti del processore (CPU) Unità di controllo Unità aritmetico logica Program Counter REGISTRI Registro di Stato Bus Interno Registro Istruzioni Registri Generali 8 o 16 … Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo
Componenti del processore (CPU) Unità di controllo Unità aritmetico logica Program Counter REGISTRI Registro di Stato Bus Interno Registro Istruzioni Registri Generali 8 o 16 … Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo
Registri I registri sono delle unità di memoria estrememente veloci Sono usate per mantenere le informazioni di necessità immediata per il processore Le dimensioni dei registri variano da 16, 32, 64 bit –Sono una caratteristica fondamentale del processore
Registri Per esempio: Program Counter –L’indirizzo della “prossima” istruzione da eseguire è memorizzato nel registro Program Counter Per esempio: i Registri Generali –I registri che possono essere utilizzati come memorie temporanee per svolgere le operazioni matematiche
Componenti del processore (CPU) Unità di controllo Unità aritmetico logica Program Counter REGISTRI Registro di Stato Bus Interno Registro Istruzioni Registri Generali 8 o 16 … Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo
Componenti del processore (CPU) Unità di controllo Unità aritmetico logica Program Counter REGISTRI Registro di Stato Bus Interno Registro Istruzioni Registri Generali 8 o 16 … Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo
Unità di controllo Esegue le istruzioni dei programmi Coordina le attività del processore Controlla il flusso delle istruzioni tra il processore e la memoria
Unità di controllo Svolge la sua attività in modo ciclico –Preleva dalla memoria principale la “prossima” istruzione da eseguire –Preleva gli operandi specificati nell’istruzione –Decodifica ed esegue l’istruzione –Ricomincia
Unità di controllo Svolge la sua attività in modo ciclico –Preleva dalla memoria principale la “prossima” istruzione da eseguire –Preleva gli operandi specificati nell’istruzione –Decodifica ed esegue l’istruzione –Ricomincia
Unità di controllo L’esecuzione comporta l’invio di comandi opportuni all’unità relativa –Calcoli: Unità aritmetico logica –Lettura/scrittura dati: memoria –Acquisizione/stampa: dispositivi di I/O
Componenti del processore (CPU) Unità di controllo Unità aritmetico logica Program Counter REGISTRI Registro di Stato Bus Interno Registro Istruzioni Registri Generali 8 o 16 … Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo
Componenti del processore (CPU) Unità di controllo Unità aritmetico logica Program Counter REGISTRI Registro di Stato Bus Interno Registro Istruzioni Registri Generali 8 o 16 … Registro Indirizzi Memoria Registro Dati Memoria Registro di Controllo
Unità aritmetico logica L’Unità aritmetico logica si occupa di eseguire le operazioni di tipo aritmetico/logico –Somme, sottrazioni, …, confronti, … Preleva gli operandi delle operazioni dai Registri Generali Deposita il risultato delle operazioni nei Registri Generali
Clock Abbiamo visto che il processore svolga la sua attività in modo ciclico –Ad ogni ciclo corrisponde l’esecuzione di un’operazione elementare (un’istruzione macchina) Il clock fornisce una cadenza temporale per l’esecuzione delle operazioni elementari
Clock La frequenza del clock indica il numero di operazioni elementari che vengono eseguite nell’unità di tempo –Consideriamo una ipotesi semplificata in cui ogni ciclo di clock corrisponde esattamente l’esecuzione di una sola istruzione macchina –In realtà, questa ipotesi non è sempre vero L’esecuzione di una istruzione può richiedere più cicli di clock Oppure nello stesso ciclo di clock si possono eseguire di istruzioni diverse Depende dal tipo di processore
Clock La frequenza del clock si misura in: –MHz (1 MHz corrisponde circa a un milione di battiti al secondo) –GHz (1 GHz corrisponde circa a un miliardo di battiti al secondo) Per esempio: se aquisate un calcolatore e vi dicono che ha un processore a 1 GHz –Vuol dire che il processore è in grado di eseguire (circa) 1 miliardo di istruzioni al secondo (nell’ipotesi semplificata)
L’uso dell’informazione Un computer deve: –memorizzare l’informazione usando la memoria principale (RAM) usando la memoria secondaria –elaborare l’informazione usando il processore (Central Processing Unit - CPU) –fare l’input/output dell’informazione usando i dispositivi di input/output
Memoria principale (RAM) Insieme alla CPU forma l’Unità Centrale di un elaboratore Conserva i programmi e i dati usati dalla CPU Sequenza di celle –Ad ogni cella è associato un indirizzo (un numero progressivo a partire da 0) N
Memoria principale (RAM) Perchè si chiama RAM (Random Access Memory)? –È possibile effettuare l’accesso diretto (si può accedere direttamente alle varie celle, una volta noto il loro indirizzo) –Il tempo necessario per accedere ad una cella è lo stesso, indipendentemente dalla posizione della cella nella sequenza –Il termine random indica proprio il fatto che non vi sono differenze nell’accesso alle varie celle della memoria
Memoria principale (RAM) Tutte le celle hanno la stessa dimensione: 8, 16, 32, o 64 bit Le operazioni che si eseguono sulla memoria sono operazioni di lettura e scrittura Una cella può contenere un dato o un’istruzione N ADD R1 R2 LOAD 56 R1 LOAD 3568 R1
Memoria principale (RAM) Le unità di misura della memoria RAM variano a seconda del tipo di calcolatore e vengono espresse in MB Nei PC generalmente si va dai 128MB ai 512MB Alcune server hanno 1-2 GB di RAM
Memoria principale (RAM) Alcune prioprietà della memoria principale –Veloce: per leggere/scrivere una cella ci vuole un tempo di accesso dell’ordine di poche decine di nanosecondi (millesimi di milionesimi di secondo = sec.) –Volatile: è fatta di componenti elettronici, togliendo l’alimentazione si perde tutto –Costosa
Memoria di sola lettura (ROM) Non può essere modificata A differenza della RAM non è volatile Veloce quasi come la RAM Contiene le informazioni di inializzazione usate ogni volta che si accende l’elaboratore (bootstrap)
Memoria cache Livello di memoria intermedio tra i registri e la RAM –Memorizza i dati usati più spesso senza doverli recuperare tutte le volte dalla RAM (che è più lenta) –Influisce moltissimo sulle prestazioni e sul costo della CPU (e quindi del computer)
Memoria cache In genere è interna al processore (cache L1) Esiste anche una cache secondaria (L2) esterna al processore È molto più costosa della RAM Le sue dimensione tipiche vanno dai 256KB a 1MB
Buffer Piccole parti di RAM con funzioni di memoria temporanea Usati per il passaggio delle informazioni da un programma o dispositivo ad un altro –In Windows si parla di Clipboard, memoria temporanea usata per esempio per le operazioni di Copia e Incolla