Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici...

121
01/04/03 G. Bucci - Calcolatori Elettoronici 1 Questi trasparenti sono una versione estesa di quelli prodotti per il consorzio NETTUNO Questi trasparenti sono una versione estesa di quelli prodotti per il consorzio NETTUNO

Transcript of Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici...

Page 1: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 1

Questi trasparenti sono una versione estesa di quelli

prodotti per il consorzio NETTUNO

Questi trasparenti sono una versione estesa di quelli

prodotti per il consorzio NETTUNO

Page 2: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 2

Giugno 1978: 8086Giugno 1978: 8086

�40 piedini�40 piedini

�29.000 transistori�29.000 transistori

� f = 5 Mhz� f = 5 Mhz

�CPI = 15�CPI = 15

Page 3: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 3

80868086

� tempo medio per istruzione:15 * 200 ns = 3 micro secondiequivalenti a 0,33 MIPS

� tempo medio per istruzione:15 * 200 ns = 3 micro secondiequivalenti a 0,33 MIPS

�Spazio memoria: 1 Mbyte�Spazio memoria: 1 Mbyte

�Parallelismo: 16 bit, interno(registri) ed esterno (bus dati)

�Parallelismo: 16 bit, interno(registri) ed esterno (bus dati)

� L’8088 differiva solo per il bus datia 8 bit

� L’8088 differiva solo per il bus datia 8 bit

Page 4: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 4

Modello di ProgrammazioneModello di Programmazione

� 8 registri di uso generale� 8 registri di uso generale

� 4 registri di segmento� 4 registri di segmento

�1 registro di stato (FLAGS)�1 registro di stato (FLAGS)

�1 instruction pointer (IP)�1 instruction pointer (IP))

Page 5: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 5

Modello di ProgrammazioneModello di Programmazione

Page 6: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 6

Registri datiRegistri dati

� (Quasi) intercambiabili� (Quasi) intercambiabili

� Ma hanno anche ruoli specifici:AX: accumulatoreBX: baseCX: contatoreDX: indirizzamento I/O

� Ma hanno anche ruoli specifici:AX: accumulatoreBX: baseCX: contatoreDX: indirizzamento I/O

Page 7: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 7

Registri puntatoriRegistri puntatori

� SP: Stack Pointer� SP: Stack Pointer

� BP: Base Pointerper puntare entro entro lo stack

� BP: Base Pointerper puntare entro entro lo stack

� SI: Source Index� SI: Source Index

� DI: Destination Index� DI: Destination Index

Page 8: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 8

CSCS

SSSS

DSDS

ESES

REGISTRI DISEGMENTOREGISTRI DISEGMENTO

IPIP

FLAGSFLAGS

Altri registriAltri registri

Page 9: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 9

CSCS IPIPMEMMEM

IPIP

� Instruction Pointer inaccoppiamento con CS ha lafunzione di puntatore di programma

� Instruction Pointer inaccoppiamento con CS ha lafunzione di puntatore di programma

Page 10: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 10

0716

TFTF ZFZF PFPFSFSF AFAF CFCFIFIFDFDFOFOF

FLAGS (8086)FLAGS (8086)

�bit di stato e di controllo�bit di stato e di controllo

� Stato: CF, AF, OF, SF, ZF, PF� Stato: CF, AF, OF, SF, ZF, PF

� Controllo: DF, IF, TF� Controllo: DF, IF, TF

Page 11: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 11

Con l’80386 (1985):Con l’80386 (1985):

� I registri di uso generale (GPR),IP e FLAGS diventano a 32 bit

(EAX, EBX, ECX, …., EIP, EFLAGS)

� I registri di uso generale (GPR),IP e FLAGS diventano a 32 bit

(EAX, EBX, ECX, …., EIP, EFLAGS)

� Tutti GPR sono usabili perindirizzare

� Tutti GPR sono usabili perindirizzare

EvoluzioneEvoluzione

Page 12: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 12

Modello a 32 bitModello a 32 bit

Dal 386 in poiDal 386 in poi

A 16 bit

Page 13: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 13

Organizzazionedella

memoriae

segmentazione

(8086)

Organizzazionedella

memoriae

segmentazione

(8086)

Page 14: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 14

Organizzazione della memoriaOrganizzazione della memoria

� Lo spazio di memoria è logicamentediviso in segmenti

� Lo spazio di memoria è logicamentediviso in segmenti

�Segmento: unità di memoria conestensione massima di 216=64 K

�Segmento: unità di memoria conestensione massima di 216=64 K

