Laboratorio di Architettura degli

Documenti analoghi
Laboratorio di Architettura degli Elaboratori LabArch 2007 Terzo Quadimestre, a.a Docente: H. Muccini

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

Gestione delle eccezioni.

7 May INTERRUPT ED ECCEZIONI I. Frosio

15 April INTERRUPT ED ECCEZIONI I. Frosio


Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

Eccezioni ed interrupt. I. Frosio M.Marchi

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Manualino minimale MIPS

Esercitazione 6 Datapath multiciclo Eccezioni in PCSPIM

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

Università degli Studi di Cassino

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

Università degli Studi di Cassino

Modi di esecuzione user / kernel

Il linguaggio macchina

Unita aritmetica e logica. Input e output della ALU. Rappresentazione degli interi. Rappresentazione in modulo e segno. Aritmetica del calcolatore

Rappresentazione informazione ed elementi di aritmetica dei computer

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

Stringhe di caratteri

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Aritmetica per Elaboratori

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

ISA (Instruction Set Architecture) della CPU MIPS

slt $t1,$t2,$t3 if ($t2<$t3) $t1=1; Confronto tra registri slti $t1,$t2,100 if ($t2<100)$t1=1; Cfr. registro-costante

Il linguaggio macchina

Lezione 12. Assembly II. Set di Istruzioni MIPS Strutture di controllo in Assembly

Università degli Studi di Cassino

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

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

Istruzioni MIPS per floating point

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

Esercitazione Programmazione I con Laboratorio

ISA (Instruction Set Architecture) della CPU MIPS32

Esercitazione 1 Codifica e Rappresentazione dell Informazione Istruzioni Assembly MIPS

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 12 Gennaio Attenzione:

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.

CPU multiciclo eccezioni CPU pipeline

Codifica binaria: - numeri interi relativi -

Linguaggio Assembly e linguaggio macchina

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

Gestione delle eccezioni (CPU multiciclo) La CPU pipeline

Esercizi Programmazione I

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Istruzioni assembler Istruzione N Registri

Il linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I

MIPS! !

Linguaggio Assembly e linguaggio macchina

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

1.2f: Operazioni Binarie

Università degli Studi di Cassino e del Lazio Meridionale

Università degli Studi di Cassino

Sono tipicamente causati da dispositivi hardware. normale flusso di esecuzione viene interrotto, e la CPU passa a gestire l interrupt

L insieme delle istruzioni (5)

Linguaggio Assembly e linguaggio macchina

Rappresentazione. Notazione in complemento a 2. Complemento a due su 3 e 4 bit Complemento a due

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Corso di Calcolatori Elettronici I

1. L istruzione li $a0, è un istruzione standard del processore MIPS? Se no, a quali istruzioni corrisponde e come viene eseguita?

Architettura degli Elaboratori e Laboratorio

Unità aritmetica e logica

Architettura degli elaboratori - 2 -

Esempio di procedura annidata. L insieme delle istruzioni (5) Esempio di procedura annidata (2) set_array: Esempio di procedura annidata (3)

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

Tutorato architettura degli elaboratori modulo I (lezione 1)

Università degli Studi di Cassino

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario

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


Rappresentazione dell informazione

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME

PROVA SCRITTA DEL CORSO DI C A L C O L A T O R I E L E T T R O N I C I NUOVO ORDINAMENTO DIDATTICO 24 Settembre 2009

Lezione 3. I numeri relativi

Cap. 2 - Rappresentazione in base 2 dei numeri interi

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

La codifica. dell informazione. Codifica dei numeri. (continua) Codifica dei numeri. Codifica dei numeri: il sistema decimale

Architettura degli. Introduzione al corso Modello della Macchina di Von Neumann Una architettura reale: MIPS. Dott.

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

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

SECONDA PROVA INTERMEDIA DEL MODULO DI C A L C O L A T O R I E L E T T R O N I C I 5 Giugno 2012

Codifica binaria. Rappresentazioni medianti basi diverse

