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

Documenti analoghi
Architettura degli Elaboratori

Architettura degli Elaboratori B Introduzione al corso

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

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

Istruzioni di trasferimento dati

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

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

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

Progetto CPU (ciclo singolo) Salvatore Orlando

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

Il linguaggio macchina

Richiami sull architettura del processore MIPS a 32 bit

L unità di controllo di CPU a singolo ciclo

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

Istruzioni assembler Istruzione N Registri

Richiami sull architettura del processore MIPS a 32 bit

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

Università degli Studi di Cassino

ISA (Instruction Set Architecture) della CPU MIPS

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

Calcolatori Elettronici

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

Architettura degli Elaboratori Modulo 2

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

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

Elementi base per la realizzazione dell unità di calcolo

Linguaggio Assembly e linguaggio macchina

Laboratorio di Architettura degli Elaboratori

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

L'architettura del processore MIPS

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Architettura di tipo registro-registro (load/store)

Lecture 2: Prime Istruzioni

Il processore: unità di controllo

La macchina programmata Instruction Set Architecture (1)

Implementazione semplificata

Architettura MIPS (RISC) Architetture dei Calcolatori (Lettere. Principi di Progettazione ISA MIPS MIPS R3000 ISA. Il Set di Istruzioni MIPS

Architettura degli Elaboratori

Lezione 15 Il Set di Istruzioni (1)

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

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

Lezione 2 Assembly MIPS (2)

Elementi di informatica

MIPS Instruction Set 1

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

CPU pipeline hazards

Calcolatori Elettronici

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

CPU a ciclo multiplo

Il linguaggio assembly

L insieme delle istruzioni (6)

Esercitazione di Calcolatori Elettronici Ing. Battista Biggio. Corso di Laurea in Ingegneria Elettronica. Capitolo 5 Linguaggio Assembly

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

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

Le costanti Le modalità di indirizzamento L assembly del MIPS

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

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

Linguaggio Assembler MIPS

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME

Architettura hardware

Architettura di una CPU

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

Circuiti combinatori ALU

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Transcript:

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Salvatore Orlando Arch. Elab. - S. Orlando 1 Livelli di astrazione Scendendo di livello, diventiamo più concreti e scopriamo più informazione Il livello astratto omette dettagli, ma ci permette di trattare la complessità Quali sono i dettagli che via via scopriamo scendendo di livello? Arch. Elab. - S. Orlando 2

Linguaggio della Macchina Istruzioni Macchina Più primitivo dei Linguaggi ad Alto Livello es., controllo del flusso poco sofisticato (non ci sono for, while, if) Linguaggio molto restrittivo es., istruzioni aritmetiche del MIPS sono solo a 3 operandi Studieremo l ISA del MIPS simile ad altre architetture (RISC) sviluppate a partire dagli anni 80 usato da NEC, Nintendo, Silicon Graphics, Sony Scopi di progetto dell ISA: massimizzare le prestazioni - minimizzare i costi, anche riducendo i tempi di progetto Arch. Elab. - S. Orlando 3 Istruzioni Aritmetiche del MIPS Tutte le istruzioni hanno 3 operandi L ordine degli operandi è fisso l operando destinazione in prima posizione Example: C code: A = B + C Linguaggio Assembler MIPS code: add $8, $9, $10 (operandi associati con variabili dal compilatore) Arch. Elab. - S. Orlando 4

Istruzioni Aritmetiche MIPS Principio di Progetto: semplicità favorisce la regolarità Ma la regolarità può complicare le cose. C code: A = B + C + D; E = F - A; MIPS code: add $8, $4, $5 add $8, $8, $6 sub $9, $7, $8 Operandi devono essere registri: solo 32 registri da 4B (1W) $0, $1, $2, $3,. Principio di progetto: più piccolo è anche più veloce Arch. Elab. - S. Orlando 5 Registri e Memoria Le istruzioni aritmetiche operano su registri solo 32 registri ogni registro 1 word (4B) Compilatore associa variabili con registri Control Datapath Processor Memory Input Output I/O Cosa succede con programmi con tanti dati (tante variabili, o array)? Usiamo la memoria, che contiene anche i programmi Memoria MIPS indirizzata al Byte 0 1 2 3 4 5 6... Arch. Elab. - S. Orlando 6

Instruzioni di load / store sw (Store Word): lw (Load Word): Esempio: C code: reg word in memoria word in memoria reg A[8] = h + A[8]; MIPS code: lw $15, 32($4) add $15, $5, $15 sw $15, 32($4) Indirizzo della word in memoria: $4 + 32 Nota che sw ha la destinazione come ultimo operando Ricorda: gli operandi aritmetici sono registri, non celle di memoria! Arch. Elab. - S. Orlando 7 Riassumendo MIPS load/store word, con indirizzamento al byte aritmetica solo su registri Instruzioni Significato add $4, $5, $6 $4 = $5 + $6 sub $4, $5, $6 $4 = $5 $6 lw $4, 100($5) $4 = Memory[$5+100] sw $4, 100($5) Memory[$5+100] = $4 Arch. Elab. - S. Orlando 8

Linguaggio Macchina Anche le istruzioni sono rappresentati in memoria con 1 word (4B) Esempio: add $8, $17, $18 Formato istruzione (R-type): 000000 10001 10010 01000 00000 100000 op rs rt rd shamt funct Arch. Elab. - S. Orlando 9 Formato istruzioni lw e sw necessario introdurre un nuovo tipo di formato I-type (Immediate) diverso dall R-type (Register) usato per le istruzioni aritmetico-logiche Esempio: lw $18, 32($9) Linguaggio Macchina 35 18 9 32 op rs rt 16 bit number Compromesso di progetto anche lw/sw sono lunghe 4B, con displacement costante (operando immediato di 16 b) inserito direttamente nell istruzione Arch. Elab. - S. Orlando 10

Istruzioni sono stringhe di bit Programmi, costituiti da sequenze di istruzioni, sono memorizzati in memoria La CPU legge le istruzioni dalla memoria come i dati CPU Concetto di Stored Program Memory memoria per dati, programmi, compilatori, editor, etc. Ciclo Fetch & Execute CPU legge (fetch) istruzione corrente, e la pone in un registro speciale interno CPU usa i bit dell istruzione per "controllare" le azioni susseguenti, e su questa base esegue l istruzione CPU determina prossima istruzione e ripete ciclo Arch. Elab. - S. Orlando 11 Istruzioni di controllo Istruzioni per prendere decisioni sul futuro alterano il controllo di flusso (sequenziale) cambiano quindi la prossima" istruzione da eseguire Istruzioni MIPS di salto condizionato: beq $4, $5, Label bne $6, $5, Label # branch if equal # branch if not equal Esempio: if (i==j) h = i + j; bne $4, $5, Label add $19, $4, $5 Label:... Arch. Elab. - S. Orlando 12

Istruzioni di controllo Salto non condizionato j label Esempio: if (i!=j) beq $4, $5, Lab1 h=i+j; add $3, $4, $5 else j Lab2 h=i-j; Lab1: sub $3, $4, $5 Lab2:... Arch. Elab. - S. Orlando 13 Riassumendo Istruzione Significato add $4,$5,$6 $4 = $5 + $6 sub $4,$5,$6 $4 = $5 $6 lw $4,100($5) $4 = Memory[$5+100] sw $4,100($5) Memory[$5+100] = $4 bne $4,$5,Label Prossima istr. letta all indirizzo Label, ma solo se $s4 $s5 beq $4,$5,Label Prossima istr. letta all indirizzo Label, ma solo se $s4 = $s5 j Label Prossima istr. letta all indirizzo Label Formati: R I J op rs rt rd shamt funct op rs rt 16 bit address op 26 bit address Arch. Elab. - S. Orlando 14

Abbiamo visto: beq, bne Istruzioni di controllo ma come facciamo per esprimere Branch-if-less-than? Nel MIPS c è un istruzione aritmetica slt: Set-if-Less-Than slt può essere usata in congiunzione con beq e bne Istruzione slt $10, $4, $5 Significato if $4 < $5 then $10 = 1 else $10 = 0 Arch. Elab. - S. Orlando 15 Costanti Costanti piccole sono molto frequenti (50% degli operandi) es.: A = A + 5; B = B + 1; C = C - 18; costanti piccole trovano posto all interno delle istruzioni come operandi immediati Istruzioni MIPS aritmetico/logiche con operandi immediati: addi $29, $29, 4 slti $8, $18, 10 andi $29, $29, 6 ori $29, $29, 4 Formato I ancora istruzioni regolari rappresentabili su 32 bit Arch. Elab. - S. Orlando 16