DLX
Tervező | John L. Hennessy és David A. Patterson |
---|---|
Bitek száma | 32 bites |
Bevezetés | 1990-es évek |
Verzió | 1.0 |
Kialakítás | RISC |
Típus | regiszter-regiszter, load-store |
Kódolás | rögzített[1] |
Elágazás | feltételregiszter |
Bájtsorrend | kettős[2] |
Utasításkészlet- kiterjesztések | nincsenek, de az MDMX és a MIPS-3D használható |
Nyílt | igen |
Regiszterek | |
Általános célú | 32 (R0=0) |
Lebegőpontos | 32 (párban használt 32 bites regiszterek a duplapontos formátumhoz) |
A DLX (kiejtve a „Deluxe” szónak felel meg) egy 32 bites RISC processzor-architektúra. Az architektúrát John L. Hennessy és David A. Patterson tervezte, a két legjellemzőbb RISC kialakítás, a Stanford MIPS és Berkeley RISC kialakítások két „atyja”, alapvető alkotója (maga a RISC paradigma is a Berkeley RISC kialakításról kapta a nevét).
A DLX alapvetően egy letisztult, modernizált és egyszerűsített MIPS processzor. A DLX architektúrája egy egyszerű 32 bites load-store (betöltő-tároló) architektúra, ami egy kissé eltér a modern MIPS processzorokétól. Mivel a DLX processzort elsősorban oktatási célokra tervezték, ezért ezt a kialakítást széles körben használják az egyetemi oktatásban, a számítógép-architektúrával kapcsolatos tantárgyakban.
A VAMP egy matematikailag igazolt DLX-változat, a Verisoft projekt részeként. A specifikációját PVS-ben[3] készítették, a modell leírása Verilog nyelven történt, és Xilinx FPGA-n megvalósítható. A processzorhoz egy teljes szoftvergarnitúra is rendelkezésre áll, amely a fordítóprogramtól a TCP/IP hálózatkezelő rendszerig minden alapvető elemet tartalmaz a kernel-fordításhoz.
Történet
[szerkesztés]Az eredeti MIPS architektúrában a teljesítmény növelésére használt egyik módszer az volt, hogy az összes utasítás végrehajtását egyetlen órajelciklusra korlátozták. Ez a fordítóprogramokat arra kényszerítette, hogy üres utasításokat (NOP) illesszenek a kódba azokon a helyeken, ahol az utasítás határozottan tovább tartana, mint egy órajelciklus. A bemeneti és kimeneti műveletek, mint például a memória-hozzáférés, különösen kikényszerítették ezt a viselkedést, ami a programok méretének növekedéséhez vezetett. Az általános MIPS programokban szinte kötelezően felbukkan rengeteg pazarló NOP utasítás, ez az architektúrából adódó nem szándékos (nem tervezett) következmény. A DLX architektúra nem erőlteti az egyetlen órajelciklus alatti utasításvégrehajtást, így ez a probléma ebben az architektúrában egyszerűen nem létezik.
A DLX kialakításban egy modernebb megközelítést alkalmaznak a hosszabb végrehajtású utasítások kezelésére: az adat-előreengedést és utasítás-átrendezést. Ebben az esetben a tovább tartó utasítások „megrekednek”, várakoznak funkcionális egységeikben, és csak akkor lesznek visszahelyezve az utasításfolyamba, mikor időben befejeződhetnek. A kialakítás ilyen működése külsőleg úgy jelentkezik, mintha a processzor az utasításokat lineárisan hajtaná végre – a végeredmény megegyezik a soros végrehajtással.
Működés
[szerkesztés]A DLX utasítások három típusra oszthatók, R típusú, I típusú és J típusú utasításokra. Az R típusú utasítások tisztán regiszter típusú utasítások: ebben a formátumban a 32 bites utasításszó három regiszterhivatkozást tartalmaz. Az I típusú utasítások két regisztert határoznak meg és 16 biten egy közvetlen (immediate) értéket tárolnak. Végül a J típusú utasítások az ugró ill. elágazó utasításoknak vannak fenntartva: ezek egy 26 bites címet tartalmaznak.
Az opkódok (műveleti jelrész) 6 bit hosszúak, ezzel összesen 64 alaputasítás kódolható. Egy regiszter kódolásához 5 bit szükséges.
- Az R típusú utasítások esetében ez azt jelenti, hogy 32 bites szóból csak 21 bit van kihasználva (3×5+6 bit), ami lehetővé teszi, hogy az alacsonyabb helyiértékű 6 bitet további, „kiterjesztett” utasítások kódolására használják fel.
- A DLX 64-nél több utasítást támogat, mindaddig, amíg ezek az utasítások tisztán a regisztereken működnek. Ez a tulajdonság hasznos például az FPU támogatás utasításai számára.
A DLX és a MIPS
[szerkesztés]A DLX teljesítménye, a MIPS kialakításokhoz hasonlóan, az utasítás-futószalag alkalmazásán alapul. A DLX kialakításban a futószalag felépítése meglehetősen egyszerű, a „klasszikus” RISC elvet követi. A futószalag öt fokozatból áll:
- IF - utasításlehívás (egység, futószalagfokozat és utasításfeldolgozási ciklus, Instruction Fetch unit)
- IR<-Mem(PC)
- NPC<-PC+4
működése: kiküldi a PC (programszámláló) értékét, és a memóriából kiolvassa az utasítást, amit az IR (Instruction Register) utasításregiszterbe tesz; a programszámláló értékét megnöveli 4-gyel, hogy az a soron következő utasítást címezze. Az IR tárolja a következő utasítást, amire szükség van a rákövetkező órajelciklusok alatt; ugyanígy az NPC regiszter tárolja a PC következő értékét.
- ID - utasításdekódolás (Instruction Decode unit)
- működése: dekódolja az utasítást, és a regisztertárból kiolvassa a regiszterek értékeit. Ez az egység az IF-ból kapja az utasításkódot, és kinyeri abból az opkódot és az operandusokat. Megszerzi a regiszterértékeket is, ha az utasítás azt írja elő.
- EX - végrehajtó egység / fizikai cím ciklus
működése: Az ALU az előző ciklusban előkészített operandusokon elvégzi a DLX utasítástípus által meghatározott műveletet, amely a következő négy funkció egyike: memóriahivatkozás, regiszter-regiszter ALU utasítás, regiszter-közvetlen érték ALU utasítás, elágazás.
- MEM - memóriahozzáférés
- Az aktív DLX utasítások ebben a futószalag-fokozatban végzik a memória-olvasás, -tárolás és elágazás műveleteket. Memória olvasás esetén a memóriából kiolvasott adat az LMD (load memory data) regiszterbe kerül. Írás esetén egy adatregiszterben tárolt adatot kiküld a memóriához. A címet az előző fázisban kiszámolt „ALUOutput” belső regiszter értéke határozza meg. Elágazás és ugróutasítás esetén az elágazási feltételtől függően a PC felveszi az ALUOutput értékét, vagy ha a feltétel nem teljesül, az NPC értékét.[4]
- WB - visszaírás (WriteBack unit)
Erre a fokozatra a modern terminológiában tárolóegységként is hivatkoznak. Feladata az eredmény beírása a regisztertárba, amely a memóriarendszerből vagy az ALU-ból érkezhet.
Jegyzetek
[szerkesztés]- ↑ minden utasítás 32 bites
- ↑ little-endian és big-endian, bi-endian
- ↑ PVS: PVS Specification and Verification System
- ↑ Gurpur Prabhu: An Implementation of DLX (angol nyelven). Iowa State University, 2013. május 22. (Hozzáférés: 2014)
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben a DLX című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
Források
[szerkesztés]- Sailer, Philip M.. The DLX Instruction Set Architecture Handbook. Morgan Kaufmann (1996). ISBN 1-55860-371-9
- Computer Architecture: A Quantitative Approach, 1st, Morgan Kaufmann (1996). ISBN 978-1-55-860329-5
- Computer Organization and Design, 1st, Morgan Kaufmann (1994). ISBN 978-1-55-860281-6
További információk
[szerkesztés]- The DLX Processor
- DLX instructions
- WinDLX
- DLX Simulator (GNU GPL)
- ESCAPE DLX Simulator
- openDLX - opensource DLX-Simulator in Java (GNU GPLv3)
- Formal verification of VAMP processor
- ASPIDA asynchronous DLX processor
Kapcsolódó szócikkek
[szerkesztés]- Oktatási célú programnyelv
- LC-3
- MIX, MMIX
- MicroBlaze
- MikroSim
- HERA – The Haverford Educational RISC Architecture[1]
- OpenRISC
- ↑ HERA: the Haverford Educational RISC Architecture. [2012. december 12-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. január 11.)