Ignore:
Timestamp:
Oct 4, 2013, 2:34:03 PM (11 years ago)
Author:
haoliu
Message:

ODCCP merge the components with the version 543 in trunk.

Location:
branches/ODCCP/modules/vci_mem_cache/caba/source/include
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/ODCCP/modules/vci_mem_cache/caba/source/include

  • branches/ODCCP/modules/vci_mem_cache/caba/source/include/mem_cache_directory.h

    r494 r544  
    235235
    236236      bool hit       = false;
    237       for ( size_t i=0 ; i<m_ways ; i++ ) {
     237        for ( size_t i=0 ; i<m_ways ; i++ )
     238        {
    238239        bool equal = ( m_dir_tab[set][i].tag == tag );
    239240        bool valid = m_dir_tab[set][i].valid;
    240241        hit = equal && valid;
    241         if ( hit ) {                   
     242            if ( hit )
     243            {                   
    242244          way = i;
    243245          break;
    244246        }
    245247      }
    246       if ( hit ) {
     248        if ( hit )
     249        {
    247250        m_lru_tab[set][way].recent = true;
    248251        return DirectoryEntry(m_dir_tab[set][way]);
    249       } else {
     252        }
     253        else
     254        {
    250255        return DirectoryEntry();
    251256      }
  • branches/ODCCP/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h

    r494 r544  
    8080      {
    8181        TGT_CMD_IDLE,
    82         TGT_CMD_ERROR,
    8382        TGT_CMD_READ,
    8483        TGT_CMD_WRITE,
    8584        TGT_CMD_CAS,
     85        TGT_CMD_ERROR,
    8686        TGT_CMD_CONFIG
    8787      };
     
    9090      enum tgt_rsp_fsm_state_e
    9191      {
    92         TGT_RSP_CONFIG_IDLE,
    93         TGT_RSP_TGT_CMD_IDLE,
    9492        TGT_RSP_READ_IDLE,
    9593        TGT_RSP_WRITE_IDLE,
     
    9896        TGT_RSP_MULTI_ACK_IDLE,
    9997        TGT_RSP_CLEANUP_IDLE,
    100         TGT_RSP_CONFIG,
    101         TGT_RSP_TGT_CMD,
     98        TGT_RSP_CONFIG_IDLE,
     99        TGT_RSP_TGT_CMD_IDLE,
    102100        TGT_RSP_READ,
    103101        TGT_RSP_WRITE,
     
    105103        TGT_RSP_XRAM,
    106104        TGT_RSP_MULTI_ACK,
    107         TGT_RSP_CLEANUP
     105        TGT_RSP_CLEANUP,
     106        TGT_RSP_CONFIG,
     107        TGT_RSP_TGT_CMD
    108108      };
    109109
     
    120120      enum cc_send_fsm_state_e
    121121      {
    122         CC_SEND_CONFIG_IDLE,
    123122        CC_SEND_XRAM_RSP_IDLE,
    124123        CC_SEND_WRITE_IDLE,
    125124        CC_SEND_CAS_IDLE,
    126         CC_SEND_CONFIG_INVAL_HEADER,
    127         CC_SEND_CONFIG_INVAL_NLINE,
    128         CC_SEND_CONFIG_BRDCAST_HEADER,
    129         CC_SEND_CONFIG_BRDCAST_NLINE,
     125        CC_SEND_CONFIG_IDLE,
    130126        CC_SEND_XRAM_RSP_BRDCAST_HEADER,
    131127        CC_SEND_XRAM_RSP_BRDCAST_NLINE,
     
    142138        CC_SEND_CAS_UPDT_NLINE,
    143139        CC_SEND_CAS_UPDT_DATA,
    144         CC_SEND_CAS_UPDT_DATA_HIGH
     140        CC_SEND_CAS_UPDT_DATA_HIGH,
     141        CC_SEND_CONFIG_INVAL_HEADER,
     142        CC_SEND_CONFIG_INVAL_NLINE,
     143        CC_SEND_CONFIG_BRDCAST_HEADER,
     144        CC_SEND_CONFIG_BRDCAST_NLINE
    145145      };
    146146
     
    324324      {
    325325        ALLOC_DIR_RESET,
    326         ALLOC_DIR_CONFIG,
    327326        ALLOC_DIR_READ,
    328327        ALLOC_DIR_WRITE,
    329328        ALLOC_DIR_CAS,
    330329        ALLOC_DIR_CLEANUP,
    331         ALLOC_DIR_XRAM_RSP
     330        ALLOC_DIR_XRAM_RSP,
     331        ALLOC_DIR_CONFIG
    332332      };
    333333
     
    414414      uint32_t     m_cpt_cycles;        // Counter of cycles
    415415
    416       uint32_t     m_cpt_read;          // Number of READ transactions
     416      // Counters accessible in software (not yet but eventually)
     417      uint32_t     m_cpt_read_local;     // Number of local READ transactions
    417418      uint32_t     m_cpt_read_remote;   // number of remote READ transactions
    418       uint32_t     m_cpt_read_flits;    // number of flits for READs
    419419      uint32_t     m_cpt_read_cost;     // Number of (flits * distance) for READs
    420420
    421       uint32_t     m_cpt_read_miss;     // Number of MISS READ
    422 
    423       uint32_t     m_cpt_write;         // Number of WRITE transactions
     421      uint32_t     m_cpt_write_local;    // Number of local WRITE transactions
    424422      uint32_t     m_cpt_write_remote;  // number of remote WRITE transactions
    425       uint32_t     m_cpt_write_flits;   // number of flits for WRITEs
     423      uint32_t     m_cpt_write_flits_local;  // number of flits for local WRITEs
     424      uint32_t     m_cpt_write_flits_remote; // number of flits for remote WRITEs
    426425      uint32_t     m_cpt_write_cost;    // Number of (flits * distance) for WRITEs
    427426
     427      uint32_t     m_cpt_ll_local;       // Number of local LL transactions
     428      uint32_t     m_cpt_ll_remote;      // number of remote LL transactions
     429      uint32_t     m_cpt_ll_cost;        // Number of (flits * distance) for LLs
     430
     431      uint32_t     m_cpt_sc_local;       // Number of local SC transactions
     432      uint32_t     m_cpt_sc_remote;      // number of remote SC transactions
     433      uint32_t     m_cpt_sc_cost;        // Number of (flits * distance) for SCs
     434
     435      uint32_t     m_cpt_cas_local;      // Number of local SC transactions
     436      uint32_t     m_cpt_cas_remote;     // number of remote SC transactions
     437      uint32_t     m_cpt_cas_cost;       // Number of (flits * distance) for SCs
     438
     439      uint32_t     m_cpt_update;         // Number of requests causing an UPDATE
     440      uint32_t     m_cpt_update_local;   // Number of local UPDATE transactions
     441      uint32_t     m_cpt_update_remote;  // Number of remote UPDATE transactions
     442      uint32_t     m_cpt_update_cost;    // Number of (flits * distance) for UPDT
     443
     444      uint32_t     m_cpt_m_inval;        // Number of requests causing M_INV
     445      uint32_t     m_cpt_m_inval_local;  // Number of local M_INV transactions
     446      uint32_t     m_cpt_m_inval_remote; // Number of remote M_INV transactions
     447      uint32_t     m_cpt_m_inval_cost;   // Number of (flits * distance) for M_INV
     448
     449      uint32_t     m_cpt_br_inval;       // Number of BROADCAST INVAL
     450
     451      uint32_t     m_cpt_cleanup_local;  // Number of local CLEANUP transactions
     452      uint32_t     m_cpt_cleanup_remote; // Number of remote CLEANUP transactions
     453      uint32_t     m_cpt_cleanup_cost;   // Number of (flits * distance) for CLEANUPs
     454
     455      // Counters not accessible by software
     456      uint32_t     m_cpt_read_miss;      // Number of MISS READ
    428457      uint32_t     m_cpt_write_miss;    // Number of MISS WRITE
    429       uint32_t     m_cpt_write_cells;   // Cumulated length for WRITE transactions
    430458      uint32_t     m_cpt_write_dirty;   // Cumulated length for WRITE transactions
    431       uint32_t     m_cpt_update;        // Number of UPDATE transactions
     459      uint32_t     m_cpt_write_broadcast;// Number of BROADCAST INVAL because write
     460
    432461      uint32_t     m_cpt_trt_rb;        // Read blocked by a hit in trt
    433462      uint32_t     m_cpt_trt_full;      // Transaction blocked due to a full trt
     
    441470      uint32_t     m_cpt_sc;            // Number of SC transactions
    442471      uint32_t     m_cpt_cas;           // Number of CAS transactions
    443      
    444472      uint32_t     m_cpt_read_fsm_dir_lock;        // wait DIR LOCK
    445473      uint32_t     m_cpt_read_fsm_n_dir_lock;      // NB DIR LOCK
     
    520548      uint32_t     m_cpt_heap_unused;            // NB cycles HEAP LOCK unused
    521549
    522       uint32_t     m_cpt_cleanup_cost;  // Number of (flits * distance) for CLEANUPs
    523 
    524550      uint32_t     m_cpt_update_flits;  // Number of flits for UPDATEs
    525       uint32_t     m_cpt_update_cost;   // Number of (flits * distance) for UPDATEs
    526 
    527551      uint32_t     m_cpt_inval_cost;    // Number of (flits * distance) for INVALs
    528552
    529553      uint32_t     m_cpt_get;
    530 
    531554      uint32_t     m_cpt_put;
    532555
     
    546569      soclib::caba::DspinOutput<dspin_out_width>  p_dspin_clack;
    547570
     571#if MONITOR_MEMCACHE_FSM == 1
     572      sc_out<int> p_read_fsm;
     573      sc_out<int> p_write_fsm;
     574      sc_out<int> p_xram_rsp_fsm;
     575      sc_out<int> p_cas_fsm;
     576      sc_out<int> p_cleanup_fsm;
     577      sc_out<int> p_config_fsm;
     578      sc_out<int> p_alloc_heap_fsm;
     579      sc_out<int> p_alloc_dir_fsm;
     580      sc_out<int> p_alloc_trt_fsm;
     581      sc_out<int> p_alloc_upt_fsm;
     582      sc_out<int> p_alloc_ivt_fsm;
     583      sc_out<int> p_tgt_cmd_fsm;
     584      sc_out<int> p_tgt_rsp_fsm;
     585      sc_out<int> p_ixr_cmd_fsm;
     586      sc_out<int> p_ixr_rsp_fsm;
     587      sc_out<int> p_cc_send_fsm;
     588      sc_out<int> p_cc_receive_fsm;
     589      sc_out<int> p_multi_ack_fsm;
     590#endif
     591
    548592      VciMemCache(
    549593          sc_module_name name,                                // Instance Name
     
    553597          const soclib::common::IntTab       &tgtid_d,        // global index INT network
    554598          const size_t                       cc_global_id,    // global index CC network
     599          const size_t                       x_width,         // X width in platform
     600          const size_t                       y_width,         // Y width in platform
    555601          const size_t                       nways,           // Number of ways per set
    556602          const size_t                       nsets,           // Number of sets
     
    566612      ~VciMemCache();
    567613
    568       void clear_stats();
    569       void print_stats();
     614      void print_stats(bool activity_counters, bool stats);
    570615      void print_trace();
    571616      void cache_monitor(addr_t addr);
     
    578623      void genMoore();
    579624      void check_monitor(addr_t addr, data_t data, bool read);
     625      uint32_t req_distance(uint32_t req_srcid);
     626      bool is_local_req(uint32_t req_srcid);
    580627
    581628      // Component attributes
     
    591638      const size_t                       m_words;            // Number of words in a line
    592639      const size_t                       m_cc_global_id;     // global_index on cc network
     640      const size_t                       m_xwidth;           // number of x bits in platform
     641      const size_t                       m_ywidth;           // number of y bits in platform
    593642      size_t                             m_debug_start_cycle;
    594643      bool                               m_debug_ok;
     
    665714
    666715      sc_signal<int>         r_tgt_cmd_fsm;
    667       sc_signal<size_t>      r_tgt_cmd_srcid;           // srcid for response to config
    668       sc_signal<size_t>      r_tgt_cmd_trdid;           // trdid for response to config
    669       sc_signal<size_t>      r_tgt_cmd_pktid;           // pktid for response to config
    670716
    671717      ///////////////////////////////////////////////////////
     
    696742      sc_signal<bool>     r_config_to_ixr_cmd_req;    // valid request
    697743      sc_signal<size_t>   r_config_to_ixr_cmd_index;  // TRT index
    698 
    699744
    700745      // Buffer between CONFIG fsm and TGT_RSP fsm (send a done response to L1 cache)
     
    776821      sc_signal<size_t>   r_write_upt_index;          // index in Update Table
    777822      sc_signal<bool>     r_write_sc_fail;            // sc command failed
    778       sc_signal<bool>     r_write_pending_sc;         // sc command pending
     823      sc_signal<data_t>   r_write_sc_key;             // sc command key
     824      sc_signal<bool>     r_write_bc_data_we;         // Write enable for data buffer
    779825
    780826      // Buffer between WRITE fsm and TGT_RSP fsm (acknowledge a write command from L1)
     
    787833      // Buffer between WRITE fsm and IXR_CMD fsm
    788834      sc_signal<bool>     r_write_to_ixr_cmd_req;     // valid request
    789       sc_signal<bool>     r_write_to_ixr_cmd_put;     // request type (GET/PUT)
    790835      sc_signal<size_t>   r_write_to_ixr_cmd_index;   // TRT index
    791836
     
    891936      // Buffer between CAS fsm and IXR_CMD fsm
    892937      sc_signal<bool>     r_cas_to_ixr_cmd_req;   // valid request
    893       sc_signal<bool>     r_cas_to_ixr_cmd_put;   // request type (GET/PUT)
    894938      sc_signal<size_t>   r_cas_to_ixr_cmd_index; // TRT index
    895939
Note: See TracChangeset for help on using the changeset viewer.