Evoluzione delle CPU Intel
- Intel 8086
- Registri a 16 bit, Bus dati 16 bit, Bus indirizzi 20 bit (1 Mb di memoria).
Seguito a breve distanza dal piu` economico 8088 con bus ad 8 bit.
Il calcolo in virgola mobile e` gestito dall'8087.
E` ancora oggi usato in campo industriale.
- Intel 80286
-
Registri a 16 bit, Bus dati 16 bit, Bus indirizzi 24 bit (16 Mb di memoria).
Il calcolo in virgola mobile e` gestito dall'80287.
E` la prima CPU che dispone del modo protetto, ad ogni applicazione
e` assegnato un livello di privilegio, e il sistema operativo puo` essere
piu` protetto dai malfunzionamenti delle applicazioni. Questa CPU non e`
mai stata utilizzata in tutte le sue potenzialita`, soprattutto perche`
i programmi per potere funzionare in modo protetto dovevano essere riscritti,
e sarebbero stati incompatibili col diffusissimo 8086.
Dal punto di vista software sono state aggiunte circa 30 nuove istruzioni.
Istruzioni modo protetto:
- ARPL, regolazione rpl, es ARPL [BX],AX
- CALL, chiamata a gate/task, es CALL 08h:0h
- CLTS, azzeramento del flag si task, es CLTS
- JMP, salto con cambio task o gate, es JMP 20h:0h
- LAR, carica i diritti di accesso, es LAR AX,BX
- LGDT, carica tabella globale dei descrittori (GDT), es LGDT FWORD [100]
- LIDT, carica tabella degli interrupt (IDT), es LIDT FWORD [0]
- LLDT, carica tabella locale dei descrittori (LDT), es LLDT AX
- LMSW, carica word di stato, es LMSW AX
- LSL, carica il limite di un segmento, es LSL AX,AX
- LTR, carica il registro di task, es LTR AX
- SGDT, memorizza GDT, es SGDT FWORD [BX]
- SIDT, memorizza IDT, es SIDT FWORD [100]
- SLDT, memorizza LDT, es SLDT AX
- SMSW, memorizza word di stato, es SMSW AX
- STR, memorizza registro task, es STR AX
- VERR, verifica accesso in lettura, es VERR CX
- VERW, verifica accesso in scrittura, es VERW DX
Altre istruzioni:
- BOUND, controllo indici,es BOUND AX,[BX]
- ENTER, creazione stack frame, es ENTER 8,0
- IMUL, moltiplicazione, es IMUL AX,BX,5
- INS[b,w], lettura da una porta di IO, es REP INSB
- LEAVE, complementare a ENTER, es LEAVE
- OUTS[b,w], scrittura su una porta di IO, es REP OUTW
- POPA, riprisina registri generali, es POPA
- PUSHA, salva registri generali, es PUSHA
- RCL,RCR,ROL,ROR,SAL,SAR,SHL,SHR, shift immediato != 1, es SHR AX,5
- Intel 80386
- Registri a 32 bit, bus dati a 32 bit, bus indirizzi 32 bit (4096Mb di memoria).
E` stato successivamente prodotto il 386SX con un bus dati a 16 bit,
e con la possibilita` di utilizzare il coprocessore matematico 80287,
oltre al coprocessore "ufficiale" 80387.
Progettando 386 l'Intel non ha ripetuto gli errori fatti col 286 : la CPU puo` eseguire
codice 8086 pur trovandosi in modo protetto (chiamato modo V86), ed inoltre
e` possibile ritornare in modo reale (cosa non prevista dal 286).
Dal punto di vista software le modifiche sono veramente tante,
sono stati aggiunti 2 registri di segmento, FS e GS (i registri di segmento
sono sempre a 16 bit), 3 registri di controllo (CR0, CR2,CR3),
6 registri di debug (DR0,DR1,DR2,DR3, DR6,DR7),
5 registri di test (TR3,TR4,TR5,TR6,TR7),
e` stato potenziato il meccanismo di indirizzamento,
sono state aggiunte istruzioni sui bit, e shift a 64 bit.
Nuove istruzioni:
- BSF, scansione in avanti dei bit, es BSF EAX,EAX
- BSR, scansione all'indietro dei bit, es BSF EAX,EBX
- BT, test del bit, es BT EAX,23
- BTC, test bit e complemento, es BT ECX,12
- BTR, test bit e reset, es BT EDX,EAX
- BTS, test bit e impostazione, es BTS EDI,EAX
- CDQ, estensione del segno di EAX in EDX, es CDQ
- CWDE, estensione del segno di AX in EAX, es CWDE
- Jcc, salto condizionale near, es JNZ 00120040h
- LGS,LSS,LFS, caricamento puntatore, es LSS ESP,[EDI]
- MOV, carica da/a registri spaciali, es MOV EAX,CR0
- MOVSX, carica con estensione del segno, es MOVSX EAX,DL
- MOVZX, carica con estensione dello zero, es MOVZX EAX,AX
- SETcc, imposta byte su condizione, es SETNZ AL
- SHLD/SHRD, shift a 64 bit, es SHRD EAX,EDX,3
Nuove istruzioni 80387:
- FCOS, coseno di ST0, es FCOS
- FSIN, seno di ST0, es FSIN
- FSINCOS, seno e coseno di ST0, es FSINCOS
- FUCOM, confronto senza ordine, es FUCOM ST1
- FUCOMP, confronto senza ordine, es FUCOMP ST2
- FUCOMPP, confronto senza ordine, es FUCOMPP
- Intel 80486
- Registri a 32 bit, bus dati a 32 bit, bus indirizzi 32 bit (4096Mb di memoria),
cache interna di 8kb.
Coprocessore matematico integrato, tranne nella versione SX. E` stata prodotto anche
il 486DX4 (1994), ovvero un 486 con frequenza tripla, e con alcune caratteristiche
presenti nei processori Pentium®.
Nuove istruzioni:
- BSWAP, inverte l'ordine di memorizzazione dei byte, es BSWAP EAX
- CMPXCHG, confronto e scambio, es CMPXCHG DX,BX
- INVD, invalidazione della cache, es INVD
- INVLPG, invalida un singolo elemento del TLB, es INVLPG [001230040]
- WBINVD, write back e invalidazione, es WBINVD
- XADD, scambia e somma, es XADD EAX,EBX
- Intel Pentium®
- Registri a 32 bit, bus dati a 64 bit, bus indirizzi 32 bit (4096Mb di memoria),
doppia pipeline, 8K di cache per codice e 8K per dati, branch prediction. Esiste anche la versione
"con tecnologia MMX" con istruzioni MMX aggiuntive e altre caratteristiche
del Pentium® Pro. Dal punto di vista software e` stato aggiunto il registro CR4
che controlla varie estensioni, che normalmente sono disabilitate, inoltre
i registri MSR (Model Spacific Registers) sostituiscono i
registri TRx presenti
nel 386 e nel 486, ed aggiungono altre funzionalita`.
Nuove istruzioni:
- CMPXCHG8B, confronto e scambio di 8 byte, es CMPXCHG8B QWORD [012045000]
- CPUID, identifica CPU, es CPUID
- RDMSR, legge dal registro MSR, es RDMSR
- RDTSC, legge contatore cicli di clock, es RDTSC
- WRMSR, scrive registro MSR, es WRMSR
- XADD, scambia e somma, es XADD EAX,EBX
- Intel Pentium® Pro
- Registri a 32 bit, bus dati a 64 bit, bus indirizzi 36 bit (64Gb di memoria),
architettura superscalare con esecuzione fuori ordine, esecuzione speculativa,
branch prediction migliorata, cache di secondo livello integrata nel chip,
ottimizzato per applicazioni a 32 bit. Nuove funzionalita` che
possono essere abilitate tramite il registro CR4, istruzioni
movimento condizionale, registri MTRR (Memory Type and Range Registers).
Ottimizzazione del bus per elaborazioni multi processore.
Nuove istruzioni:
- CMOVcc, caricamento condizionale, es CMOVNC EAX,EDI
- CPUID, supporto esteso (EAX=2), es CPUID
- RDPMC, legge performance monitor, es RDPMC
- UD2, istruzione dichiarata non valida (per tutta la famiglia x86), a scopo diagnostico, es UD2
Nuove istruzioni comprocessore:
- FCMOVcc, caricamento float condizionale, es FCMOVNC ST4
- FCOMI, confronto float settando flag integer, es FCOMI ST3
- FCOMIP, confronto float settando flag integer e pop, es FCOMIP ST3
- FUCOMI, confronto float senza ordine settando flag integer, es FUCOMI ST3
- FUCOMIP, confronto float senza ordine settando flag integer e pop, es FUCOMIP ST3
- Intel Pentium® II
- Architettura simile al Pentium® Pro, con istruzioni MMX. Sono stati aggiunti
i registri-alias anche per i selettori, cosi` che le applicazioni a 16 bit
sono meno penalizzate, la cache e` di 16Kb per i dati e 16Kb per il codice.
E` stato inoltre abbandonato il tipico contenitore PGA del socket 7, sostituito
dal nuovo SEC (Single Edge Connector). Alcune ottimizzazioni riguardano il bus,
che comunque ha molto in comune col Pentium® Pro.
Nuove istruzioni: