Ignore:
Timestamp:
Dec 19, 2014, 4:45:08 PM (10 years ago)
Author:
haoliu
Message:

(HMESI)
Fixed bug for the write cost counter and the sc cost counter in the memcache
component.

File:
1 edited

Legend:

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

    r838 r910  
    678678        uint8_t req_y = (req_srcid >> (srcid_width - m_x_width - m_y_width)) & ((1 << m_y_width) - 1);
    679679
    680         return abs(m_x_self - req_x) + abs(m_y_self - req_y);
     680        return abs(m_x_self - req_x) + abs(m_y_self - req_y) + 1;
    681681    }
    682682
     
    686686        /////////////////////////////////////////////////////
    687687    {
    688         return req_distance(req_srcid) == 0;
     688        return req_distance(req_srcid) == 1;
    689689    }
    690690
     
    18581858                    cmd_write_fifo_put = true;
    18591859                    // <Activity counters>
    1860                     if (p_vci_tgt.cmd.read() == vci_param_int::CMD_NOP) {
    1861                         // (2 (CMD) + 1 (RSP)) flits VCI => 4 + (1 (success) || 2 (failure)) flits dspin
    1862                         m_cpt_sc_cost += 5 * req_distance(p_vci_tgt.srcid.read());
    1863                     }
    1864                     else {
     1860                    if (p_vci_tgt.cmd.read() != vci_param_int::CMD_NOP) {
    18651861                        if (is_local_req(p_vci_tgt.srcid.read()))
    18661862                        {
     
    18711867                            m_cpt_write_flits_remote++;
    18721868                        }
    1873                         // (burst_size (CMD) + 1 (RSP) flits VCI => 2 + burst_size + 1 flits dspin
    1874                         m_cpt_write_cost += (3 + (plen >> 2)) * req_distance(p_vci_tgt.srcid.read());
    18751869                    }
    18761870                    // </Activity counters>
     
    18791873                        // <Activity counters>
    18801874                        if (p_vci_tgt.cmd.read() == vci_param_int::CMD_NOP) {
     1875                            // SC
     1876                            // (2 (CMD) + 1 (RSP)) flits VCI => 4 + (1 (success) || 2 (failure)) flits dspin
     1877                            m_cpt_sc_cost += 5 * req_distance(p_vci_tgt.srcid.read());
     1878
    18811879                            if (is_local_req(p_vci_tgt.srcid.read()))
    18821880                            {
     
    18891887                        }
    18901888                        else {
     1889                            // WRITE
     1890                            // (burst_size + 1 (CMD) + 1 (RSP)) flits VCI => 2 + burst_size + 1 flits dspin
     1891                            m_cpt_write_cost += (3 + (plen >> 2)) * req_distance(p_vci_tgt.srcid.read());
     1892
    18911893                            if (is_local_req(p_vci_tgt.srcid.read()))
    18921894                            {
Note: See TracChangeset for help on using the changeset viewer.