HN Debrief

RISC-V: They Should Have Known Better

  • Hardware
  • Open Source
  • Developer Tools
  • Infrastructure

The post is a detailed anti-hype essay on RISC-V. It argues that the ISA squandered a chance to learn from decades of CPU design. The complaints are concrete. Too much of the architecture is optional, some extension combinations create ugly or overlapping encodings, runtime feature discovery is weak, and several instruction encoding choices make code generation, interrupt handling, or decoder design worse than they needed to be. The author’s bottom line is not that RISC-V is doomed. It is that it will win in low-end and custom silicon because the price is right, not because the ISA is especially well designed.

Treat RISC-V as a business and ecosystem choice first, not a clean technical win. If you are building products, target concrete profiles like RVA23 or a known SoC baseline and budget for extension and tooling friction instead of assuming generic "RISC-V compatibility" means much.

Discussion mood

Mostly critical of RISC-V's design quality but resigned and pragmatic rather than hostile. People accepted many of the article's technical complaints, then concluded that legal openness, cost, and tooling matter more than elegance, especially in embedded and custom silicon.

Key insights

  1. 01

    The legal problem mattered more than the ISA

    The attraction was escaping licensing and ownership risk, not inventing a clearly superior machine language. Several comments framed RISC-V as a legally safer reboot of old MIPS-like ideas whose real value is that you can implement it, ship it, and upstream toolchains without negotiating with Arm or betting on a proprietary architecture. Even then, the safety is mostly at the ISA level. High-performance implementations still run into fresh patents around microarchitecture and vendor extensions.

    If you are evaluating RISC-V, model legal and negotiating leverage as part of the product value. Do not assume "open ISA" removes patent risk from high-performance cores or custom extensions.

      Attribution:
    • spicyjpeg #1
    • wren6991 #1
    • pavlov #1
    • u1hcw9nx #1
  2. 02

    Profiles turn chaos into shippable baselines

    The messy extension story becomes manageable once an operating system or market segment declares a minimum profile and everyone targets that instead of raw RISC-V. Commenters pointed to RVA23 as the emerging baseline for Linux-class application processors, much like Android Vulkan Profiles narrowed a sprawling API into something developers can rely on. That does not fix the spec's fragmentation. It moves the compatibility problem to platform governance, which is where software teams can actually cope with it.

    For any nontrivial software stack, define a profile floor early and enforce it in procurement. If you leave the target as generic RISC-V, you are volunteering your compiler, kernel, and QA teams to absorb the standard's ambiguity.

      Attribution:
    • zephen #1 #2
    • camel-cdr #1 #2
  3. 03

    Interrupt latency pain is often implementation pain

    One concrete complaint from someone using MicroBlaze-V was terrible interrupt overhead, including a trap handler with more than 128 memory operations when floating point was enabled. The useful addition was that this was described as a software and platform choice, not an unavoidable law of RISC-V. Saving floating-point state only when dirty, or using Zfinx so floating point uses integer registers, can cut the worst of the context-save penalty. That does not make RISC-V equal to Arm's NVIC-centric microcontroller model. It does show that some horror stories come from bad BSP choices layered on top of the ISA.

    When comparing RISC-V against Arm-M for real-time work, inspect the vendor trap handler and context-save policy before blaming the ISA alone. Middleware quality can dominate the latency you actually ship.

      Attribution:
    • wren6991 #1 #2
    • Neywiny #1
    • xiphias2 #1
  4. 04

    Known-target assumptions break for shared code

    The strongest rebuttal to the "you always know your core" defense came from people building reusable software, kernels, and long-lived embedded codebases. They pointed out that products migrate across SoCs, vendors swap cores, binary blobs get relinked into "similar" systems, and some projects really do try to support broad hardware sets. In those settings, weak feature discovery and overlapping encodings are not theoretical ugliness. They create avoidable compatibility traps that show up years later during maintenance or porting.

    If your code is meant to outlive one board spin or one vendor relationship, treat RISC-V feature discovery and profile control as architecture work, not build-system trivia. The pain shows up during the second or third port, not the first.

      Attribution:
    • aappleby #1
    • AlotOfReading #1
    • dmitrygr #1
  5. 05

    RISC-V keeps backfilling missing fused patterns

    A useful technical wrinkle was that some early arguments for leaning on microarchitectural fusion have already been undercut by later ISA extensions. Common patterns such as shift-plus-add or sign and zero extension got promoted into standardized instructions like Zba and Zbb. That suggests the original base ISA left obvious gaps and the ecosystem is now patching them in public. It also means implementers and compiler writers have to track a moving target where "fuse it in hardware" quietly becomes "there is an extension for that now."

    Watch extension churn as a signal of where the base ISA was underspecified for real workloads. If you are choosing a core or compiler target today, check whether the useful quality-of-life instructions you assume are actually in your mandated profile.

      Attribution:
    • wren6991 #1 #2
    • brucehoult #1
    • jacksons5f #1
  6. 06

    AI may weaken RISC-V's tooling moat

    Several comments argued that the old case for RISC-V was not that the ISA was great, but that it already had the painful support stack around it. GCC, LLVM, binutils, debuggers, linkers, and C libraries used to make a custom ISA prohibitively expensive. Some commenters now claim AI makes backend ports and long-lived forks dramatically cheaper, while others said the bigger barrier is political and upstream process, not code generation itself. Either way, the moat looks less permanent than it did a few years ago.

    Do not assume RISC-V's ecosystem lead is unassailable if your strategy depends on custom accelerators or domain-specific cores. Reevaluate whether a bespoke ISA is still off the table now that support software is cheaper to generate and maintain.

      Attribution:
    • adrian_b #1
    • trollbridge #1
    • jcranmer #1
    • orbifold #1