Laboratorio di Architetture degli Elaboratori II (A.A )

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 19 Febbraio Attenzione:

Calcolatori Elettronici

Interrupt ed Eccezioni

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME

Fetch Decode Execute Program Counter controllare esegue prossima

Modalità di indirizzamento

SECONDA PROVA INTERMEDIA DEL MODULO DI. 1 giugno 2017 NOME: COGNOME: MATRICOLA:

Lezione 2. Rappresentazione dell informazione

Un ripasso di aritmetica: Rappresentazione decimale - limitazioni

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

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 20 Giugno Attenzione:

La codifica. dell informazione

Transcript:

Laboratorio di Architettura degli Elaboratori Dott. Massimo Tivoli Numeri con segno Somma e Sottrazione Eccezioni

Alcune domande Come si rappresentano i numeri negativi? Qual e il numero piu grande rappresentabile in una parola del calcolatore? Cosa succede se si produce un numero piu grande? Come si gestisce la sottrazione in MIPS?

Numeri binari ed oltre Dato il seguente numero binario (salvato in un registro MIPS)come calcolare il suo decimale? i = 31 Algo: 0000 0000 0000 0000 0000 0000 0100 0000 B = base = 2 d i = valore del campo i-esimo = {0,1} i i = 0 2 i x d i (i=0,, 31) B i x d i Quanti valori riusciamo a rappresentare con 32 bit? 2 32, cioe da 0 a 2 32-1

Numeri negativi Gestione dei numeri negativi: Dove mettere il segno? +0 e -0 Passo aggiuntivo Rappresentazione modulo e segno Rappresentazione in complemento a due Least significant bit Most significant bit Overflow

Modulo e segno Vs. Complemento a due Sign Magnitude: Two's Complement (con # di bit pari a 3) 000 = +0 000 = +0 001 = +1 001 = +1 010 = +2 010 = +2 011 = +3 011 = +3 Bit di segno 100 = -0 100 = -4 101 = -1 101 = -3 110 = -2 110 = -2 111 = -3 111 = -1 Algo per il complemento a due: - 2 31 x d 31 + 2 i x d i (i=0,, 30) Ad esempio, con 6 bit, 111100 = -2 5 +(2 4 +2 3 +2 2 ) = -4

MIPS 32 bit signed numbers: 0000 0000 0000 0000 0000 0000 0000 0000 two = 0 10 0000 0000 0000 0000 0000 0000 0000 0001 two = + 1 10 0000 0000 0000 0000 0000 0000 0000 0010 two = + 2 10... 0111 1111 1111 1111 1111 1111 1111 1110 two = + 2,147,483,646 10 0111 1111 1111 1111 1111 1111 1111 1111 two = + 2,147,483,647 10 1000 0000 0000 0000 0000 0000 0000 0000 two = 2,147,483,648 10 1000 0000 0000 0000 0000 0000 0000 0001 two = 2,147,483,647 10 1000 0000 0000 0000 0000 0000 0000 0010 two = 2,147,483,646 10... 1111 1111 1111 1111 1111 1111 1111 1101 two = 3 10 1111 1111 1111 1111 1111 1111 1111 1110 two = 2 10 1111 1111 1111 1111 1111 1111 1111 1111 two = 1 10

Rappresentazione in complemento a 2 a k bit

Gestione numeri con segno e senza in MIPS Dobbiamo distinguere: Interi con segno ( int in C) Interi senza segno( unsigned int in C) MIPS: lb $t0, 0($sp) lbu $t0, 0($sp) slt $t0, $r1, $r1 slti $t0, $r1, 5 sltu $t0, $r1, $r1 sltiu $t0, $r1, 5??? Perche slti sl u???

Esempio Dati i seguenti due registri: $s0 = 1111 1111 1111 1111 1111 1111 1111 1111 $s1 = 0000 0000 0000 0000 0000 0000 0000 0001 Eseguire slt e sltu: slt$t0, $s0, $s1 $t0 conterra 1 sltu $t0, $s0, $s1 $t0 conterra 0

