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

Documenti analoghi
Assembly. Modello x86

Famiglia dei processori INTEL

Calcolatori Elettronici Lezione A2 Architettura i8086

L insieme delle istruzioni (6)

Linguaggio Assembler Intel -cenni - Calcolatori Elettronici B a.a. 2005/2006 Massimiliano Giacomin

Architettura degli Elaboratori

Architettura degli Elaboratori

Architettura degli elaboratori (A)

Nel microprocessore 8086 abbiamo una gran quantità di registri

L architettura Intel

ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10)

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086.

Architettura 8086/8088

Architettura di una CPU

Linguaggio Assembler Intel 80x86. Calcolatori Elettronici B a.a. 2004/2005 Massimiliano Giacomin

Memoria e altro. Contenuto della lezione. Richiami Evoluzione Gerarchia Organizzazione Allineamento Indirizzamento Ecc

Il microprocessore 8086

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Sottosistemi ed Architetture Memorie

Sistemi Operativi. Introduzione all architettura IA-32 Lez. 16. Corso: Sistemi Operativi Danilo Bruschi A.A. 2010/2011

Pinout PD32. Memoria di lavoro esterna. tramite l indirizzo ad esse associato. e possono essere lette o scritte: Le singole celle sono distinguibili

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.

iafelice at cs(dot)unibo(dot)it

La CPU e la Memoria. Sistemi e Tecnologie Informatiche 1. Struttura del computer. Sistemi e Tecnologie Informatiche 2

Capitolo 10 La memoria

Architettura di un calcolatore: Introduzione parte 2

Il processore Pentium

Modi di indirizzamento

Il livello architettura e set di istruzioni

Architettura dei Calcolatori elettronici

Il processore Pentium (G. Manduchi - M. Moro )

iafelice at cs(dot)unibo(dot)it

Architettura dei calcolatori

Macchina di Riferimento: argomenti

L'architettura del processore MIPS

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086)

Componenti di un processore

Parte V. Il Livello delle Istruzioni Macchina

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Parte VI. Istruzioni ed indirizzamento

Sistemi x86 CALCOLATORI ELETTRONICI LM

Cenni ad Assembly Intel

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Istruzioni di modifica della sequenza di elaborazione

