Che materia stai cercando?

Riassunto Calcolatori elettronici e reti di calcolatori 1

Appunti di calcolatori elettronici e reti di calcolatori basati su appunti personali del publisher presi alle lezioni del prof. Mancini dell’università degli Studi del Politecnico delle Marche - Univpm, facoltà di Ingegneria. Scarica il file in formato PDF !

Esame di calcolatori elettronici e reti di calcolatori docente Prof. A. Mancini

Anteprima

ESTRATTO DOCUMENTO

4.3 Elementi di progettazione delle cache

Indirizzi di cache

Quasi tutti i processori general purpose e molti processori embedded supportano la

memoria

virtuale. In pratica, la memoria virtuale e uno

strumento che permette ai programmi di indirizzare la memoria da un punto di vista

logico,

senza prestare attenzione alla quantità di memoria principale fisicamente disponibile.

Quando viene utilizzata la memoria virtuale i campi indirizzo delle istruzioni macchina

contengono

indirizzi virtuali.

Dimensione della cache

Più grande è la cache, maggiore e il numero di porte logiche per l’indirizzamento. Il

risultato è che grandi cache tendono a essere leggermente più lente rispetto a quelle

più piccole,

anche se costruite con la stessa tecnologia e posizionate nello stesso modo nel chip e

sulla scheda. (mapping)

Funzioni di traduzione

Dato che ci sono meno linee di cache che blocchi di memoria centrale, occorre un

algoritmo

per eseguire l’indirizzamento dei blocchi di memoria centrale nelle linee della cache.

Inoltre, è richiesto un criterio per determinare quale blocco di memoria centrale

attualmente occupi

una certa linea di cache. La scelta della funzione di traduzione impone come la cache

debba

essere organizzata. Si possono usare tre tecniche: diretta, associativa e set-

associativa. (direct mapping),

La tecnica più semplice, nota come indirizzamento diretto

assegna a ciascun

blocco di memoria centrale una sola possibile linea di cache. La corrispondenza e

esprimibile come:

i j m

= modulo

dove

i = numero della linea nella cache

j = numero del blocco nella memoria centrale

m = numero di linee nella cache

La tecnica dell’indirizzamento diretto e semplice e poco costosa da implementare. Il

suo

svantaggio principale e che esiste una locazione fissa nella cache per ciascun blocco di

memoria.

Cosi se un programma accede ripetutamente a parole di due blocchi cui e assegnata

la stessa linea, allora i blocchi verranno continuamente scambiati nella cache, e la

percentuale thrashing).

di successi sarà bassa (un fenomeno noto come

Per accedere alla cache, ogni indirizzo in memoria

iv

centrale può essere scomposto in tre campi. I bit meno significativi identificano

un byte all’interno del blocco di memoria centrale; nella maggior parte delle odierne

macchine, s 2S

l’indirizzamento e a livello di byte. I restanti bit specificano uno dei blocchi di

s s - r

memoria centrale. I circuiti della cache interpretano questi bit come un tag di bit

r m 2r

(la parte piu significativa) più un campo di bit che identifica una delle = lince

della

cache. Riassumendo:

L’indirizzamento associativo supera lo svantaggio dell’indirizzamento diretto

permettendo

ai blocchi di memoria di essere caricati in qualsiasi linea di cache (Figura 4.8b). In

questo caso, la logica di controllo della cache interpreta un indirizzo di memoria

semplicemente

come un’etichetta e un campo parola. Il campo etichetta identifica univocamente

un blocco di memoria centrale. Per determinare se un blocco si trovi nella cache, la

logica

di controllo deve esaminare in parallelo tutte le etichette di linea. Si noti che nessun

campo dell’indirizzo corrisponde al numero di linea, cosicché il numero delle linee nella

cache non e determinato dal formato dell’indirizzo.

Per riassumere,

L’indirizzamento set-associativo c un compromesso che unisce i punti di forza

dell’approccio

diretto e di quello associativo riducendo nel contempo i loro svantaggi. In questo

v (set) k

caso, la cache e divisa in insiemi di linee. Sussistono le relazioni

m - V k

X

i j V

= modulo

dove

i = numero dell’insieme della cache

j = numero del blocco in memoria centrale

m = numero di lince nella cache

V = numero di insiemi

k = numero di lince in ogni insieme k B

Con questo indirizzamento, chiamato set-associativo a vie, il blocco può essere

assegnato i.

a qualunque linea dell’insieme

La cache set-associativa può quindi essere

v

fisicamente implementata come cache associative. E anche possibile implementare

la cache k

set-associativa come cache a indirizzamento diretto. v

Ogni cache indirizzata direttamente viene chiamata via e consiste in linee. Le prime

V v

linee della memoria principale sono mappate direttamente nelle linee di ogni via;

v

il successivo gruppo di linee della memoria principale viene mappato in modo simile,

c

cosi via. L’implementazione a indirizzamento diretto e solitamente usata per bassi

k),

