Architettura degli Elaboratori



Documenti analoghi
Architettura degli Elaboratori

Architettura degli elaboratori (A)

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

Assembly. Modello x86

Il microprocessore 8086

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Famiglia dei processori INTEL

Hardware di un Computer

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

CPU. Maurizio Palesi

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

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

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1

Architettura hardware

Il livello architettura e set di istruzioni

Ing. Paolo Domenici PREFAZIONE

Struttura del calcolatore

Architettura del calcolatore

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Programmazione dello Z80

Architettura di un calcolatore: introduzione

Informazione analogica e digitale

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Introduzione. Architettura

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

C. P. U. MEMORIA CENTRALE

ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10)

Istruzioni di modifica della sequenza di elaborazione

CALCOLATORI ELETTRONICI II

Architettura dei computer

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Lezione 3: Architettura del calcolatore

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE

Laboratorio di Informatica

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

Il memory manager. Gestione della memoria centrale

I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi. Elementi di Assembly 8086

4 3 4 = 4 x x x 10 0 aaa

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

Architettura di un calcolatore

Introduzione all'architettura dei Calcolatori

Programmazione in linguaggio assembly per architetture Intel 8088

Esempio di moltiplicazione come somma e spostamento

Nel microprocessore 8086 abbiamo una gran quantità di registri

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Il Processore: i registri

L architettura di riferimento

STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

Sistema operativo: Gestione della memoria

Testi di Esercizi e Quesiti 1

STRUTTURE DEI SISTEMI DI CALCOLO

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Architettura di tipo registro-registro (load/store)

Cenni ad Assembly Intel

ARCHITETTURA DEI CALCOLATORI VOLUME I

Esame di INFORMATICA

INFORMATICA 1 L. Mezzalira

4. Operazioni aritmetiche con i numeri binari

Architettura del Set di Istruzioni (ISA)

Architettura hw. La memoria e la cpu

FONDAMENTI di INFORMATICA L. Mezzalira

Calcolo numerico e programmazione Architettura dei calcolatori

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Lezione n.9. Introduzione al linguaggio macchina

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000

ARCHITETTURA DELL ELABORATORE

introduzione I MICROCONTROLLORI

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

La macchina programmata Instruction Set Architecture (1)

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

JPD132. Microprocessore e assembly

Architettura dei calcolatori I parte Introduzione, CPU

Informatica - A.A. 2010/11

Sistemi Operativi. 5 Gestione della memoria

Introduzione alla programmazione in C

Lezione n.19 Processori RISC e CISC

Gestione della memoria centrale

Università degli Studi di Cassino Corso di Fondamenti di Informatica Codifica di dati e istruzioni. Anno Accademico 2010/2011 Francesco Tortorella

L architettura del calcolatore (Prima parte)

Von Neumann. John Von Neumann ( )

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Interazione con il DOS e il BIOS

Intel x 86. Prof. B.Fadini a.a. 2006/2007

Organizzazione della memoria

Lezione 8. La macchina universale

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

I file di dati. Unità didattica D1 1

Lezione 5 Architettura degli elaboratori. Mauro Piccolo piccolo@di.unito.it

Parte II.2 Elaboratore

PROGRAMMA DI SISTEMI TERZA AET 2014/2015

Architettura dei calcolatori II parte Memorie

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Transcript:

Architettura degli Elaboratori Corso di Laurea Triennale in Informatica Università degli Studi di Bari Anno Accademico 2009-2010 Laboratorio lez1: il processore 8086/88 Prof. S.Pizzutilo I processori Intel Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. L'8086 e' un processore a 16 bit quindi i suoi registri potranno contenere al massimo 16 bit di informazione. I processore successivi, quali l 80486, il Pentium ed il Pentium II sono processori a 32 bit. Intel rilascia a metà del 2000 anche il Merced a 64 bit. Per poter conoscere come funziona un processore Pentium e' necessario partire dal suo bis-bis-nonno: 8086. 1

