OpenASIP 2.2
|
Private Types | |
typedef std::map< const EntryKeyProperty *, CostDBTypes::MatchTypeTable > | MatchTypeMap |
Search type for each entry type. | |
Private Member Functions | |
void | initializeEstimator (const HDBManager &hdb) |
CostDBTypes::EntryTable | createSearch (const BaseRegisterFile &rf) const |
void | createSearchTypes () |
Private Attributes | |
CostDatabaseRegistry * | costDatabaseRegistry_ |
Registry of cost databases. | |
CostDatabase * | costdb_ |
Cost database being used. | |
SearchStrategy * | strategy_ |
Search strategy to be used with the cost database. | |
EntryKeyProperty * | rfileProperty_ |
Entry key property of register file. | |
MatchTypeMap | searchTypes_ |
Types of matches used for searching entries from the cost database. | |
CostDBTypes::MatchTypeTable | interpMatchType_ |
Table of types of match. | |
Additional Inherited Members | |
![]() | |
std::string | name_ |
the name of the plugin class in the HDB; used to identify cost data | |
Definition at line 55 of file InterpolatingRFEstimator.cc.
|
private |
Search type for each entry type.
Definition at line 414 of file InterpolatingRFEstimator.cc.
|
inline |
Definition at line 57 of file InterpolatingRFEstimator.cc.
References costDatabaseRegistry_, and CostDatabaseRegistry::instance().
|
inlinevirtual |
Definition at line 62 of file InterpolatingRFEstimator.cc.
|
inlineprivate |
Creates a search to cost database to find entries matching the given register file.
rf | Register file which matches are searched. |
Definition at line 444 of file InterpolatingRFEstimator.cc.
References CostDBEntryKey::addField(), HDB::RFArchitecture::bidirPortCount(), costdb_, CostDBTypes::EKF_BIDIR_PORTS, CostDBTypes::EKF_BIT_WIDTH, CostDBTypes::EKF_GUARD_LATENCY, CostDBTypes::EKF_GUARD_SUPPORT, CostDBTypes::EKF_LATENCY, CostDBTypes::EKF_MAX_READS, CostDBTypes::EKF_MAX_WRITES, CostDBTypes::EKF_NUM_REGISTERS, CostDBTypes::EKF_READ_PORTS, CostDBTypes::EKF_WRITE_PORTS, EntryKeyProperty::fieldProperty(), HDB::RFArchitecture::guardLatency(), HDB::RFArchitecture::hasGuardSupport(), interpMatchType_, HDB::RFArchitecture::latency(), HDB::RFArchitecture::maxReads(), HDB::RFArchitecture::maxWrites(), HDB::RFArchitecture::readPortCount(), rfileProperty_, CostDatabase::search(), HDB::RFArchitecture::size(), HDB::RFArchitecture::width(), and HDB::RFArchitecture::writePortCount().
Referenced by estimateArea(), estimateEnergy(), estimateMaximumComputationDelay(), estimatePortReadDelay(), and estimatePortWriteDelay().
|
inlineprivate |
Creates types of matches used for searching cost database entries.
Definition at line 516 of file InterpolatingRFEstimator.cc.
References CostDBTypes::EKF_BIDIR_PORTS, CostDBTypes::EKF_BIT_WIDTH, CostDBTypes::EKF_GUARD_LATENCY, CostDBTypes::EKF_GUARD_SUPPORT, CostDBTypes::EKF_LATENCY, CostDBTypes::EKF_MAX_READS, CostDBTypes::EKF_MAX_WRITES, CostDBTypes::EKF_NUM_REGISTERS, CostDBTypes::EKF_READ_PORTS, CostDBTypes::EKF_WRITE_PORTS, EntryKeyProperty::fieldProperty(), interpMatchType_, CostDBTypes::MATCH_EXACT, CostDBTypes::MATCH_INTERPOLATION, and rfileProperty_.
Referenced by initializeEstimator().
InterpolatingRFEstimator::DESCRIPTION | ( | "RF cost estimator plugin that estimates costs of RFs by generating" "cost database from cost values of HDB and uses interpolation to " "estimate the costs. In case there's no cost data available for the " "given RF the plugin interpolates the estimate if possible." | ) |
|
inlinevirtual |
Estimates the register file's area by fetching cost data named 'area' from HDB.
Reimplemented from CostEstimator::RFCostEstimationPlugin.
Definition at line 77 of file InterpolatingRFEstimator.cc.
References createSearch(), Exception::fileName(), initializeEstimator(), Exception::lineNum(), Application::logStream(), and TTAMachine::Component::name().
|
inlinevirtual |
Estimates the energy consumed by given RF.
Estimate is done by computing the sum of all register file access type energies and RF idle energy. Register file access energies are stored with entries named 'rf_access_energy Nr Nw'. Nr is the number of read accesses, Nw the number of write accesses. For example, 'rf_access_energy 1 3' is the name of entry which tells how much energy is consumed by the RF in case RF is accessed simultaneously once for reading and trice for writing. Idle energy is stored in entry 'rf_idle_energy'.
Reimplemented from CostEstimator::RFCostEstimationPlugin.
Definition at line 268 of file InterpolatingRFEstimator.cc.
References createSearch(), debugLog, Exception::errorMessage(), initializeEstimator(), Application::logStream(), TTAMachine::Component::name(), ExecutionTrace::registerFileAccessCounts(), ExecutionTrace::simulatedCycleCount(), Conversion::toString(), and trace.
|
inlinevirtual |
Estimates the register file maximum computation delay by fetching cost data named 'computation_delay' from HDB.
Reimplemented from CostEstimator::RFCostEstimationPlugin.
Definition at line 225 of file InterpolatingRFEstimator.cc.
References createSearch(), initializeEstimator(), Application::logStream(), and TTAMachine::Component::name().
|
inlinevirtual |
Estimates the register file port read delay by fetching cost data named 'output_delay' from HDB.
Assumes that all ports have the same output delay, that is, there is only one 'output_delay' entry for a RF in HDB.
Reimplemented from CostEstimator::RFCostEstimationPlugin.
Definition at line 175 of file InterpolatingRFEstimator.cc.
References createSearch(), initializeEstimator(), Application::logStream(), TTAMachine::Component::name(), TTAMachine::Port::name(), and TTAMachine::RFPort::parentUnit().
|
inlinevirtual |
Estimates the register file port write delay by fetching cost data named 'input_delay' from HDB.
Assumes that all ports have the same input delay, that is, there is only one 'input_delay' entry for a RF in HDB.
Reimplemented from CostEstimator::RFCostEstimationPlugin.
Definition at line 121 of file InterpolatingRFEstimator.cc.
References createSearch(), initializeEstimator(), Application::logStream(), TTAMachine::Component::name(), TTAMachine::Port::name(), and TTAMachine::RFPort::parentUnit().
|
inlineprivate |
Initializes the plugin.
hdb | The HDB to be used in searching entries. Cost database is created in basis of this HDB. |
Definition at line 427 of file InterpolatingRFEstimator.cc.
References CostDatabaseRegistry::costDatabase(), costDatabaseRegistry_, costdb_, createSearchTypes(), CostDBTypes::EK_RFILE, EntryKeyProperty::find(), rfileProperty_, CostDatabase::setSearchStrategy(), and strategy_.
Referenced by estimateArea(), estimateEnergy(), estimateMaximumComputationDelay(), estimatePortReadDelay(), and estimatePortWriteDelay().
|
private |
Registry of cost databases.
Definition at line 405 of file InterpolatingRFEstimator.cc.
Referenced by initializeEstimator(), and InterpolatingRFEstimator().
|
private |
Cost database being used.
Definition at line 407 of file InterpolatingRFEstimator.cc.
Referenced by createSearch(), and initializeEstimator().
|
private |
Table of types of match.
Definition at line 418 of file InterpolatingRFEstimator.cc.
Referenced by createSearch(), and createSearchTypes().
|
private |
Entry key property of register file.
Definition at line 411 of file InterpolatingRFEstimator.cc.
Referenced by createSearch(), createSearchTypes(), and initializeEstimator().
|
private |
Types of matches used for searching entries from the cost database.
Definition at line 416 of file InterpolatingRFEstimator.cc.
|
private |
Search strategy to be used with the cost database.
Definition at line 409 of file InterpolatingRFEstimator.cc.
Referenced by initializeEstimator().