All Topics  
Instruction set

 

   Email Print
   Bookmark   Link






 

Instruction set



 
 
An instruction set is a list of all the instructions
Instruction (computer science)

In computer science, an instruction is a single operation of a central processing unit defined by an instruction set architecture. In a broader sense, an "instruction" may be any representation of an element of an executable program, such as a bytecode....
, and all their variations, that a processor (or in the case of a virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
, an interpreter) can execute.

Instructions include:

An instruction set, or instruction set architecture (ISA), is the part of the computer architecture
Computer architecture

Computer architecture in computer engineering is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements and design implementations for the various parts of a computer, focusing largely on the way by which the central processing unit performs internally an...
 related to programming, including the native data type
Data type

A data type in programming languages is an attribute of a data which tells the computer something about the kind of data it is. This involves setting constraints on the datum, such as what values it can take and what operations may be performed upon it....
s, instructions
Instruction (computer science)

In computer science, an instruction is a single operation of a central processing unit defined by an instruction set architecture. In a broader sense, an "instruction" may be any representation of an element of an executable program, such as a bytecode....
, register
Processor register

In computer architecture, a processor register is a small amount of Computer storage available on the CPU whose contents can be accessed more quickly than storage available elsewhere....
s, addressing mode
Addressing mode

Addressing modes are an aspect of the instruction set architecture in most central processing unit designs. The various addressing modes that are defined in a given instruction set architecture define how Machine code Instruction in that architecture identify the operand of each instruction....
s, memory architecture
Memory model

Memory models in the C programming language are a way to specify assumptions that the compiler should make when generating code for segmented memory or Page platforms....
, interrupt
Interrupt

In computing, an interrupt is an asynchronous communication signal from hardware indicating the need for attention or a synchronous event in software indicating the need for a change in execution....
 and exception handling
Exception handling

Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions - special conditions that change the normal flow of execution....
, and external I/O
Input/output

In computing, input/output, or I/O, refers to the communication between an information processing system , and the outside world ? possibly a human, or another information processing system....
. An ISA includes a specification of the set of opcode
Opcode

In computer technology, an opcode is the portion of a machine language instruction that specifies the operation to be performed. Their specification and format are laid out in the instruction set architecture of the processor in question ....
s (machine language), the native commands implemented by a particular CPU design
CPU design

CPU design is the design engineering task of creating a central processing unit , a component of computer hardware. It is a subfield of electronics engineering and computer engineering....
.

Instruction set architecture is distinguished from the microarchitecture
Microarchitecture

In computer engineering, microarchitecture is a description of the electrical circuitry of a computer, central processing unit, or digital signal processor that is sufficient for completely describing the operation of the hardware....
, which is the set of processor design techniques used to implement the instruction set.






Discussion
Ask a question about 'Instruction set'
Start a new discussion about 'Instruction set'
Answer questions from other users
Full Discussion Forum



Encyclopedia


An instruction set is a list of all the instructions
Instruction (computer science)

In computer science, an instruction is a single operation of a central processing unit defined by an instruction set architecture. In a broader sense, an "instruction" may be any representation of an element of an executable program, such as a bytecode....
, and all their variations, that a processor (or in the case of a virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
, an interpreter) can execute.

Instructions include:
  • Arithmetic such as add and subtract
  • Logic instructions such as and, or, and not
  • Data instructions such as move, input, output, load, and store
  • Control flow
    Control flow

    In computer science control flow refers to the order in which the individual statement , Instruction or function calls of an imperative programming or functional programming computer program are execution or evaluated....
     instructions such as goto, if ... goto, call, and return.


An instruction set, or instruction set architecture (ISA), is the part of the computer architecture
Computer architecture

Computer architecture in computer engineering is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements and design implementations for the various parts of a computer, focusing largely on the way by which the central processing unit performs internally an...
 related to programming, including the native data type
Data type

A data type in programming languages is an attribute of a data which tells the computer something about the kind of data it is. This involves setting constraints on the datum, such as what values it can take and what operations may be performed upon it....
s, instructions
Instruction (computer science)

In computer science, an instruction is a single operation of a central processing unit defined by an instruction set architecture. In a broader sense, an "instruction" may be any representation of an element of an executable program, such as a bytecode....
, register
Processor register

In computer architecture, a processor register is a small amount of Computer storage available on the CPU whose contents can be accessed more quickly than storage available elsewhere....
s, addressing mode
Addressing mode

Addressing modes are an aspect of the instruction set architecture in most central processing unit designs. The various addressing modes that are defined in a given instruction set architecture define how Machine code Instruction in that architecture identify the operand of each instruction....
s, memory architecture
Memory model

Memory models in the C programming language are a way to specify assumptions that the compiler should make when generating code for segmented memory or Page platforms....
, interrupt
Interrupt

In computing, an interrupt is an asynchronous communication signal from hardware indicating the need for attention or a synchronous event in software indicating the need for a change in execution....
 and exception handling
Exception handling

Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions - special conditions that change the normal flow of execution....
, and external I/O
Input/output

