Livello ISA - Formato di istruzione PDF
Document Details
Uploaded by Deleted User
Tags
Summary
This document provides an overview of Instruction Set Architecture (ISA). It details the levels of a processing system, highlighting the relationship between software (like Java programs) and hardware components. It explains the concept of Instruction Set Architecture (ISA) and how its design elements influence the overall performance and function of a computer system. Key concepts covered include instruction formats, lengths, and addressing modes.
Full Transcript
1 Livello dell’Instruction Set Architecture (ISA) Livelli di un sistema di elaborazione 2 Simbolico Numerico [0,1] Livello di microarchitettura Livello ISA 3 Programma in Java Programma in Assembly o in C Interpre...
1 Livello dell’Instruction Set Architecture (ISA) Livelli di un sistema di elaborazione 2 Simbolico Numerico [0,1] Livello di microarchitettura Livello ISA 3 Programma in Java Programma in Assembly o in C Interpretazione Compilazione SW HW Codice in linguaggio macchina eseguibile Livello ISA 4 Un programma in linguaggio macchina si ottiene tipicamente come risultato di un processo di compilazione ¤ può essere ottenuto anche programmando direttamente in linguaggio macchina (raro) L’ Instruction Set Architecture (ISA) comprende gli aspetti di un elaboratore che interessano a chi progetta un compilatore (o a chi programma in linguaggio macchina) ¤ è il livello di linguaggio macchina Livello ISA 5 Le caratteristiche computazionali di un elaboratore dipendono in gran parte dal livello ISA Diversi processori sono compatibili tra loro se si basano sullo stesso livello ISA ¤ Famiglia di processori: diverse implementazioni dello stesso livello ISA ¤ Se un programma può essere eseguito da un processore della famiglia, allora può essere eseguito anche da quelli più potenti senza necessità di essere modificato Livello ISA 6 Per produrre programmi in linguaggio macchina occorre conoscere: ¤ L’organizzazione della memoria e dei registri ¤ I tipi di dati che è possibile trattare ¤ Il set di istruzioni macchina disponibili Tipi di istruzioni Formato di istruzione Modalità di indirizzamento degli operandi delle istruzioni L’insieme di queste informazioni definisce il livello ISA Set di istruzioni 7 Definire il set di istruzioni macchina (instruction set) equivale a definire ¤I tipi di istruzioni ¤ Il formato di ciascuna istruzione ¤ Le modalità di indirizzamento degli operandi Istruzione in linguaggio macchina 8 In una istruzione in linguaggio macchina sono specificate essenzialmente due informazioni: ¤ Operazione ¤ Riferimenti agli eventuali operandi operazione Riferimenti a operandi campo campo Indirizzi Codice Operativo Formati di istruzione 10 La variabilità dei formati d’istruzione dipende ¤ dalla natura delle operazioni (che possono essere a zero, uno, due o più operandi) ¤ ma anche da scelte architetturali Es. una operazione di somma potrebbe essere realizzata attraverso una istruzione: a tre operandi ADD A,B,C CßA+B a due operandi ADD A,B AßA+B a un operando ADD A ACßAC+A Lunghezza di istruzione 11 In alcune architetture tutti i formati di istruzione hanno la stessa lunghezza (formato d’istruzione a lunghezza fissa) Nella maggior parte delle architetture attuali i vari formati hanno lunghezze diverse (formato d’istruzione a lunghezza variabile) ¤ Lunghezza d’istruzione: multiplo o sottomultiplo di una word 1 word 1 word istruzione istruzione istruzione 1 word 1 word istruzione Formati di istruzione a lunghezza fissa 9 OPCODE Istruzione con zero operandi OPCODE operando Istruzione con un operando OPCODE operando operando Istruzione con due operandi OPCODE op op op Istruzione con tre operandi Lunghezza di istruzione 12 La lunghezza di istruzione è un parametro di progettazione importante Istruzioni corte Istruzioni lunghe ¤ Minore occupazione di ¤ Maggior occupazione di memoria memoria ¤ Minor numero di ¤ Maggior numero di trasferimenti dalla trasferimenti dalla memoria memoria fetch dell’istruzione più fetch dell’istruzione meno veloce veloce ¤ Maggior tempo di ¤ Minore tempo di decodifica decodifica Formati d’istruzione della cpu 8086 13 Nell’architettura 8086 si usa un formato d’istruzione a lunghezza variabile ¤ leistruzioni occupano un numero variabile di byte, dipendentemente dal numero e dalla dimensione degli operandi espliciti che utilizzano Ogni istruzione può avere zero, uno o due riferimenti a operandi, e ciascun riferimento può occupare multipli o sottomultipli di un byte Formati d’istruzione della cpu 8086 14 Esempio di istruzione a un operando ¤ Istruzione di incremento/decremento INC AL DEC AL Esempio di istruzione a due operandi Istruzione di somma/sottrazione ADD AX,BX SUB AX,BX Esempio di istruzione a zero operandi Istruzione di alt HLT Criteri progettuali per il formato d’istruzione 15 Altri aspetti da tener presente nella progettazione del set di istruzioni sono ¤ la lunghezza del campo codice operativo ¤ la lunghezza del campo indirizzi Con un formato d’istruzione a lunghezza fissa, occorre stabilire un compromesso tra lunghezza del codice operativo e lunghezza del campo indirizzi 2k operazioni diverse k n 2n indirizzi k+1 n-1 2k+1 operazioni diverse 2n-1 indirizzi 2k-1 operazioni diverse k-1 n+1 2n+1 indirizzi Espansione del codice operativo 16 16 bit 0000 xxxx yyyy zzzz 0001 xxxx yyyy zzzz Opcode Indirizzo1 Indirizzo2 Indirizzo3 0010 xxxx yyyy zzzz... 1110 xxxx yyyy zzzz 1111 xxxx yyyy zzzz Set di 16 istruzioni a tre indirizzi (operandi solo nei registri) Espansione del codice operativo 17 1111 0000 yyyy zzzz 1111 0001 yyyy zzzz 0000 xxxx yyyy zzzz 1111 0010 yyyy zzzz 0001 xxxx yyyy zzzz. 0010 xxxx yyyy zzzz.... 1111 1111 yyyy zzzz 1110 xxxx yyyy zzzz 15 istruzioni a tre operandi 16 istruzioni a due operandi Set di 31 istruzioni Espansione del codice operativo 18 0000 xxxx yyyy zzzz 1111 0000 yyyy zzzz 1111 1111 0000 zzzz 0001 xxxx yyyy zzzz 1111 0001 yyyy zzzz 1111 1111 0001 zzzz 0010 xxxx yyyy zzzz 1111 0010 yyyy zzzz 1111 1111 0010 zzzz...... 1110 xxxx yyyy zzzz 1111 1110 yyyy zzzz. 1111 1111 1111 zzzz 15 istruzioni a tre operandi 15 istruzioni a due operandi 16 istruzioni a un operando Set di 46 istruzioni Espansione del codice operativo 1111 1111 0000 zzzz 19 1111 1111 0001 zzzz 0000 xxxx yyyy zzzz 1111 0000 yyyy zzzz 1111 1111 0010 zzzz 0001 xxxx yyyy zzzz 1111 0001 yyyy zzzz. 0010 xxxx yyyy zzzz 1111 0010 yyyy zzzz... 1111 1111 1110 zzzz.. 1110 xxxx yyyy zzzz 1111 1110 yyyy zzzz 15 istruzioni a un indirizzo 15 istruzioni a tre operandi 1111 1111 1111 0000 15 istruzioni a due operandi 1111 1111 1111 0001 1111 1111 1111 0010... 1111 1111 1111 1111 Set di 61 istruzioni 16 istruzioni a zero operandi Esercizio 20 Considerando un formato d’istruzione a lunghezza fissa di 16 bit, espandere il codice operativo in modo da avere ¤ 15 istruzioni a 3 operandi ¤ 14 istruzioni a 2 operandi ¤ 31 istruzioni a 1 operando ¤ 16 istruzioni a 0 operandi 1111 1110 0000 zzzz 0 Soluzione 1111 1110 0001 zzzz 1 1111 1110 0010 zzzz 2 21.... 1111 1110 1111 zzzz 15 0000 xxxx yyyy zzzz 0 1111 1111 0000 zzzz 0 0001 xxxx yyyy zzzz 1 1111 1111 0001 zzzz 1 0010 xxxx yyyy zzzz 2........ 1111 1111 1110 zzzz 14 1110 xxxx yyyy zzzz 14 15 istruzioni a tre operandi 31 istruzioni a un operando 1111 0000 yyyy zzzz 0 1111 1111 1111 0000 0 1111 0001 yyyy zzzz 1 1111 1111 1111 0001 1 1111 0010 yyyy zzzz 2 1111 1111 1111 0010 2........ 1111 1101 yyyy zzzz 13.. 1111 1111 1111 1111 15 14 istruzioni a due operandi 16 istruzioni a zero operandi