+ All Categories
Home > Documents > Università degli Studi di Camerino - Diploma di Laurea in...

Università degli Studi di Camerino - Diploma di Laurea in...

Date post: 18-Feb-2019
Category:
Upload: buitram
View: 221 times
Download: 0 times
Share this document with a friend
47
Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli Elaboratori Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 36 2) ARCHITETTURA AL LIVELLO MV2 (linguaggio macchina) Nell'analisi di un'architettura di un calcolatore al livello MV2, occorrerà conoscere: DEFINIZIONE DEI TIPI DEI DATI E COME RIFERIRSI AD ESSI DEFINIZIONE DEL SET DI ISTRUZIONI E DELL'ORGANIZZAZIONE DEI REGISTRI DEFINIZIONE DELL'ORGANIZZAZIONE DELLA MEMORIA Prima di affrontare i tre punti precedenti per ogni singolo processore, possiamo stabilire le seguenti os- servazioni comuni: 1) REGISTRI Rappresentano lo stato del processore. In generale sono dispositivi a 2^n stati, dove n indica la larghezza della parola. Forniscono un supporto di rappresentazione per la maggior parte dei tipi di dati supportati dalla macchina. Le modalità di impiego dei registri, distinguono due classi di macchine: AD ACCUMULATORE, dove esistono registri specializzati per compiere particolari operazioni. A REGISTRI GENERALI, dove tutti i registri sono equivalenti. 2) MEMORIA è un insieme di p dispositivi a 2^n stati, dove p indica la capacità della memoria espressa in PAROLE e n è la larghezza della PAROLA. La memoria fornisce soltanto un SUPPORTO di rappresentazione dei vari tipi di dati anche se, dal set di istruzioni del processore, potrebbe apparire che le operazioni avvengano direttamente in memoria. Come caso limite, possiamo distinguere le architetture "MEMORIA-MEMORIA", dove i registri della macchina so- no completamente trasparenti al programmatore e tutte le istruzioni fanno riferimento esclusivamente a lo- cazioni di memoria. La memoria, così come i REGISTRI sono dei dispositivi ad ACCESSO CASUALE, ovvero strutturati in modo tale che l'accesso ad una determinata informazione è indipendente dalla collocazione fisica della stessa. 3) ISTRUZIONI In generale possiamo identificare un'istruzione come un ordine ovvero una stringa di bit, ciascuno dei quali assume un significato ben preciso. La semantica delle istruzioni, non può essere considerata omogenea, ma occorre individuare dei sottoinsieme di istruzioni aventi la stessa semantica. Per individuare questi sot- toinsiemi, dovremo far riferimento al formato di ISTRUZIONE, che normalmente non è fisso. Per uscire dal marasma discusso precedentemente, dobbiamo riuscire a trattare il formato di una istruzione in modo da identificare la parte fissa, in base alla quale poter identificare la sottoclasse semantica di riferimento. Per questo, utilizziamo il seguente FORMATO GENERALE: <CODICE OPERATIVO><MODIFICATORI><OPERANDI> dove - CODICE OPERATIVO è quella parte di lunghezza fissa individuabile in una posizione ben precisa della stringa di bit. Questo, non rappresenta il codice dell'istruzione, bensì la sottoclasse omogenea. - MODIFICATORI Sono dei bit aggiuntivi che rendono sostanzialmente variabile il codice dell'istruzione vera e propria. I mo- dificatori determinano essenzialmente la lunghezza in byte ed in tempo dell'istruzione completa. Se co- struiamo una tabella nella quale, indichiamo nelle righe i diversi CODICI OPERATIVI e nelle colonne i MO- DIFICATORI, riusciamo ad ottenere una visione sintetica del set di istruzioni del processore. Il grado di riempimento di questa tabella, ci dà il grado di "ORTOGONALITÀ" del set di istruzioni, caratteristica, que- st'ultima, essenziale per i programmatori in linguaggio macchina. Ovviamente potremo trovarci di fronte an- che ad "ISTRUZIONI FANTASMA" ovvero ad istruzioni possibili, in quanto la tabella ce lo consente, ma non
Transcript
Page 1: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 36

2) ARCHITETTURA AL LIVELLO MV2 (linguaggio macchina)

Nell'analisi di un'architettura di un calcolatore al livello MV2, occorrerà conoscere:

• DEFINIZIONE DEI TIPI DEI DATI E COME RIFERIRSI AD ESSI • DEFINIZIONE DEL SET DI ISTRUZIONI E DELL'ORGANIZZAZIONE DEI REGISTRI • DEFINIZIONE DELL'ORGANIZZAZIONE DELLA MEMORIA

Prima di affrontare i tre punti precedenti per ogni singolo processore, possiamo stabilire le seguenti os-servazioni comuni:

1) REGISTRI Rappresentano lo stato del processore. In generale sono dispositivi a 2^n stati, dove n indica la larghezzadella parola. Forniscono un supporto di rappresentazione per la maggior parte dei tipi di dati supportati dalla macchina. Le modalità di impiego dei registri, distinguono due classi di macchine:

• AD ACCUMULATORE, dove esistono registri specializzati per compiere particolari operazioni.• A REGISTRI GENERALI, dove tutti i registri sono equivalenti.

2) MEMORIA è un insieme di p dispositivi a 2^n stati, dove p indica la capacità della memoria espressa in PAROLE e nè la larghezza della PAROLA. La memoria fornisce soltanto un SUPPORTO di rappresentazione dei vari tipi di dati anche se, dal set diistruzioni del processore, potrebbe apparire che le operazioni avvengano direttamente in memoria. Comecaso limite, possiamo distinguere le architetture "MEMORIA-MEMORIA", dove i registri della macchina so-no completamente trasparenti al programmatore e tutte le istruzioni fanno riferimento esclusivamente a lo-cazioni di memoria. La memoria, così come i REGISTRI sono dei dispositivi ad ACCESSO CASUALE, ovvero strutturati inmodo tale che l'accesso ad una determinata informazione è indipendente dalla collocazione fisica dellastessa.

3) ISTRUZIONI In generale possiamo identificare un'istruzione come un ordine ovvero una stringa di bit, ciascuno dei qualiassume un significato ben preciso. La semantica delle istruzioni, non può essere considerata omogenea,ma occorre individuare dei sottoinsieme di istruzioni aventi la stessa semantica. Per individuare questi sot-toinsiemi, dovremo far riferimento al formato di ISTRUZIONE, che normalmente non è fisso. Per uscire dalmarasma discusso precedentemente, dobbiamo riuscire a trattare il formato di una istruzione in modo daidentificare la parte fissa, in base alla quale poter identificare la sottoclasse semantica di riferimento. Perquesto, utilizziamo il seguente FORMATO GENERALE:

<CODICE OPERATIVO><MODIFICATORI><OPERANDI>

dove

- CODICE OPERATIVO è quella parte di lunghezza fissa individuabile in una posizione ben precisa della stringa di bit. Questo, nonrappresenta il codice dell'istruzione, bensì la sottoclasse omogenea.

- MODIFICATORI Sono dei bit aggiuntivi che rendono sostanzialmente variabile il codice dell'istruzione vera e propria. I mo-dificatori determinano essenzialmente la lunghezza in byte ed in tempo dell'istruzione completa. Se co-struiamo una tabella nella quale, indichiamo nelle righe i diversi CODICI OPERATIVI e nelle colonne i MO-DIFICATORI, riusciamo ad ottenere una visione sintetica del set di istruzioni del processore. Il grado diriempimento di questa tabella, ci dà il grado di "ORTOGONALITÀ" del set di istruzioni, caratteristica, que-st'ultima, essenziale per i programmatori in linguaggio macchina. Ovviamente potremo trovarci di fronte an-che ad "ISTRUZIONI FANTASMA" ovvero ad istruzioni possibili, in quanto la tabella ce lo consente, ma non

Page 2: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 37

dichiarate nel set di istruzioni. Molto spesso queste istruzioni sono effettivamente implementate nel proces-sore e la non presenza nel set sta ad indicare, probabilmente, che esse non sono garantite come funziona-lità o semplicemente che queste saranno previste nel prossimo modello del processore.

- OPERANDI In genere possiamo avere da 0,1,2 o 3 operandi, secondo la classificazione zero-operandi, monooperandi(monoadiche), bioperandi (diadiche) o trioperandi. Ogni operando può essere:- OPERANDO EFFETTIVO o IMMEDIATO In questo caso, l'informazione da elaborare è contenuta nella istruzione stessa (numeri, maschere, I/O ad-dress). Il programmatore, potrebbe essere tentato di usare queste costanti come variabili, in quanto ne co-nosce la collocazione all'interno della istruzione: in questo caso si compierà una modifica delle istruzionicodice che, se da una parte rende il programma più efficiente, dall'altra comporta seri problemi di instabilitàdel codice stesso, soprattutto in ambiente multiprogrammato.- INDIRIZZO L'informazione da elaborare è contenuta in una locazione di memoria referenziata, in qualche modo, dal-l'operando. Possiamo distinguere tre metodi fondamentali di INDIRIZZAMENTO:

a) INDIRIZZAMENTO INDIRETTO a livello N (N = 0,1,2,∝) Indicando con N il numero di accessi in memoria per determinare l'indirizzo dell'informazione da elaborare,abbiamo le seguenti possibilità;a0) N=0 INDIRIZZAMENTO DIRETTO o ASSOLUTO: l'informazione è contenuta nella locazione di memo-ria referenziata direttamente dall'operando:

OPERANDO ---->|INFORMAZIONE|

a1) N=1 INDIRIZZAMENTO INDIRETTO: l'informazione è contenuta nella locazione di memoria referen-ziata dalla locazione di memoria referenziata dall'operando.

OPERANDO ---> |INDIRIZZO| ---> |INFORMAZIONE|

a2) N=2 INDIRIZZAMENTO DIFFERITO: l'informazione è contenuta nella locazione di memoria referen-ziata dalla locazione di memoria referenziata dalla locazione di memoria referenziata dalla locazione dimemoria referenziata dall'operando.

OPERANDO --> |INDIRIZZO| --> |INDIRIZZO| --> |INFORMAZIONE|

a3) N=infinito INDIRIZZAMENTO INDIRETTO ARBITRARIO: ogni parola della macchina utilizza un parti-colare bit che indica se il riferimento è IMMEDIATO o indiretto: in questo modo è possibile definire qualsiasilivello di indirizzamento. Ad esempio, supponiamo di avere una parola da 16 bit in cui il bit 15 indichi 0 =immediato, 1 = indiretto:

8001 -->(0001)-> |80F0| -->(00F0)-> |F703| -->(7703)->|3456| Ind.effett. Ind.effett. Ind.eff. VALORE

N.B.: Se pensiamo ad un livello di indirezione N= -1, ritroviamo il caso dell'indirizzamento IMMEDIATO.

b) INDIRIZZAMENTO MODIFICATO L'indirizzo viene determinato sommandolo ad una BASE; tipicamente si usa il contenuto di un REGISTROINDICE.

c) INDIRIZZAMENTO RELATIVO L 'indirizzo viene determinato relativamente a qualche altro registro; tipicamente il riferimento è il Pro-gram Counter. Questo metodo viene utilizzato per scrivere codice rilocabile (JUMP indipendenti dalla posi-zione del programma in memoria) e per i salti "CORTI" ovvero dove lo "spiazzamento è di lunghezza infe-riore a quella del registro di riferimento.

I tre metodi fondamentali precedenti, possono essere combinati tra di loro per ottenere tutti i possibili altrimetodi elencati nel set di istruzioni dei processori. Bisogna fare bene attenzione a come questi metodi ven-

Page 3: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 38

gono combinati, in quanto ci sono pericoli di ambiguità. Ad esempio nell'indirizzamento indiretto modificato,bisogna sapere bene cosa bisogna sommare e a chi.

Per completezza, citiamo altri due metodi DERIVATI, frequentemente usati, che possono essere consideraticome casi particolari dei precedenti:

a) Indirizzamento mediante REGISTROb) Indirizzamento con AUTOINCREMENTO/AUTODECREMENTO

Page 4: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 39

2.1) ARCHITETTURA DEL uP Intel 8086

2.1.1) PROGRAMMING MODEL Va sotto questo termine, tutto ciò che, sinteticamente, deve conoscere il programmatore per poter lavora-re con la macchina. In pratica, esso è costituito dal pacchetto dei registri, e dalla "Processor Status Word".Per quanto riguarda lo 8086 abbiamo:

REGISTRI GENERALI: AX, BX, CX, DX a 16 bit, ai quali ci si può riferire in maniera alternativa come aduna coppia di registri da 8 byte: AX = AH-AL, BX=BH-BL, CX=CH-CL, DX=DH-DL (Esempio: se AX=37F8H,avremo AH=37H, AL=F8H).La definizione di "Registri Generali", non è propriamente corretta in quanto, come si può vedere, alcuneistruzioni operano solo sul registro AX, altre, utilizzano il registro CX come contatore, altre ancora (IMUL),prevedono una precisa disposizione dei valori nei registri. Questa caratteristiche ci autorizzano a considera-re questa come un'architettura ad ACCUMULATORE.

REGISTRI INDICI: SI, DI a 16 bit, rispettivamente indice sorgente e indice destinazione. Questi registrivengono utilizzati nelle "istruzioni stringa".

REGISTRI PUNTATORI: SP, BP, IP a 16 bit, rispettivamente Stack Pointer e Base Pointer, InstructionPointer. SP viene utilizzato implicitamente nelle istruzioni di PUSH, POP, CALL, RET,...BP, può essere utilizzato per degli stack ausiliari (passaggio argomenti tra funzioni). IP è il program counter,aggiornato automaticamente dal processore per puntare alla prossima istruzione.

REGISTRI DI SEGMENTO: DS, CS, SS, ES a 16 bit. Tramite questi registri speciali è possibile indirizzareeffettivamente fino ad 1 MB di memoria centrale, tramite la tecnica della SEGMENTAZIONE.Le associazioni di default per i registri segmento sono:

DS <-> SI ES <-> DI CS <-> IP SS <-> SP,BP

PROCESSOR STATUS WORD: F, a 16 bit, così organizzata:F00 = CF = Carry Flag, flag di riportoF01 = riservatoF02 = PF = Parity Flag, Flag di paritàF03 = riservatoF04 = AF = Aux Flag, flag di riporto ausiliario (op. BCD)F05 = riservatoF06 = ZF = Zero Flag, flag di zeroF07 = SF = Sign Flag, flag di segno negativoF08 = TF = Trace Flag, flag per esecuzione passo passoF09 = IF = Interrupt Flag, flag per abilitazione interruzioniF10 = DF = Direction Flag, flag di direzione per "istr. stringa"F11 = OF = Overflow Flag, flag di overflowF12 = riservatoF13 = riservatoF14 = riservatoF15 = riservato

Page 5: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 40

2.1.2) SEGMENTAZIONE DELLA MEMORIA La memoria è organizzata a BYTES, con possibilità di accedere direttamente alle WORD, anche ad alli-neamento dispari: in quest'ultimo caso, il processore dovrà effettuare due accessi consecutivi in memoria.Le word sono memorizzate secondo l'ordine byte basso - byte alto (formato INTEL). Tutti i registri dello '8086 sono a 16 bit: questo può far pensare, quindi, che la massima memoria indirizza-bile sia 64KB. In realtà, il processore dispone di un ADDRESS BUS da 20 linee e quindi la possibilità di indi-rizzare fino a 1MB di memoria fisica. Per formare l'indirizzo a 20 bit, il processore fa uso dei già citati RE-GISTRI DI SEGMENTO eseguendo il seguente calcolo:

indirizzo a 16 bit X X X X +indirizzo di segmento S S S S =

------------indirizzo a 20 bit R R R R R

L'uso di questo schema porta alle seguenti conclusioni:

a) Ogni registro segmento individua una locazione base di partenza multipla di 16 bytes (tick).

b) Lo spiazzamento, fornito da una parola a 16 bit, può coprire, al massimo, fino a 64KB locazioni di memo-ria.

c) è possibili riferirsi alla stessa locazione fisica della memoria in maniera molteplice (sovrapposizione deisegmenti). Esempio, la locazione fisica 547B3H può essere referenziata come 547B:0003, 547A:0013,5479:0023, 5478:0033, ..., 5001:47A3, 5000:47B3, 4FFF:47C3, 4FFE:47D3, ....., 447D:FFE3,447C:FFF3.

d) è necessario in programmazione stabilire a priori le dimensioni necessarie per il codice e per i dati delprogramma finale, in modo da impostare il MODELLO DI MEMORIA con il quale lavorare:• MODELLO TINY: tutti i registri segmento hanno lo stesso valore, codice, dati, stack non superano i

64KB e quindi tutti i riferimenti possono essere effettuati a 16 bit.• MODELLO SMALL: vengono impostati CS, DS, e SS, solo all'inizio dell'esecuzione del programma:

in questo modo, si può avere 64KB massimi per il codice, 64KB massimi per i dati e 64KB massimiper lo stack. Anche in questo caso tutti i riferimenti possono essere effettuati a 16 bit.

• MODELLO MEDIUM: Rimangono fissi DS e SS, mentre CS può variare durante l'esecuzione delprogramma. In questo caso, solo le chiamate a funzioni ed eventualmente i JUMP, dovranno esserea 32 bit (CALL FAR, JMP FAR, ..).

• MODELLO COMPACT: Rimane fisso CS, mentre DS e SS possono variare durante l'esecuzione. Iriferimenti ai dati saranno a 32 bit, mentre le chiamate a funzione e i jump saranno a 16 bit (NEAR).

• MODELLO LARGE: I registri di segmento possono variare durante l'esecuzione del programma. Tuttii riferimenti dovranno essere fatti a 32 bit, sia per i dati che per le istruzioni. In questo modello pos-siamo avere qualsiasi dimensione per codice e dati (entro il MB). Bisogna far attenzione alle"Istruzioni Stringa" che, comunque, non possono superare il limite di 64KB.

