Architettura degli elaboratori (A)



Documenti analoghi
Il microprocessore 8086

CPU. Maurizio Palesi

Architettura del calcolatore

Architettura hw. La memoria e la cpu

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

Architettura degli Elaboratori

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Famiglia dei processori INTEL

Assembly. Modello x86

Architettura di un calcolatore: introduzione

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

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

Ing. Paolo Domenici PREFAZIONE

C. P. U. MEMORIA CENTRALE

Parte II.2 Elaboratore

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

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

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

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

Nel microprocessore 8086 abbiamo una gran quantità di registri

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

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

Architettura hardware

INFORMATICA 1 L. Mezzalira

Von Neumann. John Von Neumann ( )

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

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

Struttura del calcolatore

Lezione 3: Architettura del calcolatore

Funzionalità di un calcolatore

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Architettura dei computer

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

Introduzione. Architettura

FONDAMENTI di INFORMATICA L. Mezzalira

Il Processore: i registri

CALCOLATORI ELETTRONICI II

L architettura del calcolatore (Prima parte)

Informazione analogica e digitale

Introduzione all'architettura dei Calcolatori

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

La Macchina Virtuale

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

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi

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

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

CALCOLATORI ELETTRONICI

Richiami di informatica e programmazione

La macchina programmata Instruction Set Architecture (1)

I sistemi di elaborazione

L architettura di riferimento

Calcolatori Elettronici

Laboratorio di Informatica

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

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

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

Architettura dei calcolatori

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

ARCHITETTURA DEI CALCOLATORI VOLUME I

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Laboratorio di Informatica Corso di Laurea in Matematica A.A. 2007/2008

Ciclo di Istruzione. Ciclo di Istruzione. Controllo. Ciclo di Istruzione (diagramma di flusso) Lezione 5 e 6

Architettura di un calcolatore

Programmazione dello Z80

introduzione I MICROCONTROLLORI

