Examining the Insides of a Computer
Fundamentally a computer comprises one or more processors and some memory. A number of chips and wires glue this together. There are also peripherals such as disk drives or network cards.
Figure 1.1 shows the internals of a personal computer. A number of components go into a computer. The processor and memory are plugged into a circuit board, called the motherboard. Wires lead from this to peripherals such as disk drives, DVD drives, and so on. Some functions such as video or network support either are integrated into the motherboard or are supplied as plug-in cards.
It is possibly easier to understand how the components of the system are related if the information is presented as a schematic, as in Figure 1.2. This schematic separates the compute side of the system from the peripherals.
The compute performance characteristics of the system are basically derived from the performance of the processor and memory. These will determine how quickly the machine is able to execute instructions.
The performance characteristics of peripherals tend to be of less interest because their performance is much lower than that of the memory and processor. The amount of data that the processor can transfer to memory in a second is measured in gigabytes. The amount of data that can be transferred to disk is more likely to be measured in mega-bytes per second. Similarly, the time it takes to get data from memory is measured in nanoseconds, and the time to fetch data from disk is measured in milliseconds.
These are order-of-magnitude differences in performance. So, the best approach to using these devices is to avoid depending upon them in a performance-critical part of the code. The techniques discussed in this book will enable a developer to write code so that accesses to peripherals can be placed off the critical path or so they can be scheduled so that the compute side of the system can be actively completing work while the peripheral is being accessed.