In computing, input/output, or I/O, refers to the communication between an information processing system , and the outside world ? possibly a human, or another information processing system....
. An ISA includes a specification of the set of opcode
Opcode

In computer technology, an opcode is the portion of a machine language instruction that specifies the operation to be performed. Their specification and format are laid out in the instruction set architecture of the processor in question ....
s (machine language), the native commands implemented by a particular CPU design
CPU design

CPU design is the design engineering task of creating a central processing unit , a component of computer hardware. It is a subfield of electronics engineering and computer engineering....
.

Instruction set architecture is distinguished from the microarchitecture
Microarchitecture

In computer engineering, microarchitecture is a description of the electrical circuitry of a computer, central processing unit, or digital signal processor that is sufficient for completely describing the operation of the hardware....
, which is the set of processor design techniques used to implement the instruction set. Computers with different microarchitecture
Microarchitecture

In computer engineering, microarchitecture is a description of the electrical circuitry of a computer, central processing unit, or digital signal processor that is sufficient for completely describing the operation of the hardware....
s can share a common instruction set. For example, the Intel Pentium
Pentium

Introduced on March 22, 1993, the original Pentium was the first superscalar x86 architecture microprocessor. Its fifth-generation x86 microarchitecture was a direct extension of the 80486 architecture with dual integer pipeline s, a faster FPU unit, wider data bus, and features for further reduced address calculation latency....
 and the AMD Athlon
Athlon

Athlon is the brand name applied to a series of different x86 Central processing unit designed and manufactured by Advanced Micro Devices. The original Athlon was the first seventh-generation x86 processor and, in a first, retained the initial performance lead it had over Intel Corporation's competing processors for a significant period of t...
 implement nearly identical versions of the x86 instruction set, but have radically different internal designs.

This concept can be extended to unique ISAs like TIMI (Technology-Independent Machine Interface) present in the IBM System/38
System/38

The System/38 was a midrange computer Server Platform manufactured and sold by the IBM Corporation. The system offered a number of innovative features, and was the brainchild of IBM engineer Frank Soltis....
 and IBM AS/400. TIMI is an ISA that is implemented as low-level software and functionally resembles what is now referred to as a virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
. It was designed to increase the longevity of the platform and applications written for it, allowing the entire platform to be moved to very different hardware without having to modify any software except that which comprises TIMI itself. This allowed IBM to move the AS/400 platform from an older CISC
Complex instruction set computer

A complex instruction set computer is a computer instruction set architecture in which each instruction can execute several low-level operations, such as a load from Memory , an arithmetic operator, and a memory , all in a single instruction....
 architecture to the newer POWER
IBM POWER

POWER is a RISC instruction set architecture designed by International Business Machines. The name is a backronym for Performance Optimization With Enhanced RISC....
 architecture without having to recompile any parts of the OS or software associated with it. Nowadays there are several open source Operating Systems which could be easily ported on any existing general purpose CPU, because the compilation is the essential part of their design (e.g. new software installation).

Machine language

Machine language is built up from discrete statements or instructions. on the processing architecture, a given instruction may specify:
  • Particular registers
    Processor register

    In computer architecture, a processor register is a small amount of Computer storage available on the CPU whose contents can be accessed more quickly than storage available elsewhere....
     for arithmetic, addressing, or control functions
  • Particular memory locations or offsets
  • Particular addressing mode
    Addressing mode

    Addressing modes are an aspect of the instruction set architecture in most central processing unit designs. The various addressing modes that are defined in a given instruction set architecture define how Machine code Instruction in that architecture identify the operand of each instruction....
    s used to interpret the operands


More complex operations are built up by combining these simple instructions, which (in a von Neumann machine
Von Neumann machine

Von Neumann machine may refer to:.* Von Neumann architecture, a conceptual model of a computer architecture* Self-replicating machines, a class of machines that can replicate themselves...
) are executed sequentially, or as otherwise directed by control flow
Control flow

In computer science control flow refers to the order in which the individual statement , Instruction or function calls of an imperative programming or functional programming computer program are execution or evaluated....
 instructions.

Some operations available in most instruction sets include:
  • moving
    • set a register
      Processor register

      In computer architecture, a processor register is a small amount of Computer storage available on the CPU whose contents can be accessed more quickly than storage available elsewhere....
       (a temporary "scratchpad" location in the CPU itself) to a fixed constant value
    • move data from a memory location to a register, or vice versa. This is done to obtain the data to perform a computation on it later, or to store the result of a computation.
    • read and write data from hardware devices
  • computing
    • add, subtract, multiply, or divide the values of two registers, placing the result in a register
    • perform bitwise operation
      Bitwise operation

      In computer programming, a bitwise operation operates on one or two bit patterns or Binary numeral system at the level of their individual bits....
      s, taking the conjunction/disjunction (and/or) of corresponding bits in a pair of registers, or the negation (not) of each bit in a register
    • compare two values in registers (for example, to see if one is less, or if they are equal)
  • affecting program flow
    • jump to another location in the program and execute instructions there
    • jump to another location if a certain condition holds
    • jump to another location, but save the location of the next instruction as a point to return to (a call
      Subroutine

      In computer science, a subroutine or subprogram is a portion of computer code within a larger computer program, which performs a specific task and is relatively independent of the remaining code....
      )


