Ignore:
Timestamp:
Jun 8, 2010, 5:04:20 PM (14 years ago)
Author:
alain
Message:

Introducing an improved memory consistency in the multi-write-buffer:

  • write after write and read after write policy for cachable access
  • fully blocking uncachable access (for both read and write requests)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/vci_cc_xcache_wrapper_multi/caba/source/include/vci_cc_xcache_wrapper_multi.h

    r2 r45  
    6565        DCACHE_MISS_UPDT,
    6666        DCACHE_UNC_WAIT,
     67        DCACHE_UNC_GO,
    6768        DCACHE_INVAL,
    6869        DCACHE_SYNC,
     
    8081        ICACHE_MISS_UPDT,
    8182        ICACHE_UNC_WAIT,
     83        ICACHE_UNC_GO,
    8284        ICACHE_ERROR,
    8385        ICACHE_CC_CHECK,
     
    117119
    118120    enum cleanup_fsm_state_e {
    119         CLEANUP_CMD,
    120         CLEANUP_DCACHE_RSP,
    121         CLEANUP_ICACHE_RSP,
     121        CLEANUP_IDLE,
     122        CLEANUP_DCACHE,
     123        CLEANUP_ICACHE,
    122124    };
    123125
     
    148150    const uint32_t                                                      m_srcid_c;   
    149151   
    150     const size_t                                m_wbuf_nlines;
    151152    const size_t                                                        m_dcache_ways;
    152153    const size_t                                                        m_dcache_words;
     
    233234    uint32_t m_cpt_icache_dir_write;        // ICACHE DIR WRITE
    234235
    235     uint32_t m_cpt_cc_update;               // number of coherence update packets
    236     uint32_t m_cpt_cc_inval;                // number of coherence inval packets
     236    uint32_t m_cpt_cc_broadcast;            // number of coherence broadcast packets
     237    uint32_t m_cpt_cc_update_data;          // number of coherence data update packets
     238    uint32_t m_cpt_cc_update_ins;           // number of coherence instruction update packets
     239    uint32_t m_cpt_cc_inval_data;           // number of coherence data inval packets
     240    uint32_t m_cpt_cc_inval_ins;            // number of coherence instruction inval packets
     241    uint32_t m_cpt_cc_cleanup_data;         // number of coherence data cleanup packets
     242    uint32_t m_cpt_cc_cleanup_ins;          // number of coherence instruction cleanup packets
    237243
    238244    uint32_t m_cpt_frz_cycles;              // number of cycles where the cpu is frozen
    239245    uint32_t m_cpt_total_cycles;            // total number of cycles
    240246
    241     uint32_t m_cpt_read;                    // total number of read instructions
    242     uint32_t m_cpt_write;                   // total number of write instructions
     247    uint32_t m_cpt_read;                    // total number of read requests
     248    uint32_t m_cpt_write;                   // total number of write requests
     249    uint32_t m_cpt_write_cached;            // number of cached write requests
     250    uint32_t m_cpt_data_unc;                // number of uncachable data requests
     251    uint32_t m_cpt_ins_unc;                 // number of uncachable instruction requests
     252    uint32_t m_cpt_ll;                      // number of ll requests
     253    uint32_t m_cpt_sc;                      // number of sc requests
    243254    uint32_t m_cpt_data_miss;               // number of read miss
    244255    uint32_t m_cpt_ins_miss;                // number of instruction miss
    245     uint32_t m_cpt_unc_read;                // number of read uncached
    246     uint32_t m_cpt_write_cached;            // number of cached write
    247256
    248257    uint32_t m_cost_write_frz;              // number of frozen cycles related to write buffer         
    249258    uint32_t m_cost_data_miss_frz;          // number of frozen cycles related to data miss
    250     uint32_t m_cost_unc_read_frz;           // number of frozen cycles related to uncached read
     259    uint32_t m_cost_unc_frz;                // number of frozen cycles related to uncached read
    251260    uint32_t m_cost_ins_miss_frz;           // number of frozen cycles related to ins miss
    252261
    253262    uint32_t m_cpt_imiss_transaction;       // number of VCI instruction miss transactions
    254263    uint32_t m_cpt_dmiss_transaction;       // number of VCI data miss transactions
    255     uint32_t m_cpt_unc_transaction;         // number of VCI uncached read transactions
     264    uint32_t m_cpt_data_unc_transaction;    // number of VCI instruction uncached transactions
     265    uint32_t m_cpt_ins_unc_transaction;     // number of VCI data uncached transactions
    256266    uint32_t m_cpt_write_transaction;       // number of VCI write transactions
    257267
     
    278288                       size_t dcache_words,
    279289                       size_t wbuf_nwords,
    280                        size_t wbuf_nlines );
     290                       size_t wbuf_nlines,
     291                       size_t wbuf_timeout);
    281292
    282293    ~VciCcXCacheWrapperMulti();
    283294
    284     void print_cpi();
    285     void print_stats();
     295    void printTrace(size_t mode);
     296    void printStatistics();
    286297
    287298private:
     
    290301    void genMoore();
    291302
    292     soclib_static_assert((int)iss_t::SC_ATOMIC == (int)vci_param::STORE_COND_ATOMIC);
    293     soclib_static_assert((int)iss_t::SC_NOT_ATOMIC == (int)vci_param::STORE_COND_NOT_ATOMIC);
     303    static_assert((int)iss_t::SC_ATOMIC == (int)vci_param::STORE_COND_ATOMIC);
     304    static_assert((int)iss_t::SC_NOT_ATOMIC == (int)vci_param::STORE_COND_NOT_ATOMIC);
    294305};
    295306
Note: See TracChangeset for help on using the changeset viewer.