next up previous
Next: About this document ... Up: ho Previous: Numbers and Characters

Subsections

A real computer

A real computer

For the last two lectures, we have been looking at an incredibly simple computer, MU0. What I want to do for the next two lectures is look at the hardware of real computers. However real computers are incredibly complicated, as you can see by looking at the description I was given for the PC (this time standing for Personal Computer, and originally coming from the name IBM gave their first Intel-8086/MS-DOS computer) sitting in my office:

Pentium Pro 100 Series.
Chaintech BX chipset Pentium II Motherboard, ATX form factor, Intel 82440BX Chipset, On board fast i/o, 1xECP/EPP parallel port, 4x Mode 4/ UDMA33 IDE ports, 2x USB Ports, 4x 168Pin DIMM sockets, support for 100MHz SDRAM, flash EPROM BIOS, Slot1 processor socket and Advanced Graphics Port slot, PII 233 to Pentium III 500MHz capability
Pentium III 450MHz Processor, 512k on cartridge cache
128Mb memory as 1 x 128Mb 100MHz SDRAM DIMM (leaves 3 DIMM slots free for further expansion)
Quality ATX midi tower case with 3x5.25" bays and 4x3.5" bays (2 hidden), 230W ATX power supply.
Keytronics UK keyboard with PS/2 adapter,
Iiyama A701GT Visionmaster 400 Pro, 17'' monitor, resolutions: 1600x1200 at 72Hz, 1280x1024 at 85Hz, MPRII ergonomic digital controls, Diamondtron Tube
16Mb Diamond Viper V550 AGP ultra fast graphics card, uses the Riva TNT chipset which is Xfree OK.
8.4Gb Ultra DMA IDE hard drive
3.5" Panasonic floppy drive
Iomega 100Mb Internal ATAPI Zip drive
40 Speed Samsung CD-ROM
Creative Labs SoundBlaster 16 Soundcard
Labtech 1012, quality mini powered speakers
Windows '98 dual CD Set with training CD and license
Intel Etherexpress 10/100Mb/s network card for support of 10BaseT and 100BaseT (82559 chipset).
Diamond Supra External 55,600b/s fax/data modem, BABT approved V.90
Logitech 3 Button mouse

(try dmesg on a linux computer)

What on earth does all this mean? The most important thing to realise is that most of this will be obsolete by the time you graduate. In fact, although we only got this in mid-1999, it is already impossible to buy most of the components - no-one can be bothered to manufacture such out-of-date equipment, and my computer has already been upgraded.

So, why bother to look at this? The point is that details change, but the underlying concepts are valid forever, and those are what we want to concentrate on. Beware - some of what I am going to tell you is "lies to students" - not the whole truth, but enough to be going on with until you know a lot more. You will get a lot more of the truth in course-units like CS1031 and CS1211.

CPU and Memory

flash EPROM BIOS. Pentium III 450MHz Processor, 512k on cartridge cache, 128Mb memory as 1 x 128Mb 100MHz SDRAM DIMM

The CPU of my computer is a Pentium III. The Pentium III is to MU0 as a Boeing 747 is to the Wright brothers' first aeroplane. It has many more registers, and many more operations, and can deal with much bigger numbers and more memory, and is enormously more complicated internally, but it is still based on the same principles as MU0. (see /proc/cpuinfo on a linux computer.)

The memory of my computer consists of some ROM (actually flash EPROM) holding the BIOS, half a megabyte of RAM acting as a cache, and 128 megabytes of RAM (actually SDRAM) as the main memory. RAM is Random Access Memory - we can read from or write to any memory location, and the time taken does not depend on which location we access. ROM is Read Only Memory - we can read from it but not write to it, but otherwise it is similar to RAM. However, the information in ROM is never lost, whereas ordinary RAM loses its information when the power is turned off. Therefore, the ROM is used to hold the first instructions the computer obeys each time it is turned on, the BIOS (Basic Input-Output System). Flash EPROM is a kind of ROM that can be changed with a lot of effort - EP stands for Eraseable Programmable - making it easier to build systems in the first place. However, it shouldn't normally be changed by the user - what would happen if the computer crashed partway through rewriting the BIOS? (see /proc/meminfo on a linux computer.)

