Changeset 110 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit
- Timestamp:
- Feb 19, 2009, 5:31:47 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit
- Files:
-
- 2 added
- 27 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/configuration.cfg
r81 r110 5 5 2 4 *2 # size_store_queue [0] [nb_load_store_queue] 6 6 1 4 *2 # size_load_queue [0] [nb_load_store_queue] 7 1 4 *4 # nb_inst_memory [0] [nb_load_store_queue] 7 8 0 0 +1 # link_load_store_unit_with_thread [0][0] [nb_front_end][nb_context] 8 9 1 4 *4 # nb_inst_insert -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/SelfTest/src/main.cpp
r88 r110 19 19 err (_(" * size_store_queue [nb_load_store_queue] (uint32_t)\n")); 20 20 err (_(" * size_load_queue [nb_load_store_queue] (uint32_t)\n")); 21 err (_(" * nb_inst_memory [nb_load_store_queue] (uint32_t)\n")); 21 22 err (_(" * link_load_store_unit_with_thread [nb_front_end][nb_context](uint32_t)\n")); 22 23 err (_(" * nb_inst_insert (uint32_t)\n")); … … 53 54 uint32_t _nb_load_store_queue = fromString<uint32_t>(argv[x++]); 54 55 55 if (argc != static_cast<int>(2+NB_PARAMS+_nb_front_end+ 2*_nb_load_store_queue+nb_thread))56 if (argc != static_cast<int>(2+NB_PARAMS+_nb_front_end+3*_nb_load_store_queue+nb_thread)) 56 57 usage (argc, argv); 57 58 58 59 uint32_t * _size_store_queue = new uint32_t [_nb_load_store_queue]; 59 60 uint32_t * _size_load_queue = new uint32_t [_nb_load_store_queue]; 61 uint32_t * _nb_inst_memory = new uint32_t [_nb_load_store_queue]; 60 62 61 63 for (uint32_t i=0; i<_nb_load_store_queue; i++) … … 63 65 for (uint32_t i=0; i<_nb_load_store_queue; i++) 64 66 _size_load_queue [i] = atoi(argv[x++]); 67 for (uint32_t i=0; i<_nb_load_store_queue; i++) 68 _nb_inst_memory [i] = atoi(argv[x++]); 65 69 66 70 uint32_t ** _link_load_store_unit_with_thread = new uint32_t * [_nb_front_end]; … … 84 88 _size_store_queue , 85 89 _size_load_queue , 90 _nb_inst_memory , 86 91 _link_load_store_unit_with_thread, 87 92 _nb_inst_insert , -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/include/Parameters.h
r88 r110 29 29 public : uint32_t * _size_store_queue ; //[nb_load_store_queue] 30 30 public : uint32_t * _size_load_queue ; //[nb_load_store_queue] 31 public : uint32_t * _nb_inst_memory ; //[nb_load_store_queue] 31 32 public : uint32_t ** _link_load_store_unit_with_thread; //[nb_front_end][nb_context] 32 33 public : uint32_t _nb_inst_insert ; 33 34 public : uint32_t _nb_inst_retire ; 35 36 public : uint32_t _max_size_store_queue ; 37 public : uint32_t _max_size_load_queue ; 34 38 35 39 //public : uint32_t _size_front_end_id ; … … 50 54 uint32_t * size_store_queue , 51 55 uint32_t * size_load_queue , 56 uint32_t * nb_inst_memory , 52 57 uint32_t ** link_load_store_unit_with_thread, 53 58 uint32_t nb_inst_insert , -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_insert.cpp
r81 r110 22 22 void Load_Store_pointer_unit::genMealy_insert (void) 23 23 { 24 log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin"); 24 log_begin(Load_Store_pointer_unit,FUNCTION); 25 log_function(Load_Store_pointer_unit,FUNCTION,_name.c_str()); 25 26 26 bool use_lsq [_param->_nb_load_store_queue]; 27 // TODO : limité à nb_inst_memory le nombre d'accès par lsq !!! 28 29 uint32_t nb_use_lsq [_param->_nb_load_store_queue]; 30 Tlsq_ptr_t STORE_QUEUE_PTR_WRITE [_param->_nb_load_store_queue]; 31 bool STORE_QUEUE_USE [_param->_nb_load_store_queue][_param->_max_size_store_queue]; 32 Tlsq_ptr_t STORE_QUEUE_NB_USE [_param->_nb_load_store_queue]; 33 Tlsq_ptr_t LOAD_QUEUE_PTR_WRITE [_param->_nb_load_store_queue]; 34 bool LOAD_QUEUE_USE [_param->_nb_load_store_queue][_param->_max_size_load_queue]; 35 27 36 for (uint32_t i=0; i<_param->_nb_load_store_queue; i++) 28 use_lsq [i] = false; 37 { 38 nb_use_lsq [i] = _param->_nb_inst_memory[i]; 39 40 STORE_QUEUE_PTR_WRITE [i] = reg_STORE_QUEUE_PTR_WRITE [i]; 41 STORE_QUEUE_NB_USE [i] = reg_STORE_QUEUE_NB_USE [i]; 42 LOAD_QUEUE_PTR_WRITE [i] = reg_LOAD_QUEUE_PTR_WRITE [i]; 43 44 for (uint32_t j=0; j<_param->_size_store_queue[i]; j++) 45 STORE_QUEUE_USE [i][j] = reg_STORE_QUEUE_USE [i][j]; 46 for (uint32_t j=0; j<_param->_size_load_queue[i]; j++) 47 LOAD_QUEUE_USE [i][j] = reg_LOAD_QUEUE_USE [i][j]; 48 } 29 49 30 50 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 31 51 { 52 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * INSERT [%d]",i); 53 32 54 Tcontrol_t ack = false; 33 Tlsq_ptr_t store_queue_ptr_write = 0;34 Tlsq_ptr_t load_queue_ptr_write = 0;35 55 36 56 if ( (PORT_READ(in_INSERT_VAL [i]) == true ) and 37 57 (PORT_READ(in_INSERT_TYPE [i]) == TYPE_MEMORY)) 38 58 { 59 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * type is memory"); 60 39 61 Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_INSERT_FRONT_END_ID [i]):0; 40 62 Tcontext_t context_id = (_param->_have_port_context_id )?PORT_READ(in_INSERT_CONTEXT_ID [i]):0; 41 42 63 uint32_t lsq = _param->_link_load_store_unit_with_thread[front_end_id][context_id]; 64 65 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * front_end_id : %d",front_end_id); 66 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * context_id : %d",context_id ); 67 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * lsq : %d",lsq ); 43 68 44 69 // Test if a previous instruction use the same lsq 45 70 // Authorize once memory access by load store unit 46 if ( use_lsq [lsq] == false)71 if (nb_use_lsq [lsq] > 0) 47 72 { 48 use_lsq [lsq] = true;73 nb_use_lsq [lsq] --; 49 74 50 75 uint32_t ptr; 51 52 store_queue_ptr_write = reg_STORE_QUEUE_PTR_WRITE [lsq]; 53 load_queue_ptr_write = reg_LOAD_QUEUE_PTR_WRITE [lsq]; 76 77 PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_WRITE [i], STORE_QUEUE_PTR_WRITE [lsq]); 78 if (_param->_have_port_load_queue_ptr) 79 PORT_WRITE(out_INSERT_LOAD_QUEUE_PTR_WRITE [i], LOAD_QUEUE_PTR_WRITE [lsq]); 80 81 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * sq_ptr_write : %d",STORE_QUEUE_PTR_WRITE [lsq]); 82 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * lq_ptr_write : %d",LOAD_QUEUE_PTR_WRITE [lsq]); 54 83 55 84 // operation became of decod_stage. Also operation is != store_head_ok and store_head_ko 56 85 if (is_operation_memory_store(PORT_READ(in_INSERT_OPERATION [i]))) 57 86 { 87 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * USE_STORE_QUEUE"); 88 58 89 internal_INSERT_OPERATION_USE [i] = OPERATION_USE_STORE_QUEUE; 59 90 60 ptr = reg_STORE_QUEUE_PTR_WRITE [lsq]; 91 ptr = STORE_QUEUE_PTR_WRITE [lsq]; 92 ack = not STORE_QUEUE_USE [lsq][ptr] and (static_cast<uint32_t>(STORE_QUEUE_NB_USE [lsq]+1) < _param->_size_store_queue[lsq]); 61 93 62 ack = not reg_STORE_QUEUE_USE [lsq][ptr] and (static_cast<uint32_t>(reg_STORE_QUEUE_NB_USE [lsq]+1) < _param->_size_store_queue[lsq]); 94 if (ack) 95 { 96 STORE_QUEUE_PTR_WRITE [lsq] = (ptr+1)%_param->_size_store_queue[lsq]; 97 STORE_QUEUE_NB_USE [lsq] ++; 98 STORE_QUEUE_USE [lsq][ptr] = true; 99 } 63 100 } 64 101 else 65 102 { 103 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * USE_LOAD_QUEUE"); 104 66 105 internal_INSERT_OPERATION_USE [i] = OPERATION_USE_LOAD_QUEUE; 67 106 68 ptr = reg_LOAD_QUEUE_PTR_WRITE [lsq]; 107 ptr = LOAD_QUEUE_PTR_WRITE [lsq]; 108 ack = (not LOAD_QUEUE_USE [lsq][ptr]); 69 109 70 ack = (not reg_LOAD_QUEUE_USE [lsq][ptr]); 110 if (ack) 111 { 112 LOAD_QUEUE_PTR_WRITE [lsq] = (ptr+1)%_param->_size_load_queue[lsq]; 113 LOAD_QUEUE_USE [lsq][ptr] = true; 114 } 71 115 } 116 117 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * ptr : %d",ptr ); 118 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * ack : %d",ack ); 72 119 73 120 internal_INSERT_LSQ [i] = lsq; … … 85 132 internal_INSERT_ACK [i] = ack; 86 133 PORT_WRITE(out_INSERT_ACK [i], ack); 87 PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_WRITE [i], store_queue_ptr_write);88 if (_param->_have_port_load_queue_ptr)89 PORT_WRITE(out_INSERT_LOAD_QUEUE_PTR_WRITE [i], load_queue_ptr_write );90 134 } 91 135 92 log_ printf(FUNC,Load_Store_pointer_unit,FUNCTION,"End");136 log_end(Load_Store_pointer_unit,FUNCTION); 93 137 }; 94 138 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_retire.cpp
r88 r110 24 24 log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin"); 25 25 26 bool use_lsq [_param->_nb_load_store_queue];27 for (uint32_t i=0; i<_param->_nb_load_store_queue; i++)28 use_lsq [i] = false;26 // bool use_lsq [_param->_nb_load_store_queue]; 27 // for (uint32_t i=0; i<_param->_nb_load_store_queue; i++) 28 // use_lsq [i] = false; 29 29 30 30 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 31 31 { 32 Tcontrol_t ack = false;32 Tcontrol_t ack = true; // always accept 33 33 Tcontrol_t use_sq = PORT_READ(in_RETIRE_USE_STORE_QUEUE [i]); 34 34 Tcontrol_t use_lq = PORT_READ(in_RETIRE_USE_LOAD_QUEUE [i]); … … 41 41 42 42 // Test if a previous instruction use the same lsq 43 // Authorize once memory access by load store unit44 if (use_lsq [lsq] == false)43 // // Authorize once memory access by load store unit 44 // if (use_lsq [lsq] == false) 45 45 { 46 use_lsq [lsq] = true;47 ack = true;46 // use_lsq [lsq] = true; 47 // ack = true; 48 48 49 49 uint32_t ptr; … … 70 70 else 71 71 { 72 ack = true;72 // ack = true; 73 73 74 74 internal_RETIRE_OPERATION_USE [i] = OPERATION_USE_NONE; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_transition.cpp
r81 r110 22 22 void Load_Store_pointer_unit::transition (void) 23 23 { 24 log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin"); 24 log_begin(Load_Store_pointer_unit,FUNCTION); 25 log_function(Load_Store_pointer_unit,FUNCTION,_name.c_str()); 25 26 26 27 if (PORT_READ(in_NRESET) == 0) … … 47 48 if (PORT_READ(in_INSERT_VAL [i]) and internal_INSERT_ACK [i]) 48 49 { 49 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"INSERT [%d]",i);50 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * INSERT [%d]",i); 50 51 51 52 switch (internal_INSERT_OPERATION_USE [i]) … … 53 54 case OPERATION_USE_STORE_QUEUE : 54 55 { 55 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* use STORE_QUEUE");56 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * use STORE_QUEUE"); 56 57 57 58 uint32_t lsq = internal_INSERT_LSQ [i]; 58 59 Tlsq_ptr_t ptr = internal_INSERT_PTR [i]; 59 60 60 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* lsq : %d",lsq);61 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* ptr : %d",ptr);61 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * lsq : %d",lsq); 62 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * ptr : %d",ptr); 62 63 63 64 reg_STORE_QUEUE_PTR_WRITE [lsq] = (ptr+1)%_param->_size_store_queue[lsq]; … … 69 70 case OPERATION_USE_LOAD_QUEUE : 70 71 { 71 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* use LOAD_QUEUE");72 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * use LOAD_QUEUE"); 72 73 73 74 uint32_t lsq = internal_INSERT_LSQ [i]; 74 75 Tlsq_ptr_t ptr = internal_INSERT_PTR [i]; 75 76 76 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* lsq : %d",lsq);77 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* ptr : %d",ptr);77 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * lsq : %d",lsq); 78 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * ptr : %d",ptr); 78 79 79 80 reg_LOAD_QUEUE_PTR_WRITE [lsq] = (ptr+1)%_param->_size_load_queue[lsq]; … … 95 96 if (PORT_READ(in_RETIRE_VAL [i]) and internal_RETIRE_ACK [i]) 96 97 { 97 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"RETIRE [%d]",i);98 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * RETIRE [%d]",i); 98 99 99 100 switch (internal_RETIRE_OPERATION_USE [i]) … … 101 102 case OPERATION_USE_STORE_QUEUE : 102 103 { 103 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* use STORE_QUEUE");104 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * use STORE_QUEUE"); 104 105 105 106 uint32_t lsq = internal_RETIRE_LSQ [i]; 106 107 Tlsq_ptr_t ptr = internal_RETIRE_PTR [i]; 107 108 108 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* lsq : %d",lsq);109 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* ptr : %d",ptr);109 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * lsq : %d",lsq); 110 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * ptr : %d",ptr); 110 111 111 112 // reg_STORE_QUEUE_PTR_WRITE [lsq] = ((ptr==0)?_param->_size_store_queue[lsq]:ptr)-1; … … 117 118 case OPERATION_USE_LOAD_QUEUE : 118 119 { 119 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* use LOAD_QUEUE");120 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * use LOAD_QUEUE"); 120 121 121 122 uint32_t lsq = internal_RETIRE_LSQ [i]; 122 123 Tlsq_ptr_t ptr = internal_RETIRE_PTR [i]; 123 124 124 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* lsq : %d",lsq);125 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"* ptr : %d",ptr);125 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * lsq : %d",lsq); 126 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * ptr : %d",ptr); 126 127 127 128 // reg_LOAD_QUEUE_PTR_WRITE [lsq] = ((ptr==0)?_param->_size_load_queue[lsq]:ptr)-1; … … 138 139 } 139 140 141 // =================================================================== 142 // =====[ OTHER ]===================================================== 143 // =================================================================== 140 144 141 // for (uint32_t i=0; i<_param->_nb_load_store_queue; i++) 142 // { 143 // std::string str; 144 145 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"LOAD_STORE_QUEUE [%d]",i); 146 147 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * STORE_QUEUE_PTR_WRITE : %d",reg_STORE_QUEUE_PTR_WRITE [i]); 148 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * STORE_QUEUE_NB_USE : %d",reg_STORE_QUEUE_NB_USE [i]); 149 150 // str = ""; 151 // for (uint32_t j=0; j<_param->_size_store_queue[i]; j++) 152 // str += toString(reg_STORE_QUEUE_USE [i][j]) + " "; 153 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * %s",str.c_str()); 154 155 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * LOAD_QUEUE_PTR_WRITE : %d",reg_LOAD_QUEUE_PTR_WRITE [i]); 156 157 // str = ""; 158 // for (uint32_t j=0; j<_param->_size_load_queue[i]; j++) 159 // str += toString(reg_LOAD_QUEUE_USE [i][j]) + " "; 160 // log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * %s",str.c_str()); 161 // } 145 #if (DEBUG >= DEBUG_TRACE) and (DEBUG_Commit_unit == true) 146 { 147 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * Dump Load_Store_pointer Unit"); 148 149 for (uint32_t i=0; i<_param->_nb_load_store_queue; ++i) 150 { 151 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * Load_Store_unit [%d]",i); 152 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * reg_STORE_QUEUE_NB_USE : %d", reg_STORE_QUEUE_NB_USE [i]); 153 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * reg_STORE_QUEUE_PTR_WRITE : %d", reg_STORE_QUEUE_PTR_WRITE[i]); 154 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * reg_STORE_QUEUE_USE :"); 155 for (uint32_t j=0; j<_param->_size_store_queue [i]; ++j) 156 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," [%d] %d",j,reg_STORE_QUEUE_USE [i][j]); 157 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * reg_LOAD_QUEUE_PTR_WRITE : %d", reg_LOAD_QUEUE_PTR_WRITE [i]); 158 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * reg_LOAD_QUEUE_USE :"); 159 for (uint32_t j=0; j<_param->_size_load_queue [i]; ++j) 160 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," [%d] %d",j,reg_LOAD_QUEUE_USE [i][j]); 161 } 162 } 163 #endif 162 164 163 165 #if defined(STATISTICS) or defined(VHDL_TESTBENCH) … … 165 167 #endif 166 168 167 log_ printf(FUNC,Load_Store_pointer_unit,FUNCTION,"End");169 log_end(Load_Store_pointer_unit,FUNCTION); 168 170 }; 169 171 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Parameters.cpp
r88 r110 22 22 Parameters::Parameters (uint32_t nb_front_end , 23 23 uint32_t * nb_context , 24 // 25 // 24 // uint32_t size_front_end_id , 25 // uint32_t size_context_id , 26 26 uint32_t nb_load_store_queue , 27 27 uint32_t * size_store_queue , 28 28 uint32_t * size_load_queue , 29 uint32_t * nb_inst_memory , 29 30 uint32_t ** link_load_store_unit_with_thread, 30 31 uint32_t nb_inst_insert , … … 40 41 _size_store_queue = size_store_queue ; 41 42 _size_load_queue = size_load_queue ; 43 _nb_inst_memory = nb_inst_memory ; 42 44 _link_load_store_unit_with_thread = link_load_store_unit_with_thread; 43 45 _nb_inst_insert = nb_inst_insert ; 44 46 _nb_inst_retire = nb_inst_retire ; 45 47 46 48 test(); 49 50 _max_size_store_queue = max<uint32_t>(_size_store_queue,_nb_load_store_queue); 51 _max_size_load_queue = max<uint32_t>(_size_load_queue ,_nb_load_store_queue); 47 52 48 53 if (is_toplevel) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h
r109 r110 55 55 #ifdef STATISTICS 56 56 public : Stat * _stat; 57 private : counter_t * _stat_nb_inst_pop ; 58 private : counter_t * _stat_nb_inst_pop_gpr ; 59 private : counter_t * _stat_nb_inst_pop_spr ; 60 private : counter_t * _stat_nb_inst_push_gpr; 61 private : counter_t * _stat_nb_inst_push_spr; 62 private : counter_t ** _stat_bank_gpr_nb_elt ; //[nb_bank] 63 private : counter_t ** _stat_bank_spr_nb_elt ; //[nb_bank] 57 64 #endif 58 65 … … 146 153 147 154 #ifdef STATISTICS 148 public : void statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics); 155 public : void statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics); 156 public : void statistics_deallocation (void); 149 157 #endif 150 158 #if defined(STATISTICS) or defined(VHDL_TESTBENCH) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp
r88 r110 58 58 log_printf(INFO,Free_List_unit,FUNCTION,"Allocation of statistics"); 59 59 60 statistics_ declaration(param_statistics);60 statistics_allocation(param_statistics); 61 61 } 62 62 #endif … … 157 157 #ifdef STATISTICS 158 158 if (usage_is_set(_usage,USE_STATISTICS)) 159 { 160 log_printf(INFO,Free_List_unit,FUNCTION,"Generate Statistics file"); 161 162 delete _stat; 163 } 159 statistics_deallocation (); 160 164 161 #endif 165 162 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_allocation.cpp
r108 r110 20 20 21 21 #undef FUNCTION 22 #define FUNCTION "Free_List_unit::statistics_ declaration"23 void Free_List_unit::statistics_ declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)22 #define FUNCTION "Free_List_unit::statistics_allocation" 23 void Free_List_unit::statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics) 24 24 { 25 25 log_printf(FUNC,Free_List_unit,FUNCTION,"Begin"); … … 28 28 "Free_List_unit", 29 29 param_statistics); 30 31 std::string sum_bank_gpr_nb_elt = "0"; 32 _stat_bank_gpr_nb_elt = new counter_t * [_param->_nb_bank]; 30 33 34 for (uint32_t i=0; i<_param->_nb_bank; ++i) 35 { 36 std::string str = "bank_gpr_nb_elt_"+toString(i); 37 38 sum_bank_gpr_nb_elt = "+ "+str+" "+sum_bank_gpr_nb_elt; 39 40 _stat_bank_gpr_nb_elt [i] = _stat->create_variable(str); 41 42 _stat->create_expr_average_by_cycle("average_occupation_bank_gpr_"+toString(i), str, "", toString(_("Average free list occupation (bank %d)"),i)); 43 _stat->create_expr_percent ("percent_occupation_bank_gpr_"+toString(i) , "average_occupation_bank_gpr_"+toString(i), toString(_param->_bank_gpr_nb_slot), toString(_("Percent free list occupation (bank %d)"),i)); 44 } 45 46 _stat->create_expr_average_by_cycle("average_occupation_bank_gpr", sum_bank_gpr_nb_elt, "", _("Average free list occupation (bank all)")); 47 _stat->create_expr_percent ("percent_occupation_bank_gpr", "average_occupation_bank_gpr", toString(_param->_bank_gpr_nb_slot*_param->_nb_bank), _("Percent free list occupation (bank all)")); 48 49 std::string sum_bank_spr_nb_elt = "0"; 50 _stat_bank_spr_nb_elt = new counter_t * [_param->_nb_bank]; 51 52 for (uint32_t i=0; i<_param->_nb_bank; ++i) 53 { 54 std::string str = "bank_spr_nb_elt_"+toString(i); 55 56 sum_bank_spr_nb_elt = "+ "+str+" "+sum_bank_spr_nb_elt; 57 58 _stat_bank_spr_nb_elt [i] = _stat->create_variable(str); 59 60 _stat->create_expr_average_by_cycle("average_occupation_bank_spr_"+toString(i), str, "", toString(_("Average free list occupation (bank %d)"),i)); 61 _stat->create_expr_percent ("percent_occupation_bank_spr_"+toString(i) , "average_occupation_bank_spr_"+toString(i), toString(_param->_bank_spr_nb_slot), toString(_("Percent free list occupation (bank %d)"),i)); 62 } 63 64 _stat->create_expr_average_by_cycle("average_occupation_bank_spr", sum_bank_spr_nb_elt, "", _("Average free list occupation (bank all)")); 65 _stat->create_expr_percent ("percent_occupation_bank_spr", "average_occupation_bank_spr", toString(_param->_bank_spr_nb_slot*_param->_nb_bank), _("Percent free list occupation (bank all)")); 66 67 _stat_nb_inst_pop = _stat->create_variable("nb_inst_pop" ); 68 _stat_nb_inst_pop_gpr = _stat->create_variable("nb_inst_pop_gpr" ); 69 _stat_nb_inst_pop_spr = _stat->create_variable("nb_inst_pop_spr" ); 70 _stat_nb_inst_push_gpr = _stat->create_variable("nb_inst_push_gpr"); 71 _stat_nb_inst_push_spr = _stat->create_variable("nb_inst_push_spr"); 72 73 _stat->create_expr_average_by_cycle("average_use_interface_pop" , "nb_inst_pop" , "", _("Average instruction per cycle on pop interface")); 74 _stat->create_expr_average_by_cycle("average_use_interface_pop_gpr" , "nb_inst_pop_gpr" , "", _("Average instruction per cycle on pop interface for gpr")); 75 _stat->create_expr_average_by_cycle("average_use_interface_pop_spr" , "nb_inst_pop_spr" , "", _("Average instruction per cycle on pop interface for spr")); 76 _stat->create_expr_average_by_cycle("average_use_interface_push_gpr", "nb_inst_push_gpr", "", _("Average instruction per cycle on push_gpr interface")); 77 _stat->create_expr_average_by_cycle("average_use_interface_push_spr", "nb_inst_push_spr", "", _("Average instruction per cycle on push_spr interface")); 78 79 _stat->create_expr_percent ("percent_inst_pop_need_gpr" , "nb_inst_pop_gpr" , "nb_inst_pop", _("Percent of pop instruction that need gpr")); 80 _stat->create_expr_percent ("percent_inst_pop_need_spr" , "nb_inst_pop_spr" , "nb_inst_pop", _("Percent of pop instruction that need spr")); 81 31 82 log_printf(FUNC,Free_List_unit,FUNCTION,"End"); 32 83 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp
r109 r110 50 50 log_printf(TRACE,Free_List_unit,FUNCTION," * POP [%d]",i); 51 51 52 #ifdef STATISTICS 53 (*_stat_nb_inst_pop) ++; 54 #endif 55 52 56 if (PORT_READ(in_POP_GPR_VAL [i])) 53 _gpr_list [internal_POP_GPR_BANK[i]].pop_front(); 57 { 58 #ifdef STATISTICS 59 (*_stat_nb_inst_pop_gpr) ++; 60 #endif 61 _gpr_list [internal_POP_GPR_BANK[i]].pop_front(); 62 } 54 63 55 64 if (PORT_READ(in_POP_SPR_VAL [i])) 56 _spr_list [internal_POP_SPR_BANK[i]].pop_front(); 65 { 66 #ifdef STATISTICS 67 (*_stat_nb_inst_pop_spr) ++; 68 #endif 69 _spr_list [internal_POP_SPR_BANK[i]].pop_front(); 70 } 57 71 } 58 72 … … 67 81 log_printf(TRACE,Free_List_unit,FUNCTION," * num_reg : %d",PORT_READ(in_PUSH_GPR_NUM_REG [i])); 68 82 83 #ifdef STATISTICS 84 (*_stat_nb_inst_push_gpr) ++; 85 #endif 86 69 87 _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(PORT_READ(in_PUSH_GPR_NUM_REG [i])); 70 88 } … … 79 97 log_printf(TRACE,Free_List_unit,FUNCTION," * num_reg : %d",PORT_READ(in_PUSH_SPR_NUM_REG [i])); 80 98 99 #ifdef STATISTICS 100 (*_stat_nb_inst_push_spr) ++; 101 #endif 102 81 103 _spr_list [internal_PUSH_SPR_BANK[i]].push_back(PORT_READ(in_PUSH_SPR_NUM_REG [i])); 82 104 } 105 106 #ifdef STATISTICS 107 for (uint32_t i=0; i<_param->_nb_bank; ++i) 108 { 109 (*(_stat_bank_gpr_nb_elt [i])) += _gpr_list[i].size(); 110 (*(_stat_bank_spr_nb_elt [i])) += _spr_list[i].size(); 111 } 112 #endif 83 113 84 114 #if (DEBUG >= DEBUG_TRACE) and (DEBUG_Free_List_unit == true) … … 140 170 if (1) 141 171 for (uint32_t i=0; i<_param->_nb_bank; ++i) 142 {172 { 143 173 for (std::list<Tgeneral_address_t>::iterator it1=_gpr_list[i].begin(); 144 174 it1!=_gpr_list[i].end(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h
r98 r110 52 52 #ifdef STATISTICS 53 53 public : Stat * _stat; 54 55 private : counter_t * _stat_nb_inst_issue_rename_select; 56 private : counter_t * _stat_nb_inst_issue_rename_select_req; 57 private : counter_t * _stat_nb_inst_issue_stall_by_commit ; 58 private : counter_t * _stat_nb_inst_issue_stall_by_rat_rename ; 59 private : counter_t * _stat_nb_inst_issue_stall_by_rat_insert ; 60 private : counter_t * _stat_nb_inst_issue_stall_by_free_list ; 61 private : counter_t * _stat_nb_inst_issue_stall_by_stat_list ; 54 62 #endif 55 63 … … 139 147 140 148 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 149 #ifdef STATISTICS 150 private : Tcontrol_t * internal_INSERT_RENAME_ACK; //[nb_inst_insert] 151 #endif 152 141 153 #endif 142 154 … … 186 198 187 199 #ifdef STATISTICS 188 public : void statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics); 200 public : void statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics); 201 public : void statistics_deallocation (void); 189 202 #endif 190 203 #if defined(STATISTICS) or defined(VHDL_TESTBENCH) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue.cpp
r88 r110 58 58 log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Allocation of statistics"); 59 59 60 statistics_ declaration(param_statistics);60 statistics_allocation(param_statistics); 61 61 } 62 62 #endif … … 199 199 #ifdef STATISTICS 200 200 if (usage_is_set(_usage,USE_STATISTICS)) 201 { 202 log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Generate Statistics file"); 203 204 delete _stat; 205 } 201 statistics_deallocation (); 206 202 #endif 207 203 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp
r98 r110 136 136 } 137 137 138 #ifdef STATISTICS 139 ALLOC1(internal_INSERT_RENAME_ACK, Tcontrol_t,_param->_nb_inst_insert); 140 #endif 141 138 142 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 139 140 143 #ifdef POSITION 141 144 if (usage_is_set(_usage,USE_POSITION)) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_deallocation.cpp
r98 r110 99 99 DELETE1_SIGNAL( in_RETIRE_STAT_LIST_ACK,_param->_nb_inst_retire,1); 100 100 101 #ifdef STATISTICS 102 DELETE1(internal_INSERT_RENAME_ACK, _param->_nb_inst_insert); 103 #endif 101 104 } 105 102 106 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 103 107 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert_valack.cpp
r88 r110 75 75 log_printf(TRACE,Register_translation_unit_Glue,FUNCTION," * stat_list_ack (r): %d",stat_list_ack ); 76 76 77 #ifdef STATISTICS 78 internal_INSERT_RENAME_ACK [i] = rename_ack; 79 #endif 77 80 78 81 PORT_WRITE(out_INSERT_RENAME_ACK [i], rename_ack ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_retire.cpp
r88 r110 32 32 Tcontrol_t stat_list_ack = PORT_READ(in_RETIRE_STAT_LIST_ACK [i]); 33 33 34 PORT_WRITE(out_RETIRE_ACK [i], rat_ack and stat_list_ack); 35 PORT_WRITE(out_RETIRE_RAT_VAL [i], val and stat_list_ack); 36 PORT_WRITE(out_RETIRE_STAT_LIST_VAL [i], val and rat_ack); 34 Tcontrol_t ack = (true 35 // and val 36 and rat_ack 37 and stat_list_ack 38 ); 39 Tcontrol_t rat_val = (true 40 and val 41 // and rat_ack 42 and stat_list_ack 43 ); 44 Tcontrol_t stat_list_val = (true 45 and val 46 and rat_ack 47 // and stat_list_ack 48 ); 49 50 PORT_WRITE(out_RETIRE_ACK [i], ack ); 51 PORT_WRITE(out_RETIRE_RAT_VAL [i], rat_val ); 52 PORT_WRITE(out_RETIRE_STAT_LIST_VAL [i], stat_list_val); 53 54 log_printf(TRACE,Register_translation_unit_Glue,FUNCTION," * inst_insert [%d]",i); 55 log_printf(TRACE,Register_translation_unit_Glue,FUNCTION," * val (r): %d",val ); 56 log_printf(TRACE,Register_translation_unit_Glue,FUNCTION," * ack (w): %d",ack ); 57 log_printf(TRACE,Register_translation_unit_Glue,FUNCTION," * rat_val (w): %d",rat_val ); 58 log_printf(TRACE,Register_translation_unit_Glue,FUNCTION," * rat_ack (r): %d",rat_ack ); 59 log_printf(TRACE,Register_translation_unit_Glue,FUNCTION," * stat_list_val (w): %d",stat_list_val ); 60 log_printf(TRACE,Register_translation_unit_Glue,FUNCTION," * stat_list_ack (r): %d",stat_list_ack ); 37 61 } 38 62 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_statistics_allocation.cpp
r108 r110 20 20 21 21 #undef FUNCTION 22 #define FUNCTION "Register_translation_unit_Glue::statistics_ declaration"23 void Register_translation_unit_Glue::statistics_ declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)22 #define FUNCTION "Register_translation_unit_Glue::statistics_allocation" 23 void Register_translation_unit_Glue::statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics) 24 24 { 25 25 log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin"); … … 28 28 "Register_translation_unit_Glue", 29 29 param_statistics); 30 31 _stat_nb_inst_issue_rename_select = _stat->create_variable("nb_inst_issue_rename_select"); 32 _stat_nb_inst_issue_rename_select_req = _stat->create_variable("nb_inst_issue_rename_select_req"); 33 34 _stat_nb_inst_issue_stall_by_commit = _stat->create_variable("nb_inst_issue_stall_by_commit"); 35 _stat_nb_inst_issue_stall_by_rat_rename = _stat->create_variable("nb_inst_issue_stall_by_rat_rename"); 36 _stat_nb_inst_issue_stall_by_rat_insert = _stat->create_variable("nb_inst_issue_stall_by_rat_insert"); 37 _stat_nb_inst_issue_stall_by_free_list = _stat->create_variable("nb_inst_issue_stall_by_free_list"); 38 _stat_nb_inst_issue_stall_by_stat_list = _stat->create_variable("nb_inst_issue_stall_by_stat_list"); 39 40 // std::string nb_inst_issue_stall = "+ + + nb_inst_issue_stall_by_commit nb_inst_issue_stall_by_rat_rename + nb_inst_issue_stall_by_rat_insert nb_inst_issue_stall_by_free_list + nb_inst_issue_stall_by_stat_list nb_inst_issue_stall_by_rename_select"; 41 std::string nb_inst_issue_stall = "+ + + nb_inst_issue_stall_by_commit nb_inst_issue_stall_by_rat_rename + nb_inst_issue_stall_by_rat_insert nb_inst_issue_stall_by_free_list nb_inst_issue_stall_by_stat_list"; 42 43 _stat->create_expr_average_by_cycle("average_req_interface_insert", "nb_inst_issue_rename_select_req", "", _("Average instruction by cycle on issue interface (request)")); 44 _stat->create_expr_average_by_cycle("average_use_interface_insert", "nb_inst_issue_rename_select" , "", _("Average instruction by cycle on issue interface")); 45 46 // _stat->create_expr_percent ("percent_issue_stall_by_rename_select", "nb_inst_issue_stall_by_rename_select", nb_inst_issue_stall, _("Percent of instruction stalled by Rename_Select")); 47 _stat->create_expr_percent ("percent_issue_stall_by_commit" , "nb_inst_issue_stall_by_commit", nb_inst_issue_stall, _("Percent of instruction stalled by Commit_unit or Issue_queue or RegisterFile")); 48 _stat->create_expr_percent ("percent_issue_stall_by_rat_rename" , "nb_inst_issue_stall_by_rat_rename", nb_inst_issue_stall, _("Percent of instruction stalled by Rat_Rename")); 49 _stat->create_expr_percent ("percent_issue_stall_by_rat_insert" , "nb_inst_issue_stall_by_rat_insert", nb_inst_issue_stall, _("Percent of instruction stalled by Rat_Insert")); 50 _stat->create_expr_percent ("percent_issue_stall_by_free_list" , "nb_inst_issue_stall_by_free_list", nb_inst_issue_stall, _("Percent of instruction stalled by Free_List")); 51 _stat->create_expr_percent ("percent_issue_stall_by_stat_list" , "nb_inst_issue_stall_by_stat_list", nb_inst_issue_stall, _("Percent of instruction stalled by Stat_List")); 30 52 31 53 log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_transition.cpp
r81 r110 26 26 log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin"); 27 27 28 #ifdef STATISTICS 29 if (usage_is_set(_usage,USE_STATISTICS)) 30 { 31 for (uint32_t i=0; i<_param->_nb_inst_insert; ++i) 32 // Test request 33 if (PORT_READ(in_INSERT_RENAME_VAL [i])) 34 { 35 (* _stat_nb_inst_issue_rename_select_req) ++; 36 37 if (internal_INSERT_RENAME_ACK [i]) 38 (* _stat_nb_inst_issue_rename_select)++; 39 if (PORT_READ(in_INSERT_INSERT_ACK [i]) == 0) 40 (*_stat_nb_inst_issue_stall_by_commit ) ++; 41 if (PORT_READ(in_INSERT_RAT_RENAME_ACK [i]) == 0) 42 (*_stat_nb_inst_issue_stall_by_rat_rename) ++; 43 if (PORT_READ(in_INSERT_RAT_INSERT_ACK [i]) == 0) 44 (*_stat_nb_inst_issue_stall_by_rat_insert) ++; 45 if (PORT_READ(in_INSERT_FREE_LIST_ACK [i]) == 0) 46 (*_stat_nb_inst_issue_stall_by_free_list ) ++; 47 if (PORT_READ(in_INSERT_STAT_LIST_ACK [i]) == 0) 48 (*_stat_nb_inst_issue_stall_by_stat_list ) ++; 49 } 50 } 51 #endif 52 28 53 #if defined(STATISTICS) or defined(VHDL_TESTBENCH) 29 54 end_cycle (); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp
r108 r110 43 43 for (uint32_t i=0; i<_param->_nb_inst_rename; i++) 44 44 { 45 log_printf(TRACE,Rename_select,FUNCTION," * inst_rename[%d]",i);45 log_printf(TRACE,Rename_select,FUNCTION," * RENAME_OUT [%d]",i); 46 46 47 47 // Scan all instruction until find … … 65 65 log_printf(TRACE,Rename_select,FUNCTION," * rename_out_ack : %d",PORT_READ(in_RENAME_OUT_ACK[i])); 66 66 67 Tcontext_t 68 Tcontext_t 67 Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_IN_FRONT_END_ID [x][y]):0; 68 Tcontext_t context_id = (_param->_have_port_context_id )?PORT_READ(in_RENAME_IN_CONTEXT_ID [x][y]):0; 69 69 70 Tcontrol_t no_execute = (PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y])); 71 72 Tcontrol_t read_ra = (PORT_READ(in_RENAME_IN_READ_RA [x][y])); 73 Tcontrol_t read_rb = (PORT_READ(in_RENAME_IN_READ_RB [x][y])); 74 Tcontrol_t read_rc = (PORT_READ(in_RENAME_IN_READ_RC [x][y])); 75 Tcontrol_t write_rd = (PORT_READ(in_RENAME_IN_WRITE_RD [x][y])); 76 Tcontrol_t write_re = (PORT_READ(in_RENAME_IN_WRITE_RE [x][y])); 70 Tcontrol_t no_execute = (PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y])); 71 Tcontrol_t read_ra = (PORT_READ(in_RENAME_IN_READ_RA [x][y])); 72 Tcontrol_t read_rb = (PORT_READ(in_RENAME_IN_READ_RB [x][y])); 73 Tcontrol_t read_rc = (PORT_READ(in_RENAME_IN_READ_RC [x][y])); 74 Tcontrol_t write_rd = (PORT_READ(in_RENAME_IN_WRITE_RD [x][y])); 75 Tcontrol_t write_re = (PORT_READ(in_RENAME_IN_WRITE_RE [x][y])); 77 76 78 77 // Attention, j'ai enlevé event_state de la liste de sensibilité -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_insert_valack.cpp
r88 r110 25 25 log_function(Rename_unit_Glue,FUNCTION,_name.c_str()); 26 26 27 // // Transaction must be in-order 27 // // Transaction must be in-order - made in rename_select 28 28 // Tcontrol_t previous_transaction = true; 29 29 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_retire_valack.cpp
r88 r110 25 25 log_function(Rename_unit_Glue,FUNCTION,_name.c_str()); 26 26 27 // Transaction must be in-order 28 Tcontrol_t previous_transaction = true;27 // Transaction must be in-order - made in commit_unit 28 // Tcontrol_t previous_transaction = true; 29 29 30 30 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) … … 34 34 Tcontrol_t REGISTER_TRANSLATION_ACK = PORT_READ(in_RETIRE_REGISTER_TRANSLATION_ACK [i]); 35 35 36 Tcontrol_t ACK = ( previous_transaction and36 Tcontrol_t ACK = (// previous_transaction and 37 37 LOAD_STORE_QUEUE_POINTER_ACK and 38 38 REGISTER_TRANSLATION_ACK ); 39 Tcontrol_t LOAD_STORE_QUEUE_POINTER_VAL = ( previous_transaction and39 Tcontrol_t LOAD_STORE_QUEUE_POINTER_VAL = (// previous_transaction and 40 40 VAL and 41 41 REGISTER_TRANSLATION_ACK ); 42 Tcontrol_t REGISTER_TRANSLATION_VAL = ( previous_transaction and42 Tcontrol_t REGISTER_TRANSLATION_VAL = (// previous_transaction and 43 43 VAL and 44 44 LOAD_STORE_QUEUE_POINTER_ACK ); … … 48 48 PORT_WRITE(out_RETIRE_REGISTER_TRANSLATION_VAL [i], REGISTER_TRANSLATION_VAL ); 49 49 50 previous_transaction = VAL and ACK; 50 // previous_transaction = VAL and ACK; 51 52 log_printf(TRACE,Rename_unit_Glue,FUNCTION," * retire [%d]",i); 53 log_printf(TRACE,Rename_unit_Glue,FUNCTION," * val (commit_unit) (r) : %d",VAL ); 54 log_printf(TRACE,Rename_unit_Glue,FUNCTION," * ack (commit_unit) (w) : %d",ACK ); 55 log_printf(TRACE,Rename_unit_Glue,FUNCTION," * register_translation_val (w) : %d",REGISTER_TRANSLATION_VAL ); 56 log_printf(TRACE,Rename_unit_Glue,FUNCTION," * register_translation_ack (r) : %d",REGISTER_TRANSLATION_ACK ); 57 log_printf(TRACE,Rename_unit_Glue,FUNCTION," * load_store_queue_pointer_val (w) : %d",LOAD_STORE_QUEUE_POINTER_VAL); 58 log_printf(TRACE,Rename_unit_Glue,FUNCTION," * load_store_queue_pointer_ack (r) : %d",LOAD_STORE_QUEUE_POINTER_ACK); 51 59 } 52 60 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-min.cfg
r88 r110 8 8 2 2 +1 # size_store_queue [0] [nb_load_store_queue] 9 9 1 1 +1 # size_load_queue [0] [nb_load_store_queue] 10 1 1 +1 # nb_inst_memory [0] [nb_load_store_queue] 10 11 0 0 +1 # link_load_store_unit_with_thread [0][0] [nb_front_end][nb_context] 11 12 1 1 +1 # rename_select_priority -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_1a.cfg
r88 r110 8 8 8 8 +1 # size_store_queue [0] [nb_load_store_queue] 9 9 8 8 +1 # size_load_queue [0] [nb_load_store_queue] 10 8 8 +1 # nb_inst_memory [0] [nb_load_store_queue] 10 11 0 0 +1 # link_load_store_unit_with_thread [0][0] [nb_front_end][nb_context] 11 12 1 1 +1 # rename_select_priority -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4a.cfg
r88 r110 8 8 8 8 +1 # size_store_queue [0] [nb_load_store_queue] 9 9 8 8 +1 # size_load_queue [0] [nb_load_store_queue] 10 4 4 +1 # nb_inst_memory [0] [nb_load_store_queue] 10 11 0 0 +1 # link_load_store_unit_with_thread [0][0] [nb_front_end][nb_context] 11 12 0 0 +1 # link_load_store_unit_with_thread [0][1] [nb_front_end][nb_context] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4b.cfg
r88 r110 10 10 8 8 +1 # size_load_queue [0] [nb_load_store_queue] 11 11 4 4 +1 # size_load_queue [1] [nb_load_store_queue] 12 4 4 +1 # nb_inst_memory [0] [nb_load_store_queue] 13 2 2 +1 # nb_inst_memory [1] [nb_load_store_queue] 12 14 0 0 +1 # link_load_store_unit_with_thread [0][0] [nb_front_end][nb_context] 13 15 1 1 +1 # link_load_store_unit_with_thread [0][1] [nb_front_end][nb_context] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/src/main.cpp
r88 r110 22 22 err (_(" * size_store_queue [nb_load_store_queue] (uint32_t )\n")); 23 23 err (_(" * size_load_queue [nb_load_store_queue] (uint32_t )\n")); 24 err (_(" * nb_inst_memory [nb_load_store_queue] (uint32_t )\n")); 24 25 err (_(" * link_load_store_unit_with_thread [nb_front_end][nb_context] (uint32_t )\n")); 25 26 err (_(" * rename_select_priority (Tpriority_t )\n")); … … 71 72 uint32_t _nb_load_store_queue = fromString<uint32_t >(argv[x++]); 72 73 73 if (argc != static_cast<int>(2+NB_PARAMS+2*_nb_front_end+ 2*_nb_load_store_queue+_sum_nb_context))74 if (argc != static_cast<int>(2+NB_PARAMS+2*_nb_front_end+3*_nb_load_store_queue+_sum_nb_context)) 74 75 usage (argc, argv); 75 76 76 77 uint32_t * _size_store_queue = new uint32_t [_nb_load_store_queue]; 77 78 uint32_t * _size_load_queue = new uint32_t [_nb_load_store_queue]; 79 uint32_t * _nb_inst_memory = new uint32_t [_nb_load_store_queue]; 78 80 79 81 for (uint32_t i=0; i<_nb_load_store_queue; i++) … … 81 83 for (uint32_t i=0; i<_nb_load_store_queue; i++) 82 84 _size_load_queue [i] = fromString<uint32_t>(argv[x++]); 85 for (uint32_t i=0; i<_nb_load_store_queue; i++) 86 _nb_inst_memory [i] = fromString<uint32_t>(argv[x++]); 83 87 84 88 uint32_t ** _link_load_store_unit_with_thread = new uint32_t * [_nb_front_end]; … … 113 117 _size_store_queue , 114 118 _size_load_queue , 119 _nb_inst_memory , 115 120 _link_load_store_unit_with_thread , 116 121 _rename_select_priority , … … 157 162 delete [] _size_store_queue; 158 163 delete [] _size_load_queue ; 164 delete [] _nb_inst_memory ; 159 165 delete [] _nb_context ; 160 166 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Parameters.h
r88 r110 36 36 public : uint32_t * _size_store_queue ;//[nb_load_store_queue] 37 37 public : uint32_t * _size_load_queue ;//[nb_load_store_queue] 38 public : uint32_t * _nb_inst_memory ;//[nb_load_store_queue] 38 39 public : uint32_t ** _link_load_store_unit_with_thread ;//[nb_front_end][nb_context] 39 40 public : Tpriority_t _rename_select_priority ; … … 75 76 uint32_t * size_store_queue , 76 77 uint32_t * size_load_queue , 78 uint32_t * nb_inst_memory , 77 79 uint32_t ** link_load_store_unit_with_thread , 78 80 Tpriority_t rename_select_priority , -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters.cpp
r97 r110 27 27 uint32_t * size_store_queue , 28 28 uint32_t * size_load_queue , 29 uint32_t * nb_inst_memory , 29 30 uint32_t ** link_load_store_unit_with_thread , 30 31 Tpriority_t rename_select_priority , … … 50 51 _size_store_queue = size_store_queue ; 51 52 _size_load_queue = size_load_queue ; 53 _nb_inst_memory = nb_inst_memory ; 52 54 _link_load_store_unit_with_thread = link_load_store_unit_with_thread ; 53 55 _rename_select_priority = rename_select_priority ; … … 101 103 _size_store_queue , 102 104 _size_load_queue , 105 _nb_inst_memory , 103 106 _link_load_store_unit_with_thread, 104 107 _nb_inst_insert ,
Note: See TracChangeset
for help on using the changeset viewer.