Ariane RISC-V CPU
github.com
github.com
Its a pretty large effort and they are releasing more and more of their work into open source. Here [2] you can see what they have already released and their plans going foreward.
Project like LowRisc Open-SoC [3] using some of the smaller PULP cores as minion chips for things like IO offloading, security and so on. They can also reuse a lot of the work done for PULP.
[1] https://www.pulp-platform.org/
At least it supports compressed instructions. There are some actual chips about to be released without the C (compressed) extension, but Fedora and Debian are compiling everything assuming the C extension.
In Fedora news, just today we've got a bootable (but very minimal) RISC-V disk image[2] that you can run in qemu.
Haven't found any docs/info about it so far. :(
Looking at the photo's on the announcement, your blog (etc), it doesn't look like the HPC nor Vita57 pin-out versions, so guessing it's an LPC version?
In the mean time, this forum answer of a similar question answers the FMC port type:
https://forums.sifive.com/t/questions-about-hifive-unleashed...
> HiFive Unleashed is an FMC mezzanine card with a male High Pin Count FMC connector
Supporting a soft-float RISC is not different.
In any case I was thinking about kernel or M-layer emulation of floats which is different, requires a bunch of code to be written once, but doesn't require software gymnastics from the distro.
The atomics they seem to want to support but arn't quite done.
But for a general purpose application/server chip firstly the FPU doesn't really take up much space and secondly if you ship without an FPU then you can never enter certain important markets (eg. HPC).
Sometimes a solution to a problem using IEEE-754-arithmetic can be rewritten to use integer arithmetic.
Now, what are the problems where IEEE-754-arithmetic is used now, and in what cases it cannot be rewritten?
I wouldn't be surprised if music decoding could be done without IEEE-754-arithmetic. Maybe, a specialized codec would have to be used, but I still consider that doable.
Anybody any ideas where IEEE-754 is mandatory to achieve acceptable performance in individual computing workloads?
With fixed point you have to be much more aware about e.g. the min-max-range of values and the precision needed, potentially changing them between different computation steps.
If you have any complex math algorithm you should also look into this aspects with float for error calculation etc. So maybe using fixed-point would not be so bad there, but for a lot of "just get it done" tasks people want to just have a float and not bother about it.
If you have a way to quickly translate math specific programs using floats + little amounts of meta data into math specific programs using fixed-point arithmetic including error analysis/correction* you probably would get ride of >90% of float requirements, through you would "still" have all that legacy software ;=)
[*] If I remember correctly someone did that for Neural Networks using tensorflow, but I don't remember the details
For (almost) any one fixed algorithm with specified input scaling and known error tolerance, you can choose an appropriate fixed-point format and come within a reasonable constant of floating-point performance on generic hardware, and exceed it on special-purpose hardware. The real value of floating-point is in writing libraries that deliver good performance and acceptable numeric results without any a priori knowledge of input data scaling. This is critical to allowing people to quickly re-use and repurpose all the existing numerical computing software for new problems, and allows engineering tools like Matlab to be useful to people who are not numerics experts.
Fixed-point is often a reasonable substitute for floating point, if you have enough bits; Doom uses it for its 2.5D rendering.
However, all your software has to be defined with this in mind. Otherwise you have to have soft-float in order to run it at all, which is horribly slow.
On atomics, see this section of the readme:
> While developing Ariane it has become evident that, in order to support Linux, the atomic extension is going to be mandatory. While the core is currently booting Linux by emulating Atomics in BBL (in a single core environment this is trivially met by disabling interrupts) this is not the behavior which is intended. For that reason we are going to fully support all atomic extensions in the very near future.
"While developing Ariane it has become evident that, in order to support Linux, the atomic extension is going to be mandatory. While the core is currently booting Linux by emulating Atomics in BBL (in a single core environment this is trivially met by disabling interrupts) this is not the behavior which is intended. For that reason we are going to fully support all atomic extensions in the very near future."
Is the atomic extension mentioned here something like the LOCK prefix in x86, i.e it just lock the bus for the instructions that follow? I'm guessing this is non-trivial to implement?
https://www.cl.cam.ac.uk/teaching/1617/ECAD+Arch/files/docs/...
Once you understand how to build a core, frankly the more daunting part is how to interface with the core. How do you load a program into its memory? How do you see what it is doing? How do you know if it finished running or if it crashed?
You may find luck following along with FPGA tutorials (maybe take a look at the Pynq board?) that teach you how to implement a design, put it on the board, and talk to it. Once you understand how to use your FPGA and how to interface with your designs, changing the design to a simple RISC-V core will be more tractable.
You could try and check out picorv32 or riscv-sodor to see two examples of "simple" RISC-V cores that you can build, simulate on your computer, and watch them execute programs you wrote. But man the "magic" behind the test harnesses can be super opaque.
Naturally, like any OOO-issue processor, it supports speculative issuance of load operations to the memory system (or it wouldn't be worth the effort of OOO-issue).
Its unlikely that there are many mass production RISC-V CPU currently in design. A couple are known but they are more advanced research projects.
The BOOM core will be used by Esperanto and I'm sure they will evaluate what to do about the security issues. The guy who made BOOM written about this problems, check on Twitter.
Essentially, you just have to buffer up more stuff and clear the misspeculated entries so nothing is left lying around that could leak information. Comes with a cost, but chip companies don't have to give up on OOO/speculation entirely.
For example, it's a mistake (that's been made by other ISAs!) to allow two hardware threads to bypass store data out of the uncommitted StoreQueue from one thread to another. Your memory consistency model violates single-copy atomicity and now the programmer's life is much harder.
One of the encodings for the HINT will almost certainly be a speculative execution barrier.