Against the grain

  1. 01

    Most of the article's problems barely matter in products

    This view held that the essay inflated edge cases into architectural indictments. If you ship firmware, you already know the exact core. If you ship applications, you target the OS baseline. Weird encodings, missing addressing modes, and user-mode feature detection gaps rarely decide whether code ships or meets performance targets. From that perspective, the article reads less like practical engineering guidance and more like an aesthetic vendetta.

    If your team controls the whole hardware and software stack, avoid overfitting your architecture choice to portability arguments that do not apply to your deployment model. Measure the bottlenecks you actually have before treating ISA cleanliness as decisive.

      Attribution:
    • aappleby #1
    • Lord-Jobo #1
    • therealcamino #1
  2. 02

    Compressed decoding is not the killer flaw

    A number of commenters rejected the idea that RISC-V's mixed 16-bit and 32-bit encoding dooms high-performance cores. They argued that length decode for RVC is much simpler than x86, can be handled with carry-lookahead-style logic, and in practice adds less than a full pipeline stage. They also noted that Arm buys code density with instructions that crack into multiple micro-operations, so the comparison is not fixed-width purity versus RISC-V mess. It is two different ways of paying front-end complexity for density.

    For wide out-of-order designs, ask front-end architects for measured decode costs rather than assuming compressed instructions are inherently disqualifying. The practical trade is more nuanced than "variable length bad, fixed length good."},{

      Attribution:
    • camel-cdr #1 #2 #3
    • monocasa #1

In plain english

AArch64
The 64-bit execution mode of the ARM architecture used by modern ARM processors.
ASIC
Application-specific integrated circuit, a chip designed for a narrow set of tasks rather than general-purpose computing.
binutils
The GNU Binary Utilities, including tools such as the assembler, linker, and object file utilities.
BSP
Board Support Package, the low-level software and startup code a vendor provides for a particular chip or board.
GCC
GNU Compiler Collection, a major open-source compiler suite for C, C++, and other languages.
ISA
Instruction Set Architecture, the low-level interface that defines the machine instructions a CPU understands.
LLVM
A widely used compiler infrastructure that underpins languages and tools such as Clang and parts of Rust.
MicroBlaze-V
Xilinx's RISC-V-based soft processor for FPGAs.
MIPS
A classic RISC processor architecture whose design strongly influenced later instruction sets, including parts of RISC-V.
NVIC
Nested Vectored Interrupt Controller, ARM’s interrupt controller used in Cortex-M microcontrollers.
RISC-V
An open instruction set architecture for processors that anyone can implement without paying licensing fees.
RVA23
A named RISC-V application-processor profile that defines a baseline set of features for software compatibility.
RVC
RISC-V Compressed, a 16-bit instruction encoding extension intended to reduce code size.
SoC
System on a Chip, a design that combines CPU, memory interfaces, and other major components into a single chip.
Vulkan
A low-level graphics and compute API used for high-performance rendering.
Zba
A RISC-V bit-manipulation extension that adds address-generation style instructions such as shift-and-add forms.
Zbb
A RISC-V bit-manipulation extension that adds common bit operations such as sign and zero extension helpers.
Zfinx
A RISC-V extension that performs floating-point operations using the integer register file instead of separate floating-point registers.

Reference links

RISC-V references and profiles

Products and implementations

Tooling and system details

Historical and comparative references