A2 - IL PROCESSORE 8086 (1)
A2 - IL PROCESSORE 8086
Parte del corso di Sistemi e reti
Classe III IIS G. Vallauri
La Famiglia x86
Composta da molti processori di diverse aziende (Intel, IBM, Fujitsu, OKI, Siemens).
Il processore 8086 è il primo della famiglia x86.
Garantita retrocompatibilità:
Ogni processore può eseguire codice dei precedenti.
Architettura x86
Architettura logica condivisa tra i sistemi x86.
Instruction Set Architecture: visione del processore dal programmatore.
Tipologie di architettura:
x86-16: 16 bit (8086)
x86-32: 32 bit
x86-64: 64 bit
Il Processore 8086
Nato nel 1978.
“Antenato” della famiglia x86.
Spazio di indirizzamento: 1 MB.
Parallelismo: 16 bit (usa registri e bus a 16 bit).
I Registri del 8086
Registri:
Data Register
Instruction Queue
Address/Data: AH, AL, BH, BL, CH, CL, DH, DL, SP, BP
Segment Register
ALU
Control (20 pin e 16 pin)
Tipi di Registri
Registri Dato:
AX (Accumulator Register)
BX (Base Register)
CX (Count Register)
DX (Data Register)
Registri Segmento:
CS (Code Segment)
DS (Data Segment)
ES (Extra Segment)
SS (Stack Segment)
Registri Puntatore:
PC (Program Counter)
SP (Stack Pointer)
SI (Source Index)
DI (Destination Index)
Organizzazione della Memoria
Memoria segmentata in 64 Kbyte.
Tipi di segmenti:
Codice, Dati, Stack, Extra.
Registri Segmento
Utilizzati per costruire indirizzi fisici.
Puntano all'inizio dei vari segmenti:
CS, DS, ES, SS.
Registri Puntatore
Contengono indirizzi relativi (offset):
PC/IP per il prossimo codice nel CS.
SP per la cella corrente nel SS.
SI/DI per i dati nel CS.
Registri Ulteriori
IR (Instruction Register): codice binario dell'istruzione in esecuzione.
MDR (Memory Data Register): dati letti o scritti.
MAR (Memory Address Register): ultimo indirizzo di memoria referenziato.
Registro di Stato (PSW)
16 bit, 9 utilizzati come flag.
Tipi di Flag:
Condizione (
SF, ZF, PF, CF, OF)
Controllo (IF, TF).
Componenti 8086
EU (Execution Unit)
CU (Control Unit)
BIU (Bus Interface Unit)
Il Clock
Regola l'attività della CPU mediante un oscillatore.
Misurato in Herz.
Esempio di clock 8086: 4.77 MHz.
Ciclo Fetch-Decode-Execute (FDE)
Fasi:
Fetch: lettura dell'istruzione dalla memoria.
Decode: decodifica dell'istruzione.
Execute: esecuzione dell'istruzione.
Eseguito in sequenza fino al termine del programma.
Gestione Memoria in 8086
Memoria segmentata in massimo 64 Kbyte per segmenti.
Inizio a indirizzi multipli di 16.
Esempi di Calcolo Indirizzi
Le istruzioni in Assembler sono riferite a segmenti differenti con offset variabili.
Utilizzo del registro CS e PC per determinare indirizzi assoluti.
Gestione dello Stack
Caratteristiche dello Stack:
Regole LIFO per la memorizzazione.
Dimensione fissa o configurabile del segmento.
Istruzioni di gestione Stack:
PUSH: salva nel Stack.
POP: preleva dal Stack.
Attenzione a overflow e underflow dello Stack.
Pipeline
Migliora l'efficienza del ciclo F-D-E.
Divisione dei compiti tra EU, CU e BIU.
Coda di Istruzioni (Instruction Queue) per migliorare la velocità di esecuzione.