Scorciatoie (1/2) 1. Come convertire +5 in -5: 0101 Modificaretuttigli0 1, tutti1 0, e sommare1 1010 + 1 = 1011 x + x = -1 => x + 1 = -x (x è x con gli0 e 1 invertiti, -1 = 11...111) 2. Come convertireun numerobinarioda n a m bit, m > n (estensionedel segno) (+5)0101 su8 bit: 0000 0101 (-5) 1011 su8 bit: 1111 1011 e.g., ilcampo immediatoin unaaddi(16 bit) sommatoal valoredi un registro(32 bit) siricordichela macchinasommabit a bit

Scorciatoie (2/2) 3. Conversione esadecimale binario Ogni bit in esadecimale, viene rappresentato con 4 bit inbinario eca8 6420 esa e c a 8 6 4 2 0 esa 1110 1100 1010 1000 0110 0100 0010 0000 due Conversione binario esadecimale Ogni 4 bit in binario in 1 bit esadecimale

Somma e sottrazione Somma: Sottrazione: Se consideriamoche5 2 = (+5) + (-2) Allora, 0101 meno0010, corrispondea 0101 + 1110 = 0011 una somma dove si trascura il riporto sulbit disegnoe/o fuoridalregistro

Overflow A + B Overflow pos. pos. Risultato negativo neg. neg. Risultato positivo A B Overflow pos. neg. Risultato negativo neg. pos. Risultato positivo No Overflow: A + B, dove A e B hanno segni diversi No Overflow: A B, dove A e B hanno segni uguali

Add e Sub con segno MIPS: add $t0, $s1, $s2 addu $t0, $s1, $s2 addi $t0, $s1, 3 addiu $t0, $s1, 3 Le operazioni unsigned ignorano l overflow sub $t0, $s1, $s2 subu $t0, $s1, $s2

Effetti dell Overflow Una eccezione(interrupt) si verifica Il controllosaltasudiun indirizzopredefinitoper le eccezioni L indirizzo dell interrupt e salvato per possibili resumption (registro $epc) RegistroEPC exception program counter contienel indirizzodell istruzionecheha generato l eccezione mfc0 $s0, $epc

Eccezioni e interruzioni in MIPS 4 registri nel coprocessore 0: EPC: registro contenente l indirizzo dell istruzione che ha causato l interruzione BadVAddr: registro contente l indirizzo di memoria a cui e stato fatto riferimento (in caso di eccezione generata da un accesso in memoria) Status (registro di Stato) Cause (registro di Causa) Istruzioni sui 4 registri: lwc0, swc0, mfc0, mtc0

(8 bit) Registro Stato Maschera delle interruzioni: 5 livelli inter. Hw e 3 software Campi Kernel/utente abilitazione: k/u= 0, se il programma si trovava nel kernel al momento dell interrupt k/u = 1, modalita utente al momento dell interrupt abilitazione = 0, interrupt disabilitate abilitazione = 1, interrupt abilitate Al verificarsi di una interruzione, questi 6 bit vengono scalati a sinistra di 2 posizioni

RegistroCausa 4 bit di Codifica delle eccezioni Campo Interruzioni pendenti : Bit =1, se unadelleinterrupt Hwnon e stataancoraservita Campo Codifica delle eccezioni : Descrive la causa dell eccezione(secondo una codifica) Gestione eccezioni ed interruzioni: MIPS trasferisce il controllo al gestore delle interruzioni, che si trova in 80000080 esa Il gestorepuòessere ridefinito

Gestore interruzioni 1. Salvailcontenutodi$a0 e $a1 Visto che verranno usati per passare gli argomenti dell interrupt 2. Sposta il contenuto dei registri Causa e EPC nei registri della CPU 3. Controlla i valori all interno del registro Causa, per controllare il tipo di interruzione/eccezione e vedere se stampare un messaggio di errore oppure no Attenzione MIPS-1 vs MIPS32!!!

