Architettura dei sistemi a microprocessore

A. Costantini |  (la videolezione) Nella metà del XX secolo il matematico John von Neumann progettò un elaboratore elettronico a cui si ispireranno tutti i futuri computer. Non si tratta di una macchina reale, bensì di un modello semplificato di funzionamento di un elaboratore elettronico e funge da base per la maggior parte dei computer moderni. L'architettura von Neumann è composta da cinque componenti principali:
  1. L' unità di elaborazione esegue le istruzioni del programma.

  2. L' unità di controllo guida l'esecuzione delle istruzioni del programma sull'unità di elaborazione. Insieme, le unità di elaborazione e di controllo costituiscono la CPU.

  3. L' unità di memoria memorizza i dati e le istruzioni del programma.

  4. Le unità di input caricano i dati e le istruzioni del programma sul computer e avviano l'esecuzione del programma.

  5. Le unità di output memorizzano o ricevono i risultati del programma.

I bus collegano le unità e vengono utilizzati dalle unità per scambiarsi informazioni di controllo e dati. Un bus è un canale di comunicazione che trasferisce valori binari tra le diverse unità. Ad esempio, un bus dati che collega l'unità di memoria e la CPU potrebbe essere implementato come 32 conduttori paralleli che insieme trasferiscono un valore di 4 byte, 1 bit trasferito su ciascun conduttore. Tipicamente, le architetture hanno bus separati per l'invio di dati, indirizzi di memoria e controllo tra le unità. Le unità utilizzano il bus di controllo per inviare segnali di controllo che richiedono o notificano altre unità di azioni, il bus di indirizzi per inviare l'indirizzo di memoria di una richiesta di lettura o scrittura all'unità di memoria e il bus di dati per trasferire i dati tra le unità.


le 5 unit dellarchitettura von Neumann sono mostrate come scatole le unit sono collegate da bus mostrati come linee che corrono sotto le scatole a cui  collegata ciascuna scatola
Come detto, le unità di controllo e di elaborazione implementano insieme la CPU, che è la parte del computer che esegue le istruzioni di programma sui dati. L' unità di elaborazione della macchina von Neumann è composta da due parti. La prima è l'unità aritmetica/logica (ALU), che esegue operazioni matematiche, come addizione e sottrazione, e logiche, come AND e OR . Le moderne ALU in genere eseguono un ampio set di operazioni aritmetiche. La seconda parte dell'unità di elaborazione è un insieme di registri. Un registro è una piccola e veloce unità di archiviazione utilizzata per contenere i dati del programma e le istruzioni che vengono eseguite dall'ALU. Fondamentalmente, non c'è distinzione tra istruzioni e dati nell'architettura di von Neumann. A tutti gli effetti, le istruzioni sono dati. Ciascun registro è quindi in grado di contenere una parola di dati. L' unità di controllo, invece,  guida l'esecuzione delle istruzioni del programma caricandole dalla memoria e alimentando operandi e operazioni di istruzione attraverso l'unità di elaborazione. L'unità di controllo include anche una memoria per tenere traccia dello stato di esecuzione e per determinare la sua prossima azione da intraprendere: il contatore del programma (PC) mantiene l'indirizzo di memoria della prossima istruzione da eseguire e il registro delle istruzioni (IR) memorizza l'istruzione, caricato dalla memoria, che è attualmente in esecuzione. La memoria interna è un'innovazione chiave dell'architettura von Neumann. Fornisce una memorizzazione dei dati del programma vicina all'unità di elaborazione, riducendo notevolmente la quantità di tempo per eseguire i calcoli. L' unità di memoria memorizza sia i dati del programma che le istruzioni del programma: la memorizzazione delle istruzioni del programma è una parte fondamentale del modello del programma memorizzato dell'architettura von Neumann. La dimensione della memoria varia da sistema a sistema. Tuttavia, l'address bus di un sistema limita l'intervallo di indirizzi che può esprimere. Nei sistemi moderni, l'unità di memoria indirizzabile più piccola è un byte (8 bit), e quindi ogni indirizzo corrisponde a una posizione di memoria univoca per un byte di archiviazione. Ad esempio, le architetture con bus indirizzi a 32 bit supportano tipicamente una dimensione massima dello spazio degli indirizzi di 2 32 , che corrisponde a 4 gigabyte (GB) di memoria indirizzabile. Il termine memoria a volte si riferisce a un'intera gerarchia di archiviazione nel sistema. Può includere registri nell'unità di elaborazione e dispositivi di archiviazione secondari come unità disco rigido (HDD) o unità a stato solido (SSD). Per ora, utilizziamo il termine "memoria" in modo intercambiabile con la memoria ad accesso casuale (RAM) interna, memoria a cui è possibile accedere dall'unità di elaborazione centrale. La memoria RAM è ad accesso casuale perché è possibile accedere direttamente a tutte le posizioni di memoria RAM (indirizzi). È utile pensare alla RAM come a un array lineare di indirizzi, in cui ogni indirizzo corrisponde a un byte di memoria. La dimensione della parola è il numero di bit della dimensione dei dati standard che un processore gestisce come una singola unità. La dimensione standard delle parole è variato nel corso degli anni. Negli anni '50 erano comuni le dimensioni delle parole a 36 bit. Con l'innovazione dell'IBM 360 negli anni '60, le dimensioni delle parole sono diventate più o meno standardizzate e hanno iniziato ad espandersi da 16 bit, a 32 bit, agli odierni 64 bit. Mentre le unità di controllo, elaborazione e memoria costituiscono la base del computer, le unità di input e output gli consentono di interagire con il mondo esterno. In particolare, forniscono meccanismi per caricare in memoria le istruzioni e i dati di un programma, archiviarne i dati al di fuori della memoria e visualizzarne i risultati agli utenti. L' unità di input è costituita dall'insieme di dispositivi che consentono a un utente o un programma di ottenere dati dal mondo esterno nel computer. Le forme più comuni di dispositivi di input oggi sono la tastiera e il mouse. Telecamere e microfoni sono altri esempi. L' unità di output è costituita dall'insieme di dispositivi che trasmettono i risultati del calcolo dal computer al mondo esterno o che memorizzano i risultati al di fuori della memoria interna. Ad esempio, il monitor è un comune dispositivo di output. Alcuni dispositivi moderni, come il touchscreen, fungono sia da input che da output, consentendo agli utenti di inserire e ricevere dati da un unico dispositivo unificato. I dischi rigidi e a stato solido sono un altro esempio di dispositivi che agiscono sia come dispositivi di input che di output. Questi dispositivi di archiviazione fungono da dispositivi di input quando memorizzano i file eseguibili del programma che il sistema operativo carica nella memoria del computer per l'esecuzione e fungono da dispositivi di output quando archiviano i file in cui vengono scritti i risultati del programma.