File commit_stage.h
File List > pipelined > commit_stage.h
Go to the documentation of this file
#pragma once
#include <cstdint>
#include <vector>
#include "sim/queue.h"
#include "sm/instr_ptr.h"
#include "sm/pipelined/pipelined.h"
namespace simtix {
namespace pipelined {
class CommitStage {
public:
CommitStage(PipelinedSMImpl *sm, const PipelinedSM::Param &p);
~CommitStage() = default;
void Commit();
void Reset();
protected:
void AcceptPendingCommitRequests();
void RetireReadyCommitReqeusts();
PipelinedSMImpl *const sm_;
sim::SizedQueue<uint32_t> free_commit_buf_ids_;
std::vector<uint32_t> pending_commit_buf_ids_;
std::vector<InstrPtr> commit_buf_;
const uint32_t kCommitWidth;
};
} // namespace pipelined
} // namespace simtix