Architettura di Von NeumannL'architettura di Von Neumann, proposta dal matematico e fisico John Von Neumann nel 1945, rappresenta uno dei fondamenti dell'informatica moderna e ha gettato le basi per la progettazione dei computer digitali. Questo modello è alla base della maggior parte dei computer attuali e descrive un'architettura logica per l'elaborazione delle informazioni, in cui sia i dati che le istruzioni sono memorizzati nella stessa memoria.Contesto StoricoI primi calcolatori erano progettati con una struttura differente. Ad esempio, le macchine analitiche di Charles Babbage e i computer elettromeccanici come l'ENIAC erano configurati per eseguire compiti specifici, e la loro programmazione era statica, spesso realizzata attraverso la modifica manuale dei collegamenti fisici tra i componenti hardware. L'innovazione di Von Neumann risiede nell'introduzione di una memoria condivisa per dati e istruzioni, semplificando così la programmazione e rendendo possibile la realizzazione di macchine programmabili e general-purpose.Principi FondamentaliMemoria UnificataSia i dati che le istruzioni sono memorizzati nella stessa area di memoria.Questo concetto è noto come memoria unificata o memoria condivisa. La memoria è organizzata in celle, ognuna identificata da un indirizzo univocoUnità di Controllo (Control Unit)È il componente del processore responsabile di dirigere l'esecuzione delle istruzioni.interpreta le istruzioni memorizzate in memoria e coordina le operazioni degli altri componenti della macchina.Unità Logico/Aritmetica (ALU) si occupa delle operazioni matematiche e logiche.Esegue calcoli come addizioni, sottrazioni, moltiplicazioni, divisioni e confronti logici (es. AND, OR, NOT).RegistriSono piccole unità di memoria ad accesso rapido presenti all'interno del processore.Sono utilizzati per memorizzare temporaneamente dati e indirizzi durante l'esecuzione delle operazioni.Bus di SistemaÈ l'insieme di linee di comunicazione che permettono lo scambio di dati tra i diversi componenti del computer.Esistono tre tipi principali di bus: Bus dei Dati: Trasporta i dati tra il processore e la memoria.Bus degli Indirizzi: Contiene le informazioni relative agli indirizzi di memoria da cui leggere o scrivere dati. Bus di Controllo: Trasporta segnali di controllo che coordinano le operazioni del sistemaIl Ciclo di EsecuzioneÈ noto come ciclo fetch, decode, execute.Descrive come il processore legge e interpreta le istruzioni.Esso si basa su tre fasi:Fetch: L'unità di controllo preleva un'istruzione dalla memoria, utilizzando il Program Counter, che indica l'indirizzo della prossima istruzione da eseguireDecode: L'istruzione prelevata viene decodificata dall'unità di controllo per determinare quale operazione deve essere eseguitaExecute: L'istruzione viene eseguita; se è un'operazione aritmetica o logica, viene effettuata dall'ALU; se è un'operazione di input/output, vengono coinvolti i dispositivi perifericiDopo l'esecuzione, il Program Counter viene aggiornato per puntare alla prossima istruzione e il ciclo riprende.VantaggiSemplicità e FlessibilitàLa memorizzazione unificata di dati e istruzioni consente al computer di essere programmabile e di cambiare facilmente i compiti svolti, adattandosi a nuove esigenze senza modifiche hardware.Riduzione del Tempo di SviluppoGrazie a una struttura standardizzata, la progettazione e la costruzione di computer sono diventate più efficienti.Possibilità di Eseguire Programmi ComplessiLa memorizzazione condivisa permette l'implementazione di programmi sofisticati, inclusi quelli che possono modificare se stessi durante l'esecuzioneLimitiNonostante i suoi vantaggi, l'architettura di Von Neumann presenta anche alcune limitazioniCollo di BottigliaUno dei problemi principali è il cosiddetto "collo di bottiglia", che si verifica quando il bus di sistema diventa un punto di congestione. Poiché sia i dati che le istruzioni devono passare attraverso lo stesso bus, questo può rallentare l'esecuzione, specialmente in applicazioni che richiedono un elevato trasferimento di dati.Vulnerabilità agli AttacchiPoiché i dati e le istruzioni condividono lo stesso spazio di memoria, può essere più facile per un attaccante sovrascrivere le istruzioni con dati malevoli, come avviene in alcuni tipi di exploit di sicurezzaEvoluzioni ModerneNel tempo, quest'architettura è stata affiancata da altri modelli, come l'architettura Harvard, che separa fisicamente la memoria per i dati e quella per le istruzioni. Questo approccio risolve parzialmente il collo di bottiglia, ma introduce complessità aggiuntiva.Inoltre, l'introduzione di cache e l'uso di pipeline nel processore sono soluzioni moderne che cercano di mitigare i limiti dell'architettura di Von Neumann, aumentando la velocità di accesso ai dati e l'efficienza nell'esecuzione delle istruzioni.