Evoluzioni dell'8086

Materie:Appunti
Categoria:Sistemi

Voto:

2 (2)
Download:175
Data:01.12.2006
Numero di pagine:9
Formato di file:.doc (Microsoft Word)
Download   Anteprima
evoluzioni-8086_1.zip (Dimensione: 11.22 Kb)
readme.txt     59 Bytes
trucheck.it_evoluzioni-dell-8086.doc     45.5 Kb



Testo

CARATTERISTICHE GENERALI DELL’80286.
L'80286 è l'ultimo della serie di microprocessori a 16 bit, i successivi sono a 32 bit. Pur essendo superato, mostra delle caratteristiche, come la gestione della memoria virtuale e l’implemento della tecnica del multitasking, assolutamente innovative.
Il microprocessore 80286 può lavorare in due modi diversi, denominati 'modo reale' e 'modo protetto'.
Nel modo reale il microprocessore funziona come un 8086 più veloce, conservandone le limitazioni.
Nel modo protetto sono possibili prestazioni migliori: la gestione di memoria virtuale capace di aumentarla notevolmente (virtualmente), l'isolamento dei programmi e la protezione della memoria (che consentono l’uso delle applicazioni in multi-tasking). In realtà la difficoltà di passare da un modo operativo all'altro (attraverso solo con un reset) ostacolò lo sviluppo della prima versione di Windows (Win286), affermatosi solo con i successivi microprocessori a 32 bit.
La memoria viene divisa in segmenti di dimensione variabile, con un massimo di 64 KByte, i quali possono contenere del codice eseguibile o dei dati.
La gestione a segmenti della memoria rende necessario scrivere i programmi che mantengano per quanto possibile l'indirizzamento entro il segmento, per guadagnare in velocità di esecuzione (occorre ridurre al minimo le istruzioni che generano dei salti fuori segmento). Perciò diventa gestire programmi di grandi dimensioni.
Questa limitazione ha fatto sì, per esempio, che le contemporanee workstation con sistema operativo UNIX, per il CAD, la grafica ed il calcolo scientifico, siano state sviluppate con altri tipi di microprocessori, come per esempio i Motorola della serie '64000', caratterizzati dalla memoria 'lineare'.
I MODI OPERATIVI.
L'80286 in 'Modo Reale', può indirizzare 1 MByte di memoria di lavoro e fino a 64k diverse periferiche - come l’8086 - ed è con esso compatibile a livello 'binario', ciò significa che un programma scritto per l’8086, può essere eseguito dall'80286; non è vero il viceversa. Ciò si deve al fatto che il set di istruzioni include quello dell'8086. I programmi, quando vengono eseguiti, devono trovarsi completamente caricati nella memoria di lavoro e quindi gli indirizzi delle istruzioni sono quelli fisici (di conseguenza un programma non può essere più grande della memoria di lavoro).
Nel 'Modo Protetto' si può aumentare la memoria fisica ed utilizzare le istruzioni che supportano la protezione dei dati, la concorrenza dei task e la gestione della memoria virtuale. La compatibilità con i programmi 8086 però non è più garantita.
La gestione 'virtuale' della memoria, rende utilizzabile tutto lo spazio di indirizzamento logico, molto più grande di quello fisico. In effetti è come se la memoria di lavoro ed una parte del disco, detta 'file di scambio' o 'swap area' costituissero un'unica grande memoria di lavoro. Perciò un programma può essere più grande della memoria 'fisica', perché quando è in esecuzione, una parte sarà nella memoria di lavoro ed il resto nella parte di disco (swap area) usata come “memoria di lavoro virtuale”.

