arch-gcn3: add support for unaligned accesses
Previously, with HSAIL, we were guaranteed by the HSA specification that the GPU will never issue unaligned accesses. However, now that we are directly running GCN this is no longer true. Accordingly, this commit adds support for unaligned accesses. Moreover, to reduce the replication of nearly identical code for the different request types, I also added new helper functions that are called by all the different memory request producing instruction types in op_encodings.hh. Adding support for unaligned instructions requires changing the statusBitVector used to track the status of the memory requests for each lane from a bit per lane to an int per lane. This is necessary because an unaligned access may span multiple cache lines. In the worst case, each lane may span multiple cache lines. There are corresponding changes in the files that use the statusBitVector. Change-Id: I319bf2f0f644083e98ca546d2bfe68cf87a5f967 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29920 Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com> Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com> Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
committed by
Anthony Gutierrez
parent
fbcdf880ee
commit
8177fc4392
@@ -107,7 +107,6 @@ DataBlock::getDataMod(int offset)
|
||||
void
|
||||
DataBlock::setData(const uint8_t *data, int offset, int len)
|
||||
{
|
||||
assert(offset + len <= RubySystem::getBlockSizeBytes());
|
||||
memcpy(&m_data[offset], data, len);
|
||||
}
|
||||
|
||||
|
||||
@@ -267,9 +267,6 @@ RubyPort::MemSlavePort::recvTimingReq(PacketPtr pkt)
|
||||
curTick() + rs->clockPeriod());
|
||||
return true;
|
||||
}
|
||||
|
||||
assert(getOffset(pkt->getAddr()) + pkt->getSize() <=
|
||||
RubySystem::getBlockSizeBytes());
|
||||
}
|
||||
|
||||
// Save the port in the sender state object to be used later to
|
||||
|
||||
Reference in New Issue
Block a user