Microprocessori INTEL per il PC 8080 (1974) CPU a 8 bit, 6000 tr., 2MHz, 64KB di memoria indirizzabile; simile al PDP-8, ma prodotto di massa. 8086 (1978) e 8088 (1979) CPU a 8 bit, 29000 tr., 5-10MHz, 1MB di memoria indirizzabile; bus a 16 bit (8086) o a 8 bit (8088); scelta da IBM come CPU per il PC IBM originale. 80286 (1982) 16 bit, 134'000 tr., 8-12MHz, 16MB memoria indirizzabile; instruction set di base uguale a 8086 e 8088; organizzazione di memoria differente, ma complessa per garantire la compatibilità con i vecchi chip. I processori Intel a 32 bit 80386 (1985) 32 bit, 275 000 tr., 16-33MHz, 4GB memoria indirizzabile; ~ compatibile con quanto prodotto dall 8080 in poi. 80486 (1989) 32 bit, 1.2M tr., 25-100MHz, 4GB memoria indirizzabile; organizzazione a pipeline; comprende un unità floating point e 8KB di cache su chip. La CPU INTEL 8086 8086: microprocessore general purpose a 16 bit di terza generazione Le caratteristiche principali sono: Capacità di indirizzamento di 1 MB =2 20 -> address bus a 20 bit 14 registri interni da 16 bit data bus a 16 bit 7 modi di indirizzamento Set di istruzioni esteso (CISC) 2

MEMORIA PRINCIPALE 1 MB =2 20 = 1.048.576 locazioni di memoria di 8 bit il primo byte ha indirizzo 0 l'ultimo byte ha indirizzo FFFFFH (?) Accesso a 4 blocchi di memoria di 64k byte ciascuno (segmenti) Esecuzione di un programma Il programma è caricato in memoria centrale Si compone di due parti fondamentali: istruzioni ( codice ) e dati Il microprocessore inizia la lettura della prima istruzione a un indirizzo noto di memoria; una volta letta, esegue l istruzione Il microprocessore legge ed esegue l istruzione successiva in memoria, e così via Alcune istruzioni particolari, dette di trasferimento di controllo ( salti, chiamate a procedura, interruzioni,...) modificano arbitrariamente l indirizzo da cui è letta la successiva istruzione Ogni istruzione può o meno fare riferimento a dati in memoria; in tal caso, viene calcolato l indirizzo del dato ed eseguita un operazione di lettura e/o scrittura all indirizzo di memoria 3

La CPU La CPU è costituita da due blocchi funzionali: 1. Execution Unit (EU): esegue le istruzioni (fase di execute) 2. Bus Interface Unit (BIU): - preleva le istruzioni (fase di fetch) - legge gli operandi - scrive i risultati 4

Execution Unit esegue le istruzioni fornisce dati e indirizzi al BIU modifica registri generali e registro flag ALU, registri e bus interno a 16 bit EU non ha connessioni dirette con il bus di sistema (con l esterno) Quando l'eu deve eseguire una nuova istruzione, la ottiene dalla coda gestita dal BIU e se la coda è vuota si pone in attesa; Se un'istruzione richiede di accedere alla memoria o a una periferica, EU richiede a BIU di ottenere o memorizzare il dato; Indirizzi manipolati dall'eu sono di 16 bit Il BIU effettua le operazioni che permettono di accedere all'intero spazio di memoria disponibile Bus Interface Unit esegue tutte le richieste dell'eu che coinvolgono il mondo esterno, cioè i trasferimenti di dati tra la CPU e la memoria o i dispositivi di I/O calcola gli indirizzi reali a 20 bit sommando, in un sommatore dedicato, l'indirizzo del segmento e l'offset (entrambi a 16 bit) esegue trasferimento dati da e verso l'eu carica leistruzioni nella coda di istruzioni (prefetch) Le istruzioni caricate dal BIU nella coda sono quelle che seguono l'istruzione correntemente in esecuzione nell'eu Se l'eu esegue un'istruzione di salto, il BIU svuota la coda e comincia a riempirla di nuovo a partire dal nuovo indirizzo; in questo caso, l'eu deve aspettare che la BIU abbia acquisito la nuova istruzione da eseguire. 5

