LEZIONE 1: ELEMENTI DI STORIA ALAN TURING e le sue ...esoneri-esami/... · Grazie a Leibniz ci fu:...

6
LEZIONE 1: ELEMENTI DI STORIA 1642: PASCAL COSTRUISCE LA PASCALINA La Pascalina è una macchina in grado di eseguire addizioni e sottrazioni automatiche. Il meccanismo consisteva di due file di dischi combinatori dentati collegati orizzontalmente e verticalmente. Ogni disco poteva essere ruotato di 10 posizioni: una rotazione completa causava la rotazione di una posizione del disco adiacente a sinistra, realizzando il riporto. 1673: MACCHINA CALCOLATRICE DI LEIBNIZ La macchina eseguiva solo addizioni, sottrazioni, moltiplicazioni e divisioni. Grazie a Leibniz ci fu: L’avvio della logica formale, La costruzione di una macchina da calcolo, L’idea di utilizzare le macchine da calcolo per verificare le ipotesi, Realizzò una calcolatrice escogitando un organo traspositore (detto Cilindro di Leibniz), che permetteva di svolgere le operazioni di moltiplicazioni e divisione ricorrendo a somme successive o sottrazioni successive. 1700: GIOVANNI POLENI Realizzò una calcolatrice su un diverso tipo di traspositore che aveva la possibilità di presentare un numero di denti variabile in relazione alla cifra da rappresentare. 1822-1834: BABBAGE E LE SUE INVENZIONI Charles Babbege era un professore di matematica all’università di Cambridge, filosofo analitico e scienziato, esperto in costruzioni ferroviarie. È conosciuto grazie a: La MACCHINA DIFFERENZIALE: il modello fu presentato il 14 giugno 1822 alla Royal Astronomical Society. Quando Babbage mostrò il piccolo prototipo funzionante, in ruote dentate di ottone, fu insignito di una medaglia d’oro e ottenne dal governo un finanziamento di 1500 sterline per cominciare l’opera, che egli credeva di completare in tre anni, ma che non fu mai conclusa. Il suo scopo era quello di ridurre al massimo le operazioni difficili nella creazione delle tabelle di polinomi per sequenze di dati in ingresso utilizzando un metodo numerico chiamato “il metodo delle differenze.” CARATTERISTICA PRINCIPALE Algoritmo fisso alle differenze finite per calcolare i valori di un polinomio di terzo grado. La MACCHINA ANALITICA: tra il 1833 e il 1842, Babbage progettò e cercò di costruire una macchina che: 1. Fosse programmabile per eseguire ogni genere di calcolo, non solo quelli relativi alle equazioni polinomiali; 2. Avesse dispositivi di ingresso per introdurre, da un lato le regole (gli algoritmi) e dall’altro i valori (le variabili e le costanti). Il modo più semplice di fare questo, consisteva nell’utilizzo di schede perforate o nastri perforati. La MACCHINA ANALITICA era formata da: 1. Una unità di controllo, detta Mulino (Mill); 2. Una memoria, costituita da una pila di registri in cui venivano memorizzati dati e risultati intermedi. Ogni scheda-operazioni specifica uno fra 4 dispositivi aritmetici, corrispondenti alle 4 operazioni. Inoltre, le schede-variabili specificano le locazioni di memoria da usare per una specifica operazione. La MACCHINA ANALITICA PROGRAMMABILE: Ada Lovelace fu conquistata dal progetto di Babbage ed ideò i programmi per la macchina analitica. È stata la prima programmatrice del mondo. A lei si deve l’idea di loop e di subroutine. Il linguaggio di programmazione ADA ha preso il nome da lei. 1930 – 1943: ZUSE e AIKEN Konrad Zuse in Germania e Howard Aiken negli Stati Uniti costituirono due macchine molto simili alla Macchina analitica di Babbage, utilizzando tecnologia elettromeccanica. ZUSE costruì lo Z-1, il primo computer elettromeccanico a relè. Il computer non si riuscì mai a vedere la luce perché scomparve sotto i bombardamenti alleati in Germania. AIKEN costruì il Mark I, versione a relè della macchina di Babbage. La memoria aveva una capacità di 72 numeri decimali di 23 cifre ciascuno. Le schede perforate erano di un solo tipo ed avevano il formato A1 A2 OP dove OP è l’operazione da effettuare, A1 ed A2 sono i registri contenenti i dati su cui operare. Il risultato veniva messo in A2 ALAN TURING e le sue “MACCHINE” Alan Turing disegnò una macchina o automa universale, in grado di eseguire una qualsiasi procedura di calcolo o, più in generale, un elenco di operazioni necessarie per risolvere un problema in un numero finito di operazioni. Progettò e costruì “LA BOMBA”, una macchina elettromeccanica analogica per decodificare il codice di trasmissione tedesco (Enigma), fornendo alla marina inglese le comunicazioni nemiche su un piatto d’argento. Progettò e costruì “COLOSSUS”, il primo computer britannico digitale programmabile costruito in segreto per la Royal Navy, in grado di forzare i codici sviluppati dai tedeschi durante la seconda guerra. È stato il primo calcolatore digitale ad usare valvole termoioniche per rappresentare ed elaborare informazioni. Progettò e costruì, basandosi sui concetti di automa ed algoritmo, “LA MACCHINA DI TURING (MdT)”. 1. Stabilisce le caratteristiche di un automa in grado di eseguire un algoritmo (MdT). 2. Tesi di Church-Turing Stabilisce che un problema è risolvibile se esiste sempre un procedimento risolutivo da formalizzare con un algoritmo. Qualunque funzione è calcolabile con una MdT Universale ovvero una macchina che calcola funzioni. 3. Test di Turing Quando un interlocutore umano in comunicazione con una macchina non è in grado di distinguere le risposte della macchina da quelle di un altro essere umano, allora si può dire che la macchina è intelligente (intelligenza artificiale). 1 a GENERAZIONE ELABORATORI ELETTRONICI (1945-55) ENIAC (Electronic Numerical Integrator and Computer) – USA Primo calcolatore digitale elettronico programmabile general purpose. Fu costruito nell’università della Pennsylvania agli inizi degli anni ’40 per automatizzare il calcolo delle tavole balistiche per l’esercito americano. Era in grado di effettuare 1900 addizioni/sec e 400 moltiplicazioni/sec. Era dotato di 18000 valvole termoioniche, occupava una superficie di 200mq, pesava oltre 35t e consumava 140 kilowatt. EDVAC (Electronic Discrete Variable Computer) – 1950 Derivato dall’ENIAC, esso ne perfeziona il conetto di programmabilità, in quanto i programmi sono incorporati nella memoria della macchina. Un’altra importante differenza consisteva nell’utilizzo del codice binario per la rappresentazione dell’informazione. IAS – Macchina di Von Neumann Von Neumann riteneva importante definire le funzioni logiche di un computer, piuttosto che concentrarsi sugli aspetti elettromeccanici. Il suo contributo si basa su duce intuizioni fondamentali: - Separare le funzioni di controllo dell’elaborazione dalle funzioni di esecuzione; - Prevedere moduli hardware specifici per ognuna delle funzioni logiche fondamentali: CONTROLLO, ESECUZIONE, MEMORIZZAZIONE, COMUNICAZIONE Nei moderni computer, il processo di elaborazione è: 2 a GENERAZIONE – I TRANSISTORS (1955-65) Il 22 giugno 1948 vennero presentati I TRANSISTOR. I vantaggi sono: L’hardware del computer diventava meno ingombrante Consumava di meno Notevolmente più veloce Duravano mediamente 100 volte di più delle valvole Meno manutenzione La Bell costruì nel ‘55 il primo elabor. a transistor: TRADIC. 3 a GENERAZIONE – IL CIRCUITO INTEGRATO (1965-80) Nel 1958 nacque il primo circuito integrato ovvero un’intera unità elettronica avente funzione di transistor, di diodi, di condensatori, di resistenze. Il tutto all’interno di una piastrina di silicio. In questi anni vennero fatti vari passi avanti nella miniaturizzazione: Anni 60: SSI Small Scale Integration Anni 70: LSI Large Scale Integration Anni 80: VLSI Very Large Scale Integration Il primo PC che usò i circuiti integrati era l’IBM System/160 4 a GENERAZIONE – IL MICROPROCESSORE Nel 1971 l’Intel introduce sul mercato il primo microprocessore. Nel 1975 iniziarono a comparire i primi rudimentali PC (come l’Altair 8800 senza tastiera e senza monitor) che, grazie ai chip, permisero di rimpiazzare le unità logiche della Terza Generazione, che costavano molto sia in termini di spazio che di presso. Il Personal Computer: Diretto discendente del minicomputer – architettura a bus – parole e istruzioni a 16bit Nasce nel 1975 Esplosione del mercato dei “cloni” dei PC IBM (anni 1980-90) Crollo dei costi ed enorme espansione dell’utenza. L’espansione è dovuta a: aumento della capacità della CPU, discesa dei costi della memoria, discesa dei costi dei dischi.

