Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

Documenti analoghi
Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto

Lezione 17 Il Set di Istruzioni (3)

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (3) Dove siamo nel corso. Organizzazione della lezione. Cosa abbiamo fatto

Informazioni varie. Lezione 18 Il Set di Istruzioni (5) Dove siamo nel corso. Un quadro della situazione

Lezione 18 Il Set di Istruzioni (4)

Istruzioni e linguaggio macchina

Architettura degli Elaboratori

Lezione 15 Il Set di Istruzioni (1)

Un quadro della situazione. Lezione 13 Il Set di Istruzioni (1) Organizzazione della lezione. Dove siamo nel corso. Cosa abbiamo fatto

Richiami sull architettura del processore MIPS a 32 bit

Architettura degli Elaboratori

Corso di Architettura (Prof. Scarano) 09/04/2002

Richiami sull architettura del processore MIPS a 32 bit

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti. Proff. A. Borghese, F. Pedersini

Modifiche di orario. Lezione 19 Il Set di Istruzioni (6) Dove siamo nel corso. Un quadro della situazione

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

Il processore: unità di elaborazione

Rappresentazione dell informazione

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

Architettura del calcolatore (Seconda parte)

Fetch Decode Execute Program Counter controllare esegue prossima

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini

L unità di controllo di CPU a singolo ciclo

A.A. 2018/2019. CPU e Linguaggio Macchina FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

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

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Laboratorio di Architettura degli Elaboratori

L'architettura del processore MIPS

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

Istruzioni di trasferimento dati

Fondamenti di Informatica A. A / 1 9

Architettura degli elaboratori CPU a ciclo singolo

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

CPU a ciclo multiplo

Progetto CPU a singolo ciclo

Architettura e funzionamento del calcolatore

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

La macchina di Von Neumann. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI "PROGRAMMAZIONE I"

CPU a ciclo multiplo

Fondamenti di Informatica e Programmazione. P ro f. G i a n n i D A n g e l o

Architettura degli elaboratori CPU a ciclo singolo

L unità di controllo di CPU a singolo ciclo

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Elementi di informatica

Un quadro della situazione. Cosa abbiamo fatto. Lezione 30 Valutazione delle Prestazioni. Dove stiamo andando.. Perché:

Linguaggio macchina e register file

Calcolatore: sottosistemi

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

Istruzioni e linguaggio macchina

Ricevimento inviate una e mail a con oggetto [Tutorato Arch] o [Tutorato Prog1]

Sia per la II prova intercorso che per le prove di esame è necessaria la PRENOTAZIONE

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Architettura dell elaboratore

Architettura dell elaboratore

Architettura dei calcolatori e sistemi operativi. Il processore Capitolo 4 P&H

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

La CPU a singolo ciclo

Informatica. Mario Pavone - Dept. Mathematics & Computer Science - University of Catania. Trasferimento. Ambiente esterno.

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura del Calcolatore

Corso di Laurea in Informatica

Componenti di un processore

Linguaggio Assembly e linguaggio macchina

Architettura di von Neumann

La CPU a singolo ciclo

Calcolatori Elettronici

Capitolo 5 Elementi architetturali di base

Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12

Il processore - CPU (CENTRAL PROCESSING UNIT)

Un quadro della situazione. Lezione 28 Il Processore: unità di controllo (2) Dove siamo nel corso. Organizzazione della lezione. Cosa abbiamo fatto

Struttura di un elaboratore

Architettura del Calcolatore

Architettura di un calcolatore: primi cenni introduttivi. Calcolatore: sottosistemi

CALCOLATORI ELETTRONICI 14 giugno 2010

La programmazione dei calcolatori. L insieme delle istruzioni. Vantaggi e svantaggi dell assembler. Benefici dei linguaggi ad alto livello

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Progetto CPU a singolo ciclo

Lezione 22 La Memoria Interna (1)

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Pre-appello del 12 Gennaio Attenzione:

Sistemi e reti CPU Concetti di base

La macchina di Von Neumann

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Linguaggio Assembly e linguaggio macchina

L architettura del calcolatore (Seconda parte)

Architettura. Argomenti. Modello di Von Neumann. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing. Antonio Coronato. Modello di Von Neumann

CALCOLATORI ELETTRONICI 9 settembre 2011

Linguaggio Assembly e linguaggio macchina

Transcript:

