Ignore:
Timestamp:
May 25, 2009, 7:40:26 PM (15 years ago)
Author:
rosiere
Message:

1) Prediction unit : static prediction not blocking

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

    r118 r119  
    255255    else
    256256      {
     257        // load_queue_push if speculative_access_queue have access at the dcache, or they have an event
     258        bool load_queue_push = (_speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._state == SPECULATIVE_ACCESS_QUEUE_WAIT_LOAD_QUEUE);
     259
    257260        //================================================================
    258261        // Interface "MEMORY_OUT"
     
    898901
    899902                _speculative_access_queue [index]._exception            = exception;
    900                
    901                 log_printf(TRACE,Load_store_unit,FUNCTION,"      * index         : %d",index);
    902903              }
    903904          }
     
    906907        // Interface "DCACHE_REQ"
    907908        //================================================================
    908         bool load_queue_push = (_speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._state == SPECULATIVE_ACCESS_QUEUE_WAIT_LOAD_QUEUE);
    909 
    910909        if ((    internal_DCACHE_REQ_VAL  == 1) and
    911910            (PORT_READ(in_DCACHE_REQ_ACK[0]) == 1))
     
    948947        if (load_queue_push)
    949948          {
     949            log_printf(TRACE,Load_store_unit,FUNCTION,"  * load_queue_push");
     950
    950951            Tlsq_ptr_t   ptr_write = _speculative_access_queue[internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._load_queue_ptr_write;
    951952            Toperation_t operation = _speculative_access_queue[internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._operation;
    952953            Texception_t exception = _speculative_access_queue[internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._exception;
    953954            bool         have_exception = (exception != EXCEPTION_MEMORY_NONE);
     955            bool         need_check= false;
    954956           
    955957            if (have_exception)
     
    963965                      {
    964966                        // load
     967                        need_check = true;
    965968                        _load_queue [ptr_write]._state = LOAD_QUEUE_WAIT_CHECK;
    966969                      }
     
    10201023
    10211024            // Only load need check
    1022             if (is_operation_memory_load(_load_queue [ptr_write]._operation))
     1025            if (need_check)
     1026//             if (is_operation_memory_load(_load_queue [ptr_write]._operation))
    10231027              {
    10241028                log_printf(TRACE,Load_store_unit,FUNCTION,"    * update nb_check");
Note: See TracChangeset for help on using the changeset viewer.