The version of the Pentium III used in my computer can perform up to 450 million instructions per second (MIPS). However, the main RAM in my computer can only handle at most 100 million accesses per second. (The whole truth is more complicated, but you get the general idea.) The instructions of the Pentium III are similar to but more complex than those of MU0, as they describe which registers to load, store, or perform arithmetic on, and can perform many more different kinds of operations. As with MU0, each instruction has to be read from memory, decoded, and then any data values not already in registers must be read from memory (or sent to memory by a store instruction). Therefore, on average we access memory about twice for each instruction obeyed, so the main RAM seems to work at about 10% of the speed of the CPU - what is going on?

The magic word is cache. (This is part of a bigger idea called memory hierarchy or virtual memory, that we will meet in later lectures.) The basic idea is relatively straightforward, but the details of its implementation can be very complex. A cache is a small, fast, expensive memory, that we put between a big, slow, cheap memory and a fast device such as a CPU. The cache starts off empty, and each time the CPU accesses the main memory a copy of the data is left in the cache. If the CPU needs this data again soon afterwards it will be able to use the copy in the cache instead of waiting for the main memory. Typically, between 90% and 99% of the accesses to memory can be satisfied by the cache without going to main memory, so we can get by with a main memory that only works at 10% of the speed needed without losing too much time. Eventually, the cache will fill up, and to make room for new data it will have to start throwing away the oldest data it holds.

A Pentium typically uses two caches. The smallest (2 chunks of 16KB) and fastest is known as level 1 (L1). The larger and nearly-as-fast is known as level 2 (L2). The L1 cache is on the CPU chip itself. On my Pentium, which is out-of-date, the L2 cache is placed next to the CPU chip on a small circuit board - I have 512k bytes of L2 ("on cartridge") cache. With more recent Pentiums, the manufacturing technology has improved enough that a 256k-byte L2 cache can fit on the same chip as the CPU.

(A chip is a few square centimetres of silicon, to which tiny amounts of other chemicals have been added in incredibly fine patterns to create millions of transistors and circuits linking them - 9.5 million transistors in my Pentium, which has features .25 $\mu$m across. Newer Pentiums have .18 $\mu$m features, so nearly twice as many transistors can be put in the same space, which is how the L2 cache can fit.)

Cache is usually Static RAM (SRAM), which is faster but more expensive than the Dynamic RAM (DRAM) used in the main memory. On my computer, the main memory is Synchronous DRAM (SDRAM), which transfers several adjacent words of memory in one go to the cache, so that if the CPU asks for the next word (e.g. the next instruction) it is already available in the cache. (SDRAM works with 64-bit words, and transfers 4 words in a burst, to give 32 bytes in total.) SDRAM is about twice as fast as its predecessors, EDO DRAM and BEDO RAM, but it is already being replaced by technologies such as RDRAM or DDR RAM, which are several times faster again.

Filestore

8.4Gb Ultra DMA IDE hard drive. 3.5" Panasonic floppy drive. Iomega 100Mb Internal ATAPI Zip drive. 40 Speed Samsung CD-ROM.

Something we did not consider at all with MU0 was peripherals - how does information move between the computer (CPU and Memory) and the outside world? The details of how peripherals are acessed by the computer will be dealt with in CS1031 - we are just going to look at why we need them and what their characteristics are.

