Code cleanup.

This commit is contained in:
Lukas Steiner
2020-10-27 16:41:00 +01:00
parent 2d507fb327
commit fe1d8eafdd
12 changed files with 62 additions and 67 deletions

View File

@@ -55,17 +55,17 @@ void BankMachine::updateState(Command command)
switch (command)
{
case Command::ACT:
currentState = BmState::Activated;
currentRow = DramExtension::getRow(currentPayload);
state = State::Activated;
openRow = DramExtension::getRow(currentPayload);
break;
case Command::PRE: case Command::PREA:
currentState = BmState::Precharged;
state = State::Precharged;
break;
case Command::RD: case Command::WR:
currentPayload = nullptr;
break;
case Command::RDA: case Command::WRA:
currentState = BmState::Precharged;
state = State::Precharged;
currentPayload = nullptr;
break;
case Command::PDEA: case Command::PDEP: case Command::SREFEN:
@@ -105,12 +105,12 @@ Bank BankMachine::getBank()
Row BankMachine::getOpenRow()
{
return currentRow;
return openRow;
}
BmState BankMachine::getState()
BankMachine::State BankMachine::getState()
{
return currentState;
return state;
}
bool BankMachine::isIdle()
@@ -133,14 +133,14 @@ sc_time BankMachineOpen::start()
if (currentPayload == nullptr)
return timeToSchedule;
if (currentState == BmState::Precharged && !blocked) // row miss
if (state == State::Precharged && !blocked) // row miss
{
nextCommand = Command::ACT;
timeToSchedule = checker->timeToSatisfyConstraints(nextCommand, rank, bankgroup, bank);
}
else if (currentState == BmState::Activated)
else if (state == State::Activated)
{
if (DramExtension::getRow(currentPayload) == currentRow) // row hit
if (DramExtension::getRow(currentPayload) == openRow) // row hit
{
if (currentPayload->get_command() == TLM_READ_COMMAND)
nextCommand = Command::RD;
@@ -175,12 +175,12 @@ sc_time BankMachineClosed::start()
if (currentPayload == nullptr)
return timeToSchedule;
if (currentState == BmState::Precharged && !blocked) // row miss
if (state == State::Precharged && !blocked) // row miss
{
nextCommand = Command::ACT;
timeToSchedule = checker->timeToSatisfyConstraints(nextCommand, rank, bankgroup, bank);
}
else if (currentState == BmState::Activated)
else if (state == State::Activated)
{
if (currentPayload->get_command() == TLM_READ_COMMAND)
nextCommand = Command::RDA;
@@ -209,16 +209,16 @@ sc_time BankMachineOpenAdaptive::start()
if (currentPayload == nullptr)
return timeToSchedule;
if (currentState == BmState::Precharged && !blocked) // row miss
if (state == State::Precharged && !blocked) // row miss
{
nextCommand = Command::ACT;
timeToSchedule = checker->timeToSatisfyConstraints(nextCommand, rank, bankgroup, bank);
}
else if (currentState == BmState::Activated)
else if (state == State::Activated)
{
if (DramExtension::getRow(currentPayload) == currentRow) // row hit
if (DramExtension::getRow(currentPayload) == openRow) // row hit
{
if (scheduler->hasFurtherRequest(bank) && !scheduler->hasFurtherRowHit(bank, currentRow))
if (scheduler->hasFurtherRequest(bank) && !scheduler->hasFurtherRowHit(bank, openRow))
{
if (currentPayload->get_command() == TLM_READ_COMMAND)
nextCommand = Command::RDA;
@@ -262,16 +262,16 @@ sc_time BankMachineClosedAdaptive::start()
if (currentPayload == nullptr)
return timeToSchedule;
if (currentState == BmState::Precharged && !blocked) // row miss
if (state == State::Precharged && !blocked) // row miss
{
nextCommand = Command::ACT;
timeToSchedule = checker->timeToSatisfyConstraints(nextCommand, rank, bankgroup, bank);
}
else if (currentState == BmState::Activated)
else if (state == State::Activated)
{
if (DramExtension::getRow(currentPayload) == currentRow) // row hit
if (DramExtension::getRow(currentPayload) == openRow) // row hit
{
if (scheduler->hasFurtherRowHit(bank, currentRow))
if (scheduler->hasFurtherRowHit(bank, openRow))
{
if (currentPayload->get_command() == TLM_READ_COMMAND)
nextCommand = Command::RD;

View File

@@ -43,12 +43,6 @@
#include "scheduler/SchedulerIF.h"
#include "checker/CheckerIF.h"
enum class BmState
{
Precharged,
Activated
};
class BankMachine
{
public:
@@ -58,11 +52,13 @@ public:
void updateState(Command);
void block();
enum class State {Precharged, Activated};
Rank getRank();
BankGroup getBankGroup();
Bank getBank();
Row getOpenRow();
BmState getState();
State getState();
bool isIdle();
protected:
@@ -71,8 +67,8 @@ protected:
SchedulerIF *scheduler;
CheckerIF *checker;
Command nextCommand = Command::NOP;
BmState currentState = BmState::Precharged;
Row currentRow;
State state = State::Precharged;
Row openRow;
sc_time timeToSchedule = sc_max_time();
Rank rank = Rank(0);
BankGroup bankgroup = BankGroup(0);

View File

@@ -47,7 +47,7 @@ void PowerDownManagerStaggered::triggerEntry()
{
controllerIdle = true;
if (state == PdmState::Idle)
if (state == State::Idle)
entryTriggered = true;
}
@@ -57,7 +57,7 @@ void PowerDownManagerStaggered::triggerExit()
enterSelfRefresh = false;
entryTriggered = false;
if (state != PdmState::Idle)
if (state != State::Idle)
exitTriggered = true;
}
@@ -65,7 +65,7 @@ void PowerDownManagerStaggered::triggerInterruption()
{
entryTriggered = false;
if (state != PdmState::Idle)
if (state != State::Idle)
exitTriggered = true;
}
@@ -81,13 +81,13 @@ sc_time PowerDownManagerStaggered::start()
if (exitTriggered)
{
if (state == PdmState::ActivePdn)
if (state == State::ActivePdn)
nextCommand = Command::PDXA;
else if (state == PdmState::PrechargePdn)
else if (state == State::PrechargePdn)
nextCommand = Command::PDXP;
else if (state == PdmState::SelfRefresh)
else if (state == State::SelfRefresh)
nextCommand = Command::SREFEX;
else if (state == PdmState::ExtraRefresh)
else if (state == State::ExtraRefresh)
nextCommand = Command::REFA;
timeToSchedule = checker->timeToSatisfyConstraints(nextCommand, rank, BankGroup(0), Bank(0));
@@ -124,35 +124,35 @@ void PowerDownManagerStaggered::updateState(Command command)
activatedBanks = 0;
break;
case Command::PDEA:
state = PdmState::ActivePdn;
state = State::ActivePdn;
entryTriggered = false;
break;
case Command::PDEP:
state = PdmState::PrechargePdn;
state = State::PrechargePdn;
entryTriggered = false;
break;
case Command::SREFEN:
state = PdmState::SelfRefresh;
state = State::SelfRefresh;
entryTriggered = false;
enterSelfRefresh = false;
break;
case Command::PDXA:
state = PdmState::Idle;
state = State::Idle;
exitTriggered = false;
break;
case Command::PDXP:
state = PdmState::Idle;
state = State::Idle;
exitTriggered = false;
if (controllerIdle)
enterSelfRefresh = true;
break;
case Command::SREFEX:
state = PdmState::ExtraRefresh;
state = State::ExtraRefresh;
break;
case Command::REFA:
if (state == PdmState::ExtraRefresh)
if (state == State::ExtraRefresh)
{
state = PdmState::Idle;
state = State::Idle;
exitTriggered = false;
}
else if (controllerIdle)

View File

@@ -53,7 +53,7 @@ public:
virtual sc_time start() override;
private:
enum class PdmState {Idle, ActivePdn, PrechargePdn, SelfRefresh, ExtraRefresh} state = PdmState::Idle;
enum class State {Idle, ActivePdn, PrechargePdn, SelfRefresh, ExtraRefresh} state = State::Idle;
tlm::tlm_generic_payload powerDownPayload;
Rank rank;
CheckerIF *checker;

View File

@@ -80,10 +80,10 @@ sc_time RefreshManagerBankwise::start()
if (sc_time_stamp() >= timeForNextTrigger + memSpec->getRefreshIntervalPB())
{
timeForNextTrigger += memSpec->getRefreshIntervalPB();
state = RmState::Regular;
state = State::Regular;
}
if (state == RmState::Regular)
if (state == State::Regular)
{
bool forcedRefresh = (flexibilityCounter == maxPostponed);
bool allBanksBusy = true;
@@ -113,7 +113,7 @@ sc_time RefreshManagerBankwise::start()
}
else
{
if (currentBankMachine->getState() == BmState::Activated)
if (currentBankMachine->getState() == BankMachine::State::Activated)
nextCommand = Command::PRE;
else
{
@@ -148,13 +148,13 @@ sc_time RefreshManagerBankwise::start()
if (allBanksBusy)
{
state = RmState::Regular;
state = State::Regular;
timeForNextTrigger += memSpec->getRefreshIntervalPB();
return timeForNextTrigger;
}
else
{
if (currentBankMachine->getState() == BmState::Activated)
if (currentBankMachine->getState() == BankMachine::State::Activated)
nextCommand = Command::PRE;
else
nextCommand = Command::REFB;
@@ -178,20 +178,20 @@ void RefreshManagerBankwise::updateState(Command command)
if (remainingBankMachines.empty())
remainingBankMachines = allBankMachines;
if (state == RmState::Pulledin)
if (state == State::Pulledin)
flexibilityCounter--;
else
state = RmState::Pulledin;
state = State::Pulledin;
if (flexibilityCounter == maxPulledin)
{
state = RmState::Regular;
state = State::Regular;
timeForNextTrigger += memSpec->getRefreshIntervalPB();
}
break;
case Command::REFA:
// Refresh command after SREFEX
state = RmState::Regular; // TODO: check if this assignment is necessary
state = State::Regular; // TODO: check if this assignment is necessary
timeForNextTrigger = sc_time_stamp() + memSpec->getRefreshIntervalPB();
sleeping = false;
break;

View File

@@ -53,7 +53,7 @@ public:
virtual void updateState(Command) override;
private:
enum class RmState {Regular, Pulledin} state = RmState::Regular;
enum class State {Regular, Pulledin} state = State::Regular;
const MemSpec *memSpec;
std::vector<BankMachine *> &bankMachinesOnRank;
PowerDownManagerIF *powerDownManager;

View File

@@ -71,10 +71,10 @@ sc_time RefreshManagerRankwise::start()
if (sc_time_stamp() >= timeForNextTrigger + memSpec->getRefreshIntervalAB())
{
timeForNextTrigger += memSpec->getRefreshIntervalAB();
state = RmState::Regular;
state = State::Regular;
}
if (state == RmState::Regular)
if (state == State::Regular)
{
if (flexibilityCounter == maxPostponed) // forced refresh
{
@@ -122,7 +122,7 @@ sc_time RefreshManagerRankwise::start()
if (controllerBusy)
{
state = RmState::Regular;
state = State::Regular;
timeForNextTrigger += memSpec->getRefreshIntervalAB();
return timeForNextTrigger;
}
@@ -155,20 +155,20 @@ void RefreshManagerRankwise::updateState(Command command)
if (sleeping)
{
// Refresh command after SREFEX
state = RmState::Regular; // TODO: check if this assignment is necessary
state = State::Regular; // TODO: check if this assignment is necessary
timeForNextTrigger = sc_time_stamp() + memSpec->getRefreshIntervalAB();
sleeping = false;
}
else
{
if (state == RmState::Pulledin)
if (state == State::Pulledin)
flexibilityCounter--;
else
state = RmState::Pulledin;
state = State::Pulledin;
if (flexibilityCounter == maxPulledin)
{
state = RmState::Regular;
state = State::Regular;
timeForNextTrigger += memSpec->getRefreshIntervalAB();
}
}

View File

@@ -51,7 +51,7 @@ public:
virtual void updateState(Command) override;
private:
enum class RmState {Regular, Pulledin} state = RmState::Regular;
enum class State {Regular, Pulledin} state = State::Regular;
const MemSpec *memSpec;
std::vector<BankMachine *> &bankMachinesOnRank;
PowerDownManagerIF *powerDownManager;

View File

@@ -80,7 +80,7 @@ tlm_generic_payload *SchedulerFrFcfs::getNextRequest(BankMachine *bankMachine) c
unsigned bankID = bankMachine->getBank().ID();
if (!buffer[bankID].empty())
{
if (bankMachine->getState() == BmState::Activated)
if (bankMachine->getState() == BankMachine::State::Activated)
{
// Search for row hit
Row openRow = bankMachine->getOpenRow();

View File

@@ -81,7 +81,7 @@ tlm_generic_payload *SchedulerFrFcfsGrp::getNextRequest(BankMachine *bankMachine
unsigned bankID = bankMachine->getBank().ID();
if (!buffer[bankID].empty())
{
if (bankMachine->getState() == BmState::Activated)
if (bankMachine->getState() == BankMachine::State::Activated)
{
// Filter all row hits
Row openRow = bankMachine->getOpenRow();

View File

@@ -40,7 +40,6 @@
#include "../../common/dramExtensions.h"
#include "../../common/DebugManager.h"
enum class BmState;
class BankMachine;
class SchedulerIF

View File

@@ -58,7 +58,7 @@ public:
Arbiter(sc_module_name, std::string);
SC_HAS_PROCESS(Arbiter);
virtual ~Arbiter();
virtual ~Arbiter() override;
private:
virtual void end_of_elaboration() override;