Framework Laptop feature requests – RISC-V Mainboard (2021)
community.frame.work
community.frame.work
(Wanted to switch my SBC work from ARM to RISCV but it looks that you need to put in a lot of effort to get Linux reliably going).
[Edit] ARM has less legacy than x86, but RISCV has less legacy than ARM. Intels move to drop 16 and 32 bit modes in the future and some commands seems to show that dropping legacy makes your CPU faster or more energy efficient (less complex) if nothing else you can replace the die space with caches.
I got a VisionFive2 (~$100) and I am impressed with the progress made since it shipped in February.
https://www.pine64.org/2023/04/10/pinetab-v-and-pinetab2-lau...
The PineTab-V is at least around the same speed as the Arm-based PineTab2, with the SiFive U74 being very comparable to (even a bit better than) the Arm A55 at the same MHz. In these devices the Arm is at 1.8 GHz vs the RISC-V at 1.5 but that's pretty minor. Also the Arm has NEON SIMD while that generation of RISC-V doesn't have SIMD or Vector -- the D1 and TH1520 do have 128 bit vectors, though standard software doesn't support that, so it's only whatever you write yourself.
https://github.com/YosysHQ/icestorm
Think something similar to MiSTer FPGA -- but in a laptop form factor, and able to run all sorts of "soft" CPUs on it, including (but not limited to) the following:
That wouldn't be usable as the main board of a laptop.
The iCE40 series consists entirely of small, low-power FPGAs. They're neither large nor fast, and they don't have a lot of I/Os. They can fit a soft core CPU, but with little room to spare, no external memory controller, and at a relatively low Fmax (like, maybe 50 MHz with a lucky P&R run). They're neat parts, but this isn't what they're for.
The ECP5 series (also Lattice) might be somewhat more suitable, but it's still no replacement for a fixed-function CPU. Reconfigurability comes with a dramatic penalty to speed and power consumption.
> able to run all sorts of "soft" CPUs on it, including (but not limited to) the following:
For what it's worth, OpenCores is basically a junkyard. Most of what you see there is abandoned and barely functional, if at all.
https://www.apple.com/shop/product/MW682AM/A/apple-afterburn...
Under the hood, it's a Xilinx Ultrascale+ (XCKU15P) FPGA on a card.
Why won't you let me have my ideal laptop -- with an iCE40 FPGA?
My value system is that of simplicity, verifyability, transparency, open hardware -- and open software of all layers of the computing stack...
I don't care about MHz, 50 is plenty -- if that's what it takes to get all of the above. If there's another FPGA which is faster yet still compatible with all open source tools, feel free to name it (and give an URL to the open source toolchain for it).
At present, I am not aware of one...
>For what it's worth, OpenCores is basically a junkyard.
For what it's worth, most commercial CPUs are basically transparency trainwrecks.
Also, I'd leave it to each individual reader to make their own determination if OpenCores has value to them or not.
Some will not understand its whyness and thus not value it. But I'd rather let it be their own individual choice.
Also, you should know that many individuals put a lot of their own unpaid hard work into their projects on OpenCores.
A lot of blood, sweat and tears.
A lot of hard work, unpaid hard work -- to donate the results of that hard work to the community.
Painting OpenCores with a broad brush and broadly labeling OpenCores as "Most of what you see there is abandoned and barely functional" greatly disparages the work, the hard work of all of the people who put their blood sweat and tears into their projects there.
Many OpenCores projects are complete, do work, and are models, absolutely stellar models of transparency and individual and community effort.
I know that I for one value OpenCores and the work of everyone involved greatly, greatly.
Have you personally tested each and every project on OpenCores?
If you haven't -- then how do you presume to know the value?
Have you personally downloaded and tested even one complete project from OpenCores?
?
OpenCores has information which tells you if a project is complete or not, if it is working or not, and which phase of development it is in... one wouldn't select an unfinished project unless one were interested in learning from it and/or helping to complete it...
Point is -- some of us (and this would include EE students and others potentially interested in CPU/Processor design, other present/future chip designers and educators and the like) -- would see value, great value in OpenCores...
Again, you are free to have your ideal laptop, with the fastest, latest most cutting-edge Intel or AMD chip, or whatever you want, with whatever components you want...
I would politely ask for the reciprocal grant of freedom in selecting my ideal laptop, with my ideal components, inside of the value system I have explained, above.
Here is where you get it:
1. The Laptop: https://shop.mntre.com/products/mnt-reform
2. The FPGA OpenCores-compatible Processor for the Laptop: https://shop.mntre.com/products/mnt-rkx7-fpga-module
3. Remember to click that you want the display adapter in #2.
Note, its not an ICE40. However, its pretty close to what you want.
It'd certainly be possible to build a computing device around one (or, more likely, several) iCE40 FPGAs, but it would have very little in common with the Framework.
It's just a question of getting the voltage and the frequency and protocol correct -- so that electronic components will speak to other components along a signal path.
If one component cannot talk to another component -- because say, a given frequency is too high, or a given component is too slow -- then a proxy component which acts as an intermediator between high frequency and low(er) frequency sides may be used as a mediator; as an intercessor...
For example, let us suppose that I have a dumb terminal, the "dumbest" and slowest of all computing devices.
No memory to speak of -- except perhaps for a small amount of screen memory...
Now, if I want that dumb terminal to interface with USB, DRAM, LCD, Ethernet PHY, SATA, or PCIe -- I can use a Raspberry Pi to accomplish that (it can act as an intermediary, it can act as a proxy.)
Similarly, I can also use other electronic devices in lieu of the Raspberry Pi as the interface -- including but not limited to other computers, ASIC's, FPGA's, custom chips for handling signals, etc., etc.
That something wired together in such a manner is, or would be "unusable as a laptop" -- is a very subjective idea (unusable to whom exactly?) -- because properly engineered, it would indeed work, and would indeed be quite fast and useable...
By your argument, that component parts would be too slow, I would submit to you that:
Modern computer engineering is all about the speeds of various computer subsystems, and getting faster subsystems to work with slower ones.
These examples include (but are not limited to) the speed a computer's CPU vs. the speed of its memory (the cache hierarchy), Northbridge Vs. Southbridge, A Computer's Bus Vs. Slow Perhipherals, A CPU's speed vs. say, the speed of an older spinning mechanical hard drive, etc., etc.
Have a look at this table:
https://en.wikipedia.org/wiki/List_of_interface_bit_rates
The Internet (and the hardware that makes it up) itself is comprised of most, if not all of those devices, all of which have different rates of speed.
And yet, it all "magically" communicates...
Oftentimes a slower devices will need electronic proxies to communicate effectively with higher speed devices.
This principle is well understood in Electrical Engineering and amongst Electrical Engineers.
Not only that, but this very principle is enshrined in all computers -- even in the fastest laptop produced today...
The fastest laptop produced today has many subcomponents, many electronic subsystems, along which signals are travelling at different rates of speed -- some fast, some slow, some very slow -- and yet the whole system communicates and works, and is quite, yes, quite usuable...
That principle is enshrined in all computer engineering, and computers today.
Your uber-fast laptop, whichever make and model it is -- is proof, proof positive of it...
So, I appreciate your advice (I am sure it was given in Good Faith) -- but I feel that your advice only addresses the tip of the iceberg of the true scope of possibilites, the things that are possible when a more nuanced understanding is to be had...
The advice given limits the scope of what seemingly should be possible ("don't try it, it'll never work, or never work well") -- whereas the principle which I have submitted should expand the set of those possibilities ("it will work and will work well if the proper rules for engineering it are followed, with the proper understandings, with the proper first principles...")...
Your FPGA solution will be around 50 MIPS. That's around a 1992 486dx2.
If you're happy to run something akin to Windows 3.11 then that will be fine.
Another good one is if you are into homebrew computers or are a computer or electrical engineer. Perhaps you would like to make your own processor, or collaborate with your friends on making a processor.
As a half-joke, half-serious question: how do you know that Lattice isn't backdooring all their FPGAs, sending home everything you run through their bird-drone network?
I do not want exactly what you are suggesting. What I am into is homebrew computing and trusted compute. I can't have either of these things by just getting a zynq board. The game issue, as you noted, is quite trivial to solve.
If Intel starts selling the "Horse Creek" SoC on the open market then that will be more like RK3588 class -- the best you can get on an Arm SBC right now.
The next couple of years are going to see probably 50% faster RISC-V SoCs every six months on average.