Prefazione Unit`a di misura xiii La memoria cache

Il Processore: l unità di controllo

Architettura degli elaboratori

Capitolo 5 Elementi architetturali di base

Architettura x86 a 64 bit

Numeri Reali. Sottoinsieme discreto dei Numeri Razionali. Sequenze di bit. Underflow. Densità che dipende dal numero di bit usati

Linguaggio Assembly e linguaggio macchina

1 Esercizi con architettura a 1 bus

Ing. Gabriele MONTI

Richiami sull architettura del processore MIPS a 32 bit

Architettura hardware

Architettura dei calcolatori

Sistemi e reti CPU Concetti di base

Esercizi su microistruzioni. 1 Esercizi con architettura a 1 bus

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Architettura del Set di Istruzioni (ISA)

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 13 Luglio 2004

Lezione 15. L elaboratore Elettronico

Il Sottosistema di Memoria

DIAGRAMMI TEMPORALI relativi all'esecuzione di una istruzione e agli accessi alla memoria:

Sistema Operativo - Gestione della Memoria lista argomenti di studio

Modi di indirizzamento del processore MC68000 (parte prima)

Il Sottosistema di Memoria

ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI

Elementi di Architettura

Elementi di informatica

Note sull architettura del calcolatore

CLASSIFICAZIONE DEI SISTEMI DI ELABORAZIONE AUTOMATICA DELL INFORMAZIONE

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

ARCHITETTURA elementi di base

Indirettezza. Fetch/Execute. Fetch/Execute. Introduzione della Indirettezza (indirect)

Programmazione Assembly Note su Microsoft Assembler

Il Processore. Informatica di Base -- R.Gaeta 27

Linguaggio Assembly e linguaggio macchina

Il Linguaggio Assembly: Gestione della memoria e controllo

Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo

Pipeline Problemi 1. Pipeline Problemi 2

L Assembler Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

Parte IV Architettura della CPU Central Processing Unit

Linguaggio Assembly e linguaggio macchina

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO

Hardware di un Computer

Calcolatori Elettronici II parte (CdL Ingegneria Informatica) Esame del 22 settembre 2011 tempo a disposizione: 1 ora e 30 minuti

Richiami sull architettura del processore MIPS a 32 bit

L unità di controllo di CPU a singolo ciclo

Processore M68000: organizzazione della memoria

Programmazione dello Z80

Calcolatori Elettronici A a.a. 2008/2009

ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI

Architettura dei sistemi di elaborazione: La CPU: Architettura (parte1)

ELETTRONICA II. Prof. Dante Del Corso - Politecnico di Torino

Elementi di informatica

Transcript:

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

Giugno 1978: 8086 40 piedini 29.000 transistori f = 5 Mhz CPI = 15 01/04/03 G. Bucci - Calcolatori Elettoronici 2

8086 tempo medio per istruzione: 15 * 200 ns = 3 micro secondi equivalenti a 0,33 MIPS Spazio memoria: 1 Mbyte Parallelismo: 16 bit, interno (registri) ed esterno (bus dati) L 8088 differiva solo per il bus dati a 8 bit 01/04/03 G. Bucci - Calcolatori Elettoronici 3

Modello di Programmazione 8 registri di uso generale 4 registri di segmento 1 registro di stato (FLAGS) 1 instruction pointer (IP) 01/04/03 G. Bucci - Calcolatori Elettoronici 4

Modello di Programmazione 01/04/03 G. Bucci - Calcolatori Elettoronici 5

Registri dati (Quasi) intercambiabili Ma hanno anche ruoli specifici: AX: accumulatore BX: base CX: contatore DX: indirizzamento I/O 01/04/03 G. Bucci - Calcolatori Elettoronici 6

Registri puntatori SP: Stack Pointer BP: Base Pointer per puntare entro entro lo stack SI: Source Index DI: Destination Index 01/04/03 G. Bucci - Calcolatori Elettoronici 7

Altri registri REGISTRI DI SEGMENTO CS SS DS ES IP FLAGS 01/04/03 G. Bucci - Calcolatori Elettoronici 8

IP Instruction Pointer in accoppiamento con CS ha la funzione di puntatore di programma CS IP MEM 01/04/03 G. Bucci - Calcolatori Elettoronici 9

FLAGS (8086) 16 bit di stato e di controllo Stato: CF, AF, OF, SF, ZF, PF Controllo: DF, IF, TF 7 0 OF DF IF TF SF ZF AF PF CF 01/04/03 G. Bucci - Calcolatori Elettoronici 10

Evoluzione Con l 80386 (1985): I registri di uso generale (GPR), IP e FLAGS diventano a 32 bit (EAX, EBX, ECX,., EIP, EFLAGS) Tutti GPR sono usabili per indirizzare 01/04/03 G. Bucci - Calcolatori Elettoronici 11

Modello a 32 bit Dal 386 in poi A 16 bit 01/04/03 G. Bucci - Calcolatori Elettoronici 12

Organizzazione della memoria e segmentazione (8086) 01/04/03 G. Bucci - Calcolatori Elettoronici 13

Organizzazione della memoria Lo spazio di memoria è logicamente diviso in segmenti Segmento: unità di memoria con estensione massima di 2 16 =64 K Un segmento può essere sistemato in qualunque posizione di memoria I segmenti possono essere adiacenti, disgiunti, parzialmente o totalmente sovrapposti 01/04/03 G. Bucci - Calcolatori Elettoronici 14

Segmentazione CS, DS, SS, ES contengono l indirizzo di partenza dei segmenti correnti CS -> segmento di codice DS -> segmento dati SS -> segmento stack ES -> segmento extra 01/04/03 G. Bucci - Calcolatori Elettoronici 15

Indirizzo logico: SR:OFFSET 0 <= indirizzo fisico < 1 M SR 0 base Memoria OFFSET indirizzo fisico 1M 01/04/03 G. Bucci - Calcolatori Elettoronici 16

Calcolo dell indirizzo 01/04/03 G. Bucci - Calcolatori Elettoronici 17

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

La segmentazione I segmenti di codice, dati e stack rappresentano tre spazi logici associabili in modo naturale alla struttura dei programmi Programma: Codice, Dati, Var. temporanee 01/04/03 G. Bucci - Calcolatori Elettoronici 19

La segmentazione Tende a oscurarne la leggibilità rispetto a uno spazio di indirizzi piatto Semplifica la rilocazione (basta aggiustare i registri di segmento) 01/04/03 G. Bucci - Calcolatori Elettoronici 20

Indirizzi logici (composizione) Reg normale Reg alternativo OFFSET Fetch CS --- IP Stack SS --- SP Variabili DS CS,ES,SS EA Str. Sorg DS CS,ES,SS SI Str.. Dest ES --- DI BP (base) SS CS,DS,SS EA 01/04/03 G. Bucci - Calcolatori Elettoronici 21

Evoluzione I registri di segmento restano a 16 bit Con il 286 il contenuto dei registri di segmento viene interpretato come selettore di segmento (modo virtuale protetto) Col 386 i registri di segmento diventano 6 e i segmenti possono arrivare fino a 1 Mbyte o 4 Gbyte (a seconda della granularità) 01/04/03 G. Bucci - Calcolatori Elettoronici 22

Osservazioni L 8086 è stato progettato a metà anni 70 All epoca la densità di integrazione era (relativamente) bassa: solo 29.000 transistori Non esistevano integrati commerciali con più di 40 piedini I progettisti hanno dovuto bilanciare le differenti esigenze Trade-off tra: obiettivi, costi (col vincolo della tecnologia) 01/04/03 G. Bucci - Calcolatori Elettoronici 23

Conseguenze Numero limitato di registri di CPU Registri e percorsi interni a 16 bit Indirizzo (fisico) a 20 bit solo in uscita dalla CPU Segmentazione della memoria Bus multiplexed (indirizzi e dati) Previsione di componenti di corredo (coprocessore) Tipica CPU microprogrammata: : repertorio di istruzioni complesso e disordinato 01/04/03 G. Bucci - Calcolatori Elettoronici 24

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

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

L integrato: Alimentazione e Clock 01/04/03 G. Bucci - Calcolatori Elettoronici 27

RESET e READY Quando RESET è asserito: CS viene posto a FFFF (hex( hex) IP viene posto a 0 la prima istruzione eseguita è quella alla locazione FFFF0 Ready: : se non asserito determina cicli di wait 01/04/03 G. Bucci - Calcolatori Elettoronici 28

Modo Minimo/Massimo Selezionato attraverso il piedino MIN/MAX Il modo massimo prevede l uso del coprocessore esterno o di un eventuale processore di I/O 01/04/03 G. Bucci - Calcolatori Elettoronici 29

Bus 8086 Bus dati e indirizzi su linee condivise AD15-0 (più A19-16A 19-16) Occorrono: Latch per il bus indirizzi Transceiver per il bus dati ALE: Address Latch Enable 01/04/03 G. Bucci - Calcolatori Elettoronici 30

L integrato 8086 Linee Indirizzi e Dati 01/04/03 G. Bucci - Calcolatori Elettoronici 31

L integrato 8086 Modo minimo Vcc 01/04/03 G. Bucci - Calcolatori Elettoronici 32

Ricostruzione bus (in modo Minimo) 01/04/03 G. Bucci - Calcolatori Elettoronici 33

Ciclo di lettura A partire dal 286 (1982) bus dati e indirizzi sono separati 01/04/03 G. Bucci - Calcolatori Elettoronici 34

L integrato 8086 Modo massimo GND 01/04/03 G. Bucci - Calcolatori Elettoronici 35

Ricostruzione bus (in modo Massimo) 01/04/03 G. Bucci - Calcolatori Elettoronici 36

Schema di riferimento ABUS (20 bit) CPU DBUS (16 bit) Linee di controllo 01/04/03 G. Bucci - Calcolatori Elettoronici 37

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

Accesso alla memoria l 8086 può leggere/scrivere 16 bit (word) o 8 bit (byte) l 8088 legge/scrive sempre un byte Organizzazione Little endian Parola MSB I+1 LSB I 01/04/03 G. Bucci - Calcolatori Elettoronici 39

La memoria 4 3 2 1 0 1 3 5 0 2 4 Parola a indirizzo pari FFFFF FFFFE 01/04/03 G. Bucci - Calcolatori Elettoronici 40

La memoria 4 3 2 1 0 1 3 5 0 2 4 Parola a indirizzo dispari FFFFF FFFFE 01/04/03 G. Bucci - Calcolatori Elettoronici 41

Accesso alla memoria lettura/scrittura a 16 bit (8086): parola allineata ad indirizzo pari: : 1 ciclo di lettura/scrittura parola allineata agli indirizzi dispari: : 2 cicli di lettura/scrittura 01/04/03 G. Bucci - Calcolatori Elettoronici 42

Accesso alla memoria 01/04/03 G. Bucci - Calcolatori Elettoronici 43

Selezione BHE A0 0 0 Parola 1 0 Byte a indirizzo pari 0 1 Byte a indirizzo dispari 1 1 N. A. 01/04/03 G. Bucci - Calcolatori Elettoronici 44

Evoluzione Quando l architettura diventa a 32 bit (80386) la lettura è sempre per parole allineate a indirizzi multipli di 4 Dal Pentium il bus dati diventa a 64 bit: lette sempre due parole allineate 01/04/03 G. Bucci - Calcolatori Elettoronici 45

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

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

Perché due unità? BIU ed EU possono lavorare in parallelo Quando EU è impegnata e non sta indirizzando la memoria, BIU può leggere dalla memoria la prossima istruzione in sequenza 01/04/03 G. Bucci - Calcolatori Elettoronici 48

La coda E una memoria di passaggio (buffer) per le istruzioni E una forma elementare di pipeline Dimensione: 6 6 byte nell 8086 4 4 byte nell 8088 01/04/03 G. Bucci - Calcolatori Elettoronici 49

Gestione della coda (8086) Per ottimizzare l uso del bus esterno è bene che la lettura sia a 16 bit Se un istruzione di salto porta ad un indirizzo dispari, viene letto un solo byte, in modo che le successive letture siano a 2 byte alla volta Nell immagine seguente si suppone che la lettura sia ad un indirizzo pari 01/04/03 G. Bucci - Calcolatori Elettoronici 50

Stato iniziale (coda vuota) 01/04/03 G. Bucci - Calcolatori Elettoronici 51

Primo fetch Istr. 1 01/04/03 G. Bucci - Calcolatori Elettoronici 52

Secondo fetch Istr. 2 Istr. 1 01/04/03 G. Bucci - Calcolatori Elettoronici 53

Terzo fetch Istr. 3 Istr. 2 Istr. 1 01/04/03 G. Bucci - Calcolatori Elettoronici 54

Prelievo Istr.1 Istr. 3 Istr. 2 01/04/03 G. Bucci - Calcolatori Elettoronici 55

Prelievo Istr.2 Istr. 3 01/04/03 G. Bucci - Calcolatori Elettoronici 56

Quarto fetch Istr. 4 Istr. 3 01/04/03 G. Bucci - Calcolatori Elettoronici 57

Prelievo Istr. 3 Istr. 4 01/04/03 G. Bucci - Calcolatori Elettoronici 58

Quinto fetch Istr. 5 Istr. 4 01/04/03 G. Bucci - Calcolatori Elettoronici 59

Sesto fetch Istr. 6 Istr. 5 Istr. 4 01/04/03 G. Bucci - Calcolatori Elettoronici 60

Evoluzione Nella versione attuale (P6) La CPU ha una cache istruzioni interna Dalla cache vengono prelevati 32 byte alla volta 01/04/03 G. Bucci - Calcolatori Elettoronici 61

DBUS (64 bit) Cache Istruzioni (linee di 32 byte) Marcamento Decodificatore 01/04/03 G. Bucci - Calcolatori Elettoronici 62

DBUS (64 bit) EIP Cache Istruzioni (linee di 32 byte) Marcamento Decodificatore 01/04/03 G. Bucci - Calcolatori Elettoronici 63

DBUS (64 bit) EIP Cache Istruzioni (linee di 32 byte) Marcamento 32 byte Decodificatore 01/04/03 G. Bucci - Calcolatori Elettoronici 64

DBUS (64 bit) EIP Cache Istruzioni Marcamento Decodifica 16 byte 01/04/03 G. Bucci - Calcolatori Elettoronici 65

DBUS (64 bit) EIP Cache Istruzioni Marcamento 01/04/03 G. Bucci - Calcolatori Elettoronici 66

DBUS (64 bit) EIP Cache Istruzioni Decodifica 01/04/03 G. Bucci - Calcolatori Elettoronici 67

DBUS (64 bit) EIP Cache Istruzioni Marcamento 01/04/03 G. Bucci - Calcolatori Elettoronici 68

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

Repertorio Istruzioni Molto ampio tipico di CPU microprogrammate Istruzioni di dimensione variabile, in base al codice di operazione e alla modalità di indirizzamento L istruzione MOV ha circa 30 variazioni 01/04/03 G. Bucci - Calcolatori Elettoronici 70

Trasferimento dell informazione MOV destination,source PUSH source POPF OUT port, accumulator.. 01/04/03 G. Bucci - Calcolatori Elettoronici 71

Aritmetiche e logiche ADD destination,source DEC destination IDIV source CBW SHR destination,count 01/04/03 G. Bucci - Calcolatori Elettoronici 72

Trasferimento del controllo JMP target CALL procedure JZ short-label LOOP short-label RET IP -128 +127 01/04/03 G. Bucci - Calcolatori Elettoronici 73

Formato Istruzioni di dimensione variabile, in base al codice di operazione e alla modalità di indirizzamento Almeno 1 byte per il codice di istruzione Da 0 a 5 byte aggiuntivi 01/04/03 G. Bucci - Calcolatori Elettoronici 74

Nei byte aggiuntivi Il tipo di indirizzamento Gli eventuali registri implicati Uno scostamento Un dato immediato Uno scostamento e un dato immediato 01/04/03 G. Bucci - Calcolatori Elettoronici 75

Istruzioni di 1 byte Operandi impliciti OP CLI Con registro PUSH AX OP R 01/04/03 G. Bucci - Calcolatori Elettoronici 76

Istruzioni di 2 byte Registro-registro MOV AL,BL OP R 11 R/M Registro-memoria OP m R R/M MOV AX,[BX] 01/04/03 G. Bucci - Calcolatori Elettoronici 77

Istruzioni di 4 byte Reg-mem con scostamento OP m R R/M Offset VAR ADD AL,VAR[BX] 01/04/03 G. Bucci - Calcolatori Elettoronici 78

Fetch istruzioni La decodifica delle istruzioni è basata su OP, m, R/M La loro combinazione determina il numero dei byte da estrarre dalla coda istruzioni. 01/04/03 G. Bucci - Calcolatori Elettoronici 79

Esempi di istruzioni PUSH AX 50 MOV AL,BL 8A C3 MOV AL,BL?????? B0 51 01/04/03 G. Bucci - Calcolatori Elettoronici 80

Esempi di istruzioni MOV AL, VAR A0 Offset VAR MOV AL,VAR[BX] 8A 87 Offset VAR MOV AL,VAR[BX][SI+3] 8A 80 Offset VAR +3 01/04/03 G. Bucci - Calcolatori Elettoronici 81

Esempi di istruzioni MOV VAR[BX],077FFH C7 87 Offset VAR 77FF 01/04/03 G. Bucci - Calcolatori Elettoronici 82

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

Indirizzamento Tra registri MOV AL, BL MOV CX, DX ;AL := BL ;CX := DX Immediato MOV AL, 27 ;AL := 27 MOV BX, 0A1C0H ;BX; := A1C0 ( BX := A1C0 (hex) 01/04/03 G. Bucci - Calcolatori Elettoronici 84

Riferimento alla memoria Il normale reg di segmento è DS MOV AX, VAR ; AX<- M[DS:offset(VAR)] Registro alternativo a DS MOV AX, ES:VAR ; ES in luogo di DS ; AX <- M[ES:offset(VAR)] 01/04/03 G. Bucci - Calcolatori Elettoronici 85

Indirizzamento in memoria Diretto MOV VAR,AX ; M[Offset(VAR)]:= AX Indiretto attraverso registri MOV [BX],AX ;M[BX] := AX 01/04/03 G. Bucci - Calcolatori Elettoronici 86

Indirizzamento in memoria Relativo MOV AX,VAR[BX] ;AX := M[Offset(VAR) + BX] Indiretto e indiciato MOV AX,[BX] [SI] ;AX := M[BX + SI] 01/04/03 G. Bucci - Calcolatori Elettoronici 87

Indirizzamento in memoria Forma generale MOV AX,V [BX] [SI] ;EA = Offset(V) + BX + SI ;AX := M[DS:EA] 01/04/03 G. Bucci - Calcolatori Elettoronici 88

Riferimento allo stack Le istruzioni PUSH e POP depositano e prelevano un dato a 16 bit dalla testa dello stack (e aggiornano SP) PUSH CX POP SI 01/04/03 G. Bucci - Calcolatori Elettoronici 89

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

Riferimento allo stack Entro lo stack si indirizza con BP MOV [BP][DI+40], AL ;EA= BP+DI+40 ; M[SS:EA]:= AL 01/04/03 G. Bucci - Calcolatori Elettoronici 91

Calcolo ind di memoria 01/04/03 G. Bucci - Calcolatori Elettoronici 92

Evoluzione Col 386 tutti i GPR diventano utilizzabili come puntatori Viene introdotto il fattore di scala Lo scostamento è a 8, 16 o 32 bit 01/04/03 G. Bucci - Calcolatori Elettoronici 93

Evoluzione SEG+BASE+(INDEX*SCALE)+DISPL CS DS SS ES FS GS EAX EBX ECX EAX EBX ECX EDX EBP ESI EDI + EDX + * EBP ESI EDI 1 2 4 8 + NO D 8b D 32b D 01/04/03 G. Bucci - Calcolatori Elettoronici 94

Indirizzamento porte di I/O Diretto (256 porte IN e 256 OUT ) IN OUT AL,PORTA PORTA,AX Attraverso DX (64 K porte) IN OUT AX,DX DX,AL 01/04/03 G. Bucci - Calcolatori Elettoronici 95

Indirizzamento istruzioni il contatore di programma è sempre dato dalla coppia CS:IP (equivalente all usuale Program Counter) salti/chiamate di soubroutine: Intrasegmento - modificano solo IP Intersegmento - modificano sia CS che IP 01/04/03 G. Bucci - Calcolatori Elettoronici 96

Trasferimento del controllo Intrasegmento: sostituisce IP Diretto: : IP:= IP + SCOST SCOST: 16/8 bit codificati nell istruzione Nei salti condizionati SCOST è sempre di 8 bit CALL NEAR_Proc JMP NEL_Segmento JNE NOT_Equal 01/04/03 G. Bucci - Calcolatori Elettoronici 97

Trasferimento del controllo Intrasegmento: sostituisce IP Indiretto: IP viene sostituito con il contenuto di un registro o di una parola di memoria JMP CX JMP [BX].TARGET 01/04/03 G. Bucci - Calcolatori Elettoronici 98

Trasferimento del controllo Intersegmento: sostituisce CS,IP Diretto: : (CS,IP):= SCOST H + SCOST L SCOST: 32 bit codificati nell istruzione JMP FAR_LABEL CALL FAR_PROC 01/04/03 G. Bucci - Calcolatori Elettoronici 99

Trasferimento del controllo Intersegmento: sostituisce CS,IP Indiretto: CS,IP vengono sostituiti con il contenuto di due parole consecutive di memoria JMP DWORD PTR[BX] CALL [BX].TASK[SI] 01/04/03 G. Bucci - Calcolatori Elettoronici 100

Salti condizionati JNE NOT_Equal JZ IS_0 Massimo scostamento: In avanti di 127 posizioni Indietro di 128 01/04/03 G. Bucci - Calcolatori Elettoronici 101

Modello di programmazione attuale 01/04/03 G. Bucci - Calcolatori Elettoronici 102

Aritmetica Floating L 8086 non aveva istruzioni in virgola Il coprocessore 8087: Concepito per lavorare in parallelo e in collaborazione con la CPU Estende il repertorio istruzioni Estende il modello di programmaz.. con 8 registri da 80 bit 01/04/03 G. Bucci - Calcolatori Elettoronici 103

Il coprocessore x87 Aritmetica floating velocizzata di un fattore 2. Esempio: FADD 1,6 ms solo 8086 14 micro s con 8087 01/04/03 G. Bucci - Calcolatori Elettoronici 104

Modello CPU-Coprocessore CPU NPX Numeric Processor Extension Bus esterno Il risultato è un processore con repertorio esteso 01/04/03 G. Bucci - Calcolatori Elettoronici 105

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

Estensione repertorio Attraverso il codice (prefisso) di escape ESC 01/04/03 G. Bucci - Calcolatori Elettoronici 107

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

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

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

Interazioni Interazione Sincronizzazione 01/04/03 G. Bucci - Calcolatori Elettoronici 111

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 contendendo il bus alla CPU 8087 completa l istruzione 01/04/03 G. Bucci - Calcolatori Elettoronici 112

Controllo condivisione bus Controllo Bus locale 01/04/03 G. Bucci - Calcolatori Elettoronici 113

Protocollo Request/Grant 01/04/03 G. Bucci - Calcolatori Elettoronici 114

Integrazione Con il 486 (1989) il coprocessore è stato integrato nella CPU Il 486 integrava 1,2 M transistori 01/04/03 G. Bucci - Calcolatori Elettoronici 115

MMX: Multimedia Extension Col Pentium MMX (1997) è stato aggiunto un insieme di registri e di istruzioni per la multimedialità SIMD: Single Instruction Multiple Data model 01/04/03 G. Bucci - Calcolatori Elettoronici 116

MMX 8 nuovi registri da 64 bit (MM0, MM1,.. MM7) 57 istruzioni SIMD Esempio: packed byte integers 7 6 0 01/04/03 G. Bucci - Calcolatori Elettoronici 117

Streaming SIMD Extensions Introdotte col Pentium III (1999) 8 nuovi registri da 128 bit (XMM0, XMM1,.. XMM7) Istruzioni per packed and scalar single-precision floating-point 01/04/03 G. Bucci - Calcolatori Elettoronici 118

SSE Esempio: 128-Bit Packed Single-Precision Floating-Point (4 valori Floating singola precisione) 127 64 32 31 0 01/04/03 G. Bucci - Calcolatori Elettoronici 119

Prestazioni in MIPS delle CPU Intel dall'8086 al Pentium (1979) 8086 5MHz 0,33 8086 10MHz 0,75 (1982) 286 8 MHz 1,2 286 12MHz 2,66 (1985) 386DX 16MHz 3,6 (1989) 386DX 33MHz 11,4 (1989) 486DX 25MHz 20 486DX2 50MHz 41 486DX4 100MHz 70,7 (1993) PENTIUM 60MHz 100 PENTIUM 133MHz 218,9 0 50 100 150 200 250 01/04/03 G. Bucci - Calcolatori Elettoronici 120

Prestazioni Spec95 delle CPU Intel a partire dal Pentium Pentium 75MHz (Ott 1994) Pentium 100MHz (Mar 1994) 2,02 2,31 2,39 2,74 SPECfpP95 SPECint95 Pentium 200MHz (Giu 1996) 4,32 5,17 Pentium MMX 166MHz (Gen 1997) 4,34 5,6 Pentium MMX 233MHz (Giu 1997) 5,21 7,12 Pentium PRO 150MHz, 256K L2 (Nov 1995) 5,42 6,08 Pentium PRO 200MHz, 1MB L2 (Ago 1997) 6,8 8,66 Pentium II 233MHz (Mag 1997) 7,04 9,47 Pentium II 333MHz (Gen 1998) 9,14 12,8 01/04/03 G. Bucci - Calcolatori Elettoronici 121 0 2 4 6 8 10 12 14