Transcript of LEZIONE 1: ELEMENTI DI STORIA ALAN TURING e le sue ...esoneri-esami/... · Grazie a Leibniz ci fu:...

LEZIONE 1: ELEMENTI DI STORIA

1642: PASCAL COSTRUISCE LA PASCALINA La Pascalina è una macchina in grado di eseguire addizioni e sottrazioni automatiche. Il meccanismo consisteva di due file di dischi combinatori dentati collegati orizzontalmente e verticalmente. Ogni disco poteva essere ruotato di 10 posizioni: una rotazione completa causava la rotazione di una posizione del disco adiacente a sinistra, realizzando il riporto. 1673: MACCHINA CALCOLATRICE DI LEIBNIZ La macchina eseguiva solo addizioni, sottrazioni, moltiplicazioni e divisioni. Grazie a Leibniz ci fu:

L’avvio della logica formale,

La costruzione di una macchina da calcolo,

L’idea di utilizzare le macchine da calcolo per verificare le ipotesi,

Realizzò una calcolatrice escogitando un organo traspositore (detto Cilindro di Leibniz), che permetteva di svolgere le operazioni di moltiplicazioni e divisione ricorrendo a somme successive o sottrazioni successive.

1700: GIOVANNI POLENI Realizzò una calcolatrice su un diverso tipo di traspositore che aveva la possibilità di presentare un numero di denti variabile in relazione alla cifra da rappresentare. 1822-1834: BABBAGE E LE SUE INVENZIONI Charles Babbege era un professore di matematica all’università di Cambridge, filosofo analitico e scienziato, esperto in costruzioni ferroviarie. È conosciuto grazie a:

La MACCHINA DIFFERENZIALE: il modello fu presentato il 14 giugno 1822 alla Royal Astronomical Society. Quando Babbage mostrò il piccolo prototipo funzionante, in ruote dentate di ottone, fu insignito di una medaglia d’oro e ottenne dal governo un finanziamento di 1500 sterline per cominciare l’opera, che egli credeva di completare in tre anni, ma che non fu mai conclusa. Il suo scopo era quello di ridurre al massimo le operazioni difficili nella creazione delle tabelle di polinomi per sequenze di dati in ingresso utilizzando un metodo numerico chiamato “il metodo delle differenze.” CARATTERISTICA PRINCIPALE Algoritmo fisso alle differenze finite per calcolare i valori di un polinomio di terzo grado.

La MACCHINA ANALITICA: tra il 1833 e il 1842, Babbage progettò e cercò di costruire una macchina che: 1. Fosse programmabile per eseguire ogni genere di

calcolo, non solo quelli relativi alle equazioni polinomiali;

2. Avesse dispositivi di ingresso per introdurre, da un lato le regole (gli algoritmi) e dall’altro i valori (le variabili e le costanti).

Il modo più semplice di fare questo, consisteva nell’utilizzo di schede perforate o nastri perforati. La MACCHINA ANALITICA era formata da: 1. Una unità di controllo, detta Mulino (Mill); 2. Una memoria, costituita da una pila di registri in cui

venivano memorizzati dati e risultati intermedi. Ogni scheda-operazioni specifica uno fra 4 dispositivi aritmetici, corrispondenti alle 4 operazioni. Inoltre, le schede-variabili specificano le locazioni di memoria da usare per una specifica operazione.

La MACCHINA ANALITICA PROGRAMMABILE: Ada Lovelace fu conquistata dal progetto di Babbage ed ideò i programmi per la macchina analitica. È stata la prima programmatrice del mondo. A lei si deve l’idea di loop e di subroutine. Il linguaggio di programmazione ADA ha preso il nome da lei.

1930 – 1943: ZUSE e AIKEN Konrad Zuse in Germania e Howard Aiken negli Stati Uniti costituirono due macchine molto simili alla Macchina analitica di Babbage, utilizzando tecnologia elettromeccanica.

ZUSE costruì lo Z-1, il primo computer elettromeccanico a relè. Il computer non si riuscì mai a vedere la luce perché scomparve sotto i bombardamenti alleati in Germania.

AIKEN costruì il Mark I, versione a relè della macchina di Babbage. La memoria aveva una capacità di 72 numeri decimali di 23 cifre ciascuno. Le schede perforate erano di un solo tipo ed avevano il formato A1 A2 OP dove OP è l’operazione da effettuare, A1 ed A2 sono i registri contenenti i dati su cui operare. Il risultato veniva messo in A2

ALAN TURING e le sue “MACCHINE” Alan Turing disegnò una macchina o automa universale, in grado di eseguire una qualsiasi procedura di calcolo o, più in generale, un elenco di operazioni necessarie per risolvere un problema in un numero finito di operazioni.