� Un segmento può essere sistemato inqualunque posizione di memoria

� Un segmento può essere sistemato inqualunque posizione di memoria

� I segmenti possono essere adiacenti,disgiunti, parzialmente o totalmentesovrapposti

� I segmenti possono essere adiacenti,disgiunti, parzialmente o totalmentesovrapposti

Page 15: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 15

SegmentazioneSegmentazione

CS, DS, SS, ES contengonol’indirizzo di partenzadei segmenti correnti

CS, DS, SS, ES contengonol’indirizzo di partenzadei segmenti correnti

� CS -> segmento di codice� CS -> segmento di codice

� DS -> segmento dati� DS -> segmento dati

� SS -> segmento stack� SS -> segmento stack

� ES -> segmento “extra”� ES -> segmento “extra”

Page 16: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 16

Indirizzo logico: SR:OFFSETIndirizzo logico: SR:OFFSET

0 <= indirizzo fisico < 1 M0 <= indirizzo fisico < 1 M

SRSRSR00

1M1M

OFFSETOFFSETindirizzofisicoindirizzofisico

basebase

MemoriaMemoria

Page 17: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 17

Calcolo dell’indirizzoCalcolo dell’indirizzo

Page 18: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 18

Esempio

Page 19: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 19

La segmentazioneLa segmentazione

� I segmenti di codice, dati e stackrappresentano tre spazi logiciassociabili in modo naturale allastruttura dei programmi

� I segmenti di codice, dati e stackrappresentano tre spazi logiciassociabili in modo naturale allastruttura dei programmi

� Codice, Dati, Var. temporanee� Codice, Dati, Var. temporanee

� Programma:� Programma:

Page 20: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 20

� Tende a oscurarne la leggibilitàrispetto a uno spazio di indirizzipiatto

� Tende a oscurarne la leggibilitàrispetto a uno spazio di indirizzipiatto

� Semplifica la rilocazione(basta aggiustare i registri disegmento)

� Semplifica la rilocazione(basta aggiustare i registri disegmento)

La segmentazione

Page 21: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 21

FetchFetchFetch

StackStackStack

VariabiliVariabiliVariabili

Regnormale

Regnormale

CSCS

SSSS

DSDS

--- ------

CS,ES,SSCS,ES,SSCS,ES,SS

Regalternativo

RegRegalternativoalternativo

--- ------

OFFSETOFFSETOFFSET

IPIPIP

SPSPSP

EAEAEA

Indirizzi logici (composizione)Indirizzi logici (composizione)

Str. SorgStrStr. . SorgSorg

Str. DestStrStr. Dest. Dest

BP (base)BP BP (base)(base)

DSDS

ESES

SSSS CS,DS,SSCS,DS,SSCS,DS,SS

SISISI

DIDIDI

EAEAEA

CS,ES,SSCS,ES,SSCS,ES,SS

--- ------

Page 22: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 22

� I registri di segmento restano a 16 bit� I registri di segmento restano a 16 bit

� Col 386 i registri di segmento diventano6 e i segmenti possono arrivare fino a 1Mbyte o 4 Gbyte (a seconda dellagranularità)

� Col 386 i registri di segmento diventano6 e i segmenti possono arrivare fino a 1Mbyte o 4 Gbyte (a seconda dellagranularità)

� Con il 286 il contenuto dei registri disegmento viene interpretato comeselettore di segmento (modo virtualeprotetto)

� Con il 286 il contenuto dei registri disegmento viene interpretato comeselettore di segmento (modo virtualeprotetto)

EvoluzioneEvoluzione

Page 23: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 23

�� L’8086 è stato progettato a metà anni ‘70L’8086 è stato progettato a metà anni ‘70�� All’epoca la densità di integrazione eraAll’epoca la densità di integrazione era

(relativamente) bassa: “(relativamente) bassa: “solo” solo” 29.00029.000transistoritransistori

�� Non esistevano integrati commerciali con piùNon esistevano integrati commerciali con piùdi 40 piedinidi 40 piedini

�� I progettisti hanno dovuto bilanciare leI progettisti hanno dovuto bilanciare ledifferenti esigenzedifferenti esigenze

�� Trade-Trade-offoff tra: obiettivi, costi (col vincolo della tra: obiettivi, costi (col vincolo dellatecnologia)tecnologia)

OsservazioniOsservazioni

Page 24: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 24

ConseguenzeConseguenze