• MODELLO HUGE: Come il precedente, in cui, però non è possibile utilizzare le "istruzioni stringa" di-rettamente, in quanto si ha bisogno di strutture dati > 64KB. In questo caso, anche i contatori dovran-no a 32 bit (DOUBLE WORD).

La classificazione precedente è quella che normalmente viene imposta dai compilatori di linguaggi evoluti,ma deve essere comunque analizzata anche quando si lavora in assembler. I modelli TINY e SMALL per-mettono una esecuzione più veloce, mentre nei modelli MEDIUM e COMPACT si rallenta, rispettivamente,durante l'esecuzione e durante l'accesso ai dati. Nel modello large si ha rallentamento sia per l'esecuzione,sia per l'accesso ai dati. Il modello huge, infine, è quello che comporta maggior tempo di esecuzione inquanto non permette l'uso diretto delle "istruzioni stringa".

Page 6: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 41

2.1.3) SET DI ISTRUZIONI Il set non può essere considerato ORTOGONALE. Il formato delle operazioni DIADICHE prevede di specificare prima l'operando DESTINAZIONE, poi l'ope-rando SORGENTE. In generale le modalità di indirizzamento sono le seguenti:

IMMEDIATO MOV AX,34HDIRETTO MOV AX,WORD PTR[34H]INDIRETTO MOV AX,[BX] (solo tramite registro)MODIFICATO MOX AX,[BX+8] (base+spostamento)

MOV AX,[BX+SI+8] (base+indice+spostamento)

Si può accedere al singolo byte, utilizzando un registro a 8 bit.Nel modo MODIFICATO, sono permessi solo i registri BX, BP, SI, DI.Come registro segmento viene utilizzato di default DS quando si utilizzano BX, SI, DI e SS quando si utiliz-za BP.Per accedere a segmenti diversi, occorre specificare il prefisso di segmento in maniera esplicita (es.: MOVAX,ES:[BX]).Si può accedere ai registri segmento solo tramite indirizzamento a REGISTRO (es.: per caricare il registroES <- 0, occorre fare: MOV AX,0; MOV ES,AX).Possiamo classificare per tipologia il set di istruzioni dello 8086, in modo da raggruppare le varie problema-tiche che esse comportano.

2.1.3a) ISTRUZIONI DI TRASFERIMENTO DATI SEMPLICE

MOV (destinazione),(sorgente)

Entrambi gli operandi possono essere indirizzati secondo le modalità precedentemente indicate.

PUSH (sorgente)POP (destinazione)

Il secondo operando è implicito ed è SS:[SP]. Prima dell'operazione di PUSH, SP viene decrementatoautomaticamente di 2, mentre dopo una POP, viene incrementato di 2. In questo modo SP punta all'ultimaword inserita nello stack. L'operando di queste istruzioni deve essere sempre una WORD.É possibile salvare e ripristinare la PSW tramite le istruzioni a zero operandi PUSHF e POPF.Lo stack viene utilizzato automaticamente nell’esecuzione delle istruzioni CALL/RET e INT/IRET

XCHG (operando),registro

Permette di scambiare il contenuto di due operandi. Come limitazione si ha che il secondo operando deveessere necessariamente un registro.

XLAT

Permette di effettuare una TRASLAZIONE. Il registro BX viene fatto puntare ad una tabella di traslazione,il byte ad indirizzo [BX+AL] viene memorizzato il AL.

IN AX,(porta)OUT (porta),AX

Il processore ha una organizzazione PORT-ORIENTED per l'I/O. Questa organizzazione è alternativa alcaso di I/O "memory-mapped" e permette di sfruttare tutti gli indirizzi come memoria di lavoro. Le operazio-ni di I/O possono essere effettuate solo tramite registro AX (I/O a 16 bit) o AL (I/O a 8 bit). L'indirizzo dellaporta può essere specificato come IMMEDIATO se il suo valore non supera FFH, altrimenti occorre utilizza-re il registro DX per memorizzare l'indirizzo di porta. In pratica possiamo considerare le IN e OUT comeistruzioni a 0 operandi.

Page 7: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 42

2.1.3b) ISTRUZIONI DI MANIPOLAZIONE STRINGA Permettono di effettuare delle manipolazioni su una stringa di dati, tramite una singola istruzione a zerooperandi. Ovviamente occorrerà predisporre opportunamente i registri. Al codice mnemonico indicato sottooccorrerà aggiungere il suffisso W se si opera su una stringa di WORD, il suffisso B se opera su una stringadi BYTE.Tutte le operazioni su stringa utilizzano i registri indici SI, come puntatore alla stringa sorgente e DI comepuntatore alla stringa destinazione; i registri di segmento associati sono rispettivamente DS e ES. è possi-bile specificare un diverso registro segmento solo per l'operando sorgente.Normalmente le operazioni su stringa vengono fatte precedere dal codice di ripetizione "REP" che fa sì chel'istruzione che segue venga ripetuta CX volte. Il codice di ripetizione può essere condizionale (REPZ,REPNZ) per permettono di interrompere il ciclo qualora sia violata la condizione di PERMANENZA (ZF=1,ZF=0).

MOVS

Copia un byte (o una word) da DS:SI a ES:DI, dopo l'operazione, SI e DI verranno incrementati o decre-mentati di 1 ( o di 2) a seconda del valore della DF in PWS. Ad esempio, per copiare 100 bytes dalla loca-zione 9027:0341 alla locazione 35F2:1423, una volta caricati i registri: DS=9027, ES=35F2, SI=0341,DI=1423, CX=0064, DF=0, basterà scrivere l'istruzione: REP MOVSB.

CMPS

Confronta la stringa sorgente con la stringa destinazione aggiornano, per ogni confronto su byte (o suword) le flag. Si utilizza questa istruzione con il prefisso condizionale. Esempio:

REPE CMPSB confronta byte a byte la stringa a DS:SI con quella a ES:SI per CX bytes interrom-pendo la ripetizione quando viene trovato disuguaglianza

REPNE CMPSW confronta word a word la stringa a DS:SI con quella a ES:SI per CX words inter-rompendo la ripetizione quando viene trovata uguaglianza.

SCAS

Scandisce la stringa a ES:DI confrontando ogni byte (word) con il contenuto di AL (AX) e aggiornando, perogni confronto le flags. Ad esempio, per ricercare la lettera 'B' sulla stringa a ES:DI, lunga CX bytes, basteràfare: MOV AL,42H ; REPNE SCASB; al termine dell'istruzione avremo o ZF=1 e ES:DI che punta al caratte-re 'B' della stringa ES:DI, oppure ZF=0 che indica il fatto che la stringa ES:DI non contiene il carattere 'B'.

LODSSTOS

Permettono rispettivamente la lettura da DS:SI e la scrittura su ES:DI di CX bytes (words). Il registro AL(AX) contiene il byte (la word) letto o da scrivere.

Esempio 1:MOV AX,2020H; Inizializza la stringa a ES:DI con 100MOV CX,32H ; blanks. Da notare che utilizzando STOSWREP STOSW ; invece di STOSB, si guadagna il doppio in velocità.

Esempio 2:MOV AL,20H ; Scorre la stringa a DS:SI, per CX bytesREPE LODSB ; fino a che non viene trovato un carattere diverso da blank

Page 8: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 43

2.1.3c) ISTRUZIONI ARITMETICHE

Sono le istruzioni da usare per realizzare calcoli matematici. Il tipo di variabile di default è la word in com-plemento a 2 (intero relativo) che permette di rappresentare i numeri da -32768 (8000H) a +32767 (7FFFH).Ovviamente, ignorando la flag SF, è possibile operare anche con interi senza segno, rappresentando i nu-meri da 0 a 65535 (FFFFH).

ADD (destinazione),(sorgente)SUB (destinazione),(sorgente)CMP (destinazione),(sorgente)

Le prime due permettono la somma e sottrazione tra sorgente e destinazione memorizzando il risultato sudestinazione. la CMP è equivalente alla SUB, solo che il risultato viene perso e restano solo le flag.Sono possibili tutti i metodi di indirizzamento usati per l'istruzione MOV, tenendo presente però che, utiliz-zando un operando di tipo INDIRETTO o MODIFICATO, è obbligatorio specificare l'altro come REGISTRO.

INC (destinazione)DEC (destinazione)NEG (destinazione)

Permettono rispettivamente, l'incremento, il decremento, il complemento a 2 di un operando indirizzatocon i metodi DIRETTO, INDIRETTO e MODIFICATO.

MUL (sorgente)DIV (sorgente)

Sono funzioni avanzate per effettuare la moltiplicazione e la divisione fra interi senza segno. L'operandodestinazione è sempre AX (operazioni a byte) o la coppia AX DX (operazioni a word). Per moltiplicare due byte, si carica il registro AL con il moltiplicando e si effettua "MUL (op byte)": il risul-tato sarà in AX. Per moltiplicare due words, si carica nel registro AX il moltiplicando e si effettua "MUL (op word)": il risul-tato sarà nella coppia AX (word bassa) e in DX (word alta). Per dividere una word per un byte, si carica il registro AX con il dividendo a 16 bit e si effettua "DIV (opbyte)": il quoziente sarà il AL ed il resto in AH. Per dividere una double word per una word, si carica il dividendo a 32 bit nei registri AX (word bassa) e DX(word alta) e si effettua "DIV (op 16)": il quoziente sarà in AX mentre il resto in DX. Se si vogliono effettuare moltiplicazioni e divisioni su interi con segno, si devono utilizzare le istruzioni I-MUL e IDIV rispettivamente.

Page 9: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 44

2.1.3d) ISTRUZIONI LOGICHE

Sono istruzioni che supportano come operandi delle stringhe di bit generiche. Le combinazioni fra gli ope-randi sono quelle previste per le operazioni analoghe aritmetiche.

AND (destinazione),(sorgente)OR (destinazione),(sorgente)XOR (destinazione),(sorgente)TEST (destinazione),(sorgente)NOT (destinazione)

Le prime tre, effettuano rispettivamente AND OR e OR esclusivo bit a bit tra sorgente e destinazione me-morizzando il risultato su destinazione. L'istruzione TEST è identica all'istruzione AND, eccetto che l'operando destinazione non viene alterato;vengono comunque settate le flags. L' istruzione NOT permette di invertire ogni singolo bit dell'operando (complemento a 1).

SHL (destinazione),(quante volte) [CF ] [dest.] 0

SHR (destinazione),(quante volte) 0 [dest.] [CF]

SAR (destinazione),(quante volte) [dest.] [CF] Le prime due, permettono lo shift LOGICO a sinistra e a destra rispettivamente tante volte quanto specifi-cato nel secondo operando che può essere o un valore immediato o CL. L'istruzione SAR permette lo Shift aritmetico a destra, ovvero viene preservato il bit del segno: questa èl'operazione elementare di divisione per 2.

ROL (destinazione),(quante volte) [CF] [dest]

ROR (destinazione),(quante volte) [dest] [CF]

RCL (destinazione),(quante volte) [CF] [dest]

RCR (destinazione),(quante volte) [dest] [CF]

Permettono la rotazione dei bit su un byte o su una word, interessando il carry. L'istruzione ROL, è equi-valente ad una SHL dove il bit più significativo viene ricopiato sia nel carry che nella posizione meno signi-ficativa. L'istruzione RCL è equivalente ad una SHL dove il bit meno significativo viene rimpiazzato dal va-lore precedente del carry.

Page 10: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 45

2.1.3e) ISTRUZIONI DI TRASFERIMENTO DI CONTROLLO

Permettono di cambiare il flusso sequenziale di esecuzione del programma. Ogni istruzione è puntata daCS:IP, quindi per effettuare qualsiasi salto ad una label, a seconda di dove è localizzata la label, dovremodistinguere i seguenti casi:- LABEL SHORT o relativa:occorre un offset da -128 a +127(1 byte)- LABEL NEAR o intrasegmentale: occorre solo il nuovo IP (1 word)- LABEL FAR o intersegmentale: occorre il nuovo CS:IP (2 word) Nel caso di salto a label NEAR o FAR, per specificare il valore dell'etichetta, si possono utilizzare i metodidi indirizzamento IMMEDIATO, INDIRETTO, MODIFICATO, tenendo presente che, nel caso di label FAR,la locazione di memoria referenziata è una double WORD contenente, in ordine, il nuovo IP ed il nuovo CS.

JMP (operando)

Salto incondizionato alla locazione indicata da operando. Come detto precedentemente, possiamo avereoperandi immediati o indiretti o relativi.Esempi:

JMP SHORT LABEL ; Effettua un salto corto (relativo)JMP LABEL ; Effettua un salto NEAR immediatoJMP [SI] ; Salto NEAR alla locazione indicata da SIJMP FAR DWORD PTR[BX] ; Salto FAR alla locazione di memoria

; SSSS:XXXX, dove XXXX=[BX] SSSS=[BX+2]

Jx (label SHORT)

Salto SHORT condizionato in base ai valori delle FLAGS. Per chiarezza indichiamo di seguito le condizio-ni previste per i salti SHORT:Mnemonico Condizione su PSW Evento verificatosiJE/JZ ZF = 1 Ultimo risultato = 0JL/JNGE (SF xor OF) = 1 Ultimo risultato < 0JLE/JNG ((SF xor OF) or ZF) = 1 Ultimo risultato <= 0JB/JC/JNAE CF = 1 Carry, inferiore (assoluto)JBE/JNA (CF or ZF) = 1 Non superiore (assoluto)JP/JPE PF = 1 Parità pariJO OF = 1 OverflowJS SF = 1 Segno meno (bit più signif.)JNE/JNZ ZF = 0 Ultimo risultato <> 0JNL/JGE (SF xor OF) = 0 Ultimo risultato >= 0JNLE/JG ((SF xor OF) or ZF) = 0 Ultimo risultato > 0JNB/JAE/JNC CF = 0 No carry, Non inferioreJNBE/JA (CF or ZF) = 0 SuperioreJNP/JPO PF = 0 Parità dispariJNO OF = 0 No overflowJNS SF = 0 Segno più (bit più signif.)JCXZ CX = 0 Registro CX = 0

LOOP (label SHORT)LOOPZ (label SHORT)LOOPNZ (label SHORT)

Sono istruzioni per controllare le iterazioni di un blocco di codice. Così come per le istruzioni di stringa, lacondizione per continuare il loop è data dal valore di CX > 0 (LOOP). è possibile aggiungere in AND il con-trollo della flag ZF (LOOPZ/LOOPNZ). Esempio:

LOOP0: ......... ; ripetizione di questo blocco LOOP LOOP0 ; di istruzioni CX volte

CALL (label)RET

Page 11: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 46

L'istruzione di chiamata subroutine, ammette due tipi di label: NEAR (intrasegmentale) e FAR(intersegmentale). L'indirizzo di ritorno (1 o 2 word) viene memorizzato nello stack, in modo da poterlo ripri-stinare quando viene eseguita l'istruzione RET. Senza l'ausilio di un macro assemblatore, bisogna dichiarare esplicitamente il tipo ritorno NEAR o FAR.

INT (vettore)IRET

L'istruzione INT permette di interrompere in maniera sincrona il lavoro che si sta eseguendo per saltare aduna routine di servizio. Rispetto alla CALL, vi sono i seguenti vantaggi nell'utilizzare la INT:

- Nello stack viene salvato, oltre il CS:IP della prossima istruzione, anche la PSW del processo chia-mante. L'esecuzione della IRET, farà si di ripristinare la PSW e quindi lo stato del processo chiamante.Da questo ne consegue che è possibile considerare una INT xx come una effettiva estensione del set diistruzioni e che essa può essere chiamata in qualsiasi punto di un programma.- Nell'istruzione, non viene specificato direttamente l'indirizzo della routine di servizio: questo viene de-terminato dinamicamente dal processore leggendo la double word (CS:IP) alla locazione di memoria(vettore)*4. Questa particolarità rende la INT molto flessibile e adatta per richiamare routines di servizioindipendenti dal particolare programma in esecuzione.

è compito del programmatore, preoccuparsi di come verranno alterati gli altri registri del processore du-rante l'esecuzione della INT. I registri, normalmente, vengono utilizzati per passare gli argomenti alla routi-ne di servizio e quindi non è necessario salvarli comunque nello stack. E buona norma, quando si scrivonole routine di servizio associate alle INT, documentare chiaramente quali sono i registri alterati e quali no. Da un punto di vista logico, l'istruzione INT non differisce dalla modalità con cui il processore tratta gli IN-TERRUPT ASINCRONI, ovvero le interruzioni dovute ad eventi esterni al sistema (tastiera, clock, ...). Chiscrive routine di servizio per eventi esterni, dovrà comunque far attenzione a non alterare nessun registrodella macchina in modo da poter far proseguire normalmente il programma interrotto, al termine del servi-zio. Ritorneremo sulle problematiche relative alle interruzioni, quando verrà trattata l struttura della macchi-na. è possibile specificare 256 possibili valori per il vettore di interruzione: gli indirizzi corrispondenti, occupe-ranno il primo K di memoria della macchina. Alcuni vettori sono riservati (INT 1 e INT 2 per il funziona-mento passo-passo, INT 3 per il debug, INT 4 per eccezione di overflow, ...). Altri Vettori di interruzione so-no riservati ai dispositivi periferici, altri ancora per le routines di servizio del BIOS e del DOS. Quando viene riconosciuta una INT, la routine di servizio inizia con la PSW del processo corrente, con lasola differenza che il FLAG IF viene azzerato in modo da prevenire successive INT durante l'esecuzione delservizio. è comunque possibile, tramite la istruzione STI, ripristinare il flag IF in modo da accettare, se laroutine lo consente, ulteriori interruzioni.

2.1.3f) ISTRUZIONI DI CONTROLLO PROCESSORE

Sono istruzioni che permettono di intervenire sui singoli bit della PSW in modo da condizionare lo stato delprocesso:

