IL MODELLO DI VON NEUMANN Con il termine modello di Von Neumann si intende uno schema progettuale di calcolatori elettronici inventato dal matematico John Von Neumann tra il 1945 e il 1951; la struttura da lui inventata era una tipologia di architettura hardware per computer digitali programmabili. Era costituita da tre componenti fondamentali, a cui andavano ad aggiungersi altre periferiche collegate tramite un modulo di input e/o di output. L'importanza del modello di von Neumann è notevole in quanto è l'architettura hardware su cui è basata la maggior parte dei moderni computer programmabili.
IL MODELLO DI VON NEUMANN L’idea gli venne quando vide l’ENIAC, un ammasso enorme di valvole, condensatori e interruttori da trenta tonnellate di peso, un primordiale computer che però era una macchina limitata, quasi priva di memoria e di elasticità, che eseguiva solo operazioni predeterminate. Per migliorarla utilizzò l'intuizione avuta da Alan Turing una decina d'anni prima nel suo articolo sui numeri computabili, cioè permettere al computer (l'hardware) di eseguire istruzioni codificate in un programma (software) inseribile e modificabile dall'esterno. Nel 1945 pubblicò come frutto di questi studi First Draft of a Report on the Edvac. L'EDVAC era la prima macchina digitale programmabile tramite un software basata su quella che fu poi definita l'architettura di von Neumann.
IL MODELLO DI VON NEUMANN La macchina di von Neumann è composta da 4 tipi di componenti funzionali: Unità centrale di elaborazione (CPU – Central Processing Unit) Esegue istruzioni per l’elaborazione dei dati. Svolge anche funzioni di controllo e coordinamento. Memoria Centrale Memorizza e fornisce l’accesso a dati e programmi in esecuzione. E’ costituita da insieme di celle, ognuna delle quali è identificata da un indirizzo numerico. Interfacce di ingresso e uscita Componenti di collegamento con le periferiche del calcolatore. Interagiscono con l’utente e/o l’ambiente. Bus Il bus è una linea a cui sono collegate contemporaneamente diverse unità la CPU ha il ruolo di master mentre le altre funzionano da slave. Svolge funzioni di trasferimento di dati e di informazioni di controllo tra le varie componenti funzionali.
Dal modello alL’ Architettura di von Neumann
La CPU Esegue i programmi immagazzinati in memoria principale prelevando le istruzioni e i dati relativi, interpretandole ed eseguendole una dopo l’altra. E’ formata da unità di controllo unità logico aritmetica registri La CPU è inoltre caratterizzata dall’insieme delle istruzioni che può eseguire (instruction set).
Le componenti della CPU: CONTROL UNIT (CU) L’unità di controllo del processore esegue una istruzione svolgendo le seguenti tre operazioni di base: Fetch (lettura) Decode (decodifica) Execute (esecuzione) Un programma è eseguito reiterando il ciclo fetch-decode execute (ciclo macchina). L’esecuzione ordinata delle istruzioni è scandita dal clock.
I REGISTRI I registri hanno la funzione di memorizzare all’interno della CPU dati e istruzioni necessari all’esecuzione. Sono piccole unità di memoria (2, 4, 8, 16, 32 byte) con tempi di accesso molto più bassi delle celle della memoria primaria ospitano le informazioni necessarie per eseguire l’istruzione corrente. In numero molto limitato (10, 20, 64) si dividono in registri speciali e generali. I registri speciali non sono accessibili dalle istruzioni.
I REGISTRI SPECIALI Il Program Counter (PC) Contiene l’indirizzo in memoria centrale della prossima istruzione da eseguire. All’inizio dell’esecuzione di un programma viene caricato con l’indirizzo della prima istruzione di quel programma. Ad ogni istruzione eseguita il PC viene modificato per contenere l’indirizzo della istruzione successiva
I REGISTRI SPECIALI L’Instruction Register (IR) Contiene l’istruzione corrente in esecuzione la CU legge l’istruzione contenuta nell’instruction register e la esegue. IL Registro di stato (PSW) Descrive lo stato corrente della esecuzione segnala eventuali errori (ad es.: overflow)
I REGISTRI SPECIALI Registro Indirizzi Memoria (MAR) Contiene l’indirizzo della cella da cui leggere o in cui scrivere un dato. Registro dati Memoria (MDR) Contiene il dato letto dalla memoria o da scrivere in memoria.
I REGISTRI GENERALI I registri generali In numero di 8, 16, 64 sono usati come memorie temporanee per contenere gli operandi delle istruzioni e i risultati parziali durante l’esecuzione delle istruzioni.
ARITHMETIC-LOGIC UNIT (ALU) Si occupa di eseguire le operazioni di tipo aritmetiche/logiche: somme, confronti… preleva gli operandi dai registri e deposita il risultato delle operazioni nei: registri generali. Anni fa alcune CPU erano affiancate da un co-processore matematico. Operazioni Aritmetiche ADD – SUB - MUL - DIV Operazioni Logiche AND - OR - NOT
ARITHMETIC-LOGIC UNIT (ALU)
Trasferimento CPU-memoria Qualunque sia il trasferimento da realizzare, la CPU (master) deve precisare l’indirizzo del dato da trasferire. In queste operazioni, la memoria è comunque uno slave e “subisce” l’iniziativa della CPU, ricevendo da questa l’indirizzo del dato da trasferire e l’informazione sull’operazione da realizzare (lettura o scrittura)
Trasferimento memoria CPU (lettura) La CPU scrive l’indirizzo del dato da trasferire sul MAR che lo propagherà alle linee indirizzi del bus. Contemporaneamente, segnala sulle linee di controllo che si tratta di una lettura. La memoria riceve, tramite il bus, l’indirizzo e l’indicazione dell’operazione da effettuare. Copia il dato dal registro individuato sulle linee dati del bus. Il dato richiesto, tramite le linee dati del bus, arriva al MDR della CPU. Da qui sarà spostato verso gli altri registi interni.
Trasferimento CPU memoria (scrittura) La CPU scrive l’indirizzo del dato da trasferire sul MAR, mentre il dato viene copiato sul MDR. Il contenuto dei due registri viene propagato sulle linee indirizzi e dati del bus. Contemporaneamente, la CPU segnala sulle linee di controllo che si tratta di una scrittura. La memoria riceve, tramite il bus, l’indirizzo, il dato e l’indicazione dell’operazione da effettuare. Copia il dato dalle linee dati del bus al registro individuato dall’indirizzo.
Gerarchia delle memorie
MEMORIA CACHE Livello di memoria intermedio tra i registri e la ram. Per memorizzare i dati usati più spesso senza doverli recuperare in memoria 64, 128, 256, 512KB, 1MB, 2MB Interna o esterna alla CPU Influisce moltissimo sulle prestazioni e il costo della CPU (e quindi del computer) I computer attuali hanno spesso più livelli di cache
MEMORIA CACHE copia il programma in RAM per l'esecuzione copia un pezzettino di programma e dei dati in cache PROGRAMMA PROGRAMMA PROGRAMMA REGISTRI RAM CACHE CPU esegue le istruzioni del programma HARD DISK
Memorie di un computer Registri < 1 KByte 100 * picosecondi Cache < 2 MByte nanosecondi RAM < 8 Gbyte 10 * nanosec Hard disk > 500 GByte 10 * microsec. Dischi ottici 650MB-17GB micro/millisecondi Nastri > 10 GByte 10 * millisecondi
GERARCHIE DELLE Memorie
Bus di sistema Interconnette CPU, memorie ed interfacce verso dispositivi periferici (I/O, memoria di massa, ...). Collega due unità funzionali alla volta una trasmette e l’altra riceve. Il trasferimento dei dati avviene sotto il controllo della CPU.
I Bus di sistema Il bus trasporta dati, indirizzi e comandi. I bus sono composti da: Bus dati (data bus) Bus indirizzi (address bus) Bus comandi (command bus o control bus)
I Bus di sistema Bus dati (data bus) Bidirezionale Serve per trasferire dati, tra la memoria centrale ed il registro dati (MDR) della CPU, tra periferiche e CPU (o memoria centrale) Bus indirizzi (address bus) Unidirezionale Serve per trasmettere il contenuto del registro indirizzi (MAR) alla memoria (o ad una periferica) si seleziona una cella per successive operazioni di lettura o scrittura Bus comandi (command/control bus) Unidirezionale Serve per inviare comandi verso la memoria (es: lettura o scrittura) o verso una periferica (es. stampa verso la stampante /interfaccia)
Caratteristiche dei microprocessori Repertorio di istruzioni: L’insieme delle istruzioni che costituiscono il linguaggio macchina del processore. Frequenza di clock: L’esecuzione di una istruzione può richiedere più cicli macchina. Ampiezza del bus: Numero di bit nel bus interno del processore. Co-processori: Processori specializzati per operazioni complesse (es: co processore matematico). Memoria cache: Una memoria veloce locale al processore, che consente di accedere più velocemente ai dati da elaborare.