Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src
- Timestamp:
- Dec 10, 2008, 7:31:39 PM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Parameters.cpp
r81 r88 25 25 uint32_t nb_inst_predict, 26 26 uint32_t nb_inst_decod , 27 uint32_t nb_inst_update ) 27 uint32_t nb_inst_update , 28 bool is_toplevel 29 ) 28 30 { 29 31 log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin"); … … 31 33 _nb_context = nb_context ; 32 34 _size_queue = size_queue ; 33 _size_address = size_address ;34 35 _nb_inst_predict = nb_inst_predict; 35 36 _nb_inst_decod = nb_inst_decod ; 36 37 _nb_inst_update = nb_inst_update ; 37 38 38 _size_context_id = log2(nb_context);39 39 _size_index = max<uint32_t>(size_queue,nb_context); 40 40 41 _have_port_context_id = _size_context_id > 0;41 test(); 42 42 43 test(); 43 if (is_toplevel) 44 { 45 _size_instruction_address = size_address ; 46 _size_context_id = log2(nb_context); 47 _have_port_context_id = _size_context_id > 0; 48 49 copy (); 50 } 51 44 52 log_printf(FUNC,Return_Address_Stack,FUNCTION,"End"); 45 53 }; … … 62 70 }; 63 71 72 #undef FUNCTION 73 #define FUNCTION "Return_Address_Stack::copy" 74 void Parameters::copy (void) 75 { 76 log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin"); 77 log_printf(FUNC,Return_Address_Stack,FUNCTION,"End"); 78 }; 79 64 80 }; // end namespace return_address_stack 65 81 }; // end namespace prediction_unit -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Parameters_msg_error.cpp
r81 r88 29 29 for (uint32_t i=0; i<_nb_context; i++) 30 30 if (_size_queue [i] < 2) 31 test.error( "context \""+toString(i)+"\" : size_queue must be > 2");31 test.error(toString(_("context \"%d\" : size_queue must be >= 2\n"),i)); 32 32 33 33 log_printf(FUNC,Return_Address_Stack,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Parameters_print.cpp
r81 r88 28 28 xml.balise_open("return_address_stack"); 29 29 xml.singleton_begin("nb_context "); xml.attribut("value",toString(_nb_context )); xml.singleton_end(); 30 30 // xml.singleton_begin("size_address "); xml.attribut("value",toString(_size_address )); xml.singleton_end(); 31 31 xml.singleton_begin("nb_inst_predict"); xml.attribut("value",toString(_nb_inst_predict)); xml.singleton_end(); 32 32 xml.singleton_begin("nb_inst_decod "); xml.attribut("value",toString(_nb_inst_decod )); xml.singleton_end(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack.cpp
r81 r88 38 38 log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Return_Address_Stac == true 41 log_printf(INFO,Return_Address_Stac,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 43 std::cout << *param << std::endl; 44 #endif 45 40 46 log_printf(INFO,Return_Address_Stack,FUNCTION,"Allocation"); 41 47 … … 47 53 48 54 #ifdef STATISTICS 49 if ( _usage & USE_STATISTICS)55 if (usage_is_set(_usage,USE_STATISTICS)) 50 56 { 51 57 log_printf(INFO,Return_Address_Stack,FUNCTION,"Allocation of statistics"); … … 56 62 57 63 #ifdef VHDL 58 if ( _usage & USE_VHDL)64 if (usage_is_set(_usage,USE_VHDL)) 59 65 { 60 66 // generate the vhdl … … 66 72 67 73 #ifdef SYSTEMC 68 if ( _usage & USE_SYSTEMC)74 if (usage_is_set(_usage,USE_SYSTEMC)) 69 75 { 70 76 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) … … 165 171 166 172 #ifdef STATISTICS 167 if ( _usage & USE_STATISTICS)173 if (usage_is_set(_usage,USE_STATISTICS)) 168 174 { 169 175 statistics_deallocation(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_allocation.cpp
r81 r88 17 17 namespace return_address_stack { 18 18 19 20 21 19 #undef FUNCTION 22 20 #define FUNCTION "Return_Address_Stack::allocation" 23 21 void Return_Address_Stack::allocation ( 24 22 #ifdef STATISTICS 25 23 morpheo::behavioural::Parameters_Statistics * param_statistics 26 24 #else 27 25 void 28 26 #endif 29 27 ) 30 28 { 31 29 log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin"); … … 65 63 ALLOC1_SIGNAL_OUT(out_PREDICT_HIT ,"hit" ,Tcontrol_t,1); 66 64 ALLOC1_SIGNAL_IN ( in_PREDICT_PUSH ,"push" ,Tcontrol_t,1); 67 ALLOC1_SIGNAL_IN ( in_PREDICT_ADDRESS_PUSH,"address_push",Taddress_t,_param->_size_ address);68 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_POP ,"address_pop" ,Taddress_t,_param->_size_ address);65 ALLOC1_SIGNAL_IN ( in_PREDICT_ADDRESS_PUSH,"address_push",Taddress_t,_param->_size_instruction_address); 66 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_POP ,"address_pop" ,Taddress_t,_param->_size_instruction_address); 69 67 ALLOC1_SIGNAL_OUT(out_PREDICT_INDEX ,"index" ,Tptr_t ,_param->_size_index); 70 68 } … … 79 77 ALLOC1_SIGNAL_OUT(out_DECOD_HIT ,"hit" ,Tcontrol_t,1); 80 78 ALLOC1_SIGNAL_IN ( in_DECOD_PUSH ,"push" ,Tcontrol_t,1); 81 ALLOC1_SIGNAL_IN ( in_DECOD_ADDRESS_PUSH ,"address_push" ,Taddress_t,_param->_size_ address);82 ALLOC1_SIGNAL_OUT(out_DECOD_ADDRESS_POP ,"address_pop" ,Taddress_t,_param->_size_ address);79 ALLOC1_SIGNAL_IN ( in_DECOD_ADDRESS_PUSH ,"address_push" ,Taddress_t,_param->_size_instruction_address); 80 ALLOC1_SIGNAL_OUT(out_DECOD_ADDRESS_POP ,"address_pop" ,Taddress_t,_param->_size_instruction_address); 83 81 ALLOC1_SIGNAL_OUT(out_DECOD_INDEX ,"index" ,Tptr_t ,_param->_size_index); 84 82 ALLOC1_SIGNAL_IN ( in_DECOD_MISS_PREDICTION,"miss_prediction",Tcontrol_t,1); … … 89 87 ALLOC1_INTERFACE("update", IN, SOUTH, "update's interface", _param->_nb_inst_update); 90 88 91 ALLOC1_VALACK_IN ( in_UPDATE_VAL ,VAL);92 ALLOC1_VALACK_OUT(out_UPDATE_ACK ,ACK);93 ALLOC1_SIGNAL_IN ( in_UPDATE_CONTEXT_ID ,"context_id",Tcontext_t,_param->_size_context_id);94 ALLOC1_SIGNAL_IN ( in_UPDATE_PUSH ,"push",Tcontrol_t,1);95 ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS ,"address" ,Taddress_t,_param->_size_address);96 ALLOC1_SIGNAL_IN ( in_UPDATE_INDEX ,"index",Tptr_t ,_param->_size_index);97 ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION ,"miss_prediction",Tcontrol_t,1);89 ALLOC1_VALACK_IN ( in_UPDATE_VAL ,VAL); 90 ALLOC1_VALACK_OUT(out_UPDATE_ACK ,ACK); 91 ALLOC1_SIGNAL_IN ( in_UPDATE_CONTEXT_ID ,"context_id" ,Tcontext_t,_param->_size_context_id); 92 ALLOC1_SIGNAL_IN ( in_UPDATE_PUSH ,"push" ,Tcontrol_t,1); 93 ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS ,"address" ,Taddress_t,_param->_size_instruction_address); 94 ALLOC1_SIGNAL_IN ( in_UPDATE_INDEX ,"index" ,Tptr_t ,_param->_size_index); 95 ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION ,"miss_prediction" ,Tcontrol_t,1); 98 96 ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTION_IFETCH,"prediction_ifetch",Tcontrol_t,1); 99 97 } 100 98 99 if (usage_is_set(_usage,USE_SYSTEMC)) 100 { 101 101 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 102 102 … … 118 118 internal_DECOD_HIT = new Tcontrol_t [_param->_nb_inst_decod ]; 119 119 internal_UPDATE_ACK = new Tcontrol_t [_param->_nb_inst_update ]; 120 } 120 121 121 122 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 122 123 123 124 #ifdef POSITION 124 _component->generate_file(); 125 if (usage_is_set(_usage,USE_POSITION)) 126 _component->generate_file(); 125 127 #endif 126 128 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_deallocation.cpp
r81 r88 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/include/Return_Address_Stack.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 23 24 log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin"); 24 25 25 if ( _usage & USE_SYSTEMC)26 if (usage_is_set(_usage,USE_SYSTEMC)) 26 27 { 27 28 delete in_CLOCK ; 28 29 delete in_NRESET; 29 30 30 delete [] in_PREDICT_VAL ; 31 delete [] out_PREDICT_ACK ; 32 if (_param->_have_port_context_id) 33 delete [] in_PREDICT_CONTEXT_ID ; 34 delete [] out_PREDICT_HIT ; 35 delete [] in_PREDICT_PUSH ; 36 delete [] in_PREDICT_ADDRESS_PUSH ; 37 delete [] out_PREDICT_ADDRESS_POP ; 38 delete [] out_PREDICT_INDEX ; 39 delete [] in_DECOD_VAL ; 40 delete [] out_DECOD_ACK ; 41 delete [] in_DECOD_PUSH ; 42 if (_param->_have_port_context_id) 43 delete [] in_DECOD_CONTEXT_ID ; 44 delete [] out_DECOD_HIT ; 45 delete [] in_DECOD_ADDRESS_PUSH ; 46 delete [] out_DECOD_ADDRESS_POP ; 47 delete [] out_DECOD_INDEX ; 48 delete [] in_DECOD_MISS_PREDICTION; 49 delete [] in_UPDATE_VAL ; 50 delete [] out_UPDATE_ACK ; 51 if (_param->_have_port_context_id) 52 delete [] in_UPDATE_CONTEXT_ID ; 53 delete [] in_UPDATE_PUSH ; 54 delete [] in_UPDATE_INDEX ; 55 delete [] in_UPDATE_ADDRESS ; 56 delete [] in_UPDATE_MISS_PREDICTION; 57 delete [] in_UPDATE_PREDICTION_IFETCH; 31 DELETE1_SIGNAL( in_PREDICT_VAL ,_param->_nb_inst_predict,1); 32 DELETE1_SIGNAL(out_PREDICT_ACK ,_param->_nb_inst_predict,1); 33 DELETE1_SIGNAL( in_PREDICT_CONTEXT_ID ,_param->_nb_inst_predict,_param->_size_context_id); 34 DELETE1_SIGNAL(out_PREDICT_HIT ,_param->_nb_inst_predict,1); 35 DELETE1_SIGNAL( in_PREDICT_PUSH ,_param->_nb_inst_predict,1); 36 DELETE1_SIGNAL( in_PREDICT_ADDRESS_PUSH ,_param->_nb_inst_predict,_param->_size_instruction_address); 37 DELETE1_SIGNAL(out_PREDICT_ADDRESS_POP ,_param->_nb_inst_predict,_param->_size_instruction_address); 38 DELETE1_SIGNAL(out_PREDICT_INDEX ,_param->_nb_inst_predict,_param->_size_index); 39 40 DELETE1_SIGNAL( in_DECOD_VAL ,_param->_nb_inst_decod,1); 41 DELETE1_SIGNAL(out_DECOD_ACK ,_param->_nb_inst_decod,1); 42 DELETE1_SIGNAL( in_DECOD_CONTEXT_ID ,_param->_nb_inst_decod,_param->_size_context_id); 43 DELETE1_SIGNAL(out_DECOD_HIT ,_param->_nb_inst_decod,1); 44 DELETE1_SIGNAL( in_DECOD_PUSH ,_param->_nb_inst_decod,1); 45 DELETE1_SIGNAL( in_DECOD_ADDRESS_PUSH ,_param->_nb_inst_decod,_param->_size_instruction_address); 46 DELETE1_SIGNAL(out_DECOD_ADDRESS_POP ,_param->_nb_inst_decod,_param->_size_instruction_address); 47 DELETE1_SIGNAL(out_DECOD_INDEX ,_param->_nb_inst_decod,_param->_size_index); 48 DELETE1_SIGNAL( in_DECOD_MISS_PREDICTION ,_param->_nb_inst_decod,1); 49 50 DELETE1_SIGNAL( in_UPDATE_VAL ,_param->_nb_inst_update,1); 51 DELETE1_SIGNAL(out_UPDATE_ACK ,_param->_nb_inst_update,1); 52 DELETE1_SIGNAL( in_UPDATE_CONTEXT_ID ,_param->_nb_inst_update,_param->_size_context_id); 53 DELETE1_SIGNAL( in_UPDATE_PUSH ,_param->_nb_inst_update,1); 54 DELETE1_SIGNAL( in_UPDATE_ADDRESS ,_param->_nb_inst_update,_param->_size_instruction_address); 55 DELETE1_SIGNAL( in_UPDATE_INDEX ,_param->_nb_inst_update,_param->_size_index); 56 DELETE1_SIGNAL( in_UPDATE_MISS_PREDICTION ,_param->_nb_inst_update,1); 57 DELETE1_SIGNAL( in_UPDATE_PREDICTION_IFETCH,_param->_nb_inst_update,1); 58 59 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 61 for (uint32_t i=0; i<_param->_nb_context; i++) 62 delete [] reg_stack [i]; 63 delete [] reg_stack; 64 delete [] reg_TOP; 65 delete [] reg_BOTTOM; 66 delete [] reg_NB_ELT; 67 delete [] reg_PREDICT_TOP; 68 delete [] reg_PREDICT_BOTTOM; 69 delete [] reg_PREDICT_NB_ELT; 70 71 delete [] internal_PREDICT_ACK; 72 delete [] internal_PREDICT_HIT; 73 delete [] internal_DECOD_ACK; 74 delete [] internal_DECOD_HIT; 75 delete [] internal_UPDATE_ACK; 58 76 } 59 60 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~61 62 delete [] reg_stack;63 delete [] reg_TOP;64 delete [] reg_BOTTOM;65 delete [] reg_NB_ELT;66 delete [] reg_PREDICT_TOP;67 delete [] reg_PREDICT_BOTTOM;68 delete [] reg_PREDICT_NB_ELT;69 70 delete [] internal_PREDICT_ACK;71 delete [] internal_PREDICT_HIT;72 delete [] internal_DECOD_ACK;73 delete [] internal_DECOD_HIT;74 delete [] internal_UPDATE_ACK;75 77 76 78 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_end_cycle.cpp
r81 r88 25 25 26 26 #ifdef STATISTICS 27 _stat->end_cycle(); 27 if (usage_is_set(_usage,USE_STATISTICS)) 28 _stat->end_cycle(); 28 29 #endif 29 30 … … 31 32 // Evaluation before read the ouput signal 32 33 // sc_start(0); 33 _interfaces->testbench(); 34 if (usage_is_set(_usage,USE_VHDL_TESTBENCH)) 35 _interfaces->testbench(); 34 36 #endif 35 37 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_transition.cpp
r81 r88 191 191 192 192 // Scan full assoc !!! 193 for (uint32_t j=0; j<_param->_size_queue [ i]; j++)193 for (uint32_t j=0; j<_param->_size_queue [context]; j++) 194 194 // Test if this slot is tagged with "predict" : if true, tagged as miss 195 195 if (reg_stack [context][j]._predict)
Note: See TracChangeset
for help on using the changeset viewer.