Some computers include "complex" instructions in their instruction set. A single "complex" instruction does something that may take many instructions on other computers. Such instructions are typified by instructions that take multiple steps, control multiple functional units, or otherwise appear on a larger scale than the bulk of simple instructions implemented by the given processor. Some examples of "complex" instructions include:
  • saving many registers on the stack at once
  • moving large blocks of memory
  • complex and/or floating-point arithmetic (sine
    Siné

    Maurice Sinet, known as Sin? is a France cartoonist.As a young man he studied drawing and graphic arts, earning his life as a cabaret singer....
    , cosine, square root
    Square root

    In mathematics, a square root of a number x is a number r such that r2 = x, or, in other words, a number r whose square is x....
    , etc.)
  • performing an atomic test-and-set
    Test-and-set

    In computer science, the test-and-set instruction is an instruction used to both test and write to a memory location as part of a single atomic operation....
     instruction
  • instructions that combine ALU with an operand from memory rather than a register


A complex instruction type that has become particularly popular recently is the SIMD
SIMD

In computing, SIMD is a technique employed to achieve data level parallelism....
 or Single-Instruction Stream Multiple-Data Stream operation or vector instruction, an operation that performs the same arithmetic operation on multiple pieces of data at the same time. SIMD have the ability of manipulating large vectors and matrices in minimal time. SIMD instructions allow easy parallelization of algorithms commonly involved in sound, image, and video processing. Various SIMD implementations have been brought to market under trade names such as MMX, 3DNow!
3DNow!

3DNow! is the trade name of a multimedia extension created by AMD for its processors, starting with the K6-2 in 1998. It is an addition of SIMD instructions to the traditional x86 instruction set, designed to improve a central processing unit's ability to perform the vector processing requirements of many graphic-intensive applications....
 and AltiVec
AltiVec

AltiVec is a floating point and integer SIMD instruction set designed and owned by Apple Inc., International Business Machines and Freescale Semiconductor, formerly the Semiconductor Products Sector of Motorola, , and implemented on versions of the PowerPC including Motorola's PowerPC G4, IBM's PowerPC 970 and POWER6 processors, and P.A....
.

The design of instruction sets is a complex issue. There were two stages in history for the microprocessor. One using CISC or complex instruction set computer where many instructions were implemented. In the 1970s places like IBM did research and found that many instructions were used that could be eliminated. The result was the RISC, reduced instruction set computer, architecture which uses a smaller set of instructions. A simpler instruction set may offer the potential for higher speeds, reduced processor size, and reduced power consumption; a more complex one may optimize common operations, improve memory/cache
Cache

In computer science, a cache is a collection of data duplicating original values stored elsewhere or computed earlier, where the original data is expensive to fetch or to compute, compared to the cost of reading the cache....
 efficiency, or simplify programming.

Instruction set implementation


Any given instruction set can be implemented in a variety of ways. All ways of implementing an instruction set give the same programming model, and they all are able to run the same binary executables. The various ways of implementing an instruction set give different tradeoffs between cost, performance, power consumption, size, etc.

When designing microarchitectures, engineers use blocks of "hard-wired" electronic circuitry (often designed separately) such as adders, multiplexers, counters, registers, ALUs etc. Some kind of register transfer language
Register Transfer Language

In computer science, register transfer language is a term used to describe a kind of intermediate representation that is very close to assembly language, such as that which is used in a compiler....
 is then often used to describe the decoding and sequencing of each instruction of an ISA using this physical microarchitecture. There are two basic ways to build a control unit
Control unit

A control unit in general is a central part of whatsoever machinery that controls its operation, provided that a piece of machinery is complex and organized enough to contain any such unit....
 to implement this description (although many designs use middle ways or compromises):
  1. Early computer designs and some of the simpler RISC computers "hard-wired" the complete instruction set decoding and sequencing (just like the rest of the microarchitecture).
  2. Other designs employ microcode
    Microcode

    Microcode is a layer of lowest-level instructions involved in the implementation of machine code instructions in many computers and other processors; it resides in a special high-speed memory and translates machine instructions into sequences of detailed circuit-level operations....
     routines and/or tables to do this—typically as on chip ROMs and/or PLAs (although separate RAMs have been used historically).


There are also some new CPU designs which compile the instruction set to a writable RAM
Ram

Ram, ram, or RAM as a non-acronymic wordAs a non-acronymic word Ram, ram, or RAM may refer to:...
 or FLASH
Flash memory

