Che materia stai cercando?

Anteprima

ESTRATTO DOCUMENTO

Architettura degli elaboratori Maria Loreta La Barbera

7 Funzioni tabulate

o

Logica del chip

Per le memorie a semiconduttore, uno dei problemi salienti di progettazione è il numero di bit che

possono essere letti/scritti simultaneamente. A un estremo troviamo un’organizzazione nella quale

la disposizione delle celle nella matrice è la stessa della disposizione logica delle parole in

memoria. La matrice è organizzata con W parole di B bit ciascuna. La matrice di memoria è

organizzata come quattro matrici quadrate di 2048x2048 elementi. Gli elementi della matrice sono

connessi per linee orizzontali e verticali. Ogni linea orizzontale si collega al terminale Select delle

celle nella proprio riga; ogni linea verticale si collega al terminale Data-in/Sense delle celle nella

propria colonna.

Confezionamento del chip

EPROM a 8 Mbit. Ha 32 contatti che supportano le seguenti linee segnale:

L’indirizzo della parola a cui accedere.

o I dati da leggere, che consistono di 8 linee

o L’alimentazione

o Un contatto di terra

o Un contatto chip enable

o Una linea di servizio che fornisce tensione durante la scrittura

o

Il contatto no connect ha la sola funzione di pareggiare il numero dei contatti.

Memoria interleaved

La memoria principale è composta da un insieme di chip di memoria DRAM. I chip possono essere

raggruppati per formare un banco di memoria. E’ possibile organizzare i banchi di memoria in un

modo conosciuto come memoria interleaved (interfacciata). Ogni banco è in grado di servire

richieste di lettura o scrittura. In tal modo un sistema con k banchi di memoria può servire k

richieste simultanee, permettendo così di aumentare le prestazioni in lettura e scrittura di un fattore

k.

Correzione degli errori

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

hw ed errori sw. Un guasto hw è 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 sw è un evento casuale e

non distruttivo che altera i contenuti di una o più celle, senza danneggiare fisicamente la memoria.

Possono essere causati da problemi di alimentazione o da particelle α. Quando si memorizzano i

dati si esegue un calcolo per produrre un codice. Il codice è memorizzato insieme ai dati. Se si

devono memorizzare M bit di dati e il codice è lungo K bit, allora la dimensione effettiva della

parola memorizzata è M+K bit. Quando si deve leggere una parola, il codice viene impiegato per

rilevare e correggere gli errori. Si esegue il confronto: nessun errore; viene rilevato un errore ed è

possibile correggerlo; viene rilevato un errore, ma non è possibile correggerlo. I codici che operano

in questa maniera sono detti codici a correzione d’errore. Il più semplice è il Codice di Hamming,

che corregge i bit errati con dei bit di parità. I circuiti di confronto ricevono in ingresso due stringhe

di K bit. Il confronto bit a bit viene effettuato eseguendo l’OR esclusivo dei due ingressi. Il risultato

Architettura degli elaboratori Maria Loreta La Barbera

8

viene chiamato parola sindrome. Così, ogni bit della sindrome vale 0 o 1 a seconda che i

corrispondenti bit dei due ingressi siano uguali oppure no. La sindrome è ambia K bit e il suo

k

valore varia tra 0 e 2 -1. Poiché un errore può coinvolgere ciascuno degli M bit di dati e ciascuno

. Questa disuguaglianza fornisce il numero

k

dei K bit di controllo, dobbiamo avere 2 - 1 ≥ M + K

di bit richiesti per correggere l’errore di un singolo bit in una parola di M bit.

Se la sindrome contiene tutti 0, non è stato rilevato alcun errore.

o Se la sindrome contiene un unico bit pari a 1, allora si è avuto un errore in uno

o dei bit di controllo. Non è richiesta alcuna correzione.

Se la sindrome contiene più di un bit pari a 1, allora il valore numerico della

o sindrome indica la posizione del bit dati errato. Per correggerlo, basta

complementare il bit.

Solitamente le memorie sono dotate di un codice di correzione di singolo errore e

rilevazione di doppio errore. CAPITOLO 6: Memoria Esterna

Disco magnetico

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

magnetizzabile. Sono stati recentemente introdotti substrati di vetro ce presentano molti vantaggi:

• Maggior uniformità della pellicola magnetica superficiale, con conseguente miglioramento

dell’affidabilità del disco

• Significativa riduzione dei difetti complessivi della superficie con conseguente diminuzione

degli errori di lettura-scrittura

• Minor distanza tra testina e supporto

• Maggior rigidità

• 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. Il meccanismo di scrittura è basato sul processo per cui l’elettricità che fluisce

attraverso una bobina produce un campo magnetico. Gli odierni sistemi a disco rigido usano un

meccanismo di lettura che richiede una testina di lettura distinta che è comodo posizionare vicino

alla testina di scrittura. La testina di lettura comprende un sensore magnetoresistivo parzialmente

schermato.

Organizzazione e formattazione dei dati

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

disco rotante. Ciò 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. Tracce

adiacenti sono separate da spazi – gaps. Ciò previene gli errori dovuti al disallineamento della

testina. Il trasferimento dati avviene per settori, sono separati da spazi. Le informazioni possono

essere lette alla stessa velocità facendo ruotare il disco a velocità angolare costante. Il vantaggio è

che i singoli blocchi di dati possono essere direttamente indirizzati per traccia e settore. Per contro,

Architettura degli elaboratori Maria Loreta La Barbera

9