�� Numero limitato di registri di CPUNumero limitato di registri di CPU�� Registri e percorsi interni a 16 bitRegistri e percorsi interni a 16 bit�� Indirizzo (fisico) a 20 bit solo in uscita dalla CPUIndirizzo (fisico) a 20 bit solo in uscita dalla CPU�� Segmentazione della memoriaSegmentazione della memoria�� BusBus multiplexed multiplexed (indirizzi e dati) (indirizzi e dati)

�� Previsione di componenti di corredoPrevisione di componenti di corredo(coprocessore)(coprocessore)

Tipica CPUTipica CPU microprogrammata microprogrammata: repertorio di: repertorio diistruzioni “complesso” e “disordinato”istruzioni “complesso” e “disordinato”

Page 25: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 25

Page 26: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 26

L’integrato

Page 27: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 27

L’integrato:

Alimentazionee

Clock

Page 28: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 28

RESET e READYRESET e READY

Quando RESET è asserito:Quando RESET è asserito:

�� CS viene posto a FFFF (CS viene posto a FFFF (hexhex))

�� IP viene posto a 0IP viene posto a 0�� la prima istruzione eseguita è quella allala prima istruzione eseguita è quella alla

locazione FFFF0locazione FFFF0

�� ReadyReady: se non asserito determina: se non asserito determinacicli di cicli di waitwait

Page 29: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 29

�� Selezionato attraverso il piedinoSelezionato attraverso il piedino

MIN/MAXMIN/MAX

�� Il modo massimo prevede l’uso delIl modo massimo prevede l’uso delcoprocessore esterno o di uncoprocessore esterno o di uneventuale processore di I/Oeventuale processore di I/O

Modo Minimo/MassimoModo Minimo/Massimo

Page 30: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 30

Bus 8086Bus 8086

�� Bus dati e indirizzi su linee condiviseBus dati e indirizzi su linee condiviseADAD15-0 15-0 (più A(più A19-1619-16))

�� Occorrono:Occorrono:��Latch Latch per il bus indirizziper il bus indirizzi��Transceiver Transceiver per il bus datiper il bus dati

ALEALE:: Address Latch Enable Address Latch Enable

Page 31: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 31

L’integrato 8086L’integrato 8086

Linee Linee

IndirizziIndirizzi

ee

DatiDati

Page 32: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 32

L’integrato 8086L’integrato 8086

ModoModo

minimominimo

Vcc

Page 33: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 33

Ricostruzione busRicostruzione bus

(in modo Minimo)(in modo Minimo)

Page 34: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 34

Ciclo di letturaCiclo di lettura

A partire dal 286 (1982)A partire dal 286 (1982)bus dati e indirizzi sonobus dati e indirizzi sono

separatiseparati

Page 35: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 35

L’integrato 8086L’integrato 8086

ModoModo

massimomassimo GND

Page 36: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 36

Ricostruzione busRicostruzione bus

(in modo Massimo)(in modo Massimo)

Page 37: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 37

CPUCPU DBUS DBUS (16 bit)(16 bit)

Linee di controlloLinee di controllo

ABUS ABUS (20 bit)(20 bit)

Schema Schema di riferimentodi riferimento

Page 38: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 38

Page 39: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 39

Accesso alla memoriaAccesso alla memoria

�� l’8086 può leggere/scrivere 16 bitl’8086 può leggere/scrivere 16 bit(word) o 8 bit (byte)(word) o 8 bit (byte)

�� l’8088 legge/scrive sempre un bytel’8088 legge/scrive sempre un byte

�� OrganizzazioneOrganizzazione Little endianLittle endian

I+1I+1

MSBMSB LSBLSB

II

ParolaParola

Page 40: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 40

La memoriaLa memoria

3344

0022

11

55

FFFFFFFFFF FFFFEFFFFE

44 33 22 11 00

Parola Parola aaindirizzoindirizzo

paripari

Page 41: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 41

3344

0022

11

55

FFFFFFFFFF FFFFEFFFFE

44 33 22 11 00

Parola Parola aaindirizzoindirizzodisparidispari

La memoriaLa memoria

Page 42: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 42

Accesso alla memoriaAccesso alla memoria

�� lettura/scrittura a 16 bit (8086):lettura/scrittura a 16 bit (8086):�� parola allineata ad indirizzo parola allineata ad indirizzo paripari: 1 ciclo: 1 ciclo

di lettura/scritturadi lettura/scrittura

�� parola allineata agli indirizzi parola allineata agli indirizzi disparidispari: 2: 2cicli di lettura/scritturacicli di lettura/scrittura

Page 43: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 43

