Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
85656e1
Updated the Virtual Counter Timer logic to iterate at the Timer-Frequ…
FinnWilkinson Apr 4, 2022
759892f
Implemented functionality to update the Processor Cycle Counter syste…
FinnWilkinson Apr 7, 2022
09c074a
Missing sys reg handling (#228)
jj16791 May 12, 2022
1fd9241
Updated some config options to be read as uint16_t not uint8_t to all…
jj16791 Jun 14, 2022
f912b4e
Fix for sve FNEG (predicated) instruction (#230)
FinnWilkinson Jun 14, 2022
064e43e
Removed prefix from standard types such as due to build errors on s…
FinnWilkinson Jun 16, 2022
4b3ad61
New generic branch prediction (#226)
jj16791 Jun 21, 2022
d644056
Updated jenkins armclang build script to use new armclang22 compiler …
jj16791 Sep 12, 2022
4b1242d
Prevent ExceptionHandler processing if there are active memory reques…
jj16791 Sep 13, 2022
56a9d68
Added comments explaining ELF File structure in Elf.cc file. (#242)
rahahahat Sep 13, 2022
6a2cfe6
Additional aarch64 and syscall support (#233)
tomhepworth Sep 13, 2022
fc41409
Initial M1 Firestorm core model (#245)
tomhepworth Sep 13, 2022
a0002ca
Minor Feature Fixes (#240)
FinnWilkinson Sep 13, 2022
740c019
Capstone update to support Armv9.2 (#239)
FinnWilkinson Sep 13, 2022
54867d8
Process Image memory optimisation for SimEng (#243)
rahahahat Sep 14, 2022
13f0f83
New core creation (#247)
jj16791 Sep 16, 2022
d089a5b
Output prefix (#249)
jj16791 Sep 23, 2022
9b42a25
Initial SST integration with SimEng and conditional compilation using…
rahahahat Sep 23, 2022
4638d44
Updated the Virtual Counter Timer logic to iterate at the Timer-Frequ…
FinnWilkinson Apr 4, 2022
1c22a63
Implemented functionality to update the Processor Cycle Counter syste…
FinnWilkinson Apr 7, 2022
1ba50c3
Missing sys reg handling (#228)
jj16791 May 12, 2022
dbdb09a
Updated some config options to be read as uint16_t not uint8_t to all…
jj16791 Jun 14, 2022
9253593
Fix for sve FNEG (predicated) instruction (#230)
FinnWilkinson Jun 14, 2022
46660b5
Removed prefix from standard types such as due to build errors on s…
FinnWilkinson Jun 16, 2022
02e94c8
New generic branch prediction (#226)
jj16791 Jun 21, 2022
1d4d091
Updated jenkins armclang build script to use new armclang22 compiler …
jj16791 Sep 12, 2022
19c05cb
Prevent ExceptionHandler processing if there are active memory reques…
jj16791 Sep 13, 2022
5761757
Added comments explaining ELF File structure in Elf.cc file. (#242)
rahahahat Sep 13, 2022
e62ad85
Additional aarch64 and syscall support (#233)
tomhepworth Sep 13, 2022
ce3620b
Initial M1 Firestorm core model (#245)
tomhepworth Sep 13, 2022
fb929e8
Minor Feature Fixes (#240)
FinnWilkinson Sep 13, 2022
d69d2f7
Capstone update to support Armv9.2 (#239)
FinnWilkinson Sep 13, 2022
cf21d42
Process Image memory optimisation for SimEng (#243)
rahahahat Sep 14, 2022
7403263
New core creation (#247)
jj16791 Sep 16, 2022
a9460a7
Output prefix (#249)
jj16791 Sep 23, 2022
cb6b5da
Dispatch rate SE-146 (#251)
jj16791 Oct 12, 2022
260a203
Documentation updates for release v0.9.4 SE-155 (#254)
jj16791 Oct 17, 2022
46ae197
merge with dev
Oct 18, 2022
394f913
Changed sst-cores config file to match config files in dev
Oct 18, 2022
81d8e9c
Merged newly resetted dev into SST-SimEng
Oct 19, 2022
175e9df
Correcting instantiation of dispatches vector (#257)
jj16791 Oct 26, 2022
8659933
Merge branch 'dev' into SST-SimEng
Oct 31, 2022
d74bf7a
Added SSTSimEng core, L1 & L2 cache components to a64fx model config.
Oct 31, 2022
eed02bf
Custom Testing Framework for SST - SE-121 (#250)
rahahahat Oct 31, 2022
04b4be3
Added memory backend and controller config options
Nov 1, 2022
25aeb9e
Merge branch 'SST-SimEng' into a64fx-sst-model
Nov 1, 2022
19d2905
Added connection links
Nov 1, 2022
c8b3940
Added return statement in getMemoryProps
Nov 1, 2022
9796292
Fix breaking changes
Nov 1, 2022
bb3dc52
Added L1 to Core bandwidth
Nov 1, 2022
4586224
Tweaked values in model config
Nov 2, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.13)
include(FetchContent)
set(FETCHCONTENT_QUIET OFF)

set(CMAKE_VERBOSE_MAKEFILE ON)
# FetchContent_MakeAvailable was introduced in 3.14
# there also isn't a version that accepts extra args at the end for add_subdirectory
# hence we write one ourselves
Expand Down Expand Up @@ -122,6 +122,8 @@ option(SIMENG_ENABLE_TESTS "Whether to enable testing for SimEng" OFF)
option(SIMENG_USE_EXTERNAL_LLVM "Use an external LLVM rather than building it as a submodule" OFF)
option(SIMENG_SANITIZE "Enable compiler sanitizers" OFF)
option(SIMENG_OPTIMIZE "Enable Extra Compiler Optimizatoins" OFF)
option(SIMENG_ENABLE_SST "Compile SimEng SST Wrapper" OFF)
option(SIMENG_ENABLE_SST_TESTS "Enable testing for SST" OFF)

if (SIMENG_OPTIMIZE)
# Turn on link time optimization for all targets.
Expand Down Expand Up @@ -219,3 +221,24 @@ endif()
# include sources
add_subdirectory(src)
add_subdirectory(docs)

if (SIMENG_ENABLE_SST)
if (SST_INSTALL_DIR)
add_subdirectory(sst)
if (SIMENG_ENABLE_SST_TESTS)
enable_testing()
list(APPEND CMAKE_CTEST_ARGUMENTS "--verbose")
add_custom_target(test-sst-simeng
COMMAND ${CMAKE_CTEST_COMMAND}
DEPENDS sstsimengtest
)
endif()
else()
message(WARNING "SST build was selected but SST install directory was not specified.
Please specify -DSST_INSTALL_DIR=<path> for the SST build to proceed.")
endif()
endif()

# Install SimEng model configs in the build directory
set(SIMENG_CONFIG_INSTALL_DIR "${CMAKE_BINARY_DIR}/simeng-configs")
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/configs/ DESTINATION ${SIMENG_CONFIG_INSTALL_DIR})
269 changes: 269 additions & 0 deletions configs/sst-cores/a64fx-sst.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
---
# The following resources where utilised to create the config file and naming schemes:
# https://github.com/fujitsu/A64FX

Core:
Simulation-Mode: outoforder
# Clock Frequency is in GHz.
Clock-Frequency: 1.8
# Timer-Frequency is in MHz.
Timer-Frequency: 100
Micro-Operations: True
Vector-Length: 512
Fetch:
Fetch-Block-Size: 32
Loop-Buffer-Size: 48
Loop-Detection-Threshold: 4
Process-Image:
Heap-Size: 1073741824
Stack-Size: 1048576
Register-Set:
GeneralPurpose-Count: 96
FloatingPoint/SVE-Count: 128
Predicate-Count: 48
Conditional-Count: 128
Pipeline-Widths:
Commit: 4
FrontEnd: 4
LSQ-Completion: 2
Queue-Sizes:
ROB: 128
Load: 40
Store: 24
Branch-Predictor:
BTB-Tag-Bits: 11
Saturating-Count-Bits: 2
Global-History-Length: 11
RAS-entries: 8
Fallback-Static-Predictor: "Always-Taken"
L1-Data-Memory:
Interface-Type: External
L1-Instruction-Memory:
Interface-Type: Flat
LSQ-L1-Interface:
Access-Latency: 5
Exclusive: True
Load-Bandwidth: 128
Store-Bandwidth: 64
Permitted-Requests-Per-Cycle: 2
Permitted-Loads-Per-Cycle: 2
Permitted-Stores-Per-Cycle: 1
Ports:
0:
Portname: FLA
Instruction-Support:
- FP
- SVE
1:
Portname: PR
Instruction-Support:
- PREDICATE
2:
Portname: EXA
Instruction-Support:
- INT_SIMPLE
- INT_MUL
- STORE_DATA
3:
Portname: FLB
Instruction-Support:
- FP_SIMPLE
- FP_MUL
- SVE_SIMPLE
- SVE_MUL
4:
Portname: EXB
Instruction-Support:
- INT_SIMPLE
- INT_DIV_OR_SQRT
5:
Portname: EAGA
Instruction-Support:
- LOAD
- STORE_ADDRESS
- INT_SIMPLE_ARTH_NOSHIFT
- INT_SIMPLE_LOGICAL_NOSHIFT
- INT_SIMPLE_CMP
6:
Portname: EAGB
Instruction-Support:
- LOAD
- STORE_ADDRESS
- INT_SIMPLE_ARTH_NOSHIFT
- INT_SIMPLE_LOGICAL_NOSHIFT
- INT_SIMPLE_CMP
7:
Portname: BR
Instruction-Support:
- BRANCH
Reservation-Stations:
0:
Size: 20
Dispatch-Rate: 2
Ports:
- FLA
- PR
- EXA
1:
Size: 20
Dispatch-Rate: 2
Ports:
- FLB
- EXB
2:
Size: 10
Dispatch-Rate: 2
Ports:
- EAGA
3:
Size: 10
Dispatch-Rate: 2
Ports:
- EAGB
4:
Size: 19
Dispatch-Rate: 2
Ports:
- BR
Execution-Units:
0:
Pipelined: True
Blocking-Groups:
- INT_DIV_OR_SQRT
- FP_DIV_OR_SQRT
- SVE_DIV_OR_SQRT
1:
Pipelined: True
Blocking-Groups:
- INT_DIV_OR_SQRT
- FP_DIV_OR_SQRT
- SVE_DIV_OR_SQRT
2:
Pipelined: True
Blocking-Groups:
- INT_DIV_OR_SQRT
- FP_DIV_OR_SQRT
- SVE_DIV_OR_SQRT
3:
Pipelined: True
Blocking-Groups:
- INT_DIV_OR_SQRT
- FP_DIV_OR_SQRT
- SVE_DIV_OR_SQRT
4:
Pipelined: True
Blocking-Groups:
- INT_DIV_OR_SQRT
- FP_DIV_OR_SQRT
- SVE_DIV_OR_SQRT
5:
Pipelined: True
Blocking-Groups:
- INT_DIV_OR_SQRT
- FP_DIV_OR_SQRT
- SVE_DIV_OR_SQRT
6:
Pipelined: True
Blocking-Groups:
- INT_DIV_OR_SQRT
- FP_DIV_OR_SQRT
- SVE_DIV_OR_SQRT
7:
Pipelined: True
Blocking-Groups:
- INT_DIV_OR_SQRT
- FP_DIV_OR_SQRT
- SVE_DIV_OR_SQRT
Latencies:
0:
Instruction-Groups:
- INT
Execution-Latency: 2
Execution-Throughput: 2
1:
Instruction-Groups:
- INT_SIMPLE_ARTH_NOSHIFT
- INT_SIMPLE_LOGICAL_NOSHIFT
- INT_SIMPLE_CVT
Execution-Latency: 1
Execution-Throughput: 1
2:
Instruction-Groups:
- INT_MUL
Execution-Latency: 5
Execution-Throughput: 1
3:
Instruction-Groups:
- INT_DIV_OR_SQRT
Execution-Latency: 41
Execution-Throughput: 41
4:
Instruction-Groups:
- SCALAR_SIMPLE
- VECTOR_SIMPLE_LOGICAL
- SVE_SIMPLE_LOGICAL
- VECTOR_SIMPLE_CMP
- SVE_SIMPLE_CMP
Execution-Latency: 4
Execution-Throughput: 1
5:
Instruction-Groups:
- FP_DIV_OR_SQRT
Execution-Latency: 29
Execution-Throughput: 29
6:
Instruction-Groups:
- VECTOR_SIMPLE
- SVE_SIMPLE
- SCALAR_SIMPLE_CVT
- FP_MUL
- SVE_MUL
Execution-Latency: 9
Execution-Throughput: 1
7:
Instruction-Groups:
- SVE_DIV_OR_SQRT
Execution-Latency: 98
Execution-Throughput: 98
8:
Instruction-Groups:
- PREDICATE
Execution-Latency: 3
Execution-Throughput: 1
9:
Instruction-Groups:
- LOAD_SCALAR
- LOAD_VECTOR
- STORE_ADDRESS_SCALAR
- STORE_ADDRESS_VECTOR
Execution-Latency: 3
Execution-Throughput: 1
10:
Instruction-Groups:
- LOAD_SVE
- STORE_ADDRESS_SVE
Execution-Latency: 6
Execution-Throughput: 1
# CPU-Info mainly used to generate a replica of the special (or system) file directory
# structure
CPU-Info:
# Set Generate-Special-Dir to True to generate the special files directory, or to False to not.
# (Not generating the special files directory may require the user to copy over files manually)
Generate-Special-Dir: True
# Core-Count MUST be 1 as multi-core is not supported at this time. (A64FX true value is 48)
Core-Count: 1
# Socket-Count MUST be 1 as multi-socket simulations are not supported at this time. (A64FX true value is 1)
Socket-Count: 1
# SMT MUST be 1 as Simultanious-Multi-Threading is not supported at this time. (A64FX true value is 1)
SMT: 1
# Below are the values needed to generate /proc/cpuinfo
BogoMIPS: 200.00
Features: fp asimd evtstrm sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm fcma dcpop sve
CPU-Implementer: "0x46"
CPU-Architecture: 8
CPU-Variant: "0x1"
CPU-Part: "0x001"
CPU-Revision: 0
# Package-Count is used to generate
# /sys/devices/system/cpu/cpu{0..Core-Count}/topology/{physical_package_id, core_id}
Package-Count: 1
Loading