gem5 v24.0.0.0
Loading...
Searching...
No Matches
comm.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011, 2016-2017 ARM Limited
3 * Copyright (c) 2013 Advanced Micro Devices, Inc.
4 * All rights reserved
5 *
6 * The license below extends only to copyright in the software and shall
7 * not be construed as granting a license to any other intellectual
8 * property including but not limited to intellectual property relating
9 * to a hardware implementation of the functionality of the software
10 * licensed hereunder. You may use the software subject to the license
11 * terms below provided that you ensure that this notice is replicated
12 * unmodified and in its entirety in all distributions of the software,
13 * modified or unmodified, in source code or in binary form.
14 *
15 * Copyright (c) 2004-2006 The Regents of The University of Michigan
16 * All rights reserved.
17 *
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions are
20 * met: redistributions of source code must retain the above copyright
21 * notice, this list of conditions and the following disclaimer;
22 * redistributions in binary form must reproduce the above copyright
23 * notice, this list of conditions and the following disclaimer in the
24 * documentation and/or other materials provided with the distribution;
25 * neither the name of the copyright holders nor the names of its
26 * contributors may be used to endorse or promote products derived from
27 * this software without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 */
41
42#ifndef __CPU_O3_COMM_HH__
43#define __CPU_O3_COMM_HH__
44
45#include <vector>
46
48#include "base/types.hh"
49#include "cpu/inst_seq.hh"
51#include "cpu/o3/limits.hh"
52#include "sim/faults.hh"
53
54namespace gem5
55{
56
57namespace o3
58{
59
70
78
86
103
105{
106 int size;
107
109};
110
113{
128
130
131 struct RenameComm {};
132
134
135 struct IewComm
136 {
137 // Also eventually include skid buffer space.
143
144 unsigned iqCount;
145 unsigned ldstqCount;
146
147 unsigned dispatched;
148 bool usedIQ;
150 };
151
153
155 {
157 // This code has been re-structured for better packing of variables
158 // instead of by stage which is the more logical way to arrange the
159 // data.
160 // F = Fetch
161 // D = Decode
162 // I = IEW
163 // R = Rename
164 // As such each member is annotated with who consumes it
165 // e.g. bool variable name // *F,R for Fetch and Rename
167
171 std::unique_ptr<PCStateBase> pc; // *F
172
176
179
183
187
192
194 unsigned freeROBEntries; // *R
195
196 bool squash; // *F, D, R, I
197 bool robSquashing; // *F, D, R, I
198
200 bool usedROB; // *R
201
203 bool emptyROB; // *R
204
206 bool branchTaken; // *F
210 bool clearInterrupt; // *F
211
214 bool strictlyOrdered; // *I
215
216 };
217
219
226};
227
228} // namespace o3
229} // namespace gem5
230
231#endif //__CPU_O3_COMM_HH__
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
static constexpr int MaxThreads
Definition limits.hh:38
static constexpr int MaxWidth
Definition limits.hh:37
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
std::shared_ptr< FaultBase > Fault
Definition types.hh:249
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition types.hh:147
uint64_t InstSeqNum
Definition inst_seq.hh:40
Struct that defines the information passed from decode to rename.
Definition comm.hh:73
DynInstPtr insts[MaxWidth]
Definition comm.hh:76
Struct that defines the information passed from fetch to decode.
Definition comm.hh:62
DynInstPtr insts[MaxWidth]
Definition comm.hh:65
InstSeqNum fetchFaultSN
Definition comm.hh:67
Struct that defines the information passed from IEW to commit.
Definition comm.hh:89
bool includeSquashInst[MaxThreads]
Definition comm.hh:101
bool branchTaken[MaxThreads]
Definition comm.hh:100
InstSeqNum squashedSeqNum[MaxThreads]
Definition comm.hh:95
std::unique_ptr< PCStateBase > pc[MaxThreads]
Definition comm.hh:96
bool branchMispredict[MaxThreads]
Definition comm.hh:99
Addr mispredPC[MaxThreads]
Definition comm.hh:94
DynInstPtr mispredictInst[MaxThreads]
Definition comm.hh:93
DynInstPtr insts[MaxWidth]
Definition comm.hh:92
bool squash[MaxThreads]
Definition comm.hh:98
DynInstPtr insts[MaxWidth]
Definition comm.hh:108
Struct that defines the information passed from rename to IEW.
Definition comm.hh:81
DynInstPtr insts[MaxWidth]
Definition comm.hh:84
DynInstPtr strictlyOrderedLoad
Hack for now to send back a strictly ordered access to the IEW stage.
Definition comm.hh:182
bool usedROB
Rename should re-read number of free rob entries.
Definition comm.hh:200
unsigned freeROBEntries
Tell Rename how many free entries it has in the ROB.
Definition comm.hh:194
bool clearInterrupt
If the interrupt ended up being cleared before being handled.
Definition comm.hh:210
std::unique_ptr< PCStateBase > pc
The pc of the next instruction to execute.
Definition comm.hh:171
DynInstPtr mispredictInst
Provide fetch the instruction that mispredicted, if this pointer is not-null a misprediction occured.
Definition comm.hh:175
bool emptyROB
Notify Rename that the ROB is empty.
Definition comm.hh:203
bool branchTaken
Was the branch taken or not.
Definition comm.hh:206
InstSeqNum doneSeqNum
Represents the instruction that has either been retired or squashed.
Definition comm.hh:191
DynInstPtr squashInst
Instruction that caused the a non-mispredict squash.
Definition comm.hh:178
bool interruptPending
If an interrupt is pending and fetch should stall.
Definition comm.hh:208
InstSeqNum nonSpecSeqNum
Communication specifically to the IQ to tell the IQ that it can schedule a non-speculative instructio...
Definition comm.hh:186
bool strictlyOrdered
Hack for now to send back an strictly ordered access to the IEW stage.
Definition comm.hh:214
std::unique_ptr< PCStateBase > nextPC
Definition comm.hh:116
Struct that defines all backwards communication.
Definition comm.hh:113
bool iewBlock[MaxThreads]
Definition comm.hh:224
bool iewUnblock[MaxThreads]
Definition comm.hh:225
bool decodeBlock[MaxThreads]
Definition comm.hh:220
DecodeComm decodeInfo[MaxThreads]
Definition comm.hh:129
RenameComm renameInfo[MaxThreads]
Definition comm.hh:133
bool renameUnblock[MaxThreads]
Definition comm.hh:223
bool decodeUnblock[MaxThreads]
Definition comm.hh:221
IewComm iewInfo[MaxThreads]
Definition comm.hh:152
bool renameBlock[MaxThreads]
Definition comm.hh:222
CommitComm commitInfo[MaxThreads]
Definition comm.hh:218

Generated on Tue Jun 18 2024 16:24:01 for gem5 by doxygen 1.11.0