Estratto del documento

Livello di architettura dell'insieme di istruzioni

Scrivere programmi direttamente in linguaggio macchina è:

  • Ostico
  • Spesso inutile

In quasi tutti i calcolatori vengono scritti programmi ad alto livello (di astrazione) che vengono compilati da opportuni programmi. In linea teorica sarebbe possibile progettare macchine in grado di eseguire direttamente programmi scritti ad esempio in C, ma:

  • Richiederebbe la realizzazione di CPU estremamente complesse;
  • Un calcolatore sarebbe in grado di eseguire solo programmi scritti in quel linguaggio.

Per questo motivo si ricorre a un livello intermedio che costituisca un'interfaccia tra il software (a più alto livello) e hardware (a più basso livello). Tale interfaccia definisce l'architettura stessa del sistema e prende il nome di ISA (Instruction Set Architecture).

Posizionamento

Proprietà del livello ISA

In maniera informale, si definisce livello ISA l'aspetto che la macchina assume al programmatore che programma in linguaggio macchina: a questo livello è nascosta la microarchitettura del processore (pipeline, scalabilità, ...) ma sono invece visibili la memoria, i registri, i tipi di dato ecc.

ISA e Assembly

Spesso l'ISA e il linguaggio Assembly vengono confusi: essi non sono la stessa cosa, anche se esiste una corrispondenza quasi 1:1 tra i due (basso gap semantico). L'Assembly è costituito da codici mnemonici che corrispondono alle istruzioni ISA, così da facilitare la vita dei programmatori. L'Assembler è il programma che traduce tali codici mnemonici in istruzioni ISA: queste ultime costituiscono il codice oggetto eseguibile.

Esempi di gap semantici

Progettazione

Idealmente, all'atto della costruzione di una nuova macchina, i progettisti dialogano con sviluppatori di compilatori e ingegneri elettronici. Bisogna però tener conto delle necessità di retrocompatibilità con i precedenti software.

Compatibilità del livello ISA

Un ISA è progettato appositamente per una famiglia di processori (es. Intel). Questo significa che le istruzioni sono compatibili per tutta la famiglia di processori e i codici portabili. Più in generale, un ISA deve:

  • Essere retrocompatibile con i vecchi modelli della famiglia (vecchi programmi eseguiti senza modifiche)
  • Mettere a disposizione caratteristiche innovative sfruttabili dal nuovo software

Perché conoscere ISA?

Ci sono vari motivi per cui un programmatore dovrebbe conoscere il livello ISA:

  • È importante per capire a fondo il funzionamento di un sistema di elaborazione
  • Un programma scritto in assembly è dalle 2 alle 3 volte più efficiente del corrispondente scritto in C
  • L'ottimizzazione di piccole porzioni di codice può migliorare drasticamente le performance
  • L'analisi del codice prodotto da un compilatore permette di verificare la correttezza della compilazione
  • L'assembly è l'unico linguaggio di programmazione per sistemi industriali embedded basati su micro-controllori
  • È indispensabile per sviluppare sistemi real-time con componenti critiche

Modelli di memoria

Tutti i calcolatori suddividono la memoria in celle indirizzate in modo consecutivo. In generale, i byte vengono raggruppati in parole di 4 byte (32 bit) o 8 byte (64 bit).

Allineamento

Molte architetture richiedono che le parole siano allineate lungo le loro estremità:

  • Una parola di 4 byte inizia agli indirizzi 0, 4, 8, ...
  • Una parola di 8 byte inizia agli indirizzi 0, 8, 16, ...

Per motivi di compatibilità i programmi possono indirizzare in memoria ogni singolo byte indipendentemente dall'allineamento: il fatto che questo sia possibile non significa che sia una soluzione efficiente.

Ordinamento dei byte

Quando una parola contiene più byte si pone il problema di enumerare i byte al suo interno:

  • Big endian: memorizzazione che inizia dal byte più significativo per finire col meno significativo (Motorola)
  • Little endian: memorizzazione che inizia dal byte meno significativo per finire col più significativo
Anteprima
Vedrai una selezione di 4 pagine su 11
Livello ISA Pag. 1 Livello ISA Pag. 2
Anteprima di 4 pagg. su 11.
Scarica il documento per vederlo tutto.
Livello ISA Pag. 6
Anteprima di 4 pagg. su 11.
Scarica il documento per vederlo tutto.
Livello ISA Pag. 11
1 su 11
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher gian_fri99 di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori e sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bari o del prof Pirlo Giuseppe.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community