Ignore:
Timestamp:
Aug 29, 2014, 11:41:01 AM (8 years ago)
Author:
meunier
Message:

RWT:

  • Fix the way cleanups and cleanups with data (and their associated cost) are counted in the vci_mem_cache
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/RWT/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp

    r780 r783  
    616616    /////////////////////////////////////////////////////
    617617    tmpl(void) ::cache_monitor(addr_t addr)
    618         /////////////////////////////////////////////////////
     618    /////////////////////////////////////////////////////
    619619    {
    620620        size_t way = 0;
     
    678678    /////////////////////////////////////////////////////
    679679    tmpl(uint32_t)::min_value(uint32_t old_value, uint32_t new_value)
    680         /////////////////////////////////////////////////////
     680    /////////////////////////////////////////////////////
    681681    {
    682682        if (old_value < new_value)
     
    688688    /////////////////////////////////////////////////////
    689689    tmpl(uint32_t)::req_distance(uint32_t req_srcid)
    690         /////////////////////////////////////////////////////
     690    /////////////////////////////////////////////////////
    691691    {
    692692        const uint32_t srcid_width = vci_param_int::S;
     
    701701    /////////////////////////////////////////////////////
    702702    tmpl(bool)::is_local_req(uint32_t req_srcid)
    703         /////////////////////////////////////////////////////
     703    /////////////////////////////////////////////////////
    704704    {
    705705        return req_distance(req_srcid) == 0;
     
    845845    /////////////////////////////////////////
    846846    {
    847         m_cpt_reset_count        = m_cpt_cycles;
    848         m_cpt_read_local         = 0;
    849         m_cpt_read_remote        = 0;
    850         m_cpt_read_cost          = 0;
    851         m_cpt_write_local        = 0;
    852         m_cpt_write_remote       = 0;
    853         m_cpt_write_flits_local  = 0;
    854         m_cpt_write_flits_remote = 0;
    855         m_cpt_write_cost         = 0;
    856         m_cpt_ll_local           = 0;
    857         m_cpt_ll_remote          = 0;
    858         m_cpt_ll_cost            = 0;
    859         m_cpt_sc_local           = 0;
    860         m_cpt_sc_remote          = 0;
    861         m_cpt_sc_cost            = 0;
    862         m_cpt_cas_local          = 0;
    863         m_cpt_cas_remote         = 0;
    864         m_cpt_cas_cost           = 0;
    865         m_cpt_update             = 0;
    866         m_cpt_update_local       = 0;
    867         m_cpt_update_remote      = 0;
    868         m_cpt_update_cost        = 0;
    869         m_cpt_minval             = 0;
    870         m_cpt_minval_local       = 0;
    871         m_cpt_minval_remote      = 0;
    872         m_cpt_minval_cost        = 0;
    873         m_cpt_binval             = 0;
    874         m_cpt_cleanup_local      = 0;
    875         m_cpt_cleanup_remote     = 0;
    876         m_cpt_cleanup_cost       = 0;
    877         m_cpt_read_miss          = 0;
    878         m_cpt_write_miss         = 0;
    879         m_cpt_write_dirty        = 0;
    880         m_cpt_trt_rb             = 0;
    881         m_cpt_trt_full           = 0;
    882         m_cpt_get                = 0;
    883         m_cpt_put                = 0;
    884         m_cpt_ncc_to_cc_read     = 0;
    885         m_cpt_ncc_to_cc_write    = 0;
    886         m_cpt_write_ncc_miss     = 0;
     847        m_cpt_reset_count         = m_cpt_cycles;
     848        m_cpt_read_local          = 0;
     849        m_cpt_read_remote         = 0;
     850        m_cpt_read_cost           = 0;
     851        m_cpt_write_local         = 0;
     852        m_cpt_write_remote        = 0;
     853        m_cpt_write_flits_local   = 0;
     854        m_cpt_write_flits_remote  = 0;
     855        m_cpt_write_cost          = 0;
     856        m_cpt_write_ncc_miss      = 0;
     857        m_cpt_ll_local            = 0;
     858        m_cpt_ll_remote           = 0;
     859        m_cpt_ll_cost             = 0;
     860        m_cpt_sc_local            = 0;
     861        m_cpt_sc_remote           = 0;
     862        m_cpt_sc_cost             = 0;
     863        m_cpt_cas_local           = 0;
     864        m_cpt_cas_remote          = 0;
     865        m_cpt_cas_cost            = 0;
     866        m_cpt_update              = 0;
     867        m_cpt_update_local        = 0;
     868        m_cpt_update_remote       = 0;
     869        m_cpt_update_cost         = 0;
     870        m_cpt_minval              = 0;
     871        m_cpt_minval_local        = 0;
     872        m_cpt_minval_remote       = 0;
     873        m_cpt_minval_cost         = 0;
     874        m_cpt_binval              = 0;
     875        m_cpt_write_broadcast     = 0;
     876        m_cpt_cleanup_local       = 0;
     877        m_cpt_cleanup_remote      = 0;
     878        m_cpt_cleanup_cost        = 0;
     879        m_cpt_read_miss           = 0;
     880        m_cpt_write_miss          = 0;
     881        m_cpt_write_dirty         = 0;
     882        m_cpt_trt_rb              = 0;
     883        m_cpt_trt_full            = 0;
     884        m_cpt_get                 = 0;
     885        m_cpt_put                 = 0;
     886        m_cpt_ncc_to_cc_read      = 0;
     887        m_cpt_ncc_to_cc_write     = 0;
     888        m_cpt_cleanup_data_local  = 0;
     889        m_cpt_cleanup_data_remote = 0;
     890        m_cpt_cleanup_data_cost   = 0;
    887891    }
    888892
     
    941945                << "[091] REMOTE CLEANUP            = " << m_cpt_cleanup_remote << std::endl
    942946                << "[092] CLNUP COST (FLITS * DIST) = " << m_cpt_cleanup_cost << std::endl
    943                 << "[093] CLEANUP DATA              = " << m_cpt_cleanup_data << std::endl
     947                << "[093] LOCAL CLEANUP DATA        = " << m_cpt_cleanup_data_local << std::endl
     948                << "[094] REMOTE CLEANUP DATA       = " << m_cpt_cleanup_data_remote << std::endl
     949                << "[095] CLEANUP DATA COST         = " << m_cpt_cleanup_data_cost << std::endl
    944950                << std::endl
    945951                << "[100] READ MISS                 = " << m_cpt_read_miss << std::endl
     
    10121018    /////////////////////////////////
    10131019    tmpl(/**/) ::~VciMemCache()
    1014         /////////////////////////////////
     1020    /////////////////////////////////
    10151021    {
    10161022        delete [] m_seg;
     
    10421048    //////////////////////////////////
    10431049    tmpl(void) ::transition()
    1044         //////////////////////////////////
     1050    //////////////////////////////////
    10451051    {
    10461052        using soclib::common::uint32_log2;
     
    11871193
    11881194            // Activity counters
    1189             m_cpt_reset_count        = 0;
    1190             m_cpt_cycles             = 0;
    1191             m_cpt_read_local         = 0;
    1192             m_cpt_read_remote        = 0;
    1193             m_cpt_read_cost          = 0;
    1194             m_cpt_write_local        = 0;
    1195             m_cpt_write_remote       = 0;
    1196             m_cpt_write_flits_local  = 0;
    1197             m_cpt_write_flits_remote = 0;
    1198             m_cpt_write_ncc_miss     = 0;
    1199             m_cpt_write_cost         = 0;
    1200             m_cpt_ll_local           = 0;
    1201             m_cpt_ll_remote          = 0;
    1202             m_cpt_ll_cost            = 0;
    1203             m_cpt_sc_local           = 0;
    1204             m_cpt_sc_remote          = 0;
    1205             m_cpt_sc_cost            = 0;
    1206             m_cpt_cas_local          = 0;
    1207             m_cpt_cas_remote         = 0;
    1208             m_cpt_cas_cost           = 0;
    1209             m_cpt_update             = 0;
    1210             m_cpt_update_local       = 0;
    1211             m_cpt_update_remote      = 0;
    1212             m_cpt_update_cost        = 0;
    1213             m_cpt_minval             = 0;
    1214             m_cpt_minval_local       = 0;
    1215             m_cpt_minval_remote      = 0;
    1216             m_cpt_minval_cost        = 0;
    1217             m_cpt_binval             = 0;
    1218             m_cpt_cleanup_local      = 0;
    1219             m_cpt_cleanup_remote     = 0;
    1220             m_cpt_cleanup_cost       = 0;
     1195            m_cpt_reset_count         = 0;
     1196            m_cpt_cycles              = 0;
     1197            m_cpt_read_local          = 0;
     1198            m_cpt_read_remote         = 0;
     1199            m_cpt_read_cost           = 0;
     1200            m_cpt_write_local         = 0;
     1201            m_cpt_write_remote        = 0;
     1202            m_cpt_write_flits_local   = 0;
     1203            m_cpt_write_flits_remote  = 0;
     1204            m_cpt_write_ncc_miss      = 0;
     1205            m_cpt_write_cost          = 0;
     1206            m_cpt_ll_local            = 0;
     1207            m_cpt_ll_remote           = 0;
     1208            m_cpt_ll_cost             = 0;
     1209            m_cpt_sc_local            = 0;
     1210            m_cpt_sc_remote           = 0;
     1211            m_cpt_sc_cost             = 0;
     1212            m_cpt_cas_local           = 0;
     1213            m_cpt_cas_remote          = 0;
     1214            m_cpt_cas_cost            = 0;
     1215            m_cpt_update              = 0;
     1216            m_cpt_update_local        = 0;
     1217            m_cpt_update_remote       = 0;
     1218            m_cpt_update_cost         = 0;
     1219            m_cpt_minval              = 0;
     1220            m_cpt_minval_local        = 0;
     1221            m_cpt_minval_remote       = 0;
     1222            m_cpt_minval_cost         = 0;
     1223            m_cpt_binval              = 0;
     1224            m_cpt_cleanup_local       = 0;
     1225            m_cpt_cleanup_remote      = 0;
     1226            m_cpt_cleanup_cost        = 0;
     1227            m_cpt_cleanup_data_local  = 0;
     1228            m_cpt_cleanup_data_remote = 0;
     1229            m_cpt_cleanup_data_cost   = 0;
     1230
    12211231
    12221232            m_cpt_read_miss               = 0;
     
    12701280            m_cpt_read_data_miss_NCC      = 0;       
    12711281            m_cpt_read_ll_NCC             = 0;   
    1272             m_cpt_read_WTF                = 0;   
    1273             m_cpt_cleanup_data            = 0;     
    12741282            m_cpt_ncc_to_cc_read          = 0;     
    12751283            m_cpt_ncc_to_cc_write         = 0;       
     
    56885696                            "MEMC ERROR in CLEANUP_IDLE state : illegal SRCID value");
    56895697
    5690                     // <Activity Counters>
    5691                     if (is_local_req(srcid)) {
    5692                         m_cpt_cleanup_local++;
    5693                     }
    5694                     else {
    5695                         m_cpt_cleanup_remote++;
    5696                         m_cpt_cleanup_cost += req_distance(srcid);
    5697                     }
    5698                     // </Activity Counters>
    56995698                    cc_receive_to_cleanup_fifo_get = true;
    57005699                    r_cleanup_fsm                  = CLEANUP_GET_NLINE;
     
    57205719            case CLEANUP_GET_NLINE:  // GET second DSPIN flit of the cleanup command
    57215720                {
    5722                     if(not m_cc_receive_to_cleanup_fifo.rok()) break;
     5721                    if (not m_cc_receive_to_cleanup_fifo.rok()) break;
    57235722
    57245723                    uint64_t flit = m_cc_receive_to_cleanup_fifo.read();
     5724                    uint32_t srcid = r_cleanup_srcid.read();
    57255725
    57265726                    addr_t nline = r_cleanup_nline.read() |
    57275727                        DspinRwtParam::dspin_get(flit, DspinRwtParam::CLEANUP_NLINE_LSB);
    57285728
    5729                     bool eop =
    5730                         DspinRwtParam::dspin_get(flit, DspinRwtParam::P2M_EOP) == 0x1;
     5729                    bool eop = DspinRwtParam::dspin_get(flit, DspinRwtParam::P2M_EOP) == 0x1;
    57315730
    57325731                    if (! eop)
     
    57355734                        r_cleanup_data_index = 0;
    57365735                        r_cleanup_contains_data = true;
     5736                        // <Activity Counters>
     5737                        if (is_local_req(srcid)) {
     5738                            m_cpt_cleanup_local++;
     5739                            m_cpt_cleanup_data_local++;
     5740                        }
     5741                        else {
     5742                            m_cpt_cleanup_remote++;
     5743                            m_cpt_cleanup_data_remote++;
     5744                        }
     5745                        m_cpt_cleanup_cost += m_words * req_distance(srcid);
     5746                        m_cpt_cleanup_data_cost += m_words * req_distance(srcid);
     5747                        // </Activity Counters>
    57375748                    }
    57385749                    else
    57395750                    {
    57405751                        r_cleanup_fsm = CLEANUP_DIR_REQ;
     5752                        // <Activity Counters>
     5753                        if (is_local_req(srcid)) {
     5754                            m_cpt_cleanup_local++;
     5755                        }
     5756                        else {
     5757                            m_cpt_cleanup_remote++;
     5758                        }
     5759                        m_cpt_cleanup_cost += req_distance(srcid);
     5760                        // </Activity Counters>
    57415761                    }
    57425762                    cc_receive_to_cleanup_fifo_get = true;
     
    57745794                        {
    57755795                            r_cleanup_contains_data = true;
    5776                             m_cpt_cleanup_data ++;
    57775796                            r_cleanup_fsm = CLEANUP_DIR_REQ;
    57785797                        }
     
    77827801                        {
    77837802                            m_cpt_minval_remote++;
    7784                             m_cpt_minval_cost += req_distance(m_config_to_cc_send_srcid_fifo.read());
    7785                         }
     7803                        }
     7804                        m_cpt_minval_cost += req_distance(m_config_to_cc_send_srcid_fifo.read());
    77867805                        // </Activity Counters>
    77877806                        r_cc_send_fsm = CC_SEND_CONFIG_INVAL_NLINE;
     
    78497868                        {
    78507869                            m_cpt_minval_remote++;
    7851                             m_cpt_minval_cost += req_distance(m_xram_rsp_to_cc_send_srcid_fifo.read());
    7852                         }
     7870                        }
     7871                        m_cpt_minval_cost += req_distance(m_xram_rsp_to_cc_send_srcid_fifo.read());
    78537872                        // </Activity Counters>
    78547873                        r_cc_send_fsm = CC_SEND_XRAM_RSP_INVAL_NLINE;
     
    80028021                        {
    80038022                            m_cpt_update_remote++;
    8004                             m_cpt_update_cost += req_distance(m_write_to_cc_send_srcid_fifo.read());
    8005                         }
     8023                        }
     8024                        m_cpt_update_cost += req_distance(m_write_to_cc_send_srcid_fifo.read());
    80068025                        // </Activity Counters>
    80078026
     
    80918110                        {
    80928111                            m_cpt_update_remote++;
    8093                             m_cpt_update_cost += req_distance(m_cas_to_cc_send_srcid_fifo.read());
    8094                         }
     8112                        }
     8113                        m_cpt_update_cost += req_distance(m_cas_to_cc_send_srcid_fifo.read());
    80958114                        // </Activity Counters>
    80968115                        r_cc_send_fsm = CC_SEND_CAS_UPDT_NLINE;
     
    85668585                            else
    85678586                            {
    8568                                 m_cpt_read_WTF ++;
     8587                                assert(false);
    85698588                            }
    85708589                        }
     
    86588677                            else if (!r_cleanup_to_tgt_rsp_type.read())
    86598678                            {
    8660                                 m_cpt_read_WTF ++;
     8679                                assert(false);
    86618680                            }
    86628681
     
    87548773                            else
    87558774                            {
    8756                                 m_cpt_read_WTF ++;
     8775                                assert(false);
    87578776                            }
    87588777
Note: See TracChangeset for help on using the changeset viewer.