20 uop_queue_(
"rename_uop_queue", p->rename_queue_depth,
21 node->getClock(), getStatisticSet()),
22 num_to_rename_per_cycle_(p->num_to_rename)
31 in_dispatch_queue_credits_.
39 void Rename::sendInitialCredits_()
44 void Rename::creditsDispatchQueue_(
const uint32_t & credits)
48 credits_dispatch_ += credits;
49 if (uop_queue_.
size() > 0) {
55 void Rename::handleFlush_(
const FlushManager::FlushingCriteria & criteria)
60 out_uop_queue_credits_.
send(uop_queue_.
size());
64 void Rename::decodedInstructions_(
const InstGroup & insts)
68 for(
auto & i : insts) {
74 if (credits_dispatch_ > 0) {
79 void Rename::renameInstructions_()
82 uint32_t num_rename = std::min(uop_queue_.
size(), num_to_rename_per_cycle_);
83 num_rename = std::min(credits_dispatch_, num_rename);
89 for(uint32_t i = 0; i < num_rename; ++i) {
90 insts.emplace_back(uop_queue_.
read(0));
96 out_dispatch_queue_write_.
send(insts);
97 credits_dispatch_ -= num_rename;
100 out_uop_queue_credits_.
send(num_rename);
103 if (credits_dispatch_ > 0 && (uop_queue_.
size() > 0)) {
#define sparta_assert(...)
Simple variadic assertion that will throw a sparta_exception if the condition fails.
#define SPARTA_EXPECT_FALSE(x)
A macro for hinting to the compiler a particular condition should be considered most likely false.
#define CREATE_SPARTA_HANDLER_WITH_DATA(clname, meth, dataT)
#define CREATE_SPARTA_HANDLER(clname, meth)
File that defines the StartupEvent class.
Parameters for Rename model.
static const char name[]
Name of this resource. Required by sparta::UnitFactory.
Rename(sparta::TreeNode *node, const RenameParameterSet *p)
Constructor for Rename.
bool dataReceived() const
Has this port received data (not timed)
void send(const DataT &dat, sparta::Clock::Cycle rel_time=0)
Send data to bound receivers.
size_type size() const
Return the number of valid entries.
uint32_t capacity() const
Return the fixed size of this queue.
const value_type & read(uint32_t idx) const
Read and return the data at the given index, const reference.
iterator push(const value_type &dat)
push data to the Queue.
void enableCollection(TreeNode *parent)
Request that this queue begin collecting its contents for pipeline collection.
void clear()
Empty the queue.
void pop()
Pops the data at the front of the structure (oldest element) After pop iterator always points to the ...
StartupEvent is a simple class for scheduling a starting event on the Scheduler. It does not support ...
Node in a composite tree representing a sparta Tree item.
void schedule()
Schedule this event with its pre-set delay using the pre-set Clock.
log::MessageSource info_logger_
Default info logger.
Macros for handling exponential backoff.