Part 1—Computer Hardware: Putting It All Together

Perhaps the best way to review your understanding of computer hardware is to put on the plastic pocket protector of a system designer. If you were told to build a certain kind of computer, what kinds of parts would you choose, and why? Let's go through this exercise for five different kinds of computers.

Servers

A server takes requests for information from a network connection, brings it in over the I/O bus and gives it to database software for processing. Using the services of the CPU and other resources, the software finds the information on a disk drive and sends it back over the I/O bus to the network connection.

Obviously, since the I/O bus is a critical part of a server, you will want a bus that is reasonably fast and wide. Next, since data is retrieved from storage, you will also want a fast hard disk. Fast has several dimensions here. First, the disk has to be magnetic, since current optical disks are too slow for fast retrieval. Second, you will want a high capacity disk—in part because data are packed closer together on these disks, which means they are inherently faster and in part because higher capacity means newer and the newer disks usually spin faster. Third, it will be best to have the disks in some kind of array, such as one of the levels of RAID; this will allow greater access speed and higher reliability. What about CPU capacity and memory? Well, that depends on the type of server. If it's a simple file and print server, you don't really need a very powerful CPU. All that it is doing is finding the file on the disk and moving it to the right place, and this doesn't stress the CPU much at all. Although having more memory helps speed up essentially all computer applications, it won't make a big difference in this case. File requests are fairly random, and it's unlikely that moving a lot of data from disk to memory will successfully anticipate requests. All this changes for different kinds of servers, though. Let's talk about an e-commerce Web server.

If your server is on the Web and supporting e-commerce, you will need extensive CPU and memory. In this case, the server doesn't just find a file and move it out. The first step, receiving a request for a Web page and sending it off, is in fact similar to that of a file server, but the next stage, when the user clicks on the page in order to find some item in inventory, means the system suddenly has a lot of work to do. A database request has to be executed, and the result has to be processed—for example information about availability has to be matched with pricing. Then a new Web page has to be generated and sent out. All this requires a fair amount of computation. So, in addition to fast I/O and disks, a Web server will require a powerful CPU—or, if the site is very busy, multiple powerful CPUs to execute many requests simultaneously. It will also need a lot of memory. In this kind of database work, there will be many repetitive requests and it will be possible for the software to anticipate them with a significant degree of success; this means that pulling data off disk and keeping it in memory can lead to a dramatic improvement in performance.

A Graphics System

The server described above has no need of any kind of graphics system other than the minimal amount needed for an administrator looking at a screen to manage the software—establish settings, etc. A machine focused on computer assisted design, however, would be very different. Now the focus moves from I/O and disk speed to graphics processor, CPU, and memory. It's also important to emphasize here that the kind of processing needed has changed. The typical server requires mostly just basic integer operations, but our graphics computer requires that the CPU's instruction set include operations, such as SIMD, that emphasize parallel execution—usually of floating point math. These chores are split between the graphics co-processor and the main CPU. Moreover, if there are a lot of data to be manipulated, the graphics machine needs as much memory as it can get—pulling data off of a disk, even a fast one, is going to really slow things down. Depending on the situation, fast I/O and disks may also be important to graphics—for example, some design environments are heavily networked. But processing—and specialized processing at that—are the keys to a productive graphics system.

An Analytical System

We'll categorize an "analytical system" as one that is used for non-graphical computation. For example, forecasting sales and inventory needs. Such work typically begins with data selection—usually done by a mainframe or a special server—and then takes a fairly small set of information and puts it through a series of mathematically intensive operations. Here CPU speed, typically floating point, is of paramount importance. Also, since many computations are simply slightly varied iterations of previous ones, CPU cache can make an enormous difference. Finally, there needs to be sufficient memory to perform all work without the need to go to disk. Fast I/O and disk performance are nice, but not central.

A Desktop System

It's difficult to categorize the resources required for a typical desktop computer, since they are typically used in many, widely divergent ways. Some of these machines are used for graphics, some for analysis, and some even as servers. They are the proverbial jacks of all trades, and masters of none. Of course, this matches the needs of most users. Thus, the normal desktop machine comes with: strong integer performance in the CPU, since that's what most office applications use; good graphics processing since that's what home users are increasingly looking for, modest I/O capabilities since they aren't usually moving vast quantities of data; and moderate amounts of storage and memory.

A Portable System

Portable systems, which are fast becoming the core of the market, require very different hardware than the others. First, until someone can bring those cold fusion batteries to market, low power consumption is the principal criterion. This almost always rules out a CPU with a very high clock speed. But there are alternative ways to get things done. The most common approach at the moment is to use a very small general purpose CPU core and team it with some application-specific circuits. This means that few clock cycles are wasted, trading flexibility for efficiency. Also, since moving media consumes too much power, disks are out and flash memory is in. The tradeoff here is that you get greater speed and lower power consumption in return for higher cost per unit of data stored. Since portable devices don't typically need a lot of storage, this is OK. Finally, portable systems don't yet have a good solution for graphics. If high resolution color is necessary, you take a big hit to the battery, one that increases with greater screen size. Fast graphics, such as games and video, accelerate the penalty substantially.

In conclusion, you can see that "putting it all together" in hardware isn't like a jigsaw puzzle. This is more like Legos, where the pieces fit together in a great many different ways, many of which can produce functional and useful creations. But, before you start to design computers, you have to understand the intimate relationship that hardware has with software and, increasingly, with networks. We'll tackle software first.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.139.90.131