CLC Azzera il flag di carry (CF = 0)CLD Azzera il flag di direzione (DF=0) per le "istruz. stringa"CLI Azzera il flag di interruzione (IF = 0) interruz. disabilit.CMC Complementa il flag di carry (CF = NOT(CF) )STC Setta il flag di carry (CF = 1)STD Setta il flag di direzione (DF = 1) per le "istruz. stringa"STI Setta il flag di interruzione (IF = 1) interruz. abilitateHLT Permette di arrestare l'esecuzione delle istruzioni da parte del processore. Il processore rimanein attesa di servire eventuali servizi di interruzione.

Page 12: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 47

2.2) ARCHITETTURA DEL uP Intel 80386

Il processore mantiene la compatibilità software con i processori di livello inferiore della famiglia x86. Perquesto occorre distinguere 3 modi di funzionamento del processore:- Modo REALE : Il processore si comporta come un 8086, e si sfruttano solo le caratteristiche interne dell'ALU, e del PRE-FETCH per aumentare la velocità di esecuzione delle singole istruzioni.

- MODO PROTETTO : è il modo di lavoro effettivo a 32 bit. Il codice non è compatibile con quello utilizzato per lo 8086. In questamodalità il processore è in grado di indirizzare fino a 4 Gbyte di memoria fisica e fino a 64Tbyte di memoriavirtuale. E possibile eseguire task con 4 differenti privilegi. Al livello di privilegio maggiore (livello 0) è pos-sibile eseguire tutte le istruzioni del processore, nonché accedere ai dati appartenenti ai task dei livelli infe-riori. Una tipica struttura a 4 livelli può essere la seguente:Livello 0: KERNEL e DATI KERNELLivello 1: Sistema OperativoLivello 2: Manager di Data BaseLivello 3: ApplicazioniPer accedere alle primitive dei livelli più privilegiati, è necessario passare attraverso dei "GATE CALL" che ilivelli più privilegiati rendono esplicitamente DISPONIBILI.

- MODO VIRTUALE : Consente di utilizzare il codice scritto per 8086 nell'ambito di un sistema protetto e paginato.

Nel seguito, faremo riferimento alla modalità PROTETTA.

2.2.1) PROGRAMMING MODEL Può essere considerato un superset rispetto ai processori 8086, 80186, 80286: tutti i registri a 16 bit sonocontenuti nei corrispondenti registri a 32 bit del 80386.

REGISTRI GENERALI: EAX, EBX, ECX, EDX a 32 bit, ai quali ci si può riferire a 16 bit utilizzando i nomiusati per l'8086 (AX = AH-AL, BX=BH-BL, CX=CH-CL, DX=DH-DL).

REGISTRI INDICI: ESI, EDI a 320 bit, rispettivamente indice sorgente e indice destinazione da utilizzarenelle "istruzioni stringa". Anche in questo caso ci si può riferire ai corrispondenti a 16 bit dello 8086 con inomi SI e DI rispettivamente.

REGISTRI PUNTATORI: ESP, EBP, EIP a 32 bit, rispettivamente Stack Pointer e Base Pointer, InstructionPointer.

REGISTRI SELETTORI DI SEGMENTO: DS, CS, SS, ES, FS, GS a 16 bit. Tramite questi registri selettori,si accede ai descrittori di segmento che sono contenuti in memoria e caricati automaticamente in registriappositi trasparenti. Un selettore è costituito da:

INDICE (bit 15-3) = Indice nella tabella dei descrittori.TI (bit 2) = Tipo tabella: 0 = GDT, 1=LDTRPL (bit 1-0) = Requestor Privilege Level: Livello di privilegio del richiedente. Viene utilizzato per diminuire

il privilegio corrente (CPL, determinato dai 2 bit meno significativi del registro CS) in mododa determinare il livello di privilegio effettivo (EPL). Ad esempio, se un task con CPL=2 haun selettore con RPL=0, si avrà EPL=2; Viceversa, se il selettore ha RPL=3, si avrà EPL=3.

Un descrittore di segmento ha il seguente formato LOGICO:

32 bits 20 bits 12 bitsIndirizzo base fisico Limite Granularità, Accessi, Flags

Page 13: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 48

ed il seguente formato FISICO (compatibile con lo 80286) :

Word 0 Limite del segmento (bit 15-0) comp. 80286Word 1 Indirizzo fisico Base (bit 15-0) comp. 80286Byte 4 Indirizzo fisico Base (bit 23-16) comp. 80286Byte 5 Flags[8] comp. 80286Byte 6 G[1], D[1], R[2], Limite (bit 19-16) 80286=0Byte 7 Indirizzo fisico Base (bit 31-24) 80286=0

Da quanto sopra, si può vedere che, in modalità 80286, è possibile specificare segmenti al massimo da 64Kbyte. Nel 80386 è possibile definire segmenti al massimo da 1 Mb se si utilizza la granularità a byte (G=0)e da 4 Gbyte se si utilizza la granularità a pagine (G=1) da 4KB.È possibile interpretare segmenti secondo il formato 80286, ponendo a 0 il bit D.I due bit R sono riservati e vanno tenuti a 0.Il byte 5, (Flags) va interpretato a seconda del tipo di segmento:

SEGMENTO DATI:

P 1 = Segmento presente in memoria centrale, 0=Non presenteDPL Privilegio per accesso al segmento (0=più alto)ED 0 = Espansione in avanti, 1= Espansione indietro (Stack)W 1 = Accesso consentito in scrittura.A 1 = Accesso avvenuto (Read o Write)

SEGMENTO CODICE:

C Conforming: Se 1, il codice può essere eseguito da qualsiasi livello di privilegio e, di conseguen-za, il task che esegue il codice DIMINUISCE o AUMENTA il suo privilegio (CPL) al livello DPL.

R 1 = è possibile leggere il codice, oltre che eseguirlo

SEGMENTO SISTEMA:

TYPE 1,3 = Segmento di STATO del TASK TSS 2 = Tabella LDT (vedi successivamente)

Il fetch del codice fa implicitamente riferimento al segmento CS e non può essere modificato. Le istruzioniPUSH e POP, fanno riferimento al segmento SS e non può essere modificato. I riferimenti ai dati hannocome utilizzo implicito i segmenti DS, ES, SS, così come descritto per l'8086; i segmenti di default, per ilriferimento ai dati, possono essere dirottati tramite opportuno prefisso su qualsiasi tra CS,SS,ES,FS,GS.

PROCESSOR STATUS WORD: EF, a 32 bit. I 12 bit bassi sono compatibili con quelli dello 8086, i restantisono così interpretati:F13,F12 = IOPL = Livello di privilegio richiesto per l' I/O e per il settaggio del flag IFF14 = NT = Nested Task: TSS ha un back link valido per il TSS del task precedente. (vedi chiamate inter-

task)F15 = RiservatoF16 = RF = Resume Flag: Settato per eliminare breakpoint all’istruzione successiva. Viene ripristinato da

IRET.F17 = VM = Flag per Funzionamento in modo VIRTUALE 8086.

REGISTRI DI CONTROLLO: CR0, CR1, CR2, CR3 a 32 bit, contengono lo stato della macchina in ambitoGLOBALE:

CR0: La parola bassa è compatibile con la MSW dello 80286; gli altri bit sono così definiti:

7 6 5 4 3 2 1 0 P DPL 1 0 ED W A

7 6 5 4 3 2 1 0 P DPL 1 1 C R A

7 6 5 4 3 2 1 0 P DPL 0 0 0 TYPE

Page 14: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 49

CR0(31) = PG = Paging Enable, Abilitazione della paginazione.CR0(30-5) RiservatiCR0(4) = ET = Processor Extension Type: 1=80387, 0=80287 (l'istruzione LMSW/SMSW non influiscono su

questo bit)CR0(3) = TS = Task Switched, attivato nelle commutazioni di taskCR0(2) = EM = Emulate Coprocessor, attiva INT 7 per i codici operativi riservati al coprocessore.CR0(1) = MP = Monitor Coprocessor, Presenza del coprocessore.CR0(0) = PE = Protection Enable, Abilitazione al modo PROTETTO.

CR1: Riservato

CR2: Indirizzo lineare di errore di pagina. Conserva l'indirizzo lineare a 32 bit che ha generato un "PAGEFAULT" (vedi paginazione)

CR3: Indirizzo base della directory di pagina. Il formato prevede di utilizzare solo i 20 bit più significativi perindirizzare la directory di pagina, allineata ai 4KB. I 12 bit meno significativi sono utilizzati come flags(vedi paginazione)

REGISTRI DEGLI INDIRIZZI DI SISTEMA: GDTR e IDTR a 48 bit (base-limit), LDTR,TR a 16 bit. Puntanoalle tabelle dei descrittori di segmento:GDTR -> GDT = Tabella descrittori globaliIDTR -> IDT = Tabella dei descrittori di interruptLDTR -> LDT = Tabella dei descrittori locali al taskTR -> TSS = Segmento si stato del taskDa notare come, in ambiente locale, l'accessibilità alle LDT e TSS è possibile solo tramite selettore di seg-mento rendendo trasparente al programmatore il descrittore effettivo.

REGISTRI DI DEBUG: 6 registri a 32 bit accessibili dal programmatore (a livello 0) per il debugging:DR0-DR3 4 indirizzi lineari relativi a 4 breakpoint. I circuiti dello 80386 confrontano continuamente gli indi-

rizzi lineari di breakpoint contenuti in questi registri con gli indirizzi lineari generati dal program-ma (sia per i dati che per il codice) in esecuzione (indirizzo lineare = indirizzo generato dall’unitàdi segmentazione PRIMA dell’unità di paginazione). Quando si verifica un’uguaglianza, si avràuna “INT 1” (trappola all’eccezione 1).

DR4-DR5 RiservatiDR6 = Registro di stato del debug: 8 bit di questo registro sono utilizzati per individuare l'evento che ha

causato INT 1 secondo il seguente formato: B0-B3 = Numero registro (DR0-DR3) che ha provocato il Break. B13 = BD = Errore di debug: segnala un accesso ai registri di debug quando GD=1 (vedi DR7).

B14 = BS = Trap per passo-passo: indica INT1 causata dal settaggio della flag TF B15 = BT = Trap per commutazione task: indica un’eccezione causata da una commutazione di

task nell’esecuzione di un task che ha un TSS con il bit T = 1. La commutazioneavviene normalmente, ma prima viene generata l’INT 1.

DR7 = Registro di controllo di debug, secondo il seguente formato:

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16LEN3 R3 W3 LEN2 R2 W2 LEN1 R1 W1 LEN0 R0 W0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 00 0 GD 0 0 0 GE LE G3 L3 G2 L2 G1 L1 G0 L0

dove, per ogni breakpoint si specifica:LENx = Larghezza del campo di breakpoint:

00 = 1 byte = DR indica un indirizzo completo a 32 bit 01 = 2 byte = vengono considerati i bit 31-1 di DR

10 = riservato11 = 4 byte = vengono utilizzati i bit 31-2 di DR.Da notare che i breakpoint relativi alle istruzioni devono avere LENx=00 (1 byte). Perl’accesso ai dati invece, può essere eliminato il confronto dei bit bassi e quindi qualsiasiindirizzo che cada nell’intervallo indicato può generare un INT 1.

Rx, Wx = tipo accesso alla memoria:

Page 15: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 50

00 = Break solo per esecuzione istruzioni01 = Break solo per scrittura dati10 = riservato11 = Break solo per lettura/scrittura datiPer breakpoint su istruzioni, ha senso solo il qualificatore 00

Gx = Abilitazione breakpoint in ambiente globale. I bit non sono influenzati da eventuali com-mutazioni di task e sono quindi attivi nell’esecuzione di tutti i task del sistema.

Lx = Abilitazione breakpoint in ambiente locale. Quando viene effettuata una commutazione ditask, tutti i bit Lx vengono azzerati per evitare eccezioni spurie nel nuovo task. Sarà com-pito del debugger riattivarli quanto viene commutato il task sotto controllo. Infatti, impo-stando il bit T del TSS in esame, al momento della riattivazione del task, verrà generatauna INT 1 e quindi il debugger potrà riattivare gli eventuali breakpoint impostati.

Le seguenti flags sono relative a tutti i breakpoint:GD = Rilevazione accesso al registro di debug globale. Ai registri di debug si può accedere o in

modalità reale o al livello di privilegio 0. Il bit GD fornisce una protezione EXTRA controqualsiasi accesso ai registri di debug. Esso può essere utilizzato da un “debugger” per ga-rantirsi contro eventuali modifiche non previste dei registri di DEBUG da parte del pro-gramma stesso. Impostando questo bit a 1, se un task accede ai registri di debug, vienegenerata una INT 1 e viene resettato il bit GD, consentendo al debugger il libero accessoai registri di debug. Il debugger è in grado di rilevare questa condizione analizzando il bitBD di DR6.

GE,LE = Accoppiamento dei breakpoint dei dati esatto Globale e Locale. Questi bit permettono di interrompere l'esecuzione esattamente quando è avvenuta l'opera-

zione di trasferimento dati. Senza questo allineamento, nel caso il breakpoint sia riferito aidati, la INT 1 potrebbe essere generata alcune istruzioni dopo l'istruzione che ha provo-cato il trasferimento. Se il breakpoint è riferito alle istruzioni la segnalazione è sempreesatta. Il bit LE viene automaticamente azzerato su una commutazione di task per evitaredi trasferire l’informazione sul nuovo task. Anche qui dovrà essere il debugger a riattivareil bit, se necessario, alla commutazione del task in esame. il bit GE non viene influenzatodalle commutazioni di task. Da notare che questa organizzazione solleva il gestore deiprocessi dall’includere nello stato del task anche i registri di debug, inutilizzati nel normalelavoro.

REGISTRI DI TEST: TR6, TR7: vengono impiegati per la verifica del TLB (buffer di traduzione indirizzi perla paginazione). Il processore, quando viene attivato /RESET ed il pin BUSY è basso, inizia la procedura diautocontrollo che impiega 2^19 cicli (33 ms a 16 MHz); al termine della procedura, si inizia la normale routi-ne di reset: Se il test ha dato risultato positivo, il registro EAX sarà 0, altrimenti il contenuto di questo regi-stro identifica il componente guasto. Se si vuole verificare il funzionamento del TLB, occorre scrivere unprogramma apposito per l'80386 (non compatibile con i futuri processori). Per ragioni di convenienza, nonentriamo nel dettaglio di questo test.

2.2.2) TIPI DI DATI Bit, Bit Field (max 32 bit), Bit string (max 4Gbit)

Byte, Unsigned byte, Word, Unsigned wordDouble word, Unsigned double wordQuad word, Unsigned Quad wordPointer (48 bit: Selector:offset)Stringa di byte, word, double word (da 1 a 4Gbyte)BCD byte e BCD packed(con 80387) floating point da 32, 64, 80 bit

2.2.3) INTERRUZIONI Si possono classificare, sotto il termine generico di interruzione, tre distinti meccanismi:-FAULT (errori): vengono rilevati prima di aggiornare il PC-TRAP (trappole): vengono rilevate dopo l'esecuzione della istruzione.-ABORT (annullamenti): Non è determinata la locazione che ha usato l'eccezione.

N TIPO EVENTO (istruzione responsabile)0 (FAULT) Errore di divisione (DIV/IDIV)

Page 16: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 51

1 (TRAP) Eccezione di Debug (qualsiasi)2 (NMI) Interrupt Non Mascherabile (INT 2/NMI)3 (TRAP) Interrupt ad 1 byte (x debug) (INT)4 (TRAP) Interruzione per Overflow (INTO)5 (FAULT) Fuori dai limiti del vettore (BOUND)6 (FAULT) Codice Operativo Illegale (qualsiasi)7 (FAULT) Device non disponibile (ESC/WAIT)8 (ABORT) Errore Doppio (qualsiasi)9 (ABORT) Errore di sovrappos. seg. coprocessore (ESC)10(FAULT) TSS non valido (JMP/CALL/IRET/INT)11(FAULT) Segmento non presente (riferimento a SEG.REG.)12(FAULT) Errore di stack (riferimento a STACK)13(FAULT) Errore generale di protezione (riferimento a memoria)14(FAULT) Errore di pagina (qualsiasi)16(FAULT) Errore di coprocessore (ESC/WAIT)17-31 Riservate per uso futuro32-255(TRAP) Interruzioni a due byte (INT n)

Da rilevare che i Breakpoint inseriti nei registri DR0-DR3, discussi precedentemente, agiscono:- Come FAULT, nel caso che l’indirizzo è riferito ad una istruzione: il PC si arresta prima di eseguire

l’istruzione relativa al BreakPoint.- Come TRAP, nel caso che l’indirizzo sia riferito ai dati: La segnalazione avviene dopo che è stato eseguito

il trasferimento dati (anche molte istruzioni dopo o mai, se non viene attivato il bit di accoppiamento GE oLE su DR7)

2.2.4) ORGANIZZAZIONE DELLA MEMORIA Occorre distinguere tre spazi di indirizzamento:

• LOGICO o VIRTUALE, costituito da selettore:offset, identifica una locazione nello spazio virtuale di 64TByte (solo 14 bit sono utilizzati in un selettore)

• LINEARE, è l'indirizzo a 32 bit convertito dall'unità di segmentazione nello spazio lineare di 4 Gbyte. Se

non viene abilitata la paginazione, corrisponde all'indirizzo fisico. • FISICO, è l'indirizzo a 32 bit convertito dall'unità di paginazione che permette di utilizzare una quantità di

memoria fisica minore 4 GByte.

|____INDIRIZZO VIRTUALE_____|____IND. LINEARE___|_IND.FISICO_|

Essendo sufficiente lo spazio di indirizzamento a disposizione nello 80386, il solo modello di memoria a cuisi farà riferimento sarà lo SMALL.Prima di analizzare il funzionamento dell’unità di paginazione, occorre introdurre dei concetti fondamentalirelativi ai sistemi a memoria virtuale.

2.2.5) SISTEMI A MEMORIA VIRTUALE

Quando un programma ha bisogno di indirizzare una memoria più grande di quella disponibile nel siste-ma, esso non è in grado di girare. Le tecniche che vanno sotto di MEMORIA VIRTUALE, sono in grado dirimuovere questa limitazione, consentendo all'utente di avere a disposizione una memoria più grande diquella reale.