Flash memory is a non-volatile memory computer storage that can be electrically erased and reprogrammed. It is a technology that is primarily used in memory cards and USB flash drives for general storage and transfer of data between computers and other digital products....
 inside the CPU (such as the Rekursiv
Rekursiv

Rekursiv was a computer processor designed by David M. Harland in the mid-1980s for Linn Smart Computing in Glasgow, Scotland. It was one of the few computer architectures intended to implement object-oriented concepts directly in hardware....
 processor and the Imsys Cjip), or an FPGA (reconfigurable computing
Reconfigurable computing

Reconfigurable computing is a computing paradigm combining some of the flexibility of software with the high performance of hardware by processing with very flexible high speed computing fabrics like FPGAs....
). The Western Digital
Western Digital

Western Digital Corporation is a manufacturer of computer hard disk drives, and has a long history in the electronics industry as an integrated circuit maker and a storage products company....
 MCP-1600
MCP-1600

The MCP-1600 was a multi-chip microprocessor made by Western Digital in the late 1970s through the early 1980s. Used in the Pascal MicroEngine, the original AlphaMicro system, and one variant of the DEC PDP-11#The_LSI-11 microcomputer....
 is an older example, using a dedicated, separate ROM for microcode.

An ISA can also be emulated in software by an interpreter
Interpreter (computing)

In computer science, an interpreter normally means a computer program that execution , i.e. performs, instructions written in a programming language....
. Naturally, due to the interpretation overhead, this is slower than directly running programs on the emulated hardware, unless the hardware running the emulator is an order of magnitude faster. Today, it is common practice for vendors of new ISAs or microarchitectures to make software emulators available to software developers before the hardware implementation is ready.

Often the details of the implementation have a strong influence on the particular instructions selected for the instruction set. For example, many implementations of the instruction pipeline
Instruction pipeline

File:5 Stage Pipeline.svgAn instruction pipeline is a technique used in the design of computers and other digital electronic devices to increase their instruction throughput ....
 only allow a single memory load or memory store per instruction, leading to a load-store architecture (RISC). For another example, some early ways of implementing the instruction pipeline
Instruction pipeline

File:5 Stage Pipeline.svgAn instruction pipeline is a technique used in the design of computers and other digital electronic devices to increase their instruction throughput ....
 led to a delay slot.

The demands of high-speed digital signal processing have pushed in the opposite direction -- forcing instructions to be implemented in a particular way. For example, in order to perform digital filters fast enough, the MAC instruction in a typical digital signal processor
Digital signal processor

A digital signal processor is a specialized microprocessor designed specifically for digital signal processing, generally in real-time computing....
 (DSP) must be implemented using a kind of Harvard architecture
Harvard architecture

The Harvard architecture is a computer architecture with physically separate computer storage and signal pathways for instructions and data. The term originated from the Harvard Mark I relay-based computer, which stored instructions on punched tape and data in electro-mechanical counters ....
 that can fetch an instruction and two data words simultaneously, and it requires a single-cycle multiply-accumulate
Multiply-accumulate

In computing, especially digital signal processing, multiply-accumulate is a common operation that computes the product of two numbers and adds that product to an accumulator ....
 multiplier
Multiplication ALU

In digital circuit, a multiplier or multiplication Arithmetic logic unit is a hardware circuit dedicated to multiplication two binary values....
.

Instruction set design


Some instruction set designers reserve one or more opcodes for some kind of software interrupt. For example, MOS Technology 6502
MOS Technology 6502

The MOS Technology 6502 is an 8-bit microprocessor that was designed by Chuck Peddle and Bill Mensch for MOS Technology in 1975. When it was introduced, it was the least expensive full-featured central processing unit on the market by a considerable margin, costing less than one-sixth the price of competing designs from larger companies such...
 uses 00H, Zilog Z80
Zilog Z80

The Zilog Z80 is an 8-bit microprocessor designed and sold by Zilog from July 1976 onwards. It was widely used both in desktop and embedded computer designs as well as for military purposes....
 uses the eight codes C7,CF,D7,DF,E7,EF,F7,FFH while Motorola 68000
Motorola 68000

The Motorola 68000 is a 16/32-bit Complex instruction set computer microprocessor core designed and marketed by Freescale Semiconductor ....
 use codes in the range A000..AFFFH.

Fast virtual machines are much easier to implement if an instruction set meets the Popek and Goldberg virtualization requirements
Popek and Goldberg virtualization requirements

The Popek and Goldberg virtualization requirements are a set of sufficient conditions for a computer architecture to efficiently support system virtualization....
.

The NOP slide
NOP slide

In computer CPUs, a NOP slide, NOP sled or NOP ramp, is a sequence of NOP instructions meant to "slide" the CPU's instruction execution flow to its final, desired, destination....
 used in Immunity Aware Programming
Immunity Aware Programming

When writing firmware for an embedded system, immunity aware programming is a set of programming techniques used in an attempt to tolerate transient errors in the program counter or other that would otherwise lead to failure....
 is much easier to implement if the "unprogrammed" state of the memory is interpreted as a NOP.

On systems with multiple processors, non-blocking synchronization
Non-blocking synchronization

In computer science, non-blocking synchronization ensures that thread s competing for a shared resource do not have their execution indefinitely postponed by mutual exclusion....
 algorithms are much easier to implement if the instruction set includes support for something like "fetch-and-increment" or "load linked/store conditional (LL/SC)" or "atomic compare and swap".