la quantità di dati immagazzinabili sulle lunghe tracce esterne deve essere la stessa di quella delle

piccole tracce interne. Poiché la densità cresce spostandosi dalla traccia più esterna a quella più

interna, la capacità di memorizzazione dei semplici dischi a velocità angolare costante è limitata

dalla massima densità ottenibile sulla traccia più interna. Per incrementare la densità, i moderni

sistemi a disco fisso utilizzano una tecnica nota come registrazione a più zone – multiple zone

recording.

Caratteristiche fisiche

La testina può essere fissa o mobile, rispetto alla direzione radiale del piatto. Nei dischi a testina

fissa si trova una testina di lettura-scrittura per ciascuna traccia. Le testine sono montate su un

braccio rigido che si estende attraverso tutte le tracce; attualmente questi sistemi sono rari. Nei

dischi a testina mobile, troviamo un’unica testina di lettura-scrittura, montata su un braccio. Dato

che la testina deve essere in grado di raggiungere qualsiasi traccia, il braccio può estendersi o

ritirarsi. Il disco non rimovibile rimane permanentemente montato nel proprio telaio, al contrario i

dischi rimovibili possono essere asportati e sostituiti con altri dischi. Quando la patina

magnetizzabile è applicata a entrambe le facce del piatto i dischi sono detti a doppia faccia,

altrimenti sono a faccia singola. Nei modelli che hanno più piatti impilati verticalmente a distanza di

qualche cm, sono presenti più bracci. Tutte le testine sono meccanicamente fissate in modo che si

trovino alla stessa distanza dal centro del disco e si muovono contemporaneamente. L’insieme di

tutte le tracce nella stessa posizione relativa sul piattello viene detto cilindro – cylinder. Più vicina

al disco è la testina, più grande è il rischio d’errore per impurità o imperfezioni. Per migliorare la

tecnologia, venne sviluppato il disco Winchester. Le testine del Winchester vengono utilizzate negli

assemblaggi di dischi ermeticamente sigillati che sono praticamente privi di contaminanti. Esse

operano più vicino alla superficie del disco rispetto alle testine convenzionali, consentendo così

una maggiore densità dei dati. La testina è una foglia – foil – aerodinamica che si appoggia

leggermente sulla superficie del piattello quando il disco è fermo. La pressione d’aria generata da

un disco in rotazione è sufficiente per allontanare la foglia dalla superficie.

Parametri delle prestazioni del disco

Il disco in funzione ruota a velocità costante. Per leggere o scrivere, la testina deve trovarsi sulla

traccia desiderata e all’inizio del settore desiderato. Nei sistemi a testina mobile la selezione della

traccia implica il movimento della testina e negli altri la selezione elettronica di una testina. Sui

sistemi a testina mobile, il tempo richiesto per posizionare la testina sulla traccia è noto come

tempo di posizionamento – seek time. In entrambi casi, una volta che la traccia è stata

selezionata, il controllore del disco attende finché il settore appropriato ruota per allinearsi con la

testina. Il tempo richiesto affinché l’inizio del settore raggiunga la testina è noto come ritardo, o

latenza rotazionale – rotational delay. La somma del tempo di posizionamento e del ritardo

rotazionale equivale al tempo di accesso – access time. Una volta che la testina è in posizione,

l’operazione di lettura o scrittura viene eseguita quando il settore si muove sotto la testina; si tratta

della porzione dell’operazione dedicata al trasferimento dei dati: la sua durata è detta tempo di

trasferimento – transfer time.

Tempo di posizionamento  è il tempo richiesto per far giungere il braccio del disco alla traccia

richiesta. Due componenti chiave: il tempo di inizializzazione e il tempo per attraversare le tracce

che devono essere superate una volta che il braccio di accesso ha preso velocità. Il tempo di

attraversamento non è una funzione lineare del numero di tracce, ma include un proprio tempo di

inizializzazione e di assestamento.

Ritardo rotazionale  I dischi odierni ruotano a velocità che vanno dal 3600 ai 20000 giri al minuto.

A questa velocità si ha una rotazione ogni 3 ms. Dunque, in media, il ritardo rotazionale sarà di 1,5

ms.

Architettura degli elaboratori Maria Loreta La Barbera

10

Tempo di trasferimento  Il t.d.t. verso o da un disco dipende dalla velocità di rotazione del disco,

espressa con: T = b/(rN). Dove T è il tempo di trasferimento, b i byte da trasferire, N i byte per

traccia, r velocità di rotazione.

RAID – Redundant Array of Independent Disk

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

gerarchica, ma designano differenti architettura progettuali che condividono tre caratteristiche

comuni.

1. RAID è un insieme di dischi fisici visti dal sistema operativo come una singola unità

2. I dati sono distribuiti su dischi dell’insieme

3. La capacità ridondante viene utilizzata per memorizzare informazioni di parità, che

garantiscono il recupero dei dati in caso di guasto.

I dettagli della 2° e 3° caratteristica variano da livello a livello. RAID 0 non supporta la 3°

caratteristica. La strategia RAID sostituisce i sistemi a grande capacità e distribuisce i dati per

consentire l’accesso simultaneo a più dischi, migliorando quindi le prestazioni di I/O e consentendo

incrementi di capacità.

RAID livello 0

Il RAID livello 0 non è un vero componente della famiglia RAID, in quando non include la

ridondanza per migliorare le prestazioni. Per il RAID 0, i dati dell’utente e di sistema sono distribuiti