gradi di associatività (valori piccoli di mentre l’implementazione a indirizzamento

associativo

e tipicamente utilizzata per alti gradi di associatività. Nell’indirizzamento set-

associativo, la logica di controllo della cache interpreta un indirizzo di memoria come

tre campi: tag, set e parola.

Algoritmi di sostituzione

Per poter scrivere un nuovo blocco nella cache, occorre sostituire uno dei suoi blocchi.

Con l’indirizzamento diretto, esiste solo una possibile linea per un particolare blocco, e

non

ce niente da scegliere. Per le altre due tecniche invece, e necessario un criterio di

sostituzione

che, per ottenere alte velocita, deve essere implementato in hardware. Sono stati

sperimentati

vari algoritmi: menzioniamo quattro dei piu comuni. Probabilmente il più efficace e

l’algoritmo (least recently used)

di sostituzione LRU che sostituisce quel blocco dell’insieme che

e rimasto nella cache più a lungo senza essere referenziato. Un’altra possibilità e

(first-in-first-out)\

l’algoritmo FIFO esso

sostituisce il blocco nell’insieme che c rimasto più a lungo nella cache. Un'altra

possibilità ancora e data dall’algoritmo LFU che sostituisce il blocco dell’insieme che

ha subito meno accessi.

Politica di scrittura

Prima che un blocco residente nella cache possa essere sostituito, e necessario

verificare se sia

stato alterato nella cache ma non in memoria centrale. Se non e cosi, allora il vecchio

blocco

nella cache puo essere soprascritto. Viceversa, sarà stata eseguita almeno

un’operazione di

scrittura su una parola in quella linea di cache, e di conseguenza e necessario

aggiornare la

memoria centrale. Esiste tutta una serie di politiche di scrittura, con compromessi tra

le

prestazioni c i costi. Ci sono due problemi da affrontare. Primo, più di un dispositivo

può avere

accesso alla memoria centrale. Per esempio, un modulo di I/O potrebbe essere in

grado

di leggere o scrivere direttamente in memoria. Se una parola e stata alterata soltanto

nella cache,

allora la corrispondente parola di memoria non c valida. Al contrario, se il dispositivo

di I/O ha alterato la memoria centrale, allora e la parola nella cache a non essere

valida. Un

problema piu complesso si verifica quando piu processori sono connessi allo stesso

bus e ciascun

processore ha una propria cache locale. In tal caso, se una parola viene alterata in una

cache, presumibilmente ciò potrebbe invalidare una parola nelle altre. La tecnica più

write-through.

semplice e chiamata Utilizzando tale tecnica, tutte le operazioni di

scrittura vengono eseguite sia in memoria centrale sia nella cache, assicurando

cosi che la memoria centrale sia sempre aggiornata. Una tecnica

write back

alternativa, nota come minimizza le scritture in memoria. Questa tecnica

prevede

che gli aggiornamenti siano eseguiti solo nella cache. Il problema di questa tecnica e

che parti della memoria centrale non sono aggiornate,e dunque gli accessi tramite

moduli di I/O possono essere consentiti solo attraverso la cache.

Dimensione delle linee

Un altro elemento di progettazione e la dimensione delle linee. Quando un blocco di

dati

e posizionato nella cache, viene recuperata non solo la parola desiderata, ma anche

un certo

numero di parole adiacenti. Quando la dimensione del blocco cresce, vengono portati

all'interno della cache più dati utili c la percentuale di successi inizialmente aumenterà

per

il principio di località che asserisce un’elevata probabilità di accesso ai dati limitrofi a

una

parola referenziata. In seguito, pero, la frequenza di successo comincerà a diminuire e

la probabilità

di utilizzare le informazioni appena prelevate diventerà minore della probabilità di

riutilizzare le informazioni che devono essere sostituite. Entrano in gioco due specifici

effetti.

♦ Blocchi più larghi riducono il numero di blocchi nella cache. Poiché ogni prelievo di

blocco sovrascrive i contenuti più vecchi della cache, un piccolo numero di blocchi

porta alla sovrascrittura dei dati in fasi immediatamente successive al loro prelievo.

♦ Quando i blocchi diventano troppo grandi, ogni parola addizionale e più lontana

dalla

parola richiesta, e quindi diminuisce la probabilità che venga richiesta nell’immediato

futuro.

Cache multilivello

Con lo sviluppo dell’integrazione circuitale, e divenuto possibile avere una cache sullo

on-chip.

stesso chip del processore: la cache Confrontata con una cache raggiungibile

attraverso

un bus esterno, la cache on-chip riduce l’attività del bus esterno del processore e

quindi velocizza i tempi di esecuzione e incrementa le prestazioni generali del sistema.

L’adozione di una cache on-chip pone la domanda se le cache off-chip, o esterne,

siano

ancora opportune. Generalmente, la risposta e affermativa e la maggior parte dei

progetti

odierni include sia una cache on-chip sia una esterna. L’organizzazione risultante e

nota

come cache a due livelli, dove la cache interna viene chiamata al livello 1 (LI) e quella

esterna al livello 2 (L2). La ragione per includere una cache di secondo livello c la

seguente.

Sc non esiste una cache L2 e il processore effettua una richiesta di accesso a una

locazione

di memoria non presente nella cache LI, allora il processore deve accedere alla

memoria DRAM o ROM attraverso il bus. A causa della bassa velocita del bus e ai lenti

tempi di accesso alla memoria, il risultato e una prestazione scadente.

(unified) (split)

Cache unificata e separata

Quando la cache on-chip fece la sua prima apparizione, molti progetti prevedevano

un’unica

cache per dati c istruzioni. Più di recente, e diventato usuale dividere la cache in due:

una dedicata alle istruzioni e una dedicata ai dati. Queste cache coesistono allo stesso

livello,

tipicamente come due cache LI. Quando il processore tenta di prelevare un’istruzione

dalla memoria principale consulta prima la cache LI per le istruzioni e quando il

processore

deve prelevare un dato dalla memoria principale, verifica prima la presenza del dato

nella cache LI dei dati.

Ci sono due vantaggi potenziali legati a una cache unificata.

♦ Per una data dimensione, una cache unificata presenta una percentuale di successo

più

elevata rispetto a quella separata, poiché bilancia il carico tra prelievi di istruzioni e

di dati in modo automatico. In altre parole, se un percorso esecutivo implica molti

più prelievi di istruzioni che di dati, allora la cache tenderà a riempirsi di istruzioni,

mentre se un percorso di esecuzione implica un numero relativamente maggiore di

prelievi di dati, avverrà l’opposto.

♦ E necessario progettare e implementare una sola cache.

4.4 Organizzazione della cache nel Pentium 4

Nel Pentium 4, la cache dati e di 16 Kbyte, ha linee da 64 byte e un’organizzazione

set-associativa a quattro vie.

Il nucleo del processore consiste di quattro componenti principali.

♦ Unita di fetch/decodifica: preleva sequenzialmente le istruzioni dalla cache L2, le

decodifica c traduce in una serie di micro-operazioni chc vengono memorizzate nella

cache istruzioni LI.

♦ Logica di esecuzione out-of-ordcr: esegue le micro-operazioni soggette a

dipendenze

tra dati e a disponibilità di risorse; cosi, le micro-operazioni possono essere

predisposte

per 1 esecuzione in un ordine differente da quello del programma. Sc il tempo

lo consente, questa unita organizza l’esecuzione speculativa di micro-operazioni

che potrebbero essere richieste in futuro.

♦ Unita di esecuzione: esegue le micro-operazioni, prelevando i dati dall’apposita

cache

LI e memorizza i risultati temporanei nei registri.

♦ Sottosistema di memoria: questa unita include la cache L2 e il bus di sistema,

che

viene utilizzato per accedere alla memoria centrale (in caso di miss sulle cache LI e

L2) c per accedere alle periferiche.

4.5 Organizzazione della cache di ARM

Un’interessante funzionalità dell’architettura ARM e l’utilizzo di un piccolo buffer di

scrittura FIFO (first-in first-out) per migliorare le prestazioni di scrittura in memoria. Il

buffer di scrittura e interposto tra la cache e la memoria principale e consiste in un

insieme

di indirizzi e un insieme di dati. Il buffer e piccolo rispetto alla cache e può

immagazzinare

fino a quattro indirizzi. Tipicamente il buffer di scrittura e abilitato per tutta la memoria

principale, anche se può essere selettivamente disabilitato a livello di pagina.

Capitolo 5

Memoria interna

Punti chiave

♦ Lc due memorie a semiconduttore e ad accesso casuale sono la RAM dinamica

(DRAM) e la RAM statica (SRAM). La SRAM e piu veloce, piu costosa e meno

densa della DRAM, c viene usata per le memorie cache. La DRAM viene utilizzata

per l1 a memoria central1e.

♦ Lc tecniche di correzione d’crrorc sono comunemente impiegate nei sistemi di

memorizzazione e implicano l’aggiunta di bit ridondanti che sono funzione dei bit

dati. Sc si verifica un errore su un bit, e possibile rilevarlo e, solitamente, correggerlo.

♦ Per compensare la velocita relativamente lenta della DRAM, sono state introdotte

alcune particolari organizzazioni di DRAM. Le piu comuni sono la DRAM

sincrona e la DRAM RamBus. Entrambe implicano l’uso del clock di sistema per

il trasferimento di blocchi di dati.

5.1 Memoria centrale a semiconduttore

Organizzazione

L’elemento di base di una memoria a semiconduttore e la cella di memoria. Sebbene venga

utilizzata una grande varieta di tecnologie elettroniche, tutte le celle di memoria a semiconduttore

condividono alcune specifiche proprieta.

♦ Presentano due stati stabili (o semistabili), che rappresentano il bit (0/1).

♦ E possibile scrivere nella cella (almeno una volta), per impostare lo stato (0/1).

♦ E possibile leggere lo stato della cella.

RAM dinamica

La tecnologia RAM si divide in due: dinamica e statica. Una RAM dinamica (DRAM) e

composta da celle che memorizzano i dati in forma di cariche su condensatori. La presenza

o assenza di carica sui condensatori viene interpretata come bit 1 o bit 0. Poiché i condensatori

tendono naturalmente a scaricarsi, le RAM dinamiche richiedono periodicamente il refresh, cioè il rinnovamento della carica

per mantenere la memorizzazione dei dati.

Il termine dinamica si riferisce alla tendenza della carica immagazzinata a disperdersi,

anche in presenza di alimentazione.

RAM statica

Al contrario, una RAM statica (SRAM) e un dispositivo digitale che utilizza gli stessi elementi

di base del processore. In una SRAM, i valori binari sono memorizzati mediante porte

logiche. Le RAM statiche mantengono i propri dati finche sono alimentate.

SRAM e DRAM: un confronto

Sia le RAM statiche sia quelle dinamiche sono volatili, nel senso che per conservare i valori

dei bit e necessaria un’alimentazione continua. Una cella di memoria dinamica e piu

semplice e piu piccola di una cella di memoria statica. Dunque, le DRAM sono piu dense

(celle piu piccole = piu celle per unità di superficie) e meno costose (a parita di capacita).

D’altro canto, le DRAM richiedono circuiti aggiuntivi per il refresh periodico. Per memorie

grandi, il costo di questi circuiti e piu che compensato dal costo inferiore della singola

cella. Dunque, le DRAM tendono a essere favorite per memorie di grandi capacita.

In sostanza le SRAM sono piu veloci delle DRAM. Grazie a queste caratteristiche relative,

le SRAM sono usate per le memorie cache (sia on-chip sia off-chip), e le DRAM per la

memoria centrale.

Tipi di ROM

Come suggerisce il nome, una memoria a sola lettura ROM (read-only memory) contiene

uno schema di dati permanente che non puo essere cambiato. Le ROM non sono volatili,

ossia, mantengono i valori dei loro bit anche in assenza di alimentazione. Mentre e

possibile leggere una ROM, non e possibile scrivervi nuovi dati.

Quando e richiesto un piccolo numero di ROM con un particolare contenuto, un’alternativa

meno costosa e la PROM.

ROM programmabile,

Le otticamente, EPROM

memorie di sola lettura cancellabili e programmabili

{erasable programmable read-only memory), sono lette e scritte elettricamente, come le

PROM.

Una piu interessante memoria principalmente di lettura e la memoria di sola lettura

EEPROM.

cancellabile e programmabile elettricamente,

Un’altra forma di memoria a semiconduttore e la cosi chiamata per

memoria flash,

la velocita con la quale puo essere riprogrammata.

5.2 Correzione degli errori

Le memorie a semiconduttore sono soggette a errori. Questi possono essere classificati in

guasti hardware (hard failure) ed errori software [soft error). Un guasto hardware e un

difetto fisico permanente per cui le celle di memoria interessate non memorizzano i dati

in modo affidabile. Questi gravi errori possono essere causati da condizioni ambientali, difetti

di fabbricazione o consumo. Un errore software e un evento casuale e non distruttivo

che altera i contenuti di una o piu celle, senza danneggiare fisicamente la memoria. Gli

errori software possono essere causati da problemi di alimentazione

5.3 Organizzazione avanzata delle DRAM

Come detto nel Capitolo 2, uno dei colli di bottiglia piu critici nei processori ad alte prestazioni

e l’interfaccia verso la memoria centrale interna. Tale interfaccia c il cammino piu

importante nell’intero sistema di elaborazione. Il blocco costitutivo fondamentale della

memoria centrale rimane il chip della DRAM. Abbiamo visto che un attacco al problema delle prestazioni della memoria

centrale DRAM e consistito nell’inserire uno o piu livelli di cache SRAM ad alta velocita tra la memoria

centrale e il processore. Ma la SRAM e molto piu costosa della DRAM, ed espandere

la dimensione della cache oltre un certo punto produce risultati inferiori.

DRAM sincrona

Una delle forme piu adottate di DRAM e la DRAM sincrona, SDRAM [VOGL94]. A differenza

della DRAM tradizionale, che e asincrona, la SDRAM scambia dati con il processore

in sincronia con un segnale di clock esterno, viaggiando alla piena velocita del bus

di memoria senza imporre stati di attesa.

DRAM Rambus

La RDRAM, sviluppata da Rambus [FARM92, CRIS97], e stata adottata da Intel per i suoi

processori Pentium e Itanium ed e diventata la principale concorrente alla SDRAM. I

contatti dei chip RDRAM si trovano tutti sullo stesso lato. Il chip scambia dati con il processore

con 28 cavi lunghi non piu di 12 cm. Il bus indirizza fino a 320 chip RDRAM e ha

una velocita di 1,6 GB/s.

DDR SDRAM

Una limitazione delle memorie SDRAM e che possono inviare dati al processore una sola

volta per ciclo di clock. Una nuova versione di SDRAM, indicata con il nome di DDR

SDRAM (doublc-data-rate SDRAM), e in grado di inviare dati per due volte a ogni ciclo

di clock, una volta durante il fronte di salita del clock e una durante il fronte di discesa.

Capitolo 6

Memoria esterna

Punti chiave

♦ I diselli magnetici rimangono il componente piu importante della memoria esterna.

Dischi rimovibili c dischi fissi sono utilizzati dai piu piccoli ai piu grandi sistemi

di calcolo.

Φ Per ottenere migliori prestazioni e maggior disponibilita, molti sistemi di grandi

dimensioni adottano la tecnologia RAID, ovvero una famiglia di tecniche per lu ti

lizzo di piu dischi in parallelo, dotati di ridondanza implicita per compensare i

guasti del disco.

♦ La tecnologia di memorizzazione ottica c diventata via via piu importante in tutti

i sistemi di elaborazione. Mentre i CD-ROM sono stati ampiamente usati per

molti anni, ora stanno diventando sempre piu importanti i CD masterizzabili e i

DVD.

6.1 Disco magnetico

Un disco e un piatto circolare di materiale non magnetico, chiamato substrato, rivestito

di materiale magnetizzabile. Tradizionalmente, il substrato era in alluminio o in una lega

di alluminio. Piu di recente, sono stati introdotti substrati di vetro che presentano molti

vantaggi, tra cui:

♦ maggior uniformita della pellicola magnetica superficiale, con conseguente miglioramento

dell’affidabilita del disco

♦ significativa riduzione dei difetti complessivi della superficie con conseguente diminuzione

degli errori di lettura-scrittura

♦ minor distanza tra testina e supporto

♦ maggior rigidita

♦ maggiore resistenza a urti e danneggiamenti.

Meccanismi di lettura e scrittura magnetica

I dati vengono memorizzati e in seguito recuperati dal disco tramite una bobina conduttiva

detta testina (head); molti sistemi hanno testine di lettura e di scrittura separate.

Durante le operazioni di lettura e scrittura, la testina e ferma mentre il disco ruota sotto

di essa. Il meccanismo di scrittura e basato sul processo per cui l’elettricità che fluisce attraverso

una bobina produce un campo magnetico. Alla testina di scrittura vengono inviati impulsi,

e nella superficie sottostante vengono registrati schemi magnetici differenti a seconda

che la corrente sia positiva o negativa. Il meccanismo di lettura tradizionale e basato sul fatto che un campo magnetico in

movimento relativo rispetto a una bobina produce in essa una corrente elettrica. La porzione

di superficie del disco che passa sotto la testina genera una corrente della stessa polarità

di quella precedentemente registrata.

Organizzazione e formattazione dei dati

La testina e un dispositivo relativamente piccolo in grado di leggere o scrivere su una porzione

del disco rotante. Cio origina la disposizione fisica dei dati in anelli concentrici, chiamati

tracce {track). Le tracce hanno la stessa larghezza della testina, e ne esistono migliaia

per ciascun piatto.

Le informazioni possono

quindi essere lette alla stessa velocita facendo ruotare il disco a velocita angolare costante.

Poiche la in bit per centimetro lineare, cresce spostandosi dalla traccia piu

densita,

esterna a quella piu interna, la capacita di memorizzazione dei semplici dischi a velocita

angolare costante e limitata dalla massima densita ottenibile sulla traccia piu interna.

Caratteristiche fisiche

Nei si trova una testina di lettura-scrittura per ciascuna traccia.

dischi a testina fissa

Nei invece, troviamo un’unica testina

dischi a testina mobile,

di lettura-scrittura, anch essa montata su un braccio. Dato che la testina deve essere in grado

di raggiungere qualsiasi traccia, il braccio puo estendersi o ritrarsi.

Il rimane permanentemente montato nel proprio telaio. Ad esempio, il disco fisso dei personal computer

disco non rimovibile

non e rimovibile. Al contrario i possono essere asportati e sostituiti

dischi rimovibili

con altri dischi.

Nei modelli che hanno (;multiple platter) impilati verticalmente a distanza

piu piatti

di qualche centimetro, sono presenti piu bracci.

Parametri delle prestazioni del disco

Sui sistemi a testina mobile, il tempo richiesto per posizionare la testina sulla traccia e noto come tempo di posizionamento.

Una volta che la traccia e stata selezionata, il controllore del disco attende

finche il settore appropriato ruota per allinearsi con la testina. Il tempo richiesto affinche l’inizio del settore raggiunga la

testina e noto come o (rotational delay). La somma dell’eventuale tempo di posizionamento e del

ritardo, latenza rotazionale

ritardo rotazionale equivale al (access time), ossia il tempo richiesto per il posizionamento.

tempo di accesso

6.2 RAID

Come precedentemente detto, la rapidita nei miglioramenti delle prestazioni delle memorie

secondarie e stata decisamente inferiore rispetto a quelli di processori e memorie principali.

Questo disallineamento ha reso il sistema disco forse il principale argomento di interesse

nella ricerca per migliorare le prestazioni complessive di un sistema di elaborazione.

Fortunatamente, l’industria ha concordato uno schema standardizzato perla progettazione

di basi di dati su piu dischi, schema noto come RAID {redundant array of independent disk).

Lo schema RAID consiste di 7 livelli,3 da 0 a 6. Questi livelli non implicano una relazione

gerarchica, ma designano differenti architetture progettuali che condividono tre

caratteristiche comuni.

1. RAID e un insieme di dischi fisici visti dal sistema operativo come una singola unita;

2. i dati sono distribuiti sui dischi dell’insieme;

3. la capacita ridondante viene utilizzata per memorizzare informazioni di parita, che

garantiscono il recupero dei dati in caso di guasto.

RAID livello 0

II RAID livello 0 non e un vero componente della famiglia RAID, in quanto non include

la ridondanza per migliorare le prestazioni. Per il RAID 0, i dati dell’utente c di sistema sono distribuiti su tutti i dischi dell

array.

Cio presenta un netto vantaggio rispetto all’uso di un unico grande disco: nel caso di

due richieste di I/O rivolte a due differenti blocchi di dati, esiste un’alta probabilita che i

dati richiesti si trovino su dischi differenti. Dunque, le due richieste possono essere trattate

in parallelo.

RAID Livello 1

Il RAID 1 differisce dai RAID di livello piu alto per il modo in cui si ottiene la ridondanza. In RAID 1 la ridondanza viene

ottenuta semplicemente duplicando tutti i dati.

L’organizzazione RAID 1 comporta numerosi aspetti positivi.

1. Una richiesta di lettura puo essere soddisfatta dal disco, dei due che contengono i dati

richiesti, chc presenta la minor somma dei tempi di posizionamento e di latenza

rotazionale.

2. Una richiesta di scrittura richiede l’aggiornamento di entrambe le strisce corrispondenti,

ma questa operazione puo essere eseguita in parallelo. Dunque, le prestazioni

in scrittura sono dettate dalla piu lenta delle due scritture (ad esempio, quella che implica

la somma piu grande tra tempo di posizionamento c latenza rotazionale).

Comunque, con il RAID 1 non c’è “penalita di scrittura”. I livelli RAID dal 2 al 6 implicano

l’uso dei bit di parita. Dunque, quando una singola striscia viene aggiornata,

il software di gestione dell array deve prima calcolare e aggiornare i bit di parita e quindi

aggiornare la striscia in questione.

3. La ripresa dopo un guasto e semplice. Se un disco ha un malfunzionamento, i dati sono

disponibili sull’altro.

RAID Livello 2

I RAID livello 2 e 3 utilizzano tecniche di accesso parallelo. Tutti i dischi di un array ad

accesso parallelo partecipano all’esecuzione delle richieste di I/O. Come negli altri schemi RAID, si adotta lo striping dei dati.

Nel caso del RAID 2 e 3, le strisce sono molto piccole, spesso quanto un singolo byte o una singola parola. RAID 2 richiede

meno dischi rispetto al RAID 1, ma rimane comunque piuttosto dispendioso. RAID 2 si rivelerebbe efficace in un ambiente in

cui si verificano molti errori di disco. Data l’alta affidabilita dei dischi, RAID 2 non viene implementato.

RAID Livello 3

Organizzato in modo simile a RAID 2, RAID 3 richiede pero un solo disco ridondante,

indipendentemente dal numero di dischi dell’array c utilizza l’accesso parallelo, con i dati

distribuiti in piccole strisce. In caso di guasto, si accede al disco di parita e i dati vengono ricostruiti

RAID Livello 4

I livelli RAID dal 4 al 6 utilizzano una specifica tecnica di accesso. In questi array i dischi

operano in modo indipendente, cosicche richieste di I/O separate possano essere soddisfatte

contemporaneamente. Come negli altri schemi RAID, si adotta lo striping dei dati. Lc strisce dei RAID dal

4 al 6, sono relativamente grandi. RAID 4 utilizza una striscia di parita bit a bit sulle corrispondenti

strisce di ciascun disco dati, e i bit di parita sono memorizzati nella corrispondente striscia sul disco di parita.

RAID Livello 5

Organizzato in modo simile al precedente, RAID 5 si differenzia da questo in quanto distribuisce

le strisce di parita su tutti i dischi.

RAID Livello 6

Nello schema RAID 6 si effettuano due distinti calcoli della parita che sono

memorizzati in blocchi separati su dischi differenti. Cosi, un sistema RAID 6 i cui dati

utente richiedono N dischi consiste di N+ 2 dischi. Il vantaggio del RAID 6 consiste nel Tal rissi ma disponibilita dei dati. Per

provocare la perdita dei dati, dovrebbero guastarsi tre dischi nell’arco del tempo medio di riparazione.

6.3 Memorie ottiche

CD-ROM

CD audio e CD-ROM (compact disk read-only memory) condividono una tecnologia similare.

La principale differenza risiede nel fatto che i lettori CD-ROM sono meno levigati

e presentano dispositivi di correzione degli errori per assicurare la correttezza del trasferimento

dati tra disco e processore. Il supporto fisico dei due dischi e formato da una

resina (policarbonato) e le informazioni registrate digitalmente (musica o dati) sono stampate

come una serie di microscopici pozzetti (pit) sulla superficie di policarbonato.

Le informazioni vengono recuperate tramite un laser a bassa potenza. Il raggio laser

penetra il policarbonato mentre un motore fa ruotare il disco. I dati su un CD-ROM sono organizzati come una sequenza di

blocchi. Il CD-ROM risulta appropriato per la distribuzione di grandi quantita di dati a un

gran numero di utenti. Poiche la spesa del processo iniziale di scrittura e elevata, non e adeguato

alle applicazioni individuali. Rispetto ai tradizionali dischi fissi, il CD-ROM presenta

due vantaggi.

♦ Il disco ottico insieme alle informazioni memorizzate puo essere massicciamente replicato

con una spesa modesta, a differenza del disco magnetico. 1 dati di un disco magnetico

devono essere riprodotti copiando un disco alla volta utilizzando due drive.

♦ Il disco ottico e rimovibile, quindi utilizzabile per gli archivi. La maggior parte dei dischi

magnetici non e rimovibile. Le informazioni sui dischi fissi devono essere copiate

su nastro prima chc il disco possa essere usato per memorizzare nuove informazioni.

Gli svantaggi del CD-ROM sono i seguenti.

♦ E un dispositivo di sola lettura e non puo essere aggiornato.

♦ Il suo tempo d’accesso, circa mezzo secondo, e molto superiore rispetto ai dischi magnetici.

DVD (Digital Versatile Disk)

La maggiore capacita dei DVD rispetto ai CD e dovuta a tre differenze (Figura 6.12).

1. I bit sono impacchettati piu fittamente. La spaziatura tra i cicli della spirale di un CD

e di 1,6 |Im e la minima distanza tra i pit lungo la spirale e di 0,834 |Im. U DVD utilizza

un laser con una lunghezza d’onda piu breve e raggiunge una spaziatura tra i cicli

di 0,74 e una distanza tra pit di 0,4 Il risultato e l’incremento della capacita

μ η ι μηι.

che raggiunge 4,7 GB.

2. Il DVD adotta un secondo strato di pit e land posto sopra il primo strato. Un DVD

doppio strato presenta uno strato semiriflettente al di sopra dello strato riflettente e, variando la messa a fuoco, i laser dei

DVD possono leggere separatamente i due strati.

In pratica questa tecnica raddoppia la capacita del disco, portandola a circa 8,5 GB.

La riflessivita piu bassa del secondo strato limita la sua capacita e pertanto non si ottiene

un vero e proprio raddoppio.

3. Il DVD-ROM puo essere a doppio lato, mentre i dati su un CD sono registrati su un

solo lato. La sua capacita sale fino a 17 GB.

Dischi ottici ad alta definizione

I dischi ottici ad alta definizione sono stati progettati per memorizzare video ad alta definizione

e contenere moiri piu dati rispetto ai normali DVD. Grazie a un laser con una lunghezza

d’onda piu corra, nella gamma blu-viola, e stato possibile raggiungere una densita

di bit molto piu elevata.

6.4 Nastri magnetici

I sistemi a nastro utilizzano la stessa tecnica di scrittura e di registrazione dei sistemi a disco.

Il supporto e un nastro di poliestere flessibile (simile a quello usato in alcuni capi di

abbigliamento) ricoperto di materiale magnetizzabile.

Capi tolo 7

Input/Output

Punti chiave

♦ L’architettura di I/O di un sistema di elaborazione e progettata per costituire un

mezzo sistematico di controllo dell’interazione con l’esterno e per fornire al sistema

operativo le informazioni necessarie a gestire in modo efficace 1’attivita di I/O.

♦ Le tre principali tecniche sono: nel quale avviene sotto

I /O da programma, l’I/O

il diretto e continuo controllo del programma che richiede l’operazione; I/O

(guidato da interrupt), nel quale un programma esegue un comando di

driven

I/O e poi continua la propria esecuzione, finche non viene interrotto dall’hardware

di I/O che gli segnala la fine dell’operazione richiesta; accesso diretto

(DMA, direct memory access), nel quale un processore specializzato

alla memoria

prende il controllo dell’operazione di I/O per spostare un grande blocco di

dati.

♦ Due significativi esempi di interfacce esterne di I/O sono e

FireWire InfiniBand.

Oltre al processore e ai moduli di memoria, il terzo elemento chiave di un sistema di

elaborazione e l’insieme delle unita di I/O. Queste si interfacciano con il bus di sistema

e controllano uno o piu dispositivi periferici. Un modulo di I/O non e una semplice

connessione meccanica di un dispositivo con il bus di sistema, ma contiene circuiti che

eseguono funzioni di comunicazione tra la periferica e il bus.

Il lettore si potrebbe chiedere perche le periferiche non siano direttamente connesse

al bus di sistema. Le ragioni sono le seguenti.

♦ Esiste una gran varieta di periferiche con diversi metodi di operare.

♦ La velocita di trasferimento dati delle periferiche e generalmente di gran lunga inferiore

rispetto a quella della memoria o del processore.

♦ D’altro canto, il tasso di trasferimento dati di alcune periferiche e superiore a quello

della memoria o del processore.

♦ Le periferiche molte volte usano formati di dati e lunghezze di parola differenti rispetto

al calcolatore al quale sono connesse.

E, quindi, richiesta la presenza di un modulo di I/O che riveste due principali funzioni:

♦ interfaccia verso il processore e la memoria tramite il bus di sistema o un punto di

diramazione;

♦ interfaccia verso uno o piu dispositivi periferici tramite connessioni su misura.

7.1 Dispositivi esterni

Le operazioni di I/O sono effettuate tramite un vasto assortimento di dispositivi che

scambiano dati tra l’ambiente esterno e il calcolatore. I dispositivi esterni si connettono al

calcolatore tramite i moduli di I/O.

Possiamo classificare i dispositivi esterni in tre grandi categorie:

adatti alla comunicazione con lucente del calcolatore;

♦ dispositivi decifrabili dall'uomo: adatti alla comunicazione con le apparecchiature;

♦ dispositivi decifrabili dalla macchina:

adatti alla comunicazione con i dispositivi remoti.

♦ dispostivi di comunicazione:

7.2 Moduli di I/O

Funzioni dei moduli

Le funzioni e i requisiti principali dei moduli di I/O ricadono nelle seguenti categorie:

♦ controllo e temporizzazione

♦ comunicazione con il processore

♦ comunicazione con i dispositivi

♦ buffering dei dati

♦ rilevazione degli errori

7.3 I/O da programma

Per le operazioni di I/O sono possibili tre tecniche. Nell’I/O i dati vengono

da programma,

scambiati tra processore e modulo di I/O.

Nell’l/O (cioe guidato dagli interrupt) il processore

interrupt driven

invia un comando di I/O, prosegue nell’esecuzione di altre istruzioni e viene interrotto

dal modulo quando quest’ultimo ha completato il proprio lavoro.

L’alternativa e nota come o semplicemente DMA

accesso diretto alla memoria

(idirect memory access). In questo caso, il modulo di I/O e la memoria centrale scambiano

i dati direttamente, senza il coinvolgimento di processore.

Comandi di I/O

Per eseguire un’istruzione di I/O, il processore invia un indirizzo (che specifica il modulo

di I/O e il dispositivo esterno coinvolti) c un comando di I/O. Ci sono quattro tipi di comandi

di I/O che i moduli possono ricevere quando sono indirizzati dal processore.

♦ Controllo: utilizzato per attivare una periferica e comunicarle cosa fare. Ad esempio,

e possibile ordinare a un’unita nastro di riavvolgersi o di spostarsi avanti di un record.

Questi comandi sono costruiti su misura per ogni particolare tipo di periferica.

adottato per testare le condizioni di stato dei moduli di I/O e delle sue periferiche.

♦ Test:

Il processore vorra conoscere se una certa periferica sia accesa e disponibile per

l’uso, oppure se la piu recente operazione di 1 /0 sia stata completata o se siano avvenuti

degli errori.

provoca l’ottenimento di dati dalla periferica da parte del modulo e la loro

♦ Lettura:

scrittura in un buffer (il registro dati nella Figura 7.3). Il processore puo poi ottenere

i dati imponendo al modulo di I/O di scriverli sul bus dati.

impone al modulo di prendere i dati dal bus e di trasmetterli alla periferica.

♦ Scrittura:

7.4 I/O interrupt driven

Il problema dell’I/O da programma e che il processore deve attendere per un lungo periodo

di tempo prima che il modulo di competenza sia pronto per la ricezione o la trasmissione

dei dati. Frattanto, il processore deve verificare ripetutamente lo stato del modulo di I/O,

con conseguente, netto degrado delle prestazioni dell’intero sistema.

L’alternativa e che il processore invii un comando di I/O a un modulo e poi prosegua

nello svolgimento di altro lavoro. Il modulo di I/O interromperà il processore quando

e pronto allo scambio di dati. Il processore esegue poi il trasferimento dei dati e quindi

riprende l’elaborazione interrotta.

Elaborazione degli interrupt

Quando una periferica

completa un’operazione di I/O, avviene la seguente sequenza di eventi hardware.

1. Il dispositivo invia un interrupt al processore.

2. Il processore conclude l’esecuzione dell’istruzione corrente prima di rispondere all’

Interrupt

3. Il processore controlla gli interrupt determinandone l’eventuale presenza e invia un

segnale di riconoscimento al dispositivo che ha inviato l’interrupt. Il riconoscimento

consente al dispositivo di rimuovere il proprio segnale di interrupt.

4. Il processore si prepara a trasferire il controllo alla routine di interrupt

5. Il processore scrive nel PC l’indirizzo della prima istruzione della routine di gestione

dell’interrupt considerato.

6. Il PC e il PSW relativi al programma interrotto sono stati salvati sulla pila di sistema.

7. L’elaborazione dell’interrupt include un esame delle informazioni sullo stato delle

operazioni di I/O o di altri eventi che hanno causato l’interrupt.

8. Quando l’elaborazione dell’interrupt e completa, i valori dei registri salvati vengono

recuperati dalla pila e riportati nei registri.

9. Latto finale e il ripristino dei valori di PSW e PC a partire dalla pila. Come risultato,

la successiva istruzione eseguita sarà quella del programma precedentemente

interrotto.

7.5 Accesso diretto alla memoria

Svantaggi dell'l/O da programma e interrupt driven

L I/O interrupt driven, sebbene piu efficiente del semplice I/O da programma, richiede ancora

l’intervento attivo del processore per trasferire i dati tra memoria c moduli di I/O, e

ogni trasferimento dati deve passare attraverso il processore. Dunque, entrambe queste forme

di I/O presentano due svantaggi intrinseci.

1. Il tasso di trasferimento di I/O e limitato dalla velocita alla quale il processore può

testare e servire i dispositivi.

2. A ogni trasferimento dati, il processore deve eseguire un certo numero di istruzioni

Quando si debbono spostare grandi volumi di dati, e necessaria una tecnica piu efficiente:

(directmemory access).

l’accesso diretto alla memoria DMA

Funzioni del DMA

Il DMA è un modulo addizionale sul bus di sistema, che e in grado di simulare

il processore c addirittura di sottrargli il controllo del sistema, in modo da poter trasferire

dati da e verso la memoria sul bus di sistema.

Quando il processore desidera leggere o scrivere un blocco di dati, invia un comando

al modulo DMA, facendogli pervenire le seguenti informazioni.

♦ Se si tratta di una lettura o di una scrittura (utilizzando la linea di controllo lettura/

scrittura tra processore c DMA).

♦ L’indirizzo del dispositivo di I/O interessato (tramite il bus dati).

♦ La locazione iniziale in memoria (tramite il bus dati) che verrà memorizzata dal

DMA nel proprio registro indirizzo.

♦ Il numero di parole da leggere o scrivere, ancora una volta comunicato tramite il bus

dati e memorizzato in un registro del DMA.

Il processore continua poi con altro lavoro. In effetti ha delegato questa operazione di

I/O al DMA. Il modulo DMA trasferisce l’intero blocco di dati, una parola alla volta, direttamente

da o verso la memoria, senza passare attraverso il processore. Quando il trasferimento

e completo, il modulo invia un segnale di interrupt al processore. Dunque, il

processore e coinvolto solo all’inizio e alla fine del trasferimento.

7.6 Canali e processori di I/O

Evoluzione delle funzioni di I/O

L’evoluzione dei sistemi di elaborazione ha determinato una crescente complessita nei singoli

componenti, sempre piu sofisticati. Cio e particolarmente evidente nelle funzioni di

I/O. Abbiamo gia visto parte di tale evoluzione. I passi evolutivi possono essere riassunti

come segue.

1. La CPU controlla direttamente un dispositivo periferico.

2. Si aggiunge un controllore o un modulo di I/O.

3. Si adotta la configurazione precedente, ma si introducono gli interrupt

4. Al modulo di I/O viene dato accesso diretto alla memoria tramite il DMA

5. Il modulo di I/O viene potenziato per diventare quasi un vero processore che comunque

dispone di proprie istruzioni macchina specializzate.

6. Il modulo di I/O ha anche una memoria locale e diventa un calcolatore a tutti gli effetti.

Il canale di I/O rappresenta un’estensione del concetto di DMA, ed ha la capacita di eseguire

istruzioni di I/O, il che gli conferisce il completo controllo delle operazioni di I/O.

In un sistema di elaborazione dotato di tali dispositivi, la CPU non esegue istruzioni di

I/O.

7.7 Interfaccia esterna: FireWire e InfiniBand

Tipi di interfaccia

L’interfaccia verso una periferica da un modulo di I/O deve avere una specifica corrispondenza

alla natura e alle operazioni della periferica stessa. Esistono due tipi di interfaccia:

seriale e parallela.

Nelle interfacce parallele vi sono piu linee che connettono

il modulo di I/O e la periferica, e piu bit vengono trasferiti simultaneamente, cosi

come i bit di una parola vengono simultaneamente trasferiti sul bus dati. Le interfacce seriali

hanno una sola linea di trasmissione, e i bit sono trasferiti uno alla volta. L’interfaccia

parallela e tradizionalmente adottata per le periferiche piu veloci, come nastri e dischi, mentre

l’interfaccia seriale e tipicamente usata per stampanti e terminali. Grazie a una nuova generazione

di interfacce seriali ad alta velocita, quelle parallele sono sempre meno utilizzate.

Bus seriale FireWire

Con processori che raggiungono velocita dell’ordine dei GHz e dispositivi di memorizzazione

con capacita multiple dei gigabit, la domanda di I/O per i PC, le workstation e i

server e diventata formidabile. Le tecnologie dei canali di I/O ad alta velocita sviluppate

per i mainframe e per i supercomputer sono ancora troppo costose e voluminose per essere

adottate sui sistemi piu piccoli. Di conseguenza, si e manifestato notevole interesse riguardo

allo sviluppo di un’alternativa ad alta velocita alla SCSI e di altre interfacce di I/O

per piccoli sistemi. Il risultato e lo standard IEEE 1394 per bus seriali ad alte prestazioni,

comunemente detto FireWire.

FireWire mostra un certo numero di vantaggi sulle piu datate interfacce di I/O.

Presenta una velocita molto alta, un basso costo cd e facile da implementare.

Uno dei punti di forza dell’interfaccia FireWire e l’uso della trasmissione seriale (un

bit per volta) anziche parallela. Lo scopo di FireWire e fornire un’unica interfaccia di I/O con un

semplice connettore

che possa gestire numerosi dispositivi attraverso una singola porta.

Configurazioni FireWire

FireWire adotta una configurazione daisy chain, e supporta fino a 63 dispositivi connessi

a una singola porta. Inoltre, utilizzando i bridge si possono interconnettere fino a 1022 bus

FireWire, in modo che il sistema puo gestire tutte le periferiche richieste.

InfiniBand

InfiniBand e una specifica recente di I/O rivolta al mercato dei server di fascia alta.

Sostanzialmente, InfiniBand

consente ai server, ai dispositivi di memorizzazione remota e ad altri dispositivi di rete di

essere connessi a una struttura centrale. E possibile collegare fino a 64 mila server, sistemi

di memorizzazione e dispositivi di rete.

Capitolo 8

Supporto ai sistemi operativi

Punti chiave (operatingsystem),

Il sistema operativo, OS e il software che controlla l’esecuzione

dei programmi e che gestisce le risorse del processore. Molte funzioni svolte dal

(scheduling)

sistema operativo, tra cui la schedulazione dei processi e la gestione

della memoria, possono essere eseguite in modo efficiente e rapido se l’’hardware

del processore supporta il sistema operativo.

Una delle funzioni piu importanti di un sistema operativo e la schedulazione dei

(task).

processi L’OS determina quale processo debba essere eseguito a ogni dato

momento. In genere, l’hardware interrompe, di tanto in tanto, il processo in esecuzione

cosi da consentire al sistema operativo di prendere una nuova decisione

scheduling al

di fine di ripartire il tempo di processore in modo imparziale tra i processi.

Un’altra funzione importante del sistema operativo e la gestione della memoria.

La maggior parte dei sistemi operativi attuali include la memoria virtuale, che presenta

due vantaggi: (I) un processo puo andare in esecuzione senza che tutte le sue

istruzioni e i suoi dati siano presenti in memoria centrale, e (2) lo spazio totale di

memoria richiesto da un programma puo di gran lunga superare l’effettiva memoria

centrale del sistema.

8.1 Panoramica dei sistemi operativi

Obiettivi e funzioni dei sistemi operativi

Il sistema operativo c un insieme di programmi che controlla l’esecuzione dei programmi

applicativi e funge da interfaccia tra l’utente e l’hardware. Si puo immaginare chc esso abbia

due obiettivi. rendere piu conveniente l’uso di un calcolatore.

♦ Convenienza:

consentire al sistema di elaborazione di utilizzare in modo efficiente le risorse.

♦ Efficienza:

In breve, il sistema operativo fornisce tipicamente servizi nelle seguenti aree.

editor debugger

: il sistema operativo fornisce servizi, quali e ,

Creazione dei programmi

per assistere il programmatore nella stesura dei programmi. Generalmente, questi

utility

servizi sono delle messe a disposizione dal sistema operativo.

per eseguire un programma, le sue istruzioni e i suoi dati

Esecuzione dei programmi:

devono essere caricati nella memoria centrale, i dispositivi di I/O e i file devono essere

inizializzati, c occorre approntare ulteriori risorse.

a ogni dispositivo di I/O e associato un insieme di

Accesso ai dispositivi di I/O:

istruzioni e di segnali di controllo. Il sistema operativo si fa carico dei dettagli in modo

che il programmatore possa utilizzare semplici comandi di lettura e scrittura

nel caso dei file, il controllo deve conoscere la natura del

Accesso controllato ai file:

dispositivo di I/O e del formato dei file sul supporto di memorizzazione.

nel caso di sistemi condivisi, il sistema operativo controlla l’accesso

Accesso al sistema:

al sistema nel suo insieme e alle sue specifiche risorse.

mentre il sistema di elaborazione e in

Rilevamento degli errori e relativa risposta:

funzione, possono verificarsi vari errori: hardware o software

Accounting: un buon sistema operativo raccoglie statistiche d’uso delle risorse ed effettua

un monitoraggio dei parametri di prestazione.

Tipi di sistema operativo

Le caratteristiche peculiari che servono a differenziare i vari tipi di sistemi operativi si dispongono

lungo due dimensioni indipendenti. La prima dimensione specifica se il sistema

interattivi

sia batch (a lotti) o interattivo. Nei sistemi , fu l’utente/programmatore interagisce

direttamente con il calcolatore, solitamente tramite un terminale (tastiera/monitor). Al contrario,

batch

nei sistemi il programma dell’utente viene combinato con i programmi di altri utenti c

sottoposto al calcolatore da un operatore. Dopo

il completamento del programma, i risultati vengono presentati all’utente.

I primi sistemi operativi

Fino alla metà degli anni Cinquanta non esistevano i sistemi operativi, per cui il programmatore

interagiva direttamente con I hardware della macchina.

Questi sistemi primitivi presentavano due problemi principali.

la maggior parte delle installazioni usava un registro per prenotare

♦ Schedulazione:

il tempo di processore. i programmi, chiamati potevano implicare il caricamento

♦ Tempo di configurazione: job,

in memoria di un programma scritto in linguaggio ad alto livello (programma

sorgente), del relativo compilatore e il salvataggio del programma compilato

linking

(programma oggetto) e infine il caricamento e il collegamento ( ) del

programma oggetto.

Semplici sistemi batch

I primi processori erano molto costosi, e dunque era importante massimizzarne l’utilizzo.

A questo scopo vennero sviluppati dei semplici sistemi operativi batch. Con tali sistemi,

chiamati anche l’utente non ha piu accesso diretto al processore, ma sottopone

monitor,

il job su schede o su un nastro a un operatore, il quale organizza una sequenza di job e pone

l’intero lotto su un dispositivo di input per l’uso tramite il monitor.

Sistemi batch multiprogrammati

Anche con la serializzazione automatica dei job fornita da un semplice sistema operativo

batch, il processore rimane molto spesso inattivo, essendo i dispositivi di I/O piu lenti.

Ora, quando un job impone un’attesa per l’I/O, il processore puo passare all’altro, chc

probabilmente

non c in attesa di I/O. Inoltre, potremmo espandere la memoria per contenere 3,4 o piu programmi

e passare dall’uno all’altro (Figura 8.5c). Cio e noto come multiprogrammazione, o multitasking. Si

tratta di un tema centrale dei moderni sistemi operativi.

Sistemi a condivisione di tempo

Con l’uso della multiprogrammazione, le elaborazioni batch possono essere abbastanza efficienti.

Oggi, i requisiti di elaborazione interattiva possono essere, e molte volte lo sono, soddisfatti dai

microcomputer dedicati. Tale opzione non era disponibile negli anni Sessanta, quando i calcolatori

erano grandi e costosi. Allora venne sviluppata la condivisione

[timesharing).

di tempo

La multiprogrammazione, che consente al processore di gestire piu job nello stesso

istante, puo anche essere usata per gestire job interattivi. In quest’ultimo caso, si parla di tecnica

a condivisionc di tempo, in quanto il tempo di processore viene ripartito tra piu utenti.

8.2 Schedulazione

Il fondamento della multiprogrammazione e la schedulazione. Di fatto esamineremo quattro

processo.

tipi di schedulazione, ma prima introduciamo il concetto di

Questo termine fu usato per la prima volta dai progettisti del sistema operativo Multics negli

job.

anni Sessanta. Si tratta in qualche modo di un termine piu generale rispetto a Tra

le molte definizioni possibili, ricordiamo:

♦ un programma in esecuzione

♦ lo “spirito animato” di un programma

♦ quell’entita alla quale viene assegnato un processore.

Schedulazione a lungo termine

(scheduler)

Lo schedulatore a lungo termine determina quali programmi siano disponibili

per l’elaborazione. Controlla, dunque, il grado di multiprogrammazione, cioe il numero

di processi in memoria. Ogni programma pronto per 1 elaborazione diventa un processo

e viene immesso in una coda dello schedulatore a breve termine

Schedulazione a medio termine

La schedulazione a medio termine fa parte delle funzioni di. Di solito, la decisione di caricare in

swap-in) (swap-out)

