Hardware Design, or Computer Hardware Design, is integral to how a computer operates. It is often seen as a very general term of how the computer’s physical components are set out or used.
All modern computers currently use the binary system for all computation. But this usually is split into two groups, little endian and big endian formats.
Also most modern computers use the model that all computer components (memory (RAM or Random Access Memory), Hard Disk drive, CD ROM drive etc…) are connected by a main bus that relays all information between the components and the processor. There is also an address bus that specifies areas of RAM that the processor wishes to “fetch”, either into cache (fast ram) or registers (memory internal to the processor). The processor is often the determining factor in the speed of any hardware, but is not necessarily the only one. (See Von Neumann machine).
Currently, the Intel Pentium, AMD Sempron and Athlon XP processors are the most widespread in home computers. As predicted by Moore’s Law, processor speeds available at a given price increase exponentially with time.
Cards
The speed of a computer can also be aided at common tasks with additional fixed processing units, known as collectively as “cards”. Graphics cards and sound cards are commonplace in modern home computers. Graphics cards are often used to alleviate the processor of much of the processing behind video game graphics and video playback, and often have their own cache (often called VRAM (video RAM)), and registers too. The operation of their fixed processing units is also very specific to the card. As video games have evolved over the years, so have the cards. The cards often accommodate computation of dot products and cross products necessary in the display of much polygonal rendering. Sound cards are also used to similar effect, but are often used to improve the quality of the sound rather than the speed of processing.
Embedded systems
Home computers are, of course, not the only form of processor driven hardware in the house. However they are often the most complex, as their structure is built so they can do a lot more than other computational devices which often have very specific roles. Things such as video recorders and some modern televisions that have processors in them, are referred to as embedded systems, as the processor is “embedded” with firmware and is unchangeable. The less specialized personal computer can have any number of software applications running on it.
Programming and hardware
Processors have a certain set of defined commands. These commands can be represented in:
- binary (0 and 1)
- assembly (e.g. ADDUI 5, s)
These commands are then brought together to form useful algorithms and eventually programs. To run a program these binary statements are fetched one at a time into the processor, and the processor executes the command. Sometimes the command may be to change the memory position where it gets the next statement, often referred to as a jump or branch. This would edit the special internal program counter register on the processor. Other special purpose registers may include the accumulator common amongst many processors.
Over the years programmers have created programs that gather together statements such as these to form statements that are more understandable or more logical to the program we are trying to create. The languages are often processor independent. Such languages include C, Pascal, Prolog, Haskell, BASIC and Java.
However the compiler (the program that turns the language notation into the machine understandable binary executable) remains hardware dependent.
Bit width
The only other home computer system that almost equals the home PC in complexity is the Home Entertainment console. The hardware in those, like most graphics cards, is geared towards very fast graphics computations. The PlayStation 2, GameCube and Xbox are all 128-bit width (the number of 0’s and 1’s they can compute in a single clock cycle). By comparison most home computers are currently 32 bits wide for both their internal buses and processors. However you can now buy 64-bit processors and graphics cards.
If you wished to use a program that was programmed for a 32 bit machine on a 64-bit machine, the standard method is for the operating system to fill in the blank, higher 32 bits with either 0’s or 1’s, depending on the system. The operating system is said to be emulating a 32-bit machine. This would, however, negate the benefit of having a 64-bit machine. And so having a 64-bit machine would usually be of benefit only if you had programs created taking advantage of this.
Emulation
Emulation is commonplace in the home computer world, and often require more than emulation of the bit width. As the program has been created on other hardware, the machine commands are often different. And so at every step the emulator must “translate” the machine code instructions into the exact result that would be found on the real hardware. This makes emulation slow. So emulation is usually possible only on a machine with power in excess of the machine it is trying to emulate. Also if the machine it is trying to emulate has specific hardware such as graphics hardware, the person creating the emulator must find an alternative way to represent the same thing, usually through the expenditure of lot more processing. It is true to say there can never be a perfect emulation. Hardware and speeds will always be different between machines, however it is possible to get a close enough match.