Accesso alla memoriaAccesso alla memoria

Page 44: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 44

SelezioneSelezione

BHE A0BHE A0

0 00 0 ParolaParola1 01 0 Byte a indirizzo pariByte a indirizzo pari

0 10 1 Byte a indirizzo dispariByte a indirizzo dispari

1 11 1 N. A.N. A.

Page 45: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 45

EvoluzioneEvoluzione

�� Quando l’architettura diventa a 32 bitQuando l’architettura diventa a 32 bit(80386) la lettura è sempre per parole(80386) la lettura è sempre per paroleallineate a indirizzi multipli di 4allineate a indirizzi multipli di 4

�� Dal Dal Pentium Pentium il bus dati diventa a 64il bus dati diventa a 64bit: lette sempre due parole allineatebit: lette sempre due parole allineate

Page 46: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 46

Page 47: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 47

Struttura internaStruttura interna

Page 48: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 48

Perché due unità ?Perché due unità ?

�� BIU ed EU possono lavorare inBIU ed EU possono lavorare inparalleloparallelo

�� Quando EU è impegnata e non staQuando EU è impegnata e non staindirizzando la memoria, BIU puòindirizzando la memoria, BIU puòleggere dalla memoria la prossimaleggere dalla memoria la prossimaistruzione in sequenzaistruzione in sequenza

Page 49: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 49

La codaLa coda

�� E’ una E’ una memoria di passaggiomemoria di passaggio(buffer) (buffer) per le istruzioniper le istruzioni

�� E’ una forma elementare di E’ una forma elementare di pipelinepipeline

�� Dimensione:Dimensione:

��6 byte nell’80866 byte nell’8086

��4 byte nell’80884 byte nell’8088

Page 50: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 50

Gestione della coda (8086)Gestione della coda (8086)

�� Per ottimizzare l’uso del bus esternoPer ottimizzare l’uso del bus esternoè bene che la lettura sia a 16 bitè bene che la lettura sia a 16 bit

�� Se un’istruzione di salto porta ad unSe un’istruzione di salto porta ad unindirizzo dispari, viene letto un soloindirizzo dispari, viene letto un solobyte, in modo che le successivebyte, in modo che le successiveletture siano a 2 byte alla voltaletture siano a 2 byte alla volta

Nell’immagine seguente si suppone che la lettura siaNell’immagine seguente si suppone che la lettura siaad un indirizzo pariad un indirizzo pari

Page 51: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 51

Stato iniziale (coda vuota)Stato iniziale (coda vuota)

Page 52: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 52

Istr. 1Istr. 1

Primo fetchPrimo fetch

Page 53: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 53

Istr. 2Istr. 2

Secondo fetchSecondo fetch

Istr. 1Istr. 1

Page 54: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 54

Istr. 3Istr. 3

Terzo fetchTerzo fetch

Istr. 2Istr. 2

Istr. 1Istr. 1

Page 55: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 55

Prelievo Istr.1Prelievo Istr.1

Istr. 3Istr. 3

Istr. 2Istr. 2

Page 56: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 56

Istr. 3Istr. 3

Prelievo Istr.2Prelievo Istr.2

Page 57: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 57

Istr. 3Istr. 3

Quarto fetchQuarto Quarto fetchfetch

Istr. 4Istr. 4

Page 58: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 58

Istr. 4Istr. 4

Prelievo Istr. 3Prelievo Istr. 3

Page 59: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 59

Istr. 4Istr. 4

Quinto fetchQuinto fetch

Istr. 5Istr. 5

Page 60: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 60

Istr. 4Istr. 4

Istr. 5Istr. 5

Sesto fetchSesto fetch

Istr. 6Istr. 6

Page 61: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 61

EvoluzioneEvoluzione

Nella versione attuale (P6)Nella versione attuale (P6)

�� La CPU ha una cache istruzioni internaLa CPU ha una cache istruzioni interna

�� Dalla cache vengono prelevati 32 byteDalla cache vengono prelevati 32 bytealla voltaalla volta

Page 62: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 62

CacheCacheIstruzioniIstruzioni

DBUS (64 bit)DBUS (64 bit)

(linee di 32 byte)(linee di 32 byte)

DecodificatoreDecodificatore

MarcamentoMarcamento

Page 63: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 63

CacheCacheIstruzioniIstruzioni

DBUS (64 bit)DBUS (64 bit)

EIPEIP

(linee di 32 byte)(linee di 32 byte)

DecodificatoreDecodificatore

MarcamentoMarcamento

