I've always thought of FPGA's as being for custom parallel computationally intensive tasks that run side-by-side with a normal CPU. So just curious if ZipCPU is just for fun, or something more?
(Or is there even something security-related about being able to verify not just the code, but the CPU it runs on, in this case?)
https://news.ycombinator.com/item?id=18124411
Super small CPU cores are fantastic for complex FSM replacement, especially on an FPGA which has unused block RAMs (so using them is essentially free.) I’ve seen cases with relatively complex pure HW FSM being replace by a small CPU and 1KB of RAM where the logic used by the CPU ends up smaller than the FSM.
But now the CPU is programmable, so you can iterate much quicker in case of bugs, without the need to reaunthesize.
A good example are SDRAM controllers: almost all of them have a small CPU inside the controller that is used for calibration training.
https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/
Slow, $2000-a-unit hardware might be worth it if it makes your OS close to unhackable. I'd just have to make sure apps are lean and efficient. I already favor those, though. :)
Also, there's been work in "instruction set randomization" that obfuscates the CPU itself to reduce odds malware will work. Mostly widely-deployed, non-custom attacks but might stop some custom attackers, too.
https://www.ics.forth.gr/_publications/papadog-asist-ccs.pdf
Older work was useful for making RAM and other things either untrusted or less trusted with crypto setups. Joshua Edmison did one of those with a nice survey of others:
https://vtechworks.lib.vt.edu/bitstream/handle/10919/29244/e...
Finally, Meltdown/Spectre created lots of designs recently to plug timing channels. Too many to even track. Here's the first one I found from my submissions:
Under newer standards and techniques, examples include INTEGRITY-178B, Perseus Security Framework (eg Turaya Desktop), seL4, Muen hypervisor, and ProvenCore. Two of those are open source with one having pieces that were released. On hardware side, the groups developing it often openly describe the stuff where anyone with money can implement it. Some openly release it like CHERI CPU w/ FreeBSD. Some commercial products making every instruction safe like CoreGuard.
So, it's not a question of whether people will develop and sell this stuff. They've been developing this stuff since computer security was invented back in the 1970's. It was sometimes the inventors of INFOSEC developing and evangelizing it. Businesses didn't buy the stuff for a variety of reasons that had nothing to do with its security. Sometimes, esp with companies like Apple or Google, they could clearly afford the hardware or software, it was usable for some to all of their use case, and they just didn't build or buy it for arbitrary reasons of management. Most stuff they do in-house is worse than published, non-patented designs which is just more ridiculous.
DARPA, NSF, and other US government agencies continue to fund the majority of high-security/reliability tech that gets produced commercially and/or for FOSS. These are different groups than the SIGINT people (i.e. BULLRUN) that want to hack everything. Also, they might be putting one backdoor in the closed ones for themselves while otherwise leaving it ultra-secure against everyone else. That's what I've always figured. Lots of it is OSS/FOSS, though, so that's easier to look at.
Does it really justify yet another RISC instruction-set?
Impressed that there's apparently already a GCC backend though.
That said, I am considering a RISC-V compatible design. I just haven't committed to doing so.
None of this is strange.
RISC-V is the major Free and Open CPU. RISC-V can run on FPGA. It's natural to want a comparison of this project against RISC-V, especially considering the write-up mentions the less successful OpenRISC project.
However I repeat what I said above: hobbyists are free to design their own instruction sets, and good on them!
[0] https://github.com/cliffordwolf/picorv32
[1] https://rwmj.wordpress.com/2018/03/17/playing-with-picorv32-... https://rwmj.wordpress.com/2018/03/18/playing-with-picorv32-...
That said: there are a bunch of SOC construction tools for it, so that's definitely a redeeming factor.
> ARM paid millions to Hitachi to use SuperH patents in Thumb instruction set
In practice, Verilog simulators are used instead, they're slow as a dead horse on smack, but it's the only way to have full (logic) system integration of such big designs.
https://deepspec.org/entry/Paper/Modular.20Deductive.20Verif...
Smaller-scale embedded systems or bespoke designs can get away with full FPGA flows in order to do low-scale deployment/development (e.g. SiFive's CPU cores all run this way, and you can run them) -- and pretty much all hobbyist CPUs do so. But to say all modern CPUs use FPGAs in their development cycle is overstating it a bit. There's simply no devices that exist the kind of logic density needed to realistically model many large scale, high-volume designs you see today, not to mention the unbelievable synthesis times you'd have to endure.