DLX - DLX

DLX
Projektant John L. Hennessy i David A. Patterson
Bity 32-bitowy
Wprowadzono 1994
Wersja 1,0
Projekt RYZYKO
Rodzaj Zarejestruj się – zarejestruj i załaduj – przechowaj
Kodowanie Naprawiony
Rozgałęzienia Rejestr warunków
Endianowość Bi-endian
Rozszerzenia Brak, ale MDMX & MIPS-3D mogą być wykorzystane
otwarty tak
Rejestry
Ogólny cel 31 (R0=0)
zmiennoprzecinkowy 32 (sparowany DP dla 32-bitów)

DLX (wymawiane „Deluxe”) jest RISC procesor architektury zaprojektowane przez Johna L. Hennessy i David A. Patterson , głównych projektantów Stanford MIPS a Berkeley RISC wzorów (odpowiednio), dwa przykłady porównawcze z RISC projektu (o nazwie według projektu Berkeley).

DLX jest zasadniczo oczyszczonym (i zmodernizowanym) uproszczonym procesorem Stanford MIPS. DLX ma prostą 32-bitową architekturę ładowania/przechowywania, nieco w przeciwieństwie do nowoczesnego procesora architektury MIPS . Jak DLX był przeznaczony głównie do celów dydaktycznych, projekt DLX jest szeroko stosowany w uniwersyteckich -level komputerowe kursy architektury.

Istnieją dwie znane implementacje sprzętowe " softcore ": ASPIDA i VAMP. Projekt ASPIDA zaowocował rdzeniem z wieloma fajnymi funkcjami: jest open source, obsługuje Wishbone , ma konstrukcję asynchroniczną, obsługuje wiele ISA i jest sprawdzony w ASIC . VAMP to wariant DLX, który został matematycznie zweryfikowany w ramach projektu Verisoft. Został określony z PVS , zaimplementowany w Verilog i działa na Xilinx FPGA . Zbudowano na nim pełny stos od kompilatora do jądra i protokołu TCP/IP .

Historia

W architekturze Stanford MIPS jedną z metod zwiększania wydajności było wymuszenie wykonania wszystkich instrukcji w jednym cyklu zegara. Zmusiło to kompilatory do wstawienia " no-ops " w przypadkach, w których instrukcja z pewnością zajęłaby więcej niż jeden cykl zegara. W ten sposób działania wejścia i wyjścia (takie jak dostęp do pamięci) wymusiły to zachowanie, prowadząc do sztucznego rozdęcia programu. Ogólnie rzecz biorąc, programy MIPS były zmuszone do posiadania wielu niepotrzebnych instrukcji NOP, co było niezamierzoną konsekwencją. Architektura DLX nie wymusza wykonania pojedynczego cyklu zegara i dlatego jest odporna na ten problem.

W projekcie DLX zastosowano bardziej nowoczesne podejście do obsługi długich instrukcji: przekazywanie danych i zmiana kolejności instrukcji. W tym przypadku dłuższe instrukcje są „zawieszane” w ich jednostkach funkcjonalnych, a następnie ponownie wstawiane do strumienia instrukcji, gdy mogą zostać ukończone. Zewnętrznie to zachowanie projektowe sprawia, że ​​wygląda na to, że wykonanie nastąpiło liniowo.

Jak to działa

Instrukcje DLX można podzielić na trzy typy: R-type , I-type i J-type . Instrukcje typu R są czystymi instrukcjami rejestru , z trzema odniesieniami do rejestru zawartymi w 32-bitowym słowie. Instrukcje typu I określają dwa rejestry i używają 16 bitów do przechowywania wartości natychmiastowej . Wreszcie instrukcje typu J to skoki zawierające 26-bitowy adres.

Kody operacyjne mają długość 6 bitów, co daje w sumie 64 możliwe instrukcje podstawowe. Do wyboru jednego z 32 rejestrów potrzeba 5 bitów.

  • W przypadku instrukcji typu R oznacza to, że używane jest tylko 21 bitów słowa 32-bitowego, co pozwala na użycie niższych 6 bitów jako „instrukcji rozszerzonych”.
  • DLX może obsługiwać więcej niż 64 instrukcje, o ile te instrukcje działają wyłącznie na rejestrach. To dziwactwo jest przydatne do takich rzeczy, jak obsługa FPU .

DLX a MIPS

DLX, podobnie jak projekt MIPS, opiera swoją wydajność na wykorzystaniu potoku instrukcji . W projekcie DLX jest to dość prosty, „klasyczny” RISC w koncepcji. Potok składa się z pięciu etapów:

IF – Instrukcja Pobierz jednostkę/cykl
IR<-Mem (PC)
NPC<-PC+4
Operacja: Wyślij PC i pobierz instrukcję z pamięci do rejestru instrukcji (IR) ; zwiększyć PC o 4, aby zaadresować następną instrukcję sekwencyjną. IR służy do przechowywania następnej instrukcji, która będzie potrzebna w kolejnych cyklach zegara; podobnie rejestr NPC jest używany do przechowywania następnego kolejnego komputera.
ID – jednostka dekodowania instrukcji
Operacja: Odkoduj instrukcję i uzyskaj dostęp do pliku rejestru, aby odczytać rejestry. Ta jednostka pobiera instrukcję z IF i wyodrębnia z niej kod i operand. Pobiera również wartości rejestru, jeśli zażąda tego operacja.
EX – Jednostka wykonawcza/efektywny cykl adresowy
Działanie: ALU operuje na operandach przygotowanych w poprzednim cyklu, realizując jedną z czterech funkcji w zależności od typu instrukcji DLX.
Odniesienie do pamięci: instrukcja Register–Register ALU, Register–Immediate ALU
Oddział
MEM – Jednostka dostępu do pamięci
Instrukcje DLX aktywne w tej jednostce to ładunki, sklepy i oddziały.
Odniesienie do pamięci: w razie potrzeby uzyskaj dostęp do pamięci. W przypadku załadowania instrukcji dane wracają z pamięci i są umieszczane w rejestrze LMD (load memory data)
Oddział
WB – jednostka zapisu zwrotnego
We współczesnej terminologii zwykle określana jako „jednostka sklepowa”. Zapisz wynik do pliku rejestru, niezależnie od tego, czy pochodzi z systemu pamięci, czy z ALU.

Zobacz też

Bibliografia

  • Żeglarz, Philip M.; Kaeli, David R. (1996). Podręcznik architektury zestawu instrukcji DLX . Morgana Kaufmanna. Numer ISBN 1-55860-371-9.
  • Patterson, Dawid ; Hennessy, John (1996). Architektura komputera: podejście ilościowe (1st ed.). Morgana Kaufmanna . Numer ISBN 978-1-55-860329-5.
  • Patterson, Dawid ; Hennessy, John (1994). Organizacja i projektowanie komputerów (wyd. 1). Morgana Kaufmanna . Numer ISBN 978-1-55-860281-6.

Zewnętrzne linki