Architettura von Neumann Il modello a cui si rifà la maggior parte degli attuali calcolatori risale ad un lavoro di von Neumann uscito nel 1946, che tracciava le linee essenziali su cui basare un calcolatore elettronico. L’elemento che contraddistingue il modello di macchina di von Neumann è la sua proceduralità: la macchina si aspetta un programma costituito da un insieme di istruzioni che le dica cosa fare un istante dopo l’altro. Un calcolatore, secondo il modello di von Neumann è costituito da una memoria e da un processore. Nella memoria sono contenuti dati e programmi. Il processore ha il compito di estrarre le istruzioni del programma dalla memoria , interpretarle ed eseguirle una dopo l’altra. I dati vengono trasformati dal programma in esecuzione attraverso una successione di stati l’ultimo dei quali è rappresentato dai risultati. Canale di comunicazione Memoria Processore bus programma dati Benché ci siano in memoria una quantità di istruzioni e di dati che attendono di essere elaborati, il processore estrae le istruzioni una alla volta ed elabora i dati uno alla volta. IL PROCESSORE Il processore è un interprete del set di istruzioni. Esso contiene al suo interno meccanismi per : Estrarre e decodificare una istruzione dalla memoria ( fase di fetch) Eseguire l’istruzione appena estratta ( fase execute) Determinare quale sarà la prossima istruzione da estrarre ed eseguire ( di norma la successiva) Con questa semplice sequenza di operazioni, eseguita all’infinito, un processore è in grado di eseguire programmi comunque complessi. Si può osservare che la fase di fetch è sempre la stessa per tutte le istruzioni, mentre di fasi di execute ne esistono tante quanti sono i diversi tipi di istruzione. Istante per istante il processore deve conoscere quale istruzione del programma sta elaborando, i dati su cui deve operare e quale sarà la prossima istruzione da eseguire: deve avere inoltre una registrazione precisa dello stato di tutte le risorse a sua disposizione. Tutte queste informazioni sono in particolari memorie ad alta velocità chiamate registri. Le istruzioni direttamente interpretabili dal processore costituiscono il linguaggio macchina del calcolatore. Esse sono codificate in binario e sono memorizzate in un certo numero di byte della memoria. Architettura di von Neumann Unità operativa CPU Con l'espressione architettura di von Neumann (o macchina di von Neumann) ci si riferisce a uno schema di progettazione di calcolatori elettronici che prende nome dal matematico John von Neumann. Lo schema si basa su cinque componenti fondamentali: CPU o unità di lavoro che si divide a sua volta in 1.- Unità operativa, nella quale uno dei sottosistemi più rilevanti è l'ALU (Arithmetic Logic Unit) 1.- Unità di controllo 2.- Unità di memoria, intesa come memoria di lavoro o memoria principale (RAM, Random Access Memory) 3.- Unità di input, tramite la quale i dati vengono inseriti nel calcolatore per essere elaborati 4.- Unità di output, necessaria affinché i dati elaborati possano essere restituiti all'operatore 5.- Bus, un canale che collega tutti i componenti fra loro All'interno dell' unità operativa è presente un registro detto accumulatore, che può fare anche da buffer tra input e output . È importante sottolineare che tale architettura, a differenza di altre, si distingue per la caratteristica di immagazzinare all'interno dell'unità di memoria, sia i dati dei programmi in esecuzione che il codice di questi ultimi. Bisogna comunque precisare che questa è una schematizzazione molto sintetica, sebbene molto potente: basti pensare che i computer di uso comune sono progettati secondo l'architettura Von Neumann (ciò non è necessariamente sempre vero). Inoltre, quando si parla di unità di memoria si intende la memoria principale, mentre le memorie di massa sono considerate dispositivi di I/O. Il motivo di ciò è innanzitutto storico, in quanto negli anni Quaranta, epoca a cui risale questa architettura, la tecnologia non lasciava neanche presupporre dispositivi come hard disk, CD-ROM, DVD-ROM o anche solo nastri magnetici, ma anche tecnico, se si considera che in effetti i dati da elaborare devono comunque essere caricati in RAM, siano essi provenienti da tastiera o da hard-disk.