Architetture
Molti produttori di computer offrono una famiglia di modelli di computer, tutti con la stessa architettura ma con differenze nell'organizzazione. Di conseguenza, i diversi modelli della famiglia hanno caratteristiche di prezzo e prestazioni differenti.
Struttura e funzione
Essendo un elaboratore un sistema molto complesso costituito da molte parti e sottoparti, risulta più semplice descriverne la struttura tramite una gerarchia. Un sistema gerarchico è infatti un insieme di sottosistemi interrelati, ciascuno dei quali, a sua volta, ha una struttura gerarchica fino a raggiungere un livello più basso di sottosistema elementare. Grazie a questa struttura il progettista deve occuparsi solo di un particolare livello del sistema alla volta occupandosi della struttura e della funzione:
- Struttura: il modo in cui i componenti sono correlati.
- Funzione: il funzionamento di ogni singolo componente come parte della struttura.
Per descrivere il tutto utilizzeremo un approccio top-down, ovvero inizieremo con una vista dall'alto per poi scomporre il sistema nelle sue sottoparti.
Le funzioni
Ci sono solo quattro funzioni di base che un computer può svolgere:
- Elaborazione dei dati (Data Processing): I dati possono assumere un'ampia varietà di forme.
- Archiviazione dei dati (Data Storage): Il computer può svolgere una funzione di archiviazione dei dati a breve termine (se sta elaborando dei dati al volo e quindi il computer deve archiviare temporaneamente quei dati su cui si sta lavorando in un qualsiasi dato momento) oppure a lungo termine.
- Spostamento dei dati (Data Movement): L'ambiente operativo del computer è costituito da dispositivi che fungono da origini o destinazioni di dati. Quando i dati vengono ricevuti o consegnati a un dispositivo collegato direttamente al computer, il processo è noto come input-output (I/O) e il dispositivo è indicato come una periferica. Quando i dati vengono spostati su distanze maggiori, verso o da un dispositivo remoto, il processo è noto come comunicazione di dati.
- Controllo (Control): All'interno del computer, un'unità di controllo gestisce le risorse del computer e orchestra le prestazioni delle sue parti funzionali in risposta alle istruzioni.
Struttura di un elaboratore
Computer single-processor
Ci sono quattro componenti strutturali principali:
- CPU (Central Processing Unit): Controlla il funzionamento del computer ed esegue le sue funzioni di elaborazione dei dati, spesso indicato semplicemente come processore.
- Memoria principale: Memorizza i dati.
- I/O: Sposta i dati tra il computer e il suo ambiente esterno, può fare solo due operazioni: leggere e scrivere.
- Interconnessione del sistema: Sono meccanismi che prevedono la comunicazione tra CPU, memoria principale e I/O. Un esempio comune di interconnessione di sistemi è tramite un bus di sistema, costituito da un certo numero di fili conduttori a cui si collegano tutti gli altri componenti.
Negli ultimi anni, c'è stato un crescente utilizzo di più processori in un singolo computer.
Analizziamo la struttura gerarchica
I principali componenti strutturali della CPU sono i seguenti:
- Unità di controllo: Controlla il funzionamento della CPU e quindi del computer.
- Unità aritmetica e logica (ALU): Esegue le funzioni di elaborazione dei dati del computer.
- Registri: Fornisce memoria interna alla CPU.
- Interconnessione CPU: Qualche meccanismo che prevede la comunicazione tra l'unità di controllo, ALU e registri.
Evoluzione del computer e prestazioni
Prima generazione - Valvola termoionica (o tubo a vuoto)
La prima generazione di computer utilizzava tubi a vuoto. Per i nostri fini, esamineremo forse il più famoso computer di prima generazione, noto come computer IAS. Un approccio di progettazione fondamentale implementato per la prima volta nel computer IAS è noto come “concetto di programma memorizzato”. Questa idea è solitamente attribuita al matematico John von Neumann.
Struttura di un computer di Von Neumann
È uno schema di elaborazione degli elaboratori ed è uno dei modelli base dei calcolatori moderni. I 3 componenti principali sono la CPU, la memoria e l'interfaccia di I/O. Analizziamo il funzionamento della CPU (Central Processing Unit).
Il ciclo di funzionamento di una CPU si divide in 3 parti/momenti:
- Fetch: Acquisisce dalla memoria le operazioni da eseguire.
- Decode: Guarda l’istruzione appena acquisita e la interpreta.
- Execute: La CPU esegue l’operazione.
L’insieme di tutte le istruzioni che una CPU esegue prende il nome di Programma. L’Interfaccia I/O permette alla CPU di parlare con il mondo esterno anche se lei non lo sa. La CPU “parla” con la memoria o con l'interfaccia.
Seconda generazione - I transistors
Il primo grande cambiamento nel computer elettronico è arrivato con la sostituzione del tubo a vuoto con il transistor. Il transistor, che è più piccolo, più economico e genera meno calore di un tubo a vuoto, può essere utilizzato allo stesso modo di un tubo a vuoto per costruire computer. Inoltre sono dispositivi a stato solido fatti di silicio. Il transistor è stato inventato ai Bell Labs nel 1947 e negli anni '50 aveva lanciato una rivoluzione elettronica.
Legge di Moore
La legge è tratta da un'osservazione empirica di Gordon Moore del 1965 e dice che “la complessità di un microcircuito, misurata ad esempio tramite il numero di transistor per chip, raddoppia ogni 18 mesi” e quindi se la complessità aumenta anche le performance aumentano. Nei decenni a venire questa previsione si rivelò corretta.
Top-level view of computer function and interconnection
Cos’è un programma?
È una sequenza di istruzioni. Per ogni istruzione si effettua un’operazione logica o aritmetica. Per ogni operazione è necessario un diverso insieme di segnali di controllo.
Componenti di un computer
Le componenti principali viste ad un alto livello sono:
- CPU: Costituita da un interprete di istruzioni e un modulo di funzioni aritmetiche e logiche.
- Modulo di I/O: Contiene componenti di base per accettare dati e istruzioni in qualche forma e convertirli in una forma interna di segnali utilizzabili dal sistema. Dopodiché è necessario un mezzo per riportare i risultati, sotto forma di un modulo di output.
- Memoria principale: Un posto in cui archiviare temporaneamente sia le istruzioni che i dati.
La CPU scambia i dati con la memoria. A tale scopo utilizza tipicamente due registri interni: un Memory Address Register (MAR), che specifica l'indirizzo in memoria per la successiva lettura o scrittura, e un Memory Buffer Register (MBR), che contiene i dati da scrivere in memoria o riceve i dati letti dalla memoria. Allo stesso modo, un Address Register I/O (I/O AR) specifica un particolare dispositivo I/O. Un Buffer Register I/O (I/O BR) viene utilizzato per lo scambio di dati tra un modulo I/O e la CPU. Un modulo di memoria è costituito da un insieme di posizioni, definite da indirizzi numerati in sequenza. Ogni posizione contiene un numero binario che può essere interpretato come un'istruzione o come dati. Un modulo I/O trasferisce i dati dai dispositivi esterni alla CPU e alla memoria e viceversa. Contiene buffer interni per conservare temporaneamente questi dati fino a quando non possono essere inviati.
Dopo aver esaminato brevemente questi componenti principali, passiamo ora a una panoramica di come questi componenti funzionano insieme per eseguire i programmi.
Computer function
La funzione di base svolta da un computer è l'esecuzione di un programma, che consiste in un insieme di istruzioni memorizzate. Il processore esegue il lavoro effettivo eseguendo le istruzioni specificate nel programma. Nella sua forma più semplice, l'elaborazione delle istruzioni consiste in due fasi: il processore legge (preleva) le istruzioni dalla memoria una alla volta ed esegue ciascuna istruzione. L'esecuzione del programma consiste nel ripetere il processo di recupero dell'istruzione e di esecuzione dell'istruzione. L'elaborazione richiesta per una singola istruzione è chiamata ciclo di istruzione. I due passaggi sono indicati come ciclo di Fetch e ciclo di Execute. L'esecuzione del programma si interrompe solo se la macchina è spenta, si verifica una sorta di errore irreversibile o se viene rilevata un'istruzione di programma che arresta il computer.
Ciclo di Fetch-Execute
All'inizio di ogni ciclo di istruzione, il processore preleva un'istruzione dalla memoria. In un processore tipico, un registro chiamato Program Counter (PC) contiene l'indirizzo dell'istruzione da recuperare successivamente. Salvo diversa indicazione, il processore incrementa sempre il PC dopo ogni recupero di istruzione in modo che prelevi l'istruzione successiva in sequenza (cioè, l'istruzione situata al successivo indirizzo di memoria). L'istruzione recuperata viene caricata in un registro nel processore noto come Instruction Register (IR). L'istruzione contiene i bit che specificano l'azione che il processore deve eseguire. Il processore interpreta l’istruzione (decode) ed esegue l'azione richiesta. In generale, queste azioni rientrano in quattro categorie:
- Processore-Memoria: I dati possono essere trasferiti dal processore alla memoria o dalla memoria al processore.
- Processore-I/O: I dati possono essere trasferiti da o verso un dispositivo periferico.
- Elaborazione dei dati: Il processore può eseguire alcune operazioni aritmetiche o logiche sui dati.
- Controllo: Un'istruzione può specificare che la sequenza di esecuzione deve essere modificata. Ad esempio, il processore può recuperare un'istruzione dalla posizione 149, che specifica che l'istruzione successiva proviene dalla posizione 182.
L'esecuzione di un'istruzione può implicare una combinazione di queste azioni sopra descritte.
Interrupts
È un segnale asincrono con il quale un computer fornisce un meccanismo mediante il quale altri moduli (I/O, memoria) possono interrompere la normale elaborazione del processore. Le classi di interrupt più comuni sono:
- Programma: Generato da una condizione che si verifica a seguito dell'esecuzione di un'istruzione, come un overflow aritmetico o una divisione per zero.
- Timer: Generato da un timer all'interno del processore.
- I/O: Generato da un controller I/O, per segnalare il normale completamento di un'operazione, richiedere assistenza al processore o per segnalare una serie di condizioni di errore.
- Fallimento Hardware: Generato da un guasto come un'interruzione di corrente o un errore di parità di memoria.
Ciclo di interrupt
Nel ciclo di interrupt, il processore verifica se arriva un segnale di interrupt. Se non ci sono interrupt in sospeso, il processore procede al ciclo di fetch e recupera l'istruzione successiva del programma corrente. Se è in sospeso un'interruzione, il processore esegue le seguenti operazioni:
- Sospende l'esecuzione del programma corrente in esecuzione e salva l'indirizzo della prossima istruzione da eseguire (contenuto nel contatore del programma).
- Imposta il Program Counter (PC) sull'indirizzo iniziale della routine dell’interrupt handler. Il processore ora procede con il ciclo di fetch e recupera la prima istruzione nel programma di gestione degli interrupt.
Quando la routine di gestione degli interrupt viene completata, il processore può riprendere l'esecuzione del programma dal punto in cui è stato interrotto.
Interrupt multipli
È possibile adottare due approcci per gestire più interruzioni multipli.
- Il primo è disabilitare gli interrupt durante l'elaborazione di un interrupt. Un interrupt disabilitato significa semplicemente che il processore ignorerà quel segnale di richiesta di interrupt. Se si verifica un'interruzione durante questo periodo, generalmente rimane in sospeso e verrà controllato dal processore dopo che il processore avrà terminato di gestire il primo interrupt. Questo approccio è il più semplice, poiché gli interrupt vengono gestiti in un rigoroso ordine sequenziale. Lo svantaggio è che non tiene conto della priorità.
- Un secondo approccio infatti è definire le priorità per gli interrupt e consentire a un interrupt di priorità più alta di essere servito gestito prima di un interrupt con priorità inferiore.
Strutture di interconnessioni
Un computer è costituito da un insieme di componenti o moduli di tre tipi di base (processore, memoria, I/O) che comunicano tra loro. Pertanto, devono esserci dei collegamenti tra i moduli. L'insieme dei percorsi che collegano i vari moduli è chiamato struttura di interconnessione.
Bus
Un bus è un percorso di comunicazione che collega due o più dispositivi. Una caratteristica fondamentale di un bus è che è un mezzo di trasmissione condiviso, ovvero più dispositivi si collegano al bus, e un segnale trasmesso da un qualsiasi dispositivo è disponibile per la ricezione da parte di tutti gli altri dispositivi collegati al bus. Se due dispositivi trasmettono durante lo stesso periodo di tempo, i loro segnali si sovrapporranno e si confonderanno. Pertanto, solo un dispositivo alla volta può trasmettere correttamente.
Tipicamente, un bus è costituito da più percorsi di comunicazione o linee. Ogni linea è in grado di trasmettere segnali che rappresentano il binario 1 e il binario 0. Nel tempo, una sequenza di cifre binarie può essere trasmessa su una singola linea. Presi insieme, più linee di un bus possono essere utilizzate per trasmettere cifre binarie contemporaneamente (in parallelo). Ad esempio, un'unità di dati a 8 bit può essere trasmessa su otto linee bus. Un bus che collega i principali componenti del computer (processore, memoria, I/O) è chiamato bus di sistema. Un bus di sistema è costituito, tipicamente, da circa cinquanta a centinaia di linee separate. Ad ogni riga viene assegnato un significato o una funzione particolare. Sebbene esistano diversi modelli di bus, su qualsiasi bus le linee possono essere classificate in tre gruppi funzionali: dati, indirizzo e linee di controllo.
- Data bus: Le linee di dati forniscono un percorso per lo spostamento dei dati tra i moduli di sistema. Poiché ogni riga può trasportare solo un bit alla volta, il numero di righe determina quanti bit possono essere trasferiti alla volta.
- Address bus: Le linee di indirizzo vengono utilizzate per designare l'origine o la destinazione dei dati sul bus dati.
- Control bus: Le linee di controllo, che formano il control bus, vengono utilizzate per controllare l'accesso e l'utilizzo delle linee dati e indirizzi.
Capitolo 4 - Caratteristiche della memoria
- Posizione: Si riferisce al fatto che la memoria può essere interna o esterna al computer. La memoria interna è spesso identificata con la memoria principale o con la cache. La memoria esterna è invece costituita da dispositivi di archiviazione periferici, come disco e nastro, accessibili dal processore tramite controller I/O.
- Capacità: Per la memoria interna, questo è tipicamente espresso in termini di byte (1 byte = 8 bit) o words.
- Unità di trasferimento: È il numero di bit letti o scritti in memoria alla volta. Può essere ad esempio 64, 128 o 256 bit.
- Metodo di accesso alle unità di dati: Si classifica in:
- Accesso sequenziale: La memoria è organizzata in unità di dati, chiamate record. L'accesso viene effettuato in una specifica sequenza lineare, leggendo i record in ordine. Pertanto, il tempo per accedere a un record arbitrario è molto variabile, dipende a che distanza si trova dal record corrente.
- Accesso diretto: I singoli blocchi o record hanno un indirizzo univoco basato sulla posizione fisica. Anche in questo caso, il tempo di accesso è variabile.
- Accesso casuale: Il tempo per accedere a una determinata locazione di memoria è indipendente dalla sequenza degli accessi precedenti ed è costante. La RAM è ad accesso casuale.
- Associativo: Questo è un tipo di memoria ad accesso casuale che consente di confrontare le posizioni dei bit desiderati all'interno di una parola per una corrispondenza specificata e di farlo per tutte le parole contemporaneamente. Pertanto, una parola viene recuperata in base a una parte del suo contenuto piuttosto che al suo indirizzo. Come con la normale memoria ad accesso casuale, ogni posizione ha il proprio meccanismo di indirizzamento e il tempo di recupero è costante indipendentemente dalla posizione o dai modelli di accesso precedenti. Le memorie cache possono utilizzare l'accesso associativo.
- Prestazioni: Vengono utilizzati tre parametri di prestazione:
- Tempo di accesso (latenza): È il tempo necessario per eseguire un'operazione di lettura o scrittura.
- Tempo di ciclo della memoria: Questo concetto viene applicato principalmente alla memoria ad accesso casuale e consiste nel tempo di accesso più il tempo aggiuntivo necessario prima che possa iniziare un secondo accesso.
- Velocità di trasferimento: Questa è la velocità con cui i dati possono essere trasferiti dentro o fuori un'unità di memoria.
Memoria di cache
La memoria di cache è un tipo di memoria progettata per...
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Architetture dei calcolatori e cloud computing - 1/2
-
Schemi Architetture dei calcolatori e cloud computing
-
Architetture dei Calcolatori e Cloud Computing - 2/2
-
Appunti di Secure Cloud Computing (Cybersecurity and Cloud)