dramsim2.cc (10713:eddb533708cb) | dramsim2.cc (10721:3e6a3eaac71b) |
---|---|
1/* 2 * Copyright (c) 2013 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 254 unchanged lines hidden (view full) --- 263 // do the actual memory access which also turns the packet into a 264 // response 265 access(pkt); 266 267 // turn packet around to go back to requester if response expected 268 if (needsResponse) { 269 // access already turned the packet into a response 270 assert(pkt->isResponse()); | 1/* 2 * Copyright (c) 2013 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 254 unchanged lines hidden (view full) --- 263 // do the actual memory access which also turns the packet into a 264 // response 265 access(pkt); 266 267 // turn packet around to go back to requester if response expected 268 if (needsResponse) { 269 // access already turned the packet into a response 270 assert(pkt->isResponse()); |
271 272 // @todo someone should pay for this | 271 // Here we pay for xbar additional delay and to process the payload 272 // of the packet. 273 Tick time = curTick() + pkt->headerDelay + pkt->payloadDelay; 274 // Reset the timings of the packet |
273 pkt->headerDelay = pkt->payloadDelay = 0; 274 275 DPRINTF(DRAMSim2, "Queuing response for address %lld\n", 276 pkt->getAddr()); 277 278 // queue it to be sent back 279 responseQueue.push_back(pkt); 280 281 // if we are not already waiting for a retry, or are scheduled 282 // to send a response, schedule an event 283 if (!retryResp && !sendResponseEvent.scheduled()) | 275 pkt->headerDelay = pkt->payloadDelay = 0; 276 277 DPRINTF(DRAMSim2, "Queuing response for address %lld\n", 278 pkt->getAddr()); 279 280 // queue it to be sent back 281 responseQueue.push_back(pkt); 282 283 // if we are not already waiting for a retry, or are scheduled 284 // to send a response, schedule an event 285 if (!retryResp && !sendResponseEvent.scheduled()) |
284 schedule(sendResponseEvent, curTick()); | 286 schedule(sendResponseEvent, time); |
285 } else { 286 // @todo the packet is going to be deleted, and the DRAMPacket 287 // is still having a pointer to it 288 pendingDelete.push_back(pkt); 289 } 290} 291 292void DRAMSim2::readComplete(unsigned id, uint64_t addr, uint64_t cycle) --- 122 unchanged lines hidden --- | 287 } else { 288 // @todo the packet is going to be deleted, and the DRAMPacket 289 // is still having a pointer to it 290 pendingDelete.push_back(pkt); 291 } 292} 293 294void DRAMSim2::readComplete(unsigned id, uint64_t addr, uint64_t cycle) --- 122 unchanged lines hidden --- |