The various kinds of disks are mainly used to hold files (and swap space - described in later lectures). They come in various forms with different characteristics. The hard disk is the biggest and fastest. It is normally fixed in the computer, and the disk cannot be removed from the drive. The other three - the floppy, the Zip disk (nothing to do with Zip compression!) and the CD-ROM - are just drives, into which disks of the correct type can be inserted temporarily. Floppy disks and Zip disks, like the hard disk, use magnetic memory, and apart from size are fairly similar. (Jaz and Zip are brand-names for similar but incompatible ranges of disks and drives - Jaz disks tend to be the larger.) CD-ROM disks use optical memory, and have some significant differences from magnetic disks. In particular, CD-ROM is Read-Only, although there are Write-Once Read-Many (CD-WORM) and fully rewriteable (CD-RW) versions. There are also DVD disks, which are similar to CDs but can contain much more information.

  Fixed disk Removable disk
  (manufacturers' formats) (mainly standard formats)
Magnetic storage hard disk zip/jaz, floppy
(R/W) (largest & fastest) (smallest & slowest)
Optical storage   CD, DVD
(W much harder than R)    

Whereas with RAM or ROM we can access a single value (byte or word) at a time, the information on disks is grouped together into blocks of .5K to 8K bytes (of a fixed size on any one disk). When we access information on a disk, we access a block at a time. (Blocks may be called sectors or clusters, or perhaps we refer to the physical piece of disk as a sector, and the information on it as a block, and the operating system groups blocks together into clusters. It doesn't really matter for now, but there may be times when these differences are absolutely crucial.)

The bits and bytes that make up each block are stored in strips on the surface of the disk. They are accessed by read/write heads, which stay roughly in one place as the disk rotates past. There is usually one such read/write head for each surface of the disk - CDs have one surface, most other disks have two, and hard disks can consist of several physical disks (known as platters) stacked one above the other, each with its own read/write heads. The read/write heads are able to move across the disk, at right-angles to its rotation, so that any useful part of the disk can be accessed. Where there is more than one read/write head, they usually all move in and out together.

With magnetic disks, the blocks containing the information make up a set of concentric circles known as tracks, and there are the same number of blocks around each circle. Because of this, the blocks of information don't usually completely fill the disk, as towards the centre they would be squashed together too tightly. With optical disks (CD and DVD) the blocks make up one long spiral, and each block is physically the same length no matter where it is on the disk. Because of this, optical disks have to rotate at different numbers of revolutions per minute (rpms) depending on how close the read/write head is to the centre of the disk, but more of the area of the disk can be used. This is know as constant linear velocity (CLV), whereas magnetic disks use constant angular velocity (CAV) - they always rotate at the same rpms.

To access information on a disk, the read/write head has to be exactly over the block on the surface and wait while it spins past. Therefore, the time taken has three components:

All these times are of the order of tens of milliseconds. The seek time and latency are obviously variable, depending on where the required block is relative to the current position of the heads. We can put all the blocks of a file one after another to minimise seek times and latencies when accessing the file. There are many other placement tricks (such as placing heavily used files about half-way in from the edge of the disk, so that the average seek time is reduced). However, since files are of very variable size, and can change size dynamically, it's not usually possible to place the blocks optimally.

  size rpm seek latency data rate
Hard disk 10-180GB 5400-15000 e.g. 8ms 3-5ms 7200rpm:360Mb/s
Zip/Jaz 100MB-2GB ? e.g. 29ms ? e.g. 1.4,2.4 MB/s
3.5" floppy .7/1.4MB 300 ? 100ms 500Kb/s
DVD 4.7-17GB ? (up to 16x) ? ? 16x:20MB/s
CD 650MB 1x:200-530(up to 56x) access $\approx$ 100ms 32x:4.8MB/s

The data rate is determined by the density of data on the disk and speed of the disk, but may also be limited by the speed of the connection to the computer e.g. 30MB/s. Fast (hard) disks usually contain a RAM cache (2-8MB) which is filled at high speed by the disk and then emptied more slowly to the computer while the heads are being repositioned.

Unlike CDs, DVDs can have two layers of information per surface, and/or use both surfaces of the disk.

Floppy disks are outclassed by other disks and only survive because they are cheap and ubiquitous, and so very useful for transferring information between computers.

For completeness, I want to mention magnetic tape devices, which nowadays use tape cartridges rather than reel to reel tape. Access is serial, so average latency is long. Tape is really only suitable for archiving and backups. Tape cartridges are currently similar in size to hard disks (10-100GB) but much slower (5-10MB/s).

User Interface

Keytronics UK keyboard with PS/2 adapter. Iiyama A701GT Visionmaster 400 Pro, 17'' monitor, resolutions: 1600x1200 at 72Hz, 1280x1024 at 85Hz, MPRII ergonomic digital controls, Diamondtron Tube. 16Mb Diamond Viper V550 AGP ultra fast graphics card, uses the Riva TNT chipset which is Xfree OK. Creative Labs SoundBlaster 16 Soundcard. Labtech 1012, quality mini powered speakers. Logitech 3 Button mouse.

The user has various ways of interacting with the computer and seeing its responses. The simplest is to type on the keyboard and see characters appear on the screen (monitor).

A user can only type a few characters per second. Each simple key depression sends one 8-bit character and each special key 3 8-bit characters so the data rate from the keyboard is very low (less than 100b/s). However a single key depression can trigger an arbitrarily large amount of CPU activity - imagine pressing the return key at the end of typing a command.

A character based screen might display 25 lines of 80 characters. Sending a screenful of information therefore requires about 2K bytes to be transmitted. Allowing for blanks, at 9.6Kb/s this takes about a second, so we could use quite simple technology to connect the screen and the keyboard to the computer (e.g. RS232, which we will meet later).

However, if we want to be able to use windowing software and run applications that use interesting graphics, we need to be able to support better devices. As with the simple textual interaction, we still expect to get information out of the computer much faster than we put it in.

There are several standards for computer mice, but the simplest involves transmitting 7 bits (3 buttons, +/-x, +/-y) for each event, which can be a button being pressed or released, or the mouse being moved by a fraction of an inch in any direction. The maximum event rate is likely to be a few tens or hundreds per second.

A high resolution monochrome graphical display comprises about 1M dots or pixels (say 1152 $\times$ 864), each represented by 1 bit. So a single screen comprises 128K bytes of information which is stored in video RAM. To achieve the required transfer rate the CPU writes directly into the video RAM. The picture in the video RAM must be copied sequentially to the screen (as with a TV picture) many time a second. The video RAM has special circuitry (known as a graphics adaptor) to read the information out at around 50 to 80 times per second. The video RAM is usually dual ported, meaning that it can be accessed by two different devices, so the computer can be creating a new screen image while the previous screen image is being transmitted to the monitor.

The number of bits per pixel needed for a colour display depends on the number of colours to be displayed simultaneously. The SVGA (super video graphics array) system uses from 256 to 16 million colours and from 800 $\times$ 600 to 1600 $\times$ 1200 pixels. To allow 256 colours to be displayed simultaneously each pixel is represented by one byte so anywhere from .5 to 2Mbyte video RAM is needed. (Actually twice that, to allow for both the old and the new screen image in memory simulataneously.) The required data rate out of the video RAM is 8 times that of the monochrome case, around 50-100Mbytes per second. 16 million colours requires 24 bits or 3 bytes, which uses 3 times this memory and data rate. (32-bit colour uses an extra 8-bit ``alpha'' field, which defines transparancy, for further processing to create 24bit colour.) Notice how much storage space uncompressed pictures need compared to simple text.

If I wanted to, apparently I could use 1600 $\times$ 1200 pixels per image, * 3 (or 4) bytes of colour per pixel, * 2 images = 11,520,000 (or 15,360,000) bytes. I actually have 16MB of video RAM on my graphics card (which drives the monitor) which can operate at a maximum of around 500MB/s. (see /etc/X11/XF86Config)

  bits   typical screen sizes typical RAM typical data rates  
characters 8 ASCII 80 * 25 =2K 2KB 2KB/s (1Hz)
pixels 1 black/white 640 * 400 =256K 32KB (1b) 1.6MB/s (50Hz)
  8 256 colours 800 * 600 =480K    
  24 ``true'' colour 1024 * 768 =786K    
  32 + alpha 1152 * 864 =995K 3MB (24b) 150MB/s (50Hz)
      1280 * 1024 =1,310K    
      1600 * 1200 =1,920K 5.8MB (24b) 288MB/s (50Hz)

A sound card needs to be able to operate at a similar rate to audio CD disks - 16-bit samples at 44.1KHz per channel (i.e. 176.4KB/s for stereo) although speech may only need 8-bit samples. The sound card uses a D-to-A (digital to analogue) converter to drive the loudspeakers or headphones. It is also possible to connect a microphone to record speech or music via an A-to-D (analogue to digital) converter. This can be used to recognise speech input, although it does not yet appear to be totally successful.

There is no printer on the list we are looking at, but they are very useful so we ought to consider them. Originally, printers only used a fixed character set. As with simple computer screens, sending ASCII characters to a printer with a built-in character set involves a relatively low bandwidth and an interface running at say 9.6Kb/s (e.g. RS232 - see below) is adequate. Character based printers are rapidly becoming obsolete and being replaced by graphical based printers. Producing graphics as a sequence of dots on a laser printer at 300 dots per inch in each direction requires a substantial amount of data to be transmitted so a single page can take up to 10 minutes through a simple interface. (Unencoded 300 $\times$ 300 $\times$ 80 is about 7Mbits). Faster links such as USB and ECP are being provided, as we will see later.

Communications

Intel Etherexpress 10/100Mb/s network card for support of 10BaseT and 100BaseT (82559 chipset). Diamond Supra External 55,600b/s fax/data modem, BABT approved V.90

``Communication'' implies a bidirectional connection: information can be transmitted in both directions. Some systems allow both ends to talk at once, in others they have to take turns.

Because each end of the communication has to agree to the form of the transmissions, standard protocols are very important. These are sets of rules describing the communication at various levels, including things like electrical voltages and frequencies, encodings, acknowledgements, message-lengths, and how to recover from errors.

If we only use 1 wire to carry data, we can only transmit 1 bit (or perhaps a few bits by using clever encodings) at a time, so several bits must be sent one-after-another to transmit a character. This is known as serial communication. Parallel communication can transmit e.g. a complete character in one go, requiring 8 wires (or more) to carry the data. The further we wish to communicate, the fewer wires we want to use, so most connections of more than a few meters are serial.

Point to point communication

PC COM ports (COM1 and COM2) are an implementation of RS232 (more correctly known as RS-232C or EIA/TIA-232-E - you may even find it called RS-422 or RS-423, which are enhanced versions), a simple communications protocol that uses four or more wires to transmit information in both directions between two points. There are 2 wires carrying data, one in each direction, so this is a serial communications system that allows both ends to talk at once.

A modem (mo-dulator/dem-odulator) is used to transmit digital information over a phone line. Voice phone lines can only handle about 4KHz, so modern modem protocols use compression to reduce the amount of information to transmit, and use phase and amplitude encoding to transmit several bits in one cycle, so that they can operate at up to 55.6Kb/s. Modern modems are essentially little computers in their own right, with their own CPU and RAM to deal with the compression and a tiny command language (the Hayes modem AT command set), and an extra Digital Signal Processor (DSP) to deal with the phase and amplitude encoding. My modem is external, connected to my computer via an RS232 connector to COM1. (Internal modems rely on the CPU of the PC rather than being able to operate on their own.)

A fully digital connection over the public phone network using existing wiring is provided by Integrated Services Digital Network (ISDN). However ISDN channels operating at 64Kb/s look slow by modern standards and ISDN is becoming obsolete as it is being introduced. A more modern alternative is Asynchronous Digital Subscriber Line (ADSL), which can provide up to 4Mb/s using a 780kHz line.

Network communications

The computers within a building are generally connected together in a Local Area Network (LAN). Home computer can use modems to connect to the network or to an Internet Service Provider (ISP), a commercial company providing access to the Internet. Point to Point Protocol (PPP) is often used to transmit data between the home computer and the ISP.

A LAN usually has a relatively high bandwidth, implemented using a single homogeneous technology such as Ethernet. The physical links between the nodes can use various kinds of wires or optical fibre, depending on the required bandwidth and distance of communication:

Twisted pair
Wires, extensively used in telephony. Typical data rates of 9.6Kb/s, but up to about 4Mb/s is possible with suitable equipment. Used in most low-cost LANs within a building and more recently for Ethernets.

Coaxial cable
used in LANs and individual cable television connections. Ethernet is 10Mb/s but up to 500Mb/s possible.

Optical fibre
High performance digital transmission medium, immune from electrical noise and particularly suitable for the largest networks. Typical data rate 100Mb/s but 2Gb/s possible. Best suited to point-to-point communication. Used for cable TV and much trunk communication. Perhaps the single most important technological contribution to the communications revolution.

Ethernet is a form of fast LAN where a bus, operating at 10Mb/s (10Base-T) or 100Mb/s (100Base-T or Fast Ethernet) and using coaxial cable, visits each of the nodes (computers). Newer versions are 1Gb/s (Gigabit) and 10Gb/s (10-Gigabit), which use optical fibre.

Connecting everything together

Chaintech BX chipset Pentium II Motherboard, ATX form factor, Intel 82440BX Chipset, On board fast i/o, 1xECP/EPP parallel port, 4x Mode 4/ UDMA33 IDE ports, 2x USB Ports, 4x 168Pin DIMM sockets, support for 100MHz SDRAM, flash EPROM BIOS, Slot1 processor socket and Advanced Graphics Port slot, PII 233 to Pentium III 500MHz capability. Quality ATX midi tower case with 3x5.25" bays and 4x3.5" bays (2 hidden), 230W ATX power supply.

We have had a look at the components that make up a PC. Now, we need to see how they are linked up to make a complete computer. We know, from MU0, that the CPU and RAM are linked by a bus, but how are the peripherals connected?

Lets start by looking at a very slow device, the keyboard. Typically, a user will only type at most a few characters per second, so it would be sufficient for the CPU to poll the keyboard a few times a second to check if any characters have been typed since the last time it looked, and if so read them in.

If we look at a slightly faster device, such as a modem, this deals with at most a few thousand characters per second. It is unreasonable to expect the CPU to poll the modem at this rate, so instead we arrange for the modem to interrupt the CPU every time it has received or transmitted a character, to ask the CPU to read what it has received or give it a new character to transmit. The CPU has to stop what it is doing, remembering where it was up to, then deal with the modem, and then go back to what it was doing. This will take perhaps a few hundred instructions, so in total this takes perhaps a thousandth of the CPU's time. (In reality, the keyboard is normally also interrupt-driven, rather than polled.)

A fast peripheral, such as the hard disk, reads and writes millions of bytes per second - mine goes at 33MB/s. If the CPU was interrupted for each byte, it would spend all its time dealing with the disk. However, whereas it is likely that the CPU has to do something with each character from a keyboard or modem (for example, if the user is typing into an editor), it is unlikely to need to react to the disk until a complete block or even a complete file has been transmitted (for example, if a program is being loaded so it can be run, or the editor is saving a file). Because of this, fast peripherals such as hard disks normally use Direct Memory Access (DMA) to read or write data directly to RAM, and only interrupt the CPU when a complete block has been transmitted.

Therefore, for slow peripherals, we just need a link between the CPU and the peripheral, to transmit commands from the CPU, status information from the peripheral, and data in either direction. For fast peripherals, however, although we still need a link to the CPU for commands and status, we also need a link to the RAM for data. As with the links between registers within MU0, rather than build many special-purpose links, we use a single bus, linking CPU, RAM and all peripherals.

This bus is provided by the motherboard, a printed circuit board, which sits in the `midi tower case', along with the power supply and the disk drives in their `bays' (5.25" for CD-ROM and ZIP disk, 3.5" for floppy and hard disk - the latter is in a hidden bay, as the disk cannot be removed from the drive).

All the computer components that we have looked at plug into the motherboard one way or another. Chips, such as CPU and RAM, usually connect directly into one-of-a-kind, special purpose sockets (although there are multiple sockets for RAM). Peripherals usually connect via cables into replicated, general purpose ports, allowing for as many devices as the user requires. Each socket or port is simply a physical connector, with all the right electrical connections and extra electronics, via which a device can be plugged into a bus. Different kinds of buses have different restrictions on the devices they can support. There are usually fewer peripheral ports than any theoretical maximum, as they have a significant cost in hardware and space on the motherboard.

There are a couple of general points I want to make. The first is about balance - the speeds and/or sizes of the various components must be chosen so that there are no significant bottlenecks. For example, every couple of years or so the number of transistors on a chip doubles, and CPU speed increases, so RAM speed also needs to be increased, as does that of peripherals and buses. Unfortunately, CPU speed seems to be increasing a lot faster than that of RAM and peripherals, so more effort has to go into things like caches that make these devices seem faster. There can also be some trade-off between size and speed - if you can't make cache or RAM faster, perhaps you can make it bigger instead, so you need to use even slower devices less often. The need for speed is particularly visible with buses - PCs have half-a-dozen, most of which have gone through several upgrades, and most of which are only still there so that old peripherals can still be connected to new computers.

The second general point is about flexibility - systems like plug and play are increasingly used, so that every combination of peripherals that users want can be made to work. The CPU is nowadays able to interrogate buses and peripherals to ask them what facilities they provide, such as speed and communication protocols, or even what make and model they are. It is then able to tailor its software, and even automatically load extra software, to cope with whatever has been connected.

A final general point is to remind you about what I said at the start of this section - just about everything in the rest of this section is out of date, or rapidly becoming so. The only reasons I am going into detail is to give you an idea of some real-world considerations, and because I found it fun. I don't expect you to learn any of these details unless you want to.

Details

\includegraphics[width=16cm]{motherboard.ps}
The motherboard.

For various reasons, some historical, and some to do with cost, rather than using one bus for all the peripherals, PCs are built with several buses with different speeds. However, all these buses are physically connected together, so that logically they still form one bus.

The Pentium III CPU chip and the L2 cache sit on a small circuit board (`cartridge' or `daughter card'), which in turn fits into the `slot 1' socket on the motherboard.

The main RAM chips are also on a small circuit board, known as a DIMM (dual in-line memory module), that fits into one of the four DIMM sockets on the motherboard. Each DIMM has 168 pins, of which 64 carry data. The SDRAM on my computer can operate at about .5GB/s. DIMMs are designed to have some flexibility. For example, when my PC was upgraded, it was one of three machines that had their RAM DIMMs replaced by another four times as large (512MB). The three redundant 128MB RAM DIMMs were then plugged into the three empty sockets of a fourth machine, so that it also has 512MB RAM.

The video system is connected to the Accelerated Graphics Port (AGP), which operates at similar speeds to RAM (on my computer, at about .5GB/s, but versions already exist that are twice as fast). The AGP is mainly used for communication from the CPU to the graphics card, which in turn is connected to the monitor.

Communication between these three fast devices - CPU, main RAM, and AGP/video system - is provided by the North Bridge, also known as the System Controller or Memory Controller. This allows several things to be going on at once, minimising clashes between the devices, and allowing requests to bypass delays. My North bridge is the Intel 82443BX PAC.

The CPU needs to be able to communicate with all the other peripherals, albeit more slowly, so the North Bridge has a fourth connection, to the Peripheral Component Interconnect (PCI) bus. The PCI specification allows for 100MHz and 66MHz versions, and for 64 bits of data to be transferred in each cycle, but usually a 32bit/33MHz version is used, with a maximum data-rate of 133 MB/s. However, typical throughputs are only about one-third to two-thirds of the maximum. Some high speed peripherals, such as Ethernet, are directly attached to the PCI bus, and so can talk directly to the North Bridge. (see /proc/pci on a linux computer)

The rest of the peripherals are controlled by the South Bridge, also known as the Peripheral Bus Controller or I/O Controller. My South bridge is the Intel 82371EB PIIX4E. On my computer, the South Bridge is connected to the North Bridge, and thus the RAM and CPU, via the PCI bus. However, during 2001 this was being replaced by various as yet un-standardised buses, working at 266MB/s and maybe even 1.6GB/s, to cope with ever faster PCs. Some chip designers are even combining the North and South Bridges into a single chip.

The South Bridge is connected to several slower buses, such as ISA, USB and ATA/IDE, and many peripherals are attached to it via these buses. However, the South Bridge also connects via a Low Pin Count (LPC) interface to the Super I/O chip which provides the slowest and most specialised connections: the COM serial ports, ECP/EPP parallel port, mouse, keyboard, floppy disk controller, game port and infrared interface. For example, when I press a key on the keyboard, the data first goes to the Super I/O chip, and from there via the LPC to the South Bridge, and from there via PCI to the North Bridge, and from there to the CPU, where it can be dealt with.


\begin{picture}(17,8)
\thicklines % put(0,0)\{ framebox(17,8)\}
\put(3,6){\frame...
...e(0,-1){2}} % SB-USB
\put(5.5,3.5){\Large\textbf{LPC}}
\thicklines\end{picture}

AT Attachment (ATA) and Intelligent/Integrated Drive Electronics (IDE) describe an interface for mass storage devices (hard disk, CD, tape etc.), in which the controller is integrated into the drive. ATA is a PC specific implementation of the more general IDE, and both come in several different versions with various names:
ATA or IDE: supports one or two hard drives with a 16-bit interface, based on ISA.
ATA-2 or Fast ATA or Enhanced IDE (EIDE): supports faster devices, and runs at 16.7MB/s. AT Attachment Packet Interface (ATAPI) is a protocol originally defined as part of ATA-2/EIDE, to cope with CD-ROM and tape.
ATA-3: a minor revision to ATA-2.
Ultra-ATA or ATA-33: runs at 33 MB/s. Ultra Direct Memory Access (UDMA) or UDMA/33 or DMA-33 is the name given to the PC hardware that supports this speed.
ATA/66: runs at 66MB/s.
ATA/100: 100MB/s.
ATA/133: 133MB/s (new in 2001/2)
I have two peripheral ports on my UDMA/33 bus. One of them is attached to the hard drive, the other is used for both CDROM and Zip drives, the one piggy-backed off the other. (see /proc/ide on a linux computer)

Industry System Architecture (ISA) used to be the main PC bus, but started to be replaced by PCI in the early '90s. It was based on the CPU buses of the original PCs, known as the AT bus. It transmits 2 bytes at a time at 8.33MHz (16.67MB/s).

Universal Serial Bus (USB) supports data transfer rates of 1.5MB/s or 1.5Mb/s. A single USB port can be used to connect peripheral devices such as mice, modems, keyboards, audio players, joysticks, telephones, scanners, and printers. USB is intended to completely replace serial and parallel ports. A new version, USB 2.0, provides speeds of up to 480Mb/s. To connect extra peripherals, a hub can be used to combine several point-to-point connections into one, which can then be plugged directly into the computer or indirectly via another hub. The connections also carry 500mA of electrical current, sufficient for low power devices. The only limit is a maximum of 127 devices in total.

Enhanced Parallel Port/Extended Capability Port (EPP/ECP) is for bi-directional parallel communication between a computer and peripheral devices. EPP is for non-printer peripherals such as disks and networks, ECP is for printers and scanners. EPP/ECP are part of IEEE Standard 1284, which also specifies support for current methods (including Centronics, used for printers) so that both old and new peripherals can be accommodated. Compared to Centronics, the main advantages of EPP/ECP are that they are about 10 times faster and that they provide full support for bi-directional communication.


next up previous
Next: About this document ... Up: ho Previous: Numbers and Characters
Pete Jinks 2003-09-25