27 #include <string_view>
40 using namespace std::literals::string_view_literals;
48 uint64_t RQ_ACCESS = 0;
49 uint64_t RQ_MERGED = 0;
51 uint64_t RQ_TO_CACHE = 0;
52 uint64_t PQ_ACCESS = 0;
53 uint64_t PQ_MERGED = 0;
55 uint64_t PQ_TO_CACHE = 0;
56 uint64_t WQ_ACCESS = 0;
57 uint64_t WQ_MERGED = 0;
59 uint64_t WQ_TO_CACHE = 0;
60 uint64_t WQ_FORWARD = 0;
66 bool forward_checked =
false;
67 bool is_translated =
true;
68 bool response_requested =
true;
70 uint8_t asid[2] = {std::numeric_limits<uint8_t>::max(), std::numeric_limits<uint8_t>::max()};
73 uint32_t pf_metadata = 0;
74 uint32_t cpu = std::numeric_limits<uint32_t>::max();
77 uint64_t v_address = 0;
79 uint64_t instr_id = 0;
82 std::vector<std::reference_wrapper<ooo_model_instr>> instr_depend_on_me{};
89 uint32_t pf_metadata = 0;
90 std::vector<std::reference_wrapper<ooo_model_instr>> instr_depend_on_me{};
92 response(uint64_t addr, uint64_t v_addr, uint64_t data_, uint32_t pf_meta, std::vector<std::reference_wrapper<ooo_model_instr>> deps)
93 : address(addr), v_address(v_addr), data(data_), pf_metadata(pf_meta), instr_depend_on_me(deps)
96 explicit response(
request req) :
response(req.address, req.v_address, req.data, req.pf_metadata, req.instr_depend_on_me) {}
100 bool do_add_queue(R& queue, std::size_t queue_size,
const typename R::value_type& packet);
102 std::size_t RQ_SIZE = std::numeric_limits<std::size_t>::max();
103 std::size_t PQ_SIZE = std::numeric_limits<std::size_t>::max();
104 std::size_t WQ_SIZE = std::numeric_limits<std::size_t>::max();
105 unsigned OFFSET_BITS = 0;
106 bool match_offset_bits =
false;
113 std::deque<request_type> RQ{}, PQ{}, WQ{};
114 std::deque<response_type> returned{};
119 channel(std::size_t rq_size, std::size_t pq_size, std::size_t wq_size,
unsigned offset_bits,
bool match_offset);
125 std::size_t rq_occupancy()
const;
126 std::size_t wq_occupancy()
const;
127 std::size_t pq_occupancy()
const;
129 std::size_t rq_size()
const;
130 std::size_t wq_size()
const;
131 std::size_t pq_size()
const;
133 void check_collision();
constexpr std::array< std::string_view, static_cast< std::size_t >access_type::NUM_TYPES)> access_type_names
Definition: channel.h:41
access_type
Definition: channel.h:31
Definition: champsim.h:24
response(request req)
Definition: channel.h:96
uint64_t v_address
Definition: channel.h:87
uint64_t address
Definition: channel.h:86
response(uint64_t addr, uint64_t v_addr, uint64_t data_, uint32_t pf_meta, std::vector< std::reference_wrapper< ooo_model_instr >> deps)
Definition: channel.h:92
uint64_t data
Definition: channel.h:88
Definition: instruction.h:41