Anteprima
Vedrai una selezione di 10 pagine su 44
Architettura degli elaboratori Pag. 1 Architettura degli elaboratori Pag. 2
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 6
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 11
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 16
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 21
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 26
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 31
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 36
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 41
1 su 44
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Il linguaggio dei calcolatori

Qualsiasi calcolatore deve saper eseguire le operazioni aritmetiche. In ogni linea di codice vi sono dei simboli "//", rappresentano i commenti rivolti a chi legge il programma e sono ignorate dal programmatore. In questo linguaggio ogni linea può contenere al massimo un'istruzione; un'altra differenza è che i commenti terminano sempre con la fine della linea.

Esistono 4 principi fondamentali per il progetto dell'hardware, per ora vedremo solo il primo:

Principio di progetto numero 1: semplicità e regolarità sono strettamente correlate.

Questo principio rispecchia la filosofia dell'hardware semplice. La traduzione del linguaggio C ad assembler MIPS è svolta dal compilatore. Gli operandi delle istruzioni aritmetiche devono essere scelti fra un numero limitato di locazioni particolari, chiamate registri. I registri sono i mattoni che costituiscono il calcolatore, dal momento che rappresentano sia

leprimitive usate nella progettazione dell'hardware che gli elementi visibili alprogrammatore. La dimensione dei registri nell'architettura MIPS è di 32 bit.Il MIPS ha un numero di 32 registri limitato. La sua ragione può esseretrovata nel secondo dei principi per il progetto dell'hardware:Principio del progetto numero 2: minori sono le dimensioni,• maggiore è la velocità.Nel linguaggio assembler MIPS le istruzioni aritmetiche richiedono che glioperandi siano memorizzate nei registri. Il linguaggio quindi devecomprendere istruzioni che trasferiscano i dati fra memoria e registri, taliistruzioni sono detti istruzioni di trasferimento dati. Per accedere ad unaparola in memoria l'istruttore deve fornire l'indirizzo corrispondente; lamemoria è semplicemente un grande vettore unidimensionale. L'istruzione ditrasferimento che sposta un dato dalla memoria ad un registro si chiamatradizionalmente load (carica), esso

consiste in una costante e di un registro usato per accedere alla memoria. L'indirizzo della memoria è formato dalla somma della costante e del contenuto del secondo registro. Il nome convenzionale dell'istruzione load in linguaggio MIPS è lw, che significa load word (carica una parola).

Nel MIPS le parole iniziano sempre ad indirizzi multipli di 4; questo requisito si chiama vincolo di allineamento ed è comune a molte altre architetture.

I registri del MIPS hanno sia un tempo di accesso minore che un migliore throughput rispetto alla memoria. Per ottenere le migliori prestazioni, i compilatori MIPS devono utilizzare i registri in modo efficiente.

I numeri sono rappresentati nell'hardware del calcolatore tramite una serie di segnali di livello alto o basso, la rappresentazione più naturale è quella in base 2. I numeri in base 10 sono chiamati numeri decimali, i numeri in base 2 sono chiamati binari. Anche le istruzioni sono memorizzate nel

calcolatore come una serie di segnali elettrici e possono quindi essere rappresentate da numeri, affiancando questi numeri si ottiene l'istruzione vera e propria.

A ciascuno dei campi delle istruzioni MIPS viene associato un nome, il significato di tale nome dato a ciascun campo è il seguente:

  • Op, operazione base dell'istruzione, tradizionalmente chiamata codice operativo o opcode;
  • Rs, primo operando sorgente (registro);
  • Rt, secondo operando sorgente (registro);
  • Rd, registro destinazione, che contiene il risultato dell'operazione;
  • Shamt, valore dello scalamento (shift amount);
  • Funct, funzione. Seleziona una variante specifica dell'operazione base definita nel campo op ed è talvolta chiamato codice funzione (function code).

Esiste un conflitto fra il desiderio di mantenere la stessa lunghezza per tutte le istruzioni e quello di avere un unico formato; ciò conduce al terzo dei principi dell'hardware:

Principio di...

progetto numero 3: un buon progetto richiede compromesso. Il compromesso scelto dai progettisti del MIPS è quello di mantenere uguale la lunghezza di tutte le istruzioni, predisponendo formati diversi per tipi di istruzioni diversi. Oggi i calcolatori sono costruiti secondo due principi chiave: 1. Le istruzioni sono rappresentate come numeri. 2. I programmi sono in memoria e possono essere letti e scritti, proprio come numeri. Questi principi portano al concetto di programma memorizzato (stored program), un'invenzione fondamentale per l'informatica. Ciò che contraddistingue un calcolatore da una semplice calcolatrice è la capacità di prendere decisioni: in base ai dati di ingresso ed ai valori creati durante le elaborazioni, possono essere eseguite istruzioni diverse. Nei linguaggi di programmazione un'operazione di decisione è comunemente rappresentata con il costrutto if, a volte seguito dal costrutto go to con un'etichetta. Il linguaggioprogrammazione ad alto livello fornisce un costrutto if-else per prendere decisioni. Questo costrutto permette di eseguire un blocco di codice se una condizione è vera e un altro blocco di codice se la condizione è falsa. Ad esempio, in linguaggio C, il costrutto if-else ha la seguente sintassi: ```c if (condizione) { // blocco di codice da eseguire se la condizione è vera } else { // blocco di codice da eseguire se la condizione è falsa } ``` In assembler MIPS, invece, non esiste un costrutto if-else. Tuttavia, è possibile utilizzare due istruzioni per prendere decisioni: `beq` (branch if equal) e `bne` (branch if not equal). Queste istruzioni permettono di saltare a una determinata etichetta se una condizione è vera o falsa. Ad esempio, se si vuole eseguire un blocco di codice solo se due registri `$t0` e `$t1` sono uguali, si può utilizzare l'istruzione `beq` nel seguente modo: ```assembly beq $t0, $t1, etichetta ``` Se i registri `$t0` e `$t1` sono uguali, il programma salterà all'etichetta specificata. Altrimenti, il programma continuerà l'esecuzione normalmente. Per eseguire un blocco di codice solo se i registri `$t0` e `$t1` sono diversi, si può utilizzare l'istruzione `bne` nel seguente modo: ```assembly bne $t0, $t1, etichetta ``` Se i registri `$t0` e `$t1` sono diversi, il programma salterà all'etichetta specificata. Altrimenti, il programma continuerà l'esecuzione normalmente. Queste istruzioni permettono di prendere decisioni in base al risultato di un confronto tra registri. Tuttavia, non forniscono un costrutto if-else completo come quello presente nei linguaggi di programmazione ad alto livello.