BASE

INDEX *(1/2/4/8)

SPIAZZAMENTO

SEGMENTAZIONE PAGINAZIONE(opzionale)

SELECTOR

3232E.A.32

14

Page 17: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 52

Il concetto di memoria virtuale, usato per la prima volta nel '60, è stato utilizzato massivamente solo re-centemente. Una tecnica antesignana della memoria virtuale può essere considerata quella dell'OVERLAY.Tramite questa tecnica, il programmatore suddivideva il suo programma in moduli gerarchici, e collocavaquelli ad uguale gerarchia, ovvero indipendenti fra di loro in una regione che chiamava di OVERLAY. Tutti imoduli appartenenti allo stesso livello potevano essere collocati a turno nella stessa regione, da parte delsistema operativo, a seconda della richieste. L'unico compito del gestore di overlay era quello di caricare damemoria di massa i moduli occorrenti, tralasciando la problematica di dover scaricare su disco il moduloattualmente presente in quella regione. Una simile gestione, pur se semplice ed efficace, costringeva il pro-grammatore ad un laborioso lavoro di modulizzazione gerarchica con evidenti possibilità di errori. In un sistema a MEMORIA VIRTUALE, è il sistema operativo che sceglie cosa, del programma, tenere inmemoria e cosa tenere su disco per far sì che il programma possa girare. Alla base della realizzazione di untale sistema stanno due tecniche usate comunemente: la PAGINAZIONE e la SEGMENTAZIONE.

2.2.5.1) PAGINAZIONE

Virtual Address Space Phisical Memory

64K 32K60K 28K56K 24K52K 20K

16K12K

8K16K 4K 8K 0K 4K 0K

Facendo riferimento alla figura precedente, chiamiamo INDIRIZZI VIRTUALI (Virtual Address) gli indirizzigenerati dal programma; questi individueranno uno spazio di memoria chiamato SPAZIO DEGLI INDIRIZZIVIRTUALI (Virtual Address Space). Gli indirizzi virtuali vengono trasformati in INDIRIZZI FISICI (Phisical Address) da un apposito dispositivohardware chiamato normalmente Memory Management Unit (M.M.U.). Il V.A.S. e la Memoria Fisica(Phisical Memory) vengono suddivisi rispettivamente in Pagine Virtuali o semplicemente pagine e in PagineFisiche (Page Frames). Per semplicità si sceglie per la dimensione della pagina una potenza del 2, in modo da individuare imme-diatamente, dato un indirizzo virtuale, il numero di pagina di appartenenza. Infatti, se ad esempio scegliamouna pagina lunga 4KB,(4KB=2^12) per conoscere il numero di pagina basterà mascherare i 12 bit meno si-gnificativi dell'indirizzo e considerare solo i bit dal tredicesimo in su. Il numero di pagina viene utilizzatodalla M.M.U. per indirizzare una tabella, la tabella delle pagine, costituita da tante entries quanto è il mas-simo numero di Pagina Virtuale possibile. Per ogni entry, viene specificato, tra l'altro, il numero di Page Frame corrispondente alla Pagina, oppure,se la pagina non è nella P.M., viene specificato un riferimento per trovarla su Memoria di Massa. Se la Pagina è presente nella P.M., la M.M.U. estrae il numero corrispondente alla Page Frame, accosta aquest'ultimo lo spiazzamento ricavato dai bit meno significativi dell'indirizzo virtuale, e quindi ricava l'indi-rizzo fisico. Ad esempio, considerando un VAS di 64K, una page size di 2K, avremo il seguente schema:

Virtual Address

0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 1V.P. num. offset

0 0 0 1 1. . . . .

Page Table Phisical Address0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 1

0 0 1 1 0

V.P. 15V.P. 14V.P. 13

V.P. 2V.P. 1V.P. 0

P.F. 7P.F. 6P.F. 5P.F. 4P.F. 3P.F. 2P.F. 1P.F. 0

+

Page 18: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 53

. . . . .

Se la pagina non è presente in P.M. la M.M.U. genera una eccezione (TRAP) di PAGE FAULT. La routinedi sistema operativo associata alla page fault, avrà il compito di caricare da Memoria di Massa alla P.M. lapagina corrispondente, selezionando, se la P.M. è piena una eventuale pagina "vittima" da scaricare suMemoria di Massa secondo delle politiche opportune.

2.2.5.2) SEGMENTAZIONE

Questa tecnica è stata tra le prime ad essere adottata, in quanto dà la possibilità di svincolare il program-ma dal concetto di memoria lineare, ovvero della memoria vista come successione continua di locazioni. Inpratica la segmentazione permette di avere un ulteriore grado di libertà, ovvero può permettere ad un pro-gramma di risiedere in blocchi separati di P.M. Nel S.O. MULTICS (Sistema Operativo di riferimento, mairealizzato), che aveva un V.A.S. costituito da 36 bits, un programma aveva la possibilità di disporre di 2^36segmenti, ciascuno dei quali capaci di indirizzare un massimo di 2^36 locazioni; questo portava ad avereuna memoria massima disponibile di 2^72 locazioni (praticamente infinito). Inoltre, in questo S.O., ognisegmento poteva contenere programmi, array e files e quindi non si aveva più la necessità di gestire lo I/Osu disco ( ci pensava il S.O. con le primitive di SWAPPING ). La tecnica della SEGMENTAZIONE, può essere anche utilizzata in sistemi monoprogrammati, (PC IBM inMS-DOS) per risolvere agevolmente i problemi di rilocazione dinamica dei programmi. Il µP 8086, infattiutilizza i 4 registri di segmento CS,DS,SS,ES, come registri base ai quali sommare (in run time) i valori dispostamento forniti dai registri tradizionali a 16 bit. Ogni registro di segmento individua un paragrafo conte-nente, al minimo, 16 bytes; essendo i registri di segmento da 16 bit, è possibile in questo modo indirizzarecompletamente uno spazio di memoria da 1MB (2^(16+4)), suddivisa in segmenti lunghi da 16 bytes a64KB.

2.2.5.3) COMBINAZIONI DI PAGINAZIONE E SEGMENTAZIONE

Nei sistemi in multiprogrammazione, è conveniente, per la gestione della memoria, utilizzare la combina-zione tra la paginazione e la segmentazione. Vediamone due esempi:

Motorola 68000Nel Motorola 68000, si ha a disposizione un supporto hardware in grado di gestire autonomamente 16 pro-cessi, ciascuno con un massimo di 1024 pagine da 4KB ciascuna. Questo dà la possibilità di avere unV.A.S. di 4MB.Senza la segmentazione, saremo costretti a riservare, per ciascun processo una tabella costituita da 1024entries.Tramite la segmentazione, l'hardware della MMU riserva 16 tabelle di segmento, una per ogni processo, da64 entries ciascuna.In questo modo, ogni entries di segmento punta ad una tabella di pagina di lunghezza variabile, ma costi-tuita da un massimo di 16 entries:

16 tabelle di segmento

N.processo N.segmento N.pagina offset di pagina4 bit 6 bit 4 bit 12 bit

64descrittori

di segmento

PAGE FRAMEPAGE FRAME

fino a16

entries

indirizzo a 10 bits

LUNGHEZZA | PROTEZIONI | PUNTATORE TABELLA PAGINE

Ogni descrittore di segmento è costituito da:

+ Indirizzofisico

Page 19: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 54

Reg.di task Indirizzo virtuale a 22 bit

A partire da un indirizzo virtuale da 22 bit, la MMU, trova l'entry di segmento combinando 4 bit che identifi-cano il processo, con i 6 bit più significativi (A21..A16) del V.A.; una volta controllate le protezioni e la lun-ghezza massima del segmento, viene estratto il numero di pagina (A15..A12) e combinato con il puntatorealla tabella delle pagine (contenute in una memoria speciale nella MMU), per estrarre la Page Frame allaquale sommare lo spiazzamento (A11..A0) per determinare la locazione fisica di memoria. La potenza di una simile organizzazione risiede nella semplicità di gestione: il CONTEXT SWITCHINGcorrisponde nella modifica del registro a 4 bit corrispondente, senza la necessità di dover ricaricare le ta-belle di pagina o di segmento di quel processo.

Intel 80386In questo processore sono previsti 3 livelli di traduzione dall’indirizzo virtuale all’indirizzo fisico: il primo av-viene nella segmentazione, gli altri due nella paginazione:

Segmentazione

indirizzo virtuale a 46 bit (64 TByte)Selettore di segmento offset

14 bit 32 bit

Paginazione

Indirizzo lineare a 32 bitPage Directory Page Table offset

10 bit 10 bit 12 bit

31 ........................12 11.................9 8 7 6 5 4 3 2 1 0Page Table Address OS reserved 0 0 D A 0 0 U/S W/R P

Registro CR3

Partendo da un indirizzo virtuale a 46 bit, formato dai 14 bit più significativi di uno dei selettori di segmento(DS, ES, CS, SS, GS, FS) e dai 32 bit dell’operando, avviene una prima trasformazione dell’indirizzo in in-dirizzo LINEARE, ovvero una locazione di memoria nel range 0-4gbyte. La trasformazione avviene prele-

GDT

4096descrittori

di segmento(32 KB)

LDT

LUNGHEZZA PROTEZIONI INDIRIZZO BASE

<-- 20 bit --> <-- 12 bit --> <----- 32 bit ----->

+ Indirizzolineare a32 bit

Directory

1024entriesformato

CR3(4 KB)

+

+

Page Table

1024entriesformato

CR3(4 KB)

User Memory

Phisical Address+

Page 20: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 55

vando il DESCRITTORE DI SEGMENTO da una delle due tabelle GDT o LDT, a seconda del valore del bit2 del selettore. In un sistema multiprogrammato, tipicamente, si avrà una sola GDT, dedicata ai dati e alcodice del S.O. e diverse LDT, ciascuna associata ad uno specifico task.La prima verifica da effettuare è quella relativa al privilegio di accesso; fatta eccezione per i segmenti dicodice “Conformi” (Bit C=1), valgono le seguenti regole generali:• • Si determina EPL = max{CPL, RPL}• • Si verifica che EPL ≤ DPL, in caso contrario si avrà un FAULT 13In caso di accesso allo stack (Selettore SS) è valida solo la condizione CPL=RPL=DPL, altrimenti si avrà unFAULT 13.Successivamente alla verifica di accesso, si dovrà controllare il bit P (Present): se il segmento non è pre-sente in memoria, si avrà un FAULT 11. Nel caso il segmento si riferisca allo stack, si avrà il FAULT 12.Sarà compito delle routines del S.O. caricare il segmento NON PRESENTE, dalla memoria di massa inmemoria CENTRALE.La segmentazione non risolve, da sola, la gestione della memoria virtuale in quanto, se la memoria fisicanon fosse in grado di contenere TUTTO il segmento richiesto, questo non potrebbe essere mai caricato.Grazie alla PAGINAZIONE, l’indirizzo LINEARE viene ulteriormente trasformato dal meccanismo a due li-velli di tabelle che consente di ottimizzare lo spazio in memoria centrale.Se si fosse utilizzato un unica tabella di pagina, infatti, si sarebbe dovuta mantenere in memoria una pagetable da 1M entries (20 bit): considerando ogni entry lunga 32 bit si sarebbero occupati 4 Mbytes, da teneresempre residenti in M.C., indipendentemente dallo spazio effettivo utilizzato.Utilizzando il meccanismo a 2 livelli avremo:• 1024 entries nella tabella delle directory di pagina, per un’occupazione totale di 4KBytes• 1024 entries per ogni tabella delle pagine, per un’occupazione di 4KB per ogni blocco da 4MB EFFET-

TIVAMENTE utilizzato.In pratica, in questo modo, un programma che avesse bisogno di 100MB di memoria, (tra codice, dati estack) “costa” al sistema 4*(100/4+1) KB = 104 KB che corrisponde ad un overhead di 0.1%.La paginazione, inoltre, fornisce un’ulteriore meccanismo di protezione distinguendo due classi di privilegio:Supervisor (livelli 0,1,2) e User (livello 3). Gli attuali S.O. utilizzano in pratica solo queste due classi di pri-vilegio in modo da rendere uniforme il controllo delle protezioni.Il registro CR3, che fornisce l’indirizzo base della directory delle tabelle di pagina, e le entries nella directo-ry table e nelle page table hanno lo stesso formato:

bit campo significato31..12 Base Address 20 bit più significativi dell’indirizzo fisico di base; i 12 bit meno significativi ven-

gono assunti a 011..9 Reserved O.S. 3 bit di lettura/scrittura a disposizione del S.O. per implementare eventuali

strategie di “page replacement” (vedi L.R.U./L.F.U.)6 Dirty Viene settato ad 1, dal processore, quando si verifica una scrittura nella pagina.

Questo bit non è usato nella directory delle pagine.5 Accessed Viene settato ad 1, dal processore, quando si verifica una lettura o scrittura

nella pagina.2 User/Supervisor se 1, permette l’accesso alla classe User (EPL=3).1 Write/Read Se 1, permette l’accesso anche in scrittura. E’ ignorato per la classe Supervisor0 Present Se 1, indica che la pagina è presente in M.C. e quindi il “Base Address” è cor-

retto e può essere usato per la conversione nell’indirizzo fisico. Se 0, i rimanenti31 bit sono a disposizione del S.O. per rintracciare, ad esempio, la pagina nellamemoria di massa (swap area)

Nota: I bit P,A,D sono settati dal processore con il prefisso “LOCK”; per evitare conflitti il S.O. deve usare lastessa tecnica.L’organizzazione della paginazione permette di implementare la gestione della M.C. di tipo “Page Demand”,ovvero le pagine verranno caricate solo su richiesta del processo in esecuzione, a partire dalla prima paginacaricata.Per superare i problemi della lentezza causati dal doppio accesso, sia alla Page directory che alla Page Ta-ble, viene utilizzato un Translation Lookaside Buffer (TLB) ovvero una memoria cache delle tabelle di pagi-na a 32 ingressi associativi con set a 4 vie. Il TLB conserva le 32 pagine più usate dal processore: per moltisistemi si può arrivare ad un “HIT” del 98%, ovvero solo per il 2% degli accessi, occorre effettuare la letturadalle tabelle in M.C.Il funzionamento dell’unità di paginazione può essere descritto quindi secondo il seguente algoritmo:

Page 21: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 56

INIZIOleggi indirizzo lineare (b31..b0)se (b31..b12) not in TLB allora ; MISS

leggi entry (b31..b22) nella directory delle tabelle di pagina su (d31..d0)se bit P=0 allora FAULT 14leggi entry (b21..b12) dalla tabella di pagina (d31..d12)000000000000 su (p31..p0)se bit P=0 allora FAULT 14

else ; HITleggi entry da TLB su (p31..p0)

finesese accesso non consentito allora FAULT 14genera indirizzo fisico (p31..p12)(b11..b0)

FINE

La routine di servizio (error handler) associata al FAULT 14 dovrà individuare il motivo del FAULT: per que-sto, il processore inserisce il codice di errore a 16 bit nello stack associato all’handler:

bit 2 (U/S) 0 Indica errore in modo supervisor, 1 in modo Userbit 1 (W/R) 0 indica errore su lettura, 1 errore su scritturabit 0 (P) 0 Indica errore per pagina non presente, 1 indica errore di violazione di protezione

Il registro CR2, inoltre, conterrà l’indirizzo LINEARE che ha provocato il FAULT di pagina (se P=0): tramitequesto indirizzo sarà possibile accedere alla tabella di pagina e ricavare le eventuali informazioni conserva-re nei bit (31..1)Nel caso che la memoria centrale sia tutta occupata, occorrerà prevedere una strategia di “Page Replace-ment” che scelga una pagina “vittima” da poter sovrascrivere con la pagina richiesta.

2.2.5.4) STRATEGIE DI PAGE REPLACEMENT

Il problema fondamentale nei sistemi a partizioni variabili che usano la paginazione, è quello di sceglierequale pagina, tra quelle presenti in P.M., scaricare, per far posto alla pagina occorrente. La strategia ideale,per questo, è chiamata OPTIMAL PAGE REPLACEMENT, la quale stabilisce che la pagina da scaricare siaquella che sarà referenziata in un futuro il più possibile lontano. Non essendo possibile questa implementa-zione si usano le seguenti strategie:

- CASUALE Viene scelta in maniera casuale la pagina da scaricare.

- NOT RECENTLY USED (NRU) Vengono associati, per ogni pagina, due bit: Referenced bit e Modified bit. L' R-bit, viene posto a 1 ognivolta che la pagina viene referenziata (letta o scritta); l' M-bit, viene posto a 1 ogni volta che avviene unascrittura nella pagina. Il set di questi bit deve essere effettuato dall'hardware, mentre il reset (azzeramento), deve essere con-trollato dal software. Questo permette di implementare delle politiche opportune. Questa strategia, può essere utilizzata anche se non c'è un dispositivo hardware dedicato al settaggio diquesti bit, a spese di un maggior overhead: ad ogni PAGE FAULT, dopo aver caricato la pagina richiesta, lasi protegge dalla scrittura marcandola come READ ONLY, e si setta l' R-bit a 1. Se avviene una scrittura inquella pagina, si genererà una eccezione di ACCESSO VIOLATO alla quale sarà associata una routine disistema operativo che porrà a 1 l' M-bit e riprenderà l'esecuzione del processo interrotto, rimuovendo laprotezione dalla pagina.L'algoritmo di NRU, prevede che, periodicamente (es.: ogni 20 mS), venga azzerato l' R-bit. Al PAGEFAULT, ovvero quando occorrerà scegliere la pagina "vittima", si avranno a disposizione le 4 classi di pagi-ne:

Classe 0: R=0 M=0 Classe 1: R=0 M=1 Classe 2: R=1 M=0 Classe 3: R=1 M=1

Page 22: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 57

