OpenASIP
2.0
|
Private Member Functions | |
PLUGIN_DESCRIPTION ("Optimizes the IC of the given configuration by removing bus " "connections with least effect to the cycle count first.") | |
ConnectionSweeper () | |
virtual bool | requiresStartingPointArchitecture () const |
virtual bool | producesArchitecture () const |
virtual bool | requiresHDB () const |
virtual bool | requiresSimulationData () const |
virtual std::vector< RowID > | explore (const RowID &startPointConfigurationID, const unsigned int &) |
std::list< RowID > | sweepRFs (RowID startPointConfigurationID) |
std::list< RowID > | sweepBypasses (RowID startPointConfigurationID) |
void | readParameters () |
float | averageWorsening (RowID confId) |
std::list< RowID > | removeAllConnections (std::vector< const TTAMachine::Connection * > connections, const DSDBManager::MachineConfiguration &startConf) |
std::list< RowID > | removeLeastNecessaryConnections (std::vector< const TTAMachine::Connection * > connections, const DSDBManager::MachineConfiguration &startConf) |
void | removeConnection (TTAMachine::Machine &mach, const TTAMachine::Connection &connection) |
Private Attributes | |
std::map< RowID, ClockCycleCount > | origCycles_ |
unsigned int | maxCcWorseningThreshold_ |
unsigned int | ccWorseningThreshold_ |
bool | allOrNothing_ |
Static Private Attributes | |
static const std::string | ccWorseningThresholdPN_ |
static const std::string | allOrNothingPN_ |
Additional Inherited Members | |
![]() | |
typedef std::pair< std::string, ExplorerPluginParameter > | Parameter |
typedef std::map< std::string, ExplorerPluginParameter > | ParameterMap |
typedef std::map< std::string, ExplorerPluginParameter >::iterator | PMIt |
typedef std::map< std::string, ExplorerPluginParameter >::const_iterator | PMCIt |
![]() | |
virtual bool | requiresApplication () const |
virtual std::string | description () const |
void | addParameter (TCEString name, ExplorerPluginParameterType type, bool compulsory=true, TCEString defaultValue="", TCEString description="") |
template<typename T > | |
void | readCompulsoryParameter (const std::string paramName, T ¶m) const |
template<typename T > | |
void | readOptionalParameter (const std::string paramName, T ¶m) const |
template<typename RT > | |
RT | parameterValue (const std::string ¶mName) const |
virtual | ~DesignSpaceExplorerPlugin () |
virtual void | giveParameter (const std::string &name, const std::string &value) |
virtual std::string | name () const |
virtual void | setPluginName (const std::string &pluginName) |
virtual bool | hasParameter (const std::string ¶mName) const |
ParameterMap | parameters () const |
virtual bool | booleanValue (const std::string ¶meter) const |
![]() | |
DesignSpaceExplorer () | |
virtual | ~DesignSpaceExplorer () |
virtual void | setDSDB (DSDBManager &dsdb) |
virtual bool | evaluate (const DSDBManager::MachineConfiguration &configuration, CostEstimates &results=dummyEstimate_, bool estimate=false) |
virtual DSDBManager & | db () |
std::vector< DesignSpaceExplorerPlugin * > | getPlugins () |
RowID | createImplementationAndStore (const DSDBManager::MachineConfiguration &conf, const double &frequency=0.0, const double &maxArea=0.0, const bool &createEstimates=true, const std::string &icDec="DefaultICDecoder", const std::string &icDecHDB="asic_130nm_1.5V.hdb") |
bool | createImplementation (const DSDBManager::MachineConfiguration &conf, DSDBManager::MachineConfiguration &newConf, const double &frequency=0.0, const double &maxArea=0.0, const bool &createEstimates=true, const std::string &icDec="DefaultICDecoder", const std::string &icDecHDB="asic_130nm_1.5V.hdb") |
IDF::MachineImplementation * | selectComponents (const TTAMachine::Machine &mach, const double &frequency=0.0, const double &maxArea=0.0, const std::string &icDec="DefaultICDecoder", const std::string &icDecHDB="asic_130nm_1.5V.hdb") const |
void | createEstimateData (const TTAMachine::Machine &mach, const IDF::MachineImplementation &idf, CostEstimator::AreaInGates &area, CostEstimator::DelayInNanoSeconds &longestPathDelay) |
RowID | addConfToDSDB (const DSDBManager::MachineConfiguration &conf) |
![]() | |
static DesignSpaceExplorerPlugin * | loadExplorerPlugin (const std::string &pluginName, DSDBManager *dsdb=NULL) |
![]() | |
DesignSpaceExplorerPlugin () | |
void | checkParameters () const |
![]() | |
TTAProgram::Program * | schedule (const std::string applicationFile, TTAMachine::Machine &machine, TCEString paramOptions="-O3") |
const ExecutionTrace * | simulate (const TTAProgram::Program &program, const TTAMachine::Machine &machine, const TestApplication &testApplication, const ClockCycleCount &maxCycles, ClockCycleCount &runnedCycles, const bool tracing, const bool useCompiledSimulation=false, std::vector< ClockCycleCount > *executionCounts=NULL) |
![]() | |
std::string | pluginName_ |
the name of the explorer plugin More... | |
ParameterMap | parameters_ |
Parameters for the plugin. More... | |
Explorer plugin that optimizes the interconnection network by removing connections with least effect to the cycle count first.
1) Sweeps through the buses in order. 2) For each bus, tries to remove each connection one-by-one, and evaluates the effect to the cycle count. The one with the least effect is removed first. The process is repeated until the minimum cycle count increase crosses an user-defined threshold, or the program becomes unschedulable. Emphasize RF port connections as they tend to get to the longest path due to the register selection logic being in the same path. 3) After that, the next bus is tried similarly, until either all the buses have been optimized this way. 4) The DSDB can be queried with the connection count as the first measure, the cycle count the second with both as small as possible.
Definition at line 95 of file ConnectionSweeper.cc.
|
inlineprivate |
Definition at line 100 of file ConnectionSweeper.cc.
|
inlineprivate |
Computes the average cycle count worsening for the given processor configuration across all the explored applications.
Definition at line 386 of file ConnectionSweeper.cc.
References DSDBManager::MachineConfiguration::architectureID.
|
inlineprivatevirtual |
Explores the design space from the starting point machine and returns best exploring results as configuration IDs.
Exploring creates new machine configurations (architecture, implementation) that are ordered so that the best results are first in the result vector.
startPoint | Starting point machine configuration for the plugin. |
maxIter | Maximum number of design space points the plugin is allowed to explore. Default value for maxIter is zero when the iteration number is not taken into account. In that case the exploration runs indefinetly or stops at a point defined by the algorithm. |
Reimplemented from DesignSpaceExplorerPlugin.
Definition at line 118 of file ConnectionSweeper.cc.
References __func__, DSDBManager::applicationIDs(), DSDBManager::architecture(), DSDBManager::MachineConfiguration::architectureID, assert, DSDBManager::configuration(), DSDBManager::cycleCount(), DSDBManager::hasCycleCount(), MachineConnectivityCheck::totalConnectionCount(), and verboseLog.
|
private |
|
inlineprivatevirtual |
Implements DesignSpaceExplorerPlugin.
Definition at line 113 of file ConnectionSweeper.cc.
|
inlineprivate |
|
inlineprivate |
Definition at line 408 of file ConnectionSweeper.cc.
References DSDBManager::MachineConfiguration::architectureID, MachineConnectivityCheck::totalConnectionCount(), and verboseLog.
|
inlineprivate |
Definition at line 563 of file ConnectionSweeper.cc.
References TTAMachine::Connection::bus(), TTAMachine::Machine::busNavigator(), TTAMachine::Segment::detachSocket(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Component::name(), TTAMachine::Segment::parentBus(), TTAMachine::Connection::socket(), and TTAMachine::Machine::socketNavigator().
|
inlineprivate |
Removes the connections in the given set that affect the cycle count the least until the worsening threshold is reached or in case the program becomes uncompilable.
tryAllFirst | Tries to remove all connections first and if it the results fits in the cc threshold, does not try configuration with the listed connections. |
Definition at line 484 of file ConnectionSweeper.cc.
References DSDBManager::MachineConfiguration::architectureID, MachineConnectivityCheck::totalConnectionCount(), and verboseLog.
|
inlineprivatevirtual |
Implements DesignSpaceExplorerPlugin.
Definition at line 114 of file ConnectionSweeper.cc.
|
inlineprivatevirtual |
Implements DesignSpaceExplorerPlugin.
Definition at line 115 of file ConnectionSweeper.cc.
|
inlineprivatevirtual |
Implements DesignSpaceExplorerPlugin.
Definition at line 112 of file ConnectionSweeper.cc.
Sweeps the bypass connections, that is, everything else but the register file and immediate unit connections.
Definition at line 277 of file ConnectionSweeper.cc.
References DSDBManager::MachineConfiguration::architectureID, TTAMachine::Machine::busNavigator(), TTAMachine::Segment::connection(), TTAMachine::Segment::connectionCount(), TTAMachine::Machine::immediateUnitNavigator(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Component::name(), TTAMachine::Port::parentUnit(), TTAMachine::Socket::port(), TTAMachine::Machine::registerFileNavigator(), TTAMachine::Bus::segment(), TTAMachine::Connection::socket(), and verboseLog.
Sweeps the register file and immediate unit connections.
Definition at line 198 of file ConnectionSweeper.cc.
References DSDBManager::MachineConfiguration::architectureID, TTAMachine::Machine::busNavigator(), TTAMachine::Segment::connection(), TTAMachine::Segment::connectionCount(), TTAMachine::Machine::immediateUnitNavigator(), TTAMachine::Machine::Navigator< ComponentType >::item(), TTAMachine::Component::name(), TTAMachine::Port::parentUnit(), TTAMachine::Socket::port(), TTAMachine::Machine::registerFileNavigator(), TTAMachine::Bus::segment(), TTAMachine::Connection::socket(), and verboseLog.
|
private |
Definition at line 370 of file ConnectionSweeper.cc.
|
staticprivate |
Definition at line 361 of file ConnectionSweeper.cc.
|
private |
Definition at line 366 of file ConnectionSweeper.cc.
|
staticprivate |
Definition at line 360 of file ConnectionSweeper.cc.
|
private |
Definition at line 364 of file ConnectionSweeper.cc.
|
private |
Definition at line 358 of file ConnectionSweeper.cc.