Registri Generali - Data Register (AX, BX, CX, DX) Pointer Register (SP, BP) Index Register (DI, SI) Registri di Segmento - Si usano per puntare ai quattro segmenti di memoria correntemente attivi - IP: Instruction Pointer - FLAG Registri Indice e Puntatore Registri di Sistema Uso generale Bit ---------- 16 ------------- AX AH AL Accumulatore nelle op aritmetiche BH BX BL CH CX CL DX DH DL Base nei modi di indirizzamento Contatore delle iterazioni nei Loop Dati per la moltipl. e divis. di dati a 16 bit registri indici e puntatori registri segmento registri di sistema SI: Indice di sorgente DI: indice di destinazione BP: Puntatore alla Base SP: Puntatore allo Stack (si somma a SS per ottenere il TOP) CS: Segmento di programma (si somma a IP per ottenere il PC) DS: Segmento dati SS: Segmento Stack ES: Segmento Ulteriore IP: Puntatore Istruzioni FLAGS: Flag di stato 6

Instruction Pointer (IP) registro a 16 bit viene gestito dal BIU contiene, in ogni istante, l'offset (cioè la distanza in byte) dell'istruzione successiva dall'inizio del segmento codice corrente (CS) I programmi non hanno accesso diretto all'ip, ma le istruzioni lo modificano implicitamente Il program counter classico PC coincide con CS:IP. FLAGS Registro a 16 bit contenente: 6 flag di stato: vengono modificati dall'eu in base al risultato delle operazioni logiche e aritmetiche 3 flag di controllo: settati o azzerati dal programma al fine di modificare il comportamento della CPU I rimanenti bit non sono utilizzati SF: segno (+ o -) ZF: risultato Zero OF: Overflow CF: Carry AF: Auxiliary carry PF: Parità del risultato - IF: Interrupt enable - DF: Direction - TF: Trap Esiste un gruppo di istruzioni che permette al programma di controllare il contenuto di tali flag a fini decisionali 7

Gestione della memoria Per comodità la memoria si può pensare divisa in Paragrafi Segmenti I paragrafi sono - zone di memoria costituite da 16 byte contigui. Il sistema può gestire fino a 64k paragrafi. (perche?) - numerati a partire dalla locazione 00000h di memoria. I paragrafi non possono sovrapporsi. I segmenti sono zone di memoria costituite da 64k byte contigui. Il sistema può gestire fino a 64k segmenti; ogni segmento inizia in corrispondenza con un paragrafo, ossia ad un indirizzo multiplo di 16. I segmenti possono sovrapporsi (Overlapping Segments). Gestione della memoria Memoria paragrafi segmenti 0 16 32 48 64 80. 1M-32 1M-16 1M 0 1 2 64k-1 0 1 2 8

Segmenti I quattro registri segmento puntano ai quattro segmenti correntemente utilizzabili. Ogni programma in esecuzione può accedere direttamente a: 64k byte di codice - CS 64k byte di stack - SS 128k byte di dati - DS e ES Per accedere al codice o ai dati contenuti in altri segmenti, è necessario modificare i registri segmento in modo opportuno Segmentazione Intel 8086/88 Ciascun registro segmento punta a più spazi di indirizzamento indipendenti: segmenti I quattro registri segmento puntano ai quattro segmenti correntemente utilizzabili. 64k byte di codice - CS 64k byte di stack - SS 128k byte di dati - DS e ES Per accedere al codice o ai dati contenuti in altri segmenti, è necessario modificare i registri segmento in modo opportuno Registri a 16 Bit -> Numero massimo Indirizzi = 2 16 = 65.536 = 64 k Memoria reale indirizzata = 1.048.576 = 1.024 = 2 20 Paragrafo (16 byte ) 64 k CODICE 0150H ACCESSO CS 0150 H SIMULTANEO DS 4200 H 64 k DATI 4200H MASSIMO = SS 9CD0 H 256 K ES B000 H 64 k STACK 9CD0H 64 k EXTRA B000H Segmenti max di 64 k che iniziano in qualsiasi punto della memoria e possono sovrapporsi. 9

