DLX
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 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 
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 
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 
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.
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

Fordítás

Források

További információk 
 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 
 Oktatási célú programnyelv
 LC-3
 MIX, MMIX
 MicroBlaze
 MikroSim
 HERA – The Haverford Educational RISC Architecture
 OpenRISC

Utasításkészlet-architektúrák
CPU-architektúrák
Mikroprocesszorok
Nyílt mikroprocesszorok
A DLX ( kiejtve a „ Deluxe” szónak felel meg ) egybites 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ű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 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 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 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 abites utasításszó három regiszterhivatkozást tartalmaz . Az I típusú utasítások két regisztert határoznak meg ésbiten 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 egybites címet tartalmaznak . Az opkódok ( műveleti jelrész) bit hosszúak , ezzel összesenalaputasítás kódolható . Egy regiszter kódolásáhozbit szükséges . Az R típusú utasítások esetében ez azt jelenti , hogybites szóból csakbit van kihasználva5+6 bit ) , ami lehetővé teszi , hogy az alacsonyabb helyiértékűbitet további , „ kiterjesztett” utasítások kódolására használják fel . A DLXné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 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öveligyel , 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 . 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 Fordítás Források További információk 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 Oktatási célú programnyelv LC-3 MIX , MMIX MicroBlaze MikroSim HERA – The Haverford Educational RISC Architecture OpenRISC Utasításkészlet-architektúrák CPU-architektúrák Mikroprocesszorok Nyílt mikroprocesszorok