Oldfield, J.V., Oklobdzija, V.G. “Section IX – Computer Engineering” The Electrical Engineering Handbook Ed. Richard C. Dorf Boca Raton: CRC Press LLC, 2000 The ViewSonic? VP140 ViewPanel is about as flat as a board. This new active-matrix LCD flat-panel has a 14-in. viewing area. Measuring at only 2.5 in. deep and weighing just 12.1 lb, the VP140 weighs only a fraction of standard displays and uses 90% less desktop space. The display unit supports a maximum noninterlaced resolution of 1024 ′ 768 pixels at a 75-Hz refresh rate. Additionally, the VP140 monitor can be configured for both desktop or slim line wall displays and it supports up to 16.7 million color images for both PC and Macintosh? environments. This revolutionary view panel represents the future of monitors. (Photo courtesy of ViewSonic Corporation.) ? 2000 by CRC Press LLC ? 2000 by CRC Press LLC IX Computer Engineering 86 Organization R. F. Tinder, V. G. Oklobdzija, V. C. Hamacher, Z. G. Vranesic, S. G. Zaky, J. Raymond Number Systems ? Computer Arithmetic ? Architecture ? Microprogramming 87 Programming J. M. Feldman, E. W. Czeck, T. G. Lewis, J. J. Martin Assembly Language ? High-Level Languages ? Data Types and Data Structures 88 Memory Systems D. Berger, J. R. Goodman, G. S. Sohi Memory Hierarchies ? Cache Memories ? Parallel and Interleaved Memories ? Virtual Memory ? Research Issues 89 Input and Output S. Sherr, R. C. Durbeck, W. Suryn, M. Veillette Input Devices ? Computer Output Printer Technologies ? Smart Cards 90 Software Engineering C. A. Argila, C. Jones, J. J. Martin Tools and Techniques ? Testing, Debugging, and Verification ? Programming Methodology 91 Computer Graphics E. P. Rozanski Graphics Hardware ? Graphics Software 92 Computer Networks T. G. Robertazzi Local Area Networks ? Metropolitan Area Networks ? Wide Area Networks ? The Future 93 Fault Tolerance B. W. Johnson Hardware Redundancy ? Information Redundancy ? Time Redundancy ? Software Redundancy ? Dependability Evaluation 94 Knowledge Engineering M. Abdelguerfi, R. Eskicioglu, J. Liebowitz Databases ? Rule-Based Expert Systems 95 Parallel Processors T. Feng Classifications ? Types of Parallel Processors ? System Utilization 96 Operating Systems J. Boykin Types of Operating Systems ? Distributed Computing Systems ? Fault-Tolerant Systems ? Parallel Processing ? Real-Time Systems ? Operating System Structure ? Industry Standards 97 Computer Security and Cryptography J. A. Cooper, O. Goldreich Computer and Communications Security ? Fundamentals of Cryptography 98 Computer Reliability C. G. Guy Definitions of Failure, Fault, and Error ? Failure Rate and Reliability ? Relationship Between Reliability and Failure Rate ? Mean Time to Failure ? Mean Time to Repair ? Mean Time Between Failures ? Availability ? Calculation of Computer System Reliability ? Markov Modeling ? Software Reliability ? Reliability Calculations for Real Systems 99 The Internet and its Role in the Future G. L. Hawke History ? The Internet Today ? The Future ? 2000 by CRC Press LLC John V. Oldfield Vojin G. Oklobdzija Syracuse University University of California OMPUTER ENGINEERING is a discipline that deals with the engineering knowledge required to build digital computers and special systems that communicate and/or process or transmit data. As such, computer engineering is a multi-disciplinary field because it involves many different aspects of engineering that are necessary in designing such complex systems. To illustrate this point one can think of all the various parts of engineering that are involved in a design of a digital computer system. One can start with the knowledge of the material science that is necessary to process the materials of which the integrated circuits are made. One also has to deal with the devices and device physics to make the most efficient transistors of which computing sytems are built. The knowledge of electrical engineering and electronic circuits in particular is necessary in order to design fast and efficient integrated circuits. One level further in the hierarchy of the required knowledge is a logic design which is an implementation of the digital functions. Digital design involves not only an intimate knowledge of electrical engineering but also the use of computer aided design tools and algorithms for efficient implementation of computational structures. Building a complex computer system is similar to building a house — at the very beginning one cannot be bothered with all the details involved in the process, such as plumbing and electrical wiring. Similarly a process of designing an electronic computer starts with an architecture that specifies the functionality and major blocks. Much like building a house, those blocks are later designed by teams of engineers using the architectural specifications of the computer. Computer architecture is on a cross-road between electrical engineering and computer science. On one hand, one does not need to specify all the details of implementation while defining an architecture. However, if one does not know the important aspects of the design which require the knowledge of electrical engineering, the architecture may not be good. Given that the implementation of the architecture has to serve as a platform for various applications, the knowledge of software, compilers, and high-level languages is also necessary. Computer engineering is not only a very diverse discipline, but as such it is a subject of very rapid changes reflecting high rate of progress in a variety of disciplines encompassed by computer engineering. The perfor- mance of digital computers has been doubling steadily every two years while the capacity of the semiconductor memory has been quadrupling every three years. The price-performance figure has dropped for two orders of magnitude in the last ten years. This trend has radically changed the way the computer is perceived today. From exclusive and expensive machines, affordable to only a few, it has become a commodity. For example, an average automobile today contains in the order of 20 processors controlling various aspects of the machine function, brake system, navigation, etc. Some of the technology-specific aspects of computer engineering were covered in Section VIII. This section, however, is concerned with higher-level aspects which are substantially independent of circuit technology. Chapter 86 reviews organizational matters which particularly affect computer processor design, such as the arithmetic and logical functions required. The next chapter considers the major topic of programming, which may be different in each “layer,” using the previous analogy. Programming too has long been dominated by a particular paradigm, the so-called imperative model, in which the programmer expresses an algorithm, i.e., a process for solving a problem, as a sequence of instructions—either simple or complex, depending on the type of programming required. Recently others have emerged, such as rule-based programming, which has a declar- ative model, i.e., the user specifies the facts and rules of a situation and poses a question, leaving the computer (“knowledge-engine”) to make its own inferences en route to finding a solution or set of solutions. Computer memory systems are considered in Chapter 88. Early purists preferred the term storage systems, since the organization of a computer memory bears little resemblance to what we know of the organization of the human brain. For economic reasons, computer memories have been organized as a hierarchy of different technologies, with decreasing cost per bit as well as increased access times as one moves away from the central processor. The introduction of virtual memory in the Manchester Atlas project (c. 1964) was a major break- through in removing memory management from the tasks of the programmer, but recently the availability of vast quantities of semiconductor memory at ultralow prices has reduced the need for this technique. The topic of Chapter 89 is the input and output of information. Early computers were confined almost exclusively to character information, but “input/output” now refers to any form of transducer, to choose an engineering term, which allows any form of information to be sensed whether in analog or digital form, entered C ? 2000 by CRC Press LLC into a computer system, and be output by it in a correspondingly useful form. Information may vary in time such as a temperature indication, in two dimensions such as the user’s action in moving a mouse, or even in three dimensions, and output may be as simple as closing a contact or drawing a picture containing a vast range of colors. Software engineering as discussed in Chapter 90 refers to the serious problem of managing the complexity of the layers of software. This problem has few parallels in other walks of life and is exacerbated by the rate of change in computing. It is dominated by the overall question “Is this computer system reliable?” which will be referred to in Chapter 98. Some parallels can be drawn with other complex human organizations, and, fortu- nately, the computer itself can be applied to the task. Graphical input and output is the topic of Chapter 91. Early promise in the mid-1960s led to the pessimistic observation a decade later that this was “a solution looking for a problem,” but as computer display technology improved in quality, speed, and, most importantly, cost, attention was focused on visualization algorithms, e.g., the task of producing a two-dimensional representation of a three-dimensional object. This is coupled with the need to provide a natural interface between the user and the computer and has led to the development of interactive graphical techniques for drawing, pointing, etc., as well as consideration of the human factors involved. As computers have extended their scope, it has become necessary for a computer to communicate with other computers, whether nearby, such as a file server, or across a continent or ocean, such as in electronic mail. Chapter 92 reviews the major concepts of both local and wide area computer networks. Many engineers were skeptical as to whether early computers would operate sufficiently long before a breakdown would prevent the production of useful results. Little recognition has been given to the pioneers of component and circuit reliability that have made digital systems virtually, but still not totally, fault-free. Critical systems, whether in medicine or national defense, must operate even if components and subsystems fail. The next chapter reviews the techniques employed to make computer systems fault-tolerant. The idea of a rule-based system, referred to earlier, is covered in Chapter 94. Application software naturally reflects the nature of the application, and the term knowledge engineering has been coined to include languages and techniques for particularly demanding tasks, which cannot readily be expressed in a conventional scientific or business programming language. Parallel systems are emerging as the power of computer systems is extended by using multiple units. The term unit may correspond to anything from a rudimentary processor, such as a “smart word” in a massively parallel “fine grain” architecture, to a full-scale computer, in a coarse-grain parallel system with a few tens of parallel units. Chapter 95 discusses the hardware and software approaches to a wide variety of parallel systems. Operating systems, which are described in the next chapter, turn a “raw” computer into an instrument capable of performing useful, low-level tasks, such as creating a file or starting a process corresponding to an algorithm, or transferring its output to a device such as a printer, which may be busy with other tasks. As society has become more dependent upon the computer and computer technology, it has become increasingly concerned with protecting the privacy of individuals and maintaining the integrity of computer systems against infiltration—by individuals, groups, and even on occasion by governments. Techniques for protecting the security of a system and ensuring individual privacy are discussed in Chapter 97. Chapter 98 discusses the overall reliability of computer systems, based on the inevitable limitations of both hardware and software mentioned earlier. Given the inevitability of failure, human or component, what can be said about the probability of a whole computer system failing? This may not be an academic issue for a passenger reading this section while flying in a modern jet airliner, which may spend over 95% of a flight under the control of an automatic pilot. He or she may be reassured to know, however, that the practitioners of reliability engineering have reduced the risk of system failure to truly negligible proportions. ? 2000 by CRC Press LLC Nomenclature Symbol Quantity Unit A area m2 A m main amplifier gain A p preamplifier gain A v availability BW bandwidth Mbyte/s C capacitance F d distance m E L illuminance f proportionality factor h Planck’s constant 6.625 ′ 10–34 J·s L latencyns l failure rate m f flip-flop sensitivity m p photodetector sensitivity Symbol Quantity Unit m s Schmitt trigger sensitivity n hardware utilization w angular velocity rad/s P parallelism P c character pitch q drop charge R wheel radius R 1 shaft radius S sensitivity fL S speed-up ratio t L optical loss V b band velocity m/s x rotation angle rad z ( t ) hazard rate