Progettò e costruì “LA BOMBA”, una macchina elettromeccanica analogica per decodificare il codice di trasmissione tedesco (Enigma), fornendo alla marina inglese le comunicazioni nemiche su un piatto d’argento.

Progettò e costruì “COLOSSUS”, il primo computer britannico digitale programmabile costruito in segreto per la Royal Navy, in grado di forzare i codici sviluppati dai tedeschi durante la seconda guerra. È stato il primo calcolatore digitale ad usare valvole termoioniche per rappresentare ed elaborare informazioni.

Progettò e costruì, basandosi sui concetti di automa ed algoritmo, “LA MACCHINA DI TURING (MdT)”. 1. Stabilisce le caratteristiche di un automa in grado di

eseguire un algoritmo (MdT). 2. Tesi di Church-Turing Stabilisce che un problema

è risolvibile se esiste sempre un procedimento risolutivo da formalizzare con un algoritmo. Qualunque funzione è calcolabile con una MdT Universale ovvero una macchina che calcola funzioni.

3. Test di Turing Quando un interlocutore umano in comunicazione con una macchina non è in grado di distinguere le risposte della macchina da quelle di un altro essere umano, allora si può dire che la macchina è intelligente (intelligenza artificiale).

1a GENERAZIONE ELABORATORI ELETTRONICI (1945-55)

ENIAC (Electronic Numerical Integrator and Computer) – USA Primo calcolatore digitale elettronico programmabile general purpose. Fu costruito nell’università della Pennsylvania agli inizi degli anni ’40 per automatizzare il calcolo delle tavole balistiche per l’esercito americano. Era in grado di effettuare 1900 addizioni/sec e 400 moltiplicazioni/sec. Era dotato di 18000 valvole termoioniche, occupava una superficie di 200mq, pesava oltre 35t e consumava 140 kilowatt.

EDVAC (Electronic Discrete Variable Computer) – 1950 Derivato dall’ENIAC, esso ne perfeziona il conetto di programmabilità, in quanto i programmi sono incorporati nella memoria della macchina. Un’altra importante differenza consisteva nell’utilizzo del codice binario per la rappresentazione dell’informazione.

IAS – Macchina di Von Neumann Von Neumann riteneva importante definire le funzioni logiche di un computer, piuttosto che concentrarsi sugli aspetti elettromeccanici. Il suo contributo si basa su duce intuizioni fondamentali: - Separare le funzioni di controllo dell’elaborazione

dalle funzioni di esecuzione; - Prevedere moduli hardware specifici per ognuna

delle funzioni logiche fondamentali: CONTROLLO, ESECUZIONE, MEMORIZZAZIONE, COMUNICAZIONE

Nei moderni computer, il processo di elaborazione è:

2a GENERAZIONE – I TRANSISTORS (1955-65) Il 22 giugno 1948 vennero presentati I TRANSISTOR. I vantaggi sono:

L’hardware del computer diventava meno ingombrante

Consumava di meno

Notevolmente più veloce

Duravano mediamente 100 volte di più delle valvole

Meno manutenzione La Bell costruì nel ‘55 il primo elabor. a transistor: TRADIC.

3a GENERAZIONE – IL CIRCUITO INTEGRATO (1965-80) Nel 1958 nacque il primo circuito integrato ovvero un’intera unità elettronica avente funzione di transistor, di diodi, di condensatori, di resistenze. Il tutto all’interno di una piastrina di silicio. In questi anni vennero fatti vari passi avanti nella miniaturizzazione:

Anni 60: SSI Small Scale Integration

Anni 70: LSI Large Scale Integration

Anni 80: VLSI Very Large Scale Integration Il primo PC che usò i circuiti integrati era l’IBM System/160 4a GENERAZIONE – IL MICROPROCESSORE Nel 1971 l’Intel introduce sul mercato il primo microprocessore. Nel 1975 iniziarono a comparire i primi rudimentali PC (come l’Altair 8800 senza tastiera e senza monitor) che, grazie ai chip, permisero di rimpiazzare le unità logiche della Terza Generazione, che costavano molto sia in termini di spazio che di presso. Il Personal Computer:

Diretto discendente del minicomputer – architettura a bus – parole e istruzioni a 16bit

Nasce nel 1975

Esplosione del mercato dei “cloni” dei PC IBM (anni 1980-90)

Crollo dei costi ed enorme espansione dell’utenza.

L’espansione è dovuta a: aumento della capacità della CPU, discesa dei costi della memoria, discesa dei costi dei dischi.

LEZIONE 2: CICLO DI ISTRUZIONE, CLASSIFICAZIONE E LIVELLI DELLE ARCHITETTURE DI CALCOLATORE

IL COMPUTER Elabora e memorizza dati, rappresentati in un formato digitale binario, sulla base di istruzioni in esso memorizzate.

INFORMAZIONI = DATI e/o ISTRUZIONI L’informatica non è riducibile al solo calcolatore ma attiene alla tecnologia della macchina, al suo modo di operare, di calcolare e di conservare le informazioni. La COMPUTER SCIENCE tratta di tecnologia per conservare informazioni, di metodi per la formalizzazione del processo di calcolo, di modelli di computazione, di modelli per la conservazione dei dati, di modelli di comunicazione digitale, … Il computer quindi:

Legge informazioni di ingresso (dati di input);

Elabora tali informazioni in base ad un insieme di istruzioni (programma);

Restituisce le informazioni così trasformate (dati di output).

PROGRAMMARE UN COMPUTER

ALGORITMO Insieme di regole (o operazioni o istruzioni) che, se eseguite in un ordine prestabilito, permettono di trovare il risultato del problema a partire dai dati in ingresso.

PROGRAMMA Algoritmo tradotto in un linguaggio comprensibile al computer.

IL MODELLO DI VON NEUMANN Caratteristiche della macchina di Von Neumann : • Separazione Controllo-Calcolo • Proceduralità: possibilità di eseguire differenti

programmi memorizzati • Sequenzialità: regola della selezione della istruzione

da eseguire rigidamente fissata • Connessione tra le unità funzionali con singolo flusso

di informazione tra memoria e processore

CICLO DI ISTRUZIONE 1. La CU preleva (fetch) una istruzione dalla memoria

centrale, utilizzando l’indirizzo conservato nel PC, e la trasferisce in un suo registro (IR);

2. Il PC viene incrementato: (PC) (PC) + 1 3. L’istruzione viene decodificata nell’IR: si determina

cioè il tipo di istruzione e si indirizza il circuito o il microprogramma che la esegue;

4. Se l’istruzione usa operandi, si determina la loro posizione (indirizzo) e, se necessario, vengono trasferiti in registri dell’ALU (fetch degli operandi);

