That error is basically a segfault. What likely happened is that you're
program tried to read a member of a structure using a NULL pointer. The
pointer could have been NULL because the workload behaves incorrectly if
it's a custom benchmark for instance, or you're cache modifications are
making a load return all 0s when the pointer is accessed.

Gabe

sunitha p wrote:
> I am trying to partition L2 among the CPUs. Initially trying to make
> static logical partitioning among 4 CPUs
>
> have taken L2 as 8 way set associative and L1 as split 4 way set
> associative into consideration
>
> Hence, in each set , 2 blocks is assigned for each CPU. Since blocks
> are pointed by an array structure blks[],
>
> 0&1 - cpu1, 2&3 - cpu2 & so on
>
> in lru.cc, findVictim function finds the LRU block of the respective
> CPU. The code written is
>
> LRU::BlkType*
> LRU::findVictim(Addr addr, PacketList &writebacks,int cpu_id)
> {
>     //int flag=0,flag_id=0;   
>     unsigned set = extractSet(addr);
>     // grab a replacement candidate
>     BlkType *blk;
>
>    if(assoc==8) //implying its L2 cache
>    {
>          if(cpu_id==-1)
>               cpu_id=3;
>         int temp_position = 2*cpu_id+1;
>   
>     blk = sets[set].blks[temp_position];      
>      
>    }
>    else
>    {
>     blk=sets[set].blks[assoc-1];
>         inform("L1 : set %x: selecting blk %x for replacement : CPU id
> : %d \n", set, regenerateBlkAddr(blk->tag, set),cpu_id);
>    }
>
>      
>     if (blk->isValid())
>      {
>     replacements[0]++;
>         totalRefs += blk->refCount;
>         ++sampledRefs;
>         blk->refCount = 0;
>    
>      // deal with evicted block
>
>     if(blk->contextSrc!=-1)
>     {   
>             occupancies[blk->contextSrc % cache->numCpus()]--;
>                     blk->contextSrc = -1;
>     }
>      else
>     {
>           occupancies[cache->numCpus()]--;
>       
>         }
>    }
>    DPRINTF(CacheRepl, "set %x: selecting blk %x for replacement\n",
>                 set, regenerateBlkAddr(blk->tag, set));
>   
>     return blk;
> }
>
> and in cacheSet.cc , moveHead() function- moves the block to the head
> position of respective CPU. The altered code is
>
> void
> CacheSet::moveToHead(CacheBlk *blk, int cpu_id)
> {
>     int i;
>  
>     CacheBlk *next = blk;
>      // nothing to do if blk is already head %d
>     if(assoc==8 )
>     {
>       if(cpu_id==-1)
>          cpu_id=3;
>       if(blks[cpu_id*2]==blk)
>         return;
>       i = cpu_id* 2 ;
>       while(i<(cpu_id) * 2 +2)
>       {
>           CacheBlk *tmp = blks[i];
>         blks[i] = next;
>         next = tmp;
>
>         ++i;
>       }
>
>     }
>     else
>     {
>     if (blks[0] == blk)
>         return;
>    
>      do{  
>           assert(i<assoc);
>         // swap blks[i] and next
>       
>         CacheBlk *tmp = blks[i];
>         blks[i] = next;
>         next = tmp;
>
>         ++i;
>     } while(next != blk);
>   }
>
> }
>
>
> But i am getting mapping arror as
>
> panic: Tried to access unmapped address 0x58.
>  @ cycle 25441428000
> [invoke:build/ALPHA_SE/arch/alpha/faults.cc, line 209]
> Memory Usage: 163640 KBytes
> For more information see: http://www.m5sim.org/panic/5932f339
> Program aborted at cycle 25441428000
> Aborted
>
>
> Can anyone kindly help as to what the error is and  where i am making
> mistake
> -- 
> Sunitha.P
> 9092892876
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> m5-users mailing list
> [email protected]
> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users

_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users

Reply via email to