• Non ci sono risultati.

è 40 piedini è 40 piedini

N/A
N/A
Protected

Academic year: 2021

Condividi "è 40 piedini è 40 piedini"

Copied!
121
0
0

Testo completo

(1)
(2)

Giugno 1978: 8086 Giugno 1978: 8086

è 40 piedini è 40 piedini

è 29.000 transistori è 29.000 transistori

è f = 5 Mhz

è f = 5 Mhz

(3)

8086 8086

è tempo medio per istruzione:

15 * 200 ns = 3 micro secondi equivalenti a 0,33 MIPS

è tempo medio per istruzione:

15 * 200 ns = 3 micro secondi equivalenti 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)

(4)

Modello di Programmazione Modello 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)

(5)

Modello di Programmazione

Modello di Programmazione

(6)

Registri dati Registri dati

è (Quasi) intercambiabili è (Quasi) intercambiabili

è Ma hanno anche ruoli specifici:

AX: accumulatore BX: base

CX: contatore

è Ma hanno anche ruoli specifici:

AX: accumulatore BX: base

CX: contatore

(7)

Registri puntatori Registri puntatori

è SP: Stack Pointer è SP: Stack Pointer

è BP: Base Pointer

per puntare entro entro lo stack è BP: Base Pointer

per puntare entro entro lo stack è SI: Source Index

è SI: Source Index

(8)

CS CS SS SS DS DS

REGISTRI DI SEGMENTO REGISTRI DI SEGMENTO

IP IP FLAGS FLAGS

Altri registri

Altri registri

(9)

CS CS IP IP

MEM MEM

IP IP

è Instruction Pointer in

accoppiamento con CS ha la

funzione di puntatore di programma è Instruction Pointer in

accoppiamento con CS ha la

funzione di puntatore di programma

(10)

0 7

16

FLAGS (8086) FLAGS (8086)

è bit di stato e di controllo è bit di stato e di controllo

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

4 Controllo: DF, IF, TF

4 Controllo: DF, IF, TF