MODO REALE.
In questa modalità gli indirizzi fisici sono valori a 20 bit e quindi possono variare tra 00000H ed FFFFFH. Al reset, il microprocessore si pone 'modo reale' ed ogni accesso in memoria viene effettuato a partire da un indirizzo fisico, come nell'8086.
Per costruire l’indirizzo della prossima istruzione, il processore determina l’indirizzo iniziale del segmento corrente, aggiungendo quattro bit ‘0’ a destra del valore contenuto in CS. A questo viene sommato un offset costituito dal registro IP, ottenendo l'indirizzo fisico. In questo modo ogni segmento inizia ad un indirizzo fisico detto 'di paragrafo', cioè con i quattro bit meno significativi posti a zero. I byte indirizzabili sono così tutti e soli quelli di un segmento.
Esempio:
contenuto del selettore CS: 2222H (16 bit)
contenuto dell'offset IP: 3333H (16 bit)
al selettore vengono aggiunti 4 bit a destra:
indirizzo base: 22220H (20 bit)
al quale viene sommato l'offset:
22220H + 3333H = 25553H
ottenendo l'indirizzo fisico a 20 bit.
(Per velocizzare le operazioni, fra le componenti della CPU vi è una 'address ALU', cioè una unità aritmetica che tratta specificamente gli indirizzi).
In modalità 'reale' l'80286 non esegue alcun controllo sui limiti di memoria o sui permessi di accesso. Pertanto tutti i segmenti sono leggibili, scrivibili, eseguibili ed hanno dimensione eguale a quella massima (65536 byte). Per utilizzare al meglio la memoria fisica, si può usare la porzione inutilizzata di un segmento, come parte di un altro segmento, ottenendo dei segmenti parzialmente sovrapposti. I programmi che usano segmenti sovrapposti però non si possono eseguire in modalità protetta (che evita che programmi diversi accedano allo stesso segmento).

MODO PROTETTO.
La protezione della memoria si basa sulla creazione di una "gerarchia di accesso", che disciplina la possibilità dei programmi di leggere o scrivere in memoria. Sono definiti quattro livelli di accesso, dal livello 0 (più privilegiato) al livello 3 (il meno privilegiato). Il livello 0 è riservato al sistema operativo, che può leggere e scrivere qualsiasi parte della memoria.
In modo protetto l’80286 dispone di una memoria virtuale formata da 16384 segmenti da 64K (totale 1 GB); l'indirizzamento virtuale consiste nel far corrispondere a qualsiasi indirizzo virtuale possibile, un indirizzo fisico compreso nei 16 MByte RAM, che sono il massimo disponibile in realtà. Questa corrispondenza viene realizzata dal sistema operativo, che copia nella swap area i segmenti dei programmi in elaborazione (che non hanno trovato posto nella RAM) e li ricopia in memoria di lavoro solo quando servono, cancellando i segmenti già elaborati.

I REGISTRI.
L’80286 dispone di alcuni registri in più rispetto all’8086, infatti ci sono due registri che sono specifici per l’accesso alle tabelle dei descrittori, che vengono usate per l’indirizzamento in modo protetto: LDTR (Local Descriptor Table Register) e GDTR (Global Descriptor Table Register) ed un registro che punta alla tabella dei vettori di interruzione IDTR (Interrupt Descriptor Table Register). Ritroviamo poi gli stessi 13 registri a 16 bit dell’8086, elencati nel seguito ed i registri F (Flag) e MSW (Machine Status Word) costituiti da bit di stato e di controllo.

Registri di Segmento.
Per comprendere la funzione dei Registri di Segmento bisogna premettere che un programma può consistere di diversi moduli di istruzioni (segmenti di codice) e di dati (segmenti di dati). Ma in un istante qualsiasi, sarà in uso un solo segmento di codice ed uno o più segmenti di dati.
Un programma in esecuzione sull'80286, dispone di quattro segmenti di memoria (code segment, data segment, stack segment ed extra segment) indirizzati rispettivamente dai registri di segmento CS, SS, DS ed ES.
Il valore contenuto in ciascuno di essi, determina l’indirizzo iniziale del relativo segmento.
Il segmento di memoria che contiene le istruzioni in esecuzione, è detto 'segmento codice corrente' ed è individuato mediante il registro CS (code segment). Le istruzioni vengono prelevate dal segmento codice usando come offset il contenuto del puntatore alle istruzioni (registro IP - 'instruction pointer').
I registri di segmento dell’80286 sono in realtà molto più lunghi dei 16 bit accessibili al programmatore, ognuno di essi è dotato di un registro cache (nascosto) usato in modo protetto, per contenere le informazioni prelevate dalla tabella dei descrittori e relative al segmento in uso.

