You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Simulating tenstorent ocelot (now bobcat?) rvv 1.0 core based on SonicBOOM
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
RISC-V Vector Extension for Integer Workloads: An Informal Gap Analysis
RISC-V Vector Extension for Integer Workloads: An Informal Gap Analysis
Note: To verify my RVI membership and idenity on this otherwise semi anonymous account: I'm Olaf Bernstein, you should be able to view my sig-vector profile, if you are a member of the vector SIG.
The goal of this document is to explore gaps in the current RISC-V Vector extensions (standard V, Zvbb, Zvbc, Zvkg, Zvkn, Zvks), and suggest instructions to fill these gaps.
My focus lies on application class processors, with the expectation that suggested instructions would be suitable to become mandatory or optional instructions in future profiles.
I'll assume you are already familiar with RVV, if not, here is a great introduction and here the latest RISC-V ISA manual.
Using the Ziggurat Method for Sampling Random Coordinates From a Unit Circle
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
I was curious to see how RISC-V and ARM compare in terms of dynamic instruction count and code density, so I devised a small experiment to compare the ISAs.
As a test codebase, I choose the chibicc C compiler, because it's a medium size project and is quite easy to compile.
To benchmark chibicc I just used it to compile itself, which should be a quite realistic workload to simulate a complex non-regular application.
I merged all files into one and did some minor modifications, the code can be found at: https://godbolt.org/z/xr3nEW8Wf
You may notice that I added unoptimized scalar implementations of the mem* and str* functions from musl-libc.
This is because I decided to not include SIMD code in this experiment, in an effort to remove more unknown variables and focus on comparing the base ISAs.
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
After hacking together a quick script and fiddling with the bit order and colors for way too long, I managed to create a decent visualization of the RISC-V instruction encoding.
You can find my code below.
The following graphics cover the 64-bit part of the RISC-V ISA, including all ratified 64-bit extensions, with opcodes extracted from the riscv/riscv-opcodes repo.
I mapped the opcodes to 2D coordinates with a Morton space-filling curve.