Computer architecture
From Wikipedia, the free encyclopedia
Image:Computer abstraction layers.PNG In computer engineering, computer architecture is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements (especially speeds and interconnections) and design implementations for the various parts of a computer — focusing largely on the way by which the central processing unit (CPU) performs internally and accesses addresses in memory.
It may also be defined as the science and art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals.
"Architecture" therefore typically refers to the fixed internal structure of the CPU (i.e. electronic switches to represent logic gates) to perform logical operations, and may also include the built-in interface (i.e. opcodes) by which hardware resources (i.e. CPU, memory, and also motherboard, peripherals) may be used by the software.
More specific usages of the term include:
- The design of a computer's CPU architecture, instruction set, addressing modes, and techniques such as SIMD and MIMD parallelism.
- More general wider-scale hardware architectures, such as cluster computing and Non-Uniform Memory Access (NUMA) architectures.
- The set of machine attributes that a programmer should understand to successfully program the computer. Parts of the architecture are the instructions and the width of operands. The system frequency (e.g. 1 GHz) is not part of the architecture.
Contents |
[edit] Design goals
The most common goals in computer architecture revolve around the tradeoffs between cost and performance (i.e. speed), although other considerations, such as size, weight, reliability, feature set, expandability and power consumption, may be factors as well.
[edit] Cost
Generally cost is held constant, determined by either system or commercial requirements.
[edit] Performance
Computer performance is often described in terms of clock speed (usually in MHz or GHz). This refers to the cycles per second of the main clock of the CPU. However, this metric is somewhat misleading, as a machine with a higher clock rate may not necessarily have higher performance. As a result manufacturers like AMD have moved away from clock speed as a measure of performance. Modern CPUs can execute multiple instructions per clock cycle, which dramatically speeds up a program. Other factors influence speed, such as the mix of functional units, bus speeds, available memory, and the type and order of instructions in the programs being run.
There are two main types of speed, latency and throughput. Briefly, latency is the time between the start of a process and its completion. Throughput is the amount of work done per unit time. Interrupt latency is the guaranteed maximum response time of the system to an electronic event (e.g. when the disk drive finishes moving some data). This number is affected by a very wide range of design choices — for example, adding cache usually makes latency worse (slower) but makes throughput better. Computers that control machinery usually need low interrupt latencies. These computers operate in a 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 almost immediately after they have been instructed to brake.
The performance of a computer can be measured using other metrics, depending upon its application domain. A system may be CPU bound (as in numerical calculation), I/O bound (as in a webserving application) or memory bound (as in video editing). Power consumption has become important in servers and portable devices like laptops.
Benchmarking tries to take all these factors into account by measuring the time a computer takes to run through a series of test programs. Although benchmarking shows strengths, it may not help one to choose a computer. Often the measured machines split on different measures. For example, one system might handle scientific applications quickly, while another might play popular video games more smoothly. Furthermore, designers have been known to add special features to their products, whether in hardware or software, which permit a specific benchmark to execute quickly but which do not offer similar advantages to other, more general tasks.
The general scheme of optimization is to find the costs of the different parts of the computer. In a balanced computer system, the data rate will be constant for all parts of the system, and cost will be allocated proportionally to assure this. The exact form of the computer system will depend on the constraints and goals for which it was optimized.
[edit] Virtual memory
Historically, random access memory has been thousands of times more expensive than rotating mechanical storage, such as hard drives in a modern computer. In order to increase the apparent size of memory available to programs, algorithms for copying sections of memory to and from mechanical storage were developed. This process, known as "swapping" or "paging", is handled in software by the operating system's memory management subsystem, with support from specialized circuitry integrated into the CPU.
Furthermore, as computer multitasking became more prevalent, techniques to "isolate" concurrently-running programs from each other were developed to prevent programs from interfering with each other, to enable more efficient RAM usage, for ease of program and library development, stability, reliability, and security. Virtual memory was designed to address these issues. In a virtual memory system, each program has its own private address space that other programs (usually) cannot access. It appears to each program as if it is the only program running on the system. In reality, the operating system manages how much real, physical memory is given to each concurrently-running program, and the OS and CPU together ensure that no program can access any memory it should not be allowed to access (for example, other programs' memory areas). Swapping/paging and virtual memory go hand-in-hand. See the virtual memory article for details.
[edit] Reconfigurable computing
A reconfigurable computing system compiles program source code to an intermediate code suitable for programming runtime reconfigurable field-programmable gate arrays, enabling a software design to be implemented directly in hardware. Since many different hardware-implemented programs can potentially perform in parallel, a reconfigurable computing system can implement a parallel processing architecture.
[edit] See also
[edit] References
- ISCA: Proceedings of the International Symposium on Computer Architecture
- Micro: IEEE/ACM International Symposium on Microarchitecture
- HPCA: International Symposium on High Performance Computer Architecture
- ASPLOS: International Conference on Architectural Support for Programming Languages and Operating Systems
- ACM Transactions on Computer Systems
- IEEE Computer Society
- Microprocessor Report
- http://www.mkp.com/ Hennessy and Patterson: Computer Architecture: A Quantitative Approach, Fourth Edition, September 2006
[edit] External links
- http://www.cs.wisc.edu/~arch/www
- http://www.cs.wisc.edu/arch/www/people.html
- ESCAPE - an easy-to-use, interactive portable PC-based simulation environment aimed at the support of computer architecture education
| Digital systems |
|---|
| Logic gate | digital circuit | integrated circuit (IC) |
| Theory — boolean algebra/logic | digital signal processing | computer architecture |
| Applications — digital photography | digital audio | digital video |
bn:কম্পিউটার স্থাপত্য bs:Računarska arhitektura de:Rechnerarchitektur es:Arquitectura de computadores fr:Architecture informatique hr:Arhitektura računala hu:Architektúra ja:コンピュータ・アーキテクチャ pl:Architektura komputera pt:Arquitectura de computadores ru:Архитектура компьютера th:สถาปัตยกรรมคอมพิวเตอร์ uk:Архітектура ЕОМ ta:கணினி கட்டுமானம் zh:计算机系统结构

