-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mayne lsu #216
base: master
Are you sure you want to change the base?
Conversation
@MayneMei Please reach out to Knute and see if he is available for a meeting to address your questions about debugging. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When you run make regress
the last message from ctest
is printed at the end of the run. Something like /path/to/LastTest.log
. Examine that file, it will tell which tests failed and how to run them.
@@ -31,7 +33,7 @@ namespace olympia | |||
cache_read_stage_(cache_lookup_stage_ | |||
+ 1), // Get data from the cache in the cycle after cache lookup | |||
complete_stage_( | |||
cache_read_stage_ | |||
cache_read_stage_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please set up your editor to remove extraneous (dead) whitespace from end of lines.
inst_ptr->isStoreInst() && (inst_ptr->getStatus() != Inst::Status::RETIRED); | ||
const bool cache_bypass = is_already_hit || !phy_addr_is_ready || is_unretired_store; | ||
//check if we can forward from store buffer first | ||
uint64_t load_addr = inst_ptr->getTargetVAddr(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const uint64_t
ILOG("Store added to store buffer: " << inst_ptr); | ||
} | ||
|
||
LoadStoreInstInfoPtr LSU::findYoungestMatchingStore_(uint64_t addr) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Method can be const
LoadStoreInstInfoPtr matching_store = nullptr; | ||
|
||
for (auto it = store_buffer_.begin(); it != store_buffer_.end(); ++it) | ||
{ | ||
auto & store = *it; | ||
if (store->getInstPtr()->getTargetVAddr() == addr) | ||
{ | ||
matching_store = store; | ||
} | ||
} | ||
return matching_store; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use std::find_if
auto delete_iter = sb_iter++; | ||
store_buffer_.erase(delete_iter); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
auto delete_iter = sb_iter++; | |
store_buffer_.erase(delete_iter); | |
sb_iter = store_buffer_.erase(sb_iter); |
Hi Arup and Knute, after I talked with Arup, I decided to implement store buffer first to enable data forwarding and then implement multi pipelines. Here is the draft pull. For my implementation, 30% tests passed, 69 tests failed out of 99, when I look those results I feel really lost on how to begin debug. Could you give me some guidance? Thank you!