Instruction set architecture: Difference between revisions

Content deleted Content added
Internal link
Tags: Visual edit Mobile edit Mobile web edit Advanced mobile edit
Ah hj
Tags: Reverted Visual edit Mobile edit Mobile web edit
Line 1:
{{Short description|Set of abstract symbols that describe a computer program's operations to a processor}}In [[computer science]], an '''instruction set architecture''' ('''ISA''') is an [[Conceptual model|abstract model]] that generally defines how [[software]] controls the [[Central processing unit|CPU]] in a computer or a family of computers.<ref>{{Cite web |title=GLOSSARY: Instruction Set Architecture (ISA) |url=https://www.arm.com/glossary/isa |archive-url=https://web.archive.org/web/20231111175250/https://www.arm.com/glossary/isa |archive-date=2023-11-11 |access-date=2024-02-03 |website=arm.com}}</ref> 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.
{{Short description|Set of abstract symbols that describe a computer program's operations to a processor}}
{{broader|Computer architecture}}
{{Machine code}}
 
In general, an ISA defines the supported [[Machine code|instructions]], [[data type]]stypes, [[Register (computer)|registers]], the hardware support for managing [[Computer memory|main memory]],{{Clarify|date=April 2024|reason=See "What does "Hardware support for managing main memory" refer to?" on the talk page.]]}} fundamental features (such as the [[memory consistency]], [[addressing mode]]smodes, [[virtual memory]]), and the [[input/output]] model of implementations of the ISA.
In [[computer science]], an '''instruction set architecture''' ('''ISA''') is an [[Conceptual model|abstract model]] that generally defines how [[software]] controls the [[Central processing unit|CPU]] in a computer or a family of computers.<ref>{{Cite web |title=GLOSSARY: Instruction Set Architecture (ISA) |url=https://www.arm.com/glossary/isa |archive-url=https://web.archive.org/web/20231111175250/https://www.arm.com/glossary/isa |archive-date=2023-11-11 |access-date=2024-02-03 |website=arm.com}}</ref> 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.
 
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 [[Computer performance|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 [[microarchitecture]]smicroarchitectures 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.
In general, an ISA defines the supported [[Machine code|instructions]], [[data type]]s, [[Register (computer)|registers]], the hardware support for managing [[Computer memory|main memory]],{{Clarify|date=April 2024|reason=See "What does "Hardware support for managing main memory" refer to?" on the talk page.]]}} fundamental features (such as the [[memory consistency]], [[addressing mode]]s, [[virtual memory]]), and the [[input/output]] model of implementations of the ISA.
 
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 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 [[Computer performance|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 [[microarchitecture]]s 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.
 
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.
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.
 
The binary compatibility that they provide makes ISAs one of the most fundamental abstractions in [[computing]].
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]].
 
==Overview==
Line 171 ⟶ 167:
==Instruction set implementation==
{{Main|Processor design|Semiconductor device fabrication|Silicon compiler}}
 
A given instruction set can be implemented in a variety of ways. All ways of implementing a particular instruction set provide the same [[programming model]], and all implementations of that instruction set are able to run the same executables. The various ways of implementing an instruction set give different tradeoffs between cost, performance, power consumption, size, etc.