NRU consiste nello scegliere, partendo dalla Classe 0, la prima pagina che trova, che sarà quindi quellacon minor "peso" nel sistema. Infatti, le pagine in Classe 0, non sono mai stati referenziate, e quindi non ènecessario scaricarle su Memoria di Massa; le pagine in Classe 1, sono state modificate, ma questa modi-fica è avvenuta in un passato "lontano" (prima dell'ultimo azzeramento periodico del bit R), e quindi può es-sere considerata come "vecchia"; le pagine in Classe 2, sono state referenziate, poco tempo fa, ma non so-no state modificate e quindi non è necessario scaricarle su disco, però e molto alta la probabilità che esseverranno referenziate in un prossimo futuro costringendo un altro caricamento; le pagine in Classe 3, infine,sono quelle più importanti perché, oltre le caratteristiche della classe 2, hanno l'inconveniente che occorresalvarle su Memoria di Massa prima di poter caricare la pagina richiesta. Una strategia di questo tipo, èsemplice, di efficiente implementazione, non ottimale ma abbastanza adeguata.

-FIFO Viene mantenuta dal S.O. una lista di tipo FIFO di tutte le pagine presenti in memoria. L'algoritmo preve-de, per ogni nuova richiesta di pagina, di scaricare la pagina in testa, e di inserire la nuova pagina in coda.Sono previste due modifiche a questa semplice strategia:

1- FIFO+NRU : Si scorre la coda dalla testa scegliendo una eventuale pagina di Classe 0, se non ce ne so-no si cerca una di Classe 1 e così via.

2- FIFO+NRU SECONDA OPPORTUNITÀ: Si scorre la coda e, se la pagina ha l' R-bit a 0, si sceglie, altri-menti lo si pone a 0 e si rimette la pagina in coda. A questa tecnica esiste una variante che consiste nel-l'usare una lista circolare che evita di dover rimettere in coda la pagina scartata in quanto è sufficienteavanzare nella lista.

Utilizzando una strategia di tipo FIFO, si può verificare una anomalia curiosa: si è portati a pensare, nor-malmente, che più pagine fisiche si hanno a disposizione e meno PAGE FAULTS avvengono. Belady e altri(1969), scoprirono un esempio in cui una strategia FIFO provocava più PAGE FAULTS con 4 page frameche con 3. Supponiamo di avere un programma che utilizzi 5 pagine (virtuali) e che le pagine vengano refe-renziate nell'ordine: 0 1 2 3 0 1 4 0 1 2 3 4. Supponiamo inoltre che le pagine vengano caricate una allavolta a seconda della richiesta. Nel caso di 3 page frame avremo la seguente mappa di memoria:

pagine entranti --------> 0 1 2 3 0 1 4 0 1 2 3 4pagina più giovane --> 0 1 2 3 0 1 4 4 4 2 3 3

0 1 2 3 0 1 1 1 4 2 2pagina più vecchia ---> 0 1 2 3 0 0 0 1 4 4page faults (P) --------> P P P P P P P P PTotale = 9 P.F.

Mentre, nel caso di 4 page frames:

pagine entranti --------> 0 1 2 3 0 1 4 0 1 2 3 4pagina più giovane --> 0 1 2 3 3 3 4 0 1 2 3 4

0 1 2 2 2 3 4 0 1 2 30 1 1 1 2 3 4 0 1 2

pagina più vecchia ---> 0 0 0 1 2 3 4 0 1page faults (P) --------> P P P P P P P P P PTotale = 10 P.F.

-LEAST RECENTLY USED (LRU) La strategia LRU ricerca fra le pagine, quella inutilizzata da più lungo tempo. L'implementazione di questa,è teoricamente possibile, ma è molto dispendiosa. Indichiamo due metodi:1- Si utilizza un dispositivo hardware che è costituito da dei contatori (es.: da 64 bit), ognuno associato ad

una pagina. Ogni volta che una pagina viene referenziata, il contatore viene incrementato. La sceltadella pagina "vittima" consisterà nello scegliere, fra le pagine, quella che ha il contatore con il valore piùbasso.

2- Si utilizza un dispositivo hardware che è costituito da una matrice binaria n x n, con n=numero delle fra-mes. Inizialmente la matrice è posta a 0; quando viene referenziata la pagina K, prima vengono posti a 1tutti gli elementi della riga K, quindi vengono posti a 0 tutti gli elementi della colonna K. La scelta dellapagina "vittima", consisterà nello scegliere il numero di pagina corrispondente alla riga della matrice che

Page 23: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 58

fornisce, in binario il valore più basso. Il lettore è invitato a provare che questo è effettivamente un algo-ritmo di LRU.

-NOT FREQUENTLY USED (NFU) Questa strategia è praticamente una simulazione approssimata, tramite software della LRU. Viene asso-ciato un contatore per ogni pagina e, ad ogni interruzione del clock associata all'azzeramento degli R-bit(vedi NRU), viene aggiunto il valore dello R-bit ad ogni contatore di pagina. La scelta della pagina "vittima",sarà basata sulla ricerca del contatore con valore più basso. Il problema principale di questa strategia èquello che non viene mai dimenticato niente e quindi si possono verificare dei problemi di età delle pagine.Immaginiamo, infatti, un programma modulare, costituito da due parti di codice sequenziali: Inizialmenteesso lavora intensamente nella prima parte e quindi accumula valori molto alti per le prime pagine; quandopasserà ad eseguire la seconda parte, le pagine referenziate saranno molto giovani rispetto alle precedentie quindi candidate "vittime" in caso di page fault, mentre le prime pagine, che ora non occorrono più, rimar-ranno saldamente in P.M. Una modifica, chiamata AGING ALGORITHMUM, consiste nell'effettuare, per ogni interruzione del clock,uno shift a destra di un bit, del valore in esso contenuto e nell'inserimento dello R-bit a sinistra, nella posi-zione più significativa. Si può intuire che, in questo modo, le pagine che non vengono più referenziate(hanno costantemente l 'R-bit=0), perdono, ad ogni interrupt il proprio valore di un ordine di grandezza bina-rio, fino ad arrivare a 0 e quindi essere le candidate per un eventuale swap-out.

Page 24: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 59

2.3) Evoluzione dei processori Intel dal 8086 al PENTIUM

80186 - 1981Poco conosciuto, è stato progettato per uso nelle circuiterie interne e per sistemi non I.S.A. Sostanzialmentesono state aggiunte le seguenti istruzioni all’8086:BOUND reg16,mem32 Verifica che il valore di reg16 sia compreso nei limiti indicati dalle due word di

mem32 (inferiore-superiore)ENTER imm16,level Imposta lo “stack-frame” di imm16 bytes. level permette di impostare più livello di

frame, in modo da accedere, ad esempio alle variabili locali di una procedurachiamante. Nelle normali implementazioni si utilizza sempre level=0. Questaistruzione simula la sequenza:push bp ; salva registro BPmov bp,sp ; carica in bp il valore corrente di spsub sp,imm16 ; riserva un frame di imm16 bytes (accessibile tramite bp)

LEAVE Chiude lo “stack frame”. Complementare a ENTER, equivale alla sequenza:mov sp,bp ; Ripristina il valore di sp originariopop bp ; Ripristina il contenuto di bp

INS/INSW Input di una stringa, puntata da ES:DI, dalla porta di input DX, per CX bytes/word.INS, trasferisce bytes, INSW words

OUTS/OUTSW Output della stringa puntata da DS:SI sulla porta di output DX, per CX bytes/wordIMUL reg16,imm esegue reg16=reg16*imm (con segno e segnalazione di overflow/carry)IMUL ro16,ri16,imm esegue: ro16=ri16*imm (ro16 e ri16 sono registri a 16 bit)IMUL reg16,mem16,imm Esegue: reg16=mem16*imm (stesse regole per segno/overflow)PUSH imm16 Permette di inserire nello stack una costantePUSHA Push All: AX,CX,DX,BX,SP,BP,SI,DIPOPA Pop All: ordine inverso di PUSHA

80286 - 1982Introduzione della “modalità protetta”, aumento della velocità di esecuzione e frequenza più alte. Vengonointrodotte ulteriori istruzioni per la gestione della modalità protetta.

80386 - 1985La vera rivoluzione arriva con il processore 8036, in quanto segna l’inizio della famiglia a 32 bit. Il processo-re, inoltre, permette di gestire la memoria virtuale a paginazione. Il processore può utilizzare contempora-neamente registri a 16 o 32, semplicemente inserendo, prima dell’istruzione il prefisso di override (hex 66).Da notare che questo prefisso funziona sia su segmenti a 16 bit dove permette di riferirsi ai registri a 32 bit,sia su segmenti a 32 bit dove permette di riferirsi ai registri a 16 bit.Ortogonalizzazione delle modalità di indirizzamento: I registri base possono essere qualsiasi ed i registriindice possono essere “scalabili” (moltiplicati per 2/4/8) .gestione salti di tipo near: è possibile specificare dei salti relativi fra -32768 e +32767

Nuove Istruzioni:

BSF regp,reg/mem Scansione bit 1 in reg/mem, in avanti (da b0 a bn): restituisce posizione su regpBSR regp,reg/mem Scansione bit 1 in reg/mem, indietro (da bn a b0): restituisce posizione su regpBT regt/mem, reg/imm8 Copia in CF, il bit n-esimo di regt/mem, con n=reg/imm8.BTC regt/mem,reg/imm8 come BT, con Complemento del bit n-esimoBTR regt/mem,reg/imm8 come BT, con Azzeramento del bit n-esimo, dopo la copia su CFBTS regt/mem,reg/imm8 come BT, con Settaggio a 1 del bit n-esimo, dopo la copia su CFCDQ Double to Quad: Converte EAX in EDX:EAX, con propagazione del segnoCWDE Word to Double: Converte AX in EAX, con propagazione del segnoIMUL Estensione a operandi a 16/32 e ad operandi in memoriaLOOP Nuove forme per specificare l’utilizzo di ECX o CXMOVSX reg,reg/mem converte un operando a 8/16 in 16/32, con estensione del segnoMOVZX reg,reg/mem converte un operando a 8/16 in 16/32, senza estensione del segno (fill 0)PUSH/POP Estensioni per gestire operandi a 16/32 bit (vedi Prefisso 66h)

Page 25: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 60

SETCC reg/mem Setta a 1 il byte se la condizione CC è vera, altrimenti 0SHLD reg/mem,reg,imm/cl Shift a sinistra di imm/cl posizioni sui primi due operandi accostati.SHRD reg/mem,reg,imm/cl Shift a destra di imm/cl posizioni sui primi due operandi accostati.

80486 - 1989

La “rivoluzione” portata dal 386, ha bloccato l’evoluzione per 4 anni, molti, se paragonati ai passi preceden-ti. In particola modo, si è consolidato il mercato e, soprattutto, si sono assimilate le seguenti lezioni, fornitedalla risposta del mercato:- Non era necessario modificare le istruzioni principali, anzi, nessuno le avrebbe utilizzate, per mantenere la

compatibilità del software con l’installato.- Per aumentare le prestazioni, occorreva intervenire sull’hardware e sull’architettura interna.

Il 486 si presenta, così, con poche istruzioni in più ma con una rinnovata architettura interna (MV1). La tec-nologia utilizzata è analoga a quella usata per la realizzazione dei moderni RISC, compreso l’utilizzo di unamemoria cache interna ad alta velocità ed una pipeline a cinque fasi per le istruzioni. Il processore(tralasciando l’infelice esperienza del 486SX) è dotato di coprocessore interno per operazioni in virgola mo-bile.Le nuove istruzioni aggiunte sono:BSWAP reg32 Inverte l’ordine dei byte in una DWORD (per trasportabilità di formato)XADD reg/mem, reg Scambia gli operandi e somma. XADD op1,op2 è formalmente equivalente alla

sequenza:xchg op1,op2add op1,op2con la sola differenza che ora l’operazione è atomica (per gestione semafori). Inambiente multiprocessore, comunque, occorre sempre il prefisso LOCK (blocca ilBUS)

CMPXCHG regd/mem,reg Confronto e Scambio. CMPXCHG op1,op2 è equivalente alla sequenza:cmp eax,op1 ; EAX confrontato con destinazionejne not_equal ;

mov op1,op2 ; Se uguali, sorgente viene copiato in destinazionejmp exit ;

not_equal: ;mov eax,op1 ; Altrimenti destinazione viene copiato in EAX

exit:INVD Invalidate Data Cache: utile per multiprocessing/DMAWBINVD Write Back e INVD: viene aggiornata anche la memoria, prima.INVLPG Invalidate TLB: nel caso di multiprocessing e modifica della mappa delle pagine

Pentium - 1993Perseguendo le linee guida viste per il 486, il Pentium si avvicina sempre di più ad un progetto RISC, in

quanto:- Adotta un’architettura superscalare con le due pipeline U e V (necessita di codice ottimizzato)- Adotta sistemi di previsione dei salti- Doppia cache: 8KB per codice e 8KB per dati- Riduce il numero cicli su molte istruzioni- Adotta un BUS interno a 64 bitLe nuove istruzioni aggiunte, oltre ad alcune nuove forme dell’istruzione MOV, sono:CMPXCHG8B mem Confronta e scambia 8 bytes: EDX:EAX, viene confrontato con mem, se uguali,

ECX:EBX viene copiato in mem, altrimenti mem viene copiato in EDX:EAX (vediistruzione CMPXCHG)

CPUID Restituisce informazioni relative alla CPU. Eseguendo l’istruzione con eax=0, re-stituisce in EAX, il massimo valore utilizzabile per EAX (=1, attualmente). Nei re-gistri EBX,EDX,ECX, la stringa di identificazione del produttore (Genu ineI ntel).Inserendo in eax=1, restituisce:EAX(0..3) Codice identificativo (0Bh o superiore)EAX(4..7) Numero modello (1 o superiore)EAX(8..1) Numero della famiglia (5=pentium)EAX(12..31),EBX,ECX Riservati

Page 26: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 61

EDX(0) 1 = FPU sul chipEDX(1..6) Non documentatiEDX(7) 1 = fault di verifica dell’hardwareEDX(8) 1 = istruzione CMPXCHG8B supportataEDX(9..31) RiservatiNelle nuove versioni di CPU 386/486 questa istruzione viene supportata. Per veri-ficare questo, basta scrivere il bit 21 nel registro EFLAGS: se questo bit è scrivi-bile, allora il processore supporta l’istruzione CPUID

RDTSC ReaD Time Stamp Counter (non documentata ufficialmente) restituisce inEDX:EAX, il numero di cicli di clock eseguiti dall’accensione. Il codice operativo è0F 31

RDMSR ReaD from Model Specific Register. Restituisce in EDX e EAX informazioni speci-fiche, in base al registro specifico contenuto del registro ECX:ECX=0 -> Machine Check Address = Indirizo del ciclo che ha provocatol’eccezioneECX=1 -> Machine Check Type = Tipo del ciclo che ha provocato l’eccezione.La presenza di questa istruzione, presuppone una volontà di eseguire un controlloqualitativo sull’utente, nel caso il processore non funzioni correttamente (generiun’eccezione). La sua presenza è, sia rassicurante che preoccupante.

WRMSR Write do Model Specific Register. Inversa alla precedente.RSM Resume from System Management mode (SMM). È prevista una modalità di fun-

zionamento aggiuntiva (come la REALE, con indirizzamento 4GB), attivabile dahardware. L’istruzione, consente di uscire da questa modalità da software. È utiliz-zata per funzioni di sicurezza, debug e di monitor dei componenti Hardware.

Page 27: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 62

3) LA STRUTTURA DEI CALCOLATORI (Livello M.V. FIRMWARE)

A questo livello, troviamo le Unità di Elaborazione connesse opportunamente fra di loro. Se limitiamo l'analisi al modello di Von Neumann, possiamo individuare le seguenti Unità Fondamentali:

B U S

Il BUS rappresenta il mezzo trasmissivo tramite il quale è possibile stabilire i collegamenti fra le varie unità.Il progetto del BUS, in termini di numero di connessioni e di protocollo per le trasmissioni, caratterizza deci-samente il funzionamento del sistema complessivo. Non a caso, nel linguaggio comune, si tende ad asso-ciare l'architettura del sistema con il progetto del BUS (es: Architetture I.S.A., E.I.S.A, M.C.A., ....)

Le UNITÀ FUNZIONALI e di I/O sono costituite da particolari moduli dedicati ad assolvere funzioni specifi-che, e di cooperazione con le attività svolte dalla RETE di GOVERNO. Le Unità funzionali possono essere:Multiple, Indipendenti, Ripetute, Asincrone tra loro, Opzionali.

La Rete di Governo può essere paragonata al "capoufficio" del sistema: il suo compito è quello di controlloe coordinamento delle attività svolte dalle unità funzionali. La R.G. svolge il suo compito secondo il se-guente CICLO COMPLETO:

b a

Nei sistemi attuali, si preferisce inserire la fase di aggiornamento del PC immediatamente dopo la fase diFETCH, in modo da poter effettuare agevolmente il "PREFETCHING". Per comprendere meglio il funzionamento delle varie fasi, introduciamo al pacco di registri visto al livelloMV2 i seguenti registri generici:

M.A.R. : Memory Address Register: buffer afferente alle linee di indirizzo della memoria. Per in-dirizzare una locazione di memoria, occorre caricare opportunamente questo registro.

M.D.R. : Memory Data Register: Buffer afferente alle linee dati della memoria. Leggendo o scri-vendo su questo registro si legge o si scrive la locazione di memoria indirizzata dalMAR.

I.R. : Instruction Register: Buffer di parcheggio per l'istruzione correntemente in elaborazio-ne.

