Sei sulla pagina 1di 73

INTRODUZIONE ALL’ARCHITETTURA DEGLI

ELABORATORI

Appunti di lezioni - A. A. 2000-01


V. Ruggiero
Che cos'è l'informatica?

 In inglese: "Computer Science"

-È la scienza e tecnica dei calcolatori?


 In realtà il calcolatore è solo uno strumento per operare concretamente e
realizzare applicazioni.

-È una delle applicazioni dei calcolatori?


 Non è solo la scienza per la risoluzione dei problemi di calcolo
scientifico o la scienza per i sistemi informatici aziendali…

-È la scienza dell'informazione?
 Definizione troppo generale o generica.
 Anche l'attività giornalistica è scienza dell'informazione.

I° definizione: è la scienza della rappresentazione e dell'elaborazione


delle informazioni.

 Soddisfa i costruttori di calcolatori


 Soddisfa i costruttori di applicazioni

II° definizione: Association for Computing Machinery (ACM).


È lo studio sistematico degli algoritmi che descrivono e trasformano le
informazioni: la loro teoria, analisi, sviluppo, efficienza, realizzazione
ed applicazione.

Algoritmo: precisa sequenza di istruzioni od operazioni, comprensibili ed


eseguibili da uno strumento automatico.

La definizione mette in evidenza l'attività di progettazione e di sviluppo indipendente


dallo strumento calcolatore; esso interviene in quanto consente di gestire velocemente
una grande quantità di informazioni.

2
DIVENTA CENTRALE NELL’INFORMATICA IL CONCETTO DI ALGORITMO.

 Intuitivamente un algoritmo è una ricetta (successione di


passi o istruzioni) per risolvere un problema o realizzare
un compito.

ESEMPI: Istruzioni per il montaggio di un


elettrodomestico, somma di due numeri in colonna,
prelievo di denaro con il Bancomat, determinazione del
massimo comune divisore tra due interi positivi….

 Questi passi (o istruzioni) devono essere elementari


(comprensibili) per un esecutore.

Se le istruzioni per il montaggio di un elettrodomestico


sono in inglese e l’acquirente non sa l’inglese,
l’algoritmo non è utilizzabile.

 Il calcolatore come esecutore di algoritmi: vogliamo


costruire algoritmi eseguibili da un calcolatore e quindi i
passi o istruzioni devono essere elementari per un
calcolatore.

 Per sapere quali sono le istruzioni che un calcolatore è in


grado di eseguire, occorre conoscere gli elementi
principali della struttura di un elaboratore.

3
Elaboratore digitale: è una macchina usata per
 Collezionare
 Analizzare
 Elaborare
precisamente e velocemente una vasta quantità di
informazioni.
È in grado di eseguire ad altissima velocità sequenze di
operazioni lunghe, complesse e ripetitive.

La sua attività è una attività di esecutore preciso e veloce di


una serie di ordini.

Principalmente ha due funzioni:


 Trasmissione, trasformazione e conservazione di
informazioni codificate in modo comprensibile alla
macchina.
 Risoluzione di problemi di tipo deterministico.

Informazioni

Dati: figure, impulsi, numeri, caratteri… che sintetizzano


una situazione reale;
Istruzioni: comandi che suggeriscono al calcolatore
l'azione immediata da eseguire.

Tutte le informazioni sono codificate in forma ultima


sempre come sequenze di numeri binari.

4
Il calcolatore realizza ogni elaborazione richiesta sui dati
per reazione a una precisa successione di istruzioni detta
PROGRAMMA.

Ogni calcolatore comprende uno specifico e limitato


insieme di istruzioni.

Ogni problema deve essere riformulato in modo da essere


comprensibile alla macchina come successione di
operazioni o passi che il calcolatore è in grado di eseguire
(Algoritmo ).

Ogni algoritmo deve essere codificato mediante un


linguaggio di programmazione in programma.

Programma: successione di istruzioni necessarie a produrre


le informazioni desiderate dall'utente (Risultati) a partire da
una serie di informazioni fornite inizialmente (Dati).
problema

algoritmo

Linguaggio di programmazione
programma

5
dati risultati
calcolatore
Tecniche di programmazione:
insieme dei criteri da seguire per progettare e
costruire un programma sfruttando al meglio le
risorse di un elaboratore.

Pertanto un calcolatore è una macchina in grado di:


 ricevere dall'esterno i DATI di un problema e il
programma, ossia le ISTRUZIONI per risolverlo;
 memorizzare le informazioni (dati ed istruzioni);
 eseguire le istruzioni, elaborando operazioni aritmetiche e
logiche sui dati;
 fornire in uscita i RISULTATI dell'elaborazione

Queste funzioni sono in corrispondenza biunivoca con le


parti che costituiscono un sistema informatico.

Un sistema informatico è un oggetto complesso costituito


da molte parti che interagiscono tra di loro.

ARCHITETTURA DI UN SISTEMA INFORMATICO:


 individuazione delle varie parti
 principi generali di funzionamento
 interazioni tra le varie parti

6
Un sistema di elaborazione dati è costituito da:
( I° livello di decomposizione di un sistema
informatico )

 Hardware: ("ferraglia") struttura fisica di un


calcolatore (dispositivi meccanici, componenti
elettroniche…)
 Software: totalità di programmi atti alla
gestione del calcolatore, allo svolgimento delle
sue funzioni e alla risoluzione di tutti i problemi
non affrontati direttamente dall'hardware.
 Software di base: sistemi operativi,
compilatori, editori…
 Software applicativo: programmi scritti
dall'utente, librerie, pacchetti applicativi…

Classificazione utile ma non sempre molto


evidente.

Firmware: è al confine tra hardware e software; sono


MICROPROGRAMMI scritti su memorie permanenti
direttamente dai costruttori che agiscono direttamente
sullo strato hardware (autotest della macchina,

7
gestione delle periferiche, nucleo di caricamento del
sistema operativo - bootstrap-…).

8
I° livello di decomposizione di un sistema
Informativo:

SW applicativo

SW di base
(Sistema operativo)
firmware
Firmware

HW

9
Hardware

Costituito da una serie di elementi funzionali presenti


in ogni elaboratore anche se con caratteristiche
diverse ed in numero diverso.

 Unità di elaborazione o processore (CPU: Central


Processing Unit ): svolge le elaborazioni e coordina
il trasferimento dei dati all'interno del sistema:
ESEGUE I PROGRAMMI, ossia interpreta ed
esegue le varie istruzioni di cui è costituito il
programma.
 Memoria principale o centrale (RAM: random
access memory): memorizza i dati ed i programmi;
ha capacità limitata ed è volatile (perde il suo
contenuto in assenza di alimentazione) ma l'accesso
all'informazione è rapido.
 Memoria secondaria (o memoria di massa):
utilizzata per memorizzare grandi quantità di dati e
programmi. L'informazione è persistente ma
l'accesso è meno rapido.
Unità di ingresso/uscita ( periferiche): utilizzate per
far comunicare il calcolatore con l'esterno (tastiere,
video, stampanti…).
Bus di sistema: collega tutti gli elementi funzionali
e consente lo scambio dei dati.

10
CPU, memoria e dispositivi sono realizzati
mediante TECNOLOGIA DIGITALE.

Dati ed istruzioni sono codificati mediante sequenze


di impulsi elettrici (bit: binary digit)

00010010001111…

Le operazioni che la CPU esegue sono in aritmetica


binaria.
Le operazioni elementari sono semplici:
 Somma
 Differenza
 Scorrimento

L'utilizzo della sola struttura fisica imporrebbe


all'utente di tradurre i propri comandi in sequenze di
bit ( linguaggio macchina ).

11
SOFTWARE

È un insieme complesso di programmi.


Si può pensare ad una organizzazione a strati, ciascuno con
funzionalità di livello più alto rispetto a quelli sottostanti
(macchina virtuale).

Programmi
applicativi
Ambiente di
programmazione
Sistema operativo Software di
comunicazione

Firmware
Hardware

12
SISTEMA OPERATIVO
Insieme di programmi che operano direttamente al di sopra
di Hardware e Firmware e consentono all'utente l'utilizzo di
tutte le funzionalità dell'elaboratore ( generalmente venduto
dal costruttore dell'elaboratore ).