Segmenti I segmenti possono essere disposti in memoria in diversi modi; ad esempio: contigui (segmenti A e B) disgiunti (segmenti A e C) sovrapposti parzialmente (segmenti B e C) sovrapposti totalmente (segmenti E e F) Una locazione della memoria fisica può essere contenuta in più segmenti Calcolo indirizzo fisico L indirizzo fisico di una cella di memoria è espresso da 20 bit; non è quindi possibile un indirizzamento mediante un solo registro a 16 bit. Esso è infatti ottenuto mediante la somma di due contributi: - il Segment Address: è l indirizzo di testa del segmento e viene ottenuto moltiplicando per 16 il numero del segmento. - l Effective Address (EA): è l indirizzo effettivo all interno del segmento, calcolato come offset (spostamento) rispetto all inizio del segmento stesso. NB: la moltiplicazione per 16 può essere notevolmente velocizzata da un semplice shift a sinistra di 4 posizioni della rappresentazione binaria del numero. 10

Indirizzo fisico I programmi utilizzano indirizzi formati da: indirizzo del segmento offset nel segmento entrambi quantità di 16 bit senza segno BIU converte la coppia segmento:offset in indirizzo fisico Ciò avviene moltiplicando l'indirizzo del segmento per 16 e sommando al risultato l'offset nel segmento Offset 16 bit + Seg.Add. 20 bit = Eff.Add. 20 bit Indirizzo fisico BIU ottiene la coppia segmento:offset da traslare, in modi diversi: 1. Le istruzioni da eseguire vengono ricavate dal segmento codice corrente, pertanto l'indirizzo fisico della successiva istruzione è dato da: CS:IP, cioè CS*16+IP 2. Le istruzioni che agiscono sullo stack utilizzano il segmento stack corrente: - SS contiene l'indirizzo del segmento - SP contiene l'offset del top dello stack Gli operandi che fanno riferimento alla memoria (variabili di programma) di norma risiedono sul data segment corrente (DS) però, il programma può dire al BIU di utilizzare uno qualunque dei quattro segmenti correntemente disponibili L'offset della variabile viene invece calcolato dall'eu e dipende dalla modalità di indirizzamento specificata nell'istruzione 11

Stack area di memoria gestita con un protocollo di tipo LIFO (Last In First Out) realizzato in memoria centrale definito dai registri SS e SP In memoria possono coesistere più stack, ognuno al massimo di 64k byte se un programma oltrepassa per errore tale limite,... Un solo stack è quello corrente: SS contiene l'indirizzo del segmento stack (Stack Segment) SP contiene l'offset del top dello stack (Stack Pointer) Lo stack cresce per decremento dello SP (andando dagli indirizzi alti a quelli bassi): l'indirizzo di partenza dello stack logico (contenuto in SS) non è il bottom dell area di memoria fisica riservata allo stack Stack Area di memoria centrale gestita con un protocollo di tipo LIFO (Last In First Out) definita dai registri SS e SP ed al massimo di 64k byte. SS contiene l'indirizzo del segmento stack (Stack Segment) SP contiene l'offset del top dello stack (Stack Pointer) Lo stack cresce per decremento dello SP (andando dagli indirizzi alti a quelli bassi): l'indirizzo di partenza dello stack logico (contenuto in SS) non è il bottom dell area di memoria fisica riservata allo stack. 12

Stack Le istruzioni che operano sullo stack trasferiscono due byte per volta (una word) Operazione di push: SP -> SP - 2 scrittura di una word al nuovo top Operazione di pop: lettura di una word dal top SP -> SP + 2 ISA del Pentium II Compatibilità con architetture della famiglia 808x (real mode e virtual 8086 mode) Protected mode (vero Pentium II) prevede 4 livelli di privilegi controllati da bit della PSW Livello 0 kernel mode (sistema operativo) Livello 3 user mode (programmi applicativi) Livelli 1 e 2 intermedi, raramente usati Enorme spazio di indirizzamento 2^14 (=16.384) segmenti 2^32 (indirizzi da 0 a 2^32-1) indirizzi per ogni segmento La maggior parte dei sistemi operativi usa un solo segmento di 2^32 byte raggruppati in parole da 4 byte Registri del Pentium II 4 registri da 32 bit di uso generale (EAX, EBX, ECX, EDX), ciascuno utilizzabile anche come registri da 16 e 8 bit (es. AX 16 bit, AH+AL 8 bit) 4 registri da 32 bit usati come puntatori - ESI Source - EDI Destination - EBP Base Pointer (analogo a LV di IJVM) - ESP Stack Pointer 6 registri da 16 bit per l uso dei segmenti (importanti quando la capacità di indirizzamento era limitata) 1 registro da 32 bit come Program Counter (detto Instruction Pointer) 1 registro da 32 bit per la PSW 13

