DLX

DLX
Designer John L. Hennessy och David A. Patterson
Bits 32-bitars
Introducerad 1994
Version 1.0
Design RISC
Typ Registrera–Registrera & Ladda–butik
Kodning Fast
Förgrening Tillståndsregister
Endianness Bi-endian
Tillägg Inga, men MDMX & MIPS-3D kunde användas
Öppen Ja
Register
Generell mening 32 (R0=0)
Flytpunkt 32 (parad DP för 32-bitars)

DLX (uttalas "Deluxe") är en RISC- processorarkitektur designad av John L. Hennessy och David A. Patterson , de främsta formgivarna för Stanford MIPS- och Berkeley RISC- designerna ( respektive ) , de två benchmarkexemplen på RISC-design (som heter efter Berkeley-designen).

DLX är i huvudsak en rensad (och moderniserad) förenklad Stanford MIPS CPU. DLX har en enkel 32-bitars load/store-arkitektur, något till skillnad från den moderna MIPS-arkitekturen CPU. Eftersom DLX främst var avsedd för undervisningsändamål, används DLX-designen i stor utsträckning i datorarkitekturkurser på universitetsnivå .

Det finns två kända " softcore " hårdvaruimplementationer: ASPIDA och VAMP. ASPIDA-projektet resulterade i en kärna med många fina funktioner: den är öppen källkod, stöder Wishbone , har en asynkron design, stöder flera ISA :er och är ASIC- beprövad. VAMP är en DLX-variant som matematiskt verifierades som en del av Verisoft-projektet. Den specificerades med PVS , implementerad i Verilog och körs på en Xilinx FPGA . En full stack från kompilator till kärna till TCP/IP byggdes på den.

Historia

I Stanford MIPS-arkitekturen var en av metoderna som användes för att få prestanda att tvinga alla instruktioner att slutföras i en klockcykel. Detta tvingade kompilatorer att infoga " no-ops " i fall där instruktionen definitivt skulle ta längre tid än en klockcykel. Sålunda tvingade in- och utdataaktiviteter (som minnesåtkomst) specifikt fram detta beteende, vilket ledde till artificiell programuppsvällning. I allmänhet var MIPS-program tvungna att ha många slösaktiga NOP-instruktioner, ett beteende som var en oavsiktlig konsekvens. DLX-arkitekturen framtvingar inte exekvering av en enda klockcykel och är därför immun mot detta problem.

I DLX-designen användes ett modernare tillvägagångssätt för att hantera långa instruktioner: vidarebefordran av data och omordning av instruktioner. I det här fallet "stoppas" de längre instruktionerna i sina funktionella enheter och återinförs sedan i instruktionsströmmen när de kan slutföras. Externt gör detta designbeteende att det ser ut som om exekvering hade skett linjärt.

Hur det fungerar

DLX-instruktioner kan delas upp i tre typer, R-typ , I-typ och J-typ . Instruktioner av R-typ är rena registerinstruktioner , med tre registerreferenser i 32-bitarsordet. Instruktioner av I-typ anger två register och använder 16 bitar för att hålla ett omedelbart värde. Slutligen är instruktioner av J-typ hopp , som innehåller en 26-bitars adress.

Opkoder är 6 bitar långa, för totalt 64 möjliga grundläggande instruktioner. För att välja ett av 32 register behövs 5 bitar.

  • I fallet med instruktioner av R-typ betyder detta att endast 21 bitar av 32-bitarsordet används, vilket gör att de lägre 6 bitarna kan användas som "utökade instruktioner".
  • DLX kan stödja mer än 64 instruktioner, så länge som dessa instruktioner bara fungerar på register. Denna egenhet är användbar för saker som FPU- stöd.

DLX vs MIPS

DLX, liksom MIPS-designen, baserar sin prestanda på användningen av en instruktionspipeline . I DLX-designen är detta en ganska enkel sådan, "klassisk" RISC i koncept. Pipelinen innehåller fem steg:

IF – Instruktion Hämta enhet/cykel
IR<-Mem(PC)
NPC<-PC+4
Operation: Skicka ut PC:n och hämta instruktionen från minnet till Instruktionsregistret ( IR) ; öka datorn med 4 för att adressera nästa sekventiella instruktion. IR används för att hålla nästa instruktion som kommer att behövas vid efterföljande klockcykler; likaså används registret NPC för att hålla nästa sekventiella PC.
ID – Instruktion Decode unit
Operation: Avkoda instruktionen och få tillgång till registerfilen för att läsa registren. Denna enhet får instruktion från IF och extraherar opcode och operand från den instruktionen. Den hämtar också registervärden om operationen begär det.
EX – Exekveringsenhet/effektiv adresscykel
Drift: ALU arbetar på operanderna som förbereddes i föregående cykel, och utför en av de fyra funktionerna beroende på DLX-instruktionstypen.
Minnesreferens: Registrera – Registrera ALU-instruktion, Registrera – Omedelbar ALU-instruktion
Branch
MEM – Minnesåtkomstenhet
De DLX-instruktioner som är aktiva i denna enhet är laster, lagrar och förgreningar.
Minnesreferens: åtkomst till minne vid behov. Om instruktionen är load, returneras data från minnet och placeras i LMD-registret (load memory data)
Branch
WB – WriteBack-enhet
Typiskt kallad "lagringsenheten" i modern terminologi. Skriv in resultatet i registerfilen, oavsett om det kommer från minnessystemet eller från ALU.

Se även

  •   Sailer, Philip M.; Kaeli, David R. (1996). DLX Instruction Set Architecture Handbook . Morgan Kaufmann. ISBN 1-55860-371-9 .
  •   Patterson, David ; Hennessy, John (1996). Computer Architecture: A Quantitative Approach (1:a upplagan). Morgan Kaufmann . ISBN 978-1-55-860329-5 .
  •   Patterson, David ; Hennessy, John (1994). Datororganisation och design (1:a uppl.). Morgan Kaufmann . ISBN 978-1-55-860281-6 .

externa länkar