Conversation
dANW34V3R
left a comment
There was a problem hiding this comment.
Minor comments, but concepts look good
|
It could be worth adding tests for the maximum and minimum bound of each config option e.g. just run the default program for these options and make sure it runs to completion. This would be far from covering all potential issues as all options are dependent but would omit basic issues in the future. This would probably take a non-trivial amount of time so something that could be added to the CI pipeline. Thoughts @jj16791 @FinnWilkinson @ABenC377 @JosephMoore25 ? |
|
@dANW34V3R Ideally this would be tested. Problem is for ~23 parameters that would be 46 tests. In the case that one breaks, bounds would need to be set on the program. A timeout would be needed in the case of broken progression, and I guess memory leaks should eventually crash - these things may be slightly easier to monitor manually. It may be sufficient to do this once before each release - I can provide an internal tool to run these tests automatically. Our options are:
We should take a vote/discussion on this, but the outcome is unlikely to change this PR. @FinnWilkinson @jj16791 @dANW34V3R I'm under the impression that 2 should be sufficient and 3 should always be done anyway. These limits are often not touched through normal use of SimEng, but instead when designing extreme CPUs, hence not running into an issue until now. |
This would be nice to do yes, but I think we would need to use some other benchmark other than the default one to ensure all potential issues are discovered. For example, without running a code using SVE instructions, one of the bugs fixed by this PR wouldn't have been discovered |
We run a semi-automated script on the project before release to check that all exisiting benchmarks still functionally work, so doing this for something else wouldn't be too bad (in my opinion). However, upkeeping such a tool would require a bit more work given it is subject to change much more often than the list of supported benchmarks. An alternative would be to implement unit / integration tests to ensure all the bounds are functioning correctly - this option would need to be a PR in itself though |
Check on release seems like a possible solution to get the tests run but not unnecessarily over checking. I can see a way where it could be automated by checking the values set by functions like
This would be option 1 I guess as all GTests are run in the CI pipeline on every push to an open PR. Check on release seems like a better option if these tests take some time to run |
3905e01 to
2494b39
Compare
Merged dev updates into this branch (attempt 2, oops)
…essages being wrong way around
Merging with latest dev
This PR aims to squash the bugs being investigated that appear through certain parameter values in the config file.
The current known issues are:
[FIXED]
Vector-Lengthbeing greater thanLoad-BandwidthorStore-Bandwidthcauses progression to halt with no error. A simple check is needed inModelConfig.ccto ensure this is not the case, and to error out if it is the case.[FIXED]
Fetch-Block-Sizebeing greater than 128 (despite being a valid value) causes a large memory leak. This was due to the precision ofbufferedBytes_andbufferOffsetbeing 8 bit, as was thebytesAvailableparameter of the functionpredecode. This led to an infinite loop of instruction fetches.[TODO, not in this PR] Setting
GeneralPurpose-CountorFloatingPoint/SVE-Countto a small value above architectural register values in OoO/MicroOp mode causes indefinite stalls due to not being able to rename all destination registers. This is to be handled in a different PR due to this not being a trivial fix.[DONE] Investigate further parameter values to check for unexpected behaviour. Nothing is noticably wrong at this time.