The Sparta Modeling Framework
|
Class used to track operand dependencies (timed) between units. More...
#include <Scoreboard.hpp>
Classes | |
class | ScoreboardParameters |
Public Types | |
using | UnitID = uint32_t |
using | InstID = uint64_t |
using | RegisterBitMask = std::bitset< MAX_REGISTERS > |
Public Member Functions | |
Scoreboard (sparta::TreeNode *container, const ScoreboardParameters *params) | |
Construct a Scoreboard. | |
void | set (const RegisterBitMask &bits) |
Set Ready bits on the master scoreboard. | |
void | set (const RegisterBitMask &bits, UnitID producer) |
Set Ready bits on the master scoreboard. | |
void | clearBits (const RegisterBitMask &bits) |
Clear the given bits from the Scoreboard. | |
UnitID | registerView (const std::string &producer_name, ScoreboardView *view) |
Register a view with this Scoreboard based on producer's name. The producer name MUST be listed in column 0 of the latency_matrix parameter. | |
bool | isSet (const RegisterBitMask &bits) const |
Look at the master scoreboard's view of ready. | |
Public Member Functions inherited from sparta::Unit | |
Unit (TreeNode *rc, const std::string &name) | |
Construct unit with a ResouceContainer. | |
Unit (TreeNode *rc) | |
Construct unit with a ResouceContainer. | |
virtual | ~Unit () |
Destroy! | |
void | setAutoPrecedence (bool auto_p) |
Turn off auto-precedence. | |
PortSet * | getPortSet () |
Return the port set. | |
EventSet * | getEventSet () |
Return the event set. | |
StatisticSet * | getStatisticSet () |
Return the stat set. | |
Public Member Functions inherited from sparta::Resource | |
Resource (TreeNode *rc) | |
Construct resource with a resource container. | |
Resource (TreeNode *rc, const std::string &name) | |
Construct resource with a specific name and resource container. | |
Resource (const std::string &name, const Clock *clk) | |
Construct a Resource with the given name and clock having NO association with a resource container. This constructor is reserved for free-standing resources owned by other resources (not containers [TreeNodes]) | |
virtual | ~Resource () |
Destroy! | |
const Clock * | getClock () const |
Scheduler * | getScheduler (const bool must_exist=true) const |
std::string | getName () const |
TreeNode * | getContainer () |
Gets the TreeNode (container) for this resource (if any) | |
const TreeNode * | getContainer () const |
Gets the TreeNode (container) for this resource (if any) | |
ResourceContainer * | getResourceContainer () |
Gets the ResourceContainer for this resource (if any) | |
const ResourceContainer * | getResourceContainer () const |
Gets the ResourceContainer for this resource (if any) | |
virtual void | addLink (TreeNode *node, const std::string &label) |
virtual void | activateLink (const std::string &label) |
Resource (const Resource &)=delete | |
Disallow copying. | |
Resource & | operator= (const Resource &)=delete |
Static Public Attributes | |
static constexpr UnitID | INVALID_UNIT_ID = std::numeric_limits<UnitID>::max() |
static constexpr uint32_t | INVALID_LATENCY = static_cast<uint32_t>(-1) |
static constexpr uint32_t | MAX_REGISTERS = 512 |
static const char | name [] |
Name of this resource. Required by sparta::ResourceFactory. | |
Static Public Attributes inherited from sparta::Unit | |
static constexpr const char * | INFO_LOG = "info" |
static constexpr const char * | WARN_LOG = log::categories::WARN_STR |
static constexpr const char * | DEBUG_LOG = log::categories::DEBUG_STR |
Friends | |
class | ScoreboardView |
Additional Inherited Members | |
Protected Member Functions inherited from sparta::Unit | |
virtual void | onBindTreeEarly_ () override |
virtual void | onBindTreeLate_ () override |
Dump a dot. | |
Protected Attributes inherited from sparta::Unit | |
sparta::PortSet | unit_port_set_ |
The Unit's Ports. | |
sparta::EventSet | unit_event_set_ |
The Unit's event set. | |
sparta::StatisticSet | unit_stat_set_ |
The Unit's statistic set. | |
log::MessageSource | info_logger_ |
Default info logger. | |
log::MessageSource | warn_logger_ |
Default warn logger. | |
log::MessageSource | debug_logger_ |
Default debug logger. | |
Class used to track operand dependencies (timed) between units.
The Scoreboard of the model simply keeps track of the readiness of phyiscal registers in the OOO core. There are two parts to the SB:
Definition at line 41 of file Scoreboard.hpp.
using sparta::Scoreboard::InstID = uint64_t |
Definition at line 45 of file Scoreboard.hpp.
using sparta::Scoreboard::RegisterBitMask = std::bitset<MAX_REGISTERS> |
Definition at line 51 of file Scoreboard.hpp.
using sparta::Scoreboard::UnitID = uint32_t |
Definition at line 44 of file Scoreboard.hpp.
sparta::Scoreboard::Scoreboard | ( | sparta::TreeNode * | container, |
const ScoreboardParameters * | params | ||
) |
Construct a Scoreboard.
container | The TreeNode this Scoreboard belongs to |
params | The parameters of this Scoreboard |
void sparta::Scoreboard::clearBits | ( | const RegisterBitMask & | bits | ) |
Clear the given bits from the Scoreboard.
bits | The bits to clear |
A bit value of 1 is cleared (sets the Scoreboard internal value to 0). This is propogated to all of the Scoreboard Views immediately.
UnitID sparta::Scoreboard::registerView | ( | const std::string & | producer_name, |
ScoreboardView * | view | ||
) |
Register a view with this Scoreboard based on producer's name. The producer name MUST be listed in column 0 of the latency_matrix parameter.
producer_name | The name of the producer |
view | The view to register |
void sparta::Scoreboard::set | ( | const RegisterBitMask & | bits | ) |
Set Ready bits on the master scoreboard.
bits | Bits to set as ready |
A bit value of 1 means the rename is ready, 0 is not. When this function is called, it will propogate those ready bits to all registered ScoreboardViews in the machine immediately.
void sparta::Scoreboard::set | ( | const RegisterBitMask & | bits, |
UnitID | producer | ||
) |
Set Ready bits on the master scoreboard.
bits | Bits to set as ready |
producer | The unit ID of the producer |
A bit value of 1 means the rename is ready, 0 is not. When this function is called, it will propogate those ready bits to all registered ScoreboardViews in the machine using the registered latencies.
|
friend |
Definition at line 137 of file Scoreboard.hpp.
|
staticconstexpr |
Definition at line 48 of file Scoreboard.hpp.
|
staticconstexpr |
Definition at line 47 of file Scoreboard.hpp.
|
staticconstexpr |
Definition at line 49 of file Scoreboard.hpp.
|
static |
Name of this resource. Required by sparta::ResourceFactory.
Definition at line 54 of file Scoreboard.hpp.