Architettura degli Elaboratori

Documenti analoghi
Architettura degli Elaboratori

Assembly. Modello x86

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Famiglia dei processori INTEL

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.

Nel microprocessore 8086 abbiamo una gran quantità di registri

ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10)

Architettura degli elaboratori (A)

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

L insieme delle istruzioni (6)

Il microprocessore 8086

Architettura di una CPU

Architettura 8086/8088

Interazione con il DOS e il BIOS

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

Lezione XII: La gestione delle eccezioni in MINIX

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO

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

Architettura dei Calcolatori elettronici

iafelice at cs(dot)unibo(dot)it

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

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

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Il livello architettura e set di istruzioni

Esercizi per il recupero del debito formativo:

Parte VI. Istruzioni ed indirizzamento

Istruzioni di modifica della sequenza di elaborazione

Parte V. Il Livello delle Istruzioni Macchina

Calcolatori Elettronici Lezione A2 Architettura i8086

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

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

L architettura Intel

FONDAMENTI DI INFORMATICA Lezione n. 11

Macchina di Riferimento: argomenti

Architettura hardware

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

Componenti e connessioni. Capitolo 3

Struttura di un elaboratore

Consegne estive per gli studenti con sospensione del giudizio nella materia Sistemi per l'elaborazione e la trasmissione dell'informazione.

Componenti principali

Cenni ad Assembly Intel

Il processore Pentium

Istruzioni di trasferimento dati

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086)

Architettura dei calcolatori

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

Hardware di un Computer

Linguaggio Assembly e linguaggio macchina

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Programmazione A.A Architettura dei Calcolatori. ( Lezione V ) Componenti hardware e loro schema funzionale

Ing. Gabriele MONTI

Il linguaggio assembly

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

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Calcolatori Elettronici Prof. Gian Luca Marcialis. Capitolo 4 Unità Centrale di Elaborazione Istruzioni Macchina

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Architettura degli Elaboratori

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

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

Linguaggio Assembly e linguaggio macchina

Il linguaggio macchina

Architettura dei calcolatori. Architettura dei calcolatori. Cos'è un computer?

DEC PDP8, III Generazione, '65-'75

Architettura di un calcolatore e ciclo macchina. Appunti per la classe 3 Dinf

Architettura di un elaboratore. Il modello di von Neumann

Sistemi di Elaborazione delle Informazioni

Il linguaggio macchina

L'architettura del processore MIPS

Modi di indirizzamento del processore MC68000 (parte prima)

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

Assembly (3): le procedure

ARCHITETTURA DI UN CALCOLATORE ELETTRONICO

Modi di indirizzamento

Corso di Laurea in Informatica Architetture degli Elaboratori

Linguaggio Assembly e linguaggio macchina

Architettura di un calcolatore: Introduzione parte 2

Architettura del processore. Modello di calcolatore. Caratteristiche del processore. Caratteristiche del processore. Fondamenti di Informatica

Architettura hardware

Scopo della lezione. Analizzare i tipi di macchine Indirizzamento e memorie Tipi di dato

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi

Il linguaggio assembly 8086

Programmazione dello Z80

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

iafelice at cs(dot)unibo(dot)it

Sistemi di numerazione

Lezione 15. L elaboratore Elettronico

ARCHITETTURA DI UN ELABORATORE

Lezione4: MIPS e Istruzioni (1 Parte)

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

ARCHITETTURA DI UN ELABORATORE

Elementi di informatica

Corso di Laurea in Informatica

Sistemi x86 CALCOLATORI ELETTRONICI LM

Elementi di informatica

Richiami sull architettura del processore MIPS a 32 bit

Transcript:

Architettura degli Elaboratori Corso di Laurea Triennale in Informatica Università degli Studi di Bari Laboratorio lez1: il processore 8086/88 Prof. S.Pizzutilo 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. 1

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) 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) 2

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 Execution Unit (EU): esegue le istruzioni (fase di execute) - preleva le istruzioni (fase di fetch) - legge gli operandi - scrive i risultati 3

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 - BIU 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 le istruzioni 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. 4

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 CH DH BX CX DX BL CL 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: Registro di stato 5

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 6

Gestione della memoria La memoria è divisa in Paragrafi Segmenti I paragrafi sono zone di memoria costituite da 16 byte contigui non sovrapponibili. Il sistema può gestire fino a 64k paragrafi numerati a partire dalla locazione 00000h di memoria. 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). Memoria 0 16 32 48 64 80. 1M-32 1M-16 1M paragrafi segmenti 0 1 2 64k-1 0 1 2 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. 7

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. 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 8

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) è il top (non il bottom) dell area di memoria fisica riservata allo stack. 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 9

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 Bit ---------- 16 ------------- ------ 8 ----- ----- 8 ----- AX AH AL EAX BH CH DH BX CX DX BL CL DL EBX ECX EDX ESI EDI EBP ESP CS SS DS ES FS GS EIP EFLAGS 10

; 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 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 11

Tipi di istruzioni Suddivisione funzionale delle istruzioni: trasferimento dati shift e rotazione aritmetiche interi binari reali decimali vettori booleani elaborazione indirizzi elaborazione di stringhe modifica sequenza istruzioni su dati tipizzati istruzioni su dati non tipizzati salti condiz. e incondizion. iterazione o loop salti a subroutine salti a procedure istruzioni general-purpose istruzioni special-purpose 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 12

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 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. 13