su tutti i dischi dell’array. Ciò presenta un netto vantaggio: nel caso di due richieste di I/O rivolte a

due differenti blocchi di dati, esiste un’alta probabilità che i dati richiesti si trovino su dischi

differenti. Dunque, le due richieste possono essere trattate in parallelo. I dati vengono suddivisi a

strisce – striped – su tutti i dischi disponibili. Le strisce sono distribuite a rotazione – round robin –

sui membri dell’array.

Alte velocità di trasferimento dati  Le prestazioni dei sistemi RAID dipendono in modo critico dalla

struttura delle richieste e dalla disposizione dei dati. Questi argomenti possono essere trattati in

modo più chiaro nel RAID 0, ove l’impatto della ridondanza non interferisce con l’analisi. Per il

trasferimento dati ad alta velocità sono richiesti due requisiti: 1- alta capacità di trasferimento lungo

l’intero percorso tra la memoria e i singoli dischi; 2- l’applicazione deve trattare le richieste di I/O in

modo efficiente.

Alti tassi di richiesta di I/O  Per una singola richiesta di I/O su una piccola quantità di dati, il tempo

di I/O è principalmente determinato dal movimento delle testine del disco e dal movimento del

disco. Negli ambienti transazionali possono esserci centinaia di richieste di I/O al secondo. Un

array di dischi può fornire alte velocità d’esecuzione dell’I/O bilanciando il carico su più dischi. Un

efficace bilanciamento del carico si può ottenere solo in presenza di richieste multiple in sospeso.

RAID Livello 1

In RAID 1 la ridondanza viene ottenuta semplicemente duplicando tutti i dati. Si usa lo striping dei

dati, ma ogni striscia logica viene mappata su due diversi dischi. Aspetti positivi:

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

richiesti, che 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 può essere eseguita in parallelo. Le prestazioni in scrittura sono dettate

dalla più lenta delle due scritture. Non c’è penalità di scrittura.

Architettura degli elaboratori Maria Loreta La Barbera

11

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

disponibili sull’altro.

Il principale svantaggio del RAID 1 risiede nei costi, se non altro perché richiede spazio doppio per

la memorizzazione. Le configurazioni RAID 1 sono generalmente utilizzate per sw di sistema e per

dati e file altamente critici. Il RAID 1 fornisce un backup in tempo reale dei dati e, in caso di guasto

di un disco, i dati sono immediatamente disponibili.

RAID Livello 2

Tecnica di accesso parallelo. Tutti i dischi di un array ad accesso parallelo partecipano

all’esecuzione delle richieste di I/O. Ovviamente, tutti gli alberi sono sincronizzati in modo che la

testina di ciascun disco si trovi nella stessa posizione su ogni disco in ogni dato momento. Si

adotta lo striping dei dati. Le strisce sono molto piccole, spesso quanto un singolo byte o una

singola parola. Viene calcolato un codice a correzione di errore sui corrispondenti bit di ogni disco

dati, e i bit del codice sono memorizzati nelle corrispondenti posizioni di bit su più dischi di parità.

Solitamente, si adotta un codice di Hamming, in grado di correggere errori su un bit e rilevare errori

doppi. RAID 2 richiede meno dischi di R1, ma rimane dispendioso. Esso si rivelerebbe efficace in

un ambiente in cui si verificano molti errori di disco. Data l’alta affidabilità dei dischi, non viene

implementato.

RAID Livello 3

Organizzato come R2, ma richiede un solo disco ridondante, indipendentemente dal numero di

dischi dell’array e utilizza l’accesso parallelo, con i dati distribuiti in piccole strisce. Invece di un

codice a correzione d’errore, si calcola un bit di parità per l’insieme di bit nella stessa posizione su

tutti i dischi dei dati.

RAID Livello 4

In questi array i dischi operano in modo indipendente, cosicché richieste di I/O separate possano

essere soddisfatte contemporaneamente. I dischi ad accesso indipendente sono più adatti alle

applicazioni che richiedono alti ritmi di richiesta di I/O e sono relativamente meno adatte per le

applicazioni che richiedono alti tassi di trasferimento dati. Si adotta lo striping dei dati. Le strisce

sono relativamente grandi. RAID 4 utilizza una striscia di parità bit a bit sulle corrispondenti strisce

di ciascun disco dati, e i bit di parità sono memorizzati nella corrispondente striscia sul disco di

parità. RAID 4 risulta penalizzato dalle richieste di scrittura di piccola dimensione. Per effettuare

una scrittura, il sw di gestione deve aggiornare non solo i dati utente ma anche i corrispondenti bit

di parità.

RAID Livello 5

Organizzato in modo simile a R4, si differenzia da questo in quanto distribuisce le strisce di parità

su tutti i dischi. Un tipico schema di allocazione è il round robin. Per un sistema a n dischi, la

striscia di parità si trova su un disco diverso per le prime n strisce, e poi lo schema si ripete.

RAID Livello 6

Nello schema R6 si effettuano due distinti calcoli della parità che sono memorizzati in blocchi

separati su dischi differenti. Così, un sistema R6 i cui dati utente richiedono N dischi consiste di N

+ 2 dischi. Il vantaggio di R6 consiste nell’altissima disponibilità dei dati. Per provocare la perdita

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

Architettura degli elaboratori Maria Loreta La Barbera

12

Memorie ottiche

Compact disk

CD audio e CD-ROM. Il supporto fisico dei due dischi è formato da una resina (policarbonato) e le

informazioni registrate digitalmente sono stampate come una serie di microscopici pozzetti (pit)

