packet.hh (11057:ccdaf2f353ba) | packet.hh (11127:f39c2cc0d44e) |
---|---|
1/* 2 * Copyright (c) 2012-2015 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 --- 310 unchanged lines hidden (view full) --- 319 * transmitted. This delay is used to communicate the crossbar 320 * forwarding latency to the neighbouring object (e.g. a cache) 321 * that actually makes the packet wait. As the delay is relative, 322 * a 32-bit unsigned should be sufficient. 323 */ 324 uint32_t headerDelay; 325 326 /** | 1/* 2 * Copyright (c) 2012-2015 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 --- 310 unchanged lines hidden (view full) --- 319 * transmitted. This delay is used to communicate the crossbar 320 * forwarding latency to the neighbouring object (e.g. a cache) 321 * that actually makes the packet wait. As the delay is relative, 322 * a 32-bit unsigned should be sufficient. 323 */ 324 uint32_t headerDelay; 325 326 /** |
327 * Keep track of the extra delay incurred by snooping upwards 328 * before sending a request down the memory system. This is used 329 * by the coherent crossbar to account for the additional request 330 * delay. 331 */ 332 uint32_t snoopDelay; 333 334 /** |
|
327 * The extra pipelining delay from seeing the packet until the end of 328 * payload is transmitted by the component that provided it (if 329 * any). This includes the header delay. Similar to the header 330 * delay, this is used to make up for the fact that the 331 * crossbar does not make the packet wait. As the delay is 332 * relative, a 32-bit unsigned should be sufficient. 333 */ 334 uint32_t payloadDelay; --- 242 unchanged lines hidden (view full) --- 577 578 /** 579 * Constructor. Note that a Request object must be constructed 580 * first, but the Requests's physical address and size fields need 581 * not be valid. The command must be supplied. 582 */ 583 Packet(const RequestPtr _req, MemCmd _cmd) 584 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false), | 335 * The extra pipelining delay from seeing the packet until the end of 336 * payload is transmitted by the component that provided it (if 337 * any). This includes the header delay. Similar to the header 338 * delay, this is used to make up for the fact that the 339 * crossbar does not make the packet wait. As the delay is 340 * relative, a 32-bit unsigned should be sufficient. 341 */ 342 uint32_t payloadDelay; --- 242 unchanged lines hidden (view full) --- 585 586 /** 587 * Constructor. Note that a Request object must be constructed 588 * first, but the Requests's physical address and size fields need 589 * not be valid. The command must be supplied. 590 */ 591 Packet(const RequestPtr _req, MemCmd _cmd) 592 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false), |
585 size(0), headerDelay(0), payloadDelay(0), | 593 size(0), headerDelay(0), snoopDelay(0), payloadDelay(0), |
586 senderState(NULL) 587 { 588 if (req->hasPaddr()) { 589 addr = req->getPaddr(); 590 flags.set(VALID_ADDR); 591 _isSecure = req->isSecure(); 592 } 593 if (req->hasSize()) { --- 4 unchanged lines hidden (view full) --- 598 599 /** 600 * Alternate constructor if you are trying to create a packet with 601 * a request that is for a whole block, not the address from the 602 * req. this allows for overriding the size/addr of the req. 603 */ 604 Packet(const RequestPtr _req, MemCmd _cmd, int _blkSize) 605 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false), | 594 senderState(NULL) 595 { 596 if (req->hasPaddr()) { 597 addr = req->getPaddr(); 598 flags.set(VALID_ADDR); 599 _isSecure = req->isSecure(); 600 } 601 if (req->hasSize()) { --- 4 unchanged lines hidden (view full) --- 606 607 /** 608 * Alternate constructor if you are trying to create a packet with 609 * a request that is for a whole block, not the address from the 610 * req. this allows for overriding the size/addr of the req. 611 */ 612 Packet(const RequestPtr _req, MemCmd _cmd, int _blkSize) 613 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false), |
606 headerDelay(0), payloadDelay(0), | 614 headerDelay(0), snoopDelay(0), payloadDelay(0), |
607 senderState(NULL) 608 { 609 if (req->hasPaddr()) { 610 addr = req->getPaddr() & ~(_blkSize - 1); 611 flags.set(VALID_ADDR); 612 _isSecure = req->isSecure(); 613 } 614 size = _blkSize; --- 8 unchanged lines hidden (view full) --- 623 * packet should allocate its own data. 624 */ 625 Packet(const PacketPtr pkt, bool clear_flags, bool alloc_data) 626 : cmd(pkt->cmd), req(pkt->req), 627 data(nullptr), 628 addr(pkt->addr), _isSecure(pkt->_isSecure), size(pkt->size), 629 bytesValid(pkt->bytesValid), 630 headerDelay(pkt->headerDelay), | 615 senderState(NULL) 616 { 617 if (req->hasPaddr()) { 618 addr = req->getPaddr() & ~(_blkSize - 1); 619 flags.set(VALID_ADDR); 620 _isSecure = req->isSecure(); 621 } 622 size = _blkSize; --- 8 unchanged lines hidden (view full) --- 631 * packet should allocate its own data. 632 */ 633 Packet(const PacketPtr pkt, bool clear_flags, bool alloc_data) 634 : cmd(pkt->cmd), req(pkt->req), 635 data(nullptr), 636 addr(pkt->addr), _isSecure(pkt->_isSecure), size(pkt->size), 637 bytesValid(pkt->bytesValid), 638 headerDelay(pkt->headerDelay), |
639 snoopDelay(0), |
|
631 payloadDelay(pkt->payloadDelay), 632 senderState(pkt->senderState) 633 { 634 if (!clear_flags) 635 flags.set(pkt->flags & COPY_FLAGS); 636 637 flags.set(pkt->flags & (VALID_ADDR|VALID_SIZE)); 638 --- 427 unchanged lines hidden --- | 640 payloadDelay(pkt->payloadDelay), 641 senderState(pkt->senderState) 642 { 643 if (!clear_flags) 644 flags.set(pkt->flags & COPY_FLAGS); 645 646 flags.set(pkt->flags & (VALID_ADDR|VALID_SIZE)); 647 --- 427 unchanged lines hidden --- |