5. L’istruzione viene eseguita; in presenza di operatori aritmetico/logici, gli operandi vengono inviati alla ALU per eseguire l’operazione;

6. I risultati vengono trasferiti in memoria centrale (store);

7. Si torna al punto 1 e inizia a processare l’istruzione successiva puntata dal PC.

PROGRAMMA vs LINGUAGGIO Un programma è: • Descrizione della procedura di elaborazione; • Sequenza di istruzioni espresse in un linguaggio

comprensibile dalla macchina. L’insieme delle istruzioni primitive in un elaboratore definiscono il linguaggio del sistema.

LIVELLI DI ASTRAZIONE I sistemi di elaborazione sono sistemi gerarchici con diversi livelli di astrazione. Ogni livello costituisce un sottosistema a sé, caratterizzato dai suoi componenti HW/SW e da un suo linguaggio. Esiste una relazione ben definita fra i singoli livelli (tra un singolo livello e il livello sovrastante e sottostante): • Ogni livello fornisce servizi al livello superiore; • Ogni livello utilizza il livello inferiore. I livello HW è il livello di base che permette il funzionamento di tutti i livelli superiori. MACCHINE VIRTUALI

Così come ad una macchina reale corrisponde un linaggio, ad ogni macchina virtuale corrisponde un linguaggio costituito da tutte le istruzioni che quella macchina può eseguire. Il set di istruzioni comprensibili dalla macchina virtuale costituisce un nuovo linguaggio orientato alla

Rappresentazione più efficace della macchina e del problema computazionale che si vuole risolvere. Realizzare una macchina reale capace di comprendere il nuovo linguaggio sarebbe troppo costoso e/o poco efficiente. TRADUTTORI: COMPILATORE vs INTERPRETE Un Interprete opera in modo che ogni istruzione in linguaggio Ln sulla macchina Mn venga esaminata, decodificata (tradotta) e poi eseguita immediatamente in una sequenza di istruzioni in linguaggio Ln-1:

Un Compilatore è un programma che traduce un programma scritto in linguaggio Ln in un programma scritto in linguaggio Ln-1, che quindi può essere eseguito una o più volte dalla macchina Mn-1.

L’elaboratore esegue tutto il programma in Ln-1, dopo che il compilatore ha tradotto il programma in Ln-1 ed ha rilevato tutti gli errori sintattici, consentendone la correzione.

LEZIONE 3: EVOLUZIONE DELLE ARCHITETTURE DI CALCOLO

LE PRESTAZIONI DELL’HW I microprocessori hanno avuto una crescita esponenziale delle prestazioni ed una miniaturizzazione spinta delle componenti: • Organizzazione più efficiente delle componenti

(parallelismo) e del processo di calcolo; • Velocità maggiore di funzionamento delle componenti:

incremento della frequenza di clock . Crescita del parallelismo temporale e fisico:

• Pipeline + Pipeline parallele (superscalari);

• Superscalari + replica registri; • Multithreading simultaneo (SMT). Problemi: • Maggiore complessità > logica più complessa; • Aumento dell’area del chip per supportare il

parallelismo; • Più difficile da progettare, realizzare e verificare

(debug). LE PRESTAZIONI DELL’HW e DEL SW Amdahl (padre dell’IBM 360) negli anni ’60 faceva notare che il tempo totale di esecuzione di un programma (t) poteva essere suddiviso in un tempo di esecuzione necessariamente sequenziale (s) ed un tempo di esecuzione parallelizzabile (p). Dati n calcolatori, il tempo totale risulterebbe non minore di: 𝒕 = 𝒔 + 𝒑/𝒏. Questo argomento ha influito in passato sulla valutazione delle potenzialità del calcolo parallelo. In realtà si è visto che questa importante conclusione è mitigata dal fatto che all’aumentare delle dimensioni dei problemi si incrementa quasi esclusivamente la parte parallelizzabile! Legge di Gustafon La vera difficoltà non è realizzare architettura parallele, ma sviluppare applicazioni parallele: • Le architetture parallele raggiungono buone

prestazioni solo se programmate in modo opportuno; • Servono nuovi algoritmi che riducano al minimo la

parte sequenziale. IL CLOCK Ogni elaboratore contiene un circuito di temporizzazione (clock) che genera un riferimento temporale comune per tutti gli elementi del sistema: • T = periodo di clock in millesimi/milionesimi di

secondo;

• f = frequenza di clock (=1

𝑇) in MHz.

La velocità di elaborazione dipende dalla frequenza del clock che varia dagli 8MHz ai 4900MHz. EVOLUZIONI DELLE ARCHITETTURE + PIPELINE

• Per incrementare le prestazioni del processore, e conseguentemente ridurre il tempo di elaborazione, la prima soluzione possibile è quella di aumentare la frequenza a cui il sistema lavora. Ma la frequenza di clock è legata alla tecnologia e all'organizzazione architetturale della CPU.

• Una possibile alternativa sarebbe quella di far eseguire al processore le istruzioni in parallelo, anziché in modo sequenziale, incrementando in questo modo il numero di istruzioni eseguite per unità di tempo (throughput).

• ARCHITETTURA HARVARD Questa soluzione parte dalla considerazione che la fase di read legge un operando, mentre durante la fase di fetch viene prelevata un'istruzione. Il sistema CPU-memoria viene organizzato in maniera differente rispetto al classico modello di Von Neuman: sono infatti presenti due memorie distinte, una destinata a contenere i dati, mentre l'altra contiene le istruzioni. (Ad es. TMS 320 con 2 tipi di bus interni distinti per istruzioni e dati)

• ARCHITETTURA PIPELINE L'elaborazione di un'istruzione da parte di un processore (il ciclo di istruzione) si compone di 4 passaggi fondamentali: 1. IF (Instruction Fetch): Lettura dell'istruzione da

memoria 2. ID (Instruction Decode): Decodifica istruzione e

lettura operandi da registri 3. EX (Execution): Esecuzione dell'istruzione 4. LOAD o STORE (Data fetch Memory): Accesso alla

memoria (solo per certe istruzioni) La CPU è gestita da un clock centrale e ogni operazione elementare richiede almeno un ciclo di clock per poter essere eseguita. Una CPU classica richiedeva quindi almeno 4 cicli di clock per eseguire una singola istruzione. Una CPU con pipeline è composta da 4 stadi specializzati, capaci di eseguire ciascuno una operazione elementare di quelle sopra descritte. La CPU lavora come in una catena di montaggio cioè ad ogni stadio provvede a svolgere in maniera sequenziale un solo compito specifico per l'elaborazione di una certa istruzione.

PARALLELISMO FISICO Classificazione delle architetture di elaboratore rispetto a: - Numero di processori - Numero di programmi in esecuzione - Struttura della memoria • SISD Single Instruction Single Data Stream • SIMD Single Instruction Multiple Data Stream • MIMD Multiple Instruction Multiple Data Stream