FASE DI FETCH: (estrazione dell'istruzione)Questa fase può essere sintetizzata dalle seguenti operazioni:

PC -> MAR, read (linea R/W a 1)MDR -> IRPC + n -> PC (n= lunghezza dell'istruzione)

FASE DI DECODING: (analisi dello IR)Questa è una fase che prende tempo, in quanto occorre predisporre gli opportuni switch, affinché la singolaistruzione sequenziale possa essere eseguita. Durante questo tempo, non si ha accesso al BUS esterno chepuò essere utilizzato da altre unità.

FASE DI SEARCH OPERAND (caricamento operandi)Questa fase può essere opzionale, nel caso in cui l'istruzione si a 0 operandi; in tutti gli altri casi, occorreeffettuare di nuovo un accesso alla memoria, secondo una tecnica analoga a quella vista per la fase diFETCH.

RETE DI GOVER-NO

MEMORIA UNITÀ FUNZIONALI | I/O

FETC DECODING SEARCH OPE- EXECUTION

AGGIORNAMENTO PC AGGIORNAMENTO PSW

Page 28: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 63

FASE DI EXECUTION (esecuzione)Anche questa è una fase opzionale, in quanto l'esecuzione può essere compiuta da una delle Unità Funzio-nali. In questa fase, comprendiamo, quindi l'eventuale memorizzazione dei risultati con una fase di "search-operand". AGGIORNAMENTO PSW (aggiornamento stato della RG)Dopo che sono state aggiornate le flags della PSW, possiamo dire che l'istruzione è effettivamente termi-nata e ci si può predisporre per eseguire la prossima istruzione.

Il ciclo precedentemente esposto, rappresenta però semplicemente una MACCHINA di TURING, incapacedi reagire in maniera asincrona agli eventi esterni. Per questo, sono stati indicati i punti (a) e (b) nei quali ilciclo può essere interrotto per uno dei possibili eventi:- Comunicazioni con l'esterno- Eccezioni/anomalie (memory parity error, violazione di protezioni.)- Allarmi nei controllo di processo (indicatori livello, temperatura)L'interruzione del ciclo permette di poter eseguire, in maniera asincrona, un altro pezzo di programma. La tecnica di attuazione degli interrupt caratterizza il livello di prestazioni consentito dalla macchina perapplicazioni in TEMPO REALE, ovvero per tutte quelle applicazioni che richiedono deterministico il massi-mo tempo di risposta ad un evento esterno.Per giudicare il grado di confidenza Real Time si utilizzano i seguenti parametri significativi:- Tempo di rilevamento (detection time) = tempo necessario affinché la R.G. rilevi la presenza dell'interru-zione in corso- Tempo di servizio = tempo necessario per eseguire il segmento di programma associato all'evento.(questo tempo dipende dalle istruzioni che devono essere eseguite)- Tempo minimo di servizio = Tempo necessario per eseguire una routine di interruzione NULLA (Returnfrom Interrupt)Per massimizzare le prestazioni, è necessario minimizzare il tempo di servizio: per questo si può agire dueparametri: tr: per minimizzare tr, occorre evitare l'utilizzo di istruzioni che possono durare un tempo non determinabilea-priori. Ovviamente, le istruzioni eseguite quando sono disabilitati gli interrupt, sono da considerarsi comeuna singola istruzione e quindi considerati nel calcolo di tr.

ts-tr: varia da macchina a macchina e dal tipo di interrupt dalle decine alle centinaia di cicli di clock.Per minimizzare questo tempo, occorre cercare di fare il minor numero di operazioni possibili efarle utilizzando tecniche ottimizzate.

tsmin-tr: Dipende da come viene effettuata la COMMUTAZIONE di CONTESTO. Dopo aver rilevato il se-gnale di interruzione, la RG deve salvare (nello stack) il contesto del programma in esecuzione ecaricare il contesto della routine di servizio. Al termine della routine di servizio, la RG dovrà ri-pristinare il contesto del programma interrotto, prima di proseguire con l'esecuzione.

COMMUTAZIONE DEL CONTESTO:Si hanno le due possibilità:a) COMMUTAZIONE DI CONTESTO INTEGRALE: La RG si occupa di salvare tutto il pacco di registri, compresa la PSW, in modo che la routine di serviziopuò utilizzarli immediatamente per eseguire le operazioni necessarie.

b) COMMUTAZIONE DI CONTESTO PARZIALE (minima): La RG salva nello stack solo IL PC e la PSW. Se la routine di servizio ha bisogno di utilizzare altri registri,dovrà provvedere a salvare nello stack i registri necessari e ripristinarli prima di terminare.I due metodi hanno vantaggi e svantaggi facilmente evidenziabili:nel caso a), si solleva il programmatore dal compito di dover eseguire le "PUSH" all'inizio della routine diservizio le "POP" alla fine; viceversa, nel caso b), non si effettuano le PUSH e POP dei registri che nonvengono utilizzati e quindi si ha la possibilità di risparmiare tempo quando possibile.La soluzione più efficiente (e più costosa) sta nel predisporre un certo numero di copie del pacchetto di re-gistri all'interno della RG stessa, in modo da poter compiere una commutazione di contesto in un singolociclo macchina (processori militari).Nell'utilizzo commerciale, si preferisce adottare la soluzione b) in modo da aver sufficienti risorse per averealtre ottimizzazioni (ampio set di istruzioni, prefetching, etc).

In genere distinguiamo due tipi di INTERRUPT:

- A VETTORE DIRETTO:

Page 29: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 64

La R.G. presenta un certo numero di linee dedicate agli interrupt. Quando una di queste linee viene atti-vata, si può immediatamente riconoscere l'evento e quindi l'indirizzo in memoria della routine associata.Questo tipo di interrupt, permette di ottenere tempi minimi di servizio molto bassi (applicazioni militari eReal Time in senso stretto).

- VETTORIZZATO A CODICE: La RG, ha un'unica linea sulla quale vengono segnalati gli interrupt. Per determinare l'evento associato equindi la locazione di memoria della routine di servizio, occorre effettuare un accesso a MDR e leggerequindi il codice presente; questo codice viene utilizzato come indice per accedere ad una tabella in memo-ria che conterrà l'indirizzo effettivo della routine di servizio.

A completamento delle problematiche di interrupt e di I/O, accenniamo brevemente alla tecnica di D.M.A.(direct memory access). Questa tecnica, viene avviata come una interruzione: la CPU, però non deve ese-guire alcuna routine, ma deve solo concedere l'accesso alla memoria da parte della periferica che necessitaI/O. è necessario distinguere due tipi di DMA:- DMA FISICO: è la tecnica adottata nei mainframe e presuppone l'esistenza dei CANALI BUFFERIZZATI DI I/O secondoil seguente schema:

unità canale

controllo

Su ogni canale possono essere collegati più di un controller I/O e ogni controller può avere collegati piùperiferiche e più canali di I/O. La memoria dovrà essere di tipo "dual port" su base prioritaria (priorità alla periferica in quanto più lenta). L'istruzione di I/O dovrà supportare un indirizzo così strutturato:

| R/W | Numero CANALE | Start block | End block |

da inserire in opportune "MAIL BOX" che verranno lette e dal controller di I/O di destinazione. Il controllereffettuerà il trasferimento dei dati in maniera autonoma ed asincrona rispetto alla RG.

- DMA LOGICO: Nei sistemi a uP, per abbassare il costo della periferia, si preferisce utilizzare lo stesso bus utilizzato dallaRG, per la lettura/scrittura in memoria. Il protocollo da seguire è il seguente:

PERIFERICA R.G. Bus Request

Bus Grant Trasferimento (bus non collegato)

DMA DONERipresa del BUS

La gestione della priorità può essere su base posizionale secondo lo schemaDaisy-Chain:

Bus Request p0 p1

priorità p0 > p1

Bus Grant

R.G. U.F. MEM

R.G. MEM I/O 1

I/O 1

I/O 1

Disco 0

Disco 1

Disco 2

I/O 1 Stampante 0

Stampante 1

Stampante 2

Page 30: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 65

3.1) LA MICROPROGRAMMAZIONE

La microprogrammazione è una tecnica particolare che permette di superare, almeno parzialmente, igrossi problemi di obsolescenza tecnologica nei progetti dei computer. Attualmente si assiste ad un tasso diobsolescenza, per quanto concerne le tecniche costruttive, di circa 3 anni: sotto queste condizioni, una rea-lizzazione che comporti un tempo di sviluppo superiore ad un anno risulta essere fortemente antieconomi-ca. Nelle macchine microprogrammate, la Rete di governo è costituita ancora da una macchina di Von Neu-mann costituita da:

• Unità funzionali (full adder, incrementatori, ..)• Memoria (Rom, Registri MAC e MDC, ...)• RG (Reti combinatorie e sequenziali) Definito il progetto architetturale generale, si può aumentare la longevità di una macchina semplicementepotenziando la rete di governo in termini di aggiunta di moduli di elaborazione e di microcodice. Possiamo distinguere i seguenti orientamenti:

- Microprogrammazione ORIZZONTALE (a parola lunga) è caratterizzata da molti bit per microistruzione ( > 60 bit) e quindi, generalmente, ogni singola istruzioneviene tradotta in una sola microistruzione. Ad esempio l'istruzione: MOV R5,R3é tradotta in una sola istruzione di microprogrammazione.

- Microprogrammazione VERTICALE (a parola corta) Il codice operativo, identifica un indice di una tabella dove è contenuto l'indirizzo della routine associata.Le possibili microistruzioni sono poche e la MicroRete di governo deve avere una logica molto veloce. Nel-l'esempio precedente, l'istruzione verrà tradotta nelle seguenti istruzioni di microprogrammazione:

Leggi R3Scrivi R5

- Microprogrammazione MISTA è la più diffusa: può essere vista come una microprogrammazione orizzontale dove, però, i bit meno signi-ficativi indicano l'indirizzo della prossima microistruzione da eseguire.

Page 31: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 66

3.2) PROGETTO DI UN MICROPROCESSORE

Per meglio comprendere le problematiche della microprogrammazione, analizziamo il seguente progettosemplificato di microprocessore. Esso è costituito dal solo registro AC sul quale poter effettuare le opera-zioni aritmetiche. Internamente, come visto già precedentemente, avremo comunque bisogno dei registriPC, MAR, MDR. Per semplicità, supponiamo di avere un BUS indirizzi costituito da 9 linee e un bus dati co-stituito da 12 linee ( 512 locazioni di memoria da 12 bit ciascuna ).

Il set di istruzioni è opportunamente ridotto e semplificato nelle seguenti:

ADD (memoria) ; Addiziona AC con il contenuto della memoriaSTR (memoria) ; Memorizza AC in memoria e azzera ACAND (memoria) ; And di AC con il contenuto di (memoria)JMP (memoria) ; Salta all'indirizzo contenuto in memoriaSKZ (memoria) ; Se il contenuto di memoria è 0 allora salta la prossima istruzione.CMA ; Complemento a 2 di ACSTOP ; Ferma l'esecuzione.

Per codificare le precedenti istruzioni sono necessari 3 bit: ogni istruzione assembler, sarà quindi costi-tuita da 3 bit di Codice Operativo e 9 bit per il campo operando, che rappresenta l'indirizzo di memoria del-l'operando vero e proprio (indirizzamento diretto). Facendo riferimento alla figura, avremo bisogno di 15 bit per attivare i singoli comandi per la alu, e per iselettori (microprogrammazione a parola lunga).

La rete sarà alimentata da un clock a 2 fasi:• Nella fase 1, i segnali usciranno dalle singole unità• Nella fase 2, si predisporranno i collegamenti

Data la semplicità del progetto, possiamo associare direttamente il codice operativo con l'indirizzo corri-spondente nella ROM di microcodice che contiene le microistruzioni da eseguire. Nei progetti più complessioccorrerà passare per una opportuna tabella di conversione. La fine di una sequenza di microistruzioni è ca-ratterizzata dall'azzeramento del MAC (Micro Address Counter) che provoca automaticamente l'inizio dellafase di FETCH che termina con il caricamento nel MAC del codice operativo (bit 11-9) shiftato di due bit asinistra e, contemporaneamente dal caricamento nel MAR del campo operando (bit 8-0). L' ALU può eseguire autonomamente le seguenti operazioni aritmetiche direttamente sull'accumulatore:

ADD: Addiziona AC con il contenuto di MDRAND: Esegue l' AND logico tra AC e MDRCMA: Complementa a 2 il registro ACCLR: Azzera il registro AC

Si consiglia lo studente, in base allo schema di figura, di effettuare la traccia delle operazioni eseguite daogni singola istruzione assembler e di provare a scrivere e ad interpretare un semplice programma applica-tivo.

Page 32: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 67

3 (R)

MICROPROCESSORE

4 (W) CLOCK A 2 FASI: F1 = uscita segnali dalle

unità ADDRESS BUS F2 = predisposizione dei

collegamenti DATA BUS

CICLO DELLA RETE DI GO-VERNO

12 bit 9 bit

8-0 (5) (0)

8-0 (10) 11-9

11-0 (9) +1 2 11-0 4 6 ADD 3 7 AND 8 CMA

14 0->AC

11

1 incremento

Set di Istruzioni ASSEMBLERFormato istruzione

OPCODE ADDRESS11 10 9 8 7 6 5 4 3 2 1 0

OPCODE SIMBOLICA DESCRIZIONE000 RISERVATA FETCH: (PC) MAR | READ | PC+1 PC | (MDR)11-9 IR | (MDR)8-0 MAR001 ADD x (AC) + [M(x)] AC010 STR x (AC) [M(x)] | 0 AC011 AND x (AC) & [M(x)] AC100 JMP x [M(x)] PC101 SKZ x if [M(x)] = 0 then PC+1 PC110 CMA - (AC) AC111 STOP HALT CPU

MEMORIA

M.D.R. M.A.R. P.C.

M.A.C.

ROM

M.D.C.

A.C.accumulatore. A.L.U.

RUN

FETCH

EXECUTE

Page 33: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 68

Operazioni associate ai bit del microcodice da 15 bitBIT 4 3 2 1 0

Segnali (MDR) M(MAR) [M(MAR)] MDR MAC+1 MAC PC+1 PC (PC) MAR

BIT 9 8 7 6 5Segnali (AC) MDR -(AC) AC (MDR)&(AC) AC (MDR)+(AC) AC (MDR) 11-9 MAC

0 MAC(MDR) 8-0 MAR

BIT 14 13 12 11 10Segnali 0 AC 0 MAC 0 RUN test di 0 su MDR (MDR) 8-0 PC

ROM di MICROCODICE : 32 locazioni da 15 bit ciascunaE D C B A 9 8 7 6 5 4 3 2 1 0

000 00 1 1 FETCH 01 1 1 1 10 1 11001 00 1 1 ADD 01 1 1 10 11010 00 1 1 STR 01 1 1 1 10 11011 00 1 1 AND 01 1 1 10 11100 00 1 1 JMP 01 1 1 10 11101 00 1 1 SKZ 01 1 1 1 10 1 11110 00 1 1 1 CMA 01 10 11111 00 1 1 STOP 01 10 11

Page 34: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 69

3.3) ARCHITETTURE STANDARD

Abbiamo visto precedentemente come il progetto del BUS sia fondamentale per la definizione diun’architettura di in computer. Infatti i costruttori di periferiche, più che ad un particolare processore basanoil progetto e la realizzazione delle schede di interfaccia in base all’architettura di BUS disponibile. Nei PCl’adozione di standard ha contribuito notevolmente all’abbassamento dei prezzi dei componenti e quindidell’intero sistema e quindi alla sua diffusione.Vediamone una breve storia:

XT bus: presente nei primi PC basati su processore 8086. Attualmente è obsoleto. Permette di trasferiredati a 8 bit e supporta 20 bit di indirizzamento. La frequenza massima è 4.77 MHz.

ISA bus: anche conosciuto come AT-bus, è l’acronimo di “Industry Standard Architecture”. Permette ditrasferire sia a 8 che a 16 bit e supporta 24 bit di indirizzamento (16MB). La velocità di trasferi-mento dipende dal protocollo adottato:

- 8 MHz per trasferimenti asincroni”- 5 M/s in burst-mode

Supporta il “bus master” e gestisce interrupt attivati a “gradino”. Non permette la condivisionedegli interrupt e quindi pone un limite sul numero di dispositivi che si possono connettere. E’(era) adatto per periferiche poco costose.

MCA bus: “Micro Channel Architecture” , è stato progettato da IBM e non è compatibile con le altre archi-tetture. Per questo può essere considerato uno “standard imposto” e quindi le periferiche sonopiù costose di quelle ISA. Permette di trasferire a 16 o 32 bit e supporta 32 bit di indirizzamento.La velocità di trasferimento è di 80 M/s in “burst-mode” sincrono; supporta il “bus master” com-pleto ed ha una buona gestione del protocollo DMA (bus arbitration). E’ autoconfigurabile e rap-presenta un primo passo verso le speciiche “Plug & Play”. Attualmente è praticamente scompar-sa.

EISA bus: “Enhanced Industry Standard Architecture”, è stato progettato per competere l’architettura pro-prietaria “MCA” ed ha avuto più sucesso della MCA. Permette di trasferire a 32 bit e supporta 32bit di indirizzamento. La velocità di trasferimento è di 32 M/s in “burst-mode” (sustained); sup-porta il “bus master” completo ed ha una buona gestione del protocollo DMA (bus arbitration). E’autoconfigurabile e permette la condivisione degli Interrupt e dei canali DMA. Il bus accetta an-che il protocollo ISA ed è stato adottato largamente anche in architetture non INTEL. Il suo altocosto, però lo rende adatto per interfacce che necessitino alte velocità così come gli adattatoriSCSI.

VLB: “VESA Local Bus”, è ideale per le schede video ma ha una non buona gestione del “bus arbitra-tion”. Permette di trasferire a 32 bit e supporta 32 bit di indirizzamento. La velocità di trasferi-mento è di 25-40 MHz in asincrono, 130 M/s in “burst-mode” e di 32 M/s in “sustained-mode”.Gestisce il “bus master” semplice, può coesistere con schede ISA/EISA e ha un numero di slotlimitati (2 o 3, al massimo). Il costo è più basso rispetto ad EISA.

