Ignore:
Timestamp:
Jul 19, 2013, 2:34:03 PM (11 years ago)
Author:
devigne
Message:

Introducing merged components between the last trunk TSAR version
and the ODCCP modifications

Location:
branches/ODCCP/modules/vci_mem_cache
Files:
3 edited
1 copied

Legend:

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

    r449 r460  
    9999    bool    dirty;                  // entry dirty
    100100    bool    lock;                   // entry locked
     101    bool    coherent;               // entry coherent or not
    101102    tag_t   tag;                    // tag of the entry
    102103    size_t  count;                  // number of copies
     
    110111      dirty         = false;
    111112      lock          = false;
     113      coherent      = true;
    112114      tag           = 0;
    113115      count         = 0;
     
    126128      dirty         = source.dirty;
    127129      lock          = source.lock;
     130      coherent      = source.coherent;
    128131      tag           = source.tag;
    129132      count         = source.count;
     
    141144      dirty     = false;
    142145      lock      = false;
     146      coherent  = true;
    143147      count     = 0;
    144148    }
     
    153157      dirty         = source.dirty;
    154158      lock          = source.lock;
     159      coherent  = source.coherent;
    155160      tag           = source.tag;
    156161      count     = source.count;
  • branches/ODCCP/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h

    r449 r460  
    254254        IXR_CMD_CAS_IDLE,
    255255        IXR_CMD_XRAM_IDLE,
     256        IXR_CMD_CLEANUP_IDLE,
    256257        IXR_CMD_READ,
    257258        IXR_CMD_WRITE,
    258259        IXR_CMD_CAS,
    259         IXR_CMD_XRAM
     260        IXR_CMD_XRAM,
     261        IXR_CMD_CLEANUP_DATA
    260262      };
    261263
     
    291293        CLEANUP_IDLE,
    292294        CLEANUP_GET_NLINE,
     295        CLEANUP_GET_DATA,
    293296        CLEANUP_DIR_REQ,
    294297        CLEANUP_DIR_LOCK,
     
    304307        CLEANUP_WRITE_RSP,
    305308        CLEANUP_CONFIG_ACK,
     309        CLEANUP_IXR_REQ,
     310        CLEANUP_WAIT,
    306311        CLEANUP_SEND_CLACK
    307312      };
     
    326331        ALLOC_TRT_CAS,
    327332        ALLOC_TRT_XRAM_RSP,
    328         ALLOC_TRT_IXR_RSP
     333        ALLOC_TRT_IXR_RSP,
     334        ALLOC_TRT_CLEANUP
    329335      };
    330336
     
    425431      uint32_t     m_cpt_inval_brdcast; // Number of BROADCAST INVAL
    426432      uint32_t     m_cpt_cleanup;       // Number of CLEANUP transactions
     433      uint32_t     m_cpt_cleanup_data;  // Number of CLEANUP WITH DATA transactions
    427434      uint32_t     m_cpt_ll;            // Number of LL transactions
    428435      uint32_t     m_cpt_sc;            // Number of SC transactions
    429436      uint32_t     m_cpt_cas;           // Number of CAS transactions
     437     
     438      uint32_t     m_cpt_read_fsm_dir_lock;        // wait DIR LOCK
     439      uint32_t     m_cpt_read_fsm_n_dir_lock;      // NB DIR LOCK
     440      uint32_t     m_cpt_write_fsm_dir_lock;       // wait DIR LOCK
     441      uint32_t     m_cpt_write_fsm_n_dir_lock;     // NB DIR LOCK
     442      uint32_t     m_cpt_xram_rsp_fsm_dir_lock;    // wait DIR LOCK
     443      uint32_t     m_cpt_xram_rsp_fsm_n_dir_lock;  // NB DIR LOCK
     444      uint32_t     m_cpt_cas_fsm_dir_lock;         // wait DIR LOCK
     445      uint32_t     m_cpt_cas_fsm_n_dir_lock;       // NB DIR LOCK
     446      uint32_t     m_cpt_cleanup_fsm_dir_lock;     // wait DIR LOCK
     447      uint32_t     m_cpt_cleanup_fsm_n_dir_lock;   // NB DIR LOCK
     448     
     449      uint32_t     m_cpt_dir_unused;            // NB cycles DIR LOCK unused
     450      uint32_t     m_cpt_read_fsm_dir_used;     // NB cycles DIR LOCK used
     451      uint32_t     m_cpt_write_fsm_dir_used;    // NB cycles DIR LOCK used
     452      uint32_t     m_cpt_cas_fsm_dir_used;      // NB cycles DIR LOCK used
     453      uint32_t     m_cpt_xram_rsp_fsm_dir_used; // NB cycles DIR LOCK used
     454      uint32_t     m_cpt_cleanup_fsm_dir_used;  // NB cycles DIR LOCK used
     455
     456      uint32_t     m_cpt_read_fsm_trt_lock;      // wait TRT LOCK
     457      uint32_t     m_cpt_write_fsm_trt_lock;     // wait TRT LOCK
     458      uint32_t     m_cpt_cas_fsm_trt_lock;       // wait TRT LOCK
     459      uint32_t     m_cpt_xram_rsp_fsm_trt_lock;  // wait TRT LOCK
     460      uint32_t     m_cpt_ixr_fsm_trt_lock;       // wait TRT LOCK
     461     
     462      uint32_t     m_cpt_read_fsm_n_trt_lock;      // NB TRT LOCK
     463      uint32_t     m_cpt_write_fsm_n_trt_lock;     // NB TRT LOCK
     464      uint32_t     m_cpt_cas_fsm_n_trt_lock;       // NB TRT LOCK
     465      uint32_t     m_cpt_xram_rsp_fsm_n_trt_lock;  // NB TRT LOCK
     466      uint32_t     m_cpt_ixr_fsm_n_trt_lock;       // NB TRT LOCK
     467
     468      uint32_t     m_cpt_read_fsm_trt_used;      // NB cycles TRT LOCK used
     469      uint32_t     m_cpt_write_fsm_trt_used;     // NB cycles TRT LOCK used
     470      uint32_t     m_cpt_cas_fsm_trt_used;       // NB cycles TRT LOCK used
     471      uint32_t     m_cpt_xram_rsp_fsm_trt_used;  // NB cycles TRT LOCK used
     472      uint32_t     m_cpt_ixr_fsm_trt_used;       // NB cycles TRT LOCK used
     473     
     474      uint32_t     m_cpt_trt_unused;            // NB cycles TRT LOCK unused
     475
     476      uint32_t     m_cpt_write_fsm_upt_lock;     // wait UPT LOCK
     477      uint32_t     m_cpt_xram_rsp_fsm_upt_lock;  // wait UPT LOCK
     478      uint32_t     m_cpt_multi_ack_fsm_upt_lock; // wait UPT LOCK
     479      uint32_t     m_cpt_cleanup_fsm_upt_lock;   // wait UPT LOCK
     480      uint32_t     m_cpt_cas_fsm_upt_lock;       // wait UPT LOCK
     481     
     482      uint32_t     m_cpt_write_fsm_n_upt_lock;     // NB UPT LOCK
     483      uint32_t     m_cpt_xram_rsp_fsm_n_upt_lock;  // NB UPT LOCK
     484      uint32_t     m_cpt_multi_ack_fsm_n_upt_lock; // NB UPT LOCK
     485      uint32_t     m_cpt_cleanup_fsm_n_upt_lock;   // NB UPT LOCK
     486      uint32_t     m_cpt_cas_fsm_n_upt_lock;       // NB UPT LOCK
     487     
     488      uint32_t     m_cpt_write_fsm_upt_used;     // NB cycles UPT LOCK used
     489      uint32_t     m_cpt_xram_rsp_fsm_upt_used;  // NB cycles UPT LOCK used
     490      uint32_t     m_cpt_multi_ack_fsm_upt_used; // NB cycles UPT LOCK used
     491      uint32_t     m_cpt_cleanup_fsm_upt_used;   // NB cycles UPT LOCK used
     492      uint32_t     m_cpt_cas_fsm_upt_used;       // NB cycles UPT LOCK used
     493     
     494      uint32_t     m_cpt_upt_unused;            // NB cycles UPT LOCK unused
     495
     496      uint32_t     m_cpt_read_fsm_heap_lock;     // wait HEAP LOCK
     497      uint32_t     m_cpt_write_fsm_heap_lock;    // wait HEAP LOCK
     498      uint32_t     m_cpt_cas_fsm_heap_lock;      // wait HEAP LOCK
     499      uint32_t     m_cpt_cleanup_fsm_heap_lock;  // wait HEAP LOCK
     500      uint32_t     m_cpt_xram_rsp_fsm_heap_lock; // wait HEAP LOCK
     501     
     502      uint32_t     m_cpt_read_fsm_n_heap_lock;     // NB HEAP LOCK
     503      uint32_t     m_cpt_write_fsm_n_heap_lock;    // NB HEAP LOCK
     504      uint32_t     m_cpt_cas_fsm_n_heap_lock;      // NB HEAP LOCK
     505      uint32_t     m_cpt_cleanup_fsm_n_heap_lock;  // NB HEAP LOCK
     506      uint32_t     m_cpt_xram_rsp_fsm_n_heap_lock; // NB HEAP LOCK
     507     
     508      uint32_t     m_cpt_read_fsm_heap_used;     // NB cycles HEAP LOCK used
     509      uint32_t     m_cpt_write_fsm_heap_used;    // NB cycles HEAP LOCK used
     510      uint32_t     m_cpt_cas_fsm_heap_used;      // NB cycles HEAP LOCK used
     511      uint32_t     m_cpt_cleanup_fsm_heap_used;  // NB cycles HEAP LOCK used
     512      uint32_t     m_cpt_xram_rsp_fsm_heap_used; // NB cycles HEAP LOCK used
     513     
     514      uint32_t     m_cpt_heap_unused;            // NB cycles HEAP LOCK unused
    430515
    431516      uint32_t     m_cpt_cleanup_cost;  // Number of (flits * distance) for CLEANUPs
     
    473558      ~VciMemCache();
    474559
     560      void clear_stats();
    475561      void print_stats();
    476562      void print_trace();
     
    852938      // Buffer between IXR_RSP fsm and XRAM_RSP fsm  (response from the XRAM)
    853939      sc_signal<bool>   * r_ixr_rsp_to_xram_rsp_rok; // A xram response is ready
     940      sc_signal<bool>   * r_ixr_rsp_to_xram_rsp_no_coherent; // A xram response is ready and no coherent (ODCCP)
    854941
    855942      ////////////////////////////////////////////////////
     
    861948      TransactionTabEntry r_xram_rsp_trt_buf;           // TRT entry local buffer
    862949      sc_signal<bool>     r_xram_rsp_victim_inval;      // victim line invalidate
     950      sc_signal<bool>     r_xram_rsp_victim_coherent;   // victim line coherent
    863951      sc_signal<bool>     r_xram_rsp_victim_is_cnt;     // victim line inst bit
    864952      sc_signal<bool>     r_xram_rsp_victim_dirty;      // victim line dirty bit
     
    9581046      sc_signal<int>      r_alloc_heap_fsm;
    9591047      sc_signal<unsigned> r_alloc_heap_reset_cpt;
     1048
     1049
     1050      ////////////////////////////////////////////////////
     1051      // REGISTERS FOR ODCCP
     1052      ////////////////////////////////////////////////////
     1053
     1054      sc_signal<uint32_t>  r_cleanup_data_index;
     1055      sc_signal<uint32_t>  r_cleanup_trdid;
     1056      sc_signal<uint32_t>  r_cleanup_pktid;
     1057      sc_signal<data_t>    *r_cleanup_data;          // buffer for saving data from cleanup
     1058      sc_signal<bool>      r_cleanup_contains_data;
     1059      sc_signal<bool>      r_cleanup_ncc;
     1060     
     1061      sc_signal<bool>      r_xram_rsp_to_ixr_cmd_inval_ncc_pending;
     1062     
     1063      sc_signal<bool>      r_cleanup_to_ixr_cmd_req;
     1064      sc_signal<data_t>    *r_cleanup_to_ixr_cmd_data;
     1065      sc_signal<uint32_t>  r_cleanup_to_ixr_cmd_srcid;
     1066      sc_signal<bool>      r_cleanup_to_ixr_cmd_l1_dirty_ncc; // this cleanup was dirty in L1
     1067      sc_signal<uint32_t>  r_cleanup_to_ixr_cmd_trdid;
     1068      sc_signal<uint32_t>  r_cleanup_to_ixr_cmd_pktid;
     1069      sc_signal<addr_t>    r_cleanup_to_ixr_cmd_nline;
    9601070    }; // end class VciMemCache
    9611071
  • branches/ODCCP/modules/vci_mem_cache/caba/source/include/xram_transaction.h

    r422 r460  
    293293        return false;
    294294    }
     295   
     296    ///////////////////////////////////////////////////////////////////////
     297    // The hit_write() function looks if an XRAM write transaction exists
     298    // for a given line.
     299    // Arguments :
     300    // - nline : the index (zy) of the requested line
     301    // The function returns true if a write request has already been sent
     302    ///////////////////////////////////////////////////////////////////////
     303    bool hit_write(const addr_t nline, size_t *index)
     304    {
     305        for(size_t i=0; i<size_tab; i++){
     306            if(tab[i].valid && (nline==tab[i].nline) && !(tab[i].xram_read)) {
     307                *index = i;
     308                return true;   
     309            }
     310        }
     311        return false;
     312    }
    295313
    296314    /////////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.