public void Init() { clocks = 0; originalInstructions = instructionUnit.GetCurrentInstructions(); issueClocks = new int[100]; executeClocks = new int[100]; writeClocks = new int[100]; for (int i = 0; i < 100; i++) { issueClocks[i] = -1; executeClocks[i] = -1; writeClocks[i] = -1; } loadStation = new ReservationStation(3, ReservationStation.RSType.Load); storeStation = new ReservationStation(3, ReservationStation.RSType.Store); addStation = new ReservationStation(3, ReservationStation.RSType.Add); multiplyStation = new ReservationStation(2, ReservationStation.RSType.Multiply); branchStation = new ReservationStation(5, ReservationStation.RSType.Multiply); floatRegs = new FloatingPointRegisters(30); for (int i = 0; i < 30; i++) { floatRegs.Set(WaitInfo.WaitState.Avail, i + 1, i); } intRegs = new IntegerRegisters(30); memLocs = new FloatingPointMemoryArrary(64); for (int i = 0; i < 64; i++) { memLocs.Set(i + 1, i); } UpdateInstructionQueueBox(); UpdateIssuedInstructionsBox(); UpdateReservationStationBoxes(); UpdateFPRegisterBox(); UpdateIntRegisterBox(); UpdateClockCountBox(); }
public int GetFromMemory(int index, FloatingPointMemoryArrary memory) { if (remainingCycles[index] == -1) { remainingCycles[index] = cyclesToComplete[index]; states[index] = Instruction.State.Exec_Inprog; return(remainingCycles[index]--); } else { if (remainingCycles[index] == 0) { isReady[index] = true; states[index] = Instruction.State.Exec_Fin; return(0); } else { return(remainingCycles[index]--); } } }