gem5 v24.0.0.0
Loading...
Searching...
No Matches
btb.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022-2023 The University of Edinburgh
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
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated
11 * unmodified and in its entirety in all distributions of the software,
12 * modified or unmodified, in source code or in binary form.
13 *
14 * Copyright (c) 2004-2005 The Regents of The University of Michigan
15 * All rights reserved.
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions are
19 * met: redistributions of source code must retain the above copyright
20 * notice, this list of conditions and the following disclaimer;
21 * redistributions in binary form must reproduce the above copyright
22 * notice, this list of conditions and the following disclaimer in the
23 * documentation and/or other materials provided with the distribution;
24 * neither the name of the copyright holders nor the names of its
25 * contributors may be used to endorse or promote products derived from
26 * this software without specific prior written permission.
27 *
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 */
40
41#ifndef __CPU_PRED_BTB_HH__
42#define __CPU_PRED_BTB_HH__
43
44
46#include "base/statistics.hh"
48#include "cpu/static_inst.hh"
49#include "params/BranchTargetBuffer.hh"
50#include "sim/clocked_object.hh"
51
52namespace gem5
53{
54
55namespace branch_prediction
56{
57
59{
60 public:
61 typedef BranchTargetBufferParams Params;
62 typedef enums::BranchType BranchType;
63
65
66 virtual void memInvalidate() override = 0;
67
73 virtual bool valid(ThreadID tid, Addr instPC) = 0;
74
81 virtual const PCStateBase *lookup(ThreadID tid, Addr instPC,
82 BranchType type = BranchType::NoBranch) = 0;
83
89 virtual const StaticInstPtr getInst(ThreadID tid, Addr instPC) = 0;
90
91
96 virtual void update(ThreadID tid, Addr inst_pc,
97 const PCStateBase &target_pc,
98 BranchType type = BranchType::NoBranch,
99 StaticInstPtr inst = nullptr) = 0;
100
103 virtual void incorrectTarget(Addr inst_pc,
104 BranchType type = BranchType::NoBranch)
105 {
107 }
108
109 protected:
111 const unsigned numThreads;
112
124
125};
126
127} // namespace branch_prediction
128} // namespace gem5
129
130#endif // __CPU_PRED_BTB_HH__
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
virtual const PCStateBase * lookup(ThreadID tid, Addr instPC, BranchType type=BranchType::NoBranch)=0
Looks up an address in the BTB to get the target of the branch.
virtual bool valid(ThreadID tid, Addr instPC)=0
Checks if a branch address is in the BTB.
const unsigned numThreads
Number of the threads for which the branch history is maintained.
Definition btb.hh:111
virtual void memInvalidate() override=0
Invalidate the contents of memory buffers.
virtual const StaticInstPtr getInst(ThreadID tid, Addr instPC)=0
Looks up an address in the BTB and return the instruction information if existant.
BranchTargetBuffer(const Params &params)
Definition btb.cc:49
gem5::branch_prediction::BranchTargetBuffer::BranchTargetBufferStats stats
BranchTargetBufferParams Params
Definition btb.hh:61
virtual void incorrectTarget(Addr inst_pc, BranchType type=BranchType::NoBranch)
Update BTB statistics.
Definition btb.hh:103
virtual void update(ThreadID tid, Addr inst_pc, const PCStateBase &target_pc, BranchType type=BranchType::NoBranch, StaticInstPtr inst=nullptr)=0
Updates the BTB with the target of a branch.
Statistics container.
Definition group.hh:93
This is a simple scalar statistic, like a counter.
A vector of scalar stats.
ClockedObject declaration and implementation.
const Params & params() const
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
int16_t ThreadID
Thread index/ID type.
Definition types.hh:235
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition types.hh:147
Declaration of Statistics objects.

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