Ignore:
Timestamp:
Feb 19, 2009, 5:31:47 PM (15 years ago)
Author:
rosiere
Message:

1) OOO_egine : add stat to depiste low perf source
2) Commit : add stat
3) LSU_Pointer : retire - always ack (else combinatory loop). insert - max nb_inst_memory
4) TopLevel? : add debug_idle_time to stop combinatory loop.
5) Issue_queue : add reexecute_queue, new implementation (routage after issue_queue)
6) Decod / Predictor : add "can_continue"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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  
    602602                              _load_queue[index_load]._exception = EXCEPTION_MEMORY_MISS_SPECULATION;
    603603                              _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
    604609                            }
    605610                         
     
    696701#ifdef DEBUG_TEST
    697702                      if (is_operation_memory_store_head(operation) == true)
    698                         throw ErrorMorpheo(_("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."));
    699704#endif
    700705                      // Test if have a new exception (priority : miss_speculation)
     
    714719#ifdef DEBUG_TEST
    715720                      if (is_operation_memory_store_head(operation) == false)
    716                         throw ErrorMorpheo(_("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."));
    717722#endif
    718723                      if (operation == OPERATION_MEMORY_STORE_HEAD_KO)
     
    729734                  case STORE_QUEUE_COMMIT                  :
    730735                    {
    731                       throw ErrorMorpheo("<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");
    732737                    }
    733738                  }
     
    847852                  // if the speculation is a miss, write_rd is re set at 1.
    848853                  _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
    849860                  break;
    850861                }
     
    889900              case SELECT_LOAD_QUEUE :
    890901                {
    891                   throw ErrorMorpheo(_("Invalid selection"));
     902                  throw ERRORMORPHEO(FUNCTION,_("Invalid selection"));
    892903                  break;
    893904                }
     
    964975           
    965976            _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          }
    967983
    968984        //================================================================
     
    9931009#ifdef DEBUG_TEST
    9941010                if (not have_dcache_rsp(_load_queue [packet_id]._operation))
    995                   throw ErrorMorpheo(_("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."));
    9961012#endif
    9971013
     
    10321048                      case LOAD_QUEUE_WAIT_CHECK : _load_queue [packet_id]._state = LOAD_QUEUE_COMMIT_CHECK; break;
    10331049                      case LOAD_QUEUE_WAIT       : _load_queue [packet_id]._state = LOAD_QUEUE_COMMIT      ; break;
    1034                       default : throw ErrorMorpheo(_("Illegal state (dcache_rsp).")); break;
     1050                      default : throw ERRORMORPHEO(FUNCTION,_("Illegal state (dcache_rsp).")); break;
    10351051                      }
    10361052                  }
Note: See TracChangeset for help on using the changeset viewer.