PCI: “Peripheral Component Interconnect local bus”, è l’ultimo arrivato e può essere considerato co-me una combinazione tra la velocità del VLB e la buona sincronizzazione dell EISA. Può trasferi-re a 32/64 bit e supporta 32/64 bit di indirizzamento. La velocità di trasferimento è di 33 MHz insincrono (66 MHz in PCI 2.1, 3.3Volt), 132 M/s in “burst-mode” (sustained) (264 M/s a 64 bit).supporta il “bus master” completo ed ha una buona “bus arbitration”. E’ autoconfigurabile e per-mette la condivisione degli Interrupt e dei canali DMA. Può coesistere con ISA/EISA/MCA o conun altro PCI bus ed ha un numero di slot limitato a 3 o 4 schede. Accetta schede sia a 5Volt chea 3.3 Volt (per 66 MHz). Ha avuto buona accettazione anche per architetture non INTEL.

AGP: “Accelerated graphics port” è un’estensione del bus PCI svilupppata da INTEL per risolvere lelimitazioni del PCI nel trattare le grandi quantità di dati della grafica a 3D. In breve, AGP per-mette una connessione diretta tra la scheda grafica e la memoria del sistema permettendo quin-di un buo rendimento delle animazioni 3D in tempo reale.

Page 35: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 70

LEGENDA

autoconfigurabile: dà la possibilità al software di identificare la scheda e le sue caratteristiche per risolvereeventuali conflitti di risorse (IRQ/DMA/Indirizzo I/O ...). Ideale per il “Plug & Play”.

Bus master semplice: permette il trasferimento in DMA di tipo “First Party”

Bus master completo: permette il trasferimento in DMA di tipo “First Party” da qualsiasi dispositivo, inclu-sa un’altra CPU.

Buona bus arbitration: trattamento corretto dell’accesso al bus in caso di conflitto: non è necessario rila-sciare il bus a meno che un altro dispositivo non lo richieda. Questo permette di avere il 100%della banda disponibile pur non bloccando (starvation) la CPU. La gestione standard del bus, in-vece, prevede che la periferica rilasci il bus volontariamente dopo un certo periodo “bus on time”e rimane inattiva per un altro periodo di tempo “bus off time” per permettere ad altre periferiche(inclusa la CPU) di accedere al bus, anche se non ne hanno bisogno.

First-Party DMA: (chiamato ache “Bus Master” DMA) si intende un protocollo di gestione del bus controllatodalla periferica che lo ha richiesto. Questo consente una migliore prestazione nel trasferimentoed è usato nei bus PCI.

Third-Party DMA: In alternativa al precedente, è il protocollo normale di DMA gestito nei bus ISA e sta adindicare che il controllo del bus è preso da una “terza parte” (il DMA controller”) che effettuarealmente il trasferimento dei dati tra il richiedente e la destinazione. Per questo tipo di DMA, siusano i canali standard messi a disposizione dalla scheda madre.

Page 36: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 71

3.4) I/O STANDARD

3.4.1) Seriale EIA RS232

Schematicamente, possiamo considerare l’interfaccia seriale come composta da un convertitore SERIA-LE/PARALLELO per la linea di ingresso e da un convertitore PARALLELO/SERIALE per la linea di uscita.Le linee seriali di ingresso e uscita, sono trattate a valle del componente da opportuni circuiti in modo daportarle conformi agli standard di tensione previsti per le porte seriali EIA (Electronic Industries Association)RS-232-C. Ricordiamo che una trasmissione asincrona si realizza "imbustando" ogni singolo byte in un "frame" ca-ratterizzato da un bit di start (livello space) e da un bit di stop (livello mark).In condizioni di riposo, la linea seriale si trova allo stato MARK (1 = -12Volt): l'arrivo di un carattere è an-nunciato dal bit di start che porta la linea allo stato SPACE (0 = +12Volt), per la durata corrispondente al pe-riodo previsto per la comunicazione (T = 1/f, f = velocità di trasmissione in bit/secondo = baud rate). Dopo ilbit di start, arrivano i bit costituenti il carattere (5,6,7,8 a seconda della modalità). In ultimo, arriva il bit distop che serve a garantire un minimo di spaziatura tra i singoli caratteri e quindi poter riconoscere il prossi-mo bit di start. La trasmissione è ASINCRONA, in quanto i caratteri possono arrivare in qualsiasi momentoe con qualsiasi intervallo l'uno dall'altro.La porta seriale RS-232 standard, prevede segnali di controllo per la gestione dei modem e dei protocollirelativi. Quando si collega una linea ad un modem, si usa la seguente terminologia:

DTE = Data terminal Equipment: Indica il nostro computer, in questo caso.DCE = Data Communication Equipment: Indica il resto, ovvero modem trasmettitore, modem

ricevitore, e apparato collegato. Utilizzando questa terminologia non si corre il rischio di interpretare ambiguamente i vari elementi che co-stituiscono un collegamento seriale. Possiamo anche trascurare la presenza del modem, in quanto esso nonè specificatamente nominato. In quest'ultimo caso, i collegamenti dovranno prevedere un "null-modem",ovvero uno scambio di linee di segnali opportuno.Per collegare un modem ad una porta seriale è necessario disporre di opportuni circuiti per controllare laconnessione sulla linea telefonica.I segnali di controllo tra DTE e DCE previsti dalla raccomandazione CCITT (Consultative Committee forInternational Telegraph and Telephone) V.24 (analoga alla EIA RS232-C) sono i seguenti:

CircuitoCCITT

SiglaEIA

DB-25

DB9

DirezioneSegnale

Descrizione

101 GND 1 Bidirezionale Terra di protezione: è la massa eletrica che permette di ridurre l’interferenzadei segnali esterni

102 SG 7 5 Bidirezionale Massa Segnali (ritorno comune)103 TD 2 3 DTE -> DCE Dati trasmessi104 RD 3 2 DTE <- DCE Dati ricevuti105 RTS 4 7 DTE -> DCE Request To Send = richiesta di trasmissione (per protocolli 106 CTS 5 8 DTE <- DCE Clear To Send = Pronto per la trasmissione, in risposta al RTS (107 DSR 6 6 DTE <- DCE Data Set Ready = Indica che il DCE è pronto per dare inizio alla trasmissione

(acceso e funzionante)108/1 --- 20 4 DTE -> DCE Comando di connessione alla linea telefonica (Alza la cornetta)108/2 DTR 20 4 DTE -> DCE Data Terminal Ready = DTE è pronto ed in grado di operare. I circuiti 108/1 e

108/2 vanno usati in alternativa109 DCD 8 1 DTE <- DCE Data Carrier Detect = Rilevata la portante sul ci113 (*) TXCLK DTE -> DCE Segnale di sincronismo per la trasmissione inviato dal DTE (alternativo al 114)114 (*) TXCLK DTE <- DCE Segnale di sincronismo per la trasmissione inviato dal DCE (alternativo al

113)115 (*) RXCLK DTE <- DCE Segnale di sincronismo per la ricezione dei dati125 RI 22 9 DTE <- DCE Indicatore di chiamata (Squillo telefonico)(*) questi circuiti sono opzionali ed attualmente non vengono usati.

Schematicamente, i segnali vengono usati nel seguente modo:

Page 37: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 72

Se il DTE deve connettersi al DCE, prima verifica il DSR è ON, quindi effettua la connessione attivando ilDTR. Quando il DCE è riuscito a connettersi, attiva il DCD e quindi a questo punto può iniziare la vera epropria trasmissione dati usando i segnali TXD e RXD.Nel caso di trasmissione “Half-Duplex” (a due fili), si ha un solo canale a disposizione che deve essereusato alternativamente per trasmettere o per ricevere: occorre allora usare i segnali RTS e CTS in modo da“arbitrare” il flusso dei dati.Se è il DCE a chiamare, avremo una condizione ON sul segnale RING. Il DTE, allora per connettersi dovràattivare il DTR e quindi aspettare la condizione DCD ON.La trasmissione dati termina quando avviene una delle due condizioni:• Il DTE spegne il segnale DTR• il DCE spegne il segnale DCD

Oltre alla raccomandazione V.24 CCITT ha definito le seguenti raccomandazioni:

V.28 - Livelli elettrici dei segnali (V.24, V.28, and ISO 2110 are equivlaent to EIA RS232)V.42 - Metodo per la protezione dei dati indipendente dallo schema di modulazione usatoV.42bis - Schema di Compressione chiamato anche BTLZ.

Ed inoltre le seguenti relative allo schema di modulazione ed alle velocità di trasmissione

velocità di trasmissione in bps Baud Modulazione duplex utilizzo ------------------------------------------------------------------------ V.17 14400 2400 TCM half FAX 12000, 9600, 7200 2400 TCM half FAX 4800 2400 QAM half FAX V.21 300 300 FSK full V.22 1200 600 DPSK full V.22bis 2400 600 QAM full V.23 1200/75 1200/75 FSK asymmetric BTX V.27ter 4800 1600 DPSK half FAX 2400 1200 DPSK half FAX V.29 9600 2400 QAM half FAX 7200 2400 QAM half FAX V.32 9600 2400 TCM/QAM full 4800 2400 QAM full V.32bis 14400 2400 TCM full 12000, 9600, 7200 2400 TCM full 4800 2400 QAM full

FSK Frequency Shift Keying DPSK Differential Phase Shift Keying QAM Quadrature Amplitude Modulation TCM Trellis Coded Modulation

Dallo schema precedente si può notare che esiste una netta differenza tra “bps” e baud. Il termine bps staper “Bit per Secondo” mentre il termine baud deriva da J. M. E. Baudot uno dei fondatori delle tecniche ditelecomunicazione e sta ad indicare il “numero di cambiamenti di stato della linea al secondo”. In pratica,mentre il computer comunica con il modem ad una velocità espressa in bps, il modem provvede a raggrup-pare più bit insieme e quindi a spedire più di una informazione binaria per cambiamento di stato. Ad esem-pio, nella V22bis, la modulazione “QAM” trasmette gruppi di 4 bit alla volta.Nella V.32 a 9600 vengono trasmessi 4 bit alla volta cosicché il baud rate di 2400 diventa 9600 bps. Percapire come questo possa avvenire, immaginiamo di definire 16 toni o note diverse, ciascuna associata adun simbolo a 4 bit e di trasmettere una sequenza di note alla velocità di 2400 note/secondo. In linea di prin-cipio, quindi, per aumentare i bps basta aumentare il numero di bit da raggruppare. Ad esempio, avremo:

• 14400 bps : 14400/2400 = 6 -> gruppi da 6 bit e quindi occorre definire 2^6 = 64 “toni” diversi• 28800 bps : 28800/2400 = 12 -> gruppi da 12 bit e quindi 2^12 = 4096 “toni” diversi• 57600 bps : 57600/2400 = 24 -> gruppi da 24 bit e quindi 2^24 = 16 M “toni” diversi

Il termine “tono” sta ad indicare la combinazione tra frequenza, fase ed ampiezza che identificano univoca-mente un segnale elettrico “analogico” (fasore).

Page 38: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 73

Per implementare tali carattteristiche si usano delle tecniche di modulazione molto complesse (ad esempiola codifica “Trellis” utilizza 916 simboli in 4 dimensioni) che prevedono anche la possibilità di“autocorrezione” di errori.

3.4.2) CONTROLLORE INTERRUZIONI 8259

Il componente, predisposto per la famiglia di processori 80x86, provvede a convogliare 8 linee, associabiliad altrettanti eventi esterni, nell'unica linea di INT prevista dai processori 80x86. La linea INT del processore 80x86 prevede un tipo di interruzione vettorizzata a codice: l'8259 provvede afornire questo codice in base alla linea attivata in ingresso. Il BIOS imposta nel componente i seguenti valo-ri di default:

LINEA VETTORE Periferica associataIRQ0 08h Timer 0IRQ1 09h TastieraIRQ2 0Ah Interfaccia grafica a coloriIRQ3 0Bh Porta seriale COM2:IRQ4 0Ch Porta seriale COM1:IRQ5 0Dh Porta parallela LPT2:IRQ6 0Eh Floppy DiskIRQ7 0Fh Porta parallela LPT1:

La priorità maggiore, nel caso si verifichino simultaneamente più eventi, va da IRQ0 a IRQ7. In ogni caso, ilcontrollore gestisce la coda delle richieste, in modo da non perdere le segnalazioni.

I registri programmabili sono accessibili tramite I/O sulle porte:20h Si scrive 20h per segnalare "interruzione servita". A questo punto l'8259 può generare la

prossima interruzione eventualmente in coda.21h Maschera abilitazione interruzioni: serve per abilitare le singole linee di ingresso per la

generazione dell'interruzione, secondo una maschera binaria (B0=IRQ0) dove 1 abilita e0 disabilita. Ad esempio, per abilitare IRQ0, IRQ1, IRQ6, si farà:

MOV AL,43h OUT 21h,AL

La porta è anche di lettura, in modo da permettere la singola abilitazione o disabilitazio-ne senza pregiudicare lo stato delle altre linee

Page 39: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 74

3.4.3) COMUNICAZIONE SERIALE CON l' 8250 (UART)

Il controllore per comunicazioni seriali 8250 è un componente programmabile per la famiglia di processori80x86 che permette di gestire agevolmente le comunicazioni seriali ASINCRONE. Schematicamente, possiamo considerare il componente come composto da un convertitore SERIA-LE/PARALLELO per la linea di ingresso e da un convertitore PARALLELO/SERIALE per la linea di uscita.Le linee seriali di ingresso e uscita, sono trattate a valle del componente da opportuni circuiti in modo daportarle conformi agli standard di tensione previsti per le porte seriali RS232.

La programmazione del componente, avviene tramite i seguenti registri accessibili tramite porte di I/O

registro i/o Porta(COM1:) bit 7 di LCRTRANSMITTER BUFFER O 3F8h 0RECEIVER BUFFER I 3F8h 0DIVISORE BAUD RATE Low O 3F8h 1DIVISORE BAUD RATE High O 3F9h 1INTERRUPT ENABLE O 3F9h 0INTERRUPT IDENT I 3FAh xLINE CONTROL REGISTER O 3FBh xMODEM CONTROL REGISTER O 3FCh xLINE STATUS REGISTER I 3FDh xMODEM STATUS REGISTER I 3FEh x

Il registro di trasmissione e ricezione hanno lo stesso indirizzo di porta in quanto è sufficiente il tipo di ope-razione (IN o OUT) per la selezione. I divisori di BAUD RATE si sovrappongono agli indirizzi di altre porte inquanto il loro accesso è consentito solo in fase di inizializzazione.

Per inizializzare il componente, occorre seguire i seguenti passi:

1) IMPOSTAZIONE BAUD RATE: Si imposta a 1 il bit 7 di LCR, quindi si imposta il divisore di 115200 necessario per ottenere il baud ratedesiderato. Ad esempio, per impostare un baud rate di 9600, abbiamo 115200/9600 = 12, e quindi:

MOV AL,80h ; set bit 7 di Line Control RegisterMOV DX,3FBh ; è una porta > 255 quindi occorre DXOUT DX,AL ; ------------------------------------MOV AL,0Ch ; Imposto parte bassa del divisore b.r.MOV DX,3F8h ; Punto alla parte bassa del divisoreOUT DX,AL ; -------------------------------------XOR AL,AL ; Parte alta del divisore = 0INC DX ; Porta successiva = BRD highOUT DX,AL ; Fine programmazione baud rate

2) INIZIALIZZAZIONE Line Control Register Si imposta LCR conforme agli altri parametri di trasmissione, seguendo la seguente disposizione di bit:

b1,b0 = Numero di bit/carattere: 00=5, 01=6, 10=7, 11=8b2 = Bit di stop: 0=1 bit, 1=2 bit (1.5 se 5 bit/caratt.)b3 = Parità: 0=No, 1=Sib4 = Tipo parità: 0=odd, 1=evenb5 = Testimone parità: 0=No, 1=forza parità= /b4 se b3=1b6 = Break: se messo a 1, forza la linea allo stato SPACEb7 = Selezione Baud Rate Divisor

Ad esempio, volendo impostare la linea a 8 bit/carattere, 1 bit di stop, senza parità:MOV AL,03h ; 03h = (0000 0011)bMOV DX,3FBh ; punto a LCROUT DX,AL ; vedi comando Dos: MODE COM1 96,n,8,1

Page 40: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 75

3) INIZIALIZZAZIONE Modem Control Register La porta seriale RS232 standard, prevede segnali di controllo per la gestione dei modem e dei protocollirelativi. Quando si collega una linea ad un modem, si usa la seguente terminologia:

DTE = Data terminal Equipement: Indica il nostro computer, in questo caso.DCE = Data Communication Equipement: Indica il resto, ovvero modem trasmettitore, modem

ricevitore e apparato collegato. Utilizzando questa terminologia non si corre il rischio di interpretare ambiguamente i vari elementi che co-stituiscono un collegamento seriale. Possiamo anche trascurare la presenza del modem, in quanto esso nonè specificatamente nominato. In quest'ultimo caso, i collegamenti dovranno prevedere un "null modem",ovvero uno scambio di linee di segnali opportuno.

I segnali di controllo del DCE sono i seguenti:b0 = 1 attiva il segnale Data Terminal Ready: segnala al DCE che il DTE è acceso e pronto per

comunicare.b1 = 1 attiva il segnale Request To Send: utilizzato per protocolli Half Duplex, richiede al DCE il

permesso di trasmettere (Grant su CTS). Per protocolli Full Duplex, deve essere sempre a 1.b2 = OUT1 = linea a disposizione dell'utenteb3 = OUT2 = deve essere a 1 per collegare la pista INTERRUPT all'input IRQ4 del 8259.b4 = 1 attiva il loop-back : cortocircuita l'UART a scopo di test.b5,b6,b7 = non utilizzati, devono essere messi a 0.

Continuando l'esempio precedente, volendo provare localmente un programma di gestione, dovremomettere l' UART in Corto in modo da ricevere gli stessi caratteri che si inviano.

MOV AL,13h ; 1Bh se si gestiscono gli INTERRUPTINC DX ; perché già puntava a 3FBhOUT DX,AL ;