La macchina di Von Neumann. Archite(ura di un calcolatore. L unità di elaborazione (CPU) Sequenza di le(ura. Il bus di sistema

Calcolo numerico e programmazione Architettura dei calcolatori

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

Architettura degli Elaboratori

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Lezione n.19 Processori RISC e CISC

Lez. 3 L elaborazione (II parte) Prof. Pasquale De Michele Gruppo 2

ARCHITETTURA DEL CALCOLATORE

che vengano generati nell ordine corretto i sistema (es., la memoria, l unità aritmetico-

ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10)

UNITÀ DI ELABORAZIONE (CPU) UNITÀ DI ELABORAZIONE (CPU) Opcode OpCode Operazione

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

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore

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

8 Microcontrollori PIC

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Calcolatori Elettronici Parte X: l'assemblatore as88

Programmazione in linguaggio assembly per architetture Intel 8088

Il livello architettura e set di istruzioni

Architettura di un computer

Architettura di un Elaboratore

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

Prelievo di un istruzione. Istruzioni macchina. Tipi di istruzioni. Registri principali della CPU e loro ruolo

Unità Periferiche. Rete Di Controllo

L unità di elaborazione pipeline L unità Pipelining

Corsi Speciali Abilitanti Indirizzo 2: Fisico-Matematico Modulo Didattico: Elementi di Informatica Classi: 48/A TEST D INGRESSO

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

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

CALCOLATORI ELETTRONICI 29 giugno 2011

Calcolatori Elettronici Lezione A2 Architettura i8086

PROGRAMMAZIONE MODULARE

Università degli Studi G. d'annunzio C.L. Economia e Informatica per l'impresa. Sistemi Operativi e Reti A.A. 2014/2015 prof.

Transcript:

Laurea in Informatica a.a. 2010-2011 Laboratorio del corso di Architettura degli elaboratori (A) Modulo 1: l Architettura dell 8086 Valeria Carofiglio

Linguaggi a vari livelli e loro relazioni Programma A. (C,C++, Java) Compilatore.??? Versione di A eseguita Assemblatore Programma A in codice macchina

Linguaggi a vari livelli e loro relazioni Programma A. (C,C++, Java) Compilatore Programma A in linguaggio Assemby Versione di A eseguita Assemblatore Programma r A in codice macchina

Dalle istruzioni in binario al linguaggio i Assembly Programmazione in linguaggio i macchina binario i Per semplificare e velocizzare e preferibile impiegare una rappresentazione simbolica delle istruzioni Linguaggio assembly: Linguaggio i composto da istruzioni i i simboliche che corrispondono a istruzioni binarie simbolico add AX,BX al posto di 1000110010100000 Programma assemblatore (assembler): Prende in ingresso un programma scritto in assembly Genera il corrispondente programma in linguaggio macchina

Perché studiare l architettura dell 8086 in un corso di assembly Molte caratteristiche del linguaggio assembly rispecchiano fortemente l architettura su cui il programma deve girare

Componenti di base dell 8086 computazioni Dati Indirizzi Controllo BUS Dati e istruzioni Architettura di Von Newman

Memoria e I/O dell 8086 (cont.) CPU Execution Unit Bus Interface Unit organizzazione i Sistema di bus Interfaccia Interfaccia. Chips di mem. Dispositivi I/O Controller dati controllo indirizzi Accessi diretti a memoria

Memoria dell 8086 Memorizzazione di byte, word, dword dword all indirizzo 192 Ogni locazione: 8 cifre binarie (1 byte) indirizzi byte all indirizzo 188 byte all indirizzo i 186 Il byte di ordine più basso nella locazione specificata Il byte d ord ne p ù basso nella locaz one spec f cata dall indirizzo gli altri alle locazioni consecutive

Bus dei dati dell 8086 Locazione di memoria: 1 byte Bus dati: almeno a 8 linee (8088) Una per la trasmissione di ogni bit numeri rappresentati da almeno 16 bit (alcuni programmi che effettuano calcoli possono riciederli) Bus a 8 linee: Due operazioni separate (per memorizzarli) 8086 ha maggiore potenza Nell 8086 Bus dei dati a 16 linee

Dimensione del bus degli indirizzi i i nella famiglia dell 8086 Il numero di bit che possono viaggiare i sul bus di indirizzi determina il numero massimo di memoria indirizzabile / locazioni di IO Con n linee di bus il processore può indirizzare 2 n indirizzi univoci (poiché ci sono 2 n valori in un numero binario ad n bit.

Bus degli indirizzi nell 8086 L 8086 consente indirizzi di memoria a 20 bit (inviati sul bus degli indirizzi) Numero di Indirizzi = 2 20 = 1.048.576 = 1.024 K Locazioni dalla 0000 0000 0000 0000 0000 (0D 0H) alla 1111 1111 1111 1111 1111 (1 048 575D - FFFFH) Anche le istruzioni sono in memoria (programma in codice macchina) 6 byte (max) per ogni istruzione nell 8086 Es: controlla se il valore in locazione 20BAFH è 365 ~ 300istr. (256 = 2 8 ) 2 byte per il nome dell istruzione 2 byte per rappresentare 365 (unsigned a 16 bit) Indirizzi a 20 bit 3 byte per 20BAFH TOTALE 7 Byte!!! NON CONSENTITO!!!?

Segmentazione dell 8086 (1) La memoria può essere pensata come organizzata in segmenti (entità logiche di cui il programmatore è consapevole) segmento1 segmento2 segmento3 64 k 2 16 locazioni di memoria segmento4 Cella di memoria selezionata Rappresentazione degli indirizzi <indirizzo del segmento>:<offset>

Segmentazione 8086(2) Calcolo degli indirizzi fisici da immettere sul bus degli indirizzi + 16 bit Indirizzo effettivo in (o offset) Reg. puntatore BX 16 bit 0000 Indirizzo di segmento * 16 = (shift di 4 posizioni) 20 bit Indirizzo fisico un esempio (in esadecimale) Indirizzo: <segmento>:<offset> 020A:1BCD Indirizzo i effettivo 1 B C D H Shift 0 2 0 A 0 H -------------------------------------- Indirizzo fisico 0 3 C 6 D H

Bus degli indirizzi nell 8086 L 8086 consente indirizzi di memoria a 20 bit (inviati sul bus degli indirizzi) Numero di Indirizzi = 2 20 = 1.048.576 = 1.024 K Locazioni dalla 0000 0000 0000 0000 0000 (0D 0H) alla 1111 1111 1111 1111 1111 (1 048 575D - FFFFH) Segmentazione della memoria Anche le istruzioni Per sono indirizzare memoria (programma in codice 2 20 locazioni macchina) 6 byte (max) per ogni di istruzione memoria nell 8086 bastano 2 byte Es: controlla se il valore in locazione 20BAFH è 365 ~ 300istr. (256 = 2 8 ) 2 byte per il nome dell istruzione 2 byte per rappresentare 365 (unsigned a 16 bit) Indirizzi a 20 bit 3 byte per 20BAFH TOTALE 7 Byte!!! NON CONSENTITO!!!?

Architettura interna della CPU 8086 E costituita da due blocchi funzionali

Bus Interface Unit Fornisce l interfaccia fisica tra il mondo esterno e la CPU. Coda delle istruzioni Struttura FIFO (6 byte): accumula le istruzioni da eseguire (pre-fetching) Gestisce tutte tt le operazioni i da e per l esterno 1. Fetch delle istruzioni 2. Spezzettamento nelle sue parti costituenti 3. Lettura e scrittura operandi e risultati delle istruzioni 4. Calcola gli indirizzi fisici (a 20 bit) 5. Accodamento delle istruzioni (prefetch)

Execution Unit Provvede alla esecuzione delle istruzioni 1. Riceve le istruzioni dalla BIU (byte per byte) 2. Decodifica delle istruzioni 3. Genera gli indirizzi degli operandi (se esistono) 4. Testa ed aggiorna il flag

Decodifica delle istruzioni Istruzioni non della forma SUB QuestoDato DaQuestoDato SistemaIlRisultatoQui piuttosto 0010101111000011 (16 bit) Set di istruzioni dell 8086 almeno 300 istruzioni diverse Richiesti 2 byte (2 8 =256 un byte non basta) per il nome dell istruzione + byte per gli operandi (se esistono) Coda di pre-fetching struttura a sei byte 6 byte per rappresentare una istruzione

Architettura interna della CPU 8086 E costituita da due blocchi funzionali EU e BUI lavorano in parallelo (pipeline 8086) Durante la fase di decodifica (EU) i bus sono inattivi e la BIU ricerca e preleva l istruzione successiva dalla memoria. (con priorità sugli operandi dell istruzione già recuperata)

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute BIU EU

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute BIU fetch EU attendi

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute BIU fetch fetch EU attendi execute

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute BIU fetch fetch fetch EU attendi execute execute

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute BIU fetch fetch fetch EU attendi execute execute Questa istruzione fa una richiesta di dati che non sono nella coda

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute BIU fetch fetch fetch fetch EU attendi execute execute attendi Questa istruzione fa una richiesta di dati che non sono nella coda

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute BIU fetch fetch fetch fetch Legge dati EU attendi execute execute attendi Questa istruzione fa una richiesta di dati che non sono nella coda

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute BIU fetch fetch fetch fetch Legge dati fetch EU attendi execute execute attendi execute Questa istruzione fa una richiesta di dati che non sono nella coda

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute Questi bit vengono scaricati Perché? BIU fetch fetch fetch fetch Legge dati fetch EU attendi execute execute attendi execute Questa istruzione fa una richiesta di dati che non sono nella coda

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute Questi bit vengono scaricati (Perché?) BIU fetch fetch fetch fetch Legge dati fetch fetch EU attendi execute execute attendi execute execute Questa istruzione fa una richiesta di dati che non sono nella coda

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute Questi bit vengono scaricati (Perché?) BIU fetch fetch fetch fetch Legge dati fetch fetch fetch EU attendi execute execute attendi execute execute execute Questa istruzione fa una richiesta di dati che non sono nella coda

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute Questi bit vengono scaricati (Perché?) BIU fetch fetch fetch fetch Legge dati fetch fetch fetch EU attendi execute execute attendi execute execute execute Questa istruzione fa una richiesta di dati che non sono nella coda Istruzione di salto

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute Questi bit vengono scaricati (Perché?) BIU fetch Legge dati fetch fetch fetch EU attendi execute execute execute Istruzione di salto Focus spostato

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute Questi bit vengono scaricati (Perché?) BIU fetch Legge dati fetch fetch fetch fetch EU attendi execute execute execute attendi Istruzione di salto

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute Questi bit vengono scaricati (Perché?) BIU fetch Legge dati fetch fetch fetch fetch fetch EU attendi execute execute execute attendi execute Istruzione di salto

Pipeline 8086 fetch execute fetch execute fetch execute fetch execute Questi bit vengono scaricati (Perché?) BIU fetch Legge dati fetch fetch fetch fetch fetch EU attendi execute execute execute attendi execute Istruzione di salto

Registri Registri di segmento Registri di sistema Registri generali Registri puntatore

Uso generale Registri Generali Per memorizzare operandi e risultato di operazioni i Bit ---------- 16 ------------- AH BH CH DH AX BX CX DX AL BL CL DL Accumulatore nelle op aritmetiche Nei modi di indirizzamento a memoria Contatore delle iterazioni nei Loop Ampiamento di AX nell moltipl. E divis. Di dati a 16 bit

Registri Indici e Puntatori registri indici e puntatori SI: Indice di sorgente DI: indice di destinazione i BP: Puntatore alla Base SP: Puntatore allo Stack (si somma a SS per ottenere il TOP)

Registri di Sistema registri di sistema IP: Puntatore Istruzioni FLAGS: Flag di stato

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: Ausiliary carry PF: Parità del risultato - IF: Abilitazione Interrupt - DF: Direction -TF: Trap Esiste un gruppo di istruzioni che permette al programma di controllare il contenuto di tali flag a fini decisionali

Registri di Segmento Per costruire indirizzi fisici (da mettere sul bus degli indirizzi) i i) con i quali accedere alla memoria registri segmento CS: Segmento Codice (si somma a IP per ottenere il PC) DS: Segmento Dati SS: Segmento Stack ES: Segmento Extra Contengono il puntatore all inizio dei segmenti di codice, di dato, di stack e supplementare

Segmentazione 8086 (3)

Il linguaggio gg Assembly Qualsiasi linguaggio assembly contiene 1. It Istruzioni i per il TRASFERIMENTO DATI 2. Istruzioni per l ESECUZIONE DI OPERAZIONI ARITMETICHE SU INTERI 3. Istruzioni per l ESECUZIONE DI OPERAZIONI LOGICHE SULL INTERO DATO O SU SINGOLI BIT 4. Istruzioni per MODIFICARE LA SEQUENZA DI ESECUZIONE di un programma

Il linguaggio gg Assembly Istruzioni per migliorare la potenza del processore 1. Istruzioni i per l ESECUZIONE DI OPERAZIONI IN VIRGOLA MOBILE 2. Istruzioni per la gestione di STRINGHE DI CARATTERI 3. Istruzioni per la gestione dell INPUT/OUTPUT