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 ---