sulla superficie di policarbonato. Questo avviene creando un disco master tramite un laser ad alta

intensità con una fine messa a fuoco. La superficie picchiettata viene poi ricoperta con una

superficie altamente riflettente, solitamente di alluminio o oro. I dati su un CD-ROM sono

organizzati come una sequenza di blocchi. CD registrabile  dischi preparati in modo da poter

essere riscritti una volta mediante un raggio laser di modesta intensità. CD riscrivibili  dischi che

possono essere scritti e sovrascritti. Il disco a cambiamento di fase utilizza un materiale che

presenta diverse caratteristiche di riflessione nelle due fasi: uno stato amorfo, nel quale le

molecole hanno una disposizione casuale che riflette poco la luce, e uno stato cristallino, nel quale

il supporto ha una superficie liscia molto riflettente. Un raggio laser può cambiare la fase del

materiale. Il principale svantaggio è che, a lungo andare, il materiale perde permanentemente le

sue proprietà.

DVD

La maggiore capacità dei DVD rispetto ai CD è dovuta a tre differenze:

1. I bit sono impacchettati più fittamente

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

3. Il DVD-ROM può essere a doppio lato, mentre i dati su un cd sono registrati solo su un lato.

Dischi ottici HD

Grazie a un laser con una lunghezza d’onda più corta, nella gamma blu-viola è stato possibile

raggiungere una densità di bit molto più elevata. I pit di dati, che costituiscono gli 1 e gli 0 digitali,

sono più piccoli nei dischi ottici ad HD che nei DVD, in conseguenza della diversa lunghezza

d’onda del laser. Il Blu-ray posiziona lo strato di dati sul disco molto più vicino al laser, permettendo

così una messa a fuoco più definita e una minore distorsione, e quindi anche pit e tracce più

piccoli.

Nastri magnetici

I dati sono strutturati in tracce parallele longitudinali. I primi sistemi usavano generalmente 9

tracce. Questo rendeva possibile memorizzare un byte alla volta, con un bit addizionale di parità

come nona traccia. Questo tipo di registrazione è detta parallela. La maggior parte dei sistemi

moderni usa invece la cosiddetta registrazione seriale, nella quale i dati sono disposti come una

sequenza di bit lungo ciascuna traccia, così come avviene nei dischi magnetici. Analogamente al

disco, i dati vengono letti e scritti in blocchi contigui, detti record fisici. I blocchi sul nastro sono

separati da spazi detti inter-record gap. La tecnica tipica di registrazione adottata nei nastri seriali è

detta registrazione a serpentina. I nastri sono dei dispositivi ad accesso sequenziale. Il disco,

invece, è un dispositivo ad accesso diretto: non deve leggere in sequenza tutti i settori per

raggiungere quello desiderato. CAPITOLO 7: Input/Output

• Esiste una gran varietà di periferiche con diversi metodi di operare.

• La velocità di trasferimento dati delle periferiche è generalmente di gran lunga inferiore

rispetto a quella della memoria o del processore.

Architettura degli elaboratori Maria Loreta La Barbera

13

• La mancata corrispondenza tra tassi di trasferimento, se non gestita correttamente,

sarebbe causa di inefficienza.

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

calcolatore al quale sono connesse.

La presenza di un modulo di I/O 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 più dispositivi periferici tramite connessioni su misura.

Dispositivi esterni

I dispositivi esterni si connettono al calcolatore tramite i moduli di I/O. Tali collegamenti sono usati

per lo scambio di controllo, stato e dati tra i moduli e i dispositivi. Questi sono spesso detti

dispositivi periferici – peripheral device – o periferiche. I dispositivi possono essere classificati in

tre categorie:

• dispositivi decifrabili dall’uomo

• dispositivi decifrabili dalla macchina

• dispositivi di comunicazione

L’interfaccia verso il modulo di I/O ha forma di segnali di controllo, di dati e di stato. I segnali di

controllo determinano la funzione che il dispositivo eseguirà, come inviare dati al modulo di I/O,

acquisire dati dal modulo di I/O, riportare lo stato o eseguire alcune particolari funzioni di controllo

del dispositivo. I dati sono insiemi di bit da scambiare con un modulo di I/O. I segnali di stato

indicano lo stato del dispositivo. La logica di controllo del dispositivo controlla la sue operazioni su

comando del modulo. Il trasduttore converte i dati dalla forma elettrica ad altre forme d’energia

durante l’output e viceversa durante l’input.

Tastiera/Monitor

Per L’input da tastiera, il rilascio di un tasto da parte dell’utente genera un segnale elettrico che

viene interpretato dal trasduttore nella tastiera e tradotto nel corrispondente codice IRA. In output, i

caratteri del codice vengono trasmessi a un dispositivo esterno da un modulo di I/O. Il trasduttore

presso il dispositivo interpreta tale codice e invia i segnali elettrici richiesti al dispositivo di output

per mostrare il carattere in questione o per eseguire la funzione di controllo richiesta. Il monitor

mostra i dati forniti dal calcolatore.

Drive del disco

Il controllore – drive – del disco contiene i circuiti che gestiscono lo scambio di dati, segnali di

controllo e di stato con il modulo di I/O e i circuiti che controllano il meccanismo di lettura-scrittura.

In un sistema a testine fisse, il trasduttore è in grado di effettuare la conversione tra lo stato

magnetico della superficie del disco e i bit nel buffer del dispositivo. Un disco a testina mobile deve

