Il calcolatore È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica ogni livello di descrizione è caratterizzato da una struttura rappresentante l organizzazione dei componenti del livello ogni componente è caratterizzato dalla funzione che deve svolgere.
Funzioni Le funzioni svolte da un calcolatore sono classificabili in 4 tipologie: elaborazione dati memorizzazione dati trasferimento dati controllo
Proprietà Alcune proprietà flessibilità nel calcolo (general-purpose) modularità della struttura componentistica scalabile e standard semplicità di installazione larga disponibilità di SW a basso costo
Architettura di riferimeto Architettura di Von Neumann sottosistema di interfaccia sottosistema di elaborazione sottosistema di memorizzazione canale (bus) di connessione
Sottosistema di interfaccia Permette di far interagire il calcolatore con il mondo esterno. dispositivi di ingresso/uscita (unità periferiche) gestiti mediante interfacce che controllano il trasferimento dei dati Schermo, tastiera, mouse, memoria di massa,...
Sottosistema di elaborazione il cuore (cervello!) del calcolatore è la CPU (Central Processing Unit). Gestisce le funzioni di controllo e coordinamento elaborazione dei dati Fisicamente è rappresentato dal microprocessore
Sottosistema di memorizzazione Per la memorizzazione dei dati è presente un unità chiamata memoria. Può essere vista come una serie di celle adiacenti, ognuna delle quali è identificata mediante un indirizzo (memory address).
Canale di connessione La connessione dei sottosistemi avviene mediante una linea per il trasferimento dati chiamata bus. Problema: il collegamento contemporaneo di tutte le unità può essere difficilmente gestibile. Soluzione: tecnologia master-slave la gestione dell intero sistema di comunicazione affidata a un master (la CPU) il quale gestisce l accesso al bus le unità periferiche rivestono il ruolo di slave, non possono accedere al bus autonomamente si evitano possibili collisioni fra dati
Pregi e difetti del collegamento a BUS semplicità estendibilità standardizzabilità lentezza limitata capacità sovraccarico della CPU
Il BUS È suddiviso funzionalmente in 3 componenti: bus dati => trasferimento dati CPU <=> memoria CPU <=> interfacce di ingresso/uscita bus indirizzi => trasferimento degli indirizzi di memoria in cui la CPU va a leggere e scrivere bus di controllo =>trasferimento di informazione di controllo per coordinare l intero sistema gestione della politica master-slave direzione dello scambio (lettura/scrittura)
Esecuzione di un programma un calcolatore basato sull architettura di Von Neumann esegue un programma sulla base dei seguenti principi: dati e programmi sono memorizzati in una memoria unica dati e programmi sono indirizzati in base alla loro posizione, indipendentemente dalla loro natura le istruzioni vengono eseguite in modo sequenziale
Il linguaggio macchina il linguaggio per cui la CPU si comporta da esecutore è il linguaggio macchina (o linguaggio assembly). È un linguaggio a basso livello numero di operazioni ridotto numero di operandi ridotto non esiste il concetto di tipo di dato L utilizzo di tale linguaggio implica un ottima conoscenza della struttura fisica del calcolatore ogni CPU è caratterizzata dal suo linguaggio macchina (set di istruzioni)
Istruzioni I programmi sono codificati mediante un linguaggio di basso livello chiamato linguaggio macchina. Anche le istruzioni del linguaggio macchina sono codificate mediante un codice binario. assegnare un codice univoco ad ogni singola istruzione (opcode) oltre all opcode è necessario codificare gli eventuali riferimenti agli operandi necessari all esecuzione dell istruzione. il numero di operandi dipende dal tipo di istruzione. (ES: l istruzione ADD (somma) ha due operandi, l istruzione HALT ha 0 operandi).
il ciclo fetchdecode-execute Nell esecuzione di un programma, la CPU opera ciclicamente nel seguente modo: acquisizione dalla memoria di un istruzione del programma (fase di fetch) identificazione dell istruzione fra quelle che compongono l insieme delle istruzioni (fase di decode) esecuzione dell istruzione (fase di execute)
Struttura di una CPU Una CPU è costituita da 3 sottosistemi principali l unità aritmetico-logica (ALU), la cui funzione è di effettuare operazioni aritmetiche (somme, sottrazioni,...) e logiche (AND, OR,...). i registri: celle di memoria interne alla CPU, utilizzate per memorizzare gli operandi delle operazioni aritmetiche e informazioni di controllo l unità di controllo (CU), che ha funzione di coordinamento
Alcuni registri Tra i vari tipi di CPU, il numero e il tipo di registri è variabile. Sono però sempre presenti i seguenti: PC (Program Counter) contiene l indirizzo di memoria della prossima istruzione da eseguire IR (Instruction Register) contiene una copia dell istruzione da eseguire MAR (Memory Address Register) contiene l indirizzo di memoria dove scrivere o leggere un dato MDR (Memory Data Register) contiene una copia del dato da trascrivere o estratto dalla memoria. PSW (Process Status Word) contiene informazioni inerenti allo status del sistema a seguito dell esecuzione di un istruzione
Ciclo F-D-E nel dettaglio FETCH La CU fornisce alla memoria l indirizzo (contenuto in PC) della contenente l istruzione da eseguire, la richiesta viene eseguita mediante la scrittura di tale indirizzo nel registro MAR e l attivazione di un messaggio di controllo LEGGI sul BUS. La memoria seleziona la cella contenente l istruzione e la invia al registro MDR. La CU copia dal MDR al IR l istruzione corrente.
Ciclo F-D-E nel dettaglio DECODE La CU incrementa il PC in modo che punti alla prossima istruzione da eseguire. La CU esamina l istruzione in IR e determina l operazione da svolgere
Ciclo F-D-E nel dettaglio EXECUTE Le unità interessate all esecuzione dell istruzione vengono opportunamente comandate. Si provvede a prelevare eventuali operandi dalla memoria (fetch degli operandi) e a trasferire il risultato in un registro o in memoria
Coordinamento delle attività il ciclo F-D-E richiede che le varie unità operino in modo coordinato anche dal punto di vista della temporizzazione degli eventi. Si introduce un orologio (CLOCK) che fornisce una cadenza temporale per la sincronia delle singole attività La frequenza del clock (numero di attività elementari nell unità di tempo) è un parametro per valutare la velocità di una CPU. Le CPU attuali hanno una frequenza di CLOCK dell ordine del GHz (1000000 di operazioni al secondo).
Prestazioni di un sistema Parametri valutabili tempo di risposta o di latenza (cioè il tempo che trascorre dall inizio alla fine di un compito) throughput (ammontare del lavoro svolto in un dato tempo)
Prestazioni di un sistema Si può misurare il tempo complessivo necessario al completamento di un compito (elapsed time), che comprende l accesso al disco, alla memoria, attività di I/O, tempo di CPU,... è influenzato dagli altri processi attivi, in particolare dal sovraccarico apportato dal sistema operativo Tempo effettivo di elaborazione (tempo di CPU), non comprende il tempo di attesa dovuto alle operazioni di I/O e all esecuzione di altri processi.
Tempo di CPU t CPU = n CK * T CK t CPU : tempo di CPU n CK : numero di cicli di CLOCK necessari al completamento del processo T CK : periodo di CLOCK oppure t CPU = n CK / f CK t CPU : tempo di CPU n CK : numero di cicli di CLOCK necessari al completamento del processo f CK : frequenza di CLOCK
Tempo di CPU Consideriamo n I numero di istruzioni che vengono eseguite CPI = n CK / n I CPI: numero medio di cicli di CLOCK per istruzione Quindi, t CPU = CPI * n I * T CK Oppure, t CPU = (CPI * n I ) / f CK
Tempo di CPU t CPU = (CPI * n I ) / f CK Il tempo di CPU è influenzato da 1. frequenza di CLOCK 2. numero medio di cicli di CLOCK per istruzione 3. numero di istruzioni
CISC vs RISC Due filosofie di progettazione dei processori CISC (complex instruction set computer) RISC (reduced instruction set computer) Tipo di CPU CISC RISC CPI alto basso n I basso alto f CK media alta C-RISC soluzione intermedia!
Altri indicatori Il tempo di CPU è generalmente il parametro più importante nella valutazione delle prestazioni di un sistema informatico Ci sono comunque altri indicatori MIPS (Mega Instructions per Second) MFLOPS (Mega Floating Point Operations per Second)