Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Gestionale (L-Z) 2. Ing. Michele Ruta 1di 31
Sommario Architettura di base: il modello della macchina di Von Neumann: Memoria CPU Bus Interfacce Esempio: Dall algoritmo al programma Fasi di esecuzione di un istruzione 2di 31
Macchina di Von Neumann Unità di Elaborazione (CPU - Central Processing Unit): insieme di microchip per acquisire interpretare ed eseguire le istruzioni di un programma. Memoria centrale (RAM- Random Access Memory): contiene informazioni necessarie all esecuzione di un programma (istruzioni e dati). Bus di sistema: opera il collegamento tra gli elementi funzionali Interfacce: forniscono il collegamento verso le periferiche che permettono lo scambio di informazioni tra elaboratore e mondo esterno (I/O) 3di 31
Macchina di Von Neumann Bus di sistema Collegamento Unità di Elaborazione (CPU) Memoria Centrale (MM) Interfaccia Periferica P 1 Interfaccia Periferica P 2 Esecuzione istruzioni 4di 31 Memoria di lavoro Memoria di massa, stampante, terminale
Macchina di Von Neumann Componenti e ruoli La CPU estrae, decodifica ed esegue istruzioni (elaborazione o trasferimento di informazione) della memoria. Il bus di sistema effettua il collegamento logico/fisico tra gli elementi funzionali in base al trasferimento da attuare. Le fasi di elaborazione si susseguono in modo sincrono rispetto alla scansione temporale imposta da un clock di sistema. L unità di controllo della CPU coordina durante ogni intervallo di tempo l esecuzione delle funzioni da svolgere all interno della CPU o presso gli altri elementi funzionali. LIMITE: esecuzione in sequenza 5di 31
Codifica di dati e istruzioni Tutti i dati e le istruzioni di programma vengono codificati in forma binaria ossia come sequenze finite di 0 e 1 Si parla di bit (binary digit, b): più piccola unità di informazione memorizzabile o elaborabile corrisponde allo stato di un dispositivo fisico e di byte (B): 8 bit Codifica dati: cfr. Codifica binaria dell informazione Codifica istruzioni (elaborazione o trasferimento): codice operativo: specifica la tipologia di operazione da compiere operandi: specifica la locazione dei dati da elaborare o trasferire. 6di 31
Memoria centrale MM Accoglie dati e programmi necessari al lavoro di un elaboratore E un passaggio obbligato per l informazione da e verso la periferia (le operazioni comportano I/O) E volatile e non permanente (come invece è la memoria di massa) Concettualmente: sequenza di celle di memoria, ciascuna contenente una parola: sequenza di byte di dimensione variabile a seconda del calcolatore (>=4 byte) Tecnologicamente: dispositivi a semiconduttore; struttura matriciale ove le righe rappresentano le word e le colonne, in numero pari alla lunghezza della parola, ciascun bit di memoria informazione memorizzata come stato di tensione (1 alto 0 basso) nelle posizioni di memoria agli incroci tra righe e colonne 7di 31
Memoria centrale MM Operazioni sulla memoria (controllate dalla CPU con l uso del bus): Indirizzamento della MM (selezione di una particolare cella): Indirizzo: posizione relativa rispetto alla prima cella (posizione 0) Uso di un apposito registro indirizzi (AR) Lettura dalla MM: Carica (load) il registro dati (DR) con la parola di memoria contenuta nella cella indirizzata Scrittura in MM: Deposita (store) il contenuto del registro dati (DR) nella parola di memoria indirizzata REGISTRO = banco di memorizzazione interno al chip della CPU Caratteristiche: Altissima velocità di accesso Bassissima capienza 8di 31
Memoria centrale (MM) h = 16 bit Parola (word) Dati e istruzioni 0 1 Address Register (AR) store Data Register (DR) k = 10 bit Indirizzo cella load h = 16 bit Dato da leggere/scrivere Spazio di indirizzamento 2 10 =1024 1023 9di 31
RAM e ROM RAM (Random Access Memory): memoria ad accesso casuale: indirizzabile alla word per operazioni di lettura e scrittura ROM (Read Only Memory): aree di memoria a sola lettura, inizializzate dal costruttore con dati e programmi che servono al funzionamento del sistema (contenuto protetto) contenuto persistente (usate nei microcontrollori presenti all interno di dispositivi come centraline, autoradio) 10 di 31
ROM Classificazione in base alla modalità di scrittura in fabbrica: EROM (Erasable ROM): cancellabile con fasci di raggi ultravioletti e riutilizzabili PROM (Programmable ROM): non scritte in fase di costruzione, ma successivamente, con i cosiddetti programmatori di ROM EPROM (Erasable Programmable ROM) Il software ospitato nelle ROM prende il nome di FIRMWARE per la sua natura intermedia tra hardware (non modificabilità durante l esecuzione) e software (programmabilità) 11 di 31
Unità di elaborazione (CPU) Esegue i programmi in memoria centrale prelevando, decodificando ed eseguendo una dopo l altra le istruzioni Contiene gli elementi circuitali che regolano il funzionamento dell elaboratore: unità di controllo: prelievo e decodifica di istruzioni invio segnali di controllo che provocano i trasferimenti o le elaborazioni necessari per l esecuzione dell istruzione decodificata orologio di sistema (clock): sincronizza le operazioni rispetto ad una data frequenza unità aritmetico-logica (ALU, Arithmetic Logic Unit): realizza le operazioni aritmetiche e logiche eventualmente richieste per l esecuzione dell istruzione 12 di 31
Registri della CPU Registro: supporto di memoria interno alla CPU, utilizzabile per memorizzare risultati parziali o informazioni di controllo Registro dati (DR): lungo quanto una parola (h bit) Registro Indirizzi (AR) : lungo k bit Registro Istruzione Corrente (IR, Instruction Register): lungo h bit, contiene, istante per istante, l istruzione in esecuzione Contatore di programma (PC, Program Counter): lungo k bit, contiene l indirizzo della successiva istruzione da eseguire Registro interruzioni (IntR, Interrupt Register): contiene informazioni per la gestione di eventuali eventi anomali (interruzioni) Registri per operandi e risultati delle elaborazioni aritmetico-logiche svolte dall ALU (in numero di due tipicamente indicati con A e B) Registri di lavoro: in numero sufficientemente elevato, contengono dati e istruzioni di uso frequente o risultati intermedi, leggibili e scrivibili velocemente, senza operazioni di load e store 13 di 31
ALU Capace anche di operazioni molto complesse (per semplicità negli esempi si citeranno solo le 4 operazioni fondamentali) Attivata dall unità di controllo mediante un apposito codice operativo Adopera i registri operandi (A e B) caricati con i dati prima dell esecuzione dell operazione Il registro A è caricato con il risultato dell operazione dopo un certo intervallo necessario all esecuzione della stessa, misurato dall orologio di sistema nel caso di divisione intera il resto viene messo in B; per altre operazioni il contenuto di B resta indefinito 14 di 31
ALU - Registro di stato SR (State Register): riporta indicazioni relative al risultato delle operazioni svolte dalla ALU in alcuni suoi bit: 1. Bit di carry, indica la presenza di un riporto (carry over) 2. Bit zero, indica la presenza di un valore nullo in A 3. Bit di segno, riporta il segno del risultato dell operazione aritmetica 4. Bit di overflow, rileva la condizione di overflow (se il risultato dell ultima operazione supera il valore 2 h, massimo valore rappresentabile in A, se A è lungo h bit) 15 di 31
Clock di sistema Tempificatore, sincronizza le operazioni della macchina: L esecuzione di una singola istruzione di macchina può prevedere più cicli di clock Il clock è tarato in modo che in un intervallo di sincronizzazione si possa effettuare un operazione ma non quella successiva: Il trasferimento dell informazione avviene mediante il transito continuo di segnali elettrici verso i dispositivi Ogni dispositivo è caratterizzato da una porta indirizzabile (afferente ad un controller) normalmente chiusa (circuito aperto), in modo tale da non consentire l ingresso di dati e la sovrascrittura di quelli già contenuti Un segnale di controllo proveniente dall unità di controllo apre la porta del dispositivo (chiusura del circuito) su cui si deve effettuare un operazione; un altro segnale la richiude dopo che l operazione viene eseguita 16 di 31
Indirizzo istruzione successiva Registro contatore di programma (PC) Registro interruzioni (IntR) Registro istruzione corrente (IR) Istruzione in elaborazione Parola letta/da scrivere in MM Sincronizzazione Registro dati (DR) Unità di elaborazione (CPU) Stato CPU Flag: C, Z, S, V Registro di stato (SR) A B Clock Registro indirizzi (AR) Operazioni aritmetiche e logiche Unità aritmetico Registri logicaoperandi (ALU) Registri generali Unità di controllo (CU) Indirizzo cella MM Controllo: -Prelievo -Decodifica -Esecuzione 17 di 31
Bus di sistema Insieme di connessioni elementari lungo cui viene trasferita l informazione (trasferendo valori di tensione) Collegamento aperto (non limitato ad un estremo) su cui si interfacciano le varie unità funzionali In ogni istante di tempo collega un unità funzionale trasmittente ed una ricevente dati (CPU con memoria o CPU con interfaccia periferica mediante controller) Sotto il controllo della CPU, che seleziona l interfaccia da attivare (porta) e indica l operazione da compiere: la CPU ha il ruolo di master, le altre unità funzionali di slave 18 di 31
Bus di sistema Classificazione delle linee in base al tipo di informazione trasportata: Bus dati: trasferisce dati dall unità master alla slave e viceversa trasferimento in parallelo grazie alla presenza di molte linee trasferisce tutti i bit di una parola contemporaneamente, dedicando una linea a ciascuno di essi (se il numero di linee del bus dati non è inferiore a quello dei bit della parola) Bus indirizzi: trasferisce indirizzi (per esempio l indirizzo contenuto nel registro indirizzi alla memoria centrale per l indirizzamento) Bus controlli: trasferisce dall unità master alla slave un codice corrispondente all istruzione da eseguire e dall unità slave alla master informazioni sull espletamento dell operazione 19 di 31
Bus di sistema Registro contatore di programma (PC) Registro interruzioni (IntR) Registro di stato (SR) A B Unità aritmetico logica CPU Registro istruzione corrente (IR) Clock Unità di controllo (CU) Registro dati (DR) Master/slave Registro indirizzi (AR) Bus dati, Bus indirizzi, Bus controlli Bus di sistema 20 di 31
Sequenza di lettura Passo 3 PC IntR IR SR A B Ck ALU CU Passo 1 0 123 42 123 DR 42 123 AR Passo Passo 24 1023 READ OK indirizzi dati controlli 21 di 31
Sequenza di scrittura Passo 2 PC IntR IR SR A B Ck ALU CU 0 123 42 70 Passo 1 Passo 4 Passo 35 DR 70 123 AR 1023 WRITE OK indirizzi dati controlli 22 di 31
Interfacce delle periferiche Costituiscono gli elementi circuitali per il collegamento dell elaboratore alla periferia Molto diverse a seconda del tipo di periferica (alcune sono intelligenti, ossia dotate di proprie unità di controllo per convertire ed elaborare dati al posto della CPU), si parla di controller Contengono registri e memorie tampone (buffer) per ospitare i comandi da inviare alla periferica, scambiare dati con essa e controllarne il funzionamento Componenti delle interfacce: Registro dati della periferica (PDR, Peripheral Data Register): consente lo scambio bidirezionale di dati con la periferica; collegato al bus dati Registro comandi della periferica (PCR, Peripheral Command Register): contiene il comando che la periferica dovrà eseguire; collegato al bus controlli Registro di stato della periferica (PSR, Peripheral Status Register): contiene informazioni sullo stato della periferica Esse sono trasferite alla CPU tramite il bus oppure se il registro è direttamente collegato alla CPU con circuiti elettrici speciali, l informazione concorre a riempire l IntR 23 di 31
Interfacce delle periferiche Interfaccia periferica 1 Interfaccia periferica 2 Peripheral Data Register (PDR) Peripheral Command Register (PCR) Peripheral State Register (PSR) Dato da leggere/scrivere Peripheral Data Register (PDR) Comando da Peripheral eseguire Command Register (PCR) Peripheral State Stato della periferica Register (PSR) Bus di sistema 24 di 31
Esempio Supponiamo di voler calcolare il valore dell espressione: z = (a+b) (c+d) leggendo i valori delle variabili a, b, c, d dal dispositivo di input e scrivendo il risultato sul dispositivo di output 1. Leggi dal dispositivo di input il valore delle variabili a, b, c, d 2. Somma il valore di a al valore di b 3. Salva il risultato parziale ottenuto 4. Somma il valore di c al valore di d 5. Moltiplica il risultato parziale appena ottenuto con quello precedentemente salvato 6. Scrivi sul dispositivo di output il risultato della valutazione complessiva 7. Termina l esecuzione del programma. 25 di 31
Esempio 1. Scrivi nella cella di memoria centrale riservata al valore della variabile a il valore letto dal dispositivo di input (disponibile nel registro dati della periferica). Ripeti per b, c, d 2. Somma il valore di a al valore di b Copia il contenuto della cella di memoria riservata ad a nel registro A Copia il contenuto della cella di memoria riservata a b nel registro B Somma il contenuto dei registri A e B 3. Salva il risultato parziale, contenuto nel registro A, in una cella di memoria predisposta per il risultato (z) 4. Somma il valore di c al valore di d Copia il contenuto della cella di memoria riservata a c nel registro A Copia il contenuto della cella di memoria riservata a d nel registro B Somma il contenuto dei registri A e B 5. Moltiplica il risultato parziale appena ottenuto con quello precedentemente salvato Copia il contenuto della cella riservata a z nel registro B (z e B contengono ora a+b, mentre A contiene c+d) Moltiplica il contenuto dei registri A e B 6. Scrivi sul dispositivo di output il risultato della valutazione complessiva Memorizza il risultato appena calcolato (e disponibile nel registro A) nella cella di memoria riservata a z Copia il contenuto della cella di memoria riservata a z nel registro dati della periferica di uscita 7. Termina l esecuzione del programma. 26 di 31
Forma binaria 0100000000010000 Leggi un valore dall input e mettilo nella cella 16 (a) 0100000000010001 Leggi un valore dall input e mettilo nella cella 17 (b) 0100000000010010 Leggi un valore dall input e mettilo nella cella 18 (c) 0100000000010011 Leggi un valore dall input e mettilo nella cella 19 (d) 0000000000010000 Carica il contenuto della cella 16 (a) nel registro A 0001000000010001 Carica il contenuto della cella 17 (b) nel registro B 0110000000000000 Somma i registri A e B 0010000000010100 Scarica il contenuto di A nella cella 20 (z) (ris.parziale) 0000000000010010 Carica il contenuto della cella 18 (c) nel registro A 0001000000010011 Carica il contenuto della cella 19 (d) nel registro B 0110000000000000 Somma i registri A e B 0001000000010011 Carica il contenuto della cella 20 (z) (ris. parziale) in B 1000000000000000 Moltiplica i registri A e B 0010000000010100 Scarica il contenuto di A nella cella 20 (z) (ris. totale) 0101000000010100 Scrivi il contenuto della cella 20 (z) (ris. totale) in output 1101000000000000 Halt 27 di 31
Spazio riservato per a 16 Spazio riservato per b 17 Spazio riservato per c 18 Spazio riservato per d 19 Spazio riservato per z 20 Stato della memoria Cella 0 0100000000010000 1 0100000000010001 2 0100000000010010 3 0100000000010011 4 0000000000010000 5 0001000000010001 6 0110000000000000 7 0010000000010100 8 0000000000010010 9 0001000000010011 10 0110000000000000 11 0001000000010011 12 1000000000000000 13 0010000000010100 14 0101000000010100 15 1101000000000000 28 di 31
Fetch 1 a istruzione Passo 1 Memoria centrale (MM) PC 0000000000 0000000001 0 0100000000010000 Passo 2 Passo 4 AR 0000000000 1023 DR 0100000000010000 Passo 3 IR 0100000000010000 29 di 31
Interpretazione 1 a istruzione IR 0100000000010000 Codice operativo 0100 = leggi da input 30 di 31
Esecuzione 1 a istruzione Indirizzo operando 00000010000 = cella 16 0 Memoria centrale (MM) IR 0100000000010000 16 0001000000011111 Passo 3 Passo 1 AR 0000010000 1023 DR 0001000000011111 Passo 2 Valore di a letto dall input (es. 4127) PDR 0001000000011111 31 di 31