Monday, August 24, 2009

Computers - From steam power to quantum tunneling in 150 years - Modern Computer Traits

All modern computers share these traits, listed below:

* Binary Operation: All computers of any complexity have been based on Boolean logic, where there are only two values: True and False, easily represented in electronic circuitry as two different voltages. A base-two system is therefore a natural platform for a computer built on switches, operating with Boolean logic.
* A Memory: The memory is used to store information that the computer is processing, or to archive data that might be accessed later. Computer memory has ranged from hard-wired switches, to punch cards, drum memory, bubble memory, floppy disks, hard drives, optical disks, solid-state memory, and experimental media such as holographs and quantum dots. They allow the storage of arbitrary binary numbers, some with easy rewritability, some without. Capacities, access speeds, and portability vary widely across the different formats.
* Execution Units: These take binary values from the memory, and operate on them, returning the result into the memory. In modern systems, several execution units are placed on the each CPU chip. The units are often specialized, some working with integer values, others with real numbers represented in binary. Recent advances include SIMD units (such as the Altivec), pipelined execution, and many other features to increase speed.
* A Program: A program is a sequence of instructions for the computer, telling it what to do with the data stored in its memory. At the lowest level, a program is encoded in machine code, direct binary values that each encode a single action for the computer, such as reading a value from memory, or adding two values together. As computers have evolved in complexity, high-level programming languages (such as C, Ada, and LISP) have been created to simplify the creation of complex programs. These languages hide the lower level details from the programmer,
using compilers to automatically convert abstract program code into the computer's native machine code.
For small, embedded computer systems, programmers sometimes still work in Assembly languages, which use simple english mnemonics for each machine code instruction.
* A Control Unit: The control unit takes in the program, reads in the machine code values (or bytes), and then operates the memory and execution units accordingly. The control is often a state machine of varying complexity. Separating the control and the execution units makes desiging computers much easier, since the control only needs to tell the execution units 'do this', and the execution units do not need to deal with the details of the machine code interpretation. The control and execution units, and sometimes limited amounts of memory, are typically
on a single silicon chip, known as the Central Processing Unit, or CPU.
* A Clock: Almost all modern computers run off very precise quartz crystal clocks, with speeds currently measured in Megahertz and recently Gigahertz. The clock makes the sequencing of operations in a computer simpler, guaranteeing valid results from one stage of computation to the next. However, synchronous designs, as clocked digital computers are called, are not the only modern method. Asynchronous VLSI techniques are also being investigated.
* A User Interface: The ability to compute would be of little use if there was no way to input new data, or read out the results. User interfaces for computers have also evolved a great deal over the last fifty years, from blinking rows of lights showing memory values, to modern monitors, keyboards, and mice. Additionally, computers are now typically connected to others through computer networks (such as the Internet, of course), allowing for widespread information exchange.

No comments:

Post a Comment