Computer Design A computer aided design and VLSI approach Paul J. Drongowski Chapter 1 - The marketplace. A computer system is a commodity to be produced and sold to customers with specific computational needs. The manufacturer expects to make a profit from the sale and to support that product over its installed lifetime. This "aftermarket" support includes hardware and software maintenance, training and sometime operational responsibilities. The customer expects the system to satisfy a set of requirements within the budget allocated for computing resources including its lifetime operational costs. This chapter examines the nature of the transaction between the manufacturer and customer. It begins by describing the needs of the customer and the demands of the marketplace. Next, computer system requirements are presented from the perspective of the manufacturer. How these demands and requirements affect the technical aspects of computer system design, test, production and maintenance are discussed in the the final section. Section 1 - Customer requirements. In order for a product to be profitable, it must satisfy a need. A customer will purchase a computer system if the perceived need or cost of not purchasing the system become great enough. Four different kinds of resources are typically required to fulfill customer expectations: computation, information storage and retrieval, communication, and interaction with the real world. Above all, we think of computer systems as "data manipulation engines." Given some information which is represented electronically, we want to compute or derive new results from existing information. The results must be produced in a timely manner as most information has time value -- old information is usually worthless. Thus, the customer requires one or more computational resources that will manipulate the information of interest to that customer within the alloted or specified benchmark time. This need may be satisfied by one or more processing units (processors.) Information has some permanence and must be stored until the value of the information is lost. In computer system design, at least three different informational lifetimes may be noted with different store sizes and retrieval (access) times. While data is being manipulated, many intermediate results may be produced and discarded. The life of this kind of information is short, but typically requires high speed access for fast computation. Short duration, fast access information is usually maintained in the general registers, processor cache or primary memory of the computer system. Computation produces information with an intermediate lifetime. This information is stored between periods of computation and requires moderate to very large storage elements such as magnetic disks. Finally, long term information must often be maintained for historical or archival purposes. Access to the information is infrequent, but requires the least expensive storage mechanism possible due to very large volume of data that must be retained. Magnetic tape and digital compact disks (CD-ROM) are useful here. Communication is an essential element in any computing system. At the very least, communication channels are needed to move information from storage to computational elements and back again. Many applications such as banking, military exercises and government depend upon high speed, reliable computer to computer telecommunications. A specialized form of communication exists between the computing system and "the real world." Human to computer communication belongs in this category. Humans are used to the high bandwidth physiologically adapted forms of communication such as speech or handwriting and often become frustrated with the "typewriter" style of most human and computer interactions. Thus, graphics, speech and vision processing and other forms of analog and digital signals will become increasingly important to the usability of computing systems. Since real world phenomena are continuous or analog in nature, conversion to and from the discrete domain of digital computation is required. Given the availability of these resources, the customer also expects the tools to control and manage their use. The electronic devices that compute, store, retrieve and communicate information must be made into readily usable resources such as software processes (programs), files, databases, graphic renderings and intercomputer messages. This is usually the responsibility of the operating system, programming environment, compilers and packaged (turnkey) application software. Section 2 - Market considerations. The sophistication of modern operating systems and compilers has radically changed the customers view of computing systems in general. Before the popularity of higher level programming languages, the features the machine instruction set were critical to the economical production, testing and use of programs. Today, however, the typical user is far removed from the "bare machine." A spreadsheet user is not concerned about the addressing modes or general register set. However, the user has definite ideas about convenience, speed of computation, size and presentation of the spreadsheet and the availability (reliability) of the tool. Software developers and system integration shops are interested in aggregate performance, too, not just the end users. Questions here are "Is it a good C (Pascal, Ada, Fortran, LISP, Prolog) machine?" or "Can a process respond to an external event within 30 milliseconds?" The answers depend upon the efficiency of the operating system or the ability of the compiler to produce tight machine code as well as the base speed of the machine hardware. The demands of the user go beyond the technological achievement of the engineering team in the backroom. The user knows her problem and wants to buy a set of information processing resources to solve that problem. Customer requirements may be stated in terms of a benchmark program or problem which the computing system must solve. As most customers are price sensitive, they want to buy the lowest cost product that satisfies the need. Finally, a product solution that is available today is worth far more in sales than a product which is unavailable or a late entry. With a sizable investment in application software, a customer may desire compatibility with a particular instruction set and operating system such that the machine code may execute on the "compatible." The standardization of programming languages, operating systems, graphics packages and communication protocols helps to alleviate this problem provided that the source code for the application is available. The user (or developer) may then "port" the package to a new host machine without compatibility concerns. One further complication to the marketplace is the variety and range of computing applications. It is difficult and economically inappropriate for one machine to satisfy all users. Applications such as text processing and spreadsheets do not require machine resources beyond the ordinary general purpose computer. Military applications, however, often have very specialized requirements -- features that the business user does not want and will not purchase. Applications that can be supported by general purpose machines are "high volume" since a single machine can be produced in large numbers and employed by many users for perhaps dissimilar uses. Specialized machines are usually "low volume" with only one or a few applications and users. Section 3 - The manufacturer. The manufacturer must translate broad problem-oriented user requirements into technologically objective criteria for the design of the computing product. The market is usual broken into "market segments" which are customers and problems with similar requirements. As a corporate strategy, a manufacturer may target its system toward a particular segment or "niche." As we will see, the size and needs of the segment will directly affect the price at which the product may be offered for sale. Computational requirements may be stated in terms of several benchmark problems or throughput requirements. The problems are solicited from customers in the target segment so that the benchmarks will reflect the needs of real users. A benchmark specification may state that "Machine M must execute program P in T clock time units, use B bytes of primary memory and S bytes of secondary storage." A less useful (but often quoted) measure of performance is the number of operations performed per second. Computer designers will often speak of thousands of instructions per second (KIPS), millions of instructions per second (MIPS), floating operations per second (FLOPS) or even logical inferences per second (LIPS.) This measure does not provide any guarantee that a particular application will be executed with sufficient speed as to be timely. The manufacturer must determine the price that customers are willing to pay for a particular level of performance and when a machine of that performance level must be available for delivery. The expected number of units to be sold (demand) must also be estimated. These decision factors are found through market surveys and customer contact. Section 4 - Technical challenge. Once the issues of performance, price, time to market and volume have been settled, development may begin. The selling price of the system may be separated into several components. * The most important component is profit. The owners (shareholders) demand profitability so that the equity value of the corporate stock will grow and that dividends may be maximized. * If software is "bundled" with the hardware, a portion of the development cost of the software must be included in the selling price. * Of course, the cost of producing the unit must be covered by the asking price. This is called the "recurring cost" because it will occur again and again as each unit leaves the production line. * A portion of the development cost of the hardware must also be added into the unit price. The latter component is a portion of the "non-recurring cost" of the system. The non-recurring cost includes any and all development costs such as managerial, engineering and clerical salaries, support services and the cost of building and testing prototypes. The recurring and non-recurring costs must be kept low in order to keep the selling price down or to increase the profit margin. Recurring costs may be reduced by using fewer components or modules thereby decreasing the physical size, power supply and cooling requirements of the system. Simple mechanical design and attention to manufacturing concerns can play a significant role in cost reduction. Expensive human labor charges can be decreased by raising the level of automation on the assembly line. The involvement of production personnel in all stages of the design process can have a beneficial effect on profitability and competitiveness. Non-recurring costs can be reduced by increasing the productivity of the engineering team through computer aided design (CAD.) Modeling, schematic capture, simulation, place and route, design rule checking and mechanical design aids help the engineering team to manage the enormous complexity of system design and improve the quality of design decisions. CAD tools may also help compress the project schedule thereby affecting the time to market for the product. The non-recurring cost and expected sales volume for the system have a substantial effect on the selling price. The portion of the non-recurring costs which is included in the price is equal to the total development costs divided by the number of units to be sold. Total non-recurring cost Non-recurring cost per unit = ------------------------ Estimated volume Systems to be produced in large quantities can be sold at a lower price since the development cost can be "amortized" across a large number of units. Specialized, low volume products will be more expensive (assuming equivalent development costs.) If the non-recurring cost is underestimated or the volume is overestimated, profitability will be in jeopardy. To be a successful product, deliverable units must be available when the market is ready -- the so-called "market window" for the product. Quite often, the engineering team must take a conservative approach to the design of the system to reduce the risk of missing the market window. Conservative design dictates the use of proven methodologies, tools and technology. Thus, the technology available at a particular time has a substantial effect upon the kinds of machines which may be successfully constructed and sold. Computer vendors have discovered that after market maintenance support is a lucrative source of income. The complexity and proprietary nature of software and hardware components often forces a customer to arrange a maintenance contract with the vendor. Monthly charges are typically one percent of the purchase price of the system. As this is a fixed source of income for the vendor, the return from maintenance contracts can be improved by increasing the reliability of the system and thus reducing the cost of actual field service and repair operations. Increased reliability incidentally improves customer relations and enhance the reputation of the product line. The challenge to computer designers, therefore, is to produce a computer system design which satisfies the functional and budgetary constraints of its potential customers within a market window while returning a good profit to the manufacturer. A good design must take manufacturing and maintenance into account to guarantee a competitive position in the marketplace and profitability throughout the product life cycle. Copyright (c) 1987-2013 Paul J. Drongowski