PARALLEL COMPUTING Il punto di vista hardware non basta, occorre esaminare gli aspetti relativi al software in grado di far funzionare in cooperazione le componenti HW. I problemi sono risolvibili con programmi scomponibili in procedure (programmi) indipendenti. Per consentire il “parallel computing” occorrono ulteriori strumenti di programmazione: 1) I linguaggi devono avere strutture linguistiche

appropriate che consentano di far eseguire in parallelo alcune procedure o singole operazioni.

2) Deve esistere una strategia complessiva di interazione tra i nodi. da…CONTROL FLOW ( avanzamento della esecuzione di un programma basato sulla presenza di istruzioni di controllo) a…DATA FLOW ( avanzamento della esecuzione di una procedura basata sulla disponibilità di un dato prodotto da un’altra procedura).

Control Flow model • Basato su architettura di

Von Neumann, con ciclo fetch, decode, execute, store.

• Unica memoria per dati e programma.

Data Flow model • Computazione sincrona,

basata sulla disponibilità dei dati in ingresso ai vari moduli.

• Data-driven • La computazione inizia

quando arrivano i dati.

• Esecuzione guidata da ProgramCounter (o Instruction Pointer), che viene incrementato in automatico.

• La prossima istruzione è determinata dalla istruzione attuale in automatico.

• Le istruzioni decidono come e dove leggere e scrivere i dati.

• Esistono istruzioni specifiche per LOAD e STORE.

• Non esistono istruzioni di Load/Store.

3) La dimensione di ogni singolo processo (programma in esecuzione) deve poter essere contenuta in ciascuna unità di calcolo.

Punto di vista SW Esiste una forte correla- zione tra le caratteristiche hardware di un sistema parallelo e i problemi software che possono es-sere utilmente risolti su di esso: il livello di granularità del parallelismo: • Parallelismo course-

grained: l’elemento software che viene parallelizzato è di grandi dimensioni (es. programma) ed i processi generati da tali procedure non hanno bisogno di comunicare fra di loro frequentemente (es. Sistema UNIX multi-utente, web-server).

• Parallelismo fine-grained: l’elemento software che viene parallelizzato è piccolo (singola operazione); i vari processi paralleli hanno bisogno di comunicare frequentemente poiché stanno cooperando per risolvere lo stesso problema (es. Calcolatori vettoriali).

Punto di vista HW • LOOSELY COUPLED

SYSTEMS (CPU indipendenti, grandi e dotate di poche interconnessioni a bassa velocità come nelle reti).

