Upload
vuthuy
View
212
Download
0
Embed Size (px)
Citation preview
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-1
1. INTRODUZIONE ALL’ARCHITETTURA DEI CALCOLATORI
1.1 INTRODUZIONE
La disciplina informatica nota nel mondo con il nome di “computer architecture” che nei corsi di
studi di Ingegneria in Italia si chiama tradizionalmente Calcolatori Elettronici ha il duplice obiettivo
di fornire conoscenze nell’Analisi e nella Sintesi dei calcolatori elettronici o computer, dai
modelli architetturali , fino alla progettazione a livello dei componenti e a livello di sistema .
Scopo di questo disciplina è analizzare e progettare la struttura e l’organizzazione (architettura)
del calcolatore elettronico, conoscere la sua evoluzione nel tempo, l’organizzazione interna e
l’architettura dell’insieme di istruzioni (Instruction Set Architecture), ossia cioì’ che caratterizza
l’hardware visto dal software. Nel corso verrà anche trattato il progetto dei componenti
fondamentali del calcolatore e delle interfacce tra componenti, comprendendo quindi un modulo
specifico della disciplina nota come Reti Logiche.
Fig. 1: Evoluzione dei Calcolatori Elettronici
Lo scopo ultimo è permettere una comprensione profonda dei calcolatori attuali per progettare i
calcolatori del futuro, nota l’evoluzione degli ultimi 70 anni (fig.1).
I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione
dell’informazione, programmabili e general-purpose.
Innanzitutto il calcolatore elettronico è un sistema digitale di elaborazione, ossia un sistema
prevalentemente elettronico che tratta e modifica (elabora) dati digitali.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-2
Cosa è un sistema? Nell’ambito scientifico, è un qualsiasi oggetto di studio che, pur essendo
costituito da diversi elementi reciprocamente interconnessi e interagenti tra loro o con l’ambiente
esterno, reagisce o evolve come un tutto, con proprie leggi generali.
Un sistema può essere analizzato nel suo complesso, come una unica “scatola nera” o attraverso
la analisi dei suoi componenti; lo si può progettare e realizzare sia come un oggetto unico sia
come somma delle parti. Gli ingegneri dell’informazione studiano i modelli e le tecnologie per
progettare sistemi di elaborazione e comunicazione dell’informazione, ed è per questo che si parla
di ICT (ICT: Information and Communcation Technology).
I sistemi sono il fuoco di interesse di ogni ingegneria e scienza. Esistono sistemi fisici, matematici,
meccanici, astrofisici biologici etc… I calcolatori sono attualmente sistemi prevalentemente
elettronici, il cui funzionamento si basa sulle tecnologie elettroniche. Ma esistono altri sistemi di
elaborazione che impiegano altre tecnologie, primo far tutti il cervello umano. Nel corso però non
si farà un cenno troppo approfondito alle tecnologie elettroniche che sottendono alla loro
realizzazione in quanto l’architettura e la struttura dei sistemi di elaborazione è in parte
indipendente dalla tecnologie.
Il sistema elabora dati. Il termine “dato” è molto generico. Si definiscono dati per un sistema tutti
gli elementi impiegati per produrre un lavoro o compito determinato: sono dati le grandezze di
ingresso, numeriche, testuali o grafiche; sono dati le variabili di appoggio per eseguire un calcolo
o le istruzioni ricevute.
I dati per un calcolatore sono tutte le grandezze quantificabili che vengono impiegate per un
calcolo o per un processo, così come i dati forniti in un problema matematico sono le grandezze
che possono servire per la risoluzione.
I dati e le grandezze impiegati nei calcolatori sono dati digitali, ossia rappresentabili tramiti digit,
ossia cifre (che deriva dal latino digitus,i=dito).
Pur essendo rappresentati da cifre, non per questo, i dati elaborati sono per forza numeri. I dati
sono numeri, lettere, valori grafici, audio e video, informazioni sensoriali,e presto pesnieri ed
emozioni. Alcuni sono definiti in modo astratto, provengono da elaborazioni matematiche, o sono
l’uscita (output) di altre elaborazioni, altri provengono dall’esterno come segnali. Anzi tutti i dati
all’interno del calcolatore elettronico sono a loro volta sono gestiti da segnali elettrici.
Per Segnale si intende una qualsiasi grandezza fisica che varia nel tempo e che può assumere un
insieme di valori misurabili. I segnali possono essere trasmessi, memorizzati ed impiegati come
dati in un computer. Esempi di segnali misurabili sono la temperatura o la pressione, il segnale
video e audio (immagini e suoni), la velocità di un oggetto o un impulso elettrico fornito da un
apparato industriale. I segnali sono normalmente acquisiti da apparati chiamati sensori
(telecamere, microfoni, giroscopi, amperometri, etc) che ricevono la grandezza fisica, la codificano
e la passano al calcolatore come dato di ingresso. Segnali sono forniti anche in output da opportuni
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-3
apparati periferici dei calcolatori (ad es. il generatore di suoni, il video), trasformando il dato
digitale nella corrispondente grandezza fisica.
Nell’Ingegneria dell’Informazione un segnale può essere analogico o digitale. Un segnale si dice
analogico se può assumere infiniti valori all’interno di un dato intervallo mentre un segnale si
dice digitale se può assumere un numero finito, discreto, di valori all’interno di un fissato
intervallo di variabilità e quindi in corrispondenza biunivoca con numeri naturali. Molti segnali
sono creati in forma analogica e sono acquisiti da sensori e trasformati in digitale attraverso
convertitori .
Fig. 2 : Segnali analogici e digitali
Come viene convertito il segnale da analogico a digitale? I convertitori elettronici che eseguono la
conversione (e che si studiano nei corsi di Elettronica) campionano e memorizzano i valori nel loro
intervallo di variabilità. Il campionamento, ossia la misurazione ad intervalli di solito periodici può
avvenire nel tempo come il segnale x(t) in figura, che può rappresentare un segnale acustico e
nello spazio come per le immagini. Nei video, composto da sequenze di immagini campionate con
un intervallo costante, avviene un campionamento sia nello spazio e sia nel tempo. Il valore
campionato viene quindi discretizzato in un insieme di valori possibili, che rappresentano
l’intervallo di variabilità del segnale digitale.
Tra i segnali digitali, un segnale si dice binario quando assume solo due valori e si dice Bit (binary
digit) la informazione che esso trasmette nell’unità di tempo con la corrispondente cifra binaria
che può assumere solo valori due valori, solitamente 1 e 0. Più in generale le variabili binarie sono
variabili che possono assumere solo valori 1 e 0 e le variabili digitali sono definite da definite da
configurazioni binarie di n bit, ossia stringhe di n cifre binarie 1 e 0. Una configurazione di 8 bit si
dice byte.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-4
Le stringhe di n cifre binarie quando hanno il significato di un numero, rappresentano il valore
numerico in codifica binaria. Tramite la codifica binaria con n bit si possono rappresentare 2^n
differenti valori.
Esistono diverse codifiche binarie (intero, intero con segno, in complemento a due, virgola fissa,
mobile) di solito tutte di tipo posizionale, in cui la posizione del bit nella stringa ne rappresenta il
valore. Un segnale digitale può essere rappresentato da una variabile binaria di lunghezza che
dipende dall’intervallo di variabilità del segnale stesso con una corrispondenza tra valore e
rappresentazione che dipende da una specifica convenzione chiamata codifica.
Nella tabella che segue vengono riportati i valori rappresentabili con variabili binarie di n bit, e il
motivo di uso.
Bit Nome Portata Impieghi
8 Byte, ottetto Con segno: da −128 a +127 Senza segno: da 0 a +255
Caratteri ASCII, carattere C (minimo), byte Java
16 Mezza word, word Con segno: da −32.768 a +32.767 Senza segno: da 0 a +65.535
Caratteri UCS-2, int C short (minimo), interi C (minimo), carattere Java, short Java
32 word, word doppia (double), lunga
Con segno: da −2.147.483.648 a +2.147.483.647 Senza segno: da 0 a +4.294.967.295
Caratteri UCS-4, True color con alpha, C int (normale), C long int (minimo), Java int
64 word doppia, lunga, quadrupla
Con segno: da −9.223.372.036.854.775.808 a +9.223.372.036.854.775.807 Senza segno: da 0 a +18.446.744.073.709.551.615
C long int (su sistemi a 64 bit), C99 long long int (minimo), Java long
128
Con segno: da −170.141.183.460.469.231.731.687.303.715.884.105.728 a +170.141.183.460.469.231.731.687.303.715.884.105.727 Senza segno: da 0 a +340.282.366.920.938.463.463.374.607.431.768.211.455
C int __attribute__ ((mode(TI))) (su sistemi a 64 bit congcc)
N Intero a n bit Con segno: da -2^{n-1} a 2^{n-1} -1 Senza segno: da 0 a 2^{n}-1
Tab. 1: Alcuni formati supportati dai processori attuali e le possibili codifiche collegate
(attenzione la parola “word” si riferisce all’architettura del calcolatore in uso).
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-5
Le variabili binarie possono corrispondere a dati astratti come numeri e simboli o a grandezze
fisiche ossia segnali digitali. Esistono specifiche codifiche numeriche ed alfanumeriche per
rappresentare numeri e parole.
Un numero intero senza virgola spesso viene rappresentato con variabili Integer di 32 bit.
Un carattere in codice ASCII è rappresentato con 8 bit. La tabella ASCII (American Standard Code
for Information Interchange) è un codice convenzionale usato per la rappresentazione dei
caratteri di testo attraverso i byte: ad ogni byte viene fatto corrispondere un diverso carattere
della tastiera (lettere, numeri, segni). In realtà lo standard ASCII copre solo i primi 128 byte (da
00000000 a 01111111), i successivi byte fino al 256° costituiscono la tabella ASCII estesa che
presenta varie versioni a carattere nazionale. (http://www.asciitable.com/)
Un segnale musicale digitalizzato viene rappresentato con una stringa di 16 bit o 32 bit . Un pixel
luminoso è codificato nello spazio colore RGB (Red, Green, Blue) da tre componenti ognuna delle
quali a sua volta è rappresentata in forma digitale con 256 valori differenti; il pixel perciò viene
rappresentato normalmente con una variabile di 3x8=24 bit, spesso allineata a 32 bit.
Quindi tutti i dati impiegati nel calcolatore sono digitali, rappresentati con variabili binarie. La
rappresentazione del dato non è sempre collegata al suo significato, e all’informazione che è insita
nel dato stesso.
1.2 SISTEMI DI ELABORAZIONE DELL’INFORMAZIONE
Il calcolatore non è solo un sistema digitale, ma è un sistema che elabora l’informazione. Ma cosa
è l’informazione? Nel mondo dell’informatica, anziché parlare di dati si impiega il termine
“informazione”. Il termine informazione fu impiegato per la prima volta alla fine degli anni ’40,
per definire e quantificare meglio ciò che si chiamava“intelligence” ossia l’utilità dei dati trasmessi.
In quel periodo i calcolatori come oggi erano solo agli albori e l’aspetto più importante non era
l’elaborazione del dato quanto la sua comunicazione efficiente.
In generale, si chiamano informazione l’insieme dei dati che assumono un significato univoco, utile
per una specifica applicazione. Anche per gli essere umani le informazioni sono “dati utili”.
Informazione Notizia, dato o elemento che consente di avere conoscenza più o meno
esatta di fatti, situazioni, modi di essere [Treccani Online 2012]
A parte quest’ aspetto qualitativo la parola “informazione” fu definita come oggetto discreto e
quantificabile per la prima volta da Claude Shannon che dopo il dottorato al MIT come ingegnere
elettronico e matematico, nel 1948 lavorando al Pentagono sulle comunicazioni per la guida di
missili, pubblicò il testo “Una teoria matematica della comunicazione” in cui veniva introdotto per
la prima volta in modo sistematico e teorico lo studio dell'informazione nella comunicazione.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-6
La teoria dell’informazione, ora una delle aree di ricerca più importanti della matematica discreta,
dell’informatica e dell’ingegneria dell’informazione (che si applica anche alla fisica, alla genetica,
alle neuroscienze…), si occupa di quantificare l’informazione prodotta, trasmessa, dissipata ed
elaborata.
Shannon non si occupava specificatamente del calcolo quanto della trasmissione della
informazione data una sorgente ed un canale di trasmissione; l’obiettivo
era, come e’ ora di permettere una trasmissione in modo
a) efficiente (ossia col minor lavoro o al minore energia possibile)
b) affidabile (ossia priva di errore);
fece considerazioni asemantiche studiando l’informazione
indipendentemente dal significato del messaggio ed indicando invece come
poter misurare l’informazione stessa legandola al concetto di simbolo
usato per trasmetterla.
Shannon definiì e giustificò il modello per cui, la natura dell’informazione è discreta" e non
continua ed è misurabile come sequenza di valori o cifre binarie 1 e 0. Questo elemento atomico
di informazione fu’ chiamato con un neologismo bit (- binary digit). Nel suo saggio definì
l’informazione come la riduzione dell’incertezza: durante una comunicazione attraverso un dato
alfabeto di simboli, l'informazione viene associata a ciascun simbolo trasmesso e viene definita
come la riduzione di incertezza che si può stimare a priori sul simbolo trasmesso.
Per questo Shannon misurò l’informazione con la stessa formulazione matematica dell’entropia
in fisica, e definì quindi l’informazione come l’entropia (o contenuto informativo medio) della
sorgente o come misura della perdita di incertezza derivata.
La comunicazione avviene attraverso un dato alfabeto di simboli xi, e viene trasmesso un messaggio di M simboli X={xi, i=1..M}. Ogni simbolo xi avente probabilità P(xi) di essere trasmesso ha associata una informazione definita come “la riduzione di incertezza che si può avere a priori sul simbolo trasmesso”. Shannon definì l’informazione di uno specifico messaggio X come la quantità, non negativa,
𝐼(𝑥𝑖) = LogB1
P(xi)
essendo B la base con cui i simboli sono definiti; con B=2 allora 𝐼(𝑥𝑖) = − log2 P(i)
è l'informazione collegata al simbolo binario. Cosa si deduce da questo formalismo?
a) L‘informazione è legata all’incertezza: l’informazione portata da un messaggio sia tanto maggiore quanto meno il messaggio `e atteso (cioè quanto e’ meno probabile) , ossia quanta maggiore è la sorpresa; Un simbolo molto probabile ha poca informazione: al limite se fosse possibile trasmettere un solo simbolo (ad es. sempre x=1), la sua probabilità sarebbe 1 e non ci sarebbe informazione.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-7
Un simbolo poco probabile ha molta informazione e in generale 𝑃(𝑥𝑖) > 𝑃(𝑥𝑗) ↔ 𝐼(𝑥𝑖) < 𝐼(𝑥𝑗)
Alcuni messaggi sono più informativi di altri perché provocano più sorpresa e sono meno probabili. Ad esempio leggere in italiano “u” dopo “q” non è una grande informazione data che la probabilità è molto alta (come in inglese l’ “h” dopo la “t”).
b) l’emissione di una coppia di simboli statisticamente indipendenti fornisce una quantità di informazione pari alla somma delle informazioni dei singoli simboli.
𝑃(𝑥𝑖, 𝑥𝑗) = 𝑃(𝑥𝑖)𝑃(𝑥𝑗) ↔ 𝐼(𝑥𝑖, 𝑥𝑗) = 𝐼(𝑥𝑖) + 𝐼(𝑥𝑗)
Per questo secondo Shanno il contenuto informativo medio di una sorgente (dell’alfabeto e della sia distribuzione di probabilità) si può misurare sommandone tutti i contributi come entropia, della sorgente, se si considera il valor medio, su tutto l’alfabeto dei simboli possibili, di I(xi):
H(X) = E[I(xi)] = ∑ P(xi)l
i=1..M
ogB1
P(xi)= − ∑ P(xi)l
i=1..M
ogBP(xi)
L’entropia è sempre positiva H(X) ≥ 0 misurata in bit per simbolo con B =2. E’ la media pesata dell’informazione di ogni simbolo. È il logaritmo medio dell’improbabilità del messaggio come in termodinamica l’entropia è misura del disordine. Il Bit è la quantità minima di informazione che corrisponde all’entropia che si ha quando il simbolo è binario. Infatti Quale è l’informazione o entropia nel messaggio che corrisponde ad un lancio di una moneta (definendo 0 testa e 1 croce)? p(0)=p(1)=1/2; equiprobabili; log (1/2)=-1; H(X)=-(1/2)(-1)+(1/2)(-1)) H(X)=1 L’informazione associata e’ quindi 1 bit. Un simbolo binario preso a caso ha entropia ossia informazione 1; un simbolo xi preso a caso in un alfabeto di 16 simboli possibili ha più informazione; Che entropia ha un simbolo xi preso a caso in un alfabeto di 16 simboli possibili?
H(X) = E[I(xi)] = ∑ P(xi)l
i=1..16
ogB1
P(xi)= − ∑ (
1
16) l
i=1..16
ogB (1
16) = − ∑ (
1
16) (−4)
i=1..16
=
∑ (1
4) = 4
i=1..16
Ha informazione di 4 bit . Piu’ in generale
0 ≤ H(X) ≤ log𝑀 E’ uguale se tutti i simboli sono equiprobabili. Se si trasferisce una sequenza di n simboli l’informazione da trasferire e’ nH(x) bit.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-8
Esercizio 1: Se si trasferisce una stringa di 8 caratteri, in un alfabeto di 32 simboli equiprobabili quanta informazione si ha?
In un codice non tutti i messaggi sono possibili o equiprobabili; nella lingua inglese ad esempio si stima che il contenuto informativo di uno dei 32 simboli sia circa 2,3 e non 5 a causa della ridondanza… tanto che anche un messaggio come “If u cn rd ths” diventa comprensibile.
Ora è assodato che l’informazione, indipendentemente dal suo significato, può essere creata,
ossia codificata, trasmessa ed elaborata in modo misurabile. Il calcolatore elettronico gestisce ha
il compito di elaborare l’informazione digitale.
Questi studi sono stati fondamentali sia per la comunicazione, sia per tutto l’ICT, nella capacità di
compressione ( nei compressori JPEG ad esempio se c’è poca informazione e il dato è ridondante
può essere compresso meglio), nella sicurezza e nella crittografia e in generale nell’elaborazione
del segnale.
La misurazione dell’informazione è alla base dell’informatica e delle comunicazioni. In questo
corso useremo generalmente la parola informazione come dato il cui contenuto può ridurre
l’incertezza sui simboli impiegati e rappresentabile in modo discreto.
Le informazioni sono fornite al calcolatore come ingresso (input), o sono generate dal calcolatore
stesso, impiegate durante il funzionamento e fornite in uscita (output) ad un operatore umano,
ad un’altra macchina, ad un attuatore (come un robot) o trasmesse ad altri calcolatori in modo
binario ossia impiegando i due simboli “0 “ ed “1”.
Shannon dimostrò anche che un calcolatore fatto di circuiti elettrici (allora a relè) capaci di
codificare ed elaborare messaggi creati in valori “0” ed “1” poteva essere in perfetta
corrispondenza all’algebra di Boole, definendo le basi della logica matematica, dell’uso della logica
nell’intelligenza artificiale.
Per conoscere maggiormente la teoria dell’informazione e la dimostrazione che Shannon apportò
per corroborare le sue ipotesi, si vedano i corsi di informatica teorica e i testi correlati.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-9
Fig. 3 : Il calcolatore elettronico: un sistema di elaborazione di informazioni digitali.
Il calcolatore come sistema digitale non solo gestisce ma elabora dati, informazioni e segnali
digitali. Per questo si chiama anche Sistema di Elaborazione delle Informazioni.
I dati e le informazioni possono riferirsi ad una grandezza reale o virtuale, calcolata o creata anche
in modo casuale. Dati sono i numeri, le lettere, i testi, le immagini…
Il calcolatore come sistema digitale non solo gestisce ma elabora dati e segnali digitali. Il
calcolatore elettronico infatti elabora dati e segnali digitali binari eseguendo opportune istruzioni.
Anche le istruzioni sono codificate in modo binario in una sequenza chiamata programma. Per
questo il computer si dice Sistema di elaborazione delle informazioni, programmabile.
Le istruzioni e i dati sono rappresentati come sequenze di bit raggruppate in gruppi di byte
chiamati parole. La parola è l’unità di riferimento di un calcolatore. Si dice che una CPU lavora ad
n bit quando n è la dimensione dei suoi operandi ed n è la dimensione della sua “parola”. “Parole”
in un calcolatore sono variabili binarie con una lunghezza normalmente multipla del byte. I
calcolatori (la parola “elettronici” è d’ora in poi sottintesa) attuali hanno parola a 32 bit (4 byte) o
a 64 bit (8 byte) ma esistono calcolatori con parole di 8, 16, 32, 64, 128 bit.
Pre requisiti: Ripassare le codifiche intere a virgola fissa e mobile, le codifiche ASCII e BCD, le conversioni da decimale a binario e viceversa, da decimale, binario a esadecimale e viceversa e le operazioni in binario. (Si veda Appendice A Sturctured Computer Organization A.Tanenbaum, T.Austin)
Nell’ambito dei calcolatori elettronici si usa sempre la codifica binaria, per la documentazione
orientata ad una facile comprensione umana si usa spesso la codifica esadecimale, più compatta
della codifica binaria. Si ricorda la trasformazione binaria esadecimale:
binario esadecimale
000 0
001 1
010 2
011 3
100 4
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-10
101 5
110 6
111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
Ad esempio il numero decimale (1029)d si rappresenta in numero binario
bin Bin raggruppato Hex raggruppato Hex
10000000101 100|0000|0101 4|0|5 405
Mentre il numero decimale (81974950)d si rappresenta in esadecimale
Hex Hex raggruppato Bin raggruppato Bin
1E22A6 1|E|2|2|A|6 1|1110|0010|0010|1010|0110
111100010001010100110
Si famigliarizzi con le conversioni decimale binario e viceversa, e binario ed esadecimale e
viceversa.
Esercizio 1: un calcolatore ha un errore nella cella di memoria 0FF00FA0. Che cella è rappresentata
in binario?
Risposta: 0000 .1111. 1111. 0000. 0000. 1111.1010. 0000
1.2 UNITA’ DI MISURA
Il bit e il byte sono le unità di misura principali. Con n bit si possono rappresentare N=2n
configurazioni binarie diverse. Quindi con 1 bit si definiscono due configurazioni, e con 1 byte 256
configurazioni diverse. Con una parola a 16 bit si hanno 216=64K (circa 64 mila) configurazioni
diverse e con 32 bit si hanno 232 ossia 4G (circa 4 miliardi) configurazioni diverse.
I calcolatori lavorano solo con l’aritmetica binaria e con dati (integer, floating point etc) espressi
come configurazioni binarie (nel caso di integer in complemento a 2).
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-11
21=2 26=64
22=4 27=128
23=8 28=256
24=16 29=512
25=32 210=1024 (=1K)
Tab. 2: Potenze del 2.
Ad esse seguono i prefissi più utilizzati (che ricordiamo sono impiegati per le potenze del 2 e quindi
solo approssimano i simili prefissi nelle metriche tradizionali).
210 1K Kilo (circa 1000, esattamente 1024)
220 1M Mega (10^6)
230 1G Giga (10^9)
240 1T Tera (10^12)
250 1P Peta (10^15)
260 1E Exa (10^18)
270 1Z Zetta (10^21)
280 1Y Yotta (10^24)
Tab. 3: Prefissi standard del Sistema Internazionale.
Questi prefissi accompagnati da B (es MB) indicano byte e corrispondono alle potenze del 2 mentre accompagnati da b (es Mb) indicano bit e corrispondono alle potenze del 10 ( ad esempio 10 Mb/s indicano 10 milioni di bit per secondo). In calcolatori si usano di solito le grandezze in Byte, mentre per le comunicazioni si usano in bit (ad es. USB 2.0 ha una velocita di trasferimento di 480 Mbit/s).
20 1 bit Unità di misura dell’informazione e della logica
21 2 bit Base del codice genetico
22 4 bit Nibble necessario per codificare un carattere esadecimale
7bit Codice ASCII semplice epr codificare carattere alfanumerico
23 8 bit Byte; Word nei Commodore 64
24 16 bit Integer semplice; Word nei primi PC IBM
25 32 bit Integer e per IEEE 754 lunghezza di valore floating point single-precision; dimensione degli indirizzi nell’IPv4 protocollo attuale di internet ; 1 world nei PC pentium-based e nelle consolle Playstation..
26 64 bit per IEEE 754 lunghezza di valore floating point double-precision; 1 world nei PC x86-64 e nelle consolle Playstation 3, Xbox 360..
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-12
27 128 bit dimensione degli indirizzi nell’IPv6 protocollo di internet ; dimensione minima dello standard Md5 in crittografia
28 256 bit (32 byte) Dimensione tipica di un linea di cache
29 512 bit (64 byte) Dimensione tipica di un linea di cache di secondo livello
210 1024 bit Dimensione (in realtà 1288) di una magnetic stripe card per IEEE 754
211 2024 bit (256 byte) capacità tipica di una RAM anni ‘80
212 4096 bit (512 byte) Dimensione tipica di un settore nel file system; tipica informazione digitale contenuta in una pagina di testo non formattata
588 bytes lunghezza standard di un frame audio MPEG con 16 bit a 22KHz
…..
220 1Mbit Circa (1978560 bit) una pagina standard fax (1728-1245 pixels)
222 4Mbit Circa (4976640 bit) un frame non compresso PAL DVD (720 x576 x 12bpp YCbCr)
223 8Mbit Circa (8343400 bit) una buona fotografia digitale 1024 x 768
225 5Mbyte Circa la raccolta completa dell’opera di Shakespeare
230 1Gbit Circa (650Mbyte) capacità di un regolare CD; Circa 6.4 109 bit capacità del genoma umano
234 4 Gbyte Capacità di memorizzazione tipica delle macchine intel a 32bit fino al Pentium; 4.7 Gbyte capacità di un DVD doppia faccia
237 128Gbit Circa 25 Gbyte capacità di un Blu-ray disc
240 1Tbit Capacità di un Hard disk tipico nel 2008
250 1Pbit Circa 300 Terabyte la capacità di Interne nel 2004
254 16Pbit Circa massima memoria indirizzabile nell’ AMD64
254 16Pbit Circa massima memoria indirizzabile nell’ AMD64
260 1 Ebit Circa (200 Petabyte, 1.6 Exabit) si calcola la quantità di materiale stampato al mondo nel 2010
270 1 Zbit Circa 0,3 Zettabye la quantità di informazione in un grammo di DNA ; 0,5 Zettabye la quantità stimata di informazione digitale nel mondo nel 2009
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-13
280 1 Ybit Almeno il contenuto di Youtube e di internet nel 2012
2305 La capacità di informazione nell’universo osservabile [Seth Lloyd (2002),
Computational capacity of the universe, Physical Review Letters 88 (23)]
2332.19 10100 Googol
I Megabyte e Gigabyte sono comuni anche nei PC. Si calcolava nel 2010 che ogni persona sulla
Terra (uomo, donna o bambino) produca in media 333 Megabyte di dati digitali ogni anno (ora
ordini di grandezza maggiori!); tutte le musiche di Beethoven ad ottima qualità si memorizzano in
20 Gigabyte. il Terabyte è l’unità di misura dei dischi di memorizzazione nei server e ora anche nei
PC di fascia alta: un Terabyte può contenere circa 3.6 milioni di immagini da circa 300Kbyte, o 300
ore di video di buona qualità, o 1000 copie dell’enciclopedia britannica. Un Petabyte è un milione
di Gigabyte circa, può contenere 500 miliardi di pagine di testo. Si dice che tutte le parole mai
pronunciate da un essere umano se digitalizzate dovrebbero essere contenute in un Exabyte. Si
dice che l’intero Word Wide Web nel 2008 contenesse centinaia di Petabyte di dati ma con
l’avvento di Youtube ora contenga più di uno Yottabyte di dati. Si pensi che nella conferenza
CIVR2009 Oliver Heckmann della Google Zurich ha dichiarato che ogni minuto vengono caricati su
Youtube (upload) circa 15 ore di video. A luglio 2011 all’atto del 6° compleanno di Youtube è stato
dichiarato che vengono caricate circa 45 ore di video al minuto!.
Infine, sono stati definiti i Brontobyte come circa 1000 yottabyte e i Geopbyte come circa 1000
Brontobyte.
Esercizio 2: Convertire in modo mnemonico le potenze del 2 in unità di misura del calcolatore. Ad es. 2^15= 2^10+2^5= 32K . Esercizio 3: Se un calcolatore ha un bus di indirizzi (vedere poi) a 16 bit può avere un numero di indirizzi diversi pari a 2^16=64K. E se hai il bus di indirizzi a 20,24,32,36 bit quanti indirizzi diversi può avere? Esercizio 4: in italiano il lessico completo si stima contenga circa 427.000 parole anche se nel lessico comune di una persona di cultura media alta si usano circa solo 47.000 vocaboli, cosi’ come si stima che il vocabolario di base della nostra lingua e’ di circa 6500 parole con cui si copre circa il 98% dei discorsi. Di quanto deve essere lunga almeno la parola di un calcolatore per rappresentare il lessico completo, il lessico comun o il vocabolario di base? Risposta: (19,16,13) Esercizio 5: in italiano si stima che le parole siano lunghe mediamente 10,7 caratteri. Semplificando a 10, e sapendo che il calcolatore codifica un carattere con 8 bit, con una tale lunghezza media di stringa quante parole si potrebbero avere? Avendo invece dieci caratteri con un alfabeto di 21 cifre diverse (a..z) quante diverse parole si possono rappresentare?
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-14
Risposta: (circa 1 Yotto parole, 1.000.000.000.000.000.000.000.000 e circa 1 Zettaparola) Corrispondentemente esistono anche le unità di misura per le grandezze minori dell’unità che di solito nei calcolatori si usano per le frequenze. Ad es. 1GHz indica un clock di 10^-9 sec. ossia di un nano secondo (ns).
10-3 1 milli
10-6 1 micro
10-9 1 nano
10-12 1 pico
10-15 1 femto
10-18 1 atto
10-21 1 zepto
10-24 1 yocto
Tab. 4: Prefissi standard del Sistema Internazionale.
Esercizio 6: “109 battute al minuto…”, se invece di battute fossero parole di lunghezza media codificate con 8 bit a carattere che frequenza in bit rate avrebbe Jovannotti? Risposta : Circa 160bps circa 6,3 bit ogni millisecondo.
1.3 MODELLI E LIVELLI DI ASTRAZIONE
Come detto, in questo corso si osservano i calcolatori elettronici come sistemi digitali
programmabili e general-purpose, studiandone l’analisi e la sintesi.
L’analisi è lo studio del funzionamento di un sistema noto a partire dalla sua struttura fino ad
arrivare ad una sua descrizione Comportamentale (o Funzionale). Dato un sistema, il risultato
dell’analisi (ossia la sua descrizione comportamentale) è unico. Si può analizzare il sistema nel suo
complesso, definendo gli ingressi, le uscite e le sue funzioni o parti del sistema. Ad esempio, si può
fare l’analisi dell’architettura di tutto il calcolatore, o l’analisi dei componenti quali la memoria, o
l’analisi del software per individuarne le sue (uniche) funzionalità. Quando si considera un sistema
noto e si cerca di farne l’analisi dettagliata della sua descrizione funzionale si parla
specificatamente di “reverse engineering”.
La sintesi di un sistema ed in particolare di un sistema digitale, è al contrario il processo che porta
alla progettazione (e in seguito alla realizzazione) della struttura del sistema, dei suoi componenti
e delle connessioni tra componenti a partire dalla descrizione comportamentale. Progettare un
calcolatore significa modellare e fare la sintesi dei suoi componenti e delle interconnessioni tra i
componenti ( sia hardware, sia software) per ottenere una specifica funzionalità.
A tutti i livelli, dalle semplici reti logiche (che costituiscono ogni componente) all’architettura di
tutto il sistema, l’analisi è univoca mentre la sintesi non lo è. La sintesi dipende da molti fattori:
dal compromesso costi/prestazioni, dal mercato, dalla capacità dei progettisti, etc. Questo spiega
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-15
come il calcolatore che ha una sola descrizione funzionale, ha invece tante implementazioni
diverse che hanno portato in cinquant’anni ad un’evoluzione dei calcolatori stessi di cui tutti
conosciamo la portata.
Fig. 4: Analisi e sintesi.
Per descrivere un calcolatore nell’analisi e per farne la sintesi in un progetto bisogna definirne un
modello.
L’ingegneria crea modelli ossia astrazioni della realtà in cui si evidenziano aspetti di interesse e
si sopprimono i dettagli non interessanti per il livello di astrazione in cui ci si collocano. Nel modello
si definiscono le astrazioni o strutture che verranno usate per modelli più complessi. In ogni
modello si impiegano i componenti che sono stati modellati a livelli più bassi di astrazione. È
indispensabile lavorare a modelli quando si considerano sistemi troppo complessi per essere
analizzati o progettati tutti assieme nei minimi dettagli. Ciò permette anche di lavorare in team e
permettere di progettare in parallelo componenti di cui siano definiti a priori le funzioni e le
interfacce. L’ingegnere crea ed usa modelli per realizzare i sistemi facendo il progetto, ossia una
sintesi, in base alle specifiche definite. Il modo di progettare è simile sia che si debba realizzare un
semplice PC che un supercalcolatore.
ANALISI SINTESI
Descrizione
STRUTTURALE
Descrizione
COMPORTAMENTALE
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-16
Fig. 5: Livelli di astrazione dell’hardware.
La gestione di modelli e di livelli di astrazione è utile per trovare un collegamento tra la visione del
sistema a livello funzionale, o dall’esterno e la visione interna a livello strutturale. Questo è tanto
più vero dai computer dove esiste un grande gap semantico tra ciò che l’utente vuole da un
computer e ciò che il computer può fare, o almeno anche se ora le potenzialità sono infinitamente
cresciute da come lo realizza. Per questo i livelli di astrazione nell’ambito dei calcolatori si
chiamano specificatamente livelli di macchine virtuali. Se si studia solo l’hardware, ( e vale per
ogni sistema di elaborazione digitale), il modello di un calcolatore può essere descritto a diversi
livelli di astrazione:
Livello dei circuiti
Livello logico
Livello RTL
Livello di sistema
Per un ingegnere, il calcolatore non è solo hardware ma il calcolatore è unione di hardware e
software. Mentre però nei primi calcolatori la separazione tra hardware e software era ben netta,
nei calcolatori attuali si può dire con A. Tanenbaum che l’hardware e il software sono
logicamente equivalenti, cioè le funzioni che si possono ottenere con una sintesi hardware sono
le stesse ottenibili in software e viceversa, con un diverso rapporto tra prestazioni e flessibilità.
Ogni operazione software se ben compresa a livello di dettaglio può essere progettata in hardware
e ogni componente hardware può essere emulato dal software (“ Hardware is just petrified
software“ K.Panetta)
Una funzione realizzata in hardware normalmente è più veloce (si dice “cablata” o hardwired)
mentre in software è più flessibile, modificabile e spesso riusabile indipendente dall’hardware
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-17
(portabile) o dai livelli di software sottostanti. Così il calcolatore nel suo complesso si può studiare
a diversi livelli di astrazione (modello “a cipolla” ).
Livello 0: Livello logico digitale il livello dei circuiti elettronici, dei transistor e dei
componenti digitali, delle reti logiche e RTL: e dei componenti hardware. Il computer può
essere studiato come insieme di porte logiche che a loro volta creano le unità elementari
per il calcolo o la memorizzazione etc.
Livello 1: Livello di microarchitettura: che coinvolge le scelte sui blocchi logici che
implementano la CPU e l’interno dei componenti del calcolatori: a questo livello si
definiscono ancora i componenti logici impiegati (come RTL e come sistema).Viene ad
esempio definita la ALU (Arithmetic Logic Unit) e il suo Data Path (percorso dei dati), la
gestione delle memorie etc. In alcuni calcolatori gia’ questo livello è programmabile con
un linguaggio di bassissimo livello (microcode) e con un programma chiamato
microprogramma. Le macchine erano microprogrammate per permettere di realizzare già
microarchitetture flessibili e specializzabili nel software; ora la maggior parte dei
calcolatori ha il controllo della CPU e della microarchitettura non più di tipo
microprogrammato ma di tipo cablato.
Livello 2: Livello Instruction Set Architecture (ISA) o livello del linguaggio Macchina. Ogni
produttore ha un manuale della CPU e del proprio linguaggio Macchina implementato
nell’ISA; e’ il livello che definisce l’architettura della CPU e di conseguenza cio’ che il
calcolatore puo’ svolgere.
Livello 3: Livello di Sistema Operarivo e del Software di sistema: è il livello ibrido del
Sistema Operativo e Middleware ossia il software di basso livello non necessariamente
proprietario del Sistema Operativo per la gestione della macchina fisica e virtuale e per le
comunicazioni in rete. Chi scrive programmi in questo livello (systems programmers) usa
direttamente le istruzioni dell’ISA o alcune macroistruzione proprie del sistema operativo
( come le System call)
Livello 4: livello Assembly è un livello intermedio in cui la macchina viene programmata
gia’ in modo simbolico, in cui esiste un simbolo che corrisèponde direttamente ad ogni
istruzione dell’ISA, o a volte impiega delle system call. I programmi in assembly sono
tradotti o interpretati in linguaggio macchina; La macchin è gia’ vista come un sistema
virtuale comandabile attraverso programmi scritti direttamente da programmatori id
sistema in linguaggio Assembly (sempre più rari) e da compilatori/interpreti che
traducono i programmi di livello più alto in assembly e da qui in linguaggio macchina.
Livello di macchina virtuale (virtual machine) e del Software Applicativo o dei linguaggi
di alto livello in cui il calcolatore e’ visto in modo astratto e virtuale ed i programmi sono
scritti in linguaggio ad alto livello come C C++ java Python PHP… e che poi vengono tradotti
da compilatori.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-18
Fig. 6: il modello a cipolla o multi layer
I modelli “a cipolla” o multi-layer sono tipici di tutta l’Ingegneria dell’Informazione. Così, nelle
telecomunicazioni e nello studio delle reti di calcolatori si studiano i Livelli ISO-OSI per i protocolli
di comunicazione.
Questo concetto di insieme di livelli di astrazione è importantissimo se si pensa al ciclo di
progettazione del software: di fatto un essere umano programma o scrive istruzioni ad un livello
n per una macchina virtuale che non corrisponde necessariamente alla macchina fisica. Grazie ad
un processo di traduzione questo programma in linguaggio Ln può essere trasformato in un
linguaggio di livello più basso Ln-1, fino al linguaggio macchina del calcolatore. In alcuni casi il
programma non è tradotto interamente ma interpretato da un programma interprete istruzione
per istruzione.
La differenza sta nel fatto che nella traduzione o compilazione, il programma viene trasformato
in un altro programma in linguaggio più semplice che viene eseguito mentre nell’interpretazione
il programma viene caricato in memoria ed usato come dato di ingresso per interpretare volta per
volta ogni istruzione.
I linguaggi sono in diretta relazione con le macchine fisiche o virtuali. Una macchina infatti
definisce il proprio linguaggio e viceversa. Potrebbe essere costruita una macchina avente come
proprio linguaggio il linguaggio C ma sarebbe più costosa ed inefficiente ed è ben più conveniente
realizzare traduttori (compilatori) per linguaggi più semplici.
Osservando quindi i linguaggi e i livelli delle macchine virtuali dei calcolatori attuali si può definire
una struttura come segue:
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-19
Fig. 7: Livelli di linguaggio e di macchine virtuali del calcolatore ( da 1.2 A. Tanembaum).
Sotto al livello logico c’è il livello dei dispositivi proprio dell’elettronica. Il livello della logica
digitale (Level 0) è definito da un linguaggio composto da gate o porte logiche elementari, che
composte da alcuni transistor ricevono in ingresso informazioni binarie producono un output
binario mentre eseguono le semplici operazioni logiche come OR NOT o AND sui singoli bit. I gate
raggruppati assieme formano porte logiche a livello di parola se eseguono una funzione
combinatoria, senza memoria, o registri se l’informazione viene anche memorizzata a livello di
parola. Le porte e i registri formano le unità di elaborazione, le memorie e tutti i componenti del
calcolatore che rappresentano la microarchitettura (Level 1) del calcolatore, descritta attraverso
un linguaggio come l’RTL. Nella microarchitettura si definisce il percorso dei dati (data path) e
l’unità di controllo. In molte architetture la microarchitettura esegue un vero e proprio
programma in un linguaggio elementare chiamato microprogramma, noto solo alla casa
costruttrice, mentre su altre il microprogramma è eseguito direttamente come operazioni
elementari sull’hardware (ossia è cablato sull’hardware).
Per ogni livello esistono specifici linguaggi di definizione e descrizione dell’hardware con cui
rappresentare la struttura e il comportamento. Es. VHDL ossia VHSIC (Very High Speed Integrated
Circuits) Hardware Description Language è il linguaggio più utilizzato per lavorare a livello logico
e RTL, il linguaggio RTL viene usato a livello RTL e di sistema per indicare i trasferimenti di dati tra
componenti a livello non di bit ma di parola.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-20
Più in alto (Level 2) c’è il vero e proprio linguaggio macchina ossia il linguaggio definito dall’ISA
(Instraction Set Architecture) che è ciò che il produttore mette a disposizione nel manuale di ogni
CPU. È definito come stringhe binarie.
Fig. 8: Linguaggio macchina Intel e corrispondente linguaggio assembly.
Ad esempio l’istruzione mov eax,dword ptr [ebp-4] indica: carica sul registro interno del
processore chiamato eax i 4 byte (ossia dword) contenuti in memoria a partire dall’indirizzo
[ebp-4]. La lunghezza del codice istruzione è di 4 byte (8b45fc03).
Nel livello più alto (Level 3) sono indicate le istruzioni in linguaggio macchina del sistema
operativo. Inizialmente negli anni ’60 il Sistema Operativo fu realizzato come un programma
sempre in esecuzione sul calcolatore per automatizzare i job sell’operatore e rendere l’impiego
del calcolatore più efficiente, facendo eseguire job degli utenti anche in assenza dell’operatore
stesso e di notte e quindi usando la CPU al 100%. Poi piano piano aggiunse altre funzionalità tanto
che anche a livello ISA si aggiunsero istruzioni specifiche dette “chiamate al supervisore2, o macro
di sistema oprativo o ora chiamate di sistema (system call) come quelle che ora vengono invocate
epr lavorare con i driver dei dispositivi; si aggiunsero poi caratteristiche per gestire il time sharing
ossia la allocazione a condivisione di tempo della cu a più processi in esecuzione e la gestione dei
file e documenti (fyle systems), poi l’interfaccia grafica e molte altre funzionalità.
La macchina virtuale a questo livello contiene istruzioni ibride in parte direttamente in linguaggio
macchina, in parte interpretate per aggiungere nuove funzionalità alla macchina (come la gestione
di eccezioni o della protezione). Chi lavora a questo livello si dice spesso che lavora come
programmatore di sistema, per progettare le macchine virtuali (come la JVM). Al di sopra il
linguaggio assembly è in corrispondenza con il linguaggio macchina ma è definito con una
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-21
simbologia mnemonica comprensibile anche ad un essere umano. Questo programma viene poi
tradotto (assemblato) per passare ai livelli più bassi. Questo livello era in passato molto usato dai
programmatori di hardware per la configurazione dei driver, ora spesso viene direttamente
impiegato da programmi che traducono i livelli superiori verso il linguaggio macchina. Alla cima
della pila sta il linguaggio di alto livello usato dai programmatori di applicazioni che viene tradotto
(compilato) automaticamente.
Ad ogni livello di astrazione si studia l’architettura del calcolatore l’insieme dei tipi di dati, delle
operazioni e di tutte le caratteristiche peculiari del livello in un solo modello; il modello viene
descritto in uno specifico dominio di rappresentazione che indica l’insieme di particolari
considerati di interesse. Per ogni livello si può fornire :
1) descrizione funzionale (o comportamentale): descrive il comportamento del sistema in
termini dei suoi ingressi e delle sue uscite (input e output).
2) descrizione strutturale (architetturale): descrive la struttura del sistema in termini di
elementi primitivi che lo compongono.
3) descrizione fisica (implementazione): descrive la effettiva realizzazione del sistema
indicando in dettaglio i componenti impiegati e le loro interconnessioni.
Fig. 9: Descrizione di un semplice calcolatore (dal testo Stalling).
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-22
Fig. 10: Descrizione di un sommatore (full adder) (Da Stalling).
Nel linguaggio VHDL ad esempio ogni componente ha una behavioral description che indica gli
ingressi e le uscite e la funzione e una architectural description che ne descrive una struttura.
L’esempio in Fig. 10 a sinistra indica una semplice descrizione di un calcolatore con cui vengono
dichiarati e poi istanziati i componenti. In Fig. 10 a destra è indicata la descrizione VHDL di un full
adder. Gli esempi delle figure dimostrano come in effetti l’hardware è descritto dal software e
può essere sostituito dal software, e viceversa. Ugualmente i livelli software potrebbero essere
integrati l’uno nell’altro con una diversa descrizione strutturale.
Hardware e software sono equivalenti e ogni funzione in un calcolatore si può progettare in
hardware o in software a seconda che si voglia ottenere maggior efficienza o flessibilità.
1.4 DESCRIZIONE FUNZIONALE E STRUTTURALE DEL CALCOLATORE
La descrizione funzionale più semplice di un calcolatore elettronico è la seguente: un calcolatore
è un sistema digitale capace di interpretare ed eseguire programmi (sequenze di istruzioni)
memorizzati, elaborare dati digitali in ingresso e fornire dati in uscita.
È la tipica descrizione “a scatola nera” di cui si conoscono solo gli ingressi e le uscite. Più nei
dettagli, il calcolatore elettronico come descrizione funzionale è un sistema digitale che ha 4
funzioni principali:
1) gestione delle istruzioni: deve memorizzare, recuperare, interpretare ed eseguire le istruzioni
di un programma per lavorare sui dati e controllare tutto il sistema;
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-23
2) elaborazione dei dati: come compito principale deve elaborare dati binari: le operazioni
elementari che il calcolatore può compiere sui dati, spesso si chiamano impropriamente
operazioni di ALU (Arithmetic Logic Unit). In realtà tali operazioni non sono eseguite solo dalla ALU
ma anche da altre unità interne come l’unità floating point;
3) memorizzazione dei dati: deve memorizzare i dati: i dati prima e dopo della elaborazione
devono essere memorizzati in modo temporaneo (es. per i risultati intermedi) ed in modo
permanente
4) trasferimento dei dati: i dati devono essere trasferiti in ingresso ed uscita (funzioni di
Input/Output) a sistemi direttamente collegati o deve essere instaurata una comunicazione con
dispositivi remoti.
Questa è la descrizione funzionale che può corrispondere a diverse descrizioni strutturali.
Fig. 11: Descrizione strutturale del calcolatore.
Il modello ormai consolidato di descrizione strutturale di calcolatore hardware è quello che
corrisponde al calcolatore come unione di 5 componenti fondamentali: il calcolatore è quel
sistema composto da tre unità logiche: la CPU (1), le memorie (2), l’I/O (input/output) (3) collegate
tra loro attraverso il bus di interconnessione (4). Ad essi si aggiunge il software (5) come ultimo e
necessario componente di un calcolatore elettronico.
Si definisce allora il calcolatore come quel sistema digitale composto da hardware e software; la
parte hardware è composta dai dispositivi fisici ed in particolare da una o più CPU (Central
Processing Unit), da memorie e dispositivi di I/O collegati da uno o più bus; la parte software è
costituita da software di base e software applicativo, ossia dai programmi che codificano in
linguaggio macchina uno specifico algoritmo.
L’hardware è quindi l’insieme di tutti gli oggetti tangibili del calcolatore, i circuiti, le schede, i cavi,
le memorie…che compongono il calcolatore; il software consiste in algoritmi e delle
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-24
rappresentazione degli algoritmi in una codifica definita dal linguaggio, e delle corrispondente
modifiche fino a definire programmi eseguibili.
Cosa è l’architettura di un calcolatore?
È il suo modello, ma la sua definizione dipende dal livello di astrazione. In generale, è il modello
che definisce il comportamento, la struttura e quindi che porta al progetto del calcolatore .
Di solito si impiega il termine Architettura per indicare le “caratteristiche del calcolatore visibili
dal programmatore”.
A livello di astrazione più alto, quando si parla di programmatore di alto livello (ad es in Java) si
pensa all’architettura della macchina virtuale che rende invisibile al programmazione ogni
dettaglio interno. La macchina virtuale Java, detta anche Java Virtual Machine o JVM, è
la macchina virtuale che esegue i programmi in linguaggio Java bytecode, ovvero i prodotti della
compilazione dei sorgenti Java. La JVM è formalmente una specifica, un modello di architettura
codificato, mantenuta da Sun Microsystems.
Quando si studiano i calcolatori elettronici nei dettagli hardware e software, invece, l’architettura
descrive il modello del calcolatore vista da un programmatore assembly o da un compilatore. I
compilatori infatti devono conoscere ogni dettaglio architetturale per tradurre nel modo più
efficiente (“ottimizzato” se possibile) le istruzioni scritte in linguaggio di alto livello in linguaggio
macchina.
A livello di singola CPU, l’architettura comprende fondamentalmente l’Instruction Set
Architecture; a livello di tutto il calcolatore il modello di connessioni tra CPU, memoria ed I/O.
Per esempio l’architettura di una CPU può prevedere o no un’istruzione specifica per la
moltiplicazione, o l’architettura del calcolatore può avere un’architettura di memoria a due livelli
di cache.
Con il termine organizzazione (a volte usata come sinonimo di architettura) si intende più
propriamente l’insieme di caratteristiche strutturali che spesso non sono visibili al
programmatore, ed in particolare come viene realizzata l’ISA nella microarchitettura della CPU e
come viene realizzata l’architettura delle memorie e delle periferiche. La microarchitettura
comprende alcune scelte che spesso sono visibili solo al compilatore come, il modo con cui viene
realizzata l’istruzione di moltiplicazione.
Il termine Architettura fu coniato dall’IBM con il sistema S/360 negli anni ’60 per indicare una
“famiglia di calcolatori” che avevano le stesse funzionalità (stesse istruzioni) ma un’organizzazione
diversa e quindi costi e prestazioni diversi. Questo concetto è rimasto nell’ISA. Su processori con
la stessa architettura a livello ISA “girano”, ossia sono funzionanti, gli stessi programmi eseguibili
senza necessità di ricompilazione. Processori su cui girano gli stessi programmi eseguibili (e quindi
con la stessa ISA) possono avere microarchitetture diverse.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-25
Nelle macchine Intel, l’ISA a 32 bit IA-32 comprende tanti processori dal 486 al Pentium, al P6 o
Pentium 2, il Pentium IV il Centrino etc.. su cui girano gli stessi programmi. L’IA- 64 a 64 bit non
è compatibile a livello di codice sorgente. Si parla di architettura x86 compatibile con i processori
Intel ad architettura IA (Intel o AMD ) ad esempio. Il Power PC ha un’architettura diversa.
Le architetture a 64 bit comprendono l'IA-64 della Intel (usata nelle CPU Itanium),
l'AMD64 dalla AMD (usata nelle CPU Opteron, Athlon64, Turion e Sempron64) ora proposta
anche da Intel per i propri processori (es. Pentium 4D) sotto il nome EM64T e
l'architettura PowerPC di IBM/Motorola (in origine il PowerPC 620, più recentemente PowerPC
970).
1.5 DAL MODELLO DI VON NEUMANN…
Chi ha inventato il calcolatore? È molto difficile da dire perchè da centinaia di anni l’uomo insegue
il sogno di realizzare un sistema automatico che sappia far di conto, eseguire operazioni, processi
mentali e pensare come l’essere umano.
Leonardo da Vinci progettò una prima macchina meccanica per fare calcoli aritmetici
Fig. 12: La macchina di Leonardo.
Alla fine del 1600 Pascal inventò una macchina meccanica per fare somme, modificata da Leibniz
per eseguire anche moltiplicazioni e divisioni. La prima macchina meccanica programmabile fu
invece realizzata da Charles Babbage all’inizio del 1800 a Cambridge. Egli definì ed inventò la
prima macchina chiamata “difference engine” capace di eseguire un solo algoritmo che poi
modificò nella Analytical engine capace di fare diverse operazioni con una specie di linguaggio
assemblativo programmabile con schede collegate a migliaia di rotelle meccaniche. Il software
scritto per questa macchina fu scritto da Ada Lovelace, sua moglie, a cui fu dedicato il linguaggio
parallelo chiamato “Ada”. Il calcolatore di Babbage non funzionò mai del tutto, ma certo fu il
precursore dei moderni.
In questo periodo storico che arriva fino alla soglia della seconda guerra mondiale, e che spesso si
chiama Generazione 0 dei computer, il calcolatore era ancora un oggetto studiato
tendenzialmente per risolvere calcoli matematici con elementi meccanici o elettromeccanici. Negli
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-26
anni’30 del secolo scorso iniziarono i primi esperimenti di macchine vicine ai calcolatori moderni,
come i prototipi di Konrand Zuse in Germania (distrutti dalla II guerra mondiali) e gli esperimenti
di John Atanasoff in USA, solo teorici che però furono alla base delle memorie DRAM. Subito dopo
i primi modelli vicini ai calcolatori attuali ma ancora con relè elettromeccanici furono studiati ad
Harvard da Howard Aiken che costruì il MARK 1 nel 1944.
La Generazione 1 dei computer però nasce con la nascita dell’elettronica e dei tubi a vuoto i
precursori dei transistor.
I primi progetti hanno avuto come stimolo al seconda guerra mondiale: la macchina ENIGMA per
codificare i messaggi tedeschi e la macchina COLOSSUS parzialmente progettata da Alan Turing
per decidificarli. Il progetto di questi calcolatori sono rimasti segreti per decine di anni. Nel
frattempo in USA il primo progetto finanziato dal governo americano a John Mauchley e Presper
Eckert, portò alla realizzazione del sistema ENIAC (Electronci Numerical Integrator And
Computer), programmabile con interruttori e in modo decimale, composto da circa 18.000 tubi a
vuoto e circa 6000 interruttori epr programmarlo a mano e del secondo sistema chiamato EDVAC
(Electronic Discrete Variable Automatic Computer).
Ormai è opinione diffusa che si pensi a John Von Neumann come il padre del calcolatore moderno
non perché ne fu l’inventore ma perché fu il primo che ne ha descritto il modello. Questo modello
definito sia a livello funzionale che strutturale fu formulato da John Von Neumann nel 1945
inizialmente per descrivere il funzionamento del calcolatore chiamato EDVAC e poi riprogettato
da Von Neumann come IAS dal nome delllo IAS Institute of Advanced Study of Princeton. Questo
modello fu anche chiamato “stored program computer” perché fu il primo che invece di pensare
ad interruttori penso alle istruzioni come una sequenza di comandi codificati (programma), un pç
come aveva pensato Babbage. Descrisse nel suo modello che una macchina con tale architettura
(l'attuale computer) poteva eseguire qualunque calcolo risolubile e che infondo il sistema era
molto simile al cervello umano così come i suoi elementi strutturali ( allora tubi a vuoto e diodi)
erano simili ai neuroni, così come erano modellati in quegli anni da Mc Culloch e Pitts (pionieri
degli studi delle reti neurali).
Il modello attuale dei calcolatori deriva dal modello definito da Von Neumann negli anni ‘50. Il
modello o architettura di von Neumann è stata una delle prime descrizioni strutturali del
calcolatore. Questo Modello fu cosi’ importante eprche’ essendo pubblicato impedi’ a Mauchley
e dEckert di brevettare il loro modello. Essi crearono un’azienda (UNISYS) ma il modello fu
pubblico, copiato e sviluppato da tutta al comunità scientifica.
Per i modelli e le descrizioni comportamentali di un calcolatore si deve fare riferimento invece
agli studi negli stessi anni di Alan Turing che addirittra prima di vederne una implementazione
aveva definito tutte le possibili capacità che un calcolatore avrebbe dovuto avere.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-27
Letture: Test di Turing; Alan Turing“ Macchine calcolatrici e intelligenza” del 1950.
Oppure G .Israel, A.M. Gasca “il mondo come gioco matematico: la vita e le
idee di John von Neumann” 2008 o D.Leavitt “ L’uomo che sapeva troppo, Alan
Turing e l’invenzione del computer” 2006
( da DI, Università di Pisa 222.di.unipi.it) Nel 1936 il matematico inglese Alan Turing propose
l'idea di una macchina immaginaria la Macchina di Turing (MdT) che fosse capace di eseguire ogni
tipo di calcolo su numeri e simboli.
Una macchina di Turing (MdT) è definita da un insieme di regole che definiscono il
comportamento della macchina su un nastro di input-output (lettura e scrittura). Il nastro può
essere immaginato come un nastro di carta di lunghezza infinita, diviso in quadratini dette celle.
Ogni cella contiene un simbolo oppure è vuota. Una MdT ha una testina che si sposta lungo il
nastro leggendo, scrivendo oppure cancellando simboli nelle celle del nastro. La macchina analizza
il nastro, una cella alla volta, iniziando dalla cella che contiene il simbolo più a sinistra nel nastro.
Ad ogni passo, la macchina legge un simbolo sul nastro e in accordo al suo stato interno
corrente: 1.decide il suo prossimo stato interno, e 2.scrive un simbolo sul nastro e decide se
spostare o meno la testina a sinistra o a destra di una posizione. Come per uno stato della mente
di un essere umano, lo stato interno di una MdT definisce l'ambiente in cui una decisione viene
presa. Una MdT può avere solo un numero finito di stati. Il comportamento di una MdT può essere
programmato definendo un insieme di regole, o quintuple, del tipo: (stato-interno-
corrente, simbolo-letto, prossimo-stato-interno, simbolo-scritto, direzione).
La quintupla (1, B, 0, A, >) indica che se la macchina si trova nello stato interno 1 e legge sul nastro
il simbolo B, allora passa nello stato interno 0, scrive A sul nastro e si sposta di una posizione a
destra. Se ci si vuole spostare senza modificare il contenuto del nastro si può scrivere il simbolo
appena letto utilizzando una quintupla analoga alla seguente: (1, B, 0, B, >).
La MdT è nel suo stato interno iniziale 0 con la testina posizionata sul simbolo più a sinistra nel
nastro. A partire da questa configurazione iniziale, la MdT effettua una serie di azioni seguendo
rigorosamente il suo insieme di regole. Se la macchina raggiunge uno stato interno per
cui non esiste nessuna quintupla per la coppia: (stato-interno-corrente, simbolo-letto) allora la
MdT si ferma e termina la sua computazione.
La MdT fu definita da Alan Turing per dare risposta all'Entscheidungsproblem (problema di
decisione) proposto da Hilbert nel suo programma di fondazione formalista della matematica. Si
è consolidata la convinzione che per ogni problema calcolabile esista una MdT in grado di
risolverlo: questa è la cosiddetta congettura di Church-Turing, la quale postula in sostanza che
per ogni funzione calcolabile esista una macchina di Turing equivalente, ossia che l'insieme delle
funzioni calcolabili coincida con quello delle funzioni ricorsive.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-28
Il modello di Turing è stato formulato prima di ogni sintesi.
Inoltre, Turing è anche noto per il suo famoso “test di Turing”, per il quale il modello del calcolatore
sarebbe stato perfetto se un umano parlando ad un essere al di là di una porta non non fosse stato
in grado di capire se a rispondere fosse un essere umano o una macchina.
Il tempo e’ passato e ora sono necessari i CAPTCHA (completely automated public Turing test to
tell computers and humans apart) coniato nel 2000 alla CMU e all’IBM per riconoscere umani da
bots.
È comunemente accettato che tutti i calcolatori attuali discendono dal modello di Von Neumann.
Fig. 13: Charles Babbage, Ada LoveLace, John Von Neumann.
L’architettura di Von Neumann si compone di 5 parti fondamentali:
una unità di controllo per gestire il funzionamento di tutte le unità del sistema e per
prelevare (fetch) e interpretare le istruzioni al fine di eseguire una data operazioni; una
unità aritmetico logica (ALU) che esegue le istruzioni stesse sugli operandi, memorizzati
temporaneamente su una piccola memoria interna chiamata accumulatore. Queste due
componenti (allora realizzate in un sistema di enorme dimensioni) formano l’unità di
elaborazione attualmente nota come CPU (central processing unit) o processore;
la memoria: unità che mantiene sia i dati sia le istruzioni (codice) che compongono il
programma da eseguire e codificate in modo numerico;
le unità di input per introdurre i dati;
le unità di output per emettere i risultati (formando insieme alle unità di input quello che
in futuro sarà noto come il sottosistema di INPUT/OUTPUT).
Nei calcolatori del tempo di Von Neumann le varie parti erano collegati attraverso
comunicazioni punto a punto in sistemi fisici grandi come una stanza; le comunicazioni poi
si sono strutturate ed evolute nel concetto di bus come struttura di comunicazione
condivisa che collega i componenti precedenti.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-29
Fig. 14: Architettura di Von Neumann.
Il modello logico di Von Neumann è definito indipendentemente dalla implementazione del
sistema, e dalla tecnologia e Von Neumann è stato uno dei padri del concetto di astrazione
nell’ingegneria dell’informazione.
Per saperne di più: I primi calcolatori come quelli attuali furono realizzati durante la II guerra mondiale; del primo , COLOSSUS, attivo nel ’43 in Inghilterra per decodificare i messaggi cifrati del sistema tedesco ENIGMA, si seppe all’inizio ben poco e il progetto rimase segreto per 30 anni. Nel frattempo negli USA eserciti di donne venivano impiegate come “calcolatrici” soprattutto per calcoli balistici e si iniziarono progetti di macchine non programmabili per il supporto al calcolo, in particolare dall’azienda IBM. Nel 1944 a Harvard con un progetto di Howard Aiken veniva costruito Mark1 per la marina militare durante la II guerra mondiale; ad esso collaborava l’IBM. Nel frattempo nel 1944 si stava creando come progetto segreto in codice PX, l’ENIAC (electronic numerator integrator analyser and computer) finanziato a John Mauchley e Presper Eckert fatto con 18000 valvole e programmato con 6000 interruttori. Il progetto in realtà termino nel ’46 dopo la guerra. Del progetto però fu informato Von Neumann al tempo esperto scientifico della difesa e professore allo IAS. Von Neumann subito partecipò al progetto della seconda generazione il sistema EDVAC (electronic discrete variable computer) che doveva correggere gli errori dell’ENIAC. I progettisti iniziali erano sempre Eckert e Mauchly ma Von Neumann fu il primo che scrisse nel 1945 il rapporto scientifico per il governo, dove indicò il modello e la proprietà intellettuale del sistema, dell’Università della Pennsylvania. L’anno dopo Eckert e Mauchley lasciarono l’università per sfruttare commercialmente il sistema fondando l’UNISYS ma il Pentagono e Von Neumann dichiararono che il sistema non poteva essere brevettato, permettendo così una rapida diffusione a livello mondiale. Nel 1946 alla fine della guerra Von Neumann iniziò a scrivere articoli teorici sul modello e fondò un progetto di larghe vedute per la costruzione allo IAS del primo calcolatore per usi scientifici e non bellici (ECP) con il programma memorizzato come i dati senza dover usare interruttori specifici. Erano già presenti molti concetti dei calcolatori attuali, la definizione di una memoria primaria ed una secondaria, la rappresentazione dei numeri in virgola fissa e le prime idee per una virgola “fluttuante” per il calcolo scientifico. Il progetto durò 6 anni e solo nel 1951 sviluppò il primo problema di centinaia di ore di calcolo. Nel frattempo la tecnologia stava cambiando con i transistor al posto dei tubi a vuoto e compagnie private come IBM e UNISYS iniziavano a produrre sull’idea non brevettata i vari sistemi commerciali. Mentre era in
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-30
realizzazione l’ECP nel 1947 e 48 Von Neumann assieme a Goldstine, inizio a formulare i problemi legati alla programmazione (chiamati di coding) definendo un nuovo schema logico il “diagramma di flusso”, i loop e le ricorsività e definì il concetto di subroutines per evitare di riscrivere tutto il codice.. Von Neumann scrisse moltissimi articoli scientifici sull’analisi numerica che seguivano i suoi precedenti sulla teoria dei giochi, e i successivi sui calcoli metrologici. Negli ultimi anni fu sempre meno matematico e sempre più interessato alla nuova “computer science” e “information science”, per studiare l’architettura dei calcolatori e il confronto con la mente umana, partecipando a cicli di conferenze con McCullock sulle reti neurali e con Wiener, comunicazionista e controllista che nel 1948 aveva definito il termine cibernetica (Cybernetics: or control and communication in the animal and machine).
Il modello di Von Neumann dal punto di vista funzionale si chiama ”Stored program computer”
perché l’unità di elaborazione centrale (CPU Central Processing Unit) esegue sequenze di
istruzioni che sono riposte in una struttura di memorizzazione (memoria). La stessa memoria
contiene anche i dati che sono le informazioni che vengono elaborate dalla CPU in base alle
istruzioni.
Nel modello di Von Neumann, Dati ed Istruzioni sono fisicamente codificate come stringhe di bit,
allocate nella stessa memoria che però vengono interpretate differentemente dalla CPU. Questa è
la caratteristica del modello: tutto è definito come parole di bit sia le istruzioni che i dati, e tutte
risiedono in memoria.
Col termine di Memoria ci si riferisce alla Memoria Centrale, direttamente interfacciata alla CPU,
che contiene i dati temporanei. In un computer attuale è sempre presente anche la Memoria di
Massa che mantiene i dati in modo permanente prima e dopo l’elaborazione; essa è fisicamente
un sistema di memoria ma logicamente e dal punto di vista funzionale è un dispositivo di I/O.
Nello stesso periodo in cui veniva formulato il modello di Von Neumann ad Harvard veniva
progettato il calcolatore MARK I secondo un altro modello detto Modello di Harvard. La differenza
principale sta nella definizione e organizzazione delle memorie per dati ed istruzioni:
Architettura di Von Neumann: esiste una sola memoria che contiene sia dati che
istruzioni
Architettura di Harvard: dati e istruzioni sono memorizzati su due memorie separate a cui
la CPU accede contemporaneamente
Uno sguardo in avanti: I calcolatori attuali si basano sull’architettura di Von Neumann, più economica rispetto a quella di Harvard. Le connessioni tra componenti infatti sono spesso le parti più costose e meno affidabili e si cerca perciò di minimizzarne l’uso. La maggior parte delle CPU dei calcolatori sono nate come architettura di von Neumann. Nel tempo però sono state realizzate CPU soprattutto speciali come i DSP (Digital Signal Processor) seguendo l’architettura di Harvard per poter lavorare contemporaneamente sui dati e sulle istruzioni. Dagli anni ’80 in poi nelle CPU dei Personal Computer (come l’Intel 486) si iniziò ad introdurre un concetto poi assai diffuso per poter eseguire nel tempo più istruzioni in modo sovrapposto. È il concetto di pipeline per cui come
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-31
in una catena di montaggio mentre un’istruzione viene prelevata un’altra viene decodificata un’altra inizia ad essere in fase di esecuzione etc. Le CPU attuali hanno almeno 10-20 livelli di pipeline. Nei processori in pipeline per non rallentare l’esecuzione è necessario accedere nello stesso tempo a dati ed istruzioni. Per questo i processori che usano la pipeline adottano almeno all’interno del chip un’architettura di Harvard. Sono infatti presenti dentro al chip della CPU piccole memorie di appoggio (le cache) separate per i dati e le istruzioni. Questo concetto si è ancor più esteso nei nuovi modelli n-core in cui ogni core ( nei fatti ogni processore) ha le proprie memorie cache di dati ed istruzioni separate I calcolatori attuali possono perciò dirsi con architettura di Von Neumann (con una sola memoria centrale) a livello di sistema e fisicamente sulla scheda madre, e di Harvard (con memorie separate di dati ed istruzioni) nel chip.
Fig. 15: Modello di Von Neumann e di Harvard.
La maggior parte delle CPU per calcolatori general purpose ha seguito il modello di Von Neumann.
Possiamo dire però che ora i processori attuali mantengono il modello di Von Neumann a livello
logico dove la memoria è logicamente unica, mentre all’interno del chip la CPU è realizzata con
l’architettura di Harvard con memorie per dati ed istruzioni separate ed accessibili
contemporaneamente.
1.6 …AI CALCOLATORI MODERNI
Dalla macchina di Von Neumann ad ora sono passati piu’ di 50 anni, che corrispondono ad “ere
geologiche” nell’informatica.
Spesso si parla 2° Generazione (’55-‘65) o generazione dei transistor, per indicare il decennio in
cui si sviluppano i primi calcolatori simili a quelli attuali, composti da un bus, CPU, memorie e I/O,
sviluppatesi grazie alla invenzione del transistor ( 1948 John Bardeen, Walter Brattain, William
Schockley vincitori nel 1956 del Nobel). Nel 1961 viene prodotto il PDP-1 dalla dEC che grazie ai
transistor era capace di esehuire gia’ 200.000 ist/sec. Viene usato al MIT dove viene progettato il
primo schermo (e SpaceWar). Nasce il concetto di bus nel PDP-8 della DEC e nasce il concetto di
“architettura” da parte di IBM che crea i primi computer con i transistor tutti con la stessa ISA ma
microarchitettura diversa. Nel 1964 la CDC introduce un calcolatore “velocissimo” il 6600,
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-32
progettato come una macchina intrinsecamente parallela secondo concetti ancora perfettamente
attuali. Il 6600 progettata da Seymour Cray che poi con il Cray-1 introduce il concetto di
supercomputer.
Nella 3° generazione o generazione dei circuiti integrati (’65-’80) l’aspetto caratterizzante è la
integrazione elettronica dei computer che da essere grandi come stanze diventano di dimensioni
più vicine a quelle dei calcolatori attuali. Nelle macchine IBM 360 viene integrata per la prima volta
la multi-programmazione e nasce il concetto di emulatore , di grande spazio di indirizzamento (24
bit) e quindi grande memoria centrale. Fino agli anni ’80 si costruiscono grandi mainframes o
computer per data center e altri più piccoli minicomputer che si diffondono anche in Italia, come
il PDP-11 a 16 bit.
Nella 4° generazione o generazione dei VLSI (’80-), la larga scala di integrazione apre diverse
possibilità a nuove forme di computers. Si sviluppano sempre più minicomputer accessibili anche
a piccoli centri di calcolo che in assenza di internet hanno comunque accesso a dati e elaborazioni
locali e possono collegarsi a reti mondiali sperimentali. Nel 1983 Modena è all’avanguardia con il
CICAIA che compra il primo calcolatore DIGITAL Vax collegato alla rete mondiale DecNET a cui si
collegano nel 1985 circa 100 utenti!
Fig. 16: PC IBM 1981.
L’aspetto più importante è la nascita dei personal computer ossia di computer piccolissimi ad
uso singolo che iniziano a diffondersi negli uffici e nei laboratori. Vengono venduti i primi personal
computer in kit di montaggio con un sistema operativo chiamato CP/M e Steve Jobs costruisce il
suo primo Apple. L’IBM decide di investire in questo mondo affidando a terze parti , l’Intel di
costruire la CPU (l’8086 e l’8088) per un piccolo computer che presto si diffonde ovunque.
L’IBM decide di rendere pubblico il progetto del computer per favorire la creazione di schede di
espansione e questo fa nascere l’industria dei PC con l’introduzione dei cloni PC-IBM. Nel 1984
viene creata la Apple MacIntosh con la prima GUI (Graphical User interface), antesignana di
Windows. Solo dopo dieci anni nascono i primi computer portabili della Compaq. I primi PC IBM
hanno sistema operativo MS-DOS della neonata società Microsoft a cui segue l’OS-2 con la prima
GUI, e poi Windows.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-33
Nel frattempo l’Intel inizia a fornire diverse versioni del processore dall’8085 ai successori creando
la famiglia x86 con i processori 8086 e 8088 integrati nei PC IBM AT ed XT, processori ad
architettura a 16 bit.
Negli anni’80 si ha l’avvento dei processori a 32 bit , ma soprattutto la diffusione di processori RISC
(Reduced instruction set computer) ben diversi dal punto di vista della microarchitettura rispetto
ai tradizionali, da allora chiamati CISC (complex instruction set computer). I RISC erano
caratterizzati dall’impiego massivo di pipeline. Negli anni ’90 entrano sul mercato le architetture
superscalari che come vedremo permettono l’esecuzione di alcune istruzioni nello stesso tempo.
L’evoluzione poi è stata impetuosa con le architetture a 64 bit, ed ora gli n-core.
Dopo la quarta generazione? Negli anni ’80 si usava il termine di 5° generazione per indicare i
computer basati sull’intelligenza artificiale, soprattutto in Giappone, termine però che non ha piu’
avuto seguito ( dato che ora il software basato sull’intelligenza artificiale è diventato assai
comune). Sono nate però soluzioni alternative e differenti sia nelle architetture di grandi
dimensioni che di piccole dimensioni.
Ora la generazione attuale (5° o 6° che sia) ha le caratteristiche di essere low-power e invisibile: il
basso consumo puo’ permettere un uso massivo sia per i grandi sistemi che per i piccoli e le piccole
dimensioni ne hanno permesso la diffusione pervasiva. Nel 1989 la Gridpad ha messo in vendita il
primo tablet con input a penna, facendo nascere la generazione dei PDA (personal digital
assistant). Jeff Hawkins tra tutti va ricordato per aver definito l’algoritmo Grafiti per l’uso sul Palm
Pilot per legegre i caratteri da penna. Nel 1990 nasce il concetto di smartphone in IBM con SIMON,
troppo costoo pero’ per avere successo fino all’arrivo dell’iphone della Apple e alla diffusione
capillare con la piattaforma Android di Google. Si sviluppa sempre di piu’ il mercato dei calcolatori
dedicati (embedded), sempre piu’ piccoli ed indossabili e dall’altra parte dei server cloud sempre
più grandi. La terra e’ ora popolata di computers.
Nel passato sono state date diverse definizioni a classi di calcolatori dipendentemente dai loro
costi e dalle loro prestazioni. Spesso si usa(va) una classificazione dipendente dalla potenza di
calcolo.
Supercalcolatori (o Super computer): calcolatori molto specializzati, con poca dotazione
di software e progettati per svolgere operazioni matematiche e scientifiche molto
velocemente. Il termine si mantiene di solito per i calcolatori al top della classifica
mondiale dei calcolatori più potenti (www.top500.org).
Mainframe (’60-’80): calcolatori molto potenti utilizzati per collegare molti utenti.
Attualmente si tende ad utilizzarli prevalentemente per gestire grosse basi di dati, o
applicazioni multimediali e Web. Spesso sono calcolatori paralleli, SMP (symmetric
multiprocessor) es IBM S/390 e cluster di calcolatori, e spesso si chiamano “server”.
Minicalcolatori (’60): calcolatori che gestiscono un certo numero di utenti (10 -100) a
prezzo più contenuto. Il nome ora in disuso e sostituito anch’esso dal nome “server” fu
coniato nel 1965 per il PDP-8 (DEC).
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-34
Workstation: Sono minicalcolatori dedicati ad un solo utente e dotati di un’interfaccia
grafica ad alte prestazioni. Spesso si parlava, e si parla, di CoW: clusters of workstation, o
cluster.
Personal computer (’80): Sono calcolatori simili alle workstation ma con prestazioni
ridotte (non sempre), e di solito dedicati a un solo utente.
Oggi molti di questi termini sono poco utilizzati; in particolare il termine Minicalcolatore è ormai
sostituito dal termine, più generico, di Server. I calcolatori della fascia media, superiore ai PC e
alle workstation, sono per lo più utilizzati come server su cui risiede il software applicativo e i dati
condivisi a cui accedono gli utenti e i programmi di PC e workstation come client. Sono molto
potenti, con molti dischi sicuri e ridondanti e collegamenti veloci. Gli utenti collegati hanno una
interfaccia grafica di tipo più raffinato.
Ora una classificazione abbastanza accettata è la seguente:
Supercalcolatori www.top500.org, calcolatori paralleli con centinaia di migliaia di nodi
n-core (2008 IBM Blugene 256K processori PowerPC 4-core), TB memoria centrale e PB di
storage.
Servers: computer utilizzati per grandi programmi distribuiti con decine, centinaia o
centinaia di migliaia di utenti corrispondenti ai mainframes o ai minicomputers o
datacenter ( es Goolge servers). Dal punto di vista strutturale spesso si chiamano cluster
per indicare che sono l’insieme di piu’ workstation; esistono cluster che fungono da server
di diverse dimensioni. Su questi server si possono creare macchine virtuali, viste
dall’esterno come separate, ed utilizzate in remoto da più utenti. Ora si parla di “Cloud
Computing”, per indicare che le risorse, il software e le informazioni residenti sui cluster
sono fornite agli utenti come utilità su una infrastruttura di rete (Internet).
Desktop computers: sono i personal computer tendenzialmente per un solo utente, usato
anche come client per server in internet o intranet, con interfacce specifiche
particolarmente user-friendly, schermi, tastiere, mouse, etc. Fisicamente realizzati come
PC, Laptop, etc.
Pda (Personal Digital Assistant), Notebook, Tablet,: ora di potenza sufficiente da poter
rimpiazzare un PC spesso specificatamente orientati alle comunicazioni wireless e nei casi
dei Tablet all’interfaccia naturale.
Embedded Computers da smartphones, ai sistemi embedded industriali
Si parla di Architettura client-server, per indicare ciò che una volta si chiamava struttura con
terminali collegati al minicomputer o al mainframe; così ora si parla di architettura multi-tier (o a
livelli, secondo gli standard W3C) per indicare nei server la divisione funzionale e strutturale tra i
calcolatori dedicati all’interfaccia web e i calcolatori che realizzano l’application server. Oggi i
mainframe per i centri di calcolo sono stati in gran parte sostituiti da cluster di workstation (un
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-35
esempio è l’IBM 1350: ha fino a 512 CPU Intel Xeon al CINECA), ossia da insiemi di workstation,
strettamente collegati tra loro che lavorano in parallelo e in modo concorrente sulla stessa
architettura. Questi argomenti sono trattati in corsi successivi come Sistemi di Elaborazione
Multimediale e di Reti di Calcolatori.
Per saperne di più: Per richiamare la storia dei processori e microprocessori, ecco una tabella che propone la loro evoluzione nel tempo (non certo esaustiva). 1946 EDVAC ed ENIAC – University of Pennsylvania (DoD) – J.P. Eckert, J. Mauchley, da cui è
nato il Modello di Von Neumann 1951 UNIVAC-I – primo calcolatore commerciale – 250,000 $ - 48 esemplari 1952 IBM 701 anni ’60 IBM S/360 – prima definizione di architettura fine ’60 IBM S/370 – compatibile con S/360 molto diffuso come mainframe 1963 CDC 6600 – primo supercalcolatore (poi Cray) 1965 DEC PDP 8 – primo minicalcolatore 1971 DEC PDP 11 1971 DEC VAX – riferimento per i mainframe futuri ( chiamato anche VAX MIPS) 1971 microprocessore (Intel) CPU 4004 (sistema MCS-4) 1972 Intel 8008 – prima CPU a 8 bit 1974 Intel 8080 – seguito da Motorola MC6800 e Zilog Z80 1978 Intel 8086 – primo processore di seconda generazione a 16 bit in grado di indirizzare
memoria oltre che 64kB – seguito da MC68000 e Z8000 1979 Intel 8088 – processore a 8 bit esternamente con architettura interna a 16 bit 1979 IBM 801 – primo processore RISC (32 bit) 1982 RISC I – University of Berkley 1983 MIPS – University of Stanford 1984 MC68020 – prima CPU con cache istruzioni integrata 1985 Intel 80386 – prima CPU a 32 bit con MMU integrata 1987 MC68030 – prima CPU con cache separate e MMU (32 bit) 1989 MC68040 – prima CPU con anche FPU 1989 Intel 80486 inizi ’90 PowerPC – da unione IBM, Apple e Motorola 1993 Pentium – nuova architettura superscalare e ILP 1994 Pentium II, Pentium III, 2000-2003 Pentium IV, 180 milioni di transistors Pentium M (Centrino), 2005 Itanium IA64, Pentium dual-core 2006-07 Itanium2 (Montecito) dual core 1.7 miliardi di transistors, processori multi-core 2009 Xeon MP a 8 core 2.3 miliardi di transistors 2011 Xeon E7-8870 a 10 core, 2.6 miliardi di transitors.
1.7 SISTEMI DI ELABORAZIONE E PROCESSORI
Il calcolatore è un sistema digitale, ma non tutti i sistemi digitali sono calcolatori. Anche tra i
sistemi di elaborazione digitali che elaborano dati e segnali non tutti sono calcolatori elettronici.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-36
Malgrado la grande varietà di sistemi e soluzioni anche ora sistemi digitali si possono classificare
in:
1)sistemi general-purpose programmabili (computers). Questi sono i calcolatori elettronici più
propriamente detti secondo la definizione del primo capitolo. Essi sono caratterizzati da avere al
loro interno un componente hardware dedicato solo all’elaborazione binaria chiamata CPU
(Central Processing Unit), la cui attività non è definita dal progettista hardware ma viene definita
dal software. Un calcolatore è sempre
a) composto da 1 o più CPU,
b) dotato di sistema operativo (specifico software spesso realizzato da terze parti,
ossia non dalla casa costruttrice della CPU, che interfaccia l’hardware con il
software),
c) la sua funzione e attività è specificata dal software applicativo.
2) sistemi embedded (dedicati). Sono anch’essi calcolatori , composti di (1 o più) CPU spesso ma
non necessariamente con sistema operativo. A volte posseggono solo sistemi operativi semplici
con funzionalità ridotte (kernel di sistemi operativi) o sistema operativo proprietario. Essi hanno
però CPU specializzate internamente con reti logiche dedicate o CPU speciali (come
microcontrollori, o DSP digital signal processor), sono comunque programmabili e hanno come
caratteristica che la loro funzione è specificata sia nel software sia nell’hardware. Tra i i sistemi
embedded esempi tipici sono i sistemi embedded industriali, gli smarphone, e in generale i SoC
(System on Chip);
3) ASIC (Application Specific Integrated Circuit) sono sistemi di elaborazione in cui CPU, memorie
e periferiche sono “cablate” nell’hardware e progettate specificatamente; non sono
programmabili dal software ma solo configurabili. Configurabile significa che è possibile indicare
da parte dell’utente un insieme di ingressi specificatamente codificati per modificare o selezionare
la funzionalità interna in base a un programma o a una rete logica già definita, ma non esiste
necessariamente la possibilità di caricare un nuovo programma per una nuova funzione. Un
esempio di tecnologia usata per ASICs è l’ FPGA (Field Programmable Gate Array) una grande
matrice di gate elementari configurabili e riconfigurabili per ottenere un sistema digitale su singolo
chip. Ora le FPGA sono cosi’ potenti da poter essere impiegate epr realizzare un vero e proprio
processore ed un system on Chip.
La differenza tra calcolatori e sistemi embedded è sempre più piccola, dipende dai costi e
soprattutto dalla generalità dell’impiego. Un PC attuale con almeno due CPU (ad es. processore
dual core) e un sistema operativo Windows 8 è molto simile a un palmare o uno smart phone con
SO Windows Mobile Cosi’ come un laptop, un tablet o uno smarphone con il SO Android. Ma il PC
e il computer è general purpose e programmabile. Lo smart phone è un sistema embedded perché
alcune funzionalità (ad es. telefonare) non sono programmabili ma solo configurabili. Possono
però essere anche programmati in Java, in C o altri linguaggi. Alcuni sistemi embedded montano
o montavano un sistema operativo proprietario come il Symbian per i cellulari Nokia o il s.o. delle
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-37
smart-tv samsung. Nei calcolatori si usa il termine “proprietario” per indicare che è stato
progettato e realizzato ad hoc dalla stessa casa costruttrice che costruisce la CPU o più in generale
il sistema di elaborazione, si dice invece proveniente da “terze parti” per dire che è progettato e
realizzato parte. Ad es. un processore come il Pentium Centrino può lavorare con più sistemi
operativi di terze parti, su sistema operativo Microsoft (Vista o Windows) o Mac OS (come negli
Apple) o Linux.
Di solito i sistemi embedded hanno meno memoria dei sistemi general purpose e quindi montano
solo parti di sistemi operativi (chiamati embedded O.S. o kernel). In altri casi montano sistemi
operativi appositamente creati (Android).
In molti sistemi embedded, specialmente di tipo industriale, gran parte del software è progettato
direttamente come firmware, ossia come programma residente in memorie di sola lettura che
non devono essere mai o quasi mai modificate. La gerarchia di memoria è diversa tra sistemi
embedded e calcolatori come si vedrà nei capitoli seguenti.
I sistemi embedded sono normalmente meno costosi dei calcolatori, realizzati con componenti
estremamente economici e in grandi quantità o progettati ad hoc per un’applicazione (ad esempio
per il controllo di una linea di produzione industriale). I sistemi ASIC sono tutti progettati ad hoc
per l’applicazione, come dice il nome. Hanno costi di progettazione molto elevati ma costi di
realizzazione in serie molto bassi. Molti componenti dei calcolatori elettronici e molte periferiche
sono essi stessi sistemi ASIC.
I sistemi embedded sono molto utilizzati in diversi ambiti oltre a quello industriale: ad esempio
nel mercato “consumer” (smartphone, macchine fotografiche digitali, lettori musicali, etc), nel
grande mercato automobilistico e nel controllo dei veicoli mobili.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-38
Fig. 17Sistemi embedded in un’auto.
Nelle auto attuali ad esempio normalmente sono presenti più di 100 CPU che lavorano come
sistemi embedded.
Fino ad ora abbiamo parlato genericamente di CPU o processore come l’unità fondamentale di
controllo ed elaborazione dati CPU. Così come nel modello di Von Neumann ogni CPU, contiene
l’Unita’ di Controllo (Control Unit) e l’ unità di Elaborazione (Execution Unit).
Fig. 18: Componenti della CPU.
La CPU può essere integrata in un solo chip o essere composta da più chip (come era nei primi
calcolatori e come rimane in diversi super calcolatori). Se integrata in un solo chip la CPU si chiama
microprocessore, termine impiegato per la prima volta nell’Intel 4004 (1971). Perciò
microprocessore è un termine tecnologico e non architetturale come CPU anche se spesso ora
vengono usati erroneamente come sinonimi. Ora il microprocessore integra anche altre unità
logiche di elaborazione e memorie di supporto all’elaborazione (cache). Nei nuovi
microprocessori sono integrate più di una CPU (X multi-core) e anche periferiche (ad esempio il
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-39
supporto alle comunicazioni wireless). I microprocessori attuali hanno ora parte dell’hardware
dedicato al supporto efficiente al Sistema Operativo, alle cache e alla memoria (nella MMU,
Memory Management Unit), alle operazioni multimediali e hanno velocità sempre maggiore per
rendere la CPU potente in processi computazionalmente complessi.
Per saperne di più: Durante questo corso si farà spesso riferimento alla famiglia di processori della casa costruttrice Intel fondata nel ’68 da Robert Noyce, Gordon Moore e Arthur Rock. L’Intel nata per costruire memorie su silicio inizio nel ’70 a produrre il primo microprocessore 4004 a 4 bit di parallelismo progettato dall’italiano Federico Faggin. A questo seguì il processore a 8 bit 8008 e nel 1976 comparve l’8086 il primo microprocessore economico scelto dall’IBM per vendere il primo Personal Computer nella sua versione economica chiamata 8088 (processore a 16 bit internamente ma con interfaccia a 8 bit). Nel primo PC a5 MHz l’8088 aveva 16Kbyte di RAM ( in teoria fino a 1MB) e montava il sistema operativo progettato ad HOC chiamato MS DOS (Microsoft Disk Operating System). All’8086 seguì il 286 per il PC IBM/AT e per i modelli PS/2. Poi il 386, il primo processore con l’architettura a 32 bit interna come i processori n-core attuali, messo in commercio nel 1985, fu seguito dal 486 il primo con memoria cache integrata e precursore del primo Pentium del 1993 simile al 486 ma con due pipeline (che verranno spiegate in seguito). La famiglia del Pentium è cambiata radicalmente come microarchitettura dal Pentium Pro, e del Pentium III con le espansioni multimediali prima MMX e poi SSE, fino ad arrivare al Pentium 4 del 2000 con architettura hyperthreading, poi espansa nelle architetture parallele Core 2 e Core 4 del 2010. Non esiste solo la famiglia Intel: altri processori per personal Computer sono stati per lunghi anni quelli della famiglia Motorola (sui computer Apple) poi sostituiti dai processori Power PC e da Intel. Altri processori di cui si parlerà nel corso di tipo RISC sono stati impiegati per calcolatori più potenti o per sistemi dedicati alla grafica e ai videogiochi, tra cui i processori RISC che hanno dato vita ai processori CELL che con le schede grafiche Nvidia sono montati sulla Playstation III.
Alcune CPU speciali si chiamano microcontrollori. I microcontrollori sono microprocessori
specializzati per il controllo di periferiche di I/O soprattutto per ricevere dati da sensori e
controllare attuatori. Posseggono unità di calcolo più semplici dei microprocessori nati per
calcolatori general-purpose, sono di solito a velocità minore ma integrano porte di I /O e piccole
unità di memoria. La velocità minore (Mhz, o centinaia di Mhz, invece di Ghz) dei microcontrollori
è dovuta a diversi motivi. Innanzitutto la computazione non è di solito così complessa e quindi non
è necessario un processore a prestazioni troppo elevate. La realizzazione di un processore a
velocità basse costa meno e quindi i microcontrollori possono avere costi limitati. Processori a
velocità alta consumano e si scaldano e consumi ed emissione di calore devono essere limitati in
ambiente industriale. I microcontrollori erano stati progettati per realizzare un intero calcolatore
semplice in un singolo chip (o con pochi chip aggiuntivi).
Ora invece vengono impiegati anche in schede di controllo collegate a schede general-purpose.
Ad esempio nelle schede di espansione per il controllo dell’hard disk (che si chiama appunto
controller). Sono normalmente usati nei settori più diversi: per fare un elenco non esaustivo si
pensi ai sistemi embedded industriali, le centraline dell’auto ( che può contenere fino a 50-100
microcontrollori), gli elettrodomestici, antifurto, i dispositivi per la comunicazione come fax, le
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-40
periferiche come modem, stampanti, i dispositivi per la multimedialità come fotocopiatrici o
macchine fotografiche, i sistemi medicali (TAC, MRI..), le armi, i bancomat, i giochi, etc. Un
esempio è l’8051 Intel inizialmente progettato nel 1976 e capostipite della famiglia MCS-51.
(www.8051.com). L’8051 conteneva sul chip non solo una CPU come l’8086 ma anche memoria di
tipo ROM con timer interni e periferiche e sono ancora in commercio a pochi centesimi, assieme
ai processori derivati. Di fatto l’8051 ha la stessa ISA dell’8086.
Tanti tipi di microcontrollori sono ora in commercio:
per gli elettrodomestici (es forno a microonde)
per i terminali di comunicazioni (es fax)
per le periferiche dei computers (es stampanti)
per i dispositivi per la multimedialità e l’intrattenimento (es lettori DVD..)
per i dispositivi biomedicali
per i sistemi militari
per i sistemi di controllo industriali
per i dispositivi di vendita, i giocattoli etc…
Ora alcuni processori si chiamano specificatamente processori embedded: sono sempre più simili
ai processori general purpose ( ad es il Cortex9 ARM 4-core degli smaprtphone), ma rimangono
embedded perché hanno meno attenzione architetturale per i sistemi operativi, la virtualizzazione
etc, hanno spesso velocità più bassa per curare i consumi e hanno parti specializzate e sempre
più parti parallele per la gestione efficace di grandi quantità di dati.
Per saperne di più: I microcontrollori rimangono in commercio a 8, 16 e 32 bit per applicazioni diverse. Ad es. il chip Renesas R8C/Tiny a 16 bit è nato per la progettazione dei sistemi di controllo delle lavatrici, che ottimizza i cicli di risciacquo e i movimenti del cestello, programmato in codice C per i microcontrollori e viene usato per le biciclette elettriche, sopratutto in Cina. Ora i microcontrollori più comuni sul mercato sono gli ARM (prodotti dalla ST anche in Italia) di cui ne esistono centinaia di modelli da 4 bit a quelli molto potenti con memoria flash integrata come gli STM32 a 32 bit.
I DSP (Digital Signal Processor) sono processori per sistemi embedded specializzati
all’elaborazione digitale del segnale audio e video (in questo caso si chiamano VideoProcessor),
sono più semplici per la gestione della memoria e del SO ma hanno all’interno CPU e unità di
calcolo specializzate. Tipicamente usati nei cellulari, nelle schede audio e video.
Anche i DSP hanno parole diverse a seconda dell’impiego ad esempio a 16 o 24 bit per la musica.
I DSP più famosi sono dell’azienda “Texas Instruments” come la famiglia TMS320C di cui ne
esistono diverse architetture per il mercato delle comunicazioni, della telefonia e del multimedia.
Una caratteristica tipica delle architetture DSP è di prevedere un’unità hardware per la
realizzazione dell’istruzione MAC (multiply-accumulate) che realizza la funzione 𝑎 = (𝑎 ∗ 𝑐) + 𝑑,
importantissima per le convoluzioni, i filtraggi e le elaborazioni dei segnali digitali.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici -Dipartimento di Ingegneria “Enzo Ferrari” I-41
Altri processori sono specificatamente orientati alla grafica (GPU Graphic processing Units) che
hanno alcune funzioni embedded per il 3D anche se a volte sono impiegati, come le GPU Nvidia
anche epr elaborazioni general-purpose (si parla di GP-GPU).
I processori embedded per i dispositivi videogiochi e negli smartphone specializzati nella grafica
ormai sono potentissimi: ad esempio il CELL (basato sull IBM powerPC RISC) a 3.2 Ghz della
Playstation III che ha a bordo anche processori paralleli e processori Grafici Nvidia, o il Galaxy III
che ha a bordo un ARM 4-core e una Nvidia Tegra2 oltre che memorie flash, e sensori audio viedo,
giroscopi… etc
Esistono anche processori ancora più piccoli ed invisibili dei microcontrollori e dei DSP, veri e
propri calcolatori usa e getta. Spesso si chiamano appunto disponsable computers ma altro non
sono che sensori dotati di qualche elaborazione a bordo. Tra le sperimentazioni attuali dobbiamo
ricordare lo sviluppo crescente di RFID (Radio Frequency IDentificator) che sono miniaturizzati
senza batteria (alcuni RFID “attivi” ne sono in possesso) si abilitano quando sentono un impulso
da un’antenna esterna e possono inviare informazioni inizialmente di pochi byte ma ora sempre
di maggiore entità. L’impiego di RFID è notevole: dall’identificazione di manufatti in produzione e
magazzino, al controllo dell’identità di oggetti ed individui. Le nuove generazioni di calcolatori
miniaturizzati possono essere indossabili (wereable computer) e ovunque (ora si parla di
ubiquitous computer, and pervasive computer).
Risposte al capitolo
Risposta 1: si ha una entropia è 40. Ogni carattere ha la probabilità P(xi)=1/32 di essere trasmesso e ha un’informazione di 5 , L’informazione del messaggio e’ 8x5=40.