Content deleted Content added
Restored revision 1218791619 by Codename Noreste (talk): Rv editorializing |
Guy Harris (talk | contribs) When used in that fashion, "(computer) architecture" is a count noun, so use an article with it. |
||
(47 intermediate revisions by 25 users not shown) | |||
Line 1:
{{Short description|Set of rules describing computer system}}
{{Lead too short|date=November 2023}}
[[File:Computer architecture block diagram.png|alt=|thumb|
In [[computer science]] and [[computer engineering]], a '''computer architecture''' is
== History ==
The first documented computer architecture was in the correspondence between [[Charles Babbage]] and [[Ada Lovelace]], describing the [[analytical engine]]. While building the computer [[Z1 (computer)|Z1]] in 1936, [[Konrad Zuse]] described in two patent applications for his future projects that machine instructions could be stored in the same storage used for data, i.e., the [[Stored-program computer|stored-program]] concept.<ref>{{citation |title=Electronic Digital Computers |journal=Nature |date=25 September 1948 |volume=162 |page=487
* [[John von Neumann]]'s 1945 paper, [[First Draft of a Report on the EDVAC]], which described an organization of logical elements;<ref>{{Cite book|title=First Draft of a Report on the EDVAC|last=Neumann|first=John|year=1945|pages=9}}</ref> and
*[[Alan M. Turing|Alan Turing]]'s more detailed ''Proposed Electronic Calculator'' for the [[Automatic Computing Engine]], also 1945 and which cited [[John von Neumann]]'s paper.<ref>Reproduced in B. J. Copeland (Ed.), "Alan Turing's Automatic Computing Engine", Oxford University Press, 2005, pp.
The term "architecture" in computer literature can be traced to the work of Lyle R. Johnson and [[Fred Brooks|Frederick P. Brooks, Jr.]], members of the Machine Organization department in IBM's main research center in 1959. Johnson had the opportunity to write a proprietary research communication about the [[IBM 7030 Stretch|Stretch]], an IBM-developed [[supercomputer]] for [[Los Alamos National Laboratory]] (at the time known as Los Alamos Scientific Laboratory). To describe the level of detail for discussing the luxuriously embellished computer, he noted that his description of formats, instruction types, hardware parameters, and speed enhancements were at the level of "system architecture", a term that seemed more useful than "machine organization".<ref>{{cite web|url=https://archive.computerhistory.org/resources/text/IBM/Stretch/pdfs/05-10/102634114.pdf |last1= Johnson |first1=Lyle| title= A Description of Stretch|page=1|year=1960|access-date=7 October 2017}}</ref>
Line 13:
Subsequently, Brooks, a Stretch designer, opened Chapter 2 of a book called ''Planning a Computer System: Project Stretch'' by stating, "Computer architecture, like other architecture, is the art of determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints."<ref>{{Cite book |title= Planning a Computer System|last=Buchholz |first=Werner|year=1962|pages=5}}</ref>
Brooks went on to help develop the [[IBM System/360]]
The earliest computer architectures were designed on paper and then directly built into the final hardware form.<ref>ACE underwent seven paper designs in one year, before a prototype was initiated in 1948. [B. J. Copeland (Ed.), "Alan Turing's Automatic Computing Engine", OUP, 2005, p. 57]</ref>
Line 28:
* '''Macroarchitecture''': [[architectural layer]]s more abstract than microarchitecture
* '''Assembly instruction set architecture''': A smart assembler may convert an abstract [[assembly language]] common to a group of machines into slightly different [[machine language]] for different [[implementation]]s.
* '''Programmer-visible macroarchitecture''': higher-level language tools such as [[compiler]]s may define a consistent interface or contract to [[programmer]]s using them, abstracting differences between underlying
* '''[[Microcode]]''': microcode is software that translates instructions to run on a chip. It acts like a wrapper around the hardware, presenting a preferred version of the hardware's instruction set interface. This instruction translation facility gives chip designers flexible options: E.g. 1. A new improved version of the chip can use microcode to present the exact same instruction set as the old chip version, so all software targeting that instruction set will run on the new chip without needing changes. E.g. 2. Microcode can present a variety of instruction sets for the same underlying chip, allowing it to run a wider variety of software.
* '''Pin architecture''': The hardware functions that a [[microprocessor]] should provide to a hardware platform, e.g., the [[x86]] pins A20M, FERR/IGNNE or FLUSH. Also, messages that the processor should emit so that external [[CPU cache|caches]] can be invalidated (emptied). Pin architecture functions are more flexible than ISA functions because external hardware can adapt to new encodings, or change from a pin to a message. The term "architecture" fits, because the functions must be provided for compatible systems, even if the detailed method changes.
Line 36 ⟶ 35:
===Definition===
Computer architecture is concerned with balancing the performance, efficiency, cost, and reliability of a computer system. The case of instruction set architecture can be used to illustrate the balance of these competing factors. More complex [[instruction
The implementation involves [[integrated circuit design]], packaging, [[Electric power|power]], and [[Computer cooling|cooling]]. Optimization of the design requires familiarity with
===Instruction set architecture===
{{Main|Instruction set architecture}}
An [[instruction set architecture]] (ISA) is the interface between the computer's software and hardware and also can be viewed as the programmer's view of the machine. Computers do not understand [[high-level programming language]]s such as Java, C++, or most programming languages used. A processor only understands instructions encoded in some numerical fashion, usually as [[Binary numeral system|binary number]]s. Software tools, such as [[compiler]]s, translate those high level languages into instructions that the processor can understand.▼
▲An [[instruction set architecture]] (ISA) is the interface between the computer's software and hardware and also can be viewed as the programmer's view of the machine. Computers do not understand [[high-level programming language]]s such as [[Java (programming language)|Java]], [[C++]], or most programming languages used. A processor only understands instructions encoded in some numerical fashion, usually as [[Binary numeral system|binary number]]s. Software tools, such as [[compiler]]s, translate those high level languages into instructions that the processor can understand.<ref>{{cite web |title=Glossary |url=https://codasip.com/glossary/isa |website=Codasip |access-date=30 May 2025}}</ref><ref>{{cite web |title=What is Instruction Set Architecture (ISA)? |url=https://www.arm.com/glossary/isa |website=The Architecture for the Digital World |access-date=30 May 2025 |language=en}}</ref>
Besides instructions, the ISA defines items in the computer that are available to a program—e.g., [[data type]]s, [[Processor register|registers]], [[addressing mode]]s, and [[Computer memory|memory]]. Instructions locate these available items with register indexes (or names) and memory addressing modes.<ref>{{cite web |title=Organization of Computer Systems: ISA, Machine Language, Number Systems |url=https://www.cise.ufl.edu/~mssz/CompOrg/CDA-lang.html |website=www.cise.ufl.edu |access-date=30 May 2025}}</ref><ref>{{cite web |title=Instruction Set Architecture – Computer Architecture |url=https://www.cs.umd.edu/~meesh/411/CA-online/chapter/instruction-set-architecture/index.html |website=www.cs.umd.edu |access-date=30 May 2025}}</ref>
The ISA of a computer is usually described in a small instruction manual, which describes how the instructions are encoded. Also, it may define short (vaguely) mnemonic names for the instructions. The names can be recognized by a software development tool called an [[assembler (computer programming)|assembler]]. An assembler is a computer program that translates a human-readable form of the ISA into a computer-readable form. [[Disassembler]]s are also widely available, usually in [[debugger]]s and software programs to isolate and correct malfunctions in binary computer programs.▼
▲The ISA of a computer is usually described in a small instruction manual, which describes how the instructions are encoded. Also, it may define short (vaguely) mnemonic names for the instructions. The names can be recognized by a software development tool called an [[assembler (computer programming)|assembler]].
ISAs vary in quality and completeness. A good ISA compromises between programmer convenience (how easy the code is to understand), size of the code (how much code is required to do a specific action), cost of the computer to interpret the instructions (more complexity means more hardware needed to decode and execute the instructions), and speed of the computer (with more complex decoding hardware comes longer decode time). Memory organization defines how instructions interact with the memory, and how memory interacts with itself.▼
▲ISAs vary in quality and completeness.
During design [[Emulator|emulation]], emulators can run programs written in a proposed instruction set. Modern emulators can measure size, cost, and speed to determine whether a particular ISA is meeting its goals.
Line 55 ⟶ 54:
===Computer organization===
{{main | Microarchitecture}}
Computer organization helps optimize performance-based products. For example, software engineers need to know the [[processing power]] of [[Processor (computing)|processors]]. They may need to optimize software in order to gain the most performance for the lowest price. This can require quite a detailed analysis of the computer's organization. For example, in an [[SD card]], the designers might need to arrange the card so that the most data can be processed in the fastest possible way.
Computer organization also helps plan the selection of a processor for a particular project. [[Multimedia]] projects may need very rapid data access, while [[virtual
===Implementation===
Once an [[Instruction set architecture|instruction set]] and
* '''Logic implementation''' designs the circuits required at a [[Logic gate|logic-gate]] level.
* '''Circuit implementation''' does [[transistor]]-level designs of basic elements (e.g., gates, [[multiplexer]]s, [[Flip-flop (electronics)|latches]]) as well as of some larger blocks ([[Arithmetic logic unit|ALU]]s, caches etc.) that may be implemented at the logic-gate level, or even at the physical level if the design calls for it.
* '''Physical implementation''' draws physical circuits. The different circuit components are placed in a chip [[Floorplan (microelectronics)|floor plan]] or on a board and the wires connecting them are created.
* '''Design validation''' tests the computer as a whole to see if it works in all situations and all timings. Once the design validation process starts, the design at the logic level are tested using logic emulators. However, this is usually too slow to run a realistic test.
For [[Central processing unit|CPU]]s, the entire implementation process is organized differently and is often referred to as [[CPU design]].
==Design goals==
The exact form of a computer system depends on the constraints and goals. Computer architectures usually trade off standards, [[Electric power|power]] versus [[Computer performance|performance]], cost, memory capacity, [[latency (engineering)|latency]] (latency is the amount of time that it takes for information from one node to travel to the source) and throughput. Sometimes other considerations, such as features, size, weight, reliability, and expandability are also factors.
The most common scheme does an in-depth power analysis and figures out how to keep power consumption low while maintaining adequate performance.
Line 78 ⟶ 77:
Counting machine-language instructions would be misleading because they can do varying amounts of work in different ISAs. The "instruction" in the standard measurements is not a count of the ISA's machine-language instructions, but a unit of measurement, usually based on the speed of the [[VAX]] computer architecture.
Many people used to measure a computer's speed by the [[clock rate]] (usually in [[MHz]] or GHz). This refers to the cycles per second of the main clock of the [[Central processing unit|CPU]]. However, this metric is somewhat misleading, as a machine with a higher clock rate may not necessarily have greater performance. As a result, manufacturers have moved away from clock speed as a measure of performance.
Other factors influence speed, such as the mix of [[functional unit]]s, [[computer bus|bus]] speeds, available memory, and the type and order of instructions in the programs.
There are two main types of speed: [[Latency (engineering)|latency]] and [[throughput]]. Latency is the time between the start of a process and its completion. Throughput is the amount of work done per unit time.
Performance is affected by a very wide range of design choices — for example, [[Pipeline (computing)|pipelining]] a processor usually makes latency worse, but makes throughput better. Computers that control machinery usually need low interrupt latencies. These computers operate in a [[real-time computing|real-time]] environment and fail if an operation is not completed in a specified amount of time. For example, computer-controlled anti-lock brakes must begin braking within a predictable and limited time period after the brake pedal is sensed or else failure of the brake will occur.
[[Benchmark (computing)|
===Power efficiency===
Line 92 ⟶ 91:
Power efficiency is another important measurement in modern computers. Higher power efficiency can often be traded for lower speed or higher cost. The typical measurement when referring to power consumption in computer architecture is MIPS/W (millions of instructions per second per watt).
Modern circuits have less power required per [[transistor]] as the number of transistors per chip grows.<ref>{{Cite web|url=http://eacharya.inflibnet.ac.in/data-server/eacharya-documents/53e0c6cbe413016f23443704_INFIEP_33/192/ET/33-192-ET-V1-S1__ssed_unit_4_module_10_integrated_circuits_and_fabrication_e-text.pdf|title=Integrated circuits and fabrication|access-date=8 May 2017}}</ref> This is because each transistor that is put in a new chip requires its own power supply and requires new pathways to be built to power it.{{Clarify|reason=The last two sentences seem to contradict each other|date=March 2025}} However, the number of transistors per chip is starting to increase at a slower rate. Therefore, power efficiency is starting to become as important, if not more important than fitting more and more transistors into a single chip. Recent processor designs have shown this emphasis as they put more focus on power efficiency rather than cramming as many transistors into a single chip as possible.<ref>{{Cite web|url=http://www.samsung.com/semiconductor/minisite/Exynos/w/solution/mod_ap/8895/?CID=AFL-hq-mul-0813-11000170|title=Exynos 9 Series (8895)|website=Samsung|access-date=8 May 2017}}</ref> In the world of [[embedded computers]], power efficiency has long been an important goal next to throughput and latency.
===Shifts in market demand===
Increases in clock frequency have grown more slowly over the past few years, compared to power reduction improvements. This has been driven by the end of [[Moore's Law]] and demand for longer [[battery life]] and reductions in size for [[mobile technology]]. This change in focus from higher clock rates to power consumption and miniaturization can be shown by the significant reductions in power consumption, as much as 50%, that were reported by [[Intel]] in their release of the [[Haswell (microarchitecture)|Haswell microarchitecture]]; where they dropped their power consumption benchmark from
==See also==
Line 129 ⟶ 128:
==External links==
{{Commons category}}
* [https://www.youtube.com/user/cmu18447 Carnegie Mellon Computer Architecture Lectures]
* [http://portal.acm.org/toc.cfm?id=SERIES416&type=series&coll=GUIDE&dl=GUIDE&CFID=41492512&CFTOKEN=82922478 ISCA: Proceedings of the International Symposium on Computer Architecture]
* [http://www.microarch.org/ Micro: IEEE/ACM International Symposium on Microarchitecture]
Line 135:
* [http://www.acm.org/taco/ ACM Transactions on Architecture and Code Optimization]
* [https://www.computer.org/csdl/journal/tc IEEE Transactions on Computers]
*
{{Computer science}}
{{Digital electronics}}
|