La programmazione contiene un costrutto case o switch, che consente al programmatore di scegliere fra più alternative in base ad un unico valore. Il costrutto switch può essere realizzato mediante una sequenza di condizioni, trasformando lo switch in una catena di costrutti if-then-else.

Una procedura è uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire e sia per permettere il riutilizzo del codice. Le procedure consentono al programmatore di concentrarsi su una parte del problema.

Il linguaggio assembler MIPS include un'istruzione apposita per le procedure, si chiama jump-and-link (salta e crea un collegamento). La parte link del nome dell'istruzione si riferisce al fatto che viene creato un indirizzo, o collegamento (link) che permette alla procedura di tornare all'indirizzo corretto; questo link è detto indirizzo di ritorno, ed è necessario perché la stessa procedura può

essere richiamata in più parti del programma. Il programma chiamante mette i valori dei parametri da passare alla procedura. Le procedure che non chiamano altre procedure sono chiamate foglie; Le procedure possono richiamare altre procedure. In più le procedure invocano persino dei "cloni" di se stesse. Perciò occorre far attenzione all'utilizzo dei registri delle procedure, ancor di più se le procedure chiamano altre procedure.

Il segmento dello stack contiene i registri salvati da una procedura e le variabili locali prende il nome di finestra di attivazione.

I calcolatori furono inventati per macinare numeri, ma non appena divennero commercialmente disponibili furono utilizzati anche per l'elaborazione dei testi.

Ci sono tre modi per rappresentare una stringa:

  1. Il primo elemento ne definisce la lunghezza;
  2. Una variabile di appoggio contiene la lunghezza della stringa;
  3. L'ultimo elemento della stringa è marcato da un

carattere particolare di fine stringa. I progettisti dell'architettura MIPS hanno previsto altri due modi per accedere ai dati:

Il primo è pensato per rendere veloce l'accesso a costanti di piccole dimensioni;

Il secondo per rendere i salti più efficienti.

Il modo di indirizzamento immediato consente di illustrare l'ultimo dei principi fondamentali per il progetto dell'hardware:

Principio di progetto numero 4: rendere veloce l'evento più frequente.

I modi di indirizzamento del MIPS sono i seguenti:

  • Register addressing (indirizzamento tramite registro), in cui l'operando è un registro;
  • Base o displacement addressing (indirizzamento tramite base o tramite spiazzamento), in cui l'operando è una locazione di memoria;
  • Immediate addressing (indirizzamento immediato), in cui l'operando è una costante specificata nell'istruzione;
  • PC-relative addressing (indirizzamento relativo al

program• counter), in cui l'indirizzo è la somma del contenuto del programcounter e della costante contenuta nell'istruzione;

Pseudodirect addressing (indirizzamento pseudo-diretto).

Il compilatore trasforma il programma C in un programma in linguaggioassembler, cioè in una forma simbolica di ciò che il calcolatore è in grado dicapire.

L'assemblatore può trattare versioni modificate delle istruzioni in linguaggiomacchina come se fossero istruzioni vere e proprie. Queste istruzioni,chiamate pseudoistruzioni, non devono essere implementate in hardware, mala loro presenza nel linguaggio assembler semplifica le fasi di traduzione edi programmazione. Le pseudoistruzioni consentono all'assembler MIPS diavere un set di istruzioni più ricco di quello implementato via hardware.

Oltre ai numeri espressi in base due e in base dieci, l'assemblatore MIPS usai numeri in base 16, chiamata esadecimale. Le cifre esadecimali sono

formattare il testo fornito utilizzando tag html. ATTENZIONE: non modificare il testo in altro modo, NON aggiungere commenti, NON utilizzare tag h1; Il testo formattato con i tag html è il seguente:

i numeri da 0 a 9 e le lettere da "a" a "f" per le restanti 6 cifre. L'assemblatore converte un programma assembler in un file oggetto, che è una combinazione di istruzioni in linguaggio macchina, di dati e di informazioni necessarie a collocare le istruzioni in memoria nella posizione opportuna.

Vi è un nuovo programma di sistema chiamato link editor (programma che gestisce i collegamenti) o semplicemente linker, che prende tutti i programmi in codice macchina che sono stati assemblati in modo indipendente.

Il linker esegue tre passi:

  1. Mette in memoria in modo simbolico il codice ed i moduli dei dati;
  2. Determina gli indirizzi dei dati e delle etichette che compaiono nelle istruzioni;
  3. Mette insieme i riferimenti interni ed esterni.

Il motivo dell'esistenza del linker è dovuto al fatto che è molto veloce a

Dettagli
A.A. 2020-2021
44 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher francy_piscitelli di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori 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 Salerno o del prof Anselmo Marcella.