Il registro di segmento (selettore) viene utilizzato per accedere ad una tabella, dove viene prelevato un gruppo di 8 byte che costituisce un 'descrittore di segmento'.
Nel descrittore 3 byte forniscono un indirizzo base a 24 bit (che insieme all'offset di 16 bit serve a definire gli indirizzi fisici), due byte forniscono la dimensione massima del segmento (il valore che l'offset non dovrà mai superare), un byte descrive la situazione di accesso del segmento, mentre i restanti due byte sono 'riservati'.
Esistono due tabelle di descrittori, denominate rispettivamente 'Global Descriptor Table' e 'Local Descriptor Table' che contengono i descrittori dei segmenti 'pubblici' e di quelli 'privati'.
Ogni tabella può contenere 8192 descrittori, quindi per individuarne uno, occorrono 13 bit (2^13 = 8192), che corrispondono ai 13 bit più significativi del selettore di segmento; gli altri tre bit del selettore fissano la tabella ed il livello di 'privilegio', associato al programma che sta usando il selettore stesso.
Con questo meccanismo vengono 'gestiti' 8192x2 = 16384 = 2^14 segmenti, ciascuno di 2^16 byte, in totale uno spazio di indirizzamento virtuale di 2^30 = 1 GByte. In modo protetto un programma non deve essere 'tutto' in memoria di lavoro, perché è necessaria solo la presenza del segmento che contiene le istruzioni al momento in esecuzione.

GESTIONE DELL'INDIRIZZAMENTO.
Gli indirizzi fisici vengono costruiti mediante i registri di segmento, in un modo che dipende dal modo operativo del microprocessore.
Durante l'esecuzione di un programma, se non si esce fuori dal segmento corrente, sono sufficienti solo i 16 bit inferiori dell'indirizzo, perché le istruzioni ed i dati allocati entro i segmenti 'correnti', sono indirizzati solo con l’offset a 16 bit. L'indirizzamento che si basa solo sul valore dell'offset e lascia implicita la 'base' del segmento, viene chiamato 'indirizzo corto'.
CARATTERISTICHE GENERALI DELL’80386.
L’80386 era il primo della serie dei microprocessori a 32 bit. Presentava delle novità molto vantaggiose quali l’incremento notevole della RAM e l’implemento della tecnica del caching per la prima volta. Inizialmente venne creato con una frequenza di 16Mhz e 11Mips.
VERSIONI
Dell’80386, vennero create 2 versioni Dx e Sx dove la seconda versione era considerata come una versione economica :
Versione 80386 Double External con bus dati a 32bit, bus indirizzi a 32bit e bus esterno a 32bit
Versione 80386 Single External con bus dati a 32bit, bus indirizzi a 32bit e bus esterno a 16bit.
MODALITÀ DI UTILIZZO
Il microprocessore 80386 poteva lavorare, anch’esso come il precedente, in due modi diversi denominati 'modo reale' e 'modo protetto'. In più però c’era anche l’opzione V86 che simulava a tutti gli effetti un 8086.
Finalmente non c’erano più problemi, stavolta, nel passaggio tra una modalità d’uso all’altra.
Nel modo reale il microprocessore funziona come un 80286 più veloce, conservandone le limitazioni.
Nel modo protetto i vantaggi erano :
1) la memoria venne divisa in segmenti di dimensione massima a 4GB invece dei vecchi 64k; questi segmenti erano suddivisi, a loro volta, in altri segmenti da 4k chiamati “pagine”. Da qui prende il nome di tecnica di segmentazione con paginazione con la perdita della vecchia e ormai inutile tecnica della memoria virtuale.
In pratica, dentro un selettore di segmento, venivano presi i primi 14bit su 32bit disponibili invece dei 13bit su 16bit disponibili del vecchio sistema, poi avveniva il reindirizzamento all’interno di una delle 2 tabelle descrittori (local o global) dei primi 4byte della cella, ed infine, a questo punto, si presentava un nuovo reindirizzamento in una nuova tabella, chiamata tabella pagine, dove veniva sommato l’offset ai 32bit per ottenerne così l’indirizzo completo.
2) sussisteva il problema della poca differenza di velocità rilevata tra il nuovo 80386 prima a 25Mhz e successivamente a 33Mhz, rispetto al vecchio 80286 a 7-8Mhz. Al momento venivano usate le DRAM (Dynamic Ranodm Access Memory con accesso pari a 2-3 cicli (40-60ns)) dove tra istruzioni di accesso, lettura, scrittura e cicli di refresh da parte della dinamicità della memoria, si arrivava a 6-7 cicli al secondo. Questo poteva creare intoppi nell’accesso della memoria.
Per questo motivo venne sviluppata una nuova tipologia di RAM : la SRAM (Static Random Access Memory) dove, per l’accesso, era necessario solo 1 ciclo (20ns) al secondo. Questa nuova memoria, chiamata cache, era grande dai 32k ai 64k e veniva aggiunta tra la il microprocessore e la DRAM. Nella cache venivano salvati soltanto gli ultimi dati elaborati dalla CPU per velocizzare il funzionamento delle istruzioni più frequenti (tecnica del read ahead). Questa nuova tecnica portò al miglioramento delle prestazioni del 500%.
All’80386 venne associato per la prima volta il sistema operativo Windows 3.0-3.1, dove era compatibile l’interfaccia grafica GUI.
In contemporanea all’uscita dell’80386 sotto casa INTEL, va ricordato che venne sfornato anche il microprocessore clone AM386 da parte della casa AMD.