Page 64: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 64

CacheCacheIstruzioniIstruzioni

DBUS (64 bit)DBUS (64 bit)

EIPEIP

(linee di 32 byte) (linee di 32 byte)

DecodificatoreDecodificatore

32 byte32 byte

MarcamentoMarcamento

Page 65: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 65

CacheCacheIstruzioniIstruzioniEIPEIP

16 byte16 byte

DecodificaDecodifica

MarcamentoMarcamento

DBUS (64 bit)DBUS (64 bit)

Page 66: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 66

CacheCacheIstruzioniIstruzioniEIPEIP

MarcamentoMarcamento

DBUS (64 bit)DBUS (64 bit)

Page 67: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 67

CacheCacheIstruzioniIstruzioniEIPEIP

DecodificaDecodifica

DBUS (64 bit)DBUS (64 bit)

Page 68: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 68

CacheCacheIstruzioniIstruzioniEIPEIP

MarcamentoMarcamento

DBUS (64 bit)DBUS (64 bit)

Page 69: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 69

Page 70: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 70

Repertorio IstruzioniRepertorio Istruzioni

�� Molto ampioMolto ampiotipico di CPU tipico di CPU microprogrammatemicroprogrammate

�� Istruzioni di dimensione variabile, inIstruzioni di dimensione variabile, inbase al codice di operazione e allabase al codice di operazione e allamodalità di indirizzamentomodalità di indirizzamento

�� L’istruzione MOV ha circa 30 variazioniL’istruzione MOV ha circa 30 variazioni

Page 71: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 71

Trasferimento dell’informazioneTrasferimento dell’informazione

MOVMOV destination,sourcedestination,source

PUSHPUSH source source

POPFPOPF

OUTOUT port, accumulator port, accumulator

…..…..

Page 72: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 72

Aritmetiche e logicheAritmetiche e logiche

ADDADD destination,sourcedestination,sourceDECDEC destination destinationIDIVIDIV source sourceCBWCBWSHRSHR destination,count destination,count

Page 73: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 73

Trasferimento del controlloTrasferimento del controllo

JMPJMP targettargetCALL CALL procedureprocedureJZJZ short-label short-labelLOOP LOOP short-labelshort-labelRETRET

-128-128

+127+127

IPIP

Page 74: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 74

FormatoFormato

�� Istruzioni di dimensione variabile, inIstruzioni di dimensione variabile, inbase al codice di operazione e allabase al codice di operazione e allamodalità di indirizzamentomodalità di indirizzamento

�� Almeno 1 byte per il codice diAlmeno 1 byte per il codice diistruzioneistruzione

�� Da 0 a 5 byte aggiuntiviDa 0 a 5 byte aggiuntivi

Page 75: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 75

Nei byte aggiuntiviNei byte aggiuntivi

��Il tipo di indirizzamentoIl tipo di indirizzamento

��Gli eventuali registri implicatiGli eventuali registri implicati

��UnoUno scostamento scostamento

��Un dato immediatoUn dato immediato

��Uno Uno scostamento scostamento e un datoe un datoimmediatoimmediato

Page 76: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 76

Istruzioni di 1 byteIstruzioni di 1 byte

CLI CLI

�� OperandiOperandi impliciti impliciti OPOP

�� Con registro Con registro OPOP RR

PUSH AXPUSH AX

Page 77: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 77

Istruzioni di 2 byteIstruzioni di 2 byte

MOV AL,BLMOV AL,BL

MOV AX,[BX]MOV AX,[BX]

�� Registro-registro Registro-registro OPOP RR1111 R/MR/M

�� Registro-memoria Registro-memoria OPOP RRmm R/MR/M

Page 78: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 78

Istruzioni di 4 byteIstruzioni di 4 byte

�� RegReg--mem mem con con scostamentoscostamento

ADD AL,VAR[BX]ADD AL,VAR[BX]

Offset VAROffset VAROPOP RRmm R/MR/M

Page 79: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 79

FetchFetch istruzioni istruzioni

�� La decodifica delle istruzioni è basataLa decodifica delle istruzioni è basatasu OP, m, R/Msu OP, m, R/M

�� La loro combinazione determina ilLa loro combinazione determina ilnumero dei byte da estrarre dallanumero dei byte da estrarre dallacoda istruzioni.coda istruzioni.

Page 80: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 80

Esempi di istruzioniEsempi di istruzioni

8A8A C3C3

B0B0 5151

5050�� PUSH AX PUSH AX

��MOV AL,BLMOV AL,BL