anche essere in grado di muovere il braccio in senso radiale sulla superficie del disco.

Moduli di I/O

Funzioni dei moduli

• Controllo e temporizzazione.

Architettura degli elaboratori Maria Loreta La Barbera

14 Per coordinare il flusso del traffico tra le risorse interne e i dispositivi esterni

• Comunicazione con il processore.

Implica i seguenti punti:

1. Decodifica del comando

2. Dati

3. Resoconto dello stato

4. Riconoscimento dell’indirizzo

• Comunicazione con i dispositivi.

Comandi, informazioni di stato e dati.

• Buffering dei dati.

Il modulo I/O deve essere in grado di operare sia alla velocità del dispositivo sia alla

velocità della memoria. Se il dispositivo di I/O opera a una velocità più alta rispetto alla

velocità della memorizza, allora il modulo di I/O esegue l’operazione di buffering richiesta.

• Rilevazione degli errori.

Il moduli di I/O sono responsabili del rilevamento degli errori e del conseguente resoconto

al processore. Una classe di errori include i malfunzionamenti meccanici ed elettrici.

Struttura dei moduli di I/O

Il modulo deve anche essere in grado di riconoscere e generare gli indirizzi dei dispositivi che

controlla. Ciascun modulo di I/O ha il proprio indirizzo oppure, se controlla più di un dispositivo

esterno, un insieme di indirizzi. Il modulo di I/O contiene l’interfaccia con ciascun dispositivo

controllato. Un modulo di I/O opera per consentire al processore di vedere un vasto campo di

dispositivi in maniera semplice o può fornire un ampio spettro di funzioni: può nascondere i dettagli

di temporizzazione, i formati e gli aspetti elettromeccanici dei dispositivi esterni per consentire al

processore di emettere semplici comandi di lettura e scrittura e, al limite, di apertura o chiusura dei

file. I moduli di I/O che si occupano della maggior parte dei carico di elaborazione, presentando

un’interfaccia di alto livello al processore, sono solitamente detti canali di I/O (I/O channel) o

processori di I/O (I/O processor). I moduli elementari che richiedono un controllo dettagliato sono

invece detti controllori di I/O (I/O controller) o controllori del dispositivo (device controller). I

controllori di I/O sono solitamente presenti sui microcomputer, mentre i canali di I/O sono

generalmente adottati nei mainframe.

I/O da programma

Tre tecniche:

• I/O da programma: i dati vengono scambiati tra processore e modulo di I/O. Il processore

esegue un programma che gli attribuisce il controllo diretto per l’operazione di I/O.

• l/O interrupt driven (cioè guidato dagli interrupt): il processore 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.

In queste due tecniche, il processore è responsabile del prelievo dei dati dalla memoria centrale.

L’alternativa è nota come accesso diretto alla memoria o semplicemente DMA (direct memory

access). In questo caso, il modulo di I/O e la memoria centrale scambiano i dati direttamente,

senza il coinvolgimento di processore.

Architettura degli elaboratori Maria Loreta La Barbera

15

Comandi 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, questi comandi

sono costruiti su misura per ogni particolare tipo di periferica.

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

processore vorrà conoscere se una certa periferica sia accesa e disponibile per l’uso,

oppure se la più recente operazione di I/O sia stata completata o se siano avvenuti degli

errori.

• Lettura: provoca l’ottenimento di dati dalla periferica da parte del modulo e la loro scrittura

in un buffer. Il processore può poi ottenere i dati imponendo al modulo di I/O di scriverli sul

bus dati.

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

I dati vengono letti una parola alla volta. Per ogni lettura, il processore resta in uno stato di attesa

che termina soltanto quando la parola è stata scritta nel registro dati del modulo di I/O. Questa

tecnica presenta lo svantaggio di essere lenta e di tenere occupato il processore.

Istruzioni di I/O

Quando processore, memoria centrale e I/O condividono un bus comune, ci sono due modalità di

indirizzamento: memory mapped e separato. Nell’l/O memory mapped, non c’è distinzione tra lo

spazio degli indirizzi delle locazioni di memoria e dei dispositivi di I/O. Nell’I/O separato gli indirizzi

di memoria sono distinti da quelli di I/O. Con l’I/O separato, le porte di I/O sono accessibili solo

tramite speciali comandi di I/O che attivano le linee di comando di I/O del bus. Nel caso di I/O

separato, ci possono essere solo poche istruzioni di I/O. Dunque, un vantaggio dell’I/O memory

mapped consiste nel poter utilizzare questo vasto repertorio di istruzioni, consentendo una

programmazione più efficiente. Uno svantaggio consiste invece nel maggior utilizzo di prezioso

spazio d’indirizzamento in memoria.

I/O interrupt driven

Il problema dell’I/O da programma è 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 è 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 è pronto allo scambio di dati. Il processore esegue poi il

trasferimento dei dati e quindi riprende l’elaborazione interrotta.

Dal punto di vista del processore, per l’input il processore invia un comando READ e poi prosegue

facendo qualcos’altro. Al completamento di ogni istruzione, il processore controlla l’eventuale

presenza di interrupt. Quando rileva un interrupt inviato dal modulo di I/O, il processore salva il

contesto esecutivo (program counter e registri) del programma corrente ed elabora l’interrupt. In

questo caso, il processore legge i dati provenienti dal modulo di I/O e li scrive in memoria. Poi il

processore ripristina il contesto esecutivo e riprende l’esecuzione interrotta.

Elaborazione degli interrupt

