bankwise logic in xml

This commit is contained in:
Janik Schlemminger
2014-04-08 11:31:52 +02:00
7 changed files with 32 additions and 21 deletions

View File

@@ -4,7 +4,7 @@
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-64906255729110141" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot; -std=c++11">
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-2055719358" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot; -std=c++11">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

View File

@@ -1,7 +1,6 @@
<memspec>
<memconfig>
<parameter id="bankwiseRefresh" type="bool" value="0" />
<parameter id="bankwisePowerDown" type="bool" value="0" />
<parameter id="bankwiseLogic" type="bool" value="1" />
<parameter id="openPagePolicy" type="bool" value="1" />
<parameter id="adaptiveOpenPagePolicy" type="bool" value="1" />
</memconfig>

View File

@@ -35,15 +35,16 @@ ControllerCore::ControllerCore(IWrapperConnector& wrapperConnector, std::map<Ban
commandChecker[Command::Read] = new ReadChecker(config, state);
commandChecker[Command::Write] = new WriteChecker(config, state);
if (config.BankwiseRefresh)
if (config.BankwiseLogic)
{
refreshManager = new RefreshManagerBankwise(*this);
else
refreshManager = new RefreshManager(*this);
if (config.BankwisePowerDown)
powerDownManager = new PowerDownManager(*this);
}
else
{
refreshManager = new RefreshManager(*this);
powerDownManager = new PowerDownManagerGrouped(*this);
}
}
ControllerCore::~ControllerCore()
@@ -76,20 +77,23 @@ void ControllerCore::triggerRefresh(tlm::tlm_generic_payload& payload, sc_time t
if (refreshManager->isInvalidated(payload, time))
return;
if (!powerDownManager->isInSelfRefresh(bank))
if (config.BankwiseLogic)
{
if(config.BankwiseRefresh)
if (!powerDownManager->isInSelfRefresh(bank))
{
printDebugMessage("Waking up bank " + to_string(bank.ID()) + " for refresh");
powerDownManager->wakeUpForRefresh(bank, time);//expects PDNA and PDNP to exit without delay
powerDownManager->wakeUpForRefresh(bank, time); //expects PDNA and PDNP to exit without delay
refreshManager->scheduleRefresh(payload, time);
}
else
}
else if (!config.BankwiseLogic)
{
if (!powerDownManager->allBanksInSelfRefresh())
{
printDebugMessage("Waking up all banks for refresh");
powerDownManager->wakeUpAllForRefresh(time);
refreshManager->scheduleRefresh(payload, time);
}
refreshManager->scheduleRefresh(payload, time);
}
}
@@ -184,7 +188,6 @@ void ControllerCore::send(const CommandSchedule& schedule, tlm::tlm_generic_payl
}
}
ICommandChecker& ControllerCore::getCommandChecker(Command command)
{
return *getElementFromMap(commandChecker, command);

View File

@@ -37,10 +37,9 @@ struct Configuration
TimingConfiguration Timings;
//MemConfiguration
bool BankwiseRefresh;
bool BankwisePowerDown;
bool BankwiseLogic;
bool OpenPagePolicy;
bool adaptiveOpenPagePolicy;
bool AdaptiveOpenPagePolicy;
private:
Configuration();

View File

@@ -46,10 +46,9 @@ void MemSpecLoader::loadConfig(Configuration& config, XMLElement* memspec)
//MemConfiguration
XMLElement* configuration = memspec->FirstChildElement("memconfig");
config.BankwiseRefresh = queryBoolParameter(configuration, "bankwiseRefresh");
config.BankwisePowerDown = queryBoolParameter(configuration, "bankwisePowerDown");
config.BankwiseLogic = queryBoolParameter(configuration, "bankwiseLogic");
config.OpenPagePolicy = queryBoolParameter(configuration, "openPagePolicy");
config.adaptiveOpenPagePolicy = queryBoolParameter(configuration, "adaptiveOpenPagePolicy");
config.AdaptiveOpenPagePolicy = queryBoolParameter(configuration, "adaptiveOpenPagePolicy");
}
void MemSpecLoader::loadDDR4(Configuration& config, XMLElement* memspec)

View File

@@ -114,6 +114,16 @@ bool PowerDownManager::isInSelfRefresh(Bank bank)
return getPowerDownState(bank) == PowerDownState::PDNSelfRefresh;
}
bool PowerDownManager::allBanksInSelfRefresh()
{
for (Bank bank : controller.getBanks())
{
if(!isInSelfRefresh(bank))
return false;
}
return true;
}
bool PowerDownManager::isAwakeForRefresh(Bank bank)
{
return getPowerDownState(bank) == PowerDownState::AwakeForRefresh;

View File

@@ -37,6 +37,7 @@ public:
virtual void wakeUpAllForRefresh(sc_time time);
virtual bool isInSelfRefresh(Bank bank);
virtual bool allBanksInSelfRefresh();
virtual bool isInPowerDown(Bank bank);
virtual bool isAwake(Bank bank);
virtual bool isAwakeForRefresh(Bank bank);