Permette un utilizzo ottimizzato ed amichevole della


macchina, controllando tutte le risorse HW e SW.
 Gestisce le risorse disponibili
 Interpreta ed esegue comandi elementari
 Manda in esecuzione i programmi, stampa e legge i dati e
visualizza le informazioni su video…
 Organizza e gestisce la memoria di massa e gestisce la
memoria centrale.
 Gestisce la multiutenza, distribuendo le risorse
disponibili ai vari utenti.. (sistema multiutente)

In pratica un utente "vede" la macchina solo tramite il


sistema operativo.
Attraverso il sistema operativo il livello di interazione
utente - elaboratore viene elevato:
 Senza S.O. : sequenze di bit.
 Con S.O. : parole chiave ( comandi), programmi, dati…

Sono evoluti nel corso degli anni (interfacce grafiche


Windows, …).

13
Il S.O traduce le richieste dell'utente in opportune sequenze
di impulsi da trasmettere all'HW e viceversa:

Comando 01010101…

Utente S.O. HW

Risultato 01010101…

Ogni operazione di accesso a risorse della macchina,


richiesta implicitamente dal comando di un utente, viene
esplicitata dal S.O. (accesso a memoria centrale,
secondaria, I/O verso video, tastiera…).

Tipi di sistema operativo


 Classificazione in base al massimo numero di utenti
collegati al sistema
 Monoutente
 Multiutente
 Classificazione in base al massimo numero di
programmi eseguibili contemporaneamente dalla
macchina astratta
 Monoprogrammato
 Multiprogrammato
Es.
 DOS monoutente, monoprogrammato
 WINDOWS 95 monoutente, multiprogrammato
 UNIX, WINDOWS NT multiutente, multiprogrammato

14
Ambiente di programmazione: insieme di programmi che
facilitano la scrittura di programmi applicativi e la verifica
di correttezza.

Editor: serve per la costruzione di file di testo; in


particolare servono per costruire i programmi sorgente
scritti in un linguaggio di programmazione ad alto livello.

Compilatore: traduttore di un programma sorgente ad alto


livello in un programma oggetto scritto in linguaggio
macchina direttamente eseguibile dal calcolatore.

Linker: (collegatore o correlatore): moduli compilati


separatamente collegati per formare un unico programma
eseguibile.

Debugger (scopritore di bachi, o errori): serve per scoprire


ed eliminare gli errori presenti durante l'esecuzione di un
programma.

Interprete: traduce ed esegue direttamente ciascuna


istruzione del programma sorgente istruzione per istruzione.

15
PROGRAMMI APPLICATIVI

Scritti per risolvere problemi specifici usando linguaggi di


programmazione ad alto livello.
Risentono in misura ridotta o nulla della architettura
dell'ambiente sottostante ( PORTABILITA').
Sono TRASPORTABILI da un sistema informatico all'altro
senza difficoltà.

PACCHETTI SW (Software personale e di produttività)


 Word processing (WP): trattamento di testi, dalla
battitura alla correzione, all’impaginazione e alla stampa
(MICROSOFT WORD)
 Foglio elettronico: elaborazione di dati, soprattutto di tipo
numerico e loro organizzazione in tabelle e grafici
(MICROSOFT EXCEL)
 Gestore di dati e archivi (database): archiviare e gestire
informazioni in modo efficiente e razionale
(MICROSOFT ACCESS)
 Pacchetti grafici ( Computer Aided Design CAD)
 Pacchetti applicativi aziendali: elaborazione fatture,
gestione magazzino…
 Librerie scientifiche matematiche e statistiche.

16
SISTEMI INFORMATICI O DI CALCOLO

 Calcolatori piccoli
 Calcolatori medi
 Calcolatori grandi

Calcolatori piccoli
(monoutenza, potenza di elaborazione medio bassa).

PC (personal computer): calcolatore a basso costo prodotto


per la prima volta dall'IBM nel 1981. È in grado di
funzionare autonomamente e di eseguire sequenzialmente le
attività.

Modello Desktop: ha dimensioni tali da stare in una scrivania;


costituito da un BOX con CPU, memoria centrale e di massa, collegato a
tastiera e video.
Memorie di massa: disco fisso inamovibile e molto capace (hard-disk:
HD) e dischetti rimovibili con capacità ridotta (floppy-disk: FD) o lettori
di CD. Informazioni organizzate in ARCHIVI o file con un nome.

Modello NOTEBOOK: dimensioni di un libro o quaderno, con le


stesse caratteristiche di un desktop ma non espandibile; alimentato con
corrente e batterie.

Home Computer: privi di HD, memoria limitata, adatti per


videogiochi.

Microcalcolatore: calcolatore completo costruito attorno a


un microprocessore cablato su un solo chip; montati su
automobili, elettrodomestici, sistemi di controllo di impianti e
di dispositivi (sistemi embedded: interagiscono con una
macchina e non un utente).

17
Calcolatori medi: buona potenza di elaborazione, memorie
RAM e cache di medio alte dimensioni predisposti per la
multiutenza.

WORKSTATION ( stazione di lavoro): usata per


applicazioni professionali con processore di elevate
prestazioni.
 Calcolo scientifico con grande velocità di
elaborazione.
 Applicazioni grafiche (CAD: Computer Aided
Design: necessita di software adatto per la
progettazione grafica) richiede buona risoluzione
grafica e molta memoria.
MINICALCOLATORI: multiutenza, memorie di massa
capaci, buona potenza di elaborazione, con sistemi
operativi sofisticati.

Calcolatori Grandi: possono avere uno o più processori,


molta potenza di calcolo e grande capacità di memoria (RAM
e di massa ); gestiscono centinaia di utenti.

MAINFRAME: gestisce grandi archivi di dati e reti.

CALCOLATORI MULTIPROCESSORI: con una memoria


comune (shared) o con memoria distribuita tra i vari
processori. Adatti per l'elaborazione scientifica di grandi
dimensioni. Necessita di SW specifico. Consentono
l'elaborazione di più programmi o all'interno di un
programma di più istruzioni simultaneamente.
CRAY Y-MP; CRAY C90; … shared memory
CRAY T3E; IBM SP-2 … distributed memory

18
La capacità di elaborazione di un sistema informatico può crescere aumentando
la potenza di un singolo elaboratore , ma la crescita della potenza di
elaborazione si può ottenere anche connettendo insieme vari calcolatori in una
rete.

Reti di calcolatori: si connettono insieme più calcolatori per


aumentare la capacità di elaborazione.

Reti locali (LAN): connettono elaboratori fisicamente vicini


(nello stesso ufficio o stabilimento). Si condividono alcuni
servizi (stampanti, dischi…).
 Trasmissione veloce

Stampante Disk
Server

Bus di rete

Work Work Work Work


Station Station Station Station

19
Reti geografiche (WAN): Collegano elaboratori medio grandi che
sono a grande distanza tra loro. Servono per attivare e controllare
l'esecuzione di programmi remoti (applicazioni distribuite).
 Trasmissione più lenta

Rete geografica
Terminali
remoti

Mini
HOST Terminali
HOST locali

PC

HOST

Terminali
locali
Terminali
remoti

Rete locale

Calcolatori di grandi dimensioni (host-computer) connessi in rete


geografica. Alcuni sono connessi in rete locale.

20
ARCHITETTURA DI UN CALCOLATORE

Organizzata secondo il modello della macchina di Von Neumann


(1945-Institute for Advanced Study di Princeton).

È costituita da 4 elementi funzionali fondamentali:


 Unità di elaborazione o unità centrale (CPU)
 Memoria centrale o primaria
 Periferiche di ingresso / uscita (input/output)
 Bus di sistema
BUS DI SISTEMA

UNITA' DI MEMORIA INTERFACCE


ELABORAZIONE CENTRALE DELLE
CPU PERIFERICHE

CPU: contiene i dispositivi elettronici in grado di acquisire, interpretare ed


eseguire le istruzioni del programma ("cervello" che controlla
l'elaboratore). Si distingue UC (unità di controllo) e ALU (unità logico
aritmetica).

Memoria: contiene le informazioni necessarie ad eseguire un programma


(dati ed istruzioni) .