L’occorrenza di un interrupt scatena un certo numero di eventi, sia nell’hw del processore sia nel

sw. 1. Il dispositivo invia un interrupt al processore.

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

Architettura degli elaboratori Maria Loreta La Barbera

16

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. Per iniziare, deve

salvare le informazioni che saranno necessarie per riprendere l’esecuzione del programma

corrente dal punto in cui è sopraggiunto l’interrupt. Informazioni minime richieste sono: (a)

lo stato del processore, contenuto in un registro chiamato Program Status Word (PSW) e

(b) la locazione della prossima istruzione da eseguire, contenuta nel program counter (PC).

Queste informazioni possono essere poste in cima alla pila di sistema.

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

dell’interrupt considerato. A seconda del l'architettura del calcolatore e della progettazione

del sistema operativo, ci può essere un singolo programma, un programma per ciascun tipo

di interrupt o un programma per ciascun dispositivo e ciascun tipo di interrupt. Se è

presente più di una routine di gestione dell’interrupt, il processore deve determinare quale

invocare. Questa informazione può essere inclusa nel segnale di interrupt, oppure il

processore può dover inviare una richiesta al dispositivo che ha sollevato l’interrupt per

ottenere una risposta contenente le informazioni richieste.

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

Comunque, esistono ulteriori informazioni considerate parte dello ‘‘stato” di un programma

in esecuzione. In particolare è necessario conservare anche il contenuto dei registri del

processore in quanto potrebbero essere utilizzati (e quindi modificati) dalla routine di

interrupt.

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. Esso può anche comportare l’invio di

ulteriori comandi o segnali di riconoscimento al dispositivo di I/O.

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

recuperati dalla pila e riportati nei registri.

9. L’atto finale è il ripristino dei valori di PSW e PC a partire dalla pila. Come risultato, la

successiva istruzione eseguita sarà quella del programma precedentemente interrotto.

Canali e processori di I/O

Evoluzioni delle funzioni di I/O

Passi evolutivi:

1. La CPU controlla direttamente un dispositivo periferico. Questo avviene nei semplici

dispositivi controllati dal microprocessore.

2. Si aggiunge un controllore o un modulo di I/O. La CPU utilizza I/O da programma, senza

interrupt. Con questo passo la CPU diventa in qualche modo indipendente dai dettagli delle

interfacce dei dispositivi esterni.

3. Si adotta la configurazione precedente, ma si introducono gli interrupt. La CPU non deve

più sprecare tempo in attesa dell’esecuzione delle operazioni di I/O, a tutto vantaggio

dell’efficienza.

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

spostare blocchi di dati da o verso la memoria senza coinvolgere la CPU, se non all’inizio e

alla fine del trasferimento.

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

dispone di proprie istruzioni macchina specializzate. La CPU spinge il processore di I/O

all’esecuzione di un programma registrato nella memoria centrale. Il processore di I/O

esegue tali istruzioni senza l’intervento della CPU che può, quindi, specificare una

sequenza di attività di I/O ed essere interrotta solo quando l’intera sequenza è stata

eseguita.

Architettura degli elaboratori Maria Loreta La Barbera

17

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

Adottando tale architettura, si possono controllare molti dispositivi di I/O con il minimo

coinvolgimento della CPU.

Procedendo lungo tale percorso evolutivo, un numero sempre maggiore di funzioni di I/O sono

eseguite senza il coinvolgimento della CPU. Introduzione del concetto di modulo di I/O in grado di

eseguire un programma. Al passo 5, il modulo di I/O viene frequentemente detto canale di I/O (I/O

channel), mentre nel passo 6 si usa molte volte la locuzione processore di I/O (I/O processor).

Comunque, le definizioni vengono occasionalmente applicate a entrambe le situazioni.

Caratteristiche dei canali di I/O

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

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

selettore controlla più dispositivi ad alta velocità attraverso uno dei quali procede, di volta in volta,

al trasferimento dati. Dunque, il canale di I/O seleziona un dispositivo ed effettua il trasferimento

dati. Ogni dispositivo, o ciascun piccolo insieme di dispositivi, è gestito da un controllore, o modulo

di I/O. Dunque, il canale di I/O opera invece della CPU nella gestione di questi controllori di I/O. Un

canale multiplo (multiplexor channel) può gestire contemporaneamente l’I/O di più dispositivi. Per

dispositivi ad alta velocità, un multiplexor di blocchi interfaccia blocchi di dati provenienti da diversi

dispositivi. CAPITOLO 10: Linguaggi macchina: caratteristiche e funzioni

Caratteristiche delle istruzioni macchina

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

macchina. La collezione delle diverse istruzioni che il processore può eseguire viene detta

linguaggio macchina (instruction set) del processore.

Elementi di un’istruzione macchina

Codice operativo: Specifica l’operazione da eseguire. L’operazione viene specificata

o tramite un codice, detto codice operativo (operation code) o più semplicemente

opcode.

Riferimento all’operando sorgente: L’operazione può coinvolgere uno o più operandi

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

Riferimento all’operando risultato: L’operazione può produrre un risultato.

o Riferimento alla successiva istruzione: Indica al processore dove prelevare la

o successiva istruzione una volta completata l’esecuzione di quella corrente.

Gli operandi sorgente e risultato si possono trovare in una delle seguenti quattro aree.

Memoria centrale o virtuale: Così come il riferimento all’istruzione successiva, deve essere

o fornito l’indirizzo alla memoria centrale o virtuale.

Registri del processore: Con rare eccezioni, il processore contiene uno o più registri cui le

