memory_port = VectorMasterPort("Port to the memory system")
translation_port = VectorMasterPort('Port to the TLB hierarchy')
- sqc_port = MasterPort("Port to the SQC (I-cache")
- sqc_tlb_port = MasterPort("Port to the TLB for the SQC (I-cache)")
- scalar_port = MasterPort("Port to the scalar data cache")
- scalar_tlb_port = MasterPort("Port to the TLB for the scalar data cache")
- gmTokenPort = MasterPort("Port to the GPU coalesecer for sharing tokens")
+ sqc_port = RequestPort("Port to the SQC (I-cache")
+ sqc_tlb_port = RequestPort("Port to the TLB for the SQC (I-cache)")
+ scalar_port = RequestPort("Port to the scalar data cache")
+ scalar_tlb_port = RequestPort("Port to the TLB for the scalar data cache")
+ gmTokenPort = RequestPort("Port to the GPU coalesecer for sharing tokens")
+
perLaneTLB = Param.Bool(False, "enable per-lane TLB")
prefetch_depth = Param.Int(0, "Number of prefetches triggered at a time"\
"(0 turns off prefetching)")
max_cu_tokens = Param.Int(4, "Maximum number of tokens, i.e., the number"\
" of instructions that can be sent to coalescer")
ldsBus = Bridge() # the bridge between the CU and its LDS
- ldsPort = MasterPort("The port that goes to the LDS")
+ ldsPort = RequestPort("The port that goes to the LDS")
localDataStore = Param.LdsState("the LDS for this CU")
vector_register_file = VectorParam.VectorRegisterFile("Vector register "\
bankConflictPenalty = Param.Int(1, 'penalty per LDS bank conflict when '\
'accessing data')
banks = Param.Int(32, 'Number of LDS banks')
- cuPort = SlavePort("port that goes to the compute unit")
+ cuPort = ResponsePort("port that goes to the compute unit")
class X86PagetableWalker(SimObject):
type = 'X86PagetableWalker'
cxx_class = 'X86ISA::Walker'
- port = SlavePort("Port for the hardware table walker")
+ port = ResponsePort("Port for the hardware table walker")
system = Param.System(Parent.any, "system object")
class X86GPUTLB(ClockedObject):
computeUnit->cu_id, gpuDynInst->simdId,
gpuDynInst->wfSlotId);
return false;
- } else if (!MasterPort::sendTimingReq(pkt)) {
+ } else if (!RequestPort::sendTimingReq(pkt)) {
// need to stall the LDS port until a recvReqRetry() is received
// this indicates that there is more space
stallPort();
DPRINTF(GPUPort, "CU%d: retrying LDS send\n", computeUnit->cu_id);
- if (!MasterPort::sendTimingReq(packet)) {
+ if (!RequestPort::sendTimingReq(packet)) {
// Stall port
stallPort();
DPRINTF(GPUPort, ": LDS send failed again\n");
GMTokenPort gmTokenPort;
/** Data access Port **/
- class DataPort : public MasterPort
+ class DataPort : public RequestPort
{
public:
DataPort(const std::string &_name, ComputeUnit *_cu, PortID _index)
- : MasterPort(_name, _cu), computeUnit(_cu),
+ : RequestPort(_name, _cu), computeUnit(_cu),
index(_index) { }
bool snoopRangeSent;
};
// Scalar data cache access port
- class ScalarDataPort : public MasterPort
+ class ScalarDataPort : public RequestPort
{
public:
ScalarDataPort(const std::string &_name, ComputeUnit *_cu,
PortID _index)
- : MasterPort(_name, _cu, _index), computeUnit(_cu), index(_index)
+ : RequestPort(_name, _cu, _index), computeUnit(_cu), index(_index)
{
(void)index;
}
};
// Instruction cache access port
- class SQCPort : public MasterPort
+ class SQCPort : public RequestPort
{
public:
SQCPort(const std::string &_name, ComputeUnit *_cu, PortID _index)
- : MasterPort(_name, _cu), computeUnit(_cu),
+ : RequestPort(_name, _cu), computeUnit(_cu),
index(_index) { }
bool snoopRangeSent;
};
/** Data TLB port **/
- class DTLBPort : public MasterPort
+ class DTLBPort : public RequestPort
{
public:
DTLBPort(const std::string &_name, ComputeUnit *_cu, PortID _index)
- : MasterPort(_name, _cu), computeUnit(_cu),
+ : RequestPort(_name, _cu), computeUnit(_cu),
index(_index), stalled(false)
{ }
virtual void recvReqRetry();
};
- class ScalarDTLBPort : public MasterPort
+ class ScalarDTLBPort : public RequestPort
{
public:
ScalarDTLBPort(const std::string &_name, ComputeUnit *_cu)
- : MasterPort(_name, _cu), computeUnit(_cu), stalled(false)
+ : RequestPort(_name, _cu), computeUnit(_cu), stalled(false)
{
}
bool stalled;
};
- class ITLBPort : public MasterPort
+ class ITLBPort : public RequestPort
{
public:
ITLBPort(const std::string &_name, ComputeUnit *_cu)
- : MasterPort(_name, _cu), computeUnit(_cu), stalled(false) { }
+ : RequestPort(_name, _cu), computeUnit(_cu), stalled(false) { }
bool isStalled() { return stalled; }
/**
* the port intended to communicate between the CU and its LDS
*/
- class LDSPort : public MasterPort
+ class LDSPort : public RequestPort
{
public:
LDSPort(const std::string &_name, ComputeUnit *_cu, PortID _id)
- : MasterPort(_name, _cu, _id), computeUnit(_cu)
+ : RequestPort(_name, _cu, _id), computeUnit(_cu)
{
}
void issueTLBLookup(PacketPtr pkt);
// CpuSidePort is the TLB Port closer to the CPU/CU side
- class CpuSidePort : public SlavePort
+ class CpuSidePort : public ResponsePort
{
public:
CpuSidePort(const std::string &_name, GpuTLB * gpu_TLB,
PortID _index)
- : SlavePort(_name, gpu_TLB), tlb(gpu_TLB), index(_index) { }
+ : ResponsePort(_name, gpu_TLB), tlb(gpu_TLB), index(_index) { }
protected:
GpuTLB *tlb;
* Future action item: if we ever do real page walks, then this port
* should be connected to a RubyPort.
*/
- class MemSidePort : public MasterPort
+ class MemSidePort : public RequestPort
{
public:
MemSidePort(const std::string &_name, GpuTLB * gpu_TLB,
PortID _index)
- : MasterPort(_name, gpu_TLB), tlb(gpu_TLB), index(_index) { }
+ : RequestPort(_name, gpu_TLB), tlb(gpu_TLB), index(_index) { }
std::deque<PacketPtr> retries;
// When was the req for this translation issued
uint64_t issueTime;
// Remember where this came from
- std::vector<SlavePort*>ports;
+ std::vector<ResponsePort*>ports;
// keep track of #uncoalesced reqs per packet per TLB level;
// reqCnt per level >= reqCnt higher level
/**
* CuSidePort is the LDS Port closer to the CU side
*/
- class CuSidePort: public SlavePort
+ class CuSidePort: public ResponsePort
{
public:
CuSidePort(const std::string &_name, LdsState *_ownerLds) :
- SlavePort(_name, _ownerLds), ownerLds(_ownerLds)
+ ResponsePort(_name, _ownerLds), ownerLds(_ownerLds)
{
}
sender_state->hitLevel = first_hit_level;
}
- SlavePort *return_port = sender_state->ports.back();
+ ResponsePort *return_port = sender_state->ports.back();
sender_state->ports.pop_back();
// Translation is done - Convert to a response pkt if necessary and
void updatePhysAddresses(PacketPtr pkt);
void regStats() override;
- class CpuSidePort : public SlavePort
+ class CpuSidePort : public ResponsePort
{
public:
CpuSidePort(const std::string &_name, TLBCoalescer *tlb_coalescer,
PortID _index)
- : SlavePort(_name, tlb_coalescer), coalescer(tlb_coalescer),
+ : ResponsePort(_name, tlb_coalescer), coalescer(tlb_coalescer),
index(_index) { }
protected:
virtual AddrRangeList getAddrRanges() const;
};
- class MemSidePort : public MasterPort
+ class MemSidePort : public RequestPort
{
public:
MemSidePort(const std::string &_name, TLBCoalescer *tlb_coalescer,
PortID _index)
- : MasterPort(_name, tlb_coalescer), coalescer(tlb_coalescer),
+ : RequestPort(_name, tlb_coalescer), coalescer(tlb_coalescer),
index(_index) { }
std::deque<PacketPtr> retries;