• Non ci sono risultati.

Architettura degli Elaboratori Architettura degli Elaboratori

N/A
N/A
Protected

Academic year: 2022

Condividi "Architettura degli Elaboratori Architettura degli Elaboratori"

Copied!
6
0
0

Testo completo

(1)

Matteo Baldoni Architetture degli Elaboratori 1

Corso di Corso di

Architettura degli Elaboratori Architettura degli Elaboratori

Il livelo ISA:

ISA IJVM, tipi di dati e formato delle istruzioni

Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino C.so Svizzera, 185 – I-10149 Torino [email protected] http://www.di.unito.it/ ~baldoni

Matteo Baldoni Architetture degli Elaboratori 2

Progettare l'ISA Progettare l'ISA

Ponte tra l'hardware e il software:

 Forte correlazione tra hardware e livello ISA

 Forte correlazione tra livello hardware, ISA e i ideatori di compilatori Garanzia di compatibilita`

con modelli precedenti (vedi esempio Intel) per questioni di marketing (i programmi precedenti devono continuare a funzionare!) ISA per sistemi embedded

Matteo Baldoni Architetture degli Elaboratori

Progettare l'ISA Progettare l'ISA

ISA e tecnologia:

 facilmente realizzabile con la tecnologia corrente

 facilmente realizzabile con la tecnologia futura(!) Facilmente utilizzabile dai compilatori (traduttori automatici) e che

permettano la generazione di codice efficiente

Pubblicazione delle specifiche ISA

Modalita` kernel o utente

Matteo Baldoni Architetture degli Elaboratori

Interpretazione Interpretazione

 Interprete (JavaScript, Scheme, Prolog):Interazione.

Più facile modificare un programma durante l'esecuzione

Sparc/Solaris

Apple Codice Sorgente

Interprete Sparc/Solaris

Interprete MacOS

Interprete Intel/GNU-Linux

Intel/GNU-Linux Intel/Windows

(2)

Matteo Baldoni Architetture degli Elaboratori 5

Traduzione o compilazione Traduzione o compilazione

 Compilazione (Pascal, C, Ada, C++):Efficienza di esecuzione. Il codice generato dal

compilatore può essere ottimizzato, perché la compilazione è fatta una sola volta

Compilatore Sparc/Solaris

Compilatore MacOS

Compilatore Intel/GNU-Linux

binario binario

binario

Intel/GNU-Linux Intel/Wind

Apple Sparc/Solaris Codice Sorgente

Matteo Baldoni Architetture degli Elaboratori 6

Memoria Memoria

 Importanza dell'allineamento

 Indirizzamento per area dati e programmi

 Hardware supplementare per estrazione delle informazioni non allineate

