DLX - DLX

DLX
progettista John L. Hennessy e David A. Patterson
bit 32 bit
Introdotto 1994
Versione 1.0
Design RISC
Tipo Registrati–Registrati e carica–negozio
Codifica Fisso
ramificazione Registro delle condizioni
endianità Bi-endian
Estensioni Nessuno, ma MDMX e MIPS-3D potrebbero essere utilizzati
Aprire
Registri
Scopo generale 31 (R0=0)
Virgola mobile 32 (DP accoppiato per 32 bit)

Il DLX (pronunciato "Deluxe") è un RISC processore architettura progettata da John L. Hennessy e David A. Patterson , i principali progettisti della Stanford MIPS e il Berkeley RISC progetta (rispettivamente), i due esempi di riferimento del design RISC (nome dopo il disegno di Berkeley).

Il DLX è essenzialmente una CPU MIPS Stanford semplificata ripulita (e modernizzata). Il DLX ha una semplice architettura di caricamento/memorizzazione a 32 bit , in qualche modo diversa dalla moderna CPU con architettura MIPS . Poiché il DLX è stato concepito principalmente per scopi didattici, il design DLX è ampiamente utilizzato nei corsi di architettura dei computer a livello universitario .

Esistono due implementazioni hardware " softcore " conosciute : ASPIDA e VAMP. Il progetto ASPIDA ha prodotto un nucleo con molte caratteristiche interessanti: è open source, supporta Wishbone , ha un design asincrono, supporta più ISA ed è ASIC provato. VAMP è una variante DLX che è stata verificata matematicamente come parte del progetto Verisoft. È stato specificato con PVS , implementato in Verilog e funziona su un FPGA Xilinx . Su di esso è stato costruito uno stack completo dal compilatore al kernel fino al TCP/IP .

Storia

Nell'architettura MIPS di Stanford uno dei metodi utilizzati per ottenere prestazioni era forzare il completamento di tutte le istruzioni in un ciclo di clock. Questo ha costretto i compilatori a inserire " no-ops " nei casi in cui l'istruzione avrebbe sicuramente impiegato più di un ciclo di clock. Pertanto, le attività di input e output (come gli accessi alla memoria) hanno specificamente forzato questo comportamento, portando a un programma artificiale gonfiato. In generale, i programmi MIPS erano costretti ad avere molte istruzioni NOP dispendiose, un comportamento che era una conseguenza involontaria. L'architettura DLX non forza l'esecuzione di un singolo ciclo di clock ed è quindi immune da questo problema.

Nella progettazione DLX è stato utilizzato un approccio più moderno alla gestione di istruzioni lunghe: inoltro dei dati e riordino delle istruzioni. In questo caso le istruzioni più lunghe vengono "bloccate" nelle loro unità funzionali e quindi reinserite nel flusso di istruzioni quando possono essere completate. Esternamente questo comportamento di progettazione fa sembrare che l'esecuzione sia avvenuta in modo lineare.

Come funziona

Istruzioni DLX possono essere suddivisi in tre tipi, R-tipo , I-tipo e J-tipo . Le istruzioni di tipo R sono istruzioni di registro puro , con tre riferimenti di registro contenuti nella parola a 32 bit. Le istruzioni di tipo I specificano due registri e utilizzano 16 bit per contenere un valore immediato . Infine le istruzioni di tipo J sono jump , contenenti un indirizzo a 26 bit.

Gli opcode sono lunghi 6 bit, per un totale di 64 possibili istruzioni di base. Per selezionare uno dei 32 registri sono necessari 5 bit.

  • Nel caso delle istruzioni di tipo R ciò significa che vengono utilizzati solo 21 bit della parola a 32 bit, il che consente di utilizzare i 6 bit inferiori come "istruzioni estese".
  • Il DLX può supportare più di 64 istruzioni, purché tali istruzioni funzionino esclusivamente sui registri. Questa stranezza è utile per cose come il supporto FPU .

DLX vs MIPS

Il DLX, come il design MIPS, basa le sue prestazioni sull'uso di una pipeline di istruzioni . Nel design DLX questo è abbastanza semplice, RISC "classico" nel concetto. Il gasdotto contiene cinque fasi:

IF – Istruzione Recupera unità/ciclo
IR<-Mem(PC)
PNG<-PC+4
Operazione: inviare il PC e prelevare l'istruzione dalla memoria nell'Instruction Register (IR) ; incrementare il PC di 4 per indirizzare la successiva istruzione sequenziale. L'IR viene utilizzato per contenere l'istruzione successiva che sarà necessaria nei successivi cicli di clock; allo stesso modo il registro NPC viene utilizzato per contenere il successivo PC sequenziale.
ID – Unità di decodifica delle istruzioni
Operazione: decodificare l'istruzione e accedere al file register per leggere i registri. Questa unità riceve istruzioni da IF ed estrae codice operativo e operando da tale istruzione. Recupera anche i valori di registro se richiesto dall'operazione.
EX – Unità di esecuzione/ciclo di indirizzamento effettivo
Funzionamento: L' ALU opera sugli operandi preparati nel ciclo precedente, eseguendo una delle quattro funzioni a seconda del tipo di istruzione DLX.
Riferimento alla memoria: Istruzione Register–Register ALU, Register–Istruzione ALU immediata
Ramo
MEM – Unità di accesso alla memoria
Le istruzioni DLX attive in questa unità sono carichi, negozi e rami.
Riferimento memoria: accedere alla memoria se necessario. Se l'istruzione viene caricata, i dati ritornano dalla memoria e vengono inseriti nel registro LMD (caricamento dati memoria)
Ramo
WB – Unità WriteBack
Tipicamente indicato come "l'unità del negozio" nella terminologia moderna. Scrivere il risultato nel file di registro, sia che provenga dal sistema di memoria o dall'ALU.

Guarda anche

Riferimenti

  • Sailer, Filippo M.; Kaeli, David R. (1996). Il manuale dell'architettura del set di istruzioni DLX . Morgan Kaufmann. ISBN 1-55860-371-9.
  • Patterson, David ; Hennessy, John (1996). Architettura del computer: un approccio quantitativo (1a ed.). Morgan Kaufmann . ISBN 978-1-55-860329-5.
  • Patterson, David ; Hennessy, John (1994). Organizzazione e progettazione di computer (1a ed.). Morgan Kaufmann . ISBN 978-1-55-860281-6.

link esterno