o istruzioni macchina si possono riferire. Se esiste solo un registro, il riferimento può essere

implicito. Altrimenti, a ciascuno di questi viene assegnato un numero, e l’istruzione deve

contenere il numero del registro desiderato.

Immediato: Il valore dell’operando si trova in un campo dell’istruzione in esecuzione.

o Dispositivi di I/O: l’istruzione deve specificare il modulo e il dispositivo di I/O per

o l’operazione. Se viene usato l’I/O memory mapped, si tratta semplicemente di un indirizzo

di memoria.

Tipi di istruzione

Architettura degli elaboratori Maria Loreta La Barbera

18

• Elaborazione: istruzioni aritmetiche e logiche

• Memorizzazione: istruzioni sulla memoria

• Trasferimento: istruzioni di I/O

• Controllo: Istruzioni di verifica e di salto

Numero di indirizzi

Tutte le operazioni logiche e aritmetiche sono unarie (un operando) o binarie (due operandi).

Quindi, per referenziare gli operandi saranno richiesti al massimo due indirizzi. Il risultato di

un’operazione deve essere memorizzato, il che suggerisce l’adozione di un terzo indirizzo. Infine,

dopo il completamento di un’istruzione, deve essere prelevata quella successiva, e per questo

occorre conoscerne l’indirizzo. Questa linea di ragionamento suggerisce che un’istruzione

potrebbe anche contenere quattro riferimenti di indirizzo: due per gli operandi sorgente, uno per il

risultato e uno per l’istruzione successiva.

Y = (A - B) / [(C + D X E)] Con tre indirizzi, ogni istruzione specifica due locazioni per gli operandi e

una locazione per il risultato. Poiché non si vuole alterare il valore delle locazioni degli operandi,

viene usata una cella temporanea, T, per memorizzare i risultati intermedi. Si noti la presenza di

quattro istruzioni e che l’espressione originaria aveva cinque operandi. I formati a tre indirizzi non

sono comuni, in quanto richiedono un elevato numero di bit per contenere i tre riferimenti. Nelle

istruzioni a due indirizzi, e per le operazioni binarie, un indirizzo può svolgere un duplice compito:

come operando e come risultato.

Pertanto, l’istruzione SUB Y, B esegue il calcolo Y -B e memorizza il risultato in Y. Il formato a due

indirizzi riduce i requisiti di spazio, ma introduce un problema. Per evitare di alterare il valore di un

operando, viene impiegata un’istruzione MOVE per spostare uno dei valori nella locazione

temporanea o in quella del risultato prima di eseguire l’operazione. Ancora più semplice e

l’istruzione a un indirizzo. Affinché questo funzioni, deve essere implicito un secondo indirizzo.

Questo era comune nei primi calcolatori, in cui l’indirizzo implicito era un registro del processore

detto accumulatore (AC), che conteneva uno degli operandi ed era anche utilizzato per

memorizzare il risultato. Alcune istruzioni non utilizzano indirizzi. Queste istruzioni sono applicabili

a una particolare organizzazione della memoria, detta stack o pila. Una pila è un insieme di

locazioni organizzate con logica LIFO (last-in-first-out). La pila è implementata in una zona di

memoria e, frequentemente, i due elementi più in alto si trovano nei registri del processore. Quindi,

le istruzioni a zero indirizzi si riferirebbero ai due elementi più in alto. Il numero di indirizzi per

istruzione e una decisione progettuale di base. Meno indirizzi per istruzione ci sono, più elementari

sono le istruzioni e più semplice può essere il processore. Esiste un’importante soglia tra le

istruzioni a un indirizzo e quelle a più indirizzi. Per le prime, generalmente il programmatore

dispone solo di un registro generico, l’accumulatore. Per le seconde, è comune avere più registri

generici. Questo consente di eseguire determinate operazioni solo sui registri. Dato che i

riferimenti ai registri sono più veloci di quelli alla memoria, l’esecuzione risulta più veloce. Per

motivi di flessibilità e potendo usare più registri, la maggior parte delle attuali macchine adotta una

combinazione di istruzioni a due e a tre indirizzi.

Progettazione dell’insieme di istruzioni

L’insieme di istruzioni definisce la maggior parte delle funzioni eseguite dal processore e ha un

effetto significativo sulla sua implementazione. L’insieme di istruzioni è lo strumento con cui il

programmatore controlla il processore. I principali problemi:

• Repertorio: quante e quali operazioni fornire, e quanto complesse debbano essere.

• Tipi di dato: i vari tipi di dati sui quali vengono eseguite le operazioni.

• Formato: lunghezza in bit, numero di indirizzi, dimensione dei vari campi e così via.

• Registri: il numero di registri del processore referenziabili da parte delle istruzioni, e il loro

uso.

• Indirizzamento: il modo o i modi per specificare l’indirizzo degli operandi.

Architettura degli elaboratori Maria Loreta La Barbera

19

Tipi degli operandi

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

• Indirizzi

• Numeri  interi, in virgola mobile, decimali.

• Caratteri  IRA, ASCII

• Dati logici

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 è

la seguente:

• Trasferimento dati

• Aritmetica

• Logica

• Conversione

• I/O

• Sistema

• Trasferimento di controllo

1. Salto condizionato – branch

2. Salto incondizionato – skip

3. Chiamata di procedura – procedure call

Salto condizionato

Un’istruzione di salto presenta tra i suoi operandi l’indirizzo della successiva istruzione da