CARATTERISTICHE GENERALI DELL’80486
Da un punto di vista software, l'80486 era molto simile al predecessore 80386, se non per l'aggiunta di alcune istruzioni. Da un punto di vista hardware, invece, questo processore era molto innovativo con :
1) una memoria cache unificata per dati e istruzioni ridotta però a 8k;
2) una ulteriore unità di calcolo in virgola mobile (FPU) opzionale a seconda della versione;
3) una migliore unità di interfaccia bus;
Questi componenti, per la prima volta, divennero standard interni al processore.
In condizioni ottimali questo processore poteva eseguire 1 istruzione per ciclo di clock proprio grazie alla sua integrità dei propri componenti, tale che questi miglioramenti permisero all'80486 di offrire prestazioni quasi doppiamente superiori a quelle del predecessore, a parità di clock.
È da notare però che alcuni dei modelli di fascia più bassa, specialmente le versioni SX, erano effettivamente inferiori rispetto agli 80386 più veloci.
VERSIONI
Come per l'Intel 80386, suo predecessore, dell'Intel 80486 furono rilasciate numerose versioni, tra cui:
Intel 80486 Sx = un 80486 Dx con una FPU disabilitata, anche se le prime versioni erano semplicemente dei normali 80486 le cui FPU erano difettose. Più tardi, le FPU furono rimosse dal die per ridurne la superficie e quindi i costi.
Intel 80486 Dx = come 80486 Sx, con una FPU funzionante.
Intel 80486 Sx2 = il clock interno del processore era il doppio del clock del bus esterno, la FPU era disabilitata.
Intel 80486 Dx2 = come il 80486 Sx2, con la FPU abilitata.
Intel 80486 SL = un 80486 Dx con un circuito per la gestione dell'energia. Soprattutto per l'uso nei portatili.
Intel 80486 SL-NM = un 80486 Sx con un circuito per la gestione dell'energia.
Intel 80487 = un 80486 Dx con un attacco leggermente differente per essere usato in sistemi basati su un 80486 Sx come una FPU.
Intel 80486 OverDrive = un 80486 Sx, 80486 Sx2, 80486 Dx2 o 80486 Dx4. Descritti come processori per l'upgrade, alcuni modelli avevano differenti attacchi o abilità di gestione del voltaggio rispetto agli ordinari chip della stessa velocità.
Intel 80486 Dx4 - progettato per funzionare ad una velocità di clock tripla (non quadrupla come spesso si crede).
Da parte di INTEL, la gamma di velocità di clock includeva 16, 20, 25, 33, 40, 50, 66, 75, e 100 MHz, mentre AMD rilasciò versioni anche a 80, 120 e 133 MHz.

Esempio



  



Come usare