Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come...

41
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.

Transcript of Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come...

Page 1: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 2: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 3: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 4: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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).

Page 5: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 6: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 7: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 8: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 9: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 10: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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).

Page 11: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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..

Page 12: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 13: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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?

Page 14: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 15: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 16: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 17: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 18: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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:

Page 19: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 20: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 21: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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).

Page 22: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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;

Page 23: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 24: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 25: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 26: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 27: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 28: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 29: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 30: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 31: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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,

Page 32: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 33: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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).

Page 34: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 35: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 36: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 37: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 38: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 39: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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

Page 40: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.

Page 41: Calcolatori Elettronici - Unimore...I Calcolatori Elettronici o computer si possono definire come sistemi digitali di elaborazione dell’informazione, programmabili e general-purpose.

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.