Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici...
Transcript of Questi trasparenti sono una versione estesa di quelli …unina.stidue.net/Calcolatori Elettronici...
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
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
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
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))
01/04/03 G. Bucci - Calcolatori Elettoronici 5
Modello di ProgrammazioneModello di Programmazione
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
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
01/04/03 G. Bucci - Calcolatori Elettoronici 8
CSCS
SSSS
DSDS
ESES
REGISTRI DISEGMENTOREGISTRI DISEGMENTO
IPIP
FLAGSFLAGS
Altri registriAltri registri
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
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
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
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
01/04/03 G. Bucci - Calcolatori Elettoronici 13
Organizzazionedella
memoriae
segmentazione
(8086)
Organizzazionedella
memoriae
segmentazione
(8086)
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
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”
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
01/04/03 G. Bucci - Calcolatori Elettoronici 17
Calcolo dell’indirizzoCalcolo dell’indirizzo
01/04/03 G. Bucci - Calcolatori Elettoronici 18
Esempio
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:
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
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
--- ------
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
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
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”
01/04/03 G. Bucci - Calcolatori Elettoronici 25
01/04/03 G. Bucci - Calcolatori Elettoronici 26
L’integrato
01/04/03 G. Bucci - Calcolatori Elettoronici 27
L’integrato:
Alimentazionee
Clock
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
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
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
01/04/03 G. Bucci - Calcolatori Elettoronici 31
L’integrato 8086L’integrato 8086
Linee Linee
IndirizziIndirizzi
ee
DatiDati
01/04/03 G. Bucci - Calcolatori Elettoronici 32
L’integrato 8086L’integrato 8086
ModoModo
minimominimo
Vcc
01/04/03 G. Bucci - Calcolatori Elettoronici 33
Ricostruzione busRicostruzione bus
(in modo Minimo)(in modo Minimo)
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
01/04/03 G. Bucci - Calcolatori Elettoronici 35
L’integrato 8086L’integrato 8086
ModoModo
massimomassimo GND
01/04/03 G. Bucci - Calcolatori Elettoronici 36
Ricostruzione busRicostruzione bus
(in modo Massimo)(in modo Massimo)
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
01/04/03 G. Bucci - Calcolatori Elettoronici 38
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
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
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
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
01/04/03 G. Bucci - Calcolatori Elettoronici 43
Accesso alla memoriaAccesso alla memoria
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.
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
01/04/03 G. Bucci - Calcolatori Elettoronici 46
01/04/03 G. Bucci - Calcolatori Elettoronici 47
Struttura internaStruttura interna
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
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
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
01/04/03 G. Bucci - Calcolatori Elettoronici 51
Stato iniziale (coda vuota)Stato iniziale (coda vuota)
01/04/03 G. Bucci - Calcolatori Elettoronici 52
Istr. 1Istr. 1
Primo fetchPrimo fetch
01/04/03 G. Bucci - Calcolatori Elettoronici 53
Istr. 2Istr. 2
Secondo fetchSecondo fetch
Istr. 1Istr. 1
01/04/03 G. Bucci - Calcolatori Elettoronici 54
Istr. 3Istr. 3
Terzo fetchTerzo fetch
Istr. 2Istr. 2
Istr. 1Istr. 1
01/04/03 G. Bucci - Calcolatori Elettoronici 55
Prelievo Istr.1Prelievo Istr.1
Istr. 3Istr. 3
Istr. 2Istr. 2
01/04/03 G. Bucci - Calcolatori Elettoronici 56
Istr. 3Istr. 3
Prelievo Istr.2Prelievo Istr.2
01/04/03 G. Bucci - Calcolatori Elettoronici 57
Istr. 3Istr. 3
Quarto fetchQuarto Quarto fetchfetch
Istr. 4Istr. 4
01/04/03 G. Bucci - Calcolatori Elettoronici 58
Istr. 4Istr. 4
Prelievo Istr. 3Prelievo Istr. 3
01/04/03 G. Bucci - Calcolatori Elettoronici 59
Istr. 4Istr. 4
Quinto fetchQuinto fetch
Istr. 5Istr. 5
01/04/03 G. Bucci - Calcolatori Elettoronici 60
Istr. 4Istr. 4
Istr. 5Istr. 5
Sesto fetchSesto fetch
Istr. 6Istr. 6
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
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
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
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
01/04/03 G. Bucci - Calcolatori Elettoronici 65
CacheCacheIstruzioniIstruzioniEIPEIP
16 byte16 byte
DecodificaDecodifica
MarcamentoMarcamento
DBUS (64 bit)DBUS (64 bit)
01/04/03 G. Bucci - Calcolatori Elettoronici 66
CacheCacheIstruzioniIstruzioniEIPEIP
MarcamentoMarcamento
DBUS (64 bit)DBUS (64 bit)
01/04/03 G. Bucci - Calcolatori Elettoronici 67
CacheCacheIstruzioniIstruzioniEIPEIP
DecodificaDecodifica
DBUS (64 bit)DBUS (64 bit)
01/04/03 G. Bucci - Calcolatori Elettoronici 68
CacheCacheIstruzioniIstruzioniEIPEIP
MarcamentoMarcamento
DBUS (64 bit)DBUS (64 bit)
01/04/03 G. Bucci - Calcolatori Elettoronici 69
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
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
…..…..
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
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
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
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
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
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
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
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.
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??????
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]
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
01/04/03 G. Bucci - Calcolatori Elettoronici 83
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))
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)]
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
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
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
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
01/04/03 G. Bucci - Calcolatori Elettoronici 90
StackStack
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
01/04/03 G. Bucci - Calcolatori Elettoronici 92
Calcolo ind di memoria
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
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
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
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
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
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
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
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]
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
01/04/03 G. Bucci - Calcolatori Elettoronici 102
Modello diModello diprogrammazioneprogrammazione
attualeattuale
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
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
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
01/04/03 G. Bucci - Calcolatori Elettoronici 106
Modello esteso
01/04/03 G. Bucci - Calcolatori Elettoronici 107
Estensione repertorio
� Attraverso il codice (prefisso) diescape ESC
01/04/03 G. Bucci - Calcolatori Elettoronici 108
Collegamenti
01/04/03 G. Bucci - Calcolatori Elettoronici 109
Interazione
01/04/03 G. Bucci - Calcolatori Elettoronici 110
Interazione
01/04/03 G. Bucci - Calcolatori Elettoronici 111
Interazioni
Interazione Sincronizzazione
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
01/04/03 G. Bucci - Calcolatori Elettoronici 113
Controllo condivisione bus
Controllo
Bus locale
01/04/03 G. Bucci - Calcolatori Elettoronici 114
Protocollo Request/Grant
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
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
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
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
01/04/03 G. Bucci - Calcolatori Elettoronici 119
SSESSE
003131127127 6464 3232
Esempio:128-Bit Packed Single-PrecisionFloating-Point
(4 valori Floating singola precisione)
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
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