eseguire. Il più delle volte, si tratta di un’istruzione di salto condizionato. In altre parole, il salto

viene intrapreso (il program counter viene aggiornato all’indirizzo specificato nell’operando) solo se

si verifica una determinata condizione. In caso contrario, viene eseguita l’istruzione memorizzata

subito dopo (il program counter viene incrementato come di consueto). Un’istruzione di salto che

esegue sempre il salto viene detta istruzione di salto non condizionato.

Salto incondizionato

Questa istruzione, che include un indirizzo implicito, comporta lo scavalcamento di un’istruzione;

pertanto, l’indirizzo implicato è quello dell’istruzione successiva più la dimensione di un’istruzione.

Poiché l’istruzione di skip non richiede un campo per l’indirizzo destinazione, quei bit sono

disponibili per altri scopi. Un modo di sfruttarli è costituito dall’istruzione increment-and-skip-if-zero

(ISZ).

Chiamata di procedura

La più importante innovazione nello sviluppo dei linguaggi di programmazione è stata la procedura

(subroutine, sottoprogramma). Una procedura è un programma autonomo incorporato all’interno di

un programma più grande. In ciascun punto del programma la procedura può essere invocata, o

chiamata. Il processore viene istruito per andare a eseguire l’intera procedura e poi ritorna al punto

in cui si è verificata la chiamata. Le due ragioni principali per l’uso di procedure sono il risparmio e

la modularità. Una procedura permette di usare più volte la stessa porzione di codice. Ciò è

importante per il risparmio nello sforzo di programmazione e per rendere più efficiente l’uso della

memoria. Le procedure consentono anche di suddividere grandi compiti in unità più piccole. La

modularità facilita enormemente lo sforzo di programmazione. Il funzionamento delle procedure

prevede due istruzioni di base: una di chiamata che provoca il salto dalla locazione attuale alla

procedura, e una di ritorno che rimanda dalla procedura al punto della chiamata. Entrambe sono

istruzioni di salto. Vale la pena sottolineare alcuni punti.

1. Una procedura può essere chiamata a partire da più indirizzi.

Architettura degli elaboratori Maria Loreta La Barbera

20

2. Una chiamata a procedura può apparire all’interno di una procedura. Ciò consente

l’annidamento (nesting) illimitato di procedure.

3. A ogni chiamata corrisponde un’istruzione di ritorno nel programma chiamato.

Poiché ci piacerebbe poter chiamare una procedura da più punti, il processore deve aver modo di

salvare l’indirizzo di ritorno affinché questo avvenga correttamente. Esistono tre luoghi usuali per la

memorizzazione dell'indirizzo di ritorno:

• Un registro

• L’inizio della procedura chiamata

• La cima della pila.

CAPITOLO 11: Linguaggi macchina: modi di indirizzamento e formati

Indirizzamento

Le più comuni tecniche d’indirizzamento:

• Immediato

• Diretto

• Indiretto

• Registro

• Registro indiretto

• Spiazzamento

• Pila

Indirizzamento immediato

Nella più semplice forma d’indirizzamento, quella immediata, l’operando è esplicitamente presente

nell’istruzione: OPERANDO = A. Questa modalità può essere adottata per definire e usare costanti

o valori iniziali delle variabili. Generalmente, il valore sarà memorizzato in complemento a due.

Quando l’operando viene caricato in un registro dati, il bit di segno viene esteso verso sinistra. In

alcuni casi il valore binario immediato viene interpretato come intero non negativo senza segno. Il

vantaggio dell'indirizzamento immediato è che per ottenere l’operando non è necessario alcun

riferimento alla memoria oltre al prelievo dell’istruzione, risparmiando così un ciclo di memoria. Lo

svantaggio è che il valore dell’indirizzo è limitato dalla dimensione del campo indirizzo che, in molti

linguaggi macchina, è piccolo rispetto alla lunghezza della parola.

Indirizzamento diretto

Una forma molto semplice d’indirizzamento è 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. L’ovvia limitazione è che fornisce uno spazio d’indirizzamento limitato.

Indirizzamento indiretto

Nell’indirizzamento diretto, la lunghezza del campo indirizzo è solitamente minore della lunghezza

della parola, il che limita l’intervallo di indirizzi. Una soluzione prevede che il campo indirizzo punti

all’indirizzo di una parola in memoria, la quale a sua volta contiene l’intero indirizzo dell’operando.

Questa tecnica è nota come indirizzamento indiretto: EA = (A). L’ovvio vantaggio di questo N

approccio c che parole di lunghezza N rendono disponibile uno spazio d’indirizzamento di 2 . Lo

svantaggio è 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. Sebbene il numero di parole

N

ora indirizzabili sia 2 , il numero di differenti indirizzi effettivi che possono essere referenziati in un

k

dato istante è limitato a 2 , dove K rappresenta la lunghezza del campo indirizzo.

Indirizzamento registro


ACQUISTATO

2 volte

PAGINE

32

PESO

71.40 KB

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea in informatica (ASCOLI PICENO, CAMERINO)
SSD:
Università: Camerino - Unicam
A.A.: 2015-2016

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher PrInCeSs Of MuSiC di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Camerino - Unicam o del prof De Angelis Francesco.

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 Corso di laurea in informatica (ascoli piceno, camerino)

SIAE - appunti seminario
Appunto
DOC Tesina di fine corso: Commercio elettronico e il trattamento dei dati personali
Appunto
Ricerca operativa - problema del trasporto
Esercitazione
User Interface - Personal Report
Appunto