Ignore:
Timestamp:
Aug 25, 2014, 5:58:16 PM (10 years ago)
Author:
devigne
Message:

RWT commit :

  • Merge with trunk.
  • Cosmetic
  • Bugfix in state WRITE_IVT_LOCK_HIT_WB.

MemCache? records invalidation in IVT in this state but we do not check that
the IVT was full. Thus invalidation was issued without actually recorded in the
query IVT ...

  • Bugfix :

When a NCC line owned by a L1 cache with srcid != 0 was removed from MemCache?,
the owner field was reset to 0. If this same L1 cache was sending a read to
retrieve this line the MemCache? sent this line on CC mode.

  • Bugfix :

The MemCache? reset the 'inst' field to 0 when solving a
invalidation due to a change of state of line (NCC to CC).
But a line can be NCC (ie contained in a DATA cache) then asked by INST cache,
this read triggers a transition NCC to CC but we must save the nature of this read.
Now this information is stored in a register (r_read_to_cleanup_inst).

  • Add a counter for the number of minimum inputs available

in the heap. This counter indicates whether the heap size of 4096 is relevant.

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

Legend:

Unmodified
Added
Removed
  • branches/RWT/modules/vci_mem_cache/caba/source/include/update_tab.h

    • Property svn:mergeinfo changed (with no actual effect on merging)
  • branches/RWT/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h

    r644 r767  
    8383        TGT_CMD_WRITE,
    8484        TGT_CMD_CAS,
    85         TGT_CMD_ERROR,
    86         TGT_CMD_CONFIG
     85        TGT_CMD_CONFIG,
     86        TGT_CMD_ERROR
    8787      };
    8888
     
    9696        TGT_RSP_MULTI_ACK_IDLE,
    9797        TGT_RSP_CLEANUP_IDLE,
     98        TGT_RSP_TGT_CMD_IDLE,
    9899        TGT_RSP_CONFIG_IDLE,
    99         TGT_RSP_TGT_CMD_IDLE,
    100100        TGT_RSP_READ,
    101101        TGT_RSP_WRITE,
     
    104104        TGT_RSP_MULTI_ACK,
    105105        TGT_RSP_CLEANUP,
    106         TGT_RSP_CONFIG,
    107         TGT_RSP_TGT_CMD
     106        TGT_RSP_TGT_CMD,
     107        TGT_RSP_CONFIG
    108108      };
    109109
     
    122122        CC_SEND_XRAM_RSP_IDLE,
    123123        CC_SEND_WRITE_IDLE,
     124        CC_SEND_READ_IDLE,
    124125        CC_SEND_CAS_IDLE,
    125126        CC_SEND_CONFIG_IDLE,
     
    437438      uint32_t     m_cpt_write_flits_remote; // number of flits for remote WRITEs
    438439      uint32_t     m_cpt_write_cost;     // Number of (flits * distance) for WRITEs
     440      uint32_t     m_cpt_write_ncc_miss;   // Number of write on ncc line
    439441
    440442      uint32_t     m_cpt_ll_local;       // Number of local LL transactions
     
    552554      uint32_t     m_cpt_xram_rsp_fsm_heap_used; // NB cycles HEAP LOCK used
    553555     
    554       uint32_t     m_cpt_heap_unused;            // NB cycles HEAP LOCK unused
     556      uint32_t     m_cpt_heap_unused;             // NB cycles HEAP LOCK unused
     557      uint32_t     m_cpt_heap_slot_available;     // NB HEAP slot available refresh at each cycles
     558      uint32_t     m_cpt_heap_min_slot_available; // NB HEAP : Min of slot available
    555559
    556560      //RWT
     
    584588      sc_in<bool>                                 p_clk;
    585589      sc_in<bool>                                 p_resetn;
    586       sc_in<bool>                                 p_irq;
     590      sc_out<bool>                                p_irq;
    587591      soclib::caba::VciTarget<vci_param_int>      p_vci_tgt;
    588592      soclib::caba::VciInitiator<vci_param_ext>   p_vci_ixr;
     
    618622          const soclib::common::IntTab       &srcid_x,        // global index RAM network
    619623          const soclib::common::IntTab       &tgtid_d,        // global index INT network
    620           const size_t                       cc_global_id,    // global index CC network
    621624          const size_t                       x_width,         // X width in platform
    622625          const size_t                       y_width,         // Y width in platform
     
    635638
    636639      void reset_counters();
    637       void print_stats(bool activity_counters, bool stats);
     640      void print_stats(bool activity_counters = true, bool stats = false);
    638641      void print_trace( size_t detailled = 0 );
    639642      void cache_monitor(addr_t addr);
     
    647650      void check_monitor(addr_t addr, data_t data, bool read);
    648651      uint32_t req_distance(uint32_t req_srcid);
     652      uint32_t min_value(uint32_t old_value, uint32_t new_value);
    649653      bool is_local_req(uint32_t req_srcid);
    650654      int  read_instrumentation(uint32_t regr, uint32_t & rdata);
     
    661665      const size_t                       m_sets;             // Number of cache sets
    662666      const size_t                       m_words;            // Number of words in a line
    663       const size_t                       m_cc_global_id;     // global_index on cc network
    664       const size_t                       m_xwidth;           // number of x bits in platform
    665       const size_t                       m_ywidth;           // number of y bits in platform
     667      size_t                             m_x_self;           // X self coordinate
     668      size_t                             m_y_self;           // Y self coordinate
     669      const size_t                       m_x_width;          // number of x bits in platform
     670      const size_t                       m_y_width;          // number of y bits in platform
    666671      size_t                             m_debug_start_cycle;
    667672      bool                               m_debug_ok;
     
    834839      sc_signal<addr_t>   r_read_to_cleanup_nline;  // cache line index
    835840      sc_signal<size_t>   r_read_to_cleanup_srcid;
     841      sc_signal<size_t>   r_read_to_cleanup_inst;
    836842      sc_signal<size_t>   r_read_to_cleanup_length;
    837843      sc_signal<size_t>   r_read_to_cleanup_first_word;
     
    10691075      sc_signal<size_t>   r_xram_rsp_ivt_index;         // IVT entry index
    10701076      sc_signal<size_t>   r_xram_rsp_next_ptr;          // Next pointer to the heap
     1077      sc_signal<bool>     r_xram_rsp_rerror_irq;        // WRITE MISS rerror irq
     1078      sc_signal<bool>     r_xram_rsp_rerror_irq_enable; // WRITE MISS rerror irq enable
     1079      sc_signal<addr_t>   r_xram_rsp_rerror_address;    // WRITE MISS rerror address
     1080      sc_signal<size_t>   r_xram_rsp_rerror_rsrcid;     // WRITE MISS rerror srcid
    10711081
    10721082      // Buffer between XRAM_RSP fsm and TGT_RSP fsm  (response to L1 cache)
  • branches/RWT/modules/vci_mem_cache/caba/source/include/xram_transaction.h

    r495 r767  
    426426    void write_rsp(const size_t      index,
    427427                   const size_t      word,
    428                    const wide_data_t data)
     428                   const wide_data_t data,
     429                   const bool        rerror)
    429430    {
    430431        data_t  value;
     
    442443        assert( (tab[index].xram_read ) and
    443444        "MEMC ERROR: TRT entry is not a GET in TRT write_rsp()");
     445
     446        if ( rerror )
     447        {
     448            tab[index].rerror = true;
     449            return;
     450        }
    444451
    445452        // first 32 bits word
Note: See TracChangeset for help on using the changeset viewer.