Architettura dei computer Motori per l’esecuzione di istruzioni • Quello che i computer possono fare – eseguire deterministicamente istruzioni per elaborare informazione – il computer deve ricevere una serie di istruzioni da seguire • Quello che i computer non possono fare – – – – non hanno immaginazione né creatività non hanno alcun intuito non sono crudeli né vendicativi (almeno in molti casi …) non hanno alcuna forma di libero arbitrio Il ciclo macchina • Un ciclo in cinque passi: 1. Fetch istruzione 2. Decodifica istruzione 3. Fetch Dati 4. Esecuzione Istruzione 5. Restituzione Risultato 3 Anatomia di un computer • I computer sono costituiti da cinque parti: – memoria, unità di controllo, unità aritmetico/logica (ALU), unità di input e unità di output 4 Memoria • La memoria contiene il programma in esecuzione e i dati su cui il programma stesso opera • Caratteristiche della memoria: – locazioni discrete. Ogni locazione è pari a 1 byte – indirizzi. Ogni locazione di memoria ha un indirizzo (un numero intero a partire da 0) – valori. Le locazioni di memoria memorizzano valori – capacità finita. Le locazioni di memoria hanno una capacità finita—i programmatori devono tenere presente che la quantità di dati che è possibile scrivere è limitata 5 Locazioni di memoria da un byte • Generalmente un diagramma della memoria di un computer rappresenta le locazioni discrete come piccoli rettangoli • L’indirizzo delle locazioni è indicato sopra il rettangolo. • I valori delle locazioni sono riportati nel rettangolo corrispondente. 6 7 Locazioni di memoria da un byte (cont.) • Ogni locazione contiene 1 byte che memorizza un carattere ASCII o un numero compreso tra 0 e 256 • I programmatori utilizzano una sequenza di locazioni di memoria adiacenti, ignorando il fatto che hanno differenti indirizzi – i blocchi di 4 byte sono usati come singola unità così frequentemente che hanno preso il nome di "parole di memoria“ (word) 8 Memoria ad accesso casuale • "ad accesso casuale" significa che il computer può accedere a qualsiasi locazione di memoria • Spesso è misurata in megabyte (MB) • Avere tanta memoria è preferibile per non avere problemi di spazio per i programmi e i dati 9 Unità di controllo • Implementa il ciclo macchina direttamente via hardware • I suoi circuiti recuperano un’istruzione dalla memoria ed eseguono altre operazioni del ciclo – un’istruzione tipica ha la forma ADD 2000, 2080, 4000 – quest’istruzione chiede che i numeri memorizzati nelle locazioni 2000 e 2080 siano sommati e che il risultato sia inserito nella locazione 4000 – il passo di Fetch Dati deve estrarre i due valori; dopo aver effettuato la somma il passo Restituzione Risultato inserirà la somma nella locazione 4000 10 Unità Aritmetico/Logica • Esegue tutti i calcoli • Generalmente è responsabile del passo del ciclo macchina denominato Esecuzione Istruzione • Un circuito nell’ALU può sommare due numeri • Ci sono anche circuiti dedicati alla moltiplicazione, al confronto ecc. • Le istruzioni di puro trasferimento dei dati non usano l’ALU • Il passo del ciclo macchina Fetch Dati recupera i valori necessari all’ALU (operandi) • Quando l’ALU ha completato l’operazione, il passo Restituzione Risultato trasferisce il risultato (somma o prodotto o qualche altro valore) dall’ALU in un indirizzo di memoria specificato nell’istruzione 11 Unità di input e output • Le piste e i circuiti attraverso cui l’informazione entra ed esce dal computer • Le periferiche: si collegano alle porte di input/output del computer. Non sono considerate parti vere e proprie del computer, ma terminali specializzati che codificano/decodificano l’informazione scambiata tra computer e mondo fisico. 12 Le periferiche • La tastiera trasforma le battute sui tasti in un formato binario • Il monitor rappresenta l’informazione contenuta nella memoria del computer visualizzandola su uno schermo a colori • Chiavi USB e hard disk sono utilizzati sia come input che come output. Sono dispositivi di memorizzazione in cui il computer può archiviare permanentemente informazioni per poi recuperarle al momento del bisogno 13 Un driver per ogni periferica • Le periferiche sono "stupide” perché forniscono solo un servizio base di traduzione da fenomeno fisico a segnale binario • Ogni ulteriore informazione è demandata al computer che deve aggiungere ogni comportamento “intelligente” • Ad es., quando il computer riceve la segnalazione che l’utente ha premuto contemporaneamente shift e q converte l’input nella lettera maiuscola Q. Il software che opera la conversione è chiamato driver. 14 Il Program Counter: un “PC” nel PC • Come fa il computer a determinare qual è l’istruzione successiva da eseguire? • L’indirizzo dell’istruzione successiva è memorizzato nell’unità di controllo ed è chiamato Program Counter (PC) • Dato che le istruzioni occupano 4 byte di memoria, l’istruzione successiva dovrebbe essere PC + 4 • Il PC è incrementato di 4, così, quando il ciclo macchina ritornerà al passo Fetch Istruzione, il PC starà già "puntando" all’istruzione successiva 15 Istruzioni di salto • L’istruzione può includere l’indirizzo dell’istruzione successiva. Questo modifica il PC che invece di aggiungere 4 automaticamente, "salta" alla locazione specificata 16 Interpretazione delle istruzioni • Processo di esecuzione di un programma – il computer interpreta i nostri comandi, ma espressi nel suo proprio linguaggio • Prima che il ciclo macchini inizi, qualche locazione di memoria e il PC sono visibili nell’unità di controllo 17 18 19 Interpretazione delle istruzioni (cont.) • L’esecuzione comincia trasferendo dalla memoria all’unità di controllo l’istruzione contenuta all’indirizzo specificato dal PC 20 Interpretazione delle istruzioni (cont.) • I bit dell’istruzione sono copiati nel circuito decodificatore dell’unità di controllo • Una volta fatto questo, il PC può essere configurato per il recupero dell’istruzione successiva 21 Interpretazione delle istruzioni (cont.) • Nel passo Decodifica Istruzione, l’ALU è configurata per eseguire l’operazione desiderata • Il decodificatore troverà gli indirizzi dei dati in ingresso (operandi sorgente) – la maggior parte delle istruzioni contiene gli indirizzi di due operandi sorgente (come ADD) – questi indirizzi sono passati al circuito che li recupera durante il passo successivo, Fetch Dati • Il decodificatore estrae l’indirizzo di destinazione per il passo Restituzione Risultato e lo inserisce in un circuito RR • Il decodificatore determina quali operazioni l’ALU dovrà eseguire e la configura in modo appropriato 22 23 Interpretazione delle istruzioni (cont.) • Esecuzione Istruzione: è il passo in cui sono effettivamente eseguiti i calcoli. Nel caso dell’istruzione ADD, il circuito effettua la somma dei due operandi sorgente 24 25 Interpretazione delle istruzioni (cont.) • Restituzione Risultato: restituisce il risultato dell’elaborazione nella locazione di memoria specificata dall’indirizzo di destinazione • Una volta concluso questo passo, il ciclo ricomincia 26 27 28 Moltissime operazioni semplici • I computer possono eseguire solo circa 100 istruzioni diverse – circa 20 tipi di operazioni distinte (ma servono istruzioni diverse per sommare byte, parole di memoria, numeri decimali ecc.) • Tutto ciò che chiediamo al computer deve essere ricondotto a una combinazione di queste operazioni primitive, supportate direttamente dall’hardware 29 Esempi di altre istruzioni • Oltre ad ADD, MULT (moltiplicazione) e DIV (divisione), altri esempi di istruzioni includono: – lo spostamento (shift) dei bit di una parola di memoria verso destra o verso sinistra, riempiendo gli spazi che si vengono a creare con degli zeri e buttando via i bit che “strabordano” – il calcolo dell’AND logico, che verifica se due bit valgono entrambi 1, o dell’OR logico, che verifica se almeno uno di essi vale 1 – il test che appura se un singolo bit vale zero o no, e salta a un nuovo blocco di istruzioni a seconda del risultato – lo spostamento dei dati da un’area all’altra della memoria – la ricezione di segnali dai dispositivi di input/output 30 Quanto è veloce il ciclo macchina? • L’impressionante capacità dei computer deriva dalla loro possibilità di eseguire in un secondo un enorme numero di istruzioni • Il clock del computer determina la velocità del ciclo macchina – misurato in megahertz, o milioni di cicli al secondo 31 32 Quanto è importante la velocità del clock? • I computer moderni tentano di cominciare un’istruzione a ogni tick del clock • I circuiti si passano l’istruzione l’un l’altro (pipelining) – possono essere processate 5 istruzioni simultaneamente • Un clock a 1 GHz può veramente eseguire un miliardo di istruzioni al secondo? – in realtà i computer non possono cominciare cominciare un’istruzione a ogni tick, ma possono eseguire più istruzioni alla volta 33 34 Software • Il software visto dal computer – la macchina vede un oggetto binario, una lunga sequenza di parole (gruppi di 4 byte) • Il linguaggio assembler – forma alternativa del linguaggio macchina che usa lettere e numeri in modo che le persone lo possano comprendere più facilmente – il computer esamina il programma in assembler e quando incontra le parole le cerca in una tabella per trovare la corrispondente cifra binaria; quindi converte in binario e assembla i pezzi “costruendo” l’istruzione macchina completa 35 Software (cont.) • Linguaggi di programmazione di alto livello – oggi la maggior parte del software è scritta in un linguaggio di alto livello che è compilato (tradotto) in linguaggio assembler, che viene a sua volta assemblato per ottenere un file binario – I linguaggi includono strutture speciali che aiutano i programmatori a esprimere istruzioni complicate • Esempio: un blocco if è composto di tre parti – una domanda a cui si può rispondere sì e no (il test) – le istruzioni che il computer dovrà eseguire se il test risulta vero – le istruzioni che il computer dovrà eseguire se il test risulta falso. 36 37 38 Sistemi operativi • Offrono le operazioni base necessarie per l’uso efficace del computer, ma non supportate direttamente dall’hardware • I tre più usati sono: – Microsoft Windows – MacOSX di Apple – Unix • Il sistema operativo (OS) esegue il boot, gestisce la memoria, le periferiche, i file e la connessione a Internet 39 Programmazione avanzata • I programmatori riutilizzano software precedentemente sviluppato per rendere più facile il loro lavoro • Esempio: la GUI (interfaccia utente) – i bordi delle finestre, le barre di scorrimento, i pulsanti, i puntatori, ecc. sono “impacchettati” per i programmatori e forniti con l’OS 40 Circuiti integrati • Miniaturizzazione – la velocità del clock è così alta perché il microprocessore è piccolissimo (i segnali elettrici percorrono circa 30 centimetri in un nanosecondo) 41 Circuiti integrati • Fotolitografia – Processo di stampa. Invece di collegare i circuiti a mano, si usa una tecnica fotografica applicata più volte consecutive – Il costo del circuito è indipendente dalla sua complessità 42 La tecnologia dei semiconduttori • Integrazione – I componenti attivi e le piste che li collegano sono costruiti insieme, in un singolo processo e con gli stessi materiali – Si risparmia spazio e si producono componenti monolitici, più affidabili • Il silicio è un semiconduttore – La capacità di controllare il passaggio di corrente in un semiconduttore è fondamentale per la costruzione dei computer 43 Dall’applicazione agli elettroni • Riepilogo: – Partiamo da un processo di elaborazione dell’informazione – Il processo è svolto da un’applicazione, implementata sotto forma di programma in un linguaggio di alto livello come C o Java – Il programma esegue operazioni specifiche; i servizi standard come stampa o salvataggio su disco sono messi a disposizione dal sistema operativo – I comandi del programma sono compilati, cioè tradotti in istruzioni in linguaggio assembler 44 Dall’applicazione agli elettroni (cont.) – Le istruzioni assembler sono tradotte in codice macchina binario – Le istruzioni binarie sono registrate sull’hard disk – Le istruzioni macchina vengono trasferite dal disco nella memoria RAM – Il ciclo macchina esegue le istruzioni una dopo l’altra – Tutte le istruzioni del computer sono eseguite dai circuiti contenuti nell’ALU, utilizzando il modello descritto precedentemente 45