memoria ( un processo o di rimuoverlo prendera in considerazione i requisiti

di memoria.

Schedulazione a breve termine

Lo scheduler ad alto livello viene eseguito in modo relativamente poco frequente e decide

se ammettere o meno un nuovo processo, e quale. Lo scheduler a breve termine, noto

dispatcher

anche come , viene eseguito di frequente c determina quale sia il successivo job

da eseguire.

Stati del processo

Per comprendere il modo di operare dello scheduler a breve termine dobbiamo considerare

il concetto di stato del processo. Durante il tempo di vita di un processo, il suo stato

stato

cambiera un certo numero di volte. Si usa il termine in quanto denota 1 esistenza di

determinate informazioni che indicano lo stato in quell’istante. Come minimo, un processo

ha cinque possibili stati.

un programma viene accettato dallo scheduler ad alto livello ma non e ancora

♦ New:

pronto per Icsecuzione. Sara il sistema operativo a inizializzarc i processi, mettendoli

nello stato ready.

Ready:

♦ il processo e pronto per essere eseguito, e in attesa del processore.

il processo e in esecuzione.

♦ Running:

il processo e sospeso dall’esecuzione in attesa di alcune risorse di sistema,

♦ Waiting:

quali l’Ι/Ο. il processo c terminato c scompare dal sistema operativo.

♦ Halted: blocco di controllo

Ogni processo e descritto da un

del processo , che tipicamente contiene i seguenti dati.

♦ ciascun processo corrente presenta un identificatore univoco.

Identificatore:

♦ lo stato attuale del processo.

Stato:

♦ il livello di priorita.

Priorita: l’indirizzo della successiva istruzione da eseguire.

♦ Program counter: le locazioni iniziali e finali del processo nella memoria.

♦ Puntatori alla memoria:

i dati presenti nei registri del processore mentre il processo e in esecuzione

♦ Dati di contesto: includono richieste eccezionali di I/O, i dispositivi

♦ Informazioni di stato di I/O:

di I/O (ad esempio i drive di nastro) assegnati al processo, la lista di file assegnati al

processo e cosi via. possono includere la quantita di tempo di processore

♦ Informazioni amministrative:

utilizzata, i limiti temporali, i numeri di account e cosi via.

8.3 Gestione della memoria

In un sistema monoprogrammato, la memoria centrale e divisa in due parti: una per il sistema

operativo (monitor residente) e una per il programma in esecuzione. In un sistema

multiprogrammato, la porzione “utente” di memoria e suddivisa per ospitare piu processi.

Il compito di suddividerla viene eseguito dinamicamente dal sistema operativo, ed e noto

come gestione della memoria.

Swapping

Abbiamo discusso tre tipi di code: la coda a lungo termine per le richieste di nuovi processi, la coda

a breve termine dei processi pronti a usare il processore, c le varie code di I/O per i processi non

pronti. Ricordiamo chc la ragione di questo elaborato meccanismo risiede nel fatto che le attivita di

I/O sono molto lente e dunque il processore di un sistema monoprogrammato rimane inattivo per la

swapping.

maggior parte del tempo. Una soluzione e lo Abbiamo una coda a lungo termine

di richieste di processo, tipicamente memorizzate su disco, che vengono accettate una alla

volta non appena diventa disponibile dello spazio. I processi completati vengono rimossi

dalla memoria centrale. Ora si presentera la situazione in cui nessuno dei processi in memoria e

ready.

Partizione della memoria pairtizioni a

Lo schema piu semplice per la gestione della memoria disponibile e utilizzare

dimensione fissa . Si noti che la dimensione delle partizioni e fissa, ma non necessariamente

uguale per tutte. Quando un processo c portato in memoria, viene posto nella partizione piu piccola

partizioni a dimensione variabile.

in grado di contenerlo. Un approccio piu efficiente e l’uso di

Ai processi portati in memoria viene allocata esattamente la quantita di memoria richiesta. Una

tecnica per fronteggiare questo problema e la compattazione: Di tanto in tanto, il sistema operativo

trasla i processi in memoria

per collocare tutta la memoria libera in un unico blocco.

Paginazione

Sia le partizioni a dimensione fissa sia quelle a dimensione variabile utilizzano la memoria

in modo inefficiente. Si supponga, comunque, che la memoria sia suddivisa in piccoli

blocchi di uguale dimensione e che anche i processi siano divisi in parti della stessa dimensione.

(pages

Allora le porzioni di programma, dette ), potrebbero essere assegnate

pagine

ai blocchi di memoria, detti Dunque, lo spazio sprecato per ciascun processo

frame.

e al piu una frazione dell’ultima pagina.

Memoria virtuale

Paginazione a richiesta

Con l’uso della paginazione vengono a esistere sistemi multiprogrammati realmente efficienti.

Inoltre, la semplice strategia di suddividere un processo in pagine porta allo sviluppo di un altro

concetto importante: la memoria virtuale. Nella le pagine vengono

paginazione a richiesta,

caricate solo quando necessario, cioe a richiesta. Nella

le pagine vengono caricate solo quando necessario, cioe a richiesta. Dato

paginazione a richiesta,

che quando viene caricata una pagina occorre estromettere un’altra, puo capitare di dover

immediatamente ricaricare una pagina chc c stata appena scaricata. Una eccessiva reiterazione di

questo fenomeno conduce a una condizione nota come in cui il processore trascorre la

thrashing,

maggior parte del suo tempo scambiando pagine tra memoria e disco anziche eseguendo istruzioni.

Segmentazione segmentazione.

Un altro modo di suddividere la memoria indirizzabile e noto come Mentre

la paginazione risulta trasparente al programmatore, la segmentazione e solitamente visibile

al programmatore e costituisce un modo conveniente per organizzare i programmi e

1 dati, e per associare gli attributi di privilegio e protezione alle istruzioni e ai dati.

La segmentazione permette al programmatore di vedere la memoria come un insieme

di segmenti o spazi di indirizzamento multipli. I segmenti possono avere varie dimensioni,

addirittura dinamiche.

Questa organizzazione offre al programmatore i seguenti vantaggi.

1. Semplifica la gestione di strutture dati dinamiche.

2. Permette la modifica e la ricompilazione indipendente dei programmi, senza dover

ripetere il linking.

3. Si presta alla condivisione della memoria tra processi.

4. Favorisce la protezione: poiche un segmento puo contenere un insieme ben definito

di programmi o dati, il programmatore (o l’amministratore di sistema) puo assegnare

privilegi in modo opportuno.

8.4 Gestione della memoria

nel processore Pentium

Fin dall'introduzione dell’architettura a 32 bit, i microprocessori hanno sviluppato schemi

sofisticati di gestione della memoria, basati sull’esperienza nel campo dei sistemi piu

grandi. E in molti casi, le versioni dei microprocessori sono addirittura superiori. Poiche

tali schemi sono stati sviluppati dai produttori di microprocessori e possono essere sfruttati

da vari sistemi operativi, essi tendono a essere di uso generale. Un esempio rappresentativo

e dato dal Pentium II.

Spazio degli indirizzi

Il Pentium II include hardware perla segmentazione e per la paginazione. Entrambi i meccanismi

possono essere disabilitati, consentendo all’utente di scegliere tra quattro diverse

visioni della memoria. e l’indirizzo virtuale coincide con quello Fisico.

♦ Memoria non segmentata non paginata:

e la memoria viene vista come uno spazio di

♦ Memoria non segmentata paginata:

indirizzamento lineare paginato. la memoria è vista come una collezione di

♦ Memoria segmentata e non paginata:

spazi di indirizzamento logici la segmentazione definisce partizioni logiche di

♦ Memoria segmentata e paginata:

memoria ad accesso controllato, mentre la paginazione serve a gestire l’allocazione di memoria all’interno delle partizioni.

Capitolo 9

Aritmetica del calcolatore

Punti chiave

♦ L’aritmetica del calcolatore si occupa di rappresentare i numeri cd eseguire gli algoritmi

per le operazioni di base. Cio vale per l’aritmetica intera come per quella

a virgola mobile.

♦ I numeri in virgola mobile sono espressi come numeri moltiplicati

per una costante (la base) elevati a una potenza intera. L’aritmetica

in virgola mobile consente di rappresentare numeri molto grandi e numeri molto

piccoli.

♦ La maggior parte dei processori implementa lo standard IEEE 754 chc definisce

un formato a 32 bit e uno a 64.

9.1 L/unità aritmetico-logica

Questa unita e la parte del calcolatore che esegue effettivamente le operazioni aritmetiche

e logiche sui dati. Tutti gli altri clementi dei sistemi di elaborazione hanno lo scopo fondamentale

di portare i dati all’interno dell’ALU, affinché questa li elabori, e di restituire i

risultati in output. In un certo senso, quando consideriamo l’ALU abbiamo raggiunto il nucleo

o l’essenza del calcolatore.

L’ALU, al pari di tutti i componenti del calcolatore, e basata sull’uso di semplici dispositivi

digitali in grado di memorizzare cifre binarie c di eseguire semplici operazioni

booleane.

9.2 Rappresentazione degli interi

Nell'aritmetica binaria i numeri possono essere rappresentati usando esclusivamente le cifre

O c 1, il segno meno e la virgola.

Rappresentazione in modulo e segno

Esistono varie convenzioni per rappresentare i numeri interi, c tutte trattano il bit piu significativo

(solitamente quello piu a sinistra) come bit di segno. Sc il bit di segno è 1 il numero

e negativo, altrimenti e positivo o nullo. In una parola da bit, gli -1 bit piu a destra contengono il modulo del

n η

numero.

Rappresentazione in complemento a due

Anche in questo caso il bit piu significativo indica il segno, ma questa differisce dalla precedente nel modo di interpretare gli altri bit.

Capitolo 10

Linguaggi macchina:

caratteristiche e funzioni

Punti chiave

Φ Gli elementi essenziali delle istruzioni sono: il codice operativo (opcode), che

specifica l’operazione da eseguire; i riferimenti agli operandi sorgente c destinazione,

che specificano le locazioni di input e output per l’operazione; il riferimento

all’istruzione successiva, che solitamente e implicito.

Φ Gli opcode inquadrano l’operazione in una delle seguenti categorie generali: operazioni

aritmetiche e logiche; trasferimento dati tra registri, tra un registro e la memoria

o tra due locazioni di memoria; I/O; controllo.

♦ I riferimenti agli operandi specificano un registro o una locazione di memoria per

i dati dell’operando. Il dato puo essere un indirizzo, un numero, un carattere o un

dato logico.

♦ Una caratteristica comune nell’architettura dei processori è l’uso di uno stack,

che puo essere, o non essere, visibile al programmatore. Gli stack vengono usati

per gestire le chiamate di procedura. Le operazioni di base sugli stack sono PUSH,

POP e le operazioni sull’elemento in cima agli stack o su quelli immediatamente

sottostanti. Gli stack vengono generalmente implementati dagli indirizzi piu alti

verso i piu bassi.

♦ I processori indirizzabili al byte possono essere suddivisi in big-endian, littlc-endian

c bi-endian. Sc il byte piu significativo di un dato numerico a piu byte ha indirizzo

piu basso degli altri, allora si dice che il dato e memorizzato in stile big-endian.

Se si memorizza in stile little-endian, il byte piu significativo ha un indirizzo

numerico piu alto. I processori bi-endian possono gestire sia lordine big-endian

sia lordine littlc-endian.

10.1 Caratteristiche delle istruzioni macchina

Le operazioni del processore sono determinate dalle istruzioni che esegue, dette istruzioni

La collezione delle diverse istruzioni chc il processore puo eseguire viene detta

macchina. (instruction set) del processore.

linguaggio macchina

Elementi di un'istruzione macchina

Specifica l’operazione da eseguire.

♦ Codice operativo: (operation

L’operazione viene specificata tramite un codice, detto codice operativo

code) o piu semplicemente opcode.

♦ L’operazione puo coinvolgere uno o piu operandi

Riferimento all’operando sorgente:

sorgente, ossia gli operandi che rappresentano l’input dell’operazione.

♦ L’operazione puo produrre risultato.

Riferimento all’operando risultato: lui

Indica al processore dove prelevare la successiva

♦ Riferimento alla successiva istruzione:

istruzione ua volta completata l’esecuzione di quella corrente.

Rappresentazione delle istruzioni

All’interno del calcolatore, ogni istruzione e rappresentata da una sequenza di bit.

L’istruzione e divisa in campi, che corrispondono ai suoi elementi costitutivi.

Gli opcode vengono rappresentati tramite abbreviazioni, detti codice mnemonico,

che indicano l’operazione. Tra gli esempi piu comuni ricordiamo:

ADD Somma

SUB Sottrazione

possiamo classificare i tipi di istruzioni come segue.

Istruzioni aritmetiche e logiche

♦ Elaborazione:

Memorizzazione:

♦ Istruzioni sulla memoria

Istruzioni di I/O

♦ Trasferimento:

Istruzioni di verifica e di salto

♦ Controllo:

Numero di indirizzi

Uno dei modi tradizionali per descrivere l’architettura del processore e considerare il numero

di indirizzi contenuti nelle sue istruzioni.

10.2 Tipi degli operandi

Le istruzioni macchina operano sui dati. Le principali categorie generali di dati sono:

♦ Indirizzi

♦ Numeri

♦ Caratteri

♦ Dati logici

10.4 Tipi di operazione

Il numero di codici operativi varia largamente da macchina a macchina. Tuttavia, su tutte

le macchine si trovano gli stessi tipi generali di operazione. Un’utile e caratteristica classificazione

e la seguente.

♦ Trasferimento dati

♦ Aritmetica

♦ Logica

♦ Conversione

♦ I/O

♦ Sistema

♦ Trasferimento di controllo

Trasferimento dati

Il tipo piu fondamentale di istruzione macchina e l’istruzione di trasferimento dati. Essa

deve specificare piu cose. Primo, deve essere specificata la locazione degli operandi sorgente

e destinazione. Le locazioni possono essere in memoria, nei registri o in cima alla pila.

Secondo, deve essere indicata la lunghezza dei dati da trasferire. Terzo, cosi come per tutte le

istruzioni con operandi, deve essere specificato il modo di indirizzamento.

Aritmetica

La maggior parte delle macchine fornisce le operazioni di somma, sottrazione, moltiplicazione

e divisione.

Altre operazioni possibili sono le istruzioni a singolo operando. Citiamo alcuni

esempi. considera il valore assoluto dell’operando.

♦ Valore assoluto:

cambia il segno all’operando.

♦ Negazione: somma 1 all’operando.

♦ Incremento: sottrae dall’operando.

♦ Decremento: 1

Logica

La maggior parte delle macchine fornisce anche svariate operazioni per manipolare i bit

individuali di una parola o di un’altra unita indirizzabile, operazioni a volte dette bit twiddling

(letteralmente, giocherellare con i bit). Es se sono basate su operazioni booleane.

L’operazione di tratta i dati come interi con segno c non trasla il bit di segno.

shift aritmetico

Nello shift aritmetico a destra, il bit di segno viene replicato nella posizione alla propria

destra. Nello shift aritmetico a sinistra, viene eseguito uno shift logico a sinistra su tutti

i bit tranne quello di segno, che viene mantenuto. Queste operazioni rendono piu veloci

determinate operazioni aritmetiche.

Tramite lo i bit di una parola vengono traslati (a sinistra o a destra). A

shift logico

un estremita, un bit viene perso

Input/Output

Come abbiamo visto nel Capitolo 7, esistono svariati approcci che includono ΓΙ/Ο programmato,

1Ί/O memory mapped, il DMA e l’uso dei processori di I/O. Molte implementazioni

forniscono solo poche istruzioni di I/O, e le azioni specifiche vengono precisate

attraverso parametri, codici o comandi.

Sistema

Le istruzioni di sistema possono essere eseguite solo mentre il processore si trova in uno

stato privilegiato o sta eseguendo un programma residente in una speciale area di memoria.

Generalmente, l’uso di queste istruzioni e riservato al sistema operativo.

Trasferimento di controllo

Tutte le istruzioni finora trattate prevedono che la successiva istruzione da eseguire sia quella

immediatamente seguente in memoria, mentre molte istruzioni di un programma hanno

la funzione di far variare la sequenza di esecuzione delle istruzioni.

Esistono svariate ragioni che giustificano il trasferimento di controllo. Tra le piu importanti

ricordiamo le seguenti.

1. In pratica, c essenziale poter eseguire delle istruzioni piu di una volta e forse molte migliaia

di volte.

2. Praticamente tutti i programmi prendono delle decisioni. Vorremmo chc il calcolatore

facesse una cosa se si verifica una determinata condizione, e un’altra cosa in caso

contrario

3. Compilare correttamente un programma di dimensioni medie o grandi e un compito

eccessivamente difficile.

Le piu comuni operazioni di trasferimento di controllo (branch),

rilevabili nel linguaggio macchina: il il

salto condizionato salto incondizionato

(skip) {procedure cali).

c la chiamata di procedura

Capitolo 11

Linguaggi macchina:

modi di indirizzamento e formati

Punti chiave

♦ Nelle istruzioni, il riferimento a un operando contiene il valore effettivo (immediato)

Dell’operando o un riferimento al suo indirizzo. I linguaggi macchina adottano

una vasta gamma di modi di indirizzamento. Tra questi, l’indirizzamento diretto

(l’indirizzo dell’operando c nel campo indirizzo), indiretto (il campo

indirizzo punta a una locazione chc contiene l’indirizzo dell’operando), registro,

registro indiretto e altre forme di spiazzamento, nelle quali il contenuto di un registro

viene sommato a un indirizzo per produrre l’indirizzo dell’operando.

♦ La progettazione dei campi del formato delle istruzioni e un compito complesso,

che include considerazioni sulla lunghezza dell’istruzione (fissa o variabile), sul numero

di bit del codice operativo, al riferimento agli operandi e su come venga determinato

il modo di indirizzamento.

11.1 Indirizzamento

Sarebbe auspicabile poter referenziare un ampio intervallo di locazioni di memoria (fisica

o virtuale). Tutte le tecniche adottate per raggiungere questo obiettivo implicano dei compromessi

tra l’intervallo degli indirizzi e/o la flessibilita dell’indirizzamento da un lato, c il

numero di riferimenti alla memoria e/o la complessita del calcolo degli indirizzi dall’altro.

In questo paragrafo esaminiamo le piu comuni tecniche d’indirizzamento (Figura 11.1).

♦ Immediato

♦ Diretto

♦ Indiretto

♦ Registro

♦ Registro indiretto

♦ Spiazzamento

♦ Pila

In questo paragrafo useremo la seguente notazione:

A = contenuto di un campo indirizzo di un’istruzione

R = contenuto di un campo indirizzo di un’istruzione chc si riferisce a un registro

EA = indirizzo attuale (effettivo) della locazione che contiene l’operando referenziato

(X) = contenuto della cella di memoria X o del registro X

Indirizzamento immediato

Nella piu semplice forma d’indirizzamento, quella immediata, l’operando e esplicitamente

presente nell’istruzione:

OPERANDO = A

Questa modalita puo essere adottata per definire e usare costanti o valori iniziali delle variabili.

Indirizzamento diretto

Una forma molto semplice d’indirizzamento e quello diretto, in cui il campo indirizzo contiene

l’indirizzo effettivo dell’operando:

EA = A

Tale tecnica, comune nelle prime generazioni di calcolatori, ma desueta sulle architetture

odierne, richiede un solo riferimento in memoria e nessun calcolo particolare.

Indirizzamento indiretto

NcU’indirizzamento diretto, la lunghezza del campo indirizzo e solitamente minore della

lunghezza della parola, il chc limita !’intervallo di indirizzi. Una soluzione prevede chc il

campo indirizzo punti all’indirizzo di una parola in memoria, la quale a sua volta contiene

indirizzamento indiretto

l’intero indirizzo dell’operando. Questa tecnica e nota come :

EA = (A)

L’ovvio vantaggio di questo approccio c che parole di lunghezza N rendono disponibile uno

spazio d’indirizzamento di 2^N. Lo svantaggio e che l’esecuzione di tale istruzione richiede

due riferimenti alla memoria per prelevare l’operando: uno per estrarne l’indirizzo e l’altro

per ottenerne il valore.

Indirizzamento registro

L’indirizzamento registro e simile a quello diretto. La sola differenza e che il campo indirizzo

si riferisce a un registro anziche a un indirizzo di memoria centrale:

EA = R

Per chiarire, se il contenuto del campo indirizzo di registro in una istruzione e 5, allora l'indirizzo

desiderato e il registro RS c il valore dell’operando e contenuto in R5. Generalmente,

i campi indirizzo chc referenziano i registri hanno 3 ,4 o 5 bit.

Indirizzamento registro indiretto

Cosi come l’indirizzamento registro e analogo all’indirizzamento diretto, l’indirizzamento

registro indiretto e simile all’indirizzamento indiretto. Lc due modalita differiscono per

il fatto che il campo indirizzo si riferisce a una locazione di memoria o a un registro.

Pertanto, per l’indirizzamento registro indiretto,

EA=(R)

Vantaggi e limitazioni di questa tecnica sono fondamentalmente gli stessi dell’indirizzamento

indiretto.

Indirizzamento con spiazzamento

Un metodo molto potente d’indirizzamento combina le capacita dell’indirizzamento diretto

c quelle del registro indiretto. E noto con vari nomi, a seconda del contesto, ma il

meccanismo di base e lo stesso. Noi lo chiameremo indirizzamento con spiazzamento

displacement

(

addressing ):

EA = A + (R)

Tale tecnica richiede che l’istruzione abbia due campi indirizzo, e che almeno uno sia esplicito.

Indirizzamento relativo program counter

Ncll’indirizzamento relativo, il registro implicitamente referenziato c il

(PC). In altre parole, !’indirizzo dell'istruzione corrente viene sommato al campo indirizzo

per produrre TEA. Qui il campo indirizzo viene trattato come un numero in complemento

a due. Pertanto, l’indirizzo effettivo c uno spiazzamento relativo rispetto all’indirizzo

dell’istruzione.

Indirizzamento registro-base

L’interpretazione di questa tecnica e la seguente: il registro referenziato contiene un indirizzo

di memoria e il campo indirizzo contiene uno spiazzamento (solitamente un intero senza

segno) rispetto a tale indirizzo. Il riferimento al registro puo essere esplicito o implicito.

Indicizzazione

Nell’indicizzazione il campo indirizzo rappresenta un indirizzo di memoria centrale e il registro

referenziato contiene uno spiazzamento positivo da tale indirizzo. Si noti che questa

descrizione e l’opposto dell’interpretazione dell’indirizzamento base-registro.

Ovviamente, e ben piu che un punto di vista dell’utente.

Indirizzamento a pila

L’ultimo modo di indirizzamento che consideriamo e quello a pila.. Una pila è una sequenza lineare

di locazioni riservate di memoria. Associato alla pila troviamo un puntatore (contenuto nel registro

stack pointer)

SP, il cui valore e l’indirizzo della cima della pila.

11.3 Formati delle istruzioni

Il formato di un’istruzione definisce la disposizione dei suoi bit, in termini delle sue parti

costituenti e deve includere un codice operativo e, in modo implicito o esplicito, zero o piu

operandi. Ogni operando esplicito viene referenziato utilizzando uno dei modi di indirizzamento

descritti

Lunghezza delle istruzioni

Il problema fondamentale e la lunghezza delle istruzioni. Questa decisione condiziona, ed

e a sua volta condizionata dalla dimensione c dall’organizzazione della memoria, dalla

struttura del bus, dalla complessita del processore e dalla sua velocita.

Il compromesso piu ovvio e tra il desiderio di un repertorio di istruzioni potente e la

necessita di risparmiare spazio. Oltre a questo compromesso di base, vanno fatte altre considerazioni. La

lunghezza

delle istruzioni dovrebbe essere uguale alla larghezza del bus di memoria o luna dovrebbe

essere un multiplo dell’altra. Una caratteristica apparentemente scontata, ma per questo non meno

importante, e

che la lunghezza delle istruzioni dovrebbe essere un multiplo della lunghezza di un carattere,

che solitamente e di 8 bit, e della lunghezza di un numero in virgola fissa.

Allocazione dei bit

Abbiamo finora considerato alcuni dei fattori guida per la scelta della lunghezza delle

istruzioni. Un problema ugualmente difficile e come allocare i bit in tale formato. In questo

caso, i compromessi sono complicati. Per una data lunghezza delle istruzioni, chiaramente si cerca

un compromesso tra il

numero di codici operativi e la capacita di indirizzamento. Piu codici operativi significano

ovviamente piu bit nel campo del codice operativo. Cio, a parita di lunghezza, riduce

il numero di bit disponibili per l’indirizzamento.

un indirizzamento meno potente.

1 seguenti fattori correlati determinano l’uso dei bit di indirizzamento.

♦ Numero di modi di indirizzamento: talvolta un modo di indirizzamento puo essere

indicato implicitamente.

♦ Numero di operandi: abbiamo visto che un minor numero di indirizzi puo portare

a programmi piu lunghi e meno

♦ Registri/memoria: una macchina deve avere dei registri, in modo che i dati possano

essere ospitati nel processore per l’elaborazione.

♦ Numero di banchi di registri: la maggior parte delle odierne macchine dispone di

{registerfile)

un banco di registri che, generalmente, contiene 32 o piu registri. Questi

possono essere usati per memorizzare i dati o gli indirizzi nel caso di indirizzamento

con spiazzamento

♦ Intervallo di indirizzi: per gli indirizzi chc referenziano la memoria, l’intervallo di

indirizzi referenziabili e correlato al numero di bit dell’indirizzo. Poiche questo impone

una severa limitazione, l’indirizzamento diretto e adottato raramente.

♦ Granularita degli indirizzi: quando gli indirizzi referenziano la memoria anziche i

registri, un altro fattore da considerare e la granularita dell’indirizzamento.

Capitolo 12

Struttura e funzione del processore

Punti chiave

♦ I processori includono sia registri utilizzabili direttamente dall'utente sia registri

di controllo e di stato. I primi possono essere generici o avere ruoli speciali. I registri

di controllo e di stato sono utilizzati per controllare le operazioni del processore.

Un ovvio esempio e dato dal program counter. Un altro e la parola di stato

[program status word),

del programma, PSW che contiene bit di stato e di condizione.

Tra questi, i bit che registrano il risultato del l’operazione aritmetica piu recente,

i bit che abilitano gli interrupt e un indicatore che segnala se il processore

st trova in modo supervisore o utente.

♦ I processori fanno uso del pipelining per velocizzare l’esecuzione. In sostanza, il pipelining

implica la scomposizione del ciclo di istruzione in stadi separati che hanno

luogo in sequenza, quali il fetch dell’iscruzione, la sua decodifica, il calcolo degli

indirizzi degli operandi, il prelievo degli operandi, l’esecuzione vera e propria

dell’istruzione e la scrittura dell’operando risultato. Le istruzioni si muovono attraverso

questi stadi, come in una catena di montaggio, cosicche in principio ogni

stadio puo lavorare contemporaneamente su una diversa istruzione. La progettazione

e l’uso delle pipeline viene complicata dai salti condizionati c da dipendenze

tra istruzioni.

12.1 Organizzazione del processore

Per capire l’organizzazione del processore consideriamo i requisiti dei compiti chc questo

deve svolgere. il processore legge un’istruzione dalla memoria.

♦ Prelevare istruzioni: l’istruzione viene decodificata per determinare l’azione

♦ Interpretare istruzioni:

richiesta. l’esecuzione di un’istruzione puo richiedere la lettura dei dati dalla

♦ Prelevare dati:

memoria o da un modulo di I/O.

l’esecuzione di un’istruzione puo richiedere di effettuare alcune operazioni

♦ Elaborare dati:

aritmetiche o logiche sui dati.

i risultati dell’esecuzione possono richiedere la scrittura di dati in memoria

♦ Scrivere dati:

o in un modulo di I/O.

12.2 Organizzazione dei registri

I sistemi di elaborazione adottano una gerarchia di memoria.

Ai livelli piu alti, la memoria e piu veloce, piu piccola e piu costosa. All’interno del processore

ce un insieme di registri che funzionano come livello di memoria superiore alla memoria

centrale e alla cache nella gerarchia. I registri del processore svolgono due ruoli.

consentono al programmatore di minimizzare i riferimenti alla memoria

♦ Registri utente:

centrale ottimizzando l’uso dei registri.

sono usati dall'unita di controllo per monitorare le

♦ Registri di controllo e di stato:

operazioni del processore e dai programmi del sistema operativo per controllare l’esecuzione

dei programmi.

Registri utente

I registri utente possono essere referenziati per mezzo del linguaggio macchina che il processore

esegue. Possiamo suddividere tali registri nelle seguenti categorie:

♦ generici

♦ dati

♦ indirizzi

♦ codici di condizione.

I dovrebbero essere usati per contenere dati e non per il calcolo dell’indirizzo

registri dati

degli operandi. I possono essere di uso generale oppure dedicati

registri indirizzo

a una specifica modalita di indirizzamento. Un’ultima categoria di registri, che e quanto meno

parzialmente visibile all’utente, flag.

contiene i detti anche Si tratta di bit impostati dal processore

codici di condizione,

a seguito del risultato delle operazioni svolte.

Registri di controllo e di stato

Vari registri del processore vengono utilizzati per controllare le operazioni del processore

stesso. In genere questi registri non sono visibili all’utente. Alcuni possono essere utilizzati

dalle istruzioni macchina eseguite in modalita controllo o in modalita sistema operativo.

Per l’esecuzione delle istruzioni, sono essenziali quattro registri.

: contiene l’indirizzo della prossima istruzione da eseguire.

♦ Program counter (PC) : contiene l’ultima istruzione prelevata.

♦ Instruction register (IR) : contiene l’indirizzo di una locazione in memoria.

♦ Memory address register (MAR)

: contiene un dato da scrivere nella memoria o proveniente

♦ Memory buffer register (MBR)

da questa.

Molti processori includono uno o piu registri chc costituiscono la cosiddetta PSW

(program status word) flag

in cui sono mantenute le informazioni di stato. Tra i campi e i

piu comuni di questa parola, ricordiamo i seguenti.

contiene il bit di segno del risultato dell’ultima operazione aritmetica.

♦ Segno:

♦ Zero: posto a 1 quando il risultato e nullo.

♦ posto a 1 quando una somma (sottrazione) genera un riporto (prestito).

Riporto: posto a 1 se il risultato di un confronto logico e l’uguaglianza.

♦ Uguale: usato per indicare il traboccamento.

♦ Overflow: usato per abilitare o disabilitare gli interrupt.

♦ Abilitazione/disabilitazione interrupt:

indica se il processore e in modalita supervisore o utente. Determinate

♦ Supervisore:

istruzioni privilegiate possono essere eseguite solo in modalita supervisore, e si puo

accedere a certe aree di memoria solo in modalita supervisore.

12.3 Ciclo esecutivo delle istruzioni

Richiamando rapidamente i concetti, un ciclo esecutivo include le seguenti fasi.


ACQUISTATO

2 volte

PAGINE

50

PESO

521.61 KB

PUBBLICATO

6 mesi fa


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria informatica e dell'automazione
SSD:
A.A.: 2018-2019

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher luckylucianooo di informazioni apprese con la frequenza delle lezioni di calcolatori elettronici e reti di calcolatori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico delle Marche - Univpm o del prof Mancini Adriano.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Calcolatori elettronici e reti di calcolatori

Riassunto calcolatori elettronici e reti di calcolatori 2
Appunto
TAR, Tecnologie per l'Automazione e la Robotica
Appunto
appunti lezione
Appunto
Appunti acustica ed illuminotecnica
Appunto