Initial SME Support - SE-122 #248
Merged
FinnWilkinson merged 98 commits intodevfrom Nov 1, 2022
Merged
Conversation
FinnWilkinson
commented
Sep 27, 2022
…ency, rather than update the VCT register to total cycles completed.
…m register (PMCCNTR_EL0 for Aarch64).
A fix for handling missing system registers in the aarch64 systemRegisterMap_ map. A missing entry will return a -1 and a decoded instruction accessing an unmapped system register will raise a new UnmappedSysReg fatal exception.
…ow for a wider param space (#229)
Fixes output error present for miniBUDE when compiled with GCC-10.3.0 targeting armv8.4-a+sve, caused by an incorrect implementation of the FNEG sve instruction. Additionally, other SVE instructions were updated to accomodate for optional patterns.
…e Linux machines.
A new generic branch predictor containing parameterisable BTB and RAS structures, global indexing, and better identification of branch instructions. Additionally, a parameterisable loop buffer has been implemented in the fetch unit and a loop detection scheme in the ROB unit.
* Moved counter timer logic from main into Architecture, allowing the implementation to be architecture agnostic. * Added test for CNTVCT register. * Updated sveGetPattern auxiliary function to work for any instruction string. * Ensured all necessary SVE instructions included pattern recognition. * Changed specialFiles generation directory to be the build location. * Fixed AArch64_LD1RQ_D_IMM's invalid increments of its index variable. * Improved conditional branch not taken target and remove loop closing direction due to emergent bug. * Resolved LSQ bugs for comparisons against the total req limit and forwarding operands from flushed loads. * Updated comment in sveGetPattern Aux function.
This pull request updates SimEng to use the Armv9.2-update branch of the UoB-HPC Capstone Fork. Changes to the CMake files have been changed to reflect build changes in the upstream Capstone:next branch. A pre-upstreamed update to Capstone has been merged into the Armv9.2-update, which adds support for the AArch64 Armv9.2-a ISA (including SVE2 and SME instructions). As such, minor fixes have been made to accommodate changes to instruction enums, aliasing logic, and other changes.
This PR has reduced the number of unused copies of the memory image and thus reduced the memory requirements of a SimEng simulation. The process memory image is instantiated once through malloc/remalloc calls and shared between simulation objects through shared pointers.
This PR introduces a new CoreInstance class. The class supports the creation of a SimEng core model, storing all the relevant simulation objects within shared pointers. A key factor in this change being introduced was to improve the ease SimEng's interactions with other frameworks e.g. SST.
This PR adds prefixes to all SimEng outputs to help distinguish between simulated workload outputs and the outputs from the framework.
This PR moves the dispatch rate restriction from dispatch unit wide to the individual reservation stations. This improves the parameterization of the unit as a whole.
FinnWilkinson
commented
Oct 24, 2022
Contributor
Author
|
Missing SME docs at the moment. Will add ASAP |
rahahahat
reviewed
Oct 25, 2022
jj16791
requested changes
Oct 26, 2022
Contributor
jj16791
left a comment
There was a problem hiding this comment.
A few comments and clarification needed
Contributor
|
All looks good to me. |
rahahahat
approved these changes
Oct 28, 2022
dANW34V3R
requested changes
Oct 28, 2022
Contributor
dANW34V3R
left a comment
There was a problem hiding this comment.
One possible major issue, other minor comments
jj16791
approved these changes
Oct 31, 2022
Contributor
jj16791
left a comment
There was a problem hiding this comment.
The updates look good to me. Good job!
rahahahat
approved these changes
Oct 31, 2022
Contributor
rahahahat
left a comment
There was a problem hiding this comment.
New changes, look good to me
FinnWilkinson
added a commit
that referenced
this pull request
Nov 29, 2022
This PR adds functionality into SimEng to support the AArch64 SME extension. 6 new SME instructions have been implemented, along with the SVCR Streaming-SVE-Mode context switching functionality. Additionally, the default LLVM version has been updated to 14.0.5 in order to support the SME regression tests. The AArch64 Instruction class now has a copy constructor, optimising the use of cached instructions. Updated Jenkin's pipeline scripts to work with LLVM 14 Changes the Capstone usage to fix an existing memory leak, as mentioned in Issue #261.
jj16791
pushed a commit
that referenced
this pull request
May 19, 2023
This PR adds functionality into SimEng to support the AArch64 SME extension. 6 new SME instructions have been implemented, along with the SVCR Streaming-SVE-Mode context switching functionality. Additionally, the default LLVM version has been updated to 14.0.5 in order to support the SME regression tests. The AArch64 Instruction class now has a copy constructor, optimising the use of cached instructions. Updated Jenkin's pipeline scripts to work with LLVM 14 Changes the Capstone usage to fix an existing memory leak, as mentioned in Issue #261.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Within this PR is the background support needed to support the Armv9.2-a SME extension. Below gives an overview of the changes made :
Streaming-Vector-LengthandMatrixRow-CountAArch64/InstructionGroups.hhfileAArch64_FMOPA_MPPZZ_SPerform an outer-produce accumulate operation on two 32-bit vectorsAArch64_LD1_MXIPXX_H_SLoad a horizontal slice of a 32-bit ZA tileAArch64_LD1_MXIPXX_V_SLoad a vertical slice of a 32-bit ZA tileAArch64_ST1_MXIPXX_H_SStore a horizontal slice of a 32-bit ZA tileAArch64_ST1_MXIPXX_V_SStore a vertical slice of a 32-bit ZA tileAArch64_ZERO_MZero out given sub-tiles of / whole ZA registerAArch64_MSRpstatesvcrImm1Update the SVCR register; used by aliasesSMSTARTandSMSTOPOther non-SME changes include:
nextbranch