[Gems-users] Generating a new line address in Ruby


Date: Sat, 08 Dec 2007 04:28:49 -0500
From: "Tushar Krishna (tkrishna@xxxxxxxxxxxxx)" <tkrishna@xxxxxxxxxxxxx>
Subject: [Gems-users] Generating a new line address in Ruby
Hi,
I am trying to implement data prefetch in ruby.
I wish to prefetch the next line of memory on a miss from L2.

I faced a problem in generating the new address to prefetch. 

>From the ruby code I saw that the Sequencer generates the line address from the request address and that is what is sent to L1 and L2 and the memory. So the addr that the L2Cache controller receives is the line address. Initially I tried using makeNextStrideAddress(1) for the prefetch line but got a runtime error in simics : 

failed assertion 'isPresent(address)' at fn Directory_Entry& DirectoryMemory::lookup(PhysAddress) in system/DirectoryMemory.C:132
failed assertion 'isPresent(address)' at fn Directory_Entry& DirectoryMemory::lookup(PhysAddress) in system/DirectoryMemory.C:132
At this point you might want to attach a debug to the running and get to the
crash site; otherwise press enter to continue
PID: 21441


I realized that makeNextStrideAddress does a maskLowOrderBits which I do not need as I already have the line address. So I created a new function that would just add RubyConfig::dataBlockBytes()*stride to the current address.
However, that also gave the same error.

Could anyone tell me where I'm going wrong?

Thanks
Tushar
[← Prev in Thread] Current Thread [Next in Thread→]