In computer science, an instruction set architecture (ISA) is an abstract model of a computer. It’s also referred to as architecture or computer architecture. Moreover, a central processing unit (CPU), a venue of realization of an ISA, is called an implementation. An ISA specifies the behavior of machine code running on implementations of that ISA in a fashion that does not depend on the microarchitecture providing binary compatibility between implementations.
An ISA can be extended by adding instructions or other capabilities or adding support for larger addresses and data values. An implementation of the extended ISA will still be able to execute machine code for versions of the ISA without those extensions. Machine code using those extensions will only run on the implementations that support those extensions.
In short, an instruction set is the link between a computer’s software and hardware. It’s a set of basic instructions that a processor understands. Furthermore, it’s about functional definition of operations, modes, and storage locations supported by hardware and a precise description of how to call and access them. In other words, the ISA defines the types of instructions to be supported by the processor.
Here, it’s worth noting that the microarchitectural level exists just below the ISA level, so it’s tied with the implementation of the basic operations to be supported by the computer as defined by the ISA. We can have two different processors based on the same ISA, but having different microarchitectures with different performance and efficiencies. This enables multiple implementations of an ISA that can have different performance, physical size, and monetary cost—among other things—but they are able to run the same machine code.
Thus, a lower-performance, lower-cost machine can be replaced with a higher-cost, higher-performance machine without having to replace software. Also, it enables the progression of the microarchitectures of the implementations of that ISA, so that a newer, higher-performance implementation of an ISA can use software that runs on previous generations of implementations.
Making different processors compatible with the same set of basic instructions—ISA—allows the same program to run easily on many different microarchitecture processors. We first define an ISA and then design different microarchitectures complying with this ISA for implementing the functionalities.
The ability to extend a processor is not a new concept. Processor extensibility is the combination of this processor with an added external hardware module, like FPGA or DSP cores, depending on the microarchitecture of this processor.
Such extension allows the acceleration of a particular function as an instruction, or set of instructions, achieving much better performance. More than accelerating functions, the end user via this extended hardware module is able to add custom instruction(s) like new algorithms and enhance previous algorithms.
Imen Baili is product application engineer at Menta.
>> This article was originally published on our sister site, EDN.
- Taking the mystery out of custom extensions in RISC-V SoC design
- Extending the RISC-V architecture with domain specific accelerators
- Building security into an AI SoC using CPU features with extensions
- How to make processors trustworthy
- Open source GPU builds on RISC-V
- Can open source hardware match Linux’s success
For more Embedded, subscribe to Embedded’s weekly email newsletter.