Parte VI Istruzioni ed indirizzamento Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.1 Il livello ISA (Instruction Set Architecture) • È il livello più basso a cui il microprocessore può essere programmato Nascode i dettagli della microarchitettura e mostra un • ‘Nascode’ insieme di funzionalità a livello più elevato • Microprocessori con microarchitetture sensibilmente diverse possono apparire uguali a livello ISA dell hardware si garantisce la • Mascherando le variazioni dell’hardware portabilità del software • Può essere definita in documenti formali: Es. SPARC e JVM • Può non esistere una definizione formale: Es. IA-32,, AMD-64,, X86-64 e Intel 64 Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.2 Programmazione a basso livello • Costituisce il riferimento per coloro che scrivono i compilatori (oppure che programmano in linguaggio macchina) • Il programmatore deve poter ignorare i dettagli minuti dell’hardware e ‘vedere’ il processore a livello funzionale • Caratteristiche fondamentali: – Memoria: organizzazione e modalità di indirizzamento – Registri: quali registri sono visibili al livello ISA e quali funzioni hanno – Indirizzamento: modalità con cui le istruzioni fanno riferimento ai propri operandi – Istruzioni: repertorio delle istruzioni macchina – Modi di funzionamento: user mode e kernel mode Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.3 Modello della memoria • Celle elementari: byte di 8 bit (16 con il codice UNICODE ?) • Word: di 4 o 8 byte • Allineamento delle word: non p possono cominciare in indirizzi qualsiasi • Ordinamento dei caratteri: finale grande o finale piccolo • Spazio degli indirizzi: – Tipicamente Ti i t 232 0 264 – A volte separato istruzioni e dati Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.4 Registri • Tutti i registri g visibili al livello ISA sono visibili anche al livello della -architettura, ma non è vero il viceversa • Registri general-purpose: servono per risultati intermedi e per dati di uso molto frequente • Registri special-purpose: hanno funzioni specifiche • Registri visibili solo in kernel mode • PSW (Program Status Word): registro che contiene una serie di flag fl relativi l ti i all risultato i lt t d della ll ALU ((ed d altro): lt ) – N: risultato Negativo – Z: Z risultato i lt t Z Zero – V: oVerflow – C: C Carry C – A: Auxiliary carry – P: P Parità P ità d dell risultato i lt t Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.5 Architetture a n bit • Col architettura a n bit intendiamo un’architettura un architettura in cui: – i registri sono a n bit – le unità funzionali (ALU e FPU) sono a n bit – gli indirizzi di memoria sono ad n bit 16 da 16 • Col procedere livello di integrazione n è passato da 8 a 16, a 32 e, più recentemente da 32 a 64, e in certi casi a 128. g , evolve • Una stessa architettura,, coll’evolvere della tecnologia, aumentando il numero di bit – L’architettura Intel nasce a 16 bit (1983), passa poi a 32 bit (1993), ed infine a 64 bit (2005) – L’architettura ARM nasce a 32 bit (1985) e passa poi a 64 bit (2011) – L’architettura SPARC di Sun nasce a 32 bit e passa poi a 64 bit Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.6 Perché aumentare il numero di bit? Aumentando il numero di bit si hanno diversi vantaggi: 1. Aumenta lo spazio di indirizzamento: con n bit si indirizza y una memoria di 2n byte 2. Aumenta il parallelismo nei trasferimenti memoria/cache e cache/cache tra livelli diversi 3. Aumenta la precisione: calcoli con operandi a n bit parallelismo di alcune operazioni: p 4. Aumenta il p – un registro a 64 bit contiene 8 byte (invece di 4) – confrontando due stringhe la velocità raddoppia Il limite è dato dalla tecnologia di integrazione: registri più grandi, cache più grandi, bus più grandi significano maggiore p sul chip p ((ma al legge gg di Moore ci assiste superfice Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.7 L’architettura L architettura IA IA-64 64 Itanium • Il limite p principale p dell’architettura IA-32 è stato lo spazio p di indirizzamento: 232 = GB sono pochi per un server • Intel sceglie inizialmente di saltare il fosso: abbandona la vecchia architettura CISC al suo destino ed introduce una nuova architettura RISC, completamente diversa e incompatibile • Rinuncia Ri i cosìì all’asset ll’ t storico t i d della ll compatibilità tibilità all’indietro ll’i di t • L’architettura I-64 Itanium viene presentata nel 2001 – Architettura A hit tt RISC sviluppata RISC, il t iin collaborazione ll b i con HP – Molto innovativa ma non penetra il mercato consumer Niente compatibilità all’indietro significa che devo buttare via tutto il vecchio software software. Situazione accettabile nel segmento server, ma rifiutata dall’utente consumer Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.8 Architettura AMD AMD-64 64 • • • • • • • AMD è finora andata a rimorchio e ha prodotto processori a 32 bit completamente compatibili con la piattaforma Intel IA-32 Essi p possono eseguire g lo stesso set di istruzioni, e q quindi lo stesso codice, anche se hanno soluzioni architetturali diverse Ma con il passaggio ai 64 bit le strade divergono AMD propone l’architettura AMD-64, a 64 bit ma basata su una estensione IA-32, spesso indicata anche come x86-64, con i processorii Opteron O t e Athlon-64 Athl 64 Si tratta della stessa architettura (IA-32) con le stesse istruzioni e gli stessi registri registri, ma allargati a 64 bit È stata privilegiata la compatibilità all’indietro, replicando la scelta fatta da Intel a su tempo nel passaggio da 8 a 16 e da 16 a 32 bit AMD-64 è compatibile con il vecchio codice a 32 bit Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.9 Il ripensamento di Intel: X86 X86-64 64 (Intel 64) • Dopo p varie smentite Intel ha dovuto seguire g la strada scelta dal concorrente AMD • Per evitare l’umiliazione di chiamarla AMD-64 la ha pietosamente p chiamata X86-64 e poi Intel 64 (da non confondere con IA-64) • Come nel caso di AMD l’architettura Intel 64 può eseguire anche codice a 32 bit (e lo fa anche troppo spesso!) • Già tutte le ultime serie di Pentium 4 (dal 2005 fino al 2011) sono state chip a 64 bit • Gli utenti ne sono però spesso stati ignari: ci eseguivano sopra codice a 32 bit, con sistemi operativi a 32 bit (e ( ancora lo fanno) f ) Molte applicazioni sono tuttora a 32 bit: vengono eseguite correttamente ma non sfruttano bene la CPU Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.10 I vantaggi dei 64 bit • L’architettura a 64 bit ha molti vantaggi: – Indirizzamento a 64 bit: salta il limite dei 4 GB – Aritmetica intera e FP a 64 bit: maggiore precisione, maggiore velocità (rispetto a simulazione a 32 bit) – Istruzioni che operano su 8 caratteri invece di 4: raddoppia la velocità nell’elaborazione di caratteri (una componente essenziale del carico) Il vantaggio si può sentire a due livelli: − Esecuzione del codice del Sistema Operativo (se è a 64 bit) − Esecuzione del codice delle applicazioni (se sono a 64 bit) • Il codice di sistema è parte essenziale del carico applicativo: la gestione dell’I/O, la gestione dell’interfaccia grafica, e molto altro, sono gestite da routine di sistema Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.11 Il coro delle voci bianche: i ‘castrati’ castrati di Windows • • Ma allora cosa c’è c è dentro i nostri PC? • • Tuttavia ……. molto spesso c’è un sistema operativo a 32 bit; • Ciò non è vero per Linux, e più recentemente per Windows 7 A meno che non siano pezzi d’antiquariato, c’è un processore a 64 bit bit, spesso anche multicore Colpevolmente, Microsoft ha continuato a distribuire i suoi sistemi operativi nella versione a 32 bit anche sapendo che erano destinati a piattaforme a 64 bit Nelle case di molti, oltre a poveri gatti castrati vivono anche h PC castrati: t ti non è d detto tt che h siano i più iù mansueti. ti (Comunque una pratica odiosa in entrambi i casi) Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.12 Registri dell’architettura dell architettura IA IA-32 32 Sono gli unici visibili al programmatore: in tutto 16 registri Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.13 Registri dell’architettura dell architettura IA IA-32 32 (2) • EAX,, EBX,, ECX,, EDX: registri g (q (quasi)) g general-purpose p p a 32,16,8 , , bit: – EAX: accumulatore – EBX: puntatori a memoria – ECX: controllo cicli – EDX: EDX estende t d EAX a 64 bit nelle ll di divisioni i i i e moltiplicazioni lti li i i • ESI, EDI: puntatori (a stringhe) • EBP: Base Pointer, punta alla base dello stack-frame • ESP: Stack Pointer, punta alla cima dello stack • EIP: Instruction Pointer CS..GS: GS: Registri di Segmento Segmento, puntano ai 6 segmenti (tra i 16K) che • CS sono in uso • EFLAGS: Program g Status Word Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.14 X86-64: X86 64: registri principali Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.15 X86-64: X86 64: registri addizionali • • • Vengono aggiunti altri 8 registri general purpose: R8,..,R15 • I registri XMM sono usati da particolari istruzioni vettoriali (SIMD) Permettono di appoggiare risultati intermedi Aggiunti altri 8 registri XMM: XMM8,..., XMM15 . XMM1,..., XMM7 erano già presenti nelle ultime revisioni di IA-32. Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.16 X86-64: X86 64: modi di funzionamento Sono previsti due diversi modi di funzionamento, ciascuno con diversi submode: • Long g mode: è il modo p primario di funzionamento,, che sfrutta tutte le feature dell’architettura. Al suo interno due submode: – 64 bit mode: il µP esegue codice a 64 bit con indirizzi a 64 bit – Compatibility mode: il µP esegue il codice del sistema operativo a 64 bit e il codice applicativo a 32 bit • Legacy mode: usato dai sistemi operativi a 32 bit. Al suo interno i tre submode che erano presenti nell’architettura IA-32: – Real R l mode:il d il µP P sii comporta come il vecchio hi 8088 eseguendo d il codice direttamente e senza controlli – Virtual 8086 mode: il µP si comporta come l’8086 l 8086 ma intercetta tutte le operazioni delicate (es. finestra DOS sotto Windows) – Protected mode: il µ µP vede completamente p l’architettura a 32 bit Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.17 X86-64: X86 64: livelli di privilegio Sono previsti quattro diversi livelli di privilegio, controllati da bit nella PSW • Livello 0: usato dal sistema operativo, ha accesso completo alla macchina • Livello 3: usato dai p programmi g utente,, non g gli consente l’accesso a funzionalità critiche, e gli impedisce di mandare il µP in crash • Livelli 1 e 2: usati raramente • I livelli di privilegio sono la feature hardware sulla quale viene costruito l’edificio l edificio software della sicurezza del sistema • I principi fondamentali sono: – Solo il sistema operativo ha il controllo completo del sistema – Il SO amministra le risorse e ne disciplina l’accesso – Nessun programma applicativo deve poter danneggiare gli altri Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.18 Tipi di dati X86 64 X86-64 ARM Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.19 Formato delle istruzioni • • • • • • Lunghezza fissa o variabile Lunghezza fissa semplifica la decodifica Istruzioni corte riducono la banda di memoria necessaria al fetch Con opcode è di k bit: al massimo 2k codici di istruzioni diversi p indirizzi fanno riferimento sia alla memoria che ai registri g Campi Complesse modalità di indirizzamento permettono di indirizzare gli operandi g p anche con p pochi bit Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.20 Lunghezza delle istruzioni • • • • Le istruzioni possono avere lunghezza fissa o variabile La lunghezza fissa semplifica il fetch delle istruzioni Una word può contenere una o più istruzioni S le istruzioni hanno fformato variabile non c’è Se ’è relazione tra word e istruzioni Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.21 Espansione dei codici operativi • Il numero di bit dedicati all’opcode all opcode non è costante • Un primo tipo di istruzioni ha un codice operativo corto • Alcuni valori del codice segnalano che anche i bit successivi ne fanno parte • Alcuni dei campi indirizzo vengono sacrificati per consentire l’espansione del codice: Esempio – Istruzioni a 3 indirizzi: opcode 4 bit – Istruzioni a 2 indirizzi: opcode 8 bit – Istruzioni a 1 indirizzo: opcode 12 bit – Istruzioni a 0 indirizzi: opcode p 16 bit Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.22 Espansione dei codici operativi (2) Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.23 Formato delle Istruzioni IA-32 • Lunghezza delle istruzioni molto variabile • Uno dei due operandi è sempre un registro, l’altro può essere sia un registro che in memoria • MODE stabilisce la modalità di indirizzamento • L L’indirizzo indirizzo di memoria è l’offset l offset di un segmento, segmento dipende dall’opcode, dai registri usati e dal prefisso l indirizzamento immediato: operando nell’istruzione nell istruzione • Possibile l’indirizzamento Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.24 Modalità di indirizzamento • Immediato: il valore dell’operando p è nell’istruzione • Diretto: l’istruzione contiene l’indirizzo di memoria completo dell’operando • Indiretto: l’indirizzo di memoria fornito contiene l’indirizzo dell’operando • A registro: i t sii specifica ifi un registro i t che h contiene ti l’l’operando d (o che lo riceverà) • Indiretto a registro: il registro specificato contiene ll’indirizzo indirizzo dell’operando indirizzo è dato da una costante più il • A registro indice: ll’indirizzo contenuto di un registro g base: viene sommato a tutti g gli indirizzi il contenuto • A registro di un registro • A stack: l’operando è sulla cima dello stack (o ci deve andare) Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.25 Indirizzamento indiretto a registro • Calcola la somma degli elementi di un array di 256 interi che inizia all’indirizzo A • Ciascun intero occupa 4 byte • La somma viene accumulata in R1 all elemento corrente • R2 punta all’elemento Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.26 Indirizzamento a registro indice • Calcola l’OR l OR di A[i] AND B[i] dove A e B sono due array • R1 accumula l’OR degli AND • R2 contiene l’indice l indice corrente sugli array • R3 contiene la costante 4096, per controllare la fine del loop • R4 è utilizzato per appoggiare i singoli AND Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.27 Indirizzamento a stack • La L stack t k è utilizzato tili t per: – Appoggiare risultati intermedi – Gestire le chiamate di procedura – Calcolare espressioni aritmetiche • Lo stack pointer SP punta all’elemento affiorante dello stack • Operazioni O i i ffondamentali: d t li – PUSH: aggiunge un elemento alla cima dello stack – POP: preleva un elemento dalla cima dello stack – Operazioni aritmetiche sui due elementi affioranti che mettono al loro posto il risultato Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.28 Gestione dell dell’I/O I/O • Un Un’operazione operazione di I/O consiste nel trasferimento di dati tra un device di I/O e la memoria • Tre modi fondamentali di gestire l’I/O l I/O A) I/O programmato con busy waiting L CPU iinterroga La t periodicamente i di t i di dispositivi iti i ((polling) lli ) e cicla a vuoto durante le attese (busy waiting) B) I/O gestito tit con interruzioni i t i i La CPU avvia l’operazione di I/O e poi si dedica ad altro fi a che fino h il d device i non manda d una iinterruzione t i C) DMA (Direct Memory Access) La CPU avvia l’operazione poi gestita interamente dal controllore DMA Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.29 I/O programmato • I controller hanno diverse porte che possono essere lette e scritte dalla CPU • Nei buffer vengono letti o scritti i caratteri scambiati con il controller • I registri i t i di stato t t contengono t bit che h lla CPU controlla t ll per sapere se i dati sono disponibili, o possono essere scritti • Dati i tempi dei dispositivi di I/O il busy waiting comporta un notevole spreco della risorsa CPU • Usato solo in sistemi molto semplici (o d’antiquariato) d antiquariato) Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.30 I/O con interrupt • Esempio: lettura da disco p di I/O scrivendo le • La CPU avvia l’operazione informazioni opportune nelle porte del controller aC CPU U passa a all’elaborazione e abo a o e d di u un a altro o task as • La • Il controller avvia e sovraintende allo svolgimento dell’operazione dell operazione di I/O (posizionamento delle testine ecc.) • Solo quando i dati sono disponibili il controller interrompe la CPU • La CPU è direttamente coinvolta nel trasferimento dei dati tra controller, essa legge i dati e li copia in memoria Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.31 DMA (Direct Memory Access) • La CPU programma il controller DMA specificando: – Quanti byte trasferire – Da quale device – A che indirizzi • Il controller gestisce l’intera operazione • Il controller DMA può gestire più operazioni contemporaneamente t t Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.32 Istruzioni st u o X86-64 86 6 Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 Istruzioni X86 X86-64 64 VI.33 (2) Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.34 Istruzioni X86 X86-64 64 (3) Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.35 Trap e interrupt • La trap è una procedura automatica che viene iniziata da una condizione eccezionale che si verifica durante l’esecuzione di p g un programma • Le trap sono sincrone e dipendenti da quello che succede sulla CPU, mentre le interruzioni sono asincrone e nascono all’esterno della CPU • Le trap si originano da test fatti a livello del microprogramma • La gestione delle trap è affidata al trap handler ed è in tutto simile a quella delle interrupt • Esempi E i di ttrap: – overflow e underflow – violazione i l i di protezione t i – divisione per zero – chiamata hi t di sistema i t Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.36 Interruzioni: azioni HW Q Quando l’interruzione si origina g e viene servita q queste azioni preliminari vengono svolte a livello hardware: 1)) Il controller g genera l'interruzione 2) La CPU, quando è pronta a servirla, alza il segnale di aknowledge 3) Quando il controller vede l’aknowledge risponde mettendo sul bus il vettore di interruzione 4) La CPU legge e salva il vettore di interrupt 5) La CPU salva il PC (Program Counter) e la PSW (Program Status word) sullo stack 6) La CPU individua, individua per il tramite del vettore di interruzione interruzione, l’indirizzo iniziale della routine che serve l’interruzione e lo carica nel PC Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.37 Interruzioni: azioni SW Inizia ora l’esecuzione l esecuzione della routine di servizio che svolge le seguenti azioni: 7) Salva sullo stack i registri della CPU 8) Individua il numero esatto del device 9) Legge ttutti tti i codici di stato ecc ecc. 10) Gestisce eventuali errori di I/O 11) Legge (o scrive) i dati e incrementa i conteggi 12) Se necessario informa il device che il servizio dell’interruzione è concluso 13) Ricarica tutti i registri salvati sullo stack 14) Esegue un’istruzione di RETURN FROM INTERRUPT ripristinando lo stato della CPU precedente l’interruzione Fondamenti di Informatica - Architetture di Elaborazione - prof. Silvio Salza - a.a. 2013-2014 VI.38
© Copyright 2024 ExpyDoc