• TIGHTLY COUPLED SYSTEMS (sistemi in cui il parallelismo è realizzato a livello di componenti più piccole, che interagiscono frequentemente tra loro, come nei parallel processing systems..

PIPELINE e architetture RISC Il problema visto in precedenza era quello della durata delle fasi non costante a seconda dell'istruzione eseguita. Per ovviare a questo inconveniente si cerca di avere un formato di istruzione standard. L'idea di base è quella di delegare ad ogni singola istruzione un compito ben preciso e limitato. Non è necessario che il programmatore sia impegnato nella scrittura di programmi complessi usando istruzioni semplici ed elementari, è il compilatore che effettua la traduzione in modo appropriato. Uno studio ha dimostrato che una piccola percentuale delle istruzioni (nell'ordine del 20%) viene largamente utilizzata (circa per l'80%), mentre ci sono delle istruzioni quasi mai impiegate e quasi superflue. Nasce quindi l'idea di ridurre il numero delle istruzioni e di suddividere le istruzioni in più operazioni semplici. Nascono così le architetture RISC (Reduced Instruction Set Computers), con i seguenti obiettivi: 1. Fasi di durata costante; 2. Semplificazione delle istruzioni in modo da eliminare

la decodifica e l'elaborazione; 3. Limitare gli accessi in memoria usando un elevato

numero di registri. Le regole di base delle architetture RISC sono: 1. Ridurre il DATA PATH CYCLE Per farlo: Ridurre all’osso i riferimenti alla memoria o i metodi di indirizzamento indicizzato, indiretto …, usando solo indirizzamento a registri. PIPELINE per il LOAD e STORE

2. Il MICROCODICE non è indispensabile L’eliminazione dei microprogrammi comporta la necessità di utilizzazione di meccanismi alternativi per velocizzare l’esecuzione delle istruzioni complesse (microprocessori a logica cablata più efficienti e compilatori ottimizzati).

RISC vs CISC

RISC 1. Semplici istruzioni

che richiedono 1 ciclo.

CISC 1. Istruzioni complesse

che richiedono cicli multipli.

2. Tutte le istruzioni possono far

2. Solo LOAD e STORE fanno riferimento alla memoria.

3. PIPELINE. 4. Istruzioni eseguite

direttamente dall’HW.

5. Istruzioni a formato fisso.

6. Poche istruzioni e modi.

7. La complessità è nel compilatore.

8. Insieme multipli di registri.

riferimento alla memoria.

3. Non PIPELINE o pipe ridotto.

4. Istruzioni interpretate da microprogrammi.

5. Istruzioni a formato variabile.

6. Molte istruzioni e modi.

7. La complessità è nel microprogramma.

8. Singolo insieme di registri.

LEZIONE 4: L’ARCHITETTURA A LIVELLO HARDWARE: IL

SOTTOSISTEMA LOGICO-DIGITALE, IL BUS E LE INTERRUZIONI

Architettura e livelli, HSA ed ISA L’architettura è un progetto dello schema funzionale (organizzazione) di un elaboratore. È formato da un set di istruzioni e da componenti hardware. Due parti essenziali: 1. HSA: Hardware System Architecture Definizione del

progetto logico delle parti (sottosistemi) HW e della organizzazione del flusso di dati tra tali sottosistemi.

2. ISA: Instruction Set Architecture Definizione del set di istruzioni a livello di linguaggio macchina.

Più in dettaglio: 1. HSA: Hardware System Architecture Specifica

l’organizzazione dei sottosistemi HW: determina le caratteristiche “strutturali” dell’elaboratore. Riguarda i maggiori sottosistemi HW di un elaboratore: CPU, memoria, sistemi di I/O ed include il progetto logico e l’organizzazione del flusso di dati tra tali sottosistemi.

2. ISA: Instruction Set Architecture Specifica un elaboratore dal punto di vista del programmatore: determina le caratteristiche “computazionali” dell’elaboratore.

FUNZIONI LOGICHE, PORTE LOGICHE, LEGGI DI DE MORGAN e TAVOLE DI VERITÀ Una funzione logica o booleana di n variabili ha solo 2n possibili combinazioni di valori di input. Una funzione booleana può essere descritta mediante una tavola di verità che è una tabella di 2n righe (ogni riga definisce il valore della funzione per una diversa combinazione dei valori delle variabili di ingresso). Le porte logiche più importanti sono:

NOT

A B

0 1

1 0

OR

A B C

0 0 0

0 1 1

1 0 1

1 1 1

AND

A B C

0 0 0

0 1 0

1 0 0

1 1 1

NOR

A B C

0 0 1

0 1 0

1 0 0

1 1 0

NAND

A B C

0 0 1

0 1 1

1 0 1

1 1 0

XOR

A B C

0 0 0

0 1 1

1 0 1

1 1 0

Le leggi di “De Morgan” affermano che: • not (P and Q) = (not P) or (not Q)

• not (P or Q) = (not P) and (not Q) Le tabelle della verità sono tabelle matematiche usate nella logica per determinare se, attribuiti i valori di verità alle proposizioni che la compongono, una determinata proposizione è vera o falsa. Utilizzate come principale rappresentazione di una funzione booleana, le espressioni possono essere costrutti formati da più espressioni, in cui all’inizio compare una premessa ed alla fine una conclusione. RETI LOGICHE e CIRCUITI PER LA MEMORIZZAZIONE Le reti logiche implementano le funzioni logiche. Le funzioni sono analizzate e progettate sulla base della logica booleana, delle leggi di De Morgan e delle relative tavole di verità. Le funzioni logiche sono realizzate utilizzando le porte logiche in opportune combinazioni. • RETI LOGICHE SEQUENZIALI PER LE MEMORIE Latch,

flip-flop, registri, memorie, RAM, ROM, CPU • RETI LOGICHE COMBINATORIE PER LE DIVERSE

OPERAZIONI (FUNZIONI) Decodificatori, comparatori, shift, rotazioni, sommatori, …

Il latch è un circuito elettronico utilizzato per immagazzinare informazioni nei sistemi a logica sequenziale asincrona. Un latch può immagazzinare un bit di informazione, esso costituisce l'elemento base di tutti i circuiti sequenziali. Il latch più semplice è il latch SR, dove S ed R stanno per Set (imposta) e Reset (reimposta). Questo tipo di latch è composto da due porte NAND (Not AND) o due porte NOR (Not OR) con collegamenti incrociati. Il bit immagazzinato è contrassegnato con Q. I flip-flop sono circuiti elettronici molto semplici, utilizzati come dispositivi sincroni di memoria elementare. Essi prevedono due soli stati logici possibili, come i latch SR, ma a differenza di questi utilizzano ingressi di comando sincroni, ovvero regolati con un ingresso dinamico detto clock. Il nome Flip-Flop deriva dal rumore che facevano i primi circuiti di questo tipo, costruiti con relè, quando cambiavano di stato. Le porte logiche sono alla base dei circuiti integrati. Oltre ai semplici circuiti che abbiamo analizzato, è possibile creare circuiti più complessi: shifter, sommatore completo, ALU, clock, ecc…. L’algebra booleana è usata dai progettisti per semplificare i circuiti più complessi. PROCESSORE (CPU – Central Processing Unit) La CPU (Central Processing Unit), detta anche processore, è l’unità più importante del sistema di elaborazione, che svolge le principali operazioni di calcolo e di controllo del sistema. In un personal computer la CPU è collocata su un singolo chip di silicio e viene chiamata microprocessore. Interpreta ogni istruzione mediante una sequenza ben definita di operazioni detta ciclo di istruzione (Von Neumann Machine cycle) …ma l’istruzione corrente può variare tale sequenza... • È provvisto di meccanismi idonei a: estrarre una

istruzione (FETCH), decodificarla (DECODE), eseguirla (EXECUTE), determinare la prossima istruzione da eseguire.

• È costituito da: unità di controllo (CU-Control Unit), unità di calcolo (ALU-Aritmetic Logic Unit), registri (Contatore (PC), di istruzione (IR), ecc…), clock.

• REGISTRI (introduzione) Ogni registro è una memoria molto piccola ma veloce utilizzata per memorizzare all'interno della CPU: dati prelevati dalla memoria e su cui la CPU deve lavorare; istruzioni prelevate dalla memoria e che la CPU deve eseguire; indirizzi di celle di memoria all'interno delle quali ci sono dati o istruzioni da prelevare.

• REGISTRI (dettaglio) La CPU contiene un numero limitato di registri operazionali e alcuni registri dedicati: 1. PC (Program Counter): contiene l’indirizzo della

prossima istruzione da eseguire 2. IR (Instruction Register): contiene l’istruzione che

deve essere eseguita 3. MAR (Memory Address Register): contiene

l’indirizzo della cella di memoria usata per lettura o scrittura di un dato

4. MDR ( Memory Data Register): contiene il dato che è stato letto o che deve essere scritto nella locazione indirizzata dal MAR

5. PSW (Program Status Word): contiene informazioni, opportunamente codificate, circa l’esito dell’esecuzione dell‘istruzione corrente.

• CLOCK È l'orologio interno che scandisce la durata di un ciclo di esecuzione, permettendo il sincronismo delle operazioni. La frequenza del clock si misura in Mhz e indica il numero di operazioni elementari eseguite in un secondo: la frequenza del clock fornisce un'idea della velocità di elaborazione del processore centrale (non del computer).

• Unità di contro (CU, Control Unit) Compito fondamentale dell’unità di controllo è quello di generare e controllare la sequenza di operazioni

necessarie per effettuare ogni “ciclo di istruzione”, è cioè responsabile del trasferimento e della decodifica delle istruzioni dalla memoria centrale ai registri della CPU.

PC: Program Counter - contiene l'indirizzo in memoria della prossima istruzione che si deve prelevare ed eseguire. Le istruzioni sono memorizzate in sequenza si incrementa ogni istruzione; IR: Registro istruzione corrente, contiene l'istruzione che si deve decodificare ed eseguire in quel momento; inizialmente prima istruzione; MAR: Memory Address Register, registro indirizzi di memoria, contenente gli indirizzi in memoria dei dati su cui le istruzioni hanno bisogno di operare;

• Unità di controllo cablata È realizzata con HW mediante dispositivi logici in grado di generare la sequenza di segnali di controllo necessari per prelevare ed eseguire ogni istruzione in linguaggio macchina.

• Unità di controllo microprogrammata Approccio algoritmico alla realizzazione della unità di controllo: 1. Ad ogni istruzione macchina è associato un

Microprogramma, un insieme di microistruzioni ognuna delle quali è letta ed eseguita in sequenza.

2. Ogni microistruzione è costituita da un insieme di micro-ordini organizzati in una word e registrati in una memoria.

3. Ogni micro-ordine corrisponde ad un segnale di controllo

È in grado di interpretare micro-istruzioni per l’esecuzione delle operazioni del ciclo di istruzione.

• ALU, Arithmetic Logic Unit Esegue le operazioni elementari necessarie per l’esecuzione delle istruzioni (operazioni aritmetiche e confronti sui dati della memoria centrale o dei registri). È costituita da un rete logica combinatoria programmabile capace di operare parallelamente su un determinato numero di bit, e da un registro di scorrimento e da un registro di flag (PSW o Flags R) che contiene alcune informazioni logiche sul risultato delle operazioni. Per la memorizzazione dei dati in ingresso e dei risultati l'ALU utilizza alcuni registri operativi ( uno di questi è l‘Accumulatore).

BUS È un insieme di linee usato per collegare le componenti di un calcolatore. Per aumentare la modularità di un sistema di calcolo, fin dagli anni '60 venne introdotta una innovazione architetturale fondamentale: la interconnessione di dispositivi mediante BUS.

• Caratteristica principale é quella di svincolare la CPU

dagli altri dispositivi. • Ogni dispositivo aggiuntivo (unità di ingresso, di uscita,

dischi, ecc.) interagisce autonomamente col resto del sistema mediante un controllore connesso al bus di sistema.

• L'aggiunta di un nuovo controllore connesso al bus permette quindi di aggiungere dispositivi inizialmente non previsti nel sistema, senza modifiche ai dispositivi esistenti.

Per fare comunicare i dispositivi occorre: a) stabilire un protocollo di comunicazione

- definire una forma di interazione e sincronizzazione che rispecchi certe regole (protocollo delle possibili sequenze di interazione),

- dotare ciascun dispositivo di un modulo di interfaccia (rete sequenziale) che colloquia con il processore inviando e ricevendo le sequenza di

segnali che controllano le operazioni di trasferimento.

b) stabilire una topologia del sistema di comunicazione. I componenti del bus sono: 1. BUS INDIRIZZI: seleziona l’unità con cui comunicare; è

unidirezionale; la dimensione dello spazio di indirizzi ha larghezza fissa.

2. BUS DI CONTROLLO: invia segnali di controllo (read, write, BR, BG, …).

3. BUS DATI: trasmette e riceve informazioni; è bidirezionale; la sua ampiezza stabilisce la quantità di informazioni trasferibile in un unico ciclo di clock.

Il bus deve: • permettere la comunicazione tra due qualsiasi

dispositivo o unità • permettere una sola comunicazione alla volta • permettere la trasmissione di una unità alla volta e la

ricezione di più unità contemporaneamente • linee di controllo sufficientemente generali

Esistono vari tipi di bus: • Bus Interno (o locale): collegamento tra dispositivi

della CPU che usano e controllano direttamente il bus • Bus Esterno (o di sistema): collegamento della CPU

con Memoria centrale e Unità Periferiche • Bus Interno espanso: bus interno con estensione fuori

della CPU per connettere unità esterne. Le modalità di comunicazione sono: 1. Bus Protocol: definizione di regole che determinano le

sequenze di interazione tra i dispositivi per la trasmissione di una o più informazioni o Selezione della unità esterna (sulle linee bus

indirizzo) o Scambio di segnali di sincronismo con l’unità

coinvolta nella comunicazione (con le linee di controllo)

o Invio/ricezione della informazione (sul bus dati) 2. Bus Transfer: trasmissione di una o più informazioni,

detta “ciclo di bus ”; ad es.: o Memory read/write cycle o I/O read/write cycle o Interrupt cycle

Il controllo del bus è effettuato mediante segnali di sincronizzazione: • BR Bus Request • BG Bus Grant • BGAck Bus Grant Acknowledge

L’arbitraggio del bus è il meccanismo per assegnare il controllo del bus ad una unità (aspirante master) tra quelle che ne hanno fatto richiesta. Esistono due tipi di arbitraggio: 1. CENTRALIZZATO: il bus viene concesso da un circuito

nella CPU chiamato arbitro. • Unica linea di richiesta del bus (BR) per tutti i

dispositivi; • Unica linea di concessione del bus (BG) catturata dal

dispositivo fisicamente più vicino all’arbitro.

2. DECENTRALIZZATO: non esiste il chip arbitro. La

concessione del bus viene gestita dagli stessi dispositivi. • Differenti linee di richiesta del bus, con priorità

assegnata ai dispositivi con differenti linee di concessione del bus.

• Se più dispositivi hanno bisogno del bus, questo viene preso da chi ha priorità maggiore.

DISPOSITIVI I/O Ad ogni dispositivo di I/O è associato un insieme di indirizzi che lo identificano univocamente. • MODALITÀ DI INDIRIZZAMENTO Ci sono:

1. Memory-Mapped I/O: lo spazio di indirizzamento è condiviso dalla memoria e dai dispositivi di I/O ai quali è riservato un sottoinsieme degli indirizzi di memoria;

2. Istruzioni di I/O: istruzioni speciali per i trasferimenti di I/O che consentano l’accesso ai registri dati dei dispositivi periferici

• INTERFACCIA È L’HW necessario per collegare un dispositivo al bus e consentire il trasferimento di I/O

1. Decodificatore di indirizzi: abilita il dispositivo a riconoscere il suo indirizzo quando compare sulle linee di indirizzo.

2. Circuiti di controllo: generano i segnali di controllo.

3. Registri di dati e di stato: il registro dati memorizza il dato da trasferire o quello ricevuto, il registro di stato contiene flag di controllo.

• MECCANISMI PER REALIZZARE OPERAZIONI DI I/O

1. I/O controllato da programma: il processore controlla ripetutamente un flag di stato del dispositivo di I/O per sincronizzare le operazioni (polling).

2. Accesso diretto in memoria: l’interfaccia del dispositivo trasferisce direttamente i dati da o verso la memoria senza coinvolgere il processore.

3. Interruzioni (INTERRUPT): il dispositivo invia sul bus un segnale di interruzione quando è pronto per una operazione di I/O.

• CONTROLLO DEI DISPOSITIVI Il controllo dello stato dei dispositivi è effettuato mediante due possibili tecniche:

1. Programma di polling: il processore controlla periodicamente lo stato del dispositivo.

2. Interrupt: il dispositivo invia sul bus un segnale di interruzione per segnalare la sua disponibilità al trasferimento dati.

INTERRUPT Sono sistemi che modificano il normale flusso di esecuzione delle istruzioni per gestire situazioni anomale o particolari come: 1. Trasferimenti di dati tra dispositivi; 2. Errori durante l’esecuzione delle istruzioni; 3. Condizioni anomale durante l’esecuzione delle

istruzioni, ecc.;

• FUNZIONI DI UN SISTEMA DI INTERRUZIONI Sono:

1. Garantire che il verificarsi di una interruzione non provochi interferenze indesiderate sul programma che viene interrotto (commutazione del contesto - trasparency).

2. Il sistema deve saper identificare l’interruzione al fine di selezionare ed attivare la routine di servizio ad essa associata (interrupt vector).

