Fazy cyklu rozkazowego komputera winDLX

Opisane przesłaniami rejestrowymi.

Opisane przesłaniami rejestrowymi.

 

Rozkaz komputera winDLX jest pięciofazowy. Najpierw rozkaz jest pobierany (Instruction Fetch), następnie dekodowany (Decode), wykonywany (EXecute), następują ew. odwołania do pamięci (MEM) i w ostatniej fazie zakończenie cyklu i powrót na początek układu (Write Back).

Instrucion Fetch :

IR <- MEM[PC] ->do rejestru rozkazu ładowany jest z pamięci rozkaz o adresie znajdującym się w liczniku rozkazów

NPC <- NP + 4 ->następnie licznik rozkazów zwiększany jest o 4(tyle wynosi długość słowa dla tej architektury), by w następnym cyklu móc pobrać kolejny rozkaz

 

Decode :

A <- Regs[IR6..10]

B<-Regs[IR11..15]

Imm <- ((IR16)16##IR16..31)

Do odpowiednich rejestrów przesyłane są odpowiednie fragmenty rozkazu, które będą potrzebne w późniejszych fazach cyklu


EXecute :

MEMory : ALUOutput <-A + Imm

Register-Register : ALUOutput <- A op B

Register-Immediate : ALUOutput <- A op Imm

Branch : ALUOutput <- NPC + Imm

             cond <- A op 0

Fragmenty zdekodowanych rozkazów są wykorzystywane do ich wykonywania, jak widać dla różnych rozkazów inaczej wygląda ścieżka przepływu.

Memory :

LMD <- Mem[ALUOutput] lub  Mem[ALUOutput] <- B

Ten fragment  występuje tylko dla odwoływań do pamięci (LOAD/STORE) a także dla skoków (branche) :

if (cond) PC <- ALUOutput
else PC <- NPC

Write Back :

 

Register-Register : REGS[IR16..20]<-ALUOutput

Register-Immediate : REGS[IR11..15]<-ALUOutput

Load Instruction : REGS[IR11..15]<-LMD

 

Celem jest jeden z dwóch fragmentów, jest określany na podstawie kodu operacji rozkazu (OPCode).