cache.cc (13478:59414c401cd9) cache.cc (13564:9bbd53a77887)
1/*
2 * Copyright (c) 2010-2018 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

--- 377 unchanged lines hidden (view full) ---

386 assert(pf->getAddr() == pkt->getAddr());
387 assert(pf->getSize() == pkt->getSize());
388 }
389
390 pkt->makeTimingResponse();
391
392 // request_time is used here, taking into account lat and the delay
393 // charged if the packet comes from the xbar.
1/*
2 * Copyright (c) 2010-2018 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

--- 377 unchanged lines hidden (view full) ---

386 assert(pf->getAddr() == pkt->getAddr());
387 assert(pf->getSize() == pkt->getSize());
388 }
389
390 pkt->makeTimingResponse();
391
392 // request_time is used here, taking into account lat and the delay
393 // charged if the packet comes from the xbar.
394 cpuSidePort.schedTimingResp(pkt, request_time, true);
394 cpuSidePort.schedTimingResp(pkt, request_time);
395
396 // If an outstanding request is in progress (we found an
397 // MSHR) this is set to null
398 pkt = pf;
399 }
400
401 BaseCache::handleTimingReqMiss(pkt, mshr, blk, forward_time, request_time);
402}

--- 394 unchanged lines hidden (view full) ---

797 // propagate that. Response should not have
798 // isInvalidate() set otherwise.
799 tgt_pkt->cmd = MemCmd::ReadRespWithInvalidate;
800 DPRINTF(Cache, "%s: updated cmd to %s\n", __func__,
801 tgt_pkt->print());
802 }
803 // Reset the bus additional time as it is now accounted for
804 tgt_pkt->headerDelay = tgt_pkt->payloadDelay = 0;
395
396 // If an outstanding request is in progress (we found an
397 // MSHR) this is set to null
398 pkt = pf;
399 }
400
401 BaseCache::handleTimingReqMiss(pkt, mshr, blk, forward_time, request_time);
402}

--- 394 unchanged lines hidden (view full) ---

797 // propagate that. Response should not have
798 // isInvalidate() set otherwise.
799 tgt_pkt->cmd = MemCmd::ReadRespWithInvalidate;
800 DPRINTF(Cache, "%s: updated cmd to %s\n", __func__,
801 tgt_pkt->print());
802 }
803 // Reset the bus additional time as it is now accounted for
804 tgt_pkt->headerDelay = tgt_pkt->payloadDelay = 0;
805 cpuSidePort.schedTimingResp(tgt_pkt, completion_time, true);
805 cpuSidePort.schedTimingResp(tgt_pkt, completion_time);
806 break;
807
808 case MSHR::Target::FromPrefetcher:
809 assert(tgt_pkt->cmd == MemCmd::HardPFReq);
810 if (blk)
811 blk->status |= BlkHWPrefetched;
812 delete tgt_pkt;
813 break;

--- 113 unchanged lines hidden (view full) ---

927 // Here we consider forward_time, paying for just forward latency and
928 // also charging the delay provided by the xbar.
929 // forward_time is used as send_time in next allocateWriteBuffer().
930 Tick forward_time = clockEdge(forwardLatency) + pkt->headerDelay;
931 // Here we reset the timing of the packet.
932 pkt->headerDelay = pkt->payloadDelay = 0;
933 DPRINTF(CacheVerbose, "%s: created response: %s tick: %lu\n", __func__,
934 pkt->print(), forward_time);
806 break;
807
808 case MSHR::Target::FromPrefetcher:
809 assert(tgt_pkt->cmd == MemCmd::HardPFReq);
810 if (blk)
811 blk->status |= BlkHWPrefetched;
812 delete tgt_pkt;
813 break;

--- 113 unchanged lines hidden (view full) ---

927 // Here we consider forward_time, paying for just forward latency and
928 // also charging the delay provided by the xbar.
929 // forward_time is used as send_time in next allocateWriteBuffer().
930 Tick forward_time = clockEdge(forwardLatency) + pkt->headerDelay;
931 // Here we reset the timing of the packet.
932 pkt->headerDelay = pkt->payloadDelay = 0;
933 DPRINTF(CacheVerbose, "%s: created response: %s tick: %lu\n", __func__,
934 pkt->print(), forward_time);
935 memSidePort.schedTimingSnoopResp(pkt, forward_time, true);
935 memSidePort.schedTimingSnoopResp(pkt, forward_time);
936}
937
938uint32_t
939Cache::handleSnoop(PacketPtr pkt, CacheBlk *blk, bool is_timing,
940 bool is_deferred, bool pending_inval)
941{
942 DPRINTF(CacheVerbose, "%s: for %s\n", __func__, pkt->print());
943 // deferred snoops can only happen in timing mode

--- 459 unchanged lines hidden ---
936}
937
938uint32_t
939Cache::handleSnoop(PacketPtr pkt, CacheBlk *blk, bool is_timing,
940 bool is_deferred, bool pending_inval)
941{
942 DPRINTF(CacheVerbose, "%s: for %s\n", __func__, pkt->print());
943 // deferred snoops can only happen in timing mode

--- 459 unchanged lines hidden ---