Code density

In early computers, program memory was expensive, so minimizing the size of a program to make sure it would fit in the limited memory was often central. Thus the combined size of all the instructions needed to perform a particular task, the code density, was an important characteristic of any instruction set. Computers with high code density also often had (and have still) complex instructions for procedure entry, parameterized returns, loops etc (therefore retroactively named Complex Instruction Set Computers, CISC
Complex instruction set computer

A complex instruction set computer is a computer instruction set architecture in which each instruction can execute several low-level operations, such as a load from Memory , an arithmetic operator, and a memory , all in a single instruction....
). However, more typical, or frequent, "CISC" instructions merely combine a basic ALU operation, such as "add", with the access of one or more operands in memory (using addressing modes such as direct, indirect, indexed etc). Certain architectures may allow two or three operands (including the result) directly in memory or may be able to perform functions such as automatic pointer increment etc. Software-implemented instruction sets may have even more complex and powerful instructions.

Reduced instruction-set computers, RISC, were first widely implemented during a period of rapidly-growing memory subsystems and sacrifice code density in order to simplify implementation circuitry and thereby try to increase performance via higher clock frequencies and more registers. RISC instructions typically perform only a single operation, such as an "add" of registers or a "load" from a memory location into a register; they also normally use a fixed instruction width, whereas a typical CISC instruction set has many instructions shorter than this fixed length. Fixed-width instructions are less complicated to handle than variable-width instructions for several reasons (not having to check whether an instruction straddles a cache line or virtual memory page boundary for instance), and are therefore somewhat easier to optimize for speed. However, as RISC computers normally require more and often longer instructions to implement a given task, they inherently make less optimal use of bus bandwidth and cache memories.

Minimal instruction set computer
Minimal instruction set computer

Minimal Instruction Set Computer is a Microprocessor architecture with a very small number of basic operations and corresponding opcodes. Such instruction sets are commonly stack based rather than register based to reduce the size of operand specifiers....
s (MISC) are a form of stack machine
Stack machine

In computer science, a stack machine is a model of computation in which the computer's memory takes the form of one or more stack s. The term also refers to an actual computer implementing or simulating the idealized stack machine....
, where there are few separate instructions (16-64), so that multiple instructions can be fit into a single machine word. These type of cores often take little silicon to implement, so they can be easily realized in an FPGA or in a multi-core form. Code density is similar to RISC; the increased instruction density is offset by requiring more of the primitive instructions to do a task.

There has been research into executable compression
Executable compression

Executable compression is any means of Data compression an executable file and combining the compressed data with the decompression code it needs into a single executable....
 as a mechanism for improving code density. The mathematics of Kolmogorov complexity
Kolmogorov complexity

In algorithmic information theory , the Andrey Kolmogorov complexity of an object such as a piece of text is a measure of the computational resources needed to specify the object....
 describes the challenges and limits of this.

Number of operands


Instruction sets may be categorized by the number of operands (registers, memory locations, or immediate values) in their most complex instructions. This does not refer to the arity
Arity

In logic, mathematics, and computer science, the arity of a function or operation is the number of arguments or operands that the function takes. The arity of a relation is the number of domains in the corresponding Cartesian product....
 of the operators, but to the number of operands explicitly specified as part of the instruction. Thus, implicit operands stored in a special-purpose register or on top of the stack
Stack

Stack may refer to:...
 are not counted.

(In the examples that follow, a, b, and c refer to memory addresses, and reg1 and so on refer to machine registers.)

  • 0-operand ("zero address machines") -- these are also called stack machine
    Stack machine

    In computer science, a stack machine is a model of computation in which the computer's memory takes the form of one or more stack s. The term also refers to an actual computer implementing or simulating the idealized stack machine....
    s, and all operations take place using the top one or two positions on the stack. Add two numbers in five instructions: #a, load, #b, load, add, #c, store;
  • 1-operand ("one address machines") -- often called accumulator machines -- include most early computers. Each instruction performs its operation using a single operand specifier. The single accumulator
    Accumulator (computing)

    In a computer's central processing unit , an accumulator is a processor register in which intermediate arithmetic logic unit results are stored....
     register is implicit -- source, destination, or often both -- in almost every instruction: load a, add b, store c;
  • 2-operand -- many RISC machines fall into this category, though many CISC machines also fall here as well. For a RISC machine (requiring explicit memory loads), the instructions would be: load a, reg1; load b, reg2; add reg1,reg2; store reg2,c;
  • 3-operand CISC -- some CISC machines fall into this category. The above example here might be performed in a single instruction in a machine with memory operands: add a, b,c, or more typically (most machines permit a maximum of two memory operations even in three-operand instructions): move a, reg1; add reg1,b, c;
  • 3-operand RISC -- most RISC machines fall into this category, because it allows "better reuse of data". In a typical three-operand RISC machines, all three operands must be registers, so explicit load/store instructions are needed. An instruction set with 32 registers requires 15 bits to encode three register operands, so this scheme is typically limited to instructions sets with 32-bit instructions or longer. Example: load a, reg1; load b, reg2; add reg1+reg2->reg3; store reg3,c;
  • more operands -- some CISC machines permit a variety of addressing modes that allow more than 3 operands (registers or memory accesses), such as the VAX
    VAX

    VAX was an instruction set architecture developed by Digital Equipment Corporation in the mid-1970s. A 32-bit complex instruction set computer ISA, it was designed to extend or replace DEC's various Programmed Data Processor ISAs....
     "POLY" polynomial evaluation instruction.


