Having done the SysIII 64-bit port to a recent Risc-V chip, I realised that whilst it is
an interesting exercise bij itself -- and maybe even useful to students and educators
around the world -- it is not ideal as a research tool for analysing Unix from the early
80’s. The address size difference adds some superfluous porting, and the 100x speed
difference can hide critical algorithm constraints. Also the complex IO devices are out of
character.
For a Risc-V 32 bit target I’ve settled on an FPGA implementation from the University of
Tokyo. I’ve somewhat modified the system to work with the open source Yosys/NextPNR tool
chain. It now implements a Linux-capable SoC with a full MMU, a 4-way cache and SD card
driver in less than 4,000 lines of plain Verilog (compiling to about 14K LUTs). In a way,
the code has a 6th edition feel to it: it covers a real and usable system and the code can
be understood in a couple of days -- or a semester for a student who is new to the
concepts involved.
https://gitlab.com/r1809/rvsoc/-/tree/main/doc
So far I have Linux and XV6 (
https://gitlab.com/r1809/xv6-rv32) running, but have not
started on SysIII yet.
Usefully for my use case this system is not very fast, completing an instruction in on
average 10 clocks. Still, when running at 40MHz it is about 2 or 3 times as fast as a
VAX11/780, which is similar to the systems of the mid-80’s. Even at this speed, a single
user console Linux is surprisingly usable. By the way, funny to realise that ‘Unix/Linux
capable’ has been a marketing slogan for system capability for 40 years now.
There is a short video clip with a demonstration (but running at 100MHz) here:
https://youtu.be/Kt_iXVAjXcQ
Due to its simple design, the main CPU only uses some 30% of the cache memory bandwidth
and it should not be all that hard to add a second CPU to the system (the CPU already
supports the Risc-V atomic operations), and this could be a nice target for studying the
early Unix multi-processor designs (e.g. VAX/BSD & 3B2/SVR3).
I find it an intriguing thought that the chip technology of the early 80’s (let’s say the
technology used for the Bellmac-32 or M68K) would probably have sufficed to build a CPU
similar to the one used in this FPGA design.
As the topic of this post is on a tangent from the focus of this list, I would recommend
that any follow-ups not related to the history of Unix are sent off list.