��MOV AL,BL??????MOV AL,BL??????

Page 81: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 81

Esempi di istruzioniEsempi di istruzioni

A0A0 Offset VAROffset VAR

Offset VAROffset VAR8A8A 8787

Offset VAR +3Offset VAR +38A8A 8080

�� MOV AL, VAR MOV AL, VAR

�� MOV AL,VAR[BX] MOV AL,VAR[BX]

�� MOV AL,VAR[BX][SI+3] MOV AL,VAR[BX][SI+3]

Page 82: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 82

Esempi di istruzioniEsempi di istruzioni

�� MOV VAR[BX],077FFH MOV VAR[BX],077FFH

Offset VAROffset VARC7C7 8787 77FF77FF

Page 83: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 83

Page 84: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 84

IndirizzamentoIndirizzamento

Tra registriTra registri

MOV MOV AL, BLAL, BL ;AL := BL;AL := BL

MOV MOV CX, DXCX, DX ;CX := DX;CX := DX

ImmediatoImmediato

MOVMOV AL, 27 AL, 27 ;AL := 27;AL := 27

MOVMOV BX, 0A1C0H ;BX, 0A1C0H ;BX := A1C0 (BX := A1C0 (hexhex))

Page 85: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 85

Riferimento alla memoriaRiferimento alla memoria

�� Il normaleIl normale reg reg di segmento è DS di segmento è DS

MOVMOV AX, VARAX, VAR ; AX<- M[DS:offset(VAR)] ; AX<- M[DS:offset(VAR)]

�� Registro alternativo a DSRegistro alternativo a DS

MOVMOV AX, ES:VARAX, ES:VAR ; ES in luogo di DS ; ES in luogo di DS

; AX <- M[ES:offset(VAR)]; AX <- M[ES:offset(VAR)]

Page 86: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 86

Indirizzamento in memoriaIndirizzamento in memoria

�� DirettoDiretto

MOV MOV VAR,AXVAR,AX ; M[Offset(VAR)]:= AX; M[Offset(VAR)]:= AX

�� Indiretto attraverso registriIndiretto attraverso registri

MOVMOV [BX],AX[BX],AX ;M[BX] := AX ;M[BX] := AX

Page 87: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 87

�� RelativoRelativo MOVMOV AX,VAR[BX]AX,VAR[BX]

;AX := M[Offset(VAR) + BX];AX := M[Offset(VAR) + BX]

�� Indiretto e Indiretto e indiciatoindiciato

MOVMOV AX,[BX] [SI]AX,[BX] [SI]

;AX := M[BX + SI];AX := M[BX + SI]

Indirizzamento in memoriaIndirizzamento in memoria

Page 88: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 88

�� Forma generaleForma generale

MOVMOV AX,V [BX] [SI]AX,V [BX] [SI]

;EA = Offset(V) + BX + SI;EA = Offset(V) + BX + SI

;AX := M[DS:EA];AX := M[DS:EA]

Indirizzamento in memoriaIndirizzamento in memoria

Page 89: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 89

Riferimento alloRiferimento allo stack stack

�� Le istruzioni PUSH e POP depositanoLe istruzioni PUSH e POP depositanoe prelevano un dato a 16 bit dallae prelevano un dato a 16 bit dallatesta dellotesta dello stack stack (e aggiornano SP) (e aggiornano SP)

PUSH PUSH CXCXPOPPOP SISI

Page 90: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 90

StackStack

Page 91: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 91

Riferimento alloRiferimento allo stack stack

�� Entro loEntro lo stack stack si indirizza con BP si indirizza con BP

MOV MOV [BP][DI+40], AL[BP][DI+40], AL

;EA= BP+DI+40;EA= BP+DI+40

; M[SS:EA]:= AL; M[SS:EA]:= AL

Page 92: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 92

Calcolo ind di memoria

Page 93: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 93

EvoluzioneEvoluzione

� Col 386 tutti i GPR diventanoutilizzabili come puntatori

� Col 386 tutti i GPR diventanoutilizzabili come puntatori

� Viene introdotto il fattore discala

� Viene introdotto il fattore discala

� Lo scostamento è a 8, 16 o32 bit

� Lo scostamento è a 8, 16 o32 bit

Page 94: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 94

CSCS

ESES

DSDS

FSFS

SSSS

GSGS

ECXECX

ESIESI

EAXEAXEBXEBX

EDXEDXEBPEBP

EDIEDI

++ECXECX

ESIESI

EAXEAXEBXEBX