Un quadro della situazione Lezione 15 Il Set di Istruzioni (2) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Input/Output Sistema di Interconnessione Registri Central Processing Unit Principale Interconnessione interna alla CPU Unità di Controllo Unità Aritmetico Logica Cosa abbiamo fatto circuiti combinatori e sequenziali Dove stiamo andando.. il set di istruzioni Perché: per poter comprendere il funzionamento e poter progettare la Unità di Controllo 2 Dove siamo nel corso Le operazioni e gli operandi Il Set di Istruzioni Codifica della informazione Logica Digitale Unità Aritmetico Logica (ALU) Il set delle istruzioni Processore: unità di elaborazione Processore: unità di controllo Processore: pipeline Valutazione delle prestazioni 3 Processore MIPS (tipica architettura) Tuttora utilizzato (nei videogiochi) Operazioni di tipo diverso: operazioni aritmetiche operazioni di trasferimento (memoria registri) operazioni di scelta e controllo del flusso operazioni di supporto alle procedure Operandi: accesso ai registri della macchina accesso alla memoria uso di costanti 4

Il ruolo del compilatore Le operazioni e gli operandi Assegnare variabili a registri f = ( g + h ) - ( i + j ) add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1 f $s0 g $s1 h $s2 i $s3 j $s4 # g+h # i+j # f = (g+h)-(j+j) Operazioni di tipo diverso: operazioni aritmetiche operazioni di trasferimento (memoria registri) operazioni di scelta e controllo del flusso operazioni di supporto alle procedure Operandi: accesso ai registri della macchina accesso alla memoria uso di costanti 5 6 Istruzioni di trasferimento dati: la load-word Il ruolo del registro indice $8 CPU 4 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 lw $8, () Indirizzamento nel registro $8 va caricato l elemento con indirizzo uguale a + il valore in Uso di un registro indice 7 $8 1237 4125 04 8 CPU 1001 1237 1002 1003 1004 1005 1006 1007 1008 1009 4125 1010 1011 1012 1013 1014 1015 lw $8, () Utile per scorrere array al variare di Attenzione! Il registro indice deve sempre variare di 4 in 4 8

Istruzione di trasferimento dati: la store-word I campi del formato R $8 CPU 4 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 sw $8, () Indirizzamento l elemento nel registro $8 va memorizzato nel.. l elemento con indirizzo uguale a + il valore in Uso di un registro indice 9 0 17 18 8 0 6 bit 5 bit 5 bit 5 bit 5 bit 6 bit 000000 1 10010 0 00000 op add $8, $17, $18 rs rt rd shamt Campo op: operazione effettuata Campo rs: registro con il primo operando Campo rt: registro con il secondo operando Campo rd: registro destinazione Campo shamt: scorrimento 32 00 op 10 I campi del formato I I principi di progetto visti finora lw $8, () 35 19 8 6 bit 5 bit 5 bit 16 bit 11 10011 0 000000111110 op rs rt indirizzo Campo op: operazione effettuata Campo rs: registro con indice Campo rt: registro destinazione Campo indirizzo: indirizzo partenza 11 1. Semplicità e regolarità sono strettamente correlate numero operandi fissato a 3 per le operazioni aritmetiche 2. Minori sono le dimensioni, maggiore è la velocità numero dei registri limitato a 32 dimensione del chip come fattore che influenza il clock 3. Un buon progetto richiede compromessi istruzioni con la stessa lunghezza (semplicità) ma con (pochi) formati diversi 12

Registri e Registri e 13 14 Il concetto di programma memorizzato La memorizzazione di programmi Due principi chiave della costruzione: le istruzioni sono rappresentate da numeri i programmi sono in memoria e possono essere letti o scritti, proprio come numeri La memoria può contenere codice sorgente di un programma di elaborazione di testi codice macchina di un programma di elaborazione di testi il testo su cui il programma di elaborazione testi lavora il compilatore che ha generato il codice macchina etc. etc. Processore Programma di gestione bilancio (codice macchina) Programma di elaborazione testi (codice macchina) Compilatore C (codice macchina) Dati del libro paga Testo Codice sorgente C dell elaboratore testi 15 16

