Calcolatori elettronici – DLXI
I seguenti appunti seguono il modello del corso di Calcolatori Elettronici T della laurea triennale in Ingegneria Informatica dell’Università di Bologna. La struttura è volutamente a forma di domande poiché ciò permette una migliore focalizzazione sui contenuti e dà una maggiore idea su come gli argomenti potrebbero essere chiesti all’esame.
DLX sequenziale
In primo luogo, in questo documento viene trattato il DLX sequenziale e in particolare i seguenti principali argomenti:
- Tipologia delle istruzioni del DLX
- Modalità di indirizzamento del DLX
- I registri nel DLX
- L’istruzione Jump and Link: un caso di studio
- Vantaggi del DLX
- Approfondimento sui registri
- Tempi nel trasferimento dei dati
- Trasferimento tra registri
- Le fasi del FETCH
- Ottimizzare il FETCH
- I Warning dell’istruzione Branch
- I 5 passi delle istruzioni DLX
Il tutto è trattato sotto forma di 20 domande circa.
DLX pipelined
In secondo luogo viene trattato il DLX Pipelined e in particolare i seguenti principali argomenti:
- Descrizione generale del DLX Pipelined
- Il concetto di pipelining
- Latenza e throughput
- I problemi del DLX Pipelined
- Adder o Contatore nella fase di FETCH?
- Risorse critiche (Alee strutturali)
- I salti nel DLX Pipelined: Conseguenze
- Aumentare gli stadi. Sì o no?
- Il register file: Dettagli
- Le Alee del DLX
- Il Forwarding e la rete che se ne occupa
- Casi critici nel forwarding
- Delayed Load
- Split-Cycle
- Gestione delle alee di controllo
- La tabella Branch Target Buffer
Il tutto è trattato sotto forma di 30 domande circa.
Calcolatori elettronici – DLX sequenziale
Tipologie di istruzioni del DLX
1) Quali tipologie di istruzioni ha il DLX?
Il DLX ha 3 tipologie di istruzioni:
- I (Immediato): L’operando immediato coinvolto è di 16 bit.
- R (Registro): Vi è un campo di 11 bit usato per estendere il codice operativo e con il quale possono essere specificate altre cose.
- J (Jump): L’offset è a 26 bit e rappresenta lo scostamento rispetto al PC. Tali 26 bit sono con segno e dunque permettono salti di 32K avanti o indietro.
La lunghezza delle istruzioni è fissa e vale 32 bit. Tali istruzioni sono allineate così da permettere in un unico ciclo di bus la lettura di una intera istruzione (bus a 32 bit). Indipendentemente dal tipo di istruzione il formato è fisso. Abbiamo campi di dimensioni fisse nell’ambito di istruzioni diverse.
1bis) Perché non posso avere un immediato a 32 bit?
Perché l’istruzione sarebbe tutto immediato! Non avrei neanche lo spazio per il codice operativo!
Modalità di indirizzamento del DLX
2) Qual è l’unica modalità di indirizzamento prevista dal DLX?
L’unica modalità di indirizzamento prevista dal DLX è registro + offset, ovvero la possibilità di accedere all’indirizzo che ottieni sommando un registro con un immediato. Per avere accessi più articolati si possono effettuare operazioni il cui risultato verrà inserito nel registro considerato per l’indirizzamento. In ultima istanza però si deve utilizzare la notazione registro + offset.
I registri nel DLX
3) Quanti registri ha il DLX? Come vengono definiti?
Nel DLX vi sono 32 registri da 32 bit di uso generale: R0 … R31 con R0 = 0 (ovvero 32 zeri). Tali registri sono completamente ortogonali, ovvero un’operazione può essere fatta tra registri qualsiasi e il risultato può essere messo anch’esso in un registro qualsiasi. Vi è completa libertà, NO vincoli! (La Intel invece ha vincoli!)
L’istruzione Jump and Link
4) Come funziona un’istruzione JL (Jump and Link)? E nel caso di funzioni innestate?
Le istruzioni JL corrispondono a dei salti con ritorno. In particolare, l’indirizzo di ritorno viene salvato in R31. Questo comporta un problema nel caso di funzioni innestate in quanto R31 verrebbe sovrascritto e dunque il ritorno sarebbe compromesso. In tal caso si dovrà fare in modo di avere una sorta di stack, prelevare R31 e salvarlo in memoria al fine di non perderlo. Ricordiamo che nel DLX non ci sono istruzioni specifiche per la gestione dello stack, ma deve essere implementato via SW.
Vantaggi del DLX
5) Come vengono settate le condizioni nel DLX?
Nel DLX non c’è un registro di FLAG settato dalle istruzioni ALU. Le condizioni vengono settate esplicitamente nei registri con il gruppo di istruzioni SET condition IN REGISTER (SCN).
6) Quale istruzione tipicamente segue una SET CONDITION?
Un branch, ovvero un salto condizionato!
7) Quali sono i vantaggi che comporta un’architettura semplice come quella del DLX?
La semplicità dell’architettura del DLX comporta un utilizzo inferiore del silicio, il quale può dunque essere utilizzato per:
- Un numero maggiore di registri (32)
- Cache
Incremento così la velocità in quanto limito gli accessi in memoria (collo di bottiglia per la velocità).
Struttura della CPU nel DLX
8) Come può essere strutturata una CPU?
La struttura di una CPU, come tutte le reti logiche sincrone che elaborano dati, può essere strutturata in due blocchi:
- Datapath: Contiene tutte le unità di elaborazione ed i registri necessari per l’esecuzione delle istruzioni della CPU. Ogni istruzione appartenente all’Instruction Set è eseguita mediante una successione di operazioni elementari, dette micro-operazioni. Una micro-operazione è un’operazione eseguita all’interno del Datapath in un ciclo di clock (Es. trasferimento di un dato da un registro ad un altro registro, elaborazione ALU).
- Unità di Controllo: È una RSS che in ogni ciclo di clock invia un ben preciso insieme di segnali di controllo al DATAPATH al fine di specificare l’esecuzione di una determinata micro-operazione. L’unità di controllo legge un’istruzione dalla memoria, la decodifica e imposta una sequenza di micro-operazioni per realizzare quella particolare istruzione. Le istruzioni vengono eseguite dal Datapath, il quale può servirsi della memoria per reperire dati o per scrivere risultati. Importante: La CPU per funzionare, ha bisogno della memoria esterna su cui risiedono il programma e i dati.
8bis) Quando il Datapath deve accedere in memoria?
Il Datapath deve accedere in memoria SOLO se c’è un’istruzione di LOAD o di STORE!
Registri nel DLX (esecuzione sequenziale)
9) Quali registri sono presenti nella struttura del DLX (esecuzione sequenziale)? Quali sono noti al programmatore?
I registri sono:
- Register File: Contiene i 32 registri a 32 bit. Osserviamo che dal Register File escono 2 porte di uscita in quanto io vorrei poter leggere due registri alla volta. Esistono infatti certe istruzioni che prevedono 2 registri sorgente. Sarà l’unità di controllo, che ha letto e decodificato l’istruzione, a dire al register file quali registri sono coinvolti nelle operazioni.
- Registri A, B, C: Registri di buffer temporanei usati per accelerare le operazioni. Es. Se io dovessi scrivere nel register file dovrei anche dire a che indirizzo voglio scrivere. Tale indirizzo dovrà però anche essere decodificato al fine di individuare un registro tra quelli disponibili e ciò richiederà del tempo. Per accelerare potrei scrivere in C senza dare l’indirizzo e nel CK successivo potrebbe avvenire la decodifica dell’indirizzo e la scrittura nel register file. Impiego due cicli di clock, ma posso lavorare ad una frequenza maggiore.
- Registro PC: Contiene il PC a 32 bit.
- Registro TEMP: Registro di deposito temporaneo dei risultati.
- Registro IAR (Interrupt Address Register): Registro che contiene l’indirizzo di ritorno se si verifica un interrupt.
- Registro MAR (Memory Address Register): Registro che contiene l’indirizzo del dato da scrivere o leggere in memoria. In altre parole, se io voglio leggere o scrivere qualcosa in memoria devo specificare l’indirizzo attraverso il MAR il quale è collegato direttamente con la memoria.
- Registro MDR (Memory Data Register): Registro di transito temporaneo dei dati da e per la memoria.
Gli unici registri noti al programmatore sono quelli del Register File. Gli altri non sono visibili, ma sono di utilità interna.
Funzioni della ALU
10) Tra le funzioni della ALU vi sono anche funzioni che hanno uscita gli operatori stessi oppure 0 o 1. A cosa servono? I flag di uscita vengono memorizzati?
Avere come uscita gli operatori stessi è utile per far transitare valori tra registri. Avere come uscita 0 o 1 è utile perché potrebbe servirmi per una set condition. I flag di uscita non vengono memorizzati, ma possono essere testati durante le operazioni dell’unità di controllo.
Tempi nel trasferimento dei dati
11) Nel trasferimento dei dati sul Datapath che tempi bisogna tenere in considerazione?
Al fine di valutare la massima frequenza a cui è possibile far funzionare il Datapath è importante conoscere le seguenti temporizzazioni:
- (max) Ritardo massimo tra il fronte positivo del clock e l’istante in cui i segnali di controllo generati dall’unità di controllo sono validi
- (max) Ritardo massimo tra l’arrivo del segnale OE e l’istante in cui i dati del registro sono disponibili sul bus
- (max) Ritardo massimo introdotto dalla ALU
- (min) Tempo di set-up minimo dei registri (requisito minimo per il corretto campionamento da parte dei registri)
La massima frequenza di funzionamento del Datapath si calcola come segue:
> (ritardo massimo segnale controllo) + (ritardo massimo segnale OE) + (ritardo massimo ALU) + (tempo di set-up minimo)
Trasferimento tra registri
12) Come avviene il trasferimento tra registri? (consigliato tenere sotto immagine del DLX)
Premesse:
- I bus S1 ed S2 sono multiplexati (tri-state) con parallelismo 32 bit.
- I registri:
- Campionano sul fronte positivo del clock.
- Hanno due porte di uscita O1 e O2 per i due bus (o per i registri buffer A e B) e dispongono di tre ingressi di controllo:
- Un ingresso di Write Enable (WE*)
- Un ingresso di Output Enable per ogni porta di uscita, ovvero uno per ogni bus. In questo caso poiché i bus sono due (S1 e S2), ogni registro avrà OE1* e OE2*
Ipotizziamo ora di voler scrivere il contenuto di un registro in un altro registro. Si avrà che l’unità di controllo invierà il segnale di controllo OE2 per abilitare l’uscita O2 del registro e dunque connetterla con il bus S2. I dati contenuti transitano dunque sul bus S2 e, attraverso la ALU, la quale non dovrà fare altro che lasciare invariato ciò che l’attraversa, arriveranno in ingresso al registro di destinazione. In questo ciclo di CK il segnale WE del registro sarà abilitato e dunque avverrà la scrittura desiderata.
-
Domande di Teoria di Calcolatori Elettronici
-
Calcolatori Elettronici T
-
Calcolatori elettronici I - Minimizzazione - Alee
-
Riassunto esame Calcolatori Elettronici, Prof. Colombo Carlo, libro consigliato Calcolatori elettronici - Architett…