Architettura degli elaboratori
Indice
1.INTRODUZIONE
Approccio strutturale
Linguaggi: livelli e macchine virtuali.
Attuali macchine multilivello.
Evoluzione delle macchine multilivello
Tipologie di Computer
Tipologie di computer
Computer usa e getta
Microcontrollori
Computer per giocare
Personal computer
Server
Cluster di Workstation
Mainframe
3.LIVELLO LOGICO-DIGITALE
Porte logiche e algebra di Boole
Porte logiche
Equivalenza di circuiti
Circuiti logici digitali elementari
Circuiti integrati
Reti combinatorie
Multiplexer (Demultiplexer)
Decodificatori
Sommatori: Half/Full adder
ALU a 1 bit
Clock
Latch SR Temporizzato
Latch D Temporizzato
Flip-Flop
Registri
Organizzazione della memoria
Chip di memoria
Tipologie di memoria
CPU Il modello di Von Neumann
Bus del calcolatore
Omnibus
Ampiezza del bus
Temporizzazione del bus
Bus sincroni
Bus asincroni
Arbitraggio del bus
Operazioni sul bus
Bus ISA
Bus PCI
Bus PCI-E
Bus USB
Un esempio di architettura: i7
Approccio Strutturale
Un calcolatore digitale è una macchina che può risolvere problemi eseguendo le istruzioni che le vengono assegnate.
Con il termine programma si intende una sequenza d’istruzioni che descrive come portare a termine un dato compito. I
circuiti elettronici di un qualsiasi computer possono riconoscere ed eseguire direttamente soltanto un insieme limitato
d’istruzioni semplici in cui tutti i programmi devono essere convertiti prima di poter essere eseguiti.
L’insieme di queste istruzioni primitive forma un linguaggio, chiamato linguaggio macchina, attraverso il quale è
possibile comunicare con il computer.
Nel corso del tempo, questa semplice osservazione ha portato a strutturare i computer come una serie di livelli di
astrazione, ciascuno dei quali è costruito sulla base di quello sottostante. In questo modo la complessità è gestibile più
agevolmente e i computer possono essere progettati in modo sistematico e organizzato. Chiamiamo approccio
strutturale questo modo di concepire l’architettura dei computer.
Esiste una gran differenza tra ciò che è adatto agli utenti e ciò che lo è per i computer. Gli utenti vogliono fare X, ma i
computer possono fare soltanto Y: ciò genera un problema.
1.1.1 Linguaggi, livelli e macchine virtuali
Il problema può essere affrontato in due modi distinti: entrambi prevedono la definizione di un nuovo insieme d
’istruzioni che sia più comodo da utilizzare rispetto a quanto non lo siano le istruzioni macchina predefinite. Considerate
globalmente, anche queste nuove istruzioni formano un linguaggio, che chiamiamo L I, allo stesso modo in cui le
istruzioni macchina formavano a loro volta un linguaggio, che chiamiamo LO. I due approcci differiscono nel modo in cui
i programmi scritti in LI possono essere eseguiti da un computer, in grado di eseguire soltanto quelli scritti nel proprio
linguaggio macchina, LO.
• Un metodo per eseguire un programma scritto in LI consiste nel sostituire, in una fase iniziale, ogni sua
istruzione con un’equivalente sequenza di istruzioni in LO. Il programma che ne risulta è costituito interamente
da istruzioni di LO e può essere eseguito dal computer al posto del programma LI originale. Questa tecnica è
chiamata traduzione.
• L’altra tecnica consiste invece nello scrivere un programma in LO che accetta come dati d’ingresso programmi in
LI; tale programma li esegue esaminando un’istruzione alla volta e sostituendola direttamente con l’equivalente
sequenza di istruzioni LO. Questa tecnica, che non richiede la generazione preventiva di un nuovo programma
LO, è chiamata interpretazione e il programma che la esegue è detto interprete.
La traduzione e l’interpretazione sono simili. In entrambi i metodi il computer può trattare istruzioni in L1 eseguendo le
equivalenti sequenze di istruzioni LO. La differenza è che, nel caso della traduzione, il programma LI viene, all’inizio,
convertito interamente in un programma LO. Il programma LI può quindi essere gettato via, mentre il programma LO
viene caricato nella memoria del computer per essere eseguito. Durante l’esecuzione il computer ha il controllo del
nuovo programma LO. Nell’interpretazione ciascuna istruzione LI viene esaminata e decodificata, e quindi eseguita
direttamente senza generare alcun programma tradotto. In questo caso il computer ha il controllo del programma
interprete, mentre il programma LI è visto come un insieme di dati. Entrambi i metodi, oltre a una sempre più frequente
combinazione dei due, sono ampiamente utilizzati.
Invece di ragionare in termini di traduzione e interpretazione, spesso è più semplice immaginare l’esistenza di un
ipotetico computer o macchina virtuale, il cui linguaggio macchina sia LI. Chiamiamo questa macchina virtuale MI.
Per rendere la traduzione o l’interpretazione utilizzabili in pratica, i linguaggi LO e LI non devono essere “troppo” diversi
fra loro.
L’approccio più ovvio consiste nell’inventare un nuovo insieme d’istruzioni che sia, rispetto a LI, maggiormente orientato
agli utenti piuttosto che alle macchine. Anche questo terzo insieme forma a sua volta un linguaggio, che chiamiamo L2
(e la cui corrispondente macchina virtuale sarà M2).
La definizione di una serie di linguaggi, ciascuno dei quali più pratico da utilizzare rispetto al precedente, può continuare
indefinitamente finché non se ne ottenga uno sufficientemente adeguato. Ciascun linguaggio utilizza il precedente come
base; un computer che usa questa tecnica può quindi essere immaginato come una serie di strati o livelli.
1.1.2 Attuali macchine multilivello
• Per completezza occorre dire che esiste un ulteriore livello al di sono di quello che noi consideriamo livello 0.
Questo livello è chiamato livello dei dispositivi. A questo livello i progettisti hanno a che fare con i singoli
transistor, gli elementi primitivi nella progettazione dei computer.
• Gli oggetti che analizzeremo nel livello logico digitale, sono le porte {gate), costruite utilizzando transistor.
Ciascuna porta è costituita da una manciata di transistor, ed è dotata di uno o più input e calcola in output una
funzione di essi. Combinando più porte logiche si possono creare memorie da 1 bit; registri (16/32/64 bit). Si
possono combinare le porte logiche per creare il motore computazionale principale.
• Subito dopo troviamo il livello di microarchitettura. Qui vi è una memoria locale, formata da un gruppo di
registri, e un circuito chiamato ALU (Arithmetic Logic Unit, unità aritmetico-logica), capace di effettuare semplici
operazioni aritmetiche. I registri sono connessi alla ALU per formare un percorso dati lungo il quale questi ultimi
si spostano. In alcune macchine le operazioni del percorso dati sono controllate da un programma chiamato
microprogramma (interprete per le istruzioni del livello 2), mentre su altre il percorso dati è controllato
direttamente dall’hardware.
• Il livello 2 è costituito da quello che chiamiamo il livello ISA (Instruction Set Architecture Level (livello di
architettura dell’insieme d’istruzioni).
• Il livello successivo è generalmente un livello ibrido. La maggior pane delle istruzioni nel suo linguaggio fa parte
anche del livello ISA. Vi è un insieme di nuove istruzioni, una diversa organizzazione della memoria e la capacità
di eseguire programmi in modo concorrente, oltre a varie altre funzionalità. Nel corso del libro ci si riferirà a
questo livello come al livello macchina del sistema operativo.
• Il livello 4, quello del linguaggio assemblativo, fornisce ai programmatori un modo per scrivere programmi per i
livelli 1, 2 e 3 in una forma meno difficoltosa rispetto a quella dei linguaggi delle rispettive macchine virtuali. I
programmi in linguaggio assemblativo sono inizialmente tradoni nei linguaggi dei livelli 1, 2 o 3 e
successivamente interpretati dall’appropriata macchina virtuale o reale. Il programma che esegue la traduzione
è chiamato assemblatore.
• Il livello 5 consiste generalmente di linguaggi, spesso chiamati linguaggi ad alto livello, definiti per essere
utilizzati dai programmatori di applicazioni. I programmi scritti in questi linguaggi sono generalmente tradotti al
livello 3 o al livello 4 da un traduttore detto compilatore; in casi meno frequenti è anche possibile che essi siano
interpretati.
L’insieme dei tipi di dati, delle operazioni e delle funzionalità di ciascun livello è chiamato architettura. Questa tratta gli
aspetti visibili agli utenti di quel determinato livello. Fanno quindi parte dell’architettura le caratteristiche che un
programmatore può vedere. Lo studio di come progettare le parti di un computer visibili ai programmatori è chiamato
architettura degli elaboratori.
1.1.3 Evoluzione delle macchine multilivello
I programmi scritti in un vero linguaggio macchina (livello 1) possono essere eseguiti direttamente dai circuiti del
computer (livello 0), senza far ricorso ad alcuna traduzione o interpretazione.
Questi circuiti formano, insieme alla memoria e ai dispositivi di input/output, l’hardware del computer. L’hardware
consiste di oggetti tangibili. Al contrario, il software consiste di algoritmi e delle loro rappresentazioni per i computer.
Nel corso del tempo, man mano che i computer si sono evoluti, questo confine si è però sfocato:
hardware e software sono logicamente equivalenti.
• Invenzione della microprogrammazione: da 2 a 3 livelli – microprogramma che interpreta ISA: hardware più
semplice
• Invenzione del sistema operativo: Un programma chiamato sistema operativo era tenuto costantemente nel
computer. Il programmatore forniva, insieme al proprio programma, alcune schede di controllo che venivano
lette ed eseguite dal sistema operativo: automatizzava il compito dell’operatore (caricare schede, selezionare
programma ecc.) Negli anni successivi, i sistemi operativi divennero sempre più sofisticati finché non
cominciarono ad assumere l’aspetto di un nuovo livello. Alcune queste istruzioni erano identiche a quelle del
livello ISA, ma altre, in particolare le istruzioni di input/output, erano completamente diverse. Le nuove
istruzioni erano spesso conosciute come marco del sistema operativo o chiamate al supervisore; oggi si usa
generalmente il termine chiamate di sistema.
• Migrazione delle funzionalità verso il microcodice: i progettisti capirono che avrebbero potuto aggiungere
nuove istruzioni semplicemente estendendo il microprogramma. In altre parole avrebbero potuto aggiungere
“hardware” (nuove istruzioni macchina) per mezzo della programmazione.
• Eliminazione della microprogrammazione: le dimensioni dei microprogrammi aumentarono così tanto che
cominciarono a divenire via via più lenti. A un certo punto alcuni ricercatori compresero che le macchine
potevano essere accelerate eliminando il microprogramma, riducendo considerevolmente l’insieme delle
istruzioni e facendo in modo che quelle rimanenti venissero eseguite direttamente.
Il software di oggi potrebbe essere l’hardware di domani e viceversa.
1.3 Tipologie di computer
1.3.1 Forze tecnologiche ed economiche
L’industria dei computer avanza più velocemente di tutte le altre. La principale forza trainante è la capacità, che i
produttori di circuiti hanno, di integrare di giorno in giorno sempre più transistor all’interno dei chip.
Legge di Moore: il numero di transistor raddoppia ogni 18 mesi.
La legge di Moore ha creato quello che gli economisti chiamano un ciclo virtuoso. Gli avanzamenti tecnologici
(transistor/chip) portano a prodotti migliori e allo stesso tempo più economici. Prezzi inferiori portano a loro volta alla
creazione di nuove applicazioni. Nuove applicazioni creano nuovi mercati e fanno sorgere nuove società che cercano di
trarne vantaggio. L’esistenza di tutte queste società genera competizione, che, a sua volta, crea la domanda economica
per avere tecnologie migliori grazie a cui sconfiggere la concorrenza.
1.3.3 Computer usa e getta
Probabilmente il più importante sviluppo nell’area di questi tipi di computer è rappresentato dai chip RF1D (Radio
Frequency Identification, “identificazione a radiofrequenza”). Oggi è possibile costruire, per pochi centesimi, chip RFID
senza batteria, larghi meno di 0,5 mm, caratterizzati da un numero a 128 bit predefinito e univoco e contenenti al loro
interno un piccolo radiotrasmettitore. Quando ricevono impulsi radio da un’antenna esterna i chip RFID si caricano
grazie al segnale entrante sufficientemente a lungo da riuscire a ritrasmettere all'antenna il proprio numero
identificativo. Anche se questi chip sono piccoli, le loro possibili implicazioni non lo sono affatto
• eliminare il codice a barre dai prodotti
• l’identificazione di veicoli
• la gestione dei bagagli delle compagnie aeree, sistemi di consegna
• inserire tali chip nelle banconote
1.3.4 Microcontrollori
I computer integrati in un dispositivo, a volte chiamati microcontrollori, lo comandano e ne gestiscono l’interfaccia
utente. I microcontrollori sono presenti in un gran numero di apparecchi molto diversi fra loro.
• Elettrodomestici
• Dispositivi per la comunicazione
• Apparecchi per l’intrattenimento
• Periferiche del computer
• Dispositivi per le immagini
• Armi ecc.
I microcontrollori sono invece sistemi completi, anche se di piccole dimensioni. Ciascun microcontrollore è dotato di un
processore, di una memoria e di capacità di I/O.
Generalmente i microcontrollori possono essere di due tipi: a uso generale, o specifico per un’applicazione.
1.3.5 Computer per giocare
A un gradino più in alto si trovano i videogiochi. Si tratta di normali computer dotati di speciali capacità grafiche e
sonore, ma poco espandibili e forniti di software limitato. Anche se di solito le console hanno interfacce USB e FireWire,
gli utenti non possono espanderle attraverso schede aggiuntive. Inoltre, e forse questo è l’aspetto più importante, le
console sono attentamente ottimizzate per un particolare tipo di applicazioni, come i vidcegiochi 3D fortemente
interattivi e con audio stereo di alta qualità. Tutto il resto è secondario.
1.3.6 Personal computer
Continuando a salire i gradini della scala degli elaboratori arriviamo ai personal computer, cioè quelle macchine a cui
perlopiù si pensa quando si sente pronunciare il termine “computer”. Essi comprendono i modelli desktop e quelli
portatili. Sono dotati di sistemi operativi sofisticati, hanno molte possibilità di espansione e dispongono di un’ampia
gamma di software disponibile. Il cuore di ogni personal computer è costituito da una scheda di circuiti stampati che
contiene la CPU, la memoria, vari dispositivi di I/O (come un chip audio e talvolta un modem), oltre alle interfacce per
tastiera, mouse, disco, rete e ad alcuni slot di espansione. La Figura 1.10 mostra un’immagine di una dì queste schede, ì
computer portatili sono fondamentalmente dei PC realizzati in dimensioni ridotte. Usano le stesse componenti
hardware, seppur costruite in dimensioni inferiori, e possono eseguire lo stesso software dei PC da scrivania. Un altro
tipo di macchina strettamente collegato al personal computer è il PDA.
1.3.7 Server
Spesso vengono impiegate versioni potenziate dei personal computer o delle workstation come server di rete, sia per
reti locali (di solito all’interno
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.
Scarica il documento per vederlo tutto.
-
Introduzione VHDL
-
Introduzione all'Architettura
-
Istologia - Introduzione
-
Introduzione ai calcolatori - Appunti