EDXEDXEBPEBP

EDIEDI

++ **

1122

4488

++NO DNO D

8b D8b D

32b D32b D

SEG+BASE+(INDEX*SCALE)+DISPLSEG+BASE+(INDEX*SCALE)+DISPL

EvoluzioneEvoluzione

Page 95: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 95

Indirizzamento porte di I/OIndirizzamento porte di I/O

Diretto (256 porte IN e 256 OUT )Diretto (256 porte IN e 256 OUT )

ININ AL,PORTAAL,PORTA

OUT OUT PORTA,AXPORTA,AX

Attraverso DX (64 K porte)Attraverso DX (64 K porte)

ININ AX,DXAX,DX

OUTOUT DX,ALDX,AL

Page 96: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 96

Indirizzamento istruzioniIndirizzamento istruzioni

�� il contatore di programma è il contatore di programma è sempresempredato dalla coppia CS:IP dato dalla coppia CS:IP (equivalente(equivalenteall’usualeall’usuale Program Counter Program Counter))

�� salti/chiamate disalti/chiamate di soubroutine soubroutine::IntrasegmentoIntrasegmento - modificano solo IP - modificano solo IPIntersegmentoIntersegmento - modificano sia CS - modificano sia CSche IPche IP

Page 97: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 97

Trasferimento del controlloTrasferimento del controllo

IntrasegmentoIntrasegmento: : sostituisce IPsostituisce IP

�� DirettoDiretto: IP:= IP + SCOST: IP:= IP + SCOST�� SCOST: 16/8 bit codificati nell’istruzioneSCOST: 16/8 bit codificati nell’istruzione�� Nei salti condizionati SCOST è sempre di 8Nei salti condizionati SCOST è sempre di 8

bitbit

CALL NEAR_CALL NEAR_ProcProcJMP NEL_SegmentoJMP NEL_SegmentoJNEJNE NOT_ NOT_EqualEqual

Page 98: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 98

Trasferimento del controlloTrasferimento del controllo

IntrasegmentoIntrasegmento: : sostituisce IPsostituisce IP

IndirettoIndiretto: : IP viene sostituito con ilIP viene sostituito con ilcontenuto di un registro o di unacontenuto di un registro o di unaparola di memoriaparola di memoria

JMPJMP CX CXJMPJMP [BX].TARGET [BX].TARGET

Page 99: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 99

Trasferimento del controlloTrasferimento del controllo

IntersegmentoIntersegmento: : sostituisce CS,IPsostituisce CS,IP

�� DirettoDiretto: (CS,IP):= SCOST: (CS,IP):= SCOSTHH + SCOST + SCOSTLL

�� SCOST: 32 bit codificati nell’istruzioneSCOST: 32 bit codificati nell’istruzione

JMPJMP FAR_LABEL FAR_LABELCALLCALL FAR_PROC FAR_PROC

Page 100: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 100

Trasferimento del controlloTrasferimento del controllo

IntersegmentoIntersegmento: : sostituisce CS,IPsostituisce CS,IP

�� Indiretto:Indiretto:�� CS,IP vengono sostituiti con il contenutoCS,IP vengono sostituiti con il contenuto

di due parole consecutive di memoriadi due parole consecutive di memoria

JMP DWORD PTR[BX]JMP DWORD PTR[BX]CALL [BX].TASK[SI]CALL [BX].TASK[SI]

Page 101: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 101

Salti condizionatiSalti condizionati

JNEJNE NOT_ NOT_EqualEqual JZJZ IS_0 IS_0

Massimo Massimo scostamentoscostamento::�� In avanti di 127 posizioni In avanti di 127 posizioni�� Indietro di 128 Indietro di 128

Page 102: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 102

Modello diModello diprogrammazioneprogrammazione

attualeattuale

Page 103: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 103

Aritmetica FloatingAritmetica Floating

�� L’8086 non aveva istruzioni inL’8086 non aveva istruzioni invirgolavirgola

�� Il coprocessore 8087:Il coprocessore 8087:�� Concepito per lavorare in parallelo e inConcepito per lavorare in parallelo e in

collaborazione con la CPUcollaborazione con la CPU

�� Estende il repertorio istruzioniEstende il repertorio istruzioni

�� Estende il modello di Estende il modello di programmazprogrammaz. con 8. con 8registri da 80 bitregistri da 80 bit

Page 104: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 104

Il coprocessore x87Il coprocessore x87

�� Aritmetica floating velocizzata di unAritmetica floating velocizzata di unfattore 2.fattore 2.

