Comments (2)
Hi, thanks for the question.
I think you are correct about a slight inaccuracy in Scarab. To my knowledge, what is typically done here is there are actually two structures: let's call them the Branch Buffer and the Target Buffer. The Branch Buffer holds static information about the branch (e.g., that it is a branch, what kind of branch it is call/return/indirect/etc, and any other static information about the branch that may assist with fetch or prediction). The Target Buffer holds the target of the branch in the case of direct branches.
An indirect branch would require a Branch Buffer entry, but not a Target Buffer entry (as the target would be supplied by the iBTB structure).
Now in Scarab, we only model one structure: the Branch Target Buffer (BTB). This means when we allocate the required BTB entry to track static branch information (things the Branch Buffer would have tracked in my earlier example) we are also allocating a target entry, which is technically a waste of space.
I believe from a performance modeling perspective, there is nothing to be concerned about here. However, with added complexity, the BTB could be split into two structures to improve space efficiency.
Does this answer your question?
from scarab.
It does. Thanks for your answer. That also explains why IPC falls when I add the following check before the BTB entry update even with ENABLE_CRS
and ENABLE_IBP
.
if(op->oracle_info.btb_miss && (op->table_info->cf_type == CF_CBR || op->table_info->cf_type == CF_CALL || op->table_info->cf_type == CF_BR))
bp_data->bp_btb->update_func(bp_data, op);
Seems like branch static information is much more important than few wasted bytes in the BTB. I was assuming that branch static information is stored in the branch predictor instead of BTB. That is because, Scarab already uses cf_type
(one of the static information) to determine whether to look at BTB, IBTB, or handle special case syscall (as seen in the code snippets below). Thanks anyways for your answer.
and
from scarab.
Related Issues (20)
- [Question] How do you access metadata about the Cache from a prefetcher function? HOT 2
- [Question] !ENABLE_ICACHE_PACKET_BREAKING && !PERFECT_BP HOT 8
- [Question] Runahead Execution in Scarab HOT 6
- [Question] Decoder: Redirect on btb_miss and !taken HOT 2
- recipe for target 'pin_exec' failed HOT 19
- [BUG] Running SPEC2006 Checkpoints with PIN tool HOT 1
- Tests cannot access github secret values when pull request created by fork
- [Question]About wrong path execution HOT 1
- [Question]About Wrong Path Execution HOT 2
- [Question] mem_req buffer and queues HOT 1
- [Question] Assertion failure when running gcc in SPEC2017 IntSpeed HOT 3
- [Question] Proper documentation for running SPEC 17 HOT 2
- [BUG] Link to auto-generated software documentation is broken HOT 1
- [Question] make -C docs fails HOT 1
- [Question] Running make in src/ fails HOT 8
- Running make in scarab/src fails HOT 1
- [BUG] "scarab --help" info is out of date?
- [Question and Bug] "Invalid header for input file #0" HOT 1
- Having issue in building src in scarab
- [BUG] Multiple compilation errors HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scarab.