Unità di I/O ( input/output): consentono lo scambio delle informazioni tra


l'elaboratore ed il mondo esterno, in ingresso (dall'esterno al calcolatore),
in uscita (dal calcolatore all'esterno); fanno parte del calcolatore solo le
interfacce di collegamento, mentre i dispositivi sono esterni. MEMORIE
DI MASSA.

Bus di sistema: collega gli elementi funzionali; fornisce il supporto fisico


per la trasmissione dei dati tra i vari elementi.

21
I componenti logici di un elaboratore sono in
corrispondenza biunivoca con le fasi di risoluzione
di un problema.

 Dispositivi di ingresso (input): permettono


l'ingresso delle informazioni dall'esterno all'interno
di un calcolatore (dati e istruzioni).
 I dati vengono immagazzinati in memoria, che è un
dispositivo dove stanno anche eventuali dati
generati durante l'elaborazione.
 L'Unità Centrale o Processore esegue l'elaborazione
vera e propria.
 I risultati devono essere manifestati scorrendoli
all'esterno mediante l'unità di uscita o di Output.

Acquisizione dati

Elaborazione

Visualizzazione
dei risultati

22
FUNZIONAMENTO DELLA MACCHINA DI
VON NEUMANN

 L'unità di elaborazione coordina le varie attività. Estrae


dalla memoria, decodifica ed esegue le istruzioni.
 Le istruzioni comportano manipolazioni di dati
(operazioni aritmetiche e logiche) oppure trasferimento di
informazioni tra una unità e l'altra.
 I trasferimenti avvengono sul bus di sistema che in
funzione dell'operazione da fare, abilita il collegamento
logico tra due unità. Il collegamento fisico è sempre
presente.

Le fasi di elaborazione si succedono in modo sincrono


rispetto alla scansione temporale impostata dall'orologio di
sistema (CLOCK) che sta nell'unità di elaborazione e
stabilisce le funzioni da fare da parte sua o di altre unità
nell'intervallo di tempo.

Il modello di Von Neumann è strettamente


SEQUENZIALE. Ad esso si ispira la maggior parte dei
calcolatori esistenti. Ogni evoluzione prevede di introdurre
una qualche forma di parallelismo, cioè di esecuzione
contemporanea delle attività elaborative.

23
Unità di ingresso/uscita: Preposte alla
comunicazione con il mondo esterno (mezzi
periferici).
 Mediante i mezzi periferici di ingresso, l'utente
trasmette al calcolatore i dati da elaborare e le
istruzioni che determinano come operare su di essi,
che a questo livello vengono recepite come dati.
 Tastiera (Keyboard): più semplice dispositivo di
input.
 Altre unità contraddistinte da funzioni distinte
oltre che da velocità distinte: mouse, lettori di
dischi, nastri, convertitori analogici digitali,
tavolette digitalizzatrici, scanner…
 I mezzi periferici di uscita servono a visualizzare i
dati elaborati (risultati) in forma in forma
permanente (hard copy) o volatile (soft copy).
 Hard copy: stampante, dischi, nastri , plotter,…
 Softcopy: monitor (scrolling, cursore)

Molti mezzi periferici di ingresso (dischi, nastri)


possono servire per la registrazione hard copy di
risultati, che possono essere riutilizzati come dati di
successive elaborazioni.

24
Tastiera: serie di tasti disposti in righe e colonne.
Alla chiusura del contatto elettrico del tasto
(pressione del tasto) si ottengono direttamente i
codici binari che rappresentano:
 Lettere
 Cifre
 Caratteri speciali (barra spaziatrice, segni di
punteggiatura...)

Sono presenti:

 Tasti funzione
 Tasti di direzione
 ALT + CTRL + CANC, INVIO
 Tastierino numerico

Tastiere diverse da paese a paese.

TERMINALE:
- modo teletype: ciascun carattere immesso mediante la
tastiera viene immediatamente trasmesso al calcolatore;-
- modo a blocchi: una intera linea di testo (terminata con il
carattere INVIO) viene immessa in una memoria locale
(buffer) e poi inviata in blocco al calcolatore; pertanto è
possibile correggere la linea e poi inviarla in blocco.

25
- MOUSE, TRACKBALL

Dispositivi di puntamento.

Mouse: muovendolo si sposta una pallina interna


spostando il cursore sul video; tasto sinistro e
destro attivano un comando.

Trackball: si muove una sfera con la mano e il


contenitore rimane fermo (si trova nei portatili).

26
MONITOR: suddiviso in zone (finestre) ciascuna
associata ad una specifica elaborazione. Si può
allargarle, restringerle, spostarle. Una di esse è la
“finestra corrente” (quella su cui compaiono i caratteri
digitati da tastiera).
Legato al monitor c'è una scheda grafica che traduce
le informazioni da visualizzare in informazioni
grafiche.

Dimensione: lunghezza della diagonale in pollici


(inches); va da 14" a 21" ed oltre.

Risoluzione grafica: numero di pixel che è possibile


visualizzare (pixel: picture element);

VGA: 640 X 480


SVGA: 800X 600, 1024 X 768, 1280 X1024

Colori: la visualizzazione dei colori avviene


mandando sullo schermo fasci di tre colori di base
(rosso, verde, blu) attraverso una griglia di piccoli
fori; la distanza tra i fori è il DOT PITCH; più piccolo
è migliore è la nitidezza dell'immagine;
DOT PITCH: 0.28 - 0.26 mm;
per 17 " e 21 " 0.21 mm;

Le immagini vengono generate dall'alto verso il basso


molte volte al secondo per evitare lo sfarfallio
27
(flickering): la frequenza di scansione è misurata in
Hz.
Modalità di scansione verticale.
Modalità interlacciata ( prima le righe dispari poi le
pari).
FLAT SCREEN: riducono i riflessi.

Adattatore (scheda grafica): caratterizzata dalla


massima risoluzione che può supportare.

Memoria VRAM (RAM video): deve essere


sufficiente a contenere per ogni pixel uno dei
possibili colori:
- 1 byte serve per 256 colori;
- 2 byte per 65535 colore;

Se si ha la risoluzione di 1024 X 768, occorrono


1024 X 768 X 2 bytes per avere 65535 colori per
ogni pixel (=1573000 byte – 1.5 M bytes)

La risoluzione del video deve essere maggiore o


uguale di quello della scheda.

28
STAMPANTI: ad aghi, a getto d'inchiostro,
laser…

Risoluzione grafica: dpi (dots per inches) dove un


pollice è 2.54cm.

Velocità di stampa: caratteri al secondo, pagine al


minuto.

29
Modem (Modulatore/Demodulatore): trasforma
segnali digitali in segnali analogici per il
trasferimento attraverso via telefonica ad altri
elaboratori.

Velocità di trasmissione: misurata in baud (bit


per secondo)
Da 2700 baud a 19200 baud e oltre.

30
MEMORIA (Primaria o Centrale): è un deposito in cui
sono contenute in forma indistinta tutte le informazioni per
l'unità logico aritmetica (dati) e l'unità di controllo
(istruzioni).
Conserva le informazioni fornendone una copia se richiesta.

È una successione di elementi bistabili (indipendentemente


dalla natura fisica dei singoli componenti, ciascuno di essi
può assumere solo due stati), detti bit (binary digit).
Il bit è la più piccola unità di informazione: consente di
memorizzare una sola tra due informazioni, denotate per la
convenzione come 1 e 0 ( i due simboli dell'alfabeto
binario).

 Memoria centrale: contiene tutta l'informazione che deve


essere elaborata a breve termine.
 Ogni elemento di informazione, per poter essere
elaborato, deve prima essere acquisito dalla memoria
centrale.
 Ha dimensioni ridotte, costo elevato, tempo di accesso
basso.

Ciclo di memoria: tempo necessario a trasferire informazioni tra


memoria e CPU; si misura in millisecondi, microsecondi,
nanosecondi.

Memorie non volatili: conservano le informazioni anche in assenza di


alimentazione.
Memorie volatili: perdono tutti i dati in assenza di alimentazione.

31
ROM (Read only Memory)

MEMORIA PRINCIPALE

RAM (Random Access Memory)

ROM: memoria in cui non è possibile alterare lo stato delle


cifre binarie, ossia delle informazioni memorizzate; è
memoria non volatile in cui sono registrate (dalle case
costruttrici) programmi di gestione della macchina
(procedure di avviamento della macchina, di caricamento in
memoria del Basic I/O System (BIOS) , diagnostica per
errori hardware).
RAM: lo stato delle cifre può venire alterato oppure anche
venire letto (memoria a lettura / scrittura). È una memoria
volatile, usata come area di memoria principale per
conservare i dati e programmi in cui il processore opera
al momento. È una quantità limitata di memoria, molto
veloce. Random Memory significa che la memoria è ad
accesso diretto, ossia per accedere ad una informazione
non è necessario scandire tutte le precedenti: il tempo per
accedere ad una informazione non dipende dalla sua
posizione ed è uguale ( ciclo di memoria). Anche le
memorie ROM sono ad accesso diretto.

Accanto all'unità di memoria primaria, contenente le


informazioni strettamente necessarie per l'elaborazione
corrente, molto veloce ma limitata e costosa ci sono MEZZI
DI MEMORIZZAZIONE SECONDARIA.
32
MEMORIE
VOLATILI (RWM)
Statiche: SRAM non devono essere
rinfrescate. Memoria preferita con minor
tempo di accesso (flip flop). Registri e
memoria di CPU.
Dinamiche: DRAM rinfrescate ogni
pochi millisecondi; sono transistor
MOS; Memoria Centrale: tempo di
accesso più elevato di SRAM.
A semiconduttore
RAM:
tempo di accesso
dell’ordine dei
microsecondi,
indipendente dalla NON VOLATILI (ROM)
posizione.
ROM: read only memory; contiene
Firmware (BIOS , Bootstrap)
EROM: erasable ROM mediante raggi
ultravioletti;
Prom: programmabile
Eprom: cancellabile e programmabile
Earom: cancellabile elettronicamente e
riprogrammabile.

Sequenziali (SAM): il tempo di


accesso di pende dalla posizione
Magnetiche: del dato (nastri, cassette).
memorie di
massa Semirandom: dischi magnetici
ed ottici; il tempo di accesso ad
un dato è dell'ordine dei
33 millisecondi.
ORGANIZZAZIONE DELLA MEMORIA PRIMARIA

È costituita da una successione di elementi, che


indipendentemente da come sono costituiti fisicamente, possono
assumere solo due stati, denotati , per convenzione, con i simboli
1 e 0 dell'alfabeto binario e perciò detti bit.
Il bit è l'unità elementare di informazione.
Ogni informazione è codificata mediante una successione di bit.

LA TOTALITA’ DEI BIT È SUDDIVISA IN BYTE O


CARATTERI. OGNI BYTE È COSTITUITO DA UN NUMERO
PREFISSATO (DALLA CASA COSTRUTTRICE) DI BIT.
TIPICAMENTE 1 BYTE = 8 BIT.

Pertanto in un byte è possibile rappresentare 256 informazioni


diverse.

IL BYTE È L'UNITA’ INDIRIZZABILE DELLA MEMORIA.

Ad ogni byte è associato in modo univoco un indirizzo che


rappresenta la posizione che occupa il byte in memoria.

LA MEMORIA PUO' ESSERE VISTA COME UNA


SUCCESSIONE DI LOCAZIONI INDIRIZZABILI, OSSIA DI
BYTE CONSECUTIVI, CON INDIRIZZI SEQUENZIALI DA 0
ALL'ULTIMO BYTE DI MEMORIA; OGNI ELEMENTO DI
MEMORIA È UNIVOCAMENTE REPERIBILE DALL'UNITA'
DI CONTROLLO.
0000 0001 0002 …. FFFF

INIZIO FINE

34
PER CONVENZIONE SI USA RAPPRESENTARE IL
CONTENUTO DI UN BYTE E IL SUO INDIRIZZO IN
ESADECIMALE.

0|0|1|1|0|1|0|1 Contenuto di un byte (informazione);

0F0A(16): indirizzo del byte (posizione fisica in memoria).


35(16): contenuto ( i bit sono esaminati da sinistra a destra).

Parola (WORD): è un byte od un multiplo pari di byte, il cui


valore è prefissato dalla casa costruttrice.
Una Word è il numero di bit che l'unità centrale può elaborare
nell'unità di tempo (Clock period: CP).

Per rappresentare un indirizzo si usano una o più parole.

(Intel 286 a 16 bit, 386 e 486 a 32 bit, Pentium a 32 bit, Alpha a


64 bit)
Esempio:
Calcolatore a 8 bit: word di 8 bit, dunque si possono indirizzare
256 byte, con indirizzi da 0 a 255.
Calcolatore a 8 bit con due word per gli indirizzi: si possono
indirizzare 216 byte.
Calcolatore a 16 bit ( 1 Word = 16 bit) con una word per gli
indirizzi: si può avere una memoria di al più 64Kbyte; con 2 word
per gli indirizzi si può avere una memoria di 4 Gbyte.

UNITA' DI MISURA PER LA CAPACITA' DI MEMORIA


Kilobyte: 210 byte: 1024 byte
Megabyte: 220 byte: 1048576 byte
Gigabyte: 230 byte:  109 byte
Terabyte: 240 byte:  1012 byte

35
MEMORIA CENTRALE (INDIRIZZAMENTO)

L'UNITA' CENTRALE ACCEDE A UNA LOCAZIONE DI MEMORIA


MEDIANTE 2 REGISTRI (MDR e MAR).
La CPU seleziona una delle celle di memoria mettendo l'indirizzo
nel registro indirizzi (MAR).

 Operazione di lettura (Fetch-load): carica il registro dati (MDR)


con il contenuto della cella di memoria indirizzata da MAR; il
contenuto della cella di memoria è lasciato inalterato.

 Operazione di scrittura (Store): deposita il contenuto del


registro dati (MDR) nella cella di memoria indirizzata nella
MAR. Il precedente contenuto della cella di memoria è perso.

Se non ci sono operazioni la memoria è rilasciata.


In pratica: i circuiti elettronici della memoria vengono
opportunamente collegati in modo che i valori di tensione vengano
trasmessi ordinatamente.

MAR STORE LOAD

MDR
k bit h bit

36
Tutto avviene sotto il controllo dell'unità di elaborazione che
carica il registro MAR e ordina il trasferimento di MDR in
memoria e viceversa attraverso il BUS.

IL TEMPO DI ACCESSO AD UNA LOCAZIONE DI


MEMORIA È INDIPENDENTE DALL'INDIRIZZO ED È UN
MULTIPLO DELL'UNITA' DI TEMPO; È DETTA CICLO DI
MEMORIA.

37
MEMORIA SECONDARIA (di massa )

Dispositivi per la memorizzazione permanente di informazioni:


più lenti (costituiti da dispositivi meccanici oltre che elettronici)
ma anche più capaci, con un costo decisamente inferiore rispetto
alla memoria centrale.
Usata anche come mezzo di I/O.

 Le informazioni giacciono in forma strutturata detta file. Ogni


unità mantiene un indice dei file residenti detto "directory" ( o
direttorio) che ne permette un rapido reperimento.
 Ogni direttorio ha un numero limitato di posizioni; in ogni
posizione è registrato il nome di un file ed una serie di
informazioni (lunghezza del file, posizione di inizio, tipo di
file…). Per cancellare un file di cancellano le sue informazioni
dal direttorio senza cancellarlo fisicamente.
 Le unità di memorizzazione secondaria si distinguono in :
 Unità ad accesso sequenziale (per reperire una informazione
occorre scandire tutte le precedenti - nastro)
 Unità ad accesso diretto (il tempo per reperire una
informazione è quasi identico indipendentemente dalla
posizione - disco)

Ci sono interfacce HW e SW tra memoria secondaria e centrale.


L'informazione è registrata come dato di magnetizzazione positivo
o negativo (cifra binaria).

38
NASTRI MAGNETICI

ARROTOLATI SU SUPPORTI CIRCOLARI.


CAPACITA' FINO AL GBYTE.

Sulla fettuccia sono inserite delle piste orizzontali parallele; per


esempio 9 piste parallele di cui 8 corrispondono a 1 byte e la nona
è il bit di parità (per controllo di errori di trasmissione).
1
2
3
4
5
6
7
8
9 bit di parità

I dati su nastro sono organizzati in zone contigue detti RECORD


(registrazioni) separate da zone prive di informazioni (inter record
gap).
Tutte le elaborazioni sono sequenziali (con conseguente lentezza
di lettura / scrittura). Si misura la densità di memorizzazione in bit
per inch (bpi).

SVOLGONO SOLO UNA FUNIONE DI COPIA DI RISERVA


(BACKUP).

39
DISCHI MAGNETICI

UN DISCO CONSTA DI UN CERTO NUMERO DI PIATTI,


CIASCUNO CON DUE SUPERFICI CHE RUOTANO
INTORNO AD UN PERNO CENTRALE.
Per ogni superficie (eccetto le due esterne) c’è una testina di
lettura/scrittura.
Ogni superficie è suddivisa in una serie di cerchi concentrici o
TRACCE ed in spicchi di eguale grandezza detti SETTORI.
La testina si sposta longitudinalmente lungo le tracce. Tutte le
tracce equidistanti dal centro formano un CILINDRO.

Traccia 0
Traccia 100
Traccia 200
Settore

I DATI SONO SCRITTI OCCUPANDO POSIZIONI


SUCCESSIVE LUNGO LE TRACCE.

BLOCCO: selezionabile mediante una terna di valori (superficie,


traccia, settore); le informazioni vengono lette e scritte su un
blocco mediante una sola operazione.

CONTROLLER del disco: è un dispositivo hardware che dirige,


controlla e sincronizza le operazioni di I/O e trasferisce le
informazioni da e verso il calcolatore; il controller influenza le
prestazioni di accesso al disco (IDE, EIDE, SCSI).

In memoria principale, ci sono BUFFER per il trasferimento delle


informazioni.

40
DISCHI
Operazioni di I/O: comportano uno spostamento della testina (seek) sulla
traccia richiesta, una rotazione fino a che il settore arriva sotto la testina e
un tempo di trasferimento dati (solitamente eseguito dal controller, che è
un processore dedicato, senza interferire con la CPU attraverso DMA,
direct memory access).

TI/O = Tseek + Trotazione/2 + Ttrasferimento


Tseek è il tempo più lungo.
Per dischi a teste rigide (una testina per ogni traccia) il tempo Tseek non c’è.

DISCHETTI (FLOPPY DISK)


Hanno due superfici e 2 testine di lettura/scrittura. Tipica dimensione è 3.5
pollici. Devono essere formattati (ossia divisi in settori) dal sistema
operativo prima di essere usati; ciò specifica la densità dei bit e la capacità
(720 Kbytes o 1.44 Mbytes)

DISCHI OTTICI
Dischi simili ai Compact Disk (CD) con lo stesso funzionamento; possono
essere di tre tipi:
 eraseable (scrivibili dall’utente)
 Read-Only (a sola lettura o normali CD-ROM)
 WORM (Write Once Read Many) (possono essere scritti una sola volta)
Hanno grande capienza (fino al Gigabyte), piccole dimensioni, possibilità
di memorizzare immagini e/o suoni e sono rimovibili. Sono più lenti di un
HD.

Tipo di memoria Capacità(Mbyte) Tempo di accesso


Memoria centr. 1-256 O(nanosecondi)
Floppy disk 3.5" 360 K, 720 K 100 millisecondi
1440 K
Hard disk O(Gigabyte) 10-20 millisecondi
CD ROM O(Gigabyte)
Nastro magnetico 20-400
Bobina/cassetta 200-4000

41
BUS DI SISTEMA

Interconnette CPU, memoria centrale ed interfacce di I/O.

COLLEGAMENTO APERTO, non limitato agli estremi.

AD OGNI ISTANTE, connette due unità funzionali logicamente:


una trasmette le informazioni, l'altra riceve.

SEMPRE sotto il controllo della CPU: connette CPU e memoria,


oppure CPU ed una periferica.
CPU: è MASTER; altre unità funzionali connesse sono SLAVE.
Fisicamente è una serie di linee attraverso cui fluisce
l'informazione:
Bus dati: bidirezionale; trasmette dati da memoria a MDR o
viceversa;
Bus indirizzi: unidirezionale; trasmette un indirizzo da MAR alla
memoria.
Bus comandi: bidirezionale; MASTER comunica a slave
l'istruzione da eseguire; SLAVE avverte MASTER del
completamento dell'elaborazione.

Trasmissione di dati in PARALLELO: un bit su ciascuna linea. Se


ci sono sufficienti linee, si possono trasmettere in parallelo parole,
altrimenti sono necessari più trasferimenti per ogni parola. Ciò
influisce notevolmente sulla velocità di elaborazione.

42
Esempio.

Operazione di LOAD di un dato dalla memoria.

La CPU deve:
- inserire l’indirizzo della cella di memoria desiderata in MAR;
esso viene comunicato alla memoria tramite il bus indirizzi;
- comunicare il codice di una operazione di LOAD alla memoria
attraverso il bus comandi.

La memoria può:
- leggere il contenuto della cella selezionata e inviarlo attraverso
il bus dati a MDR;
- inviare sul bus comandi alla CPU l’informazione che
l’operazione è completata.

Operazione di STORE di un dato in memoria.

La CPU deve:
- caricare in MAR l’indirizzo della cella di memoria interessata e
inviarlo attraverso il bus indirizzi alla memoria;
- caricare il dato in MDR, avviandolo verso la memoria
attraverso il bus dati;
- inviare il codice dell’operazione di STORE alla memoria
mediante il bus comandi.

La memoria può:
- scrivere il dato all’indirizzo specificato;
- inviare un segnale alla CPU sul bus comandi di completamento
dell’operazione.

43
Esistono vari tipi di Bus dati che differiscono oltre che per la
lunghezza della parola trattata anche per la PORTATA (numero
di bit trasferiti nell'unità di tempo):
 Bus ISA (Industry Standard Architecture) 16 bit, bassa portata
 Bus EISA (Extended ISA), MCA (Micro Channel
Architecture), bus VESA
 Bus PCI (Peripherical Central Interface) 64 bit

Un bus può funzionare in vari modi:


 Multiplexer mode: trasmissione delle informazioni con più
unità periferiche per volta (con opportuna ripartizione del tempo
tra le varie unità)
 Selector mode: trasmissione delle informazioni con una
periferica per volta (fino a che la trasmissione non è completata)

44
INTERFACCE DI INGRESSO / USCITA

Consentono il collegamento dell'elaboratore con le varie


periferiche.
SONO MOLTO DIVERSE TRA LORO, A SECONDA DEL
TIPO DI PERIFERICA (POSSONO ESSERE INTELLIGENTI).

INTERFACCIA STANDARD ELEMENTARE:


 Registro dati della periferica (RDP) per scambiare dati con al
periferica; lo scambio può avvenire verso la periferica
(stampante) o verso l'elaboratore (lettore ottico). Un terminale
ha un registro verso l'elaboratore ed uno verso il video.
 Registro comando (RCP): contiene il comando che la periferica
deve eseguire.
 Informazione sullo stato della periferica (rivelazione di errori).

RDP è collegato al bus dati.


RCP è collegato al bus comandi.

L'informazione sullo stato va su un registro speciale (RS) di stato,


letto a comando dalla CPU oppure nel registro interruzione della
CPU (RINT).

45
UNITA’ DI ELABORAZIONE (CPU)

UNITA' DI CONTROLLO (UC)


UNITA' LOGICO ARITMETICA (ALU)
Registri e clock di sistema.

PC RS

IR Acc.A
ALU
Acc.B
RINT

CLOC
K UC

MDR
MAR

ALU: preposta al calcolo in senso stretto; costituita da costosi e


veloci circuiti integrati; esegue
operazioni aritmetiche (+, -, * , /),
operazioni logiche (or, not, and, confronto, scorrimento).
Sono presenti registri accumulatori per operandi e/o risultati
intermedi di operazioni.

1) Registri acc.: vengono caricati con operandi.


2) UC invia codice che mette in funzione il circuito associato
all'operazione richiesta;
3) Risultato viene scaricato su un registro acc. (A);
4) RS riporta nei suoi bit indicazioni sull'operazione.