Per la esecuzione della istruzione.. Esecuzione divisa in 5 passi Registri e fetch della istruzione Prelievo della istruzione indirizzata dal Program Counter dalla decode e register fetch Decodifica della istruzione e prelievo dei valori dei registri interessati execute uso della ALU per effettuare la operazione memory (register) access scrittura in memoria o scrittura risultato in un registro write-back lettura dalla memoria per scrivere in un registro 17 18 Una visione astratta 5-write-back PC Indirizzo delle istruzioni 1-fetch Istruzione Dato N. registro Registri N. registro N. registro 2-decode e register fetch ALU 3-execute Indirizzo Dato dati 4-memory/ memory/reg.. access Registri e 19 20

Rappresentazione dei registri Una convenzione per assegnare ai registri un numero Gli indirizzi sono di 32 bit I registri $s0, $s1,, $s7 Quindi esistono 2 32 byte! corrispondono ai registri $16, $17,.., $23 I registri $t0, $t1,, $t7 corrispondono ai registri $8, $9,..,$15 Il registro $zero è il registro $0 viene mantenuto sempre con valore 0 Quante parole (word) esistono? Poiché ogni parola consiste di 4= 2 2 byte, allora Ci sono 2 32 / 2 2 = 2 30 parole in totale Come sono gli indirizzi binari delle parole? Sono multipli di 4, quindi Gli ultimi due bit più significativi sono a 0 21 2 = 8 è divisibile per 4 1 2 = 12 è divisibile per 4 10100 2 = 20 è divisibile per 4 22 Indirizzamento : commenti Prevede l uso di un indirizzo base specificato nella istruzione tramite una costante od una label Registri e.. e di uno spiazzamento contenuto nel registro indice Quindi nella istruzione: indirizzo base registro indice lw $8, () 12 23 L indirizzo della locazione di memoria caricata è quindi + cioè 1012 24

Un uso alternativo dell indirizzamento Si può invertire l uso dell indirizzo base e del registro indice Specificando nel valore specificato nella istruzione lo spiazzamento (il vecchio indirizzo base ) E memorizzando nel registro indice l indirizzo di base indice indirizzo di base lw $8, 12() L indirizzo della locazione di memoria caricata è quindi (comunque!) 12 + cioè 1012 25 Un confronto Quando si deve usare l uno e quando l altro? Domanda: Sono totalmente equivalenti? lw $8, () lw $8, 12() 12 carica in $8 la locazione 1012 carica in $8 la locazione 1012 Risposta: No Domanda: Perché? Un suggerimento pensiamo al formato I delle due istruzioni 26 Il formato di lw $8, () Il formato di lw $8, 12() contiene il valore 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 La istruzione lw $8, () viene rappresentata in una parola: 35 19 8 6 bit 5 bit 5 bit 16 bit 11 10011 0 000000111110 op rs rt indirizzo contiene il valore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 La istruzione lw $8, 12() viene rappresentata in una parola: 35 19 8 12 6 bit 5 bit 5 bit 16 bit 11 10011 0 0000000000001100 op rs rt indirizzo 27 28

La risposta Esempio 1 La scelta di porre l indirizzo base dell array nel registro permette di poter usare 32 bit come locazione di inizio quindi potendo accedere a tutta la memoria Invece ponendo lo spiazzamento nel registro si è obbligati a porre l indirizzo base nei 16 bit del campo indirizzo della istruzione una limitazione, ne riparleremo Comunque, la scelta di porre lo spiazzamento nel registro permette di poter scorrere un array incrementando l indice 29 Scrivere il codice MIPS relativo alla istruzione C Supponendo che: A[12] = h + A[8] la variabile h sia associata al registro $18 ($s2) l indirizzo di base del vettore A sia nel registro ($s3) lw $8, 32() # carica A[8] in $8 add $8, $18, $8 # somma h a $8 sw $8, 48() # scarica $8 in A[12] 30 Esempio 2 Esercizi Scrivere il codice MIPS relativo alla istruzione C g = h + A[i] Supponendo che: le variabili g, h ed i siano, rispettivamente, nei registri $17 ($s1), $18 ($s2), $20 ($s4) l indirizzo di base del vettore A sia nel registro ($s3) add $9, $20, $20 # calcolo 2i = i + i add $9, $9, $9 # calcolo 4i = 2i +2i add $9,, $9 # calcolo l indirizzo di A[i] lw $8, 0($9) # carica A[i] in $8 add $17, $18, $8 # g = h + A[i] 31 Scrivere le istruzioni MIPS necessarie per copiare un valore da un registro ad un altro Scrivere le istruzioni MIPS necessarie per azzerare un registro 32