4) Inizializzazione INTERRUPT è possibile discriminare quando l' UART deve inviare il segnale di interrupt secondo i seguenti eventi:

b0 = 1 = INT quando è pronto da leggere un carattere.b1 = 1 = INT quando il buffer di trasmissione è vuoto (si può trasmettere il prossimo carat-

tere). b2 = 1 = INT quando si verifica un errore in ricezione: overrun, parity, framing, break.

b3 = 1 = INT quando cambia lo stato delle linee di input dei segnali di controllo modem.b4,b5,b6,b7 = Non utilizzati, devono essere messi a 0

Se non si gestiscono gli interrupt, questo registro non viene utilizzato, altrimenti, lo si programma conse-guentemente. Normalmente, per evitare problemi di sovrapposizione e sincronizzazione, si preferisce abili-tare solo b0, e utilizzare il metodo poll per la trasmissione dei caratteri. Infatti, se non si hanno caratteri datrasmettere e b1=1, si genererebbero continuamente INT causati dal buffer di trasmissione vuoto, bloccan-do qualsiasi esecuzione. Per utilizzare b1, occorre progettare una tecnica di trasmissione a stringhe che,prima di inviare l'ultimo carattere, disabiliti b1, in modo da non essere interrotti successivamente, quantol'ultimo carattere sarà trasmesso e non si hanno altri caratteri da inviare.

Terminata l'inizializzazione, si può iniziare la routine di gestione vera e propria, tenendo conto degli altriregistri:

- Modem Status Register Indica lo stato dei segnali inviati dal DCE al DTE:

b0 = 1 = Variato lo stato della linea CTSb1 = 1 = Variato lo stato della linea DSRb2 = 1 = Variato lo stato della linea RINGb3 = 1 = Variato lo stato della linea DCDb4 = Stato della linea Clear To Send: Serve per confermare una richiesta RTS. In Full duplex, la

linea si assume 1b5 = Stato linea Data Set Ready: Indica che il DCE è pronto a ricevere dati. (utilizzato anche per

collegare stampanti seriali con protocollo READY/BUSY)b6 = Ring Indicator: Va a 1 quando il DCE riceve lo squillo di chiamata (solo per MODEM).

Page 41: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 76

b7 = Data Carrier Detect: indica che il DCE è in collegamento reale in quanto la comunicazioneè sostenuta dalla frequenza portante (solo per MODEM).

Un esempio di come utilizzare questo registro si può fare, ipotizzando di voler gestire una stampante se-riale tramite protocollo READY/BUSY: prima di poter trasmettere un carattere, anche se il buffer di trasmis-sione e vuoto, occorre attendere che la linea b5 vada a 1. Se non si vuole aspettare, basterà programmareil registro INTERRUPT ENABLE sul bit 3 e associare la routine di servizio corrispondente.

Se si abilita l'interruzione su più di un evento la routine di servizio chiamata dovrà riconoscerne la causa.Per questo viene utilizzato il registro:

- INTERRUPT IDENTb0 = Interruzione pendente (non è un falso allarme)b1,b2 = motivo dell'interruzione:

00 = Variato lo stato delle linee MODEM01 = Buffer di trasmissione vuoto10 = Buffer di ricezione pronto11 = Errori in ricezione.

Una volta letta la causa dell'interruzione ed eseguita l'operazione necessaria, l'interruzione verrà conside-rata servita. Se sono presenti ulteriori cause di interruzione, b0 rimarrà attivo e b1,b2 conterranno il codicedell'evento associato. Per resettare la condizione di interruzione, occorre fare:

00 -> leggere il registro MSR01 -> scrivere un carattere su TRASMITTER BUFFER10 -> leggere il carattere da RECEIVE BUFFER11 -> leggere il registro LSR

- Line Status Register Questo registro viene utilizzato soprattutto quando si desidera gestire la linea a controllo di programma inquanto si hanno le informazioni necessarie per effettuare il polling:

b0 = Buffer di ricezione prontob1 = Errore di overrun (sovrapposizione): è arrivato un altro carattere prima che si sia letto il

precedente. b2 = Errore di parità, se e abilitata la parità

b3 = Errore di framing (struttura): il carattere non risulta correttamente incapsulato tra bit di starte bit di stop.

b4 = Rilevato BREAK: la linea di input si è portata allo stato di SPACE.b5 = Buffer di trasmissione vuoto: si può inviare un atro carattere.b6 = Shift register di trasmissione vuoto: l'ultimo carattere trasmesso, è arrivato a destinazione.b7 = Errore di fuori tempo: errore generico che indica una condizione di perdita di dati in ricezio-

ne/trasmissione.

Page 42: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 77

3.4.4) Parallelo - IEEE P1284

Lo standard P1284 “Standard Signaling Method for a Bi-directional Parallel Peripheral Interface for Perso-nal Computers” è stato creato poiché non esistevano ancora degli standard definiti per la comunicazioneparallela bidirezionale tra computer e periferiche di stampa. I metodi esistenti precedentemente, infatti, uti-lizzavano degli schemi di segnali unici ed incompatibili tra di loro. Questo standard è stato definito per apri-re la strada alla comunicazione “aperta” tra computer e la maggior parte di stampanti o periferiche“intelligenti”.

Basicamente, lo standard aggiunge la capacità di gestire flussi dati bidirezionali all’esistente interfaccia pa-rallela “Standard Centronics” (Standard de facto). La caratteristica di bidirezionalità è aggiunta con l’intesache le attuali installazioni hardware possano utilizzare questa caratteristica semplicemente aggiungendo ildriver software opportuno, senza modificare l’hardware.

La nuova modalità operativa prevista dallo standard prevede la possibilità di raggiungere velocità di trasfe-rimento dati dai 2 ai 4 Mbytes/secondo in ambedue le direzioni; ovviamente per raggiungere tali velocitàoccorrerà cambiare l’hardware ed il software esistente.

La disponibilità di uno standard bidirezionale dovrebbe incoraggiare lo sviluppo di nuove periferiche e devi-ce multi funzione che possano trasferire ai computer un numero significativo di dati.

Lo standard P1284 definisce:

• • La modalità “compatibile” che permette di mantenere le interfacce tradizionali unidirezionali.• Nibble and Byte Modes che permette la comunicazione sia a 4 che a 8 bit e può essere combinata con

la modalità “compatibile” per permettere la comunicazione bidirezionale anche con le attuali interfacceunidirezionali, semplicemente aggiornando opportunamente il driver software.

• Enhanced Capabilities Port, ECP, Mode prevede la possibilità di stabilire una comunicazione bidire-zionale simmetrica a velocità fino a 4 Mbyes/s.

• Enhanced Parallel Port, EPP, Mode prevede la possibilità di stabilire una comunicazione bidirezionaleasimmetrica gestita dalla periferica.

• Negoziazione prevede la possibilità di negoziare tra computer e periferica la modalità da usare e la ve-locità di trasferimento masssima.

• Device Identification String prevede un metodo per cui ogni periferica può restituire al computer unastringa di identificazione in modo da consentire l’installazione automatica dei drivers necessari. (Pug &Play)

Vediamo ora in dettaglio le singole specifiche:

- NIBBLE / BYTE MODEI dati sono inviati dal computer su 8linee di dati alla periferica alla velo-cità massima di 200Kbytes/s. Per iltrasferimento inverso (da perifericaa computer) si possono usare duemetodi:1. Nibble mode: vengono usate le

4 linee di stato della stampante ela velocità massima è di circa 15KBytes/s. Questa funzionalitàpuo’ essere implementata esclu-sivamente via software.

2. Byte Mode: vengono usate lestesse linee dati usate per lacomunicazione computer->stampante. La velocità massi-ma è la stessa del trasferimentodiretto (100KB/s).

Page 43: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 78

Per usufruire della modalità “Byte” è necessario avere una porta parallela che gestisca la direzione dei dati(ormai comune nei moderni PC). Il computer ha il completo controllo sulla direzione dei dati: è quindi ne-cessario che il driver corrispondente attivi la direzione “inversa” per poter ricevere dati dalla periferica. Lagestione della “bidirezionalità” costituisce un “overhead” nel trasferimento dei dati, ma consente l’utilizzo diporte attualmente installate.

Grande attenzione è stata posta nello sviluppo di questi metodi per permettere il “recovery” in caso di utiliz-zo di “Switch Box” da parte dell’utente.

- ECP MODEIn questa modalità i dati possonoessere trasferiti nelle due direzionisenza dover far intervenire il com-puter. In caso di richiesta contem-poranea di trasferimento, viene dataprecedenza al computer. La velo-cità va dai 2 ai 4 MB/s. Questa mo-dalità prevede le seguenti features:1. Il protocollo usato e la velocità di

trasferimento è adattivo in basealle performance del computere/o della periferica ed alla lun-ghezza del cavo.

2. Il protocollo prevede il tratta-mento dello “stallo” nel canale dicomunicazione: una sequenza discambio di segnali prevede di ri-pristinare eventuali situazioni distallo.

3. E’ previsto un meccanismo di indirizzamento che consente di avere 128 canali diretti/inversi. L’indirizzodi ogni canale può essere modificato dinamicamente. Tale caratteristica dovrebbe prevedere la possibi-lità di usare più dispositivi in una periferica multifunzione.

4. E’ previsto un metodo di compressione semplice che comprime in un singolo byte stringhe compostedallo stesso carattere, fino a 128 caratteri uguali. Questo schema, comunque, non preclude l’utilizzo dieventuali altri sistemi di compressione futuri.

- EPP MODEQuesta modalità prevede una gestione dei segnali analoga a quella usata nei bus dei microprocessori doveil bus dati è multiplexato con il bus indirizzi. In questi sistemi, infatti, il processore prima genera l’indirizzoche viene catturato dalla periferica quando il processore attiva il segnale “Address Stobe”; successivamen-te, la periferica genera i dati sul bus e segnala al processore la disponibilità dei dati tramite il segnale “DataReady”.Il modo EPP ha un funzionamento analogo: tutti i clicli di trasferimento sono iniziati dal computer che gene-ra un indirizzo ed il relativo segnale di “Strobe”.L’utilizzo di tale modalità permette di collegare direttamente alla porta parallela (senza dover aprire il com-puter) delle interfacce di rete locale, delle unità a nastro, ...

- NEGOZIAZIONEIl computer determina quali modi operativi e quali opzioni sono disponibili attraverso una fase di“negoziazione” in cui chiede alla periferica quali modi e quali opzioni supporta. Alla fine della negoziazione,il computer è in grado di stabilire quali sono il modo migliore compatibile.Il protocollo di negoziazione è stato studiato in modo tale che eventuali dispositivi non compatibili con loP1284 la ignoreranno ed il computer quindi userà il metodo base.La sequenza di negoziazione è automatica e non necessita intervento da parte dell’utente ed è quindi coe-rente la strategia di tipo “Plug & Play”.

Page 44: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 79

- DEVICE IDENTIFICATION

Prima che una periferica inizi la comunicazione il computer non conosce il tipo di periferica connessa nécome comunicare con essa. L’opzione di “Identificazione”, permette di richiedere alla periferica le informa-zioni identificative sfruttando uno dei modi di trasmissione inversa visti precedentemente (Nibble, Byte oECP).La periferica si identifica inviando una stringa di bytes indicanti il Costruttore, il Tipo, il Set dei comandi,ecc.Il formato della stringa prevede un codifica ascii “case sensitive” , con i primi due byte indicanti la lunghez-za totale e quindi una “parola chiave” seguita dal corrispondente valore o lista di valori separati da virgola eterminati da punto e virgola. Ad esempio:

x’00‘,x’83‘MANUFACTURER:Texas Instruments;COMMAND SET:PS LV2, PCL5;MODEL:microLaser Turbo;COMMENT:Anything You Like;ACTIVE COMMAND SET:PS LV2;

Questa stringa potrebbe essere usata per l’installazione automatica dei corrispondenti drivers senza inter-vento da parte dell’utente. (sempre più verso il “Plug & Play”)

L’interfaccia fisica prevede tre tipi di connettori:• 1284-A = DB25 series (25 pin)• 1284-B = 36-pin .085 Center Line (conosciuto come “Standard Centronics”)• 1284-C = 36-pin .050 Center Line - High Density (nuovo tipo, per unificare ambedue il computer e la pe-

riferica)Ai connettori vanno collegate 18 coppie di fili "twisted" (attorcigliati a spirale), schermate e contenuti in unaguaina.Sono previsti i cavi per tutte le combinazioni tra connettori A, B e C.

Page 45: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 80

3.4.5) SCSI (Small Computer System Interface)

E’ uno dei primi standard industriali, nato circa 13 anni fa per permettere di costruire e distribuire delle pe-riferiche (Dischi, Nastri, etc.) indipendenti dalla particolare architettura di destinazione. Qualsiasi sistema,infatti, una volta che ha installato l’interfaccia SCSI ha a disposizione un “bus” esterno standard su cui potercollegare le relative periferiche. L’accesso alle periferiche avviene tramite comandi “standard”. Esigenze dimercato, purtroppo hanno causato una “babele” di estensioni agli standard ed un incompatibilità tra driversoftware e controller che impediscono in pratica di usare una periferica se non ne è disponibile il driver daparte del costruttore del controller.Il comitato T10 del “National Committee on Information Technology Standards” (NCITS, pronuncia "insaits")che opera sotto l’approvazione dell’ANSI definisce le gli standard a cui i produttori debbono attenersi. Sonostate pubblicate 3 versioni di standard (SCSI-1, SCSI-2 e SCSI-3) a cui corrispondono le seguenti sigle emodalità operative:

Standard SIGLA Mbytes/s n. bit l.max(metri) TipoSCSI-1 SCSI-1 5 8 6 Single endedSCSI-2 Fast SCSI 10 8 3 Single endendSCSI-2 Fast Wide SCSI 20 16 3 Single endedSCSI-3 Ultra SCSI 20 8 1.5 Single EndedSCSI-3 Wide Ultra SCSI 40 16 1.5 Single EndedSCSI-3 Uitra2 SCSI 40 8 12 DifferentialSCSI-3 Wide Ultra2 SCSI 80 16 12 DifferentialSCSI-3 Uitra3 SCSI 160 16 12 Differential

Le lunghezze massime sono indicative e possono essere aumentate in caso di singolo device (punto-punto)o in applicazioni specifiche.A parte la standardizzazione, l’importanza dei controller SCSI sta nel fatto che è possibile implementare unDMA fisico usando il controller come unità di canale e comunicando tramite “mailboxes” le richieste di lettu-ra e scrittura. Sarà l’unità di canale che provvederà ad ottimizzare le richieste in un ambiente multitaking.L’utilizzo di un bus SCSI in singolo-user non porta effettivi benefici in termini di prestazioni.

Page 46: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 81

3.4.6) USB (Universal Serial Bus)

USB è un insieme di specifiche per connettere periferiche ad un PC, scaturite dalla collaborazione tra Com-paq, DEC, IBM, Intel, Microsoft, NEC and Northern Telecom. Un PC che abbia una porta USB è in grado diconnettere e configurarsi automaticamente a delle periferiche, non appena queste vengono collegate fisi-camente, senza necessita di riavviare il computer né tantomeno eseguire una procedura di “setup”.USB permette di definire fino a 127 periferiche che possono operare contemporaneamente e fornisce larisposta definitiva ai tanti problemi di “espansione” attualmente presenti su un PC (indirizzi di I/O, Interrupt,etc.)Per dare un’idea su che tipo di periferiche è possibile connettere, basta elencare le seguenti:telefoni, modems, tastiere, mice, CD ROM drives, joysticks, nastri e floppy drives, scanners and printers,microfoni, penne digitali, e game pad.

Inoltre, grazie all’alta velocità di trasferimento supportata (12 Mbps) è possibile usare USB per collegare:periferiche video MPEG-2, guanti attuatori, digitizers, interfacce ISDN e PBX digitali.

In pratica, l’architettura USB non pone limitazioni sul tipo di periferica connessa ma prevede solo delle spe-cifiche e un limite superiore sulla larghezza di banda totale disponibile per una periferica.

Schema di un cavo USB

Il bus dell’USB, prevede una gestione a “token”, simile alle reti “token-ring” o FDDI: Il controller USB del PC invia dei“token” nel bus ed la periferica alla quale è indirizzato risponde, o accettando il token o inviando dati.

Page 47: Università degli Studi di Camerino - Diploma di Laurea in ...users.libero.it/sandry/download/Calcolatoridownload/MaterialeWeb/2... · Università degli Studi di Camerino - Diploma

Università degli Studi di Camerino - Diploma di Laurea in Informatica - Corso di Architettura degli ElaboratoriAppunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani

Appunti delle lezioni teoriche A.A. 1998-99 - Prof. Ing. Massimo Trojani - Pagina 82

La topologia di rete dell’USB è a piramide, in cima alla quale è posizionato il controller Host, ed ammetteconnessioni con degli HUB che permettono di stratificare i collegamenti a stella. Al livello Hub viene rilevatala connessione di nuove periferiche e viene controllata l’alimentazione della periferica stessa.La connessione “a caldo”, senza necessità di spegnere il sistema, di periferiche è una delle caratteristichepeculiari dell’architettura USB; una volta connessa la periferica, viene effettuata la procedura di riconosci-mento chiamata “bus enumeration” e schematizzata nel diagramma seguente:

Le specifiche USB dettano degli stan-dard di operazioni a cui tutti le periferi-che USB devono attenersi. Questi stan-dard garantiscono la consistenza di fun-zionalità tra i vari dispositivi.Vengono inoltre definite delle classi didispositivi che standardizzano anche iltipo di funzionamento. Ad esempio, gliHub costituiscono una classe di disposi-tivi, gli HID (Human Input Device) ragruppatutti i dispositivi atti ad essere usati perl’inserimento manuale dei dati.Il bus USB è in grado di supportare il tipodi dati “naturali” associato ad ogni perife-rica; ad esempio è capace di trasferiredati continui, usando una tecnica di pri-rità, come quelli generati da una video-camera o da un dispositivo audio(trasferimento dati isocrono).


Recommended