Esempio La chiamata di sistema 5, per la lettura di un intero da console, solleva un eccezione se inseriamo un float (e.g., 25.3 invece di 25): Error in GestioneEccezioni.asm line 23: Runtime exception at 0x00400014: invalid integer input (syscall 5) Go: execution terminated with errors Soluzioni (a) si interpreta qualsiasi input da console come fosse una stringa e, poi, converto la rappresentazione del valore nel valore vero e proprio (vedi lez. precedente) (b) si definisce un gestore delle eccezioni personalizzato per quella particolare eccezione

.data Soluzione (b): un semplice esempio.globl str.globl str1.globl str2.globl ecode str:.asciiz"inserisci un numero" str1:.asciiz"il numero letto è: " str2:.asciiz"il formato del numero non è corretto, bisogna inserire un numero intero\n" ecode:.word 0x20.text.globl main main: li $v0,4 la $a0,str syscall se si inserisce 25.3 viene sollevata un eccezione (interrupt SW) li $v0,5 syscall move$t0,$v0 # salvo in $t0 il numero inserito, se sono qui vuol dire che si è # inserito un intero li $v0,4 la $a0,str1 syscall li $v0,1 # per stampare l'intero letto, uso la syscall1 con il parametro in $a0 move $a0,$t0 syscall exit: li $v0,10 syscall GestioneEccezioni.asm

Soluzione (b): un semplice esempio - l indirizzo dell istruzione che ha causato l eccezione viene salvato in epc($14) - l indirizzo cause ($13) ci informa che si tratta di un eccezione dovuta ad un errore scaturito da una syscall 0x00000020 =...0 0000 0000 0010 0000 nessun interrupt HW si è verificato e il codice dell eccezione è 8(syscall) -l indirizzo status ($12) ci informa che tutti gli interrupt HW e SW sono abilitati, la gestione dell interrupt è abilitata e che il programma si trovava in modalità utente al momento dell interrupt 0x0000ff13 = 0 1111 1111 00010011 -il controllo salta all indirizzo (nell area kernel) a partire dal quale viene memorizzata la tabella di gestione degli interrupt HW e SW: 0x80000180 (è il caso di MIPS32)

Soluzione (b): un semplice esempio.ktext 0x80000180 mfc0 $k0,$13 mfc0 $k1,$14 andi $k0,$k0,0x003c lw $t0,ecode bne $k0,$t0,notsyscall li $v0,4 la $a0,str2 syscall #jr $k1 la $k1,main jr $k1 NotSyscall: # la tabella di gestione delle eccezioni/interrupt # inizia all'indirizzo 0x80000080 (si ricordi # l'importanza del Linker) # salvo il registro cause # salvo il registro EPC # eseguo cause = cause& 0x003c, # si noti che 003c ha i bit da # 2 a 5 ad 1 e tutti gli altri a 0. # Quindi questo and logico preleva # il codice dell'eccezione # se il codice dell'eccezione è diverso # da 0x8, non si tratta di un'eccezzione # sollevata da una chiamata di sistema # e quindi non la catturo. Il programma # terminerà con un messaggio d'errore # relativo alla causa che ha sollevato l'eccezione # si gestisce l'eccezione informando l'utente dell'errore # ritornerebbe all'istruzione che ha sollevato l'eccezione # in questo esempio non è utile ritornare al punto che ha # sollevato l'eccezione GestoreEccezione.s

Soluzione (b): un semplice esempio si può scrivere anche tutto (mainprogram+ gestore eccezioni) in un unico file.asm

Esercizio In quale di questi casi una operazione di caricamento dalla memoria con segno lbnon differisce da una senza segno lbu? [a] Quando il byte da caricare ha il bit meno significativo ad 1 [b] Quando il byte da caricare ha il bit piu significativo a 0 [c] Quando il byte da caricare ha il bit piu significativo ad 1 [d] Quando il byte da caricare ha il bit meno significativo a 0