(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 per è Tutti GPR sono usabili per

Evoluzione

Evoluzione

(12)

Modello a 32 bit Modello a 32 bit

Dal 386 in poi Dal 386 in poi

A 16 bit

(13)

Organizzazione della

memoria e

segmentazione Organizzazione

della

memoria

segmentazione e

(14)

Organizzazione della memoria Organizzazione della memoria

è Lo spazio di memoria è logicamente diviso in segmenti

è Lo spazio di memoria è logicamente diviso in segmenti

è Segmento: unità di memoria con estensione massima di 2

16

=64 K è Segmento: unità di memoria con estensione massima di 2

16

=64 K

è Un segmento può essere sistemato in qualunque posizione di memoria

è Un segmento può essere sistemato in qualunque posizione di memoria

è I segmenti possono essere adiacenti,

è I segmenti possono essere adiacenti,

(15)

Segmentazione Segmentazione

CS, DS, SS, ES contengono l’indirizzo di partenza

dei segmenti correnti

CS, DS, SS, ES contengono l’indirizzo di partenza

dei segmenti correnti

è CS -> segmento di codice è CS -> segmento di codice

è DS -> segmento dati

è DS -> segmento dati

(16)

Indirizzo logico: SR:OFFSET Indirizzo logico: SR:OFFSET

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

SR SR SR

0 0

OFFSET

OFFSET indirizzo

fisico

indirizzo fisico

base base

Memoria

Memoria

(17)

Calcolo dell’indirizzo

Calcolo dell’indirizzo

(18)

Esempio

(19)

La segmentazione La segmentazione

è I segmenti di codice, dati e stack rappresentano tre spazi logici

associabili in modo naturale alla struttura dei programmi

è I segmenti di codice, dati e stack rappresentano tre spazi logici

associabili in modo naturale alla struttura dei programmi

è Programma:

è Programma:

(20)

è Tende a oscurarne la leggibilità rispetto a uno spazio di indirizzi piatto

è Tende a oscurarne la leggibilità rispetto a uno spazio di indirizzi piatto

è Semplifica la rilocazione

(basta aggiustare i registri di è Semplifica la rilocazione

(basta aggiustare i registri di

La segmentazione

(21)

Fetch Fetch

Fetch

Stack Stack

Stack

Variabili Variabili

Variabili

normaleRegReg normale

CS CS SS SS DS DS

---

---

---

CS,ES,SS CS,ES,SS

CS,ES,SS

alternativoRegRegReg alternativo alternativo

---

---

---

OFFSET OFFSET OFFSET

IP IP

IP

SP SP

SP

EA EA

EA

Indirizzi logici (composizione)

Indirizzi logici (composizione)

Str. Sorg

Str

Str

. Sorg

.

Sorg

DS DS

CS,ES,SS

CS,ES,SS CS,ES,SS

SI

SI SI

(22)

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

è Col 386 i registri di segmento diventano 6 e i segmenti possono arrivare fino a 1 è Col 386 i registri di segmento diventano

6 e i segmenti possono arrivare fino a 1 è Con il 286 il contenuto dei registri di

segmento viene interpretato come

selettore di segmento (modo virtuale protetto)

è Con il 286 il contenuto dei registri di segmento viene interpretato come

selettore di segmento (modo virtuale protetto)

Evoluzione

Evoluzione

(23)

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

(relativamente) bassa: “

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

transistori

nn Non esistevano integrati commerciali con piùNon esistevano integrati commerciali con più di 40 piedini

di 40 piedini

nn I progettisti hanno dovuto bilanciare leI progettisti hanno dovuto bilanciare le differenti esigenze

differenti esigenze

Osservazioni

Osservazioni

(24)

Conseguenze Conseguenze

nn Numero limitato di registri di CPUNumero limitato di registri di CPU nn Registri e percorsi interni a 16 bitRegistri e percorsi interni a 16 bit

nn Indirizzo (fisico) a 20 bit solo in uscita dalla CPUIndirizzo (fisico) a 20 bit solo in uscita dalla CPU nn Segmentazione della memoriaSegmentazione della memoria

nn Bus multiplexedBus multiplexed (indirizzi e dati) (indirizzi e dati)

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

(coprocessore)

(25)
(26)

L’integrato

(27)

L’integrato:

Alimentazione

Clock e

(28)

RESET e READY RESET e READY

Quando RESET è asserito:

Quando RESET è asserito:

nn

CS viene posto a FFFF ( CS viene posto a FFFF ( hex hex ) )

nn

IP viene posto a 0 IP viene posto a 0

nn la prima istruzione eseguita è quella allala prima istruzione eseguita è quella alla locazione FFFF0

locazione FFFF0

nn Ready

Ready : se non asserito determina : se non asserito determina

(29)

nn

Selezionato attraverso il piedino Selezionato attraverso il piedino MIN/MAX

MIN/MAX

nn

Il modo massimo prevede l’uso del Il modo massimo prevede l’uso del coprocessore esterno o di un

coprocessore esterno o di un

Modo Minimo/Massimo

Modo Minimo/Massimo

(30)

Bus 8086 Bus 8086

nn

Bus dati e indirizzi su linee condivise Bus dati e indirizzi su linee condivise AD AD

15-0 15-0

(più A (più A

19-1619-16

) )

nn

Occorrono: Occorrono:

nn

Latch Latch per il bus indirizzi per il bus indirizzi

nn

Transceiver Transceiver per il bus dati per il bus dati

ALE ALE : : Address Latch Enable Address Latch Enable

(31)

L’integrato 8086 L’integrato 8086

Linee Linee Indirizzi Indirizzi

e e

Dati Dati

(32)

L’integrato 8086 L’integrato 8086

Modo Modo minimo minimo

Vcc

(33)

Ricostruzione bus Ricostruzione bus

(in modo Minimo)

(in modo Minimo)

(34)

Ciclo di lettura Ciclo di lettura

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

separati

separati

(35)

L’integrato 8086 L’integrato 8086

Modo Modo massimo

massimo GND

(36)

Ricostruzione bus Ricostruzione bus

(in modo Massimo)

(in modo Massimo)

(37)

CPU CPU DBUS DBUS (16 bit) (16 bit)

Linee di controllo Linee di controllo ABUS

ABUS (20 bit) (20 bit)

Schema

Schema di riferimento di riferimento

(38)
(39)

Accesso alla memoria Accesso alla memoria

nn

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

(word) o 8 bit (byte)

nn

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

nn

Organizzazione Organizzazione

Little endian

Little endian

MSB LSB

(40)

La memoria La memoria

3 3

4 4 0 0 2 2 1 1

5 5

4 4 3 3 2 2 1 1 0 0 Parola

Parola a a indirizzo indirizzo

pari pari

(41)

3 3

4 0 0 2 2 1 1

5

4 4 3 3 2 2 1 1 0 0 Parola

Parola a a indirizzo indirizzo

dispari dispari

La memoria

La memoria

(42)

Accesso alla memoria Accesso alla memoria

nn

lettura/scrittura a 16 bit (8086): lettura/scrittura a 16 bit (8086):

nn parola allineata ad indirizzo pariparola allineata ad indirizzo pari: 1 ciclo: 1 ciclo di lettura/scrittura

di lettura/scrittura

nn parola allineata agli indirizzi dispariparola allineata agli indirizzi dispari: 2: 2 cicli di lettura/scrittura

cicli di lettura/scrittura

(43)

Accesso alla memoria

Accesso alla memoria

(44)

Selezione Selezione

BHE A0 BHE A0

0 0

0 0 Parola Parola 1 0

1 0 Byte a indirizzo pari Byte a indirizzo pari 0 1

0 1 Byte a indirizzo dispari Byte a indirizzo dispari 1 1

1 1 N. A. N. A.

(45)

Evoluzione Evoluzione

nn

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

allineate a indirizzi multipli di 4

nn

Dal Dal Pentium Pentium il bus dati diventa a 64 il bus dati diventa a 64

bit: lette sempre due parole allineate

bit: lette sempre due parole allineate

(46)
(47)

Struttura interna

Struttura interna

(48)

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

nn

BIU ed EU possono lavorare in BIU ed EU possono lavorare in parallelo

parallelo

nn

Quando EU è impegnata e non sta Quando EU è impegnata e non sta indirizzando la memoria, BIU può indirizzando la memoria, BIU può leggere dalla memoria la prossima leggere dalla memoria la prossima istruzione in sequenza

istruzione in sequenza

(49)

La coda La coda

nn

E’ una E’ una

memoria di passaggiomemoria di passaggio (buffer)

(buffer) per le istruzioni

per le istruzioni

nn

E’ una forma elementare di pipeline E’ una forma elementare di

pipeline nn

Dimensione: Dimensione:

(50)

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

nn

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

è bene che la lettura sia a 16 bit

nn

Se un’istruzione di salto porta ad un Se un’istruzione di salto porta ad un indirizzo dispari, viene letto un solo indirizzo dispari, viene letto un solo byte, in modo che le successive

byte, in modo che le successive

letture siano a 2 byte alla volta

letture siano a 2 byte alla volta

(51)

Stato iniziale ( coda vuota )

Stato iniziale ( coda vuota )

(52)

Istr. 1 Istr. 1

Primo fetch

Primo fetch

(53)

Istr. 2 Istr. 2

Secondo fetch

Secondo fetch

(54)

Istr. 3 Istr. 3

Terzo fetch Terzo fetch

Istr. 2 Istr. 2

Istr. 1

Istr. 1

(55)

Prelievo Istr.1 Prelievo Istr.1

Istr. 3 Istr. 3

Istr. 2

Istr. 2

(56)

Istr. 3 Istr. 3

Prelievo Istr.2

Prelievo Istr.2

(57)

Istr. 3 Istr. 3

Quarto fetch Quarto

Quarto fetch fetch

Istr. 4

Istr. 4

(58)

Istr. 4 Istr. 4

Prelievo Istr. 3

Prelievo Istr. 3

(59)

Istr. 4 Istr. 4

Quinto fetch Quinto fetch

Istr. 5

Istr. 5

(60)

Istr. 4 Istr. 4

Istr. 5 Istr. 5

Sesto fetch Sesto fetch

Istr. 6

Istr. 6

(61)

Evoluzione Evoluzione

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

nn La CPU ha una cache istruzioni internaLa CPU ha una cache istruzioni interna nn Dalla cache vengono prelevati 32 byteDalla cache vengono prelevati 32 byte

alla volta alla volta

(62)

Cache

Cache

Istruzioni

Istruzioni

DBUS (64 bit) DBUS (64 bit)

(linee di 32 byte)

(linee di 32 byte)

Marcamento

Marcamento

(63)

Cache

Cache

Istruzioni

Istruzioni

DBUS (64 bit) DBUS (64 bit)

EIP

EIP

(linee di 32 byte)

(linee di 32 byte)

Marcamento

Marcamento

(64)

Cache

Cache

Istruzioni

Istruzioni

DBUS (64 bit) DBUS (64 bit)

EIP

EIP

(linee di 32 byte)

(linee di 32 byte)

32 byte 32 byte

Marcamento

Marcamento

(65)

Cache

Cache

Istruzioni

Istruzioni EIP

EIP

Marcamento

Marcamento

DBUS (64 bit) DBUS (64 bit)

(66)

Cache

Cache

Istruzioni

Istruzioni EIP

EIP

Marcamento

Marcamento

DBUS (64 bit) DBUS (64 bit)

(67)

Cache

Cache

Istruzioni

Istruzioni EIP

EIP

DBUS (64 bit) DBUS (64 bit)

(68)

Cache

Cache

Istruzioni

Istruzioni EIP

EIP

Marcamento

Marcamento

DBUS (64 bit) DBUS (64 bit)

(69)
(70)

Repertorio Istruzioni Repertorio Istruzioni

nn

Molto ampio Molto ampio tipico di CPU

tipico di CPU microprogrammate microprogrammate

nn

Istruzioni di dimensione variabile, in Istruzioni di dimensione variabile, in base al codice di operazione e alla

base al codice di operazione e alla modalità di indirizzamento

modalità di indirizzamento

(71)

Trasferimento dell’informazione Trasferimento dell’informazione

MOV MOV destination,source

destination,source

PUSH source PUSH

source

POPF POPF

OUT OUT

port, accumulator port, accumulator

(72)

Aritmetiche e logiche Aritmetiche e logiche

ADDADD destination,source destination,source DECDEC destination destination

IDIVIDIV source source CBWCBW

SHRSHR destination,count destination,count

(73)

Trasferimento del controllo Trasferimento del controllo

JMPJMP target target CALL

CALL procedureprocedure JZJZ short-label short-label LOOP

LOOP short-labelshort-label RETRET

-128-128 +127+127

IP IP

(74)

Formato Formato

nn

Istruzioni di dimensione variabile, in Istruzioni di dimensione variabile, in base al codice di operazione e alla

base al codice di operazione e alla modalità di indirizzamento

modalità di indirizzamento

nn

Almeno 1 byte per il codice di Almeno 1 byte per il codice di istruzione

istruzione

nn

Da 0 a 5 byte aggiuntivi Da 0 a 5 byte aggiuntivi

(75)

Nei byte aggiuntivi Nei byte aggiuntivi

nn

Il tipo di indirizzamento Il tipo di indirizzamento

nn

Gli eventuali registri implicati Gli eventuali registri implicati

nn

Uno Uno scostamento scostamento

nn

Un dato immediato Un dato immediato

nn

Uno scostamento Uno scostamento e un dato e un dato

(76)

Istruzioni di 1 byte Istruzioni di 1 byte

CLI CLI

nn

Operandi Operandi impliciti impliciti OP OP

nn

Con registro Con registro OP OP R R PUSH AX

PUSH AX

(77)

Istruzioni di 2 byte Istruzioni di 2 byte

MOV AL,BL MOV AL,BL

nn

Registro-registro Registro-registro OP OP

1111

R R

R/MR/M

nn

Registro-memoria Registro-memoria OP OP

mm

R R

R/MR/M

(78)

Istruzioni di 4 byte Istruzioni di 4 byte

nn

Reg Reg - - mem mem con con scostamento scostamento

ADD AL,VAR[BX]

ADD AL,VAR[BX]

Offset VAR

Offset VAR

OP OP

mm

R R

R/MR/M

(79)

Fetch

Fetch istruzioni istruzioni

nn

La decodifica delle istruzioni è basata La decodifica delle istruzioni è basata su OP, m, R/M

su OP, m, R/M

nn

La loro combinazione determina il La loro combinazione determina il

numero dei byte da estrarre dalla

numero dei byte da estrarre dalla

(80)

Esempi di istruzioni Esempi di istruzioni

8A 8A C3 C3

B0 B0 51 51 50 50

nn

PUSH AX PUSH AX

nn

MOV AL,BL MOV AL,BL

nn

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

(81)

Esempi di istruzioni Esempi di istruzioni

A0 A0 Offset VAR Offset VAR

Offset VAR Offset VAR 8A 8A 87 87

nn

MOV AL, VAR MOV AL, VAR

nn

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

(82)

Esempi di istruzioni Esempi di istruzioni

nn

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

Offset VAR

C7 C7 87 87 77FF 77FF

(83)
(84)

Indirizzamento Indirizzamento

Tra registri Tra registri

MOV

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

MOV CX, DX CX, DX ;CX := DX ;CX := DX Immediato

Immediato

MOV MOV AL, 27 AL, 27 ;AL := 27 ;AL := 27

(85)

Riferimento alla memoria Riferimento alla memoria

nn

Il normale Il normale reg reg di segmento è DS di segmento è DS

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

nn

Registro alternativo a DS Registro alternativo a DS

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

(86)

Indirizzamento in memoria Indirizzamento in memoria

nn

Diretto Diretto MOV

MOV VAR,AX VAR,AX

; M[Offset(VAR)]:= AX

; M[Offset(VAR)]:= AX nn

Indiretto attraverso registri Indiretto attraverso registri

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

;M[BX] := AX

;M[BX] := AX

(87)

nn

Relativo Relativo

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

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

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

nn

Indiretto e Indiretto e indiciato indiciato MOV MOV AX,[BX] [SI] AX,[BX] [SI]

Indirizzamento in memoria

Indirizzamento in memoria

(88)

nn

Forma generale Forma generale

MOV MOV AX,V [BX] [SI] AX,V [BX] [SI]

;EA = Offset(V) + BX + SI

;EA = Offset(V) + BX + SI

Indirizzamento in memoria

Indirizzamento in memoria

(89)

Riferimento allo

Riferimento allo stack stack

nn

Le istruzioni PUSH e POP depositano Le istruzioni PUSH e POP depositano e prelevano un dato a 16 bit dalla

e prelevano un dato a 16 bit dalla testa dello

testa dello stack stack (e aggiornano SP) (e aggiornano SP) PUSH

PUSH CX CX

POP POP SI SI

(90)

Stack

Stack

(91)

Riferimento allo

Riferimento allo stack stack

nn

Entro lo stack Entro lo 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

(92)

Calcolo ind di memoria

(93)

Evoluzione Evoluzione

è Col 386 tutti i GPR diventano utilizzabili come puntatori

è Col 386 tutti i GPR diventano utilizzabili come puntatori

è Viene introdotto il fattore di scala

è Viene introdotto il fattore di scala

è Lo scostamento è a 8, 16 o

è Lo scostamento è a 8, 16 o

(94)

CSCS ESES DSDS FSFS

SSSS GSGS

ECXECX ESIESI EAXEAX EBXEBX EDXEDX EBPEBP EDIEDI

+ +

ECXECX ESIESI EAXEAX EBXEBX EDXEDX EBPEBP EDIEDI

+ + * *

11 22 44 88

+ +

NO DNO D 8b D8b D 32b D 32b D

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

Evoluzione

Evoluzione

(95)

Indirizzamento porte di I/O Indirizzamento porte di I/O

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

IN IN AL,PORTA AL,PORTA OUT

OUT PORTA,AX PORTA,AX

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

IN IN AX,DX AX,DX

(96)

Indirizzamento istruzioni Indirizzamento istruzioni

nn

il contatore di programma è il contatore di programma è

sempre

sempre dato dalla coppia CS:IP

dato dalla coppia CS:IP (equivalente (equivalente all’usuale

all’usuale Program Counter Program Counter ) )

nn

salti/chiamate di salti/chiamate di soubroutine soubroutine : :

Intrasegmento

Intrasegmento

- modificano solo IP - modificano solo IP Intersegmento

Intersegmento

- modificano sia CS - modificano sia CS

che IP

(97)

Trasferimento del controllo Trasferimento del controllo

Intrasegmento

Intrasegmento : :

sostituisce IP

sostituisce IP

nn

Diretto Diretto : IP:= IP + SCOST : IP:= IP + SCOST

nn SCOST: 16/8 bit codificati nell’istruzioneSCOST: 16/8 bit codificati nell’istruzione nn Nei salti condizionati SCOST è sempre di 8Nei salti condizionati SCOST è sempre di 8

bitbit

CALL NEAR_

CALL NEAR_ Proc Proc

(98)

Trasferimento del controllo Trasferimento del controllo

Intrasegmento

Intrasegmento : :

sostituisce IP

sostituisce IP Indiretto

Indiretto : : IP viene sostituito con il IP viene sostituito con il contenuto di un registro o di una contenuto di un registro o di una parola di memoria

parola di memoria

JMP JMP CX CX

(99)

Trasferimento del controllo Trasferimento del controllo

Intersegmento

Intersegmento : :

sostituisce CS,IP

sostituisce CS,IP

nn

Diretto Diretto : (CS,IP):= SCOST : (CS,IP):= SCOST

HH

+ SCOST + SCOST

LL

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

JMP JMP FAR_LABEL FAR_LABEL

CALL CALL FAR_PROC FAR_PROC

(100)

Trasferimento del controllo Trasferimento del controllo

Intersegmento

Intersegmento : :

sostituisce CS,IP

sostituisce CS,IP

nn

Indiretto: Indiretto:

nn CS,IP vengono sostituiti con il contenutoCS,IP vengono sostituiti con il contenuto di due parole consecutive di memoria

di due parole consecutive di memoria

JMP DWORD PTR[BX]

JMP DWORD PTR[BX]

(101)

Salti condizionati Salti condizionati

JNE JNE NOT_ NOT_ Equal Equal JZ JZ IS_0 IS_0

Massimo

Massimo scostamento scostamento : :

nn

In avanti di 127 posizioni In avanti di 127 posizioni

nn

Indietro di 128 Indietro di 128

(102)

Modello di Modello di

programmazione programmazione

attuale

attuale

(103)

Aritmetica Floating Aritmetica Floating

nn

L’8086 non aveva istruzioni in L’8086 non aveva istruzioni in virgola

virgola

nn

Il coprocessore 8087: Il coprocessore 8087:

nn Concepito per lavorare in parallelo e inConcepito per lavorare in parallelo e in collaborazione con la CPU

collaborazione con la CPU

nn Estende il repertorio istruzioniEstende il repertorio istruzioni

(104)

Il coprocessore x87 Il coprocessore x87

nn

Aritmetica floating velocizzata di un Aritmetica floating velocizzata di un fattore 2.

fattore 2.

n n Esempio: FADD Esempio: FADD

nn 1,6 ms1,6 ms solo 8086 solo 8086

nn 14 micro14 micro s con 8087 s con 8087

(105)

Modello CPU-Coprocessore Modello CPU-Coprocessore

CPU

CPU

NPX

NPX

Bus esterno

Bus esterno

Numeric

Numeric

Processor

Processor

Extension

Extension

(106)

Modello esteso

(107)

Estensione repertorio

n Attraverso il codice (prefisso) di

escape ESC

(108)

Collegamenti

(109)

Interazione

(110)

Interazione

(111)

Interazioni

Interazione Sincronizzazione

(112)

Esecuzione istruzione

Esempio: FADD Num

n CPU esegue il fetch

¨ 8087 riconosce ESC, preleva codice e indirizzo istruzione

n CPU legge alla prima posizione del dato (dummy read)

¨ 8087 preleva indirizzo del dato

n 8087 legge il resto del dato contendendo

(113)

Controllo condivisione bus

Controllo

Bus locale

(114)

Protocollo Request/Grant

(115)

Integrazione Integrazione

nn

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

stato integrato nella CPU

nn

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

(116)

MMX: Multimedia

MMX: Multimedia Extension Extension

nnCol PentiumCol Pentium MMX (1997) è stato MMX (1997) è stato aggiunto un insieme di registri e di aggiunto un insieme di registri e di

istruzioni per la multimedialità istruzioni per la multimedialità

nnSIMD: Single SIMD: Single Instruction Instruction MultipleMultiple Data

Data modelmodel

(117)

MMX MMX

nn

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

(MM0, MM1, ….. MM7)

nn57 istruzioni SIMD57 istruzioni SIMD

Esempio:

Esempio: packed byte

packed

byte integers

integers

(118)

Streaming

Streaming SIMD SIMD Extensions Extensions

nnIntrodotte col Pentium Introdotte col Pentium III (1999)III (1999) nn8 nuovi registri da 128 bit8 nuovi registri da 128 bit

(XMM0, XMM1, ….. XMM7) (XMM0, XMM1, ….. XMM7)

nIstruzioni per packed and scalar single-precision floating-point

(119)

SSE SSE

00 3131

127127 6464 3232

Esempio:

128-Bit Packed Single-Precision Floating-Point

(4 valori Floating singola precisione)

(120)

Prestazioni in MIPS delle CPU Intel dall'8086 al Pentium

41 20

11,4 3,6 2,66 1,2 0,75 0,33

486DX2 50MHz (1989) 486DX 25MHz (1989) 386DX 33MHz (1985) 386DX 16MHz 286 12MHz (1982) 286 8 MHz 8086 10MHz (1979) 8086 5MHz

(121)

Prestazioni Spec95 delle CPU Intel a partire dal Pentium

6,08

7,12 5,6

5,17 2,74

2,31

5,42 5,21 4,34 4,32 2,39

2,02

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

Riferimenti

Documenti correlati

Può essere reso conduttivo (R&lt;10 2 Ohm/m) mettendo a terra la spirale Tubo in TPU a base estere, antifiamma secondo UL 94 V2, con spirale di rinforzo in PVC rigido

Giulio Fornero – Coordinatore Commissione Organizzazione Sanitaria, Accreditamento Istituzionale e Programmazione Professionale OMCeO Torino. Dr.ssa Ivana Garione – Consigliera

rappresenta una classe di fatti, nel modello Entity-Relationship; tradotto anche con. associazione

CANONI DI LOCAZIONE O

CITTADINANZA TIPO DOCUMENTO IDENTIFICAZIONE NUMERO DATA RILASCIO AUTORITÀ CHE HA RILASCIATO IL

ARTICOLO 3 - TERMINI E MODALITÀ DI ACCESSO AL CONCORSO Possono essere presentati lavori scientifici e progetti di ricerca di tipo clinico e traslazionale. Tali lavori possono essere

gennaio 2017, le strutture periferiche non dovevano autonomamente avviare procedure di affidamenti contrattuali con altri fornitori, ma emettere specifici ordinativi

alla Variazione n. Il Collegio prende atto che alla data odierna INDIRE non ha ancora provveduto a fornire al MIUR l'informativa richiesta con la nota trasmessa in data 23.12.2015