31a32
> #include <cassert>
38d38
< #include "mem/ruby/system/System.hh"
70,74c70,73
< physical_address_t
< getLineAddress() const
< {
< return bitSelect(RubySystem::getBlockSizeBits(), ADDRESS_WIDTH);
< }
---
> physical_address_t getLineAddress() const;
> physical_address_t getOffset() const;
> void makeLineAddress();
> void makeNextStrideAddress(int stride);
76,95d74
< physical_address_t
< getOffset() const
< {
< return bitSelect(0, RubySystem::getBlockSizeBits() - 1);
< }
<
< void
< makeLineAddress()
< {
< m_address = maskLowOrderBits(RubySystem::getBlockSizeBits());
< }
<
< // returns the next stride address based on line address
< void
< makeNextStrideAddress(int stride)
< {
< m_address = maskLowOrderBits(RubySystem::getBlockSizeBits())
< + RubySystem::getBlockSizeBytes()*stride;
< }
<
227,269d205
< inline integer_t
< Address::memoryModuleIndex() const
< {
< integer_t index =
< bitSelect(RubySystem::getBlockSizeBits() +
< RubySystem::getMemorySizeBits(), ADDRESS_WIDTH);
< assert (index >= 0);
< return index;
<
< // Index indexHighPortion =
< // address.bitSelect(MEMORY_SIZE_BITS - 1,
< // PAGE_SIZE_BITS + NUMBER_OF_MEMORY_MODULE_BITS);
< // Index indexLowPortion =
< // address.bitSelect(DATA_BLOCK_BITS, PAGE_SIZE_BITS - 1);
< //
< // Index index = indexLowPortion |
< // (indexHighPortion << (PAGE_SIZE_BITS - DATA_BLOCK_BITS));
<
< /*
< Round-robin mapping of addresses, at page size granularity
<
< ADDRESS_WIDTH MEMORY_SIZE_BITS PAGE_SIZE_BITS DATA_BLOCK_BITS
< | | | |
< \ / \ / \ / \ / 0
< -----------------------------------------------------------------------
< | unused |xxxxxxxxxxxxxxx| |xxxxxxxxxxxxxxx| |
< | |xxxxxxxxxxxxxxx| |xxxxxxxxxxxxxxx| |
< -----------------------------------------------------------------------
< indexHighPortion indexLowPortion
< <------->
< NUMBER_OF_MEMORY_MODULE_BITS
< */
< }
<
< inline void
< Address::print(std::ostream& out) const
< {
< using namespace std;
< out << "[" << hex << "0x" << m_address << "," << " line 0x"
< << maskLowOrderBits(RubySystem::getBlockSizeBits()) << dec << "]"
< << flush;
< }
<