an instruction set extension
An instruction set extension is a bundle of extra instructions added to a base ISA to give it new powers, like buying an expansion pack for a board game: the core rules stay the same, but new pieces let you do things the base game could not. The base ISA stays small and universal; extensions layer on capabilities — floating-point math, vector operations on many numbers at once, cryptography helpers, compressed shorter instructions — for the chips and programs that need them.
RISC-V is built around this idea by design. There is a tiny mandatory base (just integer instructions), and then standardized optional extensions, each with a letter: 'M' for integer multiply and divide, 'F' and 'D' for single- and double-precision floating point, 'A' for atomic operations, 'C' for compressed 16-bit instructions, 'V' for vectors. A chip advertises which extensions it implements, and software can be compiled to require only what is present. x86 grew the same way over decades, accreting families like SSE and AVX for vector math — a clear sign that even a 'complex' ISA keeps extending.
Extensions are how an ISA evolves without breaking the world, but they come with a real catch worth stating honestly: a program that uses an extension only runs on chips that implement it. Code built for AVX-512 will fault on a CPU that lacks it. This is the tension between adding power and keeping binary compatibility, and it is why software often checks at run time which extensions are available and picks a code path accordingly, or ships multiple versions. Reserving encoding space for future extensions is one of the hardest, longest-horizon jobs in ISA design.
A base RISC-V chip cannot multiply two integers in one instruction; that lives in the optional 'M' extension. A chip that implements 'M' can run 'mul x5, x6, x7' directly; one without 'M' must compute the product the slow way with shifts and adds.
Optional extensions add instructions; chips without them must emulate the work in software.
Using an extension trades portability for power: the binary now requires that extension to be present. This is the direct counterweight to binary compatibility, and why portable software often probes for features at run time.