Tutto avviene in un Clock Period.

46
RS (registro di stato):
 Bit carry: indica la presenza di un riporto (serve per confronti)
 Bit zero: indica la presenza di un valore nullo in un particolare
Registro acc. (A)
 Bit segno: riporta il segno del risultato di una operazione
 Bit overflow: consente di rilevare l'overflow quando due
operandi dello stesso segno sommati danno luogo a un risultato
di segno contrario.

UC: funzioni decisionali e di coordinamento; sezione


amministrativa del calcolatore.
Realizza ogni funzione per reazione a un preciso comando
(istruzione).

Esegue in continuazione il cosiddetto ciclo dell'istruzione:


 Prelevamento dalla memoria dell'istruzione che viene posta in
IR (registro dell'istruzione corrente)
 Decodifica dell’istruzione e individuazione di:
 Codice operativo
 Operandi
 Caricamento operandi
 Esecuzione
 Riconosciuto il completamento dell'elaborazione carica la
successiva istruzione.

La direzione dei compiti è formulata dall'utente mediante un


programma, memorizzato in memoria in forma indistinta rispetto
ai dati (concetto di programma memorizzato di Von Neumann).

47
 Le istruzioni vengono introdotte come i dati mediante
una unità di ingresso in memoria, ove giacciono in forma
indistinta rispetto ai dati
 Ogni istruzione contiene in campi di lunghezza prefissata
le seguenti informazioni:
 codice operativo: codice corrispondente all'insieme di
impulsi che attivano il circuito associato a una
specifica funzione
 indirizzo degli operandi e del risultato
 indirizzo della prossima istruzione da eseguire

Poiché le istruzioni sono in genere caricate in locazioni


consecutive nello stesso ordine in cui sono eseguite, si può
omettere l'ultimo campo.
Nell'UC esiste un registro, detto “Contatore di programma”
o PC, inizialmente caricato con l'indirizzo della prima
istruzione da eseguire e che, per ogni istruzione caricata,
viene incrementato in modo da puntare in ogni momento
alla prossima istruzione da eseguire.
Esistono istruzioni che alternano il contenuto del PC in
modo da provocare trasferimenti di controllo da istruzioni
non consecutive (salti condizionati ed incondizionati, cicli).

Per quanto riguarda i campi degli indirizzi degli operandi e


del risultato esistono istruzioni a tre indirizzi, due indirizzi,
un indirizzo.

48
La lunghezza s in bit di una istruzione dipende dal numero di bit h
della parola (s=h, una istruzione in una parola, oppure s=2h, una
istruzione in due parole…). In generale s=m+r*n, ove m è il
numero di bit per il codice operativo, r è il numero di operandi e n
il numero di bit per la rappresentazione dell’informazione relativa
a dove reperire un operando.

SET DELLE ISTRUZIONI: è l’insieme delle diverse istruzioni


eseguibili; il loro numero è non superiore a 2m.

49
MACCHINE A TRE INDIRIZZI

Codice operativo Indirizzo I op. Indirizzo II op. Indirizzo risultato

MACCHINE A DUE INDIRIZZI

Codice operativo Indirizzo I op. Indirizzo II op.

Il risultato viene memorizzato all'indirizzo del II operando,


perdendo quest'ultima informazione. Pertanto se si vuole salvare
occorre prima eseguire una istruzione di trasferimento in un'altra
cella di memoria.

MACCHINE AD UN INDIRIZZO

Codice operativo Indirizzo operando

Si servono di un accumulatore per memorizzare il secondo


operando ed il risultato. Servono due istruzioni in più per ogni
accumulatore presente nella macchina, per caricare il contenuto di
una locazione di memoria nell'accumulatore e viceversa per
scaricare il risultato a una certa locazione di memoria.

50
Dal momento dell'avviamento della macchina fino allo
spegnimento , l'UC esegue in continuazione il ciclo di esecuzione
dell'istruzione:
 UC carica nel registro istruzione IR il contenuto della locazione
indicata da PC.
 PC viene incrementato per puntare alla nuova istruzione
 Decodifica (separazione codice operativo da informazioni su
operandi)
 Reperimento operandi che vengono portati dalla memoria
all'ingresso del circuito dell'ULA associato al codice operativo.
 Attivazione del circuito
 Memorizzazione del risultato

Ogni funzione è sincronizzata dall'orologio del sistema che misura


il tempo in unità di tempo (CP).
UC

PC IR
INDIRIZZO ISTRUZIONE

MAR MDR

MEMORIA
ISTRUZIONE

ISTRUZIONE

51
ESECUZIONE DELLE ISTRUZIONI

Comporta 3 fasi:
 ACQUISIZIONE della memoria dell'istruzione (FETCH)
 DECODIFICA
 ESECUZIONE

Acquisizione della memoria (FETCH)


Richiede l'esecuzione di 4 microistruzioni:

PC->MAR

Memoria (MAR)->MDR

MDR->IR

PC+1->PC

Decodifica
Si individua il codice operativo.

Esecuzione
Si recuperano dalla memoria gli eventuali operandi. Si attiva il circuito
preposto alla funzione associata al codice operativo. Si memorizza
l’eventuale risultato.

52
CLOCK (orologio di sistema)

Affinché il trasferimento dei dati ed istruzioni tra le varie


componenti possa avvenire correttamente, occorre che queste
siano sincronizzate.
È stato introdotto un segnale di sincronizzazione generato da un
dispositivo HW detto clock: è un oscillatore che lancia un segnale
ad intervalli di tempo regolari; la sua frequenza è misurata in MHz
(milioni di hertz), dove 1 Hz è una oscillazione al secondo.

Tipici valori: Pentium a 160 MHz, a 200 MHz, Alfa a 500 MHz…

Ciclo di clock: T=1/f, ove f è la frequenza dell'oscillatore;


dall'ordine del milionesimo di secondo o del miliardesimo di
secondo (nanosecondi)

ISTRUZIONE ELEMENTARE: eseguita in un ciclo di Clock.

Altre unità di misura per il confronto tra calcolatori:


1 MHz: un milione di oscillazioni al secondo
1 mips: un milione di istruzioni elementari al secondo
1 Mflop: un milione di operazioni floating point al secondo
1 Gflop: un miliardo di operazioni al secondo di tipo floating point

53
Pur variando da elaboratore ad elaboratore, l'insieme delle
istruzioni attorno a cui si sviluppa un sistema di calcolo permette
sempre di effettuare le seguenti funzioni fondamentali:
 Operazioni aritmetico logiche;
 Controllo di condizioni logiche
 Trasferimento da una locazione all'altra e scorrimento delle
cifre
 Istruzioni di ingresso ed uscita
 Arresto

ARCHITETTURE DEI MICROPROCESSORI

 CISC (Complete Instruction Set Computing): ha molte


istruzioni realizzate ad HW, sia elementari che complesse. I
processori per PC (Intel e Motorola ) sono di tipo CISC.
 Processori Intel: 80386, 80486, Pentium (PC IBM e
compatibili).
 Processori Motorola: adottati da Apple per Macintosh.
 RISC (Reduced Instruction Set Computing): poche istruzioni
elementari realizzate ad HW in modo efficiente (le istruzioni
complesse sono realizzate via SW come combinazioni di quelle
elementari); tra i più efficienti l'Alpha (Digital). L'architettura
RISC consente un notevole aumento di velocità di elaborazione,
anche se le istruzioni complesse richiedono un maggior tempo
di quello necessario per fare la stessa funzione via HW su
CISC; Infatti mediamente il numero di istruzioni complesse in
un programma è basso.
(Power PC Motorola, Sun Sparc, Digital Alpha)

INTEL continua a progettare CISC; il SW di base che gestisce


CISC deve essere riscritto per RISC.

54
Estensione della macchina di Von Neumann

La macchina di Von Neumann ha come problema la stretta


sequenzialità imposta dalle operazioni; modifiche nell'architettura
di Von Neumann consistono nell'introdurre del parallelismo:
 Processori dedicati (coprocessori)
 Calcolo
 Gestione della grafica
 I/O
 Esecuzione in parallelo delle varie fasi di una istruzione
(parallelismo)
 Architetture multiprocessore, dataflow, sistoliche
 Gerarchie di memorie
 Registri, cache, memoria locale, memoria centrale, memoria
di massa (dalla più veloce alla meno veloce, dalla meno
capace alla più capace)

55
COPROCESSORE: processore diverso dal processore principale
che esegue funzioni sussidiarie; per esempio coprocessore
matematico esegue più rapidamente i calcoli matematici con
numeri a virgola mobile (numeri finiti).

Molti microprocessori sono in grado di effettuare solo operazioni


di interi. Operazioni tra numeri finiti sono effettuate
scomponendole in sequenze di operazioni tra interi, con
conseguente aumento del tempo di calcolo.

Per evitare tale inconveniente, per applicazioni di calcolo


scientifico e di grafica, alla CPU si affianca un coprocessore
matematico che esegue mediante circuiti HW e dunque in modo
notevolmente più veloce le operazioni tra numeri finiti.

MEMORIA CACHE: Memoria di capacità limitata formata da


SRAM molto veloce posta tra il microprocessore e la memoria
centrale.

La prima volta che il microprocessore carica dai dati dalla


memoria centrale tali dati sono caricati nella cache.
Successivamente i dati sono prelevati dalla cache anziché dalla
memoria centrale più lenta.

Sfrutta le caratteristiche di LOCALITA' spaziale e temporale


tipica dei programmi.

Problemi di COERENZA tra dati contenuti in cache e memoria.

56
CONFRONTO TRA CALCOLATORI

 Ciclo di CLOCK : più è basso più è veloce l'elaborazione;


 TEMPO DI ACCESSO IN MEMORIA (presenza di una cache
e sue dimensioni);
 Caratteristiche del bus;
 Presenza di un coprocessore matematico (valutare mips o
Mflop) ha importanza per chi fa calcolo scientifico;
 VELOCITA' DI ACCESSO AL DISCO E VELOCITA' DEL
CONTROLLER (è importante per chi fa molta gestione di dati,
come le aziende)
 ESPANDIBILITA' DEL SISTEMA (numero di slot - prese di
espansione); espansibilità della memoria RAM, della memoria
Video, …

