SiFive HiFive Unmatched Rev. B: A More Refined RISC-V Development Kit
The RISC-V instruction set architecture has the potential to completely reshape the technology landscape, but it's going to take some high-performance silicon vehicles to make that happen. Licensed ISAs like Arm64 or x86-64 dominate everything from smartphones to the datacenter today, but SiFive wants to change that with its own IP based on the open RISC-V standard. The company just celebrated its 9th birthday, and we're taking a second look at its Essential processor family and the HiFive Unmatched Rev. B development board based on its Freedom U740 SoC.
If that looks familiar, it's because we looked at the first revision of SiFive's HiFive Unmatched kit about three years ago, but a lot about that board has changed since then. Probably the biggest change is in the price: rather than the near $700 price tag the HiFive Unmatched had when we first looked at it, the price has come down to $299 today. But before we get ahead of ourselves, let's take a moment and meet the Rev. B HiFive Unmatched from a specs and features standpoint.
Like before, the HiFive Unmatched is still based on the FU740-C000 SoC, which is a quad-core RV64GC design that supports the 64-bit general extensions required to run GNU Linux and offers additional compression extensions. RISC-V is a bit of an alphabet soup that requires its own decoder ring at the moment. Beyond G and C, there are other letters assigned to other types of extensions and instruction sets, including H for hypervisor (virtualization), D for double-precisions (64-bit) floating point, Q for quad-precision, and much more. That makes it easy to see if a given design supports the desired instructions, but it's kind of obtuse without a guide.
The FU740-C000 is based on the U74 CPU IP, which comes from SiFive's Essential (low-power) product line, running at 1.2 GHz. That may not sound all that impressive, but it's enough horsepower to test out RISC-V code on the hardware in a real Linux environment, which is the HiFive Unmatched's bread and butter. Much RISC-V development happens on x86 machines running a RISC-V emulator via QEMU, but it still needs to run on live hardware at some point.
This CPU has a 3-wide out-of-order execution pipeline. That means it can dispatch three instructions at once, and those instructions can be run out of order if necessary. This can happen when branching logic (if/else and switch statements in most object-oriented languages, including C++ as well as Rust's match statement) requires steps to be skipped. The CPU cores have an eight-stage pipeline, meaning eight "steps" are completed from dispatch to full execution. Again, these may not sound super impressive in light of modern desktop processors, but it's enough to prove out a live application in a real environment.
The HiFive Unmatched Rev. B, like its predecessor, is a standard-sized mini-ITX motherboard. It includes front-panel headers for power, reset, and LED like any ATX-compliant motherboard. The first revision could not power off via software, but that's been resolved this time around. Plug in a power supply to the ATX-standard connector and attach the button, and the system can be turned on like any other PC. And in the event that it stops responding, holding the power button shuts it off -- also just like any other PC.
For I/O, the HiFive Unmatched Rev. B keeps the same M.2 2280 for NVMe storage as well as an M.2 Key E slot for a Wi-Fi and Bluetooth adapter. There's also a PCI Express slot, which physically fits an x16 card, including a graphics card, but only has 8 lanes of connectivity. That's more than enough for the typical use cases for this system, though. We also see a pair of PWM fan headers, though the system doesn't draw a lot of power and probably doesn't need much additional circulation on its own.
Around the back, we can see there are four USB 3.2 Gen 1 Type-A ports, along with an externally accessible micro SD card reader, Gigabit Ethernet, and a micro USB connector. That SD reader is ready and waiting for the included 32 GB micro SD card that came in the retail box. This is pre-imaged with SiFive's own Linux distribution. The kit also includes the standard ATX-style I/O shield, similar to standard PC motherboards.
Building a system around the HiFive Unmatched is pretty straightforward. There's no onboard graphics options here, but its PCI Express slot can accommodate a graphics card. If you want to use the system with a GPU, the supported models are all older AMD GPUs -- anything based on the older HD6000 series through to our Polaris-based RX 500 card will work just fine. That's because SiFive's OS includes a version of the Mesa open-source drivers. Our hardware options were limited by the software, as it turns out, but more on that in a moment.
We had an XFX Radeon RX 590 on hand, which is total overkill for this application. However, smaller and lower-powered options are available on Amazon for around $130. It's optional and only required to get to an XFCE-powered desktop; if you're more used to embedded software development, this board's micro-USB port will come in handy.
While there's no on-board GPU, a discrete one is only a hard requirement if you want to run the system as a standalone machine. Otherwise the included micro-USB port can be connected to a COM port on a Windows, Linux, or Mac host. On Windows, installing PuTTY is the simplest way to connect, though Mac and Linux hosts can use the built-in screen command-line application or install picocom. Note that if you choose to go with Ubuntu (in the next section) Linux and Mac users will want picocom, as Ubuntu's text is a jumbled mess due to character encoding. And of course, ssh is another option, at least once the system is up and running. The command line and the desktop can also be used in tandem, so that the terminal can monitor logs as they're generated while using the system.
The included Linux distribution is certainly usable, but its target focus is as an SDK platform. Developers can build applications for RISC-V processors with this board and this software stack. It's ready to go, and all a developer needs to do is install an IDE and the required support libraries and they're ready to go. It's not a great desktop experience, or even a server experience, however, because there's not much to use beyond the bundled Epiphany browser and some very basic productivity applications.
Anything else has to be built by hand, and that includes manually installing dependencies. OpenWrt Package Manager (opkg) is the default package manager on the preinstalled image, and it's meant for embedded systems. In this case, there are no remote repositories to install additional packages. It's a development platform, so packages are meant to be built and installed by developers.
Truth be told, we shouldn't be expecting to use the HiFive Unmatched as a full-fledged desktop PC. The whole point of an entry-level RISC-V development board is to build an application on a development PC (probably an x86-64 PC running a RISC-V emulator via QEMM), package a binary, and then validate it on the test platform. That's where the SiFive HiFive Unmatched excels.
So, what are we working with, as far as an operating system goes? Typing uname -a into the terminal showed that it's Linux kernel 5.11 and the OS build was dated April 7, 2021. While that sounds like it's out of date -- the kernel is an older build for sure -- that's actually a relatively recent release of the OS, the 2024.03.00-lts version. There were updates available, of course, so we went through that update process as well.
SiFive's SDK was last updated in July, but unfortunately, there aren't any tools built-in for updating. However, an update is just a flash away. We grabbed a spare 32 GB micro SD card and headed over to SiFive's GitHub repo. Click on Releases, and you'll find some early public builds for the company's next-gen Premier P550 board, but scroll down just a bit and you can grab HiFive Unleashed 2024.07.00, which is the latest build for the HiFive Unmatched.
What you'll actually want to grab is the .wic.xz file for either the CLI only or with XFCE. The version on our included micro SD had XFCE installed, so we stuck with that version. Our first attempt to update used our flashing software of choice, balenaEtcher, but for whatever reason that flash failed. Rather, the application reported that it successfully installed, but booting from the card resulted in a series of random garbage characters in the terminal and no boot. Instead, we followed SiFive's instructions and went straight to the command line with the unxz and dd commands.
As it turns out, it helps to follow directions. The system booted right up from our re-flashed SD card and we were in a much newer version of the OS. Just as before, we logged in with the serial terminal connected to our PC (using PuTTY this time on Windows 11) and the monitor attached to our Radeon RX 590 sprung back to life.
Things haven't really changed beyond having newer software, though. This is a development board, not a PC, and as such the desktop environment is a convenience for testing applications that have a GUI, not to make this suddenly a low-power everyman PC.
That said, there are alternative operating systems available for RISC-V. We looked through the options and settled on Ubuntu Server, and we'll discuss that setup process next.