Bit ---------- 16 ------------- ------ 8 ----- ----- 8 ----- AX AH AL EAX BH BX BL CH CX CL DX DH DL EBX ECX EDX ESI EDI EBP ESP CS SS DS ES FS GS EIP EFLAGS ; Somma degli elementi di un vettore ;=======SEGMENTO STACK=========== STACK SEGMENT PARA STACK 'STACK' DB 100h DUP(0) STACK ENDS ;;== ==SEGMENTO DATI=========== DATA SEGMENT PARA PUBLIC 'DATA' totale DB 10 ;Quanti numeri contiene il vettore vettore DB 3,5,2,0,3,9,7,2,1,1 msg2 DB ': $' DATA ENDS ;==========SEGMENTO CODICE======== CODE SEGMENT PARA PUBLIC 'CODE' MAIN PROC FAR ;----PROLOGO STANDARD------------ ASSUME CS:CODE PUSH DS XOR AX,AX PUSH AX MOV AX,data MOV ES,AX ASSUME ES:DATA MOV DS,AX ASSUME DS:DATA ;-------------MAIN---------------- CALL Calcolo CALL Output RET ;----------PROCEDURE----------- Calcolo PROC NEAR CMP totale,0 JE fine XOR CX,CX.. MOV somma,ax fine: RET Calcolo ENDP... MAIN ENDP CODE ENDS END MAIN STRUTTURA PROGRAMMA ASSEMBLY STRUTTURA ISTRUZIONE ASSEMBLY 1. LABEL ( opzionale ) 2. CODICE OPERATIVO ( Istruzione o pseudoistruzione ) 3. OPERANDO ( Uno o più di uno ) 4. COMMENTO ( Preceduto da ; ). Questi quattro elementi devono essere separati al più da un blank;. L istruzione non deve necessariamente iniziare dalla prima colonna;. L istruzione può essere lunga al max 132 14

SEGMENTI In programma ci devono essere almeno 3 definizioni di segmento. - STACK riserva spazio per lo STACK. - DATA contiene le variabili del programma. - CODE contiene istruzioni del programma. Nome del segmento Specifica che il segmento deve cominciare dall inizio di un paragrafo standard ( 16 byte ) in memoria. STACK SEGMENT PARA STACK STACK DB 1024 SUP ( 0FFH ) Per specificare lo Stack. STACK ENDS DATA SEGMENT PARA PUBLIC DATA VAR 1 DB. Per le definizioni del segmento DATA e CODE DATA ENDS CODE SEGMENT PARA PUBLIC CODE MAIN PROC FAR. MAIN ENDP CODE ENDS Tipi di istruzioni Suddivisione funzionale delle istruzioni: trasferimento dati shift e rotazione aritmetiche vettori booleani elaborazione indirizzi elaborazione di stringhe modifica sequenza interi binari reali decimali salti condiz. e incondizion. iterazione o loop salti a subroutine salti a procedure istruzioni su dati tipizzati istruzioni su dati non tipizzati istruzioni general-purpose istruzioni special-purpose 15

Tipi di istruzioni Istruzioni su dati non tipizzati: : determinano operazioni eseguibili su tutti i tipi di dati 1. Istr.. di trasferimento dati 2. Istr.. di traslazione e rotazione 3. Istr.. di I/O Istruzioni su dati tipizzati: operano su un tipo di dati 1. Istr.. aritmetiche 2. Istr.. logiche 3. Istr.. di elaborazione stringhe 4. Istr.. di elaborazione indirizzi 5. Istr.. di modifica della sequenza di elaborazione Come si costruiscono le istruzioni Load and store or add... Quale sub funzione? La funzione scelta con quale metodo di indirizzamento? Diretto immediato indicizzato... Istruzione specifica 16

FORMATO ISTRUZIONI E' indifferente l'uso di lettere maiuscole o minuscole. Il tipo di operandi ammessi varia da istruzione a istruzione. Esistono istruzioni che ammettono come operando solo una costante o solo un particolare registro generale. L'assembler dell'8086 non ha la caratteristica dell'ortogonalità, caratteristica che renderebbe la fase di apprendimento dell'assembler più veloce. 17