Ignore:
Timestamp:
Dec 11, 2013, 6:08:30 PM (11 years ago)
Author:
cfuguet
Message:

Improvement in vci_mem_cache component:

  • No need to pass x_self and y_self constructor parameters. They are computed from the most significant bits of one of the memory segments mapped to this component.
  • Erasing these two parameters from the vci_mem_cache constructor in all TSAR platforms
Location:
trunk/modules/vci_mem_cache/caba/source
Files:
2 edited

Legend:

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

    r597 r599  
    499499          const soclib::common::IntTab       &srcid_x,        // global index RAM network
    500500          const soclib::common::IntTab       &tgtid_d,        // global index INT network
    501           const size_t                       x_self,          // self X coordinate
    502           const size_t                       y_self,          // self Y coordinate
    503501          const size_t                       x_width,         // X width in platform
    504502          const size_t                       y_width,         // Y width in platform
     
    543541      const size_t                       m_sets;             // Number of cache sets
    544542      const size_t                       m_words;            // Number of words in a line
    545       const size_t                       m_x_self;           // X self coordinate
    546       const size_t                       m_y_self;           // Y self coordinate
     543      size_t                             m_x_self;           // X self coordinate
     544      size_t                             m_y_self;           // Y self coordinate
    547545      const size_t                       m_x_width;          // number of x bits in platform
    548546      const size_t                       m_y_width;          // number of y bits in platform
  • trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp

    r597 r599  
    334334            const IntTab        &srcid_x,          // global index on external network
    335335            const IntTab        &tgtid_d,          // global index on direct network
    336             const size_t        x_self,            // self x coordinate
    337             const size_t        y_self,            // self y coordinate
    338336            const size_t        x_width,           // number of x bits in platform
    339337            const size_t        y_width,           // number of x bits in platform
     
    367365        m_sets(nsets),
    368366        m_words(nwords),
    369         m_x_self(x_self),
    370         m_y_self(y_self),
    371367        m_x_width(x_width),
    372368        m_y_width(y_width),
     
    529525            }
    530526
     527            assert( (m_nseg > 0) and
     528                    "MEMC ERROR : At least one segment must be mapped to this component");
     529
    531530            m_seg = new soclib::common::Segment*[m_nseg];
    532531
     
    537536                i++;
    538537            }
     538
     539            addr_t gid = m_seg[0]->baseAddress() >> (vci_param_int::N - x_width - y_width);
     540            m_x_self = (gid >> m_y_width) & ((1 << m_x_width) - 1);
     541            m_y_self =  gid               & ((1 << m_y_width) - 1);
    539542
    540543            // Allocation for IXR_RSP FSM
Note: See TracChangeset for help on using the changeset viewer.