List of ISAs

This list is far from comprehensive as old architectures are abandoned and new ones invented on a continual basis. There are many commercially available microprocessor
Microprocessor

A microprocessor incorporates most or all of the functions of a central processing unit on a single integrated circuit . The first microprocessors emerged in the early 1970s and were used for electronic calculators, using Binary-coded decimal arithmetic on 4-bit Word ....
s and microcontroller
Microcontroller

A microcontroller is a small computer on a single integrated circuit consisting of a relatively simple CPU combined with support functions such as a crystal oscillator, timers, watchdog, serial and analog I/O etc....
s implementing ISAs. Customised ISAs are also quite common in some applications, e.g. application-specific integrated circuit
Application-specific integrated circuit

An application-specific integrated circuit is an integrated circuit customized for a particular use, rather than intended for general-purpose use....
, FPGA, and reconfigurable computing
Reconfigurable computing

Reconfigurable computing is a computing paradigm combining some of the flexibility of software with the high performance of hardware by processing with very flexible high speed computing fabrics like FPGAs....
.

ISAs implemented in hardware

  • Alpha
    DEC Alpha

    Alpha, originally known as Alpha AXP, was a 64-bit reduced instruction set computer instruction set architecture developed by Digital Equipment Corporation , designed to replace the 32-bit VAX complex instruction set computer ISA and its implementations....
  • ARM
    ARM architecture

    The ARM architecture is a 32-bit RISC central processing unit architecture developed by ARM Limited that is widely used in embedded system designs....
  • Burroughs B5000/B6000/B7000 series
  • IA-64 (Itanium
    Itanium

    Itanium is the brand name for 64-bit Intel microprocessors that implement the Intel Itanium architecture . Intel has released two processor families using the brand: the original Itanium and the Itanium 2....
    )
  • MIPS
    MIPS architecture

    MIPS is a RISC instruction set architecture developed by MIPS Technologies . In the mid to late 1990s, it was estimated that one in three RISC microprocessors produced were MIPS implementations....
  • Motorola 68k
  • PA-RISC
  • IBM 700/7000 series
    IBM 700/7000 series

    The IBM 700/7000 series was a series of large scale computer systems made by International Business Machines through the 1950s and early 1960s....
    • System/360
      System/360

      The IBM System/360 is a mainframe computer system family announced by IBM on April 7, 1964. It was the first family of computers making a clear distinction between computer architecture and implementation, allowing IBM to release a suite of compatible designs at different price points....
    • System/370
      System/370

      The IBM System/370 was a model range of IBM mainframes announced on June 30, 1970 as the successors to the System/360 family. The series maintained backward compatibility with the S/360, allowing an easy migration path for customers; this, plus improved performance, were the dominant themes of the product announcement....
    • System/390
    • z/Architecture
      Z/Architecture

      z/Architecture, initially and briefly called ESA/390 Modal Extensions , refers to IBM's 64-bit computing architecture for the current generation of IBM mainframe computers....
  • Power Architecture
    Power Architecture

    Power Architecture is a broad term to describe similar RISC instruction sets for microprocessors developed and manufactured by such companies as IBM, Freescale, Applied Micro Circuits Corporation, Tundra Semiconductor and P.A....
    • POWER
      IBM POWER

      POWER is a RISC instruction set architecture designed by International Business Machines. The name is a backronym for Performance Optimization With Enhanced RISC....
    • PowerPC
      PowerPC

      PowerPC is a RISC instruction set architecture created by the 1991 Apple Inc.?IBM?Motorola alliance, known as AIM alliance. Originally intended for personal computers, PowerPC CPUs have since become popular embedded system and high-performance processors....
  • PDP-11
    PDP-11

    The PDP-11 was a series of 16-bit minicomputers sold by Digital Equipment Corporation from 1970 into the 1990s. Though not explicitly conceived as successor to DEC's PDP-8 computer in the Programmed Data Processor series of computers , the PDP-11 replaced the PDP-8 in many Real-time computing....
    • VAX
      VAX

      VAX was an instruction set architecture developed by Digital Equipment Corporation in the mid-1970s. A 32-bit complex instruction set computer ISA, it was designed to extend or replace DEC's various Programmed Data Processor ISAs....
  • SPARC
    SPARC

    SPARC is a Reduced Instruction Set Computer microprocessor instruction set Computer architecture originally designed in 1985 by Sun Microsystems....
  • SuperH
    SuperH

    The SuperH is brandname of a certain microcontroller and microprocessor architecture. The SuperH is fundamentally a 32-bit load/store reduced instruction set computer architecture found in a large number of embedded systems....
  • Tricore
    Tricore

    TriCore is the name of a multicore-processor design by Infineon Technologies.According to its designers, TriCore is advantageous based on its 3-in-1 architecture consisting of a microcontroller, Digital signal processing , and RISC-based load-store computing system ....
  • Transputer
  • UNIVAC 1100/2200 series
    UNIVAC 1100/2200 series

    The UNIVAC 1100/2200 series is a series of compatible 36-bit computer systems, beginning with the UNIVAC 1107 in 1962, initially made by UNIVAC....
  • x86
    • IA-32
      IA-32

      IA-32 , often generically called x86 or x86-32, is the instruction set architecture of Intel's most commercially successful microprocessors....
       (i386, Pentium
      Pentium

      Introduced on March 22, 1993, the original Pentium was the first superscalar x86 architecture microprocessor. Its fifth-generation x86 microarchitecture was a direct extension of the 80486 architecture with dual integer pipeline s, a faster FPU unit, wider data bus, and features for further reduced address calculation latency....
      , Athlon
      Athlon

      Athlon is the brand name applied to a series of different x86 Central processing unit designed and manufactured by Advanced Micro Devices. The original Athlon was the first seventh-generation x86 processor and, in a first, retained the initial performance lead it had over Intel Corporation's competing processors for a significant period of t...
      )
    • x86-64
      X86-64

      x86-64 is a superset of the x86. x86-64 Central processing units can run existing 32-bit or 16-bit x86 programs at full speed, but also support new programs written with a 64-bit address space and other additional capabilities....
       (64-bit superset of IA-32)
  • EISC
    EISC

    The EISC is a compressed code central processing unit architecture for embedded applications. It has both the properties of RISC architecture,simplicity, and that of Complex instruction set computer processor,expenability....
     (AE32K)


