John von Neumann, nato János Neumann (Budapest, 28 dicembre 1903 – Washington, 8 febbraio 1957), è stato un matematico e informatico ungherese naturalizzato statunitense. 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 e che fu sviluppato per il sistema IAS machine e dell'Institute for Advanced Study. Schematic of the von Neumann architecture. The Control Unit and Arithmetic Logic Unit form the main components of the Central Processing Unit (CPU) Lo schema si basa su cinque componenti fondamentali: 1. 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) 2. Unità di controllo CU 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 L’ALU gestisce le operazioni aritmetiche quali l'addizione, la sottrazione, lo shift dei bit (scorrimento di posizione a destra o a sinistra per effettuare operazioni all'interno di una word), gli operatori logici AND, OR, NAND (¬ AND), NOR (¬ OR). L’Unità di controllo CU (Control Unit) legge dalla memoria le istruzioni, e se occorre legge anche i dati per l'istruzione letta, esegue l'istruzione e memorizza il risultato se c'è, scrivendolo in memoria o in un registro della CPU. È 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 moderni computer di uso comune sono progettati secondo l'architettura Von Neumann., 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. 1 Nell'architettura di von Neumann, quando ci si riferisce alla memoria, s'intende la memoria principale, che è quella sulla quale il calcolatore carica i processi (programmi in esecuzione) ed i dati ad essi relativi (si parla appunto di memoria di lavoro), mentre si considera la memoria secondaria alla stregua di un dispositivo d'ingresso (input) e/o di uscita (output) dei dati In informatica si distinguono due tipi di memoria: la memoria principale o centrale, costituita fondamentalmente da memoria RAM, e la memoria secondaria o memoria di massa, i cui maggiori rappresentanti sono gli hard disk, ma anche supporti rimovibili come dischi floppy, CD, DVD, nastri magnetici, memorie flash di ogni tipo ed altro ancora. Una memoria centrale può essere considerata astrattamente come una sequenza finita di celle in cui ogni cella contiene una sequenza finita di bit. Normalmente i bit sono gestiti a gruppi di otto, detti byte. Pertanto lo spazio fisico della memoria può essere immaginato come una sequenza di locazioni, ognuna contenente un byte. Ogni posizione è individuata da un preciso indirizzo, normalmente espresso tramite un numero intero positivo. La memoria centrala è costituita fondamentalmente da: I costi di produzione della memoria centrale sono maggiori di quelli per realizzare memoria secondaria, pertanto al fine di ottenere un buon compromesso tra costi e prestazioni i calcolatori dispongono in generale più di memoria secondaria che non di memoria centrale. Infine, poiché i dispositivi impiegati attualmente per la memoria centrale non permettono di conservare i dati memorizzati dopo che il calcolatore è stato spento, le informazioni vengono conservate nella memoria secondaria in grado di mantenersi inalterata anche con il calcolatore spento. Oggi la memoria centrale ha normalmente un tempo di accesso variabile da 5 a 70 nanosecondi. La caratteristica principale della memoria di massa è la "non volatilità", ovvero la possibilità di memorizzare permanentemente i dati (per questo si parla anche di memoria di archiviazione). Inoltre, la memoria di massa ha un costo inferiore rispetto alla memoria principale, per questo verrebbe da chiedersi perché nei moderni computer non si utilizzi solo memoria secondaria (tramite il meccanismo della memoria virtuale): la ragione risiede nel fatto che i tempi medi di accesso a memoria principale sono dell'ordine delle centinaia di nanosecondi, contro i millisecondi delle memorie di archiviazione, che, quindi, necessitano di tempi di accesso maggiori di ben 5 ordini di grandezza. La tecnologia, infatti, è riuscita nel corso degli anni a rendere le memorie ROM e RAM sempre più veloci, ma nulla ha potuto contro i limiti "fisici" dei dischi, che hanno bisogno di aspettare che la testina si posizioni sulla traccia giusta (tempo di ricerca o seek-time) e sul blocco giusto (latenza di rotazione o 'latency-time). Altri tipi di memorie sono: Memoria ROM: memoria di sola lettura, è una tipologia di memoria informatica, in particolare una tipologia di memoria non volatile (memoria informatica in grado di mantenere memorizzati i dati anche se non è alimentata elettricamente) in cui i dati sono memorizzati nella sua fase di costruzione e non possono essere più modificati per l'intera durata della sua vita. 2 La ROM contiene i dati necessari alla "partenza" dell'elaboratore informatico. In essa é contenuto il BIOS (Basic Input/Output System) ovvero un software che parte all'avvio del computer compiendo: controllo dell'hardware e fase di boot-strap (cerca il sistema operativo e lo carica in RAM per l'esecuzione). La ROM é un chip inserito sulla scheda madre. Con lo sviluppo della tecnologia é stato necessario prevedere l'aggiornamento del BIOS. Memoria Cache: memoria temporanea, non visibile al software, che memorizza un insieme di dati che possano successivamente essere velocemente recuperati su richiesta. Le parole chiave sono "temporanea" e "velocemente": in pratica, questo significa che non c'è nessuna certezza che i dati si trovino nella cache, ma che convenga comunque fare un tentativo per verificarne l'eventuale presenza. Simbolo in Bit in Byte 1 b (bit) 1 1/8 1 B (byte) 8 1 1 KB ( kilobyte) 8.192 1.024 1 MB (megabyte) 8.388.608 1.048.576 1 GB (gigabyte) 8.589.934.592 1.073.741.824 1 TB (terabyte) 8.796.093.302.400 1.099.511.628.000 L'accesso alla memoria è sicuramente l'operazione più frequente della CPU. Il tempo di accesso alla memoria è il numero di cicli di clock necessari per operare sulla memoria (generalmente uno); questo era un valore importante, poiché, maggiori erano i cicli necessari, più lento era il processore. Oggi con i processori moderni, la regola non è cambiata, ma è diventato un dettaglio insignificante. Con 500 Mhz, per operare sulla memoria erano necessari 2 ns (nanosecondi), oggi abbiamo processori a 3 Ghz (3000 Mhz circa), e 0,33 ns per operazioni sulla memoria. Processori differenti impiegano un diverso numero di cicli di clock. Per esempio, l'8088 e l'8086 richiedevano quattro cicli. Dall'80486 solamente un ciclo. NANOSECONDO: è un'unità di tempo pari ad un miliardesimo di secondo. È formata usando il prefisso standard nano-, che significa 10-9. Il suo simbolo è ns. Per alcuni oggetti un nanosecondo è una quantità di tempo piuttosto lunga. I normali microprocessori di oggi, che si trovano nei computer più recenti, possono effettuare anche un centinaio di operazioni diverse in un nanosecondo. MILLISECONDO: un millesimo di secondo. 3