Changeset 110 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit
- Timestamp:
- Feb 19, 2009, 5:31:47 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit
- Files:
-
- 1 added
- 3 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h
r97 r110 67 67 private : counter_t * _stat_percent_use_load_queue; 68 68 private : counter_t * _stat_percent_use_speculative_access_queue; 69 70 private : counter_t * _stat_nb_inst_load; 71 private : counter_t * _stat_nb_inst_load_commit_speculative; 72 private : counter_t * _stat_nb_inst_load_commit_miss; 69 73 70 74 // private : counter_t * _stat_nb_load_miss_speculation; … … 226 230 227 231 #ifdef STATISTICS 228 public : void statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics); 232 public : void statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics); 233 public : void statistics_deallocation (void); 229 234 #endif 230 235 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit.cpp
r88 r110 56 56 log_printf(INFO,Load_store_unit,FUNCTION,"Allocation of statistics"); 57 57 58 statistics_ declaration(param_statistics);58 statistics_allocation(param_statistics); 59 59 } 60 60 #endif … … 181 181 #ifdef STATISTICS 182 182 if (usage_is_set(_usage,USE_STATISTICS)) 183 { 184 log_printf(INFO,Load_store_unit,FUNCTION,"Generate Statistics file"); 185 186 delete _stat; 187 } 183 statistics_deallocation (); 188 184 #endif 189 185 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp
r106 r110 602 602 _load_queue[index_load]._exception = EXCEPTION_MEMORY_MISS_SPECULATION; 603 603 _load_queue[index_load]._write_rd = 1; // write the good result 604 605 #ifdef STATISTICS 606 if (usage_is_set(_usage,USE_STATISTICS)) 607 (*_stat_nb_inst_load_commit_miss) ++; 608 #endif 604 609 } 605 610 … … 696 701 #ifdef DEBUG_TEST 697 702 if (is_operation_memory_store_head(operation) == true) 698 throw E rrorMorpheo(_("Transaction in memory_in's interface, actual state of store_queue is \"STORE_QUEUE_NO_VALID_NO_SPECULATIVE\", also a previous store_head have been receiveid. But this operation is a store_head."));703 throw ERRORMORPHEO(FUNCTION,_("Transaction in memory_in's interface, actual state of store_queue is \"STORE_QUEUE_NO_VALID_NO_SPECULATIVE\", also a previous store_head have been receiveid. But this operation is a store_head.")); 699 704 #endif 700 705 // Test if have a new exception (priority : miss_speculation) … … 714 719 #ifdef DEBUG_TEST 715 720 if (is_operation_memory_store_head(operation) == false) 716 throw E rrorMorpheo(_("Transaction in memory_in's interface, actual state of store_queue is \"STORE_QUEUE_VALID_SPECULATIVE\", also a previous access with register and address have been receiveid. But this operation is a not store_head."));721 throw ERRORMORPHEO(FUNCTION,_("Transaction in memory_in's interface, actual state of store_queue is \"STORE_QUEUE_VALID_SPECULATIVE\", also a previous access with register and address have been receiveid. But this operation is a not store_head.")); 717 722 #endif 718 723 if (operation == OPERATION_MEMORY_STORE_HEAD_KO) … … 729 734 case STORE_QUEUE_COMMIT : 730 735 { 731 throw E rrorMorpheo("<Load_store_unit::function_speculative_load_commit_transition> Invalid state and operation");736 throw ERRORMORPHEO(FUNCTION,"<Load_store_unit::function_speculative_load_commit_transition> Invalid state and operation"); 732 737 } 733 738 } … … 847 852 // if the speculation is a miss, write_rd is re set at 1. 848 853 _load_queue [internal_MEMORY_OUT_PTR]._write_rd = 0; 854 855 #ifdef STATISTICS 856 if (usage_is_set(_usage,USE_STATISTICS)) 857 (*_stat_nb_inst_load_commit_speculative) ++; 858 #endif 859 849 860 break; 850 861 } … … 889 900 case SELECT_LOAD_QUEUE : 890 901 { 891 throw E rrorMorpheo(_("Invalid selection"));902 throw ERRORMORPHEO(FUNCTION,_("Invalid selection")); 892 903 break; 893 904 } … … 964 975 965 976 _speculative_access_queue_control->pop(); 966 } 977 978 #ifdef STATISTICS 979 if (usage_is_set(_usage,USE_STATISTICS)) 980 (*_stat_nb_inst_load) ++; 981 #endif 982 } 967 983 968 984 //================================================================ … … 993 1009 #ifdef DEBUG_TEST 994 1010 if (not have_dcache_rsp(_load_queue [packet_id]._operation)) 995 throw E rrorMorpheo(_("Receive of respons, but the corresponding operation don't wait a respons."));1011 throw ERRORMORPHEO(FUNCTION,_("Receive of respons, but the corresponding operation don't wait a respons.")); 996 1012 #endif 997 1013 … … 1032 1048 case LOAD_QUEUE_WAIT_CHECK : _load_queue [packet_id]._state = LOAD_QUEUE_COMMIT_CHECK; break; 1033 1049 case LOAD_QUEUE_WAIT : _load_queue [packet_id]._state = LOAD_QUEUE_COMMIT ; break; 1034 default : throw E rrorMorpheo(_("Illegal state (dcache_rsp).")); break;1050 default : throw ERRORMORPHEO(FUNCTION,_("Illegal state (dcache_rsp).")); break; 1035 1051 } 1036 1052 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_statistics_allocation.cpp
r108 r110 20 20 21 21 #undef FUNCTION 22 #define FUNCTION "Load_store_unit::statistics_ declaration"23 void Load_store_unit::statistics_ declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)22 #define FUNCTION "Load_store_unit::statistics_allocation" 23 void Load_store_unit::statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics) 24 24 { 25 25 log_printf(FUNC,Load_store_unit,FUNCTION,"Begin"); … … 49 49 _stat->create_expr("percent_use_speculative_access_queue" , "/ * average_use_speculative_access_queue 100 " + toString(_param->_size_speculative_access_queue), false); 50 50 51 52 _stat_nb_inst_load = _stat->create_variable("nb_inst_load" ); 53 _stat_nb_inst_load_commit_speculative = _stat->create_variable("nb_inst_load_commit_speculative"); 54 _stat_nb_inst_load_commit_miss = _stat->create_variable("nb_inst_load_commit_miss" ); 55 56 _stat->create_expr_percent("percent_nb_inst_load_commit_speculative","nb_inst_load_commit_speculative", "nb_inst_load" , "Percent of load instruction with a speculative commit "); 57 _stat->create_expr_percent("percent_nb_inst_load_commit_miss" ,"nb_inst_load_commit_miss" , "nb_inst_load_commit_speculative", "Percent of load instruction with a miss speculative commit"); 58 59 51 60 log_printf(FUNC,Load_store_unit,FUNCTION,"End"); 52 61 };
Note: See TracChangeset
for help on using the changeset viewer.