[71] | 1 | #ifndef MEMORYREQUEST_H |
---|
| 2 | #define MEMORYREQUEST_H |
---|
| 3 | |
---|
| 4 | #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h" |
---|
| 5 | |
---|
| 6 | //========================================================={MemoryRequest_t} |
---|
| 7 | class MemoryRequest_t |
---|
| 8 | { |
---|
| 9 | public : double _cycle ; |
---|
| 10 | public : morpheo::behavioural::Tcontext_t _context_id ; |
---|
| 11 | public : morpheo::behavioural::Tcontext_t _front_end_id ; |
---|
| 12 | public : morpheo::behavioural::Tcontext_t _ooo_engine_id ; |
---|
| 13 | public : morpheo::behavioural::Tpacket_t _packet_id ; |
---|
| 14 | public : morpheo::behavioural::Toperation_t _operation ; |
---|
| 15 | public : morpheo::behavioural::Ttype_t _type ; |
---|
| 16 | public : morpheo::behavioural::Tlsq_ptr_t _store_queue_ptr_write; |
---|
| 17 | public : morpheo::behavioural::Tlsq_ptr_t _load_queue_ptr_write ; |
---|
| 18 | public : morpheo::behavioural::Tgeneral_data_t _immediat ; |
---|
| 19 | public : morpheo::behavioural::Tgeneral_data_t _data_ra ; |
---|
| 20 | public : morpheo::behavioural::Tgeneral_data_t _data_rb ; |
---|
| 21 | public : morpheo::behavioural::Tcontrol_t _write_rd ; |
---|
| 22 | public : morpheo::behavioural::Tgeneral_address_t _num_reg_rd ; |
---|
| 23 | public : bool _write_spec_ko ; |
---|
| 24 | public : bool _previous_load_speculative; |
---|
| 25 | public : morpheo::behavioural::Tgeneral_data_t _data_wait ; |
---|
| 26 | |
---|
| 27 | MemoryRequest_t (void) |
---|
| 28 | { |
---|
| 29 | _cycle = 0; |
---|
| 30 | _context_id = 0; |
---|
| 31 | _front_end_id = 0; |
---|
| 32 | _ooo_engine_id = 0; |
---|
| 33 | _packet_id = 0; |
---|
| 34 | _operation = 0; |
---|
| 35 | _type = 0; |
---|
| 36 | _store_queue_ptr_write = 0; |
---|
| 37 | _load_queue_ptr_write = 0; |
---|
| 38 | _immediat = 0; |
---|
| 39 | _data_ra = 0; |
---|
| 40 | _data_rb = 0; |
---|
| 41 | _write_rd = 0; |
---|
| 42 | _num_reg_rd = 0; |
---|
| 43 | _write_spec_ko = 0; |
---|
| 44 | _previous_load_speculative = 0; |
---|
| 45 | _data_wait = 0; |
---|
| 46 | }; |
---|
| 47 | |
---|
| 48 | MemoryRequest_t (double cycle , |
---|
| 49 | morpheo::behavioural::Tcontext_t context_id , |
---|
| 50 | morpheo::behavioural::Tcontext_t front_end_id , |
---|
| 51 | morpheo::behavioural::Tcontext_t ooo_engine_id , |
---|
| 52 | morpheo::behavioural::Tpacket_t packet_id , |
---|
| 53 | morpheo::behavioural::Toperation_t operation , |
---|
| 54 | morpheo::behavioural::Ttype_t type , |
---|
| 55 | morpheo::behavioural::Tlsq_ptr_t store_queue_ptr_write, |
---|
| 56 | morpheo::behavioural::Tlsq_ptr_t load_queue_ptr_write , |
---|
| 57 | morpheo::behavioural::Tgeneral_data_t immediat , |
---|
| 58 | morpheo::behavioural::Tgeneral_data_t data_ra , |
---|
| 59 | morpheo::behavioural::Tgeneral_data_t data_rb , |
---|
| 60 | morpheo::behavioural::Tcontrol_t write_rd , |
---|
| 61 | morpheo::behavioural::Tgeneral_address_t num_reg_rd , |
---|
| 62 | bool write_spec_ko , |
---|
| 63 | morpheo::behavioural::Tgeneral_data_t data_wait=0) |
---|
| 64 | { |
---|
| 65 | _cycle = cycle ; |
---|
| 66 | _context_id = context_id ; |
---|
| 67 | _front_end_id = front_end_id ; |
---|
| 68 | _ooo_engine_id = ooo_engine_id ; |
---|
| 69 | _packet_id = packet_id ; |
---|
| 70 | _operation = operation ; |
---|
| 71 | _type = type ; |
---|
| 72 | _store_queue_ptr_write = store_queue_ptr_write; |
---|
| 73 | _load_queue_ptr_write = load_queue_ptr_write ; |
---|
| 74 | _immediat = immediat ; |
---|
| 75 | _data_ra = data_ra ; |
---|
| 76 | _data_rb = data_rb ; |
---|
| 77 | _write_rd = write_rd ; |
---|
| 78 | _num_reg_rd = num_reg_rd ; |
---|
| 79 | _write_spec_ko = write_spec_ko ; |
---|
| 80 | _previous_load_speculative = 0; |
---|
| 81 | _data_wait = data_wait ; |
---|
| 82 | } |
---|
| 83 | |
---|
| 84 | void modif (double cycle , |
---|
| 85 | morpheo::behavioural::Tcontext_t context_id , |
---|
| 86 | morpheo::behavioural::Tcontext_t front_end_id , |
---|
| 87 | morpheo::behavioural::Tcontext_t ooo_engine_id , |
---|
| 88 | morpheo::behavioural::Tpacket_t packet_id , |
---|
| 89 | morpheo::behavioural::Toperation_t operation , |
---|
| 90 | morpheo::behavioural::Ttype_t type , |
---|
| 91 | morpheo::behavioural::Tlsq_ptr_t store_queue_ptr_write, |
---|
| 92 | morpheo::behavioural::Tlsq_ptr_t load_queue_ptr_write , |
---|
| 93 | morpheo::behavioural::Tgeneral_data_t immediat , |
---|
| 94 | morpheo::behavioural::Tgeneral_data_t data_ra , |
---|
| 95 | morpheo::behavioural::Tgeneral_data_t data_rb , |
---|
| 96 | morpheo::behavioural::Tcontrol_t write_rd , |
---|
| 97 | morpheo::behavioural::Tgeneral_address_t num_reg_rd , |
---|
| 98 | bool write_spec_ko , |
---|
| 99 | morpheo::behavioural::Tgeneral_data_t data_wait=0 ) |
---|
| 100 | { |
---|
| 101 | _cycle = cycle ; |
---|
| 102 | _context_id = context_id ; |
---|
| 103 | _front_end_id = front_end_id ; |
---|
| 104 | _ooo_engine_id = ooo_engine_id ; |
---|
| 105 | _packet_id = packet_id ; |
---|
| 106 | _operation = operation ; |
---|
| 107 | _type = type ; |
---|
| 108 | _store_queue_ptr_write = store_queue_ptr_write; |
---|
| 109 | _load_queue_ptr_write = load_queue_ptr_write ; |
---|
| 110 | _immediat = immediat ; |
---|
| 111 | _data_ra = data_ra ; |
---|
| 112 | _data_rb = data_rb ; |
---|
| 113 | _write_rd = write_rd ; |
---|
| 114 | _num_reg_rd = num_reg_rd ; |
---|
| 115 | _write_spec_ko = write_spec_ko ; |
---|
| 116 | _previous_load_speculative = 0; |
---|
| 117 | _data_wait = data_wait ; |
---|
| 118 | } |
---|
| 119 | |
---|
| 120 | bool operator< (const MemoryRequest_t & right) const |
---|
| 121 | { |
---|
| 122 | return _cycle > right._cycle; |
---|
| 123 | } |
---|
| 124 | |
---|
| 125 | friend std::ostream& operator<<(std::ostream & os, const MemoryRequest_t & x) |
---|
| 126 | { |
---|
| 127 | return os << "<" << morpheo::toString(x._cycle) << "> : " |
---|
[75] | 128 | << "{" << morpheo::toString(static_cast<uint32_t>(x._packet_id)) << "}" << std::endl |
---|
| 129 | << "\t * context / front_end / ooo_engine : " << morpheo::toString(static_cast<uint32_t>(x._context_id )) << " - " << morpheo::toString(static_cast<uint32_t>(x._front_end_id )) << " - " << morpheo::toString(static_cast<uint32_t>(x._ooo_engine_id)) << std::endl |
---|
| 130 | << "\t * operation / type / write_spec_ko : " << morpheo::toString(static_cast<uint32_t>(x._operation)) << " " << morpheo::toString(static_cast<uint32_t>(x._type)) << " " << morpheo::toString(static_cast<uint32_t>(x._write_spec_ko)) << std::endl |
---|
| 131 | << "\t * ptr_write store/load : " << morpheo::toString(static_cast<uint32_t>(x._store_queue_ptr_write)) << " " << morpheo::toString(static_cast<uint32_t>(x._load_queue_ptr_write)) << std::endl |
---|
| 132 | << "\t * immediat / data_ra / data_rb : " << morpheo::toString(static_cast<uint32_t>(x._immediat)) << " - " << morpheo::toString(static_cast<uint32_t>(x._data_ra)) << " - " << morpheo::toString(static_cast<uint32_t>(x._data_rb)) << std::endl |
---|
| 133 | << "\t * write_rd / num_reg_rd : " << morpheo::toString(static_cast<uint32_t>(x._write_rd)) << " " << morpheo::toString(static_cast<uint32_t>(x._num_reg_rd)) << std::endl |
---|
| 134 | << "\t * data_wait : " << morpheo::toString(static_cast<uint32_t>(x._data_wait)) << std::endl; |
---|
[71] | 135 | } |
---|
| 136 | |
---|
| 137 | }; |
---|
| 138 | |
---|
| 139 | #endif |
---|