Ugrás a tartalomhoz

DLX

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából
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]
  1. minden utasítás 32 bites
  2. little-endian és big-endian, bi-endian
  3. PVS: PVS Specification and Verification System
  4. 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]

További információk

[szerkesztés]

Kapcsolódó szócikkek

[szerkesztés]


  1. 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.)