Architetture e gli altri corsi di Informatica Fondamenti 1 e 2, …etc swap(int v[], int k) { Architetture dei Calcolatori intSistemi temp;Operativi temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; (Lettere A-I) Introduzione swap: } muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 Prof. Francesco Lo Presti Architetture dei Reti Logiche Calcolatori ALUout A B MDR IR PC Cosa e’ un calcolatore? Instr[31-26] PCWriteCond Control PCWrite PCSource IorD ALUOp MemRead ALUSrcB MemWrite ALUSrcA MemtoReg RegWrite PC[31-28] IRWriteRegDst Instr[25-0]Shift 282 left 2 0 1 0 0 Memory Read Addr 11zero 1 Read Register 0 Read Addr 2 Address Read Data 1Data 1 Addr 0 Write 1 Read (Instr. or Data) 4 1 ALU Write 0Data File 2 2 Data 3 Write Data Instr[15-0] 00 SignShift ALU Instr[5-0] Extend left 32 2 control Introduzione 2 Introduzione 4 Cosa e’ un calcolatore? “A device that computes, especially a programmable electronic machine that performs highhigh-speed mathematical or logical operations or that assembles, stores, correlates, or otherwise processes information” information” -- The American Heritage Dictionary of the English Language, 4th Edition, 2000 Introduzione 3 Calcolatore Elettronico Calcolatore Elettronico Macchina per l’l’esecuzione automatica di algoritmi Accetta in ingresso informazioni codificate in forma digitale 2. Le elabora attraverso un programma memorizzato 3. Produce informazioni in uscita 1. General Purpose: Purpose: puo’ puo’ svolgere qualsiasi elaborazione di cui sia noto un algoritmo risolutivo Programma e’ un algoritmo espresso in un linguaggio di programmazione Linguaggio macchina binario: binario: il linguaggio direttamente eseguibile dal calcolatore Istruzione Macchina Dati operazione logico/aritmetica su dati o di trasferimento dati codificata in binario Programma memorizzato in esecuzione Risultati Computer 9 Esempio 10000110010100000 istruisce il calcolatore di effettuare una somma Programma eseguibile: eseguibile: un algoritmo espresso in Introduzione linguaggio macchina 5 Introduzione 6 … e loro interconnessione Componenti principali di un calcolatore Processore Processore Unità di controllo Unità di elaborazione dati Dispositivi di input Memoria Tastiera Unità di controllo Mouse Disco Dispositivi di output Unità di elaborazione dati Monitor Stampante Processore o unità unità centrale di elaborazione (Central (Central Processing Unit – CPU) Memoria principale (Main (Main Memory – MM) Dispositivi di Input/Output (I/O) e loro interfacce Introduzione Bus 7 Dispositivi di I/O Dispositivi di I/O Interfaccia di I/O Interfaccia di I/O Memoria dati indirizzi controllo Bus di sistema: collega i componenti principali di un calcolatore calcolatore (linee dati, indirizzo, controllo) Introduzione 8 Processore - Central Processing Unit (CPU) Processore - Central Processing Unit (CPU) Provvede all’ all’esecuzione delle istruzioni macchina Ciclo di Esecuzione Processore e’ e’ composto da due sottosistemi: 1. Unità Unità di Controllo (Control) – Parte di Controllo 1. 2. 3. Prelievo Istruzione dalla Memoria Decodifica Istruzione Esecuzione Istruzione 2. Ogni Processore e’ caratterizzato da un proprio linguaggio macchina Controlla il sequenziamento e l’l’esecuzione delle istruzioni generando i segnali di controllo Unita’ Unita’ di Elaborazione (Datapath (Datapath)) – Parte Operativa Esegue le istruzioni ALU 9 Esegue operazioni logico aritmetiche sui dati Banco di Registri (Register (Register File) 9 Memoria interna CPU 9 Program Counter (PC) – Indirizzo Prossima Istruzione 9 Instruction Register (IR) – Codice Istruzione da eseguire Introduzione 9 Processore - Central Processor Unit (CPU) Introduzione Il Bus La struttura di interconnessione più più comune Bus Controllo Bus Indirizzi Bus Interno CPU ALU PC IR Bus Dati Unità di Elaborazione Registri 10 percorsi di comunicazione tra due o più più dispositivi mezzo di trasmissione condiviso Usualmente di tipo broadcast 9 I dati sono visibili da tutte le unità unità connesse Processore Unità di controllo Unità di Controllo Unità di elaborazione dati Dispositivi di I/O Dispositivi di I/O Interfaccia di I/O Interfaccia di I/O Memoria Segnali di Controllo Bus Introduzione 11 dati indirizzi controllo Introduzione 12 Il Bus La Memoria Composto da più più linee. Ogni linea: Tre tipi di linee Unità di controllo Dispositivi di I/O Dispositivi di I/O Interfaccia di I/O Interfaccia di I/O Memoria Secondaria: Secondaria: Dischi, Dischi, CD, etc.. Bus Veloce (~10(~10-100ns) Costosa Dimensioni contenute (fino a qualche Gigabyte) E’ organizzata come una gerarchia di memorie 9 Cache di primo e secondo livello… livello… Memoria Unità di elaborazione dati Volatile RAM – Random Access Memory 9 Memoria ad accesso casuale – Tempo di accesso costante 9 SRAM, DRAM, etc. Linee dati: Bus dati Linee indirizzo: Bus indirizzi Linee di controllo: Bus controllo Processore Contiene istruzioni/dati dei programmi in esecuzione 9 …in formato binario 9 è conduttore elettrico (traccia in rame) 9 Può trasmettere segnali che rappresentano 0 o 1, un bit Memoria Primaria: Primaria: Memoria Centrale dati indirizzi controllo Introduzione Memoria di lungo periodo - non volatile Tempo di accesso maggiori (~ms e piu’ piu’), economica 13 La Memoria Centrale Introduzione 14 Disco rigido Composta di celle, celle, o locazioni, locazioni, a loro volta composte da un numero fisso di bit Cella elementare di memoria può memorizzare solo due valori: valori: 0 o 1, cifra binaria (binary digit -> bit) Tipicamente cella=byte cella=byte (8 bit) byte M-1 byte M-2 Ogni locazione e’ associata ad un indirizzo nell’ nell’intervallo [0,1,… [0,1,…,M,M-1] M dimensione della memoria La memoria e’ vista come un vettore di byte Memoria Testina Motore per la rotazione dei dischi La CPU (ma non solo) accede alle informazioni in scrittura/lettura tramite indirizzo della cella Indirizzi a m bit: spazio di indirizzamento 2m 9 Non necessariamente M= 2m Operazioni: Operazioni: Lettura/Scrittura Per ragioni di efficienza le operazioni di lettura/scrittura vengono effettuate per gruppi di byte detti parola (word) 1 parola= parola= 1,2,4,8 byte Costituito da un insieme di piatti rotanti (da 1 a 15) Piatti rivestiti di una superficie magnetica Byte 1 Byte 0 Esiste una testina (bobina) per ogni faccia 8 bit Generalmente piatti a doppia faccia Le testine di facce diverse sono collegate tra di loro e si muovono muovono contemporaneamente Velocità Velocità di rotazione costante (ad es. 7200 RPM) Introduzione 15 Introduzione 16 Esecuzione di un Programma L’organizzazione dei dati sul disco 000000 000000 100011 100011 101011 101011 000000 Input del Codice/Dati P la tte rs T ra c k s 00000 00100 00010 00010 00010 00010 11111 00101 00010 01111 10000 10000 01111 00000 0001000010000000 0001000000100000 0000000000000000 0000000000000100 0000000000000000 0000000000000100 0000000000001000 P la tte r S e c to rs Processor Devices T ra c k Control Suddivisione della superficie del disco in anelli concentrici, detti detti tracce Registrazione seriale su tracce concentriche Datapath Output 10001000-5000 tracce Tracce adiacenti separate da spazi Ciascuna traccia è divisa in settori Input Memory Il settore è la più più piccola unità unità che può essere trasferita (scritta o letta) Centinaia di settori per traccia, generalmente di lunghezza fissa fissa (ad es., 512 byte) La stessa traccia su piatti diversi forma un cilindro Introduzione 17 Esecuzione di un Programma Control Datapath Il Processore preleva un’istruzione Memory 000000 000000 100011 100011 101011 101011 000000 00000 00100 00010 00010 00010 00010 11111 00101 00010 01111 10000 10000 01111 00000 18 Esecuzione di un Programma Codice/Dati salvati in memoria Processor Introduzione 0001000010000000 0001000000100000 0000000000000000 0000000000000100 0000000000000000 0000000000000100 0000000000001000 Control Input Datapath Output Introduzione Memory Processor Devices 19 000000 000000 100011 100011 101011 101011 000000 00000 00100 00010 00010 00010 00010 11111 00101 00010 01111 10000 10000 01111 00000 0001000010000000 0001000000100000 0000000000000000 0000000000000100 0000000000000000 0000000000000100 0000000000001000 Devices Input Output Introduzione 20 Esecuzione di un Programma L’unita’ di controllo del processore decodifica l’istruzione Esecuzione di un Programma L’unita’ di esecuzione del processore esegue l’istruzione (eventualmente prelevando operandi/salvando il risultato) Che devo fare? Processor Processor Devices Control Control 000000 00100 00010 0001000000100000 Memory 000000 00100 00010 0001000000100000 Input Datapath Introduzione contents Reg #4 ADD contents Reg #2 results put in Reg #2 21 Esecuzione di un Programma Memory Processor Datapath Memory Input Datapath Output Control Devices 000000 000000 100011 100011 101011 101011 000000 00000 00100 00010 00010 00010 00010 11111 00101 00010 01111 10000 10000 01111 00000 0001000010000000 0001000000100000 0000000000000000 0000000000000100 0000000000000000 0000000000000100 0000000000001000 Output Introduzione 22 Esecuzione di un Programma A completamento del programma, i risultati vengono salvati/inviati su un dispositivo di output Devices Input Processor Output Memory Control Datapath Devices Input 00000100010100000000000000000000 00000000010011110000000000000100 00000011111000000000000000001000 Output Fetch Exec Decode Introduzione 23 Introduzione 24 Esecuzione di un Programma Algoritmi e Programmi Un programma e’ un algoritmo espresso in un linguaggio di programmazione Il linguaggio direttamente eseguibile dal calcolatore e’ il suo linguaggio macchina binario Un algoritmo espresso nel linguaggio macchina binario prende il nome di programma eseguibile A completamento del programma, i risultati vengono salvati/inviati su un dispositivo di output Processor Control Devices Memory Datapath Input 00000000101000010000000000011000 Output 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 00000100010100000000000000000000 00000000010011110000000000000100 00000011111000000000000000001000 Introduzione 10101100011000100000000000000100 00000011111000000000000000001000 25 Dalle istruzioni in binario all’assembler Introduzione 26 Un programma in assembler swap: Programmazione in linguaggio macchina binario Per semplificare e velocizzare e’ e’ preferibile impiegare una rappesentazione simbolica delle istruzioni Un esempio di traduzione Da un programma in Linguaggio assembler: assembler: Linguaggio composto da istruzioni assembler MIPS ad un programma in linguaggio macchina binario simboliche che corrispondono a istruzioni binarie simbolico add A,B al posto di 1000110010100000 Programma assemblatore (assembler): (assembler): Prende in ingresso un programma scritto in assembler Genera il corrispondente programma in linguaggio macchina muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 00000000101000010000000000011000 00000000100011100001100000100001 assemblatore 10001100011000100000000000000000 10001100111100100000000000000100 00000000101000010000000000011000 10101100111100100000000000000000 00000000100000100001000000100001 10101100011000100000000000000100 10001100011000100000000000000000 00000011111000000000000000001000 10001100111100100000000000000100 10101100010100000000000000000000 10101100011000100000000000000100 Introduzione 27 00000011111000000000000000001000 Introduzione 28 Da un linguaggio di programmazione ad alto livello all’assembler Il processo di traduzione completo swap(int v[], int k) Un linguaggio di programmazione ad alto livello { Offre astrazioni notevoli int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; 9 Variabili, tipizzazione dei dati 9 Procedure, funzioni 9 Programmazione ad oggetti 9 Gestione di eccezioni } Programma in linguaggio ad alto livello Aumenta la produttività produttività del programmatore Permette al programma di essere indipendente dal computer sul quale viene sviluppato 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 29 Introduzione 00000011111000000000000000001000 30 Il Compilatore Il programma che effettua la traduzione prende il nome di compilatore Il programma risultante puo’ puo’ essere eseguito direttamente sul calcolatore 31 Compilatore C/Assembler Il programma risultante PL0 equivalente a PL1 ma scritto nel linguaggio L0 9 Se L0 e’ e’ il linguaggio macchina binario LM, PL0 puo’ puo’ essere direttamente eseguito 9 Altrimenti puo’ puo’ essere ulteriormente compilato, compilato, oppure interpretato L’interprete legge il codice del programma da eseguire e ne simula l’esecuzione, esecuzione, generando i relativi risultati L’interprete e’, in sostanza, sostanza, un simulatore di un calcolatore virtuale il cui linguaggio macchina e’ il linguaggio interpretato Introduzione Il Compilatore sostituisce a ogni istruzione del programma PL1, scritto nel linguaggio L1, una sequenza di istruzioni scritte nel linguaggio L0 di piu’ piu’ basso livello ProgrammaC ProgrammaLM L’interpretazione e’ un processo di esecuzione indiretta di un programma ad opera di un programma detto interprete assemblatore 00000000100011100001100000100001 La compilazione e’ un processo di traduzione che, che, a partire da un programma scritto in linguaggio simbolico, simbolico, ne genera una versione equivalente in assembler/linguaggio assembler/linguaggio macchina muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 00000000101000010000000000011000 Compilazione ed Interpretazione Programma in linguaggio assembler (MIPS) traduce da un linguaggio di programmazione ad alto livello al linguaggio assembler Talvolta traduce direttamente da linguaggio di programmazione ad alto livello a linguaggio macchina Introduzione compilatore Programma in linguaggio macchina binario (MIPS) Programma compilatore swap: Computer Dati ProgrammaLM Risultati Computer Introduzione 32 L’interprete Interpretazione o compilazione? Per eseguire PL1, scritto in L1, l’interprete, interprete, scritto in L0, analizza – passo passo - ogni istruzione da eseguire di PL1 e ne realizza l’effetto, effetto, eseguendo una sequenza di istruzioni del linguaggio di L0 ad essa equivalenti Ogni linguaggio puo’ puo’ essere sia interpretato che compilato L’interpretazione e’ piu’ piu’ lenta dell’ dell’esecuzione diretta Programma C Dati Migliore diagnostica Maggiore portabilita’ portabilita’ 9 L’interprete, interprete, se scritto in un linguaggio diffuso, diffuso, puo’ puo’ essere reso piu’ piu’ facilmente disponibile su un nuovo calcolatore Risultati Interprete C Il C, C++ sono normalmente compilati Talvolta, Talvolta, compilazione ed interpretazione sono combinate Computer Per combinare i vantaggi Si compila in un linguaggio intermedio che poi e’ e’ interpretato 9 Approccio utilizzato per l’esecuzione dei programmi in Java Introduzione 33 Diversi Livelli di Astrazione swap(int v[], int k) Diversi Livelli di Astrazione compilatore Programma in linguaggio assembler (MIPS) } Programma in linguaggio ad alto livello Programma in linguaggio macchina binario (MIPS) temp = v[k]; … Programma in linguaggio Assembler (e.g., MIPS) lw lw sw sw $15, $16, $16, $15, 0($2) 4($2) 0($2) 4($2) Assemblatore Programma in linguaggio macchina (MIPS) Software MicroInterpretazione Hardware Relazioni di Trasferimento del Datapath (RTL) 00000000100011100001100000100001 10001100011000100000000000000000 Realizzazione Hardware 10001100111100100000000000000100 10101100111100100000000000000000 Macchina 10101100011000100000000000000100 Hardware Introduzione v[k+1] = temp; Compilatore assemblatore 00000011111000000000000000001000 v[k] = v[k+1]; Programma in un linguaggio di alto livello (e.g., C) muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 00000000101000010000000000011000 ? 34 … swap: { int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; Introduzione 35 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 IR ← Imem[PC]; PC ← PC + 4 ALUOP[0:3] ⇐InstReg[9:11] & MASK Processore Unit à di contr ollo di Unità elaborazi one dati Bus dati indirizzi controllo Memoria Disposi tivi di I/O Disposi tivi di I/O Interf accia di I/O Interf accia di I/O Introduzione 36 Calcolatore come insieme gerarchico di livelli o Macchine Virtuali {MV0, MV1,… MV1,…,MVn} MVn} Moduli che operano al livello i 9 e loro struttura d’interazione Linguaggio Li per la programmazione a livello i 9 Elemento Caratterizzante Livelli tipici di un calcolatore MVi rappresenta un diverso livello di astrazione del calcolatore Macchina Virtuale a livello i Risorse Ri visibili al livello i (Li,Ri) Li,Ri) l’architettura del livello i Processore M2 Unità di controllo M1 Unità di elaborazione dati Bus Dispositivi di I/O Livello dei linguaggi orientati alle applicazioni M3 Dispositivi di I/O Livello del Linguaggio assembler Memoria Struttura di Interfaccia interazione di I/O Livello del Sistema Operativo M4 Software Interfaccia di I/O Livello del Linguaggio Macchina – Livello ISA Hardware M5 dati indirizzi controllo M6 Emulazione Architettura a Livelli Macchina Firmware - Microarchitettura Macchina Hardware Astrazione o Virtualizzazione Architettura a Livelli 9 Aspetti visibili a chi programma al livello i Introduzione 37 Architettura a Livelli Linguaggi ai vari livelli e loro relazioni 5. Livello dei Linguaggi orientati alle appl. appl. (C,C++, Java) È 3. 1. Livello 0: Macchina Hardware Compilazione o Interpretazione (Java) Assemblaggio (Assembler) Livello del Sistema Operativo (Linguaggio Macchina+Chiamate di Sistema) Sistema) Interpretazione parziale Macchina Firmware (Linguaggio (Linguaggio di microprogrammazione) microprogrammazione) È Realizzazione hardware 0. Macchina Hardware (Algebra booleana) booleana) Introduzione 39 Livello della logica digitale Moduli: Moduli: Reti combinatorie e sequenziali L0: Algebra booleana binaria R0: Porte logiche Livello 1: Macchina Firmware – Microarchitettura Software Livello del linguaggio macchina – ISA (Linguaggio (Linguaggio Macchina) Macchina) Hardware È Esecuzione diretta o microinterpretazione È 2. Livello del Linguaggio Assembler (Assembler) È 38 Architettura a Livelli 4. Introduzione Interpreta ed esegue le istruzioni del linguaggio macchina E’ direttamente realizzato con i componenti della macchina hardware Moduli - Unita’ Unita’ di Elaborazione: Elaborazione: CPU, Memoria, Memoria, Unita’ Unita’ di I/O L1: Linguaggio di Microprogrammazione R1: Reti combinatorie e sequenziali Introduzione 40 Architettura a Livelli Livello 2: Livello del Linguaggio Macchina (ISA) Architettura a Livelli Macchina nuda come appare al programmatore di sistema. sistema. Le istruzioni del suo linguaggio sono interpretate ed eseguite dai microprogrammi del processore Moduli: Moduli: Programmi L2: Linguaggio macchina R2: Registri, Registri, spazio di memoria 9 Forma simbolica dei linguaggi L2, L3 Gestisce le risorse del sistema nei confronti dei livelli superiori L3: Linguaggio macchina+Chiamate di sistema R3: R2+spazi di memoria, memoria, dispositivi di I/O, processori, processori,… Interpretazione parziale (per le chiamate di sistema) sistema) Introduzione Livello 5: Livello dei Linguaggi orientati alle appl. appl. 5. 41 4. 3. 2. 1. Compilazione o Interpretazione (Java) ISA Livello del Linguaggio Assembler (Assembler) Assemblaggio (Assembler) Livello del Sistema Operativo (Linguaggio Macchina+Chiamate di Sistema) Sistema) Interpretazione parziale - Cosa il calcolatore e’ capace di fare Quali istruzioni? istruzioni? MO Software Livello del linguaggio macchina – ISA (Linguaggio (Linguaggio Macchina) Macchina) Hardware È Esecuzione diretta o microinterpretazione È 42 Instruction Set Architecture (ISA) + Machine Organization (MO) Livello dei Linguaggi orientati alle appl. appl. (C,C++, Java) È Introduzione Architettura dei Calcolatori Linguaggi ai vari livelli e loro relazioni È Livello usato per sviluppare applicazioni Moduli: Moduli: Processi L5: C, C++, Java, etc.. E’ implementato tramite compilazione e/o interpretazione Architettura a Livelli E’ implementato tramite “assemblaggio” assemblaggio” 9 Processore (Multiprogrammazione), Multiprogrammazione), Memoria Principale (Memoria Virtuale), Virtuale), Memoria Secondaria (File System) Livello piu’ piu’ basso utilizzabile dal programmatore di applicazioni Moduli: Moduli: Processi L4: linguaggio assembler Livello 3: Livello del Sistema Operativo Livello 4: Livello del Linguaggio Assembler - Come la macchina implementa ISA Loro Implementazione Fisica Macchina Firmware (Linguaggio (Linguaggio di microprogrammazione) microprogrammazione) È Realizzazione hardware 0. Macchina Hardware (Algebra booleana?) booleana?) Introduzione 43 Introduzione 44 Instruction Set Architecture (ISA) Instruction Set Architecture (ISA) “... the attributes of a [computing] system as seen by the programmer, i.e. the conceptual structure and functional behavior, as distinct from the organization of the data flows and controls, the logic design, and the physical implementation.” implementation.” — Amdahl, Blaaw, Blaaw, and Brooks, 1964 ISAISA-Interfaccia tra Hardware e Software Deve: Deve: Fornire funzionalita’ funzionalita’ ai livelli piu’ piu’ alti Permettere un efficiente implementazione ai livelli piu’ piu’ bassi Insieme delle istruzioni Numero di bit che rappresentano tipi di dati software Tecniche di indirizzamento della memoria, … Instruction Set Architecture hardware Introduzione 45 Organizzazione del Calcolatore 46 Evoluzione delle ISA Caratteristiche delle principali unita’ unita’ funzionali Introduzione Dai primi calcolatori (anni ’50) Semplici Pochi tipi di istruzioni e modi di indirizzamento Registri, Registri, ALU, etc. Strutture di Interconnessione Unita’ Unita’ di Elaborazione e Unita’ Unita’ di Controllo Organizzazione del sottosistema di Memoria Descrizione tramite Register Transfer Level (RTL) …ai CISC (Complex Instruction Set Computer) (anni’ (anni’70) ISA e processori via via piu’ piu’ complessi Riduzione gap semantico tra linguaggi di alto livello e linguaggi macchina Difficili da ottimizzare …ai RISC (Reduced Instruction ISA e processori semplici Facilita l’ottimizzazione Introduzione 47 Set Computer) 9 Software: Compilatori Ottimizzanti 9 Hardware: Processori veloci (impiego efficiente delle tecniche di pipelining) Introduzione 48 Le Caratteristiche dei RISC MIPS R3000 ISA Le architetture RISC sono caratterizzate da poche proprieta’ proprieta’ chiave Numero elevato di registri generali Pochi formati di istruzione Load/Store Computational R0 - R31 9 Registri come operandi 9 Generalmente della stessa lunghezza Registri Categorie di Istruzioni: Istruzioni: Numero limitato di codici operativi e di modi di indirizzamento Tutte le operazioni logico/aritmetiche hanno come operandi i registri Le sole operazioni che coinvolgono la memoria sono quelle di load e store Jump and Branch Floating Point Gestione della Memoria Speciali LO 3 formati istruzione: tutti a 32 bits OP rs rt OP rs rt OP Introduzione PC HI 9 coprocessor 49 rd sa immediate jump target funct Formato R Formato I Formato J Introduzione 50