ISAs commonly implemented in software with hardware incarnations

  • p-Code (UCSD p-System Version III on Western Digital
    Western Digital

    Western Digital Corporation is a manufacturer of computer hard disk drives, and has a long history in the electronics industry as an integrated circuit maker and a storage products company....
     Pascal MicroEngine
    Pascal MicroEngine

    The Pascal MicroEngine was a series of products manufactured by Western Digital from 1979 through the mid 1980s, designed specifically to efficiently run the UCSD p-System....
    )
  • Java virtual machine
    Java Virtual Machine

    A Java Virtual Machine is a set of computer software programs and data structures which use a virtual machine model for the execution of other computer programs and Scripting language....
     (ARM Jazelle
    Jazelle

    Jazelle DBX allows recent ARM architectures to execute some Java bytecode in hardware as a third execution state alongside the existing ARM and Thumb modes....
    , PicoJava
    PicoJava

    picoJava is a microprocessor specification dedicated to native code of Java platform-based byte-code without the need for an Interpreter or Just-in-time compilation compiler, thus speeding bytecode execution up to 20 times, compared to standard Intel Central processing unit with a Java Virtual Machine....
    , JOP
    JOP

    JOP could refer to:* Java optimized processor, a hardware implementation of a Java Virtual Machine* Jon Oliva's Pain, a US heavy metal band fronted by Jon Oliva ...
    )
  • FORTH


ISAs never implemented in hardware

  • ALGOL object code
  • SECD machine
    SECD machine

    The SECD machine is a highly influential virtual machine intended as a target for functional programming compilers. The letters stand for Stack, Environment, Code, Dump, the internal registers of the machine....
    , a virtual machine used for some functional programming
    Functional programming

    In computer science, functional programming is a programming paradigm that treats computation as the evaluation of function s and avoids program state and immutable object data....
     languages.
  • MMIX
    MMIX

    MMIX is a 64-bit Reduced instruction set computer instruction set Computer architecture designed by Donald Knuth, with significant contributions by John L....
    , a teaching machine used in Donald Knuth
    Donald Knuth

    Donald Ervin Knuth is a renowned computer science and Emeritus of the Art of Computer Programming at Stanford University.Author of the seminal multi-volume work The Art of Computer Programming , Knuth has been called the "father" of the run-time analysis, contributing to the development of, and systematizing formal mathematical techn...
    's The Art of Computer Programming
    The Art of Computer Programming

    The Art of Computer Programming is a comprehensive monograph written by Donald Knuth that covers many kinds of programming algorithms and their analysis....
  • Z-machine
    Z-machine

    The Z-machine is a virtual machine that was developed by Joel Berez and Marc Blank in 1979 and used by Infocom for its interactive fiction. Infocom compiled game code to files containing Z-machine instructions , and could therefore port all its text adventures to a new platform simply by writing a Z-machine implementation for that platform....
    , a virtual machine originated by Infocom
    Infocom

    Infocom was a software company, based in Cambridge, Massachusetts, that produced numerous works of interactive fiction. They also produced one notable business application, a relational database called Cornerstone ....
     and used for text adventure games, and its successor Glulx
    Glulx

    Glulx is a 32-bit Porting virtual machine intended for writing and playing interactive fiction. It was designed by Andrew Plotkin to relieve some of the restrictions in the venerable Z-machine format....