Registri Registri

 Non tutti i registri visibili al livello della microarchitettura sono visibili a livello ISA (es. TOS e MAR del Mic-1 non sono visibili a livello ISA)

 Registri ad applicazione particolare (SP, PC, ecc) e registri ad applicazione generale (OPC, ecc): i programmatori e i compilatori devono attenersi alle eventuali convenzioni di utilizzo

 Registri visibili a livello kernel: es. il registro dei flag o Program Status Word (PSW) contenente i condition codes (N, Z, V, C, A, P, livello di priorita` CPU, livello di abilitazione degli interrupt e altri ancora)

ISA IA-32 Intel (cenni) ISA IA-32 Intel (cenni)

 E` l'architettura ISA a 32 bit dell'80386, estesa poi con il set di istruzioni MMX (per la multimedialita`)

 Modalita` reale (come un 8088), modalita` 8086 virtuale (ambiente isolato per l'esecuzione dei programmi 8088) e modalita` protetta di esecuzione con quattro livelli di protezione (tra cui kernel e utente)

 Memoria: 16384 segmenti da 232 – 1 indirizzi (solitamente e` utilizzato un solo segmento)

 Solitamente i SO: spazio lineare di 232 byte

 Formato little endian

(3)

Matteo Baldoni Architetture degli Elaboratori 9

ISA IA-32 Intel (cenni) ISA IA-32 Intel (cenni)

 I registri sono organizzati in modo da garantire la possibilita` di emulare 8088, 80286 (e in parte 8080!)

Matteo Baldoni Architetture degli Elaboratori 10

ISA UltraSparc (cenni) ISA UltraSparc (cenni)

 Architettura RISC a 64 bit (in origine a 32 bit)

 Memoria: 264 indirizzi, solitamente spazio lineare di 264 byte

 Formato big endian (ma possibile anche little endian)

 Due gruppi di registri: 32 registri (64 bit) generici e 32 registri floatin-point

 Meccanismo del register window

 Architettura load/store: le unicheoperazioni con accesso diretto alla memoria sono LOAD e STORE, le istruzioni per spostare i dati fra i registri e la memoria, tutti gli operandi (inclusa la destinazione) per le istruzioni aritmetiche e logiche devono provenire da registri

Matteo Baldoni Architetture degli Elaboratori

ISA JVM (cenni) ISA JVM (cenni)

 Memoria organizzata in quattro regioni: frame delle variabili locali, lo stack degli operandi, l'area del metodo e la constant pool come visto sull'esempio IJVM

 Heap per la memorizzazione di oggetti dinamici o di grosse dimensioni (int a[] = new int[4096];)

 Runtime storage allocator e garbage collector

 Macchina a stack pura: richiede una grande quantita` di accessi alla memoria ma ISA e` estremamente semplice ed elegante

 Implementazioni hardware relativamente semplici

(ricordiamoci che Java era nato per programmare prodotti di tipo consumer!)

Matteo Baldoni Architetture degli Elaboratori

Tipi di dati Tipi di dati

 Supporto hardware per un particolare tipo di dati:

presenza di istruzioni che si aspettano i dati in un dato formato

 Numeri interi complemento a due, i numeri floating point secondo lo standard IEE 754, i caratteri secondo la codifica ASCII sono un tipo di dati e la maggior parte dei livelli ISA per processori di uso corrente offre istruzioni per il loro trattamento

 Simulazione software per i tipi di dati non supportati

(4)

Matteo Baldoni Architetture degli Elaboratori 13

Tipi di dati numerici Tipi di dati numerici

 Tipicamente 8, 16, 32 e 64 bit

 Numeri interi unsigned e signed

 Numeri floating point: 32, 64, 80, 128 bit

 Standard IEEE 754 e istruzioni ISA dedicate alla gestione di di tale formato standard

 Binary code decimal format introdotto nel COBOL (hardware dedicato, esempio IBM System 360): 4 bit per ogni cifra decimale

Matteo Baldoni Architetture degli Elaboratori 14

Tipi di dati non numerici Tipi di dati non numerici

 Codifica ASCII (7 bit ed in seguito 8 bit)

 Codifica UNICODE (16 bit)

 Istruzione speciali del livello ISA per la gestione di stringhe (la maggior parte delle applicazioni degli eleboratori è quella dell'elaborazione di informazione non numerica!)

 Valori Booleani: vero (1) e falso (0)

 Bit map

 Puntatori: indirizzo di memoria

Panoramica supporto tipi di dati Panoramica supporto tipi di dati

 Pentium II

 (Un)Signed integer: 8, 16 e 32 bit

 Binary coded decimal integer: 8 bit

 Floating point: 32 e 64 bit

 Manipolazione di caratteri ASCII di 8 bit

 UltraSPARC II

 (Un)Signed integer: 8, 16, 32 e 64 bit

 Floating point: 32, 64 e 128 bit

 JVM:

 Signed integer: 8, 16, 32 e 64 bit

 FLoating point: 32 e 64 bit

 Manipolazione di caratteri UNICODE di 16 bit

Formato delle istruzioni Formato delle istruzioni

 Formati comuni delle istruzioni:

 (a) zero indirizzi

 (b) un indirizzo

 (c) due indirizzi

 (d) tre indirizzi

 Lunghezza omogenea per facilitare la decodifica

(5)

Matteo Baldoni Architetture degli Elaboratori 17

Formato delle istruzioni Formato delle istruzioni

 Criteri per la progettazione del formato delle istruzioni:

 l'insieme delle istruzioni deve poter essere esteso facilmente nel futuro per includere nuove istruzioni

 tecnologia con cui è realizzato il calcolatore (ma tenendo conto delle future possibili evoluzioni)

 Istruzioni corte vs istruzioni lunghe:

 spazio occupato dai programmi

 larghezza di banda della memoria (CPU molto più veloci della capacità di fornire istruzioni da parte della memoria)

 avvio di più istruzioni possibili all'esecuzione in un ciclo di clock

 La lunghezza è una scelta fondamentale!

Matteo Baldoni Architetture degli Elaboratori 18

Formato delle istruzioni Formato delle istruzioni

 Codici dedicati agli opcode: meglio prevederne di più di quelli necessari ma questo implica occupare spazio

 Spazio riservato agli indirizzi nelle istruzioni: maggiore risoluzione della memoria vs istruzioni più lunghe

 Bilanciamento della dimensione degli indirizzi con la risoluzione della memoria

 Attualmente la maggior parte delle moderne

implementazioni adottano una risoluzione di 8 bit (ma leggono la memoria in blocchi di 1, 2, 4 o più parole alla volta con necessità di hardware di scomposizione del blocco di bit letti per l'accesso ai singoli byte)

Matteo Baldoni Architetture degli Elaboratori

Espansione degli opcode Espansione degli opcode

 Bilanciare il numero di istruzioni: numero di istruzioni vs risoluzione della memoria e numero di operandi

 Opcode più corti per le istruzioni più frequenti o quelle che necessitano di più operatori

 Problemi con l'allineamento delle istruzioni

Matteo Baldoni Architetture degli Elaboratori

Pentium II Pentium II

 Risente della compatibilità all'indietro

 Tecnica del prefisso (gli opcode erano finiti!): ecape code

 Lunga e complessa decodifica

 Molte istruzioni poco utilizzate

 Allineamento in memoria difficile

(6)

Matteo Baldoni Architetture degli Elaboratori 21

UltraSPARC II UltraSPARC II

 Istruzioni di 32 bit allineate in memoria

 Successivamente si sono aggiunti nuovi formati (incomincia a risentire della compatibilità all'indietro?)

 Due bit iniziali per aiutare a determinare il tipo di istruzione

Matteo Baldoni Architetture degli Elaboratori 22

JVM JVM

 Si predilige il codice compatto

 Machina a stack pura

 Opcode di un byte

 ILOAD speciali per offset di 0, 1, 2, 3

 Tecnica del prefisso (esempio WIDE)

JVM JVM

34 byte!

42 byte!

2 byte vs 4 byte

Riferimenti

Documenti correlati

Per evitare confusione (ADA è un nome, ma può essere anche un numero esadecimale; oppure: 139 potrebbe esprimere un numero in base 10 oppure 16) si usano delle

ai programmatori umani viene più naturale scrivere programmi sequenziali: una sola sequenza di istruzioni da eseguire in fila (sequenzialità = il contrario di parallelismo)

Segnali di controllo per i registri EPC, Cause, BadVAddr, e Status Possibilità di caricare PC con l’indirizzo della routine di gestione delle eccezioni. Possibilità di decrementare

sono sempre fra parole di 32 bit, con risultato a 32 bits (non ci sono op che scrivono solo su una parte di un registro) (ci sono op che scrivono due registri insieme: HI e LO)

•  NOTA: ciascuna somma vale 0 solo per quella data combinazione degli addendi (dei valori delle variabili in input)... Dalle forme canoniche ai circuiti

  VLSI (Very Large Scale Integrated): > 100.000 porte!. Con tecnologia SSI, gli IC contenevano poche porte, direttamente collegate ai

•  Set deve essere ridiretto verso la 1-bit ALU che fornirà in output il bit meno significativo del risultato!. Il blocco che controlla lʼoverflow lo fa sulla

  ogni passo da eseguire in un ciclo di clock (ciclo più corto rispetto alla CPU a ciclo singolo)!..   importante il bilanciamento della quantità di