�� Esempio: FADDEsempio: FADD�� 1,61,6 ms ms solo 8086 solo 8086�� 14 14 micromicro s con 8087 s con 8087

Page 105: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 105

Modello CPU-CoprocessoreModello CPU-Coprocessore

Il risultato è un processore conIl risultato è un processore conrepertorio estesorepertorio esteso

CPUCPU NPXNPX

Bus esternoBus esterno

Numeric Numeric ProcessorProcessorExtensionExtension

Page 106: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 106

Modello esteso

Page 107: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 107

Estensione repertorio

� Attraverso il codice (prefisso) diescape ESC

Page 108: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 108

Collegamenti

Page 109: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 109

Interazione

Page 110: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 110

Interazione

Page 111: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 111

Interazioni

Interazione Sincronizzazione

Page 112: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 112

Esecuzione istruzione

Esempio: FADD Num

� CPU esegue il fetch� 8087 riconosce ESC, preleva codice e indirizzo

istruzione

� CPU legge alla prima posizione del dato(dummy read)� 8087 preleva indirizzo del dato

� 8087 legge il resto del dato contendendoil bus alla CPU

� 8087 completa l’istruzione

Page 113: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 113

Controllo condivisione bus

Controllo

Bus locale

Page 114: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 114

Protocollo Request/Grant

Page 115: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 115

IntegrazioneIntegrazione

��Con il 486 (1989) il coprocessore èCon il 486 (1989) il coprocessore èstato integrato nella CPUstato integrato nella CPU

��Il 486 integrava 1,2 M transistoriIl 486 integrava 1,2 M transistori

Page 116: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 116

MMX: Multimedia MMX: Multimedia ExtensionExtension

��Col Col PentiumPentium MMX (1997) è stato MMX (1997) è statoaggiunto un insieme di registri e diaggiunto un insieme di registri e diistruzioni per la multimedialitàistruzioni per la multimedialità

��SIMD: Single SIMD: Single Instruction Instruction MultipleMultipleData Data modelmodel

Page 117: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 117

MMXMMX

��8 nuovi registri da 64 bit8 nuovi registri da 64 bit(MM0, MM1, ….. MM7)(MM0, MM1, ….. MM7)

��57 istruzioni SIMD57 istruzioni SIMD

77 66 00

Esempio: Esempio: packed packed byte byte integersintegers

Page 118: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 118

StreamingStreaming SIMD SIMD ExtensionsExtensions

��Introdotte col Introdotte col Pentium Pentium III (1999)III (1999)

��8 nuovi registri da 128 bit8 nuovi registri da 128 bit(XMM0, XMM1, ….. XMM7)(XMM0, XMM1, ….. XMM7)

�Istruzioni per packed and scalarsingle-precision floating-point

Page 119: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 119

SSESSE

003131127127 6464 3232

Esempio:128-Bit Packed Single-PrecisionFloating-Point

(4 valori Floating singola precisione)

Page 120: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 120

Prestazioni in MIPS delle CPU Intel dall'8086 al Pentium

218,9

100

70,7

41

20

11,4

3,6

2,66

1,2

0,75

0,33

0 50 100 150 200 250

PENTIUM 133MHz

(1993) PENTIUM 60MHz

486DX4 100MHz

486DX2 50MHz

(1989) 486DX 25MHz

(1989) 386DX 33MHz

(1985) 386DX 16MHz

286 12MHz

(1982) 286 8 MHz

8086 10MHz

(1979) 8086 5MHz

Page 121: Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici 2/Materiale/X86.pdf · 2009-10-20 · CSCS IPIP MEMMEM IP Instruction Pointer in

01/04/03 G. Bucci - Calcolatori Elettoronici 121

Prestazioni Spec95 delle CPU Intel a partire dal Pentium

12,8

9,47

8,66

6,08

7,12

5,6

5,17

2,74

2,31

9,14

7,04

6,8

5,42

5,21

4,34

4,32

2,39

2,02

0 2 4 6 8 10 12 14

Pentium II 333MHz (Gen 1998)

Pentium II 233MHz (Mag 1997)

Pentium PRO 200MHz, 1MB L2 (Ago 1997)

Pentium PRO 150MHz, 256K L2 (Nov 1995)

Pentium MMX 233MHz (Giu 1997)

Pentium MMX 166MHz (Gen 1997)

Pentium 200MHz (Giu 1996)

Pentium 100MHz (Mar 1994)

Pentium 75MHz (Ott 1994)

SPECfpP95

SPECint95