3. Il sistema deve poter gestire gerarchie di priorità delle richieste di interruzione, per evitare i problemi che sorgono quando le richieste di interruzione generate da dispositivi diversi entrano in conflitto (multiple interrupt, daisy chain).

• DIAGRAMMA DI STATO PER LA GESTIONE DELLE INTERRUZIONI

• IDENTIFICAZIONE DEGLI INTERRUPT

1. Gli indirizzi di memoria delle procedure di servizio sono memorizzati in memoria centrale in una tabella detta IVT (Interrupt Vector Table).

2. Una interruzione provocata da un dispositivo o da un evento genera automaticamente un IVN (Interrupt Vector Number) che corrisponde all’indice nell’interrupt vector table della procedura di servizio corrispondente all’interrupt generato.

In questo modo il processore ottiene non solo il riconoscimento del tipo di interruzione, ma anche l’attivazione automatica della corrispondente routine di servizio, tramite un salto indiretto all’indirizzo fornito dall’interrupt vector number.

• GERARCHIA DI PRIORITÀ Gli eventi che generano i

conflitti sono: 1. Presenza contemporanea di due o più richieste di

interrupt (interruzioni multiple); 2. Richiesta di interruzione mentre è in corso

l’esecuzione di una routine di servizio di un’altra interruzione.

• TIPI DI INTERRUZIONI Interrupt interni o sincroni 1. TRAP interruzione generata alla conclusione

della esecuzione di una istruzione, cioè dopo che si è verificata la trasformazione del registro di stato (es.: overflow, parity error, …)

2. FAULT interrupt generato durante l’esecuzione dell’istruzione con una trasformazione di stato recuperabile, quando cioè il PC punta ancora alla istruzione corrente (es: divisione per 0)

3. ABORT come il fault ma non recuperabile (es: illegal instruction o software itnerrupt)

4. TRACING quando ogni istruzione genera una eccezione subito dopo la sua esecuzione.

Interrupt esterni o asincroni 5. BUS ERROR dovuto ad un segnale di

sincronizzazione che tarda ad arrivare o ad una violazione di protezione di memoria (es: paging)

6. RESET in seguito ad un evento catastrofico che prova il blocco del processore ed il restart del sistema (es.: power failure)

LEZIONE 5: IL LIVELLO HARDWARE: IL PC, I REGISTRI, LE

MEMORIE ED I DISPOSITIVI ESTERNI

Il COMPUTER ESTERNAMENTE è formato da dispositivi di input (tastiera, mouse, light pen, scanner e modem), dispositivi di output (monitor, stampanti, modem, altre periferiche) e memorie secondarie con relativi driver (HDD, floppy disk, CD-ROM, DVD-ROM). INTERNAMENTE è formato dal processore, dalla memoria centrale, bus e (ovviamente) dalla scheda madre. • L’unità centrale, racchiusa in un cabinet (desktop o

tower), raccoglie i componenti essenziali al funzionamento del computer;

• Il processore, le unità di memoria centrale, le schede di espansione sono alloggiati su una scheda madre e sono connessi mediante linee di comunicazione (BUS interno).

• I dispositivi esterni e le periferiche di I/O (video, dischi, tastiere, …) sono connessi all’unità centrale mediante linee (cavi) di comunicazione.

MOTHERBOARD (o SCHEDA MADRE) È il più grande circuito stampato del computer, su di essa vi sono gli alloggiamenti (socket) per il processore, quelli per le schede di espansione (slot), le linee di collegamento da/per la CPU (bus) ed altri circuiti integrati. MICROPROCESSORE (o CPU) È l’unità composta di un certo numero di chip standard VLSI. Il processore, CPU (Central Processing Unit), è la componente più importante del computer e nel tempo è stata la più soggetta al processo di evoluzione tecnologica. Il processore è alloggiato sulla scheda madre, non è molto più grande di un francobollo ed è dotato di una ventola per dissiparne il calore. Le prestazioni della CPU dipendono da molti fattori: - insieme delle istruzioni (instruction set) eseguibili; - dimensioni dei registri; - frequenza di clock. Il processo di sincronizzazione avviene tramite un orologio (clock) interno la cui frequenza in pulsazioni espressa in MHz, determina la velocità di elaborazione del computer. MEMORIE • CARATTERISTICHE

1. volatilità: se si spegne il PC la RAM viene cancellata, le memorie di massa (floppy disk e hard disk) invece sono permanenti ;

2. capacità (nota anche come spazio di indirizzamento): numero di unità elementari (byte o parole) di informazione che può essere immagazzinato in memoria;

3. tempo di accesso: tempo necessario per completare una richiesta di lettura o scrittura;

4. velocità di trasferimento: dei dati sia in lettura che in scrittura.

• TIPOLOGIA DI ACCESSO ALLE MEMORIE 1. RAM (Random Access Memory), è ad accesso

“random” (casuale) diretto, è volatile e viene utilizzata per l’immagazzinamento momentaneo di dati e istruzioni.

2. SAM (Sequential Access Memory), non è volatile e permette solo un accesso sequenziale alle informazioni.

3. ROM (Read Only Memory) non è volatile e non può essere utilizzata dall’utente (e dai suoi dati) in quanto su di essa il costruttore del computer memorizza programmi che saranno usati ripetutamente ( ad esempio il bootstrap).

• TECNOLOGIE PER REALIZZARE MEMORIE 1. memorie elettroniche. Tipi : SRAM, DRAM, ROM,

PROM (Programmable ROM), EPROM (Erasable-Programmable ROM), FLASH

2. memorie magnetiche 3. memorie ottiche

• GERARCHIA DI MEMORIA Basandosi sul principio di località, la memoria di un calcolatore è realizzata come una gerarchia di memorie :

1. I dati utilizzati più spesso vanno messi nelle memorie più facilmente accessibili;

2. I dati utilizzati più raramente sono posti in memorie con tempi di accesso elevati;

3. Un livello superiore della gerarchia (più vicino al processore) contiene un sottoinsieme di informazioni dei livelli inferiori;

4. Le informazioni vengono di volta in volta copiate solo tra livelli adiacenti.

5. Solo il livello massimo di cache (L1 cache) può essere raggiunto in lettura/scrittura direttamente dal processore;

Organizziamo le memorie secondo una logica gerarchica a causa del “principio di località”:

1. Località temporale L‘accesso ad un elemento di memoria (dato o istruzione), determina una alta probabilità di un nuovo accesso (“in lettura/scrittura”) entro breve tempo. Es: le istruzioni e i dati in un ciclo di istruzione saranno “ letti/scritti” ripetutamente.

2. Località spaziale L’accesso ad un elemento di memoria (dato o istruzione), determina un’alta probabilità di un accesso agli elementi i cui indirizzi di memoria sono vicini. Es: gli accessi agli elementi di un array presentano una elevata località spaziale; nell’esecuzione di un programma è altamente probabile che la prossima istruzione sia contigua a quella in esecuzione.