This post has been moved to my new substack: https://fprox.substack.com/p/riscv-vector-extension-part5-1-load-store-memory
Personal blog on computer architecture, RISC-V, technical coding challenges, problems and sometime solutions. Mathematics, Arithmetic, Cryptography, Compilers, Floating-point, Compression or whatever interests me.
RISC-V Vector Extension in a Nutshell (Part 4): permute operations
This article has moved to my new substack: https://fprox.substack.com/p/isc-v-vector-extension-in-nutshell-part4.
RISC-V Vector Extension in a Nutshell (Part 3): mask & masked operations
This article has moved to my new substack: https://fprox.substack.com/p/risc-v-vector-extension-in-a-nutshell-part-3.
RISC-V Vector Extension in a Nutshell (Part 2): arithmetic operations
This article has moved to my new substack: https://fprox.substack.com/p/risc-v-vector-extension-in-nutshell
RISC-V Vector Extension in a Nutshell (Part 1)
New option for RISC-V Vector performance simulation
There have been some news since I published Performance simulation of RISC-V Vector
Rivos Inc (a recent contender in the RISC-V race) has been working on extending GEM5 to support RVV.
More info are available on this post of the gem5-dev mailing list and the source code is accessible on Rivos's github page: https://github.com/rivosinc/gem5/commits/rivos/dev/joy/initial_RVV_support.
It seems their port is not directly related to Cristobal Ramirez / PCLT effort but you should still be able to follow the direction given in my initial article.
Performance simulation of RISC-V vector extension using GEM5
We will be using a fork of Cristobal Ramirez Lazo's gem5 fork namely https://github.com/plctlab/plct-gem5, this fork is quite active and has been updated to RVV 1.0 . The initial fork extends GEM5 with RVV support and a vector processing unit extension (and its GEM5 configuration).
Building gem5 for RISC-V
# on ubuntu 20.04 sudo apt install build-essential git m4 scons zlib1g zlib1g-dev \ libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \ python3-dev python3-six python-is-python3 libboost-all-dev pkg-config
git clone https://github.com/plctlab/plct-gem5.git cd plct-gem5 # the -j option set the number of parallel jobs for the build # the actually this option can be tuned to your setting. scons build/RISCV/gem5.opt -j3 --gold-linker
Execution
${GEM5_DIR}build/RISCV/gem5.opt ${GEM5_DIR}configs/example/riscv_vector_engine.py \ --cmd="$program $program_args"
Note
References:
- gem5 fork by PCLTLAB (still active) with RVV support https://github.com/plctlab/plct-gem5
- Cristobal Ramirez Lazo's gem5 fork with initial risc-v vector support https://github.com/RALC88/gem5/tree/develop
- gem5 source code repository mirror on github: https://github.com/gem5/gem5
- gem5 project task to track RISCV-V vector upstream support: https://gem5.atlassian.net/browse/GEM5-618
- Tutorial on GEM5 https://www.cs.sfu.ca/~ashriram/Courses/CS7ARCH/tutorials/gem5/index.html



