Katana VentraIP

Instruction set architecture

In computer science, an instruction set architecture (ISA) is an abstract model that generally defines how software controls the CPU in a computer or a family of computers.[1] A device or program that executes instructions described by that ISA, such as a central processing unit (CPU), is called an implementation of that ISA.

This article is about instruction sets. For other aspects of architecture, see Computer architecture.

In general, an ISA defines the supported instructions, data types, registers, the hardware support for managing main memory, fundamental features (such as the memory consistency, addressing modes, virtual memory), and the input/output model of implementations of the ISA.


An ISA specifies the behavior of machine code running on implementations of that ISA in a fashion that does not depend on the characteristics of that implementation, providing binary compatibility between implementations. This enables multiple implementations of an ISA that differ in characteristics such as performance, physical size, and monetary cost (among other things), but that are capable of running the same machine code, so that a lower-performance, lower-cost machine can be replaced with a higher-cost, higher-performance machine without having to replace software. It also enables the evolution of the microarchitectures of the implementations of that ISA, so that a newer, higher-performance implementation of an ISA can run software that runs on previous generations of implementations.


If an operating system maintains a standard and compatible application binary interface (ABI) for a particular ISA, machine code will run on future implementations of that ISA and operating system. However, if an ISA supports running multiple operating systems, it does not guarantee that machine code for one operating system will run on another operating system, unless the first operating system supports running machine code built for the other operating system.


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 implementations that support those extensions.


The binary compatibility that they provide makes ISAs one of the most fundamental abstractions in computing.

Katana VentraIP

$_$_$DEEZ_NUTS#0__titleDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#0__subtitleDEEZ_NUTS$_$_$

Classification of ISAs[edit]

An ISA may be classified in a number of different ways. A common classification is by architectural complexity. A complex instruction set computer (CISC) has many specialized instructions, some of which may only be rarely used in practical programs. A reduced instruction set computer (RISC) simplifies the processor by efficiently implementing only the instructions that are frequently used in programs, while the less common operations are implemented as subroutines, having their resulting additional processor execution time offset by infrequent use.[3]


Other types include very long instruction word (VLIW) architectures, and the closely related long instruction word (LIW) and explicitly parallel instruction computing (EPIC) architectures. These architectures seek to exploit instruction-level parallelism with less hardware than RISC and CISC by making the compiler responsible for instruction issue and scheduling.[4]


Architectures with even less complexity have been studied, such as the minimal instruction set computer (MISC) and one-instruction set computer (OISC). These are theoretically important types, but have not been commercialized.[5][6]

$_$_$DEEZ_NUTS#3__descriptionDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#6__descriptionDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#3__titleDEEZ_NUTS$_$_$

(the instruction to be performed) e.g. add, copy, test

opcode

any explicit operands:

$_$_$DEEZ_NUTS#1__titleDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#1__descriptionDEEZ_NUTS$_$_$

Design[edit]

The design of instruction sets is a complex issue. There were two stages in history for the microprocessor. The first was the CISC (Complex Instruction Set Computer), which had many different instructions. In the 1970s, however, places like IBM did research and found that many instructions in the set could be eliminated. The result was the RISC (Reduced Instruction Set Computer), an architecture that uses a smaller set of instructions. A simpler instruction set may offer the potential for higher speeds, reduced processor size, and reduced power consumption. However, a more complex set may optimize common operations, improve memory and cache efficiency, or simplify programming.


Some instruction set designers reserve one or more opcodes for some kind of system call or software interrupt. For example, MOS Technology 6502 uses 00H, Zilog Z80 uses the eight codes C7,CF,D7,DF,E7,EF,F7,FFH[18] while Motorola 68000 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.


The NOP slide used in immunity-aware programming 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 algorithms are much easier to implement if the instruction set includes support for something such as "fetch-and-add", "load-link/store-conditional" (LL/SC), or "atomic compare-and-swap".

Comparison of instruction set architectures

Compressed instruction set

Computer architecture

Emulator

Instruction set simulator

Micro-operation

No instruction set computing

full systems simulator providing ability to create/model/emulate any instruction set using C and standard APIs

OVPsim

Processor design

Simulation

(RTL)

Register transfer language

(July–August 1985). "Standard Microprocessor Programming Cards". Microprocessors and Microsystems. 9 (6): 274–290. doi:10.1016/0141-9331(85)90116-4.

Bowen, Jonathan P.

; Patterson, David A. (2003). Computer Architecture: A Quantitative Approach (Third ed.). Morgan Kaufmann Publishers. ISBN 1-55860-724-2. Retrieved 2023-03-04.

Hennessy, John L.

$_$_$DEEZ_NUTS#7__quote--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--2DEEZ_NUTS$_$_$

Media related to Instruction set architectures at Wikimedia Commons

Programming Textfiles: Bowen's Instruction Summary Cards

Mark Smotherman's Historical Computer Designs Page

$_$_$DEEZ_NUTS#7__quote--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--4DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--4DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--4DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--5DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--5DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--5DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--6DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--6DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--6DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--7DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--7DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--7DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--8DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--8DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--8DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--9DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--9DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--9DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--10DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--10DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--10DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--11DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--11DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--11DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--12DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--12DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--12DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--13DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--13DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--13DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--14DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--14DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--14DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__quote--15DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__name--15DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#7__company_or_position--15DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#5__titleDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#5__subtextDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#5__quote--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#5__name--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#5__company_or_position--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#5__quote--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#5__name--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#5__company_or_position--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__titleDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__subtextDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__quote--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__name--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__company_or_position--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__quote--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__name--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__company_or_position--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__quote--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__name--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__company_or_position--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__quote--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__name--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__company_or_position--3DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__quote--4DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__name--4DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__company_or_position--4DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__quote--5DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__name--5DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__company_or_position--5DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__quote--6DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__name--6DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__company_or_position--6DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__quote--7DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__name--7DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__company_or_position--7DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__quote--8DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__name--8DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#2__company_or_position--8DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__titleDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__subtextDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__quote--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__name--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__company_or_position--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__quote--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__name--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__company_or_position--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__quote--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__name--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#8__company_or_position--2DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#4__titleDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#4__subtextDEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#4__quote--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#4__name--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#4__company_or_position--0DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#4__quote--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#4__name--1DEEZ_NUTS$_$_$

$_$_$DEEZ_NUTS#4__company_or_position--1DEEZ_NUTS$_$_$