Il bus di sistema nella macchina di Von Neumann

Nel modello della macchina di Von Neumann, le informazioni transitano attraverso dei collegamenti fisici a cui ci si riferisce con il termine bus di sistema. Infatti, come già evidenziato in questo post, la CPU deve essere collegata alle altre componenti del calcolatore, alle quali invia segnali di controllo. In particolare, tra CPU e RAM avviene un continuo scambio di segnali e di dati, corrispondenti agli indirizzi di memoria, al contenuto (dati o istruzioni) delle celle di memoria e al contenuto dei registri della CPU.

cpu_von_neumann

Questo comporta la necessità del bus di sistema, che nella macchina di Von Neumann, viene tradizionalmente suddiviso in tre differenti linee di bus:

  • il bus di controllo (control bus), in cui transitano i segnali di controllo necessari a selezionare le unità coinvolte in un trasferimento dati e che permettono di definire il tipo di operazione (ad esempio se si tratta di un’operazione di lettura o di scrittura);

  • il bus indirizzi (address bus), che identifica la posizione delle celle di memoria in cui la CPU deve leggere o scrivere;

  • il bus dati (data bus), che contiene i dati da leggere o scrivere in memoria e viene attivato generalmente dalla CPU per i trasferimenti da/per la memoria o le interfacce di I/O;

Una particolarità dell’architettura di Von Neumann è che il bus dati può contenere sia le istruzioni sia gli operandi su cui operano tali istruzioni, senza alcuna distinzione. Questo non è vero in altre architetture dei calcolatori, come l’architettura Harvard, che è stata progettata in maniera diametralmente opposta circa questo aspetto, poiché in essa istruzioni ed operandi viaggiano su due linee diverse di bus. Generalmente, i moderni PC seguono l'architettura di Von Neumann, mentre i microcontrollori come Arduino e Raspberry seguono l'architettura Harvard.