See also


Categories of ISA

  • CISC
    Complex instruction set computer

    A complex instruction set computer is a computer instruction set architecture in which each instruction can execute several low-level operations, such as a load from Memory , an arithmetic operator, and a memory , all in a single instruction....
  • RISC
  • VLIW
  • MISC
    Minimal instruction set computer

    Minimal Instruction Set Computer is a Microprocessor architecture with a very small number of basic operations and corresponding opcodes. Such instruction sets are commonly stack based rather than register based to reduce the size of operand specifiers....
  • EPIC
    Explicitly Parallel Instruction Computing

    Explicitly Parallel Instruction Computing is a term coined in 1997 by the Itanium to describe a computing paradigm that began to be researched in the early 1980s....
  • vector processor
    Vector processor

    A vector processor, or array processor, is a Central processing unit design where the instruction set includes operations that can perform mathematical operations on multiple data elements simultaneously....
  • SIMD
    SIMD

    In computing, SIMD is a technique employed to achieve data level parallelism....
  • Flynn's Taxonomy
    Flynn's Taxonomy

    Flynn's taxonomy is a classification of computer architectures, proposed by Michael J. Flynn in 1966....
  • orthogonal instruction set
    Orthogonal instruction set

    Orthogonal instruction set is a term used in computer engineering. A computer's instruction set is said to be orthogonal if any instruction can use data of any type via any addressing mode....
  • Processor Supplementary Capabilities


Applications where specialized instruction sets are used

  • digital signal processor
    Digital signal processor

    A digital signal processor is a specialized microprocessor designed specifically for digital signal processing, generally in real-time computing....
  • graphics processing unit
    Graphics processing unit

    A graphics processing unit or GPU is a dedicated graphics rendering device for a personal computer, workstation, or game console. Modern GPUs are very efficient at manipulating and displaying computer graphics, and their highly parallel structure makes them more effective than general-purpose Central processing unit for a range of com...
  • reconfigurable computing
    Reconfigurable computing

    Reconfigurable computing is a computing paradigm combining some of the flexibility of software with the high performance of hardware by processing with very flexible high speed computing fabrics like FPGAs....


Device types that implement some ISA

  • central processing unit
    Central processing unit

    A central processing unit is an electronic circuit that can execute computer programs. This broad definition can easily be applied to many early computers that existed long before the term "CPU" ever came into widespread usage....
  • microcontroller
    Microcontroller

    A microcontroller is a small computer on a single integrated circuit consisting of a relatively simple CPU combined with support functions such as a crystal oscillator, timers, watchdog, serial and analog I/O etc....
  • microprocessor
    Microprocessor

    A microprocessor incorporates most or all of the functions of a central processing unit on a single integrated circuit . The first microprocessors emerged in the early 1970s and were used for electronic calculators, using Binary-coded decimal arithmetic on 4-bit Word ....


Others

  • Computer architecture
    Computer architecture

    Computer architecture in computer engineering is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements and design implementations for the various parts of a computer, focusing largely on the way by which the central processing unit performs internally an...
  • CPU design
    CPU design

    CPU design is the design engineering task of creating a central processing unit , a component of computer hardware. It is a subfield of electronics engineering and computer engineering....
  • Emulator
    Emulator

    An emulator duplicates the functions of one system using a different system, so that the second system behaves like the first system. This focus on exact reproduction of external behavior is in contrast to some other forms of computer simulation, which can concern an abstract model of the system being simulated....
  • Hardware abstraction layer
    Hardware abstraction layer

    A hardware abstraction layer is an abstraction layer, implemented in software, between the physical Computer hardware of a computer and the Computer software that runs on that computer....
  • Register Transfer Language
    Register Transfer Language

    In computer science, register transfer language is a term used to describe a kind of intermediate representation that is very close to assembly language, such as that which is used in a compiler....
     (RTL)
  • Virtual machine
    Virtual machine

    In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
  • Atmel AVR instruction set
    AVR instruction set

    Here is the basic Atmel AVR instruction set.Arithmetic operations work on registers R0-R31 but not directly on RAM and take one clock cycle, except for multiplication and word-wide addition which take two cycles....
  • Streaming SIMD Extensions
    Streaming SIMD Extensions

    In computing, Streaming SIMD Extensions is a SIMD instruction set extension to the x86 architecture, designed by Intel and introduced in 1999 in their Pentium III series processors as a reply to AMD's 3DNow! ....
     (SSE) instruction set
  • SSE2
    SSE2

    SSE2, Streaming SIMD Extensions 2, is one of the IA-32 SIMD instruction sets. SSE2 was first introduced by Intel with the initial version of the Pentium 4 in 2001....
     IA-32 SIMD
    SIMD

    In computing, SIMD is a technique employed to achieve data level parallelism....
     instruction set
  • Application binary interface
    Application binary interface

    In computer software, an application binary interface describes the low-level interface between an application program and the operating system or an other application....


External links

  • by Jonathan Bowen