QUANDO SI ACQUISTA UN CALCOLATORE,


VALUTARE LE SUE PRESTAZIONI ATTRAVERSO
BENCHMARK (insieme di programmi tipici di applicazioni
che l'utente vuole elaborare)

57
LA DIREZIONE DEI COMPITI DEVE ESSERE FORMULATA
DALL'UTENTE MEDIANTE LA COSTRUZIONE DI UNA
LISTA DI ISTRUZIONI O "PROGRAMMA", INTRODOTTO
INSIEME AI DATI MEDIANTE UN DISPOSITIVO DI
INGRESSO IN MEMORIA ED IVI RESIDENTE
(PROGRAMMA MEMORIZZATO DI VON NEUMANN).

Ogni programma per essere eseguito direttamente dalla macchina


deve essere scritto direttamente in linguaggio macchina. Ogni
elaboratore ha il suo linguaggio macchina strettamente legato alle
caratteristiche dell’hardware.

LINGUAGGIO MACCHINA: insieme di istruzioni scritte


secondo regole sintattiche fissate immediatamente interpretabili ed
eseguibili dall’unità di controllo.

È necessario:
 ricordarsi tutti i codici (che cambiano da macchina a macchina)
 gestire gli indirizzi completamente, indirizzando alcune
locazioni alle costanti
 conoscere l'architettura

Il programma è:
 non "portabile" su altre macchine
 poco leggibile (comprensibile)
 difficilmente modificabile
 alta probabilità di commettere errori e difficoltà nel
rintracciarli

LINGUAGGIO ORIENTATO ALLA MACCHINA E NON AL


PROBLEMA: se si conosce alla perfezione l'architettura si
ottengono programmi altamente efficienti!!!

58
ESEMPIO:
Supponiamo di avere una macchina in cui ogni istruzione è codificata
in una LOCAZIONE DI MEMORIA costituita da 16 bit, di cui 4
servono per il campo del codice operativo e 12 per il campo dell’indirizzo
di un solo operando, se è necessario specificarlo.

Codici operativi (al più 16)

0000 LOADA
caricamento nel registro accumulatore A :(w) ->(A)
0001 LOADB
caricamento nel registro accumulatore B: (w)->(B)
0010 STOREA
memorizzazione del contenuto dell'accumulatore A all'indirizzo
specificato (A)->(w)
0011 STOREB
memorizzazione del contenuto dell'accumulatore A all'indirizzo
specificato (B)->(w)
0100 READ
lettura di un dato e memorizzazione nella locazione di indirizzo
w ; input ->(w)
0101 WRITE
stampa del contenuto della locazione di indirizzo w; (w)-
>output
0110 ADD:somma (A)+(B) ->(A)
0111 DIF: differenza (A)-(B) -> (A)
1000 MUL:prodotto (A)*(B)->(A)
1001 DIV: quoziente (A):(B)->(A); resto in (B)
1010 JUMP: salto incondizionato all’indirizzo w: (w)->(PC)
1011 JUMPZ: salto all’indirizzo w se (A) =0
1101 HALT:fine elaborazione

59
Ogni istruzione è eseguita mediante una serie di microistruzioni.

LOADA o LOADB
OP(IR)->MAR
Memoria (MAR)->MDR
MDR->A o B

STOREA o STOREB
A o B-> MDR
OP(IR)->MAR
MDR->memoria(MAR)

READ
RDP->MDR
OP(IR)->MAR
MDR ->memoria(MAR)

WRITE
OP(IR)->MAR
Memoria(MAR)->MDR
MDR->RDP

ADD, DIF, MUL, DIV


A+B->A
A-B->A
A*B->A
A/B->A resto ->B

JUMP
OP(IR)->PC

JUMPZ
Se il bit zero di RS contiene 1, OP(IR)->PC

60
Il seguente programma legge i due dati I e F, ne esegue la somma e visualizza il
risultato.
Indirizzo di memoria Contenuto
CO |Operando
Ingresso di I e F 0-0000 READ I 0100 000000001000
1-0001 READ F 0100 000000001001
K<-I+F 2-0010 LOADA I 0000 000000001000
3-0011 LOADB F 0001 000000001001
4-0100 ADD 0110 000000000000
5-0101 STOREA K 0010 000000001010
Stampa K 6-0110 WRITE K 0101 000000001010
Stop 7-0111 HALT 1101 000000000000
Spazio memoria 8-1000 spazio riservato
Spazio memoria 9-1001 spazio riservato
10-1010 spazio riservato

Per mandare in esecuzione il programma in PC (program counter) viene caricato


l'indirizzo 0.

61
MODALITA’ DI INDIRIZZAMENTO

 diretto: il campo operando dell’istruzione contiene l’indirizzo assoluto della


locazione di memoria in cui sta l’operando (un accesso in memoria);
 indiretto: il campo operando contiene l’indirizzo della locazione di memoria ove
sta l’indirizzo dell’operando (due accessi in memoria);
 tramite registro indice: l’indirizzo dell’operando si ottiene sommando il
contenuto del campo operando con il contenuto di un registro speciale, detto
registro indice (I); si usa per accedere a una serie di parole consecutive che
seguono una data locazione, il cui indirizzo viene messo nel registro indice;
 immediato: l’operando è contenuto nel campo operando.

Per codificare i 4 diversi modi di indirizzamento, possono essere usati i primi due bit
del campo operando:

0 indirizzamento diretto
01 indirizzamento indiretto
10 indirizzamento tramite registro indice
11 indirizzamento immediato

62
LINGUAGGIO SIMBOLICO (Assembler)

 Codici operativi delle istruzioni sono sostituiti con nomi mnemonici


(corrispondenti al codice numerico)
 Rappresentazione degli indirizzi di memoria con nomi di fantasia
(modo simbolico) detti etichette
 Esistono direttive per la gestione della memoria

UN PROGRAMMA ASSEMBLER DEVE ESSERE TRADOTTO IN


LINGUAGGIO MACCHINA

La conversione è eseguita da un:


 ASSEMBLATORE: programma fornito in linguaggio macchina fornito
dalla casa costruttrice che esegue il procedimento meccanico di
tradurre, detto PROCESSO DI ASSEMBLAGGIO:
L'assemblatore viene eseguito, caricandolo in memoria, usa come dato
il programma sorgente, scritto in Assembler e produce come risultato un
programma oggetto, scritto in linguaggio macchina che può essere
eseguito. Eventualmente l'assemblatore può effettuare una rilocazione.

ASSEMBLATORE PROGRAMMA
FASE DI OGGETTO IN
ASSEMBLAGGIO
LINGUAGGIO
PROGRAMMA MACCHINA
SORGENTE IN
ASSEMBLER MEMORIA
PRINCIPALE

VANTAGGI
 L'utente può conoscere i codici e programma in modo da non
conoscere gli indirizzi
 facile modifica del programma e facile localizzazione degli errori
SVANTAGGI:
 programma non portabile
 corrispondenza 1-1 tra istruzioni macchina e Assembler
 linguaggio orientato alla macchina

63
ESEMPIO:
READ I
READ F
LOADA I
LOADB F
ADD
STOREA K
WRITE K
HALT
I: int 1
F: int 1
K: int 1

Etichette:
I, F, K sono nomi di fantasia associati a locazioni di memoria che contengono i dati
su cui lavora il programma.

Dichiarative:
int: istruzione dichiarativa che avvisa l’assemblatore di lasciare una locazione vuota.

Modi di indirizzamento:
LOADA F diretto: l’operando è contenuto all’indirizzo F
LOADA @F indiretto: l’operando è contenuto all’indirizzo contenuto in F
LOADA F(I) tramite registro indice: l’operando è contenuto all’indirizzo dato dal
contenuto di F sommato al contenuto del registro indice
LOADA #F immediato: l’operando è il valore di F

64
ESEMPIO: SOMMA DI N NUMERI

READ N ; input N
LOADA #0 ; S<-0
STOREA S
LOADB #0 ; I<-0
STOREB I
CICLO: LOADA N
DIF ; N<- N-I
JUMPZ STAMPA
READ X
LOADA S
LOADB X
ADD ; S<-S+X
STOREA S
LOADA I
LOADB #1
ADD
STOREA I ;I<-I+1
LOADB I
JUMP CICLO
STAMPA: WRITE S
HALT
N: int 1
S: int 1
I: int 1
X: int 1

CICLO, STAMPA, N, S, I, X sono ETICHETTE di indirizzi di memoria. Ogni volta


che si fa riferimento ad un indirizzo di memoria, si usa il nome simbolico ad esso
associato. Le costanti sono introdotte direttamente (#0, #1,...)

DIFFERENZA TRA VARIABILI E COSTANTI

65
LINGUAGGI EVOLUTI

 Si sviluppano a partire dagli anni '60 e non sono più


orientati alla macchina, ma alla mentalità dell'utente ed
al problema da risolvere (FORTRAN, C, PASCAL,..).
Sono linguaggi SIMBOLICI (indirizzi di memoria
rappresentati con simboli)
 Si possono usare su una qualunque macchina dotata di
programma traduttore

PORTABILITA' DEI PROGRAMMI

 Non è più richiesta la conoscenza dell'HW e dei codici


operativi delle istruzioni.

IL PROGRAMMATORE DEVE CONOSCERE


 alfabeto
 sintassi del linguaggio evoluto
 semantica

La macchina diventa una scatola nera.

La corrispondenza tra una istruzione di linguaggio


evoluto ed una di linguaggio macchina diventa 1 a più .

66
LINGUAGGI DI PROGRAMMAZIONE

 FORTRAN (FORmula TRANslator) per elaborazione


scientifica
 COBOL (COmmon Businness Oriented Language) per
applicazioni gestionali

Linguaggi basati nello STUDIO dei PRINCIPI DI


PROGRAMMAZIONE:
 ALGOL 60 (non utilizzato molto nella pratica)
 Pascal (diffusi per la didattica dell'informatica)
 C (costruzione di sistemi informatici)
 ADA (prescelto dal Ministero della Difesa degli USA)

Sono tutti linguaggi imperativi.

PROGRAMMAZIONE AD OGGETTI: si mantiene una


corrispondenza tra gli oggetti che caratterizzano una
applicazione e la loro codifica.
LINGUAGGI AD OGGETTI (C++, VISUAL BASIC...): le
istruzioni sono associate agli oggetti.

Linguaggi orientati alla logica matematica:


 LISP basato sul concetto di funzione (linguaggio
funzionale)
 PROLOG basato sul formalismo della logica matematica
(linguaggio dichiarativo)

67
LINGUAGGI EVOLUTI

LINGUAGGI INTERPRETATIVI
si dividono in: {
LINGUAGGI COMPILATIVI

.. a seconda della modalità di traduzione del programma


sorgente in oggetto.

68
LINGUAGGIO INTERPRETATIVO (BASIC...)

Necessita di un INTERPRETE come traduttore:


 INTERPRETE: risiede in memoria insieme al
programma sorgente; considera una istruzione alla volta
del programma sorgente, lo analizza sintatticamente. Se
non è corretta si arresta visualizzando un messaggio di
errore e si pone in attesa di una nuova istruzione. Se è
corretta esegue immediatamente la procedura in
linguaggio macchina corrispondente all'istruzione;
 la traduzione del programma avviene durante
l'esecuzione; tale esecuzione avviene sotto la
supervisione dell'interprete.
 facile localizzazione degli errori (utile per la "messa a
punto" de i programmi)
 non è possibile un'ottimizzazione del programma
(programma visto istruzione per istruzione e non nella
sua interezza)
 esecuzione lenta

69
LINGUAGGI COMPILATIVI (FORTRAN,
COBOL,...)

Necessitano di un COMPILATORE come traduttore.


 COMPILATORE: risiede in memoria principale, vede il
programma sorgente come un dato di input, ne esegue
una analisi sintattica (fornisce lista di errori e messaggi
sulla loro posizione) e, nel caso di un programma
sintatticamente corretto, esegue la traduzione in
linguaggio macchina. Crea una tavola dei simboli
(symbol table). Il programma oggetto è il risultato della
compilazione (file.OBJ, file.O).
 La traduzione del programma avviene prima della sua
esecuzione.
 Programma LINKER/LOADER: aggiunge procedure
contenute nella libreria del linguaggio o in altre librerie,
creando un programma eseguibile (file.EXE, file.X).
 Esegue eventualmente una rilocazione del codice
(assegnazione indirizzi alla Symbol table)
 È possibile un'ottimizzazione del programma (poiché
viene visto dal compilatore nella sua interezza)
 esecuzione veloce
 difficile localizzazione degli errori di tipo logico

L'IDEALE SAREBBE DI AVERE UN LINGUAGGIO


CON INTERPRETE (per la messa a punto) E
COMPILATORE (ottimizzazione).

70
PROCEDIMENTO DI INTERPRETAZIONE

INTERPRETATORE
PROGRAMMA (TRADUZIONE ED
SORGENTE ESECUZIONE) RISULTATI

SEGNALAZIONE
DATI
DI ERRORI
(SINTATTICI E/O
SEMANTICI)

PROCEDIMENTO DI COMPILAZIONE
EDITING PROGRAMMA
SORGENTE

COMPILATORE TRADUZIONE

PROGRAMMA
OGGETTO

LINKER COLLEGAMENTI
LOADER

PROGRAMMA
ESEGUIBILE

DATI ESECUZIONE

RISULTATI

71
SISTEMA OPERATIVO

 programma scritto in linguaggio macchina


permanentemente in esecuzione che funge da interfaccia
tra: utente <-----S.O.-----> HW
 permette all'utente di sfruttare al meglio le risorse
dell'HW senza consentire dettagli
 Il nucleo (KERNEL) giace permanentemente in memoria
dal momento dell'avvio del sistema.
 È un interprete di comandi che il S. O. fornisce per:
gestione dei files su nastri dischi ecc.
stampanti
creazione ed esecuzione programmi
dotato di vari programmi di utilità per lo svolgimento di
varie attività (editor, compilatori, interpreti, linker,
loader...)

72
RIFERIMENTI BIBLIOGRAFICI

 Ceri, Mandrioli, Sbatella: Istituzioni di Informatica, Mc Graw


Hill.

73

Potrebbero piacerti anche