Sequencer.hh (8530:3aaa99208a84) | Sequencer.hh (8615:e66a566f2cfa) |
---|---|
1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 19 unchanged lines hidden (view full) --- 28 29#ifndef __MEM_RUBY_SYSTEM_SEQUENCER_HH__ 30#define __MEM_RUBY_SYSTEM_SEQUENCER_HH__ 31 32#include <iostream> 33 34#include "base/hashmap.hh" 35#include "mem/protocol/GenericMachineType.hh" | 1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 19 unchanged lines hidden (view full) --- 28 29#ifndef __MEM_RUBY_SYSTEM_SEQUENCER_HH__ 30#define __MEM_RUBY_SYSTEM_SEQUENCER_HH__ 31 32#include <iostream> 33 34#include "base/hashmap.hh" 35#include "mem/protocol/GenericMachineType.hh" |
36#include "mem/protocol/PrefetchBit.hh" 37#include "mem/protocol/RubyAccessMode.hh" | |
38#include "mem/protocol/RubyRequestType.hh" 39#include "mem/ruby/common/Address.hh" 40#include "mem/ruby/common/Consumer.hh" | 36#include "mem/protocol/RubyRequestType.hh" 37#include "mem/ruby/common/Address.hh" 38#include "mem/ruby/common/Consumer.hh" |
41#include "mem/ruby/common/Global.hh" | |
42#include "mem/ruby/system/RubyPort.hh" 43 44class DataBlock; 45class CacheMsg; 46class MachineID; 47class CacheMemory; 48 49class RubySequencerParams; 50 51struct SequencerRequest 52{ | 39#include "mem/ruby/system/RubyPort.hh" 40 41class DataBlock; 42class CacheMsg; 43class MachineID; 44class CacheMemory; 45 46class RubySequencerParams; 47 48struct SequencerRequest 49{ |
53 RubyRequest ruby_request; | 50 PacketPtr pkt; 51 RubyRequestType m_type; |
54 Time issue_time; 55 | 52 Time issue_time; 53 |
56 SequencerRequest(const RubyRequest & _ruby_request, Time _issue_time) 57 : ruby_request(_ruby_request), issue_time(_issue_time) | 54 SequencerRequest(PacketPtr _pkt, RubyRequestType _m_type, Time _issue_time) 55 : pkt(_pkt), m_type(_m_type), issue_time(_issue_time) |
58 {} 59}; 60 61std::ostream& operator<<(std::ostream& out, const SequencerRequest& obj); 62 63class Sequencer : public RubyPort, public Consumer 64{ 65 public: --- 29 unchanged lines hidden (view full) --- 95 96 void readCallback(const Address& address, 97 GenericMachineType mach, 98 DataBlock& data, 99 Time initialRequestTime, 100 Time forwardRequestTime, 101 Time firstResponseTime); 102 | 56 {} 57}; 58 59std::ostream& operator<<(std::ostream& out, const SequencerRequest& obj); 60 61class Sequencer : public RubyPort, public Consumer 62{ 63 public: --- 29 unchanged lines hidden (view full) --- 93 94 void readCallback(const Address& address, 95 GenericMachineType mach, 96 DataBlock& data, 97 Time initialRequestTime, 98 Time forwardRequestTime, 99 Time firstResponseTime); 100 |
103 RequestStatus makeRequest(const RubyRequest & request); 104 RequestStatus getRequestStatus(const RubyRequest& request); | 101 RequestStatus makeRequest(PacketPtr pkt); |
105 bool empty() const; 106 107 void print(std::ostream& out) const; 108 void printStats(std::ostream& out) const; 109 void checkCoherence(const Address& address); 110 111 void markRemoved(); 112 void removeRequest(SequencerRequest* request); 113 114 private: | 102 bool empty() const; 103 104 void print(std::ostream& out) const; 105 void printStats(std::ostream& out) const; 106 void checkCoherence(const Address& address); 107 108 void markRemoved(); 109 void removeRequest(SequencerRequest* request); 110 111 private: |
115 void issueRequest(const RubyRequest& request); | 112 void issueRequest(PacketPtr pkt, RubyRequestType type); |
116 117 void hitCallback(SequencerRequest* request, 118 GenericMachineType mach, 119 DataBlock& data, 120 bool success, 121 Time initialRequestTime, 122 Time forwardRequestTime, 123 Time firstResponseTime); 124 | 113 114 void hitCallback(SequencerRequest* request, 115 GenericMachineType mach, 116 DataBlock& data, 117 bool success, 118 Time initialRequestTime, 119 Time forwardRequestTime, 120 Time firstResponseTime); 121 |
125 bool insertRequest(SequencerRequest* request); | 122 RequestStatus insertRequest(PacketPtr pkt, RubyRequestType request_type); |
126 127 bool handleLlsc(const Address& address, SequencerRequest* request); 128 129 // Private copy constructor and assignment operator 130 Sequencer(const Sequencer& obj); 131 Sequencer& operator=(const Sequencer& obj); 132 133 private: --- 44 unchanged lines hidden --- | 123 124 bool handleLlsc(const Address& address, SequencerRequest* request); 125 126 // Private copy constructor and assignment operator 127 Sequencer(const Sequencer& obj); 128 Sequencer& operator=(const Sequencer& obj); 129 130 private: --- 44 unchanged lines hidden --- |