Ignore:
Timestamp:
Sep 30, 2014, 3:32:13 PM (10 years ago)
Author:
devigne
Message:

RWT Commit : Cosmetic

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/RWT/lib/generic_cache_tsar/include/generic_cache.h

    r814 r823  
    8989    typedef uint32_t be_t;
    9090
    91     data_t           *r_data ;
    92     addr_t           *r_tag ;
    93     int              *r_state;
    94     bool             *r_lru ;
    95 
    96     size_t           m_ways;
    97     size_t           m_sets;
    98     size_t           m_words;
     91    data_t *r_data ;
     92    addr_t *r_tag ;
     93    int    *r_state;
     94    bool   *r_lru ;
     95
     96    size_t m_ways;
     97    size_t m_sets;
     98    size_t m_words;
    9999
    100100    const soclib::common::AddressMaskingTable<addr_t> m_x ;
     
    105105    inline data_t &cache_data(size_t way, size_t set, size_t word)
    106106    {
    107         return r_data[(way*m_sets*m_words)+(set*m_words)+word];
     107        return r_data[(way * m_sets * m_words) + (set * m_words) + word];
    108108    }
    109109
     
    111111    inline addr_t &cache_tag(size_t way, size_t set)
    112112    {
    113         return r_tag[(way*m_sets)+set];
     113        return r_tag[(way * m_sets) + set];
    114114    }
    115115
     
    117117    inline bool &cache_lru(size_t way, size_t set)
    118118    {
    119         return r_lru[(way*m_sets)+set];
     119        return r_lru[(way * m_sets) + set];
    120120    }
    121121
     
    123123    inline int &cache_state(size_t way, size_t set)
    124124    {
    125         return r_state[(way*m_sets)+set];
     125        return r_state[(way * m_sets) + set];
    126126    }
    127127
     
    149149    {
    150150        data_t mask = 0;
    151         if ( (be & 0x1) == 0x1 ) mask = mask | 0x000000FF;
    152         if ( (be & 0x2) == 0x2 ) mask = mask | 0x0000FF00;
    153         if ( (be & 0x4) == 0x4 ) mask = mask | 0x00FF0000;
    154         if ( (be & 0x8) == 0x8 ) mask = mask | 0xFF000000;
     151        if ((be & 0x1) == 0x1) mask = mask | 0x000000FF;
     152        if ((be & 0x2) == 0x2) mask = mask | 0x0000FF00;
     153        if ((be & 0x4) == 0x4) mask = mask | 0x00FF0000;
     154        if ((be & 0x8) == 0x8) mask = mask | 0xFF000000;
    155155        return mask;
    156156    }
     
    160160    //////////////////////////////////////////
    161161    GenericCache(const std::string &name,
    162                     size_t            nways,
    163                     size_t            nsets,
    164                     size_t            nwords)
     162                 size_t            nways,
     163                 size_t            nsets,
     164                 size_t            nwords)
    165165        : m_ways(nways),
    166166          m_sets(nsets),
     
    169169#define l2 soclib::common::uint32_log2
    170170
    171           m_x( l2(nwords), l2(sizeof(data_t))),
    172           m_y( l2(nsets), l2(nwords) + l2(sizeof(data_t))),
    173           m_z( 8*sizeof(addr_t) - l2(nsets) - l2(nwords) - l2(sizeof(data_t)),
    174                l2(nsets) + l2(nwords) + l2(sizeof(data_t)))
     171          m_x(l2(nwords), l2(sizeof(data_t))),
     172          m_y(l2(nsets), l2(nwords) + l2(sizeof(data_t))),
     173          m_z(8*sizeof(addr_t) - l2(nsets) - l2(nwords) - l2(sizeof(data_t)),
     174              l2(nsets) + l2(nwords) + l2(sizeof(data_t)))
    175175#undef l2
    176176    {
     
    196196#endif
    197197
    198         r_data  = new data_t[nways*nsets*nwords];
    199         r_tag   = new addr_t[nways*nsets];
    200         r_state = new int[nways*nsets];
    201         r_lru   = new bool[nways*nsets];
     198        r_data  = new data_t[nways * nsets * nwords];
     199        r_tag   = new addr_t[nways * nsets];
     200        r_state = new int[nways * nsets];
     201        r_lru   = new bool[nways * nsets];
    202202    }
    203203
     
    214214    inline void reset()
    215215    {
    216         std::memset(r_data, 0, sizeof(*r_data)*m_ways*m_sets*m_words);
    217         std::memset(r_tag, 0, sizeof(*r_tag)*m_ways*m_sets);
    218         std::memset(r_state, CACHE_SLOT_STATE_EMPTY, sizeof(*r_state)*m_ways*m_sets);
    219         std::memset(r_lru, 0, sizeof(*r_lru)*m_ways*m_sets);
     216        std::memset(r_data, 0, sizeof(*r_data) * m_ways * m_sets * m_words);
     217        std::memset(r_tag, 0, sizeof(*r_tag) * m_ways * m_sets);
     218        std::memset(r_state, CACHE_SLOT_STATE_EMPTY, sizeof(*r_state) * m_ways * m_sets);
     219        std::memset(r_lru, 0, sizeof(*r_lru) * m_ways * m_sets);
    220220    }
    221221
     
    239239        for (size_t way = 0; way < m_ways; way++)
    240240        {
    241             if ((tag == cache_tag(way, set))
    242                    && ((cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC) or (cache_state(way, set) == CACHE_SLOT_STATE_VALID_NCC)) )
     241            if ((tag == cache_tag(way, set)) and
     242                   ((cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC) or
     243                    (cache_state(way, set) == CACHE_SLOT_STATE_VALID_NCC)))
    243244            {
    244245                *dt = cache_data(way, set, word);
     
    269270        {
    270271            if ((tag == cache_tag(way, set)) and
    271                  ((cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC)or (cache_state(way, set) == CACHE_SLOT_STATE_VALID_NCC)))
     272                 ((cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC) or
     273                  (cache_state(way, set) == CACHE_SLOT_STATE_VALID_NCC)))
    272274            {
    273275                *selway  = way;
     
    314316            if (tag == cache_tag(way, set))  // matching tag
    315317            {
    316 
    317318                if (cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC)
    318319                {
     
    362363        for (size_t way = 0; way < m_ways; way++)
    363364        {
    364             if ((tag == cache_tag(way, set))
    365                    && ((cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC) or (cache_state(way, set) == CACHE_SLOT_STATE_VALID_NCC) ))
     365            if ((tag == cache_tag(way, set)) and
     366                   ((cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC) or
     367                    (cache_state(way, set) == CACHE_SLOT_STATE_VALID_NCC)))
    366368            {
    367369                *selway  = way;
    368370                *selset  = set;
    369371                *selword = word;
    370                 *dt = cache_data(way, set, word);
     372                *dt      = cache_data(way, set, word);
    371373                return true;
    372374            }
     
    384386    // This function is used by the cc_vcache to get a 64 bits page table entry.
    385387    /////////////////////////////////////////////////////////////////////////////
    386     inline bool read( addr_t  ad,
    387                       data_t* dt,
    388                       data_t* dt_next,
    389                       size_t* selway,
    390                       size_t* selset,
    391                       size_t* selword)
     388    inline bool read(addr_t  ad,
     389                     data_t* dt,
     390                     data_t* dt_next,
     391                     size_t* selway,
     392                     size_t* selset,
     393                     size_t* selword)
    392394    {
    393395        const addr_t tag  = m_z[ad];
     
    397399        for (size_t way = 0; way < m_ways; way++)
    398400        {
    399             if ((tag == cache_tag(way, set))
    400                    &&( (cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC)))
     401            if ((tag == cache_tag(way, set)) and
     402                   ((cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC)))
    401403            {
    402404                *dt = cache_data(way, set, word);
     
    507509        for (size_t way = 0; way < m_ways; way++)
    508510        {
    509             if ((tag == cache_tag(way, set))
    510                    && ((cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC)or(cache_state(way, set) == CACHE_SLOT_STATE_VALID_NCC)))
     511            if ((tag == cache_tag(way, set)) and
     512                   ((cache_state(way, set) == CACHE_SLOT_STATE_VALID_CC) or
     513                    (cache_state(way, set) == CACHE_SLOT_STATE_VALID_NCC)))
    511514            {
    512515                *selway  = way;
     
    614617                      addr_t* nline)
    615618    {
    616         if ((cache_state(way,set) == CACHE_SLOT_STATE_VALID_CC) or  (cache_state(way,set) == CACHE_SLOT_STATE_VALID_NCC))
     619        if ((cache_state(way,set) == CACHE_SLOT_STATE_VALID_CC) or
     620                (cache_state(way,set) == CACHE_SLOT_STATE_VALID_NCC))
    617621        {
    618622            cache_state(way,set) = CACHE_SLOT_STATE_EMPTY;
    619             *nline = (data_t)cache_tag(way,set)* m_sets + set;
     623            *nline = (data_t) cache_tag(way, set) * m_sets + set;
    620624            return true;
    621625        }
     
    643647
    644648        // Search first empty slot
    645         for (size_t _way = 0 ; _way < m_ways && !found ; _way++)
    646         {
    647             if ((cache_state(_way, *set) != CACHE_SLOT_STATE_VALID_CC) and (cache_state(_way, *set) != CACHE_SLOT_STATE_VALID_NCC ))  // empty
     649        for (size_t _way = 0; _way < m_ways && !found; _way++)
     650        {
     651            // empty
     652            if ((cache_state(_way, *set) != CACHE_SLOT_STATE_VALID_CC) and
     653                    (cache_state(_way, *set) != CACHE_SLOT_STATE_VALID_NCC))
    648654            {
    649655                found   = true;
     
    656662        if (!found)
    657663        {
    658             for (size_t _way = 0 ; _way < m_ways && !found ; _way++)
     664            for (size_t _way = 0; _way < m_ways && !found; _way++)
    659665            {
    660666                if (not cache_lru(_way, *set))
     
    668674
    669675        assert(found && "all ways can't be new at the same time");
    670         *victim = (addr_t) ((cache_tag(*way,*set) * m_sets) + *set);
     676        *victim = (addr_t) ((cache_tag(*way, *set) * m_sets) + *set);
    671677        return cleanup;
    672678    }
     
    693699
    694700        // Search first empty slot
    695         for (size_t _way = 0 ; _way < m_ways && !(*found) ; _way++)
     701        for (size_t _way = 0; _way < m_ways && !(*found); _way++)
    696702        {
    697703            if (cache_state(_way, _set) == CACHE_SLOT_STATE_EMPTY)
     
    706712
    707713        // Search first not zombi old slot
    708         for (size_t _way = 0 ; _way < m_ways && !(*found) ; _way++)
     714        for (size_t _way = 0; _way < m_ways && !(*found); _way++)
    709715        {
    710716            if (not cache_lru(_way, _set) and
    711                  (cache_state(_way, _set) != CACHE_SLOT_STATE_ZOMBI))
     717               (cache_state(_way, _set) != CACHE_SLOT_STATE_ZOMBI))
    712718            {
    713719                *found   = true;
     
    720726        }
    721727        // Search first not zombi slot
    722         for (size_t _way = 0 ; _way < m_ways && !(*found) ; _way++)
     728        for (size_t _way = 0; _way < m_ways && !(*found); _way++)
    723729        {
    724730            if (cache_state(_way, _set) != CACHE_SLOT_STATE_ZOMBI)
     
    746752                                  size_t set)
    747753    {
    748         addr_t  tag    = m_z[ad];
    749 
    750         cache_tag(way, set)   = tag;
     754        addr_t tag = m_z[ad];
     755
     756        cache_tag(way, set) = tag;
    751757        cache_state(way, set) = CACHE_SLOT_STATE_VALID_CC;
    752758        cache_set_lru(way, set);
     
    764770        addr_t tag = m_z[ad];
    765771
    766         assert( ( (state == CACHE_SLOT_STATE_VALID_CC) or
    767                   (state == CACHE_SLOT_STATE_VALID_NCC) or
    768                   (state == CACHE_SLOT_STATE_ZOMBI) or
    769                   (state == CACHE_SLOT_STATE_EMPTY) ) and
     772        assert(((state == CACHE_SLOT_STATE_VALID_CC) or
     773                (state == CACHE_SLOT_STATE_VALID_NCC) or
     774                (state == CACHE_SLOT_STATE_ZOMBI) or
     775                (state == CACHE_SLOT_STATE_EMPTY)) and
    770776        "illegal slot state argument in Generic Cache write_dir()");
    771777
    772         assert( (way < m_ways) and
     778        assert((way < m_ways) and
    773779        "too large way index argument in Generic Cache write_dir()");
    774780
    775         assert( (set < m_sets) and
     781        assert((set < m_sets) and
    776782        "too large set index argument in Generic Cache write_dir()");
    777783
     
    779785        cache_state(way, set) = state;
    780786
    781         if ((state == CACHE_SLOT_STATE_VALID_CC) or (state == CACHE_SLOT_STATE_VALID_NCC)) cache_set_lru(way, set);
     787        if ((state == CACHE_SLOT_STATE_VALID_CC) or (state == CACHE_SLOT_STATE_VALID_NCC))
     788            cache_set_lru(way, set);
    782789    }
    783790
     
    791798                          int    state)
    792799    {
    793         assert( ( (state == CACHE_SLOT_STATE_VALID_CC) or
    794                   (state == CACHE_SLOT_STATE_VALID_NCC) or
    795                   (state == CACHE_SLOT_STATE_ZOMBI) or
    796                   (state == CACHE_SLOT_STATE_EMPTY) ) and
     800        assert(((state == CACHE_SLOT_STATE_VALID_CC) or
     801                (state == CACHE_SLOT_STATE_VALID_NCC) or
     802                (state == CACHE_SLOT_STATE_ZOMBI) or
     803                (state == CACHE_SLOT_STATE_EMPTY) ) and
    797804        "illegal slot state argument in Generic Cache write_dir()");
    798805
    799         assert( (way < m_ways) and
     806        assert((way < m_ways) and
    800807        "too large way index argument in Generic Cache write_dir()");
    801808
    802         assert( (set < m_sets) and
     809        assert((set < m_sets) and
    803810        "too large set index argument in Generic Cache write_dir()");
    804811
    805812        cache_state(way, set) = state;
    806813
    807         if ( (state == CACHE_SLOT_STATE_VALID_CC) or (state == CACHE_SLOT_STATE_VALID_NCC) ) cache_set_lru(way, set);
     814        if ((state == CACHE_SLOT_STATE_VALID_CC) or (state == CACHE_SLOT_STATE_VALID_NCC))
     815            cache_set_lru(way, set);
    808816    }
    809817
     
    820828        addr_t tag = m_z[ad];
    821829
    822         cache_tag(way, set)   = tag;
     830        cache_tag(way, set) = tag;
    823831        cache_state(way, set) = CACHE_SLOT_STATE_VALID_CC;
    824832        cache_set_lru(way, set);
    825         for (size_t word = 0 ; word < m_words ; word++)
    826         {
    827             cache_data(way, set, word) = buf[word] ;
     833        for (size_t word = 0; word < m_words; word++)
     834        {
     835            cache_data(way, set, word) = buf[word];
    828836        }
    829837    }
     
    832840    void fileTrace(FILE* file)
    833841    {
    834         for (size_t nway = 0 ; nway < m_ways ; nway++)
    835         {
    836             for (size_t nset = 0 ; nset < m_sets ; nset++)
    837             {
    838                 fprintf(file, "%d / ", (int)cache_state(nway, nset));
    839                 fprintf(file, "way %d / ", (int)nway);
    840                 fprintf(file, "set %d / ", (int)nset);
     842        for (size_t nway = 0; nway < m_ways; nway++)
     843        {
     844            for (size_t nset = 0; nset < m_sets; nset++)
     845            {
     846                fprintf(file, "%d / ", (int) cache_state(nway, nset));
     847                fprintf(file, "way %d / ", (int) nway);
     848                fprintf(file, "set %d / ", (int) nset);
    841849                fprintf(file, "@ = %08zX / ",
    842850                        ((cache_tag(nway, nset) * m_sets + nset) * m_words * 4));
    843                 for (size_t nword = m_words ; nword > 0 ; nword--)
     851                for (size_t nword = m_words; nword > 0; nword--)
    844852                {
    845853                    unsigned int data = cache_data(nway, nset, nword - 1);
     
    854862    inline void printTrace()
    855863    {
    856         for (size_t way = 0; way < m_ways ; way++)
    857         {
    858             for (size_t set = 0 ; set < m_sets ; set++)
    859             {
    860                 addr_t addr = (((addr_t)cache_tag(way,set))*m_words*m_sets+m_words*set)*4;
     864        for (size_t way = 0; way < m_ways; way++)
     865        {
     866            for (size_t set = 0; set < m_sets; set++)
     867            {
     868                addr_t addr = (((addr_t) cache_tag(way, set)) * m_words * m_sets + m_words * set) * 4;
    861869                std::cout << std::dec << cache_state(way, set)
    862870                          << " | way " << way
     
    864872                          << std::hex << " | @ " << addr;
    865873
    866                 for (size_t word = 0 ; word < m_words ; word++)
    867                 {
    868                     std::cout << " | " << cache_data(way,set,word) ;
     874                for (size_t word = 0; word < m_words; word++)
     875                {
     876                    std::cout << " | " << cache_data(way, set, word) ;
    869877                }
    870878                std::cout << std::dec << std::endl ;
Note: See TracChangeset for help on using the changeset viewer.