Grabbe_Ramo_Wooldridge_Handbook_of_Automation_Computation_and_Control_Vol_2_1959 Grabbe Ramo Wooldridge Handbook Of Automation Computation And Control Vol 2 1959
Grabbe_Ramo_Wooldridge_Handbook_of_Automation_Computation_and_Control_Vol_2_1959 Grabbe_Ramo_Wooldridge_Handbook_of_Automation_Computation_and_Control_Vol_2_1959
User Manual: Grabbe_Ramo_Wooldridge_Handbook_of_Automation_Computation_and_Control_Vol_2_1959
Open the PDF directly: View PDF .
Page Count: 1119
Download | |
Open PDF In Browser | View PDF |
HANDBOOK OF AUTOMAtiON, COMPUTATION, AND CONTROL Volume 2 COMPUTERS AND DATA PROCESSING NEW YORK JOHN WILEY & SONS, INC. London • Chapman & Hall. Limited " HANDBOOK OF AUTOMATION, COMPUTATION, AND CONTROL Volume 2 COMPUTERS AND DATA PROCESSING Prepared by a Staff of Specialists Edited by EUGENE M. GRABBE SIMON RAMO DEAN E. WOOLDRIDGE Thompson Ramo Wooldridge Inc. Los Angeles. California Copyright © 1959, by John Wiley & Sons, Ine. All Rights Reserved. This book or any part thereof must not be reproduced in any form without the written permission of the publisher. Library of Congress Catalog Card Number: 58·10800 Printed in the' United States of America CONTRIBUTORS L. D. AMDAHL, Thompson Ramo Wooldridge Inc., Los Angeles, California (Chapter 17) C. E. AMMANN, American Airlines, New York City, New York. (Chapter 9) I. L. AUERBACH, Auerbach Electronics Corporation, Narberth, Pennsylvania (Chapters 15 and 16) G. A. BEKEY, Space Technology Laboratories, Inc., Los Angeles, California (Chapter 23) E. E. BOLLES, Thompson Ramo Wooldridge Inc., Los Angeles, California (Co-Editor, Part D) R. BOSAK, System Development Corporation, Santa Monica, California (Chapter 9) J. K. BRIG DEN, Space Technology Laboratories, Inc., Los Angeles, California (Chapter 20) D. R. BROWN, The MITRE Corporation (formerly with Massachusetts Institute of Technology), Lexington, Massachusetts (Chapter 19) J. W. BUSBY, Alwac Corporation, New York City New York (Chapter 5) J. O. CAMPEAU, Litton Industries, Beverly Hills, California (Chapter 31) R. G. CANNING, Canning, Sisson and Associates, Los Angeles, Calif9rnia (Chapter 4) J. W. CARR, III, University of North Carolina (formerly with the University of Michigan), Chapel Hill, North Carolina (Chapter 2) R. B. CONN, Space Technology Laboratories, Inc., Los Angeles, California (Co-Editor, Part C) E. D. COWLES, The Detroit Edison Company, Detroit, Michigan (Chapter 8) H. L. ENGEL, Thompson Ramo Wooldridge Inc., Los Angeles, California (Chapter 18) E. M. GRABBE, Thompson Ramo Wooldridge Inc., Los Angeles, California (Co-Editor, Part D; Chapter 1) B. M. GORDON, EPSCO, Inc., Boston, Massachusetts (Chapter 29) W. J. KARPLUS, University of California at Los Angeles (Editor, Part E; Chapters 21, 25, and 27) W. KINDLE, Electronic Associates, Inc., EI Segundo, California (Chapter 21) v CONTRIBUTORS vi R. T. KOLL,Creole Petroleum Corporation, Caracas, Venezuela (Chapter 10) J. F. LA FONTAINE, EPSCO, Inc., Boston, Massachusetts (Chapter 29) H. T. LARSON, Aeronutronic Systems, Inc., Santa Ana, California (CoEditor, Part C) C. T. LEONDES, University of California at Los Angeles (Chapter 28) H. S. LEVIN, Arthur Young & Company, New York City, New York (Chapter 7) H. LOW, Space Technology Laboratories, Inc., Los Angeles, California (Chapter 26) R. C. MACKEY, University of California at Los Angeles (Chapter 24) M. E. MARON, Thompson Ramo Wooldridge Inc., Los Angeles, California (Chapter 11) M. J. MENDELSON, Norden Division of United Aircraft Corporation, Gardena, California (Chapter 3) I. PFEFFER, Space Technology Laboratories, Inc., Los Angeles, California (Chapter 22) J. I. RAFFEL, Massachusetts Institute of Technology, Lincoln Laboratory, Lexington, Massachusetts (Chapter 19) C. W. SCHMIDT, Teleregister Corporation, Los Angeles, California (Chapter 9) R. L. SISSON, Canning, Sisson and Associates, Los Angeles, California (Chapter 4) N. H. TAYLOR, Itek Corporation, Boston, Massachusetts (formerly with Massachusetts Institute of Technology) (Chapter 14) H. TELLIER, General' Electric Company, Richland, Washington (Chapter 8) E. TOMASH, Telemeter Magnetics, Inc., Los Angeles, California (Chapter 6) L. L. VAN OOSTEN, Allstate Insurance Company, Skokie, Illinois (Chapter 8) A. C. VANSELOW, The Franklin Life Insurance Company, Springfield, Illinois (Chapter 8) R. L. VAN WINKLE, The Franklin Life Insurance Company, Springfield, Illinois (Chapter 8) W. H. WARE, The RAND Corporation, Santa Monica, California (Chapters 12 and 13) G. P. WEST, Thompson Ramo Wooldridge Inc., Los Angeles, California (Chapter 30) J. H. YIENGER, Aeronutronic Systems, Inc., Santa Ana, California (Chapter 5) FOREWORD The proliferation of knowledge now makes it most difficult for scientists or engineers to keep ahead of change even in their own fields, let alone in contiguous fields. One of the fields where recent change has been most noticeable, and in fact exponential, has been automatic control. This three-volume Handbook will aid individuals in almost every branch of technology who must constantly refresh their memories or refurbish their knowledge about many aspects of their work. Automation, computation, and control, as we know them, have been evolving for centuries, but within the last generation their impact has been felt in nearly every segment of human endeavor. Feedback principles were exploited by Leonardo da Vinci and applied by J ames Watt. Some of the early theoretical work of importance was contributed by Lord Kelvin, who also, together with Charles Babbage, pointed the way to the development of today's giant cc.mputational aids. Since about the turn of the present century, the works of men like Minorsky, Nyquist, Wiener, Bush, Hazen, and von Neumann gave quantum jumps to computation and control. But it was during and immediately following World War II that quantum jumps occurred in abundance. This was the period when theories of control, new concepts of computation, new areas of application, and a host of new devices appeared with great rapidity. Technologists now find these fields charged with challenge, but at the saine time hard to encompass. From the activities of World War II such terms as servomechanism, feedback control, digital and analog computer, transducer, and system engineering reached maturity. More recently the word automation has become deeply entrenched as meaning something about the field on which no two people agree. Philosophically minded technologists do not accept automation merely as a third Industrial Revolution. They see it, as they stand about where the editors of this Handbook stood when they projected this work, as a manifestation of one of the greatest Intellectual Revolutions in Thinking that has occurred for a long time. They see in automation the natural vii viii FOREWORD consequence of man's urge to exploit modern science on a wide front to perform useful tasks in, for example, manufacturing, transportation, business, physical science, social science, medicine, the military, and government. They see that it has brought great change to our conventional way of thinking about the human use of human beings, to quote Norbert Wiener, and in turn about how our ~ngineers will be trained to solve tomorrow's engineering problems. They even see that it has precipitated some deep thinking on the part of our industrial and union leadership about the organization of workers in order not to hold captive bodies of workmen for jobs that automation, computation, and control have swept or will soon sweep away. Perhaps the important new face on today's technological scene is the degree to which the broad field needs codification and unification in order that technologists can optimize their role to exploit it for the general good. One of the early instances of organized academic instruction in the field was at The Massachusetts Institute of Technology in the Electrical Engineering Department in September 1939, as a course entitled Theory and Application of Servomechanisms. I can well recollect discussions around 1940 with the late Dr. Donald P. Campbell and Dr. Harold L.' ,Hazen,which led temporarily to renaming the course Dynamic Analysi,s of Automatic Control Systems because so few students knew what "servomechanisms" were. But when the OI's returned from war everybody knew, and everyone wanted instruction. Since that time engineering colleges throughout the land have elected to offer organized instruction in a multitude of topics ranging from the most abstract mathematical fundamentals to the most specific applications of hardware. Textbooks are available on every subject along this broad spectrum. But still the practicing control or computer technologist experiences great difficulty keeping abreast of what he needs to know. As organized instruction appeared in educational institutions, and as industrial activity increased, professional societies organized groups in the areas of control and computation to meet the needs of their members to tell one another about technical advances. Within the past five years several trade journals have undertaken to report regularly on developments in theory, components, and systems. The net effect of all this is that the technologist is overwhelmed with fragmentary, sometimes contradictory, redundant information that comes at him at random and in many languages. The problem of assessing and codifying even a portion of this avalanche of knowledge is beyond the capabilities of even the most able technologist. The editors of the Handbook have rightly concluded that what each technologist needs for his long-term professional growth is to have a body FOREWORD ix of knowledge that is negotiable at par in anyone of a number of related fields for many years to come. It would be ideal, of course, if a college education could give a prospective technologist this kind of knowledge. It is in the hope of doing this that engineering curricula are becoming more broadly based in science and engineering science. But it is unlikely that even this kind of college training will be adequate to cope with the consequences of the rapid proliferation of technology as is manifest in the area of automation, computation, and control. Hence, handbooks are an essential component of the technical literature when they provide the unity and continuity that are requisite. I can think of no better way to describe this Handbook than to say that the editors, in both their organization of material and selection of substance, have given technologists a unified work of lasting value. It truly represents today's optimum package of that body of knowledge that will be negotiable at par by technologists for many years to come in a wide range of disciplines. GORDON S. BROWN Dean, School of Engineering Massachusetts Institute of Technology PREFACE Accelerated advances in technology have brought a steady stream of automatic machines to our factories, offices, and homes. The earliest automation forms were concerned with doing work, followed by the controlling function, and recently the big surge in automation has been directed toward data handling functions. New devices ranging from digital computers to satellites have resulted from military and other government research and development programs. Such activity will continue to have an important impact on automation progress. One of the pressures for the development of automation has been the growing complexity and speed of business and industrial operations. But automation in turn accelerates the tempo of whatever it touches, so that we can expect future systems to be even larger, faster, and more complex. While a segment of engineering will continue to mastermind, by rule of thumb procedures, the design and construction of automatic equipment and systems, a growing percentage of engineering effort will be devoted to activities that may be classified as problem solving. The activities of the problem solver involve analysis of previous behavior of systems and equipment, simulation of present situations, and predictions about the future. In the past, problem solving has largely been practiced by engineers and scientists, using slide rules and hand calculators, but with the advent of large-scale data processing systems, the range of applications has been broadened considerably to include economic, government, and social activities. Air traffic control, traffic simulation, library searching, and language translation, are typical of the problems that have been attacked. This Handbook is directed toward the problem solvers-the engineers, scientists, technicians, managers, and others from all walks of life who are concerned with applying technology to the mushrooming developments in automatic equipment and systems. It is our purpose to gather together in one place the available theory and information on general mathematics, feedback control, computers, data processing, and systems xi PREFACE xii design. The emphasis has been on practical methods of applying theory, new techniques and components, and the ever broadening role of the electronic computer. Each chapter starts with definitions and descriptions aimed at providing perspective and moves on to more complicated theory, analysis, and applications. In general, the Handbook assumes some engineering training and will serve as an information source and refresher for practicing engineers. For management, it will provide a frame of reference and background material for understanding modern techniques of importance to business and industry. To others engaged in various ramifications of automation systems, the Handbook will provide a source of definitions and descriptive material about new areas of technology. It would be difficult for anyone individual or small group of individuals to prepare a handbook of this type. A large number of contributors, each with a field of specialty, is required to provide the engineer with the desired coverage. With such a broad field, it is difficult to treat all material in a homogeneous manner. Topics in new fields are given in more detail than the older, established ones since there is a need for more background information on these new subj ects. The organization of the material is in three volumes as shown on the inside cover of the Handbook. Volume 1 is on Control Fundamentals, Volume 2 is con.., cerned with Computers and Data Processing, and Volume 3 with Systems and Components. In keeping with the purpose of this Handbook, Volume 1 has a strong treatment of general mathematics which includes chapters on subjects not ordinarily found in engineering handbooks. These include sets and relations, Boolean algebra, probability, and statistics. Additional chapters are devoted to numerical analysis, operations research, and information theory. Finally, the present status of feedback control theory is summarized in eight chapters. Components have been placed with systcms in Volume 3 rather than with control theory in Volume 1, although any discussion of feedback control must, of necessity, be concerned with components. The importance of computing in rescarch, development, production, real time process control, and business applications, has steadily increased. Hence, Volume 2 is devoted entirely to the design and use of analog and digital computers and data processors. In addition to covering the status of knowledge today in these fields, there are chapters on unusual computer systems, magnetic core and transistor circuits, and an advanced treatment of programming. Volume 3 emphasizes systems engineering. A part of the volume covers techniques used in important industrial applications by examining typical systems. The treatment of components I PREFACE xiii is largely concerned with how to select components among the various alternates, their mathematical description and their integration into systems. There is also a treatment of the design of components of considerable importance today. These include magnetic amplifiers, semiconductors, and gyroscopes. . We consider this Handbook a pioneering effort in a field that is steadily pushing back frontiers. It is our hope that these volumes will not only provide basic information on new fields, but also will inspire work and further research and development in the fields of automatic control. The editors are pleased to acknowledge the advice and assistance of Dean Gordon S. Brown and Professor Jerome B. Wiesner of the Massachusetts Institute of Technology, and Dr. Brockway McMillan of the Bell Telephone Laboratories, in organizing the subject matter. To the contributors goes the major credit for providing clear, thorough treatments of their subjects. The editors are deeply indebted to the large number of specialists in the control field who have aided and encouraged this undertaking by reviewing manuscripts and making valuable suggestions. Many members of the technical staff and secretarial staff of Thompson Ramo Wooldridge Inc. and the RamoWooldridge Division have been especially helpful in speeding the progress of the Handbook. EUGENE M. GRABBE SIMON RAMO DEAN E. WOOLDRIDGE June 1959 CONTENTS A. COMPUTER TERMINOLOGY Chapter B. ,1. Computer Terminology and Symbols I. Standardization 1-0 I 2. Symbols 1-0 I 3. Glossary of Terminology 1-02 References 1-22 1-0 I DIGITAL COMPUTER PROGRAMMING Chapter 2. Programming and Coding I. Nature of Programming 2-0 I 2. Numbers and Scale Factors 2-12 3. Number Conversion Tables 2-26 4. Program Structure and Flow Diagrams 2-44 5. Machine Logic 2-53 6. Instruction Logic of Common Computers 2-63 7. Traditional Programming Techniques 2-128 8. Automatic Programming: Development and Objectives 2-155 9. Automatic Programming: Assembly Programs 2-163, 10. Automatic Programming: Subroutines, Subroutine Generators, Utility Programs and Integrated Systems 2-167 II. Automatic Programming: Languages, Compilers, and Translators 2-186 xv 2-0 I xvi CONTENTS 12. Automatic Programming: The IT iranslator: Translator Construction 2-200 13. Automatic Programming: A Soviet Algebraic Language Compiler 2-228 14. Automatic Programming: Interpreters 2-234 15. Automatic Programming: Recursive Languages 2-244 16. Logical Programming 2-246 17. Microprogramming 2-251 18. Programs for Maintenance of Equipment 2-258 19. Programming with Natur~1 Language 2-259 Literature. Acknowledgments. and References 2-260 c. THE USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Chapter 3. Data Processing Operations 3-0 I I. Introduction 3-0 I 2. Data Collection 3-02 3. Data Conversion. Transcription. and Editing 3-03 4. Data Output 3-04 5. On-Line Versus Off-Line Processing 3-04 6. Scientific Data Manipulation 3-05 7. Business Data Manipulation 3-06 8. Checking 3-13 Chapter 4. Quantitative Characteristics of Data Processing ,Systems I. Determining System Requirements 4-01 2. Basic System Characteristics ,4-02 3. Basic Equipment Characteristics 4-04 4. Measurement of System Factors 4-04 5. Relating System Characteristics to Equipment Characteristics 4-09 References 4-16 4-0 I xvii CONTENTS Chapter 5. Equipment Description I. General Equipment Description 5-0 I 2. Characteristics of Electronic Data Processing Equipment 5-04 3. Input Equipment 5-09 4. Storage Equipment 5-24 5. Output Equipment 5-33 6. Arithmetic and Logic Unit 5-38 7. Control Equipment 5-40 8. Typical Electronic Digital Equipment 5-43 References 5-43 5-0 I Chapter 6. Facility Requirements I. Physical Installation 6-0 I 2. Personal Requirements 6-09 References 6-13 6-0 I Chapter 7. Design of Business Systems I. General System Requirements 7-01 2. Stages of System Evolution 7-02 3. Detailed Steps of System Design 7-03 4. Economic Impacts of System Changes 7-12 References 7-14 7-0 I Chapter 8. Accounting Applications I. Life Insurance 8-0 I 2. Casualty Insurance 8-08 3. Public Utility Customer Billing 4. Payroll 8-15 8-01 Chapter 9. Chapter 10. 8-11 Inventory and Scheduling Applications I. Inventory Control 9-0 I 2. Aircraft Production Scheduling 9-07 References 9-12 Scientific and Engineering Applications I. Introduction 10-0 I 2. Simultaneous Linear Algebraic Equations and Matrix Inversion 10-02 9-01 10-01 CONTENTS xviii 3. Characteristic Roots and Vectors 10-04 4. Linear Programming 10-06 5. Differential Equations 10-08 6. Statistical Analysis 10-10 References 10-12 Chapter 11. Handling of Non-Numerical Information I 1-0 I I. In'troduction 11-0 I 2. Performing Logic on a Digital Computer 11-02 3. Game Playing Machines II-II 4. The Machine Translation of Languages 11-13 5. Automatic Literature Searching and Retrieval 11-16 References I 1-19 D. DESIGN OF DIGITAL COMPUTERS Chapter 12. Digital Computer Fundamentals 12-0 I I. Digital Computers and Control Systems 12-01 2. Digital Computer Fundamentals 12-02 3. Machine Construction 12-07 4. Number Systems and Number Codes 12-12 5. Machine Number Systems 12-18 6. Computer Design Characteristics 12-25 References 12-30 Chapter 13. Techniques for Reliability I. Introduction 13-0 I 2. Summary of Operating' and Design Techniques 13-02 3. Operating Techniques 13-04 4. System Design 13-05 5. Circuit Design 13-07 6. Maintenance 13-08 References 13-10 13-0 I CONTENTS xix Chapter 14. Components and Basic Circuits I. Designing for Reliability 14-0 I 2. Components and Circuit Design 14-03 3. Marginal Checking 14-05 4. Reliable Computer Circuits 14-19 5. Components, Characteristics, and Application Notes 14-43 6. Transistors 14-51 References 14-54 14-0 I Chapter 15. Magnetic Core Circuits I. Fundamentals 15-0 I 2. Magnetic Cores 15-04 3. Transfer Loops 15-09 4. Magnetic Shift Registers 15-15 5. Logical Function Elements 15-16 6. Magnetic Core Storages 15-19 7. Timing Control Circuits 15-21 8. Arithmetic and Miscellaneous Applications 15-22 9. Drivers for Magnetic Core Circuits 15-23 References 15-24 15-0 I Chapter 16. Transistor Circuits I. Introduction 16-0 I, 2. Transistor Switching Properties 16-02 3. Direct-Coupled Transistor Switching Circuits 16-05 4. Point-Contact Transistor Pulse Amplifiers 16-15 5. Transistorized Calculator 16-20 References 16-30 16-01 Chapter 17. Logical Design I. Computer Elements 17-01 2. Algebraic Techniques of Logical Design 17-10 3. Preliminary Design Considerations 17-24 4. Detailed Logical Design 17-30 17 -0 I xx CONTENTS 5. Direct Simulation of a Logical Design 17-38 References 17-42 Chapter 18. Arithmetic and Control Elements I. 2. 3. 4. 5. 6. Chapter 19. Chapter 20. 19'-01 Basic Concepts 19-01 Magnetic Drum Storage 19-04 Magnetic Core Storage 19-13 Other Storage Techniques 19-29 References 19-33 Input-Output Equipment for Digital Computers I. 2. 3. 4. 5. 6. E. System Considerations 18-0 I Notation 18-02 Binary Operations 18-03 Decimal Operations 18-25 Special Operations 18-30 Control Elements 18-33 References 18-40 Storage I. 2. 3. 4. 18-01 20-0 I The Input-Output System 20-0 I Printed Page 20-06 Perforated Tape 20-19 Punched Card Machines 20-30 Magnetic Tape 20~33 Analog-Digital Conversion 20-44 References 20-66 DESIGN AND APPLICATION OF ANALOG COMPUTERS Chapter 21. Analog Computation in Engineering I. Definition of Analog Computation 21-01 2. Classification of Analog Computers 21-02 3. Requirements of Analog Computers 21-05 4. General Steps in the Solution of Engineering Problems 21-06 21-0 I CONTENTS xxi 5. Areas of Application of Analog Computers 2 1-09 6. Symbols and Diagram Notation 21-11 References 21-1 I Chapter 22. Linear Electronic Computer Elements I. Introduction and Computer Diagram Notation 22-0 I 2. Passive Computer Elements 22-04 3. Direct-Current Operational Amplifiers with Feed back 22-08 4. Sca Ie Factors 22-10 5. Typical Problem Setup 22-12 6. Representation of Complex Transfer Functions 22-13 7. Operationa I Amplifier Design 22-16 8. Errors in Linear Computer Elements 22-33 References 22-37 Chapter 23. Nonlinear Electronic Computer Elements I. Function Multipliers 23-0 I 2. Function Generators 23-14 3. Switching Devices 23-22 4. Trigonometric Devices 23-31 5. Time Delay Simulators 23-34 References 23-39 Chapter 24. Analogs and Duals of Physical Systems I. Electric Analogy of Dynamic System 24-01 2. General Terminology 24-03 3. Analysis of General Systems 24-03 4. Energy Considerations 24-07 5. Duality 24-08 6. Construction of Duals 24-09 7. Across and Through Variables in Physical Systems 24-12 References 24-13 22-0 I 23-01 24-01 xxii CONTENTS Chapter 25. Solution of Field Problems 25-01 I. Formulation of Engineering Problems as Partial Differential Equations 25-01 2. Continuous Type Electric Analogs 25-05 3. Discrete Element Type Electric Analogs 25-11 4. Nonelectric Field Analogs 25-22 References 25-23 Chapter 26. Noise and Statistical Techniques 26-0 I Introduction and Definition 26-0 I Random Variable Concepts 26-02 Treatment of Linear Systems 26-06 Treatment of Nonlinear Systems 26-09 5. Noise Generators 26-12 References 26-20 I. 2. 3. 4. Chapter 27. Mechanical Computer Elements I. 2. 3. 4. 5. Chapter 28. 27-01 Introduction 27-0 I Basic Operations 27-02 Function Generation 27-05 Solution of Equations 27-09 Scale Factors 27-14 References 27-15 Digital Techniques in Analog Computation 28-0 I I. Introduction 28-0 I 2. Digital Differential Analyzer 28-02 3. Digital Operational Computers 28-11 4. Auxiliary Digital Computer Techniques 28-15 5. Auxiliary Digital Control Techniques 28-17 References 28-18 xxiii CONTENTS F. UNUSUAL COMPUTER SYSTEMS Chapter 29. Operational Digital Techniques I. Introduction 29-0 I 29-01 2. Basic Devices 29-05 3. Applications of Operational Digital Techniques 29-14 4. Incremental Computation 29-17 References 29-29 Chapter 30. Combined Analog-Digital Computer Systems . I. 2. 3. 4. Chapter 31. Description and Applications System Components 30-02 Control and Timing 30-08 Modes of Operation 30-13 References 30-15 Simple Turing Type Computers I. 2. 3. 4. 5. 6. Basic Concepts 3 1-0 I Functional Requirements 31-02 Machine Description 31-03 Mechanization 31-07 Programming 3 1-09 Communication with No Auxiliary Storage 31-13 7. Machine Comparison 31-15 References 31-16 INDEX 30-01 30-0 I 31-0 I COMPUTER TERMINOLOGY A. COMPUTER TERMINOLOGY 1. Computer Terminology and Symbols, by E. M. Grabbe A COMPUTER TERMINOLOGY Chapter 1 Computer Terminology and Symbols E. M. Grabbe I. Standardization 2. Symbols 3. Glossary of Terminology References 1-0 I 1-01 1-02 1-22 I. STANDARDIZATION The growth of analog and digital computers as major components of modern computing and control systems has done much to encourage standardization of terminology and symbols. A sizable part of this effort has been directed toward the terminology of digital computers. Hence, the glossary of terminology given in Sect. 3 is largely concerned with digital terms. No attempt has been made to define the terms associated with computer usage in scientific computation, business data processing, and control applications. 2. SYMBOLS Diagram Symbols. Several sets of symbols for schematic and circuit diagrams have been in use in the analog and digital fields. In Part E on analog computers, one set of symbols has been chosen and used throughout the chapters. The alternate notation is also listed for linear computing elements in Chap. 22 (see Table 1). In the digital field, while terminology has been standardized to some degree, the use of symbols has not. A variety of symbols is employed 1-01 1-02 COMPUTER TERMINOLOGY for programming, logic, and circuit diagrams, depending on the author's preference and the type of diagram. Some symbols are easier to use for some purposes than others. In all cases the symbols are clearly defined and usage is unambiguous. Since symbols are not standardized, no detailed list is given, but they are described in the various chapters. The following is a list of the chapters in the Handbook where tables of symbols may be found: Symbols Digital computer Programming Logical design Logical operations Magnetic cores Analog computer Linear computing elements Nonlinear computing elements Mechanical computing elements Analogs and duals Digital differential analyzers Chapters Chap. Chap. Chap. Chap. 2, Sect. 4 17, Sect. 4 17, Sect. 1, Table 1 15, Sect. 1 Chap. Chap. Chap. Chap. Chap. 22, 23, 27, 24, 28, Sect. Sect. Sect. Sect. Sect. 1 1 2 2 2 Letter Symbols. Letter symbols are standardized to some extent in Part E, Design and Application of Analog Computers. (See Chap. 21, Sect. 1.) Elsewhere letter symbols are defined when they are used. 3. GLOSSARY OF TERMINOLOGY Terminology from the Institute of Radio Engineers (Ref. 1) and the Association for Computing Machinery (Ref. 2) has been compiled in a glossary. The I.R.E. terminology is largely concerned with digital computer design, although some analog terms are included. The A.C.M. terminology is concerned with programming. vVhere an overlap exists, the I.R.E. terminology has been selected since it represents the later effort. For some terms, minor changes or additions have been made for clarity and explanatory notes and examples have been added. Some terms are included which have no official definition, and reference to the chapters where they are described and defined is given. For terms not listed in this glossary, please refer to the index. Terminology is reproduced with the permission of the Institute of Radio Engineers and the Association for Computing Machinery. Glossary of Terminology Access Time. A time interval which is characteristic of a storage unit, and is essentially a measure of the time required to communicate with that unit. Many definitions of the beginning and ending of this interval are in common use. COMPUTER TERMINOLOGY AND SYMBOLS 1·03 Accumulator. A device which stores a number and which, on receipt of another number, adds it to the number already stored and stores the sum. Note. The term is also applied to devices which function as described but which have other facilities also. Accuracy. The quality of freedom from mistake or error, that is, of conformity to truth or to a rule. Accuracy is distinguished from precision. Example. A six-place table is more precise than a four-place table. However, if there are errors in the six-place table, it may be either more or less accurate than the four-place table. Adder. A device which can form the sum of two or more numbers or quantities. Address. An expression, usually numerical, which designates a particular location in a storage or a memory device or other source or destination of information. See also Instruction Code. Absolute address, an address assigned by the machine designer to a particular storage location. Relative address, the address used to identify a word in a routine or subroutine with respect to its position in that routine or subroutine. Symbolic address (floating' address), an address chosen to identify a particular word, function, or other information in a routine, independent of the location of the information within the routine. Sometimes called symbol or tag. Address Part. In an instruction, any part that is usually an address. See also Instruction Code. Analog (in electronic computers). A physical system on which the performance of measurements yields information concerning a class of mathematical problems. Analog Computer. A physical system together with means of control for the performance of measurements (upon the system) which yield information concerning a class of mathematical problems. And Circuit. Synonym for and gate. And Gate. A gate whose output is energized when and only when every input is in its prescribed state. Thus, this gate performs the function of the logical and. Arithmetic Element. Synonym for arithmetic unit. Arithmetic Unit. That part of a computer which performs arithmetic and logical operations. Assemble; Assembler, Assembly Routine; Assenlbly. See Routine. Automatic Check. See Check, Automatic. Band. A group of tracks on a magnetic drum. Base. See Positional Notation. Binary. See Positional Notation. 1-04 COMPUTER TERMINOLOGY Binary Cell. An elementary unit of storage which can be placed in either of two stable states. Binary-Coded-Decimal System. A system of number representation in which each decimal digit is represented by a group of binary digits. Note. Usually refers to the four position binary codes 0000 to 1001 (decimal 1 to 9). Another example is the excess-three code. Binary Number System. See Positional Notation. Binary Point. See Point. Biquinary. See Positional Notation. Bit. (1) An abbreviation of "binary digit." (2) A single character of a language employing exactly two distinct kinds of characters. (3) A unit of information capacity of a storage device. The capacity in bits is the logarithm to the base two of the number of possible states of the device. See also Storage Capacity. Block. A group of words considered as a unit. Borrow. See Carry. Branch. A synonym for conditional jump. Break Point. A point in a routine at which a special instruction is inserted which, if desired, will cause a digital computer to stop for a visual check of progress. Buffer. (1) An isolating circuit used to avoid reaction of a driven circuit on the corresponding driving circuit. (2) A storage device used to compensate for a difference in rate of flow of information or time of occurrence of events when transmitting information from one device to another. Bus. One or more conductors which are used as a path for transmitting information from any of several sources to any of several destinations. Calculator. See Computer. Carry. (1) A signal, or an expression, produced as a result of an arithmetic operation on one digit place of two or more numbers expressed in positional notation, and transferred to the next higher place for processing there. (2) Usually a signal, or an expression, as defined in (1) which arises, in adding, when the sum of two digits in the same digit place equals or exceeds the base of the number system in use. If a carry into a digit place will result in a carry out of the same digit place, and if the normal adding circuit is bypassed when generating this new carry, it is called a standing-on-nines carry, or high-speed carry. If the normal adding circuit is used in such a case, the carry is called a cascaded carry. If a carry resulting from the addition of carries is not allowed to propagate (e.g., when forming the partial. product in one step of a multiplication process), the process is called a partial carry. If it COMPUTER TERMINOLOGY AND SYMBOLS 1-05 is allowed to propagate, the process is called a complete carry. If a carry generated in the most significant digit place is sent directly to the least significant digit place (e.g., when adding two negative numbers by using nines complements) that carry is called an end-around carry. (3) In direct subtraction, a signal or expression as defined in (1) which arises when the difference between the digits is less than zero. Such a carry is frequently called a borrow. (4) The action of forwarding a carry. (5) The command requesting a carry to be forwarded. Cascaded Carry. See Carry. Cell. An elementary unit of storage (e.g., binary cell, decimal cell) . Channel. That portion of a storage medium which is accessible to a given reading station. See also Track. Character. One of a set of elementary marks or events which may be combined to express information. Note.' A 'group of characters, in one context, may be considered as a single- character in another, as in the binary-coded-deciinal system: Check. A process of partial or complete testing of (a) the correctness of machine operations, (b) the existence of certain prescribed conditions within the computer, or (c) the correctness of the results produced by a routine. A check of any of these conditions may be made automatically by the equipment or may be programmed. See also Verification. Check, Automatic. A check performed by equipment built into the computer specifically for that purpose, and automatically accomplished . each time the pertinent operation is performed. Sometimes referred to as a built-in check. Machine check can refer to an automatic check, or to a programmed check of machine functions. Check Digits. See Check, Forbidden Combination. Check, Forbidden Combination. A check (usually an automatic check) which tests for the occurrence of a nonpermissible code expression. A self-checking code (or error-detecting code) uses code expressions such that one (or more) error( s) in a code expression produces a forbidden combination. A parity check makes use of a self-checking code employing binary digits in which the total number of 1's (or O's) in each permissible code expression is always odd or always even. A check may be made for either even parity or odd parity. A redundancy check employs a self-checking code which makes use of redundant digits called check digits. Check, Marginal. A preventive maintenance procedure in which certain operating conditions, e.g., supply voltage or frequency, are varied about their normal values in order to detect and locate incipient defective units. 1-06 COMPUTER TERMINOLOGY Check Problem. See Check, Programmed. Check, Programmed. A check consisting of tests inserted into the programmed statement of the problem and accomplished by appropriate use of the machine's instructions. A mathematical check (or control) is a programmed check of a sequence of operations which makes use of the mathematical properties of that sequence. A check routine or check problem is a routine or problem. which is designed primarily to indicate whether a fault exists in the computer, without giving detailed information on the location of the fault. See also Diagnostic Routine and Test Routine under Routine. Check Routine. See Check, Programmed. Check, Selection. A check (usually an automatic checkY to verify that the correct register, or other device, is selected in the performance of an instruction. . Check, Transfer. A check (usually an automatic check)' on the accuracy of the transfer of a word. Circulating Register (or Memory). A register (or memory) consisting of a means for delaying information and a means of regenerating and reinserting the information into the delaying means. Clear. To restore a storage or memory device to a prescribed state, usually that denoting zero. Clock. A primary source of synchronizing signals. Code. (1) A system of characters and rules for representing information. (2) Loosely, the set of characters resulting from the use of a code. (3) To prepare a routine in machine language for a specific computer. (4) To encode, to express given information by means of a code. See also Instruction Code, Language, Operation Code, and Pseudo-code. Coding. The list, in computer code or in pseudo-code, of the successive computer operations required to solve a given problem. Absolute, relative, or symbolic coding, coding in which one uses absolute, relative, or symbolic addresses, respectively. Automatic coding, any technique in which a computer is used to help bridge the gap between some "easiest" form, intellectually and manually, of describing the steps to be followed in solving a given problem and some "most efficient" final coding of the same problem for a given computer. Two basic forms, defined under Routine, are compilation and interpretation. Collate. To combine two or more similarly ordered sets of items to produce another ordered set composed of information from the original sets. Both the riumber of items and the size of the individual items in the resulting set may differ from those of either of the original sets and of their sums. COMPUTER TERMINOLOGY AND SYMBOLS 1-07 Command. (1) One of a set of several signals (or groups of signals) which occurs as a result of an instruction; the commands initiate the individual steps which form the process of executing the instruction. (2) Synonym for instruction. Comparator. A device for comparing two different transcriptions of the same information to verify the accuracy of transcription, especially of one copy of tape from another. Compare. To examine the representation of a quantity for the purpose of discovering its relationship to zero, or of two quantities for the purpose of discovering identity or relative magnitude. Comparison. The act of comparing and, usually, acting on the result of the comparison. Compile; Compiler, Compiling Routine; Compilation. See Routine. Complement. (1) A number whose representation is derived from the finite positional notation of another by one of the following rules. (a) True complement: subtract each digit from one less than the base; then add 1 to the least significant digit and execute all carries required. (b) Base minus one's complement: subtract each digit from one less than the base (e.g., "9's complement" in the base 10 and "l's complement" in the base 2). (2) To form the complement of a number. (a) Complement on n: subtract each digit of the given quantity from n - 1, add unity to the least significant digit, and perform all resultant carries. For example, the two's complement of binary 11010 is 00110; the ten's complement of decimal 456 is 544. (b) Complement on n - 1: subtract each digit of the given quantity from n - 1. For example, the one's c01nplenwnt of binary 11010 is 00101; the nine's complement of decimal 456 is 543. Note. In many machines, a negative number is represented as the complement of the corresponding positive number. Complete Carry. See Carry. Computer. (1) A machine for carrying out calculations. (2) By extension, a machine for carrying out specified transformations on inf ormation. Conditional Jump. See Jump. Conditional Transfer of Control. Synonym for conditional jump. Control. (1) To exercise directing, guiding, or restraining power over. (2) Power or authority to control. (3) Usually, those parts of a digital computer which effect the carrying out of instructions in proper sequence, the interpretation of each instruction, and the application of the proper signals to the arithmetic unit and other parts in accordance with this interpretation. (See Chap. 18.) (4) Frequently, one or more 1-08 COMPUTER TERMINOLOGY of the components in any mechanism responsible for interpreting and carrying out manually initiated directions. Sometimes called manual control. (5) In some business applications of mathematics, a mathematical ,check. Convert. See Routine. Copy. To reproduce information in a new location by replacing whatever was previously ~tored there and leaving the source of the information unchanged. See also Transfer. Correction. See Error. Counter. (1) A device capable of changing from one to the next of a sequence of distinguishable states upon each receipt of an input signal. (2) Less frequently, an accumulator. Counter, Ring. A loop of interconnected bistable elements such that all but one are in their normal (or abnormal) state at anyone time, and so that, as input signals are counted, the position of the one abnormal (normal) state moves in an ordered sequence around' the loop. Cycle. (1) The sequence of events beginning with a particular event and including intervening events leading up to a recurrence of the original event. (2) The time interval which spans the sequence of events of (1). See Loop, Major Cycle, Minor Cycle. Cyclic Binary Code. See Chaps. 11 and 20. Cyclic Shift. See Shift. Decimal Number System. See Positional Notation. Decimal Point. See Point. Decoder. A network or system in which a combination of inputs is excited at one time to produce a single output. Sometimes called matrix. Delay Line. (1)' Originally, a device utilizing wave propagation for producing a time. displacement of a signal. (2) Commonly, any device for producing a time displacement of a signal. Delay-Line Memory. Synonym for delay-line storage. Delay-Line Storage. A storage or memory device consisting of a delay line and means for regenerating and reinserting information into the delay line. Diagnostic Routine. See Routine. Differentiator. A device, usually of the analog type, whose output is proportional to the derivative of an input signal. Digit. See Positional Notation. Digital Computer. A computer which operates with information, numerical or otherwise, represented in a digital form. Double-Length Number, Double-Precision Number. See Number, Double-Length. COMPUTER TERMINOLOGY AND SYMBOLS 1-09 Edit. To rearrange information. Editing may involve the deletion of unwanted data, the selection of pertinent data, the insertion of invariant symbols such as page numbers and typewriter characters, and the application of standard processes such as zero suppression. Encoder. A network or system in which only one input is excited at a time and each input produces a combination of outputs. Sometimes called matrix. End-Around Carry. See Carry. Erase. To replace all the binary digits in a storage device by binary zeros. In a binary computer, erasing is equivalent to clearing. While in a coded decimal computer where the pulse code for decimal zero may contain binary ones, clearing leaves decimal zero whereas erasing leaves all-zero pulse codes. Erasing of magnetic tapes and drums may leave all zeros or may remove all information, both ones and zeros. Error. (1) In mathematics, the difference between the true value and a calculated or observed value. A quantity (equal in absolute magnitude to the error) added to a calculated or observed value to obtain the true value is called a correction. (2) In a computer or data processing system, any incorrect step, process, or result. Strictly speaking, "error" is a mathematical term, but in computer engineering the term is also commonly used to refer to machine malfunctions as "machine errors" and to human mistakes as "huma~ errors." It is frequently helpful to distinguish between these as follows: errors result from approximations used in numerical methods, mistakes result from incorrect programming, coding, data transcription, manual operation, etc.; malfunctions result from failures in the operation of machine components such as gates, flip-flops, and amplifiers. Inherited error, the error in the initial values, especially the error inherited from the previous steps in the step-by-step integration. Rounding error, the error resulting from deleting the less significant digits of a quantity and applying some rule of correction to the part retained. Truncation error, the error resulting from the use of only a finite number of terms of an infinite series, or from the approximation of operations in the infinitesimal calculus by operations in the calculus of finite differences. Error-Detecting Code. See Check, Forbidden Combination.' Excess-Three Code. A number code in which the decimal digit n . is represented by the four-bit binary equivalent of n + 3. See also Binary-Coded-Decimal System. Extract. To form a new word by juxtaposing selected segments of given words. COMPUTER TERMINOLOGY 1-10 Field. A set of one or more characters (not necessarily all lying in the same word) which is treated as a whole; a unit of information. See also Item; Key. Card field, a set of visually consecutive card columns fixed as to number and position into which the same unit of information is regularly entered. File. A sequential set of items (not necessarily all of the same size). Fixed-Point System. See Point. Flip-Flop. (1) A device having two stable states and two input terminals (or types of input signals) each of which corresponds with one of the two states. The circuit remains in either state until caused to change to the other state by application of the corresponding signal. (2) A similar bistable device with an input which allows it to act as a single-stage binary counter. Floating-Point System. See Point. Flow Diagram. A graphic representation of a routine. Forbidden Combination Check. See Check, Forbidden Combination. Four-Address Code. See Instruction Code. Gate. A circuit having an output and a multiplicity of inputs so designed that the output is energized when and only when certain input conditions are met. See also And Gate; Or Gate. Generate; Generator, Generative Routine; Generation. See Routine. Gray Code. See Chaps. 11 and 20. Half Adder. A circuit having two input and two output channels for binary signals (0, 1) and in which the output signals are related to the input signals according to the following table: Input to Output from S C A B o 000 011 o 101 o 1 1 0 1 ::1 _-------'I: : L---- (So called because two half adders can be used in the construction of one binary adder.) Hexadecimal. See Positional Notation. High-Speed Carry. See Carry. Information. A set of symbols or an arrangement of hardware that designates one out of a finite number of alternatives; an aggregation of data which mayor may not be organized. Inhibiting Input. A gate input which, if in its prescribed state, prevents any output which might otherwise occur. COMPUTER TERMINOLOGY AND SYMBOLS I-II Instruction. See Instruction Code. Instruction Code. An artificial language for describing or expressing the instructions which can be carried out by a digital computer. In automatically sequenced computers, the instruction code is used when describing or expressing sequences of instructions, and each instruction word usually contains a part specifying the operation to be performed and one or more addresses which identify a particular location in storage. Sometimes an address part of an instruction is not intended to specify a location in storage but is used for some other purpose. If more than one address is used, the code is called a multiple-address code. In a typical instruction of a four-address code the addresses specify the location of two operands, the destination of the result, and the location of the next instruction in the sequence. In a typical three-address code, the fourth address specifying the location of the next instruction is dispensed with and the instructions are taken from storage in a preassigned order. In a typical one-address or single-address code, the address may specify either the location of an operand to be taken from storage, the destination of a previously prepared result, or the location of the next instruction. The arithmetic element usually contains at least two storage locations, one of which is an accumulator. For example, operations requiring two operands may obtain one operand from the main storage and the other from a storage location in the arithmetic element which is specified by the operation part. Breakpoint instruction, an instruction which, if some specified switch is set, will cause the computer to stop, or proceed in a special way. Conditional breakpoint instruction, a conditional jump instruction which, if some specified switch is set, will cause the computer to stop, after which either the routine may be continued as coded or a jump may be forced. One-plus-one, or three-plus-one address instruction, a two- or four-address instruction, respectively, in which one of the addresses always specifies the location of the next instruction to be performed. Zero address instruction, an instruction specifying an operation in which the location of the operands are defined by the computer code, so that no address need be given explicitly. Integrator. (1) A device whose output is proportional to the integral of an input signal. (2) In certain digital machines, a device for numerically accomplishing an approximation to the mathematical process of integration. Interlock. A device which prevents certain activities for the duration of certain other activities. 1-12 COMPUTER TERMINOLOGY Interpret, Interpreter, Interpretive Routine, Interpretation. See Routine. Item. A set of one or more fields containing related information; a unit of correlated information relating to a single person or object. Jump. To (conditionally or unconditionally) cause the next instruction to be selected from a specified storage location. Conditional Jump. An instruction which will cause the proper one of two (or more) addresses to be used in obtaining the next instruction, depending upon some property of one or more numerical expressions or other conditions. Unconditional Jump. An instruction which interrupts the normal process of obtaining instructions in an ordered sequence, and specifies the address from which the next instruction must be taken. Key. A set of characters, forming a field, used to identify an item. Language. (1) A system consisting of (a) a well-defined, usually finite, set of characters, (b) rules for combining characters with one another to form words or other expressions, and (c) a specific assignment of meaning to some of the words or expressions, usually for communicating information or data among a group of people, machines, etc. (2) A system similar to (1) but without any specific assignment of meanings. Such systems may be distinguished from (1), when necessary, by referring to them as formal or uninterpreted languages. Although it is sometimes convenient to study a language independently of any meanings, in all practical cases at least one set of meanings is eventually assigned. See also Machine Language. Library. An ordered set or collection of standard and proven routines and subroutines by which problems and parts of problems may be solved, usually stored in relative or symbolic coding. (A library may be subdivided into various volumes, such as floating decimal, double-precision, or complex, according to the type of arithmetic employed by the subroutines.) Logic. See Logical Design. Logical Design. (1) The planning of a computer or data processing system prior to its detailed engineering design. (2) The synthesizing of a network of logical elements to perform a specified function. (3) The result of (1) and (2), frequently called the logic of the system, machine, or network. Logical Diagram. In logical design, a diagram representing the logical elements and their interconnections without necessarily expressing construction or engineering details. Logical Element. In a computer or data processing system, the smallest building blocks which can be represented by operators in an COMPUTER TERMINOLOGY AND SYMBOLS 1-13 appropriate system of symbolic logic. Typical logical elements are the and gate and the flip-flop which can be represented as operators in a suitable symbolic logic. Logical Operation. (1) Any nonarithmetical operation. Examples are: extract, logical (bit-wise) multiplication, jump, and data transfer. (2) Sometimes only those nonarithmetical operations which are expressible bit-wise in terms of the propositional calculus or a two-valued Boolean algebra. Logical Symbol. A symbol used to represent a logical element graphically. Loop. The repetition of a group of instructions in a routine. See also Cycle. Machine Check. See Check, Automatic. Machine Language. (1) A language, occurring within a machine, ordinarily not perceptible or intelligible to people without special equipment or training. (2) A translation or transliteration of (1) into more conventional characters but frequently still requiring special training to be intelligible. Major Cycle. In a storage device which provides serial access to storage positions, the time interval between successive appearances of a given storage position. Malfunction. See Error. Manchester Recording. See Chap. 19, Sect. 2. Marginal Checking. See Check, Marginal. Marginal Testing. See Check, Marginal. Master Routine. See Routine, Executive. Mathematical Check. See Check, Programmed. Matrix (Switch). (1) A network or system having a number of inputs and outputs and so connected that signals representing information expressed in a certain code, when applied to the inputs, cause output signals to appear which are representations of the input information in a different code. (2) A network or system in which a combination of inputs is excited at one time to produce a single output. (3) A network or system in which only one input is excited at a time and each input produces a combination of outputs. Memory. See Storage. Merge. To produce a single sequence of items, ordered according to some rule (i.e., arranged in some orderly sequence), from two or more sequences previously ordered according to the same rule, without changing the items in size, structure, or total number. Merging is a special case of collation. Memory Capacity. Synonym for storage capacity. 1-14 COMPUTER TERMINOLOGY Minor Cycle. In a storage device which provides serial access to storage positions, the time interval between the appearance of corresponding parts of succes~ive words. Mistake. See Error. Modified Binary Code. See Chaps. 11 and 20. Modifier. A quantity, sometimes the cycle index, used to alter the address of an operand. Modify. (1) To alter in an instruction the address of the operand. (2) To alter a subroutine according to a defined parameter. Multiple-Address Code. See Instruction Code. Multiplier. A device which has two or more inputs and whose output is a representation of the product of the quantities represented by the input signals. (See Chap. lS.) NRZ, Non-Return to Zero Recording. See Chap. 19, Sect. 2. NRZI, Non-Return to Zero, Invert Recording. See Chap. 19, Sect. 2. Number. (1) Formally, an abstract mathematical entity which is a generalization of a concept used to indicate quantity, direction, etc. In this sense a number is independent of the manner of its representation. (2) Commonly, a representation of a number as defined above (e.g., the binary number "10110," the decimal number "3695," or a sequence of pulses). (3) A word composed wholly or partly of digits, and perhaps a sign, which does not necessarily represent the abstract entity mentioned in the first meaning. Note. Whenever there is a possibility of confusion between meaning (1) and meaning (2) or (3), it is usually possible to make an unambiguous statement by using "number" for meaning (1) and "numerical expression" for meaning (2) or (3). See also Positional Notation. Number, Double-Length. A number having twice as many digits as are ordinarily used in a particular computer. Number System. See Positional Notation. Octal. See Positional Notation. Octonary. See Positional Notation. One-Address Code. See Instruction Code. On-Line Operations. See Real- Time Operation. Operation Code. (1) The list of operation parts occurring in an instruction code, together with the names of the corresponding operations (e.g., "add," "unconditional transfer," and "add and clear"). (2) Synonym for operation part of an instruction. Arithmetical operations, operations in which numerical quantities form the elements of the calculation (e.g., addition, subtraction, multiplication, division). COMPUTER TERMINOLOGY AND SYMBOLS 1.15 Complete operation, an operation which includes (a) obtaining all operands from storage, (b) performing the operation, (c) returning resulting operands to storage, and (d) obtaining the next instruction. Computer operation, the electronic operation of hardware resulting from an instruction. Logical operations, operations in which logical (yes-or-no) quantities form the elements being operated on (e.g., comparison, extraction). A usual requirement is that the value appearing in a given column of the result shall not depend on the values appearing in more than one given column of each of the arguments. Red tape operations, operations which do not directly contribute to the result; i.e., arithmetical, logical, and transfer operations used in modifying the address section of other instructions, in counting cycles, and in rearranging data. Transfer operations (storage operations), operations which move information from one storage location or one storage medium to another (e.g., read, record, copy, transmit, exchange). Transfer is sometimes taken to refer specifically to movement between different media; storage to movement within the same medium. Although many operations fit the above definitions of two or more of the terms arithmetical, logical, transfer, and red tape, these terms are frequently used loosely to divide the operations of a given routine or of a given instruction code into four mutually distinct classes depending on the primary function intended for the given operation in the case at hand. Operation Part. In an instruction, the part that usually specifies the kind of operation to be performed, but not the location of the operands. See also Instruction Code. Or Circuit. Synonym for or gate. Order. (1) Synonym for instruction. (2) Synonym for command. (3) Loosely, synonym for operation part. Note. The use of "order" in the computer field as a synonym for terms similar to those above is losing favor owing to the ambiguity between these meanings and the more common meanings in mathematics and business. Or Gate. A gate whose output is energized when anyone .01' more of the inputs is in its prescribed state. Thus, this gate performs the function of the logical inclusive-or. Overflow. (1) The condition which arises when the result of an arithmetic operation exceeds the capacity of the number representation in a digital computer. (2) The carry digit arising from this condition. Parallel. Pertaining to simultaneous transmission of, storage of, or logical operations on the parts of a word, character, or other subdivision of a word, using separate facilities for the various parts. 1-16 COMPUTER TERMINOLOGY Parallel Digital Computer. One in which the digits are handled in parallel. Mixed serial and parallel machines are frequently called serial or parallel according to the way arithmetic processes are performed. An example of a parallel digital computer is one which handles decimal digits in parallel, although it might handle the bits which comprise a digit either serially or in parallel. Parity Check. See Check, Forbidden Combination. Partial Carry. See Carry. Place. In positional notation, a position corresponding to a given power of the base. A digit located in any particular place is a coefficient of a corresponding power of the base. Point. In positional notation, the location or symbol which separates the integral part of a numerical expression from its fractional part. For example, it is called the binary point in binary notation and the decimal point in decimal notation. If the location of the point is assumed to remain fixed with respect to one end of the numerical expressions, a fixed-point system is being used. If the location of the point does not remain fixed with respect to one end of the numerical expressions, but is regularly recalculated, then a floating-point system is being used. Note. A fixed-point system usually locates the point by some convention, while the floating-point system usually locates the point by expressing a power of the base. Positional Notation. One of the schemes for representing numbers, characterized by the arrangement of digits in sequence, with the understanding that successive digits are to be interpreted as coefficients of successive powers of an integer called the base or radix of the number system. In the binary number system the successive digits are interpreted as coefficients of the successive powers of the base two just as in the decimal number system they relate to successive powers of the base ten. In the ordinary number systems each digit is a character which stands for zero or for a positive integer smaller than the base. The names of the number systems with bases from 2 to 20 are: binary, ternary, quaternary, quinary, senary, septenary, octonary (also octal), novenary, decimal, unidecimal, duodecimal, terdenary, quaterdenary, quindenary, sexadecimal (also hexadecimal), septendecimal, octodenary, novendenary, and vicenary. The sexagenary number system has a base of 60. The commonly used alternative of saying "base 3," "base 4," etc., in place of ternary, quaternary, etc., has the advantage of uniformity and clarity. Note. In the most common form of positional notation the expression COMPUTER TERMINOLOGY AND SYMBOLS 1-17 is an abbreviation for the sum n ± L: i= airi, -m where the point separates the positive powers from the negative powers, the ai are integers (0 < ai < r - 1) called "digits," and r is an integer, greater than one, called the base. Note 1. The base of a number is usually indicated by a vertical line following the number with the base, r, as a subscript. The decimal number 12 in octal and binary codes is written 12ho = 1418 = 110012. Note 2. For some purposes special rules are followed. In one such usage, the value of the base r is not constant. In this case, the digits are coefficients of successive products of a nonconstant sequence of integers. Precision. The quality of being exactly or sharply defined or stated. A measure of the precision of a representation is the number of distinguishable alternatives from which it was selected, which is sometimes indicated by the number of significant digits it contains. See also Accuracy. Program. (1) A plan for the solution of a problem. (2) Loosely, a synonym for routine. (3) To prepare a program. Automatic programming, any technique in which the computer is used to help plan as well as to help code a problem. See Coding. Optimum programming, improper terminology for minimal latency coding, i.e., for producing a minimal latency routine. See Routine. Programmed Check. See Check, Programmed. Pseudo-Code. An arbitrary code, independent of the hardware of a computer, which must be translated into computer code if it is to direct the computer. Radix. See Positional Notation. Random Access. Access to storage under conditions in which the next position from which information is to be obtained is in no way dependent on the previous one. Read. To acquire information, usually by observing some form of storage. Note. Usually a process which can be called reading can also be called writing, depending on the point of view of the observer. Real-Time Operation, On-Line Operation, Simulation. Processing data in synchronism with a physical process in such a fashion that the results of data processing are useful to the physical operation. Redundancy Check. See Check, Forbidden Combination. Reflected Binary Code. See Chaps. 11 and 20. .•• I 1-18 COMPUTER TERMINOLOGY Regeneration. (1) In a storage device whose information storing state may deteriorate, the process of restoring the device to its latest undeteriorated state. (2) In a storage device whose information storing state may be destroyed by a readout, the process of restoring the device to its state prior to the readout. This process is commonly known as rewrite (after destructive readout). Register. A device capable of retaining information, often that contained in a small subset (e.g., one word) of the aggregate information in a digital computer. Example. A register in an arithmetic unit as opposed to a cell in storage. Register Length. The number of characters which a register can store. Reset. (1) To restore a storage device to a prescribed state. (2) To place a binary cell in the initial or "zero" state. See also Clear. Rewrite. See Regeneration. Ring Counter. See Counter, Ring. Routine. A set of instructions arranged in proper sequence to cause a computer to perform a desired operation or series of operations, such as the solution of a mathematical problem. y:'~, Executive routine (master routine), a routine designed to process and control other routines. A routine used in realizing "automatic coding." Compiler (compiling routine), an executive routine which, before the desired computation is started, translates a program expressed in pseudo-code into machine code (or into another pseudo-code for further translation by an interpreter). In accomplishing the translation, the compiler may be required to: Decode, to ascertain the intended meaning of the individual characters or groups of characters in the pseudo-coded program. Convert, to change numerical information from one number base to another (e.g., decimal to binary) and/or from some form of fixed point to some form of floating-point representation, or vice versa. Select, to choose a needed subroutine from a file of subroutines. Generate, to produce a needed subroutine from parameters and skeletal coding. Allocate, to assign 'storage locations to the main routines and subroutines, thereby fixing the absolute values of any symbolic addresses. In some cases allocation may require segmentation. Assemble, to integrate the subroutines (supplied, selected, or generated) into the main routine, i.e., to adapt, to specialize to the task at hand by means of preset parameters; to orient, to change COMPUTER TERMINOLOGY AND SYMBOLS 1-19 relative and symbolic addresses to absolute form; to incorporate, to place in storage. Record, to produce a reference record. Check Routine. See Check, Progrmnmed. Diagnostic Routine, a specific routine designed to locate either a malfunction in the computer or a mistake in coding. General routine, a routine expressed in computer coding designed to solve a class of problems, specializing to a specific problem when appropriate parametric values are supplied. Interpreter (interpretive routine), an executive routine which, as the computation progresses, translates a stored program expressed in some machine-like pseudo-code into machine code and performs the indicated operations, by means of subroutines, as they are translated. An interpretive routine is essentially a closed subroutine which operates successively on an indefinitely long sequence of program parameters (the pseudo-instructions and operands). It may usually be entered as a closed subroutine and exited by a pseudo-code exit instru cti on. Minimal latency routine, especially in reference to serial storage systems, a routine so coded, by judicious arrangement of 'data and instructions in storage, that the actual latency is appreciably ress than the expected random access latency. ' Rerun routine (rollback routine), a routine designed to be used in the wake of a computer malfunction or a coding or operating mistake to reconstitute a routine from the last previous rerun point, which is that stage of a computer run at which all information pertinent to the running of the routine is available either to the routine itself or to a rerun routine in order that a run may be reconstituted. Service routine, a routine designed to assist in the actual operation of the computer. Tape comparison, block location, certain post morterns, and correction routines fall into this class. Also called operator routine. Specific routine, a routine expressed in specific computer coding designed to solve a particular mathematical, logical, or data handling problem. Subroutine. (1) In a ,routine, a portion that causes a computer to carry out a well-defined mathematical or logical operation. (2) A routine which is arranged so that control may be transferred to it from a master routine and so that, at the conclusion of the subroutine, control reverts to the master routine. Such a subroutine is usually called a closed subroutine. A single routine may simultaneously be both a subroutine with respect to another routine and a master routine with 1-20 COMPUTER TERMINOLOGY respect to a third. Usually control is transferred to a single subroutine from more than one place in the master routine, and the reason for using the subroutine is to avoid having to repeat the same sequence of instructions in different places in the master routine. Test routine, a routine designed to show that a computer is not functioning properly. RZ, Return to Zero Recording. See Chap. 19, Sect. 2. Scale. To change the scale (i.e., the units) in which a variable is expressed so as to bring it within the capacity of the machine or routine at hand. Selection Check. See Check, Selection. Self-Checking Code. See Check, Forbidden Combination. Serial. Pertaining to time-sequential transmission· of, storage of, or logical operations on the parts of a word, with the same facilities for successive parts. Serial Digital Computer. One in which the digits are handled serially. Mixed serial and parallel machines are frequently called serial or parallel according to the way arithmetic processes are performed. An example of a serial digital computer is one which handles decimal digits serially although it might handle the bits which comprise a digit either serially or in parallel. Antonym: Parallel Digital Computer. Set. (1) To place a storage device in a prescribed state. (2) To place a binary cell in the "one" state. Sexadecimal. See Positional Notation. Shift. Displacement of an ordered set of characters one or more places to the left or right. If the characters are the digits of a numerical expression, a shift may be equivalent to a multiplication by a power of the base. Cyclic Shift. An operation which produces a word whose characters are obtained by a cyclic permutation of the characters of a given word. Sign Digit. A character used to designate the algebraic sign of a number. Simulation. See Real- Time Operation. Single-Address Code. See Instruction Code. Sort. To arrange items of information according to rules dependent upon a key or field contained by the items. Standing-on-Nines Carry. See Carry. Storage. (1) The act of storing information. (See also Store.) (2) Any device in which information can be stored, sometimes called a memory device. (3) In a computer, a section used primarily for storing information. Such a section is sometimes called a memory or a store (British) . Note. The physical means of storing information may be COMPUTER TERMINOLOGY AND SYMBOLS 1-21 electrostatic, ferroelectric, magnetic, acoustic, optical, chemical, electronic, electrical, mechanical, etc., in nature. Storage Capacity. The amount of information that can be simultaneously retained in a storage (or memory) device, often expressed as the number of words that can be retained (given the number of digits, and the base, of the standard word). \Vhen comparisons are made among devices using different bases and word lengths, it is customary to express the capacity in bits. This number is obtained by taking the logarithm to the base 2 of the number of distinguishable states in which the storage can exist. Note. The "storage (or memory) capacity of a computer" usually refers only to the principal internal storage section. Store. (1) To retain information in a device from which it can later be extracted. (2) To introduce information into such a device. (3) British synonym for storage (3). Subroutine. See Routine. Switch. A device for effectively making, breaking, or changing the path of information flow. See also lkfatrix (Switch). Ternary. See Positional Notation. Test Routine. See Routine. Three-Address Code. See Instruction Code. Track. That portion of a moving-type storage medium which is accessible to a given reading station; e.g., as on film, drum, tapes, or disks. See also Band. Transcriber. Equipment associated with a computing machine for the purpose of transferring input (or output) data from a record of information in a given language to the medium and the language used by a digital computing machine (or from a computing machine to a record of information). Transfer. (1) To transmit, or copy, information from one device to another. (2) To transfer control. (3) The act of transferring. Transfer Check. See Check, Transfer. Transfer Control. Synonym for jump. Translate. To change information (e.g., problem statements in pseudo-code, data, or coding) from one language to another without significantly affecting the meaning. Translator. A network or system having a number of inputs and outputs and so connected that signals representing information expressed in a certain code, when applied to the inputs, cause output signals to appear which are a representation of the input information in a different code. Sometimes called matrix. Trunk. A path over which information is transferred; a bus. Unconditional Jump. See Jump. 1-22 COMPUTER TERMINOLOGY Unconditional Transfer of Control. Synonym for unconditional Jump. Unit. A portion or subassembly of a computer which constitutes the means of accomplishing some inclusive operation or function, as arithmetic unit. Verification. The process of automatically checking the results of one data recording process against the results of another data recording process for the purpose of reducing the number of errors in data transcription. See also Check. Verifier. A device un which a manual transcription can be verified by comparing a retranscription with it character by character as it is being retranscribed. Volatile. A term descriptive of a storage medium in which information cannot be retained without continuous power dissipation. Note. Storage devices or systems employing nonvolatile media mayor may not retain information in the event of planned or accidental power removal. Williams Tube Storage. A type of electrostatic storage. Word. An ordered set of symbols which is the normal unit in which information may be stored, transmitted, or operated upon within the computer. Word Time. Synonym for minor cycle. Write. To introduce information, usually into some form of storage. See also Read. Zero Suppression. The elimination of nonsignificant zeros to the left of the integral part of a quantity before printing operations are initiated; a part of editing. REFERENCES 1. IRE; Standards on Electronic Computers: Definitions of Terms, 1956. 56 IRE 8.51. Proc. I. R. E., 44, 1166-73 (1956). 2. First Glossary of Programming Terminology, Association for Computing Machinery, New York, 1954. DIGITAL COMPUTER PROGRAMMING B. DIGITAL COMPUTER PROGRAMMING 2. Programming and Coding, by John W. Carr 11/ B DIGITAL COMPUTER PROGRAMMING Chapter 2 Programming and Coding John W. Carr III I. Nature of Programming 2-0 I 2. Numbers and Scale Factors 2-12 3. Number Conversion Tables 2-26 4. Program Structure and Flow Diagrams 2-44 5. Machine Logic 2-53 6. Instruction Logic of Common Computers 2-63 7. Traditional Programming Techniques 2-128 8. Automatic Programming: Development and Objectives 2-155 9. Automatic Programming: Assembly Programs 2-163 10. Automatic Programming: Subroutines, Subroutine Generators, Utility Programs, and Integrated Systems 2-167 II. Automatic Programming: Languages, Compilers, and Translators 2-186 12. Automatic Programming: The IT Translator, Translator Construction 2-200 13. Automatic Programming: A Soviet Algebraic Language Compiler 2-228 14. Automatic Programming: Interpreters 2-234 15. Automatic Programming: Recursive Languages 2-244 16. Logical Programming 2-246 17. Microprogramming 2-251 18. Programs for Maintenance of Equipment 2-258 19. Programming with Natural Language literature, Acknowledgments, and References 2-259 2-260 I. NATURE OF PROGRAMMING Problem Solving Characteristics of Problem Solving. Basically, the general problem which the digital computer programmer must face is the solution oj 2-01 2-02 DIGITAL COMPUTER PROGRAMMING problems. The solution of problems with automatic information processing machines employs two tools: 1. Arithmetic (basically elementary descriptive number theory or the manipulation of integers). The problem of evaluating and understanding the arithmetic portion of the problem-solving job is numerical analysis (see Vol. 1, Chap. 14). 2. Formal logic, or the making of decisions on the basis of elemental pieces of basic information. In this chapter the emphasis will be placed on the non-numerical portions of the problems. Limitations. For each machine developed to solve problems, a new pro1>lem will be found to strain its resources. Problems tend to outgrow the ability of the present man-machine combinations to construct models of the problem, within the computers, for solution. The important limitations imposed by general purpose computers are: 1. Logical Portion of the Solution Process. Vast problems on classical standards, describing the inter:action of men, machines, and nature in a generally unpredictable (except statistically) fashion, must be solved by mapping their description into digital information machines. Example. The problem of commercial or military aircraft traffic control. 2. Multidimensional Arithmetic Problems. Example. Multidimensional problems in partial differential equations, as described by numerical analysis. 3. Succession of Related 01' Even N onrelated Problems. Many problems involve organizing the solution of not one problem (large or small), but of a number of problems coming from different disciplines, so as to make use of previous knowledge accumulated and stored in the automatic digital computer. 4. Many Problems Are Not Well Defined. These experimentally and theoretically undefined problems must nevertheless have solution processes developed for them. Examples. Air traffic control, the solution of partial differential equa~ions, and the control of management and information functions in a large organization. Approaches to Programming. The two approaches to problem solving with machines can be divided into (1) hand programming, in which programs are produced in detail by individual practitioners in a manner that is more an art than a science, and (2) automatic programming, with the machine taking over most of the routine decisions. Automatic Programming. This area encompasses two basic problems: 1. The Problem of Languages. If humans are to keep up with the voracious input capacity of the digital computers, then languages built PROGRAMMING AND CODING 2-03 for the humans, and not the machines, must be developed and put into operation. This involves the creation of translators, techniques for using them, and, finally, a theory of such formal translators. Multimachine installations, with each machine having a separate language of its own, require a unified language for most efficient use. The development of "automatic problem solution" requires formalism, interchangeability of procedures, and compatibility of languages if it is to become a true discipline in the scientific sense. 2. The Problen" of Files. Each problem solved on a computer should be considered as part of the structure of a generalized body of knowledge, either in a certain domain, or in the overall domain of problem solving itself. The body of knowledge about automatic problem solving so laboriously collected by the users of these machines must be set up so that each machine itself can store, generate, and accept problem procedures generated not only by human beings, but also by the machine itself and by other machines. The final long-range goal in this problem of files and information retrieval, in relationship to what is presently known as "computer programming," is therefore not to generate programs or algorithms for digital computers by human beings, but instead to develop programs or algorithms for the generation, improvement, filing, retrieval, and combination of other algorithms by the computers themselves. Basic Concepts of Programming The process of preparing a program or set of coded instructions to solve a problem on a high-speed electronic digital computer has been more of an art than a science. Programming Procedure. A programmer is called upon to map an external problem from the field of science, engineering, business, or other field of origin, into the logical structure of a general purpose digital computer by preparing, or overseeing the preparation of, a list of instructions to be performed in sequence by the computer. He may do this himself, step by step; but if he is able to take advantage of certain procedures already set up, he may be aided in many cases by the use of the machine itself. This allows incorporation of similar or associated procedures that he or other persons have evolved previously. The usual procedures for the programmer are: 1. Determine the problem, since usually it is posed in such an original form that it is necessary to determine the actual statement of the problem before proceeding further. 2. Analyze the problem in whatever external language it has been presented-algebra, pictorialized "road map," handbook of organiz.ational 2-04 DIGITAL COMPUTER PROGRAMMING procedures, an actual physical or organizational structure, or perhaps only inputs allowed and outputs required. 3. Break the problem down into logical "atomic fragments," and synthesize a resultant program or algorithm in terms of a different language, that of the machine. Basic Computer Organization. The heart of a scientific calculating system is the large-scale general purpose, high-speed stored program electronic digital computer (see Ref. 19). These computers are patterned after the traditional sequential use of arithmetic, with internal decision making based on partial results. Block Diagram of Computer Solution. Figure 1 describes a flow diagram which may be considered an example of a typical process of r----------------------------------i I Determine initial program layout or structure by experience ·Calculate other measures of effectiveness, time, cost Translate program within this framework Do these calculated measures fall within range? I I I Yes I No I I I I I I I I ~---'No I I I I I Make radical changes as to methods, structure No Yes I I \o+-------..J I I _____________ I ~ L _____________________ ~ Change selected parameters to satisfy the technical "measures of effectiveness" Have all radically new and different approaches been tried? .'..... FIG. 1. ~olution Block diagram of computer solution. of a scientific, business, or real-time control problem. In Fig. 1 all the blocks within the dotted lines can be handled automatically by a high-speed digital computer. Those blocks outside the dotted lines have not yet been successfully attacked by machine techniques. They require human intervention. Thus, any programming procedure embeds the electronic digital computer in a larger data processing system with interplay between the automatic computer on the one hand and the mathematician or engineer or business systems analyst on the other. PROGRAMMING AND CODING 2-05 Programming System. The programmer, whatever his region of application, is faced with a classical problem, the same that faces either the computer designer or any designer: the formal description of a process or procedure. The steps are as follows: 1. Determination of a descriptive statement of the problem in a formal language, symbolic or pictorial, matllematical or graphical. 2. Determination of a basic (canonical) set of structures or pieces into which he will decompose his formal description. In computer programming these are called instructions, or subroutines, or statements, depending on the level of language involved. 3. Decomposition of the original problem into these basic pieces. 4. Optimization of the performance characteristics of the problem under some measure of effectiveness: fastest program, smallest amount of man and machine time, storage within some predetermined maximum. 5. Analysis of the performance. Determination of the behavior of the final program for a "satisfactory" selection of input parameters. Expansion of the Controlled System. At the present time, at most the two boxes, "Translate program" and "Does program work," shown in Fig. 2, are being handled more or less automatically by the machines Translate program within framework FIG. 2. ~ Does program work? Operations handled automatically by the machine. themselves. The gener,al trend of the discipline now being evolved is to extend the areas of the dotted lines of Fig. 1 as far as possible. Self.Improvement in Systems. An ultimate desire in a system is that it be "self-improving." A general large control system is shown in Fig. 3a which is to improve its performance in time. Figure 3b shows an information machine system having similar objectives. The development of unified programming systems indicates recent trends toward complete mechanization (Ref. 97). One system stores on magnetic tape all programs being written, corrected, and performed within the computer. Measures of Performance. If one therefore considers computer programming as embedded within a large structure, one can determine several pertinent categories of measurement of the performance of programs prepared for use on a machine. 1. Degree of generalization and abstraction of the program. vVithin bounds, a program that can handle a large variety of cases is much more useful than one that solves only one specific case. Experience has shown 2-06 DIGITAL COMPUTER PROGRAMMING Establishment of policies Effectuation of decisions File consultation Large file for maintenance of information on policies and product miss of goal File maintenance Sensing for discrepancy between product and plan (a) Decision as to formulation techniques/error analysis. Detailed selection of algorithms, logical and numerical analysis Performance of problem File consultation for program or previous data Large file for maintenance of rules of procedures, specifications of available algorithms and algorithms themselves File maintenance Sensing for discrepancy in preformance of problem from expected (b) FIG. 3. Computer system. Dotted lines indicate information flow is less heavy than for solid lines. (a) Large control system. (b) Information machine system. that existence of a sufficiently general computer program will generate the solution of new cases not previously considered. 2. Addition to the body of knowledge of the system. A new computer program is worth much more if it adds new techniques to an organized laboratory programming system. 3. Standard conventions. By use of standard conventions the programmer can use the fruits of the labors of others who have obeyed the same conventions. 4. Cost, elapsed time, human time, machine time. These are the measures which are ordinarily uppermost in the computer user's mind PROGRAMMING AND CODING 2-07 and on which many short-range decisions are based. In the long run, the three previous criteria may prove much more important. Characteristics of :Modern Problem Solving In using a general purpose digital computer there is a need for absolute preciseness required in transcription of data, writing of detailed instructions, operation of the machines. These areas are important, but represent the routine aspects of problem solving. More fundamental are the characteristics of the formalized solution of problems presently required by the information machines as follows: 1. En!;phasis on structure rather than number. Portions of the problem are arithmetic, but the most difficult part of the problem-solving procedure is the readying of the logical decision-making structure. 2. Difficulty in making intuitive decision processes precise. 3. Requirement of the problem-solving systern to adapt to the changing structure oj the problem. Most problems of modern science and industrial society are not static, but rather dynamic. 4. Extreme combinatorial complexity. 5. Importance of correct manipulation of data. Data processing machines can perform a far greater number of operations between errors than can a human being. This means that in smaller problems, many of the customary checks required to guarantee accuracy of solution can be ignored. However, since the size of problems has kept pace with the mean free path between errors, the need of thorough error-detecting and error-correcting procedures remains just as important on the larger problems (see Chap. 13). Until such procedures can be included automatically in an overall integrated system (as has been attempted, for example, by Carr et al., Ref. 18), this property of machines of accuracy, valid for smaller problems, must still be a responsibility of the human programmer. The Programmer and Machine Design. Onto the programmer falls the responsibility of bridging the gap between human and machine performance in the first three characteristics, as well as of taking advantage of the machine's penchant for spectacular performance in the last two cases. New programming procedures, when successful, have been built later into hardware. Examples are automatic indexing, automatic number conversion, simplified input-output, simplified and extended languages . . The Structure of Machine Programming It is important to understand just what is being done when a problem is "put on" the machine. This description may be formulated in mathematical terms. 2-08 DIGITAL COMPUTER PROGRAMMING Mathematical Representation of the Machine. As a simplification, consider first the electronic portion of the machine and assume a binary machine. At the beginning of a problem, there is a certain "binary function" stored in the machine, with each binary storage position containing either a 0 or 1. At the end of the problem, the machine contains a second binary function, which generally is not the same. Thus, in mathematical language, one can consider the machine proper as a method of forming correspondence between one machine function and another (see also Chap. 17, Sect. 5). In mathematical notation label the binary storage positions in the machine by some index and call the total set of such positions X. If there are N storage positions in the machine, there are 2N possible "machine functions." One such machine function will be called f (x) . The set of all such machine functions will be called F. (See VoL 1, Chap. 1, Sets and Relations.) Then the electronic elements of the machine form an operator ME over the set of all functions f (x) . Figure 4 shows a picture of the machine's action. x FIG. 4. Machine action in symbolic form. The operator ME can be extended to include the entire machine, with its input and output equipment. Such a function will be called the automatic machine or M operator, which transforms functions f(x). The basic set X then includes not only all binary storage positions in the machine, but also binary storage positions on the paper, magnetic tape, and typewriters attached to it. The function space F now includes all functions over the extended set. Definition of Programming. Problems to be solved by the machine must be similar in structure to the machine itself. Therefore, any problem to be solved on the machine must be in a sense "mathematically similar" to the machine structure just outlined. A problem to be put on the machine will be defined as some mapping or transformation or operator. A similar picture to the above can be drawn (see Fig. 5). Some set N with index ~, a set of functions cf> (~) over N,into F, the set of functions <1>' into F', and the problem operator P into the machine operator M. This is shown in Fig. 6. FIG. 6. Programming in symbolic form. Programming a problem consists of forming a correspondence between the original problem functions and the machine functions f(x), and between the problem operator P and the machine operator lVI. The mapping of functions is done by some prearranged convention, and the mapping of the operator Pinto M is done "in the small" or piecemeal. Thus the problem operator P is broken up into successive operators P b P 2 , P 3 , • • • P n , as shown in Fig. 6. In Fig. 6, C = a conversion operator converting problem functions into machine functions Pi = canonical components of the problem operator P T = the operator transformation taking the Pi into corresponding Mi R = a reconversion operator carrying machine functions back into problem functions. Usually the operator C will carry <1> into F in a f.ashion that is not 1 : 1. This means that a function in F may correspond to many functions in <1>. Example. The mapping of irrational and rational numbers into finite length machine numbers. All the numbers within a certain interval DIGITAL COMPUTER PROGRAMMING 2-10 on the real line are made to correspond to one number in the machine. This is where the celebrated roundoff problem arises. Although the numbers or functions in F may have exact counterparts in
is expressed in an original number system in the following form: ° (2) i= k,k-1,···,1,0, -1, -2,···. In the second number system (3) i = k', k' - 1, ... , 1,0, -1, -2, .... It is to be converted by using the arithmetic of the first number system. To perform the conversion it is easiest to split the number given in eq. (2) into two parts, an integer part N, and a fractional part F, each one to be treated separately, i.e., n = N + F. Working first on the integer part, one divides N by r2 in the arithmetic of the first number system to obtain a' 0 in the following fashion: (4) PROGRAMMING AND CODING where [ 2-15 ] indicates the "integral part of." Then (5) N(O) = a'i = (6) (7) N(i+I) = N, N(i) [N(i) [N(i) /r2]r2, /r2]. At each stage the reduced expression for the succeeding integer is given by the integer part of the quotient obtained by division by the radix r2. In converting the fractional part F of the number, instead of division, multiplication by the power of the radix r2 is performed at each step, and the integer part of the remainder yields the coefficient of the corresponding term. The general formula for this process is as follows: (8) F(O) = a'_Ir2- I + a'_2r2-2 + a'_3r2-3 + ... , a'i = [r 2 F(i)], (9) (10) F(Hl) = r2F(i) - a'-I. EXAMPLE 1. Conversion of a mixed number given in the decimal notation into the corresponding binary number by using decimal arithmetic. n = 97.975 = where N(O) = 97, F(O) = N(O) + F(O), 0.975. a'o = 97 - [97/2]2 = 1, = [97/2] = 48, a'I = 48 - [48/2]2 = 0, N(2) = [48/2J = 24, a'2 = 24 - [24/2]2 = 0, N(3) = [24/2] = 12, a'3 = 12 - [12/2]2 = 0, N(4) = [12/2J = 6, a'4 = 6 - [6/2]2 = 0, N(5) = [6/2J = 3, a'5 = 3 - [3/2J2 = 1, N(6) = [3/2] = 1, a'6 = 1 - [1/2]2 = 1, N(6) = [1/2] = o. N(l) Therefore N(O) = 1 . 26 + 1 . 2 5 + 0 . 24 + 0 . 23 + °. + °. 22 21 + 1 . 2°, DIGITAL COMPUTER PROGRAMMING 2-16 or as it is commonly written in the binary notation N(O) = 1100001k Similarly, F(O) = 0.975, a' -1 = [2 (0.975)] = 1, F(1) = [2(0.975)] - 1 = 0.95, a'-2 = [2(0.95)] = 1, F(2) = [2(0.95)] - 1 = 0.90, a'-3 = [2(0.90)] = 1, F(3) = [2(0.90)] - 1 = 0.80, a'-4 = [2(0.80)] = 1, F(4) = [2(0.80)] - 1 = 0.60, a' -5 = [2(0.60)] = 1, F(5) = [2 (0.60)] - 1 = 0.20, a'-6 = [2(q.20)] F(6) = [2(0.20)] a'-7 = [2(0.40)] F(7) = [2(0.40)] = 0, - 0 = 0.40, = 0, - 0 = 0.80. At this point the computation can be terminated, since F(3) and the result is therefore a repeating binary fraction. Hence, F = 1 .2- 1 == F(7), + 1 .2-2 + 1 .2-3 + 1 .2-4 + 1 .2-5 + 0 . 2- 6 + 0 . 2-7 •• ' . The number n can therefore be written n = 97.975\10 = 1100001.11111001111100·· '\2 EXAMPLE 2. Conversion of a binary number, the integer I, into a decimal by using binary arithmetic inside a computer. The binary numbers obtained that are equivalent to one of the ten decimal digits o through 9 upon completion must be printed out of the computer by some procedure such as the use of binary-coded decimal through an output typewriter device. Given I = N(O) = 10110010101\2, divide by 10\10 = 1010\2, successively, [ ] again mean the integral part of. a' 0 N(1) 10110010101 - [10110010101/1010]1010 = 10110010101 - (10001110)(1010) = 1001\2 = 9\lD, = [10110010101/1010] = 10001110, = PROGRAMMING AND CODING 2-17 a'l = 10001110 - [10001110/1010]1010 = 10001110 - (1110)1010 = 001012 = 2110, N(2) = [10001110/1010] = 1110, a'2 = 1110 - [1110/1010]1010 = 010012 = 4110, N(3) = [1110/1010] = 1, a' 3 = 1 - [1/1010]1010 = 000112 = 1110. Therefore 1= 1011001010112 = 1429110' A similar example could be carried out for a binary fraction. Conversion in the Arithmetic of the Second System. When n is expressed in the form of eq. (1), perform the operations on the right-hand side of the equation in the r2 system. This can be done by two methods: (a) simple multiplication of the powers which may be stored inside the computing machine, followed by addition or (b) the synthetic division or polynomial multiplication process which is given in the following form: (11) Nlr2 = (... «akrl + ak-l)rl + ak-2)rl + ... + ao) 172 or (12) PI = ak, Pi+l = Pirl + ak-i, Pk+l = N (Pi = successive iterants), and (13) Flr2 = ( ... «a_ifrl + a-U-l)/rl + a-U-2»/rt + ... a-l)/rlIT2 where the value j is picked at the beginning. EXAMPLE 1. Conversion of a number from binary to decimal by using the decimal number system. n = 10110010101 k (a) Adding successive powers of 2 in the decimal system, eq. (6), n = 20 + 22 + 24 + 27 + 28 + 2 10 = 1 + 4 + 16 + 128 + 256 + 1024 = 1429110. (b) Using the synthetic division process of eq. (7), n= « « « « (1 (2)+0)2+ 1)2+ 1)2+0)2+0)2+ 1)2+0)2+ 1)2+0)2+ 1, with successive iterants Pi 2, 5, 11, 22, 44, 89, 178, 357, 714, 1429, n = 1429110. 2-18 DIGITAL COMPUTER PROGRAMMING In the first procedure, eq. (a), it was assumed that the numerical equivalents of the power of 2 were stored in some fashion in the external decimal system. EXAMPLE 2. For fractions, the two procedures are, for n = 0.10111001\2: (a) Adding successive powers, n = 1 (2-1) +0 (2- 2 ) + 1 (2-3 ) + 1 (2- 4 ) + 1 (2- 5 ) +0 (2- 6 ) +0 (2-7 ) + 1 (2-8 ) =0.5 +0.125 +0.0625+0.03125 +000390625 = 0.72265625\10. (b) Synthetic division, n= (( (( (( (1 (2-1 )+0)2-1+0)2-1+ 1)2-1+ 1)2-1+ 1)2-1+0)2-1+ 1)2-1, which yields as iterants 0.5, 0.25, 0.125, 0.5625, 0.78125, 0.890625, 0.4453125, 0.72265625, n = 0.72265625\10. Note. For fractional numbers the second procedure of synthetic division, necessitating successive divisions by powers of two, does\ not work as well because of the difficulties of the fractions involved, and because the procedure moves from the lowest power of the radix upward. EXAMPLE 3. The same procedure can be used in the conversion of decimal numbers to binary by using the binary system, as in the case of conversion of straight binary-coded decimal numbers to binary inside the machine. Convert n = 1429\10. (a) Adding successive powers, n = (1 . 103 + 4 . 102 + 2 . 10 1 + 9 . 100) \10 = 1 (1111101000) + 100(1100100) + 10(1010) + 1001 (1) = 10110010101 k (b) Synthetic division, n = ((1 (1010) + 100) 1010 + 10) 1010 + 1001 = 10110010101 k A Trick Method. A trick method of conversion can be used when conversion is done in the system having the lower radix. The procedure makes use of a "magic number" which is the difference between the two bases, determined as follows: 1. If r1 < r2, the magic number is r2 - r1, and conversion is in the r1 arithmetic. PROGRAMMING AND CODING 2-19 2. If rl > r2, the magic number is r2 - rl (in this case always negative) and conversion is in the r2 arithmetic. Octal to Decimal. Here rl < r2, i.e., 8 < 10. The rule in going from an octal number to decimal is as follows. Use the magic number 2 = 10 - 8, multiply it decimally by the first left-hand octal digit con· sidered as a decimal, and subtract the resulting number decimally from the first two left-hand octal digits, again considered as a decimal. The procedure is then repeated by multiplying the first two digits of the remainder and subtracting them again, again treating all numbers as decimals. Repeat the process, multiplying by successively larger groups of digits by 2 in each case and subtracting until the number in that column vanishes. Repeat the same procedure in succeeding columns until a group of k - 1 digits has been used, where k is the number of digits in the original number. EXAMPLE. Convert 107718 and 67818 to decimal n n 1077\8 1077 678\8 678 -12 -(2X6) = - 558 -2 - (2 X 1) - 877 -(2X8) -16 =-m - (2 X 55) = -110 -(2 X 71) = -142 n 575110 n Hexadecimal to Decimal. Here r2 > rl, i.e., 16 > 10. A similar procedure may be used for converting from hexadecimal to decimal via decimal. Here the magic number is negative, -6 = 10 - 16. The procedure is given directly without any further explanation. EXAMPLE. n = 6A7116 = 6 10 7116 -(-6X6) - (-6 X 106) = n + + 3 6 10 6 7 6 3 6 17 0 (carry occurs at 16, i.e., 10 + 6) 3110 Decimal to Binary. In general, when converting from arbitrary external numbers into an internal machine language, scale factors may be introduced into the original numbers to complicate the procedure. The procedure most often used in the conversion of decimal numbers to binary by using binary arithConversion with Scale Factors. 2-20 DIGITAL COMPUTER PROGRAMMING metic is that given by eqs. (11) to (13). In the computer with internal bin2try arithmetic the scale factors allowable will generally consist of a decimal scale factor and a binary scale factor. In the MAGIC notation for use with the MIDAC computer, and in similar notations for other binary computers such as the IBM 704 and Univac Scientific, the following is the standard form of a digital number as applied on input. In many cases the binary and decimal scale factors will be zero so that the number itself will be given by the fractional part. = 97.975 X 2-7 , n = 0.97975 X 2- 7 X 10 2 , MAGIC form = 0.97975 - 7b + 2d. n The general procedure for conversion of these numbers is as follows. The decimal digits themselves are input into the machine using binarycoded decimal and shifted in the proper direction by binary shifts of multiples of four, either left or right, depending upon the decimal scale factor. The result is then split into integer and fractional parts. These are then converted by the methods given by eqs. (11) to (13) above. When the resulting binary number is obtained, it is shifted finally by the corresponding binary scale factor to give the internal machine result. If the machine is translating digital numbers, that is, numbers with absolute values less than one, it is required that the number itself, multiplied by its various scale factors, be less than one in absolute value. In case the number is being translated into a floating point form with a fractional part less than one in absolute value in binary and an accompanying exponential part also given in binary, the number is standardized with its fractional part less than one in absolute value but greater than one-half. EXAMPLE. n = 1.55 X 2 - 5 X 10 1 becomes upon conversion n = 31/32 X 2- 1 . In some cases in order to save space, the fractional part and exponent are "packed" into one register or machine location with the binary fractional part and the exponential integer part stored together. Binary to Decimal Procedure. In the MAGIC system on MIDAC the inverse procedure of binary to decimal conversion can also be applied, although in most cases the decimal scale factor is not stored in the machine, but instead only a binary scale factor is used. Output conversion requires a fractional part in absolute value less than one, and a corresponding binary scale factor to obtain a composite external decimal number. The scale factor is used to shift the fraction either left or PROGRAMMING AND CODING 2-21 right depending upon the value of the binary scale factor, before conversion of the corresponding binary integer and fraction, with a method such as that given by eqs. (4) to (10). The resultant series of binary-coded-decimal digits is then printed out of the machine by using the binary-coded-decimal notation, or a "single character" notation depending upon the particular type of printout being used. Roundoff in Conversion. vVith such systems as the Michigan MAGIC system or the MIT CSSR (Comprehensive System of Service Routines) (Ref. 24) with their complete conversion of numbers from binary to decimal and decimal to binary handled automatically by the machine itself, it is entirely possible for a binary machine to work satisfactorily in the external decimal language, but there are still difficulties involved. Exact binary numbers inside the machine will not be translated in every case into exact decimal numbers. Unless special provisions for a decimal type of roundoff are made, the user of a binary machine will find that his decimal numbers are being output in an incorrect form. Such an error can be corrected by performing the roundoff of numbers inside the machine in decimal rather than binary arithmetic. Internal Decimal Scale Factors. Because of the complexities of the use of binary scale factors, some computer installations with binary machines have nevertheless made use of internal decimal scale factors. 'Vith this procedure the number conversion problem can be made much easier; however, it does not take advantage of special operations in the binary machines which allow the binary numbers to be shifted to the right or left, meanwhile saving the number of shifts that have been accomplished, thus allowing automatic binary scaling. Use of internal decimal scale factors also requires the storage of multiprecision constants in some cases, if precision is to be retained. The Illinois computer (ILLIAC) (Ref. 56), which makes use of decimal scale factoring in many of its routines and in its floating decimal point interpretive program, in its original mode of operation did not have a comprehensive system of input-output and therefore did not have as easy a system of converting by using a binary scale factor. The effort that many mathematicians and programmers have expended on the problems of converting from one number system into another has convinced many of them that computers with internal decimal arithmetic are more useful to the external user. Many of the commercial businessoriented machines make use of some type of binary-coded-decimal representation. Many of the users of binary machines have converted them by internal programming into equivalent decimal machines on the outside. This indicates a trend toward the use of decimal arithmetic 2-22 DIGITAL COMPUTER PROGRAMMING inside the machine even though the actual circuitry may be of the binary type and the storage may be of a binary-coded-decimal nature. The IBM 709 design is an exception to this trend. Representative of Negative Numbers Since electronic adders and complementers are much easier to design and require less hardware than subtractors, many digital computers make use of the technique of complementation, by which negative numbers are mapped into positive numbers outside of the usual range. Complemented numbers, under the proper conventions, may be added to a second number to yield the equivalent of the subtraction of the first number from the second. Complementation. Two basic complementation techniques, each based on hardware considerations, must be kept in mind by the computer programmer if the machine he is using should be designed to make use of one or the other. These are (1) the "tens" (decimal), "twos" (binary), or radix complement; and (2) the "nines" (decimal), "ones" (binary), or diminished radix complement. Ip the case of the radix complement, negative numbers less than one in absolute value may often be stored inside the computer in the range from 9 to 10 (for the tens complement) or one to two (for the ones complement). The diminished radix complementation scheme performs a similar mapping, with the added difficulty in the latter case that there are two representations of zero (negative and positive zero) which often must be treated as a special case. Problems arise with these complements in the shifting of numbers (multiplication by powers of the base) and in logical operations on stored negative numbers, since they do not follow the usual conventions. However, on those machines which follow the usual notation, of sign followed by absolute value, none of these difficulties can arise. Precision or Amount of Information Available Fixed Word Length. Machines, called fixed-word-length computers, have standardized the length of their numbers in the range from about nine to twelve decimal digits, or 36 to 45 binary digits. The number of digits used to represent a number gives an indication of the precision, or amount of information that the number itself contains. Rather than make only one number length available, several machines have offered the user the alternative of (1) longer word lengths as listed above, or (2) shorter numbers, for example, half the number of digits. Multiprecision Operations. For machines with a fixed word length, it is possible to obtain the equivalent of operating with longer numbers of PROGRAMMING AND CODING 2-23 twice or three times the number of digits by making use of multiprecision types of operations, in which combinations of programmed instructions perform the equivalent of an arithmetic unit handling numbers of higher precision. Variable Word Length. Computers developed particularly for business applications have a variable word length which allows numbers and groups of alphanumeric characters to be operated upon flexibly. With such internal computer structures, numbers of almost any digit length may be operated upon arithmetically, at a cost in time approximately proportional to the number of digits in each operand. Range of Numbers Fixed Point Machines. A machine in which the arithmetic circuitry is so designed that the decimal point for operands and result remains in a corresponding fixed position, is called a fixed point computer. The fixed point may be located so as to make the numbers involved either fractions less than one in absolute value, integers, or mixed numbers. Location of Radix Point. In general, a digital computer in which the radix point is located at the extreme left of the number deals with numbers of absolute value less than one, i.e., In! < 1. Such numbers have been called "digital" numbers (Ref. 19), and the term is used throughout this chapter. The product of two such numbers gives as a result another "digital" number, i.e., In'l < 1. On the other hand, division, addition, or subtraction of two "digital" numbers does not necessarily result in another "digital" number, and the problem of overflow arises. Any other position of fixing the radix point can be made equivalent to fixing it at the extreme left by the use of appropriate scale factors. These scale factors are usually powers of the base, with their main purpose to keep partial results within the range of the computer and at the same time prevent these results being crowded together into a small region of the interval of the machine's range of application. In the case of "digital" numbers the latter interval would generally be close to zero, and numbers there would be said to have lost significance, since they have few information-containing digits. The optional position for the radix point at the extreme right so as to make numbers inside the computer all integers is somewhat less satisfactory, since the product of two integers of n digits yields an integer containing 2n significant digits. In this case scale factors are required for every multiplication, and overflows occur as before in many cases for addition, subtraction, and division. Placing of the radix point somewhere midway between these two extremes does not apparently gain any 2-24 DIGITAL COMPUTER PROGRAMMING further advantage, since scale factors or equivalent multiplication by powers of the base must be inserted after each multiplication. Floating Point Machines. As an alternative to one or the other of the above fixed point notations, machines have been built with a variable radix point or, as it is better known, a floating point number system. With such a scheme, numbers are represented by a fractional part or mantissa, containing the significant digit portion of the number, and an exponent representing the power of the base by which the fraction must be multiplied in order to obtain the number itself. For example, one standard notation for floating point numbers n is n = fore, where f is the fractional or significant part of the representation, with If I < 1, and e is the power of the base r needed to bring f up or down to the value of n, Number System Triad. Floating point numbers are generally carried inside a digital computer with m significant digits representing the fractional part f, and n digits representing the exponent e (which may be complemented to represent negative as well as positive integer exponents). The integers m and n, along with a third integer p representing the number of digits to the left of the radix point, may be combined in a number system triad (m, n, p) indicating the number structure of a computer. Fixed point machines have n = O. Machines using "digital" numbers (absolute value less than 1) have p = O. EXAMPLES. A (10, 0, 0) decimal computer would be one with 10 significant decimal digits in the fractional part of a number, no digits in the exponent, and no digits to the left of the decimal point. Numbers in a (10, 0, 0) decimal computer, therefore, would be fixed point "digital" numbers containing ten decimal digits, and with the decimal point therefore located at the extreme left. A (30, 6, 0) binary computer would be one with 30 binary digits in the fractional part, and six in the exponent part of a floating point number, and with the binary point at the extreme left. Finally, a (10, 2, 10) decimal computer would be one with the mantissa expressed in ten-decimal integers, and the exponential part of the number given by two-decimal digits. Scale Factors in Fixed Point Computations The recent appearance of built-in floating point arithmetic on many machines, as well as the use of standard translator-compilers which provide automatic floating point programming via subroutines has decreased the need for emphasis on fixed point computation. However, as Burks, von Neumann, and Goldstine (see Ref. 19) point out, computations with PROGRAMMING AND CODING 2-25 floating point can lead to violent arithmetic errors unless thoroughly analyzed. Hence, fixed point computations will continue, either as part of automatically scaled programs turned out by translators, or else as hand-tailored programs written for fixed point computers. Procedure. The easiest technique for introduction of scale factors into a program is as follows. 1. Determine on the basis of values of input parameters, supposing their range is known at the beginning of a problem, the desired scale factor needed to bring each computed value down to absolute value less than one. 2. Insert shift operations at each stage of the computation which will guarantee that over the range of inputs the resulting numbers will remain digital. With the PACT system (see Ref. 71), the programmer performs step 1 and the assembler step 2. The latter can also be done by hand. EXAMPLE. Suppose the problem to be calculated is as follows: Compute the value of the polynomial p(x) = 2.42x 3 + 10.05x2 - 1024.1x - 20327 for x = -10, - 9, ... , 0, 1, ... , 9, 10. The computation used will be the nested sequence procedure p(x) = ((2.42x + 10.05)x - 1024.1)x - 20327, which may be decomposed into the following set of arithmetic operations where bounds on the absolute values of the partial result are also listed. Arrows indicate transfer of information (storage). 1. 2. 3. 4. 5. 6. 7. Po ~ 2.42 PI ~ Pox P2 ~ PI 10.05 P3 ~P2X P4 ~ P3 - 1024.1 P5 ~ P4 X pG ~ P5 - 20327 + (IPol = 2.42, x ~ 10) (ipil < 25) (lp21 < 35) (lp31 < 350) (lp41 < 1400) (lp51 < 15,000) (lpGI < 36,000) The bounds on these partial results could be improved by taking the signs of the summands at each stage into consideration. From the list of bounds, the scale factors required to bring the partial results into "digital" number range are: x· 10-2, Po . 10- 1, PI . 10-2, P2 .10-2, P3 '10-3, P4 ·10-4, P5 .10-5, P6 ·10~Q .. DIGITAL COMPUTER PROGRAMMING 2-26 Therefore, the sequence of arithmetic statements would be listed stepwise, starting at the first, proceeding downwards, and inserting scale factors as required: (Po· 10- 1 ) (Pl· 10-2 ) (P2· 10- 2 ) (P3· 10-3 ) (P4 .10-4 ) (P5· 10-5 ) (pu· 10-5 ) 1. 2. 3. 4. 5. 6. 7. fffffff- (2.42 . 10- 1 ) (PO· 10- 1 ) (x . 10-2 ) (10 1 ) (Pl· 10-2 ) + (10.05 . 10-2 ) (P2 . 10-2 ) (x . 10-2 ) (10 1 ) (P3 .10-3 )(10- 1 ) - (1024.1.10- 4 ) (P4 . 10-4)(x . 10- 2 )(10 1 ) (P5· 10-5 ), - (20,237· 10-5 ) There is a redundant left shift followed by a right shift in steps 4 and 5 that should be canceled for coding efficiency. Computer Instructions. The translation from the latter sequence into a sequence of fixed point arithmetic instructions for any computer should now be a simple process. The program, as written for the Datatron 205, (see Sect. 6) upon ignoring use of any special features, such as the index registers and input-output, and coding only the arithmetic sequence, would be, when x = -10: o. ea 0101 l. 2. mr 0100 3. 4. 5. '6. 7. 8. 9. 100. 101. 102. 103. 104. 105. s10001 ad 0102 n:r 0100 ad 0103 mr 0100 s10001 su 0104 true 0105 - 1000000000 2420000000 1005000000 1024100000 2023700000 2.42 .10- 1 -* ACC (2.42 . 10- 1 ) (x . 10-2 ) (2.42 . 10- 1 ) (x . 10-2 ) (10 1 ) = PI . 10-2 (Pl· 10-2 ) + (10.05 . 10-2 ) = P2 . 10-2 (P2 . 10-2 ) (x . 10- 2 ) = P3 . 10-4 (P3 . 10-4 ) + (1024.1 . 10-4 ) = P4 . 10-4 (P4· 10-4 ) (x . 10- 2 ) (P4 . 10-4 ) (x . 10-2 )(10 1 ) = P5 . 10-5 (P5 . 10-5 ) - (20237· 10-5 ) (p (x) . 10-5 ) -* Location 105 (x . 10-2 ) (2.42 . 10- 1 ) (10.05 . 10-2 ) (1024.1 . 10-4 ) (20237 . 10-5 ) (p(x) . 10-5 ) 3. NUMBER CONVERSION TABLES Most number conversion in binary computers is now done completely by the machine itself. However, for completeness and easy access to the PROGRAMMING AND CODING 2-27 programmer who from time to time has to check a number obtained from lights on the console of the computer, or printed out in nonstandard notation, Tables 1 to 5 are included from Carr and Scott (Ref. 24) and the IBM 704 manual (Ref. 54). Table Table Table Table Table Table 1. Octal-Decimal Integer Conversion 2. 3. 4. 5. Octal-Decimal Fraction Conversion Hexadecimal-Decimal Conversion (Two-Way) Powers of 2 (Positive and Negative) Expressed in Decimal Hexadecimal Multiplication Page 2-28 2-36 2-42 2-43 2-44 TABLE 0000 0000 to 0777 0511 (Octal) (Decimal) to Octal Decimal 10000 - 4096 20000 - 8192 30000 - 12288 40000 - 16384 50000 - 20480 60000 - 24576 70000 - 28672 1. N I N OCTAL-D..J:CIMAL INTEGER CONVERSION 0 1 2 3 4 5 6 7 0000 0010 0020 0030 0040 0050 0060 0070 0000 0008 0016 0024 0032 0040 0048 005~ 0001 0009 0017· 0025 0033 0041 0049 0057 0002 0010 0018 0026 0034 0042 0050 0058 0003 0011 0019 0027 0035 0043 0051 0059 0004 0012 0020 0028 0036 0044 0052 0060 0005 0013 0021 0029 0037 0045 0053 0061 0006 0014 0022 0030 0038 0046 0054 0062 0007 0015 0023 0031 0039 0047 0055 0063 0400 0410 0.420 0430 0440 0450 0460 0470 0100 0110 0120 0130 0140 0150 0160 0170 0064 0072 0080 0088 0096 0104 0112 0120 0065 0073 0081 0089 0097 0105 0113 0121 0066 0074 0082 0090 0098 0106 0114 0122 0067 0075 0.083 0091 0099 0107 0115 0123 0068 0076 0084 0092 0100 0108 0116 0124 0069 0077 0085 0093 0101 0109 0117 0125 0070 0078 0086 0094 0102 0110 0118· 0126 0071 0079 0.087 0095 0103 0111 0119 0127. 0500 051.0 0520 0530 0540 0550 0560 0570 Q) 1 2 3 4 5 6 7 0256 0264 0272 0280 0288 0296 0304 0312 0257 0265 0273 0281 0289 0297 0305 0313 0258 0266 0274 0282 0290 0298 0306 0314 0259 0267 0275 0283 0291 0299 0307 0315 0260 0268 0276 0284 0292 0300 0308 0316 0261 0269 0277 0285 0293 0301 0309 0317 0262 0270 0278 0286 0294 0302 0310 0318 0263 0271 0279 0287 0295 0303 0311 0319 0320 0328 0336 0344 0352 0360 0368 0376 0321 0329 0337 0345 03S3 '0361 0369 0377 0322 0330 0338 0346 0354 0362 0370 0378 0323 0331 0339 0347 0355 0363 0371 0379 0324 0332 0340 0348 0356 0364 0372 0380 0325 0333 0341 0349 0357 0365 0373 0381 0326 0334 0342 0350 0358 0366 0374 0382 0327 0335 0343 0351 0359 0367 0375 0383 0 0200 0210 0220 0230 0240 0250 0260 0270 0128 0136 0144 0152 0160 0168 0176 0184 0129 0137 0145 0153 0161 0169 0177 0185' 0130 0138 0146 0154 0162 0170 0178 0186 0131 0139 0147 0155 0163 0171 0179 0187 0132 0140 0148 0156 0164 0172 0180 0188 0133 0134 0141 01'42 0149 0150 0157 0158 0165 0166 0173.0174 0181 0182 0189 0190 0135 0143 0151 0159 0167 0175 0183 0191 0600 0610 0620 0630 0640 0650 0660 0670 0384 0392 0400 0408 0416 0424 0432 0440 0385 0393 0401 0409 0417 0425 0433 0441 0386 0394 0402 0410 0418 0426 0434 0442 0387 Q395 0403 0411 0419 0427 0435 0443 0388 0396 0404 0412 0420 0428 0436 0444 0389 0397 0405 0413 0421 0429 0437 0445 0390 0398 0406 0414 0422 0430 0438 0446 0391 0399 0407 0415 0423 0431 0439 0447 0300 0310 0320 0330 0340 0350 0360 0370 0192 0200 0208 0216 0224 0232 0240 0248 0193 0201 0209 0217 0225 0233 0241 0249 0194 0202 0210 0218 0226 0234 0242 0250 0195 0203 0211 0219 0227 0235 0243 0251 0196 0204 0212 0220 0228 0236 0244 0252 0197 0205 0213 0221 0229 0237 0245 0253 0199 0207 0215 0223 0231 0239 0247 0255 0700 0710 0720 0730 0740 0750 0760 0770 0448 0456 0464 0472 0480 0488 0496 0504 0449 0457 0465 0473 0481 0489 0497 0505 0450 0458 0466 0474 0482 0490 0498 0506 0451 0459 0467 0475 0483 0491 0499 0507 0452 0460 0468 0476 0484 0492 0500 0508 0453 046i 0469 0477 0485 0493 0501 0509 0454 0462 0470 0478 0486 0494 0502 0510 0455 0463 0471 0479 0487 0495 0503 0511 0198 0206 0214 0222 0230 0238 0246 0254 o (j) =i » r- () o ~ ""0 C --I m ;;;a ""0 :;:c o(j) :;:c » ~ ~ Z (j) 1000 0512 to to 1777 1023 (Octal) (Decimal) 0 1 2 3 4 5 6 7 1000 10lD 1020 1030 1040 1050 1060 1070 0512 0520 0528 0536 0544 0552 0560 0568 0513 0521 0529 0537 0545 0553 0561 0569 0514 0522 0530 0538 0546 0554 0562 0570 0515 0523 0531 0539 0547 0.555 0563 0571 0516 0524 0532 0540 0548 0556 0564 0572 0517 0525 0533 0541 0549 0557 0565 0573 0518 0526 0534 0542 0550 0558 0566 0574 0519 0527 0535 0543 0551 0559 0567 0575 1100 1110 1120 1130 1140 1150 1160 1170 0576 0584 0592 0600 0608 0616 0624 0632 0577 0585 0593 0601 0609 0617 0625 0633 0578 0586 0594 0602 0610 0618 0626 0634 0579 0587 0595 0603 0611 0619 0627 0635 0580 0588 0596 0604 0612 0620 0628 0636 0581 0589 0597 0605 0613 0621 0629 0637 0582 0590 0598 0606 0614 0622 0630 0638 0583 0591 0599 0607 0615 0623 0631 0639 1200 1210 1220 1230 1240 1250 1260 1270 0640 0648 0656 0664 0672 0680 0688 0696 0641 0649 0657 0665 0673 0681 0689 0697 0642 0650 0658 0666 0674 0682 0690 0698 0643 0651 0659 0667 0675 0683 0691 0699 0644 0652 0660 0668 0676 0684 0692 0700 0645 0653 0661 0669 0677 0685 0693 0701 0646 0654 0662 0670 0678 0686 0694 0702 1300 1310 1320 1330 1340 1350 1360 1370 0704 0712 0720 0728 0736 0744 0752 0760 0705 0713 0721 0729 0737 0745 0753 0761 0706 0714 0722 0730 0738 0746 0754 0762 0707 0715 0723 0731 0739 0747 0755 0763 0708 0716 0724 0732 0740 0748 0756 0764 0709 0717 0725 0733 0741 0749 0757 0765 0710 0718 0726 0734 0742 0750 0758 0766 3 4 5 6 7 0770 0778 0786 0794 0802 0810 081~ 0818 0825 0826 0771 0779 0787 0795 0803 0811 0819 0827 0772 0780 0788 0796 0804 0812 0820 0828 0773 0781 0789 0797 0805 0813 0821 0829 0774 0782 0790 07980806 0814 0822 0830 0775 0783 0791 0799 0807 0815 0823 0831 0832 0840 0848 0856 0864 0872 0880 0888 0833 0841 0849 0857 0865 0873 0881 0889 0834 0842 0850 0858 0866 0874 0882 0890 0835 0843 0851 0859 0867 0875 0883 0891 0836 0844 0852 0860 0868 0876 0884 0892 0837 0845 0853 0861 0869 0877 0885 0893 0838 0846 0854 0862 0870 0878 0886 0894 0839 0847 0855! 0863 0871 0879 0887 0895 1600 1610 1620 1630 1640 1650 1660 1670 0896 0904 0912 0920 0928 0936 0944 0952 0897 0905 0913 0921 0929 0937 0945 0953 0898 0906 0914 0922 0930 0938 0946 0954 0899 0907 0915 0923 0931 0939 0947 0955 0900 0908 0916 0924 0932 0940 0948 0956 0901 0909 0917 0925 0933 0941 0949 0957 0902 0910 0918 0926 0934 0942 0950 0958 0903 0911 0919 0927 0935 0943 0951 0959 1700 1710 1720 1730 1740 1750 1760 1770 0960 0968 0976 0984 0992 1000 1008 1016 0961 0969 0977 0985 0993 1001 1009 1017 0962 0970 0978 0986 0994 1002 1010 1018 0963 0971 0979 0987 0995 1003 1011 1019 0964 0972 0980 0988 0996 1004 1012 1020 0965 0973 0981 0989 0997 1005 1013 1021 0966 0974 0982 0990 0998 1006 1014 1022 0967 0975 0983 0991 0999 1007 1015 1023 0 1 1400 1410 1420 1430 1440 1450 1460 1470 0768 0776 0784 0792 0800 0808 0816 0824 0769 0777 0785 0793 0801 0809 1500 1510 1520 1530 1540 1550 1560 1570 0647 0655 0663 0671 0679 0687; 0695 0703 0711 0719 0727 0735 0743 0751 0759 0767 1 I 2 "o :;;0 (j) :;;0 » ~ ~ Z (j) » z t:J () o o z (j) N ~ ..0 TABLE 2000 11024 to 2777 (Octal) to 1535 (Decimal) Octal Decimal 10000 - 4096 20000 - 8192 30000 - 12288 40000 - 16384 50000 - 20480 60000 - 24576 70000 - 28672 1. OCTAL-DECIMAL INTEGER CONVERSION N (Continued) W o 0 1 2 3 4 5 6 7 2400 2410 2420 2430 2440 2450 2460 2470 1280 1288 1296 1304 1312 1320 1328 1336 1281 1289 1297 1305 1313 1321 1329 1337 1282 1290 1298 1306 1314 1322 1330 1338 1283 1291 1299 1307 1315 1323 1331 1339 1284 1292 1300 1308 1316 1324 1332 1340 1285 1293 1301 1309 1317 1325 1333 1341 1286 1294 1302 1310 1318 1326 1334 1342 1287 1295 13D3 1311 1319 1327 1335 1343 1095 1103 1111 1119 1127 1135 1143 1151 2500 2510 2520 2530 2540 2550 2560 2570 1344 1352 1360 1368 1376 1384 1392 1400 1345 1353 1361 1369 1377 1385 1393 1401 1346 1354 1362 1370 1378 1386 1394 1402 1347 1355 1363 1371 1379 1387 1395 1403 1348 1356 1364 1372 1380 1388 1396 1404 1349 1357 1365 1373 1381 1389 1397 1405 1350 1358 1366 1374 1382 1390 1398 1406 1351 1359 1367 1375 1383 139i 1399 1407 1158 1166 1174 1182 1190 1198 1206 1214 1159 1167' l175 1183 1191 1199 1207 1215 2600 2610 2620 2630 2640 2650 2660 2670 1408 1409 1416 1417 1424 1425 1432 1433 1440 1441 1448-1449 1456 1457 1464 1465 1410 1418 1426 1434 1442 1450 1458 1466 1411 1419 14-27 1435 1443 1451 1459 1467 1412 1420 1428 1436 1444 1452 1460 1468 1413 1421 1429 1437 1445 1453 1461 1469 1414 1422 1430 1438 1446 1454 1462 1470 1415 14231 1431 1439 1447 14551 1463 1471! 1222 1230 1238 1246 12541 1262 1270 1278 1223 1231 1239 1247 1255 1263 1271 1279 2700 2710 2720 2730 2740 2750 2760 2770 1472 1473 1474 1~5 1476 1477 1478· 0 1 2 3 4 5 6 7 2000 2010 2020 2030 2040 2050 2060 2070 1024 1032 1040 1048 1056 1064 1072 1080 1025 1033 1041 1049 1057 1065 1073 1081 1026 1034 1042 1050 1058 1066 1074 1082 1027 1035 1043 1051 1059 1067 1075 1083 1028 1036 1044 1052 1060 1068 1076 1084 1029 1037 1045 1053 1061 1069 1077 1085 1030 1038 1046 1054 1062 1070 1078 1086 1031 1039 1047 1055 1063 1071 1079 1087 2100 2110 2120 2130 2140 2150 2160 2170 1088 1096 1104 l112 1120 1128 1136 1144 1089 1097 1105 1113 1121 1129 1137 1145 1090 1098 1106 1114 1122 1130 1138 1146 1091 1099 1107 1115 1123 1131 1139 1147 1092 l100 1108 1116 1124 1132 1140 1148 1093 1101 1109 1117 1125 1133 1141 1149 1094 1102 1110 1118 1126 1134 1142 1150 2200 2210 2220 2230 2240 2250 2260 2270 1152 1160 l168 l176 1184 1192 1200 1208 1153 1161 l169 l177 1185 1193 1201 1209 1154 1162 1170 l178 1186 1194 1202 1210 1155 1163 1171 1179 1187 1195 1203 1211 1156 1164 l172 1180 1188 1196 1204 1212 1157 1165 1173 1181 1189 1197 1205 1213 2300 2310 2320 2330 2340 2350 2360 2370 1216 1224 1232 1240 1248 1256 1264 1272 1217 1225 1233 1241 1249 1257 1265 1273 1218 1226 1234 1242 1250 1258 1266 1274 1219 1227 1235 1243 1251 1259 1267 1275 1220 1228 1236 1244 1252 1260 1268 1276 1221 1229 1237 1245 1253 1261 1269 1277 1480 1488 1496 1504 1512 1520 1528 1~81 1489 1497 1505 1513 1521 1529 1482 1483 1490-1491 1498 1499 1506 1507 1514 1515 1522 1523 1530 1531 1484 1492 1500 1508 1516 1524 1532 1485 1493 1501 1509 1517 1525 1533 1486 1494 1502 1510 1518 1526 1534 ! o (j) =i > .() o ~ ""C C -f m ;;0 ""C 1 147~ 1487 14951 1503' 1511 1519 1527 1535 ;;0 o (j) ;;0 » ~ ~ Z (j) 3000 to 3777 (Octal) 11536 to 2047 (Decimal) 3 4 5 6 7 1793 1794 1795 1801 1802 1803 1~09 1810 1811 1817 1818 1819 "1825 1826 1827 1833 1834 1835 1841 1842 1843 1849 1850 1851 1796 1804 1812 1820 1828 1836 1844 1852 1797 1805 1813 1821 1829 1837 1845 1853 1798 1806 1814 1822 183.0 1838 1846 1854 1799 1807 1815 1823 1831 1839 1847 1855 1856 1864 1872 1880 1888 1896 1904 1912 1857 1865 1873 1881 1889 1897 1905 1913 1858 1866 1874 1882 1890 1898 1906 1914 1859 1867 1875 1883 1891 1899 1907 1915 1860 1868 1876 1884 1892 1900 1908 1916 1861 1869 1877 1885 1893 19.01 1909 1917 1862 1870 1878 1886 1894 1902 1910 1918 1863 1871 1879 1887 1895 1903 1911 1919 192.0 1928 1936 1944 1952 1960 1968 1976 1921 1929 1937 1945 1953 1961 1969 1977 1922 1930 1938 1946 1954 1962 197.0 1978 1923 1931 1939 1947 1955 1963 1971 1979 1924 1932 1940 1948 1956 1964 1972 1980 1925 1933 1941 1949 1957 1965 1973 1981 1~26 1727 3600 361.0 3620 3630 364.0 3650 3660 3670 1934 1942 195.0 1958 1966 1974 1982 1927 1935 1943 1951 1959 1967 1975 1983, 1735 1743 1751 1759 1767 1775 1783 1791 3700 3710 3720 3730 3740 3750 3760 377.0 1984 1992 2000 2.008 2.016 2024 2032 2.040 1985 1993 2001 2009 2017 2025 2.033 2041 1986 1994 2002 201.0 2018 2026 2034 2042 1987 1988 1995 1996 2003 2004 2011 2012 2019 2020 20272.028 2035 2036 2.043 2.044 1989 1997 2005 2013 2021 2029 2037 2-045 199.0 1998 2006 2014 2022 2030 2.038 2.046 19911 1999 2007 20151 2623 2031 2.039 20471 .0 0 1 2 3 4 5 6 7 3000 3010 3020 303.0 3040 3050 3060 3070 1536 1544 1552 1560 1568 1576 1584 1592 1537 1545 1553 1561 1569 1577 1585 1593 1538 1546 1554 1562 1570 1578 1586 1594 1539 1547 1555 1563 1571 1579 1587 1595 1540 1548 1556 1564 1572 1580 1588 1596 1541 1549 1557 1565 1573 1581 1589 1597 1542 1550 1558 1566 1574 1582 1590 1598 1543 1551 1559 1567 1575 1583 1591 1599 3400 3410 3420 3430 3440 3450 3460 3470 1792 18.00 1808 1816 1824 1832 184.0 1848 3100 3110 3120 3130 3140 3150 3160 3170 1600 1608 1616 1624 1632 1640 1648 1656 1601 1609 1617 1625 1633 1641 1649 1657 1602 1610 1618 1626 1634 1642 1650 1658 1603 1611 1619 1627 1635 1643 1651 1659 1604 1612 1620 1628" 1636 1644 1652 1660 1605 1613 1621 1629 1637 1645 1653 1661 1606" 1614 1622 1630 1638 1646 1654 1662 1607 1615 16213 1631 1639 1647 1655 1663 3500 3510 3520 3530 3540 3550 3560 3570 3200 3210 3220 3230 3240 3250 3260 3270 1664 1672 1680 1688 1696 1704 1712 1720 1665 1673 1681 1689 1697 1705 1713 1721 1666 1674 1682 1690 1698 1706 1714 1722 1667" 1675 1683 1691 1699 1707 1715 1723 1668 1676 1684 1692 1700 1708 1716 1724 1669 1677 1685 1693 1701 1709 l717 1725 1670 1678 1686 1694 1702 1710 1718 1726 1671 1679 1687 1695 1703 1711 3300 3310 3320 3330 334.0 335.0 3360 337.0 1728 1736 1744 1752 1760 1768 1776 1784 1729 1730 1731 1737 1738 1739 174~ 1746 1747 1753 1754 1755 1761 1762 1763 1769 1770 1771 1777 1778 1779 1785 1786 1787 1732 1740 1748 1756 1764 1772 178.0 1788 1733 1741 1749 1757 1765 1773 1781 1789 1734 1742 1750 1758 1766 1774 1782 179.0 1~19 1 2 -c ;:c o(j) ;:c » ~ ~ Z (j) » z o () oo Z (j) to.) w TABLE 1. OCTAL-DECIMAL INTEGER CONVERSION N (Continued) W N 4000 to I 2048 to 4777 2559 (Octo I) (Decimal) Octal Decimal 10000 - 4096 20000 - 8192 30000 - 12288 40000 - 16384 50000 - 20480 60000 - 24576 70000 - 28672 0 1 2 3 4 5 6 7 4400 4410 4420 4430 4440 4450 4460 4470 2304 2312 2320 2328 2336 2344 2352 2360 2305 2313 2321 2329 2337 2345 2353 2361 2306 2314 2322 2330 2338 2346 2354 2362 2307 2315 2323 2331 2339 2347 2355 2363 2308 2316 2324 2332 2340 2348 2356 2364 2309 2317 2325 2333 2341 2349 2357 2365 2310 2318 2326 2334 2342 2350 2358 2366 2311 2319 2327 23351 2343 2351 2359 2367 2119 2127 2135 2143 2151 2159 2167 2175 4500 4510 4520 4530 4540 4550 4560 4570 2368 2376 2384 2392 2400 2408 2416 2424 2369 2377 2385 2393 2401 2409 2417 2425 2370 2378 2386 2394 2402 2410 2418 2426 2371 2379 2387 2395 2403 2411 2419 2427 2372 2380 2388 2396 2404 2412 2420 2428 2373 2381 2389 2397 2405 2413 2421 2429 2374 2382 2390 2398 2406 2414 2422 2430 2375 2383 2391 2399 2407 2415 2423 2431 2182 2190 2198 2206 2214 2222 2230 2238 2183 2191 2199 2207 2215 2223 2231 2239 4600 4610 4620 4630 4640 4650 4660 4670 2432 2440 2448 2456 2464 2472 2480 2488 2433 2441 2449 2457 2465 2473 2481 2489 2434 2442 2450 2458 2466 2474 2482 2490 2435 2443 2451 2459 2467 2475 2483 2491 2436 2444 2452 2460 2468 2476 2184 2492 2437 2445 2453 2461 2469 2477 2485 2493 2438 2446 2454 2462 2470 2478 2486 2494 2439 2447 2455 2463 2471 2479 2487 2495 2246 2254 2262 2270 2278 2286 2294 2302 ·2247 2255 2263 2271 2279 2287 2295 2303 4700 4710 4720 4730 4740 4750 4760 4770 2496 2504 2512 2520 2528 2536 2544 2552 2497 2505 2513 2521 2529 2537 2545 2li53 2498 2506 2514 2522 2530 2538 2546 2554 2499 2507 2515 2523 2531 2539 2547 2555 2500 2508 2516 2524 2532 2540 2548 2556 2501 2509 2517 2525 2533 2541 2549 2557 2502 2510 2518 2526 2534 2542 2550 2558 2503 2511 2519 2527 2535 2543 2551 2559 0 1 2 3 4 5 6 7 4000 4010 4020 4030 4040 4050 4060 4070 2048 2056 2064 2072 2080 2088 2096 2104 2049 2057 2065 2073 2081 2089 2097 2105 2050 2058 2066 2074 2082 2090 2098 2106 2051 2059 2067 2075 2083 2091 2099 2107 2052 2060 2068 2076 2084 2092 2100 2108 2053 2061 2069 2077 2085 2093 2101 2109 2054 2062 2070 2078 2086 209( 2102 2110 2055 2063 2071 2079 2087 2095 2103 2111 4100 4110 4120 4130 4140 4150 4160 4170 2112 2120 2128 .2136 2144 2152 2160 2168 2113 2121 2129 2137 2145 2153 2161 2169 2114 2122 2130 2138 2146 2154 2162 2170 2115 2123 2131 2139 2147 2155 2163 2171 2116 2124 2132 2140 2148 2156 2164 2172 2117 2125 2133 2141 2149 2157 2165 2173 2118 2126 2134 2142 2150 2158 2166 2174 4200 4210 4220 4230 4240 4250 4260 4270 2176 2184 2192 2200 2208 2216 2224 2232 2177 2185 2193 2201 2209 2217 2225 2233 2178 2186 2194 2202 2210 2218 2226 2234 2179 2187 2195 2203 2211 2219 2227 2235 2180 2188 2196 2204 2212 2220 2228 2236 2181 2189 2197 2205 2213 2221 2229 2237 4300 4310 4320 4330 4340 4350 4360 4370 2240 2248 2256 2264 2272 2280 2288 2296 2241 2249 2257 2265 2273 2281 2289 2297 2242 2250 2258 2266 2274 2282 2290 2298 2243 2251 2259 2267 2275 2283 2291 2299 2244 2252 2260 2268 2276 2284 2292 2300 2245 2253 2261 2269 2277 2285 2293 2301 c (i) =i » r () o ~ ""'C C -I m ;::0 ""'C ;::0 o(j) ;::0 > ~ ~ Z (j) 0 5000 to 5777 2560 to 3071 (Octal) (Decimal) 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 5000 5010 5020 5030 5040 5050 5060 5070 2560 2568 2576 2584 2592 2600 2608 2616 2561 2569 2577 2585 2593 2601 2609 2617 2562 2570 2578 2586 2594 2602 2610 2618 2563 2571 2579 2587 2595 2603 2611 2619 2564 2572 2580 2588 2596 2604 2612 2620 2565 2573 2581 2589 2597 2605 2613 2621 2566 2567 2574 2575 ~582 2583 2590 2591 2598 2599 2606 2607 2614 2615 2622 2623 5400 5410 5420 5430 5440 5450 5460 5470 2816 2824 2832 2840 2848 2856 2864 2872 2817 2825 2833 2841 2849 2857 2865 2873 2818 2826 2834 2842 2850 2858 2866 2874 2819 2827 2835 2843 2851 2859 2867 2875 2820 2828 2836 2844 2852 2860 2868 2876 2821 2829 2837 2845 2853 2861 2869 2877 2822 2830 2838 2846 2854 2862 2870 2878 2823 2831 2839 2847 2855 2863 2871 2879 5100 5110 5120 5130 5140 5150 5160 5170 2624 2632 2640 2648 2656 2664 2672 2680 2625 2633 2641 2649 2657 2665 2673 2681 2626 2634 2642 2650 2658 2666 2674 2682 2627 2635 2643 2651 2659 2667 2675 2683 2628 2636 2644 2652 2660 2668 2676 2684 2629 2637 2645 2653 2661 2669 2677 2685 2630 2638 2646 2654 2662 2670 2678 2686 2631 2639 2647 2655 2663 2671 2679 2687 5500 5510 5520 5530 5540 5550 5560 5570 2880 2888 2896 2904 2912 2920 2928 2936 2881 2889 2897 2905 2913 2921 2929 2937 2882 2890 2898 2906 2914 2922 2930 2938 2883 2891 2899 2907 2915 2923 2931 2939 2884 2892 2900 2908 2916 2924 2932 2940 2885 2893 2901 2909 2917 2925 2933 2941 2886 2894 2902 2910 2918 2926 2934 2942 2887 2895 2903 2911 2919 2927 2935 2943 5200 5210 5220 5230 5240 5250 5260 5270 2688 2696 2704 2712 2720 2728 2736 2744 2689 2697 2705 2713 2721 2729 2737 2745 2690 2698 2706 2714 2722 2730 2738 2746 2691 2699 2707 2715 2723 2731 2739 2747 2692 2700 2708 2716 2724 2732 2740 2748 2693 2701 2709 2717 2725 2733 2741 2749 2694 2702 2710 2718 2726 2734 2742 2750 2695 2703 2711 2719 2727 2735 2743 2751 5600 5610 5620 5630 5640 5650 5660 5670 2944 2952 2960 2968 2976 2984 2992 3000 2945 2953 2961 2969 2977 2985 2993 3001 2946 2954 2962 2970 2978 2986 2994 3002 2947 2955 2963 2971 2979 2987 2995 3003 2948 2956 2964 2972 2980 2988 2996 3004 2949 2957 2965 2973 2981 2989 2997 3005 2950 2958 2966 2974 2982 2990 2998 3006 2951 2959 2967 2975 2983 2991 2999 3007 5300 5310 5320 5330 5340 5350 5360 5370 2752 2760 2768 2776 2784 2792 2800 2808 2753 2761 2769 2777 2785 2793 2801 2809 2754 2762 2770 2778 2786 2794 2802 2810 2755 2763 2771 2779 2787 2795 2803 2811 2756 2764 2772 2780 2788 2796 2804 2812 2757 2765 2773 2781 2789 2797 2805 2813 2758 2766 2774 2782 2790 2798 2806 2814 2759 2767 2775 2783, 2791 2799 2807 2815 5700 5710 5720 5730 5740 5750 5760 5770 3008 3016 3024 3032 3040 3048 3056 3064 3009 3017 3025 3033 3041 3049 3057 3065 3010 3018 3026 3034 3042 '3050 3058 3066 3011 3019 3027 3035 3043 3051 3059 3067 3012 3020 3028 3036 3044 3052 3060 3068 3013 3021 3029 3037 3045 3053 3061 3069 3014 3022 3030 3038 3046 3054 3062 3070 3015 3023 3031 3039 3047 3055 3063 3071 ""tJ :;;0 o(j) :;;0 » ~ ~ Z (j) » z c () o 2 z (j) N W w TABLE 6000 10 I 3072 10 6777 3583 (Oclol) (Decimol) Octal Decimal 10000· 4096 20000· 8192 30000· 12288 40000 • 16384 50000 • 20480 60000·24576 70000·28672 1. OCTAL-DECIMAL INTEGER CONVERSION 0 W ..r. 4 5 6 7 3331 3339 3347 3355 3363 3371 3379 3387 3332 3340 3348 3356 3364 3372 3380 3388 3333 3341 3349 3357 3365 3373 3381 3389 3334 3342 3350 3358 3366 3374 3382 3390 3335 3343 3351 3359 3367 3375 3383 3391 3394 3402 3410 3418 3426 3434 3442 3450 3395 3403 3411 3419 3427 3435 3443 3451 3396 3404 3412 3420 3428 3436 3444 3452 3397 3405 3413 3421 3429 3437 3445 3453 3398 3406 3414 3422 3430 3438 3446 3454 3399 3407 3415 3423 3431 3439 3447 3455 3457 3465 3473 3481 3489 3497 3505 3513 3458 3466 3474 3482 3490 3498 3506 3514 3459 3467 3475 3483 3491 3499 3507 3515 3460 3468 3476 3484 3492 3500 3508 3516 3461 3469 3477 3485 3493 3501 3509 3517 3462 3470 3478 3486 3494 3502 3510 3518 3463 3471 3479 3487 3495 3503 3511 3519 3521 3529 3537 3545 3553 3561 3569 3577 3522 3530 3538 3546 3554 3562 3570 3578 3523 3531 3539 3547 3555 3563 3571 3579 3524 3532 3540 3548 3556 3564 3572 3580 3525 3533 3541 3549 3557 3565 3573 3581 3526 3534 3542 3550 3558 3566 3574 3582 3527 3535 3543 3551 3559 3567 3575 3583 1 2 0 1 2 3 '4 5 6 7 6000 6010 .6020 6030 6040 6050 6060 6070 3072 3080 3088 3096 3104 3112 3120 3128 3073 3081 3089 3097 3105 3113 3121 3129 3074 3082 3090 3098 3106 3114 3122 3130 3075 3083 3091 3099 3107 3115 3123 3131 3076 3084 3092 3foo 3108 3116 3124 3132 3077 3085 3093 3101 3109 3117 3125 3133 3078 3086 3094 3102· 3110 3118 3126 3134 3079 3087 3095 3103 3111 3119 3127 3135 6400 6410 6420 6430 6440 6450 6460 6470 3328 3336 3344 3352 3360. 3368 3376 3384 3329 3337 3345 3353 3361 3369 3377 3385 3330 3338 3346 3354 3362 3370 3378 3386 6100 6110 6120 6130 6140 6150 6160 6170 3136 3144 3152 3160 3168 3176 3184 3192 3137 3145 3153 3161 3169 3177 3185 3193 3138 3146 3154 3162 3170 3178 3186 3194 3139 3147 3155 3163 3171 3179 3187 3195 3140 3148 3156 3164 3172 3180 3188 3196 3141 3149 3157 3165 3173 3181 3189 3197 3142 3150 3158 3166 3174 3182 3190 3198 3143 3151 3159 3167 3175 3183 3191 3199 6500 6510 6520 6530 6540 6550 6560 6570 3392 3400 3408 3416 3424 3432 3440 3448 3393 3401 3409 3417 3425 3433 3441 3449 62QO 6210 6220 6230 6240 6250 6260 6270 3200 3208 3216 3224 3232 3240 3248 3256 3201 3209 3217 3225 3233 3241 3249 3257 3202 3210 3218 3226 3234 3242 3250 3258 3203 3211 3219 3227 3235 3243 3251 3259 3204 3212 3220 3228 3236 3244 3252 3260 3205 3213 3221 3229 3237 3245 3253 3261 3206 3214 3222 3230 3238 3246 3254 3262 3207 3215 3223 3231 3247 3255 3263 6600 6610 6620 6630 6640 6650 6660 6670 3456 3464 3472 3480 3488 3496 3504 3512 6300 6310 6320 6330 6340 6350 6360 6370 3264 3272 3280 3288 3296 3304 3265 3273 3281 3289 3297 3305 ~312 3313 3320 3321 3266 3274 3282 3290 3298 3306 3314 3322 3267 3275 3283 3291 3299 3307 3315 3323 3268 3276 3284 3292 3300 3308 3316 3324 3269·3270 3277 3278 3285 3286 3293 3294 3301 3302 3309 3310 3317 3318 3325 3326 3271 3279 3287 3295 3303 3311 3319 3327 6700 6710 6720 6730 6740 6750 6760 6770 3520 3528 3536 3544 3552 3560 3568 3576 ~239 N (Continued) 3 o (j) =t > I () o ~ "C --f m :;:0 "o (j) » ;::c :;:0 ~ ~ Z (j) 7000 3584 to to 7777 4095 (Octol) (Decimol) 0 1 2 3 4 5 6 7 7400 7410 7420 7430 7440 7450 . 7460 7470 3840 3848 3856 3864 3872 3880 3888 3896 3841 3849 3857 3865 °3873 3881 3889 3897 3842 3850 3858 3866 3874 3882 3890 3898 3843 3851 3859 3867 3875 3883 3891 3899 3844 3852 3860 3868 3876 3884 3892 3900 3845 3853 3861 3869 3877 3885 3893 3901 3846 3854 3862 3870 3878 3886 3894 3902 3847 3855 3863 3871 3879 3887 3895 3903 3655 3663 3671 3679 3687 3695 3703 3711 7500 7510 7520 7530 7540 7550 7560 7570 3904 3912 3920 3928 3936 3944 3952 3960 3905 3913 3921 3929 3937 3945 3953 3961 3906 3914 3922 3930 3938 3946 3954 3962 3907 3915 3923 3931 3939 3947 3955 3963 3908 3916 3924 3932 3940 3948 3956 3964 3909 3917 3925 3933 3941 3949 3957 3965 3910 3918 3926 3934 3942 3950 3958 3966 3911 3919 3927 3935 3943 3951 3959 3967 3718 3726 3734 3742 3750 3758 3766 3774 3719 3727 3735 3743 3751 3759 3767 3775 7600 7610 7620 7630 7640 7650 7660 7670 3968 3976 3984 3992 4000 4008 4016 4024 3969 3977 3985 3993 4001 4009 4017 4025 3970 3978 3986 3994 4002 4010 4018 4026 3971 3979 3987 3995 4003 4011 4019 4027 3972 3980 3988 3996 4004 4012 4020 4028 3973 3g8r 3989 3997 4005 4013 4021 4029 3974 3982 3990 3998 4006 4014 4022 4030 3975 3983 3991 3999 4007 4015 4023 4031 3782 3790 3798 3806 3814 3822 3830 3838 3783 3791 3799 3807 3815 3823 3831 3839 7700 7710 7720 7730 7740 7750 7760 7770 4032 4040 4048 4056 4064 4072 4080 4088 4033 4041 4049 4057 4065 4073 4081 4089 4034 4042 4050 4058 4066 4074 4082 4090 4035 4043 4051 4059 4067 4075 4083 4091 4036 4044 4052 4060 4068 4076 4084 4092 4037 4045 4053 4061 4069 4077 4085 4093 4038 4046 4054 4062 4070 4078 4086 4094 4039 4047 4055 4063 4071 4079 4087 4095 0 1 2 3 4 5 6 7 7000 7010 7020 7030 7040 7050 7060 7070 3584 3592 3600 3608 3616 3624 3632 3640 3585 3593 3601 3609 3617 3625 3633 3641 3586 3594 3602 3610 3618 3626 3634 3642 3587 3595 3603 3611 3619 3627 3635 3643 3588 3596 3604 3612 3620 3628 3636 3644 3589 3597 3605 3613 3621 3629 3637 3645 3590 3598 3606 3614 3622 3630 3638 3646 3591 3599 3607 3615 3623 3631 3639 3647 7100 7110 7120 7130 7140 7150 7160 7170 36483649 3656 3657 3664 3665 3672 3673 3680 3681 3688 3689 3696 ~697 3704 3705 3650 3658 3666 3674 3682 3690 3698 3706 3651 3659 3667 3675 3683 3691 3699 3707 3652 3660 3668 3676 3684 3692 3700 3708 3653 3661 3669 3677 3685 3693 3701 3709 3654 3662 3670 3678 3686 3694 3702 3710 7200 7210 7220 7230 7240 7250 7260 7270 3712 3720 3728 3736 3744 3752 3760 3768 3713 3721 3729 3737 3745 3753 3761 3769 3714 3722 3730 3738 3746 3754 3762 3770 3715 3723 3731 3739 3747 3755 3763 3771 3716 3717 3724 3725 3732 3733 3740 3741 °3748 3749 3756 3757 31643765 3772 3773 7300 7310 7320 7330 7340 7350 7360 7370 3776 3784 3792 3800 3808 3816 3824 3832 3777 3785 3793 3801 3809 3817 3825 3833 3778 3786 3794 3802 3810 3818 3826 3834 3779 3787 3795 3803 3811 3819 3827 3835 3780 3788 3796 3804 3812 3820 3828 3836 3781 3789 3797 3805 3813 3821 3829 3837 ---- ." ;:;0 o(j) ;:;0 » ~ ~ Z (j) » z o () oo Z (j) ~ en w N TABLE 2. OCTAL DEC. OCTAL .000 .001 .002 .003 .004 .005 .006 .007 .010 .011 .012 .013 .014 .015 .016 .017 .020 .021 .022 .023 .024 .025 .026 .027 .030 .031 .032 .033 .034 .035 .036 .000000 .001953 .003906 .005859 .007812 .009765 .011718 .013671 .015625 .017578 .019531 .021484 .023437 .025390 .027343 .029296 .031250 .033203 .035156 .037109 .039062 .041015 .042968 .044921 .046875 .048828 .050781 .052734 .054687 .056640 .058593 .100 .101 .102 .103 .104 .105 .106 .107 .110 .111 .112 .113 .114 .115 .116 .117 .120 .121 .122 .123 .124 .125 .126 .127 .130 .131 .132 .133 '.134 .135 .136 ) W OCTAL-DECIMAL FRACTION CONVERSION DEC. OCTAL .125000 .126953 .128906 .130859 .132812 .134765 .136718 .138671 .140625 .142578 .144531 .146484 .148437 .150390 .152343 .154296 .156250 .158203 .160156 .162109 .164062 .166015 .167968 .169921 .171875 .173828 .175781 .177734 .179687 .181640 .183593 .200 .201 .202 .203 .204 .205 .206 .207 .210 .211 ~ 212 .213 ' .214 .215 .216 .217 .220 .221 .222 .223 .224 .225 .226 .227 .230 .231 .232 .233 .234 .235 DEC. ~ OCTAL DEC. I ~236 .250000 .251953 .253906 .255859 .257812 .259765 .261718 .263671 .265625 .267578 .269531 .271484 .273437 .275390 .277343 .279296 .281250 .283203 .285156 .287109 .289062 .291015 .292968 .294921 .296875 .298828 .300781 .302734 .304687 .306640 .308593 .300 .301 .302 .303 .304 .305 .306, .307 .310 .311 .312 .313 .314 .315 .316 .317 .320 .321 .322 .323 .324 .325 .326 .327 .330 .331 .332 .333 .334' .335 .336 .375000 .376953 .378906 .380859 .382812 .384765 .386718 .388671 .390625 .392578 .394531 .396484 .398437 .400390 .402343 .404296 .406250 .408203 .410156 .412109 .414062 .416015 .417968 .419921 .421875 .423828 .425781 .427734 .429687 .431640 ..!433593 o (j) =i » .-() o s= "'tJ C -I I m :;:0 "'tJ :;:0 I o(j) ::::c » I I ~ ~ Z (j) I .037 .040 .041 .042 .043 .044 .045 .046 .047 .050 .051 .052 .053 .054 .055 .056 .057 .060 .061 .062 .063 .064 .065 .066 .067 .070 .071 .072 .073 .074 .075 .076 .077 .060546 .062500 .064453 .066406 .068359 .070312 .072265 .074218 .076171 .078125 .080078 .082031 .083984 .085937 .087890 .089843 .091796 .093750 .0.95703 .097656 .099609 .101562 .103515 .105468 .107421 .109375 .111328 .113281 .115234 .117187 .119140 .121093 .123046 .137 .140 .141 .142 .143 .144 .145 .146 .147 .150 .151 .152 .153 .154 .155 .156 .157, .160 .161 .162 .163 .164 .165 .166 .167 .170 .171 .172 .173 .174 .175 .176 .177 .185546 .187500 .189453 .191406 .193359 .195312 .197265 .199218 .201171 .203125 .205078 .207031 .208984 .210937 .212890 .214843 .216796 .218750 .220703 .222656 .224609 .226562 .228515 .230468 .232421 .234375 .236328 .238281 .240234 .242187 :244140 .246093 .248046 ~237 .240 .241 .242 .243 .244 .245 .246 .247 .250 .251 .252 .253 .254 .255 .256 .257 .260 .261 .262 .263 .264 .265 .266 .267 .270 .271 .272 .273 .274 .275 .276 .277 .310546 .312500 .314453 .316406 .318359 .320312 .322265 .32421"8 .326171 .328125 .330078 .332031 .333984 .335937 .337890 .339843 .341796 .343750 .345703 .347656 .349609 .351562 .353515 .355468 .357421 .359375 .361328 .363281 .365234 .367187 .369140 .371093 .373046 .337 .340 .341 .342 .343 .344 .345 .346 .347 .350 .351 .352 .353 .354 .355 .356 .357 .360 .361 .362 .363 .364 .365 .366 .367 .370 .371 .372 .373 .314 .375 .376 .377 .435546 .437500 .439453 .441406 .443359 .445312 .447265 .449218 .451171 .453125 .455078 .457031 .458984 .460937 .462890 .464843 .466796 .468750 .470703 .472656 .474609 .476562 .478515 .480468 .482421 .484375 .486328 .488281 .490234 .492187 .494140 .496093 .498046 ." ;;0 o(j) :;;c » ~ ~ Z (j) » z o () o 2 z (j) N --------- W ~ t-.) TABLE 2.' OCTAL-DECIMAL FRACTION CONVERSION w (Continued) co OCTAL DEC, OCTAL DEC. OCTAL DEC. OCTAL DEC, ,000000 .000001 .000002 .000003 ,000004 .000005 .000006 ,000007 .000010 .000011 .000012 ,000013 .000014 .000015 ,000016 ,000017 ,000020 .000021 .000022 ,000023 .000024 ,000025 ,000026 .000027 .000030 .000031 .000032 .000033 .000034 .000035 .000036 .000000 .000003 .000007 .000011 .000015 ,000019 ,000022 ,000026 .000030 .000034 ,000038 ,000041 .000045 .000049 ,000053 .000057 .000061 ,000064 .000068 ,000072 .000076 .000080 ,000083 .000087 .000091 .000095 .000099 .000102 .000106 .000110 .000114 ,000100 .000101 ,000102 ,000103 .000104 .000105 ,000106 .000107 ,000110 .000111 .000112 ,000113 ,000114 ,000115 .000116 .000117 ,000120 .000121 ,000122 .000123 .000124 .000125 .000126 .000127 ,000130 .000131 .000132 .000133 .000134 .000135 .000244 ,000247 ,000251 .000255 .000259 .000263 ,000267 ,000270 .000274 .000278 .000282 .000286 .000289 .000293 .000297 ,000301 .000305 ,000308 ,000312 .000316 .000320 .000324 .000328 .000331 .000335 .000339 .000343 .000347 .000350 .000354 .000358 ,000200 ,000201 ,000202 .000203 ,000204 .000205 .000206 .000207 .000210 .000211 .000212 .000213 .000214 ,000215 ,000216 ,000217 ,000220 ,000221 ,000222 .000223 ,000224 .000225 .000226 .000227 ,000230 ,000231 .000232 .000233 ,000234 .000235 .000488 .000492 ,000495 .000499 .000503 ,000507 .000511 .000514 .000518 .000522 .000526 .000530 .000534 .000537 .000541 .000545 .000549 ,000553 .000556 .000560 .000564 .000568 .000572 .000576 .000579 .000583 .000587 .000591 .000595 .000598 .000602 .000300 ,000301 .000302 .000303 ,000304 .000305 .000306 .000307 .000310 .000311 .000312 .000313 .000314 .000315 .000316 .000317 .000320 .000321 ,000322 ,000323 .000324 ,000325 .000326 .000327 .000330 .000331 .000332 .000333 .000334 .000335 .000336 .000732 ,000736 ,000740 ,000743 .000747 .000751 .000755 .000759 ,000762 .000766 .000770 .000774 .000778 .000782 .000785 .000789 .000793 .000797 ,000801 .000805 .000808 .000812 .000816 .000820 ,000823 .000827 .000831 .000835 .000839 .000843 .000846 ~000136 ~_000236 o (fi =i » r- I () o 3:'.': ." C m -I :::0 ." :::0 o(j) :::0 » 3:'.': 3:'.': z (j) .000037 .000040 .000041 .000042 .000043 .000044 .000045 .000046 ,000047 ,000050 ,000051 ,000052 .000053 ,000054 ,000055 .000056 .000057 .000060 .000061 .000062 .000063 .000064 .000065 .000066 .000067 .000070 .000071 .000072 .000073 .000074 .000075 .000076 .000077 ·.oooluf ~·000137 .000122 .000125 .000129 .000133 .000137 .000141 .000144 .000148 .000152 ,000156 ,000160 .000164 .000167 ,000171 .000175 .000179 .000183 .000186 .000190 .000194 .000198 .000202 .000205 .000209 .000213 .000217 .000221 .000225 .000228 .000232 .000236 .000240 .000140 .000141 .000142 .000143 .000144 .000145 .000146 .000147 .000150 .000151 ,000152 ,000153 .000154 .000155 .000156 .000157 .000160 .000161 .000162 .000163 .000164 .000165 .000166 .000167 .000170 .000171 .000172 .000173 .000174 .000175 .000176 ,000177 .000362 .000366 .000370 .000373 .000377 .000381 .000385 ,000389 .000392 .000396 .000400 .000404 ,000408 .000411 .000415 .000419 .000423 .000427 .000431 .000434 .000438 .000442 .000446 .000450 .000453 .000457 .000461 .000465 .000469 .000473 .000476 .000480 ,000484 .0002:37" .000240 .000241 .000242 .000243 .000244 .000245 ,000246 .. 000247 ,000250 .000251 .000252 .000253 .000254 .000255 .000256 .000257 .000260 .000261 .000262 .000263 .000264 .000265 .000266 .000267 .000270 .• 000271 .000272 .000273 .000274 .000275 .000276 .000277 .000606 .000610 .000614 .000617 .000621 .000625 .000629 :000633 .000637 .000640 .000644 ,000648 .000652 .000656 .000659 .000663 .000667 .000671 .000675 .000679 .000682 .000686 .000690 .000694 .000698 .000701 .000705 .000709 .000713 .000717 .000720 .000724 ,000728 .000337 .000340 .000341 .000342 .000343 .000344 .000345 .000346 .000347 .000350 .000351 .000352 .000353 .000354 .000355 .000356 .000357 .000360 .000361 .000362 .000363 .000364 .000365 .000366 .000367 .000370 .000371 .000372 .000373 .000374 .000375 .000376 ,000377 .000850 .000854 .000858 .000862 .000865 .000869 ,000873 ,000877 ,000881 ,000885 ,000888 ,000892 ,000896 ,000900 .000904 .000907 .000911 .000915 .000919 .000923 .000926 .000930 .000934 .000938 .000942 .000946 .000949 .000953 .000957 .000961 .000965 .000968 .000972 "'0 ;:;0 o(j) ;:;0 » ~ ~ Z (j) » z o () oo z (j) N W -0 N TABLE 2. OCTAL-DECIMAL FRACTION CONVERSION ~ (Continued) o OCTAL DEC. OCTAL DEC. OCTAL DEC. OCTAL DEC. .000400 .000401 ,000402 .000403 ,000404 .000405 ,000406 ,000407 .000410 .000411 ,000412 ,000413 ,000414 .000415 .000416 ,000417 ,000420 .000421 ,000422 .OQ0976 .000980 ,000984 ,000988 ,000991 ,000995 ,000999 ,001003 ,001007 ,001010 ,001014 ,001018 ,001022 ,001026 ,001029 .001033 ,001037 ,001041 ,001045 ,001049 ,001052 ,001056 ,001060 ,001064 .001068 .001071 .001075 .001Q79 .001083 .001087 ,001091 .000500 ,000501 ,000502 ,000503 ,000504 .000505 ,000506 ,000507 ,000510 ,000511 ,000512 ,000513 ,000514 ,000515 ,000516 ,000517 ,000520 ,000521 ,000522 ,000523 ,000524 ,000525 ,000526 ,000527 .000530 ,000531 ,000532 .000533 .000534 ,000535 .000536 .001220 ,001224 ,001228 ,001232 .001235 .001239 ,001243 ,001247 ,001251 ,001255 .001258 ,001262 ,001266 ,001270 ,001274 ,001277 ,001281 .001285 ,001289 ,001293 ,001296 ,001300 ,001304 ,001308 ,001312 ,001316 .001319 ,001323 ,001327 .001331 .001335 .000600 .000601 ,000602 ,000603 ,000604 .000605 ,000606 ,000607 ,000610 ,000611 ,000612 ,000613 ,000614 ,000615 ,000616 .000617 ,000620 ,000621 ,000622 ,000623 ,000624 .000625 ,000626 ,000627 .000630 ,000631 .000632 .000633 .000634 ,000635 ,.000636 .001464 .001468 .001472 ,001476 .001480 ,001483 ,001487 ,001491 ,001495 ,001499 ,001502 ,001506 ,001510 ,001514 ,001518 ,001522 ,001525 ,001529 ,001533 .001537 ,001541 ,001544 ,001548 ,0:>1552 ,001556 .001560 ,001564 .001567 .001571 .001575 ,OQ157<} .000700 .000701 ,000702 .000703 .000704 ,000705 ,000706 ,000707 .001708 .001712 .001716 .001720 .001724 ,001728 ,001731 ,001735 .001739 ,OOi743 .001747 ,001750 ,001754 ,001758 ,001762 ,001766 ,001770 ,001773 ,001777 .001781 .001785 .001789 ,001792 ,001796 ,001800 ,001804 ,001808 .001811 ,001815 .001819 .001823 ~000423 ,000424 .000425 ,000426 ,00,0427 ,000430 ,000431 ,000432 .000433 ,000434 .000435 .000436 ,OOO~10 ,000711 .000712 .000713 .000714 ,000715 .000716 ,000717 ,000720 ,000721 ,000722 .000723 ,000724 .000725 ,000726 ,000727 ,000730 .000731 .000732 ,000733 ,000734 .000735' .000736 o (i) =i » .-() o ~ ." C -I m ;::c ." ;::c o(j) » ;::c ~ ~ Z ql .000437 .000440 .000441 .000442 .000443 .000444; .000445 .000446 .000447 .000450 .000451 .000452 .000453 .000454 .000455 .000456 .000457 .000460 .000461 .000462 .000463 .000464 .000465 .000466 .000467 .000470 .000471 .000472 .000473 .000474 .000475 .00Q476 .000477 .001094 .001098 .001102 .001106 .001110 .001113 .001117 .001121 .001125 .001129 .001132 .001136 .001140 .001144 .001148 .001152 .001155 .001159 .001163 .001167 .001171 .001174 .001178 .001182 .001186 .001190 .001194 .001197 .001201 .001205 .001209 .001213 .001216 .000537 .000540 .000541 .000542 .000543 .000544 .000545 .000546 .000547 .000550 .000551 .000552 .000553 .000554 .000555 .000556 .000557 .000560 .000561 .000562 .000563 .000564 .000565 .000566 .000567 .000570 .000571 .000572 .000573 .000574 .000575 .000576 .000577 .001338 .001342 .001346 .001350 .001354 .001358 .001361 .001365 .001369 .001373 .001377 .001380 .001384 .001388 .001392 .001396 .001399 .001403 .001407 .001411 •.001415 .001419 .001422 .001426 .001430 .001434 .001438 .001441 .001445 .001449 .001453 .001457 .001461 .000637 .000640 .000641 .000642 .000643 .000644 .000645 .0.00646 .000647 .000650 .000651 .000652 .000653 .000654 .000655 .000656 .000657 .000660 .000661 .000662 .000663 .000664 .000665 .000666 .000667 .000670 .000671 .000672 .000673 .000674 .000675 .000676 .000677 .001583 .001586 .001590 .001594 .001598 .001602 .001605 .001609 .001613 .001617 .001621 .001625 .001628 .001632 .001636 .001640 .001644 .001647 .001651 .001655 .001659 .001663 .001667 .001670 .001674 .001678 .001682 .001686 .001689 .001693 .001697 .001701 .001705 .000737 .000740 .000741 .000742 .000743 .000744 .000745 .000746 .000747 .000750 .000751 .000752 .000753 .000754 .000755 .000756 .000757 .000760 .000761 .000762 .000763 .000764 .000765 .000766 .000767 .000770 .0
0 is a floating point machine), p = digits to the left of the radix point (p = 0 means all numbers have absolute value less than 1; such numbers are called "digital" numbers). b One instruction per word unless noted. C For computers with circulating storage only the average access time is given. a 0 (fi =i > r- () 0 ~ ""C C -t m ;;:c. ""C ;;:c 0 (j) ;;:c » ~ ~ Z (j) PROGRAMMING AND CODING 2-65 Instruction Description. This machine has three index registers and has only one single-address instruction stored per word. There are two types of instructions, A and B. Type A instructions contain a fifteen-bit address portion and a fifteen-bit "decrement" portion (the latter for index use in certain cases) as well as a three-bit operation portion and a three-bit "tag." Type B instructions contain an eleven-bit operation portion, a three-bit tag, and a fifteen-bit address portion. Instructions are either indexable or nonindexable. Presence of one or more of the three tag bits automatically adds in the contents of the corresponding index registers into the instruction address. In certain type B instructions this process will change the operation code as well. There are two arithmetic elements, an accumulator (AC) of 37 bits plus sign and a multiplier-quotient register (MQ) of 35 bits plus sign. The two extra AC bits are for special overflow information. Instruction sequencing is of the standard single-address type. The IBM 704 has a special operational mode, the "Trapping Mode," into which it may be transferred by a special instruction. This allows machine tracing of programs by observing the flow of control automatically without detailed interpretation. Type A instructions are written in the form: TNX 02301 B 03449 where the three-letter code indicates the operation, the first five-digit decimal code the decrement to be used with the index registers, the next letter, one or more of the three index registers (A, B, or C), and the last five-digit decimal code the address. Type B instructions are written usually as SLW C 2644 where the decrement field is now omitted. In some cases, type B instructions do not have tag locations. The following list of instructions for the IBM 704 is taken from a "Manual of Operation" (Ref. 54). Notation is standard, C(Y) indicating contents of location Y, and subscripts corresponding to specific digits. S, P, Q are the sign and two overflow digits of AC, respectively. All instructions are indexable except those with an X in the operation code, designating an index register. The four digits alongside each mnemonic operation indicate the octal operation equivalent. In cases where the operation code extends into the address, there may be more than four digits. The first integer gives the number of cycles (each of 12 microseconds) for performance of the instruction. The detailed handling of overflow and floating point zero is not included in this account, nor is a complete account of the problems of normalization. 2-66 DIGITAL COMPUTER PROGRAMMING Fixed Point Arithmetic Operations. Clear and Add. 2 CLA Y +0500. The C (Y) replace the C(AC)S,I-35. Positions Q and P of the AC are cleared. The C(Y) are unchanged. Add. 2 ADD Y +0400. This instruction algebraically adds the C(Y) to the C(AC) and replaces the C(AC) with this sum. The C(Y) are unchanged. AC overflow is possible. Add Magnitude. 2 ADM Y +0401. This instruction algebraically adds the magnitude of the C (Y) to the C (AC) and replaces the C (AC) with this sum. The C (Y) are unchanged. AC overflow is possible. Clear and Subtract. 2 CLS Y +0502. The negative of the C (Y) replaces the C (AC)S,I-35. Positions Q and P of the AC are cleared. The C (Y) are unchanged. Subtract. 2 SUB Y +0402. This instruction algebraically subtracts the C(Y) from the C(AC) and replaces the C(AC) with this difference. The C (Y) are unchanged. AC overflow is possible. Subtract Magnitude. 2 SBM Y - 0400. This instruction algebraically subtracts the magnitude of the C(Y) from the C(AC) and replaces the C (AC) with this difference. The C (Y) are unchanged. AC overflow is possible. Multiply. 20 MPY Y +0200. This instruction multiplies the C(Y) by the C(MQ). The 35 most significant bits of the 70-bit product replace the C (ACh-35 and the 35 least significant bits replace the C (MQ) 1-35. The Q and P bits are cleared. The sign of the AC is the algebraic sign of the product. The sign of the MQ agrees with the sign of the AC. Multiply and Round. 20 MPR Y -0200. This instruction executes a multiply followed by a round. (The latter operation is defined below.) AC overflow is not possible. Round. 2 RND +0760···010. If position 1 of the MQ contains a 1, the magnitude of the C(AC) is increased by a 1 in position 35. If position 1 of the MQ contains a zero, the C(AC) remain unchanged. In either case, the C (MQ) are unchanged. AC overflow is possible. Divide or Halt. 20 DVH Y +0220. This instruction treats the C(AC)S,Q,P,I-35 and the C(MQ)I-35 as a 72-bit dividend plus sign, and the C(Y) as the divisor. If IC(Y)I > IC(AC)I, division takes place, a 35-bit quotient plus sign replaces the C(MQ) and the remainder replaces the C(AC)S,I_35. The sign of the remainder always agrees with the sign of the dividend. If IC(Y)I ~ IC(AC)I, division does not take place and the calculator stops with the divide-check indicator and light on. Consequently, if po- PROGRAMMING AND CODING 2-67 sition Q or P of the AC contains a 1, division does not take place since IC(Y)I < IC(AC)I. The dividend remains unchanged in the AC. Divide or Proceed. 20 DVP Y +0221. This instruction executes a division (as defined above) if IC(Y)I > IC(AC)I. If IC(Y)I ~ IC (AC) I, division does not take place, the divide-check indicator and light are turned on, and the calculator proceeds to the next instruction. The dividend remains unchanged in the AC. Load MQ. 2 LDQ Y +0560. The C(Y) replace the C(MQ). The C (Y) are unchanged. Store MQ. 2 STQ Y -0600. The C(MQ) replace the C(Y). The C (MQ) are unchanged. Store Left-Half MQ. 2 SLQ Y -0620. The C(MQ)S,l-17 replace the C(Y)S,l-17. The C(Y)18-35 and the C(MQ) are unchanged. Store. 2 STO Y +0601. The C(AC)S,l-35 replace the C(Y)S,l-35. The C(AC) are unchanged. Store Zero. 2 STZ Y +0600. The C (Y) are replaced by zeros and the sign of Y is made plus. . Store Prefix. 2 STP Y +0630. The C(AC)P,l,2 replace the C(Y)S,l,2' The C(Y)3-35 and the C(AC) are unchanged. Store Decrement. 2 STD Y +0622. The C(AC)3-17 replace the C(Yh-17. The C(Y)S,l,2,18-35 and the C(AC) are unchanged. Store Address. 2 STA Y +0621. The C(AChl-35 replace the C(Yhl-35. The C(Y)S,l-20 and the C(AC) are unchanged. Clear Magnitude. 2 CLM +0760···000. The C(AC)Q,P,l-35 are cleared. The AC sign is unchanged. Change Sign. 2 CHS +0760··· OO~. If the AC sign bit is negative, it is made positive, and vice versa. Set Sign Plus. 2 SSP +0760··· 003. A positive sign replaces the C(AC)s. Set Sign Minus. 2 SSM - 0760 ... 003. A negative sign replaces the C (AC)s. Logical Operations. Clear and Add Logical Word. 2 CAL Y - 0500. This instruction replaces the C(ACh,l-35 with the C(Y). Thus the sign of the C (Y) appears in position P of the AC, and the Sand Q bits are cleared. The C (Y) are unchanged. Add and Carry Logical Word. 2 ACL Y +0361. This instruction adds the C(Y)S,l-35 to the C(AC)P,l-35, respectively, and replaces the C(AC)P,1~35 with this sum (position S of register Y is treated as a numerical bit, and the sign of the AC is ignored). A carry out of the P 2-68 DIGITAL COMPUTER PROGRAMMING bit adds into position 35 of the AC, but does not add into Q. Q is not changed. The C (Y) are unchanged. No overflow is possible. Store Logical Word. 2 SLW Y +0602. The C(AC)P,1-35 replace the C(Y)S,1-35. The C(AC) are unchanged. AND to Acculllulator. 3 ANA Y -0320. Each bit of the C(AC)P,1-35 is matched with the corresponding bit of the C(Y)S,1-35, the C(AC)p being matched with the C(Y)s. When the corresponding bit of both the AC and location Y is a one, a one replaces the contents of that position in the AC. When the corresponding bit of either the AC or location Y is a zero, a zero replaces the contents of that position in the AC. The C(AC)s,Q are cleared. The C(Y) are unchanged. AND to Storage. 4 ANS Y +0320. Each bit of the C(AC)P,I-35 is matched with the corresponding bit of the C(Y)S,I-35, the C(AC)p being matched with the C(Y)s. When the corresponding bit of both the AC and location Y is a one, a one replaces the contents of that position in location Y. When the corresponding bit of either the AC or location Y is a zero, a zero replaces the contents of that position in location Y. The C(AC) are unchanged. OR to Acculllulator. 2 ORA Y -0501. Each bit of the C(AC)P,I-35 is matched with the corresponding bit of the C(Y)S,I-35, the C (AC)p being matched with the C (Y)s. When the corresponding bit of either the AC or location Y is a one, a one replaces the contents of that position in the AC. When the corresponding bit of both the AC and location Y is a zero, a zero replaces the contents of that position in the AC. The C(Y) and the C(AC)s,Q are unchanged. OR to Storage. 2 ORS Y -0602. Each bit of the C(AC)P,I-35 is matched with the corresponding bit of the C(Y)S,1-35, the C(AC)P being matched with the C (Y)s. When the corresponding bit of either the AC or location Y is a one, a one replaces the contents of that position in location Y. When the corresponding bit of both the AC and location Y is a zero, a zero replaces the contents of that position in location Y. The C(AC) are unchanged. COlllplelllent Magnitude. 2 COM +0760··· 006. All ones are replaced by zeros and all zeros are replaced by ones in the C(AC)Q,P,I-35. The AC sign is unchanged. Shift Operations. Shift instructions are used to move the bits in a word to the right or left of their original positions in the ACor MQ register or both. With the exception of the RQL instruction, zeros are automatically introduced in the vacated positions of a register. Thus, a shift larger than the bit capacities of the registers involved in the shifting will have no significance after the capacities of the registers are exceeded. When an instruction is interpreted as a shift instruction, the extent of the shift is PROGRAMMING AND CODING 2-69 determined by the least significant eight bits of the address of the instruction. Since the maximum possible shift is 255, a number larger than 255 in the address part of a shift instruction is interpreted modulo 256. Acculllulator Lcft Shift. 2-1 ALS Y +0767. The C(AC)Q,P,1-35 are shifted left Y modulo 256 places. If a nonzero bit is shifted into or through position P, the AC overflow indicator and light are turned on. Bits shifted past position Q are lost. Positions made vacant are filled in with zeros. Acculllulator Right Shift. 2-1 ARS Y +0771. The C(AC)Q,P,1_35 are shifted right Y modulo 256 places. Bits shifted past position 35 of the AC are lost. Positions made vacant are filled in with zeros. Long Lcft Shift. 2-1 LLS Y +0763. The C (AC)Q,P,1-35 and the C(MQh-35 are shifted left Y modulo 256 places. Bits enter position 35 of the AC from position 1 of the MQ. If a nonzero bit is shifted into or through position P, the AC overflow indicator and light are turned on. Bits shifted past position Q are lost. Positions made vacant are filled in with zeros. The sign of the AC is replaced by the same sign as that of the MQ. Long Right Shift. 2-1 LRS Y +0765. The C(AC)Q,P,1-35 and the C (MQh-35 are shifted right Y modulo 256 places. Bits enter position 1 of the MQ from position 35 of the AC. Bits shifted past position 35 of the MQ are lost. Positions made vacant are filled in with zeros. The sign of the MQ is replaced by the same sign as that of the AC. Logical Lcft. 2-1 LGL Y -0763. The C(AC)Q,P,1-35 and the C(MQ)S,1-35 are shifted left Y modulo 256 places. Bits enter position S of the MQ from position 1 of the MQ, and enter position 35 of the AC from position S of the MQ. If a nonzero bit is shifted into or through position P of the AC, the AC overflow indicator and light are turned on. Bits shifted past position Q are lost. Positions made vacant are filled in with zeros. The sign of the AC is unchanged. Rotatc MQ Lcft. 2-1 RQL Y -0773. The C(MQ)S,1-35 are rotated left Y modulo 256 places. The bits rotate from position 1 to position S of the MQ, and from position S to position 35 of the MQ. Floating Point Arithlllctic Opcrations. Floating ADD. 7-11 FAD Y +0300. The C(Y) are algebraically added to the C(AC), and this sum replaces the C(AC) and the C(MQ). The C(Y) are unchanged. The fractional part of the product is normalized to between Y2 and 1 in absolute value. During execution of a floating point addition, the AC or MQ overflow indicator and the corresponding light on the operator's cons0le are turned 2-70 DIGITAL COMPUTER PROGRAMMING on by too large a characteristic or too small a characteristic in the AC or the MQ, respectively. Unnormalized Floating Add. 6-11 UFA Y -0300. Same as floating add except the resultis not normalized. Floating Subtract. 7-11 FSB Y +0302. Same as floating add except that the negative of the C(Y) is added. Unnormalized Floating Subtract. 6-11 UFS Y -0302. Same as floating subtract except that the result is unnormalized. Floating Multiply. 17 FMP Y +0260. The C(Y) are multiplied by the C(MQ). The most significant part of the product appears in the AC and the least significant part appears in the MQ. The product of two floating point numbers is in normalized form if the multiplier and multiplicand are in this form. If either the multiplier or multiplicand is not in normalized form, the product is in normalized form only if a shift of one place is sufficient to normalize· it. During execution of floating point multiplication, too large or too small a characteristic in the AC or the MQ, respectively, turns on the AC or the MQ overflow indicator and the corresponding light on the operator's console. Unnormalized Floating Multiply. 17 UFM Y -0260. This operation is the same as floating multiply except that no shifting is included. Floating Divide or Halt. 18-IV FDH Y +0240. The C (AC) are divided by the C(Y), the quotient appears in the MQ and the remainder appears in the AC. The MQ is cleared before actual division takes place. If positions Q or P of the AC are not zero, division may take place and either or both of the AC and/or MQ overflow indicators may be turned on. When division by zero is attempted, the divide-check indicator and light are turned on and the calculator stops, and the dividend is left unchanged in the AC. The quotient is in normalized form if both divisor and dividend are in that form. If divisor or dividend or both are not in normalized form, the quotient is in normalized form if 2IC(Y)9-351 > IC(AC)9-351 ~ !IC(Y)9-351 During execution of a floating point division, t:he ,AC or MQ overflow indicator and the corresponding light on the operator's console are turned on for too large or too small a characteristic in the AC or MQ ,respectively. Floating Divide or Proceed. 18-IV· FDP Y +0241. This operation is the same as floating divide or halt except for division by zero. When division by zero is attempted, the divide-check indicator and light are turned on, division does not take place and the calculator proceeds to the next instruction. If the magnitude of the fraction in the AC is greater PROGRAMMING AND CODING 2-71 than (or equal to) twice the magnitude of the fraction in the SR, the dividecheck indicator and light are turned on, division does not take place and the calculator proceeds to the next instruction. The dividend in the AC is unchanged. Control Operations. No Operation. 2 NOP +0761. The calculator takes the next instruction in sequence. Halt and Proceed. 2 HPR +0420. This instruction causes the calculator to stop. If the start key on the operator's console is depressed, the calculator proceeds to the next instruction in sequence. Enter Trapping Mode. 2 ETM +0760···007. This instruction turns on the trapping indicator and also the trap light on the operator's console. The calculator operates in the trapping mode until a leave trapping mode operation is executed or until either the clear or reset key is pressed on the console. Leave Trapping Mode. 2 LTM -0760···007. This instruction turns off the trapping indicator and the trap light on the operator's console. The calculator will not operate in the trapping mode until another enter trapping mode operation is executed. Note. When the calculator is operating in the trapping mode, the location of every transfer instruction (except trap transfer instructions) replaces the address part of location 0000, whether or not the conditions for transfer of control are met. If the conditions are met, the calculator takes the next instruction from location 0001 and proceeds from that point. The location of each transfer instruction replaces the address part of location 0000. Halt and Transfer. 2 HTR Y +0000. This instruction stops the calculator. When the start key on the operator's console is depressed, the calculator starts again, taking the next instruction from location Y and proceeding from there. Transfer. 2 TRA Y +0020. This instruction causes the calculator to take its next instruction from location Y, and to proceed from there. Transfer on Zero. 2 TZE Y +0100. If the C(AC)Q,P,1-35 are zero, the calculator takes its next instruction from location Y and proceeds from there. If they are not zero, the calculator proceeds to the next instruction in sequence. Transfer on No Zero. 2 TNZ Y -0100. If the C(AC)Q,P,1-35 are not zero, the calculator takes its next instruction from location Y and proceeds from there. If they are zero, the calculator proceeds to the next instruction in sequence. 2-72 DIGITAL COMPUTER PROGRAMMING Transfer on Plus. 2 TPL Y +0120. If the sign bit of the AC is positive, the calculator takes the next instruction from location Y and proceeds from there. If the sign bit of the AC is negative, the calculator proceeds to the next instruction in sequence. Transfer on Minus. 2 TMI Y -0120. If the sign bit of the AC is negative, the calculator takes the next instruction from location Y and proceeds from there. If the sign bit of the AC is positive, the calculator proceeds to the next instruction in sequence. Transfer on Overflow. 2 TOV Y +0140. If the AC overflow indicator and light are on as the result of a previous operation, the indicator and light are turned off and the calculator takes the next instruction from location Y and proceeds from there. If the indicator and light are off, the calculator proceeds to the next instruction in sequence. Transfer on No Overflow. 2 TNO Y -0140. If the AC overflow indicator and light are off, the calculator takes the next instruction from location Y and proceeds from there. If the indicator and light are on, the calculator proceeds to the next instruction in sequence after turning off the indicator and light. Transfer on MQ Plus. 2 TQP Y +0162. If the sign bit of the MQ is positive, the calculator takes the next instruction from location Y and proceeds from there. If the sign bit of the MQ is negative, the calculator proceeds to the next instruction in sequence. Transfer on MQ Overflow. 2 TQO Y +0161. If the MQ overflow indicator and light have been turned on by an overflow or underflow in the MQ characteristic during a previous floating point operation, the indicator and light are turned off, the calculator takes the next instruction from location Y and proceeds from there. If the indicator and light are not on, the calculator proceeds to the next instruction in sequence. Transfer on Low MQ. 2 TLQ Y +0040. If the C(MQ) are algebraically less than the C(AC), the calculator takes the next instruction from location Y and proceeds from there. If the C (MQ) are algebraically greater than or equal to the C (AC), the calculator proceeds to the next instruction in sequence. Transfer and Set Index. 2 TSX Y +0074. Not indexable. This instruction places the 2's complement of the location of this instruction in the specified index register. The calculator takes the next instruction from location Y and proceeds from there. The 2's complement is used in this instruction because indexing is a subtractive process on the IBM 704 and subtracting the 2's complement of a number is equivalent to adding the number. Transfer with Index InereIllented. 2 TXI Y +1000. Not indexable. Contains a decrement part. This instruction adds the decre- PROGRAMMING AND CODING 2-73 ment to the number in the specified index register and replaces the number in the index register with this sum. The calculator takes the next instruction from location Y and proceeds from there. Transfer on Index High. 2 TXH Y +3000. Not indexable. Contains a decrement part. If the number in the specified index register is greater than the decrement, the calculator takes the next instruction from location Y and proceeds from there. If the number in the specified index register is less than or equal to the decrement, the calculator proceeds to the next instruction in sequence. Transfer on Index Low or Equal. 2 TXL Y - 3000. Not indexable. Contains a decrement part. If the number in the specified index register is less than or equal to the decrement, the calculator takes the next instruction from location Y and proceeds from there. If the number in the specified index register is greater than the decrement, the calculator proceeds to the next instruction in sequence. Transfer on Index. 2 TIX Y +2000. Not indexable. Contains a decrement part. If the number in the specified index register is greater than the decrement, the number in the index register is reduced by the amount of the decrement, and the calculator takes the next instruction from location Y and proceeds from there. If the number in the specified index register is equal to or less than the decrement, the number in the index register is unchanged, and the calcula tor proceeds to the next instruction in sequence. Transfer on No' Index. 2 TNX Y -2000. Not indexable. Contains a decrement part. If the number in the specified index register is equal to or less than the decrement, the number in the index register is unchanged, the calculator takes the next instruction from location Y and proceeds from there. If the number in the specified index register is greater than the decrement, the number in the index register is reduced by the amount of the decrement and the calculator proceeds to the next instruction in sequence. Trap Transfer. 2 TTR Y +0021. This instruction causes the calculator to take its next instruction from location Y and to proceed from there whether in the trapping mode or not. This makes it possible to have an ordinary transfer even when in the trapping mode. P Bit Test. 2 PBT -0760···001. If the C(AC)p is a one, the calculator skips the next instruction and proceeds from there. If position P contains a zero, the calculator takes the next instruction in sequence. Low Order Bit Test. 2 LBT +0760··· 001. If the C (ACh5 is a one, the calculator skips the next instruction and proceeds from there. 2-74 DIGITAL COMPUTER PROGRAMMING If position 35 contains a zero, the calculator takes the next instruction in sequence. Divide Checl{ Test. 2 DCT +0760··· 012. If the divide-check indicator and light are on, the indicator and light are turned off, and the calculator takes the next instruction in sequence. If the indicator and light are off, the calculator skips the next instruction and proceeds from there. Redundancy Tape Test. 2 RTT -0760··· 012. If the tapecheck indicator and light are on, the indicator and light are turned off and the calculator takes the next instruction in sequence. If the indicator and light are off, the calculator skips the next instruction and proceeds from there. COlllpare Acculllulator with Storage. 3 CAS Y +0340. If the C(Y) are algebraically less than the C(AC), the calculator takes the next instruction in sequence. If the C (Y) are algebraically equal to the C (AC), the calculator skips the next instruction and proceeds from there. If the C(Y) are algebraically greater than the C(AC), the calculator skips the next two instructions and proceeds from there. Two numbers are algebraically equal when the magnitude of the numbers and the sign are both equal. A plus zero is algebraically larger than a minus zero. Indexing Operations. Load Index frolll Address. 2 LXA Y +0534. Not indexable. The address part of the C (Y) replaces the number in the specified index register. The C (Y) are unchanged. Load Index frolll Decrelllent. 2 LXD Y -0534. Not indexable. The decrement part of the C(Y) replaces the number in the specified index register. The C(Y) are unchanged. Store Index in Decrelllen t. 2 SXD Y - 0634. Not indexable. The C (Y)a-17 are cleared and the number in the specified index register replaces the decrement part of the C(Y). The C(Y)S,l,2,18-35 are unchanged. The contents of the index register are unchanged if one index register is specified. If a multiple tag is specified, the logical or of the contents of these index registers will replace the C (Y)a-17 and will also replace the contents of the specified index registers. Place Address in Index. 2 PAX +0734. Not indexable. The address part of the C(AC) replaces the number in the specified index register. The C(AC) are unchanged. Place Decrelllent in Index. 2 PDX -0734. Not indexable. The decrement part of the C (AC) replaces the number in the specified index register. The C (AC) are unchanged. Place Index in Dccrelllent. 2 PXD -0754. Not indexable. The AC is cleared and the number in the specified index register is placed PROGRAMMING AND CODING 2-75 in the decrement part of the AC. The contents of the index register are unchanged if one index register is specified. If a multiple tag is specified, the logical or of the contents of these index registers will replace the C (AC)a-17 and will also replace the contents of the specified index registers. Input-Output Operations. The identifying numbers for the various input-output components appear in the address part of an instruction whenever the programmer wants to operate one of these units. Whether the address part of an instruction refers to a storage location or to one of the components depends on the operation part of the instruction. 80m3 operations make no sense if the address is interpreted as a location in storage; other operations make no sense if the address is interpreted as a component identification. Thus, an address is automatically interpreted by the calculator in the light of what it is asked to do by the operation part of the instruction. The addresses of the input-output units are given below. Component Cathode ray tube Tapes Binary coded decimal Binary Drum Card readp.r Card punch Printer Octal 030 Decimal 024 201-212 221-232 301-310 321 341 361 129-138 145-154 193-200 209 225 241 Read Select. 2-111 RDS Y +0762. This instruction causes the calculator to prepare to read one record of information from the component specified by Y. If Y specifies a tape unit, the MQ is cleared by this instruction. Write Select. 2-111 WRS Y +0766. This instruction causes the calculator to prepare to write one record of information on the component specified by Y. WRS 333 8 is used to delay the execution of any instruction until the MQ is available for computing after reading information from a tape. Backspace Tape. 2-111 BST Y +0764. This instruction causes the tape designated by Y to space one record in a backward direction. If the tape designated by Y is positioned at the load point, tp.e BST Y instruction is interpreted as no operation. Write End of File. 2-111 WEF Y +0770. This instruction causes the tape unit designated by Y to leave an end-of-file space, an end-of-file mark, and a redundancy character on its tape. Rewind. 40ms-III REW Y +0772. This instruction causes the tape unit designated by Y to rewind its tape to the load point. 2-76 DIGITAL COMPUTER PROGRAMMING End of Tape Test. 2 ETT -760··· OIl. This instruction must be given while the t~pe unit is selected (i.e., after a WRS or WEF instruction and before the tape disconnects; no more than 744 microseconds after the last CPY if WRS instruction; and any time up to 40 milliseconds, if WEF). Failure to program this instruction may cause the tape to be pulled from its reel. If the tape indicator and the tape indicator light are off, the calculator skips the instruction immediately following the ETT and proceeds from that point. If the tape indicator and the tape indicator light are on, they will be turned off and the calculator will take the next instruction in sequence (no skip). If tape instructions are given to a tape while the tape indicator is on, they will operate normally. Locate Drulll Address. 2 LDA Y +0460. This instruction follows a read select or write select instruction referring to a drum unit, and the address part of the C (Y) specifies the first location of the record to be read from or written on the drum. Not giving this instruction is equivalent to giving the instruction with the address part of the C (Y) equal to zero. Copy and Skip. - I l l CPY Y +0700. This instruction is used after an RDS, WRS, or another CPY instruction to transfer a word of information between location Y in storage and an input-output component specified by the address part of the preceding RDS or WRS instruction. When this instruction is executed, the 36-bit word is formed in the MQ and then is transmitted to storage or to the component. If the CPY instructions are not given within specific time ranges (found in the descriptions of these components), the calculator stops, and a read-write check light on the operator's console is turned on. If an additional CPY instruction is given after the last word of a unit record has been copied from a card or a record of tape, the CPY is not executed, and the calculator skips the two instructions immediately following the CPY and proceeds from there. If an additional RDS instruction is given for which there is no corresponding record, the calculator sets up an end-of-file condition. The first CPY instruction given after this RDS is not executed; instead, the calculator skips the instruction immediately following the CPY and proceeds from there. Plus Sense. 2 PSE Y +0760. This instruction provides a means of testing the status of sense switches (and of turning on or off the sense lights on the operator's console), thus providing the programmer with flexible means of altering the sequence of instructions being executed. This instruction also permits the transmission of an impulse to or from the exit or entry hubs on the printer or card punch. The address part of this instruction determines whether a light, switch, printer, or card punch is being sensed, and it further determines which light, switch, or hub is being sensed. PROGRAMMING AND CODING 2-77 Minus Sense. 2 MSE Y - 0760. This instruction provides a means of testing the status of sense lights on the operator's console. The addresses of the four sense lights are 141-144. If the corresponding sense light is on, the light is turned off, the calculator skips the next instruction and proceeds from there. If the light is off, the calculator takes the next instruction in sequence. Univac Scientific (1103A) Instruction Logic The Univac Scientific computer is a (35, 0, 0) binary machine, with option of (27,8,0). The arithmetic unit contains two 36-bit X (exchange) and Q (quotient) registers and one 72-bit A register (accumulator). Negative numbers are represented in one's complement notation. Input-output is via high-speed paper tape reader and punch, direct card reader and punch, and Uniservo magnetic tape units, which may be connected to peripheral punched card readers and punches and a highspeed printer. In addition, information may be recorded on magnetic tape directly from keyboards by the use of Unitypers. Communication with external equipment is via an 8-bit (lOA) register and a 36-bit (lOB) register. Information sent to these registers controls magnetic tapes as well as other input-output equipment. The program address counter (PAK) contains the present instruction address. Storage is in up to 12,288 locations of magnetic core storage, along with a directly addressable drum of 16,384 locations. Instructions are of the two-address form, with six bits for the operation code and two fifteen-bit addresses (u and v). The following information is taken from a Univac Scientific Manual (Ref. 103). Definitions and Conventions. I nstruction Word la5· .. oc n v u v 15 bits 15 bits bg·· . 114 ... 10 Operation code. First execution address. Second execution address. For some of the instructions, the form jn or jk replaces the u address; for others the form k replaces the v address. One-digit octal number modifying the instruction. Four-digit octal number designating number of times instruction is to be performed. j n 2-78 DIGITAL COMPUTER PROGRAMMING Ii Seven-digit binary number designating the number of places the word is to be shifted to the left. Address Allocations (Octal) 00000-07777 4096, ~C 00000-17777 8192, or 100000-27777 12,288 36-bit words. Q 31000-31777 1 36-bit word. A 32000-37777 1 72-bit word. MD 40000-77777 16,384 36-bit words. Fixed Addresses FI 00000 or 40001 F2 00001 Fa 00002 F4 00003 Arithmetic Section Registers A 72-bit accumulator with shifting properties. AR Right-hand 36 bits of A. AL Left-hand 36 bits of A. Q 36-bit register with shifting properties. X 36-bit exchange register. Note. Parentheses denote contents of. For example, (A) means contents of A (72-bit word in A); (Q) means contents of Q (36-bit word in Q). Input-Output Registers lOA 8-bit in-out register. lOB 36-bit in-out register. TWR 6-bit typewriter register. HPR 7-bit high-speed punch register. Word Extension D (u) 72-bit word whose right-hand 36 bits are the word at address u, and whose left-hand 36 bits are the same as the leftmost bit of the word at u. S(u) 72-bit word whose right-hand 36 bits are the word at address u, and whose left-hand 36 bits are zero. D(Q) 72-bit word-right-hand 36 bits are in register Q, left-hand 36 bits are same as leftmost bit in register Q. SeQ) same as D(Q) except left 36 bits are zero. D(AR), S(A R ) are similarly defined. L(Q) (u) 72-bit word-left-hand 36 bits are zero, right-hand 36 bits are the bit-by-bit product of corresponding bits of (Q) and word at address u. PROGRAMMING AND CODING 2-79 L(Q') (v) 72-bit word-left-hand 36 bits are zero, right-hand 36 bits are the bit-by-bit product of corresponding bits of the complement of (Q) and word at address v. Transmit Instructions. 11 * Transmit Positive TPuvt: Replace (v) with (u). 13 Transmit Negative TNuv: Replace (v) with the comple- ment of (u). 12 Transmit Magnitude TMuv: Replace (v) with the absolute magnitude of (u). 15 Transmit V-address TVuv: Replace the 15 bits of (v) designated by V15 through V29, with the corresponding bits of (u), leaving the remaining 21 bits of (v) undisturbed. 16 Transmit V -address TVuv: Replace the right-hand 15 bits of (v) designated by Vo through V14, with the corresponding bits of (u), leaving the remaining 21 bits of (v) undisturbed. 35 Add and Transmit ATuv: Add D(u) to (A). Then replace (v) with (AR). 36 Subtract and Transmit STuv: Subtract D(u) from (A). Then replace (v) with (Au). 22 Left Transmit LTjkv: Left circular shift (A) by k places. If j = 0 replace (v) with (AL); if j = 1 replace (v) with (AR). Q-Controlled Instructions. 51 Q-controlled Transmit QTuv: Form in A the number L(Q) (u). Then replace (v) by (AR). 52 Q-controlled Add QAuv: Add to (A) the number L(Q) (u). Then replace (v) by (AR). 53 Q-controlled Substitute QSuv: Form in A the quantity L(Q)(u) plus L(Q') (v). Then replace (v) with (AR). The effect is to replace selected bits of (v) with the corresponding bits of (u) in those places corresponding to l's in Q. The final (v) is the same as the final (AR). Replace Instructions. 21 Replace Add RAuv: Form in A the sum of D(u) and D(v). Then replace (u) with (AR). 23 Replace Subtract RSuv: Form in A the difference D(u) minus D(v). Then replace (u) with (AR). 27 Controlled Complement CCuv: Replace (AR) with (u) leaving CAL) undisturbed. Then complement those bits of (AR) that correspond to ones in (v). Then replace (u) with (AR). * Octal notation. t Mnemonic notation. DIGITAL COMPUTER PROGRAMMING 2-80 54 Left Shift in A LAuk: Replace (A) with D(u). Then left circular shift (A) by k places. Then replace (u) with (AR). If u = A, the first step is omitted, so that the initial content of A is shifted. 55 Left Shift in Q LQuk: Replace (Q) with (u). Then left circular shift (Q) by k places. Then replace (u) with (Q). Split Instructions. 31 Split Positive Entry SPuk: Form S (u) in A. Then left circular shift (A) by k places. 33 Split Negative Entry SNuk: Form in A the complement of S(u). Then left circular shift (A) by k places. 32 Split Add SAuk: Add S(u) to (A). Then left circular shift (A) by k places. 34 Split Subtract SSuk: Subtract S(u) from (A). Then left circular shift (A) by k places. Two-Way Conditional JUIllP Instructions. If A71 = 1, take (u) as NI. If A71 = 0, (NI means next instruction.) 47 Zero JUIllP ZJuv: If' (A) is not zero, take (u) as NI. If (A) is zero, take (v) as NI. 44 Q-JUlllp QJuv: If Q35 = 1, take (u) as NI. If Q35 = 0, take (v) as NI. Then, in either case, left circular shift (Q) by one place. 46 Sign JUlllp SJuv: take (v) as NI. One-Way Conditional JUIllP Instructions. 41 Index JUlllp IJuv: Form in A the difference D(u) minus 1. Then if A71 = 1, continue the present sequence of instructions; if A71 = 0, replace (u) with (AR) and take (v) as NI. 42 Threshold JUIllP TJuv: If D(u) is greater than (A), take (v) as NI; if not, continue the present sequence. In either case, leave (A) in its initial state. 43 Equality JUlllp EJuv: If D(u) equals (A), take (v) as NI, if not, continue the present sequence. In either case leave (A) in its initial state. Onc-Way Unconditional JUIllP Instructions. 45 Manually Selective JUIllP MJjv: If the number j is zero, take (v) as NI. If j is 1, 2, or 3, and the correspondingly numbered MJ selecting switch is set to "jump," take (v) as NI; if this switch is not set to "jump," continue the present sequence. 37 Return JUlllp RJuv: Let y represent the address from which CI was obtained. Replace the right-hand 15 bits of (u) with the quantity y plus 1. Then take (v) as NI. PROGRAMMING AND CODING 2-81 14 Interpret IP: Let y represent the address from which CI was obtained. Replace the right-hand 15 bits of (F l ) with the quantity y 1. Then take (F2) as NI. + Stop Instructions. 56 Manually Selective Stop MSjv: If j = 0, stop computer operation and provide suitable indication. If j = 1, 2, or 3 and the correspondingly numbered MS selecting switch is set to "stop," stop computer operation and provide suitable indication. Whether or not a stop occurs, (v) is NI. 57 Program Stop PS-Stop computer operations and provide suitable indication. External Equipment Instructions. 17 External Function EF -v: Select a unit of external equipment and perform the function designated by (v). 76 External Read ERjv: If j = 0, replace the right-hand 8 bits of (v) with (lOA); if j = 1, replace (v) with (lOB). 77 External 'Vrite E'Vjv: If j = 0, replace (lOA) with the righthand 8 bits of (v); if j = 1, replace (lOB) with (v). Cause the previously selected unit to respond to the information in lOA or lOB. 61 PRint PR-v: Replace (TWR) with the right-hand 6 bits of (v). Cause the typewriter to print the character corresponding to the 6-bit code. 63 PUnch PUjv: Replace (HPR) with the right-hand 6 bits of (v). Cause the punch to respond to (HPR). If j = 0, omit seventh level hole; if j = 1, include seventh level hole. Arithmetic Instructions. 71 Multiply MPuv: Form in A the 72-bit product of (u) and (v), leaving in Q the multiplier (u). 72 Multiply Add MAuv: Add to (A) the 72-bit product of (u) and (v), leaving in Q the multiplier (u). 73 Divide DVuv: Divide the 72-bit number (A) by (u), putting the quotient in Q, and leaving in A a non-negative remainder R. Then replace (v) by (Q). The quotient and remainder are defined by: (A)j = (u) . (Q) + R, where ~ R < 1(u) I. Here (A) i denotes the initial contents of A. 74 Scale Factor SFuv: Replace (A) with D(u). Then left circular shift (A) by 36 places. Then continue to shift (A) until A34 ~ A35 . Then replace the right-hand 15 bits of (v) with the number of left circular shifts, k, which would be necessary to return (A) to its original position. If (A) is all ones or zeros, k = 37. If u is A, (A) is left unchanged in the first step, instead of being replaced by D (AR). ° DIGITAL COMPUTER PROGRAMMING 2-82 Sequenced Instructions. 75 RePeat RPjnw: This instruction calls for the next instruction, which will be called Nluv, to be executed n times, its u and v addresses being modified or not according to the value of j. Afterwards the program is continued by the execution of the instruction stored at a fixed address Fl. The exact steps carried out are: (a) Replace the right-hand 15 bits of (F 1 ) with the address w. (b) Execute Nluv, the next instruction in the program, n times. (c) If j = 0, do not change u and v. If j = 1, add one to v after each execution. If j = 2, add one to u after each execution. If j = 3, add one to u and v after each execution. The modification of the u address and v address is done in program control registers. The original form of the instruction in storage is unaltered. (d) On completing n executions, take (Ft), as the next instruction. F 1 normally contains a manually selective jump whereby the computer is sent to w for the next instruction after the repeat. (e) If the repeated instruction is a jump instruction, the occurrence of a jump terminates the repetition. If the instruction is a Threshold Jump or an Equality Jump, and the jump to address v occurs, (Q) is replaced by the quantity j, (n - r), where r is the number of executions that have taken place. Floating Point Instructions. 64 Add FAuv: point sum (u) + (v). Form in Q the normalized rounded packed floating 65 Subtract FSuv: Form in Q the normalized rounded packed floating point difference (u) - (v). 66 Multiply FMuv: Form in Q the normalized rounded packed floating point product (u) . (v). 67 Divide FDuv: Form in Q the normalized rounded packed floating point quotient (u) -;- (v). 01 Polynolllial Multiply FPuv: Floating add (v) to the floating product (Q)i' (u), leaving the packed normalized rounded result in Q. 02 Inner Product FIuv: Floating add to (Q)i the floating product (u) . (v) and store the rounded normalized packed result in Q. This instruction uses Me location F4 = 00003 for temporary storage, where (F4) f = (Q)i.The subscripts i and f represent "initial" and "final." 03 Unpack UPuv: Unpack (u), replacing (u) with (U)M and replacing (v)c with (u)c or its complement if (u) is negative. The characteristic portion of (U)l contains sign bits. The sign portion and mantissa PROGRAMMING AND CODING 2-83 portion of (v)t are set to zero. Note. The subscripts M and C denote the mantissa and characteristic portions. 04 Normalize Pack NPuv: Replace (u) with the normalized rounded packed floating point number obtained from the possibly unnormalized mantissa in (u) i and the biased characteristic in (v )0' Note. It is assumed that (u) i has the binary point between U27 and U2G; that is, that (u) i is scaled by 2-27 • 05 Normalize Exit NEj-: If j = 1 normalize without rounding until a master clear or until the instruction is again executed with j = o. Univac II Instruction Logic The Univac I and II are successive models of one of the earliest computers produced successively by the Eckert-Mauchly Corporation and later the Remington-Rand Univac Division of the Sperry-Rand Corporation. The latter machine is compatible with programs written for the former. Univac II is a (12, 0, 0) decimal machine. The basic storage of the Univac II is 2000 words on magnetic cores of 12 alphanumeric characters each. Larger memories up to 10,000 words are available. The secondary storage is on magnetic tape units called Uniservos. All input-output, except through a console keyboard, is via the magnetic tape units, which may be loaded directly from typewriter (Unityper) or from punched cards (card-to-tape converter) and unloaded by typewriter, high-speed printer, or tape-to-card converter. The Univac II has a "variable field length" property which is designed to be of use in data processing. All arithmetic is in fixed point "digital" numbers (absolute value less than one). Registers. The following are the registers in the Univac II computer: 1. 2. 3. 4. 5. 6. 7. rA rX Accumulator X register rL Quotient register rF Extraction register rW 9-word transfer register rZ 60-word transfer register 60-word input register rI The following Univac II instrumentation code is taken from a Univac II manual (Ref. 34). Conventions. In describing the actions caused by Univac II system instructions, the phrase "transfer the contents of ___ to ___ " is taken to mean: the information in the component following the "of" is duplicated in the component following the "to." The component to which information is transferred is erased of its original contents just before the new informa- DIGITAL COMPUTER PROGRAMMING 2-84 tion is entered into it. Unless otherwise specified, the contents of the component from which information is transferred remains unaltered. SYIllbology. A symbolic notation is used to designate the operations caused by the execution of an instruction. This symbolic notation, as described below, is shown for each instruction. In addition a verbal description is given. Symbol Meaning III ) r X X is transferred to a main storage location whose address is m the contents of the element within the parentheses. Thus, (m) = the contents of a main storage location where address is m register, the letter of the register follows the r. Thus, rA = register A those characters of any element, X, which correspond to character positions in rF containing extractors those characters of any element, X, which correspond to character positions in rF containing nonextractors. An instruction is symbolized by three characters-two characters specify the operation code, the third character, always m, stands for the fourdigi t address portion of the instruction. One-Word Transfer Instructions. BOIll (Ill) ~ rA, rX. Transfer the contents of the storage location specified by ill to both register A and register X. FOIll (Ill) ~ rF. Transfer the contents of the storage location specified by ill to register F. LOIll (Ill) ~ rL, rX. Transfer the contents of the storage location specified by ill to both register L and register X. HOIll (rA) ~ Ill. Transfer the contents of register A to the storage location specified by m. COIll (rA) ~ Ill; 0 ~ rAe Transfer the contents of register A to the storage location specified by m. Clear register A to a word of decimal zeros. GOIll (rF) ~ Ill. Transfer the contents of register F to the storage location specified by m. IOIll (rl. ) ~ Ill. Transfer the contents of register L to the storage location specified by m. JOIll (rX) ~ Ill. Transfer the contents of register X to the storage location specified by ill. PROGRAMMING AND CODING 2-85 KOm (rA) -? rL; 0 -? rAe Transfer the contents of register A to register L. Clear register A to a word of decimal zeros. Arithmetic Instructions. AOm (m) - ? rX; (rX) + (rA) -? rAe Transfer the contents of the storage location specified by m to register X. Then send the contents of register X and register A to the Adder and add them. Return the sum to register A. AHm (m) -? rX; (rX) + (rA) -? rA, m. Transfer the contents of the storage location specified by m to register X. Then send the contents of register X and register A to the Adder and add them. Return the sum to both register A and the storage location specified by m. XOm (rX) + (rA) -? rAe Send the contents of register X and register A to the Adder and add them. Return the sum to register A. SOm - (lll)"-? rX; (rX) + (rA) -? rAe Transfer the contents of the storage location specified by m to register X. In transit reverse the sign of the word being transferred (from 0 to -, or from - to 0). Then send the contents of register X and register A to the Adder and add them. Return the sum to register A. (Note: plus signs are represented by 0.) SHm - (lll) -? rX; (rX) + (rA) - ? rA, m. Transfer the contents of the storage location specified by m to register X. In transit reverse the sign of the word being transferred (from 0 to -, or from - to 0). Then send the contents of register X and register A to the Adder and add them. Return the sum to both register A and the storage location specified by m. MOm (m) -? rX; (rL) X (rX) - ? rA (rounded). Transfer the contents of the storage location specified by m to register X. Then multiply the contents of register L by the contents of register X. Return an 11digit product, with the least significant digit rounded, to register A. The previous contents of rX and rF are destroyed. NOm - (lll) ~ rX; (rL) X (rX) ~ rA (rounded). Transfer the contents of the storage location specified by m to register X. In transit reverse the sign of the word being transferred. Then multiply the contents of register L by the contents of register X. Return an ll-digit product, with the least significant digit rounded, to register A. The previous contents of register X and register F are destroyed. POrn (m) ~ rX; (rL) X (rX) - ? rA, rX (22 digits). Transfer the contents of the storage location specified by m to register X. Then multiply the contents of register L by the contents of register X. Return the sign and first 11 digits of the product to register A. Return the sign and second 11 digits of the product to register X. The previous contents of register F are destroyed. 2-86 DIGITAL COMPUTER PROGRAMMING DOm. (m.) ~ rA; (rA) -;- (rL) ~ rA (rounded), ~ rX (unrounded). Transfer the eontents of the storage location specified by m to register A. Then divide the contents of register A by the contents of register L. Return a rounded quotient to register A, and an unrounded quotient to register X. The Second-Digit Modifier F. The second-digit modifier Fallows the isolation and independent treatment of groups of characters, which are stored as a part of a word. Two memory-to-register one-word transfer instructions and six arithmetic instructions may be written with the second instruction digit, F (instead of a zero as they have been shown). The second instruction digit F modifies the instruction and causes it to be operative on only a portion of the word. Those characters of the word upon which it is desired to have the instruction operate are indicated to the computer by an "extract pattern." The Extract Pattern. Each of the 63 Univac II system characters is either an extractor or a nonextractor. Those characters whose sevenplace code representations have a binary zero in their rightmost bit positions are extractors; e.g., decimal 1. Those characters whose seven-place Univac II system code representations have a binary one in their rightmost bit positions are nonextractors; e.g., decimal O. An extract pattern is a word so arranged that characters which are extractors occupy the same character positions within the extract pattern word as are occupied within their word by those characters that it is desired to enter an operation. All other character positions in the extract pattern are nonextractors. The extract pattern governing an operation must be in register F at the time of execution of the operation. Extract patterns are stored in the main storage and brought to register F (by an FOm instruction) as needed. The second instruction digit F can modify the Bam and Lam one-word transfer instructions. As modified by the second instruction digit F, the BFm and LFm instructions direct the central computer to: 1. Transfer to corresponding character positions in the appropriate registers (the same register affected by the unmodified instruction), only those characters of the storage location specified by m whose positions in the word in m correspond to positions in register F containing extractors. 2. Place zeros in those positions in the receiving registers which correspond to nonextractors in register F. Thus, BFm. (rn) ~ rA, rX; 0 ~ rA, rX. LFm. (rn) ~ rL, rX; 0 ~ rL, rX. The second instruction digit F can modify the AOm, Sam, MOm, NOm, Pam, and Dam arithmetic instructions. As modified by the F the PROGRAMMING AND CODING 2-87 AFm, SFm, MFm, NFm, PFm, and DFm instructions direct the central computer to: 1. Transfer to corresponding positions in the appropriate registers (the same registers affected by the unmodified instruction) only those characters in the storage location specified by m correspond to positions in register F containing extractors. 2. Place zeros in those positions in the receiving registers which correspond to nonextractors in register F. 3. Then perform the proper arithmetic function returning the complete results to the appropriate registers. Thus, + (rA) ~ rAe (rX) + (rA) ~ rAe AFIll (iii) ~ rX; 0 ~ rX; SFIll (iii) ~ rX; 0 MFIll (iii) ~ rX; O~rX; (rL) X (rX) ~ rA (rounded). NFIll (iii) ~ rX; O~rX; (rL) X (rX) ~ rA (rounded). PFIll (iii) ~ rX; O~rX; (rL) X (rX) ~ rA~ rX (22 digits). DFIll (iii) ~ rA; O~rA; (rA) ~ rX; (rX) (rL) ~ ~ rA (roundcd)~ rX (unrounded). COIllposite Extract Instructions. EOIll (iii)~ (rA) ~ rAe Form a composite word in register A by transferring to register A those characters of the contents of the storage location specified by m, whose positions in m correspond to character positions in register F containing extractors. Do not alter those characters in register A corresponding to character positions in register F containing nonextractors. EFIll (rA)~ (.!!!) ~ Ill~ rAe Form a composite word in both m and register A by transferring to register A those characters of m whose positions in m correspond to character positions in register F containing nonextractors. Do not alter those characters in m corresponding to character positions in register F containing extractors. Return the composite word, thus formed, tom. Control Instructions. UOIll JUIllP to Ill. Take next instruction word from the storage location specified by m of right-hand instruction of the instruction word containing the DOm instruction, rather than the next sequential storage location. Then continue sequential operations from m. QOIll If (rA) = (rL)~ JUIllp to Ill. Send the contents of both register A and register L to the comparator, and compare them. If they 2-88 DIGITAL COMPUTER PROGRAMMING are found to be equal take the next instruction word from the storage location specified by m of the right-hand instruction of the instruction word containing the QOm rather than the next sequential storage location. Then continue sequential operation from m. If the contents of register A do not equal the contents of register L continue on with uninterrupted sequential operations. TOIll If (rA) > (rL), JUlllp to Ill. Send the contents of both register A and register L to the comparator, and compare them. If the contents of register A are found to be algebraically greater than the contents of register L, take the next instruction word from the storage location specified by m of the right-hand instruction of the word containing the Tam instruction rather than the next sequential storage location. Then continue sequential operation from m. If the contents of register A are not greater than the contents of register L continue on with uninterrupted sequential operations. OOIll SKIP. Proceed to the next instruction. 901ll STOP. Stop processing. ROIll 000000 UO (c + 1) ~ Ill. Place in the storage location specified by m the following word: 000000 UO (c + 1), where c = the storage location of the instruction word of which Ram order is a part. Shift Instructions . •nlll Shift (rA) right, with sign, n places. * Shift all twelve characters of the word in register A the number of places specified by n to the right. (The n least significant digits of the word are destroyed by this shift.) Place zeros in the n left-hand character position of register A. ;nlll Shift (rA) left, with sign, n places. * Shift all twelve characters of the word in register A the number of places specified by n to the left. (The n left-hand characters of the word are destroyed by this shift.) Place zeros in the n-least significant digit positions of register A. -nlll Shift (rA) right, excluding sign, n places. * Shift the eleven significant digits (excluding sign) the number of places specified by n to the right. (The n least significant digits of the word will be destroyed by this' shift.) Place zeros in the n-most significant digit positions excluding sign of register A. Onlll Shift (rA) left, excluding sign, n places. * Shift the eleven significant digits (excluding sign) the number of places specified by n to the left. (The n-most significant digit of the word will be destroyed by this shift.) Place zeros in the n-least significant digit positions of register A. * n = may be any digit from 1 to 9. PROGRAMMING AND CODING 2-89 Multiword Transfer Instructions. Vnlll (lll, III + I, .. " III + n - I) ~ rW. If n = 0, skip. If n equals 0, treat this instruction as a skip instruction. If n equals any other digit, transfer n consecutive words beginning with the word in m from the main storage to register W. 'Vnlll (r'V) ~ lll, III + I, .. " III + n - 1. If n = 0, skip. If n equals 0, treat this instruction as a skip instruction. If n equals any other digit, transfer n consecutive words from register W to n consecutive storage locations in the main storage beginning with the storage location specified bym. Ynlll (lll, III + 1, .. " III + IOn - 1) ~ rZ. If n = 0, 7, 8, 9, skip. If n = 0, 7, 8, 9 treat this instruction as a skip instruction. If n = 1, 2, 3, 4, 5, or 6, transfer IOn consecutive words beginning with the word in storage location m from the main storage to register Z. Znlll (rZ) ~ lll, III + I, .. " III + IOn - 1. If n = 0, 7, 8, 9, skip. If n = 0, 7, 8, or 9 treat this instruction as a skip instruction. If n equals 1, 2, 3, 4, 5, or 6, transfer IOn consecutive words from register Z to IOn consecutive storage locations in the main storage beginning with the storage location specified by m. Input-Output Instructions. Inlll 60 words frolll tape to rI, forward. Read the next block from tape mounted on Uniservo n, with the tape moving in the forward direction. Place the block as it is being read from tape, into register I. 2nlll 6{) words frolll tape to rI, backward. Read the next block from the tape mounted on Uniservo n, with the tape moving in the backward direction. Place the block, as it is being read from tape, into register I in the same word order as it would have been placed in register I had it been read with a forward read. 30111 (rI) ~ lll, III + I, .. " III + 59. Transfer the contents of register I to 60 consecutive storage locations beginning with storage location m. 40111 (rI) ~ lll, III 1, .. " III 59. Same as 30m instruction, above. 3nlll (rI) ~ lll, III + I, .. " III + 59; 60 words frOlll tape ~ rI, forward. Transfer the contents of register I to 60 consecutive storage locations beginning with storage location m. Then read the next block from the tape mounted on Uniservo n, with the tape moving in the forward direction. Place the block, as it is being read from tape, into register I. 4nlll (rI) ~ lll, III + I, ... , III + 59; 60 words frOlll tape to rI, backward. Transfer the contents of register I to 60 consecutive storag.e + + 2-90 DIGITAL COMPUTER PROGRAMMING locations beginning with storage location m. Then read the next block from the tape mounted on Uniservo n with the tape moving in the backward direction. Place the block, as it is being read from tape, into register I in the same word order as it would have been placed in register I had it been read with a forward read. 10m Supervisory Control Keyboard ~ m. Stop processing until a word is typed on the supervisory control keyboard. When a word has . been typed, and the word release key has been depressed, place the typed word into storage location m. 5nm (m, m + 1, ... , m + 59) ~ Tape, 250 characters per inch. Transfer the contents of the 60 consecutive storage locations beginning with storage location m to register O. Then write the contents of register 0 onto the tape mounted on Uniservo n at a recording density of 250 characters per inch. 7nm (m, m + 1, ... , m + 59) ~ Tape, 50 characters per inch. Transfer the contents of the 60 consecutive storage locations beginning with storage location m to register O. Then write the contents of register 0 onto the tape mounted on Uniservo n at a recording density of 50 characters per inch. 50m (m) ~ S.C.P. Write the contents of storage location m on the supervisory control printer. This instruction can be modified by a set of buttons on the supervisory control panel to cause the contents of: 1. Register A. 2. Register L. 3. Register X. 4. Register F. 5. The Control Counter, or 6. The Control Register. 7. Successive storage locations beginning with a specified storage location to be printed on the supervisory control printer. 6nm Rewind tape. Rewind the tape mounted on Uniservo n. 8nm Rewind tape with interlock. Rewind the tape mounted on Uniservo n. Set an interlock on Uniservo n which will cause the computer to stop if any other order is directed to that Uniservo. The input-output instructions which direct Uniservo operations are symbolized with a second instruction digit of n. The n specifies the particular Uniservo to which the instruction is directed and is usually written as 1, 2, 3, 4, 5, 6, 7, 8, 9,-, A, B', C, D, E, or F. It may, however, be written as a delta (A). If it is written as a A, the Uniservo to which the order is directed is determined by a set of 16 buttons (one for each Uniservo) on the supervisory control console. Only one of these buttons may be depressed at anyone time. The Uniservo corresponding to the depressed button becomes Uniservo A. 2-91 PROGRAMMING AND CODING Breakpoint Ins true tions. ,Ill Breal{point stop. If the comma breakpoint switch on the supervisory control panel is in the breakpoint position, stop. If the comma breakpoint switch is not in the breakpoint position,' skip. Qnlll If the button in the breakpoint section of the supervisory control panel corresponding to n is not depressed, treat as a OOIll instruction. If the button in the breakpoint section of the supervisory control panel corresponding to n is depressed, perform the comparison between the contents of register A and register L, light a neon on the supervisory control panel indicating whether or not a jump would normally take place, and stop. The operator can then force a jump or no jump to take place and continue processing. Tnlll If the button in the breakpoint section of the supervisory control panel corresponding to n is not depressed, treat as a TOm instruction. If the button is depressed, perform the comparison between the contents of register A and register L, light a neon on the supervisory control panel indicating whether or not a jump would normally take place, and stop. The operator can then force a jump or no jump to take place and continue processing. SUllllllary Table. A summary of the instructions for Univac II is given in Table 8. TABLE 8. Instruction AOO1 AF01 AH01 BOO1 BFnl COO1 DOO1 EOO1 EF01 FOO1 GOO1 HOO1 1001 JOO1 KOO1 LOO1 Execution Time,a microseconds 200 200 240 120 120 120 (3700) 120 200 120 120 120 120 120 120 120 SUMMARY OF UNIVAC II INSTRUCTIONS Description (01) ~ rX; (rX) (rA)~' rA (01) ~ rX; 0 ~ rX; (rX) (rA) ~ rA (01)~rX; (rX) (rA)~rA~01 (01)~rA, rX (iii) ~ rA, rX; O~ rA, rX (rA) ~ 01; O~ rA (01) ~ rA; (rA) + (rL) ~ rA (rounded) rX (unrounded) (01) (rA) ~ rA (rA) (m)~rA~01 + + + + + (01)~rF (rF)~ 01 01 (rL) - 7 01 (rX) ~ 01 (rA) - 7 rL; 0 ~ rA (01)~rL; rX (rA)~ a Times shown in parentheses are statistical averages. The exact times for execution depends upon the data upon which these orders are operating. TABLE 8. SUMMARY OF UNIVAC LFm MOrn MFm Execution Time,a microseconds 120 (1900) (1900) NOm NFm (1900) (1900) POrn (1900) PFm (1900) Qnm 200 ROm SOm SHm SFm Tnm 120 200 280 200 200 UOm Vnm Wnm XOm Ynm Znm OOm .nm ;nm -nm Onm 90m ,Om Inm 2nm 30m 40m 3nm 120 40n 40n 120 80 405n 80 405n 120 80 40n 80 40n 80 40n 80 40n 120 120 (3500) (3500) 2675 2675 3500 Instruction 80 80 + + + + + + + + 4nm (3500) 5nm (3500) 6nm 7nm 299 (3500) 8nm 200 II INSTRUCTIONS (Continued) Description (m) -+ rL; 0 -+ rL (m) -+ rX; (rL) X (rX) -+ rA (rounded) (m) -+ rX; 0-+ rX; (rL) X (rX) -+ rA (rounded) - (m) -+ rX; (rL) X (rX) -+ rA (rounded) - (m) -+ rX; 0-+ rX; (rL) X (rX) -+ rA (rounded) (m) -+ rX; (rL) X (rX) -+ rA, rX (22 digits unrounded) (m) -+ rX; 0-+ rX; (rL) X (rX) -+ rA, rX (22 digits unrounded) If (rA) = (rL), jump to m; stop if breal{point n is selected Record 000000 UO [c I] in m - (m) -+ rX; (rX) (rA) -+ rA - (m) -+ rX; (rX) (rA) -+ rA -+ m - (rn) -+ rX; 0-+ rX; (rX) (rA) -+ rA If (rA) > (rL), jump to m; stop if breakpoint n is sclected Jump to m (m), (m I), .. " (m n - I) -+ rW (rW) -+ m, m I··· m n - I (rX) (rA) -+ rA (m), (m I), .. " (m IOn - I) -+ rZ (rZ) -+ m, m I,' . " m IOn - I SKIP Shift (rA) right, with sign, n places Shift (rA) left, with sign, n places Shift (rA) right, without sign, n places Shift (rA) left, without sign, n places STOP Stop if comma breal{point is selected 60 words from tape n to d, forward 60 words from tape n to d backward (d) -+ m, m I, .. " m 59 Same as 30m, above (d) -+ m, m I" . " m 59; 60 words from tape n to d, forward (d) -+ m, m I" . " m 59; 60 words from tape n to d, backward (m), (m I), .. " (m 59) -+ tape n, 250 characters/inch Rewind tape n m, (m I), .. " (m 59) -+ tape n, 50 characters/inch Rewind tape n, with interlock + + + + + + + + + + + + + + + + + + + + + + + a Times shown in parentheses are statistical averages. The exact times for execution depends upon the data which these orders are operating. 2-92 PROGRAMMING AND CODING 2-93 IBM 650 Instruction Logic The basic IBM 650 is a magnetic drum (10,0,0) decimal computer with one-pIus-one address instruction logic. It has a storage of 1000 or 2000 10-digit words (plus sign) with addresses 0000-0999 or 0000-1999. More extended versions of the equipment have built-in floating point arithmetic and index accumulators, but the basic machine will be described here. There are three arithmetic registers in addition to the standard program register and program counter. All information from the drum to the arithmetic unit passes through a signed 10-digit distributor. A twentydigit accumulator is divided into a lower and upper part, each of 10 digits with sign. Each of these is addressable (distributor 8001, lower accumulator 8002, and upper accumulator 8003). Each accumulator may be cleared to zero separately (in IBM 650 terminology, "reset"). The entire 20-digit register can be considered as a unit, or each part separately (but affecting the other in case of carries). The 10-digit instruction is broken down into the following form: 9 1 Op. Code 10 8 7 6 5 1 1 1 Data Address 41 21 31 1 N ext Instruction Address 0 Sign One particular instruction, Table Look-Up, allows automatic table search for one particular element in a table, which can be stored with a corresponding functional value. Input-output is via 80-digit numerical punched cards. An "alphabetic device" allows limited alphabetical entry on cards. Only certain 10-word groups on the magnetic drum are available for input and output. The following information is taken from an IBM 650 manual (Ref. 102). Much of the input-output is handled via board wiring, which is not described in detail below. The two-digit pair represents the machine code. The BRD (Branch on Digit) operation is used with special board wiring to tell when certain specific card punches exist. Inpu t-Outpu t Instructions. 70 RD (Read). This operation code causes the machine to read cards by a two-step process. First, the contents of the 10 words of read buffer storage are automatically transferred to one of the 20 (or 40) possible 10-word groups of read general storage. The group selected is determined by the D address of the Read instruction. Secondly, a card is moved under the reading brushes, and the information read is entered into buffer storage for the next Read instruction. 2-94 DIGITAL COMPUTER PROGRAMMING 71 PCH (Punch). This operation code causes card punching in two steps. First the contents of one of the 20 (or 40) possible 10-word groups of punch storage are transferred to punch buffer storage. The group selected is specified by the D address of the Punch instruction. Secondly, the card is punched with the information from buffer storage. 69 LD (Load Distributor). This operation code causes the contents of the D address location of the instruction to be placed in the distributor. 24 STD (Store Distributor). This operation code causes the contents of the distributor with the distributor sign to be stored in the location specified by the D address of the instruction. The contents of the distributor remain undisturbed. Addition and Subtraction Instructions. 10 AU (Add to Upper). This operation code causes the contents of the D address location to be added to the contents of the upper half of the accumulator. The lower half of the accumulator will remain unaffected unless the addition causes the sign of the accumulator to change, in which case the contents of the lower half of the accumulator will be complemented. Also, the units position of the upper half of the accumulator will be reduced by one. 15 AL (Add to Lower). This operation code causes the contents of the D address location to be added to the contents of the lower half of the accumulator. The contents of the upper half of the accumulator could be affected by carries. II SU (Subtract from Upper). This operation code causes the contents of the D address location to be subtracted from the contents of the upper half of the accumulator. The contents of the lower half of the accumulator will remain unaffected unless the subtraction causes a change of sign in the accumulator, in which case the contents of the lower half of the accumulator will be complemented. Also, the units position of the upper half of the accumulator will be reduced by one. 16 SL (Subtract from Lower). This operation code causes the contents of the D address location to be subtracted from the contents of the lower half of the accumulator. The contents of the upper half of the accumulator could be affected by carries. 60 RAU (Reset and Add into Upper). This operation code resets the entire accumulator to plus zero and adds the contents of the D address location into the upper half of the accumulator. 65 RAL (Reset and Add in to Lower). This opera tion code resets the entire accumulator to plus zero and adds the contents of the D address location into the lower half of the accumulator. PROGRAMMil~G AND CODING 2-95 61 RSU (Reset and Subtract into Upper). This operation code resets the entire accumulator to plus zero and subtracts the contents of the D address location into the upper half of the accumulator. 66 RSL (Resct and Subtract into Lower). This operation code resets the entire accumulator to plus zero and subtracts the contents of the D address location into the lower half of the accumulator. AccuIllulator Store Instructions. 20 STL (Store Lower in MCIllory). This operation code causes the contents of the lower half of the accumulator with the accumulator sign to be stored in the location specified by the D address of the instruction. The contents of the lower half of the accumulator remain .undisturbed. It is important to remember that the D address for all store instructions must be 0000-1999. An 8000 series D address will not be accepted as valid by the machine on any of the store instructions. 21 STU (Store Upper in MeIllory). This operation code causes the contents of the upper half of the accumulator with the accumulator sign to be stored in the location specified by the D address of the instruction. If STU is performed after a division operation, and before another division, multiplication, or reset operation takes place, the contents of the upper accumulator will be stored with the sign of the remainder from the divide operation (Op-Code 14). The contents of the upper half of the accumulator remain undisturbed. 22 STDA (Store Lower Data Address). This operation code causes positions 8-5 of the distributor to be replaced by the contents of the corresponding positions of the lower half of the accumulator. The modified word in the distributor with the sign of the distributor is then stored in the loca tion specified by the D address of the instruction. 23 STIA (Store Lower Instruction Address). This operation code causes positions 4-1 of the distributor to be replaced by the contents of the corresponding positions of the lower half of the accumulator. The modified word in the distributor with the sign of the distributor is then stored in the location specified by the D address of the instruction. The contents of the lower half of the accumulator remain unchanged, and the sign ·of the accumulator is not transferred to the distributor. The modified word remains in the distributor upon completion of the operation. Absolute Value Instructions. 17 AABL (Add Absolute to Lower). This operation code causes the contents of the D address location to be added to the contents of the lower half of the accumulator as a positive factor regardless of the 2-96 DIGITAL COMPUTER PROGRAMMING actual sign. When the operation is completed, the distributor will contain the D address factor with its actual sign. 67 RAABL (Reset and Add Absolute into Lower). This operation code resets the entire accumulator to zeros and adds the contents of the D address location into the lower half of the accumulator as a positive factor regardless of its actual sign. When the operation is completed, tlie distributor will contain the D address factor with its actual sign. 18 SABL (Subtract Absolute frolll Lower). This operation code causes the contents of the D address location to be subtracted from the contents of the lower half of the accumulator as a positive factor regardless of the actual sign. When the operation, is completed, the distributor will contain the D address factor with its actual sign. 68 RSABL (Reset and Subtract Absolute into Lower). This operation code resets the entire accumulator to plus zero and subtracts the contents of the D address location into the lower half of the accumulator as a positive factor, regardless of the actual sign. When the operation is completed, the distributor will contain the D address factor with its actual sign. Multiplication and Division. 19 MULT (Multiply). This operation code causes the machine to multiply. A 10-digit multiplicand may be multiplied by a 10-digit multiplier to develop a 20-digit product. The multiplier must be placed in the upper accumulator prior to multiplication. The location of the multiplicand is specified by the D address of the instruction. The product is developed in the accumulator beginning in the low-order position of the lower half of the accumulator and extending to the left into the upper half of the accumulator as required. 14 DIV (Divide). This operation code causes the machine to divide without resetting the remainder. A 20-digit dividend may be divided by a 10-digit divisor to produce a 10-digit quotient. In order to remain within these limits, the absolute value of the divisor must be greater than the absolute value of that portion of the dividend that is in the upper half of the accumulator. The entire dividend is placed in the 20position accumulator. The location of the divisor is specified by the D address of the divide instruction. 64 DIV RU (Divide and Reset Upper). This operation code causes the machine to divide as explained under operation code 14 (DIV). However, the upper half of the accumulator containing the remainder with its sign is reset to zeros. Branching Instructions (Decision Operations). 44 BRNZU (Branch on Non-Zero in Upper). This operation code causes the contents of the upper half of the accumulator to be exam- PROGRAMMING AND CODrNG 2-91 ined for zero. If the contents of the upper half of the accumulator is nonzero, the location of the next instruction to be executed is specified by the D address. If the contents of the upper half of the accumulator is zero, the location of the next instruction to be executed is specified by the I address. The sign of the accumulator is ignored. 45 BRNZ (Branch on Non-Zero). This operation code causes the contents of the entire accumulator to be examined for zero. If the contents of the accumulator is nonzero, the location of the next instruction to be executed is specified by the D address. If the contents of the accumulator is zero, the location of the next instruction to be executed is specified by the I address. The sign of the accumulator is ignored. 46 BRMIN (Branch on Minus). This operation code causes the sign of the accumulator to be examined for minus. If the sign of the accumulator is minus, the location of the next instruction to be executed is specified by the D address. If the sign of the accumulator is positive, the location of the next instruction to be executed is specified by the I address. The contents of the accumulator are ignored. 47 BROV (Branch on Overflow). This operation code causes the overflow circuit to be examined to see whether it has been set. If the overflow circuit is set, the location of the next instruction to be executed is specified by the D address. If the overflow circuit is not set, the location of the next instruction to be executed is specified by the I address. 90-99 BRD 1-10 (Branch on 8 in Distributor Position 1"';10). This operation code examines a particular digit position in the distributor for the presence of an 8 or 9. Codes 91-99 test positions 1-9, respectively; of the test word; code 90 tests position 10. If an 8 is present, the location of the next instruction to be executed is specified by the D address. If a 9 is present, the location of the next instruction to be executed is specified by the I address. The presence of other than an 8 or 9 will stop the machine. Shift Instructions. 30 SRT (Shift Right). This operation code causes the contents of the entire accumulator to be shifted right the number of places specified by the units digit of the D address of the shift instruction. A maximum shift of nine positions is possible. A data address with units digit of zero will result in no shift. All numbers shifted off the right end of the accumulator are lost. 31 SRD (Shift Round). This operation causes the contents of the entire accumulator to be shifted right the number of places specified by the units digit of the D address of the instruction. A 5 is added (-5 if the accumulator is negative) in the twenty-first (blind) position of the amount in the accumulator. A data address units digit of zero will shift 10 places right with rounding. 2.98 DIGITAL COMPUTER PROGRAMMING 35 SLT (Shift Left). This operation code causes the contents of the entire accumulator to be shifted left the number of places specified by the units digit of the D address of the instruction. A maximum shift of nine positions is possible. A data address with a units digit of zero will result in no shift. All numbers shifted off the left end of the accumulator are lost. However, the overflow circuit will not be turned on. 36 SCT (Shift Left and Count). This operation code causes (1) the contents of the entire accumulator to be shifted to the left until a nonzero digit is in the most significant place, (2) a count of the number of places shifted to be inserted in the two low-order positions of the accumulator. This instruction is to aid fixed-point scaling. Table Look-Up Instructions. 84 TLU (Table Look-Up). This operation code performs an automatic table look-up using the D address as the location of the first table argument and 'the I address as the address of the next instruction to be executed. The argument for which a search is to be made must be in the distributor. The address of the table argument equal to, or higher than (if no equal exists) the argument given is placed in positions 8-5 of the lower accumulator. The search argument remains, unaltered, in the distributor. Miscellaneous Instructions. 00 No-Op (No Operation). This code performs no operation. The data address is bypassed, and the machine automatically refers to the location specified by the instruction address of the No-Op instruction. 01 Stop. This operation code causes the program to stop provided the programmed switch on the control console is in the stop position. When the programmed switch is in the run position the 01 code will be ignored and treated in the same manner as 00 (No-Op ). Datatron 205 Instruction Logic ' A typical magnetic drum computer of the single-address type is the ,Datatron 205 computer manufactured by the ElectroData Division of the Burroughs Corporation. The following description of the machine is obtained from a Datatron manual (Ref. 32). This computer, in its simplest form, is a fixed point, decimal (10, 0, 0) computer. The numbers are "digital" numbers, in absolute value less than one. Each instruction (and number) occupies one machine word. The address part of an instruction occupies the four least significant digits, with a two-digit operation code immediately preceding. Storage is on a magnetic drum with 4000 words capacity. A quick PROGRAMMING AND CODING 2-99 access storage (recirculating loop) has a capacity of 80 words in four separate blocks of 20 words each. Addresses in the main storage range from 0000 through 3999; addresses in the quick access storage are 4000, 5000, 6000, and 7000. Numbers block-transferred back and forth between main and quick access storage can ordinarily be altered in one while remaining unchanged in the other. Registers. A register. This register contains 11 decimal-digit positions. Ten are for the number or instruction and one for the algebraic sign. This register acts as an accumulator, and the results of most operations appear here at the end of the operation. R register. This register contains 10 decimal-digit positions (no algebraic sign). In several operations, it serves as an extension of the A register and holds the 10 least significant digits of the number contained in the combined A and R registers. B register. This register contains 4 decimal-digit positions, and is used to facilitate the modification of commands and for tallying. As each command is received from memory, it is checked to determine whether its address part is to be modified or not. This is determined by a 1 or a 0 in the algebraic sign position. If the sign digit is 1, the four-digit number contained in the B register is added absolutely to the four least significant digits (the address part) of the command, and the command is then executed as modified by the contents of the B register. It is important to note that the commands with negative sign, as stored in the memory, are not altered by the operation of this register; they are temporarily modified in the electronic registers immediately before execution. Thus, the same command may be executed many times during a computation, temporarily modified each time by a different number in the B register. The R register may be loaded from the drum by means of a right shift through the A register. Information to be punched out on paper tape or printed on the typewriter comes from the A register. Arithllletic Instructions. In all arithmetic operations one operand is stored in the A register, the other having been fetched from the storage Ioca tion specified in the address part of the command word. If the sign digit of the command word is 1, the B register will be added to the address before the command arrives at the C register. If on input the sign digit of the command is 3, the B register will be added to the address before the command reaches the drum; and the word will be stored with a 1 in the sign digit, to produce B modification on execution. If on input the sign digit of the command word is 2, the B register will be added to the address 2-100 DIGITAL COMPUTER PROGRAMMING before the command reaches the drum and the word will be stored with a In the following description the alphanumeric codes and two-digit numbers in parentheses after the name of the command are those used on standard code sheets. oin the sign digit. Addition. ADD (ad x, 74). Add to the number in the A register the number in storage location x. This command and associated add commands do not affect the contents of the R register. SUBTRACT (su x, 75). Subtract from the contents of the A register the number in storage location x. ADD ABSOLUTE VALUE (ada x, 76). Add to the A register the number in storage location x with a positive sign attached. SUBTRACT ABSOLUTE VALUE (sua x, 77). Subtract from the number in the A register the value of the number in storage location x with a positive sign attached. CLEAR AND ADD (ca x, 64), CLEAR AND SUBTRACT (cs x, 65), CLEAR AND ADD ABSOLUTE VALUE (caa x, 66), and CLEAR AND SUBTRACT ABSOLUTE VALUE (csa x, 67). These commands clear the A register before the operation, and then have the same effect as the corresponding commands without the clearing. Multiplication. MULTIPLY AND HOLD (Inh x, 60). Bring the number from storage location x into the D register; multiply it by the number in the A register; and hold the 20-digit product in the A and R registers. In the MULTIPLY-HOLD command, R is considered to be an extension of A. Before any multiplication command the R register is automatically cleared. MULTIPLY AND ROUND OFF (Inr x, 70). Bring the number from storage location x into the D register; multiply it by the number in the A register and round off. If the first digit of R is 5 or greater, increase the absolute value of the number in the A register by 10- 1 If the first digit of R is less than 5, do not change A. In either case, the R register is cleared after the command has been executed. There is no possibility of overflow upon execution of a MULTIPLY AND ROUND OFF command. ROUND OFF (ro, 23). If the first digit of R is 5 or greater, add 10-10 to the absolute value of the number in the A register and clear R. If the first digit of R is less than 5, clear R. Overflow is possible if A contains all 9's and the first digit of R is 5 or greater. °. Division. DIVIDE (div x, 61). Divide the number in the A and R registers by the number in storage location x. In this case the R register is considered PROGRAMMING AND CODING 2-101 as an extension of A. If the number in A and R is less in absolute value than the number in x, the division is performed; the A register will contain the 10-digit quotient; and the R register will contain the true remainder after the DIVIDE command has been executed. If, however, the number in A and R is greater in absolute value or equal to the number in the D register, the overflow toggle is set; and A and R are cleared. CLEAR R (cl R, 33). Set all digits of the R register to zero. Logical Insiructions. Unit Adjust. UNIT ADJUST (ua, 06). Set the "I" toggle in the first position of the A register. This command effectively increases an even digit in AI, making it odd; and leaves an odd digit unchanged. This command is normally used after a right shift to compensate for overflow on an addition. It allows the coder to compensate for the overflow without testing for sign. Al before ua Al after ua o 1 1 1 2 3 7 8 3 3 5 5 7 7 9 9 9 4 5 6 Storage. The results of arithmetic operations are stored in the A register. The transfer of these results to storage is effected by two commands which do not affect the R register. They are: TO MEMORY AND HOLD (tInh x, 12). Store the number in the A register in storage location x, and retain the number in the A register. TO MEMORY AND CLEAR (tInC x, 02). Store the number in the A register in storage location x, and clear the A register, including the sign position. Shift. SHIFT RIGHT (sr n, 13). Shift the number in the A and R registers, not including sign, n places to the right (n is interpreted modulo 20). The n rightmost digits are lost. The n leftmost digits become zero. In this command as well as the following command, the number of shifts (n) is indicated by the address part of the command word. 2-102 DIGITAL COMPUTER PROGRAMMING SHIFT LEFT (sl r~ 14). Circulate the number in the A and R registers, not including sign, n places to the left (n is interpreted modulo 20). The n leftmost digits in A become the n rightmost significant digits in R. LOGICAL CYCLE LEFT (lcl n~ 01). Circulate the A register, including the sign digit, n + 1 places to the left (n is interpreted modulo 20). The R register is not affected by this command. SPECIAL LEFT SHIFT (spl y~ 15). If the number in the A register is not zero, shift the A and R registers to the left until the first nonzero digit in A is in the first position of the A register. Change of control does not take place. If the A register contains zero, replace the contents of the A register by the contents of the R register and change control to storage location y. This command normalizes the number in A and R and, therefore, is frequently used in floating point operations. Since it is important to know the number of shifts that occur as a result of the SPECIAL LEFT SHIFT, a count of these shifts is stored in the special counter. Special Counter. The special counter is a four-toggle binary counter recycling on 15 (1111). It is used in the machine for three purposes: 1. To count the shifts during multiplication. 2. To count the shifts during division. 3. To count the shifts necessary to normalize a number with a special left. The number in the special counter after the completion of a MULTIPLY or DIVIDE command is 9 (except' when division sets the overflow toggle). After a SPECIAL LEFT (spl y) command the special counter' shows the number of zeros that were to the left of the first nonzero digit in A before the shift. In the case where A = 0, the special counter counts to 10. The number in the special counter is retained until a multiply, divide, or other special left has been executed. In all these cases it is cleared before the new number is added to it. Information may be obtained from the special counter by means of two commands. ADD SPECIAL COUNTER (spc+~ 16). Add (algebraically) the number in the special counter scaled 10-10 to the number in the A register. SUBTRACT SPECIAL COUNTER (spc-~ 17). Subtract (alge:braically) the number in the special counter scaled 10-10 , from the number in the A register. As in the addition commands, there is a possibility of overflow. Also, the special counter can contain a forbidden combination (when A = o before spl). In such a case, the execution of the special counter (either add or subtract) command will signal the forbidden combination alarm, and the computer halts. PROGRAMMING AND CODING 2-103 EXTRACT (ex x, 63). In normal operation, storage location x will contain a combination of O's and l's. This number is referred to as an extract combination. For the digits of the extract combination that are zeros, replace the corresponding digits in the A register including the sign by zeros. For the digits of the extract combination that are ones, leave the corresponding digits in the A register, including the sign, unchanged. Loop Transfer. BLOCK TRANSFER INTO A LOOP (bl (4) ~ x, 34). Block transfer into the 4000 loop the 20 words at storage location x through storage location x 19, the main storage and loop addresses corresponding modulo 20. The commands bl(5) ~ x, bl(6) ~ x, bl(7) ~ x are executed in the same way as the above command, the 20 words being blocked into the 5000, 6000, and 7000 loops respectively. Because it is not possible to block transfer from one loop to another, all blocking commands are interpreted modulo 4000. Information transferred from main storage into a highspeed loop remains in main storage. BLOCK TRANSFER INTO MAIN MEMORY (bl(4) ~ x, 24). Block transfer into 20 main storage positions starting at storage location x the words in the 4000 loop. The words will go into main storage locations corresponding modulo 20 to their loop addresses. The bl(5) ~ x, bl(6) ~ x, bl (7) ~ x commands are defined as above with the exception that 5000, 6000, and 7000, respectively, are substituted for 4000. After execution of the command, the information is retained in the loop until new information is written in. + Change Control. UNCONDITIONAL CHANGE OF CONTROL (cu y, 20). Change control unconditionally to storage location y. This command replaces the contents of the control counter with the address part of the cu command. CONDITIONAL CHANGE OF CONTROL (cc y, 28). If the overflow toggle is set, change control to y and reset the overflow toggle to O. If the overflow toggle is not set,. ignore this command. Control Block Transfer. The two commands listed below and two of the commands under Control-Record are a combination of change of control commands and block transfer. BLOCK AND UNCONDITIONAL CHANGE OF CONTROL (cub y, 30). Block transfer into the 7000 loop the words at 20 consecutive locations starting at main storage location y, and change control to the image y in the 7000 loop; y is interpreted modulo 4000. It is important to note that the words occupy locations in the 7000 loop which are congruent 2-104 DIGITAL COMPUTER PROGRAMMING modulo 20 to their previous main storage addresses. Change of control is effected by replacing the first two digits in the address part of the command word by 70 and placing this in the control counter. This command, therefore, automatically changes control to the 7000 loop. BLOCK AND CONDITIONAL TRANSFER OF CONTROL (ccb y, 38). If the overflow toggle is set, this command acts in the same way as the cub y command described in the previous paragraph. If the overflow toggle is not set, this command is ignored. Since the control counter performs the operation of counting up one only after the command word has been fetched, it can be seen readily that the cub command must replace the first two digits by 70, not merely replace the first digit by 7. If, say, a cub 2999 were executed and only the first digit were replaced by 7, one command execution would cause a control change from the 7000 loop into main storage. Control-Record. UNCONDITIONAL CHANGE OF CONTROL AND RECORD (cuR y, 21). Clear the R register; replace its four most significant digits with the contents of the control counter; and change control unconditionally to storage location y. This command records the address from which a departure into a subroutine has been made and makes it possible to provide in advance for a control change to the next address in the main routine. ,CONDITIONAL CHANGE OF CONTROL AND RECORD (ccR y, 29). If the overflow toggle is set, clear the R register, replace its four most significant digits with the contents of the control counter, and change control to storage location y. If the overflow toggle is not set, ignore this command. BLOCK, UNCONDITIONAL CHANGE OF CONTROL AND RECORD (cubR y, 31). Clear the R register and replace its four most significant digits with the contents of the control counter; block transfer the words in storage location y and the following 19 locations into the 7000 loop and change control unconditionally to the number corresponding to y in the 7000 loop. BLOCK, CONDITIONAL TRANSFER OF CONTROL AND RECORD (ccbR y, 39). If the overflo\v toggle is set, effect a cubR y command. If the overflow toggle is not set, ignore this command. All block transfer commands are interpreted modulo 4000. The y's in the commands that perform a blocking operation are interpreted modulo 4000, while those in other commands are interpreted modulo 8000. These commands do not disturb the contents of any register. ZERO CHECK (z y, 04). If the A register does not contain ±O before the execution of this command, change control to storage location PROGRAMMING AND CODING 2-105 y. If the A register contains ±O, ignore this command (-0 is changed to +0). SIGN COMPARE (sgc x, 73). If the sign of the A register is the same as the sign of the word in storage location x, do not set the overflow toggle. If the sign of the A register is not the same as the sign of the word in storage location x, set the overflow toggle. The SIGN COMPARE command is usually followed by a cc, ccR, ccb, or ccbR command. If it is not, the setting of the overflow toggle will cause the machine to stop. It is only because of the sgc x command that the programmer need know the sign of zero. B Register. REPLACE B (B x, 72). Set the B register to the last four digits in storage location x. The sign of the number in x has no bearing on the setting of B. INCREASE B (B+, 32). Add 1 to the contents of the B register. If the B register before the execution of a B+ command contains 9999, it will contain 0000 after the execution of the command. B TO A (B ~ A, 11). Clear the A register and then replace its four rightmost digits with the contents of the B'register. The B register is not changed by this command. DECREASE B (B- y, 22). If the B register before the execution of this command did not contain zero, subtract 1 from the contents of the B register and change control to storage location y. If the B register before the execution of this command contained zero, do not change control. In this case the command leaves the B register set to 9999. STOP (s, 08). Halt the machine. The operator can continue his program by pressing the CONTINUOUS button. Input-Output Instructions. Paper Tape and Keyboard Input. The INPUT SELECTOR switch may be set to OPTICAL READER, MECHANICAL READER (on the Flexowriter) or KEYBOARD. INPUT (in x 00). Start reading the first word on the tape or received from the keyboard into storage location x. Read following words into the next consecutive locations. (See Special Use of the Sign Column below.) SINGLE DIGIT ADD INPUT (dA 10). Algebraically, add to the contents of the A register in the Ala position the positive value of the number punched on the keyboard or read by the mechanical reader or photoelectric reader. When the command is executed, the machine will stop until a digit has been entered, after which it resumes operation. SPECIAL USE OF THE SIGN COLUMN. Words containing numbers other than a or 1 in the sign column are used for control of the input 2-106 DIGITAL COMPUTER PROGRAMMING device and for B modification of words during input. A 2 or 3 placed in the sign column will cause the address part of the word to be modified by the B register as the word is read into storage. In storage, the word will have a positive sign if there was a 2 in the sign column, a negative sign if there was a 3 in the sign column. In both cases, the word will be stored with the contents of the B register added to its address part. This is summarized in Table 9. TABLE 9. SPECIAL USE OF SIGN COLUMN, INPUTS Sign Column on Input B Modification before Execution B Modification on Input o No 1 Yes No No 2 No Yes 3 Yes Yes 0 TO 3 Comments May be a command } or part of the data Sign appears in storage as 0 Sign appears in storage as 1 An input sign 4 is used only to control input and causes the command to be read directly into the C register. The effect of each of these numbers with cu or STOP appears in Table 10. TABLE 10. Sign Column 4 5 a SPECIAL USE OF SIGN COLUMN, INPUTS 4 TO Tape Stops or Keyboard is Deactivated B Modification before Execution No No Yes Yes Yes Yes 7 No No With the IN command, a 6 or 7 in the sign column does not stop the input device. The commands most often used with an input control digit in the sign column are cu, cub, in, and stop. Flexowriter and Paper Tape Output. There are two printout commands. With either of them, the second digit of the address part is a coded , format instruction to the Flexowriter, Flexowriter punch or console punch. (The two punches carry along the format instruction as an information digit for. the typewriter control. It does not affect format until the printing operation is carried out.) These instructions, which are sensed and carried out before any other part of the command is executed, are as follows: PROGRAMMING AND CODING Second Address Digit o 1 2 3 4 5 6 7 8 9 2-107 Instruction None. Feed out one character-space of blank tape (10 to the inch). (This instruction has no effect on the Flexowriter.) Print decimal point and suppress sign digit. Suppress sign digit and substitute a space for sign digit when the word is printed. Translate alphanumerically, two A register digits per alphanumeric character. Actuate carriage return. Actuate tab key. Stop printout. Idle the computer if any printout command comes up before the typewriter control RESET is pressed. Actuate space bar. None. PRINT OUT (po n, 03). This command prints out the sign and n digits of the A register (unless the sign has been suppressed by a 2 or a 3 format instruction), n being interpreted modulo 20. The R register is not affected. The A register, including the sign, is circulated n + 1 places left. This operation differs from that of the shift commands in that they do not shift the sign. The format instruction digits make it possible to control format completely by proper construction of the computer command word. PRINT OUT (po f, 07). The po f command carries out the format instruction contained in the second address digit. PUNCH OUT (po n, 03; po f, 07). The console punch uses the same two commands as the Flexowriter and typewriter control with the difference that the OUTPUT SELECTOR is set to TAPE. The console punch has no connection with the typewriter control except that its output tape may be an input to various arrangments of the typewriter control patch panel. ALPHANUMERIC CODE. Typewriter action corresponding to the various two-digit combinations read out from the A register is given in Table 11. Alphanumeric information comes out on the console punch as pairs of decimal digits. The format instruction (4) accompanies the information so that when the tape is read for printing later it will be translated by the typewriter control into alphanumeric Flexowriter action. Since it takes two digits to represent one alphabetic character, a po 0406, written 0.0000030406, will print out three alphabetic characters from the A register. Example. If (A) = +.7065464646, and the command mentioned in the above paragraph is executed, the following characters will be printed out: if6. DIGIT AL COMPUTER PROGRAMMING 2-108 TABLE 11. Typewriter Action L.C. a b c d e f g h j k 1 m n U.C. A B C D E F G H I J K L M N 0 0 p q r s t u v w x y z P Q R S T U V W X Y Z TYPEWRITER ACTION CORRESPONDING TO VARIOUS TWO-DIGIT CODES Alphanumeric Code 20 61 62 63 64 65 66 67 70 71 72 36 73 74 75 76 77 21 22 23 52 53 54 55 56 57 Typewriter Action L.C. 0 1 2 3 4 5 6 7 8 9 U.C. ) 1/2 & / $ % ? * + Lower case Upper case Space Color shift Ignore Back space Tab Carriage return Stop Alphanumeric Code 40 41 42 43 44 45 26 47 40 51 54 25 26 31 32 33 27 30 34 35 00 01 06 05 07 Punched Card Input-Output. CARD INPUT ([1000 - Ill] ci x, 44). Read in m cards, starting at storage location x. The number of words per card, from 1 to 8, is set on a selector switch. The first three digits of the command word, excluding sign, are 1000 - m. The x is interpreted as follo\vs: 0000 1000 2000 3000 = 0000 4000 5000 6000 7000 = 1000 = 2000 = 3000 = 0000 = 1000 = 2000 = 3000 8000 = 4000 9000 = 4000 After the command, the storage cells which have received new information are x through x mk - 1 (20 - k), where m is the number of cards read, and k is the setting of the input WORDS PER CARD switch. + + PROGRAMMING AND CODING 2-109 CARD/TABULATOR OUTPUT ([1000 - m] co x, 54). Punch out m cards, starting at storage location x. The number of words per card, from 1 to 8, is set on a selector switch. The first three digits of the command word, excluding sign, are 1000 - m. The x is interpreted as for card input. After the command, the 4000 loop contains the words transferred from x + mk - 1 + (20 - k) and the 19 preceding cells, where m is the number of cards punched, and k is the setting of the output WORDS PER CARD switch. For tabulator output, the command is the same except that the words "line" and "printed" are substituted for the words "card" and "punched," respecti vely. Magnetic Tape. TAPE SEARCH (ts x, 42). In preparation for a TAPE READ or WRITE command, search for block x on the tape unit designated by the third digit of the command word. As with word addresses on the drum, x is the last four digits of the command word. If a TAPE READ or WRITE command is fetched before the addressed block is found, skip the EXECUTE cycle of the tr or tw command and set the overflow toggle. TAPE READ (tr x, 40). From the tape unit designed by the third digit of the command word, read as many consecutive blocks of 20 words each as are indicated by the first two digits of the command word. Write these words in successive storage locations beginning with storage location x. TAPE WRITE (tw x, 50). On the tape unit designated by the third digit of the command word, write as many consecutive blocks of 20 words each as are indicated by the first two digits of the command word. These words will be read from successive storage locations, beginning with storage location x. REWIND (rw,52). Rewind the tape in the tape unit, designated by the third digit of the command word, to the 0000 end. If the rewind switch on the designated tape unit is in the normal position upon completion of the rewind, the unit will be locked out of the system. If the switch is in the rewind-ready position, the unit can again be called upon for a subsequent search, read, or write operation. Royal-McBee LGP-30 Instruction Logic A typical small machine is the LGP-30, built by Librascope and marketed by Royal-McBee. It is desk size, its input-output is a Flexowriter, and it has a single-address instruction code with a 30 binary digit word length using digital numbers (absolute value less than one). The instruction code for this magnetic drum (30, 0, 0) binary machine is exceedingly DIGITAL COMPUTER PROGRAMMING 2-110 simple, lacking the complex optimization features of the "next instruction address" or the recirculating loop. There is only one input and one output instruction. List of Instructions. The following list of commands is taken from an LGP-30 instruction manual (Ref. 66). Instructiona B nI Bring. A nI S nI M nI N nI D nI H nI C nI Y nI R nI E nI U nI T nI I P x Z t 0 Effect Clear the accumulator, and add the contents of m to it. Add contents of m to the contents of the accumulator, and retain the result in the accumulator. Subtract the contents of m from the contents of the accumulator, and retain the result in the accumulator. Multiply the number in the accumulator by the number in memory location m, and terminate the result at 30 binary places. Multiply the number in the accumulator by the number in m, and retain the least significant half of the product. Divide the number in the accumulator by the number ill memory location m, and retain the rounded quotient in the accumulator. Hold. Store contents of the accumulator in m, and retain the number in the accumulator. Clear. Store contents of the accumulator in m and clear the accumulator. Store only the address part of the word in the accumulator in memory location m, while leaving the rest of the word undisturbed in memory. Return address. Add one, to the address held in the counter register .(C) and record in the address portion of the instruction in memory location m. The counter register normally holds the address, of the next i:qstruction to be executed. Extract, or logical product order, i.e., clear the contents of the accumulator to zero in those bit po·sitions occupied by zeros in m. Transfer control to m unconditionally, i.e., get the next instruction from m. ' Test, or conditional transfer. Transfer control to m only if the number in the accumulator is negative. Input. Fill the accumulator from the Flexowriter. Print a Flexowriter symbol. The symbol is denoted by the track number part of the address (x). Stop. Contingent on five switch (T 1 · · · Ts) settings on the control panel. a The address part of the instruction is denoted by m when it refers to a memory ]ocation. PROGRAMMING AND CODING 2-111 Instruction Logic of the Soviet Strela (Arrow) A typical general purpose digital computer using three-address instruction logic is the Strela (Arrow) constructed in quantity under the leadership of Iu. Ia. Basilewskii of the Soviet Academy of Sciences, and described in detail by Kitov (Ref. 61). This computer uses a (35, 6, 0) binary floating point number system. Its instruction word, of 43 digits, contains a sixdigit operation code, and three 12-digit addresses, with one breakpoint bit. In octal notation, two digits represent the operation, four each the addresses, and one bit the breakpoint. This machine operates with up to 2048 words of high-speed cathode ray tube storage. Input-output is ordinarily via punched cards and punched paper tape. A "standard program library" is attached to the computer as well as magnetic tape units (termed "external accumulators" below). Note. This computer is different from both the BESM described by Lebedev (Ref. 65) and the Ural reported by Basilewskii (Ref. 7). Apparently, it is somewhat lower in performance than BESM. Since all arithmetic is ordinarily in floating point, "special instructions" perform fixed point computations for instruction modifications. Ordinarily instructions are written in an octal notation, but external to the machine operation symbols are written in a mnemonic code. The notation used is similar to that described below for the EASIAC. The two-digit numerals are the octal instruction equivalent. Arithllletic and Logical Instructions. 01. + a. ~ y. Algebraic addition of (a) to ({3) with result in 'Y. 02. + 1 a. ~ y. Special addition, used for increasing addresses of instructions. The command (a) or ({3) is added to the number ({3) or (a) and the result sent to the cell with address 'Y. As a rule, the address of the instruction being changed corresponds to the address 'Y. 03. a. ~ y. Subtraction with signed numbers. From the number (a) is subtracted the number ({3) and the result sent to 'Y. 04. - 1 a. ~ y. Difference of the absolute value of two numbers I(a)1 - I ({3)1 = ('Y). 05. X a. ~ y. Multiplication of two numbers (a) and ({3) with result sent to 'Y. 06. " a. ~ y. Logical multiplication of two numbers in cells a and {3. This instruction is used for extraction from a given number or instruction a part defined by the special number ({3). 07. V a. ~ y. Logical addition of two numbers (a) and ({3) and sending the result to cell 'Y. This instruction is used for forming numbers and commands from parts. 2-112 DIGITAL COMPUTER PROGRAMMING 10. Sh a. p y. Shift of the contents of cell a by the number of steps equal to the exponent of the ({3). If the exponent of the ({3) is positive then the shift proceeds to the left, in the direction of increasing value; if negative, then the shift is right. In addition, the sign of the number, which is shifted out of the cell, is lost. II. - 2 a. p y. Special subtraction, used for decreasing the addresses of instructions. In the cell a is found the instruction to be transformed, and in cell {3 the specially selected number. Ordinarily addresses a and 'Yare identical. 12. ~ a. p y. Comparison of two numbers (a) and ({3) by means of digital additions of the numbers being compared modulo two. In the cell 'Y is placed a number possessing ones in those digits in which inequivalence results in the nuinbers being compared. Control Instructions. 13. C a. p 0000. Conditional transfer of' control either to instruction (a) or to instruction ({3), depending on the results of the preceding operation. With the operations of addition, subtraction, and subtraction of absolute values, it appraises the sign of the result: for a positive or zero result it transfers control to the command (a), for negative results to the command ({3). The result of the operation of multiplication is dependent on the relationship to unity. Transfer is made to the command (a) in the case where the result is greater than or equal to one, and to command ({3), if it is smaller than one. For conditional transfer after the operation of comparison, transfer to the instruction (a) is made in the case of equality of binary digits, and to ({3) when there is any inequivalence. After the operation A (logical sequential multiplication) the conditional transfer command jumps to the instruction (a) when the result is different from zero, and to instruction ({3) when it is equal to zero. A forced comparison is given by C a. a. 0000 The third address in this command is not used and in its place is put zero. 14. 1-0 a. 0000 0000. This instruction is executed parallel with the code of the other operations, and guarantees bringing into working position in good time the zone of the external accumulator (magnetic tape unit) with the address a. 15. H 0000 0000 0000. This instruction executes an absolute halt. Group Transfer Instructions. Special instructions for group transfer serve for the accomplishment of a transfer of numbers to and from the PROGRAMMING AND CODING 2-113 accumulators. In the second address in these instructions stands an integer, designating the quantity of numbers in the group which must be transferred. Group transfers always are produced in increasing sequence of addresses of cells in the storage. 16. Tl 0000 n y. The instruction Tl guarantees transfer from a given input unit (with punched cards, perforated tape, etc.) into the storage. In the third address 'Y of the instruction is indicated the initial address of the group of cells in the storage where numbers are to be written. With punched paper tape or punched cards the variables are written in sequence, beginning with the first line. 17. T2 0000 n y. The instruction T2 guarantees transfer of a group of n numbers from an input unit into the external accumulator in zone 'Y. 20. T3 a. n y. This instruction guarantees a line-by-line sequence of transfers of n numbers from zone a of the external accumulator into the cells of the storage beginning with the cell with address 'Y. 21. T4 a. n 0000. This instruction guarantees the transfer to the input-output unit (to punched paper tape or punched cards) of a group of n numbers from the storage, beginning with address a. The record on punched paper tape or punched cards as a rule will begin with the first line and therefore a positive indication of the addresses of the record is not required. 22. T5 a. n y. Instruction T5 guarantees transfer of a group of n numbers from one place in the storage with initial address a into another place in the storage with initial address 'Y. 23. To a. n y. Instruction To guarantees transfer of a group of n numbers from the storage with initial address a into the external accumulator with address 'Y. 24. T7 a. n 0000. Instruction T7 serves for transfer of n numbers from the zone of the external accumulator with address a into the input-output unit. Instructions T2 and T7 cannot be performed concurrently with other machine operations. Standard Subroutine Instructions. Certain instructions in the Strela, although written as ordinary instructions are actually "synthetic" instructions which call on a subroutine for computation of the function involved. The amount of machine time (number of basic instruction cycles) for an iterative process depends on the required precision of the computed function. The figures given below are based on approximately ten-digit decimal numbers with desired precision one in the tenth place. 25. D a. p y. This standard subroutine serves for execution of the operation of division: The number (a) is divided into the number ({3) and the quotient is sent to cell 'Y. 2-114 DIGITAL COMPUTER PROGRAMMING The actual operation of division is executed in two steps: the initial obtaining of the value of the inverse of the divisor, by which the dividend is then multiplied. The computation of the inverse is given by the usual Newton formula, originally used with the ED SAC (Ref. 108). Yn+1 = Yn(2 - Yn X ). For x = d . 2P , where! < d < 1, the first approximation is taken as 2-p • The standard subroutine takes 8 to 10 instructions and can be executed in 18-20 machine cycles (execution time for one typical command). 26. V a. 0000 "I. This instruction guarantees obtaining the value from the value x = (a) and sending the result to cell 'Y. Initially I/VX is computed by the iteration formula vx where the first approximation is taken as yo = 2[p/2], the bracket indicating "integral part of." After this the result is multiplied by x to obtain This standard subroutine contains 14 instructions and is executed in 40 cycles. 27. eX a. 0000 "I. This instruction guarantees formation of eX for the value x = (a) and sending the result to cell 'Y. The computation is produced by means of expansion of eX. in a power series. The standard subroutine contains 20 instructions and is elmcuted in 40 cycles. 30. In x a. 0000 "I. This instruction guarantees formation of the function In x for the value x = (a) and sending the result to location 'Y. Computation is produced by expansion of In x in series. The subprogram contains 15 instructions and is executed in 60 cycles. 31. sin x a. 0000 "I. This instruction guarantees eIcecution of the function sin x and sending the result to location 'Y. The computation is produced in two steps: initially the value of the argument is translated into the first quadrant, then the value of the function is obtained by a series expansion. The subroutine contains 18 instructions and is executed in 25 cycles. 32. DB a. n "I. This instruction performs conversion of a group of n numbers, stored in locations a, a 1, ... from binal"y-coded decimal into binary and sending of the result to locations 'Y, 'Y 1, .... The subroutine contains 14 instructions and is executed in 50 cycles (for each number). 33. BD a. n "I. This instruction performs the conversion of a group of n numbers stored in locations a, a 1, ... from the binary system into binary-coded decimal and sends them to locations 'Y, 'Y + 1, .. • . vx. + + + PROGRAMMING AND CODING 2-115 The subroutine contains only 30 instructions and is executed with 100 cycles (for each number). 34. MS a. n 'Y' This is an instruction for storage summing. This instruction produces the formal addition of numbers, stored in locations beginning with address ex, and the result is sent to location,... Numbers and instructions are added in fixed point. This sum may be compared with a previous sum for control of storage accuracy. Instruction Logic of the MIDAC The MIDAC, Michigan Digital Automatic Computer (Ref. 25), was constructed on the basis of the design of the SEAC at the National Bureau of Standards. Its instruction code is particularly of interest because it incorporates the index register concept into a three-address binary instruction. Numbers in this machine are (44,0,0) fixed points. The word length is 45 binary digits with serial operation. Word Structure. The data or address positions of an instruction are labeled the ex, {j, and ,.. positions. Each contains twelve binary digits represented externally as three hexadecimal digits. Four binary digits, or one hexadecimal digit, are used to convey the instruction modification or relative addressing information. The next four binary digits or single hexadecimal digit represents the operation portion of the instruction. The final binary digit is the halt or breakpoint indicator for use with the instruction. For example, the 45-binary-digit word, 000001100100000011001000000100101100000001011 considered as an instruction would be interpreted as ex 000001100100 {j-y 000011001000 000100101100 abcd 0000 Op 0101 halt 1 In external hexadecimal form this would be written 064 Oc8 12c 0 5 The above binary word is the equivalent machine representation of the following instruction: "Take the contents of hexadecimal address 064, add to it the contents of hexadecimal address Oc8, and store the result in hexadecimal address 12c. There is no modification of the 12-binary-digit address locations given by the instruction. Upon completion of the operation, stop the machine if the proper external switches are energized." The binary combination represented by 5 is the operation code for addition. Data or Addresses. The addresses given by the twelve binary digits in each of the three locations designate in the machine the individual acoustic storage cells and blocks of eight magnetic drum storage cells. The 2-llb DIGITAL COMPUTER PROGRAMMING addresses from 0 to 1023 (decimal) or 000 to 3FF (hexadecimal) correspond to acoustic storage cells. The addresses from 1024 to 4095 (decimal) or 400 to FFF (hexadecimal) correspond to magnetic drum storage blocks. In certain operations, however, the addresses 0 to 15 (decimal) or 0 to F (hexadecimal) represent input-output stations rather than storage locations. These twelve-binary-digit groups will in some cases be modified by the machine in order to yield a final twelve-binary-digit address. The method of processing will depend on the values of the instruction modification digits. After modification, the final result will then be interpreted by the control unit as a machine address. In some instructions, namely those that perform change of control operations, which involve cycling and counting rather than simple arithmetic operations on numbers, the a and f3 positions in an instruction are not considered as addresses. In those cases, they are used instead as counters or tallies. In other instructions, which do not require three addresses, but only one or two, the f3 position is not considered as an address. In these cases, the oddness or evenness of the f3 address is used to differentiate between two operations having the same operation code digits. That is, the parity of binary digit P22 is used as an extra function designator. Instruction Modification Digits. The four binary digits P9-P6 are used as instruction modification or relative addressing digits. Their normal function is relatively simple; nevertheless, the possible exceptions to the general rule can make their behavior complicated. These four digits are labeled the a, b, c, and d digits. Ordinarily the a digit is associated with the a position, the b digit with the f3 position, and the c digit with the 'Y position in an instruction. When binary digit P22 (or the f3 position) is used in an instruction to represent extra operation information, the instruction modification digit b is ignored. In the case of input and output instructions, when the various address positions represent machine address locations on the drum, inputoutput stations, or block lengths, and modification of these addresses is not desired in any case, the corresponding relative addressing digits are ignored. The purpose of the instruction modification digits is to tell the machine whether or not to modify the twelve binary digits making up the corresponding address position in an instruction by addition of the contents of one or the other of two counters. In the normal case, if the a, b, or c digit is a zero, the twelve binary digits in the corresponding position are interpreted, unchanged, as the binary representation of the machine address of the number word to be processed by the instruction. If one or more of the a, b, or c digits is a one, the contents of one of two PROGRAMMING AND CODING 2-117 auxiliary address counters is added to the corresponding twelve binary digits to yield a final address usually different from that given by the original twelve-digit portion of the instruction word. The addresses are then said to be relative to the counter. The two counters involved in the address modification feature of the MIDAC are known as the instruction counter and the base counter. In the normal case, if the fourth instruction modification or d digit is a zero, the contents of the instruction counter will be added to the contents of the various twelve-digit addresses (dependent on the values of the a, b, and c digits) before further processing of the instruction. If the a digit is one and the d digit zero, the contents of the instruction counter will be added to the a address; similarly for band d digits and {1 address, etc. If the d digit is a one, the contents of the base counter will be normally added to the contents of the twelve digits in the a, {1, and "I positions (again dependent on the values of the a, b, and c digits), before further processing of the results. If the a digit is one and the d digit one, the contents of the base counter will be added to the a address, etc. The effect of the instruction modification digits may be summarized as follows: The contents of the two counters will be designated by Cd (d = 0, 1). Co = contents of the instruction counter, C1 = contents of the base counter. Then the modified addresses a', {1', and "I' are related to the a, {1, and "I addresses appearing in the instruction by the following: "I' = "I + CCd (a, b, c, d = 0, 1). In certain instructions addresses relative to one of the two counters may be prohibited. Thus, if in a particular instruction a may be relative only to the instruction counter, then for that instruction a' = a ° + aCo, no matter whether the d digit is a or a 1. The notation (a'), ({1'), or ("I') is used to indicate the word stored in the location whose address is a', {1', or "I'. Instruction Counter. The instruction counter is a twelve-binary digit (modulo 4096) counter which contains the binary representation of the address of the instruction which the control unit is processing or is about to process. In normal operation when no change of control operation is being processed, the contents of the instruction counter is increased by one at the completion of each instruction. Thus, normally the next instruction to 2-118 DIGITAL COMPUTER PROGRAMMING be processed is stored in the acoustic storage cell immediately following the cell which contains the present instruction. A change of control operation is one ,vhich selects a next instruction not stored in sequence in the acoustic storage. That is, at the completion of such instructions the contents of the instruction counter is not increased by one, but instead is changed entirely. Base Counter. The base counter is a second twelve-binary-digit counter (modulo 4096), physically identical to the instruction counter, which contains the binary representation of a base number or tally. Unlike the instruction counter, however, the base counter does not sequence automatically, but remains unchanged until a change of base instruction is processed. This counter serves two primary purposes, dependent on the usage to which it is put: 1. It may contain the address of the initial word in a group, thus serving as a base address to which integers representing the relative position of a given word in the group of words may be added by using the address modification digits. 2. It may contain a counter or tally which can be increased by a base instruction. This instruction makes use of the address modification digits to change the counter so as to count the number of traversals of a particular cycle of instructions. Instruction Types. Instructions used in MIDAC can be divided into three categories: change of information, change of control, and transfer of information. The first category can be further subdivided into arithmetic and logical instructions. In the arithmetic instructions are included addition, subtraction, division, various forms of multiplication; power extraction, number shifting; and number conversion instructions. The sole logical instruction is extract, which modifies information in a nonarithmetic fashion. The transfer of information or data transfer instructions include transfers of individual words or blocks of words into and out of the acoustic storage and drum and magnetic tape control. The possible change of control instructions includes two comparisons that provide different future sequences dependent on the differences of two numbers. In the compare numbers or algebraic comparison, the difference is an algebraic, signed one. In the compare magnitudes or absolute comparison, the difference is one between absolute values. Two other instructions, file and base, perform other tasks beside transferring control. The file instruction transfers control unconditionally. The file instruction files or stores the contents of the base or instruction counter in a specific address position of a particular word in the storage. The base or tally instruction PROGRAMMING AND CODING 2-119 provides a method for referring addresses automatically relative to the address given by the base counter, irrespective of its contents. The base instruction also gives a conditional transfer of control. The nineteen MIDAC instructions can be described functionally as follows: Change of Information. 1. Add. (a') + ({3') is placed in "'('. Result must be less than 1 in absolute value. 2. Subtract. (a') - ({3') is placed in "'('. Result must be less than 1 in absolute value. 3. Multiply, Low Order. The least significant 44 binary digits of (a') X ({3') are placed in "'('. 4. Multiply, High Order. The most significant 44 binary digits of (a') X ({3') are placed in "'('. 5. Multiply, Rounded. The most significant 44 binary digits of (a') X ({3') ± 1.2-45 are placed in "'('. The 1.2-45 is added if (a') X ({3') is positive, and subtracted if (a') X ({3') is negative. 6. Divide. The most significant 44 binary digits of ({3')/ (a') are placed in "'('. (N ote the inversion of order of a and (3.) Result must be less than 1 in absolute value. 7. Power Extract. The number n . 2-44 is placed in "'(' where n is the number of binary O's to the left of the most significant binary 1 in (a'). The b digit is ignored; (3 may be any even number. If (a') is all zeros, zero is placed in "'('. B. Shift Number. The 44 binary digits immediately to the right of the radix point in (a') . 2 ~ ¢ I a {3 "( a' {3' "(' (a') ({3') ("(') ~ Ci less than grea ter than greater than or equal to is not identical to absolute value the cell whose floating address appears in the first component of an instruction the cell whose floating address appears in the second component of an instruction the cell whose floating address appears in the third component of an instruction the cell whose address is obtained by modifying the address of a by the contents of the proper tally the cell whose address is obtained by modifying the address of {3 by the contents of the proper tally the cell whose address is obtained by modifying the address of "( by the contents of the proper tally the contents of a' the contents of {3' the contents of "(' becomes the new contents of instruction sequencer Characters. 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f G H I g h W w X x J j k Y Z & K L M N 0 p Q R S T U V I m n 0 p q r s t u v / y z 1 "2 1 $ "4 % "4 ? ! * ( ) " ¢ 3 (Back space) (Space) (U pper case shift) (Lower case shift) (Tab) (Carriage return) (Color shift) (Back space) 2-124 DIGITAL COMPUTER PROGRAMMING TABLE 12. Operation Code add sub mul div xfr cmp EASIAC, SUMMARY Operation Add Subtract Multiply Divide Transfer Compare OF OPERATIONS Symbolic Notation (a') + (f3') ~ "(' (a') - (f3') ~ "(' (a') X (f3') ~ "(' (a') + (f3') ~ "(' (a') ~ "(' if (a') ~ ({1'): (C i ) if (a') < (f3'): if ~ ({1'): (C i ) if (a') < (f3'): l(a')1 jmp lev ret Compare absolute values Jump Leave} Return set-x ndx-x cyc-x Set tally x Index tally x Cycle tally x fil-x stp File tally x Stop pno Print out numbers rno Read in numbers pch Print out alphanumeric characters rch Read in alphanumeric characters sqr s-c Square root Sine-cosine V (a') ~"(' atn Arctangent arctan (f3') ~ "(' cav + 1 ~ Ci "(' ~ Ci 1 ~ Ci "(' ~ Ci + "(' ~ C i "(' ~ Ci Address of order immediately following last unpaired lev order ~ Ci (a') ~ Tx (a') + (Tx) ~ Tx if (Tx) + 1 ~ (f3'): 0 ~ T x, (C i ) + 1 ~ C i if (Tx) + 1 < (f3'): (Tx) + 1 ~ T x, "(' ~ Ci (Tx) ~ "(' Halt computer. Upon pushing start button, process next instruction and continue Print (a') numbers starting at {1' with ("(') digits to the right of the decimal point. Print carriage returns after each number but the last Read in (a') numbers from station (f3') and store, starting at "(' If (a') is a number, print (a') characters starting at "(' If (a') is a character, print characters [starting at "(' to, but not including, the first occurrence of (a') If (a') is a number, read in (a') characters from station (f3') and store, starting at "(' If (a') is a character, read characters from station (f3') and store, starting at "(' to, and including, the first occurrence of (a') sin (a') ~ {1', cos (a') ~ "(' (a') PROGRAMMING AND CODING 2-125 EASIA C Error Prin tou t. Code No. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Error Trying to interpret a noninstruction More than 5 unpaired lev instructions A ret instruction with no unpaired lev preceding In a simple loop more than 250 times Attempt to jump to, or to obtain an instruction or operand from a nonexistent cell (i.e., a cell before the first instruction or more than 250 cells beyond the first) Attempt to divide by 0, take the arctan of 0/0, or take the square root of a negative number Not used Not used Operand not right type of information Operand not integer, or not in required range Attempt to read, print, or generate a number too large Attempt to put result or to read in to a cell already containing an instruction Address where computation stopped Error code (see above) Contents of: Tl " "T2 " "T3 " "T4 " "Ts " "To 002a07 8 2 o o 1 o o o " OOOaOO 001aOO 000a07 004aOO 000b21 1 14 Jump table Demonstration Problem. Problem. Evaluate f(x) = aox4 + alx3 + a2x 2 + a3X + a4 for x = 1, 2, 3, ... , 25. After the 25 values of x have been evaluated, print out the 25 values of f(x). The values of the coefficients are: a2 = 0.02, ao = 1, f(x) = X4 a3 = -23, + 1.5x3 + 0.02X2 - 23x - 56. a4 = -56. 2-126 DIGITAL COMPUTER PROGRAMMING For easier computation let f(x) = {[(aox +. aI)x + a2]x + a3}x + a4. Analysis. For one value of x the problem would consist of: 1. Calculating aox. 2. Calculating aox + aI. 3. Calculating (aox aI )x. 4. Calculating (aox + aI)x + a2. 5. Calculating [(aox + aI)x + a2]x. 6. Calculating [(aox + aI)x + a2]x + a3. 7. Calculating {[(aox + al)x + a2]x + a3}x. 8. Calculate f(x) = {[(aox + aI)x + a2]x + a3}x + a4. + Additional Steps. 9. Setting any tallies needed. 10. Reading in a new value of x for the iterative process. 11. Storing the value of f(x). 12. Counting the number of times an iteration takes place. 13. Printing out the 25 values of f(x). 14. Stopping the computer. 15. Writing all the constants and temporaries which will be needed during computation. Flow Diagram. Yes No Print out 25 values f{x) Stop PROGRAMMING AND CODING 2-127 PROGRAM FOR EVALUATION OF A POLYNOMIAL Instructions fa--aOO fa--aOl Numbers fa-bOO fa--cOO cO2 cOO* ('1'1) dOO cOO cOO eOO eOO cOO eOO eOO eOO lc02 dOO 2c02 0 cO2 bOO lbOO dOO 2bOO dOO 3bOO dOO 4bOO 0 0 2c02 cOl 0 dOO cOO cOO cOO cOO cOO eOO cOO cOO cOl * ('1'1) 0 aOl lc02 set-l add mul add mul add mul add mul add xfr ndx-l cmp pno 0 0 0 stp 1 1.5 .02 -23. -56. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 fa-cOl empty--24 fa-cO2 fa-dOO fa-eOO end o ~'1'l x = Xi, current X aoX aoX al (aox al)x (aox al)x a2 [(aox al)x a2jx [( a2]x a3 ([ ]x a31x f(x) = I Ix a4 f(x) ~ cOO*('1' 1) + + + + )+ + + + + + + 1 '1'1 ~ '1'1 < 25? Yes, to aOl; no, go on Print out 25 values of f (x) beginning with cell cOl. Stop computer x ao~ a1 a2 a3 a4 coefficients values of x J i i ! }Answersf(x) 25 temporaries 0 1 25 Constant 0 Constant 1 Constant 25 Current x, empty cell Partial answers, empty cell 2-128 DIGITAL COMPUTER PROGRAMMING 7. TRADITIONAL PROGRAMMING TECHNIQUES Method. The traditional hand-programming method for a scientific or engineering problem for a high-speed digital computer occurs in the following sequence: 1. Selection of a numerical method of solution, a priori appraisal of errors, selection of finite difference step size, and decision as to digit length of numbers (single or multiple precision). 2. Preparation of a flow diagram using the symbology of Sect. 4 or a similar one. 3. Static translation from the flow diagram into a sequence of instructions and listing of the constants, both in the original language of the machine (generally octal or hexadecimal notation for binary machines, decimal or alphanumeric decimal for equipment using that machine notation). 4. Entry into the machine of this sequence of information, now considered merely as a string of machine words, on punched cards or punched paper tape. 5. Checking or debugging of the written procedure by comparison of contents of the machine registers during and after performance of the problem, with previously obtained partial results computed by hand. 6. Upon obtaining deviations between the hand-computed results and those read out on lights or by printer from the machine, a complete search of the pertinent portion of the program to determine the error or errors. 7. Correction of the errors by changing the set of coded instructions, with or without the corresponding change in the flow diagram, and then a return through steps 3 through 7 until all results check with the handcomputed values. (Mistakes may occur in the hand computation.) 8. Upon complete satisfaction that the program performs as it should, entry of supplementary parameters in machine language and performance of all necessary cases. PrograInIning Errors. The above sequence is precisely that of Fig. 1, Sect. 1. However, the repetition of steps 3 through 7 are the most routine, detailed, and time-consuming part of the process. These steps are most prone to error and at the same time require the lowest level of basic skills. One minor mistake in transcription, hand conversion, or data punching, if not caught, can cause major mistakes in output, or a frustrating search requiring vast outlays of programmer and computer time. Once a programming error is discovered, instructions must be changed, and often inserted or deleted. In the latter case, succeeding instructions will acquire new addresses, and any instructions referring to them must be changed to refer to the new address. One minor error can therefore cause a chain reaction of corrections. This may be avoided by patching or PROGRAMMING AND CODING 2-129 inserting transfer of control instructions to remote unused locations, where insertions may be made without complete renumbering of addresses. Similar insertions of transfer of control instructions can be used to accomplish deletions. These procedures tend to cause further programming errors. Physical Restrictions on Programming One ever present set of restrictions on digital computer programming is that set of measures of magnitude (human effort, elapsed time, computer time, computer storage) that describe the programming process and its relation to the external practical world. Unfortunately, evaluation of most of these measures is mainly a matter of experience. Human Time. No formulas are available that can predict the amount of human time required to program a particular problem, given an original general description of a problem. Experience indicates that such time estimates are usually underestimated. The advent of automatic programming has generally decreased the amount of programmer time needed. If an estimate of the (static) number of instructions is available (this may be obtained by comparison with previously written programs), then an estimate of human cost (and therefore time) may be based on the common estimate for cost of hand-coded programs of $5.00 per checked out instruction. This figure compares very unfavorably, of course, with corresponding programming costs using the translator-compilers of the IT, Fortran, Math-matic types. Elapsed Time. Overall elapsed time is a function of the previously discussed variables and is particularly a function of the machine aids to the programming process available. Regular routine program debugging procedures, such as described by Pietrasanta (Ref. 82), can aid markedly in decreasing elapsed time. Combined use of translators with hand-coded insertions, if easily available (such as with the IT system, see Sect. 12), may cut elapsed programming time markedly. General discussions of the programming process from this point of view are available, for scientific problems, in Carr (Ref. 20), and for data processing problems, in Gottlieb and Hume (Ref. 113). Computer Time. The original estimate was made by Burks, Goldstine, and von Neumann (Ref. 19) that in most scientific problems the multiplication time of a computer would be the dominant factor, and therefore an estimate of the number of such operations, multiplied by the time per multiplication, would give a reasonable time estimate. The most satisfactory method of such estimations at present, however, is still an experimental one for any particular problem. Computer Storage. Sooner or later almost every computer will find its primary storage completely saturated by a problem, which must then 2-130 DIGITAL COMPUTER PROGRAMMING be broken up into component parts and fed into the main storage'in smaller blocks. If there is no secondary storage, this process is dependent on the flexibility and speed of external input-output equipment, such as punched cards or punched paper tape. If there is secondary internal storage, such as magnetic drum storage or magnetic tape units, the amount of time that a problem requires will depend very strongly on the method of division of a problem into pieces, and the routing of these pieces in and out of main working storage in the most efficient sequence. Some of the obvious procedures possible are: 1. Storage of data in main storage and bringing in programs in blocks from secondary storage. 2. Storage of program in main storage and bringing in data in blocks from secondary storage. 3. Mixture of (1) and (2). A discussion of the third process, with the inclusion of built-in checks, is given in Brown et al. (Ref. 18). The most experience with such hierarchy transfer of information has been by users of the Univa,c I, which had a relatively small main storage in the form of acoustic delay lines and a large secondary storage in the form 'of magnetic tape units. A discussion of an automatic system which fac'es the problem of segmenting a program, either data or instructions, into pieces is given by this group (see Ref. 2). The general conclusions of these and other workers is that while rules may be set up to prescribe the storage hierarchy manipulation process so that a computer may do it automatically, it is imperative that a programmer be allowed to override any automatic segmenting and allocation system in order to provide increased efficiency. Minhnal Latency PrograInIning. For those computers with a oneplus-one address instruction scheme, on the other hand, machine allocation of storage seems satisfactory in a large majority of cases. Most work of this type has been done for the IBM 650. Gordon (Ref. 41) first wrote a program assigning next instruction addresses automatically by machine for this computer; this was later incorporated into SOAP (Symbolic Optimal Assembly Program) (Ref. 83). ExaInples of COInputer PrograInIning The most straightforward way to describe the process of digital computer programming is to give a sequence of equivalents for each type of element in the flow diagram notation already discussed. Two "target" machine languages will be described in the list of equivalents: a computer with a single-address (actually "one-plus-one") instruction logic, the IBM 650; and a computer with a three-address instruction logic, the MIDAC (Michigan Digital Automatic Computer). (See Sect. 6.) PROGRAMMING AND CODING 2-131 In the examples that follow, the first few will be in the original languages of these machines, so that the results will be the actual ones that might be. used. The later ones will use symbolic addresses in place of the usual decimal or hexadecimal integer addresses. This allows much easier understanding of the routines. These symbolic addresses will generally use five or fewer alphanumeric symbols, such as are used in the SOAP (Symbolic Optimal Assembly Program) for the IBM 650. The MIDAC notation used on that machine with the MAGIC system is somewhat simpler, but comparable, and for uniformity the same addressing system will be used. For the IBM 650, when the next instruction address (NI Add) is not written, it means that the next instruction follows directly below in sequence~ See Sect. 6 for instruction codes of the IBM 650 and MIDAC computers. Notation. "store" Upper accumulator Lower accumulator Contents of location n Address of the location containing a Au AL C(n) Loc(a) Parentheses surrounding an address mean it is modified during the program. Dotted lines drawn underneath instructions indicate conditional transfer of control. Solid lines indicate unconditional transfer of control. ArithIlletic Boxes. A typical arithmetic box would be that of Fig. 11 -~)--il Yl~(Y2 + Y3)/(Y4 FIG. 11. II--~)- x Ys) An arithmetic box. where the values of YI, Y2, .. " etc., are "digital numbers." The corresponding sequence of IBM 650 instructions, using the SOAP assembly language notation, is given in Table 13. It is assumed that numbers are so TABLE 13. SOAP Symbolic Program RAU YOO04 MPY YOO05 STU TOOOI RAU YOO02 AUP YOO03 DIV TOOOI STL YOOO1 IBM 650 PROGRAM FOR PROBLEM OF FIG. 11 Machine Language Program Location 0100 0101 0102 0103 0104 0105 0106 Operation 60 15 21 60 10 14 20 Data Address 0204 0205 0301 0202 0203 0301 0201 NI Address 0101 0102 0103 0104 0105 0106 0107 Explanation Y4~Au C(Au) X Y5~ AL C(Au) ~ h Y2~Au C(Au) + Y3 ~ Au C(Au)/h ~ AL C(A L) ~ YI 2-132 DIGITAL COMPUTER PROGRAMMING scaled so that overflow would not occur. The next instruction address of . the IBM 650 may be omitted in the SOAP program, since it is filled in automatically. The translation of this program, with both data and next instruction address included, is given alongside the original sequence, with explanation at right. It is supposed that the following decimal address storage assignments have been made: Program: Y0001: T0001: (instructions follow in sequence) (other Y's follow in sequence) (other T's follow in sequence) 100 201 301 (Generally, if minimum latency or optimal coding were used, the location of successive instructions and the corresponding next instruction addresses would not appear in sequence.) On the MIDAC, the corresponding program in the MAGIC system might be used (see Table 14). It is assumed that the same storage assignTABLE 14. MIDAC PROGRAM: FOR PROBLEM OF FIG. 11 Machine Language Program (Hexadecimal) MAGIC Symbolic Program Y04 Y05 TOl MU Y02 Y03 T02 AD T01 T02 YOl DV Hexadecimal Location 064 065 066 a Address OCC OCA 12E {3 l' Address OCD aCE 12D Address 12D 12E OC9 Operation 08 05 OB Explanation Y4 X Y5~ tl Y2 + Y3~ t2 t2/fI ~ YI ments hold as above. N ate that a computer with a three-address instruction logic does not use an accumulator and does not need as many machine words to perform the same problem in this case. (Hereafter, machine language translations will be omitted.) COIllparison Boxes. The act of comparison can generally be accomplished by one instruction using either type of logic. A typical comparison box would be that of Fig. 12. Now assign the same locations for YI and program as before, and assume in addition that the number .15 is in location tl. All numbers are "digital." The IBM 650 program is given in FIG. 12. A typical comparison. PROGRAMMING AND CODING 2-133 Table 15. The MIDAC program is given in Table 16. The "base" instruction (BA) is a simple transfer of control instruction to 104, which corresponds to the next address "0108" of instruction 0104 of the IBM 650 program above. In Table 16 C(Y2) is assumed originally zero. TABLE Location: 0100 0101 (102 15. IBM 650 SOAP PROGRAM FOR COMPARISON OF Data Operation Address RAL YOOOI SLO TOOOI BMI 0105 RAL STL 0105 0106 0107 0108 RAU YOOOI MPY YOOOI STU YOO02 (continue) 16. (:: 102 103 104 Explanati9n C(A L) - tl ~ AL C(A L) < 0 ~ NI Add = 105 ) YI~AL C(A L) ~ Y2 YI~Au C(Au) X YI ~ Au C(Au) ~ Y2 MIDAC MAGIC PROGRAM FOR COMPARISON a Decimal Location YOOOI YOO02 {3 OF FIG. 12 'Y Address Y1 AdAddress dress T1 103 - - - -"- - - - - Y1 Y2 Y1 000 001 104 Y1 12 YI~AL --------- 0103 0104 TABLE Next Instruction Address FIG. Y1 Y2 (continue) Operation CN - - - - Explanation YI < 11 ~ NI Add = 103 EX YI~Y2 BA 000 MU YI X YI ~ Y2. . < 001 ~ NI Add = 104 Indicial Boxes. Indicial boxes in a flow diagram are most often part of a more elaborate loop or induction structure. Index modification is usually accomplished in two ways: (1) in the arithmetic unit; (2) by means of an index register. Performance of an inductive process usually involves four separate functions: 1. Initial setting of an index or counter to an initial value (often, but not always, zero or one). 2. Modification of an address of arithmetic (or other) instruction as a function of the index. 3. Increasing the value of, or incrementing, the index (in some cases this may be a decrementing process). 2-134 DIGITAL COMPUTER PROGRAMMING 4. Testing the value of the index to see if the induction has be~n completed. An example of a process containing all four of these functions is the comn putation of the vector inner product L aib i • It is assumed that the i=l numbers are "digital" and that they are so scaled that no overflow will occur. The flow diagram is as in Fig. 13. FIG. 13. n ~ aibi. Vector inner product, i = 1 Programmers are generally advised, even if it costs more instructions, to preset all counters, instructions, etc., to original conditions as is shown on the flow diagram of Fig. 13 rather than afterwards, as could possibly be done with "loops within loops." It is possible to make use of input of TABLE 17. IBM 650 SOAP PROGRAM FOR VECTOR INNER PRODUCT, FIG. 13 Location 0100 0101 0102 0103 r~0104 0105 0106 0107 0108 0109 0110 0111 0112 0113 0114 0115 0116 0117 0118 Next Instruction OpeI;Data ation Address Address RAL TOOOO STL SIGMA RAL TOOOI STL 10000 RAL 0120 ALO 10000 STL 0110 RAL 0121 ALO 10000 STL 0111 RAU (AOOOO) MPY (BOOOO) AUP SIGMA STU SIGMA RAL 10000 ALO TOOOI STL 10000 SLO NOOOI __B__M! ___ O~O~~ 0119 HLT 0120 0121 RAU MPY OOOO~ AOOOO BOOOO Explanation O~AL C(A L ) ~ ~ 1 X 1O-6~ AL C(A L ) ~ i X 10- 6 "RA U AOOOO" ~ AL Form "RAU Loc (ai)" C(A L ) ~ 0110 "MPY BOOO" ~ AL Form "MPY Loc (b i )" C(A L ) ~ 0111 ai~Au bi~ Au ~ C(Au)~Au C(Au)~ ~ i X 10-6~ AL C(Au) X + (1 X 10- 6) + C (AL) ~ AI. (i + 1) X 10-6~ i X 10- 6 C(A L) - (n + 1) X 10-,6 ~ AL C(A L) < O~NI Add = 0104 Stop Base instruction for ai Base instruction for bi PROGRAMMING AND CODING 2-135 information from outside the computer to do the initial setting. However, in this case, one cannot start over at the initial internal instruction, but must start over at the point of reading in of instructions. The process of "resetting" counters to their original condition after the testing process is completed should not be used unless one is willing to take the consequences of possible improper runs upon starting over. Note that a temporary location ~ (SIGMA) is used to hold the partial sum. The coding for the IBM 650, using address modification in the arithmetic unit, is given in Table 17. (It is assumed that location TOOOO contains 0, TOOOI contains 1 X 10- 6 , T0002 contains n X 10-6 , al is in A0001, a2 in A0002, bi in B0001, b2 in B0002, ... , etc., and (n + 1) X 10-6 in location NOOOl.) In this program (Table 17) locations 100-103 preset the initial conditions, locations 104-109 modify the instruction addresses, locations 114-116 perform the incrementing, and locations 117-118 perform the comparison. This program may be rewritten as in Table 18 to use the two instructions being modified themselves as counters. (Hereafter symbolic addresses will be used as instruction location addresses as well as data.) Note that now the flow diagram of Fig. 13 is not followed precisely. TABLE 18. ALTERNATE IBM 650 SOAP PROGRAl\I FOR VECTOR INNER PRODUC'l' Location BEGIN Opcration RAL STL RAL STL RAL STL RAL ALO STL RAL ALO STL SLO /BMI ENTRY I I \ \ MULT1 MULT2 NEXT INST1 INST2 TEST1 Data Address TOOOO SIGMA INST1 MULT1 INST2 :MULT2 1\1:ULT1 1'0001 :MULTl 1\1:ULT2 1'0001 MULT2 TESTl MULT1 Next Address Explanation lO-7 ~ {RAU AOOOO ---> MULT 1 f :MPY ROOOO -7 MULT2 1RAU Generate Loc (ai) J 1 Generate J MPY Loc (bi) }IS i = n + 1? ---------HLT '~RAU MPY AUP STU RAU MPY MPY 0000 MULT2 NEXT (AOOOO) (BOOOO) SIGMA SIGMA ENTRY AOOOO BOOOO B(n 1) MULT2 NEXT NEXT + }:!: + (a, X b,) ---> :!: Initial instruction Initial instruction Test instruction 2-136 DIGITAL COMPUTER PROGRAMMING In certain Cases the latter technique may prove quicker or may require less storage. (Above, the second technique requires twelve instead of fifteen instructions in the loop itself.) Only the first procedure will be coded for the MIDAC as shown in Table 19. TABLE 19. MIDAC MAGIC PROGRAM FOR VECTOR INNER PRODUCT, FIG. 13 Location BEGIN a Address INCRE TOOOO INSTR r-~MULTI (AOOOO) TOO02 I I 10000 I INCRE I L__ ~ "'- _____ IOOOO {3 Address TOOOO TOOOO TOOOO (BOOOO) SIGMA INCRE MULTI TESTI Operl' Address ation 10000 AD SIGMA AD MULTI AD TOO02 MU SIGMA AD AD 10000 MULTI. AD MULTI CN Explana tion l~i O~~ Set instruction ai X bi~ t2 t2 + i+ ~.~ ~ l~i Increase addresses ~ n~NI = MULTI i ------------------ INCRE INSTR TESTI 000 000 000 001 (AOOOO) (n + 1) 001 (BOOOO) 000 TOO02 000 (n + 1) RI Stop 00 MU 00 Increment Base instruction End of cycle test Use of Index Registers. The augmented IBM 650, with index registers, has three index registers, A, B, and C, of four decimal digits each. Modification of an address at execution time by using an index register will be indicated by one of these letters following the address in a "tag" position. The modified program for vector inner product given in Table 20 requires some new IBM 650 instructions not previously described, and uses a value of n = 100. RSA. Reset and subtract from index accumulator A. Index accumulator A will be reset to zero and the data address will be subtracted from it. AXA. Add to index accumulator A. Add the data address to index accumulator A. NZA. Branch on nonzero index accumulator A. If the contents of the index accumulator A is nonzero, take the next instruction from the data address. Otherwise take the next instruction from the instruction address. RAA. Reset and add to index accumulator A. Index accumulator A will be reset to zero and the data address will be added to it. Note that the program of Table 20 is much shorter when using the index registers, but the flow diagrarri has been slightly altered so as to count down from i = -100 to i = O. The instructions in location ENTER and its successor still perform their operations in an increasing sequence, however. The MIDAC has one index register, the base counter, which is added to any address in an instruction; at the time of execution, when that address 2-137 PROGRAMMING AND CODING TABLE 20. IRM 650 (AUGl\IENTED) SOAP PROGRAl\I FOR VECTOR INNER PRODUCT WITH INDEX REGISTERS Next Instruction OperData Tag Explanation ation Address Tag Address -lOO~i RSA 0100 RAL TOOOO lO~~ STL SIGMA AOlOl A r~ENTER RAU I MPY BOlOl A 2; + X b,---> 2; SIGMA : AUP I STU SIGMA 0001 : AXA i+ l~i L__________ NZA ENTER NEXT i > 0 ~ NI = ENTER Location j NEXT HLT 0000 a, Stop is "tagged" with a negative sign. One operation, the base operation, is used to set, increase and test the counter. The instruction -a {3 -BA 'Y performs all of the following operations in sequence: C (Base Counter) + a ~ Base Counter; if C (Base Counter) < (3 ~ Next Instruction Address equals 'Y; if C (Base Counter) ~ (3 ~ Next Instruction Address is i~ sequence, and a ~ Base Counter. Thus the base counter is ordinarily set to zero by an instruction 000 000 000 BA The above vector inner product program for MIDAC would now be that of Table 21. TABLE 21. Location BEGIN l\UDAC MAGIC PROGRAM FOR VEC1'OP.. INNER PRODUCT WITH AN INDEX REGISTER {3 'Y Address 000 SIGMA - BOOOI SIGMA Address 000 SIGMA T0002 SIGMA a Address 000 SIGMA r-~ ENTER - AOOO1 l T0002 L _________ ~~~~ - - Operation BA SU MU AD :00 - ~~'~:t- ~~:) Explanation Clear base counter O~~ ei X bi~ t2 + t2~ ~ < n~NI = ~ i Stop ENT~R 2-138 DIGITAL COMPUTER PROGRAMMING Note that here the counter i ranges from 0 to n - 1. The comparison in efficiency between the IBM 650 and MIDAC is not a completely Iair one, since some of the features of the IBM 650 (performance of instructions froL1 the accumulator, use of the distributor, etc.) have not been used. N evertheless, these examples do show the marked advantage in this type of cyclical problem of a three-address instruction logic with index register over a comparable single-address instruction logic. Multiway Switch. The flow diagram notation for the variable remote connector, or multi way switch, provides another example of address modification. Such a multiway switch might be used with a table look-up process, such as is required in many function evaluation processes, interpretive programs, and other problems in which performance is dependent upon a value of a function. The flow diagram is given in Fig. 14, where, FIG. 14. A multi way switch. dependent on the value of j, control jumps to one of n + 1 remote connections. Four possible programs are described below, two for a single-address (IBM 650) and two for a three-address (MIDAC) instruction logic, with and without the use of index registers. EXAMPLE 1. IBM 650 SOAP program for multiway switch without use of index accumulators. Note performance of an instruction from the lower accumulator. Location BEGIN r--JUMP I I JOOOO : ALPHA ~ I 1// /",;r 1< . . .......... ...... '" Operation RAL ALO NOP Data Address JUMP Instruction Address JOOOO 8002 (ALPHA) 00 0000 0000 j Explanation \Set JUMP to J "NOP 0000 (ALPHA + j)" Jump to (Xj(performed in Ad 2-139 PROGRAMMING AND CODING EXAMPLE 2. MIDAC MAGIC program for multiway switch without use of base counter, see Table 23. Location Address BEGIN JOOOO r--JUMP JOOOO I ALPHA I I I I I I II I 11 __ a 000 000 {3 Address JUMP 000 000 Operation 'Y Address AD JUMP (ALPHA) j BA 00 Explanation tet JUMP to "000 000 (ALPHA + j) BA" Jump to ai } Locations "'0, ",>Y' ... , an -- ~-........ .... "1, .... "- EXAMPLE 3. IBM 650 (Augmented) SOAP program for multiway switch with index register. Note that for the special case where the address of the RAA instruction is greater than 7999, the index register A is loaded directly. Location BEGIN JOOOO ALPHA Operation RAL RAA .Data Address JOOOO 8002 Instruction Address Tag ALPHA Tag Explanation j ~ Index Acc A; A } jump to aj ----------------------------00 0000 j Locations ao, aI, ... ,an j . EXAMPLE 4. MIDAC MAGIC program for multi way switch with an index register. Again in this case the use of the base counter is hindered because there is no direct way to store an integer in it. Location BEGIN r--JUMP2 {3 a Address Address 000 . 000 JOOOO JUMPl (000) 999 'Y Address 000 JUMP2 -ALPHA I : I I i /f JOOOO JUMPl ALPHA V---~' . ............... ....:11... j 000 000 999 000 -ALPHA OperExplanation ation BA Clear base counter AD Store j in a of JUMP2 BA j ~ base counter, jump to ai 00 BA .jLocations ao, aI, " ' , an 2-140 DIGITAL COMPUTER PROGRAMMING Dynalllic Stop. I t is possible to code a transfer to the same instruction to give a tight loop that accomplishes the equivalent of stopping the machine but allows it to run on at high speed. For computers with electrostatic storage, where the "read-around" or "consultation ratio" is important, this is definitely not recommended. It has mainly been used on computers without built-in halt instructions. On the two machines being used in examples, the following would constitute "dynamic stops." EXAMPLE 1. IBM 650 SOAP program for dynamic stop. Location LOOP Operation NOP EXAMPLE 2. Location LOOP Data Address 0000 Instruction Address LOOP Explanation NI Add = LOOP MIDAC MAGIC program for dynamic stop. a {j Address 000 Address 001 'Y Address LOOP OperExplanation ation BA NI Add = LOOP Subroutine Linkages. Entry to subroutines must accomplish the following: 1. Store the address of the next word (which may contain the next main program address, or else a program parameter to be used in the subroutine). 2. Transfer control to the first address of the subroutine. This is given by the flow diagram of Fig. 15 . .·.~Gr---~08f---+-~- - - - I Subroutine 1---)~--0 '---------' FIG. 15. Two main program entries to the same subroutine. On the IBM 650, the transfer of information about the position to which control is to be returned in the main program in one technique makes use of the one-plus-one address features of the computer. The next instruction to which control is to be returned in the main program is loaded in an available machine register (the distributor) and then, after transfer to the subroutine, the latter stores the next-instruction in an exit-instruction location (Table 22). Note that the exit instruction originally is loaded with a halt instruction, so that if control should be transferred improperly to the PROGRAMMING AND CODING TABLE 22. Location 2-141 IBM 650 SOAP PROGRAM FOR SUBROUTINE ENTRY Operation Data Address Next Instruction Address Explanation "RAL AOOOO", to Distr., jump to {subroutine RJUMP NEX'r fStore next instr. in lEXIT SUBRN Sub- [ routine EXIT (HLT 0000 0000) EXIT instruction subroutine, the computer would stop. Such safeguards are sometimes useful in debugging programs. If the IBM G50 did not have a next instruction address and'no special subroutine entry instruction were avaihtble, the following so-called Wheeler entry (Ref. 108) could be used. The instruction JlVIP is not an actual IBM 650 instruction. Location SELF ~ UBRN Subroutine Next Data Instruction Address Address Explanation SELF "RAL SELF" ~ AL ALa THREE "RAL (SELF + 3)" ~ AL JJVIP SUBRN Jump to subroutine -------N ext instruction RAL AOOOO Operation RAL r EXIT THREE SDA EXIT JMP (0000) 00 0003 Store NIAdd in EXIT This becomes "JMP (SELF 0000 ' + 3)" 2-1.42 DIGITAL COMPUTER PROGRAMMING With an index accumulator, the following subroutine sequence could be used to provide a return jump from a subroutine on the IBM 650. Location JUMP Operation RAA NEXT RAL I SUBRN Subroutine EXIT Next Data Instruction Address Tag Address Tag NEXTSUBRN Explanatlon "NEXT" ~ LA.A.; jump { to ~ubroutine AOOOO {Now. Irrelevant) xxx xxxxx 0000 A Return to the address given by { C(LA.A.) (Here the sequences of x's indIcate the operation and data address can be anything. LA.A. stands for index accumulator A.) In the MIDAC's typical three-address instruction logic, one instruction, the "file" (FI) operation, performs the same function as the instruction labeled JUMP for the modified IBM 650. Location JUMP Cl {3 'Y Address Address Address ·EXIT 001 SUBRN AOOOO BOOOO SUBRN EXIT COOOO Operation FI Explanation " (JUMP 1)" to 'Y position { of EXIT,jump to SUBRN + AD (Irrelevant) 000 001 (000) Note. If program parameters (variables needed in the subroutine) are required, they are generally stored in (1) the accumulator and other p::>sitions, except in the Wheeler entry method, and (2) registers following the JUMP instruction in the main program. In the latter case, the subrJutine entries or the subroutines themselves must be altered in an obvious fashion. Table Look-Up. In many cases, it is desired to find the value of a function stored in a table. Since the process of finding an inner product described above obviously requires looking up ai (and bi ) in a table with PROGRAMMING AND CODING 2-143 argument i, a similar procedure can also be used, as long as the arguments occur at equal intervals. The flow diagram for one approach is shown in Fi6 . 16; no actual coding is included. Here the argument is x at equal ~_i_~_[X_I_AX_]---,I---~)---t1 FIG. 16. Table look-up of y Y -Y;, I--~---IS = f(x). intervals Ax,and the function values are Yi. Again [... J means "integral part of." The result will be the value in the table corresponding to [xl. The table look-up instruction on the IBM 650 (see Sect. 6) provides 11 similar technique using only one instruction on the IBM 650. Several hardware restrictions render this instruction less useful, but it is still a very powerful device. A binary table look-up procedure may often prove most efficient when an equal interval table or table look-up operation is not available. Suppose there exist 16 arguments, xo, ... , XI5 in a table. A value of x is given, and it is desired again to find the approximation Y = f(x) from a table of Yi(i = 0, ... , 15). The flow diagram is shown in Fig. 17. Again, no coding is included. This process may obviously be recorded in a recursive (loop) structure. The number of comparisons in this process is C(N) ~ log2 N, where N is the number of elements in the table. (Portion of di:lgram omitted) FIG. 17. Binary table look-up procedure. 2-144 DIGITAL COMPUTER PROGRAMMING Programming with Secondary Storage Since secondary storage varies from digital computer to computer, it is difficult to give specific rules for its usage. The various devices which have been attached to general purpose computers as secondary storage include: (1) magnetic drums, (2) magnetic tape units, and (3) large-scale random access devices (bin type magnetic tape units, magnetic disks, large-size drums). All these devices employ magnetic methods of recording, and are therefore storage of a general nonvolatile nature. They nevertheless have the capacity for malfunctions; dust on a magnetic surface, improper relay closure, etc., may cause an incorrectly read or written digit. It is therefore necessary, if satisfactory reliability or built-in checks are not available, to include programmed checks, usually by using storage-summing techniques, to guarantee proper performance. These techniques are described below under Integrated Systems (see Sect. 10). Some magnetic drum systems are integrated into the high-speed storage unit; here the only programming requirement is to provide economy of performance either by minimal latency programming or an interlace feature. (See Ref. 103.) Use of magnetic drums in this fashion causes no basic problems. Drum equipment used as a secondary storage, however, entails a scheduling problem that generally can be solved exactly only by a computer itself, a procedure which has not been followed. Simpler methods of approximate solution are needed. Programs for such hierarchy transfer are discussed in Sect. II. The use of magnetic tape units is very dependent on the presence or absence of built-in checking, ability to read both forward and backward, presence of fixed or variable block length. The reader is urged to consult Sect. 6, and then the various manufacturer's operation manuals or reports (see Refs. 34, 50, 54, 93, 103, and 148) for a fuller discussion of the instructions that govern magnetic tape equipment. Large-scale, so-called random access storage, as embodied in tape bin storage (see Ref. 119) and magnetic disk storage (see Ref. 118) basically require methods of mapping call words of long digit length (for example, inventory parts numbers) into a smaller number of digits giving the address in the random access storage. A parts number, ten digits in length, may correspond to a five-digit address in a random access unit. How can a unique correspondence be made? Certainly if there are more than 100,000 different parts, this is impossible; but if there are fewer than that, some method of randomization may allow an almost one-to-one mapping from the set of parts numbers (scattered thinly throughout the entire ten-digit range) into the set of storage addresses (most of which would be used), PROGRAMMING AND CODING 2-145 One popular technique is a variation of the so-called mid-square procedure (see Ref. 74), to produce (in this case) the desired five-digit address. EXAMPLE. Suppose an inventory parts number were 1122305151. The twenty-digit product of the number with itself is: 12595688518611232801 L....-J If one uses digits 8 through 12 to provide a five-digit address, one obtains 85,186. With high probability, out of a group of 100,000 parts numbers each with ten digits, no two of them will have the same set of five midsquare digits. If more than one number does have a duplicate address under this mapping, the address can be tagged as an "exception" and either a second mid-square process based on the center ten digits of the resultant square, or another group of five digits in the square, may be used to generate a new address, which again can be tested for duplications, etc. Sorting and Merging. One primary problem that involves the use of secondary storage is the problem of rearrangement of input data in an ordered fashion. This problem can occur on one hand in assembly programs where symbolic addresses are to be arranged in an easily entered, ordered list or, on the other hand, in any sort of business file maintenance problem where inquiries or changes that are not externally ordered in sequence are to be compared with a main file. Goldstine and von Neumann (see Ref. 19, Part II, Vol. II) developed the first theoretical analysis of two of the main methods of information rearrangement and compared the use of a general purpose digital computer for these purposes with standard punched card equipment, with some advantage in favor of the former. Later studies, as listed in Seward's dissertation (Ref. 140), produce a better "informational advantage" as far as use of a general purpose digital computer is concerned, but still indicate that this present machine structure is far from dominant in such performance. There are two general classes of information rearrangement: 1. Merging. The act of taking two (or more) previously numerically increasing (or decreasing) ordered sequences of numerical information and combining them in one numerically increasing (or decreasing) sequence. 2. Sorting. The act of taking an arbitrarily ordered sequence of (numerical) information and arranging it in a numerically increasing (or decreasing) sequence. Since alphabetical information in a computer is most often encoded in some numerical form that is ordered analogous to the position in the alphabet, these definitions also cover merging and sorting of alphabetical and other nonnumerical information. Such blocks of information (called items) are usually sorted with respect to a key, a sequence of one or more symbols (digits) which are pertinent to 2-146 DIGITAL COMPUTER PROGRAMMING the position of the information in the sequence. In this discussion, it will be assumed, without loss of generality, that the key is numeric and the ordering desired is generally increasing. Use of Main Storage in Sorting. If the blocks of information to be sorted each contain few enough computer words, many of them may be stored in the high-speed storage of a computer. During the sorting process, the relative values of the keys (usually located at the beginning of a block) may be used to exchange entire blocks. A simpler and often more effie lent process, however, is to move only the addresses of the blocks rather than the blocks themselves after a comparison of the keys has been made. Thus, if n blocks of m words are to be sorted, to be stored in nm positions, space must be also left for n addresses, which will be shuffled into an order corresponding to the order into which the blocks should be moved. After this process of rearranging the n addresses is completed, the corresponding blocks may then be read out onto secondary storage in the proper sorted order. This technique may obviously be extended to use of magnetic drums as well, since they in general have a relatively small access time. Sorting Methods There are two main types of sorting: (1) digital sorting and (2) merge sorting. Digital Sorting. This method uses successive digits (or groups of digits) in the key to arrange the sequence being sorted into an ascending order. This is the method usually used on punched card equipment, where the information is passed through the sorter one time for each digit in the key, and the cards are collected in one of a number of output units (10 in a decimal sorter) at the end of each pass. If one starts at the least significant digit and proceeds up~vard in sequence, ordering the entire stack by digits after each pass, the entire process requires d passes, where d is the number of digits in the key. The logical extreme of the digital sort technique is the so-calle~ addresssorting technique on a stored-program computer. If, for example, in a decimal computer single words are to be sorted on a two-digit key, each value of which is to appear only once, this key may be used as an index to modify a storage address for each word in turn. Thus, if the resultant storage block for ordered information is in locations 1900 to 1999, and if the two-digit key is 65, the machine word corresponding should be sent to location 1965. Even if the information being sorted is in larger blocks, if the keys are unique and occur densely within the entire possible range of key values, a similar technique may be used, either with the blocks themselves or with their addresses. Duplicate keys, if very few occur, may be handled by signals designating an exceptional case. PROGRAMMING AND CODING 2-147 With magnetic tape units, (decimal) digital sorting may be achieved by reading from one tape and storing the output on one of ten tapes, each corresponding to a possible digit of the key. With two banks of ten-tape units, the previous output can be used as the next input, with the next successive significant digit being sorted on in order. The time required for such a digital sort is T =t X n, where T is total time, t is time for one passage of the entire information through the storage, and n the number of digits, or as Seward (Ref. 140) has noted, approximately T = NA[logr R] where N is the number of items being sorted, A the access time to read or write items in the storage, the range of the key is from 0 to R, and r is the base or radix used in representing the key. Sorting by Merging. This technique is that recommended by Goldstine and von Neumann for internal sorting. Sorting by merging consists in taking two or more ordered groups of items and merging them into one ordered group (usually called a string). Figure 18 shows an example of such a merging process. Goldstine and von Neumann (Ref. 19) have discussed merging in detail in the case where information is stored in the main storage. The flow diagram is shown in Fig. 19. In this case, an item Xi consists of a one-word Merged St . g rr Ordered String NO.~2-( ~ 3 1 3 ~ 7 Ordered String No.2 2 ______ 8 8~ 711 ~ 12 ~ ~~::===---= 14 21 11 ______ 13 14 -17 ~17~~ 22 21 25_______ 22 ~ ---------= 26~ ~~ - - -_________ 24 28 ~ 30. 26 -----28 32 31 ______ ~30~ ~31~35 32 35 FIG. 18. Example of sorting by merging. ~ ..j:Io. 00 o (i) =i » r() o ~ "C --i Yes The bOX-;..!w k ...:-X i71 ~WOUld consist of: m ;;:0 -0 ;;:0 o(j) :;::c » ~ ~ Z (j) Wl_U q i +1 and similarly for W k _ yi+ 1 and Zr _ W r FIG. 19. Merging two strings of m and n item<:: each of order p. PROGRAMMING AND CODING 2-149 key Xi followed by p other words (p is the order of the item). A string S will consist of n items, where n is the length of the string. A string would then contain n (p + 1) words. The flow diagram describes the merging of two strings S = (Xl, X2, .. " Xn) (of n items) and T = (yI, y2, .. " ym) (of m items) to produce an ordered string R = (ZI, Z2, Z3, .. " Zn+m) where each Zi is one of the previous X's or V's such that the keys Xi and yi are now arranged in increasing order. The string Xi would be given by Xi = (Xi, UI i, .. " U p i ), yi by yi = (yi, VI i, .. " vp i ), and Zi by Zi = (Zi, WI i, •• " wp i ). In the general case of merging two strings from two tapes into a third string on a third tape, there would need to be further storage boxes included in the flow diagram. Sorting of an arbitrarily ordered string of length N can now be accomplished by successive merging. This can be accomplished as follows: 1. Each pair of items in sequence is merged by considering each a string of length one to form a string of length two. 2. Each pair in sequence of strings of length 2v(v = 1, ... ) is merged, using the merging process described above, to yield a merged string of length 2,,+1. 3. When 2,,+1 ~ N and there is only one string, the process is complete. The fact that N is not exactly equal to 2" can be disregarded by considering the remaining r" = N - 2" elements as a separate string which mayor may not be merged at each stage of the process. An example of the merge-sort process is given for a general string of 35 items (here merely keys) in Fig. 20. A non ordered string of items {A 1, A 2, A 3, •• " AN}, each of order p, to be sorted may be manipulated by the flow diagram of Fig. 21. Here the merge routine of Fig. 19, with parameters m and n, is the heart of the process. There will be two indices involved, v, indicating the number of overall mergings that have been completed, and w, the number of mergings of strings of length 2" that have been completed for this value of v. To use the subroutine, the main program furnishes values m", and n"" which are used as m and n in the merge routine, and the addresses of Xl, yI, and ZI. The resulting merged sequence {Zk} is stored beginning at the address of Xl. (The manipulation of these addresses is not included in the merge routine, for the sake of simplicity, but it is an obvious extension of the flow diagram of Fig. 21.) For the worst possible case, when the keys are present in exactly the reverse order, the number of comparisons required for sorting n items, C (N), which may be considered a measure of the amount of effort needed to sort using this method, can be shown to be bounded from above: C(N) ~ N log2 N 2-150 Initial String 50 27 39 2 21 46 65 20 3 5 61 29 16 31 15 11 48 28' 4 44 49 17 62 55. 18 43 9 25 33 12 20 19 56 63 42 DIGIT AL COMPUTER PROGRAMMING Sequences Sequences Sequences Sequences Sequences of 2 of 8 of 16 of 32 of 42 2 2 27 } 20 50 3 3 21 39 5 4 } 50 27 11 5 39 15 9 21 } 20 46 21 ) 46 16 11 46 20 50 12 20 } 21 65 65 65 15 27 3 16 5 29 17 11 18 31 } 29 } 61 61 15 39 19 46 16 20 16 } 31 15 29 21 50 16 31 61 25 11 } 15 31 61 65 26 4 4 27 28 } 48 17 28 9 ) 44 12 28 29 41 } 48 44 17 31 48 18 33 17 } 17 } 49 49 19 49 39 55 25 55 43 55 } 62 62 26 62 44 28 9 46 18 } 43 12 33 48 ) 25 43 18 49 } 43 19 44 50 25 48 55 12 } 12 } 33 19 26 49 61 26 62 33 55 19 } 26 33 43 62 65 42 42 42 56 } 42 63 56 } 56 56 56 42} 63 63 63 63 2~) 3~ ~} 2~ 11] 2~ 2~ 1~ } } FIG. 20. } Sequences of 64- (or less) 2 3 4 5 9 11 12 15 16 17 18 19 20 21 25 26 27 28 29 31 33 39 42 43 44 46 48 49 50 55 56 61 62 63 65 An example of merge-sorting by pairs. (It can be easily shown where N = 2v, van integer, that: C(N) = N log2 N - N + 1 (N = 2v) and the bound can be 'extended by somewhat more complicated analysis.) For the most favorable case, when the items are already sorted by key, the number of comparisons can be made as low as C(N) ~ N. i ) ,mw-N - 2 nw-O v 1 + w m w- 2 V nw _N_(2 v+1 w +2 V ) Address(X 1) __ Address(A 2V +1 W + 1) Address(yl) __ Address(A2V+lW+2V+l) Address(Zl) _ Address(A 2V +1 W+1) mw~2V "'0 ;;C o(j) » ;;C nw- 2v ~ ~ Z (j) Merging routine of Fig. 19 v+l » z o o oo Z (j) FIG. 21. Sorting a sequence of N items using merging. t;--> U1 2-152 DIGITAL COMPUTER PROGRAMMING This requires that the merging routine of Fig. 21 be reprogrammed in a more complicated fashion to take advantage of the possibility of an original string that is almost ordered. For sorting external to a high-speed storage, where the number of comparisons is no longer dominant, but rather the amount of input and output, a similar process can be used, but here the strings resulting at the various stages of the merging process would be divided approximately equally on two (or more) output tapes. Upon passage through the entire data, the tape units being used for the output strings could now be rewound, and their information considered the input for a new merging process. If one item is read in successively (rom each tape, keys compared, and the item with the smaller key sent to one of several output tapes, successively larger strings can be built up as with the internal storage procedure. If there are 2b tape units available, the number of passages through the entire information will be 10gb N, where b units are used for input and b for output. The detailed procedure in this case depends upon how many items can be held in the internal storage at one time. In general, it is best to perform internal sorts whenever possible and in as large a string as possible. If it is possible to hold only two items in the internal storage at once, it may pay to modify the von Neumann-Goldstine procedure to allow merging to continue to produce a string as long as a sequence of keys is monotone. This string would be rea,d out on one of the output tapes. The next string, of arbitrary length depending on the sequence of keys read in, would be put out on another tape, etc. Upon exhaustion of the input information, the role of input and output tapes would be reversed. Other Internal Sorting Methods Seward (Ref. 140) has collected statistics for various other methods of internal sorting: Finding the SIllallest. Find the smallest of a group N, and store it. Find the smallest of the group N - 1, and store it. Continue the process until the group is exhausted. The number of comparisons is C (N) = N (N - 1) . 2 Interchanging Pairs. Compare, and interchange if necessary, the pairs beginning with an odd-numbered item (1,3,5, ... , N). Repeat for the pairs beginning with even-numbered items. Alternate this process until no interchanges occur. The number of comparisons in the worst . possible case is C(N) = N2/2. PROGRAMMING AND CODING 2-153 Sorting by Sifting. Compare items in sequence, moving them forward in the list until an item with smaller key is reached. When the last item is "sifted" the items are ordered. The number of comparisons in the worst case is C(N) = N(N - 1) . 2 Partial Sorting. Items 1 and 2, 2 and 3, .. " j and j + 1, .. " are compared, interchanging where necessary. The process is repeated until no interchanges occur. Again C(N) = N(N - 1) . 2 It is apparent from a more detailed study that the bounds on number of comparisons given by digital sorting or sorting by merging with C(N) =N log2 N are by far the best. Except in rare cases where much information is known about the a priori sequence of the items, only these two methods should be used. A Practical Exam pIe As a practical example of a process in use with magnetic tape units on an actual equipment, the following procedure taken from a description of the use of magnetic tapes on the IBM 650 is given. (See Ref. 148.) A tape record on this machine (block stored on or read from tape) ranges from 1 to 60 words. It is assumed first that one item may be stored in a record. In this procedure: 1. The original sequence of items (here written on two tapes) is processed and written on two output tapes. 2. The two output tapes, considered as new input tapes, are merged to write two other output tapes. The process is repeated until completion. At each step, two new records are compared with each other and with the last output record written out. If either one of these is in proper sequence with the last output record written out, it is written out on that tape. If not, a new sequence is started on the second tape using the item with the smallest key. The process is shown by an example, and in the flow diagram of Fig. 22. When no new sequence has been set up during a merging pass, W = 0, and the entire process is complete. In the case below, strings are separated by vertical lines. ~ U1 ~ o (j) =i » .-() o ~ ---:0 C -I m ;::c ";::co (j) ;::c » ~ ~ Z (j) FIG. 22. Two-tape merge sorting process. PROGRAMMING AND CODING 2-155 EXAMPLE. First Pass Initial Tape 1 23, 13, 11, 18, 29, 4, 5, 30, 15, 10 Initial Tape 2 16, 6, 24, 2, 17, 22, 33, 9, 7, 28 Output Tape 3 16, 23 12, 11, 17, 18, 22, 29, 33 17, 15, 28 Output Tape 4 6, 13, 24 I 4, 5, 9, 30 110 These tapes now become input tapes 1 and 2. Second Pass Output Tape 3 6, 13, 16, 23, 24 I 7, 10, 15, 28 Output Tape 4 2,4, 5, 9, 11, 17, 18, 22, 29, 30, 33 These tapes now become input tapes 1 and 2. I Third Pass Output Tape 3 2, 4, 5, 6, 9, 11, 13, 16, 17, 18, 22, 23, 24, 29, 30, 33 Output Tape 4 7, 10, 15, 28 These tapes now become input tapes 1 and 2. Fourth Pass Output Tape 3 ~4,~6,7,~ 10, 11, 13, 15, 1~ 17, 18,22,23,24,28, 29,30,33 Output Tape 4 8. AUTOMATIC PROGRAMMING: DEVELOPMENT AND OBJECTIVES Defini tion. A utomatic programming can be defined as all those methods which attempt to shift the burden of formulation and programming of problems for automatic computers onto the machines themselves. AutoInatic Coding SysteIns. Bemer (Ref. 141) has collected a list of various automatic coding systems for computers which is reproduced in Table 23. This list shows that: 1. The amount. of effort put into automatic coding systems has been large. Note. Fig. 22 explanation. Given four tape units numbered 1, 2, 3, 4: Let m, m + 1 be the numbers of the input tape units, n, p be the numbers of the output tape units, i be the index on tape m, j be the index on tape m + 1, k be the index on tape n, l be the index on tape p. Let I m • i be the ith item on tape m, etc., k(A) be the key for item A, etc., be the number of items on tape m, io be the number of items on tape m + 1. io TABLE System Name Computer or Acronym AFAC IBM 704 CAGE FORC FORTRANa NYAP PACT IAa REG-SYMBOLIC SApa NYDPP KOMPILER3 ACOM IBM 701 BACAIC BAP DOUGLAS DUAL 607 FLOP JCS 13 KOMPILER 2 NAA ASSEMBLY PACT Ia QUEASY QUICK SHACO SO 2 SPEED CODING IBM 705-1, 2 AC01\1 AUTOCODERa ELI FAIR PRINT Ia SYMB. ASSEM. SOHIO FORTRAN IT AFAC 23. AUTOMATIC CODING SYSTEMS (REF. Developed by Allison G.M. General Electric Redstone Arsenal IBM IBM Pact Groupb Los Alamos United Aircraft Servo Bur. Corp. UCRL Livermore Allison G.M. Boeing Seattle Univ. of Calif., Berk. Douglas SM Los Alamos Los Alamos Lockheed Calif. Rand Corp. UCRL Livermore N. Am. Aviation Pact Groupb NOTS Inyokern Douglas ES Los Alamos IBM IBM Allison G. M. IBM Equitable Life Eastman Kodak IBM IBM Std. Oil of Ohio IBM-Guide Std. Oil of Ohio Allison G.M. Code C M.L. Assem. Inter. X R X X X X R X C A X X X X X X X X X X X ~ 141) Oper. Compo Date X Sept. 57 Nov. 55 X X June 57 X Jan. 57 Jan. 56 Jan. 57 X Nov. 55 Apr. 56 Sept. 57 X March 58 Dec. 54 July 55 X May 57 May 53 March 53 Sept. 53 March 53 Dec. 53 X Oct. 55 Indexing M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 S1 FI Pt M M M M M M M M M 1\1 S S S S S S2 U1 Symb. 2 2 2 2 2 1 1 2 2 2 0 1 2 1 1 1 1 1 1 Algeb. X X X 0 (j) ::::j X X X X X X R C R C R X X X X X A C C X X X X X X X X X X X X X X June 55 Jan. 55 June 53 Apr. 53 Apr. 53 Apr. 53 Apr. 57 Dec. 56 May 57 Jan. 57 Oct. 56 Jan. 56 May 56 Nov. 58 ;;C X -u ;;C (j) S ;;C » s: s: 0 1 1 1 Z (j) 0 S S1 SI S2 S2 S2 0 0 S S S 82 () C -i m S2 S1 S1 » rs: -u X R ~ S S S S S S S 2 0 0 2 1 1 2 1 2 X X X Computer IBM 705-3 IBM 702 IBM 709 IBM 650~ Sperry Rand n03A System Name or Acronym FORTRAN AUTOCODER Developed by IBM-Guide IBM AUTOCODER ASSEMBLY SCRIPTa IBM IBM G. E. Hanford R FORTRAN SCAT IBM IBM-Share A R X ADES II BACAIC BALITAC BELL L1 a BELL L2, L3 DRUCO I EASE II ELI ESCAPE FLAIR FOR TRANSIT a ITa MITILAC OMNICODE RELATIVE SIR SOAP I SOAP IIa SPEED CODING SPUR FORTRAN (650T) COMPILER Ia FAP MISHAP RAWOOP-SNAP TRANS-USE USEa IT UNICODE Naval Ord. Lab Boeing Seattle 1\U.T. Bell Tel. Labs Bell Tel. Labs IBM Allison G.M. Equitable Life Curtiss-Wright Lockheed MSD, Ga. IBM-Carnegie Tech. Carnegie Tech.. M.LT. G. E. Hanford Allison G.M. IBM IBM IBM Redstone Arsenal Boeing Wichita IBM Boeing Seattle Lockheed MSD Lockheed MSD Ramo~Wooldridge Holloman A.F.B. Ramo-Wooldridge Carn. Tech.-R-W R Rand St. Paul C X X Code A A M.L. Assem. Inter. X X X X X X X X X X C X X Oper. Date Compo X Dec. 58 X Sept. 58 X X X X X X X X X S X X Jan. 59 Nov. 58 1\12 M2 1\1 1\1 2 2 X X X X Feb. 56 Aug. 56 Jan. 56 Aug. 55 Sept. 55 Sept. 54 Sept. 56 May 57 Jan. 57 Feb. 55 Oct. 57 Feb. 57 July 55 Dec. 56 Aug. 55 May 56 Nov. 55 Nov. 56 Sept. 55 Aug. 56 Jan. 59 1\1ay 57 Oct. 56 Oct. 56 June 57 Nov. 56 Feb. 57 Dec. 57 Jan. 59 S2 S S 1 1 2 0 0 0 2 0 2 0 X X X X X X X X R X X X X X A X X R C R X X X X Algeb. X Sl X X Symb. 2 2 X X X A C Fl Pt M S Apr. 55 June 54 July 55 X X Indexing 1\:12 X X X X X X X S Sl Sl Sl S2 Sl Sl Sl S2 S2 Sl Sl Sl S S S S S S S S S S S S Sl 1\11 M1 1\11 M1 S2 S2 1\1 S S 1\1 S S S 1\1 S 1\1 S 1\1 ~ ~ Z (j) X 1 2 2 1 X »Z C () 0 2 C Z 2 1 0 1 1 2 2 1 2 0 » 2 0 1 2 :;;c (j) :;;c 2 M Sl 1\1 1\12 ""C (j) X X t;-l X X U'1 '-I TABLE Computer Sperry Rand 1103 Hperry Rand Univac I and II 23. AUTOMATIC CODING SYSTE~IS System Name or Acronym CHIP FLIP/SPUR RAWOOP 8NAP Developed by Wright A.D.C. Convair San Diego Ramo-Wooldridge Ramo-Wooldridge AO Al A2 A3, ARITHMATICa AT3, MATHMATICa BO, FLOWMATICa BIOR GP MJS (UNIVAC I) NYU,OMNIFAX RELCODE 8HORT CODE X-I IT MATRIX MATH Remington Rand Remington Rand Remington Rand Remington Rand Remington Rand Remington Rand Remington Rand Remington Rand UCRL Livermore New York Univ. Remington Rand Remington Rand Remington Rand Case Institute Franklin Inst. M.L. X X R R C C A R Assem. X X X X X X X X X X Inter. X X X X X X X X X X X X Oper. Compo Date Feb. 56 June 55 March 55 Aug. 55 X X X X X X X X X C C X X X X X X May 52 Jan. 53 Aug. 53 Apr. 56 June 56 Dec. 56 Apr. 55 Jan. 57 June 56 Feb. 54 Apr. 56 Feb. 51 Jan. 56 X X Indexing 81 SI 81 81 FI Pt S 8 81 81 81 SI SI S2 8 8 8 S S S S2 S 8 S 8 82 S 8ymb. 0 0 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 Algeb. U1 00 ~ (j) =i X >- r- () 0 ~ ." C -I m ;;:c X Jan. 58 ." ;;:c 0 (j) Sperry Rand File Compo ABC R Rand St. Paul Sperry Rand Larc K5 SAIL UCRL Livermore UCRL Livermore Burroughs Datatron 201. 205 DATACODEI DUMBO ITa SAC UGLIAC STAR Burroughs Babcock and Wilcox Purdue Univ. Electrodata United Gas Corp. Dow Chemical Electrodata UDECIN-I UDECOM-3 Burroughs Burroughs Burroughs UDEC III Code ~ (RET''. 141) (Continued) ;;:c June 58 X X X A X M2 M2 M M Aug. 57 MSI S July 57 Aug. 56 Dec. 56 S2 S M S MIS M S S X X X X X X X X X X 57 57 2 2 X >~ ~ Z (j) 1 1 0 X System Name or Acronym ALGEBRAIC COMPREHENSIVE SUMMER SESSION Developed by M.LT. M.LT. M.LT. EASIAC MAGIC Univ. of Michigan Univ. of Michigan Datamatic Ferranti Illiac Johnniac Norc ABC I TRANSCODE DEC INPUT EASY FOX NORC COMPILER Datamatic Corp. Univ. of Toronto Univ. of Illinois Rand Corp. Naval Ord. Lab Seac BASE 00 UN IV. CODE Natl. Bur. Stds. Moore School Computer M.LT. Whirlwind Midac a b Code R M.L. Assem. Inter. Compo Oper. Date Nov. 52 June 53 Indexing S2 Sl Sl FI Pt S S S Aug. 54 Jan. 54 SI Sl S S l\I1 S S S M X X X X X X -.r ~"X X X X X R R R X X X X X X X Aug. 54 Sept. 52 Oct. 55 Aug. 55 X Apr. 55 SI M2 Symb. 1 1 1 Algeb. X X :;:c o(j) :;:c Indicates present heavy usage. Pact group contains Douglas SM, ES, LB, Lockhee:l, NOTS, N. Am., Rand. Chart Symbols Code -c R = Recommended for this computer, sometimes only for heavy usage. C = Common language for more than one computer. A = System is both recommended and has common language. M = Actual Index registers or B boxes in machine hardware. Indexing S = Index registers simulated in synthetic language of system. 1 = Limited form of indexing, either stopped undirectionally or by one word only, or having certain registers applicable to only certain variables, or not compound (by combination of contents of registers). 2 = General form, any variable may be indexed by anyone or combination of registers which may be freely incremented or decremented by any amount. Floating point M = Inherent in machine hardware. S = Simulated in language. o = None. Symbolism 1 = Limited, either regional, relative or exactly computable. 2 = Fully descriptive English word or symbol combination which is descriptive of the variable or the assigned storage. A single continuous algebraic formula statement may be made. Processor has mechanisms for applying associative and commutative laws to Algebraic form operative program. M.L. = Machine language. = Assemblers. Assem. = Interpreters. Inter. = Compilers. Compl. » ~ ~ Z (j) » z o () o o z (j) ~ 0'1 -.0 2-160 DIGITAL COMPUTER PROGRAMMING 2. Most early efforts were in the direction of interpreters, but most efforts now are in the design of compiler-translators. 3. Many systems have been replaced by newer, more efficient languages. DevelopIDen t Some of the most important steps in development of automatic programming are listed below. The ideas listed here were proposed by many persons; among those particularly to be mentioned are M. V. Wilkes, D. J. Wheeler, and S. Gill of Cambridge University, C. W. Adams of M.LT., Grace Hopper of Remington Rand, and N. Rochester of IBM. 1. Understandable Language. Translation, MneIDonic Codes, COIDpiling, and Interpretation. The ambiguity of instructions and numbers inside machines makes instructions appear only as numerical sequences. (a) Programs were devised which automatically translated both numbers and instructions from an external decimal language (more useful to human beings) into an internal binary language (more useful to the machine). The important step was the recognition of the principl~ of a dual language system and a programmed translation between the two languages, with the computer to perform the translation. (b) Along with the numerical translations came the use of "mnemonic" -easy to remember-instruction operations, such as standard algebraic notations, or abbreviations of the corresponding English words. These are now known as "input translation programs." The general idea of translation leads to two basic techniques: pretranslation or compiling, and running translation or interpretation. (c) Compiling requires a large amount of medium access storage (generally magnetic tape). The compiling process usually occurs only once. (d) Interpretation is the only feasible translation method in machines with small amounts of storage; this process is less efficient since the same translation may occur over and over again during performance of a problem. The first attempts to improve the procedures of coding in machine language resulted in a set of input orders that changed alphanumerical sequences representing instructions on teletype tape over into internal binary machine notation. (Ref. 108.) Today, most of the automatic programming schemes make use of the pretranslation idea. 2. Easy-to-Correct and Easy-to-Use Input Languages. SYIDbolic Addresses and Control Instructions. The use of external languages that were easily understandable, such as mnemonic codes, does not prevent arithmetic, logical, or clerical programming mistakes. The translation process, developed to handle the requirement of an understandable input language, can also be applied to the use of so-called sym- PROGRAMMING AND CODING 2-1.61 bolic or floating addresses, which have no permanent absolute machine internal counterparts. With these addresses, which are almost completely equivalent to an algebraic notation, assignment of addresses can be made completely automatic by the computers themselves. The use of such automatic address assignment, it turns out, requires two "passes" or traverses through the input information in order (1) to find out what algebraic addresses are present and what their internal equivalent absolute addresses are, and (2) to assign these absolute addresses wherever the floating addresses occur (Ref. 21). (D. J. Wheeler has shown, for the EDSAC II, that two passes are not always necessary.) The assignment of absolute addresses cannot take place until all algebraic addresses are known. The existence of these two passes through information immediately presents opportunities to perform all sorts of other transformations on the input information. From this grew the concept of floating or symbolic address (Ref. 106). A similar system was developed shortly thereafter for the I;BM 701 (Ref. 87), using a Dewey decimal type of symbolic addressing system. In order to control the processes of correction, reassignment, and deletion, and to handle the process of translation, a new kind of instruction is required. So-called control combinations, which tell the translation program, rather than the computer hardware, what is to be done, . give another dimension of latitude of expression between the programmer and machine. These new "tag words" allow the instruction process on input to expand indefinitely. 3. Elhnination of Repetitious Coding. Subroutines, AsseInbly Prograllls, and Synthetic Instructions. To eliminate duplication of effort that occurs when similar problems are repeated often, routines were developed which performed standard operations. Such routines could be called on by any programmer without the necessity of being rewritten from the beginning. To make the most of such routines, complete generality was required. The floating addresses developed for correction purposes helped provide this feature; similar so-called preset and program parameters were devised to make such routines flexible. Such assembly programs alleviated much of the effort in making corrections to instructions by insertion or deletion. Because of the "floating" nature of the symbolic addresses which were retranslated at each new machine input, insertions and deletions caused no further requirements for changing other instruction addresses. With the advent of secondary storage in the form of magnetic drums and magnetic tape, the need for two inputs of the program punched tape or cards was eliminated; the two passes could be made completely inside the machine. The combination of these standard subroutines (see Subroutines below), as they came to be called, with the input translation (compiling) techniques 2-162 DIGITAL COMPUTER PROGRAMMING brought forth the concept of automatic assembly of programs. Here code words called pseudo instructions or synthetic instructions are used to call in and store precoded subroutines in a main program. Such open subroutines, without automatic entry and exit, worked best with compiling techniques; closed subroutines, which act in the same unitized manner as an ordinary instruction, fitted most easily into the interpretive schemes. Extension of assembly programs to the use of pseudo instructions that replaced one line of coding external to the machine by more than one inside, allowed an increase in the number and variety of instructions available to the programmer. Such efforts probably reached their peak in the PACT system (Ref. 6) developed for the IBM 701 by a group of Los Angeles users of that equipment. This system included automatic insertion of scaling instructions for fixed-point computations as well as a long list of pseudo instructions .. A more recent example of such an assembly is the Share Assembly Program (SAP), and the X-I assembly system for Univac (Ref. 100). Details of SAP are given in Sect. 9. 4. Easy Mistake Discovery. Utility Programs. Relatively straightforward methods of correcting mistakes did not speed up program checkout as much as would be expected, since before programming mistakes can be corrected, they must be found. Unless complete retranslation of stored information is made available to a programmer, he is forced to know and use both external and internal languages, which nullifies some of the advantages discussed under 1 above. Such retranslation adds to the complexity of the translation procedure, as well as causing possible ambiguities because of many-to-one input translations. Nevertheless, such retranslation can contribute to aiding the discovery of human programming mistakes. However, there are many difficulties attendant with a retranslation to symbolic language in mistake diagnosis. One of these difficulties is that a complete directory or dictionary must be retained in the machine and consulted. Often, retranslation becomes difficult because a machine cell is not uniquely identifiable with a symbolic address. These difficulties have led, in many cases, to performing diagnosis in machine language. Unfortunately, this often leads the programmer to another difficulty: making corrections in machine language. Diagnostic procedures fall into two categories: static or dynamic. Static procedures give results only at specific points during solution of a problem, usually only at the beginning, end, or both. "Sieved" or "changed-word post-mortems," or storage printouts, have proved a welcome use of the principle of machine screening of unnecessary information. Dynamic mistake diagnosis, on the other hand, has often suffered from the fact that it has of necessity been interpretive and, hence, machinetime consuming, or else that it has put out information in an unretranslated PROGRAMMING AND CODING 2-16.3 form. A new concept in dynamic procedures, which give results as the problem is being performed, combines built-in automatic switching with programmed retranslation to speed up this process and make it competitive in time. This is discussed in Sect. 10 under Utility Programs. 5. Prevention of Mistal{cs bcforc They Occur. Gcncrators. The widespread use of precoded subroutines, which had been checked thoroughly for both arithmetic, logical, and clerical mistakes, is an example of a preventative technique. Instead of storing complete programs, however, a more efficient method appears to store programs called generators that can generate large classes of programs. If a correct algorithm can be developed by which a computer can generate a general class of small problems, mistake-free codes can be produced directly. Similarly, automatic assembly and automatic subroutine call-in techniques, if correct themselves, will generate mistake-free programs. 6. Unification of Techniqucs. Combined Systems. Systems using portions of the techniques listed above have been developed (Ref. 8). Certain of the categories are directly opposed. Hence, the useful combinations are employed with the objective of a self-sufficient method of machine operation that requires a minimum of human intervention. 7. Universal Computer Language. The progress through the steps listed above leads, of necessity, toward some sort of standardization of the basic input language of all computers, as it looks to the users, before the computer matches the internal language to the external human language. Present day lack of compatibility between algorithms or programs developed on one computer and another is causing as much undue duplication of effort in space as occurred in time before the advent of subroutines. Universal languages, more or less standardized, exist for certain types of problems, for example, those that can be expressed entirely algebraically. 9. AUTOMATIC PROGRAMMING: ASSEMBLY PROGRAMS Structure and Objectives Basically an assembly program accommodates programs written in machine language. However, it allows the programs to be written with certain flexibilities and conveniences not available in pure computer language. The assembly program usually provides for the following: 1. Specification of all numerical constants in convenient decimal form. (Provision is usually made, however, to allow the writing of binary numbers in appropriate cases.) 2. The use of symbolic addresses, addresses with mnemonic content. 3. The use of mnemonic two- or three-letter pairs to describe machine instructions. 2-164 DIGITAL COMPUTER PROGRAMMING 4. The use of free addresses for instructions to allow the arbitrary naming of an instruction without stating its location in the storage. 5. The automatic assembly of precoded programs (subroutines) into the program, often by the use of pseudo instructions. Two kinds of assembly programs are possible: 1. One-pass assemblers, where the computer, in translation, makes one pass through the data to perform the required translation. 2. Two-pass assemblers, where the computer, in translation, first makes a pass through the data to discover all symbolic addresses and to determine subroutines to be used. The symbolic addresses are assigned machine addresses, and the subroutines are included in the second pass. If symbolic addresses are used, and they are in almost every assembly program, a directory must precede the data''in' the case of a one-pass compiler. This directory is simply a list of symbolic addresses with corresponding machine addresses; the directory tells the assembly program how to assign the machine addresses. The directory is developed during the first pass through the data, through the technique involving the use of a location counter (see Assembly Procedure, below). The difference between an assembly program and a compiler, discussed in following sections, is tenuous. A compiler is considered to allow more complex operations. It usually expands a convenient problem-oriented language (such as algebraic formulas) into machine language. However, the difficulty in terminology arises when the assembly program allows many powerful pseudo operations which result in appropriate subroutines included into the program. The compiler, in its truest sense, usually makes no provision for machine instructions, or at lease deemphasizes them, while the assembly program, as the name implies, assembles pieces of machine instruction programming. Two assemblers are prominent; the USE Compiler (Ref. 152) prepared for the Univac Scientific Exchange (USE) for the Univac 1103A by The Ramo-Wooldridge Corporation; and SAP, Share Assembly Program, prepared for the Share Cooperative Programming Group for the IBM 704 by the United Aircraft Corporation. Both these compilers are of the twopass type, as are nearly all modern assembly programs. An assembly program of the one-pass variety was RAWOOP (Ramo-Wooldridge One-Pass) assembler (Ref. 8). The SAP program is described in some detail below. Assmubly Procedure The procedure of assembly is in two parts: 1. Examination of the program to be assembled in order to define each symbol used in writing the program. A location counter L is used to specify the absolute location of each word (number or instruction) in the program. L is set initially to an integer common to all programs, or in exceptional PROGRAMMING AND CODING 2-165 cases, supplied to the assembly program by the program being assembled. Thereafter, each new instruction input increases the contents of L by one. Simultaneously a table or directory is constructed. Each directory entry gives an equivalence relationship between a symbolic address S and the corresponding absolute machine address Ls assigned by the counter at the time of input. Entries in the table may also be made by means of certain pseudo operations. The order of the absolute instructions produced by the assembly program is governed only by the order in which information is input. 2. During the second assembly pass, the value of the counter L is computed in the same manner as on the first pass. In addition, replacements are made for symbolic addresses by integers stored in the directory as a result of the first pass. Share AsseInbly PrograIn (SAP) This assembly program was written for the IBM 704 computer (Ref. 143). Instructions for this system are written with addresses expressed as combinations of symbols and decimal integers. A typical IBM 704 instruction has operation, address, and a tag and decrement to be used with that machine's index registers. In addition to instructions, data in decimal, octal (the IBM 704 is a binary machine internally), or Hollerith alphanumeric code may be read from punched cards. Previously coded library routines may be conveniently inserted into a program whenever desired. A number of pseudo operations which help carry out the assembly process are as follows: 1. Origin specification (ORG). The location counter L is set to the value of the expression (previously defined symbol) in the address portion of the instruction. (This allows gaps in the sequence of input assignment at any stage.) 2. Equality (EQU). The symbol appearing to the left of the operation code is assigned the integer value given by the previously defined expression in the address portion of the instruction. (This allows programmer assignment of pre-set parameters.) 3. SynonYIn (SYN). The symbol appearing to the left of the operation code is assigned the integer value given by the previously defined expression in the address portion of the instruction. (This allows programmer assignment of blocks of storage.) 4. DeciInal data (DEC). The decimal data following are to be converted to binary and assigned to consecutive locations L, L + 1, .. '. Successive words of data on a card are separated by commas. Depending on whether or not each number contains an exponent or not, it will be translated into a floating point, or scaled fixed point number, or fixed point integer. 2-166 DIGITAL COMPUTER PROGRAMMING 5. Octal data (OCT). The octal data following are to be converted to binary integer form, and assigned to consecutive storage locations, L, L + 1,···. 6. Hollerith data (BCD). The 10 six-character words of Hollerith (binary-coded-decimal) information are read and assigned to locations L, L + 1,···. 7. Block started by sYlllbol (BSS). The block of storage from L to L + N - 1, where N is the value of the expression following the operation, is reserved, and any symbol preceding the operation is assigned the value L. 8. Block ended by sYlllbol (BES). Similar to BSS, except any symbol preceding this operation is assigned the value L + N. 9. Repeat (REP). Two expressions, separated by a command, following this operation, define integers M and N such that the block of instructions or data preceding the REP operation in locations L, L + 1, ... , L + M - 1 is repeated N times, stored in locations L + M, L + M + 1, ... , L + (MN) - 1. 10. Library search (LIB). The library routine of k words, identified by the symbol preceding the operation, is obtained from a library tape and inserted in the program being assembled at locations L, L + 1, . . . , L + k - 1. Any symbols appearing in the library routine are entered in the directory and properly defined. 11. Heading (HED). If two or more programs use the same symbolic addresses, they may be combined with this heading pseudo instruction which prefixes each symbol used in the following program by the single character given in the usual address position. Thus nonunique designations are made unique. 12. Define (DEF). This pseudo instruction assigns the value of the expression in the address position to any subsequent undefined symbols in successive integer order. 13. Relllarl{s (REM). Any Hollerith (alphanumeric) characters following this operation will be printed in the output listing of the assembled program. but not processed in any other way. 14. End of progralll (END). The value of the expression in the address position is punched as the transfer (starting) address in an IBM 704 binary transfer card, the last in the output deck. The input to this assembly program, on the IBM 704, is either a binarycoded-decimal (alphanumeric) magnetic tape, previously generated by peripheral card-to-magnetic-tape equipment, or punched cards. Output is on binary nonrelocatable (fixed address) or relocatable punched cards (in machine storage) along with a printed copy of the entire program with or without library routines suppressed. Additions to an already assembled program can be made if the table of symbols (directory) punched out during assembly is available. Upon PROGRAMMING AND CODING 2-167 reloading this table, additional new parts may be assembled. Any change to the original program which does not require relocation of any part of the program or reassignment of any symbols, may be made by assembly of only those parts of the program requiring change. An Example of a SAP Program. A SAP program for evaluation of a quadratic form is given in Table 24. The first column (a) gives the octal machine location, the next four columns (b) (12 octal digits with sign) give the translation, the next column (c) the symbolic location, operation or pseudo-operation, and symbolic address, tag, and decrement. The last column (d) explains the instruction. The reader is referred to the instruction list for the IBM 704 for the meaning of the operation codes. (Sect. 6.) TABLE 24. A SAP PROGRAM FOR EVALUATION OF QUADRATIC FORM c b a 04000 04001 04002 04003 04004 04005 04006 04007 04010 04011 04012 04013 04014 04015 04016 04017 04020 -0 -0 0 1 -2 0 0 0 1 2 0 0 0 0 -3 0 1 53400 63400 50000 77777 00001 76500 26000 30000 77777 00001 60100 56000 26000 30000 77754 60100 00000 5 4 1 1 4 0 0 1 1 4 0 0 0 0 1 04046 04047 04050 04051 0 0 00000 00000 00000 00000 0 0 0 0 a 0 a 4 04000 04011 04020 04022 04004 04017 00043 04046 04022 04011 04005 04051 04050 04047 04051 04050 04001 00005 00052 04021 00000 00000 00000 00000 00001 00004 04000 00000 P4 P6 P3 PI ORG 2048 LXD PI, J + K SXD P2, K CLAA+ 1, J TXI P6, J, -1 TNX P5, K, 1 LRS 35 FMPX FAD A + 1, J TXI PI, J, -1 TIX P3, K, 1 STO S LDQZ FMPY FADS TXL OUT, J, - R/2 + 1 STO Z TXI P4, K EQU5 EQU N*N + 3*N + 2 BSS R/2 P5 P2 N R A X Y Z S EQU 1 J K EQU4 END P4 - 1 OUT d Initialize index registers Store K Obtain first element X X Form polynomial InX X Step coefficient Test reduced K Store partial sum Form polynomial In Y X X X X [Note that the a.;" am stored in the order ao o• a14, a04, a23, a13, a03, •• " aOO from location A on. 10. AUTOMATIC PROGRAMMING: SUBROUTINES. SUBROUTINE GENERATORS. UTILITY PROGRAMS. AND INTEGRATED SYSTEMS Subroutines are precoded, pretested, conventional coded programs, which can be used over and over again in many different programs and by many different machine users. Subroutines were first used with the Bell relay 2-168 DIGITAL COMPUTER PROGRAMMING computers (Ref. 96); their use with variable stored program machines was first expounded by Burks, Goldstine, and von Neumann (Ref. 19). The EDSAC group first experimented successfully with subroutines on a machine (Ref. 108). Synthetic Instructions. A synthetic or programmed instruction is a subroutine or precoded combination of real instructions that may be treated conventionally as an instruction. For example, some machines have builtin instructions for square rooting. Such instructions are real instructions; in other machines exactly the same operations can be performed only by a subroutine. Structure of Subroutines. In structure any subroutine is nothing more than a function of one or more variables. These variables, which are considered to be the parameters of the subroutine, may be numbers, addresses, or very infrequently, actual instructions. The variables for a subroutine can be either free or floating variables (see Sect. 4). A parameter to be used with a subroutine or any coded program is a variable of the program. A program parameter, as defined by Wilkes et al. (Refs. 108 and 109) is the machine counterpart of the floating variable. Such a parameter is thus a number calculated elsewhere in a program, whose value is not known until just before the performance of the subroutine, when it must be assigned. A preset parameter, on the pther hand, corresponds to a free variable, assigned at the beginning of a problem and remaining constant from one performance of the subroutine to the next. For example, if a subroutine is to be used to calculate a function to the same precision each time it is performed, the constant determining the precision of the result could be assigned at the beginning as a preset parameter. On the other hand, if the tolerance must be changed at each performance of the subroutine, it is actually a free variable, and must be inserted as a program parameter. Open Subroutines. An open subroutine is a combination of instructions which must be inserted directly into a larger program. For each successive operation of the subroutine another copy or set of instructions must therefore be stored. The open subroutine has been most thoroughly investigated by the programmers of the Univac staff, including Hopper and Ridgway (Ref. 2), in the larger framework of the compiler or "compiling routine." Its advantage is its simplicity of entrance and exit (control moves sequentially in succession into, through, and out of the subroutine), which eliminates the need for red tape operations. The chief disadvantage is that successive copies must be stored for successive operation of the subroutines, which require a large amount of storage. The success of the Univac compiler schemes came because of the availability of large amounts of magnetic tape storage that could be handled efficiently. A sample flow diagram for successive open subroutines is shown in Fig. 23. PROGRAMMING AND CODING Main program FIG. 23. Open subroutine Main program Open subroutine Main program I (Contd.) II (Contd.) 2-169 Open subroutine I (repeated) Main program (Contd.) Use of open subroutines interspersed with hand-coded program. Closed Subroutines. The closed subroutine eliminates the duplications of storage required for open subroutines. One closed subroutine can perform the same function of many copies of an open subroutine. A closed subroutine is not stored in its proper place in the linear operational sequence in storage, but occupies a storage position away from the main coded program which is to refer to it. Such a subroutine is entered by a change of control operation which sends control to the entrance (often the first) instruction of the subroutine. After completion of the operations required by the subroutine, it is then necessary for it to return control to the instruction following the change of control instruction which transferred control to it originally. If this process is done automatically, as it generally is, the subroutine is called a closed automatic subroutine. The flow diagram for such a subroutine used several times during a program is shown in Fig. 24. Automatic Exit from a Subroutine. The methods providing for automatic exit from a subroutine are in general two, depending on the absence or presence of a built-in instruction to aid the process. For an automatic return of control, the subroutine needs to know, as one of its floating variables, the setting of the control counter or instruction counter at the change of control instruction that originally transferred control. On the machines which have no special operation for this purpose, this contents of control must be considered a program parameter. The process of entering such parameters into a subroutine has been labeled preliminary preparation of the subroutine for use. Wheeler Method (Ref. 108). This standard method of preliminary preparation makes use of the following preparatory sequence of operations: 1. An instruction is stored in a standard location (usually in a machine with a single-address code, the accumulator). The instruction stored is that one which performed the storage. 2. Addition of an instruction considered a constant (usually containing three in the address portion) to the stored instructions so as to make the result a change of control instruction. ~ ....... o c Main program Main program (j) =i Main program 02 1 (Contd.) .. (END (Contd.) » r() o ~ "-tC m ;.0 {3 Closed subroutine ------ ,( 'Yi I Closed subroutine II 1'3 ) ~ Closed I subroutine ~"--1 t-I o· } II (Contd.) "o :;:0 (j) :;:0 FIG. 24. Use of closed subroutines in a program. (Here the main program calls on subroutine I, and also on subroutine II, which in turn calls on subroutine I.) » ~ ~ Z (j) PROGRAMMING AND CODING 2-171 3. Entry into the subroutine by a standard change of control instruction. This procedure usually leaves a change of control instruction containing as its address portion the proper return address for the subroutine. The first instruction of the subroutine must then be to store this instruction in the proper exit location of the subroutine. Deferred Preparation. This method can be used only when the instruction code for the computer contains an operation designed especially to accomplish this deferred preparation (Ref. 17). Two machines with such an instruction are the Whirlwind I (single-address) and the MIDAC (three-address). The Whirlwind I change of control instructions subprogram (sp) and conditional program (cp) automatically transfer the present location of control (contents of the control counter), increased by one, to a standard position, the machine's A register (Ref. 57). The first instruction of the subroutine must be a transfer address, ta n instruction (where n is a storage location), which stores the address given in the A register in the address position of storage location n, which is usually the exit change of control instruction. When this instruction is processed, control will transfer to the location following the original call-in instruction. On the MIDAC, one three-address instruction, file (fi), performs the deferred preparation (Ref. 25). This change of control operation transfers control to the subroutine entrance, at the same time storing the return address in the proper position in the exit instruction or in a previously agreed upon conventional location. Subroutine Specifications Manuals. How subroutines are used depends on the storage medium on which they are stored. Generally subroutines have been stored in two or more fashions at once. Usually a written copy of the subroutine is stored in a subroutine specifications manual compiled in a looseleaf notebook form. Each subroutine is usually explained thoroughly on a subroutine specification sheet which gives a thorough statement of its characteristics, including: 1. Preset and program parameters to be assigned. 2. Method of such assignment. 3. Length of subroutine. 4. Entry of subroutine. 5. Exit of subroutine. 6. Type (open or closed). 7. Time for execution expressed as a function of the parameters. 8. Precision of the results. 9. Description of the numerical process involved. A second sheet, containing the actual coded program for the subroutine, is also kept on file in the subroutine specifications manual. The programmer who desires to know the actual behavior of a subroutine may use this 2-1.72 DIGITAL COMPUTER PROGRAMMING manual as a reference. An example of a subroutine library is given in Table 25. Examples of typical storage specifications forms for the MIDAC and Univac 1103 computers are given in Tables 26 and 27. TABLE. 25. SUBROUTINE LIBRARY FOR THE MIDAC COMPUTER The following is a list of all the subroutines available for use on MIDAC. All subroutines are available on paper tape and seven have also been stored permanently on the drum. The specification sheets for the subroutines marked with an asterisk have been included under Tape Storage Subroutines and those marked "Drum" have been included under Drum Storage Subroutines. A. Printout 1. Printout subroutine: Binary to decimal (adjustable format), drum 2. Printout subroutine: Binary to decimal (fixed format) 3. Graphical output B. Number conversion 1. Fixed point number conversion: Binary to decimal (integers), drum 2. Fixed point number conversion: Decimal to binary 3. Standardized number conversion: Binary to decimal (approximate) 4. Standardized number conversion: Binary to decimal (exact) 5. Fixed point double precision conversion: Decimal to binary (fractions) 6. Floating point number conversion: Binary to decimal (approximate) C. Interpretive routines *1. Floating point interpretive routines *2. Interpretive routine for operations on complex numbers D. Logarithm and exponential routines 1. Natural logarithm, drum 2. Exponential (for fractional exponents only), drum *3. Exponential (for fractional and integral exponents) E. Square root 1. Square root (fixed point, single precision), drum *2. Square root (floating point numbers) F. Trigonometric routines 1. Sine 2. Cosine 3. Sine, cosine, drum 4. Arctangent (polynomial approximation) 5. Arctangent (Taylor's series), drum G. Random numbers *1. Normal random deviates H. Integration *1. Integration by Simpson's rule 1. Matrix routines 1. Transpose of a square matrix *2. Transpose of a rectangular matrix 3. Matrix multiplication for square matrix *4. Matrix multiplication for rectangular matrices 5. Jacobi diagonalization J. Linear systems 1. Seidel code *2. Jordan elimination TABLE 26. Title No. of consecutive registers required No. of instructions and constants Parameter (see description) Results Method of entry No. of modified instructions Error halts Description MIDAC SUBROUTINE SI'ECIFICA'l'ION SHEET Normal Random Deviates HI (exclusive of registers 510 and 511) Tape Classification Machine Code 14D20 m2 Closed Relative Address 19 Location 510 Di 510 511 Di+l Ni Standard Range 0< Di < 244 0< Di+l Ni ~ G < 244 Scaled 2- 44 2- 44 2- 4 2 None ·When a correct value of Di (as explained below) is placed in register 510, the result, Ni, is a pseudo random number from a normal distribution with mean 0 and a standard deviation of 1. The routine takes Ri.o = Ri.;· 5 17 (low order 44 bits). To obtain Ni the high order 14 bits of the (j = 1,' •. , 12) are extracted, shifted, added together and the result subtracted from G. 2""<4. Do = 5 17 and the D's are defined by Di:l = Ri.;+12. A correct value of D must be placed in register 510 before each entry to the subroutine. If the contents of cell 510 are not changed between successive files to this subroutine a correct value of D will already be in that cell. Otherwise Di:l must be transferred and saved by the program and replaced in cell 510 the next time this subroutine is to be used. For programs requiring more than one period on the machine the last Di:l may be printed out and read in again at the beginning of the next run. However, since an error in a single bit or digit during readout, transcription, or read in might destroy the validity of all further runs, the following table of correct starting values of D is supplied. D IOOO " (n = 0, 1, 2, .•. ) are tabulated. Coded by Bauer and Perkins Checked by Date March 11, 1954 Hexadecimallislin{] n o 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 D IOOOn Obla2bc2ec5 Oe35a475d45 3237a9fcbc5 2156d657a45 9a6ec3868c5 Of800b89745 843948605c5 ac4a140b445 4a3d088a2c5 cd9dbfdd145 31a5d403fc5 Ibb3defee45 39cb7acdcc5 e1154170b45 ec5ecce79c5 da9ab732845 2d609a516c5 076d1044545 Ob21b30b3c5 79051ca6245 8e4237150c5 232bac57f45 89b5066edc5 abf98f59c45 6ab8e118ac5 7bd795ab945 08df47127c5 4d7e8f4d645 7609085c4c5 7 df74c3f345 ce66f4f61c5 2-174 DIGITAL COMPUTER PROGRAMMING TABLE 27. A UNIVAC 1103 SUBROUTINE SPECIFICATION SHEET Linear Matrix Equation Solver (AX = B) Specifications Identification tag: Type: Storage: Program entrance: Program exit: Alarm exit: Machine time: Mode of operation: Coded by: Code checked by: Machine checked by: Approved by: MTI-O Subroutine available on cards for assembly 217 instructions, addresses lOMOO (OOMOO) thru lOM51 (OM51) llMOO (OlMOO) thru llM37 (OlM37) 12MOO (02MOO) thru 12M63 (02M63) 13MOO (03MOO) thru 13M62 (03M62) 12 constants in program, addresses CINOO (CONOO) thru C1Nll (CONll) Temporary storage used, but not stored in program (see text). 229 words total program storage. The constant pool and temporary storage pool are used by this routine. Address lOM02 Address lOMOl The alarm exit is used by this routine. For all storage in ES time is approximately (in milliseconds) : .3n3 + .9n 2 m + 1.7n2 + .3m2 + 2.5nm + 1.8n + 1.6m + 2.7 (matrix size = n X m) For temporary storage (see text) on drum add approximately (in milliseconds): .04[n3 + 4n 2 m + 3n 2 + lOmn] + 51 Fixed point October 25, 1955 W. L. Frank November 15, 1955 W. L. Frank November 17, 1955 W. L. Frank November 30, 1955 W. F. Bauer Description This subroutine solves the linear matrix equation AX = B, where A is a nonsingular matrix of size n X nand B has the dimensions n X m. The solution, X = A-IB, is a matrix of size n X m. For the special case, when B is the identity matrix (I), one obtains the inverse of the matrix A. Otherwise, one can solve m sets of n simultaneous linear equations in n unknowns. Considerable flexibility is afforded the programmer with respect to the storage of the matrices A, B, and the answer X. The programmer must code two auxiliary routines as follows: (a) The first must provide successive rows of the augmented matrix [A, B]. (When B = I, one only need supply rows of A.) Each row, consisting of (n m) elements (or n elements when B = 1), must be set up in the fixed location immediately following the subroutine. This data must be scaled at 235 and be such, that for all elements aij of [A, B] + laii. 235 1 ~ 2 34 PROGRAMMING AND CODING ) 2-175 In the general case, for B ~ I, the rows of [A, B] may be scaled independently. However, in the case of inverting a matrix, it is necessary that the entire matrix be scaled by the same factor. (b) The second auxiliary must take the successive columns of X, found in the n cells immediately following the routine, and either store them internally or punch them out. Since the columns of X are independently calculated, each has an associated scale factor (scaled at 2°). This parameter positions the binary point (assuming the input matrices are scaled at 235 ) and is to be found in the (n + 1)st cell following the routine. If one hl:'..s inverted a matrix, and if the input rows were originally scaled by lOP (or 2P), then the output columns must be rescaled by lOP (or 2P). These auxiliary routines are automatically entered nand m times respectively by RJ instructions. The subroutine sets up these two RJ instructions from information gleaned from the parameters of the entry. This procedure allows storage of A, B, and X on ES, MD, magnetic tape or externally on cards or tape. It is also possible to generate the elements of successive rows when a functional relation exists. In addition to the 229 words of storage needed by the subroutine, it is necessary to provide 2(n + m) cells temporary storage immediately following the subroutine, and a block of [n(n + 1)/2] + nm cells, either all on ES or all on MD. Operating Instructions 1. Entrance to the subroutine is made by the following orders (B p p p + 1 +2 p+3 RJ 00 - OOMOl OOXOO uuuuu -- ~ I): 00M02 OOYOl vvvvv xxxxx where OOMOO is the location of the first word of the subroutine OOXOO is the location of the first word of the first auxiliary OOYOl is the location of the second word of the second auxiliary uuuuu = m (number of columns of B) vvvvv = n (number of rows of A) xxxxx = is the location of the first cell of the block of [n(n + 1)/2] cells all in ES or all in MD. 2. For the case when B = 3. The auxiliary routines entered with RJ and RJ + nm I, the p + 1 word must be 40 OOXOO OOYOl must be available and coded so that they can be OOXOO OOXOl OOYOO OOYOl respectively. This implies that the first and second words of both auxiliaries are exit and entrances respectively. Alarm Conditions Two alarm conditions can result: 1. A test is made to see that all elements, limits aij of the input rows are within the 2-176 DIGITAL COMPUTER PROGRAMMING If this is violated the alarm routine ALR-1 is entered and "alarm-xxxxx" is printed where xxxxx-3 is the address of the cell from which the subroutine was entered. 2. If a singular matrix is detected in the process of inversion, the alarm routine ALR-1 is entered and "singul-wwwww" is printed where wwwww-3 is the address of the cell from which the subroutine was entered. The routine can not, however, detect all singularities due to roundoff errors (see below). Starting again at xxxxx + 1 will cause the rest of the main program to be obeyed. Machine Time The machine time is as indicated on the first page when all operations are carried on in ES. This time is exclusive of the times taken by the auxiliaries. In case the block of [n(n + 1)/2] + nm words are stored on MD, the time must be increased, by the terms indicated. These times are approximate and will be a minimum in most cases. Sample computation times for matrices of order 27 and 99 were respectively 53 seconds and 30 minutes. Mathematical Method (Gauss elimination method) Elementary row operations are performed on the matrix A reducing it to an upper triangular matrix A. At the same time, these operations are performed on the matrix B giving a new matrix B. A partial floating point arithmetic is maintained, in that the rows of the augmented matrix [A, B] are always kept within the limits such that the largest element of the row (in absolute value) lies in the interval 234 > laii. 235 1 ~ 233 In addition, before eliminating, leading elements of two rows are compared and the element of largest magnitude becomes the pivotal point. N ext, successive columns of B are taken and the equation AX = B is solved by the back substitution procedure. Singularities in A are detected if a zero appears on the diagonal of A. Since roundoff errors can prevent this from occurring~ one must i.nspect the size of the scale factor if A is suspected of being singular. Ill-conditioned matrices will cause the scale factors to be very small. That is, the elements of X will be very large. Accuracy The accuracy in the result is a function of the condition of the matrix A. Seven to eight decimal place accuracy was obtained for matrices of order 10 to 16. A matrix of order 39 and 99 yielded 7 and 6 place accuracy respectively. The program for this problem on the Univac 1103 is given in Table 28. PROGRAMMING AND CODING TABLE 28. 0 0 0 0 0 0 0 0 0 0 10MOO 10MOl ·101.102 101.10 :3 101.104 101.105 101106 101107 101.106 101109 101110 101111 101112 101113 101114 101115 101116 101117 101116 101119 101120 101121 101122 101.123 101124 101.125 101.426 101127 10112e 101.129 101.430 10M31 101.432 101.433 10 1.4.3 4 101.435 10M 36 101.437 10M36 101139 101.440 101.441 101.442 101.143 101.444 10M45 101.446 101.447 101.446 101.149 101.450 10M51 l1MOO 111.101 111.102 111.10 3 111.104 llM05 111.106 llM07 l1M08 111.409 111.410 111.411 111.412 111.413 l1M14 111.415 111.416 111.417 37 I.IJ 54 TU TU AT TU AT TU TU TU TP TU TV AT SS TU LA TV TV TN TP TV TU AT TV TV TV 54 AT TV AT TV TV LA TU TU TU TU TP AT TV TP QS TP AT 54 TU RA TV TU TU TV TP TV 54 TU TP RJ TP TP TP SJ RS 75 TP TP RA TP TM UNIVAC 101100 lUIOO 12MOO 13MOO OOMOO 01MOO 02MOO 03MOO C1NOO CONOO 75701 00000 001.101 AOOOO AOOOO 00015 AOOOO 00015 AOOOO AOOOO AOOOO 00000 AOOOO AOOOO 00015 00016 AOOOO AOOOO AOOOO 00000 00016 00000 AOOOO AOOOO 02Ml0 AOOOO AOOOO A 00'0 0 CON06 CON06 AOOOO 021.110 AOOOO AOOOO AOOOO AOOOO AOOOO AOOOO AOOOO CON 01 CON06 AOOOO 00021 CON06 CON10 CON06 CON07 AOOOO 001.101 031.102 021.162 02"162 021.150 00013 00000 00000 AOOOO CON02 00000 CON07 00021 00000 01Ml1 CON11 10000 00013 CON04 011.414 CON 0 4 00000 1103 PROGRAM FOR LINEAR MATRIX EQUATION SOLVER 00100 00152 00190 0025 .. 00100 00152 00190 0035" 00317 00317 75702' B a 20017 00M11 011.109 AOOOO 001121 AOOOO 001.119 011.102 011.103 AOOOO 011.106 03M .. e AOOOO 00015 031146 00042 011.106 021.150 CON10 AOOOO CON06 CONoe AOOOO 011.113 011.114 031102 20071 AOOOO CON07 AOOOO CaNOl 021.401 00015 021.406 a 2M 5 a 021.411 021.117 AOOOO AOOOO 03M16 00000 011.112 AOOOO CON09 20017 01M25 CaNaS 031.147 011.117 021.107 011.101 00000 021.150 20017 021.101 CON11 00 00023 00000 AOOOO 011.116 00016 01M14 00000 00000 00016 AOOOO 00024 2-177 BRB AlARU AND NORMAL EXIT ENTRY P-1 P-2 P-3 SE T A u X I L SET r SET SET N M Y BRB SET T M-fl Z SET NOl BRB ORB M-N P-4 EXIT SET 0 FOR INTERCHANGE RESET TO F ADDRESS SET SF INDEX TO AUX 1 SET INDEX T EST FOR INVERSION BBR AUGMENT ROW of UN I T MATRIX CHE C K IF ALL ELEMENTS I N 1 .... 230 276 376 1 .. 4 230 276 376 .. 75 475 1 .. 4 1 .. 5 146 147 150 151 152 153 :154 155 156 157 160 161 162 163 164 165 166 167 170 171 172 173 174 175 176 177 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217. 220 221 222 223 224 225 226 227 230 231 232 233 234 235 236 237 240 241 242 243 244 245 246 247 250 251 00 00 00 00 00 00 00 00 00 00 37 45 54 15 15 35 15 35 15 15 15 11 15 16 35 34 15 54 16 16 13 11 16 15 35 16 16 16 54 35 16 35 16 16 54 15 15 15 15 11 35 16 11 53 11 35 54 15 21 16 15 15 16 11 16 54 15 11 37 11 11 11 46 23 75 U. 11 21 11 12 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 75701 00000 00145 20000 20000 00017 20000 00017 20000 20000 20000 00000 20000 20000 00017 00020 20000 20000 20000 00000 00020 00000 20000 20000 00310 20000 20000 20000 00505 00503 20000 00310 20000 20000 20000 20000 20000 20000 20000 00476 00503 20000 00025 00505 00507 00503 00504 20000 00145 00400 00374 00374 00360 00015 00000 00000 20000 00477 00000 00504 00025 00000 00243 00510 10000 00015 00501 00246 00501 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 75702 00000 20017 00157 00241 20000 00171 20000 00167 00232 00233 20000 00236 00456 20000 00017 00456 00052 00236 00360 00507 20000 00503 00505 20000 00245 00246 00400 20071 20000 00504 20000 00476 00277 00017 00304 00360 00311 00317 20000 20000 00416 10000 00244 20000 00506 20017 00261 00502 00455 00251 00305 00231 00000 00360 20017 00277 00510 00000 00027 10000 20000 00250 00020 00246 00000 00000 00020 20000 00030 2-178 TABLE DIGITAL COMPUTER PROGRAMMING 28. UNIVAC 1103 PROGRAM FOR LINEAR MATRIX EQUATION SOLVER (Continued) 11"'18 11"'19 11"'20 11"'21 111.422 11"'23 11"'24 11"'25 l1M26 l1M27 11"'28 11"'29 111.430 111.431 111.432 111.433 l1M34 l1M35 llM36 l1M37 121.400 12MOl 12M02 12M03 12M04 12 M0·5 12 M06' 12M07 12MOB 121.409 121.410 121.411 12M12 121.413 121.414 121.415 12M16 12M17 12M18 12M19 12M20 12M21 12M22 12M23 121.424 12M25 12M26 12M27 12M2B 12M29 12M30 12M31 12M32 12M33 121.134 121.135 121.136 121.137 12M36 121.139 121.140 121.141 12"'42 121.443 12M44 121.145 121.146 121.147 121.146 121.149 12M 50 121.151 121.452 12M53 12M54 12M55 12M56 12M 57 12M56 12M 59 TJ 00024 001A00 RA 01M17 00015 IJ 00023 011.116 RA CON10 00016 TP CON10 00026 OS 011.125 o 2M 0 0 OS 01M25 02M45 MJ 00000 011.128 RS 02MOO 00015 RS 02M45 00015 TU 02"'00 021.149 TV CONOl .021,1 30 TU 021.406 021.122 RA 02M07 00015 TU 021.407 02M12 TU 021.407 02M16 TU 02M07 02M21 TU 02M07 02M46 55 02M07 10025 TV 00000 02M26 75 30000 02M02 T P 00000 0 TV 03M26 02M21 TV 03M26 02M22 TP 00013 00024 TP 00013 00028 TM 00000 00029 TM 00000 AOOOO TJ 00029 02M16 ZJ 02Mll 02M13 00 00000 CON12 MP 00000 CON03 DV 00000 00024 RA 02M21 00016 TN eON 0 4 00027 MJ 00000 02M20 54 00000 20043 DV 00000 00024 RA 021.422 00016 TP 00013 00027 TN 00024 00024 TP 00000 TP 00000 54 00030 20043 MA 00031 000·24 MJ 00000 03M58 TP BOOOO 000 0 TM BOOOO .'0000 TJ 0002B 02M30 TP AOOOO 00028 TP 00031 00000 RA 02M21 00015 RA 02M22 00015 RA 02M30 00016 RA 021.126 00016 S T CON 01 AOOOO ZJ 021.121 02M 37 EJ 00026 021.147 TV 00013 02M46 55 00026 10001 QJ 02M44 021.141 QJ 021.147 02M42 RA 021.146 00016 Q J 021.145 02M42 TV 031.456 02M46 75 20000 02M47 LA 00000 TP 00027 AOOOO SJ 021.149 02M51 75 30000 02M51 TP 00000 TP 00021 QOOOO TP 02MOl AOOOO QA 02MOO 02MOl LA AOOOO 00057 TV AOOOO 02M50 IJ 00026 01M26 I J CON09 00M50 RS eON07 CON06 RS CON07 00016 ROW ARE SCALED CORRECTLY A D V A.N C E AND SET INDEX R·E SET T ADVANCE X BRB BBR TRANSMIT ITH ROW TO ES SET FOR INVERSION COMPARE LEAD ELEMENTS CONSTANT R INTER 0 IV CHANGE B NO ROW INTER CHANGE OK L I BRB N E A R L Y COMBINE R 0 W S R BRB E S C A L E BBR R 0 W BBR REPLACE ROW ON ORUM IF INTERCHANGE TOOK PLACE I TIMES N- 1 TI"'ES SE T MOl FOR I NO E X 252 253 254 255 eS6 257 260 261 262 263 264 265 266 267 270 271 .272 273 274 .275 276 277 300 301 302 303 304 305 306 307 310 311 312 313 314 315 316 317 320 321 322 323 324 325 326 327 330 331 332 333 334 335 336 337 340 341 342 343 344 345 346 347 350 351 352 353 354 355 356 357 360 361 362 363 364 365 366 367 370 371 42 21 41 21 11 53 53 45 23 23 15 16 15 21 15 15 15 15 55 16 75 11 16 16 11 1l. 12 12 42 47 00 71 73 2l. 13 45 54 73 21 11 13 11 11 54 72 45 11 12 42 11 11 21 21 21 21 36 47 43 16 55 44 44 21 44 16 75 ·54 11 46 75 11 11 11 52 54 16 41 41 23 23 00030 00251 00027 00507 00507 00261 00261 00000 00276 00353 00276 00476 00304 00305 00305 00305 00305 00305 00305 10000 30000 00000 00430 00430 00015 00015 00000 00000 00035 00311 000 00 00000 00000 00323 00501 00000 00000 00000 00324 00015 00030 00000 00000 00036 00037 00000 30000 30000 00034 20000 00037 00323 00324 00334 00330 00476 00323 00034 00015 00034 00352 00355 00354 00353 00466 20000 00000 00033 00357 30000 00000 00025 00277 00276 20000 20000 00032 00506 00504 00504 00144 00017 00250 00020 00032 00276 00353 00264 00017 00017 00357 00334 00324 00017 00312 00316 00323 00354 10025 00330 00300 00000 00323 00324 00030 00034 00035 20000 00316 00313 00511 00500 00030 00020 00033 00322 20043 00030 00020 00033 00030 00000 00000 20043 00030 00470 00000 20000 00334 00034 00000 00017 00017 00020 00020 2000 O· 0034·3 00355 00354 10001 00347 00350 00020 00350 00354 00355 00000 20000 0036l. 00361 00000 10000 20000 00277 00071 00360 00262 00226 00503 00020 2-179 PROGRAMMING AND CODING TABLE 28. UNIVAC 1103 PROGRAM FOR LINEAR MATRIX EQUATION SOI~VER (Continued) 12t.t60 12 ... 61 12t.t62 12t.t63 13"'00 13t.tOl 13t.t02 13t.t03 13t.t04 13t.t05 13"'06 13"'07 13"'0a 13"'09 13"'10 13"'11 1·3 t.l12 131.113 13"'14 13"'15 131.116 131.117 131.118 131.119 131.120 13M21 13M22 13M23 13M24 13M25 13M26 131.127 13M28 13M29 13M30 13M31 13M32 13M33 13M34 13M35 131.136 13M37 13M38 13M39 131.140 131.141 13M42 131.143 13M44 13M45 131.146 13M47 13M48 131.149 131.150 13M 51 13M52 13M53 131.154 13M55 13M56 13M57 13M58 13M59 13M60 131.161 13M62 C1NOO C1NOl C1N02 C1N03 C1N04 C1N05 C1N06 C1N07 C1Noa C1N09 C1Nl0 C1Nll 54 OS TP TV TP TU TP TP OS TP TP RA RA RS TU RS RS RP TP RA TN 54 TU TV TP TP "'J 54 CC lolA TP TP TM TJ MJ RS IJ TU TV TU TM TN TN TM TJ MJ 54 CC oV RA IJ TP RJ RA IJ MJ 11 MJ RS RP LA SJ TP SJ TN AT MJ 24 TP 00 37 20 00 00 00 00 00 00 00 CON06 1.0000 CO N 11 0310116 CON10 02t.tOl CON04 00021 00013 00013 00013 00028 03t.t13 03"'14 03"'14 03"'14 03"'14 30000 00000 031.116 00000 031.116 AOOOO 031.102 00027 00013 00000 00030 00031 00000 BOOOO AOOOO 00030 CON 04 00000 031.125 00032 03M25 031.125 031.125 00000 00030 00031 00030 00024 00000 00030 00031 00000 00027 00026 00029 00000 CON09 CON07 00000 CONOO 00000 00029 20000 CON13 03M52 CON04 03M60 CO NO 4 00032 00000 14061 BOOOO 00000 77777 00000 00000 0 0 0 a 20017 BRB 03t.t55 00029 03t.t14 00026 03t.t14 00000 QOOOO 03 ... 13 00028 00027 00015 00015 CONoa 03"'16 00016 00028 031.115 0 CON09 00 20017 ORB 031.125 031.125 00032 AOOOO 031.125 2004.3 BRB 00013 0 00030 00031 1.0000 03M31 03M54 00017 03M23 03M36 03M44 03M44 00024 00030 00031 AOOOO 03M42 031.154 20043 8RB 00013 00016 031.107 00000 0 00015 021.162 001.101 75756 OOMOO 00016 03M57 00071 03M17 00032 03M61 00032 AOOOO 021.126 33411 000 00 42 77777 000 0 3 SE T 'NOEl( SE T SCALE COUNTERS ZERO ADVANCE COUNT TO TRANSFER ROWS OF UPPER TRIANGULAR MATRIX TO ES SE T INDEX B A C K S U B RESCALE S T I T U T E RESCALE ADVANCE N01 TIM E S TO BRB B B B B AUX 2 /.1-1 T I /.I E S EX I T SET ALARM W0 R 0 RESCALE SINGUL C 0 N AND S TEMP T STORAGE A N T S 372 373 374 375 376 377 400 401 402 403 404 405 406 407 410 411 412 413 414 415 416 417 420 421 422 423 424 425 426 427 430 431 432 433 434 435 436 437 440 441 442 443 444 445 446 447 450 451 452 453 454 455 456 457 460 461 462 463 464 465 466 467 470 471 472 473 474 475 476 477 500 501 502 503 504 505 506 507 510 54 53 11 16 11 15 11 11 53 11 11 21 21 23 15 23 23 75 11 21 13 54 15 16 11 11 45 54 27 72 11 11 12 42 45 23 41 15 16 15 12 13 13 12 42 45 54 27 73 21 41 11 37 21 41 45 11 45 23 75 54 46 11 46 13 35 45 24 11 00 37 20 00 00 00 00 00 00 00 00503 20000 00510 00416 00507 00277 00501 00025 00015 00015 00015 00034 00413 00414 00414 00414 00414 30000 00000 00416 00000 00416 20000 00400 000'33 00015 00000 00036 00037 00000 30000 20000 00036 00501 00000 00427 00040 00427 00427 00427 00000 00036 00037 00036· 00030 00000 00036 00037 00000 00033 00032 00035 00000 00506 00504 00000 00475 00000 00035 20000 00512 00462 00501 00472 00501 00040 00000 14061 30000 00000 77777 00000 00000 00000 00000 00000 00000 00000 00000 20017 00465 00035 00414 00032 00414 00000 10000 00413 00034 00033 00017 00017 00505 00416 00020 00034 00415 00000 00506 00000 20017 00427 00427 00040 20000 00427 20043 00015 00000 00036 00037 20·000 00435 00464 00021 00425 00442 00452 00452 00030 00036 00037 20000 00450 00464 20043 00015 00000 00020 00405 00000 00000 00017 00374 00145 75756 00144 00020 00467 00107 00417 00040 00473 00040 20000 00330 33411. 00000 00042 77777 0000 a 00003 00000 00000 00000 00000 00000 00000 2-180 DIGITAL COMPUTER PROGRAMMING Methods of Call-In Momentary Call-In. In magnetic drum storage, a selection of subroutines could be stored permanently on the drum ready for use when desired. With most magnetic drum machines (the ERA 1103 and 1103A being the exceptions) the drum and high-speed storage are separate logical entities; in general instructions can be formed only in the highspeed storage. The Manchester computer group (Ref. 15) developed a method of use of these two storages which shall be defined here as momentary call-in. In this scheme subroutines are called into the primary storage from the secondary storage only whenever their actual operation is required. Thus, generally no more than one subroutine is ever stored in the high-speed storage at once, and enough space must be saved for subroutines to hold the largest one to be performed. On some machines this method provides a satisfactory match between drum to high-speed storage transfer speed and the operating speed of the computer's arithmetic element. Permanent Call-In. On other computers with a greater ratio between arithmetic operation and storage transfer speeds, a method of handling subroutines called permanent call-in seems desirable. In the permanent call-in scheme, as many subroutines as possible that are required in a program are stored in the high-speed storage at the beginning of the program, and performed when desired without any further need for call-in. The advantage of this method is: instead of a subroutine being called in each time it is to be performed, it is called in only once, thereby saving time, Here, as in many other computer applications, space is traded for time. The permanent call-in system requires storage space for all subroutines used, not just the longest one. Combined Methods. In some cases where there is not enough storage for all such subroutines, a compromise must be made in using both methods. The decision as to just what subroutines shall be called in only once and which ones for each performance is usually a matter of guess, since a priori a programmer cannot say just how many times a particular subroutine will be used during the course of a program, and therefore cannot solve the empirical time-storage relationship required for a best solution. Arithllletic Classification of Subroutines. The Whirlwind subroutine specifications manual originally listed seventeen different categories included in the Whirlwind Library of Subroutines (Ref. 57). The ED SAC library contains a smaller number of classifications (see Ref. 108). The tendency, with the advent of synthetic instructions, has been not to list subroutines by classifications but rather by the operation itself. The following types of subroutines appear to have been most useful in scientific and engineering calculations. PROGRAMMING AND CODING 2-181 1. Elementary Functions: (a) sine, (b) cosine, (c) sine and cosine, (d) tangent, (e) arc sine, (f) arc cosine, (g) arc tangent, (h) exponential, (i) logarithm, and (j) hyperbolic functions. 2. Roots: (a) square roots, (b) cube roots, (c) Nth roots, N arbitrary, and (d) solution of Nth degree algebraic equations. 3. Integrators for ordinary differential equations. 4. Functional summation methods (Gauss's, etc.). 5. Matrix manipulations (including some simultaneous equation solutions). 6. Interpolation routines. Red Tape Subroutines. In addition to the calculational subroutines listed here, there are numerous other red tape data handling routines which are usually stored and filed by various computer organizations along with such computational subroutines. The trend is to classify these red tape routines with the utility programs (see Utility Programs in this section); in many cases a complete integration of non calculational subroutines into master automatic organizational 'schemes is made. NUlllerical Methods (See Vol. 1, Chap. 14.) Most of the subroutines listed above have as their purpose the determination of some sort of approximation in a finite number of steps to an algebraic or transcendental function, with a resulting error that is to be kept small. The machine operations to be used are not the actual operations, but in general certain pseudo operation approximations to them. Whether codes for subroutines should be written to fit in the least storage space in a machine, to operate in as short a time as possible, or to minimize some complicated function of these two variables, will vary from machine to machine. No constituted theory or procedure for any particular method of approximation in terms of the standard machine operations on any computer has 'been established. For this reason, most of the numerical methods used with subroutines have been ones similar to those used previous to the advent of the high-speed computer. However, methods of overall approximation, such as those making use of the Tchebysheff polynomials, have begun to replace the Taylor-McLaurin series "approximations in a neighborhood," which often have very slow ratio of convergence. Similar deviations exist between the standard hand calculational techniques and those used with machine subroutines. The need for workable approximations will open up entire new fields in analysis and numerical methods. (See Vol. 1, Chap. 14.) 2-182 DIGITAL COMPUTER PROGRAMMING Subroutine Generators As Rutishauser first noted (Ref. 89), a stretched program eliminating all red tape operations or instructions will run much faster on a computer than does the corresponding inductive, loop-controlled program. However, it may also occupy much more storage space. A general program, prepared to accept all possible variables as program parameters, will run more slowly because of the time spent on the red tape modification of instructions to agree with the parameters. In this case, however, a program written specifically for inverting a matrix of order 10, although faster than a general nth order routine, may also occupy more space than a general program for inversion of matrices of degree n. Judicious combination of the techniques of stretching or linearizing program loops, plus constructing programs for specific values of key parameters, may produce subroutines that minimize storage, performance time, or some combination of both. Subroutine generators are computer programs that do this automatically, taking in as input the parameters of the problem as it is to be performed. The concept of the subroutine generator is apparently first due to Hopper (Ref. 49), and her co-workers. EXAMPLE 1. Suppose a particular problem required a sine subroutine with a precision of approximation € over a given range (for example, -1 < x < 1). A sine subroutine generator would take this given value of €, determine the coefficients of the Tchebysheff approximation needed to provide this precision, and then punch out the most efficient program for calculating a polynomial of that degree. EXAMPLE 2. Suppose that a large quantity of numbers were to be printed out with n numbers per line, m lines between spaces, each number to have d digits before the decimal point. The numbers m, n, and p would be fed as parameters to a subroutine print generator which would then produce a printing subroutine tailor-made to perform printout in this format as efficiently as possible. EXAMPLE 3. In analysis of propagation of error in a computational process, bounds may be determined in terms of certain maxima of derivatives of the functions involved. As shown by Kahrimanian (Ref. 150), formal differentiation may be performed on a computer. A simple recursive procedure for differentiation may be used more efficiently using techniques discussed by Kantorovich (Ref. 60). A differentiation generator could be used to proceed through a machine (or more likely, an algebraic language) program, constructing the corresponding derivatives of the functions involved, and combining the whole in a rational error analysis program that could be run immediately following the actual computation. PROGRAMMING AND CODING 2-183 Utili ty Programs Similar to a subroutine, but not generally used in the same fashion, the utility program provides testing, program debugging, and general auxiliary aid to the computer programmer. Utility programs are mainly of the following types: (1) storage printouts, (2) selective (changed-word) postmortem programs, (3) tracing programs, (4) input programs, (5) assembly programs, (6) storage transfer programs, (7) interpretive programs, and (8) compiler-translators. Storage printouts may be used as standard subroutines, controlled by the programmer, or as programs controlled by the computer operator in case of unexpected program behavior. Such printouts generally provide optional formats ("octal words, decimal fixed point numbers, assembly language instructions, decimal floating point numbers," might be one sequence of options for a binary machine). Under programmer or operator control any selected portion of high-speed storage could be printed out in anyone of these formats. Selective post-mortems (called in only after a program is dead) allow only those portions (instructions and numbers) of storage that are different from the original program previously read in to be printed out. Thus a programmer need study only that portion of the program that has changed since original input. Thus the changed-word post-mortem compares the contents of storage after a problem has been performed, with input information stored on an external medium, such as punched paper tape or cards, or else with a copy of the previous input stored on a secondary storage, such as magnetic drum or magnetic tape. Tracing programs are devices for following the course of a program during its performance. Their mechanism is described in detail under Interpretive Programs (see Sect. 14). Such programs usually allow detailed printouts of location, instruction, one or more operands, and result for each instruction performed. If desired, only instructions with certain selected operations, in certain selected regions of the storage, or with certain selected addresses may have this tracing information output; all else will be bypassed. Tracing of closed subroutines may also be eliminated if desired. Input programs often, dependent on the machine, provide simple translation from decimal number input to internal binary, from standard numerical notation to internal coded floating point, or from external mnemonic instructions to internal machine language. Assembly Programs. When such routines are combined into a program-controlled whole, it is usually called an assembly or translation program (see Sect. 11). Control of each process in turn on input translation makes 2-184 DIGITAL COMPUTER PROGRAMMING use of so-called control combinations, which are special instructions describing to the translator the information to be translated (see Ref. 108). More recently, many translators have determined information type from context, thus limiting the need for many control combinations. (See Sect. 9 for a description of the Share Assembly Program.) Storage transfer pro graInS are usually coded to move information back and forth from a main storage to secondary storage, and may be considered subroutines. However, they are also often used under control of an operator in a semiautomatic fashion. They usually contain automatic input and output stoi~ge-summing routines, which allow checking of all transfers, and may also contain rollback features by which the contents of any "volatile" main storage may be stored on a more permanent secondary storage so that a program may be restarted at the last rollback point in case of any sort of machine failure. Such a procedure is described by Brown et ale (Ref. 18). Some programs provide a complete magnetic tape titling and checking procedure to prevent incorrect mounting of reels. Interpretive prograInS usually provide methods for calculating with types of arithmetic not built into machine hardware (such as floating point, comp~x numbers, and matrix-vector arithmetic) using machine-like instructions. Their mechanism is described in more detail in Sect. 14. Such programs generally are provided with input and output instructions, the former in machine language and the latter in the interpreter language, so that machine language and interpreter language portions of a program may be interconnected at will. COInpiler-translators are often not considered utility programs, but since they perform the same general function, they may well be considered so. These programs generally translate from an external (usually algebraic) nonmachine-oriented language into machine language, assign storage, call in and orient subroutines, and usually provide an assembly language program as translated output. Their mechanism is described in Sect. 11. They may also store programs automatically in secondary storage to be called in later. Integrated SysteIns Interconnection of some or all these different utility programs into an organized, programmer-controlled, semiautomatic or automatic whole is usually called an integrated system. The first such systems, described by Adams and Laning (Ref. 1), and Brown and Carr (Ref. 17), were apparently the MIT CSSR (Comprehensive'System of Service Routines) and the MAGIC (Michigan Automatic' General Integrated Computation) systems. These provided either operator control through typing in English code words through an external typewriter: "translate," "com- PROGRAMMING AND CODING 2-185 pute," "trace," "post-mortem," etc., or similar code words placed on the program tape or punched cards. Such syste~s have spread to include almost all the classes of utility programs listed above, and have been extended more and more to provide completely automatic, nonstop running of a problem (the General MotorsNorth American System for the IBM 704), or complete program storage inside a machine (the Corbie system of the National Bureau of Standards on the same type of machine). Bauer (Ref. 8) has described a program allowing manual operator as well as program control for the Univac 1103. Swift (Ref. 97) has proposed certain machine hardware changes including interlocks and timers that would aid in preventing programming errors from causing major catastrophes in these new automatic systems. Among the present or proposed automatic features of these integrated systems, are the following: 1. Complete time-keeping, machine time billing"and bookkeeping for machine operation. 2. Storage of programs during check out and production. 3. Scheduling of program priorities. 4. Thorough checking of input programs or data to catch logical or transcription errors. 5. Automatic recovery procedures after all recognized programming errors (machine overflow, division by zero, improper operations, etc.). 6. Automatic recovery procedures after all recognized machine malfunctions (storage, arithmetic, or input-output failure). 7. Keeping track of previous errors, types of operations used, etc., so as to improve future performance. Incorporation of these processes would allow continuous machine operation without programmer, operator, or engineer intervention, save at long intervals for program or hardware maintenance. Recent proposals, still in the proposal stage, have called for complete computer buffering to and from a large number of programmer input-output stations, each containing a typewriter. Programmers could each independently communicate at their leisure with the computer, which could process several programs in the checking-out stage at the same time that main ,production problems would also be in operation. A machine interrupt feature, now available in a simplified form on several commercially available computers, would allow high-speed performance of the production problems except at widely spaced'intervals when programmers' requests would be answered. Such a system awaits more programming effort and built-in hardware at the present time. ' The final goal of such a process is a completely automatic file system, containing all'information acquired by the programming system during 2-186 DIGITAL COMPUTER PROGRAMMING operation. Development of fil~-searching and correlation procedures, provided with inductive artificial' intelligence processes, might allow computer generation of programs on the basis of past processes that had proved successful. II. AUTOMATIC PROGRAMMING: LAN,GUAGES. COMPILERS. AND TRANSLATORS Three basic elements are involved in the solution of a problem with a computer: (1) The language of the problem, (2) preparation of the problem in terms of building blocks, and (3) the recursive use of these building blocks. The recursive use of building blocks is covered in Sect. 15. An automatic computer program for performing a translation from one machine language to another is called a translator. A program which can call in, connect into, and feed parameters into previously prepared subroutines, is a compiler. Translation is usually part of this step. Language The first experiments to use algebraic languages to describe problems of necessity depended on satisfactory symbolic and alphabetic input and were made in 1951-52. It was not until 1956 that development of a sequence of languages began, including Fortran (Formula Translator) for the IBM 704; IT (Internal Translator) for the Datatron 205, IBM 650, Univac Scientific 1103A, IBM 701, and Univac I; Math-Matic for the Univac I and II; Unicode for the Univac Scientific 1103A; as well as others for the IBM 709, Ferranti Mercury (United Kingdom), PERM (Western Germany), and Strela (Soviet Union). An Ad Hoc Committee on Common Algebraic Languages was set up in 1957 by the Association for Computing Machinery to propose standards for such languages. The activity of this committee was extended to joint meetings with the GAMM (German-Swiss Applied Mathematics Society) in 1958. The purpose of these activities has been to standardize definitions and symbology so as to set up a class of languages that will be easily translatable by machine from one to another, and also easily recognizable to the ordinary human user. Translators. Such languages form the input to a class of automatic computer programs called translators, which perform a translation from the algebraic language over into a second or target language. The latter may be either (1) an assembly language, such as SOAP, SAP, or MAGIC (see Sects. 7 and 9), or (2) a straight machine language, in pure decimal, binary (or in some cases such as the Univac I and II), alphanumeric. One-Pass and Two-Pass Systellls. Translation directly from an algebraic language into machine language is generally called a one-pass PROGRAMMING AND CODING 2-1.87 system. Translation from an algebraic language into an assembly language and then into machine language is generally called a two-pass system. The advantages of the two-pass system are: (a) it allows the programmer to see the results of the first translation stage in the assembly language, which he may add to, delete from, or change easily in any fashion he desires. This combination mates the abilities of automatic programming with hand-tailored programming in the most flexible fashion possible, and (b) it allows the programmer to use the usual techniques of program checkout such as tracing programs and post-mortems that have been developed for use with programs in the assembly language. The advantage of the one-pass system is that it eliminates the need for the user to know anything about a machine-oriented assembly language. If he can obtain a correctly tested program without the necessity for using the classical checkout tools of the hand programmer, he will have sped up the programming process considerably. This, however, is not always possible. The Fortran program for the IBM 704 is a one-pass translator, in that while it provides as output of its translation phase a listing in IBM 704 assembly language (SAP), the latter may not be used or altered by the programmer and is in many cases incomprehensible. The IT Translator. The IT (Internal Translator) program for the various machines on which it has been developed is generally available in both one-pass and two-pass versions. The Internal Translator, as first written by Perlis and Smith (Ref. 81), is described in Sect. 12. Preparation of Problems in Terms of Building Blocl{s Extensions to the Language. The second important element in the solution of any problem on a computer is the use of primary building blocks (subroutines), pieced together to form a program. In the IT language, such building blocks are called extensions, because they extend the range of the language beyond the simple algebraic operations originally defined. In the IT language, extensions are included by two techniques: 1. Extension Operands. These are basic subroutines which have one or more input parameters but only one numerical output variable. They may be inserted bodily in a statement like any other type of operand. Such extension operands are typified by the standard square root and trigonometric functions. 2. Extension Statements. These are basic algorithms or subroutines that perform much more complex transformations on larger masses of data, for which there may be many input parameters and many output results. Typical of this type of statement is an extension statement that performs an ordering of a string of numbers in storage. It might be described in 2-188 DIGITAL COMPUTER: PROGRAMMING terms of the name of the first variable and the number of variables to be ordered. Certainly such an algorithm is not a simple function-operand . such as the first type. The addition of the ability to handle such building blocks of already prepared programs makes the IT language translator into a true compiler. The IT language, as described in Sect. 12, does all this in terms of a notation again very similar to (but not precisely) that of ordinary mathematical notation. An example of an extension of the IT language is given in Sect. 12. Some computing machines, instead of using a compiler to tie into previously coded subroutines, actually have the subroutines wired into the computer, and have specific entry instructions set up which may be used on a machine language level to call in the subroutines automatically and perform them, just as with any other instruction. Kitov (Ref. 61) describes such a system with three-address instructions on the BESM and Strela computers of the Academy of Sciences, of the Soviet Union. The following subroutines are listed as being performed automatically as the result of one written three-address instruction: square root, sine, cosine, natural logarithm, exponential, conversion of n numbers from binary to decimal, conversion of n numbers from decimal to binary, and fixed point memory summation of n machine words. The method of the Academy of Sciences of the Soviet Union is powerful as long as such relatively simple functions are used, but use of a translation technique such as that of the IT language to provide automatic subroutine interconnection allows much more complex subroutines to be handled easily. The next step for the Academy of Sciences machines is to combine a translation procedure along with the built-in subroutine entry technique. Once hand coding is eliminated, the need for one-instruction subroutine entries is no longer so important. A Flexible Filing SystelD. One of the weaknesses of such translatorcompilers as IT and Fortran is the inability of the programmer to develop his own building blocks easily. As has been seen, it is entirely possible to write extensions or subroutines in machine or assembly language-the Runge-Kutta extension described in Sect. 12 is a case in point-but there is no way in the present versions of these languages to take portions of the algebraic language programs, define them as an extension operand or extension statement, and then be easily able to call on these newly defined pieces of coding by name, with automatic interconnection of entry, exit, and parameters. What is needed in the solution of scientific problems is an application of the data processing techniques of the automatic file system to the writing of programs. Several programs are at present being used, although none has made use of the simplified algebraic language structure that has been used for the translators such as that for the IT system. PROGRAMMING AND CODING 2-189 A programming system developed by the National Bureau of Standards, the Corbie system (Ref. 153), is just such a file system, basi9ally built to handle entire programs, not subroutines. In order to save input-output card reading time on an IBM 704 lacking peripheral tape-to-card and card-to-tape converters, Wegstein and others have developed a file system by which entire programs may be stored on magnetic tape inside the machine. Corrections may be inserted from outside via a small number of cards, changes made, and the programs tested, all without the necessity of giant input-output activity. This extends the policy of control by exception, basic to the heart of all automatic machine activity, to the process of program testing. Generalized Programming. Manipulation of entire programs is not enough, however, for the building block construction necessary for most efficient automatic and semiautomatic construction of complicated programming algorithms. Again, as with the Corbie system without a connection to an algebraic language, GP or Generalized Programming constructed by Holt and Turanski (Ref. 154) for the Univac I and II and later as GPX (Generalized Programming Extended) for the UnivacLARC, provides the building block procedure necessary for handling subroutines. With this programming system, any sequence of coding, regardless of its size, may be named, its entries and exits and input and output parameters added to lists, and the name and coding itself added to a magnetic tape file semiautomatically. Thus, many portions of the process performed by the subroutine writer for the Runge-Kutta-Gill IT subroutine in adding it to the library of subroutines for that system can be performed by the machine using the GP program. For GP, programming using a subroutine hierarchy system, with its many advantages of pretesting individual blocks before combining them, is apparently most natural for the user. The use of subroutines within subroutines is simple. The chief attributes of such a system may be listed as follows: 1. Natural coding in small blocks. 2. Possibility of automatic filing of any portion of a problem. 3. Possibility of automatic call-in and use of any portion of a previously developed portion of the same or different problem. 4. Ease of program testing because of the building block principle. 5. Possible conjunction of work of different persons easily. The major difficulty of the GP systems is their requirement of knowledge of a nonmnemonic, non rational code to describe to the compiler the filing. system activities listed above. GP is in the full sense of the word a "programmer's" compiler, whereas the language of IT (and the other languages analogous to it) is tailor-made for the novice. Future Trends. The merger of the two philosophies of algebraic language and simple command structure on the one hand, and generalized 2-190 DIGITAL COMPUTER PROGRAMMING filing systems on the other, seems to be the obvious trend. Already specifications for changes in such languages as IT and Fortran to allow some or all of the features of GP have been announced. A similar merger of GP with Univac algebraic languages may be underway. The next stage of the compiler-translator development is: (1) a machine-independent language of the IT algebraic type, allowing (2) definition of program sequences in the algebraic language as functions or more complex algorithms, combined with (3) a filing system for storing such building block pieces for automatic call-in by algebraic type function statements. This is not the limit of present day compiler-translator goals. The initial successes in the use of the IT language for more than one computer, followed by the standardization efforts of the ACM Ad Hoc Committee on a common algebraic language, indicate that the multimachine language is the target of today's automatic programming efforts. Such a language has been proposed for many different computers and data processors now in use for the United States Army. Such a language would allow definition of existing assembly or compiler languages as sublanguages of the overall language and would provide machine aided techniques for actually constructing the translating and compiling programs themselves. Perlis and Smith (Ref. 156) describe a "string language" for writing compiler programs and natural language as well as algebraic translators. Included as the core of an overall compiler system, this device would allow easy description of symbol-manipulation algorithms necessary for construction of new definitions in any. overall language. Other papers by Graham (Ref. 156) and Bemer (Ref. 11) described language translations between IT and Fortran and Fortran and IT. The Theory of Algorithms. The most thorough description of this symbol manipulation structure is given in a monograph by the Russian mathematician Markov (Ref. 67) now being translated into English. IIi this, Markov, from the point of view of a theoretical logician, describes a notation and develops a series of processes for complete manipulation of symbols. With some changes in symbology this language could be used directly as an input to compilers which are to perform symbol manipulation (such as compiler-producing compilers). The extension of such language application to such other indirect reasoning processes as theorem proving, natural language translation, and complex decision making is discussed in papers by Razumovski (Ref. 151), Ianov (Ref. 52), Kantorovich (Ref. 60), . and other Soviet mathematicians. The extent of actual Soviet computer programs now in operation is uncertain. In the United States, the most advanced work so far described has been done by Newell, Simon, and Shaw (Ref. 76), to be described in Sect. 15. Automatic Instruction Modification. The popularization of the B line or index register on the Ferranti Mark I and later the Datatron 205 PROGRAMMING AND CODING 2-191 and IBM 704 brought an increasing use of subroutines, even without the advantages of algebraic languages. But these automatic indexing devices did not solve the overall subroutine usage problem. The presence of only one index register on the first two named machines required a thorough complement of instructions for loading, unloading, and incrementing this special register, as can be seen by examination of the Datatron 205 code list (see Sect. 6). Even the three index registers of the IBM 704 prove insufficient in many problems, and much of the complexity of the Fortran compiler-translator program is caused by necessity for the planning by the compiler of the sequence of use of this limited number of index registers. More advanced computers such as the Univac-Larc, the IBM-STRETCH, and the Univac M-460 have 5 to 15 index registers. It remained for the "one-and-a-half address" instruction code, described in Kitov (Ref. 61), but detailed in full by Schecher (Ref. 91) in his design for the Munich Technische Hochschule PERM computer, to carry the idea of index registers to its logical conclusion. He proposed that every storage location inside a computer be made available as an index register, and that the ordinary computer instruction word be provided with a second "half" address along with various modification digits to allow various types of modification procedures to be described below. Most important to the Schecher design was an indirect addressing "digit" in each word to provide for recursive indexing if required. Types of Instruction Modification. In the use of subroutines and programming in general, four types of changes of instruction information are generally required: 1. Subroutine instruction orientation, so that a computer subroutine may be written with nonfixed addresses, yet located on call-in in an arbitrary location in the storage. (Subroutine orientation.) 2. At the time of subroutine execution, closed subroutines, upon transfer to them from the main computer program or a higher subroutine in a subroutine hierarchy assemblage, must have their exit instructions changed to give the proper return jump. (Return jump modification.) 3. During the performance of loops, addresses must be changed as new data are to be used. (Inductive modification.) 4. At the time of subroutine execution, the main program or higher subroutines must feed either (a) the parameters required or (b) the addresses of required parameters to subroutines lower in the hierarchy. (Indirect addressing.) The automation of types 2 and 3 is handled most rationally by index registers. For a return jump, the location of the present address of the subroutine entry instruction may be stored in an index register, and this later used to modify the return jump exit instruction in the subroutine. For subroutines within subroutines, one index register is not enough, or else 2-192 DIGITAL COMPUTER PROGRAMMING instructions must be made available to exchange the contents of the index registers with other locations, etc. For a complex subroutine hierarchy, if this switching process is to be avoided, the number of index registers required is equal to the level of penetration into the hierarchy. For induction changes in which an operation such as (i = 1, 0 •• 100) is to be performed for such a range of i, the index register is again a rational answer. However, if "loops within loops" are programmed (as occurs, for example, in the simplest case in matrix multiplication) then more than one index register is required, or else complete and efficient facilities are needed for exchanging the contents of the sole such device. Again, if there is to be a sequence of inductions in depth, as can occur in many recursive processes, the number of index registers must correspond to the furthest penetration of loops in the hierarchy. Type 1 changes, subroutine orientation, can be handled by several different inefficient processes, each of which requires tagging all subroutine instruction addresses to be modified, or else all those not to be modified. A B box can be used, as on the Datatron 205 and PERM, to store the initial subroutine address, or else some other idle register in the arithmetic unit. The Datatron and PERM facilities were designed to orient automatically subroutines stored on an external medium, in this case paper tape. Present Address Relative. Until 1958 when the Gamma 60 machine was announced, only two computers, the MIDAC and the FLAC (a sister computer to the MIDAC), provided automatic subroutine orientation from secondary storage (in this case a magnetic drum) (Ref. 25). In these computers subroutines are written with all addresses relative to the present instr,uction location, as opposed to the usual technique of coding subroutine addresses relative to the first location in the subroutine. The MIDAC and FLAC instruction systems allow direct performance of these "present address relative" instructions. This technique is equivalent to the index register technique (but requires one less counter in the computer, since only an instruction counter is required). A difficulty in the MIDAC-FLAC design is that only one register can modify an instruction; instructions modified by the present address cannot be modified by the index register, thus making loop operation in subroutines difficult. Present day techniques of subroutine orientation, therefore, may use a B box orientation process, provided enough index registers are available. Since most subroutines require the use of one or more loops for induction purposes, the most widely used technique apparently at present is to forego the use of any automatic indexing and to orient subroutines with standard instruction modification techniques using the arithmetic unit. PROGRAMMING AND CODING 2-193 Indirect Addressing. The indirect addressing technique, with its proposed recursive indexing and index addition, eliminates this requirement and others. Portions of the PERM scheme have been incorporated in the IBM 709, and the National Advisory Committee on Aeronautics (NACA) in Cleveland has modified its Univac 1103 for indirect addressing. Therefore, a complete discussion of instruction modification as planned with the PERM should be very useful in describing future trends. Schecher proposed that digits be included in the instruction address to signify changes of types 2,3, and 4. (With a decimal machine language one digit would provide 10 possible combinations.) In Fig. 25 at the top is the main program. After location 51G, the subroutine entry location, appear four hatched locations, which are the location of information about the program parameters for the subroutine. These can contain either (a) the parameters of the subroutine, or (b) their addresses, or in unusual cases (c) the addresses of their addresses. At the bottom of the figure is shown a subroutine with the following typical add instruction in location 834: add 002' +. This contains two signals, the prime, and the plus. At the time of subroutine entry, the address 51G is stored in an auxiliary location in the control unit. At the time of performance of the instruction in location 834, the prime in the instruction will cause this value to be added in automatically to the data address of that location giving the instruction add 518+. Main pr.... og;;;..r_am _ _ _-. 516 Program [517 parameters 518 519 520 ~~~"""""'~ ~~~~~ """,,~~u..u.:.L.o:.oI 828 ' - -_ _ _- - - I 8341 add 002' + Memory·contents FIG. 25. add 518 + Instruction in control unit after first change add 1050 Instruction in control unit after second change Simple indirect addreosing without "half-addresses." 2-194 DIGITAL COMPUTER PROGRAMMING The plus sign performs a second purpose. If it is present, the control unit will not take the contents of location 518 to the arithmetic unit for addition, but will instead substitute the address portion of location 518 into the address portion of the instruction. In the case of the figure, this would yield add 1050, and the instruction now would be performed in the usual fashion to supply the contents of location 1050 to the subroutine. If, however, the contents of location 518 should contain as its address portion 1050+ then the instruction would again be delayed, and the address portion of location 1050 used to replace the instruction address. Thus a recursive "address of an address of an address· .. " similar to the IT language subscripts on subscripts is available. The addition of a second or half-address to each instruction now makes possible multiple index modification. The "auxiliary register" of the original subroutine entry can now be any storage location designated by that instruction's half-address. The prime signal can now represent addition of the contents of an instruction's half-address location rather than the contents of a fixed location. Now if one wanted to bring XHi+k into a TABLE 29. INDIRECT ADDRESSING Location 000 Operation Data Address (516)a Half-Address 000 516 517 518 519 520 521 522 jrnp 828 000 i' j' 519 001 001 000 k' 1000 Continued Program 828 834 add 002'+ 000 840 ret 006' 000 a Parentheses indicate contents after performance of instruction 516 which stores the latter address in the data address portion of 000. PROGRAMMING AND CODING 2-195 subroutine, where Xo is stored in location 1000, one could proceed as in Table 29. The sequence of changes of instruction 834 in the control unit would be: add 002'+ 000 add 518+ 000 ., add ~ 519 add (i + j)' 520 add 521 (i+j+k)' add 521 (1000 + i + j + k) which would then bring the contents of location (1000 + i + j + k) into the accumulator for action by the subroutine. The exit entry from this subroutine would be as in location 840 which would return control to 006 + 516 = 522, the next location in the main program. The use of such indirect addressing procedure allows efficient machine control of recursive subroutine hierarchy structures. Instead of requiring actual transfer of data from one subroutine to the next below it in the hierarchy, as is described in the next section on subroutine hierarchy programming, the program now has only to pass the names (addresses) of variables along by using the indirect addressing scheme. The use of such built-in techniques will probably grow markedly as the need for recursive subroutine programming becomes more evident. Use of Subroutine Hierarchy Counters Suppose that now two special machine counters, telling how deep into a hierarchy of subroutines the path of control has penetrated, are added to the control unit of the half-address machine. These will be called the Permanent Subroutine Hierarchy Counter (PSHC) and the Temporary Subroutine Hierarchy Counter (TSHC). Signal for their use in modifying an address, as written here, will be the asterisk (*), for the PSHC and exclamation point (!) for the TSHC. At the occurrence of each jmp instruction to a subroutine lower in the overall hierarchy of subroutines, the contents of both counters will be increased by one. At the occurrence of each ret instruction back from a lower subroutine to a higher subroutine, the contents of both counters are decreased by one. The original value of their contents at the start of a program is zero. Thus, at any stage the value of PSHC will indicate the depth into the subroutine hierarchy that has been penetrated. Even if such a structure is recursive (a lower subroutine enters one higher above it in the hierarchy), the PSHC contents will indicate the number of levels, by whatever complex route, to the top or main program level. The TSHC, in any normal situation, will have the same value as the 2-196 DIGITAL COMPUTER PROGRAMMING PSHC. Howev~r, when a lower level subroutine is calling for an operand to be fed to it from a higher level, at each process of address substitution the TSHC will be decreased by one before the next cycle of address substitution or actual instruction operation begins. After an instruction is actually performed the computer resets TSHC to correspond to PSHC. The contents of the PSHC correspond to the index j in the flow diagram of Fig. 26. The computer is now able to perform automatically all the subroutine entry, exit, and parameter transfer manipulations given in Fig. 26. However, due to the automatic address modification and indirect address substitution, the programmer needs to follow only a very simple set of rules. As an example, suppose a main program (MP) is to refer to a subroutine (SRI), which in turn is to refer to a lower subroutine (SRIl), which is to refer to a third (SRIIl), which is to refer recursively to the original main program (see Table 30). Such a process will "loop" infinitely often unless some sort of stopping criterion is included. The tr neg (transfer control on negative accumulator) instruction in location 101 can be considered to serve such a purpose, since if the number being tested is negative, the return trip up the subroutine hierarchy chain will begin. As the path of control travels down through these subroutines, the main program is to feed a parameter po to SRI, SRI a parameter PI to SRIl and on to SRIll, SRIl a parameter P2 to the subroutine below SRnI (which turns out to be SRI, etc.). Suppose that the instruction counter in the machine is directly addressable at location 001. This means that the half-address of a primed instruction referring inside the same subroutine can use the instruction counter location 001 as its half-address and thus all such instructions can be completely independent of all absolute machine addresses. (This is the "present address relative" addressing system mentioned earlier.) Location 000 will contain zero. aj+l=f(aj,bj,cj) aj_l=aj bj+l=bj bj-F~·f(aj,bj ,Cj) +1 cj+l=Cj Cj-:l=Cj (j) ;;:a » aj_l=aj 3: 3: bj-l =g(aj ,bj ,Cj) aj+l=aj bj+l=bj Cj+l=Cj "o;;:a z +1 (j) » z aj+l=aj aj-l_aj+l o bj~l_bj () o o z bj+l=h(aj,bj ,Cj) Cj+l=Cj +1 (j) Cj-l=Cj FIG. 26. A subroutine recursion hierarchy allowing reentry. ~ -0 ..... 2-198 DIGITAL COMPUTER PROGRAMMING TABLE 30. Symbol arid Absolute Location MP = 50 PROGRAM USING SUBROUTINE HIERARCHY COUNTERS Regional Location 0 1 2 Oper- Data Halfation Address Address read 001 002' jmp SRr RET* storage for Parameter Po Explanation Po~ + C(rO) 002 r (PSHC) and TSHO IC 51 ~ 1000 C (PSHC) PI ~ 004 C(IC) = 104 C(001 0(1000 C(TSHC))) ~ ACC tr neg to 003 O(rO) = 105 100~ 3 0 1 SRI = 100 /2 stop read cIa 004' 001' 001 RET! I I I I \ ,, 3 + jmp RET' r (PSHC) SRU + + 001 + 1-> PSHC and TSHO 200 ~ 10, 103 ~ 1000 C(PSHO) \ 4 ~5 SRU = 200 + + tr neg 003' I I = 052 + 1-> PSHC storage for Parameter PI ret 002' RET* 0 1 read· cla 2 3 sto jmp 005' DOl' 001 RET* + 002 + C(1000 + O(PSHC)) = 002 + 051 = 053~ 10 P2~ 005 + C(IC) =205 0(001 + C(1000 + O(PSHC))) ~ ACO 'SRIlI RET' r(PSHC) + l->PSHC and TSHO 300 ~ 10, 203 ~ 1000 O(PSHO) Name of parameter PI + 4 5 6 SRUI'= 300 001'+ RET! storage for Parameter P2 ret RET* 002' 002 + C(1000 + C(PSHC)) = 002 103 = 105~ IC 0(001 + C (1000 + O(PSHC))) ~ ACC + 0 cla 001' RET* 1 2 sto cla 002' RET* C(002 C(1000 + C(PSHC))) ~ ACC 3 4 sto jmp SRI. RET* 5 6 ret 002'+ 003' RET! RET* C(PSHC) + l~PSHCand TSHC 100 ~ IC, 305 ~ 1000 + O(PSHC) Name of parameter P2 003 C(1000 + O(PSHC)) = 003 203 = 206~IC + + + PROGRAMMING AND CODING 2-199 The storage in region RET will be as follows during the course of operation: RET = 1000 000 0 051 1 103 2 203 3 304 4 One can now trace through the performance of those instructions of the above program that are pertinent to the demonstration of the techniques of indirect addressing, use of the half-address, and the PSHC and TSHC. Initially these latter two counters will contain 00 (see Table 31). TABLE 31. INSTRUCTIONS OF TABLE 30 PROGRAM INVOLVED IN INDIRECT ADDRESSING IC Before 50 51 100 101 102 103 200 201 202 203 300 301 302 303 304 Instruction read 002' 001 read 052 000 jrnp 100 1000* jrnp 100 1001 read 004' 001 read 104 000 add 001' 1000! add 001' 1001 add 052 000 jmp jrnp 200 200 1000* 1002 add add add 001' 001' 104 1000* 1002 000 jrnp jrnp add add add add add add 300 300 001' 001' 204 001' 001' 104 1000* 1003 1000* 1003 000 1000! 1002 000 add add add 002' 002' 205 1000* 1003 000 jrnp jrnp 100 100 1000* 1004 IC After 50 PSHC Before After 00 00 TSHC Before After 00 00 100 00 01 00 01 101 01 01 01 01 01 01 102 103 200 201 01 01 02 02 01 01 02 02 02 02 300 03 03 03 03 03 03 03 03 03 03 04 03 03 04 04 303 304 01 01 02 02 02 02 02 02 03 03 03 03 100 02 02 02 202 203 301 302 01 01 03 03 02 02 03 03 03 02 02 02 03 03 04 03 03 04 04 2-200 DIGITAL COMPUTER PROGRAMMING TABLE 3l. INSTRUCTIONS OF TABLE 30 PROGRAM INVOLVED IN INDIRECT ADDRESSING (Continued) 10 Before 100 101 102 105 306 206 105 053 Instruction 10 After PSHO Before After 04 04 101 add 001' 1000! add 001' 1004 add 305 add 002' 1000! add 002' 1003 add 205 tr neg 003 001 tr neg 105 001 105 (Suppose AOO is negative.) 002' 1000* ret ret 002' 1004 ret 306 306 000 ret 003' 1000* ret 003' 1003 ret 206 206 000 ret 002' 1000* ret 002' 1002 ret 105 105 000 ret 002' 1000* ret 002' 1001 ret 053 053 000 stop TSHO Before After 04 04 04 04 04 04 04 04 03 04 04 04 04 03 03 02 02 01 01 04 03 04 03 03 03 02 02 02 01 01 01 00 00 04 04 04 03 03 02 02 01 01 04 03 03 03 02 02 02 01 01 01 00 00 In this program one has transferred to anyone subroutine from only one sequence above in the hierarchy, but there could also be many entries from many different routines into a lower level sequence, and the process would work in the same fashion. Until more machines are built with this half-address feature and hierarchy storage counters, users will have to content themselves with compilertranslator processes or direct interpreters that will perform the same actions. 12. AUTOMATIC PROGRAMMING: THE IT TRANSLATOR. TRANSLATOR CONSTRUCTION The IT program (Internal Translator) was first written by Pedis and Smith (Ref. 81) for the IBM 650 and was later modified and enhanced at the University of Michigan Digital Computation Unit. The IT language, with its general translation techniques, was the first adopted over a wide range of computers representing a number of manufacturers. In this sense, it was one of the first universal programming languages. Because of its PROGRAMMING AND CODING preeminent position, the IT program is described in detail here. available in both the one-pass and two-pass versions (see Sect. 1.1). 2-20 I It is The IT Translator Two versions of this program are available. The input language in both cases is based on the symbols available on the Share standard (Fortran) IBM 026 Key Punch. The same symbols are used to print the programs on the IBM 407 printer. Standard symbols are used in every case possible, although the number of symbols available with input equipment to the IBM 650 is not enough to express algebraic manipulation satisfactorily. The command language for IT is machine independent in that it has not been adapted to any of the vagaries of any of the target language machines with which it is used. Programs are written in the form of statements. Each statement is a string of letters and algebraic symbols (limited by readability, input medium flexibility, and the power of the translator itself). In the IT translator for the IBM 650, this number varies from translator version to version, but the number of characters per statement is of the order of magnitude of 100. The output of the one-pass version of the translator is in straight machine language, ten decimal digits per word, output in general on punched cards, with information stored on the card in a standard five-word-per-card random load format that allows storage of anyone of the five words in an arbitrary position inside the computer storage. The output of the two-pass version of the translator is first to an assembly routine, SOAP (Symbolic Optimal Assembly Program) which is generally the standard assembly language for the IBM 650. The SOAP language is written in the form of one instruction per line, with mnemonic three-digit operation code and symbolic addresses for the IBM 650 one-plus-one address system. The latter uses two addresses, one to indicate the data to be operated, the other to indicate the next instruction to be used. As opposed to other languages such as Fortran used on larger computers, where a more powerful translator is available, the IT language for the IBM 650 uses three different classes of variables, I variables (fixed point tendigit integers) and Y and C variables (floating point (8, 2, 0) decimal numbers). Any variable may be subscripted by an integer or an integer variable (I variable) so that sUbscripting in depth (for example, ii7) is entirely possible, as well as computed subscripts, for example, iil+07 Xi a)fi2' Subscripts are obtained by direct concatenation, since they are not on the key punch, for example YIl, Y7. Rules for IT Language. A complete set of rules for the IT language, as adapted from the original specifications by Perlis and Smith (Ref. 81), are given here for completeness. The mechanics of key punching, inputoutput, card format, and computer operation are omitted. 2-202 DIGITAL COMPUTER PROGRAMMING 1. Characters of the Language. The language as described is to the IBM 650 with Fortran characters which admits the digits o through 9, the (Roman capital) letters A through Z, and the special =, . , *, I, and, (comma). Certain standard symbols characters (,) , are represented by alphabetical characters at particular portions of the language ~ranslation process because of printer limitations. Except when it occurs in an English word, each alphabetical character has one and only one meaning in this language. applicabl~ +, -, Punctuation Characters. Symbol ( ) Name Left parenthesis Right parenthesis Decimal point Substitution Relational equality Greater than Greater than or equal > ~ Representation (or L ) or R . or J = or Z U V W The following punctuation characters will be introduced as they arise: ,, , ,orK Comma Quotation marks Type Finish Extension identifier Q T F E Variable Characters. y I C Digit Characters. The integers 0 through 9 B In the sequel lower case letters, such as k, 1, m, and n, will be used to represent arbitrary positive integers. Operator Characters. Symbol Binary Operators + x I exp Representation Name Addition Subtraction Multiplication Division General exponentiation + orS - orM * or X lor D p 2-203 PROGRAMMING AND CODING Note. Y1 P Y2 means Y 1Y 2 Unary Opera tors I... ·1 A (- ... ) orLM ... R Absolute value Negative of (- ... ) 2. Admissible Variables. Problem (floating point) Variables. Yn Cn YIn Cln YIIn CIIn For example: Y3 C3 YI47 CIO YII21 CII7 These two classes of variables have the same logical significance in the language. They aid in the (external) differentiation between two classes of data or problem variables. The numerical value of any of these variables is always represented in floating point form. Problem (fixed point) Variables. In IIn IIIn For example: 18 1136 1II2 These variables take on integral values only and are used primarily as indices. Composite Variables. Y (oo.) I (oo ,) C (oo.) Y (II + 6) I (II3 X 19) C (1(11 + 2)) For example: The parenthesized quantities must be fixed point expressions (see 4. Admissible Operands). Matrix (floating point) Variables. YN C.. ,., ••• ) CN (.... , ... ) These variables are general elements of matrices (listed row-wise) whose components are YO, Y1, .. '; and CO, C1, .. " respectively. The parenthesized quantities, which must be fixed point expressions, specify the row and column location respectively of the matrix variable. The row dimensions of YN and CN, i.e., the number of columns in the matrices, must be specified by assigning them to I1 and 12, respectively. The row number and the column number always range from 0 to their respective dimensions less one. For example, a rectangular matrix may be assigned as YO Y3 Y6 Y9 Y1 Y4 Y7 Y10 Y2 Y5 Y8 Yll 2-204 DIGITAL COMPUTER PROGRAMMING Thus YN (0,0) refers to YO, and YN (1,2) refers to Y4, while II and 12 must be assigned the value 3 and 4, respectively. 3. AdIllissibl~ :Constants. Fixed Point Constants (Integers). nln2 ... nk k ~ 10 However 123. is not such a For example: ~opstant 1066; 10; 1292345566 since it contains a decimal point. Floating Point Constants. a. nln2 ... nt. ntH· .. nk k ~ 8 For example: 14.92; .11; 13. b. nln2··· nkBm k ~ 8 which means nln2 ... nk X 10m , where a. nln2 ... nk is either a fixed or a floating point constant, and b. m is either mlm2 or -mlm2, where mlm2 is a fixed point constant. Rule. If m is of the form -mlm2 then the entire constant must be enclosed in parentheses. For example. 14.92B3; (1066B-11); and (-727B-5) mean 14.92 X 103 ; 1066 X 10-11 ; and -727 X 10-3 ; respectively. Note. Floating point constants used within statements (see Admissible Statements) must be of the above form and not in standard floating point form. Thus 14.92 would be used as 14J92 but not as 1492000051. 4. AdIllissible Operands. The following rules apply: a. Any variable or constant is an operand. b. If vI and v2 are operands, then (vI ~ v2) is an operand, where ~ is an admissible operator character. c. Subroutines, themselves functions of one or more operands, are operands. They are represented as CinE, vI, v2, ... , vj" which means the subroutine whose identification number is n (nth extension) and which is a function of the variables vI, v2, ... , vj. Here n must be a fixed point constant less than 626. For example, if the sine subroutine were the subroutine number 21, then sin (Y1 + Y2) would be represented by 21 E, Y1 + Y2. The statement "1 E, "21 E, Y1 + Y2" " would represent the IOglO (sin (Y1 + Y2» if the subroutine number 1 were the log routine. d. If vI and v2 are operands, then vI ~ v2 is an expression, where ~ is an admissible operator char"acter. Owing to the method by which the compiler examines strings of symbols, some expressions will not be treated as operands. However, all operands are expressions. The norm of an expression is the number of symbols, exclusive of spaces, making up the expression. Although not necessary for correct interpretation, users are urged to parenthesize all statements fully to avoid mistakes. PROGRAMMING AND CODING 2-205 e. If an operand is a variable or a constant its arithmetic is that of the variable or constant. f. If any operand, with the exception of subroutines, is composite and at least one of its members is floating point, the entire operand is floating point. g. The arithmetic of subroutines is determined by their extension number, according to the following: n < 500 floating point n ~ 500 fixed point 5. Admissible Statements. Each statement is identified by a nonnegative integer k ~ 626. The execution sequence of a set of statements is not determined by this identifier, but rather by the physical ordering. A natural correspondence exists between the types of processes found in flow charts and the kinds of statements in the language. Statements may be considered as sentences-correctly formed strings in the characters of the language. A description of the various statement forms follows. Substitution Statement, The statement vl~v2, k: where vI is a variable, v2 is an expression, and k is the statement identifier (number), has the following effect: the value of vI is set equal to that of v2 in the arithmetic of v 1. For example, 7: YI2 ~ 11 + (13 X (Y3 - Y4» sets the value of YI2 equal to that of 11 + 13 X (Y3 - Y4) in statement 7. Unconditional Linkage Statement. Any of k: k:. k: Gn, GI··· In, G(·· .), where k is the statement number, have the following effect: the next statement is defined in the execution sequence as that one having its statement number equal to the value of n, or the value of I ... In, or the value of the parenthesized fixed point expression (operand), whichever the case may be. Relational (Conditional) Linkage Statement. Any of k: k: k: Gn GI· .. In G(:··) IF vI',), v2 DIGITAL COMPUTER PROGRAMMING 2-206 where vI is an operand, v2 an expression, and 'Y is one of the three relations = : > : ~, is interpreted as: if vI is in the relation 'Y to v2, the effect is that of the G portion of the statement; if not, the execution sequence is unaltered. Thus, G 13 4: IF (YI + Y2) ~ 9 transfers control to the statement having a number which is the value of 13 if YI + Y2 ~ 9; otherwise the sequence is unaltered. Removing the parentheses would make the statement inadmissible since YI would not then be an operand for relational statements. In these statements when the left operator is compound, it must be delimited by parentheses. Halt Statement. k: H. The effect is to suspend computer operation. Input Statement. k: READ. The effect is to initiate the input of one or more data cards. The format. is dependent on the particular structure of the input subroutine, which may differ from installation to installation. Reading ceases upon presentation of a terminating symbol (hole in a certain column, for example). Read statements can call in numbers, alphanumerical characters, or both. Output Statement (Type Statement). k: TvITv2Tv3Tv4Tv5. The effect is to punch a card, whose format is that of an input card, c~n taining the names and current values of vI, v2, .. " v5. Here the v's must be variables and from one to five may be listed in the statement. If a variable is composite, e.g., YI6, its current name is punched, e.g., if, at punching, the value of 16 is 4 then the value of Y 4 will be punched along with the name Y 4. The statement number is always punched on the card. Conditional output statements have the same form as output statements except that the statement number must be zero. They provide output conditional on the IBM 650 sign storage entry switch as follows. Storage entry switch set to minus (-) activates output; positive (+) setting causes output to be by-passed. Iteration Statement. k: j, vI, v2, v3, v4. Here j is an integer which must be positive; vI is a variable; v2 is an expression; v3 is an expression; and v4 is an expression which must not PROGRAMMING AND CODING 2-207 contain the operators X, D, or P. The norm of each v must not exceed five. (Here norm is defined as the number of characters.) The effect is to construct an iteration of the set of statements interposed between k and (including) j-called the scope of the iteration statement-on the variable vI as it varies from v2 to v4 in increments of v3. Thus, 15: 21: 19: 19, II, 13 + 4, 14, 15 Y5 f - Cl1 + 2 Yl1 f - Y 5 - 7 + 1. causes statements 21 and 19 to be executed sequentially for all values of II from 13 + 4 to 15 + 1 in steps of 14. That statement which follows an iteration statement must name a unique nonzero statement number. If v4 - v2 is not divisible by v3 the iteration stops before vI assumes a value greater than v4. If v3 is to be taken an actual decrement it must be of the form - v where v takes on only non-negative values, and must be a constant or variable. A hierarchy of nesting of iterations is permitted, i.e., an iteration statement may be included in the scope of a prior iteration statement. However, no particular nesting may exceed a depth of four. In general, fixed point quantities should be used in iteration statements. If floating point quantities are used, care should be taken to guarantee the desired number of iterations. Extension Statement. CInE, ... ". k: The effect is to accomplish the subroutine before passing to the next statement in sequence. Such a statement is used wherever compound sequences of operations, not necessarily leading to the definition of a single variable, are required, for example, sorting, solving a system of differential equations, packing and unpacking data, etc. Flow Diagrallls in COlllpiler Language. The following will indicate how a particular flow chart may be represented in compiler language. The flow chart of Fig. 27 evaluates the polynomial 10 y = L: aixi. i=O 7 Stop 10 FIG. 27. Flow chart for evaluating the polynomial y =L aixi. i =0 2-208 DIGITAL COMPUTER PROGRAMMING Using the notation for variables in the compiler language, the flow chart is given in Fig. 28. The corresponding program (I) in the compiler language is given in Table 32. FIG. 28. Flow chart of Fig. 27 in compiler language. TABLE 32. PROGRAM (I) IN COMPILER LANGUAGE 1: 2: 3: 4: 5: 6: 7: READ Y2 f-O Ilf-ll Y2 f- CIl + (Y1 X Y2) Ilf-Il-1 G4 IF Il ~ 1 H Using an iteration statement and letting the degree be variable by assigning it to the variable 15, the program is given in Table 33. TABLE 33. 1: 2: PROGRAM (II) IN COMPILER LANGUAGE 4: READ Y2 f-O 4, Il, 15, -1,1, Y2 +-- CIl + (Y1 X Y2) 7: H 3: Using the required representation for all symbols, the alternate program (II) for evaluating a polynomial of any degree is given in Table 34. TABLE 34. 1: 2: 3: 4: 7: PROGRAM (II) FOR EVALUATING A POLYNOMIAL OF ANY DEGREE Y1 C1 through Cll Y2 = 0 4, Il, 15, -1, 1 Y2 f- CIl + (Y1 X Y2) H READ F F F F DATAREAD SETP I LOOP FF STOP NEWP This program, punched one statement to a card, is then translated within the computer to yield a machine program in SOAP language. The following remarks concerning the representation of the flow chart are pertinent: PROGRAMMING AND CODING 2-209 a. Each process in the flow chart leads to one and only one statement in (I). However (II) encompasses in one statement, that numbered 3, the processes numbered 3, 5, and 6 in the flow chart. These three processes are typical of certain iterations where a process f(· .. ) is to be carried out for all nl ~ i ~ n2. Process 3 sets the parameter; process 5 increments it; and process 6 determines whether its upper limit has been surpassed. These responsibilities are combined in the iteration statement. b. Since Y1 is a floating point variable it is convenient, but not necessary, to use a zero which is a floating point constant. c. The degree of the polynomial is, properly speaking, a problem variable. Treating it as such in (II) consequently makes for a more general program. d. The F and FF mark the statement end and program end respectively. The Compiled Program. Compilation on the IBM 650 two-pass system proceeds in two phases: (1) translation (into a symbolic program), and (2) assembly (into a specific machine code). The result of the translation phase is a symbolic program in SOAP language; i.e., one instruction per card in standard alphanumeric SOAP format. The compiled output (translation) consists of four parts: (1) the main (symbolic) program; (2) the statement dictionary, to be described in the sequel; (3) the constants (abcons) used within statements; (4) ten reservation cards. The code for each statement is punched out as soon as the statement has been translated. A statement dictionary entry is the first card punched for each statement. This dictionary provides the linkages for transfer statements. In addition to the program and the statement dictionary, a list of constants (those found in the statements together with several required by the finished program and furnished by the compiler itself) is punched together with ten cards which reserve space in the machine for these constants, the statement dictionary, and the problem variables. For the program (II) which evaluates the polynomial of degree 10, the output of the translation phase is given in Table 35. General ReInarI{s. The following remarks concerning the translation produced are pertinent: 1. SOOOI is the first location of the statement dictionary and contains a link to the (symbolic) location given to the statement whose identifier is 1. 2. Locations within statements are of the form L - - - - , e.g., LAAAC or LBCAA, which refer to the third instruction within the first statement and the first' instruction within the twenty-ninth statement respectively. The first instruction of each statement is always assigned a symbolic location. 3. Symbolic locations of the form E - - - - refer to the entry locations of subroutines (extensions). Those listed in the example are to floating point 2-210 DIGITAL COMPUTER PROGRAMMING 35. TABLE OUTPUT OF TRANSLATION PHASE FOR PROGRAM WHICH EVALUATES A POLYNOMIAL OF DEGREE 10 SOOOI LAAAA SOO02 LABAA 1 2 3 4 5 6 7 8 9 10 SOO03 LACAA 50004 LADAA LADAB LADAC LADAD 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 33 34 35 36 37 38 39 40 41 41 41 41 41 41 41 50000 LAEAA SOOOO LAFAA LAFAG 50007 LAGAA A AOO08 AOO07 AOO06 AOO05 AOO04 AOO03 AOO02 AOO01 4 3 4 3 4 3 41 4 41 3 41 4 41 3 00 LDD 00 RAL STL 00 RAL STL 00 RAL RAL STL LDD RAL SLT ALO RAL LDD 5TL 00 RSL ALO 5TL 00 RAL STL RAL SLO BMI Nap Nap 00 HLT 00 00 00 00 00 00 00 00 00 0000 LABAA 0000 AOO07 YOO02 0000 10005 10001 0000 YOO02 YOOOI ACC LAAAA EOOAQ LABAA READ Y2 Z OJ LACAA LACAA II LADAA LADAA LADAC LADAD LADAB EOOAJ Z IS Y2 Z CI 1 S Y1 X Y F 2 10001 10003 8002 C YOO02 0000 AOO08 10001 10001 0000 10001 W AOO08 W LAFAG S LAFAG 0000 LAGAA 0000 0000 0000 0000 0000 0000· 0000 0000 0000 I 10002 y YOO08 C C0011 5 S0023 A A0031 EOOAI LAEAA LAEAA LAFAA LAFAA II Z II S LMIR G IFL RW 50004LAGAA LAGAA LAHAA 0022 0001 3000 2000 1000 0010 0007 0001 UOOOl 0006 UOO07 0009 UOOIO 0021 U0022 0029 U0030 0038 H 0004 1 11 (II) PROGRAMMING AND CODING 2-211 arithmetic subroutines, e.g., EOOAI is the entry to the floating point addition routine. 4. ACC is the floating point accumulator. W refers to a temporary storage location. The symbolic locations of the variables are their names. 5. All constants appearing in a statement, after being converted into the appropriate fixed or floating point format, are assigned an absolute constant location. In addition, certain constants needed during program operation are assigned, as required, by the compiler. The same constant will never be assigned more than one symbolic location. After the last statement has been translated, the abcon locations with their respective values are punched out, one per card. 6. Appearing as (SOAP) comments in the first and ensuing instructions of each statement is the original (untranslated) statement. A maximum of ten contiguous characters of the original statement may appear as comments with a single SOAP instruction. Table 36 gives the name and meaning of all symbolic addresses or locations which may be found in a translated program" TABLE 36. N AMES AND MEANINGS OF SYl\IBOLIC ADDRESSES OR LOCATIONS IN TRANSLATED PROGRAM Name LcxIcx2{3I{32 I Y C W 0000 0000 0000 0000 +n +n +n + n(O ~ n ~ 9) + + + n ~ 9) n A 0000 ACC P 0000 n(O E 00CXICX2 S 0000 n ~ Meaning An instructioD lucation A fixed point. variable, In A floating point. variable, Yn A. floating point variable, Cn Temporary storage required by parentheses and/or quot.ation nesting An absolute constant Floating point accumulator Subroutine parameter storage Name of (entry to) a subroutine Entry in the statement dictionary PO-P9 is a temporary storage block used only for temporary storage of subroutine parameters, including those used by TYPE statements. The floating point accumulator, ACe, is required for the floating point arithmetic subroutines. The first four abcons, AO through A3 will contain the machine locations of SO, 10, YO, CO respectively. Contiguous blocks of storage are assigned, in the order given, to (a) variables (I, Y, C), (b) statement dictionary (S), (c) absolute constants (A), (d) the compiled program (L), including extensions (E). The actual assignments are indicated on (SOAP) reservation cards, which are the last ten cards punched during compilation. The first instruction of the first statement, LAAAA, always appears in 650 location 1999. Examples of IT Language Problems. The two examples given here are problems as written for the IT language, a root determination process DIGITAL COMPUTER PROGRAMMING and a simple differential-equation integration. These are adapted from problems given in the M173 course at Michigan by B. A. Galler and the author. EXAMPLE 1. Problem. Solve the equation ax3 bx2 ex d = 0 by Newton's method by using various initial values (xo) and various criteria for accuracy of the solution. Analysis. Newton's method for the equation f(x) = o. + . Xo gIven: + + f(Xi) Xi+! = Xi - f' (Xi) . For the equation of this problem, Xi+l = Xi - qi, Xo given: where Criterion for stopping iteration: Iqil = IXi+! --, xii < e Flow Diagram of Solution Procedure. See Fig. 29. 3 Read a, b,c,d, E,XO FIG. 29. Flow diagram for Example 1. Rough Program. 1: 2: 3: 4: 5: 6: Read a, b, e, d, Xo, i~O ~ + + d)/ (3ax2 + 2bx + e) q ~ (ax 3 + bX2 ex Go to7 if IqI ~ e Punch x, i Go to 1 PROGRAMMING AND CODING 7: 8: 9: x~x i~i 2-213 - q +1 Go to 3 Correct Compiler Program: Note. We make the following storage assignments: i: II a: C1 C4 d: Y1 b: C2 x: C5 q: Y2 c: C3 1: 2: 3: 4: 5: 6: 7: 8: 9: a, b, c, d, Xo E, READ F F I1~0 ((C1 . Y1 . Y1 . Y1) + (C2· Y1 . Y1) + (C3 . Y1) F + C4)/((3' C1· Y1· Y1) + (2· C2· Y1) + C3) G7 IF ~ C5 F TY1 TIl F G1 F Y1 ~ Y1 - Y2 F II ~ II + 1 F G3 FF Y2 ~ IY21 Note. To produce a more efficient and accurate program, Statement 3 could be replaced by Y2 t - ((((((C1 . Y1) + C2) . Y1) + C3) . Y1) + C4)/ ((((3 . C1 . yo + 2 . C2) . yo + C3). EXAMPLE 2. Problem. y' = x - y2 to be solved from x = Xo to x = Z with initial conditions y(xo) = yo. Method of Solution. Step-by-step integration (Euler process). ~y = (x - y2) ~x. Initial Conditions and Parameters. ~x = 0.1, x Rough Program. 1: 2: 3: 4: 5: 6: 7: 8: Storage C1. ~x: (x - y2) 1: 2: 3: 4: 5: 6: 7: 8: ~x y~y+~y x~x+~x Tx G3 H Ty IF x y = 1, Z = 1.5. Final Program. ~x, x, y, z READ Tx Ty ~y~ = 1, r- () 0 n ~ = number of equations ""'C C j = base of Y block r = ki routine entry -I m ;::c Yi = Yj+i ki = Yj+n+i qi = Yj+2n+i Sb = Yb = ti = (xl = ""'C ;::c 0 (j) address of 80000 address of YOOOO temporary storage contents of location x ;::c > ~ ~ Z (j) ~ ~ FIG. 31. Flow diagram of Runge-Kutta IT compiler extension 26. PROGRAMMING AND CODING TABLE EOOBA BAN9 BANl BAN2 BAAl BAN3 BAN4 BAA2 BAA3 BAA4 BAA5 STD STL -RAL lDD SDA LDD SDA -RAB lDD STD -AXB LDD STD STD STL RAl -ALa STL ALa ALa RAA RAB STL -STU -AXB -SXA NZA RAL -ALa STL LDD STD LDD STD LDD STD RSU LDD RSU ALa LDD RAU ALO LDD LDD STD LDD STD RSU SLO BAEX BAN 1809 BANl BANl BAN2 BAN2 0000 AOOOO BASB 0002 AOO02 BAYB BAEX BAN BAYB POO02 BAYJ BAN 8001 8001 8002 BAYJN 0000 0001 0001 BAN4 BASB POOOl BAKE BAA2 EOOBA BAl BAD BA2 BAG BA4 BAA3 BA5 B003 BAA4 BA5 8003 BAA5 BANB BAD BA3 BAG SA6 BA7 37. SOAP BAN9 LANGUAGE VERSION BAN5 BANI BAN2 BAN6 BAN3 BAN9 BAN3 BAN4 B BAD BAN7 BANS 8001 BANS BAN5 BAN5 2-217 BAG BAI BA2 BA3 BASB BAYB BAEX BAKE BACA BACB BAYJ BAYJN BA4 BA5 BA6 SA7 BAB BAN Negative Instruction Means Fixed Data Address. LDD STD STU RSL STL RAL RAA ALa RAB ALa RAC RAU -FMP STU RAU -FMP FAD -FAD -FSB STU -FAD -STU RAU FMP -FAD -FSB FSB -STU -AXA -AXB -AXC RAL SLO BMI RAU BMI BMI 00 00 00 00 00 00 00 00 50 70 B3 66 30 00 BAAl EOOBA BACA 8002 BACB BAYJ 8001 BAN 8002 BAN 8002 BACA 0000 ACC4 BACB 0000 ACC4 0000 0000 ACCS 0000 0000 BAS 'ACC5 0000 0000 ACC4 0000 0001 0001 0001 B006 BAYJN BAN6 BAa BAN6 BAN6 0000 0000 0000 0000 0000 0000 0000 0000 0000 7106 3333 6666 0000 0000 BAN5 BAN6 B C B C A A BAD BAN7 C B C BANS BAG BAKE BAN7 BAKE BAEX 0050 7850 3350 6750 0051 DIGITAL COMPUTER PROGRAMMING 2-218 Compiler Program for Runge-Kutta Test Case. Given d 2y/dx 2 = 6x with initial conditions (y)x=o = 0, (dy/dx)x=o = 0, determine y in the interval o ~ x ~ 3, for h = 0.1. Writt~n as a system of three equations, the problem becomes, y' 0 = 1, Y 1 = Y2, y'2 = 6yo, , with initial conditions, Yo = 0, YI = 0, Y2 = O. For this problem the following compiler variables are defined. Yo, YI, Y2 = lco, kI, k2 = qo, qI, q2 = h = n = j = Y5, Y6, Y7, Y8, Y9, YI0, Yll, Y12, Y13, Cl = 0.1, II = 3, 12 = 5, r = 13 = 8. n, j, and r could appear in the statements as constants if only one equation is to be solved by the subroutine, For the header card nI ny nc ns N nE = = = = = = 5, 15, 2, \ 15, (2000 - 772) = 1228, 750 (Package 3). Notice that the values of the n's may be greater than the actual number of locations needed by the program. * Statements: 1. 2. 3. 4. 5. 6. 7. Cl, II, 12, 13, READ 3, 14, 0, 1, 11-1 Y(I2 + 14) = 0 Q26E, II, 12, I3Q TYI2 TY(I2 + 1) G4 IF 3.0 V 'YI2 H * Program author: Bruce W. Arden. F F F F F F F PROGRAMMING AN,D CODING 8. 9. 10. II. Y(I2 Y (12 Y(I2 G4 + 3) + 4) + 5) = C1 = Y (12 + 2) . C 1 = 6.0· YI2· C1 2-219 F F F FF Run Request. For use with the IT language and its translation on the IBM 650 at the University of Michigan, a Run Request of punch-card size is used to indicate operations to be performed. The programmer indicates what parts of the one-step or two-step system he wants performed. He may indicate one or all of the options. a. Compile (translate by using the IT language compiler-translator). b. Translate from SOAP II to IBM 650 five-word-per-card basic language, with possible options as to SOAP subroutines and reservation decks for IT extensions (IT language subroutines). c. Perform an actual run on a basic machine language problem, obtained either from hand coding (straight) or compiled. With this, he indicates any special subroutines, the particular package of the various IT options to be used, the kind and amount of data to be read in, conditional punch output for diagnostic purposes, output kind and quantity expected, and any special utility routines to be used or other information to be obtained by the operator. During the translation process the IT translator will punch error cards to indicate to the programmer that he has violated the conditions of the IT language [either the formation rules, based on two-letter pairs, to be described below, or the stop rules, which give the limits on the number characters per statement or per card, the number of nested subscripts or extensions (subroutines), etc.]. Such an error card will consist of the word "ERROR" followed by the offending two-character combination, or else a corresponding two-character code to indicate the violation of the stop rules. This process, at the option of the computer operator, can be carried on with either the one-step or two-step process. Again at the option of the operator output may continue to be translated after an error has occurred or has been terminated. Generally, because of the nature of the two-step target language (SOAP) which uses symbolic addresses, an error in one statement will not affect the correctness of a later translation. The onestep target language (basic machine language) is an absolute address language which, if an error is made, will be incorrect thereafter. In the latter case, occurrence of an error always terminates the translation, although the translator may continue to scan input data so as to locate any other mistakes, without putting out any translation. At the time of running a problem, one of several "subroutine packages," depending on what has been asked for by the programmer on the Run Request, will be stored in the machine by the operator. These packages will contain successively longer lists of subroutines starting with floating 2-220 DIGITAL COMPUTER PROGRAMMING point operations (if required) and input-output processes, and including such functions as square root and trigonometric functions, and also more elaborate checking and utility procedures. By using a smaller package, a programmer will have more of the IBM 650's 2000 words of storage available, but fewer subroutines. Further checks are built into the operation of this system in that each subroutine, as in most standard systems, has a built-in error indication in the case of, for example, an attempt to take a negative square root. To request a run on an IBM 650 computer where the IT compiler is in use, the programmer fills out a Run Request form (Fig. 32). This form RUN REQUEST (one for eoch problem) Date ................................................................•.....• D COMPILE D SOAP II Sub .................... . R •.•........••..•••.•.•.• E ...•..••..••..•...••.••• D CHECK RUN D Straight D Compiled Sub ................... . p •..............•...•.... Data •................• Conditional Punch ................................•. Output expected ................................... . Utility Routines and Special Information Requested: Error Indications Program Reg ........................................ . +++- Distributor Lower Ace. Upper Ace. Additional Notes on Back Class .......................... Problem No .................... . Name .................................................................. FIG. 32. IT compiler run request. 2-221, PROGRAMMING AND CODING allows the indication of the large number of options from which the programmer can choose in compiling, testing, and running his program. Translator Construction The Symbol Pair Technique. The IT compiler, as constructed originally by Perlis, Smith, and Van Zoeren, had built into it a set of checks for the formation rules of the language. This is accomplished by scanning statements from left to right, two characters at a time. Each symbol pair actuates a machine or assembly language generator which produces a corresponding sequence of one or more instructions in either basic IBM 650 or SOAP language dependent on whether or not this is a one-pass or two-pass compiler. Any symbol pair which is not admissible in the sense of occurring in a meaningful string of symbols in the language will cause an error alarm in the compiler itself. The list of admissible symbol pairs, among the more than 1000 that could possibly occur, can be generated by laying out formation rules, such as that described in the example below. The syntax or grammar of the language is a slightly simplified version of that given earlier, with all references to norms of variables, statements, etc., omitted. Each rule in the language allows certain admissible symbol pairs. Each entity, when substituted into the succeeding rule, allows other admissible pairs formed by juxtaposition of the last symbol of certain entities combined with the first symbol of others. Note that the symbol pair method of checking and translating allows errors to occur. For example, unless some type of memory is included in the compiler generators, such a sequence as 123.45.67 with two decimal points in a number, may be translated incorrectly, as well as passed by the translator as a perfectly well-formed string of symbols. Example of Formation Rule: Floating Point Constants. nln2··· nkBm k ~ 8 Examples: 14.92B3; 1066B(-11) nln2 ... nk: fixed or floating points constant of type A with m = nln2 or (-nln2) , First symbols: n, . ; Last symbols: n, ) Admissible pairs. Bn n) - n (- B( nB .B Restrictions : Upon occurrence of nB, counter set to 8. Decimal point has no effect. (N ote: "( +" is not considered admissible.) Permissible Symbol Pairs and CompHer Representation. The end result of this rational sequence of generating all possible symbol pairs on the basis of the original 'rules describing the language can be given in Table 38. 2-222 DIGITAL COMPUTER PROGRAMMING TABLE 38. PERMISSIBLE SYMBOL PAIRS AND COMPILER REPRESEN'l'A'l'ION AC AC JX "X .X QX WC ~C AI AI "n .n In WI Qn ~I AL A( RD WJ ,A KA ~. )1 A" )F AQ ,C KC RF WL ~( AY AY RI ,F KF )1 WQ ~" B( BL ,I KI ), RK WY ~Y Bn Bn Wn KJ RM ,. )~n CI XA CI KL RP XA ,( )P CL XC XC C( )" ," RQ KQ Cn XI Cn XI ,Y KY RR » XJ DA X. ,n Kn RS IA )+ XL DC LA RT (A )T X( IC DF X" DF XQ (C LC )= RU XY DI XY LI RV (I II » Xn Xn DJ (. LJ RW I. )~ YI DL YI LL )X RX (( I( )~ YL DQ LM RZ Y( (I" Yn Yn DY (" SA LQ IY +A f-A ZA Dn (Y LY SC In +C E, f-C ZC EK Ln SI (n +1 FA f-I ZI FA -A MA SJ +. FC f-. ZJ FC Me SL -C +( FF f-( ZL FF MI -I SQ +" f-II FI +y ZQ FI -J MJ SY f-Y ZY F. FJ ML Sn +n -( f-n Zn F( TC FL TC MQ " F" nZ FQ MY TI TI -Y nB Fn Fn T( nB Mn TL -n GI nD GI PA TY TY PA nl nE G( GL nE PC PC UA =A Gn nF Gn nF PI UC PI =C nJ HF HF UI n. P. PJ =1 nI IF nI IF PL UJ P( nK II P" n, II UL PQ =( nM I( IL PY nPY UQ " nP In Pn nP In Pn UY =Y nn JD nn Un QD .1 =n "1 .F "F n" JF nQ VA QF >A nR JK ., n) VC QK >C ", nS JM VI QM >1 n+ " IIp .P nT JP nT VJ QP >. nU JQ VL n= >( QQ " "" .) JR nV ") n> >" VQ QR JS nW VY >Y .+ "+ QS n~ nX JU nX Vn QU >n " nZ JV .> "> WA n QV ~A JW .~ QW "~ n~ PROGRAMMING AND CODING 2-223 A More Rational Procedure for Translator Construction. The weaknesses of the symbol pair process are apparent. Errors when symbols like decimal points are repeated indicate that all recursive definitions cannot be checked without the complicated process of adding memory to the generators, which becomes completely an ad hoc process. A multiple scan process is therefore necessary to produce a complete set of checks on the formation rules, as well as rational setting up of generator entries. In describing this, a notation of productions, or language definition rules, as described in Rosenbloom (Ref. 88), will be used. The list of productions that follows below can be seen to parallel the original set of rules set up for the IT language (again questions of variable statement norms are omitted for simplicity). (Production 1 below can be read as "If a is a number, then a is a fixed point integer constant." Production 2 would read, "If the string a is a fixed point integer constant, and if the string {3 is a fixed point integer constant, then the concatenated string a{3 is a fixed point integer constant." Production 27 would read, "If the string a is an operand, (3 is an operator, and the string 'Y is an operand, then the string (a{3'Y) is an operand.") From the set of 46 productions, each of which defines a new string which can be developed in terms of previous older ones, a "production tree" will be set up that describes this definition process graphically. Fonna] Representation of the IT Language. Writing the formation rules in a symbolic fashion, one defines the following classes: m JJ a numbers fixed point integer constants floating point constants type a 93 floating point constants type b e all constants ~ fixed point integer variables ~ floating point variables "0 all variables operations L\ extensions &> 9) fixed point operands t) operands fY subroutine parameter sets g; statements GU unconditional transfers fit rela ti onshi ps 'X conditional decisions Then, by adding these symbols to the language one can obtain a formal system based on a set of axioms, and a set of productions, that produce all 2-224 DIGITAL COMPUTER PROGRAMMING possible constants, variables, extensions, operands, and statements. One can consider that the extra symbols carried above are used in the machine to designate an object of the particular type. Small Greek letters will indicate strings of symbols. Axioms. AO. ~I, :FY, :FC, CUlO, CUll, .. " CUl9, g{ =, g{ >, g{ ~, Send HF, §end READ F, .1+, .1-, Ax, .1/, A exp Productions: PI. P2. P3. P4. P5. P6. P7. P8. P9. PIO. PI1. P12. P13. P14. P15. P16. P17. PI8. PI9. P20. P2I. P22. P23. P24. P25. P26. P27. P28. P29. P30. P31. P32. P33. P34. P35. CUla ~ Jja Jja, Jj{3 ~ Jja{3 Jja, Jj{3 ~ Cia.{3 Jj a, Jj (3 ~ 03aB{3 Cia, Jj{3 ~ 03aB{3 Jja, Jj{3 ~ 03aB( -(3) Cia, Jj{3 ~ 03aB(-{3) Jja ~ ea Cia ~ ea 03a ~ ea Jja ~ ~Ia ~a~~Ia ~a ~ :FYa :FCa Jja ~ :FYa Jja ~ :FCa 9)a ~ :FYa 9)a ~ :FCa 9)a ~ ~Ia ~a ~ :Fa~~a ~a~~a ~a ~ 0(a) ea~0a ~a ~ 0( -a) 0a ~ 0(a) 0a~ 0Aa 0a, A{3, 0)' ~ 0 (a{3)' ) ~a~ 9)a Jja ~ 9)a 9)a, A{3, 9))' ~ 9) (a{3)') 9)a ~ 0a 0a ~ 9'a 0a, 0{3 ~ 9' a, {3 9'a, 0{3 ~ 9'a, {3 Jja, 9'{3 ~ & "aE, {3" PROGRAMMING AND CODING P3G. P37. P38. P39. P40. P41. P42. P43. P44. P45. P46. 2-225 f9a ~ ea 19a, 19{3 ~ ~end a ~ {3F 19a, (9{3 ~ Send a ~ (3F fDa ~ GUGa ~a ~ GUG(a) GUa ~ Send aF (9a, ffi.{3, (9')' ~ JC a{3"{ GUa, JC (3 ~ ~end aIF{3F "'rJa, 19{3, 19,)" 198 ~ Send TaT{3T,),T8F f9a ~ Send aF tja, fi'{3 ~ Send a, {3, F N ow invert the process of productions in order to develop an inverse process that will allow us to check any arbitrary string a in our original symbols. Speaking intuitively, we are looking for a method by which we can guarantee that any statement in the Perlis IT language obeys the rules for generating such statements that we have set up. Formally, we should add two new symbols, r (true) and cp (false), to our present language to indicate intuitively that a string obeys the rules or does not, and then develop an entirely new set of productions (computer program!) that will produce the string ra whenever our original string obeys the rules of the language, and cpa whenever our original string does not obey the rules. Such a procedure is a decision process, one which arises over and over again in formal mathematics. In terms of the description here, a decision process is nothing but a set of productions which separates out a particular class of strings in a language. Other decision processes pertinent to computer programming include the following: 1. Decide whether or not a given computer program runs to completion (does not end in a loop) without ever running it. 2. Decide whether a given iterative process converges, without ever actually calculating with it. Instead of writing out a set of such productions, we will concentrate here on the process by which they might be obtained. In particular we include a production tree, a graph describing the definition sequence given of the productions, and the inverse of such a graph, a similar tree describing the decision process itself. By starting at the symbol S, which is the end point in the production process of producing all possible IT statements, one can proceed backward up the tree of Fig. 33, testing each path in the maze in turn. The results are shown in Fig. 34. Here, if a translator proceeds along the paths in the direction of the arrows, based on subsequent decisions as to whether or not 2-226 DIGITAL COMPUTER PROGRAMMING "l'Ja, "l'J{3, "l'J,)" FIG. 33. 'Uo - Send TaT{3T,),ToF -------~\ Pattern for computing all possible statements in the IT language. PROGRAMMING AND CODING oa 2-227 e~~aa~a~B:S:; ffi' - (jaBS{3 ~ ffiaB/3 -->- ffiaB(-.B) - S~ Substitution 9aB(-9/3) Type end &aF - &a - "9/3, E, ff'''/'' ., 19a ~19 j ~:ff9 Extension Conditional Linkage 7 endaF~ ~a (]) ® end aF - FIG. 34. Unconditional /~ 90, ff'€ Iteration Production tree for checking arbitrary strings. 2-228 DIGITAL COMPUTER PROGRAMMING the string has the form in question, it will arrive at a decomposition of the original language string into a hierarchical structure. For example, Y2 f - (Y(I1 + 7) - C3)/(Y(I3 + 6) X CI2) will become decomposed into the structure of Fig. 35. N ow if the translator starts at the bottom of this tree structure and performs a bottom-to- /..t.-~ ! /""x/ '" y /-",e y e ~3 !+ / \ I ~1 7 ~I i+ / \ i I 6 ~2 3 FIG. 35. Decomposition example: Y2 f - (Y(n + 7) - C3)/(Y(13 + 6) X CI2). top dictionary translation, a completely rational translation will be the end result, with no possibility for errors as in the symbol pair method. As Kantorovich (Ref. 60 ) has pointed out, this method of decomposition allows application of syntactical transformation rules (commutativity, associativity, etc.) to be applied before translation to produce more efficient hierarchical structures. Such procedures are reported by Kitov (Ref. 61) with reference to the compiler-translator for the Strela and in the Fortran description (Ref. 35). This technique of formal decomposition also applies to natural languages, as might be expected. The difficulty here, of course, is not in the development of the decomposition process, but in the listing of the original definitions of acceptable strings (original productions) which are far more than the approximately 50 required by the IT language. 13. AUTOMATIC PROGRAMMING: A SOVIET ALGEBRAIC LANGUAGE COMPILER Description Mathematicians of the Soviet Union V. A. Steklov Mathematical Institute have developed a programming technique similar to that of the PROGRAMMING AND CODING 2-229 algebraic language compilers in the United States and Western Europe, but enough different so that the technique should be included here separately. This technique, that of "operational programming," is due to Liapounov, Ianov, and others, and is described by Kitov and the originators (see Refs. 51, 52, and 61). The Soviet programs, analogous to compiler-translators, translated literally as "programs that program," are based on an external notation that is written linearly across the page. EXAMPLE. Adams' method for integrating an ordinary differential equation dy/dx = f(x, y), requires three arithmetic operators: AI, setting up initial data; A 2 , computing the three starting ordinates of the integral curve; A3 i , computing the ordinate in the next ith point in terms of the already known previous three ordinates. If these are combined with an iteration operator n-l Tr i=3 the sequence describing the program performance for n steps would be n-l A IA2 II i=3 A3 i If there is need to calculate m integral curves rather than one, the program description would become m II n-l (Ali A2i II A3(ii») i=3 .i =1 The symbol II is one of a class of logical operators. (N ote the similarity of this notation to the vertical statement language of the Internal Translator (see Ref. 81 and Sect. 12) with each arithmetic or logical "operator" replaced by an arithmetic or iteration "statement.") A second type of logical operator is the logical condition, an arithmetic proposition that may be either true or false and is denoted by the forms p(x = y) p(x ~ y), etc. with the proposition being given within the parentheses. Ianov (Ref. 52) has suggested the use of brackets to indicate possible program sequence. Brackets would occur in pairs with the same subscripts. Ordinarily the sequence of operators in a "program scheme," as a line of operators describing a program is called, will indicate their sequence of performance. Following each logical condition a subscripted left bracket will indicate 2-2.30 DIGITAL COMPUTER PROGRAMMING possible change of control out of the usual left-to-right sequence. If the condition is false, the next operator to be performed will be that operator following the correspondingly subscripted right bracket. If the condition is true, the next operator to be performed will be the next operator in sequence. EXAMPLE. AIP(X = y)[A2A3JA4 1 1 Interpretation. 1. Perform AI. 2a. If x = y, perform A 2, A 3, and A4. 2b. If x ~ y, perform A 4. Note. Indexing operators, including both prestoring, restoring, and incrementing of addresses, will be designated by the letter r. Comparison with Other Methods. Three comparable notations for describing the process of matrix multiplication are shown in Fig. 36. The first is the standard flow diagram notation already described. The second is the original string notation of Liapounov, designed for use with a computer with a three-address instruction logic. Here the bracket superscript indicates the number of the operator to which control is to be transferred when the logical condition is false. The bracket subscript indicates the number of the operator to which control is to be transferred when the logical condition is true. The third notation is that of Ianov described above. The advantage of the third notation, as he and Kantorovich noted (Refs. 51 and 60), is that such an algebra of string transformations allows development of a set of transformation rules by which a "string language" of the Ianov type of notation may be manipulated to produce a "more efficient" program in the sense of some measure of effectiveness. Perlis and Smith (Ref. 155) have developed a string language manipulator for the IBM 704, based partially on the work of Markov (Ref. 67) on the theory of algorithms, which performs such manipulations easily. The string language manipulator is proposed to be used not only with such symbolic operational programs, but also algebraic language compiler-translators and natural language transla tors. Rules. Ianov gives a complete set of transformation rules for programs. These rules, when applied to any program written in terms of operators, logical conditions, and left and right strokes, may be used to generate all possible equivalent variants of a program. Let us call an expression, every finite line composed of various symbols, of operators, logical conditions and right strokes so that not more than one left and not more than one right stroke with the subscript i is found therein for every natural number 1. A logical condition a L is subordinate, for i a given set of parameters, to the logical condition {1 if when {1 is performed for the given set of parameters. a is performed only n C"k t = j L= 1aijbjk (i (k = = 1, "', n) 1 ... " n) ""C ;:::c o » (j) ;:::c ~ ~ Z (j) » z o Comparable Liapounov (three-address) string notation h () 11 9 7 5 2 3 5 8 J12 JA 314 ]A5 I sP 7(j = n + 1) [l sP 9 (k 3 = n oo 2 + 1) [ I 10P l1 (i = n + 1) [ 10 Z (j) 12 Comparable Ianov (single-address) string notation h.J 12.J A314.J A5I sP 7(j = n + 1) L I sP 9 (k = n + 1) Lh oP 1 2 3 3 2 FIG. 36. Matrix multiplication (method 1). l1 (i = n + 1) L 1 Various operational programming notations. ~ t...> w DIGITAL COMPUTER PROGRAMMING 2-232 The following system of axiom schemes and derivation rules (where arbitrary expressions; ~ ( (L i ), (IC) + 1 ~ IC The "replace" index register instruction allows the contents of any index register to be transferred into any other index register. The output operations, in order to save computer time, allow information to be output in a standard three numbers per line format and to be "stacked" in an output stack, so that they can be typed out in a group. Typing of a fixed point number allows integer labeling of output. The following operations are improper: 1. Division by zero. 2. Log of zero. 3. Log of negative number. 4. Square root of negative number. 5. Exponential of a number greater than 128 In 2. PROGRAMMING AND CODING 2-243 6. Any arithmetic operation resulting in a number whose absolute value is greater than 2128. 7. When an improper order is sensed by the machine, "xxxxxxx" is typed out, the bell rings continuously for about 12 seconds and computations are halted. The A register will contain a meaningless result. When the compute switch is reset to "Go," computations are resumed with the order that is next in sequence. TABLE 39. INTERCOM INSTRUCTION LIST Arithmetic operations Operations involving a memory position and the A register 49 Clear and subtract 4v Clear and add 4z Divide 59 Subtract 5v Add 5x Store 67 Multiply Operations involving the A register only 07 Square root 11 Natural logarithm 13 Absolute value 16 Exponential 29 Negate Transfers of control operations Ov Transfer if A register is negative 10 Transfer if A register is non-negative Unconditional transfer 19 42 Halt 43 Marked transfer (unconditional) 44 Return transfer (unconditional) Operations on index registers 3x Set B register 40 Set D register 41 Set L register 57 Decrement B register 65 Increment B register 1y Replace index register Output operations Type and tab 1z 20 Type and carriage return 21 Stack 22 Type the stack 23 Space , 24 Type fixed point number 33 Ring bell Input operations 09 Read punched tape 2-244 DIGITAL COMPUTER PROGRAMMING COIn parisons It is useful to compare the Intercom system with the other interpreter described, the EASIAC (see Sect. 6). The EASIAC, which simulated a three-address instruction logic on a three-address logic machine, also had a large number of index registers. Since the MIDAC, its "host" machine, had a large storage (6, 144 words of secondary storage), larger EASIAC programs were possible, but the EASIAC storage was also decreased over the original MIDAC storage. Compared with the Intercom system, which uses almost 1300 locations, out of about 2200, the final stages of the IT compiler on the IBM 650 uses only about 400 out of 2000 locations to accomplish the same features. This difference is due to the noninterpretive nature of the IT compiler. The speed of EASIAC and Intercom, although they can perform address modifications rapidly and quite efficiently, is limited by the interpretation cycle which causes a drop in speed, with the need for floating point subroutines, that may be as much as an order of magnitude. The following conclusions may be drawn from the discussion: 1. Interpreters may be very useful in simulating another computer on an original host machine. 2. Interpretation will slow down speed of operation markedly. 3. The use of a preliminary translator with closed subroutines will generally produce much more effective results (but note the exceptions below under Recursive Languages, Sect. 15). 15. AUTOMATIC PROGRAMMING: RECURSIVE LANGUAGES Recursive Use of Subroutines One of the most powerful techniques that has been developed for using digital computers is that first attempted by Newell, Simon, and Shaw (Ref. 143). The basis of their technique is to free the programmer from all dependence upon machine characteristics, including storage allocation. They have made use of the concept of indirect addressing (described in Sect. 11) to build upon an "associative memory." The latter is a list-like structure that allows one or more "lists" (the counterpart of the usual programming "region") to be built up in storage-added to or deleted from, either at the ends or in the middle-without the need for the user's keeping track of any storage positions. This, in a sense, is an extension of the symbolic or floating address technique from instruction addresses to data addresses, and moreover it allows the usual program changes of deletion and insertion to be made during actual performance of the problem, rather than merely before its operation. PROGRAMMING AND CODING 2-245 The first problem that this group of researchers attacked was that of instructing a machine to play chess. This was later changed to proof of the first listed theorems of the propositional calculus in the Principia ill athematica (Ref. 105). The chess player's performance, as has been shown by de Groot (Ref. 152), is a recursive one, in that he will attack a portion of the problem, move onward through a chain of successive subproblems, and then return to the original problem as a result of some decision made in the subproblem investigations, proceed once more to the subproblems, etc. A similar performance was discovered in the behavior of human beings attempting to solve the theorems of the propositional calculus. The need is apparent, in such problems, to have available complete facility for construction of a completely flexible hierarchy of subroutines, so that anyone may call on any other (even one above it in the chain) without loss of control of the process, and without introduction of any of the standard logical paradoxes. To a certain extent this has been realized in the Holt and Turanski GP compiler (Ref. 149); but without indirect addressing, associative memory features of the IPL (Interpretive Programming Language) of Newell, Simon, and Shaw, use of the techniques on any machine is limited because of storage assignment and reassignment requirements that must be met during the course of performance. The IT, Unicode, and Fortran compiler languages (Sects. 11 and 12), which allow subscripting, are general enough to permit such a recursive subroutine description. As Schecher (Ref. 91) has shown, one way of handling subroutines in a recursive fashion is for each subroutine to supply all variables and return addresses to the subroutine one level in the hierarchy above or below it. A "level index" (j in Fig. 26, see Sect. 11) must be kept, which is increased at each time of subroutine entry and decreased at each time of subroutine exit. Figure 26, Sect. 11, describes a problem involving three subroutines, entered at a, "I, and €, and controlled by a master routine. If each subroutine, as a closed type, is required to return to the level from which it was entered, and if enough storage space is provided so that the variables can be stored for every entry of a subroutine, then this process will work. Since in such a problem as that of Fig. 26 the knowledge of how many times a subroutine is to be performed is unavailable at the start of the problem, some device such as the associative memory described above must be used to guarantee that storage is used to the fullest. Similarly, the computer can be programmed to check the time that has occurred in any area of the problem so that it can stop that portion whenever time is up. The problem in Fig. 26 is not an actual one, but is typical of the type of problems involved with this technique. A flow diagram, command compiler language, or machine code is necessary for description of such prob- DIGITAL COMPUTER PROGRAMMING 2-246 lems. Whether this problem ever terminates or not is dependent on the three functions f(ah bh Cj), g(aj, bj, Ci), and h(aj, bh Cj) and the values read in, and in the general case cannot be predicted. lb. LOGICAL PROGRAMMING The standard uses for a digital computer are in computation of problems in numerical analysis. However, binary machines can be used for many nonarithmetical problems involving logical predicates. (See Chap. 11.) As an example of such problems the checker game first analyzed by Strachey (Ref. 15) and later improved by Samuel in a program for the IBM 704 makes use of machine words with binary zeros and ones representing the absence or presence of checker men on the board. This technique has been used by Ulam and Kister (Ref. 114) also, apparently, in their first try at a solution of a game of chess. Below is given a simple problem, that of evaluation of truth tables in the propositional calculus, along with an explanation of the instructions available on four binary computers (Univac Scientific 1103A, IBM 701 and 704, and MIDAC). . Problem in the Propositional Calculus. The following statement is drawn from Copi (Ref. 115, p. 52, problem 24). "If old Henning wants to retire, then he will either turn the presidency over to his son or sell the business. If old Henning needs money then he will either sell the business or borrow additional capital. Old Henning will never sell the business. Therefore if he neither turns the presidency over to his son nor borrows additional capital, then he neither wants to retire nor needs money." With the notation R, T, S, N, B, and the symbols:) (material implication), + (or), . (and), and - (negation), one has [R :) (T + S)] . [1Y :) (S + B)] . [S] :) [( T . B) :) (R· N)] One would like to know whether the statement is true or false. The problem can easily be programmed to be solved on the computer. The truth tables for all possible combinations of R, T, S, N, B are stored by columns (5 columns of 32 bits each) in a binary machine. Starting at the innermost parenthesis, one may perform operations on columns in pairs and the results stored. Working from the inner parenthesis out by such two-valued functional procedures, one finally obtains the truth value of the statement for all possible combinations. If the computer operations do not permit or and material implication, for example, they can be replaced as follows: A+B=A.j3 - A:)B=A+B=A·B=A·B PROGRAMMING AND CODING 2-247 Logical Programming for the Univac Il03A The (u) will be represented by Uj,n, where j will indicate the digit (j = 0, .. " 35) and n, the time of operation of the instruction, with a similar notation for v. Vj,n == 1 will indicate that all digits (j = 0, .. " 35) of V contain a binary one. Uj,n == will indicate that all digits (j = 0, .. " 35) of U contain a binary zero. Five Univac 1l03A instructions are particularly pertinent for use with the basic two-valued logical functions: 27. Controlled Complement (CC). Replace AR with (u) leaving AL undisturbed. Then complement those bits of (AR) that correspond to ones in (v). Then replace (u) with An. ° Truth Table U i .n 0 0 1 1 V i .n 0 1 0 1 U i.n+l 0 1 1 0 Result: U i .n+1 == (U in t= Yin) == (jin' Yin + U in · Yin (j = 0, .. ,,35), (j = 36, .. " 71), (j = 0, .. " 35). 51. Q-Controlled Transmit (QT). Form in A the number L(Q) (u). Then replace (v) by (AR). (L(Q) (u) has leftmost bits zero and righthand bits given by individual bit product.) A R ;.n+l == == V i .n+1 == A Li •n +1 ° (j = 0, .. ,,35), U in · Qin (j = 36, .. ,,71), U in . Qin (j = 0, .. ,,35). 53. Q-Controlled Substitute (QS). Form in A the quantity (Q) (u) plus L(Q)' (v). Then replace (v) with (AR). The effect is to replace selected bits of (v) with the corresponding bits of (u) in those places corresponding to l' s in Q. A L ;.n+l == 0, AR;.nH V i .n+l == == V in' Qin + U in · Qin Vin·Qin +Uin·Qin = 36"",71), (j = 0, .. " 35). (j DIGITAL COMPUTER PROGRAMMING 2-248 Special Case I If U = 1, (j = 36, .. " 71) A Ri .n+1 ==(V in · Qin) + (1 . Qin) == V in . Qin + Qin == Q in + V in . Qin (Distributive law) == (Qin + Yin) . (Qin + Qin) == (Q in + V in) . 1 == Qin + Yin. Therefore if U = 1 (or = Q), the Q-controlled substitute yields the logical or. Special Case II If V = 1, A Rj •n+1 + U in · Qin Q in + U in . Q in (Qin + U in ) . (Qin (Qin + U in ) • 1 == 1 . Qin == == + Qin) == == Qin + U in == Qin :J U in by definition (j = 0, .. " 35). Therefore if V == 1 (or Q), then Q-Controlled Substitute yields the logical material implication. II. Translllit Positive (TP). Replace (v) with (u) (j 12. Translllit Negative (TN). of (u). = 0, .. ,,35). Replace (v) with the complement (j = 0, .. ,,35). If one therefore performs (in some cases) proper preliminary storage of 1, one can express all the logical operations :J , . , ¢ immediately with at most two instructions. o and + , -, Logical Progralllllling for the IBM 704 Unlike the Univac 1103A, the IBM 704 has one instruction for each of the common logical operations and, or, and not. In the description below digits P of the accumulator and S of the storage location are labeled digit zero (0). Digits Sand Q of the accumulator are labeled -2 and -1 respectively. PROGRAMMING AND CODING 2-249 AND to Acculllulator ANA Y. Each bit of the C(AC)P,l_35 is matched with the. corresponding bit of the C(Y)S,l-:35, the C(AC)p being matched with the C(Y)s. When the corresponding bit of both the AC and location Y is a one, a one replaces the contents of that position in the AC. When the corresponding bit of either the AC or location Y is a zero, a 'zero replaces the contents of that position in the AC. The C(AC)s,Q are cleared. The C (Y) are unchanged. Aj,n+l Yj,n+l == == (j = 0, .. " 35), ° (j = -2, -1), (j = 0, .. ',35). Yin AND to Storage ANS Y. Each bit of the C(ACh,1-35 is matched with the corresponding bit of the C(Y)S,l-35, the C(AC)p being matched with the C (Y)s. When the corresponding bit of both the AC and location Y is a one, a one replaces the contents of that position in location Y. When the corresponding bit of either the AC or location Y is a zero, a zero replaces the contents of that position in location Y. The C(AC) are unchanged. Ai,n+l == (j = 2, -1,0, .. ,,35), Ain (j = 0, .. ',35). OR to Acculllulator ORA Y. Each bit of the C(AC)P,1_35 is matched with the corresponding bit of the C(Y)S,l-35, the C(AC)p being matched with the C (Y)s. When the corresponding bit of either the AC or location Y is a one, a one replaces the contents of that position in the AC. When the corresponding bit of both the AC and location Y is a zero, a zero replaces the contents of that position in the AC. The C (Y) and the C(AC)s,Q are unchanged. Ai,n+l Ai,n+l Yi,n+l == == == Ain + Yin (j = 0, .. ',35), Ain (j = -2, -1), Yin (j = 0, .. " 35). OR to Storage ORS Y. Each bit of the C(ACh,1_35 is matched with the corresponding bit of the C(Y)S,l-35, the C(AC)p being matched with the C (Y)s. When the corresponding bit of either the accumulator or location Y is a one, a one replaces the contents of that position in location Y; when the corresponding bit of both the AC and location Y is a zero, a zero replaces the contents of that position in location Y. The C(AC) are unchanged. (j = -2, -1,0, .. ',35), (j = 0, .. " 35). 2-250 DIGITAL COMPUTER PROGRAMMING COIllpleIllent Magnitude COM. All ones are replaced by zeros and all zeros are replaced by ones in the C(AC)Q,P,l-35' The AC sign is unchanged. (j = -1,0"",35), A i ,n+l == Ai,n A i ,n+l == Ain (j = -2). Logical PrograIllIlling for the IBM 701 The IBM 701 has easily available only three logical operations particularly pertinent for use with the basic two-valued logical functions. Extract Y EXTR. (j = 0, .. ,,35), (j = 0, .. ·,35). Add Y ADD. Subtract Y SUB. If position Y contains the binary number -.111 ... 1 (all ones), then if the accumulator is positive or positive zero, addition of (Y) will give the negation of ACC in all 36 positions. If the accumulator is negative or negative zero, then subtraction of (Y) will give the negation of ACC in all 36 positions. If Ao == 0, then A i ,n+l == Ain after ADD Y. If Ao == 1, then A i ,n+1 == A jn after SUB Y. Logical PrograIllIlling on the MIDAC On the MIDAC, a 44-bit computer built at the University of Michigan as a modification of the National Bureau of Standards SEAC design, there exists a special three-address instruction that combines several of the logical operations in one machine order. The "extract" operation is defined as follows: ex a. ~ 'Y. Whenever {3 has a digit "one," replace the corresponding digit of 'Y by the digit of a; otherwise, leave 'Y unchanged. The truth tables for this instruction could be constructed as follows. a {3 0 0 0 0 0 0 1 1 1 1 'Yn-l 0 "In 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 ·PROGRAMMING AN.D CODING 2-251 Forming the Boolean equivalent of the table, one gets 'Yn == Ii . 13 . 'Yn-l + a . i3 . 'Yn-l + a . {3 • 'Yn-l + a == (Ii + a) . i3 . 'Yn-l + a . a' ('Yn-l + 'Yn-d == i3 . 'Yn-l + a . {3. . {3 • 'Yn-l N ow, if the 44-bit word (ignoring sign) a is given the value of all "one's," 'Yn On the other hand, if 'Yn-l 'Yn == Certainly, if 'Yn-l 13 • 1 == 13 . 'Yn-l + 1 . {3 == i3 . 'Yn-l + {3 == {3 + 'Yn-l· == 1, then + a . {3 == i3 + a . {3 == 13 + a (3 :) a. == 0, then 'Yn Finally, if 'Yn-l == == == a . {3. 1 and a == 0, then 'Yn == i3 . 1 + °. {3 == i3. Thus one instruction contains and, or, not, and material implication. 17. MICROPROGRAMMING Many programmers have thought that the technique of programming should allow greater internal control by the programmer of the detailed behavior of the computer. This direction of procedure would move the programmer in the direction of the logical designer, rather than in the direction of the numerical analyst and mathematician as the use of translators and compilers had been carrying him. At a meeting of computer designers and programmers at the Massachusetts Institute of Technology, Cambridge, Massachusetts, in 1956 (proceedings not published), it was agreed to call this technique, still not clearly defined, microprogramming. Several formal definitions of this technique were proposed, two of which are listed. 1. Wheeler of Cambridge University described the technique used in the construction of the EDSAC II there as a useful example for programmers. This machine's designers had used a magnetic core storage matrix of large size as the heart of the c~mtrol element. By passing leads through various cores in sequence, the standard instruction code of the computer was being developed. 2. Others proposed an extension of the Cambridge technique to allow continuous control by the programmer of the computer's instruction code or at least a subset of it. This would be accomplished by transferring 2-252 DIGITAL COMPUTER PROGRAMMING certain words (equivalent in meaning to the wiring sequence used with the EDSAC II) to specified storage locations in the control unit of the computer. These would, in essence, then change the actions and time sequence of a given instruction. By this technique a computer could theoretically be changed quickly from single to double precision arithmetic or to floating point. The input-output instructions could be changed to suit the problem at hand. The TX-O Developlllen t Hardware development on microprogramming has been done by a group including Clark, Farley, Gilmore, Peterson, and Frankovich (Ref. 39) in connection with the instruction logic for the TX-O, an experimental computer designed at the Lincoln Laboratory of the Massachusetts Institute of Technology. This computer was constructed to test a large 256 X 256 (65,536-word) magnetic core storage system. The logical design, therefore, was simple in that it had only four operations in two bits of the standard 18-bit word. The remaining 16 bits of each word were used to address anyone of the 216 storage positions. The computer, in addition to the standard program counter and instruction register, contains intervention registers, as well as four internal registers which can be used in the arithmetic process: 1. Memory buffer register (MBR) with 18 bits plus one parity check bit. 2. Accumulator (Ae) with 18 bits, used to store results of numerical operations as well as an input-output buffer. It is constructed as a one's complement ring adder modulo 218 , with no overflow alarm. 3. Memory address register (MAR) with 16 bits, which selects information in storage and "operate class commands." (See below.) 4. Live register (LR) with 18 bits, a high-speed flip-flop rapid access register. Three of the four instructions are similar to those used in any singleaddress instruction code: Sto X. Replace the contents of register X with the contents of AC. Leave AC unchanged. Add X. Add the word in register X to the contents of the AC and leave the sum in AC. Trn X. If the sign digit of the accumulator (ACo) is negative (i.e., a one) take the next instruction from register X. If the sign is positive (i.e., a zero) proceed as usual. The one unusual instruction of this computer which may be considered as the first announced true microprogramming instruction is the following: Opr X. Execute one of the operate class commands indicated by the number X. PROGRAMMING AND CODING 2-253 The operate class commands all have the same binary combination in the two-bit instruction position, but the remaining 1G bits selected 21 possible microoperations dependent upon the bit combination. Each micro operation has a specific time pulse during control on which it was scheduled to operate. Thus a given sequence of address bits in any "opr" instruction gives a unique sequence of microoperations. The basic microoperations, in time pulse sequence, with the octal address corresponding, include: At pulse time 0.8: CLL. Clear the left nine digits of AC-100,000 (octal). CLR. Clear the right nine digits of AC-40,000 (octal). lOS. In-Out Stop. Stop machine so that an in-out command (specified by bits G, 7, 8 of the MAR) may be executed-20,000 (octal). P7H. Punch holes 1-6 in punched tape from AC positions 2, 5, 8, 11, 14, 17, with an added seventh hole-7000 (octal). P6H. Same as previous, no seventh hole-GOOO (octal). PNT. Print on typewriter one six-digit character from positions 2, 5, 8, 11, 14, 17---":4000 (octal). RIC. Read one line of punched tape into AC positions, 0, 3, 6, 9, 12, 15-1000 (octal). R3C. Read three characters into 2,5,8,11,14,17; 1,4,7,10,13,16; and 0, 3, 6, 9, 12, 15 of AC-3000 (octal). DIS. Intensify a point on oscilloscope output with one's complement x coordinate given by AC digits 0-8 and one's complement y coordinate given by AC digits 9-17-2000 (octal). At pulse time 1.1: PEN. Read light pen flip-flops (set by viewing the intensity of the output oscilloscope at a point by a light pen including a phototransistor as its penpoint) into AC o and AC 1-100 (octal). TAC. Insert a one in each digital position of the AC wherever there is a one in the corresponding position of the T AC (I8-toggle switch accumulator)-4 (octal). A t pulse time 1.2: COM. Complement every digit in AC-40 (octal). AMB. Store contents of AC in MBR-1 (octal). TBR. Store contents of TBR in MBR-3 (octal). At pulse time 1.3: MLR. Store the contents of MBR in LR-200 (octal). LMB. Store the contents of the LR in MBR-2 (octal). At pulse time 1.4: PAD. Partial add AC to MBR, that is, for ACarter == {(ACberore ~ MBR)-20 (octal)}. 2-254 DIGITAL COMPUTER PROGRAMMING SHR. Shift AC right one place (multiply by 2-1)-400 (octal). CYR. Cycle AC right one position modulo 18 (AC n -7 AC n+l modulo 18) -18 (ACn -7 ACn+l modulo 18)-600 (octal). At pulse time 1.7: CRY. Carry partial add (see above) the 18 digits of the AC to the corresponding 18 digits of the carry (shifted left one place modulo 18, with an end-around carry included as usual with the one's complement addition)-10 (octal). Macroinstructions from Microinstructions. Many macroinstructions can be constructed from properly sequenced microinstructions. For example, an instruction CYL (cycle left) can be represented as CYL == opr 31 since opr 31 combines AMB (1.2), PAD (1.4), and CRY (1.7) in that order. Cycle left will perform a sequence analogous to CYR listed above. The address 31 (octal) is obtained by the logical disjunction of the bits in the three octal addresses 1, 20, and 10. Among the list of combinations which were found to be useful in forming macrooperations were many useful ones available on more standard computers plus others that ordinarily would not have been in the hardware. A translation program was written to translate these operations, considered as ordinary instructions, into sequences of operate instructions intermixed with the three standard instructions. Among the list of instructions found to be useful, which continued to grow with the u~e of the computer, were the following: 0.8 0.8 CLL + CLR = apr 140,000 = Clear the AC (CLA). 1.2 1.4 1.7 AMB + PAD + CRY = apr 31 = Cycle the AC left one digital position (CYL). 0.8 0.8 1.2 CLL + CLR + COM = apr 140,040 = Clear and complement AC (CLC). 0.8 0.8 lOS + DIS = apr 22,000 = Display (this combination was included as a reminder that with every in-out command the lOS must be included) (DIS). 0.8 0.8 0.8 lOS + CLL + CLR = apr 160,000 = In out stop with AC cleared. 0.8 0.8 1.4 lOS + P7H + CYR = apr 27,600 = Punch 7 holes and cycle AC right. 0.8 0.8 1.4 lOS + P6H + CYR = apr 26,600 = Punch 6 holes and cycle AC right. PROGRAMMING AND CODING 0.8 lOS 0.8 0.8 2-255 0.8 + CLL + CLR + P6H = apr 166,000 = Clear the AC and punch a blank space on tape. 0.8 0.8 + PNT + CYR = apr 24,600 = Print and cycle AC right. 0.8 1.2 104 + P7H + AMB + PAD = apr 27,021 = Punch 7 holes and leave AC cleared. 0.8 0.8 1.2 104 lOS + P6H + AMB + PAD = apr 26,021 = Punch 6 holes and leave AC cleared. 0.8 0.8 1.2 104 lOS + PNT + AMB + PAD = apr 24,021 = Print and leave AC cleared. 0.8 0.8 0.8 CLL + CLR + RIC = apr 141,000 = Clear AC and start photoelectric tape reader running (notice no lOS, which means computer has not. stopped to wait for information). 0.8 1.2 104 1.7 RIC + AMB + PAD + CRY = apr 1,031 = Start petr running and cycle AC left. 0.8 004 RIC + CYR = apr 1600 = Start petr running and cycle right. 0.8 0.8 0.8 0.8 CLL + CLR + lOS + R3C = apr 163,000 = Clear AC, read 3 lines of tape. 0.8 0.8 0.8 0.8 CLL + CLR + lOS + RIC = apr 161,000 = Clear AC and read one line of tape. 0.8 0.8 0.8 0.8 104 1.7 CLR + CLR + lOS + RIC + PAD + CRY = apr 161,031 = Read 1 line of tape and cycle AC left. 0.8 0.8 0.8 0.8 104 CLL + CLR + lOS + RIC + CYR = apr 161,600 = Read one line of tape and cycle right. 0.8 0.8 1.1 CLL + CLR + TAC = apr 140,004 = Put contents of TAC in AC. 104 1.7 PAD + CRY = apr 30 = Full-add the MBR and AC and leave sum in AC. 1.3 104 0.8 0.8 CLL + CLR + LMB + PAD = apr 140,022 = Clear the AC, store LR contents in memory buffer register, add memory buffer to AC, i.e., store live register contents in AC (LAC). 1.2 1.3 AMB + MLR = apr 2.01 = Store contents of AC in MBR, store contents of MBR in LR, i.e., store contents of AC in LR (ALR). 1.3 104 LMB + PAD = apr 22 = Store contents of LR in MBR, partial add AC and MBR, i.e., partial add LR to AC (LPD). 0.8 lOS 0.8 lOS 2-256 1.3 MLR DIGITAL COMPUTER PROGRAMMING = apr 200 = Since MLR alone will have a clear MBR, this is really clear LR (LRO). 1.3 1.4 1.7 LMB + PAD + CRY = apr 32 = Full-add the LR to the AC (LAD). 0.8 0.8 1.3 1.4 CLL + CLR + TBR + PAD = apr 140,023 = Store contents of TBR in AC. An Exalllple of a Progralll. As an example of a program (coded with octal addresses) and using the microprogramming technique, an input program that reads in a following program in standard binary form, three 6-bit paper tape characters, making up an 18-bit word, is shown in Table 40. This routine is automatically punched out by the translation program at the head of the binary output tape. The basic read in mode of the TX-O computer allows read in of this standard input routine by merely pushing the machine's Read In button, which automatically reads the input routine in and automatically transfers control to octal location 177744. Words of the succeeding binary program are punched on the tape in a block whose first word is a store instruction (stoW 1) which contains the address WI into which the block is to be stored. The second word is the complement of a store instruction (stoWn ), where W n is the address of the nth (last) word in the block. Following this comes a sequence of binary words (the progra:in), terminated by a word (sum check) containing the complement of the sum of all the preceding words in the block including the first two control words. The starting instruction for this block is given in the address of an instruction following the last block of words in a program to be input. If that instruction is add Z (Z the starting address), the computer stops before transferring control. If the instruction is trn Z then the transfer of control is immediate. The three microprogrammed instructions used in the input routine are: Opr 160,000 - CLL + CLR + lOS + R3C. Clear AC and read three lines on the paper tape, cycling each time so that they are assembled as an 18-bit word in AC. Opr 140,000 - CLL + CLR (CLA). Clear both halves of the accumulator. Opr 30,00o-Halt. .T ABLE 40. INPUT ROUTINE FOR THIJ TX-O C01\lPUTER Partial, sum of block 177741 Temporary storage If the preceding block's sum is ;>177742 add'177773' 177743 trn 177772 - - - - - - , correct, go on to next block O!' transfer control word. If not, go to 177772 and stop computer. [ Read in the first word of n. block Enter >177'744 opr 163,000 (R3C) or the transfer control word 177745 sto 177756 ------, (add Z or trn Z) ,and store it in register 177756. Is it st vV 1, add Z, or trn Z? If 177746 trn 177756 trn Z go directly to register 177756. I t is either, st vV 1 or add Z; ad'd 177747 add 177774 177750 trn 177775 _ _- I 200,000 to the AC. If it was add Z, the AC is now neg. (= trn Z), so go to 177775. Read in the complement of the 177751 opr 163,000 (R3C) address of the last word in the 177752 sto 177777 block and store it in the register 177777. Add the first two control words 177753 add 177756 of the block together and store 177754 sto 177741 in 177741 to initiate the partial sum. 177755 opr 163,000 (R3C) Read in the ith word and store 177756 (sto vVi) it in its assigned memory loca(add Z) (Not used) tion. ' (trn Z) < E ( ' - - - - - - - i Add the ith word to the partial 177757 add 177741 sum of the block. '177760 sto 177741 Index the address section of the 177761 opr 140,000 (CLA) register 177756 by one. 177762 add 177756 177763 add 177773 177764 sto 177756 Has the nth word been tramJ177765 add 177777 ferred to storage? If AC is 177766 trn 177755") negative-no, return to 177755. Read in the sum of the block. 177767 opr ,163,000 (R3C) Is it the same as the sum in 177770 add 177741 register 41?, If it is, AC = 177771 trn 177742") minus zero, go to 177742. If it 177772 opr 30,000 (HLT)...i::-E- is positive ... stop the computer. The sum checkis wton~. Constants 177773 1 177774 200,000 177775 sto 177777 ~"'------' ,The last block has been stored and the transfer control word 17777f} opr 30,000 (HLT) was add Z. Put trn Z in'register 177777 and stop the computer. ' Upon restarting, transfer con177777 trn Z (or the completrol to register Z. ment of the address of the last, word in a block). 2-258 DIGITAL COMPUTER PROGRAMMING 18. PROGRAMS FOR MAINTENANCE OF EQUIPMENT A very useful type of programming is used to test a computer, either in the construction and design stages or later during operation. This type of program has been discussed by Graney (Ref. 44) and Brock and Rock (Ref. 16). Such maintenance programs must be used periodically with or without marginal testing (see Chap. 13). Acceptance tests are those evolved for testing a computer in its earliest stages, before it has ever been used in productive operation. Among the criteria that have been stressed for programs to do these two jobs are the following. 1. Severe operating conditions for the computer must be produced. 2. A sufficiently large set of random (actually pseudo random) numbers must be operated on and the results verified, so that a satisfactory sampling of machine conditions will have been tested; or, alternatively, 3. Elements of the computer must assume all possible states and be checked for correctness. Regular maintenance programs are usually bootstrap programs stored originally in a small, pretested area of storage (for example, on 'Vhirlwind I, in a given bank of hand switches for storage) that call in the next portion of the program which tests a wider area of machine structure before proceeding. Usually the simplest arithmetic, control, and storage operations will be first verified. After this a storage summing operation will be used to check a larger portion of storage. Automatic procedures are usually available that will print out a notation of a failing storage position or a failing machine operation. After the main storage unit has been satisfactorily checked, then the more elaborate instructions may be verified, including secondary storage (drums and magnetic tapes): Input-output equipment using punched paper tape or punched cards cannot be verified automatically, and with its mechanical components is a major source of failures. Generally, information is printed out and then read back in after having been physically handled by human beings. The presence of automatic checking devices such as parity checks, forbidden character checks, and duplicate arithmetic checks, and casting out nines (see Chap. 13), built into the machine, can be useful, but they also cause delays in the automatic performance of such checking, since upon finding its own errors the computer usually stops. This requires human intervention and the difficult task of finding the actual error. Automatic recovery, by which upon discovering an error, a computer notes it, corrects it, and then proceeds, has been used mainly on magnetic tape han- PROGRAMMING AN.D CODING 2-259 dling equipment. While maintenance testing programs built to use such features are more difficult to program, they improve efficiency of the equipment. Random numbers for such programs may be generated by the techniques discussed by Moshman (Ref. 74) for decimal number systems. 19. PROGRAMMING WITH NATURAL LANGUAGE Language Commands. The possibility of programming digital computers to respond to simple English commands has already been realized on a low level by a group working under Hopper (Ref. 98) which produced the Flow-matic compiler for the Univac I and II. Important advances in this field have come from linguistic studies, either in the field of mechanical translat.ion (see Ref. 120 and Chap. 11), or in linguistic structure of natural languages. The results quite surprisingly correspond to the analyses described for the Fortran and IT compilers (Ref. 144). The most thorough such analysis has been described in a series of papers by Chomsky (Refs. 26-28). Chomsky follows the pattern first laid out by Post (Ref. 84) and described in Rosenbloom (Ref. 88). Language Decomposition. Appendix II of Ref. 26 lists a set of eleven basic phrase structure rules for a set of productions for decomposing English sentences into constituent parts. These must in certain cases be preceded in a certain order by a set of fifteen more transformations, involving such relationships as the passive voice, interrogat.ive mood, conjunctions, gerunds, and participles. To these morphemic rules would be adjoined a set of phonomorphemic rules relating to the changes in word structure caused by phonetic rules of performance of English-speaking persons. A sentence decomposition in the earliest stages of this analysis structure is similar to the tree structure developed for the simpler algebraicprogramming languages already described (see Sect. 12). For example, the sentence "The man hit the ball," when decomposed into constituents such as noun phrase (NP), verb phrase (VP), noun (N), verb (V), and article (T), decomposes into the tree of Fig. 41. Storage Requirements. This is not much more involved than the standard parsing of high school grammar. However, the overall set of rules developed by Chomsky allows complete explanation and decomposition of such ambiguous sentences as "I found the boy studying in the library," and such phrases as "the shooting of the hunters." Based on Chomsky's analysis, or one carried even further, a complete program can be written to give complete structural decomposition of the English language upon entry into a computer. The semantic or meaning portion of the machine language problem is dependent on further theoretical investi- 2·260 DIGITAL COMPUTER PROGRAMMING Sentence /~ NP / T I The "I / N V I man hit VP "'" NP / 1 ""-I the FIG. 41. ball Tree structure resulting from decomposition of the sentence, "The man hit the ball." gations as well as further experiments with large-scale storage devices such as the RAMAC (see Ref. 118) and Tapefile (Ref. 119). The problem of pattern recognition to recognize structures such as that of Fig. 41 has been studied for simpler proble~s by Dineen (Ref. 116), and Minsky (Ref. 117). The construction of automatic dictionaries has already been begun with such algebraic languages as Fortran, Unicode, and GP at one end, and with the language translation experiments at the other. By the time successful translation of scientific documents will have been accomplished, a programmed knowledge of the structure of English and other natural languages will have had to be acquired. The pattern recognition procedures and compiling will fill the gap between such decomposition and actual machine instructions which are to correspond to the original English input. The use of any large magnetic tape storage should be sufficient for large portions of a natural language (for example, scientific vocabularies combined with a basic vocabulary). The need for speed, however, determines the requirement for the more rapid large-scale storage devices noted above. LITERATURE, ACKNOWLEDGMENTS, AND REFERENCES LITERATURE Books. For the elementary approach to programming, the texts by McCracken (Ref. 68) and Gottlieb and Hume (Ref. 113) may be consulted. For a detailed discussion of programming for a specific machine, described in detail, Wilkes, Wheeler, and Gill (Refs. 108 and 109) is' a thorough documentation of the work on EDSAC. A compilation of a series of articles in Control Engineering (Ref. 99) provides many practical -examples not found elsewhere. In the area of mechanical translation the book edited by Locke and Booth (Ref. 120) gives an account pertinent to many programming problems. The University of Michigan Summer Session Notes edited by Carr and Scott (Refs. 24, 25) contain PROGRAMMING AN.D CODING 2-261 practical accounts of recent procedures. Books on the general structure of digital computers, such as those by Bowden (Ref. 15), Booth and Booth (Ref. 121), Richards (Ref. 122), 'Vilkes (Ref. 124), Eckert and J ones (Ref. 111), the ERA Staff (Ref. 125), Stibitz and Larrivee (Ref. 96), and Berkeley and vVainwright (Ref. 126) usually include one or more chapters on elementary programming. From the point of view of business problems, such books as Kozmetsky and Kircher (Ref. 127) , Canning (Ref. 128), Chapin (Ref. 129), Berkeley (Ref. 130), and a small pamphlet by Gorn and Manheimer (Ref. 131) give simplified accounts tailored to the nontechnical reader. Practical examples in this are'a are available in publications of the Joint Computer Conferences of the American Institute of Electrical Engineers, Institute of Radio Engineers, and Association for Computing Machinery (Ref. 136), and those of the American Management Association (Ref. 132), and the Office lVlanagement Association of Great Britain (Ref. 134). Perhaps the most thorough account of digitai' computer programming, containing detailed examples and analyses of both hand processes and automatic programming, is in the Russian language book by Kitov (Ref. 61). Portions of this have been translated into English and may become available through the Association for Computing Machinery. In the area of automatic programming the Proceedings of Office of Naval Research Symposia (Ref. 98) are important. The only book available in the area of artificial intelligence as it might be applied to general purpose computer programming is that of Shannon and McCarthy (Ref. 94). In addition to the b~'oks, numerous publications are available from the manufacturers. They range from simple descriptions of particular computers to automatic programming schemes for a particular computer. A particularly thorough bibliography is that of Remington Rand Univac (Ref. 137), which includes listings from outside that organization as well as inside. Journals. These might be catalogued as follows: 1. Theory of programming and examples of general programming techniques: Journal of the Association for Computing Machinery, published by the Associa· tion, 2 East 63 Street, New York 23, New York. Communications of the Association for Computing Machinery, published by the Association, 2 East 63 Street, New York 23, New York. Journal of Research and Development of the International Business Machines Corporation, published by International Business Machines Corporation, 590 Madison Avenue, New York. Transactions of the Professional Group on Electronic Computers (LR.E.) ,published by the PGEC of LR.E., 1 East 79 Street, New York 21, New York. Systems (Remington Rand Univac), published by Remington Rand Univac, Philadelphia, Pennsylvania. ' 2-262 DIGITAL COMPUTER PROGRAMMING Journal of the Franklin Institute, published by the Franklin Institute, Philadelphia, Pennsylvania. The Computer Journal, published by the British Computer Society, London, England. 2. Examples of problem formulation and programming in the areas of scientific computation: Journal of the Society for Industrial and Applied Mathematics, published by the Society, Box 7541, Philadelphia, Pennsylvania. Journal of the Association for Computing Machinery, published by the Association, 2 East 63 Street, New York 23, New York. Control Engineering, published by McGraw-Hill, 330 West 42nd Street, New York 36, New York. Mathematical Tables and Other Aids to Computation, published by the National Academy of Sciences, National Research Council, Washington 25, D. C. Computing News, published by Jackson Granholm, 12805 Sixty-fourth Avenue, South, Seattle 88, Washington. The Computer Journal, published by the British Computer Society, London, England. 3. Examples of problem formulation in the areas of business and industrial applications: Journal of the Operations Research Society of America, published by the Operations Research Society of America at Mount Royal and Guilford Avenues, Baltimore 2, Maryland. 4. Applications to business problems: Data Processing Digest, published by Canning, Sisson, and Associates, 914 South Robertson Boulevard, Los Angeles 35, California. 5. Popular discussions of programming· and applications: Computers and Automation, published monthly by Berkeley Enterprises, Inc., 815 Washington Street, Newtonville 60, Massachusetts .. 6. Foreign journals: Zeitschrift fur angewandte Mathematik und Physik Doklady, Akad. Nauk S.S.S.R. (Proceedings of the Academy of Sciences of the U.S.s.R.) N umerisches Mathematik 7. General reference and current reviews: Mathematical Reviews, published by the American Mathematical Society, Providence, Rhode Island. Matematicheski Refneraty, published by the Academy of Sciences of the U.S.S.R. ACKNOWLEDGMENTS The cooperation of the following organizations is gratefully acknowledged in granting permission to reproduce material in this chapter. General University of Michigan. Material from courses and summer sessions. Section 3 University of Michigan. Number conversion tables from summer session notes. PROGRAMMING AND CODING 2-263 International Business Machines. Number conversion tables from IBM 704 manual. Section 6 International Business Machines. Instruction codes from the IBM 704 and IBM 650 manuals. Remington Rand Univac. Instruction codes from the Univac II and Univac Scientific 1l03A manuals. Electrodata, a division of the Burroughs Corporation. Instruction codes from the manual for the Datatron 205. University of Michigan. Instruction codes from manuals for the MIDAC computer and the Easiac interpretive system. Librascope Corporation. Instruction codes from manuals for the Royal-McBee LGP-30 computer. Section 8 International Business Machines. Symbolic optimum assembly programming (SOAP), from IBM 650 programming bulletins. University of Michigan. The MAGIC system used for the MIDAC computer. Section 9 General Motors Corporation. Description of the SHARE assembly program. International Business Machines. SHARE assembly programs from IBM 704 bulletins. Section 10 The Ramo-Wooldridge Corporation. Subroutines from the Subroutine Library for the Univac Scientific 1103A. Section 12 Bendix Computer Division. The Intercom 101 system for the Bendix G-15 computer. Carnegie Institute of Technology. The IT system for the IBM 650 computer, from a manual by A. J. Perlis, J. W. Smith, and Harold Van Zoeren. Section 17 Massachusetts Institute of Technology, Lincoln Laboratory. Instruction codes for the TX-O computer from reports. REFERENCES 1. C. W. Adams, and J. H. Laning, Jr., The M.I.T. systems of automatic coding: Comprehensive, summer session, and algebraic, Symposium on Automatic Programming Jor Digital Computers, Office of Naval Research, Washington, D. C., May 1954. 2-264 DIGITAL COMPUTER PROGRAMMING 2. R. Ash, E'. Broadwin, V. Della Valle, M. Greene, A. Genny, C. Katz, and L. Yu, Preliminary Manual for M ath-M atic and Arith-M atic Systems for Algebraic Translation and Compilation for Univac I and II, Automatic Programming Development, Remington-Rand Univac, Philadelphia, Pa., April 1957. 3. Automatic Coding for the Univac Scientific System (A Progress Report), Remington-Rand Univac, Philadelphia, Pa., 1955. 4. Automatic programming the A-2 compiler system, Pts. 1 and 2, Computers and Automation, 4, 25-31, Sept. 1955, 15-23, Oct. 1955. 5. J. W. Backus, The IBM speed coding system, J. Assoc. Compo Mach., 1, 4-6 (1954). 6. C. L. Baker, The PACT I coding system for the IBM Type 701, J. Assoc. Compo Mach., 3, 272-278 (1956). 7. Iu. Ia. Basilwskii, The universal electronic digital machine (URAL) for engineering research, J. Assoc. Compo Mach., 4, 511-519 (1957). 8. W. F. Bauer, An integrated computation system on the ERA-1103, J. Assoc. Compo Mach., 3, 181-185 (1956). 9. 1. K. Belksaja, Machine translation of languages, Research, 10, 383-389 (1957) (in Russian). ' 10. R. W. Berner, What the engineer should know about programming, Automatic Control, 6, 66-69, March 1957. 11. R. W. Berner, E. Krasnow, G. Jira, A. Hoggatt, and R. Levitan, IBM 705 Print I Manual, Programming Research Dept., International Business Machines Corporation, N ew York. 12. Bendix G15 Preliminary Operations Manual, Bendix Computer Division, Los Angeles, Calif. 13. E. K. Blum, Automatic Digital Encoding System II (ADES II), Navord Report 4209, U. S. Naval Ordnance Laboratory, White Oak, Md., Feb. 8, 1956. 14. Bendix Intercom !Ol-G15 Interpretive Routines, Bendix Computer Division, Los Angeles, Calif., July 1956. 15. B. V. Bowden, Editor, Faster than Thought, Pitman, London, 1953. 16. P. Brock, and S. Rock, Problems in acceptance tests of digital computers, J. Assoc. Compo Mach., 1, 92-87 (1954). 17. J. H. Brown, and J. W. Carr III, Automatic programming and its development on the MIDAC, Symposium on Automatic Programming for Digital Computers, Office of Naval Research, Washington, D. C., May 1954. 18. J. H. Brown, J. W. Carr III, B. Larrowe, and J. R. McReynolds, Prevention of propagation of machine errors in long problems, J. Assoc. Compo Mach., 3, 309313 (1956). 19. A. Burks, H. H. Goldstine, and J. von Neumann, Preliminary Discussion of the Logical Design of an Electronic Computing Instrument, Institute for Advanced Study, Princeton University, Princeton, N. J., 1946 (published under contract W360340RD7481, can be obtained from Ballistics Research Laboratory, Aberdeen Proving Grounds, Md.). 20. J. W. Carr III, Solving scientific problems, Control Eng., 3, 63-70, January 1956. 21. J. W. Carr III, Towards an automatic programming procedure, Proc. Assoc. Compuiing ]vI achinery, Meetings, May 1952, .Pittsburgh, Pa. 22. J. W. Carr III, and A. J. Perlis, A comparison of large scale calculators, Control Eng., 3, 83-92/ Feb. 1956. PROGRAMMING AND CODING 2-265 23. J. W. Carr III, and A. J. Perlis, Small scale computers as scientific calculators, Control Eng., 3, 99-104, March 1956. 24. J. W. Carr III, and N. R. Scott, Editors, Notes on the Special- Summer Conference on Digital Computers, Special Summer Conferences on Digital Computers, University of Michigan, Ann Arbor, Mich., 1955. 25. J. W. Carr III, and N. R. Scott, Editors, Notes on Digital Computers and Data Processors, Special Summer Conferences on Digital Computers, University of Michigan, Ann Arbor, Mich., 1956. 26. N. Chomsky, Syntactic Structures, Mouton, 's-Gravenhage, 1957. 27. N. Chomsky, Three models for the description of language, I.R.E. Trans. on Informat£on Theory, IT-2, Proc. Symposium on Information Theory, 113-124, Sept. 1956. . 28. N. Chomsky, Transformational Analysis, Ph.D. Dissertation, University of Pennsylvania, 1955. 29. W. A. Clark, The Lincoln TX-2 computer development, Proc. TV estern Jt. Compo Conf., 143-145, Feb. 1957. 30. H. B. Curry, On the composition of programs for automatic computing, Naval Ordnance Laboratory Memorandum 9805, Naval Ordnance Laboratory, White Oak, Silver Springs 19, Md. 31. J. L Derr, and R. C. Luke, Semi-automatic allocation of data storage for PACT I, J. Assoc. Compo Mach., 3, 299-308 (1956). 32. Datatron Programming and Coding Manual, Electro Data Corporation, Pasadena, Calif. 33. C. Elgot, On single vs. triple address and computing machines, J. Assoc. Compo Mach., I, 118-123 (1954). 34. Features of the new Univac II data automation system, Manual U23, Remington-Rand Univac Division orthe Sperry Rand Corporation, Philadelphia, Pa., 1957. 35. Fortran Automatic Coding System for the IBM 704 EDPM, Applied Science Division and Programming Research Dept., International Business Machines Corporation, New York. 36. J. M. Frankovich and H. P. Peterson, A functional description of the Lincoln TX-2 computer, Proc. TV estern Jt. Compo Con1., 146-155, Feb. 1957. 37. General Motors Research Staff, 704 Operations Manual-Share Assembler, Detroit. 38. J. T. Gilmore, Jr., TX-O direct input utility system, Memorandum 6M-5097, Lincoln Laboratories, M.LT., Cambridge, Mass., Apr. 10, 1957. , 39. J. T. Gilmore, Jr., and H. P. Peterson, A functional description ,of the Tx-d computer, Memorandum 6M-4789, Lincoln Laboratories, M.LT., Cambridge, Mass., Nov. 20, 1956. 40. H. T. Glantz, A note on microprogramming, J. Assoc. Compo Mach., 3, 77-84 (April 1956). 41. B. Gordon, An optimizing program for the IBM-650, J. Assoc. Compo Mach., 3, 3-5 (1956). 42. S. Gorn, An experiment in universal coding, BRL Rept. No. 953, Ballistics Research Laboratories, Aberdeen Proving Grounds, Md., Aug . .1955. 43. S. Gorn, Standardized programming methods and universal coding, J. Assoc. Compo Mach., 4, 254-273 (1957). 44. E. P. Graney, Maintenance and acceptance tests used on the MIDAC, J. Assoc. Compo Mach., 2, 95-98 (1955). 2-266 DIGITAL COMPUTER PROGRAMMING 45. M. Grems, and R. E. Porter, A Digest of the Boeing Airplane Co. Algebraic Interpretive Coding System, Physical Research Staff, Boeing Airplane Co., Seattle, Wash., July 1955. 46. 1. D. Greenwald and H. G. Martin, Conclusions after using the PACT I advanced coding technique, J. Assoc. Compo Mach., 3, 309-313 (1956). 47. G. Hempstead and J. Schwartz, PACT loop expansion, J. Assoc. Compo Mach., 3, 292-298 (1956). 48. G. M. Hopper, Report to the Association for Computing Machinery-First Glossary of Programming Terminology, Association for Computing Machinery, New York, 1954. 49. G. M. Hopper, The education of a computer, Proc. Assoc. Compo Mach., Meetings, May 1952, Pittsburgh, Pa. 50. J. H. Hughes, Tape file maintenance, Programmer, Sperry-Rand Corporation, July 1957. 51. Yu. 1. Ianov, On matrix schemes, Doklady Akad. Nauk S.s.S.R., 113, 283286 (1957) (in Russian; translation available). 52. Yu. I. Ianov, On the equivalence and transformation of program schemes, Doklady Akad. Nauk S.S.8.R., 113, 39-42 (1957) (in Russian; translation available) . 53. The Fortran Automatic Coding System for the IBM 704 EDP}'! (Programmer's Reference Manual), Applied Science Division and Programming Research Department, International Business Machines Corporation, N ew York, Oct. 15, 1956. 54. IBM 704 Electronic Data Processing, Form 24-6661-2, International Business Machines Corporation, New York. 55. IBM 705-III Data Processing System, Form 22-6730-0, International Business Machines Corporation, N ew York. 56. Illiac Programming Manual, University of Illinois, Urbana, Ill. 57. D. R. Israel, Introduction to coding, Engineering Note E-2000-1, Servomechanism Laboratory (later Project Whirlwind), M.LT., Cambridge, Mass., Sept. 26, 1950. 58. D. R. Israel, The Application of a High-Speed Digital Computer to the Present-Day Air Traffic Control System. Master's Thesis EE, M.LT., Cambridge, Mass., 1949. 59. J. L. Jones, A Survey of Automatic Coding Techniques for Digital Computers, Master's Thesis, M.LT., Cambridge, Mass., May 1954. 60. L. V. Kantorovich, On a mathematical symbolism convenient for performing machine cal~ulations, Doklady Akad. Nauk S.s.S.R., 113, 738-741 (1957) (in Russian; translation available). 61. A. 1. Kitov, Elektronnie Tsifrovie Mashiny (Electronic Digital Machines); Izdatelstvo "Sovetskoe Radio," Moscow, 1956 (partial translation available). 62. S. C. Kleene, Introduction to Metamathematics, Van Nostrand, Princeton, N. J., 1952. 63. L.N. Korolev, Coding and code compression, Doklady Akad. Nauk S.s.8.R., 113, 746-747 (1957) (in Russian; translation available). 64. J. H. Laning and N. Zierler, A program for translation of mathematical equations for Whirlwind I, Engineering Memorandum E-364, M.LT. Instrumentation Laboratory, Cambridge, Mass., January 1954. 65. S. A. Lebedev, The high-speed calculating machine of the Academy of Sciences of the USSR, J. Assoc. Compo Mach., 3, 129-133 (1956). PROGRAMMING AND CODING 2-267 66. Librascope, Inc., Librascope LGP-30, Manual, Librascope Inc., 80 Western Ave., Glendale, Calif. 67. A. A. Markov, The theory of algorithms, ]'l'udy V.A. Steklov Math. 11Ist., 42, 3-374 (1954) (partial translation available). 68. D. D. McCracken, Digital Computer Programming, Wiley, New York, 1957. 69. W. S. Melahn, A description of a cooperative venture in the production of an automatic coding system, J. Assoc. Compo Mach., 3, 266-271 (1956). 70. R. J. Mercer, Micro-programming, J. Assoc. Compo Mach., 4, 157-171 (1957). 71. R. C. Miller, Jr., and B. Oldfield, Producing computer instructions for the PACT I compiler, J. Assoc. Compo Mach., 3, 288-291 (1956). 72. O. Mock, Logical organization of the PACT I compiler, J. Assoc. Compo Mach., 3, 279-287 (1956). 73. E. F. Moore, A simplified universal Turing machine, Proc. Assoc. Compo Mach., Toronto, 1952. 74. J. Moshman, The generation of pseudo-random numbers on a decimal calculator, J. Assoc. Compo Mach., 1, 88-91 (1954). 75. F. J. Murray, Univac acceptance tests, Mathematical Tables and Aids to Computation, 5, 176-177 (1951). 76. A. Newell, J. C. Shaw, and H. A. Simon, Empirical explorations of the logic theory machine: A case study in heuristic, Proc. Western Jt. Compo Conf., 218-239, Feb. 1957. 77. A. P. Newell, Notes for the Lectures on Heuristic Programs, delivered at the University of Michigan Summer Session on Advanced Programming, August 1957. 78. A. Newell andH. A. Simon, The logic theory machine, I.R.E. Trans. on Information Theory, IT-2, 61-79, Sept. 1956. 79. A. Oettinger, Simple learning by a. digital computer, Proc. Assoc. Compo Mach., Toronto, 1952. 80. R. Perkins, EASIAC, a pseudo-computer, J. Assoc. Compo Mach., 3, 65-72 (1956). 81. A. J. Perlis, J. W. Smith, and H. R. Van Zoeren, Internal Translator (11')- A Compiler for the 650, Carnegie Institute of Technology, Computation Center, Pittsburgh, Pa., 1956. 82. A. M. Pietrasanta, Debugging Programs on the IBM-650, New York Scientific Computation Center, International Business Machines Corporation, New York. 83. S. Poley and G. Mitchell, Symbolic Optimum Assembly Programming (SOAP), 650 Programming Bulletin 1, Form 22-6285-1, International Business Machines Corporation, New York. 84. E. L. Post, Formal reductions of the general combinatorial decision problem, Am. J. Math., 65, 197-215 (1943). 85. Proposed Specifications for Fortran for the Type 704, Programming Research Department, International Business Machines Corporation, N ew York. 86. F. Ragusa and S. Zucker, The NYU Omnifax compiler and library of subroutines, NYU-7692 Physics Rept., Institute of Mathematical Sciences, New York University, New York, Oct. 15, 1956. 87. N. Rochester, Symbolic programming, Trans. I.R.E., EC-2, 10-15, 1953. 88. P. Rosenbloom, Elements of Mathematical Logic, Dover, New York, 1950. 89. H. Rutishauser, Automatische Rechenplanfertigung bei programmgesteuterten Rechenmaschinen, Mitteilung aus dem Institut fur angewandte Mathematik, Basel, 1952, pp. 1-45. 2-268 DIGITAL COMPUTER PROGRAMMING 90. H. Rutishauser, Some programming techniques for the ERMETH, J. Assoc. Compo Mach., 2,1-4 (1955). 91. H. Schecher, Programmierung fUr eine Maschine mit erweiterten Addressenrechenwerk; International Kolloqium in. Probl. d. Rechentechnik, Dresden, 1955, pp. 69-81. 92. SEAC Operating and Programming Notes I-VIII, RP 1612, 1807, 1873, 1917, 1957, 2342, 2461, and 2918; Office of Scientific Publications, National Bureau of Standards, Washington, D. C. 93. 70J,. Electronic Data Processing Machine, Manual of Operation (Form 246661-3), International Business Machines Corporation, New York, 1955. 94. C. Shannon and J. McCarthy, Editors, Automata Studies, Princeton University Press, Princeton, N. J., 1956. 95. R. J. Solomonoff, An inductive inference machine, 1957 I.R.E. National Convention Record, Pt. 2 (Circuit Theory and Information Theory), pp. 56-62. 96. G .. Stibitz and J. Larrivee, Mathematics and Computers, McGraw-Hill, New York, 1956. 97. C. J. Swift, Machine features for a more automatic monitoring system on digital computers, J. Assoc. Compo Mach., 4, 172-173 (1957). 98. Symposium on Automatic Programming for Digital Computers, May' 13-14, 1954; Office of Naval Research, Department of the Navy, Washington, D. C. 99. The Uses of Digital Computers, a series of reprints by Grabbe, Carr, PerIis, and others from Control Eng., 1955-1957, McGraw-Hill, New York, 1957. 100. The X-1 Assembly System, Remington-Rand Univac Division, Sperry Rand Corporation, New York, 1956. 101. A. M. Turing, On computable numbers, with an application to the entscheidungs problem, Proc. London Math. Soc., ser. 2, 42 0936-37). 102. Type 650 Magnetic Drum Data-Processing Machine (Manual of Operations), Form 22-60 60-1, International Business Machines Corporation, New York, 1955. 103. Univac Scientific Electronic Computing System Model 1103A, Form EL 338, Remington-Rand Corporation, 1902 West Minnehaha Ave., St. Paul W4, Minn. 104. M. Weik, A Second Survey of Domestic Electronic Computing Machines, BRL Rept. No. 1010, Aberdeen Proving Grounds, Md., 1957. 105. A. N. Whitehead and B. Russell, Principia Mathematica, Vol. I, 1st edition, Cambridge, 1910, 2nd edition, 1925. 106. M. V. Wilkes, The use of a "floating address" system for orders in an automatic digital computer, Proc. Camb. Phil. Soc., 49, Pt. I, 84 (1953). 107. M. V. Wilkes and J. B. Stringer, Micro-programming and the design of the control circuits in an electronic digital computer, Proc. Camb. Phil. Soc., April 1953. 108. M. V. Wilkes, D. J. Wheeler, and S. Gill, The Preparation of Programs for a Digital Computer, Addison-Wesley, Cambridge, Mass., 1952. 109. M. V. Wilkes, D. J. Wheeler, and S. Gill, Programs for an Electronic Digital Computer, 2nd edition, Addison-Wesley, Reading, 1957. 110. C. E. Shannon, The Mathematical Theory of Communication, University of Illinois Press, Urbana, Ill., 1949. 111. W. J. E'ckert and R. Jones, Faster, Faster, McGraw-Hill, New York, 1952. 112. E. Herbst, N. Metropolis" and M. B. Wells, Analysis of problem codes on the MANIAC, Mathematical Tables and Aids to Computation, 9, 14-20 (1955). 113. C. C. Gottlieb and J. N. P. Hume, High-Speed Data Processing, McGrawHill, New York, 1958. 114. J. Kister, P. Stein, S. Ulam, W. Walden, and M. Wells, Experiments in chess, J. Assoc. Compo Mach., 4, 174-177 (1957). PROGRAMMING AND CODING 2-269 115. 1. Copi, Symbolic Logic, Macmillan, N ew York, 1954. 116. G. P. Dineen, Programming pattern recognition, Proc. Western Jt. Compo Conf., Los Angeles, Calif., 1955. 117. M. Minsky, Heuristic aspects of the artificial intelligence problem, Group Rept. 34-55, Lincoln Laboratories, M.LT., Cambridge, Mass. 118. Manual of Operation, IBM 650 Data Processing System with 355 Random Access Memory, Form 22-6270-1, International Business Machines Corporation, New York. 119. Handbook, Model 560 DATAFILE, Multiple Bin Tape Unit, Bulletin 3026, Electro-Data Corporation, Pasadena, Calif., 1956. 120. W. N. Locke and A. D. Booth, Machine Translation of Languages, The Technology Press, Boston, and Wiley, New York, 1956. 121. A. D. Booth and R. H. V. Booth, Automatic Digital Calculators, Butterworth, London, 1953. 122. R. K. Richards, Arithmetic Operations in Digital Computers, Van Nostrand, Princeton, N. J., 1955. 123. S. Langer, Introduction to Symbolic Logic, Dover, New York, 1955. 124. M. V. Wilkes, Automatic Digital Computers, Wiley, New York, 1956. 125. ERA Staff, High-Speed Computing Devices, McGraw-Hill, New York, 1952. 126. E. C. Berkeley and L. Wainwright, Computers, Their Operation and Applications, Reinhold, New York, 1956. 127. G. Kozmetsky and P. Kircher, Electronic Computers and Management Control, McGraw-Hill, New York, 1956. 128. R. Canning, Electronic Data Processing for B'Llsiness and Industry, Wiley, New York, 1956. 129. N. Chapin, An Introduction to Automatic Computers: A Systems Approach for Business, The Technology Center, Chicago, Ill., 1955. 130. E. C. Berkeley, Giant Brains, Wiley, New York, 1951. 131. S. Gorn and W. Manheimer, The Electronic Brain and What It Can Do, Science Research Associates, Inc., Chicago, Ill. 132. Pioneering in data processing, Special Rept. No.9, American Management Association, New York. 133. Electronic Data Processing in Industry, American Management Association, New York, Aug. 1955. 134. Scope for Electronic Computers in the· Office, A Symposium, Office Management Association, London, 1955. 135. Impact of Computers on Office Management, Office Management Series No. 136, American Management Association, New York, 1954 .. 136. Trends in computers: Automatic control and data processing, Proc. Western Jt. Compo Conf., Am. lnst. Elec. Engrs., Feb. 11-12, 1954. 137. Large Scale Digital Computers-An Annotated Bibliography, EL 335, Remington-Rand Univac Division of the Sperry Rand Corporation. 138. G. M. Hopper, Chairman, First glossary of programming terminology, Committee on Nomenclature of the ACM, The Association for Computing Machinery, New York, June 1954. 139. Unicode, Preliminary Reference Manual, Remington-Rand Univac Division of the Sperry Rand Corporation, U 1451, New York. 140. H. Seward, Information Sorting in the Application of· Electronic Digital Computers to Business Operations, M.S. Thesis, M.LT., Cambridge, Mass., 1954. 141. R. W. Bemer, The status of programming for scientific problems, Proc. 4th Compo Appl. Symp., Armour Research Foundation, Chicago, Oct. 24-25, 1957. 2-270 DIGITAL COMPUTER PROGRAMMING 142. Introduction to Transac S-2000 Data Processing System, Philco Corporation, Government and Industrial Division, Philadelphia, Pa., May 1957. 143. A. Newell, J. C. Shaw, and H. A. Simon, Empirical explorations of the logic theory machine: A case study in heuristic, Proc. Western Jt. Compo Conf., Feb. 26-28, 1957, Los Angeles, Calif., pp. 218-230. 144. Automatic Coding, Proc. of the symposium held January 24-25, 1957, at the Franklin Institute, Philadelphia, Monograph No.3, J. Franklin Institute, Philadelphia, Pa. 145. Univac II Programming Manual, Remington-Rand Univac, Philadelphia, Pa. 146. Principal Characteristics of Bendix G-15D General Purpose Digital Computers, Bendix Computer Division, Los Angeles, Calif. 147. J. Jeenel, Programs as a tool for research in systems organizations, IBM J. Research and Development, 2, 105-122 (1958). 148. IBM 650 Manual of Additional Features-Magnetic Tapes, High-Speed Storage, Printer, Form 22-6265-1, International Business Machines Corporation, New York. 149. Univac Generalized Programming, Management Services and Operations Research Department, Remington-Rand Univac Division of Sperry Rand Corporation, 1957, New York. 150. H. Kahrimanian, Univac Programming Report, Sperry Rand Corporation, Philadelphia, Pa. 151. S. N. Razumovskii, On the question of automatization of programming of problems of translation from one language to another, Doklady Akad. Nauk S.8.8.R., 113, 760-762 (1957). 152. A. D. de Groot, fiber das Denken des Schachspielers, Rev. Psicol., 50, 73-104 (1956). 153. J. Wegstein and J. Cooper, Corbie system for the 704, BSCRB, National Bureau of Standards, Washington, D. C., 1957. 154. J. W. Carr III, Editor, Notes on applications of logic to automatic programming, Engineering Summer Conference, University of Michigan, Ann Arbor, Mich., 1957. 155. R. M. Graham, Translation between algebraic coding languages, Paper 29, Assoc. Compo Mach., 13th Nat!. Meeting, Urbana, Ill., June 11-13, 1958. 156. A. J. Perlis and J. W. Smith, A command language for handling strings of symbols, Paper 30, Assoc. Compo Mach., 13th Natl. Meeting, Urbana, Ill., June 11-13, 1958. 157. R. W. Berner and D. A. Hemmes, Computer language compatibility through multilevel processors, Paper 31, Assoc. Compo Mach., 13th Natl. Meeting, Urbana, Ill., June 11-13, 1958. THE USE OF DIGITAL COMPUTERS AND DATA PROCESSORS C. THE USE OF DIGITAL COMPUTERS AND DATA PROCESSORS H. T. Larson and R. B. Conn, Editors 3. Data Processing Operations, by M. J. Mendelson 4. Quantitative Characteristics of Data Processing Systems, by R. L. Sisson and R. G. Canning 5. Equipment Description, by J. W. Busby and J. H. Yienger 6. Facility Requirements, by E. Tomash 7. Design of Business Systems, by H. S. Levin 8. Accounting Applications, by A. C. Vanselow R. L. VanWinkle L. L. van Oosten E. D. Cowles H. Tellier 9. Inventory and Scheduling Applications, by C. E. Ammann C. W. Schmidt and R. Bosak 10. Scientific and Engineering Applications, by R. T. Koll 11. Handling of Non-Numerical Information, by M. E. Maron c THE USE OF DIGITAL COMPUTERS Chapter AND DATA PROCESSORS 3 Data Processing Operations M. J. Mendelson J. Introduction 2. 3. 4. S. 6. 7. 8. Data Collection Data Conversion, Transcription, and Editing Data Output On-Line Versus Off-Line Processing Scientific Data Manipulation Business Data Manipulation Checking 3-01 3-02 3-03 3-04 3-04 3-0S 3-06 3-13 I. INTRODUCTION Data processing begins the instant any action takes place which will generate information whose content will be a subject for subsequent analysis, and terminates only when all such analyses have been completed, records up-dated, and reports generated. In some instances it may never be completed since these outputs may themselves become new sources of data or evoke new pieces of information for processing. In any event, since data processing is a continuous and not a discrete process, planning for an efficient data processing system must begin at some point earlier than the generation of the first information and extend through all subsequent operations. This chapter will delineate and define the more important and basic operations which permeate all data processing situations. These definitions will serve to clarify the content of the succeeding chapters. 3-01 3-02 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 2. DATA COLLECTION It is important for the efficiency of the data processing operation that data be recorded in some form which admits of subsequent automatic processing. Generally, it is equally desirable that this recording be effected at the earliest possible point in the process since it is only at this time that all the contributing factors are simultaneously present, the adequacy and correctness of the record may be verified, and errors of recording rectified. In addition, the earlier the recording, the more the processing can be automated. Because of this desire, it is convenient to break data collection situations into two categories: (1) Processor controlled collection systems are those which are processor oriented. (2) Collection controlled collection systems are those which are collection oriented. This split is chosen since the subsequent processing may be profoundly effected by the category to which its data collection system belongs. Language, Medium, and Structure. These are important aspects of data collection systems. Language is the particular set of marks and symbols which are used to represent data in any particular consistent system. These may take such forms as printed characters, holes punched in particular places on a document, or groups of magnetic markings on a magnetizable surface. Medium is the physical unit on which the information is recorded and retained. Typical examples are the card which is punched, the paper which is printed, the magnetic tape which is magnetized. Structure pertains to the organization of the data, with respect to such factors as sequence, groupings, and special punctuations. Processor Controlled Collection Systems. These are systems in which the language, medium, and structure of the data collected are made to conform with the requirements of the input system of the data processor which will perform the subsequent analyses. Processor controlled collection systems represent the ideal situation from the viewpoint of data processing system efficiency, and should be achieved if the operation and the data collection process permit. Achievement of this goal eliminates time-consuming and possibly error-producing intermediate operations. Manual Systems. Intermediate operations are most common when data generation is manual and there is no alternative but for human operators to transcribe the data to machine language by a subsequent second manual operation of equipment vv'hich produces suitable media. In this instance, since the second manual operation is required, the characteristics of the processor input system can in great part determine the DATA PROCESSING OPERATIONS 3-03 nature of the transcription equipment and the structure of the transcription process. Automatic SysteJr/'s. ,Vhen data collection is automatic, it may still be possible to define the characteristics of the data collection system on the basis of the processor input system and produce input data suitable for processor assimilation. Two conditions must generally be met before this can be true. 1. The collection process and instruments must be such that they permit the collection of the data in a suitable form on a suitable media. 2. There exists no requirement that the primary data be available in a form for direct and immediate human utilization. Collection Controlled Collection Systems. Many data collection situations are not readily adapted to the above conditions. vVhere any combination of the process, the instrumentation, or human requirements determine any particular combination of the media, or language, or structure of the data collected, the system is called collection controlled. Data may also be forced into a particular structure by virtue of the requirements of remote transmission equipment. EXAMPLES. Scientific data collection is often analog in form and not suitable for digital processor assimilation. Business data must often be in a form suitable for human consumption and therefore they may not be in proper language, or on a proper media, or in a proper structure for direct processor use. 3. DATA CONVERSION. TRANSCRIPTION. AND EDITING Where data collection is collection controlled, an intermediate step consisting of a combination of conversion, transcription, and editing processes is generally required. Conversion is the process of changing data from one language form to another. Analog data may be converted to digital data; binary data may be converted to decimal data; data in one coded system may be converted to data in a second coded system. Transcription is the process of changing data from onc medium of recording to a second. Written records may be transcribed to punched cards; punched paper tape data may be transcribed to magnetic tape recording. Editing is the process of changing data from one structure to another. This may consist of changing the sequence of the data on the storage medium and of adding or deleting information. These functions are also usually required at the output end of the system where data must be transformed appropriate to its end use. 3-04 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 4. DATA OUTPUT At the other end of the data processing stream lies the problem of output data preparation. Here the end use of the data will determine their language, medium, and structure. Data output preparation may be conveniently categorized on the basis of this end use. In general, data are prepared by the processing system for use by (a) humans, (b) for later reuse by itself, or (c) for use by machines other than itself. Output Data for Human Use. The most common form of output use for human consumption is the printed document. This may take several forms: 1. A printed report whose entire content is generated within the processor, or a document generated from the insertion of information ona partially preprinted form such as an invoice or a check. 2. A graph or pictorial representation of a set of information. Output Data for Machine Reuse. The nature of data generated for machine reuse is often dependent on whether the information is retained internal to the machine's system or is to be transmitted outside the machine's domain for subsequent return and reentry. Magnetic tape files are an example of the former, punched card checks of the latter. Output Data for Other Machine Use. Data may often be generated by one machine for subsequent use by another. This may occur where a piece of processing equipment also acts as a data collecting device for later processing operations. EXAMPLES. The point of sale type of data processor which prepares punched tape for subsequent processing. Installations where remote data transmission by teletype is a system requirement. 5. ON-LINE VERSUS OFF-LINE PROCESSING Once the data have been organized in a suitable language, are on a suitable input medium, and have a structure suitable for assimilation by automatic processing equipment~ they may be subjected to a number of data manipulative processes. Of fundamental importance for consideration at this point is the time position of the data processor in the data processing sequence. A data processor is called off-line if data are collected on a storage medium and brought to the processor for processing at a later time. The data processor is called on-line if it participates directly in the data processing operation, manipulating the data as they In a second sense, if the output of the data processor is made available at practically the same time as the input data which called for the process, it is said to be an on-line processor, but if its output can satis- DATA PROCESSING OPERATIONS 3-05 factorily be produced with a significant time delay, it is said to be an off-line processor. EXAMPLES. A department store in which the daily sales activity is collected from a set of point of sale recorders and daily analyses compiled at the end of the day would be using the point of sale recorders in an on-line fashion and the data processor in an off-line fashion. An automatic airline reservation system in which' space availability, sales of seats, and reservation cancellations are automatically processed as they occur is an example of a system operating in an on-line fashion. Where the processor is in an on-line status and is required to keep pace with some physical phenomena, it is often referred to as a real-time processor. Example. A digital autopilot and control system which must accept current status signals from an aircraft's sensing system, process them, and provide proper control signals would be an example of a realtime processor. The determination of which status is required of a processor in a given data processing situation will have a profound effect on the entire data processing system to be employed. 6. SCIENTIFIC DATA MANIPULATION Scientific data manipulation functions can be characterized only in a broad sense. Most scientific problem solutions consist of a central processing scheme peculiar to the problem being solved working in conjunction with a set of standardized suboperations. Central Processing Methods. The central processing methods tend to be so highly individualistic as to defy classification. The alternative seems to be, therefore, to define classes of problems rather than classes of operations. See Chap. 10 for a detailed description of these classes of problems. Suboperations. Although the central process in a scientific calculation is unique, the suboperations it employs are generally drawn from a "library" of such operations which are common to many processing situations. The suboperations of such a library are of three maj or types: 1. Function Generation. Function generation, as its name implies, consists of the evaluation of a function for a given value of a variable. Obtaining the sine of a given angle or the square root of a given number is a typical suboperation of the function generation class. 2. Computing Sequences. Operations such as the integration step in the solution of a set of differential equations or the multiplication of two matrices in a coordinate transformation operation are common to many different scientific data processes. 3-06 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 3. Modification Operations. These are suboperations which are de'signed to have the effect of modifying the machine program to one more suitable to a given application. Typical routines of this class provide for such facilities as floating point arithmetic operations or complex number manipulation. 7. BUSINESS DATA MANIPULATION Since the initial applications of data processors in the business field have been largely of a record keeping and statistic reporting nature, it becomes quite possible to characterize business data manipulation on an operation basis. That is, rather than each application being unique unto itself as in the scientific field, business data problems tend to show a strong similarity of structure and generally can be shown to consist of combinations and sequences of some fundamental operations. As the modern data processors are applied to the business field, more and more of the data analysis will be turned over to the processor and, therefore, an increasing proportion of the business applications will tend to match their scientific brothers in individuality. Units of Information. The description of business data processing operations which follow will be greatly simplified by a definition of a few fundamental terms describing the basic units of information involved in a processing situation. The unit of information in any data processor is the binary digit. A binary digit may be defined as the amount of information described by a single yes-no decision. (See Vol. I, Chap. 16.) In electronic systems, all information is ultimately expressed in terms of binary digits. Although the binary digit is a fundamental unit of information within a data processor, it is of little use in communicating information to the human users of a system. The human user communicates by means of combinations of symbols each of which represents far more information than a single bit. The fundamental element of this set of symbols is defined to be the character. The characters of a typical business system consist of the numbers from zero to nine, the alphabetic symbols from A to Z, punctuation marks, and special symbols such as dollar signs, percentage symbols, and asterisks. A group of characters used to describe a piece of information is called a field. A field may contain any number of characters. A unit of information which may be described only by a combination of a number of fields of information will be termed an item. The particular field of an item by which the item is identified in any processing situation is often termed the key. An assemblage of items, usually ordered with respect to a key, necessary to describe a DATA PROCESSING OPERATIONS 3-07 complete system of information will be termed a file. The items of a file are often referred to as records. EXAMPLE. One example will suffice to clarify these definitions. An inventory file consists of a set of items each describing one unit of merchandise, and ordered according to the field containing the stock number as a key. Other fields of each item contain descriptive and quantitative information, such as color or amount on hand, expressed in terms of the basic characters available within the system. If such a file is recorded on a magnetic tape, the ultimate form of data representation is in terms of binary digits of information as defined by magnetized areas on the surface of the tape. Data Rearranging Editing. In addition to the editing functions required in order that data may be initially assimilated by a processor, there are a number of other data manipulations which may be grouped under the general category of data rearranging. Because the initial input medium is quite often one of the slower communication elements in the processor system, it is generally desirable to minimize the number of times that data are transferred from it to the processor. However, the initial input data quite often contain information which will ultimately be distributed to, and have an effect on, a large variety of different processing activities. It is expedient, then, to absorb the data from the input medium only once, and, in the process, create a number of different standard items of information each peculiar to its own end use. EXa1nple. A punched paper tape from a point-of-sale recorder may contain such diverse information as clerk number, customer number, stock number, quantity sold, sales price, state tax, and federal tax. From this information, reports and records such as clerk sales analyses, buyers reports, inventory records, customer billing, and tax reporting are generated. For each report, a specific subset of information recorded on the paper tape must be extracted, regrouped, and appropriately organized for the data processes which it will undergo. This type of processing thus constitutes a second kind of editing problem. Sorting. If it is assumed that a set of standard items relating to a given reporting function has been generated, it is generally required that the items be placed in some orderly sequence. The process of arranging a set of items of information into a sequence dependent upon a specific set of characters within each item is called sorting. The need for sorting information stems from two principal sources. First, many auxiliary storage systems used for the recording of files of information 3-08 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS are of a serial access nature. That is, the time for acquisition of a given item in a file is dependent on the relationship of its position in the file to the position of the last preceding item acquired. In such a situation, it is absolutely essential that the file be used in an orderly fashion in order to minimize the time delays of data acquisition. This is most easily accomplished by keeping the file in some fixed sequence and sorting the input information to that sequence before file processing begins. When suitable random access auxiliary storages (i.e., each data acquisition time is essentially independent of any preceding data acquisition) become available, file updating processes will cease to be a reason for sorting. However, the advent of such pieces of equipment will by no means eliminate the need for sorting since a second requirement for sorting exists which is independent of such equipment. Most reports generated for human use must be presented in an orderly fashion, and this order is quite frequently determined by the input data themselves. The buyer's report of our previous example is a record of the sales made in the departments which come under his jurisdiction. This record is only of use to him if it is presented in a logical sequence that can be determined only by sorting the input information, no preorganizing being possible since there is no control over what items will be sold on a given day. Merging and Collating. It is frequently required that two sets of items, each independently sorted according to a common key, be combined into a single set of items sorted with respect to that same key. This operation is called merging when the two sets of items have an identical item structure, and it is called collating when the two sets of items have independent structures (except for the common key, of course) . Merging operations are frequently used in obtaining a sort on a large set of data. They are often conveniently used when several different activities may affect a common file. For example, separate ordered reports may be required to indicate sales of merchandise to customers, receipt of merchandise from vendors, and returns of merchandise from customers. Each of these reports would require a separate sorting operation. Since each of these activities will affect a common inventory file, it is desirable to perform a merge or collation of these sets of data before the file updating process begins. Match-Merge. In some processing systems, a number of variations of the merge operation are provided. One such variation is called the match-merge. In this operation, one set of items is considered as a control set and the second as a master set. The result of the matchmerge operation is to produce an output set of items which consists of an ordered combination of the control set and those items of the master DATA PROCESSING OPERATIONS 3~09 set whose keys exactly match the keys of the control set. Such an operation is useful in selecting from a large file only those items which are actually to be operated on in a subsequent process. This is most frequently done where special equipment is available to accomplish the match-merge process since it relieves the equipment involved in the subsequent process of the task of recognizing, and time delay involved in bypassing, inactive items in the master file. Another variation of the merge process uses the control set to cause the insertion or deletion of items in the master set. Scanning. Scanning is the process of moving systematically through a set of data in search of the items whose key meets a specified set of criteria. Since in summarizing a set of sorted data, one wishes to accumulate all those items with a common key, it is necessary to scan the item keys until one is found which is different from its predecessors. The results of such a scan thus determine the exact point at which the current accumulation should be terminated and a new scan operation begun. Another common scan application is that of table-look-up. Many business functions can only be expressed in a tabular form whose entry arguments are nonuniformly spaced. A utility rate table where the rate changes do not occur at equal increments of consumption is an example of such a function. In order to obtain the correct function value for an arbitrary argument, it is necessary to scan the table until one finds an entry argument which is greater than or equal to the specified arbitrary argument. The result of the scan determines the exact point at which the correct function value can be found. A scanning operation also occurs when it is required to sift out of a set of items all those which have a common set of characteristics. The scanning of a set of loan payment records to determine all those which are delinquent is an example of such an operation. File Maintenance Almost without exception, every business application requires the maintenance of files. The addition or deletion of records and the addition, deletion, or modification of information within a record constitute the major elements of the file maintenance problem. The removal of the records of no longer stocked items from an inventory file or the deletion of the records of subscribers who have failed to renew a magazine subscription are typical examples of a record deletion operation. Similarly, the introduction of records pertaining to items that have just become active in a system constitutes the bulk of the addition of records type of operation. 3-10 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Nature of the File. An important determinant in the file maintenance process is the physical nature of the file system employed. If the information storage system of the file enforces, either by its physical structure or logical organization, a "nextness" relationship between records (i.e., no record may be inserted between any two adjacent records) it will be termed a continuous system. When no nextness relationship is implied, the file system will be termed discrete. Magnetic tapes and drums (without special index devices) are typical examples of continuous file systems. Punched cards represent the most common example of a discrete file system. If the system is such that a particular record may be modified, at least in content if not in space occupied, and replaced in its original position in the file without having any effect on the remaining contents of the file, the system is said to admit of selective recording. All discrete systems and some continous systems admit of selective recording. Continuous File Processing. In a continuous file system which does not admit of selective recording, it is necessary to make a completely new copy of the entire file whenever any portion of the file is to be modified, with an obvious concomitant time cost. Where the number of records to be modified is a small percentage of the total file, this time cost- can become quite excessive. If a continuous file system has the ability to locate a particular record independent of the data processor and its medium admits of selective recording, a large percentage of this time may often be saved provided the modified record does not require more storage space than is available. Any continuous system faces a severe problem when the file maintenance procedure requires addition and deletion of information in the file. Here, even though selective recording may be available, the nextness characteristics of the continuous system preclude the possibility of its use. The entire file must be recopied in such an operation. Discrete File Processing. Discrete systems generally obtain their characteristics in one of two fashions. 1. The actual storage medium may be divided into discrete pieces with a single record of information occupying one or more such pieces, and not more than one record occupying a single piece. In such a situation, it is trivially possible to record selectively, to expand, or to contract the file without disturbing unmodified data. 2. The actual storage medium is physically continuous but it is broken into discrete pieces logically by means of an index which is used to define where each piece of stored information is located. Such a system always admits of selective recording and of expansion and contraction of information. It is to be pointed out, however, that the index is a special r DATA PROCESSING OPERATIONS 3-11 file itself and has many of the problems of file maintenance inherent in its own structure. Further, many file modifications also require index modifications thus doubling the work required in these instances. After a reasonable period of use, the indexing system tends to become quite complex and cumbersome in its attempt to describe the locations of new records added, new pieces of old records stored in spaces not physically near their parent record, and spaces made available by the deletion of old records. In such systems, a periodic housecleaning and revamping of the file and its index is required for any reasonable efficiency in file processing. Retrieval of Information from Storage l\10st files are organized with respect to some key characteristic of the data they contain, with direct access to the file being available only through the specification of the correct key. For example, an inventory file is organized with respect to the item stock number as a key, and no item may be located directly without specific knowledge of its stock number. Thus, even though a verbal or technical description completely defining a single item may be available, direct access to the item is not possible without its stock number. In view of this fact, it is convenient to break information retrieval operations into two classes, one which is externally controlled and the other internally controlled. Externally Controlled Retrieval. The first class is termed external because sufficient information is available external to the file itself to determine the precise identification of the desired record. A request for the current status of a particular item whose stock number is known is an example of an external file operation. Internally Controlled Retrieval. On the other hand, it is frequently required that an item be located with respect to some characteristic other than the key with respect to which it is filed. This situation gives rise to the second class, which is internally controlled. Internal situations require that a scanning operation be applied to a file in order to accomplish the location of the desired information. (Many file systems have this as a requirement for locating information even when the key is known.) This may be further clarified by considering a particular application and a particular file system. Consider a loan account file, ordered according to account number, and stored on a selectively recordable magnetic tape in a file system which has the ability to locate any record if it is given the account number. The posting of payments in such a system would become an example of an externally controlled operation since it would be trivially possible to identify the proper account number when the payment is received. The process of determin- 3-12 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS ing delinquencies is an example of an internally controlled operation since the file must be scanned to locate those records in which no payment has been posted. Categorical Types of Information Retrieval. This operation brings up another characteristic internal operation of fundamental importance in automatic file systems. Information to be obtained from a given file often consists of locating all those records whose characteristics match a prespecified set of characteristics. An inventory file might be scanned in order to produce a list of all those items which are used in the manufacture ,of a specific product, which are in short supply, and which require a purchase lead time of six weeks or more as an example of such an operation. Manual systems have provided for such information searches (which the author terms category search), on a limited basis, provided the particular set of classifying characteristics were known at the time the system was installed. Edge-punched cards are a common example of such a system. Automatic systems for the first time provide the user with the ability to provide economically for internal file operations of this type on a large scale and not necessarily predetermined basis. It is apparent that giving the business man the ability to scan his records for information matching any prescribed set of characteristics provides him with one of the most powerful analytical tools available in modern data processing equipment, and that this feature will be one of the first to be exploited after the first rush of straight data reporting jobs have been taken care of. The Interrogation Problem. One of the most important and at the same time difficult problems facing the user of automatic data processing equipment in the business field is the necessity for making file information available to both the processing equipment in its language, structure, and medium and to the human users in theirs. Unfortunately, situations arise where the people using a data processing system simply must be able to obtain specific information from the records contained within the system on a random and reasonably rapid basis. A department store customer who wishes to pay up his account before leaving town on an extended trip must be provided with his current balance within a short time of his request. One simply does not tell him that he cannot leave town until the twenty-fifth because that is when his bill is due to be computed according to the current machine billing procedure. Yet such data as this must be contained within the 'automatic auxiliary storage of the processing equipment and cannot be simultaneously and economically duplicated in a form satisfactory for human use. At the present time, no really satisfactory solution for this problem exists. Present DATA PROCESSING OPERATIONS 3.13 methods generally require a printing of a minimum amount of information for each record in the file to serve as a basis for a manual interrogation process. This problem can be readily handled by a system with a random access storage, but no such device is today capable of providing sufficient processing speed for the bulk data processing activity to justify its inclusion for the interrogation problem. In certain on-line data processing systems with reasonably slow input-output requirements such a solution is provided. The automatic reservation devices employed by some airlines and railways are examples of such systems. 8. CHECKING Few systems can tolerate the introduction, generation, or perpetuation of erroneous information. Of course this statement applies to a greater or lesser degree depending on the particular situation. One erroneous data point in a missile tracking situation will not have profound effect on the final analysis. A mistake in an inventory record of a few hundred washers would not upset a hardware warehouse, but a similar mistake might be catastrophic to a supplier of household laundry equipment. Error detection and correction takes on a considerably more important aspect in automatic data processing situations than it has in manual systems for several reasons. The data within an automatic system does not pass under human scrutiny where reasonability judgments may readily take place. The sale of five thousand fur coats might be readily accepted by an automatic business system, whereas it would be immediately questioned by its human operators. Just as important perhaps is the fact that the user has a considerable investment in his data processing system and that location and error correction may entail the execution of a difficult, time-consuming, and costly operation. It is therefore extremely important that provision be made to detect and provide correction procedures for all errors which may be introduced in any phase of operation of an automatic system. Checking procedures may be described as being either automatic or programmed. Automatic checking systems provide for the verification of the correctness of all operations by special equipment built into the automatic processing system. As such, automatic checking systems do not introduce any new function for the system user. Programmed checks, however, are basic data processing functions because they consist of the verification of the correctness of system operation by means of special procedures introduced by the system user. Input Data Checking. Three techniques are in common use for the checking of input data. 3-14 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 1. \Vhere the sequence with which data are entered is important, each input item is made to contain a sequence number, and a programmed check for the continuity of this sequence number is provided. 2. Where the correctness of a particular set of input characters is especially important, a redundancy check may be employed. In this case, the set of input characters is augmented by the addition of one or more characters whose nature is determined in a well-defined fashion by the input characters with which they are associated. Subsequent to the input operation, a programmed check is performed to verify that the input characters and their associated check characters satisfy the correct relationship. An example for numerical data entry verification is to provide a "mod II" check character. This character is obtained by alternately adding and subtracting the digits of the data, casting out any multiples of 11 which may accrue during the process. (The mod 11 check digit for the number 52719 is obtained as 9 - 1 + 7 - 2 + 5 = 18, 18 - 11 = 7.) This digit is then entered along with the data (thus 52719 would be entered as 752719), and a programmed check provided to ensure that the check character matched the data entered. The mod 11 check ensures that no single digit was entered incorrectly and that no transposition of digits occurred, and is, therefore, an excellent check against the most common types of operator transcription errors. 3. The third common form of input data check is the sum check. In this instance, a set of input items are arbitrarily chosen and each field of· each item is added into a common total. This total is then entered together with the set of input items to which it refers and a similar summing operation is performed subsequent to the entry process. Checking of Data Processing. Operations internal to an automatic data processor often permit programming checks. Internal operations may be repeated and results compared or a given result may be obtained by two independent methods. It is often the case that two independent and necessary results can act as a crosscheck against each other because some fundamental relationship is known to exist between them. It is sometimes possible to provide reasonability type checks on the results of computations. In scientific problems differencing techniques will reveal out of line results. In business data processing situations, reasonable activity levels may be established and recorded for checking purposes. Such a check would remove the possibility of recording a sale of ninety-five mink coats because of the entry of an incorrect stock number in an inventory updating procedure. Output Data Checking. Checking of data transmitted from the internal processor to output equipment is usually accomplished by automatic checking equipment since it is generally impossible to acquire DATA PROCESSING OPERATIONS 3-15 any information on output results for programmed checks. One major exception to this is the checking of magnetic recording. No automatic check of magnetic recordings is satisfactory that is not obtained by a direct reading subsequent to writing of the actual magnetic record produced. Since such a system is not generally provided in current equipment, the only satisfactory check of magnetic recording is a programmed check in which the data are read back from the magnetic medium and compared with those which were transmitted originally. It is sometimes possible to circumvent this requirement by delaying the read back check until the current recording operation has been entirely completed, and then executing some useful processing operation utilizing the recorded information. By this means a writing error from the previous operation can be caught and corrected during the current operation provided the magnetic system admits of selectable recording. c THE USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Chapter 4 Quantitative Characteristics of Data Processing Systems Roger L. Sisson and Richard G. Canning I. Determining System Requirements 2. Basic System Characteristics 4-01 4-02 3. Basic Equipment Characteristics 4. Measurement of System Factors 4-04 5. Relating System Characteristics to Equipment Characteristics References 4-09 4-04 4-16 I. DETERMINING SYSTEM REQUIREMENTS The objectives of this section are to point out the basic characteristics or factors which exist in any data processing system, and to discuss methods of (a) measuring the system characteristics and (b) relating the system characteristics to the possible equipments for performing the systems functions. The boundaries of the system under consideration are set to exclude areas over which the designer has no control. The information flowing into the system across these boundaries determines the input characteristics, and the type and nature of the inputs can usually be measured. The information that flows out of the system is produced in accordance with clearly defined requirements which are the output characteristics. It is assumed that the designer has complete control over the structure within the boundaries, being limited only by (1) the techniques known, (2) equipment, (3) the economics of the situation (in military systems 4-01 4-02 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS values other than dollar economy might be defined), and (4) policy restrictions. The steps in designing a data system are: 1. Determine and clearly state requirements. 2. Determine the sources of data (outside the system) which allow the realization of these requirements. 3. Determine, from an analysis of the requirements, the sequences of data manipulations and transmissions to meet the requirements. 2. BASIC SYSTEM CHARACTERISTICS Input Factors. 1. The rate at which data come into the system and the fluctuations in this rate for each source of data. See Vol. I, Chap. 16. 2 .. The significance of the data. Each quantity must refer to some entity in the physical or economic system, either explicitly, by symbols or descriptive matter, or implicitly, by its location in relation to other data. Output Factors. 1. The rate and variations in rate. 2. The significance of each output specified explicitly (e.g., by a heading), implicitly (by format), or by data previously supplied. An output might be a variable which is a function of one or more others, the rate of change (trend) of a variable (occasionally higher order rates of change are required), or the past history of a variable (sometimes expressed as the integral). Internal System Characteristics. The internal structure of a system may vary, depending upon the job being done. However, many data systems fall into the following pattern: 1. Data collected. Input recorded, ready for use by the system when required. Conversion, transcription, and editing might occur here. See Chap. 7. 2. Input data stored (filed), often by storage of the recording medium. 3. Data transmitted to a central point (data gathering). 4. Data batched, i.e., collected into groups for ease in processing. 5. Data stored or filed, to make it possible: (a) to hold for processing or until external processes affecting the data occur; (b) to maintain records of past events (historical or integral data); (c) to combine data for processing; (d) to determine rates of change of data (trend analysis). 6. Computations and logical manipulations performed on the data, such as: (a) maintenance of the files noted in step 5; (b) computations required for the outputs. The inputs for these steps consist both of incoming data and data extracted from the central files. QUANTITATIVE CHARACTERISTICS 4-03 7. Conversion and transcription of the data to a usable form. Table 1 illustrates these steps in typical systems. TABLE 1. EXAMPLES OF DATA PROCESSING SYSTEM CHARACTERISTICS System Function 1. Record data 2. File data (temporary) 3. Gather data 4. Batch data 5. Store data 6. Manipulate File maintenance Output pre para tion 7. Transcribe Business System (Inventory Control) Data Reduc- Computation Control tion (Guided (Linear (Tape Driven Missile) Programming) Machine) Record trans- Not recorded in missile; actions on transmit to keyboard ground where recorded on tape (Not done) Store tape Record parameters on paper Hold data (paper) Organize Transmit Send tapes to processing parameters in electrically to paper center form required by program tape punch Put tapes Organize Combine in proper parameters in paper tapes form required sequence by program File on mag- Not required File on magnetic tape netic tapes Bring master files up to date Prepare reports, orders, etc. Print out Not required Linear program computation Linear proEdit, caligram compubrate, compute (data tation reduction) Print out, Print out answers plot Record on magnetic tape during preparatory process Hold tapes Receive error signals, and signals from tape None (on line) None (on line) None (on line) None (on line) Convert to servo signals to guide machine tool General System Factors. 1. Accuracy, correspondence of results to reality ( error rate). 2. Precision, repeatability. 3. Flexibility, ability to solve new problems (meet new situations). 4. Cost (or value, e.g., to the military). 5. Installation time. 6. Reliability, probability of the machine being available when needed. 4-04 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 3. BASIC EQUIPMENT CHARACTERISTICS Table 2 outlines briefly the factors which characterize data processing devices. TABLE 2. BASIC EQUIPMENT CHARACTERISTICS Factors Defining Data Processing Characteristics Peak capacity to transmit information Error rates Storage capacity Maximum rate of data entry or extraction Access time to individual elements of data, minimum, average, and maximum Basic operations the equipmEmts can Arithmetic and logical manipulators perform Rate of performance of basic operations Input rate Output rate' Data converters, including input and Form of input to converter Rate of conversion of data from input output units form to converter output form Form of output from converter Equipment Communication or transmission devices Storage (storage filing) elements 4. MEASUREMENT OF SYSTEM FACTORS This section describes how the characteristics described above are measured and discusses them in more detail. Location of Sources of Data. Table 3 gives examples of sources of data and typical data rates. TABLE Type of Data Processing, Guided missile data reduction Scientific computation Business systems 3. EXAMPLES OF DATA SOURCES Typical Data Rates 0.1-10,000 binary digits per second A few binary digits per Person who defines the problem minute Devices (or persons) that re- From a few binary digits per day to 200 binary cord data about transdigits per second actions (sales, purchases, work done, etc., and the results of management decisions) Location of Source Instruments in the missile QUANTITATIVE CHARACTERISTICS 4-05 Source Data Units Source data rate is measured in number of binary digits per second (as a function of time) entering the system. If data are recorded in a definite format, it is possible to use other units such as: (1) documents per unit of time, where all documents have approximately the' same number of digits; (2) transactions per unit of time, where the same data are recorded about each transaction, e.g., points between which a machine tool is directed to travel. ' The data may enter the system at a uniform rate; but more often they enter at random intervals so that a choice must be made between a system handling the average rate but introducing delays, and the more expeniive system which is capable of handling peak loads. Measurement of Source Data Rates. This is usually performed by one of the following methods. 1. Estimating from knowledge of the type of source. For example, knowing the limits of performance of a guided missile, it is possible to estimate the maximum rate of data transmission required to record faithfully the variation in the various factors, e.g., fuel pressure. 2. Determining the existing rate of input, e.g., counting incoming sales orders over a period of time in a business system. 3. Knowledge of the problem. For example, by knowing the size of the matrix problem to be solved, it is possible to determine the number of coefficients to be fed into the computing system per iteration. Storage of Data The two key factors in data storage systems are (1) storage capacity and (2) rate at which data must enter and leave storage. Storage Capacity. This quantity is basically measured in binary digits. However, a particular system may use derived measures. For example, in a decimal system, storage may be measured in decimal digits. Often a system handles data in groups of digits because of the storage media used (e.g., cards) or because of the equipment design (many equipments handle small groups of digits called words). Then the storage capacity is stated in terms of the number of words in the storage or the number of cards it will hold. In every storage or filing system, data within the storage are located by an address. The address is a number (or code) which the access or scanning equipment recognizes, and it is used to locate the data for insertion or withdrawal. Data Entry. Entry of data into a storage system can occur in two ways: (1) the data can already be arranged into address sequence; (2) 4·06 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS data arrive at the storage randomly with respect to the address at which a given item will be stored. These are referred to respectively as sequential and random arrivals. The requirements imposed on the system may determine the sequence in which data arrive at the storage. Very often, however, this choice is left to the system designer. For example, the designer may allow data which are arriving in a random fashion to enter storage as they arrive, or he may first collect a group of the incoming data and order them on a unit which sorts them into the desired sequence of address numbers. Then this set of data can be fed into a storage sequentially. Thus the system for entering data into storage cannot be divorced from the types of equipment available. Collation Ratic:}. This is defined as the number of unit records (of a. file) used in a given period of time to the total number of unit records in the file. With low collation ratios (few records affected per cycle time) the use of sequential data storage units becomes costly. If the collation ratio is high, and if the data can be arranged in the proper sequence, sequential storage may be more practical. Size of Files. The process of determining the size of files and the access type and time required is an integral part of the system study and involves a detailed analysis of the problem. The file size depends upon: (1) instantaneous rates of data coming into and out of the file and (2) the number of items ,which the file represents. Access Requirements. These are determined by: (1) the rate of information arrival and withdrawal, both average and peak; (2) the maximum permissible delay between the arrival of an inquiry of the file and final response to the inquiry; (3) the size of the file. Computation and Logical Manipulation The basic operations performed by a data processing system are described in Chap. 3. The job of the system designer is to arrange these basic operations so that the required outputs are obtained in the most economical manner within the permissible time limits. An important question is how to measure computation and manipulation. Almost every system has basic items or transactions which it is processing (e.g., payroll records, points in space-missile position, iterations of a relaxation computation). Manipulation Rate. This can be measured as items or transactions processed per unit time. Examples of the items of transactions that define the size of a given data processing task may be obtained by studying Chaps. 8, 9, and 10. Computation Rate. As with storage, the computational characteristics of a system often cannot be completely measured without relating QUANTITATIVE CHARACTERISTICS 4-07 the problem to the equipment which can perform the job. If a general purpose computing device is used in part of a system, it can be programmed to perform any computational procedure required. On the other hand, a special purpose computer might be designed to perform only that sequence of operations required of a particular system. The problem in either case consists of estimating the economics and time involved. Output Factors The form of the output is determined by the requirements of the elements, external to the system, which are to utilize the information from the system. The factors to consider when determining these requirements are: (1) the language or form of data presented, e.g., analog or digital; (2) the format, that is, the arrangement of data; (3) the medium (see Chap. 5); (4) the rate at which data will be produced and the fluctuations in the rate. The Rate of Output Data. This can be derived by knowing the input data rates from the data sources, the computational procedures used, and the requirements for output information content. Since this process is rather lengthy in complex systems, it is sometimes sufficient, for quick estimates of the output factors, to count or to measure the output rates in an existing system. These data must be used carefully, however~ because the new system is often being designed to provide some new and different outputs. In some cases t,he new system will result in more output data; in other cases, the output rate is reduced because the new system performs more of the decision-making functions internally (see Vol. I, Chap. 15). Errors and Reliability Important characteristics whieh must be considered at every point in a system are error rate and reliability. Error Rate. All the characteristics mentioned above (for instance) rate of input and rate at which computations proceed) must also include information on rate at which errors may occur. With good design it is possible to reduce the probability of undetected errors to such a low value that it is effectively zero in actual operation of the system. But when error detecting and correcting methods are included (see Chaps. 5 and 13), it becomes important to recognize that the effective rate at which data are arriving or computation is proceeding is reduced because part of the information is redundant (i.e., involved with the error correction procedures). 4-08 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Reliability. The reliability requirements of the system are also extremely important. There are some systems (for instance, the control of air traffic) in which, ideally, no failures can be tolerated. On the other hand, there are other systems such as certain business systems in which machine failures would merely delay the overall process, but would cost little money and certainly no lives. Where extremely high reliability is required, the cost of the system must be expected to be higher. Flexibility A data processing system is a tool designed to process information. As with any tool, there may be "tool design" and also "setup" time and effort required, if the tool is expected to perform a variety of specific jobs. The tool design aspect of a data processing system includes such things as programming a computer, or wiring the plugboard of punched-card or analog computing equipment. Setup includes such steps as entering the program into the computer memory and inserting the plugboard. Where a large variety of jobs must be processed, the system must be flexible, and the ease. and rapidity of designing and setting up for a new job become vital. In high volume applications, the programming (design) occurs less often (usually only to make improvements) so that flexibility is less important. In this case, special purpose machines designed to perform only one specific job can be effective. Flexibility is measured by comparing the time and cost for preparing for a new job required by the systems under consideration. Cost Given specific system characteristics, there generally are specified economic limits within which the equipment costs, installation costs, and operating costs must fall, if the system is to be satisfactory. Equipment Costs. These include the cost of data transducers and recorders, transmission equipment, data converters, input devices, computers and data processors, output devices, auxiliary data storage equipment, office furniture, supply storage equipment, air conditioning machinery, and maintenance equipment. Installation Costs.- These include three maj or items: 1. The planning of the new data processing system, organizing for its inception, and training personnel to operate the new system (see Chap. 7). 2. The preparation -of the physical facilities for the new equipment, and the actual installation and check out (see Chap. 6). 3. The operation of the new system in parallel with existing systems QUANTITATIVE CHARACTERISTICS 4-09 for a period of time, to establish its reliability and shake out the system bugs before depending upon it (see Chap. 7). Operating Costs. These costs include the types of costs associated with operating any system of men and machines. The major items of operating costs are depreciation or rental, salaries and wages and associated overhead, maintenance, space, supplies, and power. Installation Time An important overall system requirement or factor is the time required to put the system into operation. The major steps which account for the installation time are those listed under installation costs in the previous paragraph. 5. RELATING SYSTEM CHARACTERISTICS TO EQUIPMENT CHARACTERISTICS The equipment characteristics are described in detail in Chap. 5. This section will attempt to show how the system designer must relate various system factors in selecting equipment. Recording, Transmission, and Temporary Storage The input source factors are determined by location, rate, and content. These affect equipment characteristics in several ways: 1. Devices may be needed for converting physical phenomena (pressure, shaft position) or informational inputs (quantity of items processed, item of a sales order) to a form which the data processing equipment can then handle, such as electric impulses, punched cards, and mechanical motions. 2. Devices for recording these data for temporary storage may be required. 3. The temporary storage media itself must be selected. 4. Communication links to bring the data from sources to intermediate and to central processing centers are usually involved. Location. The location of data sources in relation to each other and to the central processing units of the system determines the need for the recording, temporary storage, and communication links in the input part of the system. Rate and Content. The rate at which data are generated at the sources in relation to each other and to the processing rate determines the need for temporary storage within the input system. If data are generated at peak rates which differ from processing rates or the rate at which data are generated at other sources, some temporary storage is required. Often data are generated intermittently and/or processed 4-10 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS intermittently, so that storage is required to hold data during inactive periods. The need for and size of temporary input storage is related to the type and size of storage facilities in the central processing unit and to the type of communications available. For example, broad-band links which handle peak loads of information may require little storage; links available only intermittently may create a need for more input storage. Temporary input storage is generally sequential, since any rearranging to be performed is accomplished at the main processing center; that is, data are read out in the same sequence as received but sometimes at a different rate. The need for conversion is brought about when, for example, the source data are in analog form and the processing or communications are digital. In almost every system the data as they arrive from the source must be converted to some other form or medium for further processing into the system. For examples, see Table 4. TABLE 4. EXAMPLES OF DATA CONVERSION Source Form Pressure Shaft position Handwritten figures on paper Coded information on magnetic tape Required Form Electric voltage Digital signals (pulses representing numbers) Punched cards The same information in a different code on paper tape Relation of Data Source and Input Equipment. 1. Guided missile system. The data are generated at various rates at points throughout the missile (see Fig. 1). The data are converted EXAMPLES. Missile Ground Transducers Pressure Selection and temporary storage I I I ransmltter I "'-------' T I Air flow Communication . I Receiver Temporary storage Central processing Results I FIG. 1. Relation of data source and input equipment, guided missile system. QUANTITATIVE CHARACTERISTICS 4-11 by transducers from the physical form to a fOfln convenient for transmISSIOn. They are transmitted to a central air-to-ground transmission link by communications systems within the missile. Some temporary storage may be required here as the internal transmission rate may differ from the rate at which air-to-ground communications occur. The data are then transmitted to the ground. Here they may be communicated to a processing center, or may be stored (e.g., on magnetic tape) and then processed later. 2. Processing sales orders. The data originate at random times with the customers and are communicated by mail to a branch office of the firm (see Fig. 2). Here they are stored, by holding the media, and then Customers FIG. 2. Branch Office Main Office Relation of data source and input equipment, sales order processing. eventually further translated by retyping into standard forms and punched on paper tape. Data are then communicated (by teletype, for example) to the main office where they may be stored again, and finally processed on an intermittent basis. Storage Equipment (Memory Units) The storage capacity of the required equipment relates directly to the storage requirements in the central processing system. There must be provision for equipment to hold the number of binary digits (basically) that must be stored. The rate and sequence in which data will arrive partially determine the type of access or scanning system required. In a sequential storage the access mechanism locates the desired item by scanning one item after another, usually in order of the address numbers. In a random access storage, the access mechanism can go dir@ctly to the desired item (address). Most storage systems are a compromise. Table 5 shows that many access systems are partly random and partly sequential. 4-12 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS TABLE 5. SCALE OF DATA STORAGE ACCESS METHODS Examples Completely Sequential Tape (magnetic and paper) Tape drum and tape loops Magnetostrictive lines. Acoustic lines Scale of Randomness (Arbitrary) Magnetic drum Semlrandom Disk array ledger card Completely Random Magnetic cores The functional difference between random and sequential access systems ifil great, and the system design will vary appreciably, depending upon which is used. With a sequential storage; data may have to be batched and sorted by address numbers before entering the file or storage. The choice between random and sequential methods and equipment is affected by the collation ratio. See Sect. 4. With sequential equipment it is often nearly as easy to examine all unit records of a file as it is to examine a few, so that systems with a high ratio can be processed almost as cheaply as those with a low ratio. In a sequential system access time is measured for two cases: (1) time to read or write the next item in sequence; (2) rate at which data are transferred when transferring continuously. The access time is measured as the time required to locate the desired item, sometimes termed the search time. If not a completely random system, the average access time is given. If a naturally sequential system (e.g., magnetic tape) is used as a random access system (which is usually possible) then the system would have a long mean access time with a large variance or range. See the magnetic tape entry in Table 6. The naturally "random" system is QUANTITATIVE CHARACTERISTICS TABLE Storage Device Magnetic coresa Mercury delay linesa Magnetic drums Univac file computer drum Univac Larc drum Datatron druma Magnetic tapes Tape strips (data file) Magnetic disks Photographic disks co 6. 4-13 ACCESS TIl\IES OF STORAGE DEVICES Representative Capacity 5000-600,000 binary digits 20,000-50,000 binary digits 180,000 alphanumeric characters 3,000,000 decimal digits 40,000 decimal digits 1,000,000-28,000,000 characters per reel 20,000,000 decimal digits per unit 6,000,000 decimal digits 4,000,000 decimal digits Representative Access Times Min. Mean Max. 10 j.l.sec 10 j.l.sec 10 j.l.sec 50 j.l.sec 200 j.l.sec 400 j.I./Sec 1 msec 18.5 msec 36 msec 3 msec 1.25 sec 2.5 sec 0.5 msec 8.5 msec 10 msec 2 min 17 m~ec 10 min 2 sec 16 sec 48 sec 150 msec 500 msec 800 msec 0.1 msec 12.5 msec 25 msec Internal storage devices. characterized by a short mean access time with a small range or variance (e.g., see magnetic drums and magnetic cores in Tab1e 6). Mixed systems often have a short mean time but a wider variance than the naturally random system. For example, a group of short tapes might have a mean access time of 100 milliseconds and a range of 5 to 200 milliseconds. See Chap. 20. Computational and Logical Proceisors The computational and manipulation facilities required are determined by the processing which must be performed. Table 7 reviews some of the characteristics of digital computing equipment and their relation to system factors. The size of storages (2 and 3) will be influenced in part by whether the system is on line or off line. On-line systems require large internal memory to hold programs for all possible occurrences, but small auxiliary memories. Off-line system must have large auxiliary storages to hold batches of data, but can be operated with smaller internal storages. The flexibility required by the system determines the requirements for ease in reprogramming or rearranging the equipment. Analog computing equipment is often used when a number of different problems must be 4-14 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Table 7. EQUIPMENT FACTORS AND RELATED SYSTEM FACTORS Equipment Factors 1. Internal operation, including index registers, buffers, special commands for sorting, merging, floating point 2. Internal storage Related System Factors 1. a. Manipulations required 2. 3. Auxiliary storage 3. 4. Capacity: number length, alphabetic facilities 5. Reliability 4. 6. 7. 8. 9. 5. Cost 6. Physical size 7. Availability 8. Auxiliary features: converters, "file 9. processors," sorters b. Flexibility and ease of programming and setup required The need for storage of factors and programs during computation The requirements for storage of all information in the system at any one time Language and size of the fields in the data processed Freedom from undetected errors required; efficiency required (effective computing speed, including redundancy for error detection and correction, and down time) System economics Space available System installation plans Auxiliary system requirements: Conversion, transcription, editing, sorting and file manipulation requiremEmts (not to be performed in a computer) solved quickly, since it is easy to program or design the system for a particular problem. Programming for a digital computer is more costly, although special features and techniques are available to make programming easier. Programming ease can be "bought" by sacrificing computing time through the use of automatic programming techniques. See Chap. 2. Output Equipment The form and media on which the output must be presented determine the type of output equipment. The equipment must accept the data in the form and on the media available from the processor proper. The output equipment must translate or convert these data to a required output form, including inserting the format arrangement or position data inserted to make interpretation easier. The equipment must handle the data at the required rate. Details such as requirements for multiple copies, reproduction copies, instantly visible copies, and other factors not necessarily explicit in the data themselves must be considered. The control of format may be performed in two places, in the computational facilities or within the output units themselves. In either case QUANTITATIVE CHARACTERISTICS 4-15 the format control must be able to provide the foreseeable range of fonnats. The output media required, of course, determine the type of output units which can be used. If the computations are performed digitally and an analog output is required, a digital-analog converter is required having the proper characteristics. In many output systems it is common to measure the output rate in terms of the output form rather than basic binary digit rate. Thus, we have units such as decimal digits per second, points plotted per minute, lines printed per second, and cards punched per minute. 'Vhen output information rates are given in terms of these larger units, additional information is often needed to determine the actual information rate. For example, the information per line depends on the number of characters in each line. The output requirements also can affect the computational procedures. They can affect the sequence in which computations are performed, so that data arrive at the output in the correct order. TABLE Type Parity Redundant digits Duplication Reasonableness Consistency 8. TYPICAL REDUNDANCY CHECKING METHODS Typical Use Checking magnetic tape data transfers Checking internal computer transfer and arithmetic operations, e.g., in Datamatic 1000 Self-checking number systems Calculating and checking "batch" or control totals Repeating complete message transmission (duplication in time) Duplicate arithmetic logic, unit, e.g., in Univac Checking to see if data deviate by a given percentage from an extrapolation of previous data Checking agreement of stock number and name Redundancy One binary digit of 7 4 binary digits of 40 One decimal digit of 7 Typically 10 digits of 1000 100% 100% The computation involved in extrapolation, comparison and storage of limitsa Storage of correct combination and checking calculation timea Completeness Checking to see if a field is Checking calculation timea missing or if an item is skipped in a sequence a Such checking typically consumes 10% of the time for a complete calculation. 4-16 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Equipment Error Rate and Reliability The undetected error rate permissible directly affects the type of equipment which can be selected for a given system. Where extremely low undetected error rates are required a large amount of redundancy must be introduced into all phases of equipment. Redundancies of about 17 per cent (e.g., a parity bit for every six information binary digits) are common. Redundancy as high as 100 per cent, that is, complete duplication, is used (e.g., equipment duplication as in the Univac arithmetic unit, or a time duplication as in the IBM transceiver). Communication channels must carry extra data, in the form of error-correcting codes, for instance. Computational procedures must include a large number of checks in the form of redundancy (duplication, perhaps) and consistency checks. See Table 8. REFERENCES 1. R. G. Canning, Electronic Data Processing for Business and Industry, Wiley, New York, 1956. 2. C. W. Adams, Automatic data-processing equipment: a survey, Electronic Data Processing in Industry, pp. 125-138, American Management Association, New York, 1955. c THE USE OF DIGITAL COMPUTERS Chapter AND DATA PROCESSORS 5 Equipment Description J. W. Busby and J. H. Yienger I. 2. 3. 4. 5. 6. 7. 8. General Equipment Description Characteristics of Electronic Data Processing Equipment Input Equipment Storage Equipment Output Equipment Arithmetic and Logic Unit Control Equipment Typical Electronic Digital Equipment References 5-01 5-04 5-09 5-24 5-33 5-38 5-40 5-43 5-43 I. GENERAL EQUIPMENT DESCRIPTION Organization of Electronic Dig~tal Equipment All electronic digital computers and data processors have five functional elements, namely input, storage, arithmetic and logic, output, and control, as shown in Fig. 1. The input unit is the means of getting both the data to be processed and the directions for processing this data (control instructions) into the equipment. The storage unit provides a resting place for all data placed into the equipment, for data developed during the processing operations, and for the instructions that direct the operations. The arithmetic and logic unit processes the data according to the rules of arithmetic and a predetermined logic. The output unit accepts the results of the processing and passes them out of the equipment. The 5-01 5-02 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS control unit directs the processing operations by informing the various units when and how they should perform. The arithmetic and logic, storage, and control units are referred to as the processing unit. Processing unit 1'-'-'-'-"' I· Arithmetic and logic unit ,. I I I I I I I '-------t--- I . I . ii I Control unit =-~_+ L. _______.__ ._· _J I I _____..:J Organization of electronic digital equipment. Transmission: information - - ; control - - -. FIG. 1. Major Components. The major components that make up electronic digital equipment are illustrated in Fig. 2. Input Media. The most widely used input media are punched cards and magnetic tape. They contain the data to be processed and the directions for the processing in a coded form. Storage Media. The most widely used storage media are magnetic cores, magnetic drums, and magnetic tapes. They hold the data to be processed and the instructions for the processing in magnetic form. Magnetic drums and magnetic cores are permanent components of the storage unit, whereas magnetic tapes may be disconnected from the processor and replaced with other reels. Arithmetic and Logic and Control Units. The arithmetic and logic and control units consist of electronic circuits. Output Media. The most 'widely used output media are punched cards, magnetic tapes, and printed reports. These media are used to record the results of the data processing. Punched paper tape, electric typewriters, visual displays and special electronic equipment can also be used for output. OUTPUT m -0 c -a ~ m Z -i om en () ~ -a -i o Z PTlfNf£l) l1£POPTS _ _ . _ _ '--....1 Cl"I FIG. 2. Components of electronic digital equipment. bw 5-04 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS General Purpose and Special Purpose Equipment. General purpose electronic digital equipment has the ability to perform a large variety of problems. This equipment is designed to perform a set of basic arithmetic and logical operations. The sequence of the operations executed can be readily changed by changing the stored program. This feature makes general purpose equipment very versatile and results in a flexibility that permits it to be used in a variety of applications. Special purpose electronic digital equipment have the following characteristics: . 1. They are limited in the types of problems they can solve. 2. Most special purpose equipment is designed for only one particular application. 3. The sequence of operations which special purpose machines execute is often fixed into the control unit. To change this sequence, it is necessary to make an engineering change within the equipment. 4. Special input media are usually employed. EXAMPLE. Reservation machines (see Chap. 9). Distinction between Scientific and Business Machines. There is no sharp dividing line between scientific and business electronic digital equipment. In general, the two kinds of machines have the same functional organization and can do the same things. Electronic digital equipment for scientific applications is designed with emphasis primarily on the speed of arithmetic operations and the ability to perform complicated. arithmetic processes. Scientific computations are characterized by generally low volume of input and output, little or no reference file requirements, and extensive repetition of internal arithmetical operations. Electronic digital equipment for business applications is designed with emphasis primarily on fast means of transferring data into and out of the equipment, large capacity file storage, and the ability to manipulate data. Business data processing is characterized by voluminous file storage requirements, high volume input and output of data, and generally nominal amounts of internal computations. New designs tend to combine the features of scientific and business machines. 2. CHARACTERISTICS OF ELECTRONIC DATA PROCESSING EQUIPMENT Number Systems. Numbers may be described by the digits composing them and the number system on which they are based. The number system used in everyday living is the decimal system, based on the number 10. Electronic computers use some form of the binary number system (see Chaps. 2 and 12). EQUIPMENT DESCRIPTION 5-05 The conversion of a decimal number to a binary number and vice versa can be performed by the electronic digital equipment. The basic arithmetic operations of addition, subtraction, multiplication, and division can also be, performed in the binary system. See Chaps. 12 and 18. Coding of Information. The numerical data that have to be processed are usually in decimal form on the input documents, and the results of the processing have to be in the same form on the output documents. Electronic digital equipment has been constructed to represent numbers in the decimal system. However, this is a very inefficient and costly method of number representation in electronic form. Hence, the binary number system or a binary coded system is usually employed. (See Chaps. 12 and 13 for other codes.) Binary Code. The binary system has been widely used in electronic digital equipment, especially computers for scientific and engineering work. The major disadvantage to the binary number system is that it is difficult for human beings to interpret without training. Binary Coded Decimal. Another method of coding information in electronic digital equipment is the binary coded decimal system or the 8421 system shown here: 8421 Binary Coded Decimal 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Decimal Equivalent o 1 2 3 4 5 6 7 8 9 A decimal number such as 267 is represented as (0010) (0110) (0111), while 1959 is represented as (0001) (1001) (0101) (1001). The advantages of this system are that it is fairly easy to interpret and there is room for additional symbols because the ten-decimal digits use only ten of the sixteen possible combinations. A disadvantage is that it is not as efficient as the binary system if the six additional code combinations are not used. Alphanumeric Codes. The coding of decimal digits can be extended to include alphabetic characters and special symbols. Six binary digits make it possible to accommodate sixty-four different combinations. Therefore, six binary digits can handle the ten-decimal digits, twenty-six 5-06 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS alphabetic characters, and up to twenty-eight additional characters such as punctuation marks and special symbols. One adaptation of the use of six binary digits to represent various characters is as follows: Character Binary Coded Character 1 000001 000010 000011 000100 2 3 4 9 o A B C D z , % $ * 001001 001010 110001 110010 110011 110100 011001 011011 011100 101011 101100 This type of binary coded character representation is used in the alphanumeric machines. Its advantages are that (a) it is fairly easy to interpret, and (b) twenty-eight possible combinations left after the ten-decimal digits and twenty-six alphabetic characters provide room for additional symbols. Information Representations. Number systems are represented within electronic digital equipment by discrete electric signals. These signals are interpreted by establishing a correspondence between their characteristics and the characteristics of the number system used, as shown in Fig. 3. Electronic digital equipment is designed to treat a specific group of digits as a single item called a "word." It can treat a sequence of binary digits as a binary word, binary number, a binary coded decimal word, or a binary coded decimal number, as illustrated in Fig. 3. Words. A word within electronic digital equipment is a grouping or a collection of digits and/or characters that represents a specific number or another piece of information. Most arithmetical and logical opera- EQUIPMENT DESCRIPTION 5-07 tions are performed upon the word as a whole. In fixed word length equipment, the size of all words, such as ten-decimal digits, is constant. In variable word length equipment, the size of the words is not necessarily constant. I I u I 9 I Y G - Binary coded alphan umeric 0 1 0 1 0 o 0 0 1 o 0 1 0 1 1 0 0 o 1 1 0 1 1 1 word U9YG 5 9 0 6 3 7 Binary coded 1 0 1 0 o 0 0 1 o 0 1 0 1 1 0 0 o 1 1 0 1 1 1 decima I number 0 509637 f- o o t- 1 1 o o 1 1 o o 0 0 o0 o 1 0 0 1 0 o o 1 1 o o 1 1 0 1 1 0 o o 0 1 1 0 1 1 Binary number o 1 1 1 whose decimal o equival ent is 5,281 ,335 1 1 1 Signal digits n. f--~ n- rt n-rL rt rt- fL rL rL rt n. n. n. fL rLn-rL fLrt rtn- rt tL rt n-rt n-n- n. n-n- n. n. f-- t - t-- I-- t-- Pulse signal Timing signal Time~ FIG. 3. Discrete electric signals. Operating Speeds. Elementary switching operations in computers can be performed at rates of the order of 1,000,000 per second. However, in most electronic digital equipment, the arithmetic and logical data processing operations require several hundred switching times or periods and, therefore, are performed at rates of the order of 1000 to 10,000 per second. Control Signals and Instruction Code. The collection of digits or characters representing a control signal is interpreted as a control word. The complete list of control words, together with an identifying description, is called the instruction code of the data processing equipment. This instruction code is the list of the different operations that the equipment can perform. (See Chap. 2.) Addressing. Distinguishing one storage location from another is accomplished in certain electronic digital storage devices, such as magnetic cores and magnetic tapes, by assigning an address to each sto~age location. 5-08 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS In some magnetic tape storage units, the individual storage locations on magnetic tape are not assigned addresses. The storage locations are distinguished by the pieces of information stored in the locations. The pieces of information contain distinguishing labels such as account numbers or part numbers and are stored in a particular sequence on the magnetic tape. When a particular piece of information is required in this addressing scheme, the equipment has to search for it because it does not know exactly where it is located. Types of Instructions. The various types of instructions used are shown in Fig. 4. Operation code Second operand address First operand address Next instruction address Result address (a) Operation code Second operand address First operand address Result address (b) Operation code Second operand address First operand address (c) Operation code Operand address Next instruction address (d) Operation code Operand address (e) FIG. 4. Instruction types: (a) four-address instruction, (b) three-address instruction, (c) two-address instruction, (d) one + one address instruction, (e) one-address instruction. Programming and Coding. Before electronic data processing equipment can solve a problem or process data, it is necessary for human EQUIPMENT DESCRIPTION 5-09 beings to prepare a program for the equipment. This program is a specific, predetermined sequence of instructions that the equipment can perform. The program is prepared by the human operations of problem definition, programming, coding, and debugging. (See Chap. 2.) 3. INPUT EQUIPMENT Scope of Input Function. The input unit connects the electronic digital equipment with the external world. It supplies the data that are to be processed as well as the instructions that guide the processing. It converts the data from the form used in the external world into machine language. The complete input function starts with the preparation of the media that carry the required data into the system from the source documents. It ends with the actual placing of the data and control instructions into the equipment. The input preparation equipment is not connected to the electronic digital equipment, but it is included so as to bring out the full scope of the input function. The preparation of the input media is usually accomplished by operating a keyboard and manually keying the information contained in the source documents into the input media. In general, the same amount of data to be processed will require the same number of operators working for the same length of time to prepare the input media, no matter what input media are used. Requirements of a Good Input Medium. 1. Machine language that can be fed automatically into electronic digital equipment or can be automatically converted to such a medium. 2. Simple and inexpensive recorder. Most applications require much recording equipment; therefore, it is necessary to minimize cost and maintenance. 3. Obtainable as by-product. Input medium should be obtained as a by-product of another machine operation, thereby eliminating duplication. 4. Compact, inexpensive, and lightweight. 5. Visually auditable, for ~hecking and editing. 6. Reusable. 7. High-speed input; approaching internal speed of electronic digital equipment. 8. Automatically convertible to high-speed input, if not a high-speed input itself. Comparison of Input Media. Based on the above requirements, Table 1 gives a comparison of punched cards, punched paper tape, paper documents, and magnetic tape. Table 2 compares speeds and costs (1958 data) for these input media. 5-1.0 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS TABLE l. COMP ARISON OF INPUT MEDIA Paper Punched Punched Requirements Documents Cards Paper Tape Machine language Yes Yes Yes Simple and inexpensive Yes recorder No Yes Obtainable as by-product Yes Yes Yes Compact and inexpensive No Yes No Visually auditable Yes Yes Yes Reusable No No No High-speed input No No No Convertible to high-speed input Yes Yes Yes TABLE 2. Speed and Costa Speeds, char/sec Costs, approximate Input media, per char Preparation equipment Key unit By-product Input units a Magnetic Tape Yes No No Yes No Yes Yes SPEEDS AND COSTS OF INPUT MEDIA Punched Cards Paper Punched Paper Tape Documents 150-2,500 400-2,000 $0.00001 $0.0001 $2,500 $3,000 $15,000 $2,250 500-1,000 Magnetic Tape 6,000-60,000 $0.00001 $500 $4,500 $~500 N.A. $4,000 $20,000 Based on 1958 costs. Speed and Costs. Magnetic tape is by far the fastest input medium available. The cost of a magnetic tape input unit is the greatest, but the cost per character in information transferred per unit of time is much less. This accounts for the extensive use of magnetic tape as an input medium. The cost of the input media is very small and does not play a large part in the overall cost problem. The cost of the equipment required to obtain punched cards as a by-product is much greater than the cost for punched paper tape. This is one of the reasons punched paper tape has been more extensively used as a common language medium. Input Preparation Equipment Key-Driven. The most basic method of preparing input media is that of finger-driven keyboard devices. The two most prevalent keyboards available are the typewriter keyboard and the ten-key numeric keyboard. The typewriter keyboard is a general purpose board for handling the ten-decimal digits, twenty-six alphabetic ch~r~ctersl punctuation marks, EQUIPMENT DESCRIPTION 5-11 and special symbols. In cases where the data are, or can be made to be, all numeric, the ten-key numeric decimal keyboard is frequently used. Card punches, paper tape punches, and magnetic tape preparation devices are the most widely used key-driven input preparation equipment. These devices prepare the input media as the operator keys the data onto the keyboard. For example, as the operator keys the data onto the keyboard of a card punch, the data are permanently recorded in the card by means of the punched holes. Speed. The speed with which information can be keyed onto an input medium depends upon the type and form of the data to be recorded, the operator's familiarity with the data, and the equipment being employed. Operators using typewriter keyboards can average 7000 to 12,000 key depressions per hour. A ten-key numeric keyboard can be operated 30 to 50 per cent faster because of its smaller size. By-Product. Input media can be produced as a by-product during the preparation of other material, such as a bill, invoice, or check. In this operation, the input preparation equipment is directly connected to another machine, such as a typewriter, bookkeeping, or accounting machine. Then as this machine is operated, the data are not only recorded on a document but are also recorded on the input medium. This eliminates one entire keying operation. Equipment, such as couplers, makes it possible to connect card punches, and paper tape punches to standard office machines, such as typewriters, bookkeeping machines, adding machines, and desk calculators. This office equipment uses either the typewriter keyboard or the ten-key numeric keyboard. The speed with which these devices can be operated is equivalent to the operating speed of the regular key-driven devices. However, these by-product machines require more time for set up. Automatic. The objective of this equipment is to accomplish the recording of input data in machine readable form as a by-product of other necessary automatic functions. This reduces the time expended and cost involved in preparing an input medium. Also, it increases the accuracy of the input data. In the process control field, special gages and meter readers can convert their sensings to digital data. These digital data can then be either recorded on an input medium or transmitted from the sensors to a central recording station. This eliminates one human operation of reading the gages and meters and another human operation of recording these data on an input medium. In the manufacturing field, time clocks that punch time cards. are used to record the working hours of employees automatically. Other devices 5-12 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS can count, measure, and weigh products coming off assembly lines. Then this information is automatically recorded in machine readable form for further processing. Verifiers. When preparing an input medium, especially by a human operation, there is an opportunity for errors to be made in the recordings. If these errors are not corrected, they will enter the processing and thereby affect all succeeding operations. Therefore, it is a necessary part of the input function to locate and correct errors that have been made during the original recordings. Several techniques are available for verifying input data: (1) systems or logical techniques, such as proofreading or control totals, are frequently used but do not require any special equipment; (2) machine verification. Machine verifiers are used to check the accuracy of the original record:ings. After the input medium has been originally prepared, it is sent to the verifier. Here a second operator keys in the same information as the original operator. This is compared with the recorded data. If there is a disagreement, an indication is given, and the proper steps can be taken to correct the mistake. Machine verifiers can be operated at a rate equivalent to that of the original key-driven equipment. Directly Connected Manual Input. Equipment There are several manual means of getting information directly into electronic digital equipment, but all these methods depend upon human operations. Since they are therefore relatively slow, they are not used to introduce any large amount of data into the processing. They are used primarily for: (1) control over the computer, (2) basic communications between the operator and the equipment, (3) the insertion of small amounts of input data. Consoles. A console is the primary means of communication between the human operators and the electronic digital cquipment. It is a panel with a series of switches, lights, and buttons that are used manually (1) to control the machine, (2) to correct errors, (3) to determine the status of machine circuits, registers, and counters, (4) to determine the contents of storage locations and accumulator storage, and (5) to revise the contents of a storage location. Electric typewriters. Most electronic digital equipmcnt has an electric typewriter associated with it. In a great many cases, the electric typewriter is a part of the console. It is used primarily for input and output of very small amounts of data, correctional information, and control data. Human operator speed is about 8 to 10 characters per second. EQUIPMENT DESCRIPTION 5-13 Inquiry Units. One of the primary drawbacks of electronic storage units is that the information contained therein cannot be visually examined. The information has to be read, interpreted, or translated by the electronic digital equipment, and then printed out. This can be accomplished by the main processor, but such use is inefficient. Because of this, several electronic digital equipments have special input units associated with them that make it possible to search for and print out the information contained in the electronic storage units. These special input units are called inquiry units or interrogation units. Special Keyboards. Special keyboards have been developed for use with particular applications. Examples are the bank savings window machine for use in the savings account application and the reservation agent's set for use in the airline's reservation systems. These special keyboards have been designed, for special applications and are not usable for any other purposes. Punched Card Equipment Kinds of Punched Cards. The three types of punched cards used are the 80-column card (International Business Machines), the 90-column card (Remington Rand), and the punched price tags. The 80- and 90-column cards are used to feed data directly into electronic digital equipment. The Kimball and Dennison punched price tags are used primarily in the retail business and are not directly fed into electronic digital equipment. The International Business Machine card is 3~ inches high and 7% inches wide. It is divided horizontally into 80 vertical columns, each capable of storing one character of information. Each vertical column is divided into 12 row positions, numbered from 0 to 9 and 11 and 12. Decimal digits are represented by a single punch in the appropriate row 0 to 9. Alphabetic characters are coded by two punches in the same column; one in one of the rows 1 to 9 and another in either row 0, 11, or 12. See Fig. 5a. The Remington Rand card is 3~ inches high and 7% inches wide. It is divided vertically into an upper half and a lower half. Each half is divided horizontally into 45 vertical columns, each capable of storing one , character of information. This gives a total capacity of 90 columns per card. Information is represented within each column by a combination of one, two, or three punched holes. See Fig. 5b. The Kimball and Dennison punched price tags are used primarily in the retail trade. The tag is detached from an article when it is sold (see Fig. 5c, d). These tags are then read by a ticket converter and the information contained in the tag is converted to punched cards or punched USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 5-14 o 1 2 3 45 6 7 8 9 ABC D E F G H I J,K L M N 0 P Q R STU V W X Y Z I I I I I I I, I I 11111111'. 1000000000000000000000000000000000000000000000000000 0 0 0 0 10 10 10 10 10 10 10 10 0 0 0 0 0000 I 2 J .. II I , I 11011 1213141511171"12011 UZlN 25 2627 Zl2IlO313211lC 35)fj 31383'1404142 4l444545UCl495Q 515213 54 555157 M591011 52 6l14SSAIJII 11 Q 7011 n 7J '4 7571717179 10 a111111'1.11111111111111111 t 11111111 t 11111111 ttl ttl t t t t t, t t t t t t t t t t t t t t t t ttl t t t t t 2222122222222222222222122222222222222222122222222222 2 22 2U22 2 2 222 2 2 2 2 22222222222 ,333333133333333333333333133333333333333333133333333 3 3 3 3 3 3 313 3 3 3 3 33 f3 3 3 3 3 3 3 3 3 3 3 3 3 444 44 44 4144 4 44 444 444 44 44 4 4144 44 44 4 4 4 44 44 44 44144 4 44 44 44 4 44 44 414444 4 4 44 4 4 44 44 4 4444 5'55555555515555555555555555515555555555555555515555 5 5 5 5 5 5 5 5 555155555555555555' 555 6 6 6 6 6 6 6 6 6 6 6 61 6 6 6 6 6 6 6 6'6 6 6 6 6 6 6 6 616 6 6 6 6 6 6 6 6 G,6 6 66 6 6 616 6 6 6 6 6 6 6 6 6 6 6 6 6 6 16 6 6 6 6 6 6 6 6 6 6 6 6 6 6 777777717777771777777777777777771777777 i 7 7 77 7 77 7 7 717 77 7 7 7 77 7 7 7 n 7 717 7 7777777,7777 888888888888818818888888888888 a8 8 818 8 8 8 8 8 8 8 8 8 8 8 8 8 8 811S 8 8 8 8 8 8 818 8 8 8 8 81S 8 8 8 8 8 8 8888 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 919 9 99 9 9 9 9 9 9 9 9 9 9 9 9 919 9 9 9 9 9 9 9 99 9 9 9 9 9 9 919 9 9 9 9 9 9 9 9 9 99 9 9 9199 9 9 9 9 9 9 9 1 Z 3 41i " I ,'01112131CI51SnttI9r.1212223242528272121303112lJ34lS3&l13U9404142434U54847C841505152S35H'565158591011126364ISIGIJIII97DlIn73741H6J171'UO N.A.A. I040-K-1 SOOt 11 .. 4:01 ... 409 (a) ABC / • DEF GHI (Ie YZ PQR 1; ~li-ii -1; -1; .,,-1; -I, -I, -1; -.-li-12 -I, -I, -1, .. -I, -I, -I, -I, -1, .. -Ii. i i . -1;. -1; -1; -1; -Ii -;i -1; i i . Ii i; -1; Ii -I, Ii Ii' 4 4 4 4 4 4 4 4 4 • • 4 4 4 0 . 4 • • 444404084,44844 • • 4 4 . 4 4 4 4 4 4 4 ~MMMM8.MM.MMM8M.M.8MM • • ~~~8~~0~.~~~~~M.~~~~~~ • • • ~ • • 8~~.8~~.~~~~~~ ~~~~~~~.~~~O~.8~~~~~~,~~~~ ; : : ; : .. ; : : ': 19' • ~J '9' '9' '9' ': '9' .~ 1 i 2- it- 12" i z• i z- i z• it'" i:" i: ·e- ~ 3 12 - . - 12 - ~ Ii. 19' 2: • 6 7 5 :' :' :' 19' :' 19' '9° it S: ': " '9 i ~ 8 '9' .;;. :0 ·9' ': :' :' :' ~ I: -1-2 - 12- i"'2 - 12 - i'2 -1-: - i2 -iz-lZ -i2-;2 -i 2- tz -l~-I-Z -1~ - i"2 - I: - lz- lZ - 12 -12 - lz - i2 -i2 -1-2 -1-2- ij-l-z -1-2-12 J"J4J4J"J.J4J4J4J43" 34 343,,034.J4 3434J4J4J.4 J4J434'34 34 34 3434 34 J4 3434 ]4141414343434]4 3434 3-4 ~M~~~~~~~~~~~~~~~.~.~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~8~.~~~~~~~~~~~~~~~~~~~~~ ••• 9 ••• 9.99 •• 9.8.998999898 •• 99.9.99.999.99999 ,III .7111 •• '.0.111':.'. 5' 'III I? 'I '1.0,,1111 '1""" ",. "'0 '17.",."" ,,7'''''0.'.; ,J ••• S" .,. ••••• 0 v • (b) I Macy's SIZE 12 Macy's SI~ 12 • IB..J • 01 ••• 1 ~O S,zeB for 222 . 37 " 165. I Size for 1 $ ~~ 1.40 4. 1$ -~ 14 ~:-----' 4757 62 10 • • ~~:;'6.E)7.~V:: 9A7 --- ---- -- 222 8 1 0720 I ~ • :::.:1:. :: 37 165 r-' 64 29530. 14 .. - 4757 62 5ST -- 70· --', • ~~:;'6.E)7.~V::9A7' • L-, 64 29530. S8T ~ (d) ! ________J ______~A~ (c) FIG. 5. Punched cards: (a) IBM punched card (80 columns), (b) Remington Rand punched card (90 columns), (c) Kimball punched tag, Cd) Dennison punched tag. EQUIPMENT DESCRIPTION 5-15 paper tape. Then the punched cards or punched paper tape are used as input media to the electronic digital equipment. Preparation Equipment. Card punches are the basic machines used to prepare punched cards. They operate from a keyboard, either typewriter or ten-key numeric, and permanently record information in cards by means of punched holes. Reproducing punches are capable of producing a duplicate set of cards or many duplicates from a single master card. Punched cards can also be produced as a by-product of another machine operation such as a typewriter or bookkeeping machine. Punched card verifiers are available to check the accuracy of the original punching. Punched price tickets are prepared by a dial set machine. Reading Techniques. There are three basic techniques for reading the information contained in punched cards, namely electric contact, mechanical probes, and photoelectric cells. In the electric contact lnethod the card passes over a contact roller under a set of brushes. These brushes are kept from touching the contact roller by the card, which acts as an insulator. However, when a punched hole is reached, the brush drops into the hole and touches the contact roller. This completes an electric circuit and electric current flows until the contact is broken by an unpunched portion of the card. Information is recognized by the time spacing of the holes from the edge of the card. vVith mechanical probes, punched cards can be read by moving a set of probes against the card. If there is a hole, then the probes protrude through the hole. The movement of the probe may be used to control other mechanical devices or to generate an electric impulse. Photoelectric card reading is accomplished by moving the punched card under a beam of light. The card acts as an opaque substance until a hole is reached. Then the beam of light travels through the card, impinges upon a photoelectric cell, and thereby generates an electric impulse. Punched cards are generally read a row at a time. In this manner, all card columns are read simultaneously. Reading speeds are 100 to 900 cards per minute. Punched cards can be read a column at a time by a photoelectric reader. Speeds up to 2000 cards per minute have been achieved with this technique by the National Cash Register Company. Input Units. Punched card readers of various kinds are used as input units for electronic digital equipment. Standard electrical accounting machine equipment such as reproducing punches, summary punches, and collators operate in the range from 100 to 240 cards per minute. Special card readers have been developed for specific digital equipments that operate in the range from 100 to 2000 cards per minute. 5-16 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Paper Tape Equipment Kinds of Paper Tape. There are two kinds of paper tape, namely printed and punched. Printed paper tape has the information represented by dot patterns or bar patterns. Printed paper tape is not used as extensively as punched paper tape; however, it does offer several advantages such as compactness and simple, inexpensive, mechanical recorders. Punched paper tape can be either fully perforated or chadless. Fully perforated paper tape has the hole punched completely through. 'Vith chadless paper tape the holes are not punched all the way through so that no chad or confetti is produced; this permits legible overprinting. With electronic digital equipment fully perforated tape is most extensively used. There are four types of fully perforated paper tape, namely the 5, 6, 7, and 8 channel. See Fig. 6. On all these tapes there is a sprocket hole which, when meshed with a small gear in the reading equipment, provides a means of advancing the tape. Five-Channel Tape. The 5-channel punched paper tape has been used since the last century with the telegraph. The 5-channel tape with holes and no holes provides 32 combinations. These 32 combinations are sufficient to designate the 26 letters of the alphabet. Then by using one of the remaining combinations as a line signal to shift, the 32 combinations can be used over again to designate the ten decimal digits, punctuation marks, and other special characters. Disadvantages of the Five-Channel Tape. 1. It does not provide a self-checking channel. 2. In electronic digital equipment it is sometimes advantageous to have the coding on the tape correspond to the coding used to represent information within the electronic equipment. As a result of these disadvantages, 6-, 7-, and 8-channel punched paper tapes have been developed for use in local or private communications networks and with electronic digital equipment. Punched paper tapes range in width from 1 7iG inch to 1 inch, and the holes are usually spaced ten to the inch along the length of the tape. Preparation Equipment. Tape perforators are the basic machines used to prepare punched paper tape. They operate from a typewriter keyboard and record information in the paper tape by means of punched holes. Punched paper tape can also be prepared as a by-product of another machine operation. For example, it is possible to connect the tape perforator to a typewriter, calculator, bookkeeping machine, or cash register designed for such use. Then as these machines are being oper- EQUIPMENT DESCRIPTION 5-17 ated, selected information can automatically be transferred to punched paper tape. Punched paper tape verifiers are available to check the accuracy of the original recording. •• ••• ••• ••• ••• • •• ••••• • • ••• • ••• •• •••• •• •••••• ••• •• ••• ••• •• ••• •• ••• • •• • • •••• o • •••••• •• ••• •• • ••••••• •• • •••• •••• • • •• ••• ••••• • • • •••• •• •• •• •••• • • • ••• • •• ......... • ·0 (a) FIG. 6. ••••• ..G v . . .~• • • • • ••• ••·• •• • •• • ••• • ••• • •• • • ··• • • •• ••· •• •• • ••• • ••• •••• • •• • • •• • • .G ••·• •• •• •••.. •••• ••••• • •• • • • ••• ••·• •••• •••• ••• • • ··• • • •• ••· o. • •• •••• • ••• •••• ••• • • ·• • • •• o ·•• •• • •• •eo •••• ....... 0 ..... 0 ft 0 ..A..a..a.. (b) ••~ .A. e.·• •• •• • • •••• •• • ••••• ••• • • • •• ·•• ••••••• •• •••• • e • •••• •• • • •••••• • •••• • • ••• • •••••• • ••••••• • •••• • •••• • ••••• • • ••••••• • •••• ••• ••••••••• • ••••••• • • ••• • •••• • • ••••• • • •••• • o ••• -y • • Iit 4H). 0 ... aL .1IiII . 8 ... (c) A • • • •••••• • ••• •• • •• •••••• • ••••• •••••• •• •• • • • •• • •••••• ••••••• •• • •• ••• ••• • ••••• • • •• •• •• •• •• •••• • • ••• ••• •• •o·••• •• o ••• • ••• •• • ••• •••••• ••••• ••••••• I•••••• • 0 • 0 • .A 0 .......... .a..a..~ (d) Punched paper tape: (a) 5-channel, (b) 6-channel, (c) 7-channel, (d) 8-channel. Reading Techniques. Punched paper tape can be read by mechanical means. A set of probes, one for each channel, is moved against the tape. If there is a hole in the tape, a probe protrudes through the hole and an electric impulse is generated. If there is no hole in the paper tape, the probe does not protrude and no electric impulse is generated. Since this is a mechanical process, it operates at relatively slow speeds of about 60 to 100 characters per second. A photoelectric system can also be used to read the holes in punched 5-18 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS paper tape. Light from a single source is projected through the holes in the paper tape onto a series of photocells. If there is a hole, then light is projected on that channel's photocell and an electric impulse is produced. If there is no hole, no electric impulse is produced. .Reading speeds are in the range of 200 to 2000 characters per second. All punched paper tapes are read a character (column) at a time, so that reading speed is proportional to linear tape speed. Brush contact readers such as those used for punched cards have not been developed for paper tape. Input Units. Several types of punched paper tape readers are used as input units for electronic digital equipment. lYlost electric typewriter-perforators are also mechanical punched paper tape readers. They operate at a maximum of 10 characters per second. There are several types of photoelectric punched paper tape readers. They operate in the range from 200 to 2000 characters per second. Magnetic Tape Equipment Kinds of Magnetic Tape. Magnetic tape is a strip of either plastic or metal that is coated with a ferromagnetic substance. See Magnetic Tape under Sect. 4 for equipment description. Preparation Equipment. Magnetic tape used as an input is generally prepared by a process of converting information from another medium such as punched cards or punched paper tape to the magnetic tape. The -punched cards and punched paper tape are verified before the data are placed on magnetic tape. A typewriter keyboard device has been developed that directly places information onto magnetic tape as it is keyed onto the keyboard. A magnetic tape verifier operates on the same principle as the punched card verifier. The primary advantage of directly produced magnetic tape is the elimination of the conversion operation. The disadvantages are that the recording density is much less than on magnetic tape produced by other methods, and there is no off-line method of producing batch totals often used in checking the accuracy of input data. Reading and Recording Techniques. Information is usually recorded on magnetic tape in a series of records or blocks as shown in Fig. 7. The size of the records can be fixed or variable, depending upon the specific electronic digital equipment. The records can have specific addresses or the identifying labels of the information stored in each record can serve as distinguishing marks. The gaps between the records serve as a nonusable area to allow for starting and stopping of the tape. When the tape is motionless, the reading and recording head rests over the middle of the gap. One-half the length of the gap is required to EQUIPMENT DESCRIPTION 5-19 accelerate the tape motion up to full reading or recording speed. Also, one-half the length of the gap is required for the tape to decelerate to a complete stop. Record 5 Gap Record 4 Gap Record ---~~ FIG. 7. 3 Gap Record 2 Gap Record 1 Tape movement Recording on magnetic tape. Reading and recording are accomplished by moving the tape past the stationary head (see Chap. 19). Binary digits are recorded in the range 50-534 per linear inch. The magnetic tapes can be transported up to several hundred inches per second. Input Units. Magnetic tape units contain the magnetic tape reels, one for feeding and another for takeup, the reading and recording heads, and the motors required to move the tape. All magnetic tape units contain some system to prevent tension from being placed upon the magnetic tape during its sudden starts and stops. Magnetic tape units operate in the range from 6000 to 60,000 characters per second and can be accelerated to full speed in 2 to 50 milliseconds. A common size of tape reel is 10 inches in diameter, and the reel holds 2400 feet of tape. For additional information on tape handling mechanisms, see Sect. 4. Document Reading Equipment Electronic digital equipment can also accept input data in the language of the business world as it is recorded on the original documents. This eliminates the battery of typists needed to translate the input information from the source documents to the input medium. Automatic character recognition techniques make this possible. These techniques make use of either special codes to represent the characters, or they can read the printed characters themselves. These special codes or printed characters are recorded on the original documents themselves. Character recognition techniques can be classified as: 1. Codes or patterns: (a) mark sensing, (b) electrically conductive spots, (c) fluorescent ink spots, (d) magnetic bar codes. 2. Printed characters: (a) printer's ink, (b) magnetic ink. Codes and Patt'erns. J1;1 ark sensing uses special electrical conducting marks placed in various positions on punched cards. These marks are 5-20 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS made by hand with special marking pencils and are read by the reproducing punch. Depending upon where the mark is located on the card, an appropriate digit will be punched into the card. Electrically conductive spots use coding inks that have a special property that will upset a balanced electronic circuit when the spots are sensed. These coding inks may be colored or clear. Electrically conductive spots can be placed on the source document by means of a special ribbon containing the coding ink or special carbon paper. Fluorescent ink spots use a special phosphorescent ink in a pattern of dots to represent characters. The documents are irradiated with ultraviolet light as they pass under the reading head, and the phosphorescent ink spots fluoresce and thereby generate a signal in the reading head. NO. 0 .., 1001 R" •• T._ A.... LESLIE VAN & STORAGE COMPANY 455 Broadway NO, 1001, - ----19- 90-86 TIIT 19 ~ PAYTOTHEORDERO' ..... ....::::::-: _ (SP~_~"I.~~)_ "0'" _ ••• _ """ •• _ , _ . __ , $ _ __ ~---- : : ..:'::;:: (HESTER) BRANCH DOLIARS LESLIE VAN & STORAGE COMPANY Bank of America s;~~6~~.E:A~~~~~IA 15730094 - - - - - - - - - II I II I I I II IIII I II I 15730094 FIG. 8. Magnetic bar codes. Account numbers printed on the customer's check, on the back in code and on the front in arabic numbers, are printed in magnetic ink for use by the check scanner. Magnetic bar codes use bars printed with magnetic ink. As the documents pass under a reading head, the magnetic ink is sensed by the reading head and a pattern of voltages is generated that represents the information coded into the pattern of bars. Fluorescent ink spots and magnetic bar codes can be placed on the source documents during the document original printing process. Special reading equipment has been developed to read these codes and patterns automatically. Figure 8 shows some typical code patterns. EQUIPMENT DESCRIPTION 5-21 Some of this reading equipment is directly connected to the electronic digital equipment. Other reading equipment pro~luces other input media, such as punched cards or punched paper tape, which are used to transfer the information into the electronic digital equipment. Printed Characters. It would be advantageous for a machine to read not codes but conventional alphabetic characters and arabic numerals. Characters and numbers are easier to print, are visually auditable, and do not require additional space (for codes and patterns) on the document. The following techniques have been developed to read and interpret printed characters. 5 4 5 4 3 2 5 4 3 2 5 4 (a) FIG. 9. 3 2 3 2 (b) Photoelectric reading of printed characters: (a) five scanning lines, (b) pulse output of scanning circuits. With printer's ink, information is recorded on the document in the normal fashion. Photoelectric scanning techniques have been developed to read and interpret the printed characters. As the characters move past the reading station, they are continually scanned by a beam of light. A photoelectric cell is used in the operation, and the output of this cell is a pattern of pulses. Each character will produce its own unique pattern of pulses. See Fig. 9. Magnetic ink has an advantage over printer's ink whose primary disadvantage is obliteration and mutilation. Extraneous markings are 5-22 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS sensed and cause incorrect interpretations of the characters. Some of this mutilation disadvantage can be overcome by using magnetic ink because the printing can be performed when the document is originally prepared or the magnetic ink characters can be recorded at a later time by special ribbons or carbon paper. The characters printed with magnetic ink are read by passing the document beneath a magnetic reading head which produces an electric signal that is unique for each different character. See Fig. 10. FIG. 10. Magnetic reading of printed characters. As the printed numbers pass horizontally beneath the read head, the head sums up the total magnetic ink covered in a given time interval and produces a proportional electric signal. Signal forms for several numbers are shown. Special reading equipment is required to read either printer's ink or magnetic ink. Either it can be connected directly to the electronic digital equipment, or it can be used to prepare another input medium, such as punched cards. Auxiliary Input Equipment In business data processing applications, large amounts of input data generally have to be placed into the processing. Since the input operations are generally much slower than the internal operations of the electronic digital equipment, the machine will be tied up for long periods of time while it performs the time-consuming operation of inserting the data. This utilizes the electronic equipment's abilities inefficiently. Several things have been done to speed up the input operations. EQUIPMENT DESCRIPTION 5-23 Conversion Equipment. Conversion is the process of transcribing information from one input medium to another. The primary purpose for the transcription is to take advantage of the inherently higher speeds of certain input media (see Table 2). This is the case where information on punched cards, punched paper tape, or paper documents is converted to information on magnetic tape. These transcription operations are performed automatically by special machines, and they are performed independently of the main electronic digital equipment. Transcription of information from one medium to another is often performed for other reasons, such as compatibility or ease of preparation. For example, punched cards to punched paper tape conversion is required for transmission over a telegraph system. In other cases, punched paper tape to punched cards conversion is required for computer input. Punched cards to magnetic tape and punched paper tape to magnetic tape conversions are used because in a great many cases cards and paper tapes are easier to prepare and verify than the magnetic tapes. Buffering Equipment. Most input devices handle data at a much slower rate than the electronic digital equipment does. Since, in the normal chain of processing, each component normally must wait before beginning its operations until the preceding operations performed by other units have finished, the overall speed of the processing is considerably reduced by the input operations. To overcome this drawback, buffer storage devices are used. They permit internal processing operations to be performed during input operations. Thus, by enabling all the components to operate simultaneously, buffer storage devices reduce waiting times and increase the overall speed of the data processing. The buffer has some or all of the following features: 1. It is usually capable of operating at two speeds, slow, dealing with input-output, and fast, dealing with computer. 2. It serves as a kind of synchronizer, by taking over from the control unit the control functions associated with input. 3. It can assist in rearranging data. For example, a word can go into the buffer most significant digit first and come out least significant digit first. 4. Code conversion from language of input medium to language of digital equipment can be performed. Additional equipment is required in this case. Many buffers have some computing capability. lVIultiplexing Equipment. Another way of speeding up the input of information into electronic digital equipment is to connect multiple input units to the machine. Each one of these units has its own buffer 3ts~ociat~d with it, Then by having multiplexing equipment, it is pos- 5-24 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS sible to connect these various input units to the central computer in a definite sequence. 'Vhile one input unit is connected to the computer, the remaining units are free to be loading their input buffers. The multiplexing unit scans the various input devices, searching for one that is ready to transmit to the central electronic equipment. When it finds one, the computer is connected to that input device. As soon as the necessary information has been transferred, the multiplexing unit searches for another input unit that is ready to transmit to the central equipment. Multiplexing equipment is very important with in-line equipment having many manual input stations. 4. STORAGE EQUIPMENT Types of Storage Internal. Internal storage forms an integral physical part of the equipment and is directly controlled by the equipment. It holds the control instructions which direct the processing, the data to be processed, the intermediate results of the processing, and the final results of the processing. Internal storage usually consists of one or both of the following types of storage: (1) fast access, low capacity storage, such as magnetic cores; (2) medium speed access, medium capacity storage, such as magnetic drums. External. External storage is divorced from the equipment itself but holds the information in the form prescribed by the electronic digital equipment. It is a bulk storage medium used for long-range filing of reference data. External storage must be low in cost because of the relatively large volumes required. It is usually a long access, large capacity type such as magnetic tape. Punched cards and punched paper tape can also serve as external storage media, but their use in this capacity is relatively restricted. General Characteristics of Storage Devices 1. Capacity. The upper limit of information that can be stored within the storage unit. 2. Access time. The time interval between the instant at which information is called for from the storage location and the instant at which delivery is complete. There are three types of access to information, namely random, sequential (or serial), and a combination of these two. Random access implies an access time which is constant, regardless of storage location. In equipment with this characteristic, it is possible to move from one randomly selected storage location to another randomly chosen storage location in the same amount of time as is required to go EQUIPMENT DESCRIPTION 5-25 from one random storage location to its adjacent storage location. Sequential access occurs when it is necessary to go sequentially through all intervening storage locations to get from one storage location to another. As a result of this, sequential access time is directly proportional to the number of storage locations between the starting storage location and the ending storage location. A combination of random and sequential access is obtained when it is possible to have random access to a particular group of information, but then it is necessary to proceed sequentially through that group to locate the particular piece of information desired. 3. Volatility. Nonpermanence of the recording when the applied electric power is cut off. 4. Erasabil1:ty. Capable of being erased and reused. 5. Physical. Size, shape, heat generated, power required, sensitivity, etc. 6. Cost. Cost per unit of information stored. Spectrum of Electronic Storage Devices Table 3 indicates the characteristics of various types of storage devices used in electronic digital equipment. Some general relations can be observed from this table: 1. Capacity and access time. As capacity increases the access time also increases. 2. Capacity and cost. As capacity increases the cost per unit of information stored decreases. 3. Access time and cost. As access time increases the cost per unit of information stored decreases. Operation and Uses. Table 4 describes the various storage devices, principles of operation, and their uses. See Chap. 19 for details of design and operations of magnetic drums and cores. Magnetic tapes and random access devices are discussed below. Magnetic Tape Recording. Magnetic tape is a thin, nonmagnetic base material coated with a magnetic material on which information is recorded. See Chap. 19 for details on magnetic coatings. The base material can be either a metallic ribbon or a plastic (acetate or Mylar) ribbon. Magnetic tape is usually several thousandths of an inch thick, from ~ to 3 inches wide, up to 2400 or 2700 feet in length, and wound on la-inch diameter reels. Information is recorded on magnetic tape in a series of records or blocks shown in Fig. 7. Tape records have the following features. TABLE 3. Storage Device Vacuum tubes and transistors Magnetic cores Electrostatic tubes 01 Representative Capacity 50-100 binary digits Representative Access Time Random 0.000001 sec 10,000-100,000 characters Random 0.00001 sec 5,000-50,000 characters N SPECTRUM OF ELECTRONIC STORAGE DEVICES Random 0.00001 sec Volatile Yes Erasable Yes No Yes Yes Yes Physical Characteristics Electronic circuits 0" C Cost per Unita $60 per character a Small cores, large units, complicated circuits $7 per character 0 (j) Very sensitive, delicate, complicated circuits $7 per character til m "T1 =i »r- () a ~ "'tJ C -I m Mercury delay lines 5,000-12,000 characters Combination avo 0.001 sec Yes Yes Sensitive, bulky $20 per character Magnetic drums 20,0002,000,000 characters Combination avo 0.01 sec No Yes Large size, very reliable $0.1 per character z 5,000,00075,000,000 characters Combination avo 0.5 sec No Large size, complicated mechanical features $0.01 per character »-I » Compact, lightweight removable $0.01 per character (attached) $0.00001 per character per reel Random access devices Magnetic tapes a 2,000,00024,000,000 characters per reel Based on 1958 costs. ;;:0 til » 0 0 Serial 0.01 sec Random 2 min No Yes Yes "'tJ ;;:0 a() m til til a ;;:0 til EQUIPMENT DESCRIPTION TABLE 4. 5-27 STORAGE DEVICES Storage Device Vacuum tubes and transistors Principle of Operation Bistable circuits Use Registers, temporary storage Magnetic cores Two opposite states of magnetization of cores High-speed internal storage Electrostatic tubes Positively or negatively charged spots of dielectric tube face Early high-speed internal storage Mercury delay lines Ultrasonic sound pulses traveling in a column of mercury Early high-speed internal storage Magnetic drums Rotating cylinder, magnetic coating, areas of magnetiza tion Medium-speed internal storage Random access devices Jukebox-many magnetic disks Tape strips-open or closed loops Multiple magnetic drums Large capacity storage under computer contro] Magnetic tapes Magnetic coated tape Usually external bulk storage, computer input 1. The size of the records can be fixed or variable, depending upon the electronic digital equipment. 2. The records can have specific addresses or the identifying labels of the information stored in each record can serve as distinguishing marks. 3. The gaps between the words are unused areas that are required for starting and stopping the tape. 4. 'Vhen the tape is motionless, the reading and recording head rests over the middle of the gap. 5. One-half the length of the gap is required to accelerate the tape up to full reading and recording speed. Also, one-half the length of the gap is required for the tape to decelerate to a complete stop. Operation details are as follows. 1. Information is recorded within the records by magnetizing smfill areas. Each such area can represent a binary digit. 2. These small areas are magnetized by a reading and recording head, which is a tiny electromagnet. See Chap. 19. 3. 'Vhen reading information stored on magnetic tape, this same reading and recording head is used to determine the magnetic state of these small areas. 5-28 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 4. Reading and recording are accomplished by moving the tape past the stationary reading and recording head. 5. Binary digits can be recorded with densities up to many hundred per linear inch. 6. The magnetic tapes can be transported up to several hundred inches per second. 7. The time required to accelerate the tape from standstill to full speed ranges from several milliseconds to 50 milliseconds. 8. A number of channels are recorded across the tape. See li'ig. 11. Tape travel --~ ~1[:==J ~1[:==J E]Jo[:==J E]Jo[:==J E]Jo[:==J ~1[:==J FIG. 11. Recording channels on magnetic tape. Capacity. The size of the interrecord gap has to be considered when determining the capacity of one reel of magnetic tape. EXAMPLE 1. Consider a magnetic tape, 2400 feet long, with recording density of 200 characters per inch and a %-inch interrecord gap. Each reel has a theoretical capacity of: 2400 feet = 28,800 inches, (28,800 inch) (200 characters/inch) = 5,760,000 characters. EQUIPMENT DESCRIPTION 5-29 However, it is necessary to take into consideration the size of the interrecord gap. If the information to be stored is a fixed record of 80 characters, the capacity of one reel of magnetic tape is developed as follows: Record length 80 characters _ . h - - - - - - - .- - 0.40 mc 200 characters/mch Interrecord gap = 0.75 Record plus gap = 1.15 inches 28,800 inches . I / d = 25,000 records, 1.15 mc les recor (25,000 records) (80 characters/record) = 2,000,000 characters. EXAMPLE 2. If the fixed record contained 600 characters, the capacity of one reel of magnetic tape would be 4,620,000 characters contained in 7700 records. Record length = 3 inches, gap = 0.75 inch. In general, the larger the size of the record, the greater amount of information that can be stored per reel of tape because of the proportionally smaller space wasted with the interrecord gaps. Speed. Start-stop time has to be considered when determining effective tape speed. EXAMPLE 1. Consider a magnetic tape with start-stop time of 10 milliseconds and a transfer rate of 15,000 characters per second. For a fixed record of 150 characters, then the effective tape speed is: 150 characters = 0.01 second to read 15,000 characters/record Start time = 0.01 Time required per record = 0.02 second 150 characters 0.02 second = 7500 characters/second EXAMPLE 2. If the fixed record contained 600 characters, the effective tape speed would be 12,000 characters per second. Time to read = 0.04 second, and start time = 0.01 second. In general, the larger the size of the record, the greater the effective tape speed because of the proportionally lel!ls time wasted in accelerating the tape to full speed. The total time required to read the length of a reel ranges from 3 minutes to 10 minutes. Tape Handling Mechanism. The tape transport mechanisms must on demand be able: 5-30 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 1. To start the tape motion rapidly, 2. To maintain a uniform speed over the heads, 3. To stop the tape, 4. To maintain continuously proper tape guidance and control. Other requirements on the equipment are: 5. The tape bearing surfaces must be smooth and free of sharp edges to reduce wear to a minimum and protect the tape from tears. 6. The read-write heads of all tape mechanisms must be aligned to a standard so that tapes written on one tape mechanism may be mounted and read by the other tape mechanisms. Operation is as follows: 1. A typical tape mechanism consists of a feed reel and a takeup reel which can hold the entire length of magnetic tape. 2. The tape is threaded from the feed reel through some kind of surge tank containing a few feet of tape, over a reverse tape drive capstan, over the read-write and erase heads, over a forward tape drive capstan, through a second surge tank and onto the takeup reel. See Fig. 12. 3. The tape drive capstans rotate continuously in opposite directions, always ready to drive the tape when a pressure roller forces the tape against one of the capstans. 4. The surge tanks are used to isolate the relatively slow acting reel drives from the capstan drives which must actuate tape motion as rapidly as possible. 5. When the amount of tape in a surge tank becomes either longer or shorter than the nominal amount, the associated reel servo is signaled by vacuum or photoelectric sensing to adjust the tape in the surge tank accordingly. Use of Magnetic Tape for Storage. Practically all modern business data processors have adopted the magnetic tape for large capacity storage. Advantages 1. By using many reels of tape, it is possible to store almost any desired amount of information. 2. It has proved to be a very reliable storage medium. 3. It has made possible the solution of a great many business applications where random access to the file information is not an absolute requirement. Disadvantages 1. Access to items on the tape is sequential and hence extremely slow compared with internal operating speeds. It is more efficient to run through a file and update it in a sequential fashion rather than a random fashion. 2. Updating the files also presents some problems. To modify an entry EQUIPMENT DESCRIPTION 5-31 on magnetic tape without rewriting the entire tape, it is necessary to read the information from the tape, and, while the entry is being modified, hack-space the tape so that the modified record can be recorded back into the original space. This is a very time consuming operation. Feed reel Vacuum or phbtoelectric sensing o Surge tank loops with reel servo sensing FIG. 12. I Vacuum suction Typical magnetic tape handling mechanism. To add a new entry to an ordered file it is necessary to provide empty spaces between each original entry "in the file, or else rewrite the entire file and put the new entry in its correct location. N either of these possibilities is attractive. Leaving blank spaces in the original file means that storage space is wasted with no guarantee that the blank spaces will be properly arranged for the additions that have to be made. Re- 5-32 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS writing the entire file to make additions and changes is costly and introduces the possibility of errors. Random Access Devices In most business applications, very large capacity storage units are required to maintain the files of business records. The most economical method of storing this information is magnetic tape, which has a very long average access time. To overcome this serious drawback, random access devices have been developed. These devices have large storage capacities and relatively short average access times. (See Chap. 4.) These devices do not have full random access ability (see above). In general, they have an average access time in the range of one-half to several seconds. However, the term random access has been associated with these devices and is commonly accepted. Large Capacity Magnetic Drums. Several types of magnetic drums have been developed with a storage capacity of up to several million characters per drum. Many drums can be connected to the electronic digital equipment to bring the total storage capacity up to the order of 100,000,000 characters. These drums operate on the same principles as the regular magnetic drums. They have an average random access time in the range from 0.01 to 0.05 second. Magnetic Disks. Magnetic disks are fiat circular shaped records that have a coating of magnetic material on both faces. These disks are mounted on a shift. A movable reading and recording arm is used to read and record information on both sides of the disk. These units look and operate like a jukebox (see Chap. 19). It is possible to store up to 5,000,000 characters of information in one magnetic disk unit. The average random access to information is on the order of 0.5 second. Magnetic Tape Devices. Several devices have been constructed to use magnetic tape in a different manner so that the average random access time to information stored in these devices is in the range from 1 to 20 seconds. One device makes use of strips (250 feet) of magnetic tape. There is a series of bins with one strip of tape in each bin. A movable reading and recording head can be moved from bin to bin. Then the strip of magnetic tape within that particular bin is moved, in either direction, to the particular storage 10'cation desired. Another device makes use of short strips of magnetic tape mounted on movable frames. These frames are stored within a bin. They are selected from the bin and brought against a reading and recording head. After reading or recording, the frames are returned to their bin. EQUIPMENT DESCRIPTION 5-33 5. OUTPUT EQUIPMENT The output unit connects the electronic digital equipment with the external world. It delivers the results of the data processing in a form that can be used outside of the equipment. It converts data from the form of discrete electric signals used inside the equipment to a form required by the output medium. Output devices are compared in Table 5. TABLE Output Media Low speed Punched cards Punched paper tape 5. OUTPUT DEVICES Equipment Speeds Reproducing punches Flexowriter, teletype punch, etc. 100-200 cards/min 6-60 characters/min Printed page Visual display Electric typewriter Mechanical annunciators Electric picture tube 6-12 characters/sec Audio alarm several words/sec Plotters Analog plotters Depends on equipment (see Chap. 23) Typewriters 6-12 points/sec Accounting machine, wheel or bar printer 100-150 lines/min Prin ted page High-speed wheel 300-900 lines/min Prin ted page High-speed matrix 500-1000 lines/min Magnetic tape Tape units 6000-60,000 characters/sec Electronic printers Photographic COpy} Xerography copy Picture tube Up to 20,000 characters/sec Line printers Prin ted page Types of Output Direct and Indirect. Output from electronic digital equipment is either direct or indirect. The direct manner produces data in a form that is directly usable, e.g., printed data from an electric typewriter or line printer. The indirect manner produces data in a form that is not directly usable, e.g., punched cards or magnetic tape. In this case, the information on the output medium is usually reproduced into a usable form independent of the main equipment. The information on paper tape is usually reproduced into a report form by an electric typewriter whereas the information on punched cards and magnetic tapes is reproduced by line printers. 5-34 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Reports. The primary means of communicating the results of the data processing with human beings is the printed report. These reports contain results of the processing for use by management, employees, operators, and users of electronic digital equipment. In business applications, these reports can be classified as legal records, management information reports, and operating results. In scientific and engineering applications, these reports will generally be in the form of tables or graphs. Machine Readable Outputs. In many applications, the output of one processing cycle is required as input to another. 'V-hen this occurs, it is important to record the results of the first processing cycle in machine readable form that can be used automatically in the next processing cycles. This can be achieved by producing the results on machine readable media such as punched paper tape, punched cards, and magnetic tape. Then the results can be used as automatic input to the next processing cycle and can be used to produce printed reports. Low-Speed Outputs Several slow-speed methods are available for output. These methods have operating speeds in the range from 10 to 200 characters per second. The equipment required with these methods operates at these low speeds because it is primarily mechanical in its operation. Table 5 shows a comparison of the various low-speed outputs. Punched card machines are standard electric accounting machines. Punched paper tape data can be printed out by an electric typewriter. Electric typewriters are used primarily for low volume output and operating instructions. Volatile visual displays are useful where temporary and short-term indication of limited amounts of data is required. Electrically actuated mechanical annunciators are used on supervisory and monitor consoles, as well as electronic picture tubes which can be used to display rapidly several words such as the contents of a specific storage location. Graph plotters eliminate human transcription of the results from digital to graphical form. Digital-to-analog converters are required for analog plotters. Line Printers Line printers may be defined as those that print an entire line at one time. The line may be composed of from 25 to 120 printed positions spaced approximately 10 characters per inch and with approximately six lines per inch vertically. These printers may also skip blank lines (slew) at 3 to 5 times their line printing speed. Some printers have a means for horizontal and vertical format control through plugboards and paper tape control loops located on the printer. In other printers, EQUIPMENT DESCRIPTION 5-35 the format may be controlled by the program in the electronic digital equipment. Printing may be done on preprinted forms, card stock, multilith master, multipart forms, and plain paper. The paper stock is usually fan-fold and edge-perforated for sprocketed paper advance. (a) 8 Z R 9 ,/Comma o 11 $ .~Decimal ••••• ••••• ••••• ••••• ••••• ••••• ••••• Wire matrix ••••• • 0000 .0000 •••• 0 0000. 0000 • •••• 0 L T (b) FIG. 13. Digit 5 (c) Line printing mechanisms: (a) accounting, (b) print wheel, (c) matrix. There are two types of line printers, namely the accounting machine and the high-speed printers, as shown in Table 5. Accounting Machine. Accounting machine line printers are standard EAM accounting machines. They can be used as either main output devices or auxiliary printing devices. These printers make use of writing type bars or slow-speed print wheels. See Fig. 13. High-Speed Printers. High-speed printers may be defined as those that print from 300 to 1000 lines per minute. 5-.36 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS The wheel printer utilizes a continuously spinning printer wheel wit.h the characters embossed on the periphery and a printing hammer which is timed to strike the paper against the ribbon and the wheel as the desired character passes. Each printing wheel must contain each character to be printed. Most wheel type printers utilize a rotating drum containing a "wheel" of print for each print column, such as 120 wheels for printing a line containing 120 character positions. See Fig. 13b. In the wire matrix printer, the characters are formed by selectively actuating appropriate wires in a rectangular matrix usually containing five columns of seven wires each. The printed character then is an array of dots which is readable but is not as plain as the characters printed from a wheel type printer. See Fig. 13c. Magnetic Tape Magnetic tape also can be used as an output medium. The main advantage of using it arises from its much higher speed compared with low-speed media or line printers. vVith these other media, the maximum possible output speed is about 2000 characters per second, but with magnetic tape output speed is in the range from 6000 to 60,000 characters per second. See Table 5. This means that when magnetic tape output is used, the ratio of output time to computing time is lower than when other mediums are used. Electronic Printers Principles of Operation. Electronic printers are those in which the character image is generated in the form of an electron beam with a cross section in the shape of the desired character or is generated by line scanning electron beams such as in television. These devices are capable of translating binary coded information used within the electronic digital equipment into characters and displaying them on the face of a cathode ray tube. In the charactron tube, this is accomplished by directing an electron beam through a miniature matrix which contains cutout letter and decimal digit shapes. The electron beam is then deflected into the proper position on the face of the picture tube and thus creates an image in the shape of the desired character. See Fig. 14. Producing Hard Copy. The picture tube may be directly viewed. However, most applications require the results to be produced in report or other printed form. One method of producing a printed report uses a photographic process in which pictures of the face of the tube are taken. In some cases, the film can be developed by darkroom techniques, while in other cases the film is exposed, developed, and fixed automatically. Another method of producing hard copy of the face of the tube utilizes ~....d8:;:::::;:j: Viewing screen f- Plates~~~ Selection Matrix m -0 Convergence coil . 0 030 0.210 m. 7 spaces. I' i- c Reference plates ( ""C ~ Deflection yoke m Z 'I o x y a H -f o m en •• V M W Z N G S T u o· () ~ 0.012 in. ""C -f (5 bD0246 B d F 1 3 5 f C H Displayed character (dotted line indicates path of electron bcaf11) r + h K 13 E 1:1 t 1 .t '.I. () to> • + • ':; ~ • ... L 9 P U f\ n • m • Z .J FIG. 14. Charactron shaped beam tube. (Courtesy of Stromberg-Carlson, a division of General Dynamics.) f{1 w ....., 5-38 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS an xerographic printing process. This process uses an electrostatic method whereby tiny, dustlike particles are attracted and adhere to the surface of a selenium-coated drum that has been exposed to the face of the tube. A subsequent step, after these particles have been transferred to paper, fuses the character shapes permanently to the paper by means of heat and pressure. These electronic printers operate much faster than electromechanical printers. They can operate as high as 20,000 characters per second. Auxiliary Output Equipment In business data processing applications, extensive amounts of output data are generated. Since the output operations are much slower than the internal operations of electronic digital equipment, the ratio of output time to computing time may be too high. This is inefficient utilization of the electronic equipment. Several things have been done to speed up the output operations. Conversion Equipment. Conversion is the processing of transcribing information from one output medium to another. (See Sect. 3.) Conversion equipment such as magnetic tape to card and tape to printer is used to take advantage of the inherently higher speeds. Because of the speeds at which information can be put out on magnetic tape, the electronic digital equipment is not tied up for as extensive period of time during the output functions and thereby has more time available for da ta processing. Buffer Equipment. The advantages of buffering equipment in performing output operations are similar to the advantages of buffering in input operations, as described above under Input (see Sect. 3). a 6. ARITHMETIC AND LOGIC UNIT Description. The arithmetic and logic unit performs the arithmetical and logical operations necessary in the processing of data. It has a set of basic operations that it can perform, such as addition, subtraction, multiplication, division, shifting, comparison of two numbers, and the transfer of data to and from the storage unit. Design of arithmetic and logic units is covered in Chap. 18. This section considers equipment aspects. Arithmetic. Both serial and parallel adders are used. The advantage of the parallel mode arises from its very fast speed. For example, to add two pure binary numbers, each 36 binary digits in length, in the serial mode would require about thirty-six times as long as it would to add two one-digit binary numbers. In the parallel mode, it would require only two to four times as long, depending upon the internal design of the EQUIPMENT DESCRIPTION 5-39 equipment, thereby making a substantial savings in time. As a result of this, most large-scale electronic computers of today operate in the parallel mode. Electronic digital equipment that codes its information in one of the binary coded representations performs addition in a combination of the serial and parallel modes. Consider the binary coded decimal number representation. In a mode of operation known as the serial-parallel mode, commonly called serial, there are four adders that operate in parallel on the bits of each binary coded decimal digit. Then the binary coded decimal digits are added successively in time by the same set of four adders. In the parallel-serial mode, there is one adder for each binary coded decimal digit, the four binary digits representing each binary coded decimal digit being added successfully through time by the one adder. Subtraction is usually performed by adding the complement. Multiplication is usually performed by making repeated additions. Division is performed in electronic data processing equipment by the combined operations of subtracting, shifting, and counting the number of times subtraction is possible before shifting is necessary. Logical Operations. The comparison of two numbers, which is an example of a logical operation, may be performed by subtracting one number from the other, and determining whether the remainder is zero or not. As a result of this determination, the equipment can choose between two alternative courses of action, and in effect can make a logical decision. Operations of this type are often called logical operations. Alphabetic Information. The handling of alphabetic and special character information is accomplished in two ways. 1. In the large electronic data processors, alphabetic information is handled by a six binary digit coded character representation similar to the one presented earlier. 'Vhen this type of code is used and the equipment is to treat the character as a decimal digit, the first two binary digits are ignored in arithmetic operations. The remaining four binary digits are then treated as a binary coded decimal digit and are operated upon in a manner entirely analogous to the operations upon a binary coded decimal digit. 2. Another way of handling alphabetic information is to use two decimal digits to designate one letter or special character. For example, 61 would represent A and 62 would represent B. Special Operations. The requirements of a great many scientific and engineering applications are such that special operations, such as double precision, automatic floating point, and base counter or tally are built into the equipment. These operations are used either to increase 5-40 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS the accuracy of computations or facilitate logical operations. They may also be programmed. 7. CONTROL EQUIPMENT Description. The control unit receives the instructions from the storage unit, interprets them, and directs the components to perform the appropriate operations. It can direct the arithmetic and logical unit to manipulate the data and the input-output units to communicate with the outside world. A control unit makes the electronic digital equipment accomplish what the human programmer wishes the equipment to do, within the limits designed into the equipment. Instructions Classified by Functions Performed. There are three basic functional groups of instructions required in the operations of electronic digital equipment, namely arithmetic, data movement, and decision. In each of these groups, there are several general instruction requirements, shown in the Table 6. Sequencing of Instructions. The sequencing of the control instructions can be accomplished in two ways, namely by an instruction counter or by the previous control instruction. Control Console The control console is a panel composed of switches, lights, and buttons that provides the human operators with the means of communication and controlling the electronic digital equipment. The control console includes indicators and controls for power, maintenance, monitoring, and operations. Power. Controls are available for turning a-c power onto the power supply and then turning the various d-c levels onto the computer circuits in the proper order. There are meters for monitoring the voltages and other controls for changing the applied voltages during checking procedures. Maintenance. There are logical circuit indicators, alarm lights, and specialized operating controls which are helpful in preventive maintenance as well as in trouble shooting when the machine stops on account of some alarm condition or malfunction. Examples of such controls are switches which can be set to stop the computer on specified instructions, and others that permit the equipment to execute only one cycle of operation for each push of the starter button. Monitoring. Indicators that show the contents of internal storage locations, principal registers, and counters are provided. In addition, there is a monitor printer (usually an electric typewriter) which can make periodic reports on the progress of an operation. Operations. Start, stop, and off buttons. EQUIPMENT DESCRIPTION TABLE 6. Order Type Arithmetic Add, subtract, multiply, divide Shift Data Movement Read in BASIC INSTRUCTION TYPES AND REQUIREMENTS Functions Storage location of operands Direction of shift and the number of digit positions to shift Movement of data from input media or external storage to internal storage Identification of input unit or external storage unit, amount of data and internal storage location to place data in Storage location of data to be transferred, amount of data, final storage location of data Storage location of data to be cleared Identification of external storage or output unit, amount of data, and internal storage location from which to write out Selective rearrangement within internal storage Clear Internal destruction of da ta no longer desired Movement of data from internal storage to external storage 'or output media Decision Compare Required Address Information (Explicit or Implicit) To perform basic arithmetic operations To move the digits of a number right or left within a word Transfer data Write out 5-41 Two words for equality, greater than or less than Conditional transfer of control Transfer of control based upon predescribed conditions a U ncondi tional transfer of control Stop Transfer of control under all conditions Halt all machine operations Storage locations of two words and location of next instructions for each of three possible outcomes Storage locations of next instruction for each of the possible prescribed conditions Storage location of next instruction No address information required a Conditional transfer of control refers to choosing one of two or more logical paths in a program based upon the condition of a machine calculated result or of a data word supplied as input for processing. For example, when two identification numbers are subtracted for matching, one of three conditions will exist: (1) result zero if identifications are equal, (2) result positive, (3) result negative. Conditional transfer orders either jump to another sequence of instructions or permit normal program sequencing, depending upon the condition of the result. TABLE 7. Royal McBee LGP-30 General Characteristics Arithmetic and logic unit N umber system Binary Word size 30 binary digits plus sign Operating mode Serial, fixed point Arithmetic speeds Add, 8.75 msec; mult., 24.00 msec Control unit One address Instruction type Accumulator overflow Checking features Internal storage Type Magnetic drum Capacity 4096 words Access time 7.5 msec Magnetic tape equipment None Number Start time Transfer rate Input equipment Type Papertape IICeyboard 10 char/sec Manual Speed Output equipment Type Paper tape I Printed page 10 char/sec 10 char/sec Speed Printing equipment Flexowriter Type 10 char/sec Speed On-line or off-line Use Approximate costs a $1100/month Rental $50,000 Purchase a Based on 1958 costs. en TYPICAL ELECTRONIC DIGITAL EQUIPMENTS ~ N Electrodata Datatron Binary coded decimal 10 decimal digits plus sign Serial-parallel, fixed or floating point Add, 1.1 msec; mult., 9.3 msec IBM 705 Binary coded alphanumeric Variable word length Serial, fixed point c(,I) m 0 "T1 0 (i) =i One address Overflow, read-write Add, 0.119 msec (five-digit numbers); mult., 0.799 msec (five-digit numbers) One address Character check, overflow, read-write Magnetic drum 4080 words 0.85 msec Magnetic cores Magnetic drum 40,000 char 60,000 char 0.017 msec 8.0 msec Up to 10 6 msec 6000 digits/sec Up to 100 10 msec 15,000 char/sec » Z Punched cards I Paper tape 240/min 540 digits/sec Punched cards 250/min » -I » Punched cards Paper tape 100/min 60 digits/sec Punched cards 100/min ." -Wheel 150 lines/min On-line Wheel I Matrix 150 lines/min 500 lines/min On-line or off-line m $4,000-$10,000/month $140,000-$350,000 $25,000-$60,000/ month $1,250,000-$3,000,000 I » r() 0 ~ ." -c -I m ;::c (,I) I 0 0 ;::c 0 () (,I) (,I) 0 ;::c (,I) EQUIPMENT DESCRIPTION 5-43 Checking Features In order to ensure accurate and reliable results, electronic digital equipment has checking features built in as extra hardware. The checking features commonly used are the parity check, duplication, and indicator checks. See Chap. 13. Parity Checking. In some parts of electronic digital equipment, a redundant check bit is added to the code for each character so that each character always has either an even number or an odd number of binary one bits. The characters are checked for parity each time they are read, transferred, or written. This type of check detects the most common type of malfunction that occurs in electronic digital equipment, an error in one binary digit of a code. See Chaps. 4 and 13. Duplication. Duplicate electronic units or dual operations can be used to ensure the accuracy of all calculations. Dual recording on magnetic tape is sometimes used to increase the reliability of magnetic tape reading and writing. Other Checks. Other built-in checks are used to indicate undesirable conditions that can occur within the electronic digital equipment. Such checks can indicate conditions like accumulator overflow, incorrect sign, and invalid instruction codes and address. 8. TYPICAL ELECTRONIC DIGITAL EQUIPMENT There are several commercially available data processing systems for business data processing and scientific computation. Shown in Table 7 are comparative features, speeds, and capabilities of typical available equipment. In general, the equipment described in this table represents a basic system, which can usually be expanded in capacity. REFERENCES 1. E. C. Berkeley, Giant Brains, or Machines That Thinlc, Wiley, New York, 1949. 2. A. D. Booth and K. H. V. Booth, Automatic Digital Computers, Butterworths, London, 1953. 3. B. V. Bowden, Editor, Faster than Thought, Pitman, London, 1953. 4. W. J. Eckert and R. Jones, Faster, Faster, International Business Machines Corporation, New York, 1955. 5. R. K. Richards, Arithmetic Operations in Digital Computers, Van Nostrand, Princeton, N. J., 1955. 6. N. Chapin, An Introduction to Automatic Computers, Illinois Institute of Technology, Chicago, 1955. 7. E. C. Berkeley and L. Wainwright, Computers, Their Operation and Applications, Reinhold, New York, 1956. 5-44 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 8. R. G. Canning, Electronic Data Processing for Business and Industry, Wiley, New York, 1956. 9. G. Kozmetsky and P. Kircher, Electronic Computers and Management Control, McGraw-Rill, New York, 1956. to. M. V. Wilkes, Automatic Digital Computers, Wiley, New York, 1956. 11. G. Kozmetsky and P. Kircher, Electronic Computers and Management Control, McGraw-Hill, New York, 1956. 12. J. W. Carr and A. J. Perlis, A comparison of large-scale calculators, Control Eng., 3,84-92 (February 1956). 13. R. K. Richards, Digital Computer Components and Circuits, Van Nostrand, Princeton, N. J., 1957. 14. W. D. Bell, A Management Guide to Electronic Computers, McGraw-Hill, New York, 1957. 15. E. M. Grabbe, Editor, Automation in Business and Industry, Wiley, New York, 1957; 16. Haskins and Sells, Introduction to Electronic Data Processing, Haskins and Sells, Los Angeles, Calif., 1957. 17. D. D. McCracken, Digital Computer Programming, Wiley, New York, 1957. 18. M. H. Weik, A Second Survey of Domestic Electronic Digital Computing Systems, Office of Technical Services, U. S. Department of Commerce, Washington, D. C., 1957. 19. M. Phister, Jr., Logical Design of Digital Computers, Wiley, New York, 1958. c THE USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Chapter 6 Facility Requirements Erwin Tomash I. Physical Installation 2. Personnel Requirements References 6·01 6-09 6·13 J. PHYSICAL INSTALLATION Overall Planning The installation of an electronic data processing system will pose unique problems not encountered in the installation of other types of equipment, and careful consideration must be given to these problems if an efficient, effective operation is to result. Planning the actual physical installation, which can be a major item of expense, is an often neglected phase of the overall make-ready program. This chapter is concerned primarily with the installation of large-scale equipment. The installation of smaller equipment will pose problems similar in nature, but to a lesser degree. Often, these smaller installations may be treated as extensions of existing punch card installations. General Engineering Services. Experience has shown that it is important to seek the advice and assistance of those experienced in installing and operating data processing systems. Two approaches are: 1. Prospective users having available the services of a plant engineering department (or equivalent) will be wise to avail themselves of this 6·01 6-02 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS service, since careful supervision and coordination of the technical details is mandatory. 2. Prospective users not having such services available will find it advantageous to obtain the services of an industrial engineering consultant to work with the equipment supplier and the various subcontractors, and thus assure proper coordination of all aspects. Equipment Manufacturers' Services. IV[ost suppliers make available an experienced installation department prepared to work with the customer's staff. They also furnish installation and specification manuals, which provide the technical information needed. However, the installation of a large-scale system poses many special problems requiring individual customer review and decision. The supplier's fundamental responsibility ends with his submission of complete specifications and installation requirements. Usually these are furnished together with particular recommendations for the installation at hand. The supplier is primarily concerned that proper power and refrigeration facilities be provided in such a manner as to make possible the trouble-free operation of his equipment. He is much less concerned about such matters as physical layout, operational convenience, minimization of installation expense, and standby facilities. The user wishes to comply with the supplier's installation specifications in order to have trouble-free operation of the equipment, and also to be able to hold the supplier responsible for equipment malfunction. The user must concern himself with certain installation details, particularly physical layout, so as to obtain proper and efficient utilization of the equipment. He should give careful study to work flow, traffic control, personnel housing, appearance, etc. Most users have chosen to use the equipment supplier's installation department on an informal consultant basis. In this manner, the user avails himself of the supplier's service and yet is able to retain control of planning to take into account his own individual requirements. Physical Layout From the user's point of view the most important aspect of the installation planning is to provide adequate, properly laid out working space. It is safe to assume that power, refrigeration, and structural problems will be resolved and that these problems, however difficult of solution, once handled may be forgotten (except for routine maintenance). On the other hand, problems which arise during operation due to improper area and equipment layout remain with the user as long as the equipment is in use, or must be corrected at great expense. FACILITY REQUIREMENTS 6-03 Main Equipment Room. Important factors to consider are: 1. Space. A main equipment room is required to house the central data processing and computing equipment and any intimately associated input-output devices. The space recommended by most suppliers is around 3000 to 3500 square feet. This should be regarded as a minimum. Several installations have used as much as 4500 square feet and have found the additional space more than welcome.' The exact layout of the operational area is dependent upon the individual operational requirements and type of equipment installed. 2. Control Console. All data processing systems have some sort of monitoring and control desk, and this control station should be located so that while seated at the console the operator in charge can view all equipment directly connected to the machine, such as magnetic tape units, card readers, printers, and typewriters. All elements of the system which require starting or stopping, loading or reloading and which can be controlled from the monitoring station should be located adj acent to the control station and in clear view of it. 3. Accessibility. The various elements which compose the data processing system must be placed to permit accessibility for maintenance and ease of operation. It should be possible to replace or change control panels, operate all controls, load and unload units, etc., without having to move these units. Generally, for commercial systems now in field use, suppliers recommend that a service area extending 3 or 4 feet from the unit in all directions be provided to permit ready access to the front, sides, and rear. If space is severely limited, this figure can be reduced somewhat by careful checking of control panel and access door clearances. Prior to installation, this checking can be done against manufacturer's specifications and drawings. 4. Viewing Area. Another important aspect of machine location results from the interest in equipment appearance. Most installations have provided viewing rooms for visitors. It has been found desirable to place the more dramatic and impressive units of equipment, such as the printing devices, monitoring panels, and magnetic tape units close to and facing out toward the viewers. 5. Magnetic Tape Reels. As a by-product of a large-scale data processing operation, a large active file of magnetic tape reels will be established and maintained. Suitable shelves, racks, files, or carts will have to be provided, generally adjacent to the magnetic tape units, for storage and effective control of these tape reels. Both file drawers and open shelves are in common use, with the latter somewhat more popular. Specially designed office style units to house these reels are available from the office 6-04 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS equipment manufacturers, as are tape dollies, etc. It will also be necessary to develop a very complete tape reel control and identification system, so that the wrong tapes are not inadvertently used or an excessive inventory of tapes is not developed. Maintenance Room. In addition to the central equipment area, the supplier usually requires that an adj acent maintenance area be provided. An area of 300 to 400 square feet is recommended. The maintenance crew for a large-scale system will be permanently assigned to the user's installation, and will occupy this area. Suppliers generally request that facilities such as desks, chairs, and coat racks be provided for these personnel. If floor area immediately adjacent to the machine is at a premium, it will also be necessary to provide a small bulk-storage area for spare parts. This may be a separate room at some other convenient location, or it may be adjacent to the maintenance area. Ordinarily, for leased equipment, the manufacturer supplies all special equipment relating to the maintenance work itself, such as work benches, test equipment, tools, drawing racks, and spare parts drawers. For purchased machines it is necessary for the customer to provide equivalent facilities. From the appearance and control point of view it has been found preferable to establish the maintenance room with its own separate entrance and doorway,' rather than as an area simply adjacent to the computer machine itself. Central Supply Room. A small supply room approximately 100 square feet in area and suitably equipped' with shelves or cabinets should be provided. This room is used to stock supplies associated with the data processing center, such as forms and paper, punch cards, and magnetic tape. This room should be convenient to the central processing room, if not adjacent to it. If the former, then a set of shelves or a cabinet should be provided in the main equipment room for small amounts of supplies. Power Room. A wall area to mount controls for power and refrigeration equipment is usually all that is required in the central equipment room. Special provisions are often made so that large switches, circuit breakers, etc., are hidden behind panels or cover plates. Large transformers, motor generators, compressors, etc., to which limited accessibility. is required, are in some instances located near the central installation in "power rooms," or they are distributed throughout the building, as convenient. Office Space. It has rarely been possible to provide offices adjacent to the central equipment for all personnel associated with the operation. Certain personnel should be housed adjacent to the area, if at all possible. FACILITY REQUIREMENTS 6-05 The department manager or other administrative official who is in dayto-day charge of the operation should, by all means, have his office adj acent to the computer area. In addition, ~he chief operator should have his office adj acent to the central equipment area. Additional operating personnel usually share common office space near that of the chief operator. Systems analysts and programming staff will require housing accessible, but not necessarily adjacent, to the central equipment room. Experience has indicated that, for the bulk of the programming staff, it is not efficient to use a common working room. The usual solution is to establish two-man offices, or use eye height partitions to create these. Systems analysis and programming require close and continued concentration, and the privacy and quiet resulting from the two-man office arrangement seems to be conducive to greater work output. Visitors' Area. Most users have found it advantageous to establish and maintain a visitors' viewing room which permits ready view of all ope~ations within the equipment room. These generally have been designed to accommodate ten to twelve people comfortably and to include glass panels for viewing and a suitable display and poster area where models and explanatory charts may be shown. It has been found necessary at most installations to supplement the operations being shown with a brief explanatory talk, and also to furnish diagrams, charts, and reprints of articles. Staff Conference Area. During planning, initial cutover, and regular operation, frequent staff conferences will be needed, and a conference room seating at least six to eight people should be provided. Power Requirements General. The user has little latitude in the matter of power requirements. The manufacturer's specifications must be closely followed. Local building codes and type of power available will effect installation detail; power control apparatus of various manufacturers may be used; however, any differences will be in detail rather than function, and the switchgear supplier may be relied upon to provide complete and satisfactory details for its installation. Regulation. The major problem encountered from the electrical point of view is to provide adequate regulation of voltages entering the machine. Local power companies are usually cooperative in providing information as to regulation of power lines. If given sufficient advance notice, they will monitor and record data on the very lines which will be used. These regulation data provide the magnitude and frequency 6-06 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS of the variations likely to be encountered. A new installation represents a major increase in load and any advance notice which can be provided to the power company is. greatly appreciated. Since it is not possible to use unregulated voltages, some sort of regulating apparatus is required. Two approaches have been used: 1. Provide a buffering motor-generator set. Some manufacturers provide this motor-generator set as an integral part of the system. Others specify that such a motor-generator set be provided to ensure proper operation. 2. Other manufacturers recommend use of stabilizing voltage regulators, rather than the use of motor-generator sets. In each case, manufacturers specifications should be followed carefully. The power lines for the compressors, blowers, etc., required to provide proper cooling of the system should be kept independent of those supplied to the computer proper in order to minimize further regulation problems. Experience has indicated that electrical contractors accustomed to doing standard electrical work cannot be relied upon exclusively because of the special nature of this work. It will be necessary for the user to maintain close liaison between equipment manufacturer and electrical contractor to assure that the system is properly and efficiently wired and powered. Load Requirements. The user should take precaution during planning to make certain that the primary source of power is greater than '- that amount exactly required to operate the equipment presently being installed. Future expansion of the system should be regarded as almost inevitable and as new or more modern units are added, these may require additional amounts of power. In addition, when estimating total power requirements, it is essential to remember that a large amount of power will be required for the refrigeration system. In fact, the power required by the refrigeration system very nearly equals that required for the data processing system itself. Cabling and Wiring. Interconnecting cabling to connect the various elements of the system with the main power supply and with each other is provided by the manufacturer. The customer is expected to provide wiring from the primary source of power to the switchgear and voltage regulating system and to power supplies of the units. Usually interconnecting cables are run underneath the system. A false floor is often used to handle these cables and conduits. An alternate approach is to build or dig trenches in the floor between units. Both methods are in common use and have proved satisfactory, the false floor providing somewhat more flexibility and being somewhat more expensive. FACILITY REQUIREMENTS 6·07 A third alternative, which is the least attractive, the least expensive, and the least satisfactory, has also been used. This is to build a ramp over the cables and run the cables along the floor. The ramp acts as a protective cover to the cables but it also impedes the use of dollies in the machine area and provides a traffic obstacle. Convenience Outlets and Maintenance Area Power. It will be necessary to install a number of convenience outlets all along the central equipment room walls for powering of maintenance test equipment and for operation of mechanic's tools, etc. In addition to convenience outlets at the work benches in the maintenance area, special power facilities are often needed for specialized maintenance test equipment. Complete information regarding these special facilities is furnished by the manufacturer. Refrigeration Requirements General. Proper equipment cooling has been a cause of great concern to both equipment manufacturers and equipment users. Equipment manufacturers have attempted in various ways to handle this problem in a convenient and economical manner. Simply stated, these large systems dissipate large amounts of power (from 50 to 150 kilowatts), and this heat must be remoycd from the equipment and the room housing the equipment. Equipment manufacturers state their cooling requirements in different ways. Refrigeration equipment suppliers also provide specifications with varying terminology. Therefore, the following table will be found useful: 1 kilovolt-ampere 1 ton 1 kilovolt-ampere 1 ton = 3400 British thermal units per hour = 12,000 British thermal units per hour = 0.283 ton = 3.6 kilovolt-amperes A ton (of refrigeration) means the refrigeration required to remove an amount of heat equal to the heat of fusion of one ton of ice per day. System Requirements. The general type and amount of refrigeration required is usually specified in fairly complete detail by the supplier. The amount of refrigeration required is determined by the amount of power dissipated by the system. The exact type of refrigeration required depends in large part upon the design of the data processing equipment. Essentially two types of systems are in common use today. These may be referred to as the open-ended and closed-loop systems. 1. Open-Ended Systems. The heat dissipated by the equipment is exhausted into the room, and the refrigerating system is required to 6-08 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS remove this hot air and provide incoming cool air to the machine. This type of system is almost universally used in smaller machines. The room air conditioning system is required to handle the machine heat load very much as it would handle any other room heat load. Open-ended systems have been used quite effectively for large systems as well as smaller units. Quite obviously, when very large heat loads are installed in a few thousand square feet of floor space, then large capacity, carefully ducted air cooling systems are required. 2. Closed-Loop Systems. The closed-loop approach has also found considerable acceptance and a number of variations have been used in commercial data processing equipment. In this system, the cooling air is circulated but kept within the confines of the room or kept within the machine itself. The machine being cooled may be considered as a sealed unit. A set of internal cooling coils at the bottom of the unit cool the air; it is then blown past the heat dissipating elements; finally, the warm air is returned to the cooling coils. The internal cooling coils are usually fed from a chilled water source, and these systems are often referred to as "chilled water" systems. The heat is carried away from the machine by the warm water return. The machine, therefore, contains within its own casework the blowers and heat' exchangers which transfer the heat developed by the equipment to the water system, which is connected in turn to a refrigeration system. The user is required to furnish the necessary chilled water to such units. This type of system has an important advantage in that it is independent to a large extent of the heat ambient of the room in which the equipment is installed. The heat load of other units in the room, humidity conditions, etc., and other conditions external to the machine have no affect on the operation. It should be pointed out, however, that during maintenance periods, access doors must be open, and there is, of necessity, an interchange of air between equipment and the room. Thus, depending on the humidity, condensate may form on the heat exchangers, and drains must be provided to remove this condensate if it should occur. An advantage of the closed-loop system is that the refrigeration load is constant during summer or winter and, as stated before, is independent of external influences. A disadvantage of this system is that in addition to the chilled water system, it is generally necessary to provide a room air conditioning system for personnel comfort and to accommodate the heat load of small input-output units, such as magnetic tape units, card units, and key punch machines, which are not connected to the central sealed-air chilled-water system. Thus two air conditioning units may be needed, the second, however, of much lesser capacity. FACILITY REQUIREMENTS 6-09 Floor Loading Specifications for sizes and weights of the various elements in the system will be provided by the equipment supplier. It is important to note that many units are on casters, legs, or wheels ; therefore, floor loading and structural plans must be checked for capacity to withstand concentrated loads. It is often desirable to insert metal floor plates at the load points, and thus distribute the load over a greater area. This also prevents damage to composition floors, such as linoleum, which otherwise would be damaged by pressure over a period of time. Soundproofing The noise level associated with most commercial large-scale systems is considerably lower than that found in large punch card installations, but it is still somewhat higher than that encountered in most office operations. This is due in part to the noise created by input-output devices such as card readers, card punches, and printing units, and in part to blower noise, air conditioning equipment, and electric motors. Generally speaking, no special soundproofing is required beyond the use of acoustic tiles, such as those now commonly used in modern office construction, for ceiling and walls. Lighting Control For most commercial equipment available today, there are no particular special lighting requirements. Light levels used in normal office operation are satisfactory. 2. PERSONNEL REQUIREMENTS General. Unlike problems in physical installation, which may be overlooked, a great deal of attention has been focused upon personnel training and procurement. Although there is no unanimity of opinion with regard to the number and type of people required, certain common patterns seem to be emerging. In general, it seems to be considerably easier to teach data processing to company personnel experienced in the operation than it is to teach operational and systems background to data processing experts. Based upon this philosophy, most users have tried to train and use personnel from within their own organization and to hire a minimum of specialized experience. This is particularly true during the first phase of conversion where attention is focused on mechanizing present procedures. An important development has been the use of specialists trained in the scientific disciplines who have been working with company systems 6-10 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS and procedures personnel to develop new approaches to the operational problems. This is particularly true in the upper echelons of data processing work where operations research teams and systems analysis departments are quite common. A number of users have also chosen to employ the services of consulting firms to assist with the conversion problems. lVlanagement consulting firms have on their staffs trained individuals capable of assisting users in more effective utilization of the equipment. Training. The primary source of education in the fundamentals of data processing is found in training courses offered by equipment manufacturers. Colleges and universities are now starting to provide generalized data processing training and each year more and more courses are being offered at universities throughout the country. The true source of practical training in data processing has been at the user's installation. Practical experience on an operating system remains the best source of training available today. Most users have found it not only advantageous but necessary to maintain their own continuing training program. This has been done on a more or less formal basis, often in cooperation with the equipment supplier. This on-the-job training has provided, of course, better control, emphasis, and format, and, not unimportantly, it serves as an excellent training vehicle for those individuals conducting the courses. The training required by the various members of the data processing center staff varies with their function. The amount and type of training required are discussed below 'under the various staff classifications. Staffing Management Staff. In general, the data processing center reports to a member of the middle management group who is responsible for results obtained in relation to the established objectives. This individual should be familiar with the general principles and concepts of electronic data processing. He should, in all probability, attend one of the shorter training courses of the equipment suppliers, as well as university seminars, management conferences, etc. He should have sufficient time available and sufficient interest in data processing to visit other installations, act on industry-wide committees, and in general represent the using organization in the field of data processing. He should, of course, act as the primary communication link to the top management of the user organization and to other using organizations with similar interests. Reporting to the executive level position described above, most users have designated a direct managing head of the data processing center. This individual usually has had extensive experience with the using FACILITY REQUIREMENTS 6-11 organization and has a detailed knowledge of the organization, its systems and procedures, and its objectives. He should be able to devote full time to the management of the data processing operation. In addition to training in principles and concepts, attendance at seminars and meetings, he should attend programming and coding courses and be completely familiar with the properties of the equipment to be installed. Systems Planning Staff. This is by far the most important activity in the operation of the data processing center, and success or failure of the entire operation will hinge largely on the effectiveness of the systems planning work. All too often no distinction has been made between "systems planning" and "programming." The importance of the distinction should not be disguised by the fact that good systems analysts are usually experienced programmers and as such often do some programming or coding work themselves. The systems analysis portion of the work load, especially during initial conversion, is perhaps 80 per cent of the total effort to be expended. The detailed programming and coding which follows may require a greater man-hour expenditure, but they can be accomplished by lower level, less highly trained individuals following careful rules of procedure delineated by the systems design. The typical systems analyst is a senior staff individual familiar with the application to be mechanized and its objectives. In addition, he has been thoroughly trained in the application and programming of the particular equipment being used. Most users have found that a group of six to eight systems analysts are required to accomplish a maj or conversion. The primary source of personnel for this group is from within the using organization. Experience has indicated, however, that it is wise to add to this group one or two very experienced analysts from other installations who will make up for their lack of knowledge of systems detail by their superior knowledge of equipment utilization. These experienced analysts very often may be used successfully as a consulting group to the other systems analysts and to the programmers. The equipment supplier is often able to furnish one or two analysts of this calibre to assist the customer in a consulting capacity. The systems analyst should take a complete programming, coding, and applications course for a total of about three months formal training, and should have several years of systems and procedures experience. Programmers and Coders. The detail work of carrying out the systems design and preparing it for running on the data processing machine is accomplished by the programming group. Very often, a distinction is drawn between programmers and coders, the former sometimes being considered more senior ~nd more experienced than the latter, 6-12 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Programmers are considered capable of taking systems flow diagrams and preparing these completely for use on the machine. Coders are considered capable of t2,king individual runs within an operation and preparing these for use on the equipment. The number of programmers and coders required is dependent upon the size of the application being converted and the rate of progress desired. In general, a minimum size programming group consists of about fifteen individuals. Groups of thirty programmers and coders are not uncommon. The training provided for programmers and coders should include at least three months of formal programming training. After this training program, about nine months of experience will be necessary before their skills may be considered adequately developed. Instructional Staff. As mentioned heretofore, most users have found it advantageous to establish their own training program and assign at least one individual to work with new employees, conduct training courses, etc. Experience has indicated that the user will require a continuing source of programmers and coders to take care of normal attrition, promotions, etc. Usually a member of the programming and coding group, or a junior systems analyst, is selected for this training function. Operators. One of the major advantages of an electronic data processing system and its attendant centralization of processing is the large reduction in number of machine operators required. However, a small number of skilled individuals will be necessary. A chief operator, preferably having extensive experience in another installation, will be required. This individual can be considered a member of the administrative staff and will be useful in training, program planning, machine scheduling, etc. In addition, he will supervise the activity of his staff of from four to eight operators. Naturally, the number of operators will depend upon the complement of equipment in use and the number of shifts the equipment is operated. Two classes of operators are found in most large installations. These are computer operators and auxiliary machine operators, the former being more highly trained and skilled than the latter. Computer operators should have basic programming training, although certainly not as completely as programmers. In addition, they will require a rudimentary knowledge of the equipment logic and, of course, a detailed knowledge of its operation. After this training period, which generally requires about three months, time should be allowed for the operating skills to be developed. The timing of computer operator training is somewhat critical in that operators should continue to operate equipment in order to keep their skills fully developed. Training more than six months in advance of equipment installation has been found FACILITY REQUIREMENTS 6-13 to be wasteful. Auxiliary machine operators, on the other hand, require very little formal training beyond an understanding of the control of the particular units they will operate. A training program consisting of a one- or two-week course and a few weeks to acquire operating skill is generally satisfactory for these individuals. Maintenance. Maintenance services are provided by the manufacturers for users leasing equipment and poses no particular problem. Many users of large electronic data processing programs have found it advisable to hire a senior engineer trained and experienced in data processing to act as a staff consultant on equipment procurement, installation, etc. This individual also serves in a liaison capacity, with the maintenance engineers provided by the equipment supplier. For those users purchasing equipment, it will be necessary to hire and train a maintenance staff. Equipment suppliers provide their customers with thorough and detailed training courses similar to those provided for their own maintenance crews. A chief service engineer should be employed as soon as possible after the decision to purchase equipment. This person should have a formal education in electronic engineering and should be experienced in the maintenance of the particular equipment being purchased. At least one year before installation of the equipment, a group of maintenance technicians should be hired and training started. It will not be necessary for these maintenance technicians to have completed formal education at the university level. The graduates of technical institutions, servicing schools, and armed forces training schools have been found to be adequately prepared to take manufacturers' training courses. A period of six months should be allQwed for the formal training on the computer system and auxiliary units. In addition, six months will be required for sufficient skill to be developed on the part of the maintenance crew to provide adequate maintenance services. REFERENCES 1. R. G. Canning, Installing Electronic Data Processing Systems, Wiley, New York, 1957. 2. W. C. Bell, Management Guide to Electronic Computers, McGraw-Hill, New York, 1957. 3. G. Kozmetsky and P. Kircher, Electronic Computers and Management Control, McGraw-Hill, New York, 1956. 4. American Management Association, Electronics in Action: The Current Practicality of Electronic Data Processing, New York, 1957. 5. American Management Association, Establishing an Integrated Data Processing System: Blueprint for a Company Program, New York, 1956. c THE USE OF DIGITAL COMPUTERS Chapter AND DATA PROCESSORS 7 Design of Business Systems Howard S. Levin I. General System Requirements 7-01 2. Stages of System Evolution 7-02 3. Detailed Steps of System Design 7-03 4. Economic Impacts of System Changes 7-12 References 7-14 I. GENERAL SYSTEM REQUIREMENTS Digital computers offer new opportunities to the systems planner. Computers allow development of business information systems characterized by high-speed computation, rapid search, and procedural rigor. These factors, when coupled with new input and output devices and with scientific techniques for administrative control, enable design of a truly effective, integrated information system attuned to the needs of the firm. The information needs of a firm are not necessarily the output of present procedures. Current methods are often a patchwork imposed by machine limitations, supervisory -inflexibility, and reaction to business emergencies. As a consequence, the information required for policy guidance and day-to-day operation of the business may not be clearly reflected by current office activity. Nevertheless, present procedures provide a starting point for redesign of a business information system. They picture the way in which the firm is currently operated, reveal the emphasis presently placed on various aspects of the office work cycle, and 7-01 7.02 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS provide a basis for viewing office costs. With present procedures as a starting point, the system analyst can work toward a statement of basic information needs. Initially he will gain only an approximation of such needs; but this approximation is valuable in judging the feasibility of computers and choosing among competitive machines. The impact of information handling on management effectiveness provides ample justification for careful design of information systems. An information system should be regarded as a growing thing in which no final or optimum form is ever achieved. The information output of the system, once established, should be used to reevaluate and reshape the information system to serve management purposes better. 2. STAGES OF SYSTEM EVOLUTION The effective use of computing equipment and management sciences in meeting the information needs of business is brought about in several distinct stages. These are (1) analysis of present information flow patterns, (2) system definition and selection of equipment, and (3) system implementation. These stages are discussed first in general terms and then are detailed in outline form. Analysis of Present Information Flow Patterns. The level of detail reached in analysis of present procedures is a basic problem. A careful balance must be sought between cursory survey of current procedures and detailed recital of clerical operations which may obscure fundamentals. The emphasis should be on the major paths of information flow rather than on the processing of paper. Real effort is necessary at this stage to "see through" present procedures and gain insight into their basic structure. Preparation of charts showing major paths of information flow and important exceptions can provide insight to planners starting redesign of an information system. Questions regarding current information flow are much in order. Why? For whom? What does he do with it? vVhat would happen if he didn't do it? ,Vhat other information outputs would be desirable if available when needed at attractive prices? The answers are meaningful in determining the information requirements which underlie present systems. System Definition and Selection of Equipment. Fundamentals of present activities are distilled and used to structure an idealized information processing system in this stage. This idealized system serves as a basis for equipment selection. To choose among competing data processors, it is necessary to know the kinds and volumes of information inputs and outputs, size of reference files, frequency of file use, sorting requirements, and computational formulation. Totaling these elements for many application areas builds a picture of requirements that data DESIGN OF BUSINESS SYSTEMS 7-03 processing equipment must satisfy. These requirements can then be weighed against equipment specifications and costs to choose among available equipments and to select the most economic basis of acquisition. System Implementation. Computer system implementation has the prerequisite of careful problem definition. There must be an absolutely complete statement of the job to be done. Each step of the procedure must be explicitly stated with a precision not generally found in business information handling. Programming a complex data processing operation is a task for which firm guides are not yet established. Automatic coding will shorten the actual job of machine instruction, but automatic coding is no substitute for the planning that must precede computer application. The system planner through problem definition must establish the framework in which automatic coding can be used. The administrative problems of system implementation are not trivial. This is particularly true of the transition from one system to another. Careful advance planning is needed in such areas as file conversions, code changes, operational cutover, and personnel relocation. Management Review. The three stages of system evolution take place consecutively and the completion of each affords an opportunity for top management review and evaluation. At each stage, understanding and support at the upper levels of company administration are required since far-reaching changes in company procedure may prove desirable. Positive attitudes toward change, particularly in the middle management group, must be won through both top management support and the persuasiveness of the system planner. Scope of Study. The number of people and the investment required in design of an information system vary with the scope of the work undertaken. For limited areas, system design can be a modest undertaking; but where the total information system of a large and complex business is under study, the jobs of system design and implementation rise sharply in magnitude. Yet the design of an information system on the widest possible basis is important to satisfaction of management needs and efficient utilization of computer potential. 3. DETAILED STEPS OF SYSTEM DESIGN The detailed steps of system design are as follows: 1. Analysis of Present Information Flow Patterns . A. Establish system design program 1. Objectives and scope of study 2. Reporting status of study group 7-04 II. USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 3 .. Group selection on basis of a. Management perspective b. Knowledge of company operations c. Knowledge of information handling technology B. Review present data processing activities placing emphasis on: 1. Flow of information within the company 2. Isolation of exceptions to general routines C. Develop information flow patterns as a basis for system design. These patterns contain: 1. l\1ajor paths of information flow and important exceptions 2. System parameters for each information processing area a. Input data b. Search requirements c. File maintenance d. Computation e. Output requirements f. Data transmission requirements D. Analyze information use within the company to discover: 1. Motivation for output of present systems a. Management decisions b. Operating practices c. External requirements 1) Federal, state, and local governments for tax and regu~ latory purposes 2) Independent auditors 3) Equity and credit financing 4) Security exchanges 2. Needs not met by current procedures 3. Time factors bearing on usefulness of information E. Measure present costs in data processing areas F. Determine basic direction of further systems study 1. Basic technical and economic feasibility of electronic data processing 2. Practical levels of automaticity in data processing 3. Potential for operations research tools System Definition and Selection of Equipment A. Develop specifications for a business information system in which: 1. Information needs of management for policy guidance and operational control are adequately met DESIGN OF BUSINESS SYSTEMS 7-05 2. Computational and search abilities of electronic computers arc employed where useful 3. Applicable operations research techniques are employed 4. Related data processing activities are integrated B. Project system requirements against various general purpose and special purpose computers. Determine the system implications of each data processor and its auxiliaries in terms of: 1. Equipment items necessary a. Computing equipment b. Input and output devices c. Communications equipment d. Data conversion equipment 2. Operating personnel required a. Input transcription clerks b. Machine operators c. Clerical workers d. Maintenance crews 3. Information output of the system C. Select equipment on the basis of: 1. System implications stemming from use of equipment items in various combinations a. Information outputs b. Automaticity of data handling operations c. Capacity for growth in volume of data and system complexity 2. Machine characteristics a. Computing equipment 1) Compatibility with various input and output equipments 2) Machine logic and speed 3) Status of programming development 4) Error detection and correction features 5) User experience 6) Availability of computer, auxiliaries, and spare parts 7) Manufacturer training facilities for programmers and maintenance personnel 8) Manufacturer reputation and financial responsibility b. Auxiliary storages 1) Sequential access: magnetic tapes 2) Random access: drums, disks, etc. 3) Extent of buffering 7-06 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS c. Input and output devices 1) Compatibility with computing equipment 2) Program features 3) Operation speed 4) Reliability 5) Extent of automatic input sensing 6) Input verification features 7) Extent of buffering d. Communications equipment 1) Kind of data transmission (i.e., keyboard, page copy, teletype tape, punched cards, magnetic tape) 2) Kind of data receipt 3) Program features 4) Transmission speed 5) Transmission reliability 6) Selection and switching features e. Data conversion equipment 1) Speed of conversion 2) Program features 3) Reliability 3. Economic factors a. Projected cost reductions, if any b. Value of improved information output c. Equipment, programming, and transition costs d. Rate-of-return calculations to determine desirability of equipment acquisition and whether purchase or rental is most economical D. Verify key system "design assumptions and capabilities of selected equipment 1. Develop selected routines and computer test critical runs 2. Confirm estimated usefulness of library routines and autorna tic coding 3. Validate computer timing estimates on the basis of tests III. System Implementation A. Organize implementation effort 1. Select and train personnel for detailed system design and operation a. Supervisors b. Analysts versed in business systems, statistics, or operations research c. Programmers d. Operating technicians DESIGN OF BUSINESS SYSTEMS 7-07 e. Maintenance engineers and technicians (if required) 2. Establish implementation group a. Resolve reporting status to senior management b. Provide for coordinating decisions which cut across departmental lines c. Announce system implementation effort to company employees d. Set up group administration 1) Group leadership 2) Working level contacts throughout the company 3) Organization of balanced teams containing system analysis skills, programming knowledge, statistical know-how, and operations research experience in model building and optimization B. Plan equipment acquisition 1. Contract arrangements a. Delivery of computer and other data processing equipment b. Training arrangements c. Maintenance contracts d. Legal and tax implications of contract terms e. Acceptance tests on customer site f. Insurance on equipment 2. Site preparation a. Space for computer, auxiliaries, and staff b. Communications facilities c. Power d. Air conditioning as required e. Special housings as required 3. Purchase of spare parts and test equipment if necessary C. Set priorities for implementation of various application areas D. Define input, output, data processing, and data transmission requirements within each application area through: 1. Further development of system requirements and their adaptation to the specifics of the selected equipment 2. Formulation of policy and operating decisions which will meet management objectives and contribute to effective system design 3. Coordination of policy and operating decisions within the company 4. Development of models reflecting company operation for study of: a. Interdependence of operating variables within the firm 7-08 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS E. F. G. H. b. Optimization of cost, service, or production objectives c. Intra-firm communications Design procedures for auxiliary equipment 1. Input engineering a. Forms design b. Explicit procedures for completing each input document c. Equipment programming for keypunches, typewriter tape punches, etc. 2. Communications engineering 3. Programming of conversion devices required by the system 4. Design of system outputs Program computer operations 1. Broad computer planning: process charts projecting computer runs 2. Specification of computer logic through block diagrams 3. Detailing of exact procedural steps through computer flow charts a. Use of automatic coding techniques b. Basic computation routines 1) Problem formulation routines 2) Error detection routines c. Housekeeping routines 1) Input routines 2) Output routines 3) Rerun procedures 4. Preparation of machine instructions by computer coding Debug computer routines 1. Prepare sample problem for each routine which tests flow chart branches and uses subroutines 2. Hand compute answers to sample problem and contents of selected storage locations 3. Run sample problem and compare with hand computations 4. Analyze computer routine if computer hangs up or if computer calculations are in error a. Stop computer at preselected check points b. Read out selected storage locations and compare with expected contents c. Correct routines where errors are discovered Debug system operation by running individual routines successively as planned in actual use 1. Combinations of routines with test data 2. Parall~l operation with existing system By employee I------:)~ Labor Distribution Accounting o m til (j) Totals Z o "T1 nsurance funds Stock purchase fund Disbursements Bond accruals Union dues Federal withholding and FICA taxes Prepare Community service fund Meal tickets Transfer of funds r+- ~ W-2 (yearly) State tax withheld (yearly) Earnings subject to FICA { and UC taxes (quarterly) Tax reports tD C ~ Z m til til til -< til -t m ~ til Provides FICA cutoff FIG. 1. A payroll procedure chart which emphasizes information flow. ..... b ..0 7-10 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 1. Plan transition to new system operation 1. Train personnel in new duties 2. Phase over to new procedures a. Preparing records in the form required by the new system b. Converting to new codes and designators where necessary c. Adjusting to policy changes embodied in the new system d. Labor scheduling to provide for expanding work load during changeover e. Scheduling of equipment operation 3. Relocation of personnel as older procedures are superseded J. Evaluate system operation 1. Utilization of information outputs 2. Analysis of exceptions requiring manual handling a. Input errors b. Unplanned occurrences 3. Programming inefficiencies 4. Programming errors 5. Justification of various special handling routines through analysis of their use K. Research further into information needs and the means of satisfying them EXAMPLE. Charting techniques are helpful in both setting down present information flow patterns and defining system requirements as a basis for machine selection. A payroll example will be used to illustrate the procedure. Existing System. Figure 1 charts information flow in a public utility payroll procedure. The figure represents an existing system before redesign in the light of computer potentials. It is intended to show major paths of information flow and to deemphasize paper handling. The operations and controls noted by the system analyst are shown. Key-driven payroll accounting machines were used in the procedure and the characteristics and limitations of this equipment are reflected in Fig. 1. Consequently, a computer system would not necessarily duplicate the processing shown. Figure 1 should be considered as providing raw material for redesign of the information system. Redesigned System. Figure 2 suggests redesign for three related areas: personnel records, payroll, and labor distribution. From the standpoint of present information flow these areas are separate procedures, each under different administrative control. These related areas have been integrated as one stOep of system definition. Figure 2 should not, however, be interpreted as specifying computer processing. The processing indi- W-2(yearI Y) State taxes withhetd (yearly) Earnings subject to FICA { and UC taxes (quarlerly) ~~:~~~:~Of:~ShistOry ! } Service pin and birthday notices t-----:)~ Overtime and absentee records (by employee and department) Strength totals by organizational element PERSONNEL RECORDS o m til Paychecks Check register Accounting control information Accounts payable disbursements Insurance Stock purchase Bonds Union dues Taxes Community service fund Meal tickets Transfer of funds (i) Z o PAYROLL " OJ C ~ Z m til til til -< til -i m 3: til LABOR DISTRIBUTION Labor Charges to Work Authorizations and Production orders FIG. 2. A broad view of information processing in three related areas. ...... I 7-12 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS cated should be modified in the light of eventual equipment selections. Rather, Fig. 2 provides an idealized system as a starting point for equipment evaluation. 4. ECONOMIC IMPACTS OF SYSTEM CHANGES Economic Evaluation. The decision to acquire a computer and associated data processing equipment is very largely a dollar and cents matter. Both reduction of clerical costs and the value of better information can be used to estimate the net dollar effect of computer system utilization. This net figure results from considering all cash costs incurred in computer system operation and all benefits which result. The flow of cash over the useful life of the system allows the desirability of computer acquisition to be measured in definitive terms. Return on Investment. Computers and allied equipment represent just one area in which management may have opportunity for investment. Acquisition of data processing equipment must compete for funds with other worth-while projects within the firm. This acquisition can be judged in terms of rate of return on invested capital. Installing a computer system through either rental or purchase necessitates a considerable investment. The return on this investment is calculated from the cash flows generated through system use. This analysis requires an assumption of useful life for the computer, associated equipment, and computer routines. An estimate of useful life for these elements plays an important role in economic analysis. While computer routines may undergo substantial revision after operational experience is gained with the computer system, the computer itself should have relatively long life. It does not matter if cheaper, more powerful, or otherwise more enticing machines are developed; a given computer can provide productive service over an extended period. Estimates of useful computer life range from five to fifteen years with the writer tending to accept the higher figure as a reasonable estimate. Another important factor in economic analysis is the depreciation of capitalized facilities taken for tax purposes. Such depreciation makes possible an estimate of the net cash effect of the system over the useful life of the system. This net cash after taxes allows computation of the rate of return on the project. The rate of return on invested capital is defined as the rate at which future earnings of a project must be discounted so that their present worth equals the investment. Such analysis provides a sound basis for evaluating the economic desirability of computer acquisition. Choices among competitive machines and between rental and purchase are facilitated through comparison of rates of return on invested capita!. TABLE 1. RATE-OF-RETURN CALCULAT ONS FOR EQU PMENT PURCHASE AND RENTAL Out-of-Pocket I nvestmenl A. B. Equipment Purchase Equipment cost Programming and transition costs Site preparation and additional capitalized costs Income tax saving through expensing of programming and transition cost $ 700,000 400,000 100,000 $1,200,000 ~o,ooo Equipment Rental Programming and transition cost Site preparation and additional capitalized costs Income tax saving through expensing of programming and transition cost $1,000,000 $400,000 100,000 $500,000 200,000 $300,000 -1. 2. 3. 4. 5. 6. 7. 8. 9. 10. a Calculated by P m (J') (j) Z Rates of Return I terns Determining Cash Flow Out-of-pocket investment in data processing equipment, computer routines, and other costs Net annual cost reduction before cost of equipment maintt~ance Less equipment rental (including maintenance) Less depreciation on equipment, site, and other capitalized costs Less cost of equipment maintenance Net taxable savings Income tax, 50% of item 6 Added annual cash generated (item 2 minus items 3, 5, 7) Pay-back period (length of time needed to get the out-of-pocket investment back-item 1 divided by item 8) Return on investmenta o o A. Equipment Purchase B. Equipment Rental "T1 Life of System Five Years Ten Years Life of System Five Years Ten Years C $1,000,000 $ 325,000 81,000,000 $ 325,000 8300,000 $325,000 220,000 20,000 8300,000 $325,000 220,000 10,000 160,000 60,000 $ 105,000 52,500 $ 212,500 80,000 60,000 $ 185,000 92,500 $ 172,500 $ 85,000 42,500 $ 62,500 $ 95,000 47,500 $ 57,500 4i years 5i years 4i years 2% 12% 12% 51 years 15% OJ ~ Z m (J') (J') (J') -< (J') -t m ~ (J') =!r (1-~) enr ' where P is the pay-back period, n the number of years of economic life, and r the per cent return on investment. ';'" w 7-14 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS EXAMPLE. Table 1 contains sample rate-of-return calculations. These have been determined for equipment rental and purchase under two assumptions of system useful life. Several simplifying assumptions have been made for illustrative purposes: level rather than accelerated depreciation, equal useful life for all system elements, income tax at 50 per cent, equal annual savings over the useful life of the system. These rates of return, when viewed with the amount invested in system implementation, allow management to make knowledgable decisions about the desirability of equipment acquisitions. REFERENCES 1. W. D. Bell, A Management Guide to Electronic Computers, McGraw-Hill, New York, 1957. 2. R. G. Canning, Electronic Data Processing in Business and Industry, Wiley, New York, 1956. 3. R. G. Canning, Installing Electronic Data Processing Systems, Wiley, New York, 1957. 4. C. W. Churchman, R. L. Ackoff, E. L. Arnoff, et al., Introduction to Operations Research, Wiley, New York, 1957. 5. M. P. Doss, Editor, Information Processing Equipment, Reinhold, New York, 1955. 6. L. H. Hattery and G. P. Bush, Editors, Electronics in Management, The University Press of Washington, D. C., 1956. 7. I. A. Herrmann, Office Methods, Systems and Procedures, Ronald, New York, 1950. 8. G. Kozmetsky and P. Kircher, Electronic Computers and Management Control, McGraw-Hill, New York, 1956. 9. H. S. Levin, Office Work and Automation, Wiley, New York, 1956. 10. D. D. McCracken, Digital Computer Programming, Wiley, New York, 1957. 11. F. Wallace, Appraising the Economics of Electronic Computers, Controllership Foundation, New York, 1956. 12. C. C. Gotlieb and J. N. P. Hume, High-Speed Data Processing, McGraw-Hill, New York, 1958. c THE USE OF DIGITAL COMPUTERS AND DATA PROCESSORS Chapter 8 Accounting Applications I. Life Insurance Accounting, by A. C. Vanselow and R. L. VanWinkle 2. Casualty Insurance Accounting, by L. L. van Oosten 3. Public Utility Customer Billing, by E. D. Cowles 4. Payroll and Salary Distribution, by H. Tellier 8-01 8·08 8-11 8-15 I. LIFE INSURANCE ACCOUNTING A. C. Vanselow and R. L. VanWinkle Overall System Description A centralized life insurance accounting system requires speed in processing large volumes of data for the preparation of all reports and records generated for many policyowners and agency representatives. These reports are a result of the combination of a brought-forward file and new input data. To handle such applications as premium billing, premium accounting, dividend accounting, agents' commission accounting, and valuation of policy reserves with maximum efficiency requires an integrated data processing system. Franklin Life's integrated system is built around a master tape file of 240 digit items and a name and address tape file of a variable item size with basic items of 120 digits. These two files replace five major punched card files, an Addressograph system of 650,000 plates, and seven ledger and index card files. Equipment. The equipment employed for the integrated data processing consists of: 1 large data processor (Univac I), 18 typewriter 8-01 8-02 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS inputs for magnetic tapes (Unitypers) , 12 magnetic tape units (includes 2 for high-speed printers), 2 high-speed printers (600 lines/minute). Installation and Operation. The planning and preparation of the programs necessary to convert our entire system to E.D.P. required 504 man-months. This was accomplished by 14 men. Five persons attended computer manufacturer's programming courses. The data processing system is used 580 hours per month for production and debugging. Scheduled and unscheduled downtime are 13 per cent and 3 per cent, respectively. The operating staff required for the integrated system consists of 4 analysts, 10 programmers, 4 operators, and 12 maintenance personnel. Master Tape File The master file contains 20 Univac words for each policy item. This includes all the policy data necessary for the five major accounting systems except the policyowner's name and address, which is maintained on a separate tape file. The sequence of the master file is policy number within each premium billing due day (1-31 inclusive). There are many policy changes, including premium payments, terminations, data changes, policy loans, partial surrender of dividends or coupons, and new business, each reflecting a change in the status of the policy. Daily application of all such changes to the entire tape file, approximately one hundred twenty reels of 6000 items each, is not justified economically. As a result, accumulated changes are applied for a particular due day on a monthly cycle basis when the due day is scheduled to be processed for the selection of premiums due for billing, dividends, policy loan interest, etc. All policy changes are unityped daily and verified. The verified tape is purified for legitimate coding and merged with the previous accumulated change file simultaneously selecting off all changes for the due day to be processed. These changes are then applied and the master file is now current. Updating the master file for one particular due day takes about 30 minutes to process external changes. Total time spent each month in updating the entire file is approximately 20 hours. Dividend Accounting The following is a description of the dividend accounting procedure. Objectives. The dividend accounting system is designed to calculate the amount of current dividends and coupons, calculate interest on the savings fund, prepare dividend checks, and record which of the five dividend options a policy owner has chosen each year. The options ACCOUNTING APPLICATIONS 8-03 are: (1) part payment of premium due, (2) purchase of additional paid-up insurance payable at maturity or death, (3) deposit with the company as an interest-bearing savings account, (4) shorten the premium paying period, (5) cash. In contrast to most life companies, Franklin allows the policyowner to make this selection with each dividend payment. Our system is unique in that we prepare in excess of 1200 checks daily for the majority of the current dividends which are mailed to our agency representatives for delivery to the policy owner. All checks are returned directly to the home office for processing with the selected option indicated except those which are cashed. Certain plans of insurance contain coupons which are guaranteed endowments and are credited to the policyowner's account automatically at the rate of 600 items daily as an interest-bearing fund subject to the clipping of the coupons in the policy if the cash is desired when earned. Input and Output. 1. Input. a. Master file magnetic tape. b. Data on dividend options on magnetic tape (prepared by. Unityper, electric typewriter to magnetic tape). c. Supervisory control panel type-in: check numbers. 2. Outputs. a. Magnetic tape, new master file dividend, coupon result tape. b. Printed reports. Major Processing Steps. 1. 2. 3. 4. 5. 6. 7. 8. Determine if dividend and/or coupon is due. Calculate dividend and/or coupon. Prepare dividend, coupon item. Determine if dividend and/or coupon interest earned. Calculate dividend and/or coupon interest earned. Prepare output tapes using name and address file. Accumulate control totals. Print out reports. Quantity of Data Processing Performed. A. Input and output. 1. Input. a. 181,440,000 digits of information stored in master file. b. 103,680,000 digits of information stored in name and address file. 2. Output. a. 5,685,000 digits printed. b. 6,500,000 digits recorded on magnetic tape. 8-04 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS B. Each day's portion of the master file is processed as a self-contained group; daily result tapes are processed when eight days' tapes have been accumulated. C. File storage requirements. 1. Magnetic tape master file contains 120 reels, 6000 items per reel, and twenty words per item. 2. High-speed storage. a. 300 words temporary Btorage. b. 700 words of program storage. Processing Steps Performed in Dividend Accounting Selection of Dividends and/or Coupons Due. 1. Check for presence of dividendi coupon code. Absence of dividend coupon code will cause computer to proceed to next policy. 2. If code present, examine policy issue year to determine if policy is old enough to earn a dividend or a coupon. 3. If policy is old enough, is dividend or coupon due the current working month? 4. If dividend due, determine if policyowner has returned previous dividend for deposit as an interest bearing savings fund. 5. If deposit field is negative, an error has occurred and the master item key is written out for manual checking. 6. If deposit field is zero, no interest is due. 7. If deposit field is positive, calculate interest earned. a. Store interest amount for future notification to policyowner. b. Add interest to amount of deposit and return to storage to be inserted into new master item. 8. Write new master item on new master tape (also, retain in storage). 9. Calculate the dividend or coupon duration year. 10. Prepare from the new master item a dividendi coupon item. a. Indicative information. b. Dividend interest earned. c. Amount of insurance. d. Coupons and interest on deposit. e. Paid-up additions on deposit. 11. Write dividendlcoupon item on a result tape. 12. This procedure is repeated for each policy on each tape for the selected due day. 13. The result tapes are retained for a period of eight days as an arbitrary procedure to save computer time. 14. The eight tapes are then sorted by the key (fund, mortality table, duration year, kind of policy, and age at issue). ACCOUNTING APPLICATIONS 8-05 15. The key of the sorted dividend/coupon items is matched for equality against the dividend rate index. 16. If equality is not found, the item is written out for manual coding of an index item so that the dividend/coupon can be run through the next eight-day cycle. 17. When equality is found, is a dividend, a coupon, or both earned? 18. If a dividend is earned, calculate the current dividend earned and the amount of additional paid up insurance this dividend would purchase. 19. If a coupon is earned, calculate the current coupon earned. 20. If previous coupon and interest on deposit, add to current coupon and calculate one year's interest. 21. If no previous coupon on deposit, calculate one year's interest on the current coupon. 22. Prepare and write out' an item on the qividend/ coupon result tape. 23. The result tape of dividends and coupons are now sorted by their new key which is due day and policy number. 24. Match this sorted result tape with the policyowner's name and address file for a selected due day. 25. When equality is found with the name and address file prepare output tapes with items: a. Outstanding dividends. b. Dividends, coupons, and interest due. c. Dividends, coupons, and interest not due (d~e days other than selected, controlled by name and address tapes). d. Dividends. 26. If equality is not found, follow same procedure with no name and address on the dividend check (manually typed). 27. Accumulate totals for dividend amount, coupon amount, interest on coupons, and interest on dividends. 28. Assign a check number to each dividend check (controlled by supervisory control panel type-in). 29. The accumulated totals are entered at the end of the dividend, coupon, and interest due tape. 30. The tape of dividends, coupons, and interest due is listed on the high-speed printer for the check register. 31. The dividend total on check register represents the amount of the checks written and is used as the basis to prepare manually a check requisition. 32. Coupons, interest on coupons, and interest on dividends are automatically placed on deposit for the policyowners by manually 8-06 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS preparing a journal voucher from totals printed on the check \ 33. List the dividend checks on the high-speed printer. 34. Manually select all dividend checks with a permanent option indicated. 35. All other dividend checks are mailed to the agency representatives for delivery to the policyowners. Permanent options are dividends which are automatically placed on deposit at the request of the policyowner. Checks are prepared with "Void" in the amount so they may be processed in the same manner as returned checks. Specific conditions require that certain options are not available, therefore, a series of X's is printed on the check form in this option field. For example, the premiums paid by bank draft, salary deduction, government allotment, or any automatic premium payment plan, special authorizations are necessary each time the amount is changed; therefore, the option of applying the current dividend to reduce the next premium payment is deleted. The calculation of the dividend and coupon interest is different because the dividend is credited at the beginning of the policy year whereas the coupon, the coupon interest, and dividend interest are credited at the end of the policy year. Processing Returned Dividend Checks and Automatic Option Voided Checks. This procedure is for the voided permanent option checks, the checks returned from the policyowner with a selected option, and the cashed checks returned from the bank. 1. Tally checks by selected option code with an adding machine. 2. Attach adding machine tape to each group of returned checks. 3. Unitype 20 digits of information for each check. a = check number b = policy number c = selected option code d = amount of dividend 4. U nitype selected option code control totals from attached adding machine tape into the first sentinel item. 5. Tally unityped tapes on Univac by selected option code and balance with control totals in sentinel block. 6. If there is no balance, a manual determination must be made as to whether the checks must be re-unityped or the error is of a nature which will later be detected by Univac and ejected. 7. If the checks balance or it is decided to continue the processing reg~~~ ACCOUNTING APPLICATIONS 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 8-07 of the checks which are out of balance, they are now sorted by check number and policy number. J.YIatch the sorted returned checks against the outstanding check file by check number and policy number. If no equality is found with the returned check items, they are rejected for manual consideration due to a unityping error. If no equality is found with the outstanding items, they are tested for determination as to whether six months outstanding. If the checks have been outstanding six months, they are removed from the outstanding check file and classified as an "automatic transfer." These automatic transfers are credited by Univac to be left on deposit as an interest-bearing savings or to purchase additional paid up insurance contingent upon the provisions of the policy contract, whether Franklin or of a company acquired by Franklin. The automatic transfers are tallied by option code and written on the same result tape as the returned checks. If the checks have not been outstanding six months, but are 90 days outstanding, they are written on a follow-up tape and the new outstanding file. Follow up notices are run on all checks outstanding over 90 days reminding the policyowner to return the check to the home office with a selected option indicated or to cash it. If the outstanding checks are not 90 days out5tanding, they are written on the new outstanding check file. If equality is found with returned check and the outstanding check items, the outstanding is selected for further processing and written on the dividend result tape. When the match and select run is completed, the dividend result tape is tallied by trial balance account (determined by the dividend option) within state, county, and fund and added to the previous dividend liability summary tape for the year to date. The dividend result tape is listed for a detailed listing of transactions. The next program contains four input tapes: a. Monthly coupon liability brought forward. b. Unityped dividends and coupons surrendered. c. Current day dividend and coupon interest and coupons. d. Returned dividend checks and automatic transfers. The current coupons and surrenders of dividends and coupons are tallied by trial balance accounts within state, county, and fund. 8-08 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 21. These tallies are added to the coupon liability summary file tape preparing a new summary tape. 22. At the same time mast~r file change items are prepared: a. Dividends and coupons surrendered. b. Coupon interest and coupons. c. Returned dividend checks and automatic transfers. These changes will be merged into the accumulated master change file to be applied to next billing cycle by due day. 23. The dividend liability and coupon liability tapes are merged and summarized monthly producing figures to be used in the annual statement. 2. CASUALTY INSURANCE ACCOUNTING L. L. van Oosfen Introduction Casualty insurance accounting requires the rapid generation of many reports. These reports are generated by combining brought-forward data with those on source documents representing premiums, losses, and expense. In the past, cards representing the source documents were punched and balanced at each of Allstate's 28 branch offices. These cards were sent to the zone office (there are five zones) for summarizing and balancing and these summary cards were then sent to the home office. These summary cards were used then as inputs to punched card machines to develop the necessary reports. To provide the smallest changeover transient and retain the desirable features of the punched card system and yet take advantage of electronic data processing machines it was decided to. keep the above method of providing inputs and do the final processing with a stored program electronic data processor. Thus orice the summary card information has been fed into the data processor, one pass produces the desired report~, comparisons, and ratios. This one pass does the job formerly requiring many passes through different types of punched card equipment. Remarks on Overall System The data processor used in this installation is a Datatron. It has a 4080 word storage, an IBM 528 reproducer for punched card input, an optical tape reader (540 decimal digits/second) for punched paper tape input, an IBM 407 line printer for output, and three magnetic tape drives for auxiliary storage. Each tape drive holds a 2500-foot reel of magnetic tape on which can be stored 4,000,000 decimal digits grouped in 20,000 blocks of 200 digits each. The planning and preparation of the first ten programs was accom- ACCOUNTING APPLICATIONS 8-09 plished by five men, four of whom attended a two-week. programming course provided by ElectroData. This group then trained four men in programming and these men do any programming required now. The computer system is currently used approximately 230 hours per month and is operated by a staff of three operators and two service engineers. During 1955 there was 1.7 per cent unscheduled down time and about 7 per cent scheduled down time. The figures for 1956 are 3 per cent and 3 per cent respectively. The accuracy of the Datatron system is greater than any other method ever used by Allstate to accomplish the same results. This does not mean that other equipment is necessarily inaccurate. However, by obtaining required results from one system capable of doing all the work. involved in reporting instead of using many machines, plus several manual operations, the vulnerability to transpositions, sorting errors, lost cards, etc., is greatly reduced. Application Example 1. The System. The following is a description of how one of Allstate's reports is prepared with the Datatron. The name of the report is "Analysis of Claims Closed by Duration." A. This report is an analysis by branch of the claims closed during a given accounting month by claim report month, that is, the months in which the claims were originally reported. The past history of the claims closed for these report months is combined with the current closed claims to provide management with experience for the report months on a to-date basis, a 12-month moving average basis, and a 12-month-to-date moving average basis. Only claim cards are used in this particular report with no comparison to policies written. B. Input and output. 1. Input. a. Magnetic tape. Brought forward information from previous report. Stored by branch. b. Punched cards. Claims closed for current accounting month and closures for the accounting month one year prior to current month. 2. Output. a. Magnetic tape. Carry forward information for next period report. b. Printed report on IBM 407 line printer. C. Maj or processing steps. 1. Punched cards are sorted together by branch code only. 8-10 USE OF DIGITAL COMPUTERS AND DATA PROCESSORS 2. Punched cards are read into the computer by an IBM 528. 3. Brought forward information is read from magnetic tape and adjusted by the information in the punched cards. 4. Calculated report is printed out directly on the IBM 407. 5. New carry forward information is created and stored on magnetic tape. Each block of data is summed, stored on tape, and checked for control purposes on future reports. II. Quantity of Data Processing Performed. A. Input and output. 1. Input. a. 4000 cards (as noted, sorted by branch only). b. 21,840 digits of information stored on magnetic tape in order by branch. 2. Output. a. 174,720 digits printed. b. 218,400 digits recorded on tape. B. Each of 26 branches is processed as a self-contained group. Within each branch there are five possible coverages (A, B, C, D, H). Coverages A and C are further broken down by 24 report months, coverages B, D and H by 12 report months. C. File storage requirements (one word equals ten digits and sign). 1. Tape. 840 computer words for each of 26 branches for the brought forward and also for the carry forward, or a total of 1680 words for each branch. 2. Computer proper, for each branch. a. 840 words to store brought forward. b. 840 words to store information taken from the cards. c. 672 words to store the computations. III. Processing Steps Performed. A. The program deck in the form of punched cards is read into the computer and a check sum or total of the program codes is created. B. "Digit add" the current accounting month, used to check if correct decks are being used. C. Punched cards are automatically read into computer in groups ' of 60 by the IBM 528. D. Control totals are read onto the drum from the beginning of the brought forward magnetic tape and checked. Later they are used to check the brought forward for each branch. E. After reading in the 60 cards on the drum, each card is tested. 1. If there is a change in branch in the group of cards just ACCOUNTING APPLICATIONS 8-11 read, the magnetic tape is searched for brought forward information. 2. If all cards are for the same branch as previously read in, the coverage and report date determine where the information is accumulated on the drum (pseudo sorting). 3. \Vhen the last card of a branch being processed is sensed, the brought forward information is read onto the drum from magnetic tape and checked against the control total stored on the drum at the beginning of the job (III, D). The carry forward tape is in position for storage of the new carry forward. Calculations are performed, report is printed out, new carry forward information is rearranged for use next month, and then stored on magnetic tape. The carry forward information is then read back onto the drum and checked against the control total. F. At end of each run the control totals are recorded on the new carry forward tape with a check sum. The information thus stored on magnetic tape then becomes next month's brought forward. Within the computer, sorting as explained in III, E, 2 is done. Eleven averages are also computed for each line of the report (924 for each branch). Tapes are searched, read from, and written on. Total time is 4 hours of which 4.3 minutes are used in reading and writing from tape. Data on tape are stored so that for anyone branch one read order brings in all the information needed and in the form needed. The calculations are stored so that only five output instructions will cause all the calculations to be printed in the proper form. 3. PUBLIC UTILITY CUSTOMER BILLING E. D. Cowles Note. This section describes the billing operations at The Detroit Edison Company in effect from 1955-1957. Conversion to IBM 705 was started in March 1957, and was completed in l\1ay 1958. This description is still valid for systems requiring only a medium speed machine. 1. Task Performed. A. General Description of Task. Every public utility has the job of preparing customer billing. This description of customer billing at the Detroit Edison Company is an example of data processing in a public utility. The meters are read, a calculation is performed to determine each customer's use, then com- "'4 >4 ;4 34 ;4 34 ·'4 ;4" 34 ;4 ;4' 34 ;4 • • 14 14 • • • • l4 S6 56 So S6 '6 56 S6 50 !:(, 56 56 ;6 • • ;6 • 78 7i 78 q' H 14 15 ~ '1 is !t I) ? 7'S 78 'i $6 $6 • J4 ;~ • • • 34 5(i • • • >6 • • '6 '6 • ',' 1: -t~ -t21: 12".-1 2 ' • • 34 • • >4 • S6 • 56 • 56 $& ~4 o (fi =i » r.56 S& () o 7S 7~ ~ ""tJ '1 C -I m ;;0 1Z 3. :34 >4 '. ;4 ;4';4 If l4 >. 12 It 12 1: 12 1= .12 1Z lZ 1: 1:: lZ lZ 1Z 12 12 12 12 12 12 "T1 C ;4 14 14;4 34 !4 !. '4 >4 >4 i4 ;~ 3. J. '4 ;~ ,'4 14 l~ 34 34 34 34 '4 ;, 5(} 56 S6 '6' >6 So 56 56 56 5(, 56 56 56 S(, 56 56 >6 ~6 56 56 S6 So 56 . 51> 50 '6 5&" S4 56 1& ~& 5(, 56' ;& S6 ~~%%~~~~~~~h~%~~~~~~~hh~h~~~h~ Z o » ~ m Z -I » rtil FIG. 3b. Remington-Rand card and code. N I 12-12 DESIGN OF DIGITAL COMPUTERS The Digital Differential Analyzer (see Chap. 28). This differs from the general purpose arithmetic machine in that it is very highly organized internally so that efficient use is made of equipment. This machine accomplishes the mathematical operation o'f integration by making use of a num 1001 Corrective 6 i Carry Negative Numbers Negative numbers may be represented in a digital computing system in two ways. The conventional way in which people deal with a negative number (representing it as a magnitude plus algebraic sign) is referred to as sign and magnitude notation. The alternative to this representation is the complement representation by means of which the arithmetic process of subtraction is replaced by the arithmetic process of addition. Complement Representation. In subtracting two numbers N 1 and N2 in base R, the process may be rearranged as follows: Nl - N2 = Nl - N2 + Rn - Rn = Nl + (Rn - N2) - Rn, where n has been chosen so that Rn exceeds the largest expected N. The expression (Rn - N 2) is the complement of N 2 with respect to Rn or commonly, the complement of N 2 • (See Sign Digit below for representation of the sign of a complement.) The usefulness of this technique will be exhibited by the following examples. EXAMPLES. Let Nl = N2 = 0.345. 0.769, DIGITAL COMPUTER FUNDAMENTALS Then (10 - N 2) = 10.000 - 0.345 = 9.655 and (10 - Nl) = 10.000 - 0.769 = 9.231 Sign and Magnitude 0.769 -0.345 0.424 ~(--+-) As Carried Out 0.769 +9.655 (1)0.424 12-23 Actual Meaning 0.769 +9.655 - 10 10.424 - 10 t Carry is discarded but: 0.345 -0.769 -0.424 t 0.345 +9.231 9.576 t Indicates this is a complement. Its sign and magnitude representation is found by again complementing and affixing a negative sign. 10.000 -9.576 0.424 ~ - 0.424 0.345 9.231 - 10 9.576 - 10 -10.000 9.576 -0.424 t J The (-Rn) which is not carried along in the arithmetic manipulations is canceled by a carry from the most significant place of the addition process when required. The value of complementing is the replacement of subtraction by addition. The arithmetic section need thus have only adding properties. Implicit is the assumption that the complement can be formed without actually performing subtraction. Consider forming the complement of 69 with respect to 100. (100 - 69) = (99 - 69) + 1 = 30 + 1 = 31. Since each digit column of 99 contains the largest digit of the decimal system, i.e., 9, it can be guaranteed that no borrows can arise in forming (99 - 69) and hence, each column of this operation can be handled independently. This replaces subtraction with a columnwise logical operation. Thus, even the formation of the complement is reduced to a logical operation plus an addition. In this example, (99 - 69) = 30 is called the 9's complement whereas 31 is the true or 10's complement. DESIGN OF DIGITAL COMPUTERS 12-24 In a binary system, the 1'8 complement is a process of swapping l's and O's. The complement of 0101 is 1010 as shown below: (10000 - 0101h = = (1111 - 0101) 1010 +1= + 112 ~ (16 - 101112 5ho = = (15 - 5) 10 +1= + 1110 11110. In this example 1010 is the l's complement and 1011 the 2's complement. In general, the complement with respect to some power of the base is referred to as the true complement, whereas the complement with respect to (some power of the base -1) is referred to as the (radix -l)'s complement. Although complementing simplifies addition and subtraction, it complicates multiplication and division since spurious terms will arise in the result. Certain corrective operations must be performed at the end of the process in order to eliminate them. (N 1) (-N 2) 12 would be done as: (Nd (2r - N 2) = 2rNl - NIN2, whereas the desired result is (2 r - N 1N2)' Sign and Magnitude Representation. Here the multiplication and division proceed smoothly. Multiply or divide the magnitudes of the factors and form the sign of the result from an inspection of the signs of the factors. Difficulty with respect to addition and subtraction may arise. It is not known a priori whether the difference of two numbers will be positive or negative. If the minuend enters the arithmetic section first and is larger, the sign of the result will be positive and no difficulty occurs. If the subtrahend enters first and is larger, the result will not appear in its true sign and magnitude representation, but will appear in complement form. This behavior is illustrated by noting the action of the dials in the carriage of a desk calculator. Upon subtracting a larger number from a smaller one, all the dials rotate through zero to produce the complement of the sign-magnitude form of the result. If a complement form appears in the arithmetic element in this way, it must be complemented to return it to the sign and magnitude notation for which the rest of the machine system is organized. Roundoff (Ref. 9) Since multiplication of two numbers n places long may yield a product 2n places long, a machine may be forced to truncate a number. In so doing, it is hoped that a roundoff process can be chosen so that the resultant error statistically cancels in an extended computation. Rounding must be separately investigated for the number system of interest. Generally, it consists of half-adjusting which in decimal adds 5 (in binary, 1) in the column to the right of the column to be rounded on, DIGITAL COMPUTER FUNDAMENTALS 12-25 Sign Digit An algebraic sign must be attached to each number. In binary machines the leftmost bit is generally reserved for this feature and a common choice is 0 for positive, 1 for negative. In decimal machines, the leftmost decimal digit is often used for sign information, and the other 8 values of the digit (only two are needed for sign information) may be used for special purposes. The treatment of the sign digit depends on the means of representing negative numbers. In sign-magnitude representation, the sign digit does not enter into the arithmetic process but is treated separately. In complement representation, the sign digit enters into the arithmetic operation as though it were a numerical digit. The examples of the paragraph on Complement Representation demonstrate this; the sign digit is the o or 9 to the left of the point. Overflow vVithin a machine, the result of an arithmetic operation can exceed the range of numbers which it can accommodate. Most machines detect such an overflow situation. A machine reaction to an overflow can be a console indication, a halt, or an automatic correction procedure. Rules for detecting overflow depend upon the manner of representing negative numbers. For sign and magnitude machines, it is sufficient to detect a carry from the most significant digit column. For a complement machine, if numbers N 1 and N 2 are being added, the rules are: 1. If the sign digits of N 1 and N 2 differ, there cannot be an overflow. 2. If the sign digits of N 1 and N 2 are alike, there is or is not an overflow according as the sign digit of the answer disagrees or agrees with the like sign digits of N 1 and N 2. 6. COMPUTER DESIGN CHARACTERISTICS Computing machines may be classified according to a number of characteristics. A representative list of the more pertinent, with a short discussion of each, follows. General Purpose vs. Special Purpose. Digital computing machines intended to accommodate the broadest possible class of problems are categorically known as general purpose machines. On the other hand, one designed to be particularly efficient for a special class of problems is known as a special purpose machine. An example of the latter is the digital differential analyzer for which the special class of problems is ordinary total differential equations. 12-26 DESIGN OF DIGITAL COMPUTERS Serial vs. Parallel. The particular property for deciding whether a particular system is serial or parallel is not generally agreed upon. Frequently it is the mode in which the arithmetic unit operates. If successive digits of a number are handled in time sequence with the same equipment for each digit, the machine is said to perform serial arithmetic. If sufficient equipment is provided that all digit columns of a number may be operated upon essentially simultaneously, the machine is said to perform parallel arithmetic. Binary coded machines may be hybrid seriai-parallel machines in that the 4 bits of the coded tetrad may be operated upon in parallel, but the successive decimal digits operated on in series; serial-serial machines also exist. Serial and parallel may also be applied to transmission processes within a machine system. If the digits of a word are transmitted essentially simultaneously over parallel transmission channels, the machine is said to utilize parallel transmission; a machine having serial transmission will transmit the successive digits of a word in time sequence over a single transmission channel. Hybrid systems may exist. Binary vs. Decimal vs. Alphanumeric. A machine system organized to perform arithmetic operations in the binary number system is known as a binary machine. A machine organized to perform arithmetic processes in terms of some binary coded decimal format is known as a decimal or binary-coded-decimal machine. Frequently a decimal machine also includes some binary instructions to provide flexibility in manipulating data in logical processes. Some machines have been. referred to as octal or hexadecimal machines but they are actually true binary machines, in which the binary digits are grouped in triads or tetrads respectively and are interpreted as base 8 or base 16 digits. A machine organized to deal with 6-bit or larger groups in order to accommodate alphabetic and numeric information is referred to as an alphanumeric or alphameric machine. Type of Storage. A machine system is frequently characterized by the nature of the principal internal storage. Generally, a machine system will have a hierarchy of storage devices where the most rapid form of storage may be thought of as the principal internal working storage, supported by slower and more capacious levels of storage. A machine whose principal storage is a magnetic drum is termed a magnetic drum machine. Alternatively, a machine whose principal internal storage is electrostatic might be termed an electrostatic storage machine, and so forth. The nature of the secondary storage, tertiary storage, and such other levels of storage as may exist, is often not specified in the short description of a system. Storage may be random access, which implies that the time required DIGITAL COMPUTER FUNDAMENTALS 12-27 to consult any location is essentially the same; or it may be serial access, which implies that the locations appear in an ordered sequence and hence, the time to consult a location is variable and depends upon when the request is received by the storage and possibly upon past history. These characteristics may be likened to a pigeonhole file (any hole reachable in substantially the same time) and to a tub file respectively (the information comes sequentially and waiting time is a function of the position of the tub). By extension, random access has come to be used to describe storages whose access time may vary but whose maximum access time is short compared to the interval between successive consultations of the storage. Thus, a given storage device may be random access for one machine system but serial access for another. Further, for a fixed machine system, a given storage may be random access for one problem but serial access for another. With respect to the rest of the machine, the store may exhibit a destructive or nondestructive read process. These imply respectively that the act of consulting the storage for a piece of information destroys or does not destroy that piece of information within the storage. The nondestructive storage has the advantage that a given location may be repeatedly read for the same information without any special care in programming. Word Length. A word is the unit of information usually handled within a digital computing system and is measured in terms of the number of characters it contains. If the word is constrained to be numeric only, then its length will be measured as so many binary digits, or so many octal digits, or so many decimal digits, and so forth. If, on the other hand, a word may be either numeric or alphabetic or mixed, then its length will be measured as so many characters, where a character may be numeric, alphabetic, or other special symbols. A machine may be organized as a fixed word length machine in which case all words are of constant length. Alternatively, it may be a variable word length machine in which case the beginning and ending of each word must be indicated, or an adjustable word length machine in which the length of the word may be adjusted to suit the problem. If insufficient precision is available from numbers one word in length, a machine may be programmed to compute with numbers which are actually n words in length. Usually this is done for numbers two words long, and such numbers are called double length numbers. Number of Addresses per Instruction. A machine system whose instructions contain one address per instruction is known as a singleaddress machine. Machines whose instructions contain two addresses are known as two-address machines, and so forth. It may be that all 12-28 DESIGN OF DIGITAL COMPUTERS of the several addresses in an instruction are not of the same length. Commonly an address in the instruction will be capable of referring to the entirety of the principal internal storage. Sometimes an address within an instruction is used to refer to other parts of the machine as, for instance, the registers of the arithmetic unit, a particular one of many input-output units, and so forth. Under these circumstances the address need not be as long as one intended to refer to the entire principal storage, and is sometimes called a degenerate address. Machines with this structure are sometimes designated as one and one-half address rnachines, two and one-half address rnachines and so forth. Sometimes an address does not refer to an absolute location in storage, but indicates an incremental change from the last-used address. This arrangement is referred to as relative address organization. Nature of the Control Section. It is possible to organize the control section of a digital computer in two broad ways. The synchronous machine has a clock within the control section which provides the source of all timing signals needed by the machine. All electronic activity in the machine is paced by these regularly recurring clock signals, and no event occurs within the machine except at one of the clock signals. Between signals, transient phenomena are allowed to decay. A synchronous machine is sometimes called a clocked rnachine. The control may also be organized so that each event within the entire system is permitted to proceed at a rate which is governed only by the natural time constants of that event. All other events are effectively interlocked so that no other may occur until the stated one is complete. At that time, the completing event indicates the termination of its cycle .and invites, so to speak, the beginning of the next event in sequence. This type of organization is referred to as asynchronous control. If the events in section A of a computing machine are occurring at essentially random intervals or at a rate which is unrelated to the occurrence of events in section B, then the term asynchronous is sometimes used to state that section A is asynchronous with respect to section B. In this usage there is no implication as to whether section A or section B is in itself either synchronously or asynchronously organized. An example of this case is that of a magnetic drum running at its own clock rate but having to communicate with a synchronous machine running at its own clock rate. At the time of communication between them, the two devices must be synchronized for the interval during which information is being transmitted. Fixed Point vs. Floating Point. If the position of the radix point, e.g., binary point or decimal point, is always fixed in position with respect to the machine word, the machine is said to be a fixed-point DIGITAL COMPUTER FUNDAMENTALS 12-29 machine. The two most common cases are: the point at the right end of a word, in which case the machine performs integral arithmetic; the point at the left end of the word, in which case the machine performs fractional arithmetic. The position of the point may not be fixed with respect to the word but may be indicated by additional information contained within the word. This type of operation is known as floab:ngpoint operation and is similar to the widely used scientific notation. The number 636,107 may be written as 0.636107 X lOG or the number 0.00053 may be written as 0.53 X 10 -:{. A floating-point word would then contain a 1nagnitude which in the above examples would be 0.636107 or 0.530000 and an exponent which in the above examples is + 6 or -3. Floating point accommodates an extremely wide range of size in the numbers that can be handled, but careless use can give rise to serious errors or can be misleading as to the number of significant digits in the result. In a fixed-point computation there sometimes is considerable difficulty in adjusting the parameters of a problem so that all the numerical information fits within the range of numbers which the machine system can accommodate. Fitting a problem to a machine so far as number size is concerned is referred to as scaling. Internally vs. Externally Programmed Machines. If the list of instructions directing a machine system is in the principal internal storage of the system, the machine is known as an internaUy programmed or stored progra1n machine. The advantage of this method is that the storage can be allocated as much to routine and as much to data as a particular problem demands. A further advantage is that the machine system can have access to its own instructions and can therefore alter them by performing arithmetic or logical operations upon these instructions; thereby it can govern its future course of progress on the basis of its past results. Most of the electronic computing machines in existence today are the internally programmed type. Alternatively, a machine may be organized so that its list of instructions is outside its principal operating storage, in which case the machine generally cannot have access to these instructions to change them. Such a machine is referred to as an externally programmed l1wchine and is typified by the IBM Card Program Calculator or the Harvard Mark I machine. The latter machine stores its list of instructions on punched paper tape. Real Time or On-Line Operation. A computer designated as a real time machine is one in which the operation rate is sufficiently rapid that it can perform the problem solution in the same time that a parallel physical process occurs. In machine simulation of physical processes, real time implies that the machine accomplishes the simulation in the 12-30 DESIGN OF DIGITAL COMPUTERS same time as that required by the original physical process. An on-line machine is one which processes data in synchronism with some physical process such that the results of the computation are useful to this physical operation. Many of the applications of computing machines in automation or in control fall into either of these categories, particularly applications to process control. REFERENCES 1. Engineering Research Associates, High Speed Computing Machines, McGrawHill, New York, 1950. 2. R. K. Richards, Arithmetic Operations in Digital Computers, Van Nostrand, Princeton, N. J., 1955. 3. Standards on Electronic Computers, Proc. IR.E., 44 (9) (1956). 4. Staff of Harvard Computational Laboratory, Synthesis of electronic computing and control circuits, Ann. Harvard Computation Lab., 27, Harvard Univ. Press, Cambridge, Mass., 1951. 5. J. V. Uspensky and M. A. Heaslet, Elementary Number Theory, McGraw-Hill, New York, 1939. 6. 1. Flores, Reflected number systems, I.R.E. Trans. Elec. Computers, EC.5, 79-82, June 1956. 7. R. W. Hamming, Bell System Tech. J., 29, 147 (1950). 8. W. Keister, A. E. Ritchie, and S. H. Washburn, Design of Switching Circuits, Van Nostrand, Princeton, N. J., 1951. 9. F. B. Hildebrand, Introduction to Numerical Analysis, McGraw-Hill, New York, 1956. D DESIGN OF DIGITAL COMPUTERS Chapter 13 Techniques for Reliability Willis H. Ware I. 2. 3. 4. 5. 6. Introduction Summary of Operating and Design Techniques Operating Techniques System Design Circuit Design Maintenance References 13·01 13·02 13·04 13·05 13·07 13·08 13·10 I. INTRODUCTION Digital computer systems must exhibit "instantaneous reliability," e.g., a single failure could (1) change an instruction into a completely different kind, (2) cause the machine to consult a wrong address, (3) cause the machine to execute a meaningless sequence of instructions, or (4) introduce an undetected error which unbeknown to the user invalidates the final solution. Contributions to the overall operational reliability of a digital system can be made at three levels: (1) operating techniques, (2) design techniques, and (3) maintenance techniques. The importance of the type of error that will occur will depend, to some extent, on the use to which the digital computer is applied. In general, computer applications can be -divided into three categories: (1) scientific and engineering computations, (2) business data processing, and (3) on-line control operations. In the first two cases, low reliability 13·01 13-02 DESIGN OF DIGITAL COMPUTERS will increase the cost and time of operation. In the third case, computer malfunction can result in loss of product or plant shutdown. Hence, for on-line control, higher reliability is required, and computer reliability must be considered as a system parameter. In the typical electronic analog computing device, there exist two distinct kinds of feedback (see Refs. 1 and 4). 1. Electronic circuit feedback techniques are employed to stabilize the various parts of the analog system against fluctuation in performance and parameter values of the circuit components. 2. Feedback loops exist by virtue of the way in which the analog computer mechanizes the solution of the differential or other type of equation. Because of these two kinds of feedback protection the analog computer is, in a· large sense, proof against relatively maj or fluctuations in the performance of its components. It need, therefore, exhibit only "reliability on the average." In the electronic digital computing system the situation is radically different. Here, because of the high speeds of operation of the all-electronic circuits, it is often difficult to make use of feedback techniques in circuit des.ign. More importantly, however, the methods of problem preparation for digital machines are not such as to exhibit the second, or "logical" kind of feedback. Alternate techniques that can be used are discussed in Sect. 3. 2.$UMMARY OF OPERATING AND DESIGN TECHNIQUES Table 1 summarizes the characteristics of various operating and design checks. Evaluation Criteria. In determining which programmed checks are appropriate, the user will consider such things as: 1. The cost in machine time for the various checks . . . 2. The behavior pattern and the idiosyncrasies of the machine in use, especially where and how it tends to give trouble. 3. The consequences in time or money if the solution proves wrong. 4. The nuisance of having to rerun part or all of the problem. The programmer will consider the trade-off between an investment in some amount of machine time for programmed checks versus the expectation that some or all of the problem may have to be rerun because of machine malfunctions. In determ,ining which checks should be built int.o a machine, the designer will consider such things as: 1. The cost of the equipment which must be added for the checking features. 2. ,His faith in the ability of his components and his techniques to perform satisfactorily. TABLE 1. SUMMARY OF OPERATING AND DESIGN CHECKS Check Usually for: Name of Check Programmed Automatic Errors Likely to be Detected Trans. Arith. Oper. Oper. Store Oper. Duplication Usually Sometimes Systematic or transient errors in a machine operation. x x x Reawna bleness Usually Unlikely x x x Mathematical Usually Unlikely x x x Check sum Usually Possible Parity Possible Usually Self-check code Possible Usually but unlikely Error detectingcorrecting code Possible Usually but unlikely Weighted check Possible Forbidden combination Possible Usually but unlikely Casting out Possible Usually Usually Gross mistakes in the solution. Depending on the mathematical properties employed, gross or detailed, transient or systematic machine malfunctions. Any which are not compensating with respect to addition. Any odd number of errors which are not compensating with respect to this check. Any errors giving riEe to a forbidden combination in the code. Any for which code is designed; e.g., detect single and double but correct only single. Probably transpositions and any which are not compensating under the arithmetic or logical technique used. Any which produce an illegal combination of the code in question. All except those which make the result of the operation wrong by: (any integer times the number cast out). Remarks 'Vhen automatic, only part of machine may be duplex (Univac I) or entire machine (Sage AN/FSQ-7). Yields fairly rough measures of confidence in details of solution. Restricted generally to scientific and engineering problems. --I m () I Z .(5 x x x x x x x x x x x x x May be applied to any transfer of a block of data. Very common with stores, especially magnetic tapes. Similar to forbidden combination check except code groups here are usually longer. Examples are: Bell Relay Calculators, IBM-650. Rarely med unless expense of large amount of additional equipment is justified. Examples are: Raydac, Datamatic-lOOO. C m til "T1 0 :;::c :;::c m r- ); CC r- =i -< Relatively common in binary coded decimal machines. Examples are: Raydac, NORC, Datamatic-lOOO. w bw 13-04 DESIGN OF DIGITAL COMPUTERS 3. The environment in which the machine may have to operate, especially as the environment may affect the performance of the equipment; e.g., dirt and dust on the performance of magnetic tapes. 4. The possibility that, since the checking equipment increases the total quantity of equipment in the system, the checked system may be no more reliable than the smaller unchecked system. 5. The possibility that a less carefully designed basic machine supported by an adequate checking system may result in a more economic but equally reliable design. 6. The class of problems for which the machine system is intended; e.g., business data processing may be more demanding of machine performance than scientific problems. 3. OPERATING TECHNIQUES (Ref. 2) Programmed Checks. The programmer, in preparing a problem for a digital system, has available several possible schemes for incorporating into a routine additional operations which serve as checks on the proper functioning of the machine. The most valuable techniques will be those which check large segments of machine operation, and which serve to catch transient as well as systematic malfunctions of the equipment. Such checks are called programmed checks. Programmed checks may also be used to improve the operation of the system of which the computer is a part. Examples are reasonableness checks on input data and mathematical error minimizing technique~. Such programming techniques, which reject, smooth, or filter errors due to malfunction of input. equipment, measuring equipment, or other segments of the system, will not be included in this discussion. Duplication of Machine Operations. A possible technique is duplication of an operation, either arithmetic or data transfer type. This, however, will fail to catch systematic malfunctions of the system unless, in the checking operation, the equipment is used in a completely different fashion. EXAMPLES. 1. Form ab the first time, but form ba for the check multiplication. 2. Form a + b = c, but form c - a and compare the result with b for the check. 3. Extract a square root by an iterative process but check by squaring the result and comparing with the original operand. Reasonableness Checks. In many problems there are bounds to certain problem parameters or to certain solutions of the problem. The existence of any'supplementary information about the problem can be TECHNIQUES FOR RELIABILITY 13-05 used to increase the confidence in a solution. When applied to the input data, this is often called a consistency check. EXAMPLES. (1) The total payroll for a given period is less than some maximum amount. (2) No individual payroll check is larger than some maximum amount. (3) The specific gravity in a physical problem must always be a positive number. (4) The size of inventory for each item falls within some bound. (5) The magnitudes or rates of change of certain physical quantities fall within some bound. Mathematical Checks. Frequently such checks are available only in the scientific problem where the problem is one of mathematical as opposed to data processing nature. This check depends on the mathematical properties of a sequence of operations. EXAMPLES. (1) If the sine must be computed, also compute the cosine, and verify that the sum of the squares is unity. (2) A sufficiently high order difference of the solution of a differential equation exhibits relative constancy. (3) Upper and lower bounds are known for the variables of the problem. Check Sums (Ref. 5). A block of data and/or instructions is summed as though it were a sequence of numbers. This check sum is carried with the block as a tag. At any subsequent time the block may be verified by again summing and checking the new sum against the previous tag. 4. SYSTEM DESIGN (Refs. 2, 4) Choice of System Organization. By adding redundancy to a digital system in appropriate ways, reliability may be increased by endowing the system with an ability to detect, or possibly to detect and correct either single or multiple errors. A check of this kind, if it involves additional equipment in the system, is referred to as an automatic or, sometimes, a machine check. If the normal machine instructions in an appropriate routine are used to accomplish the check, this is another form of a programmed check. Different checks must be used for data transfer and arithmetic processes. Data Transfer Checks These techniques are useful for verifying the correctness of data transfers or for verifying the proper functioning of a storage device. They do not behave properly under arithmetic processes. Such a check could be used to (a) check data transfer from the internal store to an output device, (b) check data transfer from a magnetic tape to the internal store, (c) check that information retrieved from a storage device is without errors of the kind which the particular check can detect. 13-06 DESIGN OF DIGITAL COMPUTERS Parity Check (Ref. 6). In the parity check (see Chap. 12), an additional binary digit is added to a message in such a way that the number of l's in the message is, say, even. The parity check could also be made odd rather than even, or on the number of D's rather than the number of l's. An extension of this scheme would add redundant information about both the number of D's and number of l's. The message to which a parity or check digit is added might be a word, a character, or a block of data. A simple parity check will detect only an odd number of errors per message. Self-Checking Codes. In such codes some characteristic of each code group is a priori known; e.g., each code group contains a specified number of l's, no code group contains all D's. An example of such a code is the biquinary code first utilized in early relay calculators (see Chap. 12). A particular kind of self -checking code is the error-detecting and errorcorrecting code (see Ref. 3). In such a code additional bits of information are added in such a way that the presence of single or multiple errors is indicated. If sufficient additional information is added, it is possible to correct for single or multiple errors automatically. Weighted Check. A check tag is derived from the message to be checked and carried with the message. At any subsequent time, the message may be verified by again deriving the tag and comparing it to the tag accompanying the message. This technique may detect transpositions in the message. EXAMPLE. (1) Divide the message by an appropriate factor (often a prime number) and use the remainder as the tag. (2) Sum the digits of the inessage "casting out" multiples of an appropriate factor [often the (base - 1)] (see Arithmetic Checks: Casting Out). Forbidden Combinations. A kind of redundancy check which is applicable to several of the above schemes is the forbidden combination check. Here a simple test is made to determine that a given code group is one of the allowable set of code groups which a machine utilizes; e.g., in a binary coded decimal machine, the six discarded combinations of the sixteen binary tetrads would be regarded as forbidden combinations, and their presence would therefore indicate an error. Arithmetic Checks An automatic clieck for the arithmetic operation is considerably more difficult to implement. Duplication of the Arithmetic Section. In such a system all arithmetic operations are performed twice, simultaneously by different sets of equipment. TECHNIQUES FOR RELIABILITY 13-07 Casting Out. For this process additional equipment over and beyond that of the normal arithmetic section is provided to perform the casting out operation. EXAMPLE. In the check procedure multiples of 9 might be discarded. Operation 1978 X2156 11868 9890 1978 3956 4264568 1 + 9 + 7 + 8 = 25; 2 + 1 + 5 + 6 = 14; Check 25 - 18 (2X9) 14 9 (IX9) 7 X5 35; 4 + 2 + 6 + 4 + 5 + 6 + 8 = 35; 35 - 3+5=~ 27 = (3X9) ffiI The equality of the two check results gives a high probability that the original operation was done correctly. Other than 9's might be cast out, but the total number of possible errors 'checked for will be different; e.g., if 2's are cast out, only the parity (evenne'ss or oddness) of the final digit of the product will be verified; if 99's are cast out, a larger class of errors will be detected but the equipment or time required to perform the check increases. 5. CIRCUIT DESIGN The typical computing system represents, relatively speaking, a substantial quantity of electronic components. The parameters that specify the characteristics of the components will be statistically distributed; these statistical distributions will be a function of (1) the manufacturing process which produced these components, and (2) time through various aging effects, through temperature and humidity effects, and through fabrication techniques, such as those which might induce temperature cycling. (See Chap. 14.) Component Variations. It is necessary at the outset that the designer incorporate in his design technique means for accommodating such statistical fluctuation of component parameters. This generally means, for instance, that a given circuit design must operate satisfactorily, even though, say, all resistors deviate from normal values by 5 per cent; all active elements deviate from normal parameters by perhaps 25 per cent; supply voltages deviate from normal values by perhaps 10 per cent; and 13-08 DESIGN OF DIGITAL COMPUTERS all the deviations must be assumed to occur simultaneously and in the worst possible directions. By definition, the tolerance of any component parameter for which the circuit fails, specifies end of life for the component in question. In order to maintain a circuit near the center of its region of operability, components which reach end of life (as here defined) will usually be periodically replaced, even though such components may have considerable additional life expectancy for other applications. Environment. The operating environment of a component may drastically affect its life expectancy. Frequently components designed for commercial application are rated in such a way that the life expectancy is considerably less than that required by a digital application; therefore, it has become customary in digital circuit design to apply derating factors to the commercially established characteristics. For example: (1) resistors may be operated at 50 per cent dissipation rating; (2) capacitors may be operated at 80 per cent voltage rating; (3) active elements may be operated at 50 per cent of current rating. Design Philosophy. A conservative attitude on the part of the designer toward the performance of his circuit and the performance which he expects from his components is valuable. In some cases this may require additional components in order to absorb parameter variations of the basic parts of the circuit. In other cases it may require additional circuits in order to avoid possible faults which the designer might foresee in the performance of his basic circuit. The designer attempts to "design away" from all the difficulties of which he can conceive. 6. MAINTENANCE Scheduled. Maintenance for the typical digital system usually consists of regularly scheduled preventive maintenance periods, in which the system is carefully checked for its compliance with design center performance. In such preventive maintenance periods, there may be typically a systematic: 1. Cleaning of relay contacts. 2. Checking of parameters of active elements. 3. Visual inspection of solder joints, or condition of plugs. 4. Inspections by means of an oscilloscope of signals throughout the system. 5. Replacement of components whose parameters are approaching endof-life values. 6. Cleaning and lubrication of mechanical equipment. 7. Inspection of mechanical components for loose connections. 8. Verification of system performance by use of test problems. TECHNIQUES FOR RELIABILITY 13-09 9. Verification of system performance by marginal checking. Unscheduled. In addition to scheduled maintenance, there also will occur occasional intervals of unscheduled maintenance, in which an unexpected failure causes catastrophic or transient machine malfunction. Maintenance Techniques. For performing maintenance, the following specific features typically are available. 1. Marginal Checking Facilities. This is an arrangement for systematically varying the operating environment of a machine, e.g., basic pulse widths and repetition rate, supply voltages, temperature of cooling air. Generally, facilities are provided for varying all aspects of the operating environment in all combinations of ways. Sometimes it is possible for the machine itself to control a systematic search through all combinations of its possible marginal situations. This technique is valuable in indicating the location or existence of incipient difficulties. 2. A Carefully Designed Maintenance Console. From this facility it is usually possible to monitor a maj or part of the internal operation of the system; e.g., all flip-flops may be reported by suitable indicators; supply voltages may be directly indicated; various alarm conditions may be reported; internal conditions may be manually controlled. 3. Diagnostic Problems. These are of the nature of a test problem for the machine, usually arranged so that the nature of the failure in such a problem will provide information about the existence and/or the location of trouble. Sometimes such problems are referred to as trouble location problems if their prime purpose is to indicate the location of difficulty, or trouble detection problems if their prime purpose is to indicate the presence of some difficulty. Such diagnostic routines generally grow to cover a more exhaustive set of possible difficulties with a machine, as maintenance experience with the machine accumulates. Care must be taken that the maintenance personnel do not "groom" the machine to do its diagnostic problems while not really fixing a fault. Often the best kind of diagnostic problem is the problem itself on which the machine system failed. 4. Miscellaneous. As a measure of the ability of an operating system to survive unpredicted environmental influences, techniques such as the following are frequently employed. (a) SUbjection of the equipment to a low level of mechanical shock; as, for instance, by tapping with a rubber mallet. This tends to cause incipient difficulties to appear as permanent so that they may be remedied during scheduled periods of maintenance, e.g., poor solder joints, loose tube elements, faulty socket connections. (b) Subjection of the equipment to extraneous electrical interference as, for instance, might be generated by a spark discharge. This technique 13-10 DESIGN OF DIGITAL COMPUTERS tends to measure the ability of a system to rej ect noise interference, which is always present in a machine environment but usually difficult to locate as a source of trouble, since most often it would produce malfunctions of a transient nature. REFERENCES 1. W. H. Ware, Proc. West. Jt. Compo Con!., 27-31, February, 1957. 2. Ref. 1, Chap. 1, and definition of check, Chap. 1. 3. R. Hamming, Bell System Tech. J., 29, 147 (1950). 4. A. W. Boldyreff, Proc. West. Jt. Compo Con!., 18-20, February, 1957. 5. D. D. McCracken, Digital Computer Programming, Wiley, New York, 1957, p. 154. 6. D .D. MeCracken, Digital Computer Programming, Wiley, New York, H157, p. 151. D DESIGN OF DIGITAL COMPUTERS Chapter 14 Components and Basic Circuits Norman H. Taylor I. 2. 3. 4. 5. 6. Designing for Reliability Components and Circuit Design Marginal Checking Reliable Computer Circuits Components, Characteristics, and Application Notes Tra nsistors References 14·01 14·03 14·05 14·19 14·43 14·51 14·54 I. DESIGNING FOR RELIABILITY Note. The research described in this chapter, carried out at Lincoln Laboratory, was supported jointly by the Army, Navy, and Air Force under contract with the Massachusetts Institute of Technology. Design Philosophy. Circuits have been designed and constructed using the design philosophy described in this chapter. A typical circuit including its tube has an operating lifetime of over 100,000 hours. A routine maintenance scheme in which the marginal-checking principle is properly exploited can predict failures of over 90 per cent of the total to be expected. System operating efficiency (useful time/total time) over 95 per cent is attainable even in systems where 20,000 circuits are employed. The achievement of reliability is a goal that must be pursued from the very beginning of the system design proj ect. 14·01 14-02 DESIGN OF DIGITAL COMPUTERS Step 1. Consider each individual component to be used in the system and critically analyze its capabilities. Step 2. Employ the data from Step 1 to evaluate applications of these components that avoid their worst limitations. This chapter lists analyses of components and the resulting component applications that have been made by the staff of Lincoln Laboratory over a period of several years. Step 3. The final phase of the design proj ect is the electronic circuit design, based on the component analyses and applications notes derived earlier, with the objective of the achievement of high reliability. The thorough design method developed by Lincoln Laboratory is described in detail. This method provides reasonable component tolerances and adequate safety margins, and incorporates marginal checking throughout the design process. The method is illustrated in a detailed example of a high-speed vacuum tube flip-flop. Additional tube and transistor basic building-block circuits are described and discussed in Sects. 5 and 6 of this chapter. These basic circuits have been used in the assembly of large data processing systems. Reliability in Control Systems. In approaching the problem of reliability in computing and control systems, the concept changes considerably from the commonly accepted rules of the radio, television, and home appliance field. In the area of automatic control, the system under control is often a very costly one. It places a premium on its controlling parts; and, in military operations, human life itself is sometimes dependent on the reliability of the controlling electronics. Therefore, the electronic designer is faced with an extremely stringent design requirement and he must "design for reliability" from the start, even changing the systems concept, if necessary, to insure the desired result. Three vulnerable areas influence reliability: components, component application, and design. Components. Choice of components has a first order effect on system reliability. Two factors in component manufacture must be considered: Component Stability. Components are never absolutely stable. They drift in value with time, temperature, humidity, and altitude. Stability factors must be known and considered before design work is undertaken. Component Reproducibility. This is a factor of production tolerances. The 1 per cent resistor is now common, but the tube with 1 per cent tolerance in plate current has never been built. Tolerances must be known to the circuit designer and taken into account before design work is started. Component Application. The way in which a component is used, with consideration given to the problems of stability and reproducibility, is the second major factor contributing to reliability. Ideally, the natural COMPONENTS AND BASIC CIRCUITS 14-03 properties of the component are exploited, and its inherent weaknesses are avoided or bypassed by careful design. Design Considerations. The design of specific circuits is the third requirement for reliable electronics. Of the three factors in reliability, the design phase is the more difficult, because it must encompass the decisions and account for the boundary conditions imposed by the other two factors. 2. COMPONENTS AND CIRCUIT DESIGN Component Failures. A good method of appraising a particular application of a component is an evaluation based on the four major types of failures. These are: 1. Deterioration. Deterioration is a disease that the designer must face. "How fast is this component going to wear out in this application?" is the question which must be answered. 2. Sudden Failures. Sudden failure is self-explanatory. A vacuum tube loses its vacuum, a resistor opens up, a fuse blows-these are com-. plete, sudden failures. 3. Intermittent Failures. Means are available for coping with almost all types of failures except intermittents. Eventually, intermittents must be designed out of the components wherever possible. 4. Maladjustments. These are related to proper maintenance. The best possible solution is to create a design without adjustments. This, of course, is not always possible, but attention must be given to permissible adjustments and recommended procedures. . EXAMPLE. Magnetic Cores. A good example of a component application that meets the basic requirements of reliable design is the storage core in a magnetic storage plane. Failure characteristics are: 1. The component deteriorates slowly; in fact, present data indicate practically no change in characteristics with time. 2. Sudden failures are rare, limited to broken cores and usually occurring only in assembly. 3. Intermittents are rare; adequate insulation on the wires through the cores is all that is required. 4. No adjustments are necessary. In addition, cores are stable with respect to temperature and humidity, and are reproducible to close tolerances. The core storage itself is not useful without driving and sensing circuits. However, these auxiliary circuits cannot be made as reliable as the cores themselves. Magnetic core storage units have run for weeks and even months with complete freedom from error. They are presently the most reliable part of high-speed computers. 14-04 DESIGN OF DIGITAL COMPUTERS Component Vulnerability. Although a core is a good component, current techniques do not allow systems to be built entirely of cores. The designer is faced with the choice and use of many other components that are more subject to deterioration, intermittents, sudden failures, maladjustments, instability, and limitations in reproducibility. The following list suggests an order of vulnerability, with the most vulnerable components at the head of the list: (1) vacuum tubes, (2) diodes, (3) connectors, (4) relays, (5) resistors, (6) condensers, (7) transformers, (8) inductors, (9) cores. Transistors have not been included since there is not an equivalent amount of supporting information. On the basis of present units, they probably rank either above or below diodes. The individual characteristics of tubes and other components as these affect reliability are discussed in detail in Sect. 5, and notes on applications of these components are also included there. Transistors are treated, briefly, in Sect. 6. (See also Chap. 16.) Design Considerations. Safety Margins. The electronic designer is not accustomed to provide safety margins adequate to allow for the various disturbances that may occur in a circuit during its lifetime. The increasing use of electronic controls in larger and more critical areas forces the circuit engineer to pay greater attention to these factors. The circuit engineer is usually asked to make a circuit perform some specific function as a portion of a system. In the computer field, such a requirement may be for a high-speed switcher: Performance specifications are given on the limits on the speed of switching, the voltage swing that the switch should deliver, the resolution time, and perhaps some power limitation. The circuit designer must know about component stability and tolerances, and must build his design around such knowledge. Thus, the problem that really confronts the circuit designer becomes one of designing highly reliable and stable circuitry made up of components that are not reproducible and which are subject to deterioration, intermittents, maladjustment, and sudden failure. "Components," as used above, include power supply voltages, diode characteristics, tube characteristics, and resistors, anything that can change to the detriment of circuit performance. Design Criteria. Three criteria are effective guides for the recognition of component tolerances and their effect on adequate safety margins. DESIGN CRITERION 1. The circuit must meet its performance specifications with all components at their worst initial tolerances, and with any component at its worst end-of-life tolerance. By "worst" is meant deviation of the components in whatever direction is least favorable for the circuit. Usually, several worst combinations of components must be evaluated. The initial tolerance on a composition COMPONENTS AND BASIC CIRCUITS ' 14-05 resistor might be ±5 per cent, and end-of-life + 15 per cent. The numbers to use for these tolerances must be the result of a component study, as discussed in Sect. 5. In some simple circuits, it might be possible to have all components deteriorate to end-of-life at once, and still have satisfactory performance; this capability is desirable only if it requires no increase in circuit complexity. Added components result in a greater probability of intermittents; the increased complexity results in more difficult servicing. Statistically, one of a group of components will reach end-of-life while most of the others are still good; therefore, criterion 1 above is suggested as being a good engineering compromise in the search for circuit longevity. When a circuit geometry has been found that shows promise of meeting criterion 1 above, criteria 2 and 3 must be considered and met. DESIGN CRITERION 2. The circuit must be able to withstand the loss of anyone of the supply voltages in itself or in any circuit connected to its input or output without component damage. When diode logic is used, criterion 2 will usually necessitate use of protection diodes to prevent excessive back voltages. DESIGN CRITERION 3. Since all components (especially vacuum tubes) degenerate with life, circuit design should include means for detecting significant changes in c01nponent values during use of the circuit, and soon enough to insure replacement of the component before failure occurs. Provision of means for detecting deterioration allows near failures of components to be discovered and eliminated during routine, scheduled maintenance periods. Costly, unscheduled downtime can be minimized. Slow deterioration of tubes and other components may be observed over a period of time, and replacement can be predicted and even scheduled through the application of marginal checking. 3. MARGINAL CHECKING Requirements. To determine whether or not a circuit design meets the given performance specifications with the desired reliability, there is need for a method of evaluation that will (1) make graphically clear, in an explicit quantitative way, what tolerance a given circuit has to variations in its components, and (2) provide a method, usable in the later systems phase, of preventive maintenance that will adequately cope with the problems of component deterioration. Such a method for marginal checking was developed by Lincoln Laboratory; it has been extensively used in the design phases of large real time control systems, as well as in day-by-day operation of such systems. In the design phase, the allowable variation of a component is determined as a function of a selected circuit parameter, usually a supply DESIGN OF DIGITAL COMPUTERS 14-06 voltage. This measures the margins of circuit performance in terms of the marginal-checking parameter. Tolerance Plots. In practice,the tolerance of one of the components in the circuit is plotted against the variation in this marginal-checking parameter, as illustrated in Fig. 1. The intersection of mean-value and normal marginal-checking parameter lines near the center of the parabola indicates the operating point of the circuit, i.e., normal voltage on the -- -Failure region ....s:::: OJ ...u Point OJ 0- 10 c: 0 :.::; III .:; OJ 0 "C ~ -10 s:::: o I I I 0- E o u 1 iNormal I value I I I Marginal-checking parameter FIG. 1. Locus of failure points in a typical circuit. circuit and mean value of the components. By considering the supply voltage as the marginal-checking parameter and lowering it, a point is plotted on the contour line where the circuit fails to perform. This failure can be defined as the point at which the function of the circuit deviates from that prescribed in the specification. In an oscillator, for instance, the point at which the frequency shifts out of tolerance can be considered failure; in a flip-flop, the point at which some standard pulse fails to switch the position may be failure. Changing the tolerance on the component by some factor such as 10 per cent in a negative direction and again varying the marginal-checking voltage will result in a different failure point, such as Point 2 on the curve. By raising the tolerance of the component 10 per cent, another failure point, Point 3, can be plotted. When this study is continued, a contour line representing the locus of the failure point of the circuit to tolerance in componentry, as a function of some marginal-checking parameter, can be drawn enclosing an area of reliable operation. The result is that the contour often COMPONENTS AND BASIC CIRCUITS 14-07 is not symmetrical about the operating point, and that wide safety margins occur on one side but very narrow margins occur on the other. In most cases, the contour would be a closed loop if the marginalchecking parameters could be varied far enough without damaging the components. Plotting the curves and varying each of the components in even a moderately complex circuit represents a rather long and tedious study. However, the reader should remember that the circuits under discussion are to be subjected to all sorts of variations; failure in such circuits may cause losses of life or of large sums of money. With these factors in mind, the acceptability of the circuit to the system can be based only on the knowledge of tolerance plots. Marginal Checking: Components The application of marginal-checking procedures to components involves a variety of techniques which can be tailored for the particular problem at hand. The discussion in Sect. 1 assumed a one-dimensional (one-parameter) tolerance plot; whereas, of course, in reality there are many dimensions that vary simultaneously. Therefore, numerous experiments are usually needed to verify the initial studies. Ideally, one would like to plot a curve for each component of the circuit, with the component's deviation from nominal value on one axis and the marginal-checking parameter on the other, resulting in points on the curve that represent the boundary between satisfactory and unsatisfactory operation. To ease this job, engineering jUdgment must be used to determine which data shall be taken. Enough data must be taken so that the effect of change in each component may be deduced. All the component variations (or branch supply voltages where applicable) must be plotted against the marginal-checking voltage to determine that the required component tolerance is not prohibitive, and that the normal operating point is centered in the area of operation. If a component tolerance turns out to be + 1 per cent and -30 per cent, clearly the design is not centered, and a different nominal value for the component is indicated. Common sense indicates that all margins will not be symmetrical. Example. The plate supply voltage of a cathode follower can be lowered only until grid current loads the input circuit too much, but it may be possible to raise it until arc-over occurs. Resistors and Tubes. The effect of change of characteristics in resistors and in tubes may often be determined by varying the supply voltage for individual branches of the circuit and plotting this branch supply voltage against the marginal-checking voltage to determine the 14-08 DESIGN OF DIGITAL COMPUTERS area of satisfactory operation. In the case of resistive voltage dividers, a variation of the supply voltage for the divider may be converted to an equivalent change in the divider resistors. EXAMPLE. Consider the directB+ coupled amplifier in Fig. 2. The output voltage is a function of the input, B +, C -, Rb R 2 , and R 3 , so that a change of anyone of these parameters will affect the output level. If the permissible Input 0 - - - 1 excursion of C - is determined Output experimentally (other parameters held fixed), the resulting change in the output level may be calculated. From this change in outcput, it is possible to calculate the FIG. 2. Direct-coupled amplifier. equivalent change in any of the other parameters that would cause this same limiting change in output level. By employing this principle, one set of Elata can be used to determine the required tolerance of many components. The Pentode. The effect of loss of emission in a pentode can be simulated by reducing the screen voltage-a drop in screen voltage being equivalent to a drop in available zero-bias plate current. A rise in screen voltage will increase the cutoff voltage required, and it is useful for checking the adequacy of the bias B+ provided. The Triode. Aging in triodes is much more difficult to simulate. The principle used is to reduce the plate supply voltage, so that the tube at1--------+ Output tempts to pass the same current at less plate voltage. Consider the cir- Inputo------l:.... cuit in Fig. 3, where the input will be either at ground or cutoff, and the output voltage swing will be FIG. 3. Plate-loaded amplifier. dependent on the current the tube draws at zero bias. The load line is shown in Fig. 4 along with the zero-bias lines for, both a new and an end-of-life tube. A new tube would operate at point A and an end-of-life tube at point B. An end-of-life tube is not generally available for checking the circuit's operation at this point, so the supply voltage is reduced from El to a voltage E2 so that with the new tube the COMPONENTS AND BASIC CIRCUITS 14-09 operating point shifts to point C. The output voltage swing corresponds to an end-of-life tube with B + and E 2 , since the same plate current is switched into the load resistor for each case. This type of analysis may be used to evaluate the supply voltage variations observed in a circuit, in order to determine the adequacy of a design. If the magnitude of the supply variation alone were considered in comparing two com- E2 El Plate voltage, B + FIG. 4. Load line chart of circuit of Fig. 3. peting circuits, the circuit chosen might be the one that is the least tolerant of an old tube. An analysis similar to that given above will enable the engineer to make the better choice. It is often possible to substitute for an end-of-life tube a different type that will normally have characteristics close to those that would be expected from an end-of-life tube of the type to be used in the circuit. For example, a 6072 or a 12AY7 has approximately the same mu as a 5965, but about one-third the zero-bias current. If a 6072 works in circuits designed for 5965's, one knows then that the circuit will tolerate an end-of-life 5965 tube.· The Semiconductor Diode. In general, diodes may deteriorate in the direction of lower back resistance or higher forward resistance. A diode with low back resistance may be simulated by a shunt' resistor across a good diode. High forward resistance may be simulated by series resistors. Land C Components. The variations in inductors and capacitors generally must be determined by replacing them with different values or with series-parallel combinations. Every variation that might affect the circuit should be tried. 14-10 DESIGN OF DIGITAL COMPUTERS Marginal Checking: Circuits The application of marginal checking to circuit design will be described in terms of an example, a high-speed flip-flop designed for use in a large, high-speed digital computer. The complete treatment of this circuit includes performance and component specifications, and an evaluation of the performance, including plots of pertinent margins of operation. High-Speed Flip-Flop. The circuit for the high-speed flip-flop is shown in Fig. 5. Its complete specifications follow. +150 v r---+-----r-~ One output Clear input CRs Complement input CRa -150 v -150 v Marginal check FIG. 5. High-speed flip-flop. Unless otherwise specified: (1) resistors are in ohms, lw ± 5%; (2) VI and V 2 are 5965 tubes. Performance Specifications. Input. 0.08 to 0.12-p.sec half-sine wave positive pulses, 20 to 40 volts amplitude, 0 to 2 megacycles/sec pulse repetition frequency (prf) , set, clear, or complement. Output. Upper level, + 10 to + 12.5 volts; lower level, -27 to -30.5 volts. Total transition time, less than 0.5 p'sec (measured from the beginning of the pulse until the new level is reached), and a delay COMPONENTS AND BASIC CIRCUITS 14-11 suitable for counting. (The same pulse is used to complement the flip-flop and to sense a gate tube connected to its output.) Load That Can Be Driven. 90 p.p.f maximum per output, with a total load of no more than 100 p.p.f. Marginal Checking. It must be possible to marginal-check the circuit from a remote point so that drift in the components can be detected before they cause failure of the circuit during system use. Component Specifications. Resistors. Composition resistors used were nominal 1- and 2-watt size, had no more than 500/0 of the manufacturer's rated dissipation, an initial tolerance of ±5%, and an end-of-life tolerance of + 15%; no more than 500 volts rms applied. Nominal half-watt composition resistors had no more than 25% of the manufacturer's rated dissipation, an initial t<,>lerance of +5% and an end-of-life tolerance of + 15%, and no more than 350 volts rms applied. Values were restricted to the 50/0 RETMA (now EIA) series. Precision film resistors had no more than 50% of the manufacturer's rated dissipation, an initial tolerance of + 1% and an end-of-life tolerance of ±50/0, and no more than 500 volts rms for the nominal I-watt size or 750 volts rms for the nominal2-watt size. Values were restricted to the 5% RETMA (now EIA) series. Capacitors. Capacitors were ceramic-dielectric, ±5% initial and + 15% end-of-life tolerance, 50% of the manufacturer's rated voltage (which is 500), and available in the 100/0 RETMA (now EIA) series from 12 p.p.f to 330 fLfLf. Pulse Transformers. A small hermetically sealed canned transformer, designed to pass the standard O.l-fLsec pulses, was used. Germanium Diodes. A special group of diodes was specified. The high points of these specifications follow. Type W diode (intended for pulse mixing and clamping). With a low duty factor O.l-fLsec half-sine 50-ma current pulse, the forward drop was not to exceed 3 volts; acceptance back resistance was to be at least 500 kn between -10 and -50, 100 kn design value back resistance, except 50 kn design value for the first 0.5 fLsec after applying back voltage; for reverse recovery, after 5 ma forward for 1 fLsec, 40 volts reverse was to be applied, through a series resistance of 2 kn and the back current was to be less than 0.5 ma in 0.3 fLsec; forward current was not to exceed 150 ma peak for 0.1 fLsec or 60 ma rms; reverse voltage was not to exceed 60 volts. Type Y diode (a less expensive general purpose diode). At 1 volt forward voltage, the current was to be between 5 and 20 ma; back resistance specification was the same as for type W above, except 14-12 DESIGN OF DICSITAL COMPUTERS reverse current need decay to only 0.8 rna 0.3 p'sec after applying back voltage, and forward current was not to exceed 45 rna peak or 16 rna rms. t Volts (\1 PA 6 ~PW~ Input trigger 10 D 0 -10 -15 -20 -30 Output negative transition 10 Upper level 0 -10 -15 -20 Lower level Output positive transition FIG. 6. Output waveforms. PA, pulse amplitude, 20 v::; P A::; 40 v; PW, pulsewidth, 0.08 p.sec::; PW ::; 0.12 p.sec; D, circuit delay, PW::; D ::; 0.20 p.sec; TT, transition time from + 10 v to -30 v, TT ::; 0.5 p.sec; FT, fall time, 0.2 p.sec ::; FT ::; 0.3 p.sec; RT, rise time, 0.2 p.sec::; RT ::; 0.5 p.sec. Tubes. Only tubes that are acceptable as reliable types by manufacturers were specified. Triodes were preferred to pentodes since the triode has a simpler structure, and is less prone to intermittent shorts. Twin triodes were preferred over single triodes since fewer tube sockets are needed. Very high performance types were avoided on account of COMPONENTS AND BASIC CIRCUITS 14-13 their inherent close internal spacing and attendant high probability of intermittents. Power Supplies. Only centralized power supplies were used; for this system, the voltages available were + 250, + 150, + 90, + 10, -15, 100r----,-----.-----.-----r----~ 80r---------~~----------~--_1 Q) ~ .~ c- 40 t--------=-...""=:---------~~----__j ro U 20 and current, milliamperes FIG. 7. Maximum load for less than 0.5 p,sec fall time. -30, -150, and -300. All supplies had ± 1% regulation with +10/0 additional due to line drops, giving a total specification of ±2%. The end-of-life figure used was +5%. 30r------------,r--------------------.---------------, .!1 '0 > ID20~------------+---------------------r---------------~ 'C ~ c.. E ro 0.08 }J.sec pulse width 0.10 }J.sec pulse width @ 10~--------~--+---------r_----==~~~~~----------~ gg ~ OL-------------~--------------------~--------------~ o 0.5 2 5 Pulse repetition frequency, megacycles FIG. 8. Pulse repetition frequency response characteristics versus pulse width. Circuit Description. The feature of the circuit of the high-speed flip-flop (Fig. 5) is low-performance triodes with cathode followers isolating the plates from both the external load and the capacitance of the DESIGN OF DIGITAL COMPUTERS 14-14 30~----------~-------------------,-----------------' g y-100 J.LJ.Lf I side y-47 J.LJ.Lf/side ~ /No load 2 ~ 20~------------~--------------------~---'~~----------~ "'i5. E ro gg I~1O~======~====~~~~r---------~ ~ 0L-----------~------------------~----------------~5 05 2 Pulse repetition frequency, megacycles FIG. 9. Pulse repetition frequency response characteristics versus load. 20 I o-10 t- VI ~ 2 '0 e (3 :: -90 - I Complete failure (circuit does not have two stable states) - /,Arbitrnry failure (circuit fails to meet specification on lower level) - N - o lower output level - II ! J I -110 I I Upper output level \1 .:: -20 '5 -100 I -' 10 -30 I Positive bias I ~ ...-: I 8 Ek EgOn ~ ~N4 + Negative bias :- - , ,, , , (b) (a) 12 16 20 (c) (d) 24 Eg Off 28 32 On tube Ib in ma at 120 v E b • 0 vEe FIG. 10. Circuit voltages versus tube characteristics: (a) -40% average, (b) average tube, (c) Off tube, (d) +25% average. COMPONENTS AND BASIC CIRCUITS 14-15 opposite grid. The plate circuits are clamped through diodes to both + 10 and -30, stabilizing both the output swing and the signal transmitted to the opposite grid to make the circuit less sensitive to variations in plate current of the triodes. The bias return of one grid divider is the marginal-checking point; this is moved above and below its nominal voltage of -150 to determine the circuit's margin. This simulates drift in the four voltage divider resistors directly (R 7 through RIO). 20~--------~----------~----------~--------~ 15 os 10~--------~----------~----------+-~~~--~ re, oS 5 Average tube '0 > ~ (,) Other tube ~ O~----~--~----------~--~---+--+---------~ ..!. ro c .~ ~ -5 -1°r--r-Tr=====t==:;:;~::c==~ ss -15 -2~~--~~--~8~--~~--~1~6--~~~~~--~~---=32' One tube 1b in rna at 120 v E b , 0 vEe FIG. 11. Marginal-check voltages versus tube characteristics. Performance Data. Figures 6 and 7 define the performance of the flip-flop for system timing analysis. Figure 6 shows output and input waveforms; the time taken for the output to reach -15 is of interest since that is the level required to cut off a gate tube (described later). Figure 7 shows the maximum amount of capacitance and/or and curtent that the flip-flop can handle and still fall to the indicated voltage level within 0.5 microseconds. Rise time is inherently faster than fall time. and current is current drawn by a load connected to a positive voltage, measured when the flip-flop output is at its lower level. 20~----~----~----~----~----r-----~----~----' 15 10r----------+----!Po .B g 5 ~ u CI) .s:: y ~ o~--------~~------------~------------+-~--------~ .~ ro :E -5 -10~--------~------ -15~ -40 __ ~ ____ -30 ~ ____ ____ -10 0 ~ ____ 20 10 ~~~~ -20 ~~ __ ~ 30 ____ ~ 40 Tolerance, per cent FIG. 12. Marginal-check voltages versus divider-resistor tolerance. 20~----------~----------r-----------r---------~ 15 10 CI) bO .B > "0 ~ u CI) .s:: u 5 > 0.5 J,Lsec transition time r I roc .~ 0 ro ~ -5 -10 -15 -80 -60 -40 -20 o 80 Tolerance, per cent FIG. 13. Marginal-check voltages versus cathode-resistor tolerance. Tolerance with balanced tubes: +30%, -64%. Tolerance range: = 90%. 14-16 COMPONENTS AND BASIC CIRCUITS 14-17 Figure 8 shows the minimum complement trigger amplitude plotted against prf for various pulse widths, and Fig. 9 shows how the minimum complement trigger amplitude varies with prf for different capacitive loads. Reliability Data. Marginal Checking. Figures 10 through 16 show reliability data, obtained by marginal checking, that indicate the component tolerances and· safety margins of the circuit. In these diagrams, as means that the curve represents circuit behavior when the component concerned was on the opposite side of the circuit from which the marginal-checking input was located; SS means the same side. Figure 10 shows how critical voltages in the circuit vary as the tube ages. These data were taken by reducing the filament voltage to simulate the weak tube, a very touchy method. The tube was connected to a three-pole two-position switch, switched to a test position until the plate current stabilized, and then switched into the flip-flop circuit; the d-c voltages were then measured. Plate Current. Figure 11 shows the circuit margins plotted against the test plate current of one tube while the other is held fixed. The tube was "aged" by filament variations as described above. V oltage Divider Resistors. Figure 12 shows circuit margins plotted against the variations of the four voltage divider resistors, R7 through R 10 • This linear relationship is expected, and could have been obtained analytically. Cathode Resistors. Figure 13 shows margins plotted against tolerance of the cathode resistor, R l l . A note on the curve explains how it shifts with low-current tubes, so that the apparent unbalance in tolerance is not obj ectionable. Plate Load Resistors. Figure 14 shows how the margins vary with the plate load resistors, Rl and R 2 • Low Back Resistance. Figure 15 shows the effect on margins of low back resistance in the -30-volt clamp diodes, CR 3 and CR 4 • Trigger Amplitude. Figure 16 shows margins as a function of trigger amplitude. This plot is the most useful one for optimizing the final circuit, especially when the data are taken for both low and high (2-Mc) prf's, maximum and minimum loads, unbalanced tubes, etc. Other data were taken to show margins versus the back resistance of the trigger diodes (CR D and CR 10 ), cathode-follower plate voltage, memory capacitors (C 1 and C 2 ), cathode bypass capacitor (C 3 ), forward drop of input diodes (CR 5 through CR g ), etc. Summary. The detailed analysis illustrated in this example gives the circuit designer quantitative figures for component tolerances and 20 aoX: LO 15 r-I n ~ 10 Q) 0.0 S 5 "0 > oX: U Q) .c u I roc: 0 > 0.5 fJ,sec transition time .~ III :: I I -5 I I I I -10 ss -15 -80 -60 -40 -20 o 20 40 60 80 Tolerance, per cent FIG. 14. Marginal-check voltages versus + l50-volt plate-resistor tolerance. 15r-----~----~----~r-----------~------------------~ 10~------~--~~----~--------~~~~--------------~ ~ S 5 g oX: U ~ ~ u (1) ~ Or------r+-----r---------~--r_----------~ I roc: '[0 III ~ -5 -10r-----------~~------------r_----------~ -15 -20~----~------~----~------~----~----~ o ro ~ ~ ~ W W O.I-JLsec complement trigger amplitude, volts FIG. 16. Marginal-check voltage versus input-trigger amplitude. circuits must be designed with the same thoroughness with respect to itfi performance, component tolerances, and safety margins. 4. RELIABLE COMPUTER CIRCUITS General Considerations. A group of typical and compatible computer circuits is presented to illustrate applications of the philosophy of reliable design. Each of the tube circuits was designed with the same care and study as the high-speed flip-flop example of the previous section. 14-20 DESIGN OF DIGITAL COMPUTERS The design of the transistor circuits has been slightly less rigorous because of the newness of the transistor. The group of circuits includes pulse sources, pulse amplifiers, logical gate circuitry, flip-flops, cathode followers, indicators, and blocking oscillators. These basic units can be interconnected to perform most logic functions. Together with a storage system, this circuitry is adequate for reliable high-speed computer application. In a large system, signal levels must, whenever possible, conform with a standard to make possible the interconnection of circuits, such as those listed below, in building-block fashion. The use of a set of centralized d-c power supplies offers many advantages over the use of several small supplies. With only one set of supplies to build, it is advantageous to devote a sizable effort to them. Greater potential reliability accrues from the use of fewer components. Trouble detection equipment (such as low-voltage and overvoltage detectors), control circuitry, and emergency supply switch gear is far less extensive than the composite of analogous equipment used for many smaller supplies. Vacuum Tuhe and Associated Semiconductor Diode Circuits The circuits to be described are designed to operate in a system using positive, nominally half -sinusoid (between triangular and square) pulses between 0.08 and 0.12 fLsec duration, and between 20 and 40 volts in amplitude, as standard control pulses. The prf can be between 0 and 2 Mc. Figure 17 shows such a standard O.I-fLsec pulse. Circuits such as flip- t 20 v 5-v max to 40 v -15V~ t J FIG. 17. Standard pulse. flops generate outputs at + 10 volts or -30 volts d-c levels, and are designed to be triggered by standard O.I-fLsec pulses. Gate tube circuits used as and gates are designed for standard O.I-fLsec pulse inputs to control grids and for levels to the suppressor grids of more positive than + 10 volts (for selection) or more negative than -15 volts (for nonselection). Since the flip-flops generate + 10 volts and -30 volts, and the gate tubes require only + 10 volts and -15 volts, the signal level from the flip-flop may be allowed to climb and be 3tttenuated through COMPONENTS AND BASIC CIRCUITS 14-21 cathode followers and diode logic on its way to a gate tube, without restandardizing the level. Whenever possible, gate tubes and pulse amplifiers are designed to have less than unity gain with pulse inputs of less than 5 volts; greater than unity gain but less than 40 volts output for inputs between 20 and 25 volts; and, for inputs of from 25 to 40 volts, to have outputs of 25 to 40 volts (see Fig. 18). This transfer characteristic creates a tendency 40 c 2 '0 > OJ"0 30 ~ C. ~ 20 OJ (J) 'S Co "510 .e::l 0 10 20 30 40 50 Input pulse amplitude, volts FIG. 18. Transfer characteristics. Specifications require that the transfer curve intersect vertical lines a, b, and c. Shading indicates normal operating region. toward standardization of pulse amplitudes and alleviates the need for restandardization of pulses traveling through chains of gate tubes and pulse amplifiers. Marginal-checking facilities are included in each circuit to aid in detection of failing or deteriorating components. The circuits described here have been designed to operate from centralized power supplies with outputs of -300, -150, -30, + 10, + 90, + 150, and + 250 volts. Particular attention has been paid to decoupling supply voltages to prevent interaction between circuits. Pulse Source. The circuit of Fig. 19 is a typical clock pulse (standard O.l-microsecond) generator. This circuit is designed to supply 0.1microsecond pulses into a 93-ohm load at a 2-megacycle rate. The 2-Mc sine wave output from the first stage is clipped in stage 2 and amplified (now as 2-megacycle pulses), and reclipped and standardized in stage 3. The ability of stage 3, and circuits like it, to standardize pulses to 0.1microsecond width is described in succeeding paragraphs. Marginal checking of each stage is accomplished by decreasing screen grid voltage and sensing the output for failure. Pulse Amplifiers. In many computer applications, the relatively large loads (long lines or many stages) that must be driven, require the use of pulse amplifiers, such as those shown in Figs. 20 and 23. +150 v +10 v +250 v ~ +250 v N N ~R12 100 C2 -'- Cs ~ ~·lI ~II~ 4'-1 0-30 J.l.J.I.f To.1 J.l.f 10 Tight ...L C13 TO.01/.Lf ~11~g\ Output Tight cm Ul ffi Z 0 "T1 C ffi =i > r () 0 ~ "'tJ C --I C4 0.01 J.l.f R4 220 -::- +90v Marginal check Rs 22 -15 v ...L C 1 ~ Rll ..L C ~ R 13 0.oi J.1.f 220 To.1 ~f22 0 +90 v Marginal check FIG. 19. Clock pulse generator. 0 -15 v I -LC 4 ~R1S -r: _.1 • 220 -::- +90 v Marginal check m :;:c Ul 14-23 COMPONENTS AND BASIC CIRCUITS The general purpose pulse amplifier of Fig. 20 has an output relatively independent of load and input voltage when load resistance is greater than 91 ohms and input greater than 20 volts. Figure 21 shows the transfer characteristics of this circuit for various loads. Partial amplitude "standardization" of output pulses is accomplished by "plate botMarginal checking +250 v +90 v R5 220 C2 0.01 J.d~ Output -15 v -15v FIG. 20. General purpose pulse amplifier. toming"; width standardization is accomplished by the characteristics of the pulse transformer. Pulse width standardization by this type of circuit is illustrated by Fig. 22, which shows the relationship between input pulse (width and amplitude) and output pulse width. It should be noted from the transfer characteristics (Fig. 21), that this circuit performs well for a load resistance of 91 ohms and above. The input capacitor C 1 is large enough to cause negligible loss of the input signal in spite of the grid current. L1 presents a high shunt im- DESIGN OF DIGITAL COMPUTERS 14-24 6or-----~------~------~----~------__, 50 40r-------------+-------------~----~ 20r---------~-+~~----------~----~ o 270-ohm load • 47-oh,m load 91-ohm load t:. 10 °0~-=---1~0------2~0------3~0------4~0------~50 Input, volts FIG. 21. Transfer characteristics, general purpose pulse amplifier. 0.12.-----------,----------,-------. 0,08 '--_ _ _ _--1-_ _ _ _-::1=-_ _ _ _-:' o W ~ ~ Input pulse amplitude, volts FIG. 22. Relationship between input and output pulse widths for typical pulse amplifier. COMPONENTS AND BASIC CIRCUITS 14-25 pedance to the input source and low impedance to d-c, and Rl critically damps the circuit. Since the pulses are generated by a transformer, the area of the pulse equals the area of the overshoot, and therefore they may be passed through such an a-c coupling circuit with no shift in relative baseline. The 4/1 pulse transformer matches the high-impedance plate circuit to a 91-ohm load. At this impedance level, pulses can be efficiently carried through coaxial cables. Marginal checking +150 v +90 v C3 JO.01 JJ.f Tl 4:1 ~_--r-----+----,TiifC:ut 0-} 1--.....--f\I\I'•.--J 1 Input Cl 0.01 ~f -15 V FIG. 23. High-power pulse amplifier. For applications in which greater pulse amplitudes are desired (such as driving long lines) or in which larger loads must be driven, the highpower pulse amplifier of Fig. 23 is used. N one of the transfer curves (Fig. 24) of this amplifier satisfies the standard transfer characteristic illustrated in Fig. 18. However, this high-power pulse amplifier ordi- DESIGN OF DIGITAL COMPUTERS 14-26 narily drives nonlinear loads involving large numbers of gate tubes or pulse amplifiers which enable the circuit to meet the standard transfer characteristic requirement easily. Vacuum Tube Gate. The circuit for a gate tube is shown in Fig. 25. Inputs to this circuit are: G1 , O.I-microsecond pulses, 20 to 40 volts amplitude; Gs , + 10 volts for selection, -15 volts for nonselection. This 60~----~------~----~----~~----~ 50 40~------------+---+--------,~----~ ~ g '5" 30 .e ::J o 20r---------~~~------------~----~ o 270-ohm load • 47-ohm load 10 A 91-ohm load O~~--~------~----~------~----~ o 10 20 30 40 50 Input, volts FIG. 24. Transfer characteristics, high-power pulse amplifier. gate tube circuit, like the pulse amplifier circuits mentioned above, is capable of partially standardizing pulses. Standardization of pulse amplitude is not so good as in the general purpose amplifier, as can be seen from the transfer characteristics (Fig. 26). Selection in the gate tube is accomplished by applying a voltage greater than + 10 at the suppressor grid input. Nonselection, that is, prevention of pulses applied to control grid from "getting through" to the plate circuit, is accomplished by applying a voltage more negative than -15 volts to the suppressor grid. By using + 10 as the selection voltage, enough power can be delivered from the gate tube circuit to drive four flip-flops, or four gate tubes, or any combinations of these, without inter~ediate buffering. Under applications of light load to the gate tubes, the output of gates should COMPONENTS AND BASIC CIRCUITS 14-27 be resistance-loaded to give pulses of standard amplitudes. Marginal checking of the circuit is accomplished by varying the screen voltage: a drop in screen voltage makes the tube look older, and a rise in screen voltage detects dangerously high noise pulses at its input. Marginal, checking +250 v +90 v C3 JO.Ol p.f Tl 4:1 r---=--+----I"ilhGm Selection o-----f\I\f\~-+ input Pulse input o----1l---r-.. . . 1 f\.f\fl.........J Cl 0.011'1 -15 V FIG. 25. Gate tube circuit. Diode Capacitor Gate. A passive element pulse gating circuit is shown in Fig. 27a. vVhereas the setup time of a vacuum tube gate is determined only by the transition time of its suppressor grid input, the diode capacitor circuit setup time (assuming a step function selection input) is determined by the charging time of the capacitor, C l' If there is to be no feed through of pulses when the selection input is at -30 volts, care must be exercised to keep input pulses always below 40 volts amplitude. This can be achieved by always driving sets of diode capacitor gates with the general purpose pulse amplifier mentioned earlier. Since no pulse DESIGN OF DIGITAL COMPUTERS 14-28 regeneration or partial standardization takes place within this type of gating circuit, long chains of these gates are not practical except when they are broken up by pulse amplifiers. In Fig. 27, Ll is chosen to give a high impedance to O.l-microsecond pulses to isolate the pulse source from shunt capacitance of a possible long lead between Rl and L 1 . Rl is large enough to isolate the source for the selection input (usually a 60r-----~------~----~------~----~ 50 40r-----------~~----------~------~ J!! g :: 30 .e:J o 20r---------+-+-~~----------4_----~ • 47-ohm load 10 A 91-ohm load o--~--~------~----~------~----~ o 10 20 30 Input, volts 40 50 FIG. 26. Transfer characteristics, gate tube. flip-flop) from the same shunt capacitance, as well as from C 1 • At the same time, Rl must be small enough to prevent loss of pulse amplitude, but small enough to allow reasonable values for R 1 . An alternate termination for the gate is shown in Fig. 27b. L 2 , R 2 , and the stray capacitance comprise a damped RLC circuit that reshapes the pulse which is then a-c coupled to the grid, where a clamp diode is used to establish a baseline. Low-Speed Flip-Flop. In applications where compactnesiS is desirable and high speed is unnecessary, a flip-flop such as that shown in Fig. 28 is useful. It is capable of being complemented at a 200-kilocycle rate, and has one tube (two cathodes) as compared to the 2-megacycle capability and the two tubes (four cathodes) of the high-speed flip:-flop COMPONENTS AND BASIC CIRCUITS 14-29 described in Sect. 3. Rise and fall times of the outputs are on the order of 5 microseconds, depending on the load. Basically, this flip-flop is an Eccles-Jordan circuit. A d-c coupling path is provided between each plate and the opposite grid. The 10,000ohm resistor in the common cathode provides a large amount of d-c 1 Type Wdiode ~~~------~----~ Pulse input Cl 0.001 p.f +1Ov +lOv -30 v Selection input (a) i -_.--+o Usually part of gate or PA input system ~~~--~--~~~--~~----~-----------Pulse input Cl 0.001 IJ,f L2 I 27 IJ,hl I Type Y diode I 1_ I I +10 v +lOv -30v Selection input I -15 v L ____ ~ (b) FIG. 27. Diode capacitor gate circuits. degeneration and thus stabilizes the circuit against changes in tube characteristics. A 70-micromicrofarad cathode condenser stabilizes cathode voltage during transition of the flip-flop from one state to another. The circuit is capable of driving up to 320 micromicrofarads of load capacitance on each output. Transformers are provided at each input to invert pulses for flip-flop triggering. Cathode Followers.' The limited load-driving capabilities of most flip-flops restrict loading to little more than a few gate tubes or their equivalent. Diode logic, if it is at all extensive, or long coaxial lines require the use of flip-flop output buffering. The cathode follower of Fig. 29 is adequate for moderate loads. (Little can be said about rise -30 v +90 v -30 v f" w o CRI Type Y One output"""Ef---+-----------I CR 3 Type Y I----------t-~~ Zero output CR 4 Type Y 0 m Vl +lOv R9 82 kG (fi Z 0 One inputs O--l~~If--r.:------' Zero inputs "T1 0 (fi ::::j CR 13 CRI6 CR I4 CR 17 CR I5 C3 70 f..Lf..Lf CR I8 » r() 0 ~ "C -f m :;:0 Vl R17 100 -300 v Complement input FIG. 28. Low-speed flip-flop. COMPONENTS AND BASIC CIRCUITS 14-31 +150 v 220 0.01 J.1.f J Input O----v'vv'-----t- - - - ~ 5965 t----~ -150 FIG. 29. + 150 v Input Output V Cathode follower. +250 v +90v ~----,\N\r--+-----t---~ -150 v -300 v FIG. 30. Power cathode follower. -150 v Output 14-32 DESIGN OF DIGITAL COMPUTERS and fall times without specifying load impedance.) Variations of this circuit include paralleling of the circuit for driving heavier loads. For applications involving heavy loads or where cathode follower bias buildup must be kept to a minimum, the feedback circuit of Fig. 30 is used. Comparison of input and output levels and amplification of the difference signal takes place in stage 1. Unity gain can be achieved by attenuating the feedback signal. With an input rise or fall time of 0.3 p,sec, output rise or fall time will be 0.7 microsecond for the nominal + 10-volt to -3D-volt signal. Power output capabilities of this circuit may be increased by paralleling other sections of 5998's to the present half-section of 5998. Flip-Flop Indicators. Indicator neon lamps on flip-flops are useful in general systems operation and are particularly valuable in troubleshooting. The indicator circuit of Fig. 31 is often used. Its operation depends on the difference between the outputs of the flip-flop to fire the appro+150 v One output Zero output FIG. 31. Twin-neon flip-flop indicator. priate neon lamp. The indicators may be separated from the flip-flop by hundreds of feet. In such a case, 56-kilohm resistors in the flip-flop prevent loading of the flip-flop by the interconnecting cable to the neon lamps in a remote indicator unit. A circuit providing one neon per flip-flop saves space in the indicator unit, since only one lamp is necessary for each flip-flop, and saves cable COMPONENTS AND BASIC CIRCUITS 14-33 since only one line is required from each flip-flop to the indicator unit (see Fig. 32). The pulse power supply is an integral part of the indicator (-------------, I Saturable reactor II IInput I I I I L Pulse power supply 0 .J ---------~-- Point A d-c bias Output FIG. 32. Single-neon indicator circuit. unit assembly. The pulse ignites all neons regardless of the states of the flip-flops. By proper adjustment of the d-c bias (point A in Fig. 32), the neons may be made to remain ignited or turn off according to the 83 states of the flip-flops. 2 Measurements have shown the "0 ~ ranges of ignition and extinction :p 68 voltages of a large sample of new c::: -5 and aged NE-2A indicator lamps c.. c.. 67 to be as shown in Fig. 33. The E All lamps had extinguishing ~ i) voltages in this range single neon indicator system of Fig. mr 52 32 depends on the fact that a 15volt change will bring any lamp FIG. 33. Summary of measurements from conduction to below extincon NE-2A. tion. Diode Logic. Circuits of nonlinear passive elements such as diodes can perforn:l many of the logical or and and functions in computing systems. The circuit of Fig. 34a is an or circuit. Its inputs are mixed so that its output is + 10 volts if anyone of the inputs is at + 10. The value of R is chosen to give the circuit adequate fall time. (The smaller I ::.ij.,:.,. } DESIGN OF DIGITAL COMPUTERS 14-34 the R, the closer the output will follow input fall time.) The circuit of Fig. 34b is a diode and circuit. Output level will be + 10 volts (as opposed to -30 volts) if and only if all inputs are at + 10. The choice of R here is governed by the desired rise time of the circuit output. +90 v Type Y Type Y Input 1 Input 1 R Type,Y Type Y Input 2 Input 2 Type Y Output Input 3 Type Y R Type Y Output Input 3 Type Y Input 4 Input 4 -150 v (a) (b) Type W Output From cathode follower Input 1 , Type W Input 2 Output Type Type Type Y Y Y 470 470 Type W Input 3 470 27 ~h Type W -30 v Input 4 660 (d) -30 v (c) FIG. 34. Diode logic: (a) diode or circuit, (b) diode and circuit, (c) pulsed or circuit, (d) diode protection. The circuit of Fig. 34c is an or circuit similar to that of Fig. 34a. This circuit is designed to mix OJ-microsecond pulses. Although only four inputs are shown, any number of inputs (up to the point where the back resistance of the diodes loads the driving circuits) can be used. The shape of the leading edge of the output pulse is determined by that of the input, whereas the shape of the trailing edge is determined by R, L, and the shunt (stray) capacitance. Rand L are so chosen that the trailing edge of the pulse returns to the baseline, with no overshoot. These diode logic circuits are usually driven by cathode followers such as that shown in Fig. 29. If the tube were pulled from its socket in this circuit, the output line would drop to -150 volts and apply a large back COMPONENTS AND BASIC CIRCUITS 14-35 voltage to diodes connected to the cathode follower. Failure of a tube, removal of a plug-in unit, or loss of certain supply voltages can similarly damage diodes such as those of the circuits of Figs. 34a, b. Figure 34d shows a protection circuit that prevents the output of the cathode follower from going very much below -30 volts (normal back voltage for the diodes in the logic circuits). Enough diode-resistor combinations must be used to clamp the cathode follower output near -30 volts without exceeding the current rating of the protection diodes. The 470-ohm resistors insure equitable current distribution through the diodes. Blocking Oscillators. Blocking oscillators normally subject tubes to extremely hard usage, for example, high peak cathode current. The circuit of Fig. 35 has been designed to provide near-standard O.l-micro- + 150 v +90 v Marginal checking Rs 220 Rs 750 Input Type W diodes o--J .-......-~ Cl 0.01 J.Lf Rl 56 kn FIG. 35. Blocking oscillator. second pulses from an input waveform of 20-volt rise at the minimum rate of 100 volts per microsecond. This circuit will operate between o and 100 kilocycles prf. Marginal checking is performed by varying the gO-volt screen supply voltage. Degeneration supplied by the load in p~rallel with R7 limits cathode current of the 7AK7 to a safe value. 14-36 DESIGN OF DIGITAL COMPUTERS Transistor Circuits The reliability of transistor circuits is affected by the same basic factors that determine reliability in tube circuits and some of the techniques of tube circuit design are adaptable to transistor circuits. . (This parallel must not be carried too far-in no case can a transistor be "plugged" into a circuit in place of a tube and have the circuit operate equally well.) In general, transistor circuits operate at an impedance level an order of magnitude below that of similar tube circuits. This reduces the problem of accidental triggering from external noise but magnifies the problem of driving several paraUel stages from a single transistor stage. The group of transistor circuits to be discussed were designed around the high-speed Philco surface barrier transistor (SBT). These circuits are intended for use in a system with standardized supply voltages of + 10, -3, and -10 volts, negative pulses of 3-volt amplitude and 80-millimicrosecond duration, and flip-flop levels of 0 and -3 volts. Problem of Transistor Circuit Design. The problems of practical transistor circuit design involve in order of ease of solution (1) static operating margins, (2) dynamic operating margins, (3) temperature stability, (4) transient response. 1. Static Operating Margins. Design of transistor circuits with large static operating margins follows essentially the same procedures used with tubes. In general, however, the problem is easier with transistors since power consumption is so low compared to tube circuits that the power efficiency of the resulting network is less critical. 2. Dynamic Operating Margins. The achievement of acceptable dynamic margins is aided by the very sharp cutoff characteristics' of transistors which may be utilized to fix limits on pulse amplitudes. However, the problem is complicated by the fact that the transistor is a low-input-impedance, high-output-impedance device and, therefore, susceptible to loading effects. 3. Temperature Stability. Both static and dynamic circuit margins are sensitive to temperature. The current gain and frequency response vary slowly with temperature, but the exponential variation of the leakage current is such that it approximately doubles for each 8°C temperature increment. In general, a large dynamic margin may be designed into the circuitry by taking into consideration the effects of static operating point drift with temperature. Stabilizing devices, such as emitter degeneration resistors and heavy bleeder networks, should be used. The effects of temperature on the frequency response of the input and output networks, COMPONENTS AND BASIC CIRCUITS 14-37 ~s well as on the gain and frequency response of the transistor, must be considered. 4. Transient Response. The major adverse influence on circuit transient response results from temperature-induced transistor impedance variations which load the input network and alter the available "drive" power at the input to the transistor. The causes of temperature variations include both external ambients and internal self-heating caused by power dissipation at the transistor junctions and in the bulk material. Since present day units have fairly high thermal resistance (O.2-0.5°C per milliwatt), the circuit must be designed to guard against the effects of power dissipation. High-Speed Flip-Flop Group. The basic flip-flop and its associated circuits are illustrated in Fig. 36. Transistors QB and Q4 are the flip-flop transistors; Ql and Q2 are input pulse amplifiers for the two sides of the flip-flop; Q5 and Q(j are buffer inverter amplifiers; Q7-Q{} and QS-QI0 are cascode power amplifiers which drive the output lines. This group of circuits is usually constructed on two etched cards, mounted together in one miniature pluggable unit, to minimize lead lengths between the individual circuits. Marginal Checking. The circuits are marginal checked with the two + IO-volt supply buses as indicated in Fig. 36. The + IO-volt lines for the individual circuits may be separated if it is desired to marginalcheck the circuits independently. The basic flip-flop is a direct-coupled Eccles-Jordan circuit in which triggering is done with input pulse amplifiers in series with the emitters of transistors Q 3 and Q4, as shown in Fig. 36. The input-amplifiers Ql and Q 2 are grounded emitter pulse amplifiers that are normally saturated or turned on. A positive pulse at the input terminal is coupled to the base of the input amplifier, turning this pulse amplifier off. The output is directly coupled from the collectors of the amplifiers to the emitters of the flip-flop transistors. The inverters are grounded-emitter amplifiers that serve as buffers between the flip-flop transistors and the output cascode power amplifiers. The designs of the flip-flop, input amplifier, and inverter are conventional and straightforward transistor circuit design, but the cascode power amplifier is unique. Transistor QI0 in the zero-side cascode amplifier is basically an emitter follower which drives the zero output line in the negative direction. Since these are saturating circuits with the inherent difficulties of "hole storage," the rise time of these circuits would deteriorate if these emitter followers were required to drive the output lines in the positive direction as well. Hole storage in the emitter fQUQwer ~nq succeeding stages has the same effect on the output rise Zero input One input ~ W co -,1 I~ MC B (+10 v) MC A (+10 v) Ground cm 5!! (j) Z 0 180 kQ "C (f) ::j » rOne output +1 ! Q 7 47 (Jh ~~f I :(~l)rn •• I II: IqlYVV.. ~YVY.. I~i I I ill·n~:I I ., 1471~JLf Qs ~ Zero (J.h . output 0 0 ~ "C -I m ;;0 VV~: -r--I~;;rt;;--l- 560 C=====j[========t=======~======~========~=::=!~V FIG. 36. High-speed transistor flip-flop. til COMPONENTS AND BASIC CIRCUITS 14-39 time as line capacity. Transistor Qs serves as a positive driver in this cascode circuit to make it possible to drive greater t,rue or hole storage capacity. These cascode power amplifiers work so well that the rise time from 10 to 90 per cent on unloaded output lines is about 20 millimicroseconds, whereas the fall time is about 30 millimicroseconds unloaded. Input and output waveforms of the flip-flop group are shown in Fig. 37. With 50-millimicrosecond trigger pulses as illustrated in the figure, the ~ ~ll,,:Jt"'l:£j o 100 ~ ~11r--"~-1:-----:tf2r----~-\J--'~ o 200 100 200 Time, mj.tsec Time, mj.tsec (a) (b) FIG. 37. High-speed flip-flop waveforms; (a) output, (b) trigger input. maximum prf of the flip-flop group is approximately 10 megacycles. Maximum prf and minimum pulse widths are limited primarily by the lack of ability to generate and handle very narrow pulses. The circuit operates very reliably at the design goal of 5 megacycles prf. 3.5 3.0 2.5 9 mw dissipation limit 1/1 ~ > 2.0 1.5 Design limit 1.0 0.5 0 2 4 6 8 10 12 14 16 18 20 Milliamperes FIG. 38. Cascade d-c output characteristic. The d-c output characteristic of the cascade circuit is shown in Fig. 38. The maximum output current is 16.8 milliamperes at the intersection of the characteristic curve for {3 near end of life and the 9-milliwatt tran- DESIGN OF DIGITAL COMPUTERS 14-40 sistor dissipation limit. Design maximum for the output current is 12 milliamperes. The slope of the output characteristic or the internal equivalent resistance of the circuit is about 16 ohms. The capacity-driving capability of the cascode is shown in Fig. 39. More than 400 micromicrofarads of output capacity can be driven at a 225 200 175 0 {l150 s:: 0 0 <1.1 en g 125 ~ .~ 100 <1.1 E :0:; <1.1 en a: 75 50 o~----~--------~----~--------~----~--------~~~ o 100 200 300 400 500 600 700 load capacitance, micromicrofarads FIG. 39. 20 ~ goS I 10 r- o p 0 I «i s:: ·~-10 «l r- :E -.20 I I ..:.:: ~ o Cascade output rise time versus load capacitance. .. o , 1 . I I I - Normal operating point \ 2 J I I 34567 I 8 9 10 pulse amplitude, volts FIG. 40. High-speed flip-flop marginal-check voltage versus input pulse amplitude. COMPONENTS AND BASIC CIRCUITS 14-41 rise time of 0.1 microsecond. One cascode can drive up to eight inverter circuits with a normal amount of interconnecting wiring. The specifications for these SBT transistors are summarized as follows: leo = 0.2 to 3J..ta; Initial > a leo = 0.2 to 3ILa 0.94 or {3 > 15.6; {3 = or End-of-life a = 0.92 or 11.5. V max (punch through) = 6 to 20 volts V CE (saturation) The factor T 20 I tlO 10 f- :> .::s:. o ~ 0 o lbase = 2.5 rna Ie = 8 rna is a measure of hole storage in a standard circuit. (1) ~ 0.1 volt at 30 to 70 mILsec. = T ~ I roc: '[0-10 fm :E: / , ~ -6 J.... - Normal operating pOint 1'>. )000- I -20 -5 I I I -7 a..-- , -8 , I -9 -10 -11 -12 - 1 -13 -14 -15 Output from -lO-volt supply FIG. 41. High-speed flip-flop marginal-check voltage versus -lO-volt supply. The marginal-checking curves for the flip-flop group are illustrated ill Figs. 40,41,42, and 43. Variation of the marginal-checking voltage from its nominal + 10-volt value as a function of input pulse amplitude is 20r---~--~--~--~----r---~--~---r---.---. (1) tl.O .s (5 :> 10 .::z:: o(1) ~ I O~------~------~--------~-------r------~ roc: '~-10 :?: -20~--~--~--~--~----~--~--~--~--~~~ o -0.5 -1.0 -1.5 -2.0 -2.5 -3.0 -3.5 -4.0 -4.5 -5.0 Output from -3-volt supply FIG. 42. High-speed flip-flop marginal-check voltage versus -3-volt supply. 14-42 DESIGN OF DIGITAL COMPUTERS shown in Fig. 40. The margins with respect to the output of the -10volt supply are shown in Fig. 41 and with respect to the output of the -3-volt supply in Fig. 42. The margins in pulse amplitude are plotted in Fig. 43 for variations in f3 and T in one of the basic flip-flop transistors. 20 I / e--~---- -~-~-~--- -"~-Normal {3, high ~ III , Normal {3 and '1'- ------<>--'R:d;tJ~~~-;:I-;.-- 10 I 15> .;s: u C1.l ..c y T I I 0 f/ -~ \ "iii c: T , \ 'e----_----- -----e------ "§ ~ -10 "I I -20 o 2 I 345 Pulse amplitude, volt~ 6 FIG. 43. Margins versus pulse amplitude for variations in {J and 7 T in one of the Hip-Hop transistors. For norm9.1 values, the curve is symmetrical about the marginal-check axis. For either low f3 or high T, the curve is asymmetrical, thereby indicating variation of these transistor parameters. +10 v level inputo----'--.l\f\J"--I----'--f~ Pulse input O----'--vVV'~----'--f__l Output FIG. 44. Transistor pulse gate. Transistors: Philco SBT L-5122; resistors: Ihw 5%. High-Speed Pulse Gate. A pulse level and gate for use with the high-speed flip-flop, described above, is shown in Fig. 44. This gate is equivalent in function to the circuit of Fig. 25 in which a pulse input COMPONENTS AND BASIC CIRCUITS 14-43 and a level input are gated together. The output of the pulse gate is usually connected directly to one of· the inputs to the flip-flop group. The components in these inputs constitute collector load and supply for the pulse gate. The emitter of transistor Q2 may be returned directly to ground to make Q 2 a simple pulse amplifier instead of a pulse level and gate. The outputs of several such gates and/or such pulse amplifiers may be tied directly together at flip-flop inputs for logical or functions. 5. COMPONENTS, CHARACTERISTICS, AND APPLICATION NOTES The discussion of design methods in the many components and their applications component characteristics and notes on reliable electronic design are discussed in body of the report has specified in particular circuits. Certain applications that have led to this section. Tubes Construction Characteristics. The best tubes are assembled in airconditioned, lint-free rooms, since the cause of many intermittent shorts has proved to be carbonized particles of lint and foreign matter within the tube envelope. Residual gases in -the tube are reduced by a betterthan-average vacuum. A tube designed for simplicity and ease of assembly will be more dependable than a complex construction. Metal evaporated from the cathode and deposited on the structural mica insulators tends to lower the leakage resistance between the electrodes. To counter this, slots are cut in the insulators to lengthen these leakage paths. Grid wires are plated to minimize secondary emission. Plates are designed to maximize the heat-radiating area, and are made of materials with minimum gas content. Grid Spacing. A short, rugged mount structure with a minimum of 0.005- to 0.006-inch interelectrode spacing will minimize the incidence of shorts and troubles resulting from rough handling. For mount structures longer than 1 inch, even wider spacings are necessary. A requirement for high transconductance is basically opposed to the requirement for high tube reliability. Cathode Temperature. The operating temperature of the cathode must be chosen as a best compromise among several factors that affect tube life. Lower cathode temperature may reduce emission below usable levels early in life, may increase the susceptibility of the cathode to poisoning by gases, and may increase cathode interface (an impedance that develops between the cathode base and the emitting material). 14-44 DESIGN OF DIGITAL COMPUTERS High cathode temperature increases the evaporation of the coating and sublimation of the base metal (with consequent increase in grid emission and depositing of metal coatings on structural insulators), increases the probability of heater burnout, and may accelerate the growth of cathode interface. Notes on Applications. 1. Vibration and shock must be avoided during tube operation, since long-life pulse tubes are not usually designed to minimize microphonics. 2. Bulb temperature must be reduced to 80 to 100°C by forced-air circulation or air conditioning, to avoid evolution of gas from the glass envelope and to reduce the incidence of electrolysis of the glass between base pins under the influence of d-c potential. 3. Heater voltage regulation within 2 per cent of rated value has been demonstrated to give increased tube life. 4. D-c cathode current should be limited to 50 to 60 milliamperes per square centimeter of active cathode area. 5. Pulse cathode current should be limited to about 10 times this value for short pulses (under 1 psec) and low duty factors (under 10 per cent) . Note. Although these numbers have been proved safe in operation, they are not presented as limiting- boundary values. 6. For longest tube life, design ratings for plate current and dissipation may have to be reduced from those given in manufacturers' literature. It is well to remember that manufacturers base their ratings both on the demand for particular tube characteristics and on the results of extensive life tests. For any particular tube application, the components engineer should work with the manufacturer's applications engineer to determine the basis for the tube's ratings, and the life that can be expected from the tube in this application. 7. Tests to determine compliance with specifications must be performed by the manufacturer, the user, or both. The manufacturer should give a preburning test to every tube to detect weak heaters. Tests to pick up transient shorts are particularly important if intermittent failures in service are to be minimized; these tests should be sufficiently sensitive to detect shorts of as little as I-microsecond duration. Pulse and steadystate life tests on a sample basis, if continued sufficiently long, will give an indication of expected life. Manufacturers' tests should weed out potentially unserviceable tubes. 8. Standardization on a minimum number of tube types, and cooperation with the manufacturer's tube applications engineer to assure best use of these types, will materially reduce the incidence of interrupting tube failures. COMPONENTS AND BASIC CIRCUITS 14-45 Semiconductor Diodes Characteristics. Semiconductor diodes are most often used in switching networks or as blocking or clamping devices, to hold d-c levels in the presence of pulses, and to clip unwanted tails from pulses. All these applications presuppose that the diode will have nearly perfect rectifier characteristics-an open circuit in one direction, and a short circuit in the other. Every realizable diode falls short of this ideal. Furthermore, the diode acts differently when subjected to pulses than it does under static d-c conditions. The principal characteristics of diodes are of importance to the pulse circuit designer. The first three of these are relatively self-explanatory, but forward recovery and reverse recovery are important factors that may be ovelooked. 1. Static (d-c) Forward Voltage Drop. The diode volt-ampere curve is nonlinear, and electrical description of this characteristic should include a maximum value (or a tolerable range of values) of voltage drop at a specified forward current. 2. Static Back Current. A maximum value of back current should be specified at a fixed back voltage. 3. Reverse Voltage Breakdown. At sufficiently high reverse voltages, the back resistance of semiconductor diodes decreases rapidly, so much so that the diode may destroy itself. This reverse breakdown voltage point should be well above the highest back voltage that will be applied to the diode in any circuit application. 4. Forward Recovery. When a forward current is suddenly forced through some diodes, the voltage drop across them initially is as much as 200 per cent greater than the steady-state value and decays to the steady-state value in a fraction of a microsecond. 5. Reverse Recovery. The reverse 'resistance of a diode requires a finite time to build up after the diode has been switched from the forward to the back direction. In some junction diodes, the back resistance, immediately after switching, may be as low as the forward resistance before switching, and the recovery time may be hundreds of microseconds. In the faster whisker diodes, the initial back resistance is often not less than one-tenth the static back resistance and has a time constant of the order of 0.1 microsecond. The characteristics described above should be specified at values close to those existing in the circuit application. If a diode is to be used under conditions different from those in the diode manufacturer's specifications, the tests performed should duplicate as much as possible the actual operating conditions. 14-46 DESIGN OF DIGITAL COMPUTERS Since diode characteristics are adversely altered by the effects of moisture and other contaminants, a sealed housing should be specified. Glass-enclosed diodes have been proved more satisfactory than diodes that depend upon some waxy filling compound for moisture resistance. Notes on Applications. 1. Silicon and tungsten-whisker germanium diodes do not exhibit the very low forward pulse voltage drop needed for core driving and other high-current applications. Gold-bonded and indium-plated whisker diodes are better suited for such uses. 2. Junction diodes, some gold-bonded, and some tungsten-whisker diodes exhibit a long switching time (slow reverse recovery). Diodes for use in fast-pulse computers should be specified for fast reverse recovery. 3. If a diode is exposed to high temperatures during soldering, its characteristics may change, and life may be impaired. It is wise to solder quickly, and to use a heat shunt (a copper alligator clip would do) on the diode lead while heat is being applied. 4. The back resistance of a diode may change markedly during life, particularly when traces of contaminants introduced during manufacture remain within the diode case. For circuits intended to give long service, the designer should use for back resistance a design figure that is considerably less than the one given in the manufacturer's specifications. A factor of 5 for degradation of back resistance from initial to end-of-life specifications has been used successfully. 5. Diodes should not be used indiscriminately in series to increase the back voltage rating, or in parallel to increase current-handling ability. In series connection, a larger fraction of the applied back voltage will appear across the diode with the higher back resistance, increasing the probability of failure. Likewise, in the parallel connection, the diode with lower forward resistance will carry most of the current. Balancing resistors across each diode in the series connection, and in series with each diode in the parallel connection, will help to equalize the voltages and currents. The effect of the balancing resistors is to reduce back resistance, and to increase effective forward resistance, respectively. Connectors Connectors often give rise to intermittent contact troubles. These usually result from inadequate contact pressure, which allows oxide or other insulating films to develop on the contact surfaces. After being flexed many times, spring members of the contact may become fatigued or distorted, and so reduce the contact pressure. If plugs are left dis- COMPONENTS AND BASIC CIRCUITS 14-47 engaged for long periods, oxide or other insulating layers may develop on contact surfaces. The following suggestions may help prevent these difficulties. 1. Contact spring members should be relatively long, to avoid stress concentration when the spring is bent, and should be made of a nonfatiguing material such as beryllium-copper. 2. When a plug is mated with its socket, one contact surface should wipe over the mating surface for a considerable distance, to break down any insulating films. 3. Contacts should be plated with a nontarnishing metal. Gold and rhodium have been satisfactory. 4. Contact pressure from surface to mating surface should be high, whereas the force required to mate the connector should be moderate to avoid damaging the connector parts during mating. Relays Construction Characteristics. Relay difficulties center around contact erosion, failure to make contact through oxide or foreign matter on contacts, and mechanical failure of contact springs and armature supports. For low-current, signal-handling relays, the following suggestions apply: 1. Extreme miniaturization should be avoided. Relatively long spring members will prevent stress concentration. A relatively large, conservatively rated coil should be used to avoid overheating and burnout. 2. Bifurcated (twin) contacts on each contact spring will ensure that if one contact of the pair is blocked by dust or foreign matter the other one will still provide continuity. 3. A dust cover with a gasket seal should be provided. 4. Cotton, paper, or other such organic insulations will, under the influence of d-c potential and moisture, contribute to electrolytic corrosion of the windings. Nylon, cellulose acetate, and similar synthetic insulations are satisfactory. The potential of the coil should be negative with respect to the relay frame. 5. Arc-suppression networks across contacts that break current-carrying circuits should be provided to absorb the inductive voltage produced when the contacts open. Enclosed Relays. In high-altitude, moist or saline conditions, and in situations where tampering can occur, the hermetically sealed relay is essential. However, since the products of arcing, or varnish products produced when the coil overheats, may collect within the relay case and interfere with contact operation, sealing is not a cure-all. Further, the 14-48 DESIGN OF DIGITAL COMPUTERS relay cannot be adjusted if its parts should fatigue after many operations, and it must therefore be discarded. Where expert maintenance personnel are available, as is the case at a large computer installation, relays can be equipped with removable dust covers and thus be accessible for servicing. Time Delays. There is always a time delay between application of voltage to the relay coil and the actual closing of the contacts. Likewise, there is a delay between removal of the voltage and the actual openings of the contacts. This timing may change during the life of the relay, as a consequence of fatigue of spring members. The initial timing, and that after a large number of operations on a repetitive life test, should be studied if close timing is required by the circuit application. Various means are used to increase the delay in the closing or opening of a relay, including mounting copper slugs on the relay core (which act as a short-circuited turn to delay the buildup or decay of the magnetic field), provision of fluid-filled or air dashpots, and use of external RC timing circuits. Power Supply Transients. Relay operation may create power supply transients in other parts of the system when large currents are interrupted. Such transients may be minimized in some cases by operating the relays when minimum current is flowing through their contacts. In other cases, it is necessary to resort to decoupling networks or filters. Resistors If intelligently selected and applied, resistors are a particularly dependable class of components. To assure long life, all standard resistors should be derated from their nominal power and voltage ratings. Composition Carbon Resistors. Available in 5, 10, and 20 per cent initial tolerances, composition resistors are not so stable as other types during long life. A resistor considered by the manufacturer as a +5 per cent unit may vary as much as ±20 per cent during several years use. The nominal power ratings of these resistors should be cut by 50 per cent to assure stability and long service. Film Resistors. These include deposited carbon, precious metal, and electrically conductive glass film types. They are considerably more stable than composition resistors, but a resistor nominally of 1 per cent tolerance should be included in the power rating of deposited carbon types: they should be derated to 50 per cent of nominal power rating. The metal and glass films are not so critical. If deposited carbon resistors are used, they should be hermetically sealed. Varnish coatings have been shown to admit moisture, causing early failures. Glass housings, and ceramic housings with solder-sealed ends, are satisfactory. COMPONENTS AND BASIC CIRCUITS 14-49 Precision Wire-Wound Resistors. These resistors are quite reactive, and thus are not highly useful in fast-pulse circuitry. They may be of great value in digital-to-analog decoders, since they are more stable than any other kind of resistor. A 1 per cent tolerance resistor will stay within 5 per cent during life if it is properly derated (50 per cent of nominal rating) and is not subjected to violent temperature excursions. Wire smaller than 0.002 inch should not be used in critical equipment. The construction that employs a cast or molded plastic bobbin, with an outer housing of the same plastic, is far superior to the older ceramic-bobbin, paper-wrap, varnish-impregnated construction. Power Wire-Wound Resistors. These are useful in power supply bleeder and other high-power applications. Only the vitreous-enameled varieties are recommended. Power dissipated in the resistor should not exceed 50 per cent of the nominal power rating. Resistance wire smaller than 0.002 inch should not be used. A metal mounting bracket to conduct heat to a metal panel or chassis should be used to carry off most of the heat dissipated in the resistor. Potentiometers. For low-power noncritical uses, the carbon potentiometer with a molded resistance element is satisfactory. As with composition carbon resistors, potentiometers should be derated, and consideration should be given to end-of-life tolerances. Vitreous-enameled power rheostats have proved reliable in values up to 5000 ohms. Capacitors If adequately specified and properly applied, capacitors need cause little trouble in electronic equipment. Capacitor failures result principally from poor construction techniques and from application of excessive "'I",Toltage. Paper Capacitors. These should be hermetically sealed in metal cans, should have at least three layers of dielectric paper, and use a fluid impregnant such as mineral oil or one of the complex hydrocarbons. Applied voltage should not exceed 50 per cent of the manufacturer's rated voltage, and should be even less for use at temperatures greater than 55°C. Alternating-current ripple voltage impressed on the capacitor may cause dielectric heating, which would require further derating. The capacitance can vary by 12 per cent over the initial tolerance during life. Paper capacitors should not be used in circuits where day-to-day stability of capacitance is important. Tubular, bathtub, and rectangular can cases are popular. Mica Capacitors. Mica capacitors, particularly those using silver paint as the electroqe material, are quite stable and trouble-free. Silvered micas, though, are subject to migration of the silver across insulat- 14-50 DESIGN OF DIGITAL COMPUTERS ing boundaries under the influence of moisture and d-c voltage. Ordinary molded phenolic housings are not sufficiently moistureproof to prevent silver migration. The design tolerance should be taken as ± 10 per cent beyond the nominal purchase tolerance for nonsilvered units, and ±5 per cent beyond purchase tolerance for silvered micas; 50 per cent voltage derating should be applied. Some trouble has been encountered in capacitors where the termination of the pigtail lead is crimped rather than soldered in a slot in the end plate inside the body. Ceramic Capacitors. These, in the disk and tubular forms, are quite dependable. Units over 0.001 micromicrofarad use ceramic with high dielectric constant, and are quite unstable; these should be used only for bypass and decoupling applications where exact values of capacitance are of no concern. In smaller values, the design tolerance should be considered to be +10 per cent beyond the purchased tolerance. Electrolytic Capacitors. The best electrolytic capacitors are "telephone quality," originally developed and produced by several suppliers for the Bell System; they are intended to give ten years or more service life, and two years nonoperating shelf life. A 10 per cent voltagederating factor should be applied, and surge voltages seen by the capacitor should never exceed the manufacturer's rated operating voltage. Capacitors that have been out of service for some time should be reformed by connecting each in series with a 1000-ohm resistor to a source sufficient to develop rated voltage across the capacitor for a period of one hour. Transformers and Inductors The principal troubles encountered in transformers stem from the effects of moisture. Electrolytic corrosion, plating away the copper wire onto the transformer frame in the presence of d-c potential and moisture, may cause open-circuit failures. Decomposition of insulation, as evidenced by low insulation resistance, is also caused by moisture. Such troubles can be remedied by insisting upon adequate varnish impregnation of the winding, and hermetically sealing the case. Very small wires used in miniature transformers may also be subject to failure from corrosion. High operating temperature of the windings may accelerate failure of the insulation. The maximum operating temperature of the windings recommended for long, reliable service is 70°C. Small pulse transformers using toroidal ferrite cores have been most satisfactory for short-pulse circuits. When hermetically sealed and operated within the manufacturer's d-c ratings, they have proved extremely dependable. COMPONENTS AND BASIC CIRCUITS 14-51 RF chokes have given very little trouble in service. Vacuum-varnishimpregnated coils, wound on ferrite, powdered iron, or passive cores have been most satisfactory. 6. TRANSISTORS Introduction. The transistor does not have the long history of use accruing to most other electronic components. The transistor field is a fast-moving one in which the picture is continually changing; this means that practices and procedures may change as the units themselves change. Although various revolutionary devices are now on the horizon, this section is concerned with devices presently available in production quantities. The original transistors were point-contact devices, and the theory of these was not completely developed. Mechanical and electrical stability of early units was poor. The appearance of the junction transistor in 1950-1951 brought about the big break-through of the transistor into equipment design. Mechanically, it is a rugged unit which can be made to handle power of the order of a few watts. Construction Characteristics. Most of the problems of transistor reliability can be traced to contamination in manufacture and leakage of water vapor into the device after fabrication. After receiving its final clean-up etch, the transistor must be handled under extremely clean conditions and well-controlled humidity to prevent accidental contamination of the surfaces before or during encapsulation. For long life, a hermetic seal is a "must." Potting compounds-solid, liquid, or gaseous-may be used for protection against welding vapors or soldering fluxes, or they may be used to fix the surface potential at a stable point. Different treatments may be required for different types of units. Types of Junction Transistors. Junction transistors are basically very small sandwiches of p-type and n-type semiconductor material. These sandwiches may be arranged as p-n-p or n-p-n in structure in which these layers are, respectively, the emitter-base-collector electrodes of the transistor. The sandwich structure may be built up by either an alloying process (alloy junction transistor) or a crystal-growing process (grown junction transistor). The existence of the junction transistor in the two forms, n-p-n and p-n-p, using bias supplies of opposite polarity, makes possible some very useful circuits. The alloy j unction transistor makes a practical switch, having an off resistance of about a megohm and an on or saturated resistance of about 10 ohms. 14-52 DESIGN OF DIGITAL COMPUTERS Most of the present day transistors are made from germanium. Silicon transistors, however, are available and can be used at temperatures about 100°C. Junction Transistor Characteristics Since transistors have not yet been widely used in computer circuits, little life data have been accumulated. Therefore, transistor types cannot be selected on the basis of proven reliability. If the transistors are to be used in large numbers, the types chosen should be those that can be manufactured with reasonable yields by present fabrication techniques. Characteristics that are important in the design of reliable transistor circuits are frequency response, power dissipation, and storage time. Frequency Response. The frequency response of a junction transistor is inversely proportional to the square of the base width. Unfortunately, in an alloy junction transistor, the maximum emitter-collector voltage, the punch-through voltage, varies directly as the square of the base width. Therefore, as the frequency response is raised, the maximum operating voltage is decreased. This punch-through voltage relationship does not hold in a grown junction transistor. However, with present methods of fabrication, it is difficult to obtain high production yields of conventional, high-frequency, grown junction transistors (15 to 20 megacycles) . Special jet-etching and plating techniques make possible extremely accurate base width control in the surface barrier transistor. These units are in the 60- to 70-megacycle cutoff range. Maximum voltage is usually 6 to 20 volts, with recommended operating voltage 4 to 5 volts. Power Dissipation. The power-handling capability of a transistor depends on good thermal design. Heat must be conducted away from the collector junction which, in a germanium transistor, cannot be allowed to exceed about 85°C. Provision for external connection to a heat sink is desirable for high-power units. Since maximum voltages are normally limited to less than 50 volts, high-power transistors must be capable of passing high currents. The tendency for current gain to decrease with increased emitter current (alpha crowding) can be alleviated by double-doping the emitter. The problem of self-cutoff for the center region of the emitter is eliminated by the use of an elongated rectangular emitter. Most high-power units will have poor frequency response (in the audio range) because the large electrode area necessary for high currents means high junction capabilities and wider base widths (to allow for the possibility of uneven alloying). Most high-frequency transistors tend to have COMPONENTS AND BASIC CIRCUITS 14-53 low power ratings. The surface barrier transistor is rated at 10 milliwatts. Storage Time. The collector current of a transistor that has been saturated or turned on does not stop flowing the instant a turn off signal is applied. The transistor remains at a low impedance for a short period of time until it recovers from the saturated condition. This delay or storage time is of considerable importance in high-speed saturating type switching circuits. Storage time can be reduced by making the base width small, that is, by designing a high-frequency transistor. Notes on Applications 1. Temperature limits must be rigidly observed and units should be operated close to or below room temperature if possible. Transistors good for tens of thousands of hours at room temperature may fail in hundreds of hours at 100°C. Since high power dissipations cause internal temperatures to rise, circuits must be designed to keep power dissipation low. Silicon transistors should be used where high temperatures are unavoidable. 2. Aging. In general, as transistors age, collector leakage current will increase, current gain will decrease, and breakdown voltage will decrease. Circuits must be designed to allow for these gradual variations in parameters. 3. Soldering. For best reliability, transistors should be soldered into circuits and a heat sink should be used to prevent excessive junction temperatures. The leakage in ordinary 110-volt a-c soldering irons may be sufficient to damage certain types of low-power transistors (such as the surface barrier transistor). Irons with on-off switches have been found to develop large momentary transients capable of destroying these units. A small 6-volt iron is recommended and will eliminate many of these difficulties. 4. Testing. Transistors should be tested individually in the grounded emitter configuration by using an automatic curve plotter. Grounded emitter displays magnify most of the important irregularities by the factor of the current gain f3. The avalanche breakdown voltage occurs at a lower value for this configuration. 5. For saturating switching applications, the alloy junction transistor is usually superior to the grown junction transistor since it has a lower emitter-collector impedance. 6. Life tests made under conditions similar to those of the contemplated use are helpful in predicting reliability. These tests may possibly be accelerated by operation at increased ambient temperatures (with considerable reservations about the validity of such a practice since addi- 14-54 DESIGN OF DIGITAL COMPUTERS tional failure mechanisms may occur at elevated temperatures). This procedure is not recommended if reasonable time is available for room temperatures tests. ACKNOWLEDGMENTS In the preparation of this report, particular contributions are those of R. L. Best in the section· on Basic Circuit Criteria and Marginal Checking Techniques, and W. J. Canty in typical tube computer circuitry. Transistor circuitry was contributed by K. H. Olsen and his section. The transistor as a component has been reported by D. J. Eckl. The component work has been reported by B. B. Paine. Nolan Jones has carried the burden of collecting and clarifying the text. The Publications group of the Laboratory has made many helpful suggestions as to methods of organization and expression. Much of this material is based on an article written by Norman H. Taylor and is used with the permission of the Institute of Radio Engineers. REFERENCES 1. N. H. Taylor, Designing for reliability, Proc. I.R.E., 45 (6), 811-822 (1957). 2. N. H. Taylor, Marginal checking as an aid to computer reliability, Proc. I.R.E., 38, 1418-1421 (1950). 3. H. W. Boyd, Design of a reliable flip-flop, RETMA Symposium on Reliable Applications of Electronic Tubes, Philadelphia, Pa., May 21, 1956. 4. J. J. Hofler, Application techniques leading to reliable circuit performance, RETMA Symposium on Reliable Applications of Electron Tubes, May 21, 1956. 5. K. Henney et al., Reliability Factors for Ground Electronic Equipment, McGraw-Hill, New York, 1956. 6. W. J. Canty, Designing for reliability, Joint Military-Industry Guided Missile Reliability Symposium, Huntsville, Ala., October 16, 1956. 7. N. L. Daggett and E. S. Rich, Diagnostic programs and marginal checking with the Whirlwind I computer, 1953 I.R.E. Convention Record, Pt. 7, 48-54. 8. W. J. Canty, Experiences in setting up a SAGE prototype computer, Am. Inst. Elec. Engrs. Summer General Meeting, Paper No. CP 57-679, June 24-28, 1957. 9. H. F. Heath, Jr., R. E. Nienburg, M. M. Astrahan, and L. R. Waters, Reliability of an air defense computing system, I.R.E. Trans. Elec. Computers, EC-5, 224-237, December 1956. D DESIGN OF DIGITAL COMPUTERS Chapter 15 Magnetic Core Circuits . Isaac L. Auerbach I. 2. 3. 4. 5. 6. 7. 8. 9. Fundamentals Magnetic Cores Transfer Loops Magnetic Shift Registers Logical Function Elements Magnetic Core Storages Timing Control Circuits Arithmetic and Miscellaneous Applications Drivers for Magnetic Core Circuits References 15-01 15-04 15-09 15-15 15-16 15-19 15-21 15-22 15-23 15-24 I. FUNDAMENTALS Circuits employing bistable magnetic cores are characterized by compactness, low power consumption, and long life with reliable operation. They are capable of performing most of the functions of digital data processing systems, including storage, delay, control, and logical operations. Switching Concepts. The idealized rectangular hysteresis loop of Fig. 1 illustrates the binary property of cores used in these circuits. The positive residual state + Br is designated binary 1, the negative state - Br binary O.. Application of a pulsed magnetizing force along the H axis of sufficient amplitude and duration will· set the core in a desire~ binary state where it will remain until pulsed in the opposite sense. 15-01 15-02 DESIGN OF DIGITAL COMPUTERS Reapplication of magnetization in the same sense results in relatively little flux change, e.g., from point Br to Bm and back to BrB -Br ~Zero(O) FIG. 1. Idealized rectangular hysteresis loop. H m, applied magnetizing force; H 0, coercive force; B B m , magnetic induction. T, The core may be used as an ampere-turn transformer (T in Fig. 2) with output coupled to the input of another core or device. Conventional dot notation indicates winding polarity with the added definition that cu~~ f;\ ~ t ~U~ FIG. 2. Output voltage Magnetic core transformer, T. current into a dot terminal (positive end) will set the core to the 0 state. Typical waveforms of voltages induced in the output winding are illustrated in Fig. 3 together with total flux variations within the core material. Signal-to-noise -voltage ratios are generally greater than twenty to one with commercially available cores, MAGNETIC CORE CIRCUITS 15-03 i Input current pulses !-------! I o .---__,. o ~-...;..---.......,....f_'-- ---"-t---I------'------------\---t--I+-lf---~ Core switching time Induced output voltages Flux va'riation -Br -Bm FIG. 3. Typical waveforms associated with bistable magnetic cores. The core may also be regarded as a variable impedance (Fig. 4). If the core is in the 1 state when 1 is applied, the core will switch, a relatively large counter-emf, e, will be generated in the winding, and a high impedance will be presented to the driving source during the period of switching. If in the 0 state, the emf and presented impedance will be small. This bistable impedance characteristic is the basis for a number of circuits. Logical Representation. A simplified func- FIG. 4. Magnetic core as tional representation is helpful in understanda variable impedance. ing the operation of magnetic core systems and as a basis for circuit design. A core is represented by a circle. A line with an arrow pointing to the circle (Fig. 5) denotes an ip.put to the core, and the numeral within the circle the state to which the core is set by the input. Open arrows indicate pulses; closed arrows d-c signals. Two opposed signals applied simultaneously cancel and leave the core in the original state. Double arrows indicate overriding inputs that determine the state of the core regardless of opposing inputs. A line originating at the circle denotes an output from the core. The output signals are generally limited to a single polarity by the use of unilateral elements; thus, the numeral within the circle at the origin of the line indicates the state to which the core must be switched from the other state to produce the output. If an output is produced by only one of several transfer inputs, the signal output is said to be conditional, indicated by an "eyebrow" drawn within the circle. Symbols along lines identify signals, and often include the times at which the data appears. 15-04 DESIGN OF DIGITAL COMPUTERS p Information signal (asynchronous) Occurs at time t2 or coincident with p, provided core is in P3 state 1 immediately beforehand tl---~ Time signals (synchronous) Conditional output occurring only at t2, provided core is in state 1 immediately beforehand 0 01 ...(;..---- b Overriding a )) pulse input ----:~ DC signal input FIG. 5. Basic logical symbols. 2. MAGNETIC CORES Magnetic cores have been developed in two basic forms, the metal strip types and the molded ferrites. The strip cores usually consist of a number of wraps of a microthin alloy tape wound on a ceramic bobbin, spot welded in place and annealed. They may be plastic covered, or potted in resin to afford greater mechanical and chemical protection. Ranging in nominal sizes from about 7~ to 1 inch diameter, metal cores are generally employed in manipulative or logical types of circuits. Although considerably more expensive than ferrite cores, they are less affected by temperature change and require less power under comparable operating conditions. The ferrites are fabricated from various mixtures of pure metals, metallic oxides, and binding materials pressed into toroid shapes and fired at high temperatures-a process familiar to the ceramics industry. They may be obtained in sizes smaller than is possible with wound strip, diameters of 80 mils (0.080 inch) being quite common. Because of size and low cost, the ferrites are generally preferred in static memory applications where the number of cores required is likely to be large. Magnetic Cores as Circuit Elements. Windings are applied to the core in conformity with the design requirements-either by the supplier or, more commonly, at circuit assembly. So fitted, the core becomes a circuit element in the more usual sense, but one which lends itself to flux-current considerations rather than voltage-resistance analysis. MAGNETIC CORE CIRCUITS 15-05 Technical Data for Circuit Design. While the basic properties of magnetic cores are described by the hysteresis curves, of more practical importance are the relationships between magnetomotive forces NI and switching flux .. (c) Switching time T.; current pulse rise time 0.5 p.sec. (Courtesy the Burroughs Research Center.) DESIGN OF DIGITAL COMPUTERS 15·06 0.08 v / v ......... ~ '" ""-, II """ o / i'. 0.5 ,usee/div. (a) Material, 48% Ni-Fe; tape thickness, % mil; tape width, Ys in.; mean diameter, 0.5 in.; squareness ratio, 0.90; number of wraps, 2; H m, applied magnetizing force equals 1.0 oersted. ~ (a) 0.24 v o (b) Material, 4-79 Permalloy; tape thickness, % mil; tape width, Ys in.; mean diameter, 0.5 in.; squareness ratio, 0.91; number of wraps, 9; H m equals 0.5 oersted. 1\ I \ lr, \. 0.5 ,usee/div. ~ (b) ·0.80 v r~ (c) Material, MF-1118 (ferrite); crosssectional area, 0.0026 sq in.; mean diameter, 0.58 in.; squareness ratio, 0.95; H m equals 3.0 oersteds. I \ I \ o '~ II-.... 0.5 ,usee! div. ~ (c) 0.56 v I/~ I \ I o I/;. ~ ~ 1'\.11 \ "- 0.5 ,usec/div. ....... ......... III (d) Switching voltages only for different values of applied magnetizing force H nt, core (b). I, 1.0 oersted; II, 0.5 oersted; III, 0.25 oersted. ~ (d) FIG. 7. Switching and nonswitching voltages of various bistable magnetic cores. MAGNETIC CORE CIRCUITS 15-07 Core Constants. Two useful constants may be derived from the switching time-mmf characteristic or "core curve," shown in Fig. 6e. The pulse threshold mmf (F 0), which corresponds to the intercept at l/T s = 0, is defined as that value of magnetomotive force below which no switching is possible. It is important from the standpoint of noise immunity. Coefficient G, the slope of the core curve referred to the l/T s base, is constant over the useful operating range. vVith the aid of the upper and lower limits of
s, Fo, and G, it is possible to make quantitative calculations of a core's performance under many conditions without resort to the complete characteristic curves. Noise in Bistable Magnetic Cores. A source of noise inherent in magnetic cores is nonsquareness of the hysteresis loop. The amount of flux change produced when a core is driven from remanence to the corresponding point of saturation can be considered as false information; the noise source theoretically would vanish if a unity squareness ratio were attainable in actual square-loop magnetic materials. Figure 7 illustrates the switching waveforms of three representative bistable cores. The larger of the waveforms is the information signal; the smaller, the noise signal. Figure 7d shows a comparison of the three information signals for the types of core material noted. Ferrite Storage Cores. Ferrite cores which are carefully manufactured and tested for uniform characteristics are generally required for coincident-current storage applications. These minute cores must change state in response to a current pulse of specified waveform, but they remain unaffected by a series of pulses one-half the amplitude. See Chap. 19 for a general discussion of storage. To evaluate the cores properly for the storage application, test specifications generally are formulated which subject a single core to conditions that might be encountered in an operating array. Figure 8 shows a current pulse pattern which: 1. Sets a typical storage core in the positive state of magnetizing. 2. Disturbs the state by a series of partial pulses that tend to reduce the magnitude of residual flux. 3. Switches the core from the disturbed positive state to the negativf; state. 4. Disturbs the negative state toward the positive. 5. Restores the core from the disturbed negative state to the normal negative state. In the case of a satisfactory core, the amount of flux change during the disturbance is not a function of the number of partial pulses, provided the number of such pulses is greater than some small number, usually DESIGN OF DIGITAL COMPUTERS 15-08 2 or 3. The flux changes, moreover, should be as small as possible since the noise voltages thus induced may cause error in the information readout. +400 (1) If) ~ Q) a. E 0 ~ Pulse duration, 5.6 J,lsec Rise time, 1.0 J,lsec prf, 2000 cps :E (2 I> -400 (3) (5) (a) +15 (1) Switching from undisturbed 0 -Br to 1 at +Br at Zero (0) +10 +5 .s '0 ~ ~ Or:----==::........,,,..:::...~~----~~------ (5) Nonswitching voltage, disturbed 0 to 0 T-_ _ -5 (2d Disturbed One (1) (2n) -10 -15 (3) Switching from disturbed l I t o 0 state ~Pulse sampling time I I 2 3 4 5 Microseconds (b) FIG. 8. Determination of minimum signal and maximum noise in the output of a ferrite core for storage matrix application. Core of ferrite, type 83 (grade B); outside diameter, 0.080 in.; inside diameter, 0.050 in.; thickness, 0.025 in. (a) Applied current pulse pattern. (b) Observed output voltages at 77 ±2° F. Signal-to-noise ratios in the outputs of individual cores accordingly are considerably less favorable, on a peak amplitude basis, than in applications where partial pulses need not be taken into account. These ratios, however, usually may be improved by employing sampling methods in the matrix output equipment. MAGNETIC CORE CIRCUITS 15-09 Temperature Stability. Normal changes in operating temperature have negligible effect upon the characteristics of metal strip cores. Variations of less than +2 per cent over the range of 0 to 150°F are not uncommon in the case of many quality components. The molded ferrites, on the other hand, are considerably less stable, particularly the special grades supplied for coincident current matrix applications. Reliable operation of these systems usually requires control of core temperatures within a few degrees of a specified ambient value. 3. TRANSFER LOOPS Transfer loops are circuits connecting two or more cores for the purpose of information transfer. The loop includes basically an output winding of the transmitting core and an input winding of the receiving core. Single Diode Transfer Loop. The single diode transfer loop is the simplest form of loop. It is illustrated schematically in Fig. 9, together with the logical representation. The diode isolates core M b when 1 is FIG. 9. Single diode transfer loop. Typical values: cores, t,4 mil, 4-79 Permalloy, VB in. wide; 10 wraps, 0/16 in. diameter; diode, T6; windings: N 1 , 21 turns; N2, 5 turns; No, 15 turns; current waveforms, trapezoidal; rise times, current pulse, 1 JLsec; p = 1(tl), 70 rna; tl, 190 rna; core switching times: M a , 8.0 JLsec, Mb, 3.5 JLsec. being set into Ma. A turn ratio Nl/N2 of about 4/1 and the nonlinear characteristic of the diode, discriminating against the smaller signals, prevent an undesired backward flow of information at time t 2 . The use of this type of loop in logical circuits is limited to applications where it is desired to switch the core whenever switching current exists in No or any similar winding on the core. In these instances the transfers are said to be unconditional. 15-10 DESIGN OF DIGITAL COMPUTERS Split-Winding Transfer Loop. (See Refs. 1, 2, and 9.) The splitwinding loop, one form of which is shown in Fig. 10, provides for conditional transfer of information while permitting isolated operations on either the transmitting or the receiving core. Unlike the single diode loop, it is immune to the backward flow of information and makes practicable the simultaneous switching of as many as five or six receiving cores. By proper design the impedance of N 1 will be large relative to I I Transfer loop p~j ~ ~_/I -----; :JO p FIG. 10. Split-winding transfer loop. Typical values: cores, 14 mil, 4-79 Permalloy, % in. wide; 10 wraps, 0/16 in. diameter; diodes, T6, windings: NI, 31 turns; N2, 6 turns; coil resistance, N 2, 8 ohms; current waveforms, trapezoidal; rise times, current pulse, 1 JLsec; tl, 125 rna; h, 8 rna; 12, 117 rna; core switching times: Ma, lOA JLsec; M b, 4.0 JLsec. the other impedances in the transfer loop (see Fig. 10), and branch current 11 will be much smaller than 12 , The resultant ampere-turns difference is sufficient to switch M b to 1. Branch current 11 clears M a to the 0 state. Another type of conditional transfer loop is shown in Fig. 11. As in the case of the split-winding loop, the two diodes insure immunity to the backward flow of information and permit isolated operations upon either core. The function of conditional transfer from Ma to Mb in response to 1 (t 1 ), while analogous to that of the preceding circuit, is accomplished in a somewhat different manner. Current pulse 1 (t 1 ) is steered through either the upper or the lower branch of the loop, depending upon the state of core Ma immediately prior to t 1 . If in the 0 state, except for effects traceable to a nonideal core, all the applied current will flow through the high-conductance diode D 2 , bypassing M 2 and leaving core M b in the 0 state. 'Vhen Ma previously has been set to 1, 1 (td acting through No switches the transmitting core toward O. The changing flux induces a voltage in the output loop such that nearly all the current flows through MAGNETIC CORE CIRCUITS 15-11 Dl and N 2, switching 111 b to 1. In practical circuits, parameters are generally so chosen that approximately 10 per cent of the current flows through the lower loop during transfer to stabilize the switching action of core Ma. FIG. 11. Another form of transfer loop. Typical values: cores, Ferrite 83, General Ceramics; diodes, T25G; windings: No, 23 turns; NI, 20 turns; N2, 8 turns; l(tI), 100 rna; ex, 0.9; core switching time: M a, 3 Ilsec; M b, 2 Ilsec. Note 1. This means effectively that the current signal generated in the loop does not completely cancel I (td in the lower branch of the loop. Note 2. To insure a complete forward transfer of data, the switching time of the driving core must be longer than that of the driven core. Condenser Delay. In certain data-handling systems it is often desirable to transfer information both from and to the same core by application of a single timing pulse. Such operation is possible if provision is made in the transfer loop to delay the input to the core until readout has been accomplished. Assuming the cores of Fig. 12 contain 1's, both are switched to 0 at time t. The delayed output of M a then resets M b to 1 before arrival of the next timing pulse (see Ref. 3). Figure 13 illustrates a practical method for accomplishing the above. If the forward resistance of the diode is small compared with R, the 15-12 DESIGN OF DIGITAL COMPUTERS FIG. 12. Transfer of information into and out of core M b by a single pulse, by using a condenser delay. UTL FIG. 13. Circuit corresponding to Fig. 12. Approximate circuit requirements: core switching times: Ma = T; Mb = 1.75RC; turns ratio: Nl T N2 = 1.6ZC (1 + 2m), where Z equals average impedance of N 2 during read-in of 1, and m is ratio of average drop across diode during charge to E c (max.); maximum operating frequency: 1 1m = T + 2.5RC· MAGNETIC CORE CIRCUITS 15-13 capacitor charges to nearly the peak value of the induced voltage as M a is switched by t, and sufficient charge is present to switch M b to 1 after termination of t. These loops have been operated at frequencies as high as 500 kilocycles in cascades up to 50 stages with high stability. The technique adds to the flexibility of magnetic core circuit design. Transistor-Magnetic Core Loops. (See Refs. 4 and 5.) The basic magnetic core transfer loop can be extended to include a transistor as a power-supplying element within the loop. Generally a grounded emitter configuration is employed with at least one core winding in the collector branch. Owing to the element of gain, input signals need only trigger the transistor to effect switching of the cores, and possible speeds of operation exceed those attainable with passive loops. Power consumption is characteristically low, and wide tolerances in component values and transistor parameters insure good reliability of operation. A basic loop, applied successfully in circuits operating in the neighborhood of 100 to 150 kilocycles, is shown in Fig. 14. The transistor is biased at cutoff and is normally nonconducting. Owing to coupling t2!U r--------------, G -Vc -Ye FIG. 14. Transistor magnetic core information transfer loop. through the core, a fractional microsecond current pulse (tl) is sufficient to initiate a regenerative switching process, provided M a contains a 1. When switching of the cores is completed, the feedback loop gain falls below unity and the transistor again ceases to conduct. Reset of M a to 1 results in the appearance of a positive voltage at the base, tending to drive the transistor further into cutoff. The buffering action of the transistor eliminates backward flow of information in the loop (noise) and permits multiple branching between cores without difficulty. The loop of Fig. 15 illustrates the addition of a diode for improved stability and an intermediate storage capacitor to enable both readout DESIGN OF DIGITAL COMPUTERS 15-14 and readin of core M b to take place within the same pulse time. Current pulse t switches both cores (if previously in state 1) to 0, and at the same time the inhibit pulse maintains the transistor cutoff. At the terminat ~ 220 rna -1.0 .usee r----O ~...---------,~ ::JG Inhibit pulse f G 5 v -1.0 ~sec + 1.5 v +6.0 v GE-2N78 (npn) FIG. 15. Magnetic core transistor information transfer loop with a diode for improved stability. Circuit values, 200-kc operation : No, 5 turns; N 1, 15 turns; N 2, 10 turns; N c , 30 turns; C, 0.001 p.f; R, 4.7 kn. tion of the pulses, the voltage across the capacitor is sufficient to initiate switching of M b to 1. Operational frequencies up to 500 kilocycles are possible by the use of fast surface barrier transistors and very low flux cores. Data storage cores Delay cores (a) Input 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 tl----~---~----~----_+-----~---- t2---------~-----------~------------(b) FIG. 16. Shift register, serial input, and output. Cores per binary digit of register capacity, 2; number of timing pulses per cycle, 2; direction of shift, right; data insertion, one binary digit between tl pulses. (a) Schematic; (b) logical. MAGNETIC CORE CIRCUITS 15-15 4. MAGNETIC SHIFT REGISTERS Shift registers for handling binary data are synthesized by means of magnetic cores and transfer loops. By suitable design and choice of tp--~~------------~~------------~~----In tl----~--------~~----~~------~~----~~-- t2------------~~------------~~----------- FIG. 17. Shift register, serial input-parallel output. Similar to Fig. 16 with addition of conditional transfer loops. Parallel read-out accomplished by t p applied as required at times other than t1, t2, or during input. t3--------------------~------------------, Input t2------~--------+-------~ tl----------------+-----------------~ FIG. 18. Serial shift register, reduced core complement. Cores required, 3 for each 2 binary digits of register capacity; number of timing pulses per cycle, 3; direction of shift, right. The use of n + 1 cores and drivers for each n binary digits of register capacity may be extended indefinitely. Input Output FIG. 19. Serial shift register, with delay network. Cores per binary digit of register capacity, 1; number of timing pulses per cycle, 1; direction of shift, right. coupling determined from preliminary logical diagrams, registers may be constructed that (a) accept information serially or in parallel, (b) step the recorded sequence along the register in either direction, and (c) furnish a serial or parallel output. One complete timing cycle 15-16 DESIGN OF DIGITAL COMPUTERS (tl' t 2 , ••• ,tn ) accomplishes a shift by one binary place, for example, 100100 to 010010 in a six-bit register. Figures 16 to 20 show various forms of shift registers. r-------------------~----------------t4 ~--------+_--------~------t3 tl------~--------_r--------~ t2----------------~------------------~ 20. Serial shift register, reversible. Cores per binary digit of register capacity, 2; number of timing pulses per cycle, each direction, 2; direction of shift, right or left. FIG. 5. LOGICAL FUNCTION ELEMENTS Bistable magnetic cores are combined with conditional and unconditional transfer loops in a variety of unit arrangements capable of performing the basic logical operations of and, or, exclusive or, and negation. Ma Mb (a) Ma Mb (b) Ma Mb (c) FIG. 21. And, or and inhibit logical symbols. Requirements for input to Me: (a) and (.), coincident outputs from Mil. and Mb, Afa·Mb; (b) or (+), output from MI!. or Mb or coincident Mil. and Mb, Ma + Mb; (c) inhibit, output from Ma only; transfer inhibited by coincident output from M b. MAGNETIC CORE CIRCUITS 15-17 By means of these elements, the more complex digital data processing functions can be synthesized (see Ref. 7). The unit functions in many instances involve the combination or mixing of the outputs of a number of cores. And, or, and inhibit (negate) symbols are required to indicate the nature of the combination and to assist in the interpretation of the logical diagrams. The symbols, illustrated in Fig. 21, are employed only when the particular function is to be obtained by a single transfer loop in the implementing physical circuit. And Circuits. (Conjunction or union, see Vol. I, Chap. 11.) Figure 22 shows block diagrams for an and circuit implementation for three p 1 (a) q 1 Output 1 Other combinations 0 p r q Output 1 1 1 1 Other combinations 0 (b) FIG. 22. And circuits, truth tables and block diagrams for (a) two inputs and (b) three inputs. p p q Output 1 0 011 1 1 1 o 0 0 q FIG. 23. Or circuit and truth table. DESIGN OF DIGITAL COMPUTERS 15-18 inputs and two inputs. Note that for three inputs an intermediate or circuit is used. The truth tables are also given. Or Circuits. (Intersection or inclusive disjunction, see Vol. I, Chap. 11.) Figure 23 shows an or circuit with the corresponding truth table. Exclusive or Circuits. (Symmetric difference or -exclusive disjunction, see Vol. I, Chap. 11.) Figure 24 shows a block diagram for an exclusive or circuit. A circuit diagram and truth table is also given in Fig. 24. P(t2) tl (p (±) q)(t2) Output q(t2) o (a) 1 1 0 ~ :J0 '21 (0 tl ~ :J8 (b) FIG. 24. Exclusive-or (EEl) circuits. (a) Block diagram and truth table. diagram (output winding, C and D, not shown). (b) Circuit Negation. The circuit shown in Fig. 25 provides a means for obtaining the complementary functions of other elements. Output p occurs in consequence to absence of input p and vice versa. For example, P (t3) FIG. 25. Negation circuit. MAGNETIC CORE CIRCUITS 15-19 the material equivalence function can be realized by negating the output of an exclusive or circuit, i.e., combining the logical elements of Figs. 24 and 25. illaterial Equivalence Function Inputs Output p q 100 o 1 0 o 0 1 111 6. MAGNETIC CORE STORAGES Important use of bistable magnetic cores is found in storage, or memory, devices of digital data processing systems. Such devices may have very short access times, require no power to maintain storage of information, and are not dependent upon mechanical movement of parts for operation. Circuits and techniques of the present chapter are directly applicable in a number of arrangements. Note. See also the coincident-current magnetic core storage, Chapter 19. Magnetic Shift Registers. These registers serve often to provide buffer storage. Information from a tape, drum, or other source can be inserted in the register as available, and delivered to the output whenever desired. Because of input and output versatility and high speed of operation, these registers are further employed in transformation of mode of data transmission (serial to parallel, and vice versa), and matching of systems components of different repetition rates. Note. Refer to Figs. 16 to 20 for technical details of this type of register. Large-Scale Static Storages. Figure 26 illustrates a method by which a storage of desired word capacity may be realized with a single core and diode per bit. Insertion and extraction of data are accomplished in parallel (Ref. 8). A write pulse, applied to a selected row (address) of cores, inserts l's in those digit positions wher,e an appropriate voltage, impressed at the control point, enables diode conduction. Reading is accomplished by interrogating all cores of a selected address. In this operation, a voltage appears at each control point where the corresponding core switches to 0 from the 1 state. Selection Circuits. Selection of data location (address) in a storage system involves switching circuits that are digital in character. The basic requirement of such a network is that each of the outputs, equal to the number of word locations, may be obtained by a prescribed com- DESIGN OF DIGITAL COMPUTERS 15-20 bination of input signals. Suitable circuit arrangements are numerous and may employ such components as semiconductors, electron tubes, or magnetic cores. In general, the number of switching functions is equal to the total possible input combinations, or 2N , where N is the number of input variables. Address and operation selection circuits drillers Write drivers - Read -----·------------11-------------,----------, r----t'---p-- I ----------4------------ I FIG. 26. Two-by-two magnetic storage (see Ref. 8). Figure 27 illustrates a logical configuration by which four distinct outputs are obtained by combinations of the presence and absence of two inputs. The and circuit of each channel, shown functionally, requires the simultaneous arrival of two signals to generate an output. The occurrence of each of these signals in turn is dependent upon a specific condition of input to the core by which it is produced, e.g., A, X, B, or B. Note. Cf. Fig. 22. X and B symbolize the absence (or negation) of the respective inputs, as opposed to their electrical presence. In terms of Boolean algebra, each of the four switching functions may be expressed in the form Zl = AB, Z2 = XB, etc. Two different core arrangements provide for 'sensing of the presence or absence of signal input, the latter being accomplished by the principle of negation. The symbols noted at each output in the figure indicate the input combination that will gate the particular network. MAGNETIC CORE CIRCUITS AB 15-21 AB B(t 2 ) ----~--~--+---~~------~--------~~~----------~ tl----~--~------~~----------------~ (Preset) FIG. 27. Illustration of a logical circuit, four outputs for inputs A and B. 7. TIMING CONTROL CIRCUITS In general, magnetic core functional units require the application of a number of unconditional signals in the execution of a single logical operation. Depending upon the circuitry employed, these signals trigger driving elements, or drive the cores directly to effect switching in an ordered sequence. Magnetic Cycle Distributor. Figure 28 illustrates a cycle distributor frequently employed' as a multioutput signal generator for timing and Tl-------4--------~------~------~~ T2--------------__~--------------~~ FIG. 28. Cycle distributor for timing control circuits. 15-22 DESIGN OF DIGITAL COMPUTERS control signals. Following initial preset, a time signal is derived on a separate control line each time the signal 1 is advanced one position along the closed end chain in response to Tl or T 2 . These clock pulses usually are obtained from an external oscillator, such as a continuously running multivibrator. Unequal spacing of signals in the output pattern may be achieved by disregarding appropriate cores in the control line connections. These cores assume simply the function of delay, but must be included in time and frequency considerations. For example, in the configuration shown, the repetition frequency of each of the line signals is 2/n that of T 1 , where n is the total number of cores. 8. ARITHMETIC AND MISCELLANEOUS APPLICATIONS It previously has been shown how bistable magnetic cores and the basic transfer loops can be arranged to realize most of the essential functions of a digital data processing system. These functions have FIG. 29. Serial binary half adder. Serial input of digits of two binary numbers with in-phase entry of corresponding orders, starting with the least significant. Note. The last core has been added so that the carry output occurs at the same clock time as S but delayed by one cycle. This is necessary in order that the carry generated during anyone cycle can be added to the sum bit generated during the next cycle when two half adders are placed in cascade to form a full serial binary adder. included storage, delay, control, and the fundamental logical operations. With these building blocks and the principles delineated, virtually any function can be performed with the efficiencies characteristic of the new techniques. The diagrams of Figs. 29 through 31 are representative of the combinative possibilities. MAGNETIC CORE CIRCUITS 15-23 Output t~--~--+-------~-------4--------~------~------~ Count (t2) --_~-------6------------I FIG. 30. Mod 3 ring counter. Note. This arrangement can be used in general to obtain any count. The number of cores required in each case is twice the count. Upper array: 2m cores tl----~--4_--4_------+-------r_--_+~ Count (t2) ----I----..--------..--+---t---' tl------~----~~----~-------+------~ FIG. 31. Mod 7 counter, illustrating use of cascaded distributors and feedback techniques. Note. For long counts, this method requires fewer cores than in the preceding arrangement. A count of (n - I)m + a is obtained with 2(m + n) cores. Nondigital Applications (Ref. 9). Although the present chapter is devoted mainly to digital processes, the use of bistable magnetic cores is not so limited, and numerous nondigital applications are to be found. The magnetic cycle distributor of the preceding paragraph, employed as a multi output signal generator, is an example; others include devices for automatic phase control, and control of pulsing circuits to recording heads in a unique matrix printing process. 9. DRIVERS FOR MAGNETIC CORE CIRCUITS Except for the more recently developed transfer loops containing active elements (transistors), pulse power from an external source is required to drive magnetic core networks and is commonly derived from electron 15-24 DESIGN OF DIGITAL COMPUTERS tube type generators. Vacuum and gas tubes, transistors, and magnetic amplifiers all are used for driving magnetic core circuits. A detailed description of the magnetic and transistor drivers lies outside the scope of the present chapter. Constant-current sources are most commonly used, to simplify the analY$is and the loop design equations. The pulses sometimes may be nearly rectangular, but more often are approximated by trapezoidal functions. Driver current amplitude must be stable over the range of impedances presented by the variable load conditions. Readout drivers for magnetic core circuits include vacuum tube pentodes triggered by appropriate pulses, blocking oscillator type circuits, and self-extinguishing thyratron circuits. .The last two can be triggered by the output from a single core and may be used as amplifiers where it is required that one transmitting c~re switch a large number of receiving cores. Frequencies of 500 kilocycles are obtainable without difficulty except for the thyratron drivers which are generally limited to 5 kilocycles due to deionization time or pulse-forming network delays. Considerations in the development of transistor drivers are that, for good efficiency as a series switch, the collector saturation voltage should be low, and to drive many cores, the collector voltage and dissipation ratings should be high. As high-power junction transistors and driver circuits using them to best advantage are developed, these drivers may be used increasingly in place of electron tube drivers, in order to advance the reliability and reduce the size and power requirements of magnetic core data processing systems. REFERENCES 1. A. J. Meyerhoff, Application of magnetic cores to digital devices, Auto. Con., April, May, and July, 1956. 2. W. Keister, A. E. Ritchie, and S. H. Washburn, The Design of Switching Circuits, Van Nostrand, Princeton, N. J., 1951. 3. R. D. Kodis, S. Ruhman, and W. D. Woo, Magnetic shift register using one core per bit, Convention Record I.R.E., Pt. 7, 1953. 4. A. J. Meyerhoff and R. M. Tillman, A high-speed two-winding transistor-core oscillator, I.R.E. Trans. on Circuit Theory, Transistor Circuits Conference, February 15, 1956. 5. S. S. Guterman and W. M. Carey, Jr., A transistor-magnetic core circuit; a new device applied to digital computing techniques, Convention Record I.R.E., Pt. 4, 1955. 6. H. Epstein and F. Innes, The electrographic recording technique, Convention Record I.R.E., Pt. 4, 1955. MAGNETIC CORE CIRCUITS 15-25 7. T. L. Auerbach and S. B. Disson, Magnetic elements in arithmetic and control circuits, Elec. Eng., 74, Pt. 2, 766-770, September, 1955. 8. I. L. Auerbach, A static magnetic memory system for the ENIAC, Proc. Assoc. for Computing Machinery, 213-222, May, 1952. 9. ·W. MiehIe, J. Paivinen, J. WyIen, and D. Loev, BIMAG circuits for digital data processing systems, Convention Racord I.R.E., 3, Pt. 4, 70-83, 1955. D DESIGN OF DIGITAL COMPUTERS Chapter 16 Transistor Circuits Isaac L. Auerbach I. Introduction 16-01 2. Transistor Switching Properties 3. Direct-Coupled Transistor Switching Circuits 16-02 16-05 4. Point-Contact Transistor Pulse Amplifiers 5. Transistorized Calculator 16-15 16-20 16-30 References I. INTRODUCTION Transistors can be used to perform practically any of the basic gating, storage, and control functions in digital computers. As a logical element the transistor has the following advantages: 1. The transistor life span is several orders of magnitude greater than that of vacuum tubes. 2. The transistor because of switch contact like parameters may be d-c coupled. They may also be connected in parallel and series. This type circuitry can be exceptionally simple. 3. By using npn's and pnp's toegther in circuits possessing complementary symmetry, great design flexibility can be obtained. 4. High efficiency is possible in switching. 5. The transistor provides considerable economies in size, weight, and power requirements. This chapter presents the design approach and basic circuits for three demonstrated techniques of transistor digital computer design: (a) direct16-01 16-02 DESIGN OF DIGITAL COMPUTERS coupled transistor logic (DCTL) or switching circuits, (b) point-contact transistor pulse amplifiers with diode gates, and (c) transistor circuitry connected by d-c paths with diode clamping. In each case a computer based on the technique is described; they are, respectively, (a) Transac (Philco, Ref. 1), (b) Tradic Phase 1 (Bell Telephone Laboratories, Ref. 2), and (c) IBM 608 (Ref. 3). The essential features of the machines are summarized in Table 1. Particular attention is given to the logic and control circuit techniques. Storage techniques and auxiliary units such as clock supplies are covered elsewhere in the handbook. 2. TRANSISTOR SWITCHING PROPERTIES Transistor Types. Point-contact transistors were used for Tradic because of their availability at the time Tradic was being developed. Of more general current interest are the various types of junction transistors. To a large extent the differences are determined by the method of manufacture. The various types are commonly referred to as: grown junction, alloy junction, surface barrier, diffused junction or graded base junction. The diffused junction transistor is manufactured by a combination of techniques. Because of its high switching speed it is excellent for computinguse. Switching Characteristics of Transistors The junction transistors exhibit switching properties that may be likened to those of a relay: the base-to-emitter voltage or current may be considered as the actuating factor, and the collector-to-emitter current or voltage may be regarded as the output signal. The switching properties are given below. Signal Path Resistance When "Open." For each of the transistors listed above the resistance in the operating region is measured in terms of hundreds of thousands of ohms or megohms. Signal Path Resistance When "Closed." The alloy and surfacebarrier transistors have "closed" resistances of 1 to 5 ohms, when driven to saturation; grown junctions usually have greater resistance. Speed of Switching. The speed at which the transistor can be turned on (the switch closed) ranges from 10 microseconds for lowfrequency alloy junction switching types to less than 10 millimicroseconds for surface-barrier transistors. The turn-on speed is a function of the application. See Refs. 4 and 5. Turn-off time, i.e., opening the switch, runs from many microseconds to millimicroseconds, depending upon the particular circuits and voltages TABLE 1. Power Requirements, Watts a Transac (DCTL) Tradic: phase 1 computer 100 75 SUMMARY OF CHARACTERISTICS OF THREE TRANSISTOR COMPUTERS Transistors 2500 (surface barrier) 700 (point contact) Diodes Supply Voltages -3 11,000 6 1 0.5 -2 -8 IBM 608 b transistor calculator 310 2165 (junction) 3600 15 -5 -8 Reliability Transistor failure of 0.01 %/1000 hrs Circuit Philosophy Direct-coupled transistor logic. 0.25-J,Lsec delay per flip-flop stage Diode logic synchronous pulse amplifier 1-megacycle 4-phase clock 15,000 hrs operation. Transistor failure of 0.07%/1000 hrs. No failure of capacitors, resistors, and diodes 5% of transistors replaced Diode gating in conjuncunder adverse operating tion with a 50-kc clock conditions -i :;::c » Z Ul Ul -i 0 :;::c n :;::c () C =i Ul -15 Housed in a 2 cu ft cabinet. Uses 780 resistors and 100 capacitors. bUses 95% less power than vacuum tube model. a ~ b w 16-04 DESIGN OF DIGITAL COMPUTERS used, even for the same transistor type. The turn-off time is related to storage time and decay time. These switching times are related to emitter and collector currents, a, and a cutoff frequency. Logical Gain Characteristics. The ability of one transistor switch to drive many others is related to the direct-current gain, or "switching {3" and to the leakage current, I co. The logical gain or treeing factor may run from 5 to about 15, depending upon the particular circuit and transistor. With each type of junction transistor listed above, the ability to drive others without buffer amplifiers decreases as they are pushed to their speed limit. At the current state of the art, the surface barrier affords somewhat lower logical gain, but greater frequency response, than the others. Reliability Characteristics. Transistor characteristics vary with temperature and with the operating voltage: the direct-current gain, {3, decreases with temperature rise, and the leakage current, I co, increases with increase in the operating voltage. Available evidence indicates that the life span of the germanium transistor is several orders of magnitude greater than the life span of the vacuum tube. Failure rates of less than '0.01 per cent per thousand hours have been observed in tests with several hundred transistors for several thousand hours in computer circuits at room temperature. Design Factors The essential circuit design considerations for computers are speed, reliability, logical gain, noise immunity, and power dissipation. These factors are discussed below. Speed. From an analysis of the factors determining turn-on time and turn-off time, an important basic principle can be stated: In any given transistor, fast turn on is accomplished by using high initial base current, or by preventing saturation; fast turn off is accomplished by using a high inverse base current in relation to the steadystate forward base current. Further speed up depends upon gain and cutoff frequency, margins for gain and time constants, and the operation in saturated or unsaturated conduction. Reliability. Reliability is often built into computers by means of "worst case" design. In worst case design, the circuits are built to per, form even though all parameters are at their "end-of-life" values. This criterion is very conservative since it is highly improbable that all endof-life values will be reached simultaneously, and since, in general, the circuit will operate when one or two parameters have exceeded their assigned end-of-life values, TRANSISTOR CI RCUITS 16-05 Circuit parameters that must be controlled in worst case design of transistor computers include: supply voltage tolerances, component tolerances, transistor parameter tolerances, and temperature tolerances. Among the principal transistor parameters are the direct-current gain, {3, and the operating collector leakage current. Logical Gain. The establishment of worst case tolerances dictates rules for permissible logical interconnections between transistors. As noted previously, logical gain is a function of the direct-current gain, {3, and leo. In driving bases in parallel, the worst case is high base resistance and low {3. Statistical spread in base resistance adds to the problem; to turn on a high-resistance base in parallel with a low-resistance base, the latter is made to draw more current than necessary. Noise Immunity. Consideration of noise generated within the machine and from external sources enters into the safety margins allowed in the worst case design. The principal external noise factor affecting transistor circuitry is radio-frequency radiation. Internal sources fall into two categories: proximity coupling and common impedance coupling. Proximity coupling denotes spurious electromagnetic and electrostatic fields; common impedance coupling includes' the. usual factors of power supply common impedances and ground plane currents. Power Dissipation. Transistor switching power dissipation in both static and transient operation must be held within ratings. Manufacturers' specifications may indicate a pulsed dissipation rating higher than the average limits, but caution should be observed. Thermal time con- . stants can be much shorter then the overall time constant. In the saturation state, static collector dissipation is simply the product of collector voltage and collector current; in the cutoff state, collector dissipation is a function of leakage current and collector voltage. 3. DIRECT-COUPLED TRANSISTOR SWITCHING CIRCUITS Description. The Transistor Automatic Computer (Transac), developed by the Philco Corporation, is designed for "real time" control problems involving as many as 3000 single address instructions. Provisions are made for some 30 inputs and 30 outputs. Inputs generally take the form of quantized physical variables, and outputs are registered by indicators and power servos. Operations are performed in parallel to obtain the requisite speed, and the machine has been made asynchronous to avoid undue complexity in its design. Direct-coupled transistor logic (DCTL) circuitry is employed for the arithmetic and arithmetic control functions. 16-06 DESIGN OF DIGITAL COMPUTERS Direct-Coupled Transistor Switching Circuits Transistors can serve as bistable elements, the two stable states being saturation and cutoff. When the transistor is at saturation, the collectorto-emitter voltage is very low; when the transistor is at cutoff, the collector-to-emitter voltage is very high. With a low enough voltage applied to the base of a transistor the transistor can be maintained at cutoff; -20.0 I c or Ib in 'milliamperes -10.0 -3.8 00 I--f-+--I--f---,I--+\-I----j~ -0.5 .l1 ~ :::..'" 5 :::....:) -1.0 FIG. 1. Combined collector and base characteristics of surface barrier transistor. with a high enough voltage applied to the base of a transistor, the transistor can be maintained at saturation. These characteristics make practical direct-coupled chains of common emitter switching circuits. In these chains, adjacent stages are in opposite states, and all stages switch when a signal is applied to the input stage. Figure 1 shows the base characteristic and the collector characteristics for a surface-barrier transistor with a definite power supply and load resistance. Figure 2 shows three stages in a direct-coupled amplifier chain. If bias and leakage currents are minimized the load current of an on transistor (saturated) consists almost entirely of collector current , (point Y in Figure 1) ; and the load current of an off transistor (cutoff) consists almost entirely of the base current of the transistor in the following stage (point X). In DCTL some of the factors discussed in Sect. 2 are modified as described below. TRANSISTOR CI RCUITS 16-07 Logical Gain. The logical gain in transistor circuits depends on f3 and leo. For DCTL the gain also depends on the base-to-emitter resistance and the output impedance of the transistor in the closed position of the switch. r-----~r_-----1r_------1r_--- 200 -1.5 v 200 FIG. 2. Direct-coupled amplifier chain. Parameters in Worst Case Design. In addition to all the parameters listed in Sect. 2, the base and collector voltages during the on and off states must be taken into account in worst case design in DCTL. Switching Speed. DCTL provides fast turn on and turn off. Turn on is fast because a high initial base current is supplied the transistor through the load resistor of the previous stage. Turn off is fast because of the high reverse base current. The reverse base current is high because the base acts as a low negative voltage source of very low internal impedance, and because the base returns to ground through the low saturation resistance of the previous stage (now on) . ...------------t__-- - Vee pnp FIG. 3. Basic direct-coupled saturation flip-flop. Saturation Flip-Flop A closed two-stage chain, or saturation flip-flop, is shown in Fig. 3. In this circuit, the collector voltage of the cutoff transistor is negative, corresponding to point X in Fig. 1. This voltage is the same as the ba~e 16-08 DESIGN OF DIGITAL COMPUTERS voltage of the saturated transistor. The collector of the saturated transistor is low or near ground, corresponding to point Y. The flip-flop can be triggered to the opposite state by dropping the base voltage of the saturated transistor to or near ground. This causes the collector voltage to rise, energizing the transistor that was previously cut off. Two slightly different methods of triggering a saturation flip-flop r-------------------------~--------------------------~----------------~c FIG. 4. Flip-flop triggering and sensing. are shown in Fig. 4. A negative pulse of sufficient amplitude and duration applied to the base of TR4 will saturate TR4 and cut off TR 2. A negative signal applied to the base of TR5 will saturate TR5 and cut off TR I . The connection of the TR5 collector to a tap on the TR2 load impedance permits the use of TR5 in triggering other flip-flops at the same time by sharing the load impedance between the TR5 collector and the power supply among all the flip-flops to be triggered simultaneously. The state of the flip-flop can be sensed by connecting the input of a sensing element, such as TR 6 , to the appropriate base-collector-load tie point. One-Shot Multivibrator A one-shot circuit or monostable flip-flop is essentially a flip-flop with an RC circuit inserted in one of the collector-to-base cross-coupling paths. Figure 5 shows a typical circuit. In the quiescent state, TR2 is maintained saturated by the base current supplied through Ro. The collector of TRI is essentially at the supply voltage since negligible leakage current flows in TRI and TR 3. A negative trigger applied to the base of TR3 causes it to conduct and charge capacitor Co. The resultant positive going potential applied to TRANSISTOR CIRCUITS 16-09 the base of TR2 causes TR2 to conduct less. This condition in turn makes the base of TRl more negative, thus turning TRl on. This action is cumulative: TRl quickly reaches saturation and TR2 reaches cutoff. As soon as this stable state is reached, Co begins to discharge. After an interval of time determined by the circuit time constant, the voltage at the base of TR2 reaches the point where it causes TR2 to conduct ------~------------~----------~----~-~c FIG. 5. Typical one-shot circuit. again. Once TR2 starts conducting, cumulative action brings TR2 to saturation and TRl to cutoff, and the circuit remains in this state until another trigger is applied. At the collector of TR2 is produced a rectangular pulse, whose width is determined by the amount of time it takes Co to bring the base potential of TR2 to the point where TR2 starts conducting. The width of the output pulse is independent of the width of the trigger. An approximation to the pulse width at the collector of TR2 is obtained by calculating the discharge time. The initial capacitor voltage is Vee (Vee - V b2 sat) ; the final voltage is approximately Vee; and the time constant is RoC o. Therefore, + T = RoColn (2 - V b2 saJVce). With SB-IOO and similar transistors, this expression yields better than 5 per cent accuracy for pulse widths above 0.5 microsecond. For shorter pulses the rise time and fall time may add to the error. Other considerations include the exact values of saturation voltage and V b2 turn-on voltage, the effects of leakage currents, and variation of Vee and RoC o. Gates Various types of gates can be built: and's and or's, using directcoupled transistors either paralleled or series-connected. General configurations are shown in Figs. 6 and 7. Depending upon whether a 1 at DESIGN OF DIGITAL COMPUTERS 16-10 any of the input bases is defined as a negative voltage or a near-zero voltage, the series circuit operates as an and or an or, and the parallel circuit functions as an or or an and. For convenience, let the negative Parameters: Out Vee Vout AO---f--I = -3 v; RL = 1 kn; = 100 rnv; {:J = 10 Currents when saturated: 1 CI = 2.900 rna; hi = 0.290 rna, BO---f--I 1 C2 = 1RL 1ca = 1RL Co---t--I + hi = 3.190 rna, h2 = 0.319 rna, + 1b2 + hi = 3.509 rna, h3 = 0.351 rna. FIG. 6. Representative series gate. Output, A ·B·e. input gate be termed a "negative gate" and the near-zero input gate be termed a "positive gate." The gates also invert the output signal. Series Gates. If each base in Fig. 6 is negative in the absence of a 1 input, the collector load path through TR17 TR 2 , and TR3 is then com- .-------~-----,.....-_o A Out 0---+--1 FIG. 7. Parallel gate. Output, A + B + e. plete, and the output is "positive." If any or all of the bases go positive, the load path is interrupted and the output is negative. This is a "positive or" circuit. For the same circuit but reversing the 1 and 0 convention, the function is a negative and. The relationship -among TRANSISTOR CIRCUITS 16-11 currents in an on series stack are tabulated for a typical case in Fig. 6. Design difficulty can result from the fact that the on output is the sun" of the individual saturation voltages, and there is a maximum voltage above which the next stage will not be held off. Hence the number of series stages that can be stacked is limited, to not over two to four, using SB-lOO's, depending upon the worst case design stringency and operating parameters. The saturation voltage can be minimized by making Rl as large as possible, consistent with drive requirements. There is a limit to the number of transistors that can be placed in series, because of base current adding. In Fig. 6, for instance, TR3 must be able to draw the base currents of TRl and TR2 in addition to its own. A disadvantage of the negative and circuit is that rise times of the series-connected transistors add together (in an rms manner), and thus slow their operation. Parallel Gates. A parallel gate circuit is shown in Fig. 7. If the inputs are normally near ground, the output is negative; if any or all inputs are made negative, the output goes to ground. This constitutes "negative or" operation. Similarly, if the inputs are normally negative and the output near ground, all the inputs must approach ground to cause the output to swing negative, and the circuit functions as a "positive and." The parallel arrangement can be used with more inputs than the series circuit since there is very little change of output levels or rise time as more stages are added. Ultimately, the number of stages that can be paralleled is dependent on the effective leakage current (I co) in the off state. Since all individual leo's flow through the common R L , the (~leo) (R L ) drop may be sufficient to turn off the following stage. To some extent this can be counteracted by lowering R L , but without exceeding the maximum Ie rating during conduction. The leo's increase appreciably with temperature, and the practical maximum number of inputs in parallel is approximately ten, for SB-lOO's operating at 3 volts supply and 40°C. Exact limits depend also on /3, on R L , and on the operating point, and number of stages driven. Combined Gates Representative combined gate circuits performing addition are shown in Figs. 8, 9, and 10. Half-Adder. All the gates in the half-adder circuit shown in Fig. 8 are negative. The complementary pairs of inputs, (A, ..4) and (B, B), are the outputs of opposite sides of flip-flops; for error protection the states of both sides are carried through the logic gates. In like manner DESIGN OF DIGITAL COMPUTERS 16-12 .---_ _ _ _ _ _ _ _ _ _ _ _- - 0 -Vcc -Vce Carry AB Sum . - - - - - - - - - 1 f ' - - - o A B + AB B A FIG. 8. Half-adder. Carry A(BC + BC + BC) + ABC -Vce -Vee Sum (AB + AB)C + (AB + AB)C B A FIG. 9. Full adder. '"' \ -r I Carry out -Vee -Vcc .---i----t------ Z til til --I -=- -=- -Vcc pnp -=- -=- -=- o;;:c Q -Vcc ;;:c () C ~ til B(-) B(+) A (-) 11 (+) Inputs C(+) c (-) FIG. 10. Full adder with not over two transistors in series. Symbols: (-). complement; (+), indicated logic state cor.. responds to O-volt level; (-), indicated logic state corresponds to minus volt level. 'r w 16-14 DESIGN OF DIGITAL COMPUTERS the single outputs shown may be supplemented by inverters to provide double outputs for each sum and carry. Full Adders. Figure 9 shows a three-input or full adder. In Fig. 10 is given a special full-adder circuit with series stacks limited to two transistors in height. This restriction is derived, under a worst case design philosophy, from the limitations pointed out previously. Input buffer inverters are included in the full-adder circuit of Fig. 10. Throughout a computer, the inverter buffers may be used, singly or in trees, as a pulse distribution system. He Speedup. For some transistors the gates and buffers can be speeded in turn off by the addition of a parallel resistor-capacitor combination in the base. The same technique is applicable to the flip-flops. It is sometimes also advantageous to return the base to a positive bias voltage, and thus hold it off· more firmly and improve noise rej ection. The RC and bias are depicted in Fig. 11. (See also Design Factors under Sect. 2.) +v -Vcc In 0----+---'1 '-JP"---v ''Y/----o Out Out +v FIG. 11. Inverter with R-C speedup and base bias. FIG. 12. Emitter follower. Emitter Followers. The emitter follower, shown in Fig. 12, is a current amplifier that works in the nonsaturation region. This means that hole storage time has no effect on the speed. The use of the emitter follower is analogous to the use of cathode followers in vacuum tube computing circuits. The loss in voltage swing between input and output limits the number of emitter followers that can be put in a direct-coupled chain without compensation. Transac Packaging and Power Requirements For the Transac computer designed and built by the Phil co Corporation, packaging is in the form of plug-in cards containjng from 50 to 70 transistors and their associated components. Particular attention has been paid to the problem of maintenance with unskilled personnel. TRANSISTOR CIRCUITS 16-15 Exclusive of the input devices, indicators, and output converters, Transac requires approximately 2500 transistors, 700 resistors, and 100 capacitors. All transistors are surface barrier except for 72 power transistors in the storage. The computer can be economically contained in approximately 2 cubic feet and requires less than 100 watts, including 35 watts for driving the storage drum. For some environments the computer must be maintained below the ambient temperature; the 2!..cubicfoot volume is cooled without difficulty. 4. POINT-CONTACT TRANSISTOR PULSE AMPLIFIERS Description. The Phase 1 Tradic computer, developed by the Bell Telephone Laboratories, was built to demonstrate the feasibility of a transistor computer for military airborne service. A binary serial machine with a complete arithmetic unit, it operates at a pulse repetition frequency of 1 megacycle per second. Point-contact transistors are used for pulse regeneration, semiconductor diodes for logic, and electromagnetic delay lines for storage and incidental delay. Active Element. The elemental block around which the Tradic phase 1 computer is designed is the transistor pulse amplifier. This circuit contains a single point-contact transistor and associated resistors, capacitors, and diodes; its function is to reshape and retime half-microsecond digit pulses at appropriate intervals in the logic networks. One amplifier will drive one to seven similar amplifiers, depending on the intervening logic. The point-contact transistor is employed in a common base configuration to take advantage of its negative resistance emitter characteristic, shown in Fig. 13. This property, not generally shared by junction type transistors, occurs when the current gain of a transistor is greater than unity and the input and output signal voltages are in phase. Pulse Amplifier. The RC-coupled pulse amplifier circuit is given in Fig. 14. Input, output, and clock waveforms are represented in Fig. 15. The circuit normally rests in the low-current state, where current flow through R 2 , X 2 , and X3 holds the junction of the diodes at point A on the emitter characteristic, a voltage just below the peak point. A positive input signal (1) raises the emitter voltage to the negative resistance region. With sufficient bandwidth, the transistor is unstable in this region and snaps out on a load line provided by capacitor C e to point D. The capacitor then discharges from D to B, at which point diode X 2 conducts and the transistor is locked in its high-current state. The following positive clock pulse at the base in effect lowers the emitter voltage into the unstable region, and the circuit returns to its initial state. Only the positive half-cycles of the clock sine wave appear at the base DESIGN OF DIGITAL COMPUTERS 16-16 (xz load line for 1 signal)\. z-i.._ FIG. 13. Idealized point-contact emitter V -I characteristics and operating load line v+ (Nom mal + 6) Signal o--...,...--t4-.----t-~ input 'Vcc sine wave V clamp R1 R2 Rb 12 k11 22 k11 470 11 RL 470 11 C1 O.01p,f coupling C2 O.OIp,f filter C3 O.OIp,f filter C~ 15 p,p,f Cc 50 p,p,f -=Vee V clamp 1'+ Clock Xl X2 X3 -8 volts -1 volt +6 volts lO-volt peak, symmetrical respect to ground Base diode Emitter clamp diode Input diode FIG. 14. RC-coupled pulse amplifier circuit. TRANSISTOR CIRCUITS 16-17 of the transistor, and these recur regularly at I-megacycle rate. Input information signals are timed to arrive toward the end of the clock pulse, and the transistor triggers as the sine wave goes through ground potential. Since turn on and turn off are controlled, respectively, at the termination of one base pulse and the beginning of the next, the timing and duration +2v One (1) o-t---J'-t------'I--i-----+-Input pulse -2v +2v One (1) O+----:,..+-----+-\---~ Output pulse -2v +lOv I-Mc 0-f------'1----#-----4- sine wave clock -lOv FIG. 15. Typical waveforms, Tradic packages. of the square wave output is determined by the clock rather than the input signal. In the case of a 0 input signal (no signal) during a cycle of operation, the clock tends merely to drive the transistor further into cutoff, and no output occurs. Transformer Coupling. Improved amplifier performance may be obtained with transformer coupling and the use of additional circuit components. The RC circuit, previously described, and the transformercoupled circuit operate fundamentally in the same way. The circuit schematic of the basic transformer-coupled amplifier may be obtained from Fig. 16, the schematic of the four-input or package, by omitting diodes CR 141 CR 211 CR 221 CR 23 , and CR 241 and all but one of the signal 16-18 DESIGN OF DIGITAL COMPUTERS input leads. The outstanding advantages of the transformer-coupled amplifier are a higher and more uniform output signal level and a sizable reduction in clock input power. Phase I Packages. For convenience, the amplifiers are packaged singly with the appropriate diode logic _gates included. Each type of package has a simple function and can drive several packages in parallel. The or, and, inhibit, and storage packages are representative of those employed in the arithmetic unit of the computer. Schematics of the packages are shown in Figs. 16, 17, 18, and 19. A number of features are common to all packages. Strappable Load. With the collector circuit heavily loaded, safety margins are improved due to deepening of the valley of the negative resistance curve. Diodes CR l7 and CR lg , and resistor R lO are provided as a strappable load in order that packages may always be connected with a minimum of four loads. Bypass Capacitors. Capacitors C a, C 4, C 5 , and C 6 prevent transients through the common voltage supplies from affecting amplifier operation. Waveforms. Typical input and output voltage waveforms relating to the functional packages are illustrated in Fig. 15. Four-Terminal Or Circuit. The or circuit, shown in Fig. 16, will have an output if there is a signal (a positive pulse) on any of the input leads. The purpose of CR 2l , CR 22 , CR 23 , and CR 24 is to isolate the inputs from one another. CR 14 is required because the series diode reduces the effect of the clamp of the driving package. Four-Terminal And Circuit. The and circuit, shown in Fig. 17, will have an output only if there is a simultaneous signal on all its input leads. The logic circuit consists of resistors R 6 , R 7 , R g, and Rg and diodes CR 7 , CRg, CRg, and CRlO' All these diodes must be cut off if the amplifier is to trigger and provide an output signal. The absence of a signal on anyone of the leads permits the corresponding input diode to clamp the transistor emitter below the peak point. Unused and inputs are connected to ground to provide a continuous signal at these terminals. Inhibitor Circuit. The inhibitor circuit, shown in Fig. 18, will have an output if there is a simultaneous signal on both of the and input terminals, provided there is no accompanying signal on the inhibit terminal. Diodes CR 3l and CR 32 , together with R14 serve the dual purpose of providing damping for T 2 , and of establishing a current threshold to give protection against spurious inhibition. In the quiescent state, both CR 3l and CR a2 carry small currents. The inhibiting signal must replace this current in CR al and cut it off before it can cause eRg to conduct and thus inhibit the package. PI .6 +6 VC~-Vo41 . r----- -k:l1 I .l!! :J r ~I 21 I I I I ~I CR 7 a. CR 23 r... Part of PI fm--- -CR-----------' -U I CR221 oS C5 OOl . R4 22,000 II I x I Q pnp _ 121 __ Clamped 1 ---.. . . -----.0+output I, C2 15 Collector ~I I 0-+--- Unclamped output -I :::0 » Z Vl J..LJ..Lf Vi -I I o II1.. ____ _ -2 :::0 v---U I .-- t I I. -:- C4 1I r°.oI Phase-~ll-:-lr-+------=~_~~1 -8V--~ -2 v---f-:O10 I I lY '----+--10-+--- See Note 2 n :::0 () c =i Vl -=- 1 FIG. 16. Tradic four-input or circuit. Notes. (1) All values are expressed in ohms and microfarads unless otherwise indicated. (2) With one or two . loads, strap 9 to 8. With three loads, strap 9 to 10. With more loads, leave 9 open. cr ..0 16-20 DESIGN OF DIGITAL COMPUTERS The inhibit clock input circuit, consisting of CR 9 , CR 22 , and R 8 , is an additional and type input to prevent a false output should the input and signals last longer than the inhibit signal. The inhibit clock voltage, which lags the amplifier clock voltage by 90 degrees, goes negative at the time the input signals would normally disappear. This causes CR 9 to conduct and clamp the emitter below the peak point. 1 13 C!18 I~ ~R7 :>12,000 9!1 9 I~ ~R8 and Inputs 15 ~> 12,000. CRlO Remainder of circuit identical to or circuit package I~ ~ >R9 ~12,000 ~~7 2 X I~ ~R6 <> <;> 12,000 Y FIG. 17. Tradic four-input and circuit. Remainder of circuit identical to or circuit package. Storage Circuit. 'Vhen a signal is applied to the Set 1 input of the circuit shown in Fig. 19, an output signal occurs ~ microsecond later, and every digit period thereafter until a signal is applied to the Set 0 input. Simultaneous signals to both terminals result in no output signal. An output signal is fed back through the delay circuit of T 3 , CR 25 , C 8 , and CR 24 , and into the amplifier input. The delay circuit is arranged so that the total loop delay is 1 microsecond, and recirculation of the pulse continues until the transistor emitter is clamped negative by the inhibiting Set 0 input. Power Requirements. The total power required, d-c and clock, is 75 milliwatts for a pulse amplifier and logic package. ,The requirements for the computer system, which contains approximately 700 transistors and 11,000 diodes, is less than 100 watts from all sources. 5. TRANSISTORIZED CALCULATOR Description. This transistorized equipment is functionally identical to the IBM 604 electronic calculating punch, a vacuum tube machine in Part of PI --, 6 +6V{==~, Phase ...LCs --115 ! and{ Inputs 1- 0.01 • 111 I2I --rl • __ I I __ I -- o "S a.. Input Output (a) e5 + Reset off 1 (c) FIG. 22. (a) Basic flip-flop circuit: Rl, 10 kO; R2, 110 kO; Rg, 39 kO; R4, 200 kO; CI, 680 p.p.f; Re, 3 kO. (b) Ring trigger drive: C2, 680 p.p.f. (c) Counter trigger drive: Rs, 3 kO; R6, 3 kO; R7, 3 kO; Rs, 27 ko; Cg, 1000 p.p.f; C4, 1000 p.p.f j C5, 1000 p.p.f. 16·27 16-28 DESIGN OF DIGITAL COMPUTERS Logic Elements. Transistors are used for logic in the calculator wherever the requirements of speed dictate. And and or operations are performed by emitter followers, paralleled as shown in Fig. 24a, b. The output of the and circuit is at ground level if X, Y, and Z are simultaneously at ground. The or circuit output is at ground if any of the inputs are at ground. (Blocking feedback) Input pulses 8 on + Carry - With Ion Positive-goi ng input pulses -15 v FIG. 23. Coded decimal counter. Output Drivers. Relays and other electromagnetic devices are driven by a power transistor developed by IBM. This transistor exhibits a negative resistance characteristic, and its use is quite similar to that of a thyratron tube in a control application. The relay driver circuit is shown in Fig. 25. The transistor latches on with a short input pulse of about 1 microsecond duration, and the collector circuit is opened mechanically to return the transistor to its lowconduction state. The average emitter to collector current gain is four; the average voltage drop is 2 volts at 100 milliamperes. Packaging. The transistorized calculator occupies less than one-half the volume of the model 604 vacuum tube equivalent, and further miniaturization is practicable. Printed wiring techniques are used for assembly of the transistor circuitry. A pluggable unit arrangement is used to facilitate assembly and servicing of the machine. The calculator contains 2165 transistors and 3600 diodes. A typical package consists of circuit components soldered on a 3-inch by 5~~-inch card with 18 terminals. The 595 cards in the calculator comprise a total of 40 different types. TRANSISTOR CIRCUITS 16-29 Compare Fig.21a -8v -15 v (a) +15 v +x Output +(X+ Y+Z) Compare Fig.21b (b) FIG. 24. Logic elements: (a) and circuit, (b) or circuit. Relay pick.up II -15 v -48 v FIG. 25. Relay driver. cOil 16-30 DESIGN OF DIGITAL COMPUTERS Power Supplies. The supply voltages are + 15, -5, -8, and -15 volts for the transistor circuits; + 45 and -45 volts are supplied for the neon indicators. The power supply has a tuned transformer input which enables the circuits to operate satisfactorily with a line variation from 90 to 125 volts at 60 cycles per second. The total power requirements for the calculator is 310 watts. Compared with the requirements of the vacuum-tube machine, this represents a power reduction of the order of 95 per cent. ACKNOWLEDGMENTS The author wishes to express his appreciation for the permission received from the various companies to include the material contained in this chapter. He further gratefully acknowledges the assistance of those listed for their assistance in providing information included here: H. A. Affel, Jr., Philco Corporation, for material on Transac and DCTL circuitry; E. G. Clark and J. H. Dahms, Burroughs Corporation, for material on design factors and information on transistor switching properties and for their assistance in compiling the figures; J. R. Harris, Bell Telephone Laboratories, for his critical review of the text; R. M. Shultz, Auerbach Electronics Corporation, for his contribution on DCTL circuitry. REFERENCES 1. R. H. Beter, W. E. Bradley, R. H. Brown, and M. Rubinoff, Electronics, 28, 132-136 (June 1955). 2. Tradic Phase I Computer-Summary Engineering Report, Bell Telephone Laboratories, Whippany, N. J., under contract AF 33(600)-21536. , 3, G. D. Bruce and J. C. Logue, The IBM 608 Calculator, International Business Machines Corporation, Poughkeepsie, N. Y. 4. J. J. Ebers and J. L. Moll, Large-Signal Behavior of Junction Transistors, Proc. I,R.E., 42, 1761-1772 (1954). 5. J. L. Moll, Large-Signal Transient Response of Junction Transistors, Proc. I.R.E., 42, 1773-1784 (1954). 6. G. D. Bruce and J. C. Logue, An Experimental Transistorized Calculator, Elec. Engr., 74, 1044-1048 (1955). 7. E. Wolfendale, L. P. Morgan, and W. L. Stephenson, The Junction Transistor as a Computing Element (Pt. 2), Elec. Engr., 29, 83-87 (1957). 8. R. H. Baker, Boosting Transistor Switching Speed, Electronics, 30, 190-193 (1957). 9. G. J. Prom and R. L. Crosby, Junction Transistor Switching Circuits for HighSpeed Digital Computer Applications, Trans. I.R.E. Elec. Camps., EL-5, 192-196 (1956) . 10. G. W. Booth and T. P. Bothwell, Basic Logic Circuits for Computer Applications, Electronics, 30, 196-200 (1957). 11. W. D. Rowe and G. H. Royer, Transistor Nor Circuit Design, Trans. Am. Inst. Elec. Engrs., Paper No. 57-196. 12. E. V. Cobler, Steady State Conditions of a Junction Transistor Flip-flop, MIT Lincoln Laboratory Memo No. M-2686, March 1954. 13. A. E. McMochon, I. L. Lebon, and R. H. Baker, A Design Procedure for Junction Transistor Flip-flops, MIT Lincoln Laboratory Internal Memo No. M24-34, 4pril 1954. D DESIGN OF DIGITAL COMPUTERS Chapter 17 logical Design Lowell Amdahl I. 2. 3. 4. 5. Computer Elements Algebra ic Techniques of Logica I Design Preliminary Design Considerations Detailed Logical Design Direct Simulation of a Logical Design References' 17·01 17-10 17-24 17-30 17-38 17-42 I. COMPUTER ELEMENTS Definitions Logical design is the specification of the interconnection of computer elements to produce a computer with the desired operational properties. Computer elements are aggregates of components which, as independent units, perform elementary computing functions. Examples. Flip-flops, inverters, cathode followers, gates. Logical elements are computer elements which perform a nontrivial 10gical function; that is, some input or combination of inputs produces something new as an output. The cathode follower is not a logical element, whereas an inverter is. Two classes of logical elements are decision elements and storage elements. Outputs of decision elements respond to their input stimuli during the same time interval as the inputs. Decision elements are frequently referred to as gates. Examples. Inverters, and gates, or gates. Outputs of storage elements respond to the input stimuli in a later time 17-01 1.7-02 DESIGN OF DIGITAL COMPUTERS interval. Such a time interval is a basic characteristic of a storage element. Examples. Flip-flops, delay lines, magnetic cores. For asynchronous computers, time intervals are determined by completion of events. Note. It will be assumed in the following discussion that all logical elements have input or output values of 1 or 0 only, in accord with the widespread use of binary devices in electronic computers. Other terms used for the binary states are true or false, on or off, mark or space, open or closed, and up or down. SYlDbols. The elements used in computer logical design may be represented by symbols. Three different representations in use are shown in Table 1. Representation (a) simply uses a box containing the operation name, (b) uses a segment of a circle containing the algebraic symbol, and (c) uses a purely symbolic representation. N one of these has achieved universal adoption. TABLE (a) ."'. ... 1. BLOCK SYMBOLS FOR COMPUTER ELEMENTS .. ~=:1 _or_--,~A+B ~~ and ~A'B A--1 not (b) ;=t>-A+B ;=t>-A'B A--0- (c) ;==!)--A+B ;=D-A'B A-{)--X X Decision ElelDen ts (See Ref. 1, Chap. 2; Ref. 2, Chap. 3; Ref. 3, Chap. 4; Ref. 4, Chaps. 3 and 4) Inputs to decision elements will be designated by letters at the beginning of the alphabet, A, B, C, etc. Outputs of decision elements will be designated Fo, F I , F2, etc. Later it will be convenient to identify outputs by their functional relationships to inputs, since all outputs of decision elements are dependent only on the input variables. One Input. A decision element with one input has two possible input configurations and four possible output responses. In general, an N input decision element can have 2N input combinations and 22N possible output responses. Some of these responses are trivial. Table 2 shows the possible values of 0 or 1 for input A. Each of the remaining four columns indicates a possible response to this input, followed by its usual name and Boolean algebraic representation. Functions Fo and F3 are trivial in that they provide constant outputs LOGICAL DESIGN 17-03 of 0 and 1, respectively, completely unaffected by the input information. Function Fl repeats the input information, commonly performed in computers by a wire, a cathode or emitter follower, or a noninverting amplifier. Only one binary decision element with a single input and output exist s-the inverter, F2 = A. This function is commonly referred to as not, ne gation, or complementation. TABLE 2. DECISION ELEMENTS WITH ONE INPUT Input Possible Outputs A Fo Fl F2 F3 0 0 0 1 1 1 0 1 0 1 Name (Trivial) ·Wire, cathode follower, amplifier Inverter, complementer (Trivial) Algebraic function 0 A A 1 Two Inputs. Table 3 shows the four combinations of inputs A and B, and the sixteen possible output responses, Fo to F1 5 , often referred to as switching functions. Fo and F15 are trivial in that they have no dependence on the inputs. F3 , F 5 , F 1O, and F12 are special cases since they depend on only one of the two inputs. F2 and F4 , and also Fll and F 13 , can be symmetrically paired since an interchange of the name of the inputs produces the paired function. There are eight functions of interest: F 1, F2 or F4, F6, F7, F s, F g, Fll or F 13 , F14. Because of their simple diode and resistor realization, the most prevalent of these are Fl and F7, the and gate and the or gate. F6, the exclusive or, and its complement F g, occur frequently in arithmetic processes. The remaining functions are rather simply mechanized by magnetic core techniques. They are also of considerable theoretical interest (see the section on Completeness). Many Inputs. Decision elements with many inputs are usually extensions or combinations of those already discussed. For example, a sixinput and gate will produce an output of 1 only when all six inputs are simultaneously 1. Similarly, a three-input or gate produces an output of o only when all three inputs are simultaneously O. Although not common in practice, a many input exclusive or gate produces an output of 1 if an odd number of inputs has a value of 1, and produces an output of 0 if an even number of inputs has a value of O. 17-04 DESIGN OF DIGITAL COMPUTERS .....w. ~ ~I~I~I~I~I ~I~I~I~IOI ~1~1~IOI~1 ~1~1~IOIOI ~1~IOI~I~1 ~I~IOI~IOI ~1~IOIOI~1 (IU!AFL) uon~unJ J8J.J 811S I IlloV!U+Y !HI V I UOJ7 V :JJlduq (8SU~ (8S'B~ lup8dS) lup8dS) 1 H<= V H+Y I I I I Y U+V U IlloV+Uoy =HEB V 0.. ..... ~ 0 (1) 00 k. ~ 0 0 0 :0 '00 w. 0 P-i <0 0 ~ ~ 0 ~IOI~IOI~1 .to ~lolol~lol k:lololol~1 ~IOIOIOIOI w. ..... ~ 0.. d H 04101~IOI~ ~I~ ~IO 0 I .to (8SU~ lup8dS) (8SU~ lup8dS) puV (IU!AFL) (1) S c;3 Z H+V U'V+H'Y !HEB V aaJsnpx[f[ ~IOI~IOIOI ~IOIOI~I~I =iI fv 8~J!8d ~IOI~I~I~I k. H'V uon~unJ I H I H'Y I V I I I U'V H'V 0 .~ d 0 ............ c;3 ..0 ..... (1) 0 Q()d ~.E LOGICAL DESIGN 17-05 Storage Elements A binary storage element is capable of retaining one bit of information. For synchronous computers in which events are timed by clock signals, storage elements have the property of retaining information for one or more time intervals. For asynchronous computers in which events occur at irregularly spaced intervals of time, a storage element has the property of retaining information from one input event to the next. Bistable storage elements can remain indefinitely in a given state in the absence of input events; thus, these devices are suitable for either synchronous or asynchronous computers. Bistable storage elements used in the arithmetic and control sections of a computer are referred to as flip-flops or toggles. (See Chap. 14.) Monostable storage elements are binary devices which have only one stable state, but are capable of indicating a second state as a transient response to an input event. These elements are well suited to synchronous operation, and several computers that utilize them to a large extent have been built. There is no widely accepted nomenclature for monostable storage elements; however, delay element and dynamic flip-flop have been used. For purposes of logical design, the properties of storage elements used for arithmetic and control are of especial importance. The outputs of flip-flops are dependent on the previous state, or stored value, of the flip-flop and the previous input configuration. The equation which relates the output to the input and previous state is a difference equation in time. (See Vol. I, Chap. 4.) It will be assumed that the output responds to the input in a later time interval as shown by the superscripts in the difference equations. Flip-flops have been mechanized in vastly different ways with a large number of variations in their logical response to inputs. Some of the more usual logical configurations will be described. (See Ref. 1, Chap. 5; Ref. 3, Chap. 3.) Outputs of Storage Elements. Almost all storage elements have a normal, or l's, or true output that is equivalent to its stored value (state). That is, if a flip-flop stores a value of 0, the output has a value of 0. It is usually desirable to have a complement, or 0' s, or false output which has the opposite value to that stored by the flip-flop. Some flip-flops provide a differentiated output which is activated by a transition in the stored value of the flip-flop, say a 1 to transition. This type of output has particular utility in a binary counter. Table 4 shows the different types of outputs as related to an arbitrary sequence of stored values of a flip-flop for successive unit time intervals T to T + 4. Note. Since these output values are directly derivable from the sequence of states, the subsequent discussion will consider only the relationship ° DESIGN OF DIGITAL COMPUTERS 17-06 TABLE 4. OUTPUTS AS RELATED TO AN ARBITRARY SEQUENCE OF FLIP-FLOP STATES Time Interval Flip-flop state T T+1 T+2 T+3 T+4 1 0 0 1 0 Normal (l's) output Complement (O's) output Differentiated (1 ~ 0) output 1 0 0 0 1 1 0 1 0 1 0 0 0 1 1 between inputs to storage elements and their states (or normal outputs). Single Input Storage Elelnents. The two most common single input storage elements are called delays and triggers. The two differ markedly, since the state of a delay is not inherently a function of its previous state, whereas the state of a trigger is completely dependent on its previous state. Delay Elelllents. A delay element is a storage device which delays its input information one or more time intervals before presenting.it on its normal output terminal. The state of a single time interval delay storage element U at time T + 1 depends only on its input D at time T, as shown by the following difference equation: The truth table specifying the relationship between the input and the state of the delay element is also extremely simple as shown in Table 5. TABLE 5. STORAGE CHARACTERISTICS OF A SINGLE TIME INTERVAL DELAY DT UT+l 0 1 0 1 The delay element has a striking dissimilarity to other storage elements to be described in that its state is not intrinsically a function of previous states (that is, UT does not appear on the right-hand side of the difference equation). From the standpoint of input gating, it is not surprising that the delay is best suited for applications where such dependence is not desired, e.g., shifting registers. However, by making the input a function of its own output, a delay element can be used to "latch" or hold information as shown in the following example. EXAMPLE. A delay element is provided with external gating which enables it to hold information provided on the "set" input until a "reset" input of 1 occurs. This configuration, shown in Fig. 1, is sometimes referred to as a latch. LOGICAL DESIGN Set 17-07 Reset L_________ _ _______ ~ Output FIG. 1. Delay latch. Triggers. A flip-flop that changes state when its input is 1 and retains its state when its input is 0 is called a trigger or a scale-of-two counter. The state of trigger U at time T 1 is a function of its own state and its input + TABLE 6. STORAGE CHARACTERISTICS OF A TRIGGER (SCALE-OF-Two COUNTER) Tr Ur ur+! 0 0 0 1 0 1 0 1 1 1 1 0 T at time T as described by the truth table of Table 6 and the following difference equation: Triggers are innately well suited for applications which involve counting or certain other arithmetic operations such as sum functions. Multiple Input Storage Elelllents. A majority of flip-flops utilize two or more inputs. Additional inputs can provide "intrinsic" gating as indicated by the complexity of the difference equation defining the storage element. If this intrinsic gating is well adapted to the application, sub- DESIGN OF DIGITAL COMPUTERS 17-08 stantial economies in the required decision elements can be realized, as compared with that required in conjunction with a simple storage device such as a delay element. R-S Flip-Flop. The R-S flip-flop has two inputs, Rand S, which reset and set the flip-flop to 0 and 1 respectively. Sometimes these are also referred to as O's and l's inputs. If both inputs are 0 at time 7, the flipflop retains its previous state. The situation that both inputs are 1 is not normally permitted because the flip-flop does not respond in a uniform way to this input configuration. The truth table for the R-S flip-flop is TABLE 7. STORAGE CHARACTERIS'l'ICS OF AN ST RT UT UT+l 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 1 0 1 0 1 0 1 R-S FLIP-FLOP 1 ? ? shown in Table 7, and is expressed by the following difference equation with its auxiliary condition: UT+! = (S R.S + R . U)T, = 1 not permitted. In a number of important variations of the R-S flip-flop Rand S inputs simultaneously equal to 1 are permitted. For example, a flip-flop which responds with a state of 1 to simultaneous inputs (that is, the last two entries for UT+l of Table 7 are l's) has an overriding set input. The "latch" made up of a delay flip-flop and external gating as described in the preceding example has an overriding set input. J-I( Flip-Flop. Another variation of the R-S flip-flop is one which changes state (triggers) when simultaneous inputs of 1 are applied. This flip-flop is termed a J-K flip-flop and is described by Table 8 and the following difference equation: UT+l = (J. lJ + K . U)T. R-S-T Flip-Flop. A flip-flop which has been widely used has three inputs, R, S, and T, which serve to reset, set, or trigger the flip-flop. In its most common form, no more than one input is permitted to have the value 1 during a given time interval. The truth table for the R-S-T flip- LOGICAL DESIGN TABLE 8. 17-09 STORAGE CHARACTERISTICS OF A J-I( JT I(T UT UT+l 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 FLIP-FLOP flop is shown in Table 9, and has the fol1owing difference equation subject to its auxiliary condition: + T· (J + R· T· U)T, R . S + R . T + S . T = 1 not permitted. UT+l = (8 TABLE 9. STORAGE CHARACTERISTICS OF AN R-S-T TT ST RT UT UT+l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 Q 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 0 1 1 0 ? ? ? ? ? ? 1 1 1 1 1 1 FLIP-FLOP 1 ·1 ? ? Selecting a Set of Computer Elements A minimum requirement of a set of computer elements is that they form a complete set and operate with adequate re1iability. Beyond this, it is desirable to have elements which permit flexibility and economy in mechanizing a computer system (see Ref. 5). Completeness. A function or set of functions is complete if all other functions can be formed from them. Of the decision elements described 17-10 DESIGN OF DIGITAL COMPUTERS in Table 3, only the Sheffer function (F 14 ) and Peirce function (Fs) are of themselves complete. A less known fact (see Ref. 6) is that functions F2 , F4 , Fu, and F13 are each complete if the constants 0 or 1 are available. (These constants are usually a d-c voltage or a clock pulse.) Pairs of functions which are complete are and and negation, or and negation, and and exclusive or (Fl and F 6), and or and exclusive or (F7 and F6). Note that and and or do not form a complete set. But and, or and negation form a complete set, the one most frequently used in logical design. Decision elements which are complete, together with a nontrivial storage element, form a complete set of logical elements. Because of the intrinsic gating associated with flip-flops, it is also possible to have a storage element which is a universal logical element and which requires no external decision elements. Versatility. In only rare instances have minimal sets of computer elements been chosen because of the versatility and economy of a wider array of decision elements. The decision elements and, or, and negation are commonly used because of their availability, and also because they are well adapted to the pattern of human thought. Usually and and or gates are mechanized with varying numbers of inputs to suit the need. Circuit limitations sometimes severely restrict the sequence in which gating and permissible cascading of gates can occur. In some computer designs, negation is provided only by storage elements .having both "normal" and "complement" outputs, i.e., inverters are not used. 2. ALGEBRAIC TECHNIQUES OF LOGICAL DESIGN Boolean algebra provides a mathematical framework for describing the design of computers utilizing binary computer elements (Vol. I, Chap. 11). An algebraic statement of the interrelation of binary variables is a switching junction, referred to frequently as a function. Switching functions have been the object of much study, particularly with regard to their simplest representation. (See Ref. 1, Chap. 4; Ref. 2, Chap. 2; ana Ref. 4, Chap. 5.) This section describes the representation of switching functions and their simplification. Section 4 shows the application of these techniques to the particular problem of determining inputs to storage elements. SUInInary of Equivalences in Boolean Algebra The relations in Table 10 are useful in working with logical expressions. They are postulates or theorems of Boolean algebra. Representation of Switching Functions Switching functions are frequently derived from equivalent tabular or diagrammatic representations. Both of these representations to be described have their merits and limitations for a particular use. 17-11 LOGICAL DESIGN TABLE A A +0 = +1= 10. EQUIVALENCES IN BOOLEAN ALGEBRA A A·O 1 A·1 = A +A = A·A = 0 1 A·B=B·A A+B=B+A (A A 0 A·A = A A+A=A A = + B) + C = A + (B + C) + (B· C) = (A + B) . (A + C) (A . B) . C = A . (B· C) A . (B (A) = A A + B = AB A + B + C = ABC AB = A + B ABC = A + B + C A + C) + AB = = (A· B) + (A . C) A + AB = A + B AB + AB = A A AB (A (A + B) (A + C) + B) (A + C) + AC) (AB + AC) (AB = = AC + Be + BC + AB = A = AC + BC AB + AC A + B)(A + C) (A + B) (A + C) (A + AC + BC = = = + C) (A + B) (A + C) A (B Truth Tables. The binary value of a switching function for each combination of binary variables can be tabulated in a truth table in the following manner. 1. Assign a column to each binary variable. 2. Assign a column to each binary function. 3. Assign a row to each different combination of values of the binary variables. If there are n variables, there will be 2n rows. 4. In each row, enter the appropriate functional value corresponding to the combination of variables in that row. EXAMPLE. Consider a function F of the two binary variables A and B defined by the truth table of Table 11. TABLE 11. A TRUTH TABLE IN Two VARIABLES A B P 0 0 1 1 0 1 0 1 0 1 1 0 DESIGN OF DIGITAL COMPUTERS 17-12 F has a value of 1 in two instances: when A is 0 and B is 1 (usually written AB omitting the and dot between A . B and read as "not A, and B"), or when A is 1 and B is 0 (written AB and read "A and not B"). The and operator is sometimes called the logical product. In words, F has a value of 1 when A or B is 1, but not both. This is the exclusive or function, and is given the symbol EB; that is, F = A EB B (see Table 3). Had the last entry in the F column of Table 11 been 1, then F would have a value of 1 when either or both of A or Bare 1. This is the inclusive or operator (also called the logical sum), and is given the symbol Hereafter, if the word or is used in the sense of a logical function, the inclusive or is meant. Minterm Canonical Form. Each row of a truth table corresponds to a minterm, also called a primitive. The four minterms of two variables A and Bare AB, AB, AB, and AB. Since any function can be described by a truth table, it. can also be described by utilizing minterms. The general form for the representation of a function F of n variables by minterms is: +. 2n-l (1) F = 2: i=O ai' mi, where 2: implies the connective or C+) between terms and· is the connective and between the factors ai and mi. The a/s are the functional values which can be obtained from a truth table corresponding to a minterm, mi. A function expressed in this manner is in canonical form. EXAMPLE. The minterm canonical expression for function F of Table 11 is obtained as follows. Assign the minterms mo to m3 to successive rows of Table 11 and substitute into eq. (1). 3 F = 2:ai' mi i=O = ao . mo + al . ml + a2 . m2 + a3 . m3 =O·A·B+l·A·B+l·A·B+O·A·B =A·B+A·B = AB +AB The last step of dropping the and dot conforms to usual practice. Note that the final canonical form can be written directly from the truth table merely by connecting with or's all minterms having functional values of 1. Maxterms. Logical functions may also be expressed as maxterms. A maxterm is the logical sum of all of the variables with each variable or its complement appearing once. Hence, the maxterms of two variables are A B, A B, A B, and A B. Any function can be repre- + + + + LOGICAL DESIGN 17-13 sented as a logical sum of minterms or a logical product of maxterms. (See Ref. 2, Chap. 3.) NorIllal ForIll. A typical computIng system will consist of several levels of cascaded decision elements of the and, or, and not type. A direct algebraic statement of this gating network may be quite complicated. Techniques are available to the logical designer to enable him to manipulate these complex functions for purposes of simplification or reorganization. In the previous section it was shown that any function can be written in canonical minterm form by consulting a truth table of that function. It is also possible to transform an arbitrary function into canonical form by algebraic manipulation only. DE MORGAN'S THEOREMS. Manipulations of functions frequently involve the use of De Morgan's theorems: A·B·C=A+B+C A+B+C=A·B·C (2) (3) A switching function composed of terms with an or connective, each term being composed of factors with an and connective is in normal form, also called disjunctive form. A normal function is closely related to a minterm canonical function; they differ only in that a term of a normal function need not be a minterm. Functions are frequently expressed in normal form as a basis for comparison or simplification. EXAMPLE: Put the following expression into normal and canonical form. (A = (A + B + D) . (B + C + D) + B + 15) + (B + C + D) + (B . C . D) = (A· B . D) = ABD + BCD normal form = ABD(C + C) + BCD(A + A) = ABCD + ABCD + ABCD + ABCD canonical minterm form. It is possible to reverse this procedure and go from a normal expression to some other form which, for example, may be required by the available decision elements. Veitch DiagraIlls. A very useful form of the truth table has been devised by E. VV. Veitch which contains all the information of a tabulated truth table in a more compact form (see Refs. 7 and 8). Moreover, it is a convenient representation for simplifying functions by geometrical rela tionshi ps. The Veitch diagram has a unit square for each minterm of the binary DESIGN OF DIGITAL COMPUTERS 17-14 variables, each square corresponding to a row entry in a tabulated truth table. Figure 2 illustrates a Veitch diagram for two variables, A and B. It has the following characteristics: 1. 2. 3. 4. All squares for which A has a value of 1 are in the column headed by A. All squares for which A has a value of 0 are in the column headed by if. All squares for which B has a value of 1 are in the row headed by B. All squares for which B has a value of 0 are in the row headed by 13. Figure 2 shows the appropriate minterm entered into each square, this being the coordinates of the square by column and row heading. Note. In practice, headings if and 13 are omitted since they are implied by the absence of A and B headings respectively. B~ A B AB AB A ~ 13 AB AB FIG. 2. A Veitch diagram in two variables. FIG. 3. F = A EBB. A Veitch diagram of the exclusive or function of A and B is shown in Fig. 3, and corresponds to the tabulated truth table of Table 11. Here the functional values of 0 or 1 have been entered into the appropriate minterm square. A A ~r- B B D C c FIG. 4. A diagram in three variables. FIG. 5. A " '" diagram variables. I'A BCD in four The Veitch diagram for three and four variables is a straightforward extension of that shown for two variables, and is illustrated in Figs. 4 and 5. Like tabulated truth tables, Veitch diagrams can be extended to any number of binary variables; however, their utility becomes marginal LOGICAL DESIGN 17-15 for a large number of variables. Beyond four variables, variable groups must be repeated. Figures 6 and 7 show diagrams for five and six variables. E E I A A A B A B ." C F D ........... C . ABCDE D ABCDEF B D C C FIG. 6. Five variables. FIG. 7. Six variables. Simplification of Switching Functions Once a tentative logical design for a computer has been prepared, it is important to attempt to simplify it. There are two approaches to this problem: 1. Achieving the same or equivalent operation by a different approach. 2. Reducing the gating network by algebraic techniques. The first of these approaches to simplification requires a thorough reconsideration of the logical design. The following questions should be asked: What are the alternatives? Has time-sharing of equipment been properly emphasized? Are the chosen timing signals unique? Particular study should be given to repetitious parts of the computer, since savings in equipment are multiplied. The second approach to simplification is formal in nature and can therefore be applied in a systematic way. This section is devoted to simplification by algebraic techniques. Simplification by Inspection. The following four equivalences are given to aid the simplification process by inspection. A logical designer will find these very useful, particularly if he can perceive these simplifications in a subtle multivariable form. A +AB = A, (4) since A + AB = Al + AB AB (5) since AB (6) = A(I + A.8 = A(B +.8) + B) + A.8 = = A(I) = A. A, = A(I) = A. A + AB = A + B, DESIGN OF DIGITAL COMPUTERS 17-16 + AB + AB = A + B. (7) AB + AC + BC = AC + BC, since AB + AC + BC = ABC + ABC + AC + BC BC (A + 1) = A C + BC. since A + AB = A = AC(B + 1) + Following each of the above equivalences is the proof that it holds, assuming A(I) = A, A + 1 = 1, A + A = 1, andAB + AC = A(B + C). EXAMPLE 1. AB EXAMPLE AB + BC + ABC = AB + BC = B + BC =B + AB from (6), from (5), from (4). 2. + AC + BC + ABC = AB = AB + BC + ABC + BC + BC from (7), from (6). Note. For Example 2 there is an equivalent result, AC + BC + BC. Quine Shnplification Method. Any switching function can be reduced to its simplest normal form. Therefore, any switching circuit composed of or's and and's (normal form) can be reduced to its most economical form. This is true for any reasonable way of evaluating the cost of the decision elements. In its simplest form, a function is irredundant. A method of obtaining the simplest normal representation of a function has been devised by W. V. Quine. (See Refs. 9 and 10.) The Quine method consists of three steps: (1) Find the prime implicant terms. (2) Find the essential prime implicant terms. (3) If the essential terms do not complete the function, find the simplest combination of remaining prime implicant terms required for completion. The expressions prime implicants and essential prime implicants are defined later by the processes which obtain them. However, it is evident from the brief statement of the three steps that the simplest function contains only prime implicant terms and at least all of the essential prime implicants. Step 1. Finding the Prime Implicant Terms. It is assumed that the switching function to be simplified is in normal form. (See preceding paragraphs for techniques for transforming functions into normal form.) The prime implicants are obtained by two distinct processes of reduction and expansion of the function being simplified. The process of reduction is simplification by inspection, by using the first three rules given by eqs. (4), (5), and (6). These rules are repeated here as they apply to normal functions, where A is a single factor of a term and X and Yare either single or multiple factors of a term: (a) Replace X + XY by X. (b) Re- LOGICAL DESIGN 17-17 + AX by A + X and A + AX by A + X. (c) Replace AX by X. The third of these simplifications is not necessary, but place A AX + it is frequently convenient. The next process, expansion of the simplified function, consists of adding terms of consensus obtained in the following manner: For any two terms AX + AY, add the term XY. Of course, if a factor in X appears also in Y in complementary form, then XY would be zero and no term would be added. These two processes, simplification by inspection and adding terms of consensus, must be repeated until no more changes occur, or until an "oscillation" sets in, that is, all new terms of consensus would be removed by the simplification process. The resulting terms are the prime implicants. Step 2. Finding the Essential Prime I mplicants. The essential prime implicant terms can be found by forming a table. The rows of the table are defined by the prime implicants. The columns of the table are defined by all minterms of the function (and hence, all minterms of the prime imp licants). The procedure for finding the essential terms consists of entering a check mark under each minterm column included in each prime implicant. When all check marks for each row have been entered, encircle all checks that occur singly in a column. All prime implicants in rows containing an encircled check are essential terms. Any simplest function must include the essential prime implicants. Draw a line through each row having an encircled check; then draw a line through every column containing a check mark with a line through it. If all the columns are lined out by this process, the simplest equivalent function has been found-the or of the essential terms is the simplest equivalent. If there are columns not ruled out by this process, Step 3 must be performed. Step 3. Finding the Simplest Combination of Remaining Prime I mplicants to Complete the Function. The remaining minterms are to be expressed by the simplest combination of remaining prime implicants. It is possible to get several equally simple expressions at this point. In most situations the function can be completed by inspection. Alternat.ively, a new table can be constructed consisting only of the remaining minterm columns, and the rows of prime implicants which are not essential, but having a check mark in one of the remaining minterm columns. This table is referred to as the reduced table of prime implicants. The problem of selecting reduced prime implicants to most simply represent the minterms, nevertheless, is a cut-and-try procedure. References 11 and 12 are a more thorough investigation of this problem. ExaIllples of Quine SiIllplification. EXAMPLE 1. Function: AB + AB + ABC. DESIGN OF DIGITAL COMPUTERS 17-18 Step 1. + AB + ABC reduced AB + AB + A C (+ BC) added term of consensus AB These are the prime implicants. Step 2. Table of Prime Implicants for Example 1 Prime Implicants AB Minterms ABC ABC ABC ABC f....l~ I I I I-T¥-I- ,+J AB I --(-- -1- --i-- ---, f--:-- --+I ¥ I ~¥t- --1.. '-t/ I I AC Ii BC ABC I I Ii ! ~-f- - - - I I ../ Y ./ ", The core is AB + AB identified by rows containing encircled checks. Step 3. The remaining minterm to be included by the function is ABC. Reduced Table of Prime I mplicants for Example 1 ABC AC BC V V Either of the terms AC and BC complete the function, hence there are two equally simple equivalent functions to that above. The result is: AB + AB + AC or AB + AB + BC. EXAMPLE 2. A common design situation is to obtain a function in canonical minterm form. This example shows the complete Quine simplification procedure for the following function: ABCD + ABCD + ABeD + ABeD + ABCD + ABeD + ABCD + ABeD + ABCD + ABCD. Step 1. The first reduction process in finding the prime implicants is not unique, but one such reduction is shown. . ABC (ABCD + ABCD) ABC BCD + (ABeD + ABeD) + (ABCD + ABCD) + ABD ABD (ABeD + ABCD) + (ABeD + ABCD) = ABC + ABC + BCD + ABD + ABD, LOGICAL DESIGN 17-19 and by adding terms of consensus = ABc + ABC + BCD + ABD + ABD + (ACD) + (BCD) + (ABD) + (BCD) + (ACD) + (ABC). The second reduction CD + ACD) + ABc + ABC + ABD + ABD + ABD + BCD + ABC = CD + ABc + ABC + ABD + ABD + ABD + BCD + ABC. (ACD The second addition of terms of consensus: = CD + ABc + ABC + ABD + ABD + ABD + BCD + ABC + (BCD) + (ACD) + (ACD) + (BCD). The third reduction drops out all these terms of consensus since they are contained in CD: = CD + ABc + ABC + ABD + ABD + ABD + BCD + ABC. No further attempts to add terms of consensus should be made, smce they will merely be canceled out by the next reduction. The table of prime implicants is shown below. Step 2. Table of Prime Implicants for Example 2 ABCD ABCD ABeD ABeD ABCD ABeD ABCD ABeD ABCD ABCD CD ABC ABC ABD ABD ABD BCD ABC I I -$- t--}I I I I I I I I I --1-- --1-- I I I i I I I I I I I 1 ---- ---- I I I I I I I I - I I .; V I v --- --- v- I I I I .; I II' I I I -, --- --- t---- I--~- 1---- I I I ... --_..... ..---- I I -$- v- }'j I i ---- ---- - - - - I - I I I 1 I ---- 1--1-- - - j - - v- / I I I v } I I ..- . . . - I j v .; 17-20 DESIGN OF DIGITAL COMPUTERS Essential terms: ABC, ABD. -Step 3. Reduced Table of Prime I mplicants for Example 2 ABCD ABCD ABCD ABCD ABCD ABCD CD ABC ABD ABD BCD ABC Since each of these prime implicants represents only two minterm columns, it requires at least three prime implicants to represent all six minterms. If only three are required, and if CD can be one of these three, it will represent the simplest solutions since it has one fewer factors than the other prime implicants. Such a choice is possible with the first three prime implicants, CD, ABC, ABIJ By combining these terms with the essential terms, the simplest equivalent function is ABC + ABD + CD + ABC + ABD. Veitch DiagraIn SiInplification. The Veitch diagram (see Veitch Diagrams) is a convenient representation for the simplification of functions because many of the rules of simplification can be deduced by geometrical consideration (see Ref. 1). The relationship between these rules and the geometry can best be learned from examples. The following four functions of two variables can be readily simplified: ifB + AB = B, ifB + AB = B, AB + AB = A, ifB + ifB = if. The Veitch diagrams of these four functions are shown in Fig. Sa, b, c, d. There are two other functions of two variables which are composed of two minterms which do not reduce: + AB, ifB + AB. ifB 17-21 LOGICAL DESIGN (b) (a) (c) FIG. 8. (d) (f) (e) Geometric relationships. The Veitch diagrams of these two functions are shown in Fig. 8e,.f. It is evident from the figure that those normal functions which can be simpli.fied (a, b, c, and d) occupy adjoining squares on the Veitch diagram; those which cannot be simplified (e and f) are not adj oined. These relationships can be used to simplify systematically any function in normal form. The function with a Veitch diagram of Fig. 9 can be written by FIG. 9. Veitchdiaminterms as AB AB AB; but from the geome- gram for AB + try it can be deduced that B AB and A AB also AB + AB. represent this function; and a simplest normal representation of the function is given by A B. The rules of geometrical relationships do not always require that the related squares in the Veitch diagram form a cluster, since for more than two variables different arrangements of the terms are possible. An example Brn rn + + + + + A B A 1--1--1--1--1- D C I--+--+-- B FIG. 10. Equivalent arrangements of the minterms of A . B. of the term AB of a function of four variables is shown in Fig. 10, in which the same relationship is involved, but the geometrical arrangement differs in each instance. For four variables, any four minterms on a Veitch diagram can be associated if they form a 2 by 2 square, a 1 by 4 rectangle, a pair of 1 by 2 rectangles symmetrically located on opposite edges, or 4 squares in opposite corners. EXAMPLE 1. A full binary adder has three inputs (A, B, C) and two outputs (8, K). The sum output Sis 1 whenever exactly one or all three of the inputs are 1. The carry output K is 1 whenever any two or all DESIGN OF DIGITAL COMPUTERS 17-22 three of the inputs are l. + ABC + ABC + ABC, ABC + ABC + ABC + ABC. S = ABC K = Veitch diagrams of these two functions are shown in Fig. 11 and Fig. 12. It is evident that the sum function cannot be reduced in normal form since A B 0 1 0 1 1 0 1 0 o B o C FIG. 11. Sum function (8). FIG. 12. Carry function (K). the l's entered into the Veitch diagram are geometrically unrelated. However, the carry function can be simplified, its simplest normal representation being K = AB + AC + BC. EXAMPLE 2. The function described by the Veitch diagram of Fig. 13 has as its simplest normal equivalent function ABC + ABD + ABC + ABD. Note that the center cluster of four l's (CD) is not a term in the simplest representation. This example points up a need for systematically obtaining the simplest normal function from the Veitch diagram. A 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 B B D C FIG. 13. Veitch diagram for Example 2. FIG. 14. Veitch diagram illustrating the Quine simplification. Such a systematic approach can be obtained by adapting Quine simplification to the Veitch diagram. This adaptation results in a two-step procedure: (1) Find the essential terms. (2) Find the best representation for the minterms which are not included in the essential terms. LOGICAL DESIGN 17-23 Step 1. The essential terms on a Veitch diagram are determined by the following criteria: (a) Any minterm which is geometrically unrelated to any other minterm is an essential term. Example. All minterms of the sum function of Fig. 11 are essential terms. (b) Any minterm which is geometrically related to only one other minterm or group of minterms has the largest such grouping as an essential term; The Veitch diagram of Fig. 14 shows a function completely defined by the two essential terms in the shadea areas, ACD + AB. Those minterm squares containing dots require that the associated term be essential. Step 2. Finding the best representation of minterms not included in the essential terms is sometimes obscured because often there may be more than one equally simple function. In this respect, it is like working with the reduced table of prime implicants in the Quine method. To show this, Example 2 of the Quine simplification procedure is repeated here; see Fig. 15. A 1 A 0 1 A o 1 B BI---+--t----If---f-- 0 1. 1 1 1 1 1 0 0 0 1 0 o D D o C (a) B I---t---t----I+-++- 0 0 C (b) (c) FIG. 15. Simplest normal equivalent function: ABD + ABC + CD + ABD + ABC. (a) Function (see Example 2, Quine simplification procedure), (b) essential terms ABD + ABC, (c) best representation of remaining min terms CD + AB fj + ABC. Redundancies. Many switching functions of interest have either (a) nonoccurring combinations of variables or (b) functional values which are not of interest for certain combinations of variables. In either case, it is often possible to simplify a function by properly utilizing these redundancies or "don't care" conditions. For Veitch diagram simplifications, all minterms which are redundant will have an X placed in their minterm square; all other squares will have functional values of 1 or O. Redundancies are utilized as l's whenever their use will simplify a term, or they are ignored otherwise. Two examples with binary-coded decimal numbers will be given. Figure 16a shows a diagram with the decimal value of four binary bits AI, A2, A4, As which DESIGN OF DIGITAL COMPUTERS 17-24 are weighted 1, 2, 4, and 8 respectively. For the decimal digits 0 through . h 9, this is referred to as binary-coded decimal representation. ,Assummg t at representations for 10 through 15 do not occur, Fig. 16b shows the use of a redundancy to specify the digit 3 as Al . A2 . A4. A2 Al Al Al 3 7 6 2 11 15 14 10 A2 As (11 l!) 0 0 0 X X X A2 As 1 0 0 1 X X X X As 9 13 12 8 0 X X 0 0 X X 0 1 5 4 0 0 0 0 0 1 1 1 1 FIG. 16. A4 A4 A4 (a) (b) (c) Examples illustrating redundancies. (a) Decimal equivalents, (b) decimal digit 3, (c) decimal digits ~ 5. Figure 16c shows the Veitch diagram of a function which detects all decimal digits less than, or equal to, five. There are three equally simple representations of this function; however, since the redundancies are used differently, the functions are not equivalent for all minterms. A4 . As + A2 . As; A 2 · A4 + A2 . As; A 4 · As + A2 . A4. Shnplification Including Storage Elements. Techniques have also been developed for determining the minimum number of storage elements required for a given logical network (see Refs. 13 and 14). These techniques are usually more applicable to well-defined portions of a computer design than to the whole design. 3. PRELIMINARY DESIGN CONSIDERATIONS System Aspects A computing system is typically made up of a number of subsystems such as input, output, storage, and arithmetic and control. The integration of these subsystems must be considered early in the design effort. For example, input might consist of multiple magnetic tape units, punched card readers, analog-to-digital converters, and a keyboard for manual entry of data. Each of these input devices has its own peculiar characteristicsit may provide digital information at a different rate, on a different number of wires, in a different block size, and with a different word composition. The following discussion assumes the usual situation in which the arithmetic and control form the hub of the system. LOGICAL DESIGN 17-25 Matching Input and Output. Direct Presentation. One method of incorporating inputs with arithmetic and control is the direct presentation of "raw" digital information to one or more of the arithmetic registers of the computer at the rate at which it is being read. This technique has the advantage of being economical to mechanize, but suffers from two, disadvantages. First, the computer usually is slowed down because it must operate at the speed of slower input devices. Second, the arithmetic and control unit becomes specialized ,with respect to the input devices. That is, the computer registers must be designed to accept the input information at the input rate, and perhaps in an undesirable format. Buffer Storage. A second method of incorporating inputs is to provide a buffer storage. The buffer storage accepts information at a rate commensurate with the input devices, and the computer then takes the information from the buffer at a higher rate. It is also possible to reorganize data which normally are not read in the desired form. For example, serial information can be put into parallel form, or punched card information can be suitably organized into word size. Extension of Buffer Storage. A third method of incorporating inputs is gaining favor, particularly for large-scale systems. This method is an extension of the buffer storage technique, and it involves additional equipment which makes the input buffer a computer in 'its own right. In addition to acting merely as buffer storage for input information, this device has the ability to search for information-a feature especially useful for magnetic tape. It is imperative that the input computer be suitably interlocked with the central computer. Computer output can be coordinated with arithmetic and control by techniques analogous to the three methods discussed for inputs: direct, buffer, or output computer. Storage. Usually the arithmetic and control unit communicates directly with the storage unit through one or more of its registers. The transmission of information is ordinarily in one of these three forms: serial by bit, parallel by word, or serial-parallel (serial by character). Two aspects of the main storage bear heavily on the logical design. 1. Speed compatibility of the storage and the arithmetic circuits may influence the choice of serial or parallel operation. 2. The type of storage, serial or random access, may affect both arithmetic speed requirements and the type of instructions. There is an increasing tendency in large-scale computers to provide a buffer storage for instructions and operands which are about to be used. Since the determination of which instructions and operands will be needed is rather complex (especially with automatic address modification and program branch points), such a buffer device is in itself a computer. 17-26 DESIGN OF DIGITAL COMPUTERS Arithllletic and Control Aspects. Before the logical design can proceed, decisions must be made as to the representation of numbers and instructions, the arithmetic operations to be performed, and the arithmetic techniques which will be employed (see Ref. 2). Instructions. (See Chaps. 2 and 12 for greater detail.) The number of addresses of an instruction are generally specified for arithmetic operations. For example, a three address instruction specifies two storage addresses from which to obtain operands and an address at which the result is to be stored. The most prevalent address structures for instructions are one address, two addresses, and three addresses. In addition to operand and result addresses, the address from which the next instruction is to be obtained must be specified. Most large-scale computers use a program address counter for this purpose, selecting instructions from sequential addresses in storage. Deviations from this pattern are referred to as branching or program transfers. Program transfer instructions therefore explicitly contain an instruction address. Computers with a serial main storage (such as a magnetic drum) often have in each instruction an explicit address from which the next instruction will be obtained .. Alternatively, a modified form of a program address counter is used. For computers with a fixed word length, it is desirable to have numbers and instructions either the same length, or one having a length that is an integral multiple of the other. This permits the efficient use of storage locations for either instructions or numbers, and allows arithmetic operations on instructions. NUlllber Representation. (See Chaps. 2 and 12 for greater detail.) The categories of number representation commonly employed in electronic computers are alphanumeric, decimal, and binary. Alphanumeric coding is a representation of an alphabetic or decimal symbol by combinations of six or more binary bits. The decimal symbol is a combination of four or m0re bits, the most common representation being binary-coded decimal which has four bits with "weights" of 1, 2, 4, and 8. Some decimal codes employ different weights which are capable of expressing every decimal digit 0 through 9; other decimal codes, such as the excess three code, have no column weighting associated with them. The "pure" binary number system is usually used for internal computing because it is economical. Negative numbers are commonly represented in one of several different ways in binary computers, for example, minus sign and magnitude, 2's complement, and l' s complement. The last two are useful because of their properties in subtraction. Arithllletic Operations. (See Chap. 18 for greater detail.) The choice of techniques for performing arithmetic operations will in a large measure be determined by the operational speed requirements and the way in LOGICAL DESIGN 17-27 which numbers are presented to the arithmetic unit. If operations are performed on operands as they appear serially in time, the operation is serial; if operands are utilized in parallel, the operation is parallel; if one operand is used serially and the other in parallel (for example, in multiplication), the operation is serial-parallel. Generally, the more parallel the operation, the greater the speed achieved and the more equipment. required. Operands may themselves appear in serial-parallel form. For example, decimal codes may be transmitted parallel by bit, serial by decimal digit. PreliIninary Design of the Arithmetic and Control Unit When the required capabilities of the computer have been specified, the logical design can begin. Separation. If possible, a breakdown of the logical design into independent parts should be made. This is especially important for complex computers which will require a parallel effort of several logical designers, since such a breakdown will enable them to work independently. There usually are other benefits of such an approach: the education of others on the workings of the computer is simplified, the isolation of malfunctioning parts of the completed computer is simpler, and the layout of the computer for packaging purposes is improved. Certain portions of a computer quite naturally separate out. For instance, arithmetic and instruction registers with their associated control flip-flops can usually be singled out. Also, arithmetic equipment for various arithmetic operations may be separable. The most difficult part of the arithmetic and control unit to sectionalize is that associated with control. Three techniques in common use are: 1. Group the controls which are needed for similar types of instructions. 2. Break up the execution of each instruction into suboperations. (Usually different instructions will have some sub operations in common.) Group the controls for a sub operation. 3. Determine the different control states required of the computer to execute all types of instructions. Group the controls for a given state. Manual Control and Display. These items, unfortunately, are often dealt with as afterthoughts. If these requirements are specified and borne in mind during the initial design effort, it is often possible to include them with little additional electronic equipment. There are few generalizations that can be made concerning manual control. Hmvever, one universal problem is the ability to start a computer. This is usually accomplished by providing a suitable starting instruction or instruction address manually, or by having an implied instruction or instruction address. In order to start satisfactorily, it is necessary to have some of the computer flip-flops 17-28 DESIGN OF DIGITAL COMPUTERS in known states. Considerable ingenuity can be used to determine which flip-flops must have known states, and of these, which must be forced into these states. A word of warning with respect to manual control-manual intervention into the operation of a high-speed computer is expensive in time and is fraught with possibilities of introducing errors. The need for these controls for program correction or maintenance should be clearly established. Representation of Logical Design Diagrammatic techniques of recording logical design are used toa large extent, however, symbolic (9Jgebraic) design is becoming increasingly popular because of advantages in a number of areas. Block Diagram.s. The interconnection of computer elements, which constitutes the logical design of a machine, can be depicted by equivalent interconnections of blocks or circuit symbols representing these elements. Although several sets of circuit symbols have been employed, none has achieved universal adoption, see Table 1, Sect. 1. Usually, a block is chosen to correspond to a physical unit in the computer so that the input and output terminals also represent plug connections. This permits the use of the logical diagram as a wiring diagram also (see Refs. 5 and 15). Figure 17a gives the block diagram for the ten-stage counter used as a design example in Sect. 4. The block diagram uses gates, delay elements with two outputs, and amplifiers. For comparison the logical equations for the counter are given in Fig. 17b. Advantages of the block diagram: (1) It affords a "picture" of the logical network which often enhances intuitive understanding. (This is particularly true of certain highly developed representations of contact networks.) (2) It usually serves as a wiring diagram. (3) It is easily understood by maintenance personnel. Disadvantages of the block diagram: (1) Complex control circuits present a formidable layout problem that requires a substantial amount of time, complicates changes, and thereby discourages improvements. (2) The pictorial representation may obscure rather obvious formal simplifications. Sym.holic Design (Ref. 16). Algebraic representation of computer design is coming into widespread use for the following reasons: (1) Continued improvement in formal techniques for synthesis and simplification tends to generate a symbolic design. (2) The use of computers for the design of computers requires a machine language. Examples. Logical simulation to detect logical design errors, layout and wiring calculations, tabulations of loading on outputs. (3) Revisions in design are easily incorporated. Symbols for computer elements should be chosen which are unique and, A B Ii c c r- o D (i) D (5 > ro m Vl Amplifiers dO dl d2 d3 d4 d5 d6 d7 d8 (j) Z d9 (a) Storage Element Inputs I(A) = AD + BCD = A I(C) = B I(B) I(D) = Ac + AD Amplifier Outputs dO = AB dl = Be d2 = CD d4 = BD d5 = AC d6 = ACD d7 = dS = d9 = ARD ABC BCD d3 = AD ...... N ~ (b) FIG. 17. Design of a ten-state master counter. (a) Block diagram, (b) logical equations corresponding to (a). (See Sect. 4.) 17-30 DESIGN OF DIGITAL COMPUTERS if possible, provide a mnemonic association. Inputs and outputs to an element are easily described by augmenting the symbol describing the basic element. For example, a J-K flip-flop which occupies the thirteenth bit position of the B register of a computer could be identified by the symbols of Fig. 18. Here the inputs have J and ]{ added to the flip-flop designations. The normal output has been assigned the same symbol as the flip-flop itself-usually there is no difficulty in distinguishing between the two. The output symbol, B13', is frequently used rather than B13 because it is more easily typed. (J input) B13J o---j B13 t----" B13 (normal output) (K input) B13K ~L...._ _ _-I~ B13 (complement output) FIG. 18. Typical flip-flop symbolic notation. It is extremely useful to have the completed design on unit records such as punched cards. This permits sorting, merging, duplication, and tabulation by standard card equipment, and also facilitates revisions. Punched card representation of symbols requires the use of capital letters only and may restrict the use of special symbols. For example, the complement output of Fig. 18 could be represented as B13C or B13 -. The First Design Attelllpt. A good place to start in the detailed design of a computer is to consider that operation which will require the most equipment. Then, as additional requirements are added, an attempt should be made to utilize as much of the equipment already in use as possible. It is important to determine the flip-flops that will be required and to specify their functional roles, since the detailed logical design will require it. As an example of this approach, consider the logical design of an arithmetic unit which will have serial-parallel multiplication but will perform the other arithmetic operations serially. It is quite likely that providing a minimum of equipment for the. multiplication will provide nearly enough equipment to perform the rest of the arithmetic operations. As the logical design proceeds, there may arise a need for miscellaneous control flip-flops. It is usually advantageous to carry these as separate flip-flops and attempt to time-share them only after the design has been quite well established, since minor changes can upset the economics of time-sharing. It may be desirable to redefine the roles of flip-flops as the logical design proceeds, or even change some of the system specifications to achieve a balanced design. 4. DETAILED LOGICAL DESIGN The preliminary planning of the logical design of a computer involves a determination of the storage elements to be used and their functional LOGICAL DESIGN 17-31 roles. This plan provides a foundation on which the detailed logical design can be built. The detailed logical design is a statement of the interconnections of computer elements required to mechanize the desired computer. It will be assumed in the following discussion that the logical design is specified by input equations to flip-flops, although the complete design may require other specifications also. (See Ref. 1.) The input equations must be in a form compatible with the computer elements used and their permissible arrangement. Tillle Difference Equations If a storage element retains information for one time interval, its time 1 to its input and its difference equation relates its output at time T previous state at time T. If the difference equation of a flip-flop is known for all time (for any T), the complete input gating required for this flip-flop can be determined. Since the functional roles of all flip-flops are known, their difference equations (and hence their inputs) can be defined. Knowledge of the role of a flip-flop usually defines its output (or state) in one of the following three ways: (1) The output as a time sequence. Examples. Sequencing control, timing. (2) The output as a combination of inputs. Examples. Accumulator, shifting register, error detector. (3) The output as time sequences of combinations. Examples. Time-shared registers, operation control. Outputs Given as a Tillle Sequence. It is typical of many of the control flip-flops of a computer that the preliminary design provides a description of the outputs as l's or O's during each time interval. For example, a timing flip-flop may be required to produce a 1 during the fifth time interval of the execution of each instruction, and a 0 at all other times. This output is stimulated by its input during the fourth time interval, and the problem becomes that of uniquely specifying the fourth time interval. If the preliminary design does not provide a unique identification of this time interval, then it must be modified accordingly. Knowledge of the output sequence F of a flip-flop U does not provide a difference equation directly, but requires specification of the input sequence G: UT+1 = FT+1 (output sequence) = GT (input sequence). + Frequently the inputs for a flip-flop with defined outputs can be written directly; in the example above, the simplest unique identification for the fourth time interval would provide the simplest input equation. Input equations can also be derived from difference equations. The following example of a ten-state counter shows the complete transition from a known output sequence to input equations for various types of flip-flops. 17-32 DESIGN OF DIGITAL COMPUTERS If it does not matter what the outputs of a flip-flop are for certain time intervals, it may be possible either to simplify the input equations or to time-share the flip-flop, that is, to assign it some other role during this period of time. Outputs Given as a COInbination of Inputs. It is typical of flipflops in the arithmetic portion of a computer to have outputs which depend on the information being processed. It is not known in advance whether the state of such a flip-flop will be 0 or 1 at a particular time, since it will depend on the instructions or numbers of the computer program. The difference equation for flip-flop U is immediately obtained from ,the input function G: The input equations for flip-flops are derived directly from their difference equations as shown in the example of a ten-state counter which follows. Outputs Given as TiIne Sequences of COInbinations. Most control flip-flops have a different sequence of outputs in executing different instructions, and hence depend on Iparticular operation code combinations. Similarly, most arithmetic flip-flops have a somewhat different role during particular time intervals. These cases are a combination of the two previously described, and the flip-flop input equations can either be written directly or be deduced from the difference equations. Design of a Ten-State Counter The following example will illustrate the following points: (1) the use of the Veitch diagram as an aid to creative logical design; (2) obtaining time difference equations for flip-flops; (3) obtaining equations for flipflop inputs. The ProbleIn. It is desired to have a four flip-flop counter with any ten unique states which repeat. The states of the counter will be used in many places for timing; hence, it is desirable to reduce the gating required to sense each count, and thereby also reduce the output loading of the counter flip-flops. DetcrInination of the Ten States. The four flip-flops will be called A, B, C, and D. It should be noted that no count can be specified by just one of the four flip-flops, since this would permit at most nine counts. At least one count can be specified by two flip-flops. Figure 19a shows a Veitch diagram with an arbitrarily placed count which, by virtue of its associated three redundant minterms (hatched), allow it to be specified by AB. Note. Redundant minterms are usually marked by an x; however, in these examples such squares are shaded to show the symmetrical configurations. Figure 19b shows an efficient extension of the redundant nucleus such that six counts are achieved which are specified by only 17-33 LOGICAL DESIGN two of the four flip-flops. In order to obtain ten counts, only one more minterm of the remaining five can be selected as a redundancy. Figure 19c shows the final choice which again has maximum efficiency, but requires sensing three of the four flip-flops to obtain the remaining BD --+----1 D D C (a) FIG. 19. (b) (c) Determining counts which require limited sensing. counts, (c) ten counts. (a) One count, (b) six four counts. In Fig. 20 the ten counts have been labeled dO to d9, and the table of the figure shows the values of the flip-flops for all counts, and the coincidence required to recognize a particular count. The choice of Count dO dl d2 d3 d4 d5 d6 d7 d8 d9 FIG. 20. States ABCD 1100 o1 10 001 1 100 1 o10 1 1010 o100 o0 1 0 000 1 1 000 Count Recognition AB BC CD AD BD AC ACD AED ABC BCD Assignment of counter sequence. the sequence of counts bears heavily on the input gating that will be required to generate it. There are no simple techniques which give the best choice of sequence. This choice will, of course, depend on the properties of the storage element used. Inputs for Flip-Flop A, B, C, and D. The inputs for the flip-flops can be obtained directly from the time difference equations. Difference Equations for A, B, C, and D. In Fig. 20 it can be seen that A has a value of 1 for dO, d3, d5, and d9; thus for an arbitrary time DESIGN OF DIGITAL COMPUTERS 17-34 interval T + 1: Note that this is not a difference equation since the time superscripts are the same on both sides of the equation. To obtain a difference equation, the right-hand side of the equation is replaced by its preceding count: AT+1 = (d9 + d2 + d4 + d8)T. A substitution for d9, d2, d4, and d8, in terms of A, B, C, and D provides the desired function (together with the "don't care" conditions for simplification). This is readily shown in the diagram of Fig. 21, where the symbol T has been dropped from A T+1. The remaining difference equations can be obtained in the same manner. The results are summarized below: A +1 = AD + BCD, B+1 = A, C+1 = B, D+1 = AC + AD. T(A) = D FIG. 21. Diagram of A +1. FIG. 22. + AB + AC Diagram of T(A). Delay Flip-Flops. If A, B, C, and D are delay flip-flops, their inputs I are the same as the difference equation. leA) = AD + BCD, I(B) = A, I(C) = B, leD) = AC + AD. Time does not appear in the total input equations for flip-flops, since the gating structure of the computer is fixed. Trigger Flip-Flops. If flip-flop A is a trigger flip-flop, its input T (A) is defined by the diagram of Fig. 22. Note that it differs from the diffcr- LOGICAL DESIGN 17-35 ence equation for A (Fig. 20) in that l's and D's are interchanged in the columns for A = 1. This is because the flip-flop is in the l's state, and it is desired that it remain in the l's state for the next time interval, requiring an input of zero. The inputs required for trigger flip-flops A, B, C, and Dare: T(A)=D+A(B+C) T(B) T(C) T(D) + AB = BC + BC = A (CD + CD) = AB R-S Flip-Flops. If flip-flop A is an R-S flip-flop, its inputs S (A) and R (A) are diagrammed in Fig. 23. N ate that additional redundancies have been added to those of the difference equation of Fig. 21. S(A) This = AD FIG. 23. Inputs to R-S flip-flop A. happens because there is not always a unique input sequence for a given output sequence. For example, set inputs do not have to be applied a second time if an R-S flip-flop is to remain in the l's state two successive time intervals. The diagram for R (A) has entries which are the complement of these in the difference equation, and all D's for A = 0 become redundant. The R (A) input equation is not unique, as shown by the equivalent terms within braces. Inputs for R-S flip-flops A, B, C, and Dare: SeA) = AD, S(B) = A, S(C) = B, SeD) = AC. R(A) JAB l = lBDJ R(B) = A, R(C) = B, R(D) = AC. + AD + JAC} lCD ' DESIGN OF DIGITAL COMPUTERS 17-36 J-I( Flip-Flops. If flip-flop A is a J-K flip-flop, its inputs J (A) and K (A) are diagrammed in Fig. 24. Note that J inputs can be anything if the state of the flip-flop is 1 in the same time interval. Similarly, K J(A) =D K(A)=B +C +D FIG. 24. Inputs to J -K flip-flop A. inputs can be anything if the state of the flip-flop is 0 in the same time interval. Minimal equations for J and K inputs never include the output of the same flip-flop. Inputs for J-K flip-flops, A, B, C, and Dare: K(A) = B J(B) = A, K(B) = A, J(C) = B, K(C) = B, K(D) = AC. J(D) = SeA) + C + D, J(A) = D, AC. =0 T(A) FIG. 25. =D R(A) =AB + AC Inputs to R-S-T flip-flop A. If flip-flop A is an R-S-T flip-flop, its inputs In several instances R, S, or T appear as entries rather than 0 or 1; for example, T appears in S (A) and S in the same position of T (A). This implies that equivalent operation can be obtained by a set or a trigger input, but both are not R-S-TFIip-Flops. R (A), S (A ), and T (A) are diagrammed in Fig. 25. 17-37 LOGICAL DESIGN allowed simultaneously. The equations shown are not unique-the terms shown for R (A) could be put in T (A) instead. Inputs for R-S-T flip-flops A, B, C, and Dare: SeA) = 0, R(A) = S(B) = A, R(B) = A, S(C) = B, R(C) = B, SeD) = AC. R(D) A(B = AC. + C), T(A) = D, T(B) = 0, T(C) = 0, T(D) = 0. Further Considerations To complete the design of this counter, three more items ~hould be considered: (1) the initiation of each count, (2) presetting of the count, (3) behavior of the counter in unused states. Count Initiation. The counter as described by the final equations will produce a count each time interval. That is, the storage or decision elements are internally acted upon by clock signals so that the counter continually sequences through its ten states. If it is desired to count external pulses, these counting signals must be introduced into the input equations for the storage elements. For the T, R-S, J-K, and R-S-T flip-flops, this is easily done by introducing the count signal into an and gate with each input equation. This is sufficient since all these flip-flops retain their states if all of their inputs have a value of zero. The delay element does not have this implicit holding property, hence, holding of a given state requires external feedback of the type shown in Fig. 1. Count Preset. Presetting the counter to a particular count will be required if it must be slaved to other events in the computer. If, however, it is a master counter, it may serve to bring all other devices into step with it, without requiring a preset. The external signal which causes the preset is incorporated in the equations in such a way as to force each storage element into the desired state. Unused States. A final consideration is the possibility of the counter going into a state that is normally not used. This might happen, for example, when power is applied to the computer, or in the event of a transient failure. If the preset condition is not adequate to take care of this situation, then a "clearing" signal can be provided. This produces the same effect as a preset, but it may be a part of a general clearing signal provided to all parts of the computer. For a master timing counter which can begin its counting cycle at any time, it is sufficient to determine that the counter will not lock into an unused state. Figure 26 is a study of the unused states of the ten-state DESIGN OF DIGITAL COMPUTERS 17-38 counter using delay elements. The unused states are shown in rectangles. The arrows indicate the transitions made in advancing the counter by a count of one. This shows that the six unused states all eventually move into one of the ten desired states. The result of this analysis depends on ABeD ABeD I 1 1 10 I 1 0000 \ \ ...-8--- I I ® @ \ @ t ! ® \ @ 8",-- I e @ ®'--1 10 1 1 ABeD t ABeD 111011~loilll~llllll FIG. 26. Analysis of unused counter states. the storage element since the unused states were employed as redundancies for simplification. For example, the above variations of this counter that employ storage elements other than delays would lock into the state ABeD = 0000. Additional gating logic would be required to release the counter from a transient excursion into this configuration. 5. DIRECT SIMULATION OF A LOGICAL DESIGN Little use has been made of digital computers as tools in the design of other digital systems. This section discusses an approach to direct simulation of the logical behavior of a system from its definitive logical design. See Ref. 17. LOGICAL DESIGN 17-39 Objectives. The prime objective of logical simulation is the detection of mistakes in the logical design of the simulated computer. There are several aspects of this problem. 1. These mistakes are costly in checkout time of first-of-a-kind computers because detection of the error must be followed by a correction process which inevitably requires some rewiring of the computer, and very likely requires more computer elements. In addition, the detection of wiring mistakes and circuit malfunctions is complicated when errors in logical design are present or suspected. 2. Logical simulation facilitates changes. Just as the first designs have mistakes, frequently changes which are proposed have mistakes in them. Thus a simulation program written for a first design is available to check changes in subsequent models. 3. In applications of digital systems to control problems, the amount of digital output may be small. This lack of voluminous digital outputs may indefinitely conceal subtle mistakes in logical design. The resulting infrequent computational errors might be attributed to transient conditions rather than to its true cause. Initial Considerations The sucesss or failure of a simulation program depends heavily on the initial approach. It should be borne in mind that in all but the simplest cases a limited objective must be sought. The Silllulator. It is assumed that the design group has a general purpose digital computer available to them. This compJter (the simulator) need not be larger than the computer undergoing simulation in the sense of word length, storage capacity, or speed. A special purpose computer could also be designed to simulate the logical design of a digital system (see Ref. 18). Initial States. The behavior of a digital system is completely described by (1) the initial states of all storage elements, (2) the states of all inputs-initially and thereafter, (3) the logical design of the system. The initial state of all storage elements can be set by storing l's or D's in their proper places within the simulator. These initial states may not be known, however. In this case it is good practice to emulate computer behavior from "power on" to "running." For example, all simulated flip-flops can be set to a random state to typify their condition after power has been applied. Thereafter, the steps which the operator would go through to get the machine "cleared" could be taken. Shnulated Inputs. It is desirable to minimize the number of inputs which must be simulated. Also, it is desirable for these inputs to be closely related to the programmed variables of the machines-instructions 17-40 DESIGN OF DIGITAL COMPUTERS and numbers. -Usually, both of these ends will be served if the simulated portion (if not all) of the system is chosen as one of the sUbsystems or a combination of the subsystems. For example, the arithmetic and control portion of the computer can usually be separated from the rest of the system. The inputs which would require simulation then would typically be numbers and instructions from the storage unit, control signals and keyboard information from the console, etc. Note that this separation would not, for example, test a program address counter in the arithmetic and control unit directly by actually obtaining a number or instruction from the storage unit. Test ParaIneters. The parameters of the test are the sequences of values which are applied to each of the inputs. It becomes apparent that there are far too many sequences of input combinations to test the logical design for all possibilities. Consider those inputs which correspond to instructions and numbers. It is not reasonable to test each arithmetic instruction for all combinations of numbers. Instead, one should make an intelligent choice of the combinations which represent differences in the logical design. For example, the choice of arithmetic instruction-number combinations would be influenced by (1) combinations of signs of the operands, (2) operand combinations to yield all possible rounding effects, (3) operands resulting in overflow, (4) special cases such as operands or results which are zero, (5) various choices of operands for adder input combinations. For a parallel arithmetic device, it ordinarily would not be necessary to test the last of the above conditions for every adder position. Symmetry usually exists which can easily establish the equivalence of operation of many such adders; thus, checking one adder checks the rest. PrograInIning the SiInulation The simulation program performs the required functions of setting initial values of simulated flip-flops (or other storage elements), and thereafter updating these flip-flops. In each succeeding simulated time interval, the logical design defines the influence that the current flip-flop and input states shall exert upon the next state of a simulated flip-flop. Part of the working storage of this program is therefore the present value of each simulated storage element. COInpiled Logic. The simulation program requires a logical description of the simulated digital system. It would be possible to use the symbolic logical design directly. However, the use of this design in updating simulated storage elements is the heart of the program and it is important that this part be as efficient of time as possible. The transcription of the symbolic logical design into an effective simulator process is called the compiled logic. _ The nature of the compiled LOGICAL DESIGN 17-41 logic will depend on the computer to be used for simulation. A typical procedure would evaluate an equation for the S (set) input of an R-S flip-flop which consists of and's, of or's (normal form), of other flip-flop outputs. EXAMPLE. Consider the logical equation: A12S = All· AXI + A13· AXI . AX2. The symbolic design might not contain the symbols =, . , + explicitly. For example, in punched card representation the leftmost columns might always be reserved for the input designation, A l2S. The compiled logic for this equation would be a short sequence of instructions which would evaluate A 128 .as a 0 or 1 depending on the present values of All, A13, AXl, and AX2. Thus, if All and AXI are both 1, A 128 would have the value 1. The compiled logic contains instructions with addresses corresponding to the location in the simulator storage of these simulated flip-flop values. The instructions would be chosen in such a manner that the indicated logical operation of and, or, or not would take place. This is easily achieved with a general purpose simulator having logical instructions. Ordinary arithmetic instructions can also be used. For example, multiplication of single l's or all O's have the same property as the logical and. After the evaluation of all simulated storage element inputs, the next state of each element can be determined. At this point, a condition such as simultaneous Rand S inputs could cause an alarm indication. Driver Progralll. The program which causes sequential simulation is called the driver program. The compiled logic is used in a subroutine to evaluate the states of all storage elements for each time interval. Another subroutine places new values on the inputs each simulated time interval from a list of instructions and numbers, and switch and keyboard settings. The driver program also provides a subroutine to calculate independentlY the expected result produced by the simulated computer. These calculations are made only when results are supposed to be available from the simulated computer. Rounding, negative number representation, and word length of the computer undergoing simulation must be considered. Silllulation Output. The driver program provides a comparison between the simulated computer outputs and the expected outputs. If these are not identical, the simulator indicates that a malfunction has occurred. In this event, it is desirable also to provide sufficient information for the logical designer to pinpoint the source of the error. Such information would be available, for example, from a sequential recording of simulated storage element states and inputs. These would be provided for all simulated time intervals in the execution of the instruction in error. 17-42 DESIGN OF DIGITAL COMPUTERS REFERENCES 1. M. Phister, Jr., Logical Design of Digital Computers, Wiley, New York, 1958. 2. R. K. Richards, Arithmetic Operations in Digital Computers, Van Nostrand, Princeton, N. J., 1955. 3. Engineering Research Associates, High-Speed Computing Devices, McGraw-Hill, New York, 1950. 4. Staff of the Computation Laboratory, Synthesis of Electronic Computing and Control Circuits, Annals of the Computation Lab. of Harvard Univ., Harvard University Press, Cambridge, Mass., Vol. 27, Chaps. 3, 4, and 5, 1951. 5. S. Greenwald, R. C. Harter, and S. N. Alexander, SEAC, Proc. I.R.E., 41, 13001313 (1953). 6. N. M. Martin, On completeness of decision element sets, J. Computing Systems, 1 [3], 150-154 (1953). 7. E. W. Veitch, A chart method for simplifying truth functions, Proc. Assoc. Computing Machinery, 127-132, May 2-3, 1952. 8. M. Karnaugh, The map method for synthesis of combinational logic circuits, . Trans. Am. Inst. Elec. Engrs., Pt. I, 72, 539-598 (1953). 9. W. V. Quine, The problem of simplifying truth functions, Am. Math. Monthly, 59, 521-531 (1952). 10. W. V. Quine, A way to simplify truth functions, Am. Math. Monthly, 62, 627631 (1955). 11. M. J. Ghazala, Irredundant disjunctive and conjunctive forms of a Boolean function, IBM J. Research and Dev., 1 [2], 171-176 (1957). 12. E. J. McCluskey, Jr., Minimization of Boolean functions, Bell System Tech. J., 35 [ 6], 1417-1444 (1956). 13. D. A. Huffman, The synthesis of sequential circuits, J. Franklin Inst., Pt. I, 257 [3], 161-190; Pt. II, 257 [4], 275-304 (1954). 14. G. H. Mealy, A method for synthesizing sequential circuits, Bell System Tech. J., 34 [5], 1045-1079 (1955). 15. J. H. Felker, Typical block diagrams for a transistor digital computer, Communications and Electronics, No.1, 175-182, July 1952. 16. E. C. Nelson, An algebraic· theory for use in digital computer design, Trans. I.R.E., PGEC, EC-3 [3], 12-21 (1954). 17. S. R. Cray and R. N. Kisch, A progress report on computer applications in computer design, Proc. Western Joint Computer Conf., 82-85, Feb. 7-9, 1956. 18. W. E. Smith, A digital system simulator, Proc. Western Joint Computer Conf., 31-36, Feb. 26-28, 1957. D DESIGN OF DIGITAL COMPUTERS Chapter 18 Arithmetic and Control Elements H. L. Engel I. 2. 3. 4. 5. 6. System Considerations Notation Binary Operations Decimal Operations Special Operations Control Elements References 18·0!. 18·02 18·03 18·25 18·30 18·33 18·40 I. SYSTEM CONSIDERATIONS The arithmetic element of a digital computer should be designed together with the computer system of which it is a portion. Some of the important system considerations that influence the design of an arithmetic element are listed in the following table: Feature Input and output Consideration Decimal or binary numbers, analog, combinations. Speed The importance of speed. Speed can be increased by adding equipment or by increasing the basic computer rate. A parallel or partially parallel arithmetic element will be faster than a serial element using the same clock rate, but it will require more hardware. Circuitry Transistors, cores, tubes, etc. Flip-flops Static or dynamic. Gates Levels of gating that can be used; tube, transistor, diode, core, resistor, etc. Arithmetic operations Only addition, subtraction and multiplication; possibly also division and square root. Numbers Fixed or floating point, binary or decimal, location of sign bit (most significant or least significant end). 18·01 DESIGN OF DIGITAL COMPUTERS 18-02 All these factors greatly influence the design of the arithmetic ehment. In the work to follow, the techniques of logical design described in Chap. 17 are used to design portions of arithmetic elements. An attempt has been made to include a large variety of possible implementations in order to demonstrate that logical design techniques can be adapted to the hardware available. The design of an arithmetic element is partly art and partly science. The design of a control element involves more art and less science. Thus design of a control element is best illustrated by exhibiting the techniques used in design. This is done in this chapter by designing the control element of a simple computer, showing many of the devices available to the logical designer and the many choices he must make. 2. NOTATION Logical Operations. A plus (+) indicates logical sum, or, and a dot (.) logical product, and. Dots may be omitted in logical products. Where these symbols are used for arithmetic sums and products instead, this is indicated. A bar () indicates a logical complement; a prime (') is frequently substituted in typing. The summation sign CE) indicates an arithmetic sum. Flip-Flop. The name of a flip-flop is an upper case letter or an upper case letter and a number, for example, F, X, F1, F3, D14. The normal output of the flip-flop has the same name as the flip-flop and provides a signal only when the flip-flop is in the l's state. The complementary output, if there is one, carries the name of the flip-flop with a bar over it (). It provides a signal only when the flip-flop is in the O's state. Conventionally, each output is assigned the value 1 when it provides a signal, and 0 when it does not. Flip-Flop Logic. Three of the many logically different flip-flops are used in this chapter. They are shown with their truth tables in Fig. 1. 1. The first is the delay flip-flop with the name D, outputs D and D, and the single input I. In terms of the input at digit time n, the output at digit time n 1 is + (1 ) 2. The second flip-flop is the trigger flip-flop, named U, with outputs V, and inputs J and K. The state of this flip-flop at digit time n + 1 in terms of the state and inputs at digit time n is U and (2) U+1 = JV + RU. 3. The third flip-flop is the set-reset flip-flop, named Q, having outputs Q andQ, and inputs Sand R. The state of the flip-flop at digit time ARITHMETIC AND CONTROL ELEMENTS l~~ _1_ D+l D+1 001 1 1 0 (a) J J( U+ 1 U+1 -0---0- [ J U t---0==g o (b) ~---0==~ 1 1 0 0 1 1 1 U s R o o 1 1 1 0 1 010 1 Unknown Unknown o (c) FIG. 1. 18-03 Symbols and truth tables. 1 0 U Q+1 Q Q+1 Q (a) Delay flip-flop, (b) trigger flip-flop, (c) set-reset flip-flop. n + 1 is given in terms of the state and inputs at digit time n by (3) Q+l + RS = SQ + RQ + RS. Here RS is written on both sides of the equation so that it is not possible to find Q+l if both Rand S are 1. This describes the behavior of the flipflop; the next state cannot be predicted if there are two simultaneous inputs. Set-reset flip-flops are used in Sect. 6. Different flip-flop names are employed there to indicate the flip-flop usages. Note. The name F is applied to any flip-flop for which the logic has not yet been selected. COlllbined Elelllents. Boolean polynomials may be assigned names consisting of single upper-case letters. The outputs of a half adder are named S~ and C~ (for sum and carry). See Sect. 3. The outputs of a half subtract or bear the same names. The outputs of a full adder are named Sand Cl for sum and carry. See Sect. 3. The outputs of a full subtract or are similarly named. 3. BINARY OPERATIONS Count The number N in an M-stage binary counter is given by M N = L 2 m- 1 Fm m=l where Fm is the name applied to the mth stage and has the value 1 when that flip-flop is in the l's state, and 0 when that flip-flop is in the O's state. DESIGN OF DIGITAL COMPUTERS 18-04 Dl D2 D3 D4 N ---- -- -- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (a) 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ,0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 -0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 =E>- and gate (b) =tV-or gate FIG. 2. Scale of 16 counter. (a) Truth table, (b) block diagram. An M stage counter that takes all succeeding values of N from 0 to 2m - 1 and then repeats is called a scale of 2M binary counter. As a truth table shows, the state of Frn at digit time n + 1 in terms of the flip-flop states at digit time n is Fm+l = [Fl· F2 ... F(m - 1)] Fm + [Fl· F2 ... F(m - 1)] Fm. ARITHMETIC AND CONTROL ELEMENTS 18-05 If delay flip-flops are substituted for these unspecified flip-flops, the input to the mth flip-flop is 1m = [DI . D2 ... D (m - 1)] Dm + [DI . D2 ... D (m - 1)] Dm as may be easily seen· since Dm+l = 1m. EXAMPLE. For a scale of 16 counter consisting of DI, D2, D3, D4, the inputs are II = DI 12 = DI D2 + DI D2 13 = [DI . D2]D3 + [DI . D2] D3 + DI D3 + mD3 14 = [DI' D2· D3]D4 + [DI' D2· D3] D4 = DI D2 D3 D4 + DI D4 + D2 D4 + D3 D4 = DI D2D3 These results can be verified by the truth table in Fig. 2. diagram of the logic appears in the same figure. A block Shift n The state of the mth stage, Fm, of a shifting register at digit time 1) at digit time n is given by + 1 in terms of the stage F(m Fm+l = F(m - 1). If the shifting register consists of set-reset flip-flops Qm, then 8m = Q(m - 1) Rm = Q(m - 1). It follows from eq. (3) that Qm+l + [Q(m - 1)] . [Q(m - 1)] = Q(m - 1) Qm + [Q(m or Qm+l = Q(m - I)[Qm = Q(m - 1). + [Q(m - 1)] Qm 1)] . [Q(m - 1)] + Qm] This shows that the set-reset flip-flops with the indicated inputs act as a shifting register. See Fig. 3a. The shifting register can be constructed with a single magnetic core per stage. In this case the core circuit has the same logical description as the delay flip-flop described in Sect. 2, but it lacks the complementary output. A typical logic equation is (see Fig. 3b, c), 1m = D(m - 1). DESIGN OF DIGITAL COMPUTERS 18-06 (a) ••• 8m 1 8 (m+l)t=== ••• Dmd~Dm (b) (e) I------l =1L8(~m-=-1.J-) ••• ~.I f :9~1 f ~ ... Clock --- (d) Out~~-< Delay line Out ~-+----< Delay line (e) - FIG. 3. Shift registers. (a) Set-reset flip-flops, (b) magnetic core, block diagram, (c) magnetic core, single core per stage, (d) and (e) variable length shift registers using delay lines. In serial computers a multibit delay line closed on itself through flip-flops may be used as a register with the bits available sequential1y. It may be necessary to left shift or right shift the contents of this register with respect to the contents of other similar registers. A left or right shift of one bit per circulation time may be accomplished by increasing or decreasing the register length one bit. Say the register consists of a delay line and three flip-flops, as in Fig. 3d. An additional flip-flop introduced, as in Fig. 3e, will delay the contents of the delay line one bit each circulation time. Conversely, removing a flip-flop, as in Fig. 3j, will advance the contents of the delay line one bit each circulation time. The delay line length may be varied under the influence of two control flip-flops, say DID and DI1. If both are in the D state, the register is to ARITHMETIC AND CONTROL ELEMENTS 18-07 (f) Out Delay line and (g) Out FIG. 3 (continued). Delay line Shift Registers. ~ (f) and (g) variable length shift registers using delay lines. circulate normally. If DIO is I the register is to be lengthened one bit. If DII is I the re6ister is to be shortened one bit. DIO and Dll are not allowed to be I simultaneously. For the variable length delay line, then 12 = DI 13 = D2 14 = DIO D3 + DIO DII D2 + DII Dl. Readin A new word may be read into a register either serially or in parallel. In serial readin the register may be a static register so that each new bit must be addressed to a flip-flop by external control circuitry, or the register may be a shift register so that all the bits are read successively into the same flip-flop of the register and are distributed by the normal shift operation. In parallel readin, all the bits of the new word are simultaneously placed DESIGN OF DIGITAL COMPUTERS 18·08 (a) B -A- - - SYz 0 0 0 1 1 0 1 1 0 1 0 1 A B CYz 0 0 0 1 (e) 8~ A C~ B A B (b) A 8~ A B ;=8 B C32 832 (f) A B ~=8 A Ii (c) C~ 8~ A B ~=8 C~ (g) A =0= H A B s. 2 C~ A B 8~ (d) A B FIG. 4. r-+--------------- C~ Half adder. (a) Truth table, (b), (c), (d), (e), (f) block diagrams, «(I) symbols. in the correct flip-flops. With set-reset flip-flops in this appJication it is sometimes economical first to set all flip-flops in the register to 0, and then ' supply l's inputs only to the flip-flops that are to be set to 1. Add Half Adder. A half adder is a device that produces two outputs, one of which is the sum modulo 2 of its two input signals, and the other is a "carry" that is 1 only if both input signals are l's. Figure 4a is a truth table for the half adder. ARITHMETIC AND CONTROL ELEMENTS Let A and B be the half adder inputs. The outputs, named (for sum and carry) are s~ = AB + AB, 18-09 S~ and C~ CY2 = AB. To illustrate some of the many embodiments of these equations, first assume that the complements A and Bare avai1ab1e. The above equations may then be translated directly into hardware, as in Fig. 4b. The sum equation may also be written as s~ = (A + B)(A + B) and mechanized as in Fig. 4c. If A and B are not available, it may be better to write the sum equation in another form that will save equipment. For example, s~ = (A = (A + B) (AB), + B)C~. This statement requires only one inverter as in Fig. 4d, or one inhibiting gate as in Fig. 4e. If circuit design does not permit multiple use of the output of an inverter or gate, then one way of mechanizing the half adder with only normal outputs is shown in Fig. 4/. A half adder may be indicated schematically as in Fig. 4g. Full Adder. A full adder has three inputs, two of which are an augend bit A, and an addend bit B. The third input is the carry C from the previous addition. The modulo 2 sum of the three adder inputs is called the sum S. There is a carry output C1 if at least two of the inputs are l's. Of the many ways to implement a full adder, hereafter called an adder, only three are illustrated here. The adder truth table is Fig. 5a. The logic equations are + ABC + ABC + ABC, ABC + ABC + ABC + ABC S = ABC C1 = = Adder 1. AB +BC+ CA. The sum equation may also be written = + AB)C + + AB)C (AB + AB)C + (AB + AB)C, S = (AB (AB and this shows that a full adder may be made with two half adders, as in Fig. 5b. In this figure, the box containing a C represents a delay flip-flop, such as might be used in a serial adder to store the carry for one digit time. Adder 2. An adder can also be produced by direct embodiment of the first equations for Sand ClI as in Fig. 5c. 18-10 DESIGN OF DIGITAL COMPUTERS -A- -B0 0 0 0 1 1 1 0 0 1 1 0 0 1 1 1 C S -- -- ~ 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1 r------------------,I I I L_-r--r --. C L L __ ...J I I I I I I - I I C (b) H A A B H Ct A or (a) A Ii c A B C ,13 A B C A (c) (e) B c B A =0= C- ~=En B F ,A S Cl Cl C C A Cl A ---l,,.....~-I- . . . . . -6--8 (d) B~'C--"\_...... IM!l -1.5 v FIG. 5. S Adder. (a) Truth table, (b), (c) block diagrams, Cd) Kirchhoff adder, Ce) symbols. ARITHMETIC AND CONTROL ELEMENTS 18-11 Adder 3. Still another form of adder, shown in Fig. 5d, is called a Kirchhoff adder, for it employs Kirchhoff's law. For this adder the logic equations are s = (A B C)Cl ABCCl, Cl + + + = AB + BC + CA. A, B, C are voltage sources of 1 volt if they represent l's, and 0 volts if they are O's. T1 and T2 are ideal triodes such that grids negative with respect to the cathodes result in zero plate curre~t, and grids positive with respect to the cathodes reduce the cathode-plate impedances to O. Then, for the circuit shown, T1 conducts if and only if the logical sum AB BC + CA is 1; i.e., the current in Tl represents Cl , and the plate voltage of T1 represents Cl . Cl , A, Band C can then be used in another current. adder to produce S at the grid of T2 and S at its plate. A full adder (FA) may be indicated schematically as in Fig. 5e. Parallel Adder. In the parallel adder all the addend and augend bits are available simultaneously. The parallel adder for two n-bit numbers is not necessarily n times faster than a serial adder, for the addition time of a parallel adder is determined by the time needed to propagate a carry from the least significant bit to the most significant bit, or the time required to set up all carries before actual addition. In parallel addition the sum may be placed in a sum register separate from the addend and augend registers, or the sum may replace the augend. In the latter case the register holding the sum is called an accumulator. EXAMPLE 1. Use of a sum register and carry propagation are illustrated in Fig. 6a. A typical stage is shown, where A and B are flip-flops in the addend and augend registers. S is the sum digit resulting at this stage from the addition of the augend bit, the addend bit, and the carry from the previous stage. Separate lines M and N are used to indicate carry (C) or no carry (C) between stages. Two lines are needed so that whether or not there is a carry, there is a signal to the next stage. Addition is initiated by a pulse in the no carry line of the least significant stage. Since there must be a carry or no carry from this stage, line M or N to the next stage will be energized. The process progresses from stage to stage until completion is indicated by a signal on the M or N line from the most significant stage. With AIl and N 1 for the lines out of a stage, the logic equations for that stage are + S = + + + + + + Bll! + AM (= ABC + BC + AC), ABM + BN + AN (= ABC + BC + XC). ll!l = ABN Nl = + ABM ABN ABN ABll1 (= ABC ABC ABC ABC), DESIGN OF DIGITAL COMPUTERS 18-12 Typical addend register flip-flop and M-------4--r-4---~--~--~ "Carry" signal from previous stage I----- M l "Carry" signal to next stage ~---s Sum bit to correspo:1ding sum register flip-flop N----------+---~~+---~~--~ "No carry" signal from previous stage 1------N1 "No carry" signal to next stage B Typical augend register flip-flop (a) and Typical addend register flip-flop c------------4--+--4--4-~ Typical accumulator register flip-flop N-""*----I ~----------------------------------s (b) FIG. 6. Parallel addition. (a) Using sum register and carry propagation, (b) using accumulator and half sums. ARITHMETIC AND CONTROL ELEMENTS 18-13 EXAMPLE 2. An accumulator and a different carry technique are illustrated in the next example. See Fig. 6b. Here the addend and augend bits are combined in one digit time to produce half sums in the accumulator, and in the next digit time the half sums are altered in accordance with the carries from each stage. For any stage S!1 = AB + AB, S = CS!1 C1 = AB + CS!1' + BC + CA. Since B is not available at the time the carries must be formed, having been replaced by S~, it is necessary to find an expression for C1 not involving B. By multiplying the equation for S!1 by A, it is seen that AS!1 = AB. S!1 = AB + AB AS!1 = From the same equation and AB. Further C1 may be written C1 + (AB)C + CA = AS!1 + AS!1C + CA = AS!1 + S!1C + CA. = AB With a trigger flip-flop to mechanize this, in the firet digit time U+1 = S!1 = JB + I?B = AB +AB so J = K = A. In the second digit time U+1 = S = JS!1 = CS!1 + I?SY2 + CSY2 so J = I( = C. With M and N to denote first and second digit times, it follows that J = I( = MA + NC and C 1 = A UN + UC + CA. 18-14 DESIGN OF DIGITAL COMPUTERS Subtract Half Subtractor. The half subtractor accepts a minuend bit and a subtrahend bit, and produces a half difference and a half borrow. Letting A, B, 872 and C72 represent these quantities in order, the logic equations of the half subtractor are 872 = + AB, AB C72 = AB. The corresponding truth table is Fig. 7. No examples of implementation are given because of similarity to the half adder. ~~ o 0 o1 01 1 FIG. 7. 8 72 0 1 1 I 1 C72 0 1 0 100 Half subtractor truth table. Serial Subtractor. The three inputs of a serial subtractor are a minuend bit A, a subtrahend bit B, and a borrow bit C. The outputs are a difference bit 8, and a borrow bit Cl. The lo.;ic equations are + ABC + ABC + ABC, AB + BC + CA. 8 = ABC C1 = The truth table appears in Fig. 8a. The difference equation is identical with the sum equation of the adder. The borrow equation is like the adder carry equation except that A replaces A. One embodiment of a subtract or is shown in Fig. 8b,litnd a conventional representation in Fig. 8e. Subtraction Using COIllpleIllents. The similarity of the logic equations for addition and subtraction suggests that subtraction can be accomplished by adding the 2's complement of the subtrahend to the minuend. This may be done with an adder by interchanging Band B whenever they occur in the logic equations for sum and carry, provided the carry flip-flop is initially 1. This is illustrated in subtracting 0.0110000 from 0.1001001. Normally this would be 0.1001001 -0.0110000 0.0011001 A -B 8 Replacing O's by l's and vice versa in B, and putting in an initial carry ARITHMETIC AND CONTROL ELEMENTS B 0 0 -A- - 0 0 0 0 1 1 1 1 1 1 0 0 1 1 S C -- -0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 18-1.5 C1 0 1 1 1 0 0 0 1 (a) A H B S t---------~ H 1--- S S or (b) FIG. 8. Serial subtractor. (a) Truth table, (b) block diagrl!tm, (c) symbol. it is found that 0.1001001 +0.1001111 + 1 1.0011001 A l's complement of B Initial carry setting If the overflow to the left of the binary point is ignored, the result is A minus B. A subtrahend larger than the minuend results in a negative difference. In this case the output of the subtract or is the 2's complement of the result. If the computer represents negative numbers as 2's complements, this is fine. If the machine stores numbers as magnitude and sign, the result, 2n - N, must be complemented. The magnitude may be found by subtracting the result from 2n since N = 2n - (2n - N), or by subtracting the result from 0 and discarding the overflow since N == 0- (2n - N) mod 2n, or by generating the l's complement and adding 1 in the least significant place. Parallel Subtractor. The techniques of logical design of a parallel subtractor are so like those for a parallel adder that no e~amples are given here. 18-16 DESIGN OF DIGITAL COMPUTERS Zero Representation. A machine that stores numbers as magnitude and sign may have two representations for zero, namely +0 and -0. In such a machine if it is desired to always store a 0 as +0, it may be necessary to provide special circuits to detect a 0 result. Add-Subtract Since the logical equations for addition and subtraction are so alike, it is frequently convenient to use the same equipment for both operations. Only one example is given here. Letting M be the signal to add, N the signal to subtract, and maintaining MN = 0, S = M(ABC + ABC + ABC + ABC) N(ABC + ABC + ABC + ABC) = ABC + ABC + ABC + ABC, + Cr = M(AB + BC + CA) = BC + MAB + MCA + N(AB + BC + CA) + NAB + NAB. Multiply Binary Multiplication. Binary multiplication is very easy since the multiplication table is just a two by two array, as shown in Fig. 9a. Figure 9b is an example of binary multiplication. In a digital computer it is usually more convenient to determine each partial product in succession, as in Fig. ge. If numbers in a computer are represented as magnitude and sign, multiplication is accomplished by multiplying the magnitudes and affixing a sign to the result determined from the signs of the multiplicand and multiplier. If negative numbers are represented by 2's complements, the product of signed numbers could be found by a subroutine that would determine the signs and magnitudes of the operands, perform the multiplication as indicated above, and then, if the result were negative, cast the result into 2's complement form. It seems preferable, however, to devise a scheme for multiplying such numbers without a special subroutine. Two techniques are presented here. Shaw Method. In the Shaw method, x and yare two signed numbers of magnitude less than 1. X and Yare their binary representations, being equal to the numbers when those are positive, and being their 2's complements when the numbers are negative. If a bit of Y is 1, X (less its portion to the left of the binary point) is added to the partial product. If a ARITHMETIC AND CONTROL ELEMENTS 18-17 bit of Y is 0, the bit of X to the left of the binary point is added to the partial product. This process ends just before the bit of Y to the left of Multiplicand Digit 101 Multiplier 1 0 0 - 0 1 -1 101 Digit (a) 0.11101 0.11110 00000 11101 11101 11101 11101 0.1101100110 Multiplicand Multiplier Product Multiplier Digit o 1 1 1 1 (b) Multiplicand Multiplier Product 0.11101 0.11110 00000 00000 00000 11101 111010 11101 10101110 11101 110010110 11101 0.1101100110 Partial Product V V V V V Multiplier Digit 0 1 1 1 1 (c) FIG. 9. Binary multiplication. (a) Multiplication table, (b) example of manual operation, (c) example of machine operation. the binary point is examined. N ext, if x is negative 1 + 2- n is added to the partial product. Finally, if y is negative, the 2's complement of X is added to the partial product. DESIGN OF DIGITAL COMPUTERS 18-18 EXAMPLES. 0.1001 0.1011 01001 01001 00000 01001 001100011 00000 001100011 00000 0.01100011 0.1001 1.0101 01001 00000 01001 00000 000101101 00000 000101101 10111 1.10011101 M uliiplication. x = rt y=H 1.0111 0.1011 00111 00111 10000 00111 010001101 10001 110011101 00000 1.10011101 sign x correction sign y correction x = 16" y= -H- sign x correction sign y correction 1.0111 1.0101 00111 10000 00111 10000 011000011 10001 111010011 01001 /,(1)0.01100011 x= -/6" y = n sign x correction sign y correction x= y= 9 -T6" - ~~ sign x correction sign y correction overflow Booth Method. In the Booth method, Y m is the mth most significant bit of an n bit multiplier representation. Y n+l is zero. Starting with m = n, Y m and Y m+l are compared: 1. If Y m = Y m+l add o. 2. If Y m = 1, Y m+l = 0 add the 2's complement of X to the partial product. 3. If Y m = 0, Y m+l = 1 add X to the partial product. EXAMPLE. 1.0111 0.1011(0) 000001001 00000000 1110111 001001 10111 (1)1.10011101 -~-- overflow /' x =-A y = t~ Y4 = 1 Y5 = 0 Y3 = 1 Y4 = 1 Y 2 = 0 Y3 = 1 Yl = 1 Y2 = 0 Yo = 0 Y 1 = 1 18-19 ARITHMETIC AND CONTROL ELEMENTS Serial MultipHcation. Machine processes in multiplication are most easily explained in terms of positive numbers. In serial multiplication the digits of the multiplicand and multiplier are each assumed available in succession from shifting registers or delay lines. Another register or delay line, here called the accumulator, holds the partial products. See Fig. 10. In this example, the multiplicand and intermediate sums are assumed to be in delay lines and the multiplier in a shifting register. The Multiplier register and Multiplicand delay line F A Accumulator delay line FIG. 10. Serial multiplication. multiplicand delay line is one bit longer than the accumulator delay line. As a result, the multiplicand precesses, i.e., is shifted left, one digit with respect to the partial product each time the accumulator register circulates. This permits successive powers of two times the multiplicand to be added to the partial product in successive circulations. The multiplier register shifts right just once at the end of each circulation time to bring a new multiplier bit into position. According as the multiplier digit in the last flip-flop of the multiplier register is one or zero the multiplicand is added or not added to the partial product. Serial-parallel multiplication is multiplication using a parallel adder or parallel accumulator for adding. Parallel Multiplication. Multiplication of two binary numbers can be achieved in a single digit time by parallel multiplication, in which each bit of the product is expressed directly in terms of all the bits of the multi~ 18-20 DESIGN OF DIGITAL COMPUTERS plier and the multiplicand. It can be seen that the logical expressions for the product bits rapidly become complicated as the number of bits of the operands are increased. The amount of hardware necessary to generate the product bits makes parallel multiplication impractical for operands more than four digits long. To illustrate this point, the expression for a single bit of the product resulting from the multiplication of two three-bit numbers is indicated below. The multiplicand is a2alaO (= 22a2 + 2 1al + 2°ao) and the multiplier is b2blbo. The product is C5C4C3C2CICO. The logic equation for C3 is C3 = lioall!2b2 + alli2b b2 + aoala2bob2 + lioa b b2 + a2bob b2 + lila2b b2 + liOa2boblb2 + lila2bobl + aoalli2bob b2 + aolila2bob b2. 1 1 1 1 1 1 1 Precision. In the explanations of multiplication given above, all the bits of the product have been retained, so that the product may have as many bits as the multiplicand and multiplier together. In designing a digital computer it is often desirable to allow no more digits in the product than in the largest possible multiplicand or multiplier. In this case, instead of shifting the multiplicand left one place for each successive partial product, the partial products are shifted right one place for each successive partial product. This results in the loss of the least significant digits of the product. To illustrate this point the example of Fig. 9c is repeated below. Multiplicand 0.11101 Multiplier 0.11110 o X multiplicand 00000 Partial product A 00000 Right shift 00000 1 X multiplicand 11101 Partial product B 11101 Right shift 01110 11101 1 X multiplicand Partial product C 101011 Right shift 10101 1 X multiplicand 11101 Partial product D 110010 Right shift 11001 1 X multiplicand 11101 110110 Partial product E Right shift 0.11011 Product Roundoff Correction. Now the product obtained by this means is less than the actual product by 0.0000000110. In another example it might have been smaller than the full product by almost 0.00001. The ARITHMETIC AND CONTROL ELEMENTS 1B-21 difference between the product obtained by this means and the full product is called the truncation error. The truncation error is always in the same direction. To eliminate this bias it is the usual practice to add a correction term to the product. The two most common roundoff corrections are (1) always replace the last digit retained in the product by 1, and (2) add a 1 to the digit place beyond the last to be retained, allow all carries to occur, and then drop all digits beyond the last to be retained. In the second roundoff procedure it may be more convenient to add the rounding 1 to the product register before the multiplicand can first be added in. Both of these methods result in essentially unbiased products, but the second results in a smaller variance. ' Divide In a binary digital computer division may be done in at least four ways. They are described as though divisor and dividend are both positive. Iteration. If alb is to be found, lib can be determined by an iteration scheme involving only addition, subtraction and multiplication, and then alb found by multiplying by lib. One iteration formula for lib is U n+l where = u n(2 - unb) approaches lib as n approaches co. In this the divisor is subtracted from the remainder; if the result is positive, a 1 is placed in the quotient; if the result is negative, a 0 is placed in the quotient and the remainder is restored to its previous value by adding the divisor to it. Trial Division. Special circuitry is provided to determine if the divisor exceeds the remainder without actually performing a subtraction. If the divisor is greater, no subtraction is performed and a 0 is placed in the quotient. If th~ divisor is not greater than the remainder, the divisor is subtracted from the remainder and a 1 is placed in the quotient. Nonrestoring Division. In this method the divisor is always subtracted from the remainder if the remainder is positive, or added to the remainder if it is negative. If the new remainder is positive, a 1 is placed in the quotient. If the new remainder is negative, a 0 is placed in the quotient. Division may be performed serially or serial-parallel, depending on the equipment available. The same roundoff procedures may be used for the quotient as for the product, although to use the second method one more quotient digit must be found. Fixed Point Division. If the dividend exceeds the divisor in a fixed point machine the methods given above may result in very erroneous quotients. It is common in fixed point machines to provide special circuitry to detect this situation. It is also possible to mechanize the division Un Restoring Division. 1.8-22 DESIGN OF DIGITAL COMPUTERS process so that the largest number the quotient register can hold will result if the true quotient is beyond the range of that register. Magnitude and Sign. If numbers are stored in the computer as magnitude and sign, the magnitude of the quotient is determined from the magnitudes of the divisor and dividend, and the sign of the quotient determined from their signs. . COlnpleInents. If negative numbers appear in the computer as 2's complements, the quotient could be found through a subroutine involving determination of the magnitudes of the divisor and dividend. However, it is more convenient, for numbers of this kind, to have a division process that does not depend upon the signs of the dividend and divisor. One such scheme is described below. EXAMPLE. Compare the sign of the remainder (the dividend is considered the zeroth remainder) with the sign of the divisor. Shift the remainder left one place; this results in loss of the sign digit of the remainder, but this does no harm. If the divisor and remainder had like signs, perform a subtraction. If the signs were unlike, perform an addition. Each time an addition is performed the quotient digit is made 1, each time a subtraction is done the quotient digit is made o. The quotient determined by this scheme is not correct. To it a 1 in the sign position and a rounding 1 in the final position must be added. This process is illustrated below. 1.1001 a(=ro) --i6 0.1101 b 1.0010 0.1101 1.1111 1.1110 0.1101 0.1011 1.0110 0.1101 0.1001 1.0010 0.1101 0.0101 2ro i~ +y rl 2rl +y r2 2r2 -y r3 2r3 -y r4 O. 1. 1. 0 0 0 1 0 1 1 0 1 0 1 1 + (correction) 1 2-4 alb = -/6 Square Root Of the many ways to find the square root of a number only three are described here. These are by (1) iteration, (2) subtraction of successive odd numbers, and (3) square root process. ARITHMETIC AND CONTROL ELEMENTS Iteration. Va 18-23 can be found from the iteration formula Xn+1 = t (Xn + :J. where Xn is the nth approximation of Va. Subtraction of Successive Odd Numbers. There is a theorem in the theory of numbers that the sum of the first n odd numbers is n 2 • Letting a be n 2 , it can be seen that Va can be found by determining how many times successive odd integers can be subtracted from a. Square Root Process. Square root can be found by a process akin to that learned in high school. Here it is modified so that restoring is not necessary. Let the positive number whose root is desired be called the zeroth remainder, roo The first divisor, PI, is 0.01. If a remainder rk is positive, the divisor Pk+1 is subtracted from it. If a remainder rk is negative, Pk+1 is added to it. If rk+1 is positive, the triplet 1 . 2-(k+1), 0 . 2-(k+2), 1 . 2-(k+3) is injected into Pk+1 in place of the digits in the corresponding positions to obtain Pk+2. If rk+1 is negative, instead, the triplet 0 . 2-(k+1), 1 . 2-(k+2), 1 . 2-(k+3) is injected. Pk differs from V~ by less than 3· 2-(k+2). An example is given below. EXAMPLE. PI 0.01 P2 O. 101 P3 0.1101 P4 0.11011 P5 0.110011 P6 0.1100011 P7 0.11000 101 0.100101100001 .01 0.0101 10l 0.000001 1101 1.11010010 11011 1.1110110100 110011 1.111110011101 1100011 0.000000000000 a( =ro) rl r2 r3 r4 r5 r6 Number System Conversion A binary digital computer may have decimal inputs and outputs or Gray code inputs and outputs. The binary digital computer has to perform the conversions from code to code. Decimal to Binary. _A binary machine can convert a binary coded decimal integer to a binary number as follows. Treating each binary coded decimal digit as a four-bit binary number, first multiply the most significant digit by ten (= 1010). To this product add the next decimal 18-24 DESIGN OF DIGITAL COMPUTERS digit and again multiply by ten. Continue adding decimal digits and multiplying by 10, until the last decimal digit is added in. Binary to Decimal. To convert a binary integer to a binary coded decimal number it is necessary to divide successively by ten (= 1010), the remainders being the binary coded decimal digits in order-the units digit, the tens digit, etc. EXAMPLE. Convert the binary number 11011010110 to a decimal number. 10101111 1010 I 11011010110 1010 1110 1010 10010 1010 10001 1010 1111 1010 1010 1010 o 1010 1010 =0 10001 10101111 1010 0001111 1010 0101 =5 01 10001 1010 0111 =7 o 1010 I 01 0000 0001 = 1 = 1750 Gray Code to Binary. The binary equivalent of a Gray code number can be obtained by a rule. The most significant binary digit is the same ARITHMETIC AND CONTROL ELEMENTS 18-25 as the corresponding Gray code digit. Thereafter, the binary digit changes if the Gray code digit is a 1 and remains the same if the Gray code digit is a O. EXAMPLE. Convert the Gray code 110100110 to a binary number. Gray Code 1 1 0 1 0 0 1 1 0 Same Change No change Change No change No change Change Change No change Binary 1 0 ~ 0 1 1 1 ~ 0 ~ 1 ~ 1 ~ ~ ~ ~ ~ Hence the binary number is 100111011. Binary to Gray Code. This conversion can be accomplished as follows: The most significant Gray code digit is the same as the corresponding binary digit. Thereafter the Gray code digit is 1 if the binary digit changes and 0 if it does not. EXAMPLE. Convert the binary number 0110100 to Gray code. Binary o 1 1 o 1 o o Same Change No change Change Change Change No change Gray 0 ~ 1 ~ 0 ~ 1 ~ 1 ~ 1 ~ 0 Gray code = 0101110. ~ 4. DECIMAL OPERATIONS Decimal Codes There are very many possible decimal codes. Choice of a particular code will generally depend on system considerations. There are weighted decimal codes in which each position has a numerical value associated with it. One such code would use 10 binary digits for the representation of a decimal digit, only one of the binary digits being permitted to be a 1. A more common code, known as "binary coded decimal" uses four binary digits for each decimal digit and assigns these binary digits the weights 23 , 22 , 2 1, and 2°. Two other common weighted decimal codes assign the values 1, 2, 4, 7 or 1, 2, 2, 4 to the binary digits. 18-26 DESIGN OF DIGITAL COMPUTERS In addition to the weighted codes there are others with special advantages. One such code is the "excess 3" code, which can be obtained by adding 3 to the binary coded decimal representations of the decimal digits. One of the advantages of this code is that 10's complements can be obtained by substituting O's for l's and l's for O's. Another code is the 2 out of 5 code, in which the representation of each decimal digit has exactly two l's. An advantage of this code is that errors resulting in a different number of l's are easily detected. Count The way in which counting is done depends upon the code in use. In a: lout of ten code, counting can be done simply by shifting. Here a supplementary circuit must be supplied to shift the next higher decade by 1 when all the lower decades are changing from 9 to O. EXAMPLE. Representation of counting in lout of 10 code. One Out of Ten Code. N Units 0123456789 Tens 0123456789 Hundreds 0123456789 795 796 797 798 799 800 0000010000 0000001000 0000000100 0000000010 0000000001 1000000000 0000000001 0000000001 0000000001 0000000001 0000000001 1000000000 0000000100 0000000100 0000000100 0000000100 0000000100 0000000010 Binary Coded Dechnal. In other codes counting may be more complicated. For example, in binary coded decimal each counter stage may be designed as a scale of 16 counter modified so that it will count only from o to 9 and then reset to zero. EXAMPLE. To illustrate this, the scale of 16 counter of Sect. 3 is modified: N D1 D2 D3 D4 o 0 0 0 0 II = D1 1 1 0 0 0 2 0 1 0 0 12 = D1 D2D4 D1D2 3 1 1 0 0 4 0 1 0 0 13 = D1 D2 D3 D1 D3 D2 D3 5 1 1 0 0 6 0 1 1 0 14 = D1 D2D'J. D1D4 7 1 1 1 0 8 0 1 0 0 9 1 1 0 0 + + + + ARITHMETIC AND CONTROL ELEMENTS 18-27 Shift In a binary computer a shift of one bit position corresponds to multiplication by the radix 2. In the decimal computer, multiplication by the radix (10) requires that the contents of the four or more binary digit positions used to represent a decimal digit be shifted to the corresponding position for the next higher order digit. A like rule covers division by the radix. Add Decimal addition, too, depends upon the code employed. Addition may be done by counting. In this scheme as the digits of one operand are counted down to zero the corresponding digits of the other operand are increased. Special provision must be made for carries between orders of digits. Design of the computer may be such that if two decimal digits are to be added the digits of their binary representations are available serially. It may be possible to take advantage of this. For example, if the "excess 3" code is used, four bit digits from each of the operands may be added together as though they were binary digits, and then a simple correction may be performed to obtain the right answer; if there is no carry to the fifth digit, the correction consists of subtracting 3 from the sum; if there is a carry to the fifth place, the correction consists of adding 3 to sum. The addition or subtraction of 3 is accomplished by special circuitry. The above-mentioned carry is also a true carry to the next decimal digit. If the four or more bits of a decimal digit must be added in parallel, the same techniques for designing a parallel binary adder may be employed to construct an adder capable of summing two decimal digits at a time. Subtract Decimal subtraction can be performed by true subtraction or by adding the complement of the subtrahend. In the latter case either 9 or 10's complement may be used. If a 9's complement is used, an "end-around carry" is needed to correct the difference; i.e., any overflow from the most significant digit must be added in again at the least significant position. The discussion of codes and methods of decimal addition apply to decimal subtraction as well. Multiply There are many ways to perform decimal multiplication. listed here. Some are DESIGN OF DIGITAL COMPUTERS 18-28 Russian Peasant Method. In the Russian Peasant method the multiplicand is written at the top of one column, and at the top of a second column the multiplier is written. The multiplicand is repeatedly doubled and the multiplier repeatedly halved, and the successive results are written in columns one and two. In column three the remainders are written, and in column four are written those entries in column 1 preceding remainders of 1. The sum of column four is the desired product. EXAMPLE. 57 X 114 228 456 912 1824 38 19 9 0 1 2 1 1 0 0 0 1 4 114 228 1824 2166 Product Adding and Shifting Method. Decimal multiplication can also be performed by adding the multiplicand into the accumulator as many times as indicated by the least si~nificant digit of the multiplier, then shifting the multiplicand one decimal place to the left and adding the multiplicand into the accumulator as many times as indicated by the second multiplier digit, and so on until the multiplier is exhausted. EXAMPLE. ..:'~~ 5792 X352 -5792 5792 5792 5792 5792 5792 5792 5792 5792 5792 2038784 Stored Multiples. Another way of performing decimal multiplication is first to generate and store 1, 2, 3" ", 8, 9 times the multiplicand. Then the multiplier digits are used to s elect from these multiples the partial products to be accumulated. ARITHMETIC AND CONTROL ELEMENTS 18-29 EXAMPLE. 1 2 3 4 5 6 7 8 9 X X X X X X X X X 5792 5792 5792 5792 5792 5792 5792 5792 5792 = = = = = = = = = Multiplicand 5792 11584 17376 23168 28960 34752 40544 46336 52128 5792 3 5 2 5792 X352 17376 28960 11584 2038784 Multiplication Table. In another method of performing decimal multiplication, the multiples of the multiplicand may be generated as needed, digit by digit, by building a decimal multiplication table into the computer. The multiplication table must produce a units digit and a tens digit for the product of two decimal digits. The multiplication table may be constructed in terms of the decimal code used throughout the machine. It may also be constructed in a more convenient code with provision for translating the operands to this code and the results back to the normal machine code. Roundoff. If a machine is equipped for decimal multiplication and the results are to be rounded, the usual rounding technique is to add 5 in the place just beyond the Jast place to be retained, permit al1 carries to propagate, and then drop all places to be discarded. Divide Restoring Division. In a decimal machine division is usually performed by successive subtractions of the divisor until the remainder goes negative. If restoring division is being used, the divisor is added in once to give a positive remainder. The quotient digit is the number of subtractions performed less one. The remainder is then left shifted one decimal place and the subtraction process continued to obtain the next quotient digit. Nonrestoring Division. If, on the other hand, nonrestoring division is being used, the divisor is not added back in when the remainder goes negative. Instead, the remainder is left shifted one decimal place and the divisor added in repeatedly until the remainder becomes positive. Again the remainder is left shifted one decimal place and subtraction begun, and so forth. If, in any decimal position nine additions or subtractions do not affect the sign of the remainder, the remainder is left shifted one decimal place and the additions or subtractions continued unchanged. DESIGN OF DIGITAL COMPUTERS 18-30 The number of subtractions or additions at each decimal place is recorded and forms a pseudo-quotient from which the quotient may be obtained. Subtractions result in a positive pseudo-quotient digit, and additions a negative pseudo-quotient digit. The true quotient is obtained from the pseudo quotient by adding and subtracting the quotient digits, starting at the least significant end. EXAMPLE. Division methods. Restoring 147 N onrestoring I 3675441 -441 - 9926 +147 00735 882 99853 +147 000004 -147 999857 +147 0000044 -147 9999897 +147 00000441 -588 99999853 +147 00000000 Quotient 147 3 - 1= 2 6 - 1= 5 1- 1= 0 I 3675441 -441 99265 +735 000004 -147 9998574 +1323 99998971 +1029 00000000 3 1 1- 1= 0 Pseudo-quotient 4 - 1= 3 3 +3 5 o -5 1 0 9 '7 0 0 0 0 0 +1 0 0 -9 0 -7 25003 Quotient 2 5 003 Square Root Restoring decimal square root is related to the manual square root process in the same way as restoring division (above) is related to the manual proc ess of division. 5. SPECIAL OPERATIONS A number of other operations may be performed with the arithmetic element of a digital computer. In some cases these operations could be ARITHMETIC AND CONTROL ELEMENTS 18-31 performed by means of a sequence of operations like addition, subtraction, division, and square root. In many instances, however, it costs very little equipment to mechanize these operations so that they are carried out by a single command. In many other instances the cost of these special operations is high but the convenience of having the special operation has outweighed cost. Some of these special operations are described here. Extract. A variety of extract operations permit the programmer to pull out of any word only those digits which he wishes to retain. In one extract command, one operand, known as the extractor, indicates which digits are to be retained in the second operand. Let An be one digit of the extractor, Bn the corresponding digit of the second operand, and Dn the corresponding digit of the result. Then Dn = An . Bn. EXAMPLE. 000111100 101101011 000101000 A B D Logical Transfer. In another variety of extract command, known as a "logical transfer," there are three operands: A and B defined above, and a third operand C. Each digit Dn of the result can be expressed as Dn = An' En + Cn. (Here + indicates logical sum.) EXAMPLE. 000111100 101101000 110001001 A B C 110101001 D Comparison. Comparison commands are used for making decisions. A comparison command can be phrased in the form of a question that can be answered yes or no; for example, "Is a ~ b?" If the answer is yes, the computer follows one routine. Otherwise the computer pursues an alternate routine. Some typical comparison commands are: a~ b ? Is a > b ? Is a b ? Is lal ~ Ibl ? Is The above comparisons can be determined by performing an arithmetic operation. They can also be accomplished without an arithmetic operation if special circuitry is provided. 18-32 DESIGN OF DIGITAL COMPUTERS A compare command can also include an extract command, as, for example, "Is the logical product of the digits of the result of an extraction I?" Checking. One means for checking arithmetic, the 2 out of 5 code, was mentioned in Sect. 4. Another scheme, adaptable to machines of any radix, is modulus checking. It is familiar to most everyone in the decimal system as "casting out 9's." More formally, this is a modulo 9 check. Let a, b, and c be the sums modulo 9 of the digits of the decimal numbers A, B, and C, and let 0 indicate addition, subtraction, or multiplication. Then if A 0 B = C, it follows that a 0 b = c (mod 9). In binary computers another modulo check is useful. Let A, B, and C be binary numbers, and a, b, and c the sums of the bits taken with alternating signs. Then for three binary numbers where A 0 B = C, it follows that a 0 b = c (mod 2). Fixed Point Operation. Thus far in this chapter attention has been restricted to fixed point digital computers in which a number has a fixed number of digits and a fixed decimal or binary point. Such machines have a comparatively limited range of numbers, and consequently the programmer is burdened with the need to watch scale factors closely or all significance in the result may be lost. Consider, for example, a digital computer having words consisting of up to 31 binary digits and a sign. The computer could then hold 0 or any positive or negative integer up to 231 - 1. If six more binary digits are added to each word, the computer can hold o or any positive or negative integer up to 237 - 1. If, instead, these six extra digits are used to indicate the sign and five binary digits of the power of two by which the original 31-bit number should be multiplied, the computer ean specify 0 and any positive or negative number with magnitude between 1 and 262 - 231 to 31 significant bits. Floating Point Operation. A machine in which numbers are indicated by a number times a variable power of the radix is known as a floating point machine. In a floating point machine multiplication is accomplished by taking the product of the numbers and the sum of the exponents. Division is less trouble than in a fixed point machine because the relative magnitudes of the numbers are less important. Addition and subtraction, however, are difficult, for the number with the smaller exponent must be altered to have the same exponent as the other. If the number part of the result does not lie in bounds, it must be shifted and the exponent altered. ARITHMETIC AND CONTROL ELEMENTS EXAMPLE 1. Floating point addition. 20,370,000. 20,370,000. +00,005,925. 20,375,925. EXAMPLE 2. 1.8-33 X X X X 10-9 + 59,250,000. X 10-:- 13 10-9 10-9 10-9 Floating point addition. 20,370,000 20,370,000 89,000,000 109,370,000 X X X X 10-9 + 89,000,000 X 10-9 10-9 10-9 10-9 = 10,937,000 X 10-8 6. CONTROL ELEMENTS The design of a computer control unit is best illustrated by the actual design of such a unit. This design would indicate the many tricks that are available to the designer and the many choices he must make. This section will be restricted to a general discussion of the functions of a control unit, and the design of a "toy" computer. Function of a Control Unit. The function of the control unit is the interpretation of commands. When a command is received in the control unit, that unit must provide or gate the signals that will cause the computer to perform that command. The actions of the control unit may be divided into gating, timing, and counting. 1. First, the control unit must open those gates that will cause the command to be carried out. In the adder-subtract or of Sect. 3, for example, the signals ]1 and N would be outputs of the control unit. M, being the signal to add, would cause the carry to be formed in the manner necessary for addition. N, the signal for subtraction, would cause the carry to be formed as needed for subtraction. This example is typical of computer design. 2. The second function of the control unit, timing, has not been mentioned at all in earlier sections in order to simplify the explanations there. Actually the gating signals from the control unit must be functions of time. Consider a machine with multiple address commands. A single command might· well be "Multiply the number in storage location a by that in storage location b. Put the result in storage location c and pick up the next command from storage location n." In sequence, the computer must transfer the contents of a to the arithmetic unit, transfer the contents of b to the arithmetic unit, form the product, round it, transfer the 18-34 DESIGN OF DIGITAL COMPUTERS result to c, and pick up a new command from n. Each of these operations may take a fixed length of time, in which case the control unit can use a digit counter to determine when the operation is completed. On the other hand, the time required for an operation may be a function of the operands, as in an asynchronous computer, and in this case the arithmetic unit may signal to the control unit the completion of the operation. 3. The third function of the control unit is counting. A command may say, for example, "Shift the contents of the A register left five places," or in a relative address machine a command may state, "Wait 11 words before picking up the next command." In these instances and others, the control unit must count the number of times an operation occurs to find when that operation is completed. External Control. Control of the digital computer may be external to the computer, as in a punched card sorter, a desk calculator or an abacus, where the human operator may enter every operand and determine every command. A less elementary form of control is wired control, which has appeared on a number of punched card machines and a few electronic calculators. A machine with wired control has a plugboard that can be wired to make the machine perform sequences of orders. A more sophisticated form of control is internal control, in which the computer performs long sequences of orders stored in its memory unit or stored on external media under the control of the computer. ProgranInled Control. Programmed control comprises all forms of control in which the computer performs long sequences of varying commands without intervention from a human operator; that is, a machine for which the sequence of commands has been predetermined by the designer or by a programmer is said to have programmed control. In such a machine, once the start button is pressed, the control unit will cause the computer to perform commands according to the instructions within the machine or accessible to the machine. The sequence of commands, called a program, may be very simple as would be required to obtain the sum Laib i ; or it might be very complicated, as would be the case in solving sets of partial differential equations with mixed boundary conditions. Digital computers have no intelligence; they can only perform operations that are spelled out in detail in terms of the limited variety of commands that the computer has. This means that finding the solutions of an equation like x = tan x, which is fairly simple for a desk calculator operator to do if supplied with tangent tables, may involve a long sequence of commands in a computer having addition, subtraction, multiplication, and comparison as its arithmetic functions. See Chap. 2, Programming and Coding. I ARITHMETIC AND CONTROL ELEMENTS 18-35 Design of a Control Unit The functions of a control unit will become clearer in the following example. Design of a very simple computer will be used just to indicate the techniques used in designing a control unit, and to illustrate the functions of a control unit: Description of a Hypothetical Computer. Numbers in this fixed point serial binary computer are less than one in magnitude, and negative numbers are represented by 2's complements. Numbers are transferred least significant digit first; the sign, which is represented by the one digit to the left of the binary point, comes last. The computer memory consists of a flip-flop shifting register A, and a magnetic drum. The drum has four bands for commands and four bands for numbers. The commands the computer can perform are: 1. Tab Transfer contents of address a to address b. 2. Aab Add contents of address a to contents of A, place result in address b, and replace contents of A by contents of address a. 3. Buv If the contents of A are> 0, pick up the next command in the present command band; otherwise pick up the next command in command band u, waiting v word times (v = 1, 2, 3). S Stop. Carry out no more orders. 4. Since there are only four different commands, the states of two flip-flops considered together suffice to specify the type of command. These two flip-flops in the control unit will be called Xl and X2. Since there are only four sources of numbers that must be specified as a addresses, two flip-flops, X3 and X4, serve this function. Similarly X5 and X6 indicate the b address. Addresses u and v, also, each require two flip-flops, but X3 through X6 shall be time shared for this purpose. Two additional flip-flops, X7 and X8, however, are required to control from which band the current command is read. Furthermore, since all commands are effected in one word time (other than S), another register, PI through P6, is provided to hold the succeeding command for parallel transfer into the command register Xl through X6. In addition, a relative address scheme will be used for orders, the next order in sequence in the current command channel always being the next picked up, except in Buv orders, where a following command may be chosen from a selected channel. Each number will consist of 5 bits and a sign, so that numbers and 18-36 DESIGN OF DIGITAL COMPUTERS commands have the same number of digits. This is convenient but not really required. The A register, then, consists of A 1 through A 6. A flip-flop Cl is needed to hold carries in addition. The reading amplifiers for the command channels are named Rl through R4, the reading Command storage Number storage FIG. 11. Outline block diagram of computer. amplifiers for the number channels R5 through R8, and the writing amplifiers for the number channels WI through W 4. The read and write heads are separate. A partial block diagram of this computer may now be drawn. See Fig. 11. All flip-flops are set-reset flip-flops. (See Sect. 1.) Logical Equations. N ext, the logical equations for this computer can be written. To do this symbols must be introduced for digit times. Each word will consist of six information bits and a space bit. The digit time during which the least significant bit of a number is available at the output of a reading amplifier is called digit time one and is represented by Tl. The succeeding digit times are T2, T3, T4, T5, T6, and T7. ARITHMETIC AND CONTROL ELEMENTS 18-37 The A register shifts at all digit times other than T7, so it follows from Sect. 3 that S(A2) = Al 'P7, S(A4) = A3 ~C7, = Al 'P7; R(A4) = A3 'P7; S(A3) = A2 T7, S(A5) A4 T7, = R(A5) = = R(A2) R(A3) A2 1'7; S(AG) R(AG) = = A4 T7; A5 T7, A5 T7. Inputs to AI. The inputs to Al depend upon the command being performed. four different kinds of commands are indicated thus Tab Xl X2 Aab Xl X2 Buv. Xl X2 S XIX2 The The input to A I may now be written, for in the command Add the contents of register A are to be the contents of address a SeAl) = Xl X2 [X3X4R5 R(AI) = XIX2[X3X4R5 + X3 X4RG + X3 X4R7 + X3 X4R8] + X3X4RG + X3X4R7 + X3X4R8] T7, T7, whereas in all other commands the contents of A are to be unchanged SeAl) = (Xl X2) AG T7, R(AI) = (Xl X2) AG T7. The quantity in the brackets in the first equation for S (A I) will be used in a number of places. In order to save gating equipment an amplifier named YI is introduced. The input to this amplifier is called L(YI), and it has the outputs YI and Then n. L(YI) = X3X4R5 + X3X4RG + X3X4R7 + X3X4R8. The equations for flip-flop Al now become + Xl AG T7 + X2AG T7, = Xl X2 YI T7 + Xl AG 'P7 + X2 AG T7. SeAl) = Xl X2 YI T7 R(AI) The sum in an Add order is used as the input to an amplifier Y2. It is L(Y2) = AG YI CI + AG YI Cl + Au Yl Cl + AG YI Cl. 18-38 DESIGN OF DIGITAL COMPUTERS Write AJDplifiers. The storage drum write amplifiers have two inputs. The input named M causes l's to be written. The input named N causes O's to be written. If there is no input, nothing is written. In a Transfer order the quantity to be written is YI. In an Add order it is Y2. Xl is required to write l's or O's. X2 indicates Yl is to be written. X2 indicates Y2 is to be written. X5 and X6 specify the particular write amplifier. The inputs to the write amplifiers are then + Xl X2 Y2X5X6, = XlX2 YlX5X6 + Xl X2 Y2X5X6; = XlX2 Yl X5X6 + Xl X2 Y2X5X6, = XlX2 YlX5X6 + Xl X2 Y2 X5X6; = XlX2 Yl X5X6 + Xl X2 Y2X5X6, = Xl X2 Yl X5 X6 + Xl X2 Y2 X5 X6; = XlX2 Yl X5X6 + Xl X2 Y2X5 X6, = Xl X2 Yl X5 X6 + Xl X2 Y2 X5 X6. M(Wl) = XIX2 Yl X5X6 N(Wl) M(W2) N(W2) M(W3) N(W3) M(W4) N(W4) Flip-flop Cl is used only for storing carries in the command Add. Its inputs in that command are S(Cl) = Yl A6, R(Cl) = Yl A6. In an Add command, the carry must be initially zero, and this is accomplished by always using T7 to set Cl to zero. Then S(Cl) = Yl A6 T7, R(Cl) = Yl A6 + T7. Observe that it has not been necessary to restrict inputs to Cl to just the command Aab because the output of Cl affects the action of the computer only in the command Aab. COJDJDand Register. The flip-flops Xl through X6 of the command register receive new commands in parallel from the preparatory register at T7 unless the command in the command register is S or a branch command that causes a command channel change with wait time not yet exhausted. A stop order is Xl X2, a branch command causing a channel change and with wait time not yet exhausted is indicated by T7 Al Xl X2[X5 + X6]. Letting L (Y3) be the signal to permit a transfer from the preparatory register to the command register, it follows L(Y3) = (Xl X2)(T7 Al Xl X2[X5 + X6])T7 = Xl T7 X2Al T7 X2 X5X6 T7. + + ARITHMETIC AND CONTROL ELEMENTS 18-39 If there is a branch command with wait time not yet exhausted X5, X6 must count down. vVhat happens to X5 and X6 during S is not important, so Y3 can be used as the signal for X5, X6 to count down. XIS = Y3PI, XIR = Y3PI; X3S = Y3 P3, X3R = Y3 P3; = Y3P5, X5R = Y3P5 + Y3 X6 T7; = Y3P2, X2R = Y3P2; = Y3P4, X4R = Y3P4; = Y3 P6 X6R = Y3 P6 X2S X4S X5S X6S + Y3X6 T7, + Y3 X6 T7. The preparatory register, PI through P6, is a shifting register with P2 through P6 having as inputs the outputs of the next lower numbered flipflops. The input to PI is the order read head selected by X7 and X8. = X7 X8RI R(PI) = X7 X8RI S(PI) + X7 X8R2 + X7 X8R3 + X7 X8R4, + X7 X8R2 + X7 X8R3 + X7 X8R4; S(P2) = PI, R(P2) = PI; S(P3) = P2, S(P5) = P4, R(P3) = P2; R(P5) = P4; S(P4) = P3, S(P6) = P5, R(P4) = P3; R(P6) = P5. Flip-flops X7 and X8 are set from X3 and X4 in a branch command if the sign of the contents of A is negative. This decision can be made at T7 by inspecting Al at that time. S(X7) = Xl X2 X3 T7 AI, S(X8) = Xl X2 X4 T7 AI, R(X7) = Xl X2 X3 T7 AI; R(X8) = Xl X2X4 T7 AI. Throughout this design it has been necessary to use only one digit timing pulse, namely T7. Consequently a digit time counter is not needed. Instead, T7 may be derived directly from a track on the drum that has one pulse per word. SUllllllary. The equations describing the logic of a simple digital computer have now been written. This particular computer is useless because means have not been provided for starting it, nor any connections to the external world for input or output of data. Even though the computer is useless, the description is not, for it shows how a control element may be designed and functions. It also demonstrates the fact that the design of the arithmetic element may be intertwined with that of the control element. 18-40 DESIGN OF DIGITAL COMPUTERS REFERENCES 1. R. F. Shaw, Arithmetic operations in a binary computer, Rev. Sci. Instr., 21, 687 (1950). 2. A. D. Booth, A signed binary multiplication technique, Quart. J. M echo and Appl. Math., 4., Pt. 2, 236 (1951). 3. R. K. Richards, Arithmetic Operations in Digital Computers, Van Nostrand, Princeton, N. J., 1955. 4. E. E. Bolles and H. L. Engel, Control elements in the computer, Con. Engr., 3, 93-98 (1956). 5. M. Phister, Jr., Logical Design of Digital Computers, Wiley, New York, 1958. D DESIGN OF DIGITAL COMPUTERS Chapter 19 Storage* David R. Brown and Jack I. Raffel I. Basic Concepts 19-01 19-04 19-13 19-29 19-33 2. Magnetic Drum Storage 3. Magnetic Core Storage 4. Other Storage Techniques References I. BASIC CONCEPTS The Storage Unit. The storage unit of a general purpose digital computer stores both the instructions which control machine operation and the data which are to be processed. The principal information transfer paths between the storage unit and other parts of a typical general purpose computer are shown in Fig. 1. Instructions may be transferred from the storage unit to the control, and storage addresses transferred from the control to the storage unit. Numbers or instructions may be transferred between the storage unit and the arithmetic unit and between the storage unit and the input and output equipment. Pdncipal Parts of the Storage Unit. The principal'parts of a typical storage unit are: the address register, selection circuits, storage medium, storage (or buffer) register, and storage control. The information transfer paths between these parts are shown in Fig. 2. * Many of the examples and circuits in this chapter are the result of research programs supported jointly by the Army, the Navy and the Air Force, under contract with the Massachusetts Institute of Technology. 19·01 DESIGN OF DIGITAL COMPUTERS 19-02 I ·l Input Storage .unit Sometimes more than one Output Arithmetic unit ~ , Control storage register may be used. I The storage register is used as a buffer between the storage medium and the other elements of the computer such as the arithmetic registers or the input and output units. In some computers this register is timeshared and utilized as one of the arithmetic registers. Principle of Operation. FIG. 1. Principal information paths between Words are read from or stored storage and other units of the computer. in a typical storage unit in the following sequence. 1. The address of the word to be read or written is transferred to the address register and, if the word is to be written, the word is transferred to the storage register. Storage medium Selection circuits "C C\l a> (Control) FIG. 2. c:: (Control) (Control, arithmetic unit, input, and output) Simplified block diagram of a storage unit. Connecting line width indicates roughly the number of parallel conductors. 2. The selection circuits decode the address and select the storage location involved. 3. Storage control is informed, by the central control, when to begin the reading or writing process. STORAGE 19-03 4. If reading, the word is then transferred from the storage medium to the storage register. 5. If writing, the word is transferred from the storage register to the storage medium. Characteristics. The important characteristics of a storage unit are: capacity, speed, reliability, cost, power requirement, and physical size. The emphasis placed on each factor varies with the particular application. The first three characteristics require definition. Capacity. Storage capacity is generally measured by the equivalent number of bits or in terms of the number of words and digits of a stated base; e.g., 4096 32-bit words or 131,072 bits, or 4096 8-decimal-digit words. Speed. Measurement of the speed of a particular storage unit is least ambiguous when accompanied by a statement of the type of access used. Two classes of access are recognized. 1. A random access storage unit is one in which the time required to read or write a word is independent of the location. The access time is the time required from the instant the address has been transferred to the address register until the word is available in the storage register, or ~ntil the word has been transferred from the storage register to the storage medium. The minimum time from the beginning of one access to the beginning of the next is often important and is sometimes called cycle time; it is generally longer than the access time. Example. Magnetic core storage unit. 2. A sequential access storage unit is one in which the access time is dependent on the location. Maximum, minimum, and average access times are often stated, also the minimum time from the beginning of one access to the beginning of the next. Example. Units which use cyclical mechanical positioning (drums) or pulse regeneration (delay lines). Reliability. Three important measures of reliability are: 1. Mean time between malfunctions during scheduled operation. 2. Percentage of scheduled operating time lost because of malfunctions. 3. The number of hours per week of scheduled maintenance required. The most common checking technique for detecting storage malfunctions is the use of a word parity check which requires an additional bit per word and the equipment needed to calculate and check parity. Redundance in other forms is sometimes used to increase storage reliability. Critical parts, or an entire storage unit, can be duplicated. Self-checking codes can be used, transfers can be repeated, or words can be stored in more than one location. Storage Hierarchies. A hierarchy of different storage units within a single machine may be used. The advantages of each type for handling 19-04 DESIGN OF DIGITAL COMPUTERS different parts of the overall machine storage function may then be realized. For instance, a relatively small, high-speed, random access storage unit is commonly supplemented by a large-capacity, relatively slow, sequential access unit. Auxiliary storage, in the form of punched paper tape, magnetic tape, or punched cards, is also used extensively. (See Chaps. 5 and 20.) The trend in recent years has been toward greater use of magnetic core storage, supplemented by magnetic drums, further supplemented by magnetic tapes. Storage Techniques. Storage techniques and the resulting characteristics of storage units have had a dominating influence on the design of digital computers and data processing systems. For a history of the development of storage techniques see· Ref. 3. 1. Storage capacity is a fundamental characteristic of the system, establishing the size of problem which can be undertaken or the amount of information which can be processed. 2. The access time of the storage unit often determines the speed of operation of the system. Magnetic drum storage and magnetic core storage, the two most important types used for computer storage, will be discussed in some d.etail in this chapter; other types will be described only briefly. 2. MAGNETIC DRUM STORAGE Principle of Operation. A cylindrical drum, rotating with constant angular velocity, may have information written on, or read from, its magnetic surface by means of magnetic heads. Figure 3 is a photograph of a 4-inch diameter magnetic drum. Usually, many tracks of information are spaced along the axis of the drum, each track having a single head used for both reading and writing. Information can be read only at the times when that place where the information was written is passing under a read-write head. This means that time (the angular position of the drum) becomes one of the selection coordinates. Block Diagram. A simplified block diagram of a parallel magnetic drum storage unit is shown in Fig. 4. Many drum systems record words in a serial manner; however, the principles of operation are the same for both serial and parallel drum storage systems. In this example, the 16 bits (binary digits) of a word, plus one parity bit, are read or written in parallel on anyone of 12 bands, each band having 17 tracks with readwrite heads. Words are stored at 2048 angular positions, or slots, giving a total capacity of 24,576 words. Fifteen bits are required to address all the storage locations, 4 for band selection and 11 for angular position selection. The reading or writing cycle is as follovvs. STORAGE 19-05 1. The 4 flip-flops of the address register which are used for band selection provide the input for a band selection decoder which selects one of the 12 bands in which reading or writing is to take place. 2. The storage control is informed, by central control, whether to read or write. FIG. 3. IBM Type 650 magnetic drum. The drum is 16 in. long and 4 in. in diameter. 3. The 11 flip-flops of the address register which are used for angular position selection are compared, in a coincidence detector, with an angular position counter which is indexed by pulses derived from a separate timing track permanently recorded on the drum. 4. Upon coincidence, the coincidence detector sends a pulse to storage control which, in turn, causes the reading or writing to take place in the selected band and sends an operation-complete pulse to the central control. Access Time and Interlace. The average access time is one-half a drum revolution time, and the maximum access time is a complete revolution time. The time between two adjacent angular positions I or slots, however, is much shorter, 19-06 DESIGN OF DIGITAL COMPUTERS The drum described (see Fig. 4) is an auxiliary storage unit designed by Engineering Research Associates for the Massachusetts Institute of Technology's 'Vhirlwind I computer. A complete drum revolution requires 16 milliseconds, and adjacent slots are 8 microseconds apart. The central computer 'can process each word in slightly less than 32 microseconds. Therefore, the circuits comparing the angular position counter Band selection decoder c o ~ Qj o. o FIG. 4. Simplified block diagram of a magnetic drum storage unit. Width of connecting lines indicates roughly the number of parallel conductors. with the address register are arranged to provide an interlace of four by having consecutive addresses refer to every fourth slot on the drum. In this case then, consecutive addresses appear every 32 microseconds. Since the computer frequently refers to consecutive addresses (e.g., block transfers), the effective access time is made much less than the average access time. Forced Coding. In addition to interlace, a technique known as forced or minimum latency coding can reduce the effective access time. Here the program is coded and storage locations are allocated so that the desired storage location will become available just after the address is transferred to the storage unit by central control. STORAGE 19-07 Checking. In the example, a parity bit is determined for each word just before it is stored, and a parity check is performed whenever a word is read from the drum. Other checking schemes may be used, as discussed previously. TABLE 1. SOME OPERATING DRUM SYSTEl\ISa Diameter, inches Length, inches Nominal rpm Capacity, kilobits Maximum access time, milliseconds Scan rate, kilobits/second Circular packing density, bits/inch Bits/track Number of tracks Recording method Same head read write Head spacing, inches Horsepower drive IBM 650 3.98 16 12620 124 4.8 126.2 48 ERA 1110 22 29 1190 255~ 51 110 80 5500 600 207 464 RZ RZ Yes 0.0005-0.001 Yes 0.002 1 "2 1! "Bits is used as an abbreviation for binary digits. Drum Construction. The dimensions and angular velocities of drums vary over a wide range as indicated in Table 1 (Ref. 6). Sometimes a disk, rather than a drum, is used, with a magnetic coating on one or both sides of the disk. Normally in drum systems, the heads do not make contact with the drum surface; wear would be too severe. The most common technique is to mount the head rigidly to the same assembly which holds the drum bearings, although air-floated heads and some other techniques have been used. vVhen the heads are rigidly mounted, a spacing of 0.001 to 0.002 inch is common. The specification on drum run out (total indicator reading) may be less than 0.0002 inch; precision machining is necessary. Special attention must be given to prevent strains which might be caused by centrifugal force, thermal stress, etc. Drum Coatings. Characteristics of some iron oxide and metal drum coatings are listed in Table 2. Heads. Typical read-write heads are shown in Fig. 5a, b. The air gap, sometimes filled with a nonmagnetic spacer, plays an essential role in both reading and writing. The head is mounted close to the drum surface, as indicated in Fig. 5c, so that the fringing field in the vicinity of the air gap will be sufficient to magnetize the drum surface during writing and so that the remanent magnetization in the drum coating will generate a voltage in the head winding during reading. The width of the air gap is usually less than 0.001 inch. The head itself may be made up of thin laminations of a metal like Permalloy, or a high-permeability, low-loss 19-08 DESIGN OF DIGITAL COMPUTERS " . ........•. ~ .·(b)~-- d-write head (c) leads from turn (d) FIG. 5. Drum heads: (a) ERA type 202, %-in. outer diameter; (b) ERA type 205, 14-in. outer diameter; (c) sketch of conventional read-write head; (d) single turn head. STORAGE TABLE 2. Material Manufacturer's type How applied to drum Thickness, inches Coercivity, oersteds Retentivity, gauss 19-09 CHARACTERISTICS OF SOME DRUM COATINGS Minnesota Mining & Manufacturing Co. Oxide RD301O, R1519 Sprayed 0.001-0.002 200, 250 450 Brush Electronics Co. 80% Co, 20% Ni Electropla ted 0.0005 220-240 12,000 ferrite. It is usually made in two pieces, the windings being set in place before final assembly of the head. Other types of heads, e.g., the single turn head, have been utilized. The single turn head (Ref. 7), shown in Fig. 5d, uses a yoke formed by two rectangular blocks separated only by a single foil turn placed between them at the extremes (flush with the pole faces). This construction forces all the flux produced to pass outside the head and eliminates the additional wasted flux which crosses the gap in the conventional head. This type of head provides higher efficiency, compactness, ease of construction, and simplified shielding and gap positioning. Writing Techniques. The writing techniques discussed in the following paragraphs are the most common. However, numerous other techniques for writing have been proposed, some using a modulated carrier. Return-to-Zero. The return-to-zero (RZ) technique is illustrated in Fig. 6a, where the writing current or longitudinal flux pattern is shown. For one kind of binary digit, the flux changes from zero to an extreme value and returns to zero; for the other kind the flux changes in the opposite sense. Ordinarily the extreme values are positive and negative saturation. The writing pulses may be very short compared with the time between slots; the pulse duration used will depend upon the head design, drum speed, drum coating, etc. The drum surface must be initially erased by an a-c erase current, but properly timed writing currents, during normal operation, automatically erase, or write over, information previously stored. Return-to-Bias. A return-to-bias (RB) technique, shown in Fig. 6b, is similar to the RZ technique except that the reference level is one of the saturation states instead of zero flux. The flux changes from one extreme value to the other and returns for one kind of binary digit, and does not change for the other kind. A d-c erase current is used initially, instead of an a-c erase current. Non-Return-to-Zero. A non-return-to-zero (NRZ) technique is shown in Fig. 6c. Here one extreme value of flux corresponds to 1 and DESIGN OF DIGITAL COMPUTERS 19-10 the other to O. A flux change occurs only when a digit differs from the digit immediately preceding. The initial state of magnetization of the drum surface is not important; writing automatically erases information previously stored. This technique permits higher linear cell densities than can be obtained with the RZ or RB techniques. This is because Sequence ~Io (a) (b) I 01 1 : I I I I I I I I I I 1 I 1 I o~i (c) o I I I I tlffiU i:I~ lR 1 I 1 I (d) o LJJ! ! Uffii I I I I I I (e) ·0 i I I I I lffi±mruwlI1 I I I I I I I FIG. 6. Write current or flux pattern for a sequence of bits for (a) three-level RZ, (b) RB, (c) two-level NRZ, (d) NRZI, and (e) Manchester. the shortest region of unidirectional magnetization is about twice as long in the case of the NRZ technique, for the same linear cell density. The NRZ technique can be used effectively only in a serial storage unit, whereas the RZ and RB techniques can be used in serial or parallel storage units. Also, the NRZ technique has the disadvantage of requiring writing current continuously, when writing a sequence of bits, with the possibility of a large d-c component. Non-Return-to-Zero, Invert. A variation of the NRZ technique, known as NRZI, is illustrated in Fig. 6d. The flux changes from one extreme to the other for each 1, and does not change for a O. Manchester. Another variation of the NRZ technique, known as the phase reversal or Manchester technique, is illustrated in Fig. 6e. It eliminates the d-c component of writing current. The flux changes be- STORAGE 19-11 tween the extreme values for each digit. A 1 has one extreme value followed by the other, and a 0 has the opposite sequence. Writing Circuits. Circuits for generating the writing current vary widely, and are closely related to the selection circuits used. Circuits employ relays, thyratrons, hard tubes, magnetic cores and crystal diodes, and transistors. The writing circuits used for the Whirlwind I auxiliary drum are indicated in Fig. 7; a 2-microsecond, O.5-ampere pulse is applied to the 30-turn winding on the head. The circuit is designed to permit the maximum possible writing rate, every 8 microseconds. The RZ technique is used. 7AK7 2-p.sec pulse from band selection decoder and storage control FIG. 7. A writing circuit for a magnetic drum using the three-level RZ technique. Reading Circuits. The circuits used for reading are also extremely varied. The signal at the head terminals may be a few millivolts, or a few volts. The operations performed on the read signal may be complex, depending very much on the writing technique being used. With the RZ or RB techniques, the signal is usually amplified, differentiated, and then strobed by a delayed timing pulse (supplied by a storage control). vVhen an NRZ technique is used, some logical manipulations are necessary to restore the information to standard form. With very high cell densities on large drums, strobing with timing pulses from a reference track may not be practical, and self-strobing schemes must be used. Effect of Loss of Power. A magnetic drum storage unit can be designed so that the information stored will not be lost in case the power being supplied to the system is interrupted. The design must ensure that the sequence in which different voltages are lost, or turned on, does not result in spurious writing currents. 19-12 DESIGN OF DIGITAL COMPUTERS FIG. 8. IBM magnetic disk file. Disk diameter is 24 in. Reliahility. The reliability of a' carefully designed magnetic drum storage unit can be good, and is limited by the circuitry rather than the drum itself. Adequate margins in the reading circuits are essential to accommodate variations from head to head, modulation of the read signal caused by drum runout, and variations caused by temperature, vibration, etc. Drums have been operated continuously for several years without mechanical failure, or signs of wear. Malfunction of the circuits associated with the drum can be expected, and routine preventive maintenance is advisable. Intermittent failures, especially those common to electron tubes, are most troublesome. (See the section on circuit design for a discussion of circuit reliability.) The Whirlwind I auxiliary drum unit has a storage capacity of 393,216 STORAGE 19-13 bits on a drum 8.5 inches' in diameter and 15 inches long. The drum is in a temperature-controlled enclosure which protects it from dust and dirt. The floor area required is approximately 8 square feet, with another 16 square feet for the associated circuits, which include 780 electron tubes. Total power consumption is approximately 4000 watts. The average time between malfunctions during scheduled operating periods is 350 hours, and 3 hours of maintenance time are required per week. Magnetic Disk Storage. An experimental storage unit of unusual design, the IBM type 305 magnetic disk storage unit (Ref. 11) is shown in Fig. 8. Fifty disks, 24 inches in diameter, rotate at 1200 revolutions per minute. The disks are coated with an iron oxide dispersion on both sides; the heads are air-floated. The storage capacity is 5 million characters, with 7 binary cells plus a space per character. The NRZI technique is used. The reading circuits are self-strobing. :Multiple independent access can be provided. Maximum access time for one pair of pneumatically positioned heads is 0.7 second. 3. MAGNETIC CORE STORAGE Principle of Operation. In a magnetic core storage unit, each bit is stored in the magnetic field of a small, ring-shaped magnetic core. The most important storage techniques make use of coincident current, in which two aspects of the core's rectangular flux current characteristic are utilized: (1) flux remanence for storage and (2) extreme nonlinearity for selection (Ref. 12). Two-Coordinate-Read, Three-Coordinate-Write System. Figure 9 shows the flux current loop for a typical core. The remanent flux points are arbitrarily designated as 0 and 1. The loop is sufficiently nonlinear so that the application of a current 1m/2 switches negligible flux, . whereas the full current 1m is capable of switching the core to the opposite remanent state. Figure 10 illustrates how this nonlinearity may be used to select one core out of many by the coincidence of two halfcurrents in a two-coordinate scheme. The extension to three coordinates may be accomplished by juxtaposing planes like those schematically illustrated in Fig. 10 and connecting the respective x and y selection lines in series to obtain a three-dimensional array, as indicated in Fig. 11. Each plane in the array can then be threaded with its own z winding linking all the cores in that plane. This third coordinate can then be used for selective excitation during the write process (Ref. 13). Read. The application of a half-current to the coordinate Xi (Fig. 11) results in the half excitation of a selection "plane" through the array. The same is true for the coordinate Yi and the result is full-current excitation of the line of cores along the z axis at the intersection of the two 19-14 DESIGN OF DIGITAL COMPUTERS selection "planes." A parallel type storage unit might well resemble Fig. 11, and the selected line of cores represent the selected storage loca- 1m "2 Y2O---"'-+T'1H \:.f---+t'IH t:/--------f Ylo----+VJIH tJ---~H I + - - - - f FIG. 9. Flux current characteristic of a typical core. FIG. 10. A two-coordinate coincident current array. Zero if core is to be switched; z ~::::"'-4fllLf.I.JJ.~~ Im/2 if switching~......, is to be inhibited t x FIG. 11. Selection in a three-coordinate array. tion. Each plane, or place, has its own read winding threaded through every core to bring out the signal representing the stored digit. If a core STORAGE 19-15 holds a 1, a voltage pulse will occur when the core switches. If it holds a 0, there is negligible output. This part of the read operation is destructive, and the word must be rewritten. Note that no excitation is required for any of the z selection lines during the read process. Write. For the rewrite (or write) part of the cycle, the selection technique is basically the same. The half-currents on the x and y selection planes, in the write polarity, would result in the writing of l's into all the cores of the selected storage location, except that this writing is controllable in each place by the use of the z winding on which may be applied a half-current of a polarity opposite to the write currents in the x plane and y plane. The presence of this inhibiting current in any z plane, or place, during the write operation leaves a 0; absence of the inhibiting current, leaves a 1. Multicoordinate Selection Principles. The system described in the preceding paragraphs employs a two-coordinate read and a threecoordinate write. This system is represented in tabular form in Table 3a, where Sand U denote selecting and unselecting coordinate excitations. The ratio, R, of the excitation of the selected core to the absolute value of the m~ximum excitation of an unselected core, is 2 : 1. TABLE 3. Excitation SELECTION SYSTEM y X Z (a) 2-to-1 Read, 2-to-1 Write Read Write S U S U 1 1 "2 "2 0 0 1 1 -"2 -"2 0 0 0 0 0 .! 2 (b) 3-to-1 Read, 2-to-1 Write Read Write S U S U 2 1 -"2 -"2 0 0 0 0 0 "2 3 3 1 -3 0 1 In 1 1 general, in an m coordinate system (Ref. 14), each core would be at the unique intersection of m wires, each wire from a different coordinate. To determine the maximum selection ratio, R max , that can be obtained for any m, assume a difference excitation of one unit between selected and unselected lines in each coordinate. The selected core is selected in all m coordinates. All others are unselected in from 1 to m coordinates. If t is the maximum positive excitation which results from unselecting in only one coordinate, then to obtain R max , make t - (m - 1) = - t. 19-16 DESIGN OF DIGITAL COMPUTERS That is, unselecting the remaining m - 1 coordinates should leave an equal but opposite excitation. Since the selected core receives an excitation t + 1, t+ 1 Rmax = -t-. Substituting for t, m+1 Rmax = ---1. m- This means that for a two-coordinate read cycle, Rmax is 3 : 1, an improvement over the system of Table 3a, which has an R of 2 : 1. The selection system for the improved selection ratio is shown in Table 3b. The write, being three-coordinate, has Rmax = 2 : 1, so no overall improvement can be made. Redundant Coordinates. In the systems just described, the selection of one line in each coordinate is sufficient to select the cell at an intersection. The addition of redundant coordinates is possible by the introduction of selection planes having different slopes. Each line of an added coordinate intersects a line of one of the original coordinates at only one cell. The excitation of a line in each of these redundant coordinates subjects the selected element to an additional unit excitation without adding any excitation to any other elements previously selected. Using P redundant coordinates improves the selection ratio to Rmax = m + 1 + 2P . m - 1 At the same time the number of input drivers and wires per core go up in proportion to the number of redundant coordinates (Ref. 15). Core Switches. Multicoordinate core switches are commonly used for switching the high-current pulses needed to drive selection lines of core memories. The symmetrical read-write excitations required are well suited to the alternating flux output from switch cores (see Chap. 15). Magnetic· Core Storage. A block diagram of a parallel magnetic core storage for 4096, 16-bit words (65,536 bits), is shown in Fig. 12. This unit has a cycle time of 5 microseconds and an access time. of 2 microseconds. A seventeenth plane is used to store parity. The core array measures 10 inches by 10 inches by 20 inches; a floor area of 29 square feet is required for the entire unit, mainly for the circuits, which include 652 electron tubes. Total power consumption is 8800 watts. The average time between malfunctions during scheduled operating periods is 623 hours, and 4 hours of maintenance time are required per week. STORAGE 19-17 The operation is as follows: 1. The read-rewrite cycle begins when the address is transferred to the address register and storage control has been informed, say, that a L/ x decoder ~ Readwrite gates Magnetic core array I I I Read-write gates y decoder \ Strobe Reading circuits Inhibiting gates t Address register Storage control I' Storage register 1 'C ro Q) '0::: FIG. 12. Simplified block diagram of a magnetic core storage unit. Width of connecting lines indicates roughly the number of parallel conductors. read operation is to take place. Six of the flip-flops of the address register control the x decoder and the other six control the y decoder. 2. The decoders translate from the base 2 to the base 64 and set the read-write gates. 3. After the decoders have had time to set the read-write gates, storage control pulses the read-write gates, and causes the selected x and y lines to be pulsed in the read direction. 4. At the proper instant, storage control then sends a timing pulse to all 17 reading circuits, and samples the output voltage of each plane. DESIGN OF DIGITAL COMPUTERS 19-18 5. For each plane in which a 1 had been stored, the timing pulse will be gated to set the corresponding place in the storage register. The word is thus transferred from the selected storage location to the storage register. Address register - / r 1\ x and y selection lines Inhibiting pulse ~U I I r- -- ..., - --- --I o 2 '" \ \ .... 4 5 3 Time, microseconds 6 7 8 FIG. 13. Timing diagram. 6. If the information is to be retained, the next step must be to rewrite the word in the same storage location. After the inhibiting gates have been set, storage control pulses the read-write gates again, and the inhibiting gates, and causes the x and y lines to be pulsed in the write direction. However, the inhibiting pulse, which pulses all z planes in which O's are to be rewritten, overlaps the write pulses in the x and y lines. The timing is illustrated in Fig. 13. If a write operation had been called for, the word to be stored would have been transferred to the storage register at the beginning of the cycle. The cycle is then the same except that no timing pulse is sent to the reading circuits. Selection Circuits. The read-write and address selection circuits of a magnetic core storage unit are illustrated in Fig. 14 (Ref. 16). When selected, one of the 64 output lines of the crystal diode matrix is pulled down to a voltage level which cuts off the first 5965 section, the resulting rise in plate voltage is coupled through the cathode follower and raises both grids of the 5998 array driver. No current flows, however, because the cathodes of the 5998 are normally held at a high voltage level by the read and write gate generators. At the appropriate time a start-read Pulse transformer ,.,. ,." " ,. ~---~ ,...----r-----, ,," x Decoder 64 lines 64 Output lines 64 lines Core 2 From x half of address register -150v (/) -150v -I o ~ 63 x read cathodes > (j) 63 oX write cathodes m 2 kG -30v -150v -300v to 2 kG to 3.1 kG 3.1 kG -300 v -300 v -300 v -150v -30v -p FIG. 14. Read-write and address-selection circuits of MIT magnetic core storage unit. ~ DESIGN OF DIGITAL COMPUTERS 19-20 pulse from storage control turns on the read flip-flop which, through its two direct-coupled stages, turns off the two 5998 output tubes of the read gate generator. All 64 read cathodes of the array driver tube sections then drop to a voltage level such that the proper current is drawn by the selected section. The current is shut off about 1 microsecond later +250 v +150 v +150v +150v Fr01J read ' winding -30v FIG. 15. Simplified circuit of read amplifier. by the stop-read pulse. The current pulse from the array driver section is stepped up by approximately 2 to 1 in the ferrite core pulse transformer and delivered to the series-connected lines of the proper coordinate in the core array. The 2-ohm terminating resistor is mainly for purposes of observing the shape and size of the current pulse. Current amplitudes are set by the two large variable resistors which connect the x read and x write cathodes to the -300-volt supply. The z plane currents are supplied directly from both sections of a 5998 driven by a stable amplifier. Read Circuits. A reading circuit is illustrated in Fig. 15. The signal from the read, or sense wire, in the case where a 1 is read, is stepped up in a balanced linear pulse transformer to about 0.5 volt. It is then rectified by crystal diodes in a full-wave circuit and subsequently amplified by simple pulse amplifiers to about 30 volts preceding the 7AK7 gate tube. The 7AK7 is used in a standard and gate, and receives the signal from the read amplifier on its suppressor grid and a O.I-microsecond STORAGE 19-21 strobe pulse on its control grid. The output of this gate tube, a D.1-microsecond pulse for a 1 and nothing for a 0, goes to the set input of the corresponding flip-flop in the storage register. Figure 16 shows waveforms at the input to the reading amplifier and at the suppressor grid of the gate tube. ----------~~--+-------------------lOOmv --------~~----~~------------~One (a) Zero::::::3~3~-t--I--+---+:~-I-:;A=-----o ----~----~~~~~~--------------+lO --------I--!-+-+--+~-t---;----·O (b) ------------~--------~~-------lO ____Z_er_o~~~ ______________~_____ 20 FIG. 16. Voltages at (a) input to reading amplifier and (b) suppressor grid of the gate tube. Parity Check. An additional plane is included in the array described, to provide for a parity check. vVhen a word is to be stored, a parity check bit is determined while the word is in the storage register, and the seventeenth flip-flop of the storage register is set correspondingly. When a word is read, the parity is checked immediately after the word has been transferred from the storage location to the storage register .. Fabrication Details. Figure 17 shows the wiring details of a 16-by-16 plane. The cores are spaced on D.1-inch centers. Four wires pass through each core, an: x wire, a y wire, a z wire, and a read wire. When the planes are stacked in an array as illustrated in Fig. 18, the corresponding x and y terminals of all the planes are connected by means of short jumpers so that two terminals at opposite ends of the array are obtained for each of the x selection lines and the y selection lines (Ref. 17). Core Design. Very satisfactory ferrite cores have been developed (Ref. 18) having diameters as small as can be handled, tested, and wired into arrays conveniently. A high squareness ratio, as defined in Fig. 19, 19-22 DESIGN OF DIGITAL COMPUTERS Start FIG. 17. Sixteen by sixteen plane wiring details. is essential. The dimensions and characteristics of typical commercial cores are listed in Table 4. The following general statements apply. 1. Cores with higher coercive forces have shorter switching times in coincident current storage units. This is because switching time is inversely proportional to the absolute difference between the applied field and a threshold field which is very nearly the same as the coercive force. 2. For a given core material, the current required for operation of an array is directly proportional to the mean diameter of the core. 3. The energy required to switch a typical core is of the order of one erg. STORAGE FIG. 19-23 18. A 4096-word magnetic core array. Plane dimensions are 9 by 9 in. Detection Problem. The sensing problem in a magnetic core array is primarily due to undesired outputs from half-selected cores on the !:lingle x and single y lines which are excited during the readout time (Ref. 19). If all cores had equal half-select. outputs, a sense winding which linked halves of each row and each column in opposite directions, TABLE 4. CHARACTERISTICS OF SOME FERRITE CORES FOR MAGNETIC CORE STORAGE UNITS Type Saturation flux density, gauss Retentivity, gauss Coercivity, oersteds Curie temperature, °C Dimensions, inches Squar~ness ratio, Rs Optimum current, 1m , amperes Switching time, microseconds General Ceramics Corporation Ferramic S1 F-394 Ferramic S3 F-394 1780 2000 1590 1920 1.5 0.65 300 300 "·0.080 O.D., 0.050 I.D., 0.025 thick 0.8 0.95 0.82 0.35 1 5 19-24 DESIGN OF DIGITAL COMPUTERS would give a net half-select output of approximately zero for excitations on any row and column. (One core on the row and one on the column remain uncanceled.) For the canceling sense winding of Fig. 17, + and - denote positive or negative core coupling to the sense wire. It is obvious that any "checkerboard" winding will fulfill the core cancellation requirements. FIG. 19, Definition of the squareness ration, R •. In practice, the half-select signal from a core is a function of both the information it holds (lor 0), and the previous half-select pulse which it has received. It is possible to have all the largest half-select outputs located on the positive half of the sense winding and all of the smallest on the negative half, or vice versa. The result then is that the core output voltage for a sense winding linking an n-by-n array will be: Vt = ±[Vs - 2Vhs ± (n - 2) V 8], where Vs is the magnitude of the voltage from the selected core, V hs is the magnitude of the voltage from a half-excited core, V8 is the uncanceled voltage from a pair of half-excited cores of opposite polarity (sometimes called delta noise). In the worst case, then, l's may be decreased and O's increased by delta noise. Since the noise component varies linearly with n, it establishes an upper limit on the size of a single sense winding. This factor also accounts for the emphasis on uniformity and the care exerted in core testing. Single sense windings are used for n as large as 64, and, by the use of time-consuming tricks, can probably be extended to 128. Any checkerboard winding (Ref. 20) will also be free of air coupling STORAGE 19-25 to the x and y lines if care is taken to keep the air-flux areas of both polarities equal. The canceling areas of the winding of Fig. 18 are FIG. 20. Canceling air flux components of sense winding. denoted by the diagonal dark and light areas of Fig. 20. This comp1icated looking winding has sometimes been used instead of simple rectangular sections because it eases insertion of the sense wire, after x, y, 19-26 DESIGN OF DIGITAL COMPUTERS and z are in place; by allowing it to enter perpendicular to the hole surface. Ambient Temperature. Although the power dissipated by the cores in the array of a magnetic core storage unit is negligible compared with the power required by the associated circuitry, some attention must be given to the maintenance of a satisfactory ambient temperature for the array. The coercive force and other .characteristics of the cores depend upon temperature, and any given system will have certain minimum and maximum limits for the ambient temperature. Limits of the order of ± 10°F are typical. Current Regulation. Also, care must be taken to ensure that well regulated array-driving currents, with clean waveshapes, are obtained. Regulation of the driving current in a coincident current storage unit should keep the driving current within less than ±5 per cent of the nominal amplitude. Core Stability. The characteristics of ferrite storage cores are extremely stable. Ferrite cores will withstand considerable shock and vibration, and their characteristics will not be changed permanently by temperature cycling, provided the temperature does not rise high enough to change the structure of the ferrite. A carefully constructed array will not malfunction and will last indefinitely. However, a magnetic core storage unit as a whole can be expected to malfunction and require maintenance. The reliability of the storage unit will depend on the reliability of the associated circuitry. Typical Storage Units. Characteristics of several magnetic core storage units are listed in Table 5 (Ref. 21). Core storage units employing only transistors in associated circuitry have been designed. The detection circuits for such units are ideally suited to transistors. The highcurrent switches required to drive lines of storage cores which appear as large inductive loads are a more serious problem. The combination of high current, fast rise time, and high peak inverse voltage represents a significant challenge which is beginning to be met successfully by transistor manufacturers. Other Discrete Magnetic Storage Techniques A number of different techniques which make use of the nonlinearity and remanence of discrete magnetic cells for storage units have been developed. Nondestructive Readout. Nondestructive readout of cores is possible using a number of different systems. N one of these has been used in any large-scale storage but nondestructive readout techniques can be applied to smaller storage units. TABLE 5. Type Storage capacity, bits Read-write cycle time, microseconds N umber of words 'Yord length, bits Tube count Array structure and circuits SOME OPEnAT KG l\1AGNET M.LT. Lincoln Laboratory TX-2 2,490,368 C CORE STORAGE UNITS Sperry-Rand Corp. UNIVAC Division ERA 1103A 147,456 International Telemeter Corp. Johnniac 163,840 IB:M IBM 705 280,000 Ul 6 65,536 38 604 + 1406 transistors Thirty-eight 256 by 256 planes. Tube-driven core switches on each coordinate. Sense winding in four sections. 12 15 4,096 4,096 36 40 1,200 469 ~ Thirty-six 64 by 64 Forty 32 by 128 planes. planes. Tube-driven Separate 128 position diode transformer core switches for y in each plane. 32 tubematrices drive both driven x lines in series. x and y lines. No z drivers. 9 8,000 35 711 Thirty-five 100 by 80 planes. Core switches 8 by 10 and 10 by 10 drive x and y lines respectively. --I 0 :;;0 » (j) m -.0 ~ '-I 19-28 DESIGN OF DIGITAL COMPUTERS One system (Ref. 22) uses a transverse field excitation obtained by running current through the wraps of tape cores or by using an auxiliary core at right angles to the main core. It is possible to obtain small reversible rotational outputs which will be of opposite polarity for l's and for O's. Another system (Ref. 23) uses distinct r-f excitations on x and y coordinates. The core nonlinearity produces sum and difference frequencies due to the second-degree term in the power series expansion for the hysteresis loop at remanence. The coefficient of this term is of opposite sign at either remanent state so that there is 180 degree phase shift in the beat frequency output for the two remanent states. The 1 and 0 ouputs are then identified by tuning to the beat frequency and detecting the phase. Thin Magnetic Films. Thin magnetic films of Permalloy deposited by vacuum evaporation or by electrochemical deposition can be used as storage cells in a fashion very similar to magnetic toroids (Ref. 24). These films, when put down in a strong magnetic field, exhibit an easy axis of magnetization in the direction of the field. The hysteresis loop of such materials is extremely square for circular spots of about Ys inch diameter and about 1000 A thick. The distinguishing property of these films is that magnetization reversal can take place by rotation, an inherently fast process, rather than by the domain wall motion which is present in bulk material and relatively slow (Ref. 25). The rotational switching is enhanced by the presence of a field perpendicular to the easy axis. The important characteristics of these film storage cells are: 1. Rotational switching allows fast switching at relatively low fields. 2. The amount of material, and hence flux switched, is extremely small, about three orders of magnitude less than small toroids. 3. Many cells can be fabricated at a single time and need not be handled individually. 4. Power dissipation at very high speeds is no great problem because of the small amount of material and large surface-to-volume ratio. 5. Flux return paths are through air; films must be shielded from outside fields, such as the earth's. 6. Input and output wires are placed in proximity to spots and do not thread holes. The principal problems are in obtaining spot-to-spot uniformity and in eliminating the formation of domain walls below the rotational threshold. Many of the multidimensional selection principles used in core storage are directly applicable to films, with many additional variations possible because of the strong effect of transverse fields on mode of operation. STORAGE 19-29 Demagnetizing factors which tend B to cause loop squareness to deteriorate increase with thickness and decrease with spot diameter. Since the total signal out is proportional to the product of thickness and diameter, packing density . and output signal may be H traded for one another. Most work has been done with spots Ys inch in diameter in the range from 500 A to 3000 A. These films, when switched (a) in 0.1 microsecond, give outputs of 1 to 10 millivolts. B Figure 21 shows hysteresis loops of films in the easy and transverse directions. Ferrite Plates. The use of sheets of ferrite prepared with holes elimiH nates the handling and fabrication of individual cores (Ref. 26). These units operate the same as magnetic toroids. The main disadvantages are (b) the difficulty of obtaining perfect plates and the slight degeneration in FIG. 21. B-H characteristics for typiperformance due to interference be- cal Permalloy films in (a) easy directween adjacent holes. tion and (b) transverse direction. Multiaperture Cores. Cores having more than one hole have been used experimentally to provide higherspeed storage (Ref. 27). Here, by separating selection and storage functions, it has been possible to obtain extremely fast switching at the cost of higher current drive. Very high back voltages and core dissipation at such high-speed operation are an important drawback to such systems. 4. OTHER STORAGE TECHNIQUES Acoustic Delay Line Storage Acoustic delay line storage was used in many of the systems which followed the ENIAC, notably in the EDSAC, SEAC, RAYDAC, and the first UNIVAC's. A simplified block diagram of an acoustic delay line storage unit is shown in Fig. 22. Information is stored as a sequence of bits, pulses representing 1's and the absence of pulses representing D's (Ref. 28). The driver causes each pulse to apply a fractional microsecond burst of r-f power to a transducer at the transmitting end of the 19-30 DESIGN OF DIGITAL COMPUTERS line. After a time equal to the total delay of the line, the acoustic pulse strikes the receiving transducer and produces a voltage which can be detected and amplified. The amplified pulse is then gated and reshaped by a timing pulse and reentered into the delay line. Stored information is thus circulated indefinitely, and can be read at times when it is being reentered. To write, the clear gate is closed, and the new sequence of pulses is sent to the driver by way of the write gate. Many words are usually stored in a single line. In the UNIVAC, ten 91-pulse words (including a 7-pulse space between words) are circulated in a mercury Delay line Inhibit ~-----l Gate .....- - - -... FIG. 22. Simplified diagram of a delay line storage unit. tank with a total delay time of 404 microseconds. A tank actually accommodates 18 channels, each with its own circulating amplifier and driver. Addressing the storage unit requires both channel and time selection. Mercury Delay Lines. J\1ercury delay lines have been most common and have the following characteristics. 1. Quartz crystal transducers are used, resonant at the radio frequency (5 to 30 megacycles) of the driver. 2. The delay in mercury is 17.5 microseconds per inch, and several pulses can be stored per microsecond. 3. The velocity is dependent on temperature, and necessitates precise temperature control. 4; The amount of circuitry per channel is relatively large, considering the number of bits which can be stored. 5. Larger channels, which improve the ratio of stored bits to circuitry, have the disadvantage of longer access time. Improvements in magnetic core storage have made acoustic delay line storage less desirable for general use. STORAGE .19-31 Other Delay Lines. Delay line storage units using magnetostrictive or piezoelectric delay lines have had limited application. In the case of magnetostrictive delay lines, pulses can be picked up or inserted at any point along a magnetic rod. Such features lend themselves to special applications. Electrostatic, Ferroelectric, and Cryogenic Film Storage Storage Tubes. Before magnetic core storage was developed, electrostatic storage provided the shortest access times obtainable with a storage capacity of more than a few hundred words. Of the several types used, the type attributed to F. C. Williams has been most common (Ref. 31). Bits are stored on the phosphor screen of a cathode ray tube of conventional design, and the electron beam is used to write a bit at anyone of, say, 1024 locations on the screen of a single tube. Reading is accomplished by returning the beam to the same location and observing the signal produced at a metal backplate which covers the outside face of the cathode ray tube screen. Access times of the order of 10 microseconds can be obtained. In a typical computer (Ref. 32), a parallel storage unit employs 72 cathode ray tubes, two in each place of a 36-bit word. Storing 1024 bits in each tube gives a storage capacity of 2048 words. The operation is as follows. 1. All the electron beams are deflected simultaneously by x and y decoders controlled by the address register. 2. After the beam deflection voltages have stabilized, the beam is unblanked for 1 microsecond, and the initial polarity of the read signal determined. 3. If it is positive, indicating that a dash (or 1) had been stored, the beam is turned on again, this time for nearly 2 microseconds, and deflected slightly to rewrite a dash. 4. If the initial polarity of the read signal is negative, indicating that a dot (or 0) had been stored, no further unblanking is required during the cycle; the dot is effectively rewritten during the read operation. 5. The stored information also requires periodic regeneration, even at those locations to which no reference is made. Three regeneration cycles are required for each instruction executed. Two storage locations can be regenerated during each 12-microsecond regeneration cycle. Regeneration is interleaved with other operations; regeneration requirements are maintained by a separate regeneration control unit. Storage locations are scattered so that, by maintaining a read-around ratio greater than 400, the programmer is not concerned with read-around ratio. (This ratio is the number of references to adjacent storage locations required to change the storage location from a dot to a dash.) 19-32 DESIGN OF· DIGITAL COMPUTERS Many other electrostatic storage systems have been used (Ref. 33). All have required special tubes, with the possible exception of Williams' technique. Electrostatic storage is marginal in operation, requiring exr.essive maintenance and subject to frequent malfunction. By 1955, magnetic core storage had replaced electrostatic storage in new designs. Capacitor-Diode Storage. Information can be stored in capacitors. With high back resistance diodes used for switching, regeneration require- FIG. 23. Superconciucting storage call. ments may not be severe (Ref. 36). An experimental storage unit at the National Bureau of Standards employs one capacitor and two diodes per bit and has a cycle time of 3 microseconds. Ferroelectric Storage. Ferroelectric materials such as barium titanate can have square hysteresis loops. Such materials have been used in experimental storage units, whose operation is the dual of magnetic core storage (Ref. 37). The principal disadvantages of this storage medium are the high energy required to reverse the remanent charge, the disastrous heating which occurs under continuous operation, and an instability which results in deterioration of characteristics with time. However, the development of new materials like triglycine sulphate has greatly improved future prospects. Cryogenic Films. Single storage cells have been constructed that use superconducting thin films of lead at liquid helium temperature (Ref. 38). These operate on the principle that flux lines cannot cut the ring of zero resistance material that surrounds them. The application of magnetic fields above a certain threshold level forces the material into the normal state, and allows flux lines to penetrate and become trapped when the material goes superconducting again. Figure 23 shows the orientation of a drive wire, superconducting cell, and sen~e wire. The cell consists of a circular hole in a superconducting sheet having a super- STORAGE 19-33 conducting crossbar. Binary information is denoted by the direction of circulation of flux lines around the crossbar and through the hole areas on either side. The principal advantages of this storage medium are the sharp switching threshold, low drive fields, the near perfect shielding between drive and sense circuits provided by the superconducting sheet, and the possibility of very high switching speed. The principal disadvantages are difficulties in fabrication, which requires successive evaporations of lead and insulating layers, and the problems associated with a liquid helium environment. The Twistor. Experiments (Ref. 39) have been performed on magnetic·wire of various Ni-Fe compositions in which helical flux patterns are used for information storage. The application of tension to the ends of the wire introduces a helical strain anisotropy and by using the magnetic wire itself for the sense winding the circular flux component is detected giving rather large signals even for very thin wire. lVlany bits can be stored along a continuous piece of wire. Principal problems are in maintaining uniform tension, in obtaining high bit densities without interaction, and in developing thin enough wires to provide a sufficiently low Sw. The Parametron. Information storage is possible with two phases of oscillation of a resonant circuit (Ref. 40). If the L or C of a resonant circuit is modulated at a pump frequency Wp which is twice its resonant frequency, a sustained oscillation at resonance will occur if it is excited above its threshold level. This oscillation will be locked to the pump frequency, but it can be of either phase. vVork is being done with both the voltage-variable capacity of a p-n junction and the current-controlled inductance of nonlinear magnetic materials. REFERENCES 1. R. K. Richards, Arithmetic Operations in Digital Computers, Van Nostrand, Princeton, N. J., 1955. 2. R. K. Richards, Digital Computer Components and Circuits, Van Nostrand, Princeton, N. J., 1958. 3. J. P. Eckert, Jr., A survey of digital computer memory systems, Proc. I.R.E., 41 (10), 1391-1406 (1953), . 4. A. A. Cohen, Magnetic drum storage for digital information processing systems, Mathematical Tables and Other Aids to Computation, IV, 31-39 (Jan. 1950). 5. B. F. C. Cooper, A magnetic drum digital storage system, Proc. I.R.E. (Australia), 14, 169-177 (1953), 6. M. H. Weik, A survey of magnetic drum memory systems for electronic computers, Ballistic Research Laboratories Rept. 819, Aberdeen Proving Ground, Md., August 1954. 7. D. F. Brower, A "one-turn" magnetic reading and recording head for computer use, I.R.E. Convention Record, Pt. 4, Computers, Information Theory, Automatic Control, pp. 95-100, 1955. 19-34 DESIGN OF DIGITAL COMPUTERS 8. E. S. Hughes, Jr., The IBM· magnetic drum calculator type 650, engineering and design considerations, Proc. Western Computer Conference, pp. 140-154, Los Angeles, Calif., Feb. 11, 12, 1954. 9. H. W. Fuller, P. A. Husman, and R. C. Kelner, Techniques for increasing storage density of magnetic drum systems, Proc. Easlern Joint Computer Conference, pp. 16-21, Philadelphia, Pa., Dec. 1954. 10. M. K. Taylor, A small high-speed magnetic drum, Computers and Automation, 4, 18-19 (1955). 11. T. Noyes and W. E. Dickinson, Engineering design of a magnetic-disk, randomaccess memory, Proc. lVestern Joint Computer Conference, 42-44, San Francisco, Calif., Feb. 7-9, 1956. 12. J.W. Forrester, Digital information storage in three dimensions using magnetic cores, J. Appl. Phys., 22, 44-48 (1951). 13. W. N. Papian, A coincident-current magnetic memory cell for the storage of digital information, Proc. I.R.E., 40, 475-478 (1952). 14. R. R. Everett, Selection systems for magnetic core storage, Engineering Note E-413, p. 13, Project Whirlwind, Servomechanisms Laboratory, M.LT., Cambridge, Mass., Aug. 1951. 15. R. C. Minnick and R. L. Ashenhurst, Multiple-coincidence magnetic storage systems, J. Appl. Phys., 26, 575-579 (1955). 16. W. N. Papian, New ferrite-core memory uses pulse transformers, Electronics, 28~ 194-197 (March 1955). 17. E. A. Guditz and L. B. Smith, Vacuum and vibration speed assembly of core memory planes, Electronics, 29 [2], 214-228 (1956). 18. D. R. Brown and E. Albers-Schoenberg, Ferrites speed digital computers, Electronics, 26 [4], 146-149 (1953). 19. J. R. Freeman, Pulse response of ferrite memory cores, Proc. WESCON Computer Sessions, 50-61, Los Angeles, Calif., Aug. 25, 1954. 20. J. L Raffel, Sensing winding geometry and information patterns, M .l.T. Lincoln Laboratory Rept. 6M-2919, Lexington, Mass., July 1954. 21. M. H. Weik, A second survey of domestic electronic digital computing systems, Ballistic Research Laboratories, Rept. 1010, Aberdeen Proving Ground, Md., June 1957. 22. D. A. Buck and W. 1. Frank, Non-destructive sensing of magnetic cores, Trans. Am. Inst. Elec. Engrs., 72, Pt. 1 (Comm. and Elec.), 822-830 (1953). 23. B. Widrow, Radio-frequency non-destructive readout for magnetic core memories, Trans. I.R.E., Prof. Group on Electronic Computers, EC-3 [41, 12-15, Dec. 1954. 24. A. V. Pohm and S. M. Rubens, A compact coincident-current memory, Proc. Eastern Joint Computer Conference, pp. 120-124, Dec. 1956. 25. D. O. Smith, Magnetizf1tion reversal and thin films, static and dynamic behavior of thin Permalloy films, J. Appl. Phys., 29, 264-273 (1958). 26. J. A. Rajchman, Ferrite apertured plate for random-access memory, Proc. Eastern Joint Computer Conference, pp. 107-115, Dec. 1956. . 27. W. W. Lawrence, Jr., Recent developments in very-high-speed magnetic storage techniques, Proc. Eastern Joint Computer Conference, pp. 101-104, Dec. 1956. 28. 1. L. Auerbach, J. P. Eckert, R. F. Shaw, and C. B. Sheppard, Mercury delay line memory using a pulse rate of several megacycles, Proc. I.R.E., 37, 855-861 (1949). 29. E. A. Newman, D. O. Clayden, and M. A. Wright, Mercury-delay-line storage system of ACE pilot model electronic computer, Proc. Inst. Elec. Engrs., 100, Pt. 2 (76), 445~52 (1953). STORAGE 19-35 30. H. N. Beveridge and \V. \V. Keith, Piezoelectric transducers for ultrasonic delay lines, Proc. I.R.E., 40, 828-835 (952). 31. Symposium of papErS on digital computers, Proc. Inst. Elec. Engrs., 100, Pt. 2 (77), 487-539 (953). 32. S. H. Dodd, H. Klemperer, and P. Youb, Electrostatic storage tube, Elec. Eng., 69, 990-995 (1950). 33. M. Knoll and B. Kazan, Storage Tubes and Their Basic Principles, Wiley, New York, 1952. 34. J. A. Rajchman, The selective electrostatic storage tube, RCA Rev., 12, 53-97 (1951). 35. J. P. Eckert, Jr., H. Lukoff, and G. Smoliar, A dynamically regenerated electrostatic memory system, Proc. I.R.E., 38, 498-510 (1950). 36. A. W. Holt, An experimental rapid access memory using diodes and capacitors, Proc. Assoc. for Computing Machinery, pp. 133-141, Sept. 8-10, 1952, Toronto, Canada. 37. D. A. Buck, Ferroelectrics for digital information storage and switching, M.I.1'. Digital Computer Laboratory Rept. R-212, Cambridge, Mass., June 5, 1952. 38. J. W. Crowe, Trapped-flux superconducting memory, IBM J. Research and Development, 1 (4), 295-303 (1957). 39. A. H. Bobeck, A new storage element suitable for large-sized memory arrays: The twistor, Bell System Tech. J., 36, 1319-1340 (1957). 40. J. von Neumann, Non-linear capacitance or inductance switching, amplifying, and memory organs, U.S. Patent Office, Patent No. 2,815,488, Dec. 3, 1957. ,I"i D DESIGN OF DIGITAL COMPUTERS Chapter 20 Input-Output Equipment for Digital Computers J. K. Brigden I. The Input-Output System 20-01 2. Printed Page 20-06 3. Perforated Tape 20-19 4. Punched Card Machines 20-30 5. Magnetic Tape 20-33 20-44 6. Analog-Digital Conversion Techniques References 20-66 I. THE INPUT-OUTPUT SYSTEM Input-output equipment is a term generally applied to the components of a computing system which are used for the transfer of data to and from the computer and for manipulation of data external to the computer. The requirements for input-output equipment vary considerably depending on the specific application for which the computing system is intended. There are, however, three major areas of application which may be considered: (1) business, (2) scientific, and (3) automatic control. Business Applications. Business computers usually require the most extensive input-output systems. Large amounts of data are frequently associated with a business problem and very often comparatively little computation is required. Thus a large percentage of computer time will be spent conducting input-output operations unless care is taken to provide an adequate input-output system. The following simplified model will serve to illustrate the problem of selecting an input-output system with the appropriate capacity. Let C be the average cost of the COffi20-01 20-02 DESIGN OF DIGITAL COMPUTERS puting system per problem (input-output equipment included) ; then: C = (Te + Tr)(Ce + Cr), where Te = average time per problem required for computation (determined by choice of computer and the class of problems to be solved), Tr = average time per problem required to conduct input-output operations (determined by choice of input-output equipment and the class of problems to be solved), Ce = cost of computer per hour, Cr = cost of input-output equipment per hour. To match the input-output equipment to the computer assume that Ce has been fixed in advance. Further assume that Cr is proportional to the speed of the input-output equipment, i.e., From this one obtains: C = TeCe + k + kCe + TeCr. Cr The value of C,o for which the C0st per problem, C, is minimized in the above expression is given by: Since, for a fixed Cr, k is proportional to T,o, k is, to some extent, a measure. of the average amount of data which must be handled per problem during input-output operations. For a business problem where this amount is large and the time required for computation, T e, is small, it is likely that most optimum use of the computer system will be obtained by using a relatively costly or elaborate input-output system. Scientific Applications. Scientific problems, on the other hand, generally require considerable computation on small amounts of data. From our simple formulation above, one would expect that, for optimum use of the overall system, the input-output system should be relatively small. Considerable programming effort accompanies scientific problems, however, and in utilizing a computer for machine programming, one is again faced with a class of problems whose input-output requirements are similar to those found associated with business problems. In addition to this, scientific problems involving data reduction also have these same characteristics of large amounts of data and relatively short computation times. For these reasons information regarding data reduc- INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-03 tion requirements and the programming techniques which are to be employed should be available prior to establishing the input-output system for the scientific computer. Some scientific computers have also been used in conjunction with analog computers to increase the overall computational capability of both. (See Chap. 30.) In these instances analog-digital conversion units are required as part of the input-output system. Automatic Control Applications. Problems associated with digital control systems very often require large amounts of data to be handled by the computer. Although these data are occasionally in digital form, more often than not the requirement exists for conversion both from and to analog signals. Input from the operator is accomplished much in the same manner as with computers used in other applications. An additional problem associated with the automatic controller input-output system is that the timing of the input and output signals is frequently critical. (See Vol. 3, Chap. 8.) General Requirements for an Input-Output System. In any of the three applications above, the one necessary requirement for an inputoutput system is modification of data from one form to another so it may be accepted by the computer during input operations or presented in usable form during output operations. A second requirement is that the computing system be utilized in a reasonably efficient manner. The most critical problem arises when large amounts of data must be handled at rapid rates. A number of approaches have been taken in meeting this problem, such as increasing the speed and number of input-output devices which are operated with the computer. Although considerable success has been achieved along these lines, the problem is not generally solved by this method alone. Buffer Storage. Another approach has been to install intermediate or buffer storage between the computer and input-output devices. Utilization of this approach provides for more economic use of the computing system in two ways: (1) It allows the programmer greater freedom in executing input-output operations and in many cases permits him to conduct these operations in a more expeditious fashion. (2) Both computation and input-output operations may be carried on for the most part simultaneously. The latter advantage allows the use of input-output equipment which is only as fast as the average rate at which the computer puts data out or takes data in. However, if equipment with only the minimum speed is used, it becomes necessary to provide a buffer storage of considerable capacity if something is to be gained from the first advantage. A compromise is necessary among (1) the cost of input-output equipment, 20-04 DESIGN OF DIGITAL COMPUTERS (2) cost of the buffer storage and its associated control circuitry, (3) cost of computer time which is spent conducting input-output operations, and (4) cost of constraining the programmer in executing these operations. The optimum values of all these factors is difficult if not impossible to calculate, but with sufficient judgment and experience it is possible to arrive at a configuration which is close enough to optimum for all practical purposes. A slightly different method of accomplishing buffer action is to utilize the. main computer storage as the buffer storage also. This is accomplished by establishing appropriate computer control circuitry so that the computer may carryon computation at the same time it is reading data into and out of its main storage. Although this approach does not impose the requirement for an additional independent storage, it does necessitate a considerable amount of control circuitry which is rarely warranted except under most unusual input-output requirements. Another approach has been to utilize comparatively high-speed inputoutput equipment, usually magnetic tape units, for transfer of data to and from the computer and to make use of equipment external to the computer for preparing and reading the magnetic tape. This, in effect, is another method of accomplishing buffer action since the computer is free to proceed with additional computation while the magnetic tape is being processed. Here, one can also note the distinction between on-line and off-line equipment. On-Line Equipment. Equipment that is used for transfer of data to and from the computer and that is directly connected to it is referred to as on-line equipment. When large amounts of data are involved and comparatively little computation is required, on-line equipment should be of the high-speed variety. On the other hand, if only a small portion of computer time is spent conducting input-output operations, it becomes more efficient to utilize slower equipment such as keyboards, typewriters, and printers, and thereby to avoid the expense of extensive off-line equipment. Thus nearly all the different input-output devices are applicable to on-line use, and the selection of any particular device depends on the intended use of the computing system. Off-Line Equipment. Equipment which is used for manipulation of data external to the computer is referred to as off-line equipment. Obviously all the equipment used for on-line purposes can also be used off-line. In fact, a more flexible computing system is obtained by allowing the equipment to be used in either capacity. Aside from the readers and recorders found associated with off-line equipment one also finds various control units which are used to couple the readers and recorders INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-05 together. These control units are occasionally extremely complex and may conduct simple arithmetic operations, change format, and buffer incoming or outgoing data. Equipment which is employed solely in off-line applications is frequently referred to as auxiliary equipment. External Storage Requirements. External storage devices which are not under computer control are an important feature of many computing systems. Although not directly related to input-output operations in the sense of communicating with personnel or equipment outside the computing system, external storage does involve communication with the computer and to some extent manipulation of data external to the computer. Combination of the input-output and external storage functions may result in more optimum use of the equipment available. Requirements for external storage should therefore be considered in establishing the input-output system. Recording Media. Recording media are used extensively in practically all input-output systems and are, therefore, an important design consideration. Since the choice of a particular recording medium dictates to a large extent which type of equipment will be used, one should, of course, consider not only the characteristics of the medium but also the general characteristics of the equipment associated with that medium. Some of the more important items to consider are listed: 1. Compatibility with the computer and other input-output equipment. 2. Form and quality of displayed data or compatibility with the user. 3. Ease of handling and accessibility of data. 4. Erasability. 5. Permanence of record. 6. Durability of recording medium. 7. Storage density or volume of bulk storage for a given amount of data. ' 8. Costs associated with bulk storage of data. 9. Size, weight, and power consumption of equipment. 10. Speed of reading and recording. 11. Reliability and maintainability of equipment, reliability of data obtained. 12. Installation and operating costs of equipment, cost of recording material. The printed page, punched tape, punched cards, and magnetic tape have, in the past, been the most popular recording media. Other media available which hold some promise employ processes such as photography, electrophotography, electrography, and magnetography. 20-06 DESIGN OF DIGITAL COMPUTERS 2. PRINTED PAGE Page Reading Equipment The printed page provides data in one of the more convenient forms for the user and therefore is as important as other digital computer recording media. The major disadvantage associated with this medium is that considerable difficulty has been experienced in designing machines which will read printed data. The basic problem here is one of character recognition. Some success along these lines has been achieved, and commercial print reading machines are available. Of the various approaches taken to solve the problem, three seem most promising: (1) use of a light source and either photoelectric or kinescope sensing, (2) use of magnetic ink and flux sensing, and (3) use of conductive ink and current sensing. All the machines developed so far use matrix printing or a special type font to simplify recognition. Keyhoards The most practical means of reading data from the printed page to machines is by using an operator and keyboard. Most frequently, keyboards are operated off-line and used to enter data on some other recording medium such as punched tape or punched cards. With appropriate buffer storage, however, it may be more practical to avoid the intermediate step by connecting keyboards directly to the computer and operating them on-line. Typewriters, calculators, and keypunches are examples of equipment that have keyboards directly associated with them. Separate units are also available and usually cost under $1000. Mechanical Printers Two general categories of page printing equipment have been developed. Those which make use of mechanical motion of, say, a hammer or type bar to transfer ink to paper are referred to as mechanical printers. The second category makes use of other means for marking the paper and is discussed under the heading of nonmechanical printers in the next section. In selecting the appropriate printing device various general requirements and characteristics should be considered. A number of these are listed below. 1. Mechanism for recording a. Mechanical b. N onmechanical INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-07 2. Mechanism for character selection a. Electromechanical b. Electronic 3. General characteristics of the machine a. Size, weight, and power consumption b. Reliability and maintainability of machine, reliability of data obtained c. Installation and operating costs 4. Recording medium (if other than ordinary paper stock is required) a. Durability of medium b. Permanence of record c. Cost of medium 5. Input a. Serial b. Parallel 6. Output a. Serial-sin-gle action b. Parallel, e.g., line-a-time 7. Line feed a. Intermittent or continuous b. Pin fed, friction fed, or both 8. Lines per inch 9. Line size a. Columns per line b. Columns per inch 10. Form and quality of printed data a. Character size b. Type font or matrix printing c. Registration of characters 11. Speed of printing a. Characters per second b. Lines per second 12. Characters per column a. Numerical b. Alphabetical c. Alphanumerical 13. Number of copies obtained Table 1 lists values for some of the above characteristics which are typical of the various types of mechanical printers. Typewriters. Standard electric typewriters may be used as output printers. These devices are relatively slow compared with other printing machines because they are single action in nature and only one character DESIGN OF DIGITAL COMPUTERS 20-08 TABLE 1. TYPICAL CHARACTERISTICS OF MECHANICAL PRINTERS Typewriters N umber of copies Characters per second Lines per second Characters per column Columns per inch Columns per line Lines per inch Cost, dollars Typical inputs 7 Line-aTime On-the-Fly Matrix 7 4 4-7 1-3 7.5-20 15-350 10-20 10-86 10-47 12, 16 6-10 110-300 5-120 6 6-8 $1000-$3000 $300-$50,000 47 10-64 8-10 6-10 5-120 20-130 5-6 4-8 $100,000$50,000$200,000 $165,000 Keyboard, punched tape Magnetic Magnetic tape, digital tape, digital computer, computer punched cards Punched cards FIG. 1. IBM electric typewriter action. may be printed at a time. Speeds up to twenty characters per second are obtained on some machines, but most of them cannot exceed ten or twelve. Typewriters may also be adapted for use as keyboard input devices. Figure 1 illustrates a method used by IB~1 for mechanizing INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-09 the input and output functions in their typewriter. Only the equipment associated with one type bar has been shown. Pressing the key a very short distance actuates a linkage, which causes a cam to engage the rubber-covered power roll. The motor-driven power roll flips the cam upward until it disengages the roll. This action causes the character to be printed and opens or closes the switch contacts. These contacts may FIG. 2. Mechanical decoder. be used to generate signals for an external device. Energization of the magnet by an external signal actuates the push rod and thus causes the cam to engage the power roll just as if the key were depressed. The mechanism therefore operates as described above, and· data from an external source may be printed out in this fashion. The equipment described above requires a separate signal line for each character which is to be printed from an external source. To avoid this, many typewriters are equipped with a mechanical decoder such as the one illustrated in Fig. 2. This device accepts a binary-coded number which is used to position decoding bars. Projections on the bars are so arranged that only one of a set of seekers is opposite a slot in each bar and can be pulled in by its spring. A bail moving vertically downward 20-10 DESIGN OF DIGITAL COMPUTERS causes this seeker also to move 'do'wilwai'd and engage its key and thus actuate the printing mechanism for the appropriate character. Some typewriters also have provision for incorporating perforated tape punches and readers. The most popular of these is the Flexowriter manufactured by Commercial Controls Corporation. Its basic unit consists of a heavy-duty, motor-driven typewriter capable of printing at a rate of about 9.5 characters per second. This machine receives data through its keyboard or, with appropriate accessories, from a computer or other digital device, or from a punched tape reader which may be mounted directly on the typewriting unit. Its output is in the form of the printed page and, with appropriate accessories, may also include punched tape and signals to a computer or other digital device. The cost of this unit ranges from $1800 to $3100 depending on the accessories purchased. Standard electric typewriters modified for computer applications cost around $1200. Line-a-Time Printers. Machines which print an entire line at one time are referred to as line-a-time printers. Their speeds are in general higher than those of typewriters because the printing operation for each character position on a line is carried out simultaneously rather than individually as is the case with single action machines. There are two basic types of line-a-time printers, (1) type bar printers and (2) type wheel printers. The first of these employs a separate type bar for each character position or column on the line. The type bars each have a complete set of pallets. Printing is accomplished by first positioning the type bars so that the appropriate pallet in each column is directly opposite the paper and then by striking all the pallets simultaneously with a set of hammers. This drives the pallets against the paper, which is held on a platen roll. These machines cost anywhere from $300 to $50,000 or more depending on the number of columns available and the control circuitry required. Printing speeds are about 11/2 lines per second. For greater speeds, use of type wheels in lieu of the bars allows more rapid positioning. Machines of this type cost about the same as type bar machines and can print about twice as fast. Line-a-time printers are often an integral part of desk calculators or tabulating machines and occasionally these machines are used instead of separate printers as output devices for digital computers. On-the-Fly Printers. Printing speeds are limited with line-a-time machines because each printing operation requires acceleration of relatively heavy type bars or type wheels. This difficulty is overcome in the on-the-fly printers by allowing type wheels to rotate continuously. Printing is accomplished by actuating hammers when the appropriate character is opposite the paper. The movement of the hammers drives INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-11 the paper against the type wheel, and the character is thus printed. There are two basic types of on-the-fly printers, (1) multiwheel and (2) single wheel. Figure 3 illustrates a possible mechanization of the multiwheel on-the-fly printer. At an appropriate time data are inserted into the binary counters and the circuit waits for a pulse from the upper pickoff. Upon receipt of this pulse the and gate is enabled and the binary counters begin to count pulses from the lower pickoff. As each Magnetic or photoelectric pickoff One pulse per J revolution L Control signals digital device and printer ~_ _ _ _ _~between : . I::II!~i Type: wheels I I 'III: { ! Jlii: ~~---. Binary counters I Paper anU ri bbon Hammers ..---~""'" '--------' \---------r--------J Input; from digital device FIG. 3. A mechanization of the multiwheel on-the-fiy printer. register overflows, the corresponding hammer solenoid is actuated and the character opposite the hammer at that particular time is printed. Upon receipt of the second pulse from the upper pickoff, the paper is advanced and new data are inserted into the binary registers in preparation for printing the next line. Figure 4 illustrates the single wheel printer and shows the relationship between the paper, print wheel, and hammers. Actuation of the hammers may be controlled in a fashion somewhat similar to that used for the multiwheel printer. For the circuit shown in Fig. 3, however, the counters would have to be started at different times. This would allow for differences in timing that are dependent upon the particular position of each hammer along the line. Potter Instrument Company is the only manufacturer of printers of this type. In general, the speeds of on-the-fly printers vary according to the number of different characters which may be printed in a column. 20-12 DESIGN OF DIGITAL COMPUTERS Photoelectric commutator u FIG. 4. Potter Instrument Company single wheel on-the-fiy printer. Numeric machines with 10 characters per column are capable of speeds between 15 and 20 lines per second whereas alphanumeric printers run at a slower rate somewhere between 7.5 and 15 lines per second. The number of columns per line for this type machine varies between 20 and 130. It can be seen that considerable electronic circuitry is required INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-13 to control and operate these machines when numerous columns are to be printed, and the cost is accordingly quite high compared with line-a-time printers. Typically these machines cost anywhere between $50,000 and $165,000. Matrix Printers. Rather than using type font for printing characters, matrix printers record a number of dots arranged in a 5 X 3 or 7 X 5 matrix. The dots to be printed are selected so as to form an image of the desired character. Although numbers formed using a 5 X 3 matrix are readable, the 7 X 5 matrix yields a much clearer representation for alphanumeric characters. The dots themselves are printed by using small hammers or wires which strike the paper in order to transfer ink to it. Matrix printers are of two types: (1) the simultaneous matrix printer and (2) the scanning matrix printer. The first uses a complete matrix of wires for each column on the line. The second type uses a row of wires which are actuated several times in order to print a single line of characters. Intrinsically printers that employ the matrix technique are capable of speeds which are high compared with other types of mechanical printers. This is because no requirement exists for moving type font in and out of position. In practice, however, speeds for matrix printers rarely exceed those for on-the-fiy machines, and their capabilities are about the same. A notable exception to this is an Eastman Kodak address label printer which produces five columns of data at a rate of 350 lines per second. , Since it is necessary to control somewhere between 5 and 35 hammers or wires per column, the electronic circuitry associated with matrix printers is extensive if numerous columns are to be printed; the cost is correspondingly high. The quality of matrix printing tends to be somewhat inferior to conventional printing, but registration of the characters is generally better than that obtained in using an on-the-fiy machine. Nonmechanical Printers The term nomnechanical printer refers to the class of printers which use means other than mechanical for selecting and transferring characters to be printed. By avoiding the use of mechanical equipment such as hammers and type wheels, this class of equipment provides the fastest means of producing printed data. To accomplish the pI inting operation various processes may be used. Photography, electrophotography, magnetography, and electrography are discussed below. Since two of these methods frequently employ cathode ray tube display devices, a section is also included on this equipment which may also be classed as inputoutput equipment in its own right. In general, attention is focused 20-14 DESIGN OF DIGITAL COMPUTERS toward the printing of numeric or alphanumeric characters. All the methods, however, lend themselves to the printing of binary information, and extremely high recording speeds are possible. In addition, reliable techniques have been developed for reading binary information printed in this fashion. Cathode Ray Tube Display Devices. Conventional cathode ray tubes may be used conveniently for the display of quantities in plotted form. U sing digital to analog converters, 0.1 % accuracies are obtainable on each axis, and the beam may be directed by a 20-bit number to anyone of the spots in a 1024 X 1024 matrix. Alphanumeric characters may be displayed in matrix form by selecting the appropriate spots, but this procedure requires either considerable electronic circuitry or extensive programming. A more practical method for displaying numeric or alphanumeric characters is to employ a shaped beam tube. Typical of these tubes is the Charactron manufactured by the Stromberg-Carlson Division of General Dynamics Corporation. It is illustrated in Fig. 5. The tube uses an electron gun which generates a diffused beam. Deflection plates are employed to direct the beam toward anyone of 64 holes in an aperture plate. This aperture plate shapes the beam, and the desired character is formed. After leaving the aperture, the beam is redirected toward the desired position on the viewing screen. The character may be written at any point on a 1024 X 1024 matrix. One 6-bit number is required for character selection, and up to 20 bits can be used for position selection. Between writing of successive characters a blanking signal is required. An additional feature of this tube is that it may also be used as a conventional cathode ray tube by directing the beam through a round hole in the aperture plate rather than through a shaped character. At present writing speeds on the order of 15,000 to 30,000 characters per second can be obtained, but from 100,000 to 200,000 characters per second should be possible in the future. For use as a display device, tubes of this type have screens up to 19 inches in diameter. Another example of a shaped beam tube is the Typotron manufactured by Hughes Aircraft Company. It is similar in many respects to the tube previously discussed, but it has an additional feature in that characters are retained on the face of the tube until an erase signal is applied. (See Ref. 1.) Photography. One of the more obvious means of recording data displayed on a cathode ray tube is to employ photographic techniques. This approach is particularly desirable if large amounts of data must be filed since extremely high recording densities are obtainable. The procedures employed are fairly standard and so the discussion here is z "C-I b c -I "C -I m -0 C " ~ m Z -I "T1 o ~ o (J) =i » r() o 3: "C-I m ~ Aperture plate FIG 5. Charactron shaped beam tube. The aperture plate matrix has 64 characters and symbols. (Courtesy of Stromberg-Carlson, a division of General Dynamics.) Vl t-.) '? 01 20-16 DESIGN OF DIGITAL COMPUTERS somewhat limited. The chief disadvantage associated with this technique is that the wet developing process is not well suited to printer applications. It is both expensive and cumbersome when employed in a printing device. Electrophotography. The term electrophotography refers to recording techniques which involve the capture of light images on an electrically charged surface and the subsequent development of these images. Electrophobgraphic processes are similar to conventional photographic processes in the sense that a iight source is used to create latent images in some recording medium. The two processes differ, however, in the nature of the latent images that are stored and therefore in the methods Heating pad Drum corona charging elem~ f Coated drum FIG. 6. Xerography. required for development for these images. For printer applications, electrophotography appears superior to conventional photography because the methods required for development do not involve wet processing. Figure 6 illustrates an electrophotographic process developed by the Haloid Company under the name of Xerox. Xerography interpreted literally means dry printing. As seen in Fig. 6, a drum coated with a thin film of photoconductive material is charged just prior to being exposed to a light source. Area upon which the light falls becomes conductive and loses its charge through the drum. The surface of the drum is then brought in contact with a developing powder of opposite charge. The particles of powder cling to the drum until it contacts a roll of paper which is charged so that the particles are transferred to it. The powder images are then fixed on the paper by heating. The StrombergCarlson Division of General Dynamics Corporation has marketed a printer that employs this process and the Charactron display tube. The INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-17 unit costs about $150,000 and is capable of printing eighty-three, 120 column lines per second. Other xerographic machines have been developed which may be used for the duplication of data which have already been printed. In these cases reflected light from the master copy is used in lieu of the cathode ray tube display device. Another example of electrophotographic processes has been developed by RCA under the name of Electrofax. It is .C::::::::::::::(\ Ligiit-V source FIG. 7. Electrofux. similar to the one previously discussed except that the electrostatic image is produced directly on the paper. Figure 7 illustrates this process and shows the various operations which are required. Magnetography. A printing process that has been developed by the General Electric Company involves the use of magnetic materials. Latent magnetic images are recorded on a steel tape that is passed through:a bath of ferromagnetic powder. The small particles of powder cling to the magnetized portions of the steel tape until the tape is pressed against a strip of warm wax paper. At this point the powder is carried away by the paper and secured to it by cooling. The tape is then demagnetized and new images are recorded on it. Figure 8 shows a representation of this process. To record the magnetic images on the tape, a drum is provided which has core pieces mounted upon it, shaped in the . form of characters. A special electromagnet or pulsing shoe is mounted directly opposite the drum on the other side of the steel tape. Pulsing this shoe causes a magnetic image of the particular core piece opposite the shoe at that time to be formed in the steel tape. The relative speeds 20-18 DESIGN OF DIGITAL COMPUTERS of the steel tape and drum must be properly adjusted so that all the different characters on the drum pass each line on tape within range of the pulsing shoe. Timing circuitry is required in order to select the desired character and to position it correctly on the steel tape. Speeds up to 200 lines per second have been reported with this technique. Electrography. This term generally refers to those recording techniques which make use of an electric spark for recording images of characters on a medium. To accomplish this a row of wires is usually placed across the width of the paper which is moved continuously past FIG. 8. Magnetography. the recording head. The characters are printed in matrix form by using the scanning matrix technique. One type of electrographic printing employs Teledeltos paper manufactured by Western Union. This paper is a multilayer material used in facsimile work and contains beneath the light gray reading surface a pitch black layer which is exposed during the sparking process. Atomic Instrument Company has developed a printer that uses this paper. Speeds up to 600 lines per second have been obtained. Another form of electrographic recording has been developed by the Burroughs Corporation (see Ref. 2). Their technique involves the use of paper coated with a thin layer of thermoplastic material of high resistivity. The coating maintains a latent electrostatic image of the character after it has passed through the recording head. The image is made visible by inking with a powder which clings to the charged portion of the medium. The powder is fixed by heating. Speeds in the neighborhood of 5000 characters per second have been reported using only one recording head. INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-19 3. PERFORATED TAPE Types of Perforated Tape Paper is the most frequently used material for punched tape. Mylar plastic bonded to metal foil or paper has also found application. Perforated tape is available in several widths depending on the number (a) (b) 0.500 cv 0.394 boO "0 cv rtl':~oo II boO c: :.a '5 (!:I I 0.100 0.100 -,---+--+++-+++' -U.~.M.~. I I I I I I (c) FIG. 9. Standard punched tape: (a) 5-level tape, (b) 6- and 7-level tape, (c) 8-level tape. of channels used. The number of channels, or levels, is the number of information bits per character. The term character refers to one row of holes across the width of the tape. Five-, six-, seven-, and eight-level tapes are common. For these tapes an additional smaller hole is perforated in each character so that the tape may be conveniently pulled over a reading or recording head. This hole is called ,a feed or sprocket hole. Figure 9 depicts various types of punched tapes and shows the DESIGN OF DIGITAL COMPUTERS 20-20 position of holes. Six-level tap!C has the same measurements as sevenlevel tape but uses only six of the seven hole positions. Table 2 summarizes these data in tabular form. Although Fig. 9 indicates that the sprocket holes are in-line with the information holes, some commercially available punches produce sprocket holes a small distance (0.013 inch) ahead of the information holes. 2. TABLE TYPICAL CHARACTERISTICS OF PERFORATED TAPE Tape width (inches) 5-level 6-level 7-level 8-level Tape thickness (mils) Distance between holes, center to center (inches) Distance between sprocket hole centers and guiding edge of punched tape (inches) Diameter of information holes (inches) . Diameter of sprocket holes (inches) Characters or codes per inch Approximate diameter of punched tape rolls (inches) 1000 ft 250 ft Approximate volume of 1000 pieces of loosely packed chad (waste) (cubic inches) 11 16 7 8" 7 8" 1 3-8 0.100 0.394 0.072 0.046 10 9 4 0.02 Table 3 summarizes the characteristics of typical perforated tape equipment.· TABLE 3. Punches Mechanical readers Photoelectric readers CHARACTERISTICS OF TYPICAL PERFORATED TAPE EQUIPMENT Mechanical Motor Speeds, Characters/ Sec 20-250 Weight, lb 25 Size, cu ft 1 Power, watts 150 Cost, dollars 1000 Motor Solenoid 20-60 20-40 25 2 1 0.05 150 30 1000 800 Motors 150-750 125 3 350 4000 Tape Punches General Characteristics. Commercially available tape punches have maximum speeds which range from 20 to about 250 characters per second. A large majority of them, however, cannot operate faster than 60 characters per second. Punches which fall into this category are generally priced under $1000 whereas a very high-speed punch will cost as much INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-21 as $10,000. Tape punches derive mechanical power from an electrical motor and conduct three basic operations: (1) punching, (2) tape feed, and (3) synchronization or timing control. Some punches are capable of accepting any common width of tape with only minor adjustments while others have been designed to handle only one particular width. Punching Mechanisms. Various means are available to accomplish the basic operation of punching; three illustrative examples of mechanisms which accomplish this function are described below. ~ COde magnet Die~V/?://F.:l!ww) ~Tape Armature u7r~--=-':':--- Punch pin guide (( I I Punch pin guide II I I Latch,lever II \ spnng~ \\ ~:tChlever C FIG. 10. Punching action of the Commercial Controls 20-character-per-second punch. Figure 10 shows a simplified version of the approach taken by Commercial Controls Corporation for their 20-character-per-secont\ punch. Only that equipment necessary to punch one hole is shown. With the latch lever in the latched position indicated by the solid lines, a force is applied at A which drives the punch pin up into the die, thus perforating the tape. In the unlatched position indicated by the dotted lines, a force at A will cause only the punch lever to move and not the punch pin. This is due to the restraining force applied by the punch lever spring. During an appropriate time of the punch cycle positive latching is insured by applying a force to all the latched latch levers at point B. Upon completion of the punch cycle, a force is applied to all latched levers at point C. This action returns the latch levers to the position indicated by the dotted lines in preparation for punching the next character. Figure 11 shows a simplified version of the approach taken by Teletype Corporation for their 60-character-per-second punch. A vertical reciprocating type motion is imparted to the long toggle arm at point A. When the armature and blocking pawl are in the position indicated 20-22 DESIGN OF DIGITAL COMPUTERS by the solid lines, the punch pin is driven through the tape on each downward stroke. When the armature is in the position indicated by the dotted lines, the blocking pawl engages the long toggle arm on its downward stroke and causes the knee to buckle in the direction indicated by the arrow at B. This action prevents appreciable movement of the drag link and thus inhibits the punching of a hole. The long toggle arm Armature I ~ :-L~.t1 ~~~~ I Long toggle arm spring Short toggle arm FIG. 11. Punching action of the Teletype Corporation's 60-character-per-second punch. spring insures that the knee will not buckle when a hole is to be punched. The force applied by this spring is overcome if the blocking pawl has been moved to intercept the downward movement of the long toggle arm. Figure 12 shows a simplified version of an approach taken by Soroban Engineering, Inc., in one of their 240-character-per-second punches. With the interposer in the position indicated by the solid lines, a downward motion of the punch bail drives the punch pin into the die and thus perforates the tape. On the upward stroke of the punch bail, the punch pin is withdrawn from the die. If the interposer is in the position indicated INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-23 by the dotted lines, the punch bail slides along the punch pin, but does not drive it' through the tape. The same punch bail is used to 'drive all the punch pins. At the end of the cycle another bail applies a force to all the interposed interposers at point A, and thus returns them to the position indicdted by the dotted lines in preparation for \ \ I Code I I magnet I I // I I I I 1(. :I,IArmature , :, A~[====~~~~~~~~~==~_ / /1 // II ~_~--.~,' J / ~'-'..'I-~'t> FIG. 12. Punching action of a Soroban 240-character-per-second punch. punching the next character. Considerable effort is required in the design of very high-speed punches to reduce accelerations and impact loads. The motion of the punch bail in this case is fixed by a special cam in order to reduce impact on the interposers. The elimination of springs is also important since they can cause undesirable mechanical resonances. Tape Feed Mechanisms. Various means are available for advancing the tape. A typical method is shown in Fig. 13. In this diagram, the ratchet wheel and sprocket wheel form an integral unit. The feed pawl arm moves under the influence of the feed rod and causes the feed pawl to engage the ratchet. The ratchet rotates in the direction shown. The pins on the sprocket wheel engage the tape feed holes previously punched by the punching mechanism, and the tape is therefore advanced each time the feed rod is actuated. Actuation of the feed rod may be accomplished by a number of means. Frequently, feed magnets are used to control the motion of various mechanical parts which in turn actuate the mechanism. The detent in Fig. 13 insures positive indexing of the ratchet-sprocket combination. 20-24 DESIGN OF DIGITAL COMPUTERS Ratchet wheel FIG. 13. Typical tape feed mechanism. Synchronization and Timing. Requirements for synchronization fall into two general categories: (1) synchronization of input data with the punch and (2) synchronization of the internal elements of the punch with each other. In the first category, some means is required to ensure that the code magnets are energized during the appropriate portion of the punching cycle. A common method of accomplishing this is to mount electric contacts or reluctance pickups on the drive shaft in order to generate timing signals which can be used by the input circuitry. A simplified block diagram of such an approach is illustrated in Fig. 14. It has been assumed that the punch generates two pulses each cycle, a ready signal indicating that the code magnets should be energized by the appropriate word, and a complete signal indicating that the code magnets From computer or other digital device Punch Complete signal Ready signal FIG. 14. Block diagram of synchronizing system. INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-25 should be deenergized. A buffer register has been provided for loading the driver register. Note that in the configuration shown, the time between insertions of words into the buffer register should be at least as great as the time required for one complete punch cycle and that no word should be inserted during the small interval of time required to load the driver register and clear the buffer register. Additional buffer storage is required if it is desirable to accept data at higher instantaneous rates. The average rate at which data are transferred to the punch input circuitry over a long period of time of course cannot exceed the punching speed regardless of the buffer size. Sufficient buffer action is obtained from the two registers shown, however, to gain the following advantages: 1. The computer or digital source of information has been left free between word insertions to accomplish other operations while punching takes place. 2. The punch can record at near its maximum rate and computer operation is inhibited only a small portion of the time. Without proper buffering or timing control it may be impossible to utilize the punch in an efficient manner. This is due to timing uncertainties associated with the time between insertion of data and use of them by the punch. In addition to proper energization of the code magnets, some punches also require external logic to control the actuation of a feed magnet. This may be accomplished by using timing signals from the punch and a signal generated by the data source to indicate that an output operation is being carried out. Synchronization of the internal elements of the punch is accomplished for the most part by mechanical means through the use of linkages, cammed surfaces, etc. Electric contacts, magnets, and electrically operated clutches are also used in some punches to achieve the necessary control. Some of the control requirements are to insure that: 1. The tape is not advanced before the punch pins have been sufficiently withdrawn from the tape. 2. The punching operation does not commence too soon in relation to the normal time that the code magnets are energized. 3. The tape advance has been sufficiently completed before actual punching occurs so as to prevent tearing of the tape. 4. The various operations are carried out in the appropriate order and with a minimum of delay. Tape Readers Commercially available tape readers fall into two general categories: (1) mechanical readers and (2) photoelectric readers, depending on the 20-26 DESIGN OF DIGITAL COMPUTERS method of sensing holes. With photoreaders, sensing is accomplished by using a light source and photoelectric cells. This allows much higher reading speeds than are possible with mechanical readers. A second difference between the two types of readers is the method for transporting the tape. Photoreaders have a more elaborate tape transport system in order to utilize effectively their intrinsic capability of high-speed sensing. Mechanical Tape Readers. Commercially available mechanical readers generally cost less than $1000, and have maximum speeds which range from 20 to 60 characters per second. They employ either a solenoid or motor to obtain the necessary mechanical power. Readers that use motor drive have some form of latching mechanism or clutch in order to control the application of power to the reader. The latching mechanism or clutch is usually actuated by an electromagnet. In general, the motor-driven readers are more appropriate than solenoid-actuated readers in applications which require continuous reading and higher speeds. Readers perform three basic operations: (1) sensing, (2) tape advance, and (3) synchronization or timing control. Tape advance may be accomplished by a number of means. The ratchet-sprocket combination described in the previous section for tape punches is a typical method. Synchronization of the internal elements of the reader is achieved by appropriate mechanical design rather than through the use of electric control circuitry. Synchronization of the reader with external equipment may be accomplished by transmitting a signal to the tape reader each time a character is to be sensed. Higher reading speeds are usually obtainable, however, if the tape reader is allowed to run at its own speed. In this case the external equipment is synchronized to the reader and employs pulses which are generated by the reader each time a character is sensed. In addition, start and stop signals are required from the external equipment in order to initiate or discontinue the reading operation. Mechanical Sensing Mechanisms. Mechanical readers generally sense holes by driving a pin toward the punched tape. Electric contacts are closed if the pin passes through a hole. A typical mechanization of the sensing operation is shown in Fig. 15. It is a simplified version of one employed by the Teletype Corporation. The main bail is common to all the sensing pins and moves with a vertical reciprocating type motion. On its upward stroke it allows the sensing pin to move up under the force of the sensing pin spring. If there is a hole in the tape, the sensing pin continues its upward motion, passing into the hole. The switch bar, which follows the sensing pin, rocks from the spacing contact to the marking contact. If there is no hole in the tape, the INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-27 upward motion of the sensing pin is halted by the tape, and the switch bar remains on the spacing contact. Terminal FIG. 15. A mechanical sensing mechanism for paper tape. Photoelectric Tape Readers. Typical reading speeds for photoelectric tape readers range from 150 to 750 characters per second. Higher speeds are obtainable, however, and up to 2000 characters per second have been successfully read. The cost of these units ranges from $3000 to $5000. Other data concerning them have been provided in Table 4. TABLE 4. . TYPIC.\L CHARACTERISTICS OF COMMERCIAL HIGH-SPEED PHOTOELECTRIC TAPE READERS (TAPE TRANSPORT INCLUDED) Number of channels Ta pe speed (inches per second) Reading speed (characters per second) Start or stop time Stopping distance Tape capacity of transport (feet) Size Weight (pounds) Power requirements (watts) Gost (dollars) 5, 6, 7, or 8 1&--75 150~750 (2000 characters per second possible with some very high-speed photo readers ) Less than 5 milliseconds On the stop character or on the character following the stop character 1000 2 feet of standard relay rack 75-150 100-450 3000-5000 Photoelectric tape readers have three major components: (1) the reading head, (2) the tape drive, and (3) the reel assembly. The last two items make up the tape transport system and are similar in many respects to the tape transports associated with magnetic tape recorders. 20-28 DESIGN OF DIGITAL COMPUTERS Some photoelectric readers are not supplied with a reel assembly, and discussion of this unit is deferred to the section on magnetic tape equipment. Tape Drivers for Photoelectric Readers. These units generally employ a capstan friction drive system to pull the paper past the reading head. Use of friction drive eliminates much of the tape wear experienced with mechanical readers. A means of stopping the tape is also required. Short starting and stopping times are desirable and many photoreaders \ From tape \\ transport Photoreading head assembly ~ fl To tape f transport FIG. 16. Potter tape drive assembly. are capable of stopping and starting without missing a character. This capability eliminates the requirement for leaving blank tape between blocks of data during the recording operation. Two examples of tape drive assemblies are discussed below. The first, pictured in Fig. 16, is one employed by Potter Instrument Company. In the forward mode, the forward solenoid pinches the tape to the lower capstan. In the reverse mode, the reverse solenoid pinches the tape to the upper capstan. The lower capstan is friction driven by the upper capstan, which in turn is driven by a motor. To stop the tape, the brake solenoids operate together to pinch the tape between their pinch rollers and the brake table. Figure 17 illustrates a differential gear arrangement used by Ferranti Ltd., for driving punched tape in their high-speed reader. The input to the differential gear is driven by a continuously running motor. One output shaft of the differential gear is used as a combined tape drive and brake. The other output shaft is used as a clutch drum. The tape drive and brake drum is started or stopped by the application of electromechanically operated brakes to one or the other of the output INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-29 shafts. The brake coils are driven by a flip-flop so that at any particular time one and only one brake is actuated. Pbotoreading Heads. Reading head assemblies for photoelectric tape readers consist of a light source, a bank of photoelectric cells, and the equipment necessary to focus the light through the perforated holes onto the photo cells. One cell is used for each information channel, and Differential gear assembly. Spring loaded tape pressure roller Tape FIG. 17. Ferranti tape drive assembly. one is used for the sprocket channel. The signal obtained from the sprocket channel is used for control purposes. Both photoconductive and photovoltaic devices have been successfully employed. Some readers have been provided with a mechanical light chopper. 1Vlodulation of the light source in this fashion allows a-c amplification and eliminates drift problems due to temperature variations of the photocells. Auxiliary Equipment Auxiliary equipment associated with punched tape includes the following items: 1. K.ey punches. Consists of a keyboard, tape punch, and control circuitry necessary to prepare tape manually. Typewriters are frequently used in this application. Occasionally a mechanical reader is also provided so that the data being punched may be compared with another tape for verific;ation purposes. 2. Comparators. Consists of two readers (sometimes one dual mechanical reader) and the circuitry necessary for comparison of two tapes. 3. Reproducers. Consists of reader, punch, and circuitry necessary for reproduction of tapes. 4. Converters. Consists of a reader or punch and equipment associated with some other recording medium. Used to transfer data to and from other recQrding media. 20-30 DESIGN OF DIGITAL COMPUTERS 4. PUNCHED CARD MACHINES Punched Cards Of the several types of punched cards which are available for various machine accounting systems, two have found the widest use in digital computer applications. The first of these is manufactured by IBM and 0123456789 ABC 0 EFGH 1 J K L I.INOPQR S TUVWXYZ 111111111 111111111 I DDDGO DDDDDDDDDDOD ODD DOD DODO ODD 00000000000000000000000000000000000 DODO D0 11111111 •• n ••• fluaM •• U••• "UUMs.n ••• ~aaNe.n •• ~"nnuft~nnn. IJI.I"II~"n"M"U"UU.flDDMB.naa.~»D~ 1 1111111111111111111111111111111111111111111111111111111111111111111111111111111 2 212 %2 2 2 2 2 2 ~ 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 2 2 212 2 2 2 2 Z2 212 2 2 2 2 2 2 12 2 2 2 2 2 2 33 313 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 33 3 3 3 3 3 3 3 3 313 3 3 3 3333133333331333333 44441444444444444444444444444444444444444444444444444444414444444414444444144444 5 5 5 5 515 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5,5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 55 5 5 5 5 5 5 5 5 5 5 5 5 15 5 5 5 5 5 5 5 15 5 5 5 5 5 5 15 5 5 5 1& &&6& 1& &i &&&&& 6 &6 6 6 6 6 &6 6 6 6 66 6 6 6 6& 6 5,6 6& 66 6& 66 &66 6 6 66 && 6 &6 6 6161 6 6 6 6 6 &16 66 6 6 6 616 6 6 1777777177 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 717 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 717 7 7 71 7 7 717 7 7 7 7 7 717 7 1111111111111118 811118811111111111181111111111111111111111111 BUIIIIIIIIIII, I'll III II 1111199 9 9 99 9 9 99 99 9 9999 99 9 9 9 9199 9 9919 9919 99 9919999999999 9 919 9 919 9 9 919 9 9119 91 111.11111~"""""~"~~a~DnMa.n.am"aa~ •• n ••• ~GUM •• " ••• ~UUM •• n ••• ~aAM •• n •• ~"nn"n.nn". 0123456789 • / I. !. I. 1.1. I. I. 1.1. 1.1. 1.1.1.1.,1.1.1.1.1• • • 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.,,1,1.1,1.1. ~~~~~~~~~~~~~~~~~~~~~~ • • ~h~~~~~~h~~~~hh~hhhh~ , 2 , • 5 I , I 9 to 1t 11 U U " 18 " tI " . . 2t __ IS __ 2S _ _ _ U 2t 10 ! t !It H ......... ... .. :u H ,. n ,. H '0 . , .u ., .u B ABCO£FGHI~K~MNOPQR5TUVWXYZ ~ ••• ••• ~~~~~~~~~~~~~~ ~~ ~ !6 !6 !6 !6 !6 !6 !6 !6 16 !6 • • ! • • !6 !6 • ~~~ 9 .... , 9 •• 9 9 9 9 9 ~ "·50 51'51 !n , .. 9.9 !IS S' 9 "S. 9 !6 • ~ • ~.~~~~~~~~~~ !. !6 !. ! • • !. !. !6'!6 !6 !6 !6 !. !. ~~~hhh~ • • • • • • h • • h.h~h~h~hhh 9.9 SI'O ~~.~ ! • • • • !6 • • !6 !6 • =~~~~~~~~~~~~.~~ '~9 Q. ••••• lZ-1i-.i-iili-_ ii ii' ii i;1I1Jtz-ii1z" fjitiz- iz-_iz- it it iz -~-_-i2-_-_-i2-t-; -l'2-ii -1;-1~-li-t;i21;ii"i; lili1z- iz 9 9 ""2""'" 9 • • 9.9 I!I 9 9 9 9.9.9 ••• 9 l i e " Ie "''70 71 717' , , , ' n '7, 9 7 ' ' ' ' ' ' 1 1 0 ".t" •• " 9 9 •• IS 99999 18"81" •• ·.0 Thickness, 0.0070" to 0.0067"; width, 314"; length, 7%". FIG. 18. Standard punched cards: (a) IBM, (b) Remington Rand. the other by Remington Rand. They are the same size and both cost approximately $1.50 per thousand. They differ however in the format used for punching data. The IBM card has 80 columns with 12 positions for rectangular holes in each column, while the Remington Rand -card uses 90 columns each with 6 positions for round holes. Figure 18 shows INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-31 these cards with their measurements and illustrates the standard code used for recording alphanumeric data on each of the cards. Of course other codes are also possible and frequently used particularly when binary data must be recorded. (See Chap. 5.) Punched Card Readers Card readers may be used in both on-line and off-line applications. When used for off-line purposes, they are generally associated with other equipment such as that discussed in the paragraph on auxiliary punched card equipment. There are a number of different techniques for reading cards. The most common of these involves the use of mechanical brushes which sense the holes. Electric contact is usually made through the hole or less frequently in a fashion similar to that described for punched tape readers. Other reading techniques involve photoelectric or electrostatic sensing. These machines are capable of speeds which range from 100 to 1000 cards per minute. They cost in the neighborhood of $40t)00. Card Punches Card punches, like card readers, may be found in both on-line and off-line applications. Their speeds are slower than readers, however, and range between 100 and 200 cards per minute. When used for off-line purposes, they are generally associated with other equipment such as that discussed in the next section. The price of these units is in the neighborhood of $30,000. Additional information on card punches and card readers may be found in Chap. 5. Auxiliary Equipment Aside from readers and punches there are numerous other types of punched card equipment which have been developed for machine accounting systems prior to the advent of the large-scale digital computer. In addition, conversion equipment has been developed for· transferring data between punched cards and other recording media. All these units make use of either a card reader, a card punch, or both, but they have additional equipment associated with them for accomplishing various other functions. Since these functions may be found useful in off-line digital compute! applications, a number of them are discussed below. Key Punches. These machines have a keyboard, a card punch, and the control equipment necessary for manual preparation of cards. Some have a small mechanical storage which may be set and used to punch any data which are identical on all the cards being prepared. Other key punches are capable of printing the data on the card or interpreting while the punching operation takes place. Operator speeds for these 20-32 DESIGN OF DIGITAL COMPUTERS machines of course varies widely; a good operator, however, should be able to punch roughly 125 eighty-column cards per hour. Verifiers. These' machines are used to verify the correctness of holes punched in cards which have been prepared by an operator. There are various methods whereby this is accomplished, but in general it amounts to another keying operation in which the second version is compared with the first. Errors are indicated by locking the keyboard or by other appropriate means. Verifiers are frequently combined with a key punch to form a single unit capable of both functions. Reproducing Punches. These machines have a card reader, a card punch, and the control equipment necessary for duplicating punched cards. Some have additional readers and capabilities for collating, comparison, addition, and subtraction. Most of them are capable of reproducing cards at a rate of at least 100 per minute. Tabulators. Tabulating machines generally include several card readers and a line-a-time printer. (See Sect. 2, Mechanical Printers.) Data may be read from the cards and printed out for visual study. In addition these machines also have the capability of following instructions on the cards and adding or subtracting numbers as required by these instructions. Results of the computation and information in alphabetical form can be printed out. The usual speed for these machines is 150 cards per minute. Sunlmary Punches. Results and other data obtained by tabulators may be punched onto cards with summary punches. These machines are not capable of reading cards as is the case with reproducing punches. Sorters. Card sorters have a card reader and the appropriate equipment for separating cards according to the data on them. Sorting of the cards usually requires one pass per column. Speeds up to 1000 cards per minute are possible on some card sorters. Collators. These machines employ two separate magazines for the cards, and are capable of. accomplishing more complicated rearrangements of cards than is possible with sorters. Sets of cards are read and then merged or separated depending on how the data compare. Collators also have the capability of checking the sequence of cards in the magazine. They are capable of speeds of about 250 cards per minute. Interpreters. Punched data may be read by these machines and printed on the same or different cards at a rate of approximately 100 cards per minute. Calculating Punches. These machines are basically small digital computers. They read numerical data and instructions from punched cards, perform various arithmetic operations, and punch out the results. INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-33 Converters. A large variety of equipment has been developed for transferring data back and forth between punch cards and other recording media such as punched tape and magnetic tape. Equipment is also available for transferring data between IBlVI and Remington Rand cards. Digital to analog converters have been incorporated with punched card readers for obtaining signals which may be used with plotting devices. 5. MAGNETIC TAPE Magnetic Tape Description Magnetic tape employed in computer applications generally consists of a cellulose acetate or polyester base of about 1.5 mils thickness and a magnetic coating which may be from 0.3 to 0.7 mil in thickness. The magnetic coating is made up of finely divided iron oxide particles embedded in a binder such as vinyl resin. The particles themselves are less than 0.7 micron in length and are generally about one-quarter of that in thickness. The coatings are roughly 75% iron oxide by weight and 50% by volume. Of the two bases, cellulose acetate and polyester, the latter appears to have better properties for magnetic tape. The polyester, or Mylar (DuPont trade name) as it is usually called, is more immune to changes in physical dimensions due to environmental conditions. l\1agnetic tape has also been made with a nonmagnetic metal base plated with a magnetic material. Only a few of the commercially available tape readers, however, have been specifically designed to use this type of tape. Rolls of plastic tape are available in lengths up to 5000 feet for the 1.5-mil base tapes and 7200 feet for the 1.0-mil tapes. Common widths vary between lti and 1 inch. A major problem associated with magnetic tape recording is concerned with blemishes and imperfections in the tape that hinder proper recording. The problem has been severe enough that, in some instances, imperfections have been marked and equipment provided to avoid recording over the imperfect areas. Various other characteristics which are representative of commercially available plastic base tapes have been listed in Table 5. Magnetic Heads Small electromagnets or heads, as they are called, are used to record, read, and erase data on magnetic tape. (See also Chap. 19.) The heads are grouped together to form head stacks. These stacks may contain anywhere from 15 to 30 heads per inch; thus, for example, from 7 to 15 tracks can be recorded on Y2-inch tape. Table 6 provides data for a typical magnetic head stack. However, since the design of heads varies considerably throughout the industry and differs depending on whether the 20-34 DESIGN OF DIGITAL COMPUTERS TABLE 5. CHARACTERISTICS OF TYPICAL PLASTIC BASE MAGNETIC TAPE Polyester Typical thicknesses (mils) Base Coating Total Tensile strength (pounds per i-in. tape) 70°F 50% relative humidity 70°F 90% relative humidity 140°F 50% relative humidity Yield strength (pounds per i-in. tape 5% stretch) 70°F 50% relative humidity 70°F 90% relative humidity Coefficient of expansion Humidity (per % relative humidity) Temperature (per OF) Approximate cost ($ per inch 2 ; the price per inch 2 is greater for long or wide tapes) Common lengths (feet) Coefficient of friction Safe temperature limits (OF) Standard widths (inches) Reel size (inches) 2500 ft. 5000 ft Coercive force (oersteds) Remanence (maxwells) Retentivity (gausses) Approximate number of errors per 2500-ft roll with 100 bits per inch at 60 in. per second with two 50mil heads per i-in. tape TABLE 6. Cellulose Acetate 1.0 0.35 1.35 1.5 0.6 2.1 1.5 0.6 2.1 7.3 7.3 6.0 12.0 12.0 10.0 5.6 4.2 4.4 4.0 4.0 5.7 5.7 4.7 3.0 1 X 10- 5 2 X 10- 5 15 X 10- 5 3 X 10- 5 1 X 10- 5 2 X 10- 5 0.0018 0.0022 0.0015 1200-7200 1200-5000 1200-5000 0.2 -40 to 160 1, !, t t l (+0.000 in., -0.004 in.) 10! 14 250 0.7 800 2 CHARACTERISTICS OF TYPICAL MAGNETIC HEAD STACK Gap scatter (inches) Gap azimuth (degrees) Gap width (mils) Track width (mils) Track spacing (mils) Inductance (millihenries) Resistance (ohms) ±0.00005 ±0.02 0.3 50 70 10 15 head is used for reading or recording, wide variations are to be expected from some of the data given. Head Design. Some of the considerations which go into the design of magnetic heads are as follows: INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-35 1. The poles of the magnet are arranged in the direction shown in Fig. 19 since higher bit densities can be achieved with the axis of the magnet in this direction. 2. To allow the use of low writing currents and to obtain higher reading voltages the reluctance of the magnetic path should be low. This dictates a short path and use of a magnetic material with high permeability. 3. Low writing currents and high E 1 reading voltages may also be obtained Direction of tape movement by increasing the number of turns. A compromise is necessary in this area, FIG. 19. Magnetic head. however, since both inductance and mechanical size are increased as the number of turns are increased. 4. The head construction should take into account the frequency response required for digital recording. 5. The magnetic material should have a high resistivity so as to limit losses due to eddy currents. 6. Track width should be small for high bit densities, but a compromise must be established since the output voltage is decreased as the track width is made smaller. 7. Appropriate consideration must be given to the reduction of cross talk between heads in the same headstack. 8. Mechanical design is one of the more critical factors. The tolerances are small, and the design must be extremely compact. In addition the metal surface over which the tape moves must be prepared carefully. Methods of Reading and Recording Various methods exist for recording digital data on a magnetic medium and for extracting these data from the output voltage obtained during a reading operation. A number of these are discussed below. Some of the various characteristics which should be considered in selecting any particular method are as follows: (1) requirements for erasing, (2) requirements for a synchronization track, (3) recording density obtainable, (4) amount of circuitry required, and (5) reliability. The writing currents for various recording techniques ai'e summarized at the end of this section in Fig. 23. Polarizd Dipole Method. For this method, the direction of magnetization of small dipoles is used to differentiate between D's and l's. The tape is magnetized by current pulses which may be positive or DESIGN OF DIGITAL COMPUTERS 20-36 negative depending on whether a 1 or a 0 is to be recorded. Figure 20a illustrates the waveform of the writing current and Fig. 20b indicates roughly what the waveform of the reading or output voltage will be if the bits are not packed too closely together. Note that the current in the writing head goes to 0 after each bit is recorded. This is a property of a class of recording methods known as return to zero or RZ methods. o 0 0 I0 0 I I (a) Writing current I , I I I I I I I I I I 1\' RlJ\ I , I I I ,I I I I I I I I 'I I f\ I 1\1/\ iJ\ 11\ I I 'I I f\lJ\ I ' I I I (b) Reading voltage K[!t'WKri 'if'I V:I V,V II VII I I I I I (c) Reading voltage I I I I I I I' I (d) Reading voltage FIG 20. Polarized dipole method. Reading voltages are for different recording densities. Of the various RZ methods, the polarized dipole method is the most commonly used. Conventional pulse techniques can be used to extract data from the waveform shown in Fig. 20b, and numerous methods are possible. Note that a synchronizing signal is not required to complete the extraction process. Three levels of magnetization are involved, and complete erasure is necessary before recording. High-Density Recording. With increased packing density certain refinements in extraction techniques become more important. Figure 20c and Fig. 20d give some indication of the appearance of the output voltage waveforms which are obtained if the bits are packed closer together. As packing density increases, a sequence of identical bits has a tendency to become one large dipole rather than a series of individual dipoles. For this reason, the magnitude of flux change and, therefore, the magnitude of the output voltage are greatest at points between dissimilar hits and least in the middle of long sequences of identical bits .. A common property of all the output waveforms shown is that cells which contain l's generate a signal which is more positive in the first INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-37 half of the cell than in the second half. The opposite is true for cells containing a O. This fact is frequently used to advantage in extracting data from the output signal. By delaying the output signal and subtracting it from itself, a difference signal is obtained which is positive or negative depending on whether a 1 or a 0 has been stored. This difference signal may be amplified, clipped, and then sampled at the appropriate time to obtain the digital data. This procedure requires a synchronizing pulse to insure that sampling takes place at the proper time. A time delay which corresponds to one-half a cell will usually be appropriate. Note that as the delay decreases the magnitude of the difference signal also decreases and a corresponding increase in amplification is required. As the delay approaches zero, this procedure amounts to taking the derivative of the output signal, and difficulties due to noise may be encountered. It was previously noted that the magnitude of the output voltage would become small in the middle of long sequences of identical bits. In some cases, therefore, it will be impossible to determine whether the difference signal "indicates a 1 or a O. Since this situation should arise only in a sequence of identical bits, the difficulty may be avoided by providing logical circuitry which changes any indeterminate bit to correspond to its predecessor. Recording densities up to 900 bits per inch have been achieved using the polarized dipole method, but in practice densities greater than 200 bits per inch are rarely used. Dipole Method. When dipoles are recorded on the tape to represent 1's and nothing is recorded for O's, the recording method may be referred to as the dipole method. In its simplest form, this method involves the erasure of the tape prior to use. Erasing may be accomplished by using an alternating current to obtain an unmagnetized surface or by using a direct current which will saturate the medium in a direction opposite to that which will be employed to record the dipole. Figure 23b illustrates what the writing current will be in this case. Note that the current returns to zero after each pulse; hence this is an RZ method. A variation of this method which eliminates the need for erasure prior to use is to maintain a d-c bias in the head at all times during the recording operation. The direction of current is switched momentarily when it is desired to record a dipole representing a 1. This variation is referred to as the modified dipole method in Fig. 23c, which shows the writing current used for this approach. The voltage waveform obtained by using the dipole method is similar to that shown for the polarized dipole method in Fig. 20b, except that no signal is obtained in cells which contain a O. To detect O's, therefore, a synchronizing signal is required. DESIGN OF DIGITAL COMPUTERS 20-38 Non-Return to Zero Method. The term non-return to zero, or NRZ, refers to a characteristic of several recording methods in which the direction of the current is switched in an appropriate fashion to record information, but the magnitude of the current does not remain at zero for an appreciable amount of time. In general, NRZ methods require a synchronizing signal and have heavier recording head duty cycles than I I 0 I I 0 1 I0 I 0 1 1 0 I I (a) Writing current I (b) Reading voltage (c) Reading voltage FIG. 21. NRZ method of recording. the RZ methods. Advantages of the NRZ methods over RZ methods are: (1) the erasure of previous information stored on the tape is more complete and may be conducted during the reading operation, and (2) increased bit densities may be obtained while still using conventional pulse techniques. The most common NRZ method makes use of the direction of magnetization to determine whether l's or O's are recorded. Although the term NRZ refers to a general class of recording techniques, it may also be used in reference to only this particular method. The writing current for this method is depicted in Fig. 21a. The output voltage waveform has been illustrated in Fig. 21b. Conventional pulse techniques may be used to extract the data from this signal, and since the flux changes at a maximum of only once per cell, bit density may be approximately twice that for the polarized dipole method using conventional circuits. Figure 21c illustrates the appearance of the output voltage waveform when the bits are packed closer together. Data extraction in this case may be accomplished in a fashion similar to that discussed for high density INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-39 extraction in the polarized dipole method. Note the similarities between the waveforms for both methods at high bit densities. Although high bit densities may be achieved with the NRZ method, bit densities greater than 400 per inch are rarely used in practice. Change-on-One or NRZI Method. A variation of the NRZ method of recording is to change the direction of the writing current each time a 1 is to be recorded. This approach is known as the NRZI method where the I represents the word invert. Figure 23e illustrates the writing current for this method. Techniques for data extraction are similar to (a) Writing current (b) Reading voltage o FIG. 22. a o 1 0 1 Manchester recording method. those discussed previously. If a number of bits are to be recorded simultaneously across the width of the tape, use of this method may be advantageous since a code may be easily devised in such a way that there will be at least one 1 at every character position along the length of the tape. This procedure eliminates the need for a separate timing track. Phase Modulation or Manchester Method. To avoid difficulties experienced when long sequences of identical bits are recorded by the methods discussed previously, the phase modulation method may be employed. vVith this system a 1 is recorded by sending current through the head in the positive direction for the first half of the digit interval and in the negative direction for the second half. Zeros are recorded in the same manner except that the phase is shifted 180 degrees. Figure 22a illustrates the writi~g current for this method. Figure 22b gives some indication of the output voltage waveform. Note that the voltage in the center of each digit interval is positive for l's and negative for O's. This signal may be amplified, clipped, and then sampled at the appropriate time to obtain the digital data. There are also other means of extracting data from this signal which are similar to those already discussed for previous recording methods. The approach discussed here DESIGN OF DIGITAL COMPUTERS 20-40 (a) Polarized dipole-method I 1 I I I , I I I t I I lIt, I I I I I I I I', I I lIt t I ' I I , I I I 1 ' I I I , I I I I I I I I I I 1111 I I I I I I I I , I I I I I I I I , I I I I I I I I I I I I I I I I I I I ' I I , I I I :n! I Ininlni 'nlni i -H14-~ (b) Dipole method (c) Modified dipole method rTTTjTTTTITIT I I I I ' I I I I I I ' I I I I , , I I. , I , I I I , I I I I I I I I I I I I I I , I I I I I I I ,I," I ,I , ~'~: : I !~qJjJ I,Lf 111'lml'l I I I I : I I,' I I n-ti ' I I " , , ~ ,1=R (d) NRZ- I I '.1 I' I I , I 1'1 I I I I I I lnI I I I I I +nn I I H ,4tt ,\=W ~I II I II I I I I I I I FA III cittlH III Ii i~ r=PIIU~!i: 11q:t1 I , i I, i I I Ii; ; i I I iii I I I I, (e) NRZI II I I (f) Manchester method I I I I I I 'I' I I I I, (g) Frequency doubling method I I, I 1 I I I I I , , I' I I I II II II I I I I " I ,I I I 'I 1 I I I I I II r I I I , , I 10 [0 iOn! Or 0: 10DI 10 iOo! !O 10 10 1001 01 0 10 10 I 10 IU IUOI 01 U' ,IU IIU ,IUU'I IIUUII OrI I'00 I UI oiI n ii' , I I I I- UI, UII 1 1 I 10' 0 '110 10 111111' 01111 10 10101110 I 0 111010 I FIG. 23. Writing currents for various recording techniques. is an NRZ method; a similar technique has been developed which involves phase modulation using RZ recording. Frequency Doubling Method. Figure 23g illustrates the writing current for this method of recording. At high bit densities, where this method is used, the frequency associated with a 0 will be twice that associated with a 1. Through use of appropriate circuitry, data have been extracted from signals for bit densities as high as 1100 per inch. Tape Transports The term tape transport refers to the equipment used to hold the tape and move it past the head. Transports consist of two maj or units: (1) the tape drive and (2) the tape reel assembly. The drive unit is required for starting and stopping the tape, moving it past the head, and for controlling tape speed. Except for the considerable emphasis on short starting and stopping times mechanical configurations for magnetic tape drives are somewhat similar to those used in photoelectric tape units; the reader is therefore referred to that section for additional information. Magnetic tape reel units are also similar to their counterpart in photoelectric readers; they supply and take up tape as required INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-41 by the drive unit. Since it is required to accelerate the tape rapidly during start and stop operations, reel units are designed to maintain slack tape between the reels and tape drive assembly. This allows the reels to accelerate more slowly than the tape and is desirable because of the relatively high inertia of the loaded reels and motors which drive them. The speeds of these motors are controlled by sensing the amount of tape which has been left slack. A number of different sensing techniques have been employed. Use of the follower arms is most common; FIG. 24. Follower arm tape transport system. other methods include pneumatic control, photoelectric sensing, and weight measurement (Ref. 3). Figure 24 depicts the front panel of a transport system that uses follower arms. The arms are spring loaded and move back and forth maintaining tape tension at about 11/2 ounces. The positions of the follower arms are sensed, and the signals generated are used to control the speed of the reel motors. vVhen sudden changes in tape speed take place, the movement of the arms acts as a buffer, and they either let out or take up slack until the reel motors catch up. Table 7 lists various characteristics of typical commercially available magnetic tape transport systems which employ follower arms. Figure 25 shows a transport system that employs pneumatic control. The tape is drawn into columns by a vacuum, and pressure-sensitive DESIGN OF DIGITAL COMPUTERS 20-42 TABLE 7. TYPICAL CHARACTERISTICS OF MAGNETIC TAPE TRANSPORTS Typical tape widths (inches) N umber of tracks Typical tape speeds (inches/second) (rewind speeds may be higher) Stop and start time (milliseconds) Tape capacity Size Weight (pounds) Power (watts) Cost (dollars) Reels t,i,!,1 6-20 15, 30, 60, 75, 100, 150 5.0-1.5 2500 ft on lO!-in. reels 2 ft of standard relay rack; depth 1 ft 150 500 30'00-20,000 switches determine whether the slack tape supply is above or below a predetermined level. These switches are used to control the reel motors and thus regulate the supply of tape. Transports which use pneumatic control are generally larger and heavier than the follower arm variety, but they often have the capability of higher speeds with shorter starting and stopping times. Auxiliary Equipment Tape drive unit ~~...:-- Tape loops Surge tanks Auxiliary equipment involving magnetic tape units generally falls into the category of conversion equipment for transferring data to or from the printed page, punched tape, and punched cards. Since the reading and recording speed for magnetic tape units is considerably higher than for the other media, buffer storage is frequently desirable, and the units may be both complex and expensive. There are also commercially available units for direct keyboard input to magnetic tape. These units do not employ a buffer storage, but instead move the tape intermittently once for each character (Ref. 4). Magnetic Cards FIG. 25. Pneumatically controlled tape transport system. A recent development in the area of magnetic recording equipment has INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-43 been the Magnacard system produced by the Magnavox Company. This equipment makes use of a magnetic card which consists of a Mylar base (0.005 in.) with a ferric oxide coating (0.0007 in.) protected by a Mylar overlay (0.0005 in.). The card measures 1 in. by 3 in., has 17 tracks arranged along the length of the card, and has a capacity of 1000 decimal digits. These cards are arranged in stacks and are transferred to rotating vacuum drums which move the cards to the desired locations. The machines are capable of transferring cards between feed-stack stations, past reading or recording heads, or between drums. Four basic units have been made a vaila ble. 1. The Transcriber handles input-output operations. It consists of two vacuum drums, one feed station, one stack station, a reading head, a recording head, and a drum-to-drum transfer station. Cards are taken from the feed station, passed under the reading and recording heads, and subsequently transferred to the stack station. Data may be recorded on the cards or read from the cards; it is also possible to verify what has been recorded. The cards are handled at a rate of 100 cards per second. 2. The Collator accomplishes all card rearrangement functions, including sorting, merging, and selection. It consists of four vacuum drums, four double drum-to-drum transfer stations, five reversible feed-stack stations, two reading heads, one recording head, and two hold stations. The unit is capable of executing its operations under control of data read from the cards. The speed of the various operations which are conducted on this machine depends on the number of passes which are required. A typical decimal sorting operation requires four passes, giving an effective speed of 1500 cards per minute for each digit. 3. The File Block is a large capacity magnetic card filing device for use with the collator. It consists of two rectangular arrays of 51 magnetic card trays; each tray contains up to 3000 cards. The unit measures 28 in. by 24 in. by 31 in. In operation the file block is attached to a collator. All positioning and selection of trays is under program control. The tray array within the file block cabinet is positioned horizontally and vertically to the desired tray, which is then automatically pulled into the master feeding station of the collator. Processing of cards in the tray commences as described for the collator. After processing, the tray is automatically reinserted into the file, and positioning of the next tray begins. Positioning, tray extraction, and reinsertion operations require about five seconds for each tray. 4. The Interrogation File is a rapid access magnetic card file. It consists of a set of 40 trays, each holding 3000 magnetic cards, and a vacuum drum array which includes four drums, two reversible feed-stack stations, a reading head, a writing head, one hold station, three drum-to-drum 20-44 DESIGN OF DIGITAL COMPUTERS transfer stations, and one special file access station. The trays are arranged with one side open to the drum array to permit access to a segment of 100 cards at a time. All positioning, selection, and processing are under program control. In operation, the file is positioned vertically to a desired tray, and horizontally to a desired index position within the tray. The set of 100 cards is located and extracted, and cards are fed continuously into the vacuum drum array. When a match is found, the feed is stopped and the desired card circulates on a drum for processing. Information can be read, recorded, and verified. When this processing is completed, feed is again started and transfer is reinstated from drum to drum; cards are finally stacked in the original order in the file. The interrogation file also can be used for merging new cards into the file, extraction, and other typical card-handling functions. 6. ANALOG-DIGITAL CONVERSION TECHNIQUES General Considerations Definitions. An analog to digital (AID) converter is a device which converts analog quantities or measurements into digital numbers. It may be part of some measuring equipment or a separate unit, and is often referred to as a coder. Digital to analog (DI A) converters or decoders perform the opposite function. The term analog-digital conversion refers to both processes and does not specify the direction in which the transformation takes place. Areas of Application. There are three major classes of systems which require analog-digital conversion equipment as shown in Table 8. In certain of these applications, digital computers play an important role, and the conversion equipment forms a part of the computer's inputoutput system. In the area of data handling, conversion equipment may be used on-line, but it is more often found associated with off-line equipment. In the other categories, conversion equipment associated with digital computers is usually operated on-line. Characteristics of Conversion Equipment. In evaluating the features and performance of conversion equipment the following characteristics are normally considered. 1. Form of Analog Data. This characteristic refers to the type of analog data found associated with the analog-digital conversion equipment. Time, frequency, voltage, and shaft position are the most common quantities, and other forms of analog data are most frequently obtained or derived from these. 2. Range of Analog Data. The term range refers to the limits in magnitude between which the analog signal may vary. INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-45 3. Digital Code. Decimal, straight binary, cyclic binary, and the 8421 code are the most frequently used. The decimal code requires ten lines for each digit, but is the most desirable when data are to be TABLE 8. ApPLICATIONS OF ANALOG-DIGITAL CONVERSION EQUIPMENT System Application Data handling systems Data transmission Inputs Outputs Conversion Required Associated with Digital Computers Examples A, D A, D A/D, D/A Rarely Data logging A D A/D Occasionally Data reduction A D A display A/D, D / A Frequently D A D/A Occasionally A, D A A/D, D/A Frequently A, D A/D, D/A Invariably Computing installations (see Chap. A A/D, D/A Never Function generators, multipliers (see Chap. Digital control systems Programmed control Feedback control Computing systems Combined analogA, D digital computation Telemetry, PCM Process data logging Engine tests, wind tunnel, aircraft and missile tests Machine tool control, aircraft and missile checkout Aircraft flight, missile guidance, chemical processes 30) Analog computer devices A, D 23) displayed. The 8421 code is next most desirable for data display, and the straight binary code is the most suitable one for use as a digital computer input. Table 9 provides a comparison of these codes for numbers up to fifteen. For additional information concerning codes see Chap. 12. 4. Number of Bits. The precision of conversion equipment is largely determined by the number of bits (binary digits) generated or used. 5. Quantization Error. With AID converters the most precise measurement which can be made corresponds to the least significant bit. Error in measurement due to this limited precision is frequently referred to as quantization error. 6. Accuracy. This term refers to the correctness of the measurements rather than to their precision. Since some conversion equipment has a 20-46 TABLE DESIGN OF DIGITAL COMPUTERS 9. COMMON DIGITAL CODES EMPLOYED WITH ANALOG-DIGITAL CONVERSION EQUIPMENT Decimal 0 1 n ~ 3 4 5 6 7 8 9 10 11 12 13 14 15 Straight Binary 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Cyclic Binary 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 8421 0000 0000 0000 0000 . 0000 0000 0000 0000 0000 0000 0001 0001 0001 0001 0001 0001 Code 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0000 0001 0010 0011 0100 0101 tendency to drift, it is often important to speak of accuracy over a given period of time without adjustment or calibration. 7. Holding Characteristics. Frequently it is necessary to hold the input signal to an AID converter constant during the time conversion takes place. Requirements for holding and the manner in which it may be accomplished are referred to as the holding characteristics of a coder. In the case of a decoder, it may be necessary to store the digital data or to insure that digital data are transferred to the decoder at periodic intervals; this is in order to properly hold or maintain the analog output signal. In its simplest form a holding device for a decoder amounts to a binary register and converts the impulse outputs of the computer to step functions. 8. Number of Channels. Depending on the nature of the conversion equipment, it may be possible to time share various portions of the converter with a number of inputs or outputs. This process is referred to as multiplexing. Certain types of conversion equipment lend themselves to a multiplexing operation better than others. 9. Conversion Time. The time required to complete one decoding or coding process is referred to as conversion time. 10. Conversion Rate. This term refers to the number of conversions which may be accomplished during a unit interval of time. The conversion rate of some coders varies according to certain characteristics of the input analog signal. 11. Total Value and Incremental Methods. Certain types of analog- INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS "20-47 digital conversion equipment obtain a complete new value at each conversion whereas other types change their output only in small incremental steps. 12. Feedback and N onfeedback AIethods. Some types of analog-digital conversion equipment conduct the actual conversion on the output signal rather than on the input. The data obtained in this fashion are compared with the input, and an error signal is developed. This error signal is used to adjust the output and thus reduce itself to zero. Nonfeedback methods are straightforward and do not involve comparison. 13. Direct and Indirect Conversion. Indirect conversion is used- here to imply that the analog data are converted to another analog form before use. Such conversion is frequently employed when it is necessary to obtain or measure analog quantities other than time, frequency, voltage, or shaft position. In this case, however, the analog-to-analog equipment is often completely dissociated from the analog-digital conversion equipment, and thus is not discussed in this chapter. In some cases where indirect methods are employed, the analog-to-analog conversion involves the quantities listed above and is directly associated with the analog-digital conversion equipment. Examples of these particular indirect conversion methods are given later. Requirements on conversion equipment from the point of view of the characteristics listed above are determined to a considerable extent by the analog portion of the system and are therefore not discussed here. For a more overall treatment of systems which employ both analog and digital quantities see Chaps. 28, 29, and 30 and Vol. I, Chap. 26. The rem"aining portions of this section include various examples of analog-digital conversion techniques. No attempt has been made to li3t all methods which have been developed, but those given should serve to illustrate the most common techniques presently employed. Since the primary concern here is with input-output equipment for digital computers, the examples given are almost all straight binary code devices. Analog to Digital Conversion Time Interval. An example of a common method for converting the duration of time between two pulses to a binary number is illustrated in Fig. 26. \Vith the flip-flop and binary counter initially set to 0, the first timing pulse will set the flip-flop to the 1 position and start the counting cycle. The second pulse will reset the flip-flop and stop the counting cycle. Thus an appropriate binary number will be left in the counter. After the number is sampled by the computer, the counter is reset to in preparation for taking the next measurement. Eliminntion of the flip-flop makes it possible to measure the time durn.tion of the received ° DESIGN OF DIGITAL COMPUTERS 20-48 pulses rather than the time interval between pulses. Increased precision of measurement may be obtained by increasing the frequency of the oscillator. Above 10 megacycles, however, counting is somewhat impractical and vernier techniques, which do not require high counting rates, are resorted to for more precise measurements (Ref. 5) . Flip-flop and gate 1st 2nd ~-----~)I Binary counter tlllll!!ll! Reset to ~ zero Digital output Pulse generator FIG. 26. AID time conversion. An indirect method of converting time can be developed with a ramp generator. The voltage obtained from the generator may be converted to a digital number as described later. Frequency. A method for obtaining a digital representation of frequency is illustrated in Fig. 27. An oscillator with a frequency lower than that being measured is used to establish a fixed time interval ~FIiP-fIOP and gate Binary counter Reset to zero Digital output Input frequency Pulse shaper FIG. 27. AID frequency conversion. between two pulses. These pulses gate the input signal to be measured into a binary counter for this fixed amount of time. The number obtained in the counter will be a measure of the frequency. An indirect method of converting frequency is to establish a time interval by counting a fixed number of input cycles. This time interval may then be converted to a digital number as previously described. Voltage. lVIany voltage-to-digital converters make use of feedback techniques discussed later. There are, however, a number of straightforward techniques. Cathode Ray Tube. A diagram of a cathode ray tube which may be used for voltage AID conversion is shown in Fig. 28 (Ref. 6). The voltage to be converted is applied to the vertical deflection plates. When a readout is desired, a sweep voltage is applied to the horizontal deflec- INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-49 tion plates. As the beam sweeps across the face of the tube, it will strike the output plate only if it is directed at an opening in the aperture plate. Brief study of the aperture plate depicted in Fig. 28 will show that if the vertical deflection remains constant during a sweep, the signal -"-nrTT""rri--t- - - - - t - + --+-=-- 0 Deflection plates Aperture plate FIG. 28. Cathode ray tube for AID voltage conversion. which appears on the output plate will be a serial straight binary representation of the input voltage. The quantizing grid wires and collector are used to generate a signal which is fed back to the vertical deflection plates in order to insure that the vertical deflection of the beam remains constant and in the center of quantum level during the time it is swept across the aperture plate. Since this circuit is made inoperative after completing a sweep, the input voltage is free to move the electron beam to any other quantum level before each new measurement is made. This conversion method is particularly suited to applications where short conversion times on the order of 10 microseconds are required. The cyclic binary code has also been used with this method (Ref. 7). Ramp Method. The ramp method is an indirect voltage-to-digital con-version technique in that voltage is first converted to a time interval and then to digital form. A simplified block diagram for such a scheme is illustrated in Fig. 29. The upper portion of the diagram is identical with Fig. 26 and has been discussed previously as a method for converting from time to digital. In the lower portion of the diagram there is equipment for generating a ramp function which is compared with the input analog signal to be converted. Upon detection of coincidence between the input signal and ramp function, the coincidence detector emits a pulse which is used to stop the counting cycle. The binary number left in the counter thus represents the magnitude of the input voltage at the time the counting cycle was completed. After the computer samples the binary register, both the register and the ramp generator are reset to 0 in preparation for taking the next measurement. A variation of this a~p'proach is to generate a ramp type function which DESIGN OF DIGITAL COMPUTERS 20-50 consists of a series of small step functions rather than a smooth continuous slope. The rate at which the function increases is controlled by the oscillator, and one incremental step is made in the ramp each time Flip-flop Sample o----~ pulse and gate Binary counter Reset to Pulse gene;"ator Coincidence detector V(t) Analog input FIG. 29. Ramp method for AID voltage conver~ion. the counter is pulsed. In this fashion the requirement for correlation between the slope of the ramp and the oscillator frequency may be eliminated. This technique is almost logically equivalent to the continuous balance feedback method discussed later. Analog input -.,---I I Voltage I I comparatc~-;-t...l- __ L 1 _J o----'-----=}---------L----=}---- ____ ...1.. __ _ \~-----v-----Digital 'outp~t FIG. 30. Cascaded stages voltage-to-digital conversion. Cascaded Stages. Figure 30 illustrates a method for converting voltage to a digital number by successive comparisons and subtractions (Ref. 8). At each stage the input voltage is compared with the reference voltage and then on basis qf the comparison either a 0 or a 1 is read out. INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-51 If a 1 is read out, the reference voltage is subtracted from the input voltage; the result is multiplied by two and fed to the next stage. If a 0 is read, only the multiplication by two takes place. Shaft Position. Three maj or classes of conversion methods are asso'" ciated with AID shaft position converters: (1) coded pattern methods, (2) incremental pattern methods, and (3) indirect conversion methods involving voltage or time. Although the discussion here is limited to the shaft position type converter, devices which employ techniques similar to those discussed have been developed for other types of mechanical motion such as translation. _---~-Read pulse Digital output FIG. 31. Straight binary code wheel. Coded Pattern Methods. The most common shaft position to digital converters make use of a code wheel and direct reading techniques. Reading is accomplished by using either mechanical brushes or photoelectric cells. The code wheel is designed to give a digital output, which is a function of the angular position of the shaft. The most common function, of course, is a linear representation of the angular position; others available include sine or cosine of the angular position. The digital output may be in one of several codes; straight binary, binary coded decimal, and cyclic binary are common. Figure 31 illustrates a straight binary coded wheel. Only the three least significant bits are shown. The black areas represent interconnected conducting material and the small dots represent brushes. The read pulse will appear on any of the output lines that are resting on the conducting material. Photoelectric cells and a light source can be used with nn aperture in a somewhat similar arrangement. 20-52 DESIGN OF DIGITAL COMPUTERS I Ambiguities. A problem ass9ciated with coded pattern devices is the ambiguous reading which may result when two or more bits are required to change at the same time. For example, if the wheel in Fig. 31 were reading between (000) 2 and (111) 2, any other number between these two would be obtainable by offsetting the brushes or conducting material only a sm'all amount. There are several methods of preventing this ambiguous representation of binary numbers, and these are discussed below. Cyclic Binary Codes. Use of the cyclic binary code is one popular method. Such a wheel has been illustrated in Fig. 32. This figure, or a study of Table 9, will show that no more than one bit changes at any given time. Thus it is ensured that the digital number obtained is never off from the correct value by more than bnecount. Logical circuitry for converting from cyclic binary to straight l?.inary code is also shown in Fig. 32. Rules for this code conversion are given in Chapter 18, Sect. 3. Dual Brush Method. Figure 33 illustrates another antiambiguity scheme which alleviates this difficulty by allowing only one of two numbers to be read from the wheel as it turns from one number to another. Its operation may be understood by realizing that so long as the least significant brush is on the black or conducting material an improper reading will not result if the remaining brushes are displaced from the reading azimuth by a small angle in a clockwise direction. Likewise, so long as the least significant brush is on the white or nonconducting material, an improper reading will not result if the remaining brushes are displaced from the reading azimuth by a small angle in a counterclockwise direction. A study of the logic will show that this in effect is what is accomplished. By doing this it can be seen that: 1. Switching for all bits takes place simultaneously, and therefore ambiguous results are not obtained. 2. The exact position of the wheel at which switching takes place is determined solely by the outside, least significant track. 3. Misalignment of the least significant brush results in only a constant bias error. 4. Misalignment of the other brushes by a small amount does" not affect what is read. 5. Except for the least significant track, the accuracies of the tracks are not critical. 6. Except for the least significant track, all switching takes place after the brush has made contact. 7. The track which is critical is on the outside where more accuracy is possible. INPUT.OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20·53 Reading azimuth - H H - r - - - - I - : Inverters and gate:> 21 Digital output FIG. 32. Cyclic binary code wheel. Reading -++-t-I--.---.-fazimuth and gates 21 Digital output FIG. 33. Dual brush method. 20-54 D-ESIGN OF DIGITAL COMPUTERS V Brush Method. Figure 34 illustrates a variation of the previous scheme and is referred to as the V brush method. Here the particular brushes which are used are not determined solely by the least significant brush. Instead the particular brush used is dependent on what is read from the next least significant bit. However, the operation may be under- Reading ---1--4--1-- -+-__ _ azimuth Inverters and gates 21 Digital output FIG. 34. V brush method. stood in the same way as the previcus scheme, and the list of advantages all apply; an additional advantage is that the placing of the brushes in the more significant positions is even less critical than before. This is desirable of course, since the circumference of the tracks gets smaller as they approach the center of the wheel. Note that the logic required for brush selection is similar to that shown for cyclic to binary conversion in Fig. 32. A disadvantage of the above anti ambiguity schemes is that external logical circuitry is required. This is not acute if a number of converters are to be used, since this logical circuitry may be time shared and little cost will result from an overall point of view. Figure 35 illustrates a converter which, for the most part, avoids the necessity for external logic by accomplishing most of the required logical functions on the wheel itself. The elimination of external logic is paid for by increasing the number of brushes and complexity of the wheel. This method is referred to as the self-switching V brush method. INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-55 Multispeed Coders. In order to increase the precision of measurement without incurring problems associated with providing numerous tracks on a single wheel, many code wheel converters employ a second wheel which is coupled to the first through a reduction gear train. These units are referred to as multispeed coders. Although considerable care must be exercised in coupling the input shaft to the converter, no serious difficulty arises in the design of the gear train between the two wheels. r---------------------~------------------~22 r----------.------------~21 Digital output Inverter FIG. 35. Self-switching V brush method. This is because various antiambiguity schemes may be employed to eliminate the effects of backlash etc. The V· brush method appears to be the most practical approach. For converters which employ the cyclic code, it is possible to eliminate improper reading by providing redundant tracks on the two wheels and logical circuitry which makes the necessary corrections. Typical Code Wheel Converters. Table 10 provides data on typical commercially available code wheel converters. Some remarks are in order concerning what has been presented. First it will be noted that photoelectric code wheels normally employ the cyclic binary code. This is because the other antiambiguity methods do not lend themselves particularly well to an optical mechanization. Secondly it may be inferred from the figures for the number of bits and counts per revolution that the photoelectric code wheel converters employ a single wheel whereas brush type devices are often multispeed converters. The rel:tdout rate for photoelectric coders is usually limited by the flash lamp. Continuous DESIGN OF DIGITAL COMPUTERS 20-56 TABLE 10.' SOME TYPICAL CHARACTERISTICS OF COMMERCIALLY AVAILABLE CODE WHEEL CONVERTERS Mechanical Brush Heavy Duty Digital code Binary, binary coded decimal, decimal Readout Number of bits Counts per revolution Maximum readout rate (per .second) Maximum rotation speed (rpm) Operating torque (inchounce) Contact rating (amperes) Housing length (inches) Housing diameter (inches) Weight (pounds) Cost Light Duty Photoelectric Cyclic binary Linear Binary, binary coded decimal, cyclic binary Linear Linear, sine, cosine 10-15 10-64 7-19 128-256 13-18 21L218 2 106 100 (w /flash lamp) 1800-12,000 200-1500 50-1200 0.1-0.8 0.2-0.8 0.1-0.2 i-I 0.002-0,020 1-5 3-7 3-6 2-3 2 $200-700 It-3 i-2 $200-700 4-15 1-4 $4500 lighting may be used, but this complicates the sensing circuitry since the light-dark adjustments are more critical. The readout rate for heavy-duty coders is shown considerably lower than that for the rest because frequently the brushes are lifted on these devices while the wheel is in motion, and time is required to move them back into position. For this reason, however, much higher operating speeds are possible. The speeds shown for the other devices are given on the assumptio!l that they are read on the fly. However, the figure of 1500 rpm would be applicable for only short periods of time, and 200 rpm would be closer to the upper limit for continuous operation without undue brush wear. In this regard it should be remembered that if it is desirable to gear up to the converter in order to allow the full digital range to correspond with one revolution of the input shaft, the maximum speed of the input shaft must be even lower. Incremental Pattern Methods. Converters in this class of position to digital devices generate a signal each time the position is changed by an incremental amount. A digital representation of the position is obtained by summing these incremental signals. An example of such a device is illustrated in Fig. 36. Photoelectric cells sense the movement of the slotted disk, and the interpreting circuit. determines whether the number in the counter should be increased or decreased by one increment. Note that once an error occurs with this configuration, the readout will remain incorrect until another compensating error is made. Some incremental pattern d~vices limit this possibility by providing error correcting INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-57 circuitry. Although photoelectric cells have been shown in the diagram, other means are also available for sensing movement. :Magnetic recording techniques and commutator-brush arrangements have been frequently utilized in this connection. Note that incremental pattern devices may also be used for measuring speed. The frequency of the incremental signals may be obtained in digital form by a method previously discussed and thus will provide appropriate digital rate data. Light source /0-I Q. . . . . . -1--- Slotted disk Photocell Cinary counter Count up Sensing device Digital output Shaft input Light source 1 __ _ 5""0"-.:-1 Photocell FIG. 36. Incremental pattern device. Indirect Methods. A typical indirect method for shaft to digital conversion involves an intermediate conversion of shaft position to voltage and the su hsequent conversion of the voltage signal to digital form by means previously discussed. Perhaps the simplest method of effecting the intermediate conversion is through the use of a potentiometer mounted directly to the shaft which is to be measured. Another common indirect conversion method involves an intermediate conversion of shaft position to time in the form of phase angle between two a-c voltages. Use of synchros is one popular means of obtaining the required phase shifted signals. Digital to Analog Conversion Time Interval. One of the most common approaches taken for generating a time interval which corresponds to the magnitude of a binary number is illustrated in Fig. 37. A start pulse that is received at the beginning of each cycle forms the first output pulse and is used to gate the complement of digital word to be converted into the binary counter. In addition, it sets the flip-flop to the 1 position and thereby enables the and gate. The resultant train of pulses which pass through the and gate increases the stored number by one count for each pulse DESIGN OF DIGITAL COMPUTERS 20-58 transmitted. A stop pulse is generated by the counter when it overflows. This' stop pulse forms the second output pulse and is used to reset the flip-flop to 0 and thereby disables the and gate. The conversion unit then waits idle until the next start pulse is received. The signal at x can also be used as an analog output since the duration of the pulse which appears at this point corresponds to the binary number being converted. The precision obtained with this method is limited by the counting rate. Rather than using frequencies above 10 megacycles for greater precision, it is usually better to employ the least significant bits to gate short delay lines in or out of the output line. Start pulse from computer Output or gate - }rom computer x Binary counter and gates Pulse generator FIG. 37. D/A time conversion. Voltage. Two general D/A methods for obtaining voltage are considered here: (1) resistance network methods and (2) RC network methods. The first of these provides the greater accuracy while the second approach will usually lead t~ a configuration which requires the least amount of circuitry. Resistance Network Methods. This general category of methods involves the gating of constant voltage or constant current sources into appropriate points of a resistance network or the modification of the values of resistances in a network so as to obtain an output voltage which is proportional to the number being converted. Two examples are illustrated. Figure 38 shows a current summation method that makes use of flip-flops which deliver zero current when in the zero state and some fixed current, I, when in the one state. Similar circu,its are easily developed for constant voltage sources, but in general use of current sources entails fewer circuit design problems when electronic switching is required. If requirements on conversion rate are not severe, relays or other electromechanical switching devices can be used to good advantage. Figure 39 illustrates an appropriate circuit in this case. Study of the diagram will show that it functions as a digital potentiometer. Numerous other network configurations are possible, and those given here should INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS Constant current flip-flops ----------,------';~Eout R Digital input Least significant bit FIG. where n .N = 38. Current summation digital-to-voltage conversion. number of bits = magnitude of the binary number 0 - - - FIG. ~ N ~ 2n 1 - - - --1---4--·-> 39. Digital potentiometer-digital-to-voltage conversion. rk = r o2- k, k = 0, 1, 2, ... , 1 n - Eoo. ~ [(2' -: + ~JN where n N = number of bits = magnitude of the binary number 0 All switches are shown in the 0 position. ~ N ~ 2n- 1 20-59 20-60 DESIGN OF DIGITAL COMPUTERS only serve to illustrate a general approach. Often the output of these networks is buffered by using a d-c operational amplifier. Re Network Methods. Figure 40 shows a simple RC network which can be used for DI A voltage conversion. The flip-flop shown delivers either zero or some fixed value of current depending on its state and is driven by a pulse train which corresponds to the binary number being converted. Numerous methods are available for generating an appropriate sequence of pulses, and the particular method chosen usually depends to a large extent upon holding requirements. Constant current flip-flop Pulse train from --~ a digital device --~ Eout FIG. 40. RC network digital-to-voltage conversion. Shaft Position. There are three general classifications of methods for converting a digital number to a shaft position: (1) use of quantized motor devices, (2) feedback methods such as those discussed in the next section, and (3) indirect methods. A typical example of the third category has been provided in the discussion of plotters where a digital number is first converted to a voltage and then, through the use of standard servo techniques, into position. In the first category, a train of pulses is usually generated which corresponds to the desired incremental change in position. This pulse train can be fed to anyone of a number of devices such as a stepping motor or rotary solenoid. Feedback or Comparison Techniques General Method. All the various analog-digital conversion techniques which have been described thus far have been straightforward in the sense that signals were transformed into the desired type of quantity. A second class of techniques involves feedback methods in which actual conversion takes place in the direction opposite to that required. Figure 41 illustrates block diagrams for two such methods, Fig. 41a for AID conversion and Fig. 41b for DI A conversion. In both these cases a wide latitude of possible circuits is available and nearly all the techniques INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-61 discussed thus far could be incorporated in one of these two schemes. A few of the more practical configurations are discussed below. D/A Shaft Conversion. A method for converting a digital number to a shaft position is shown in Fig. 42. Here a number which has been Analog comparison Analog input Error signal Digital switching circuits and register Digital output ! I D/A converter (a) I Digital input I----,------;~Analog output (b) .T!'IG. 41. General feedback method: (a) for AID conversion, (b) for DI A conversion. Digital input to computer r-'-'--'-1...L.L..L.&..., FIG. 42. D I A shaft conversion using feedback. generated during computation by the computer represents the required shaft position. The computer samples the number in the shaft position converter and then, on the basis of a comparison of the two digital numbers, issues a discrete error signal that drives the motor toward the correct shaft position. This procedure would be used in situations where very accurate positioning was required. 20-62 DESIGN OF DIGITAL COMPUTERS AID Voltage Conversion. The two methods illustrated in Fig. 43 and Fig. 44 employ a feedback technique which is referred to as the continuous balance method. In Fig. 43 the digital-to-voltage portion Reversible counter Anall'lg input -1 E==~EE Digital I=::;::+rn:t=~ output Clock pulses FIG. 43. Continuous balance voltage-to-digital conversion. of the circuit has not been specified, but any method that is sufficiently accurate and fast might be used. The output of the D/ A converter is compared with the analog input signal. The resultant error signal Analog input ! A-c amplifier r-------, Phase sensing circuitry ~ Chopper Count up Relay stepping switches Digital output Count down /" Lf:~:...J"-----:/4 //' / I / L --------./ (/ I I I Reference voltage Digital potentiom~ter FIG. 44. Electromechanical continuous balance voltage-to-digital conversion. is clamped and used to control the direction in which the counter is stepped. Figure 44 illustrates an electromechanical converter which is typical of those used in digital voltmeters. A study of the diagram will show that it is logically equivalent to the one previously discussed. If either of the two methods discussed above have n bits in the output, then 2 n - 1 steps are required to cover the entire range. For this reason another feedback method is more appropriate when speed is important and n must be large. INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-63 Successive Approximation Method. This second method is referred to as the successive approximation method and although it makes a complete new measurement each time digital data is sampled, it requires only n steps to complete the measurement. Figure 45 illustrates a simplified version of such a converter. The diagram is the same as that shown in Fig. 45 except that the binary register is adjusted in a different fashion. At the beginning of the sampling interval each flip-flop is set to zero by a clock pulse. The numbered circles represent consecutive Ana log input .--:::----:------, o ~----~----~ Digital output FIG. 45. Successive approximation voltage-to-digital conversion. clock pulses following the original one and may be generated by a computer or an oscillator and a ring counter. The operation is as follows. The most significant digit is switched on at time 1. If this is larger than the input voltage, it is switched off; if smaller, it remains on. The same procedure is repeated at times 2,3,"', 2n - 1, 2n. It should be noted that the circuit requirements may be simplified by allowing pulses 2 and 3, 4 and 5, etc., to occur simultaneously. This converter lends itself well to time-sharing techniques and only a minimum of cOHtrol circuitry is required to switch from one analog input to another. Plotters Requirements. Frequently the results obtained from digital computer runs are so voluminous that considerable effort is required on the part of the user to make practical use of the data. Editing by programming is a partial solution to this problem, but often it is difficult, if not impossible, to program in the required "judgment." Another solution to the rapid assimilation of data by the user is through the use DESIGN OF DIGITAL COMPUTERS 20-64 of display devices such as plotters. This approach provides a means whereby the user may intelligently and rapidly accomplish his own editing. The discussion which follows concerns the use of plotters as digital computer output devices and gives some indication of the D/ A equipment normally associated with them in this application. Continuous and Discrete Plots. Both continuous and discrete plotting are often possible with commercial plotters. Choice of the most appropriate mode is to a large extent determined by the number of points to be plotted and the distance between them. In general, the points are close together when there is a great number to plot. As the lJ Vref ~ I---~ .~ "t:J J§ "ga o ~P~lo-t~co-m-p-le-!e--------7-----~ To pen· so:enoid circuit Vref I 2¢ motor Chopper .--...---J'---____-,. Vref FIG. 46. I G-__ L__ - - ;:-a~;-driv~ G Circuitry for discrete plotting. number of points increases, the importance of plotting speed also tends to increase. This is compatible with plotter characteristics since speed of plotting increases as the distance between points decreases. Discrete plotting is the most desirable in the sense that it presents a more intrinsic representation of digital data. This is particularly true when the points are far apart since the trace between points provided by a continuous plot has little significance other than the response of the plotter to a unit step function. On the other hand, if speed of plotting is important, continuous plotting is more appropriate since there is no requirement to actuate the pen each time a point is plotted and data may therefore be accepted at higher rates. The trace obtained between points in this INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-65 case is usually insignificant since the points are likely to be close together. Plotter Operation. A simplified block diagram of plotter used to plot discrete points is illustrated in Fig. 46. By removing the null detector and flip-flop, the plotter circuit would be suitable for continuous plotting. The digital device represented on the left may be a computer or some item of off-line equipment. The D/ A converters are generally of the resistance network variety discussed previously. All-electronic converters are required for high-speed plotting whereas electromechanical converters are satisfactory for slow speed plotting. TABLE 11. TYPICAL CHARACTERISTICS OF COMMERCIAL PLOTTERS Table or Rack Mounted Plotting board size (inches) Slewing speed Maximum plotting speeds Static accuracy, including point plotting Dynamic accuracy, at normal plotting speeds . Maximum plotting rate Pen or arm acceleration (maximum) Sensitivity Paper hold down Size (inches) Weight Power requirements Cost Console 8! X 11-11 X 16! 20 in./sec 5-12 in./sec 30 X 30 20 in./sec 9 in./sec .075-0.25% full scale 0.05% full scale 0.1-0.5% full scale 1-10 points/sec 0.10% full scale 1-10 points/sec 100-750 in./sec 2 0.5 mv/in.-10 volts/in. Mech. or vacuum-mech. 24 X 19 X 10 25-751b 60-300 watts $2000 100-350 in./sec 2 50 mv/in.-lO volts/in. Vacuum-mech. 50 X 45 X 40 500-10001b 500-2000 watts $10,000 The outputs of the D/ A converters are compared with voltages which represent the position of the pen. If the D / A converters are of the digital potentiometer variety, these comparison circuits in effect form bridge type null detectors. The magnitude of the a-c voltages generated by the choppers represents the error, and the phase of these voltages represents the direction or sign of the error. After the a-c voltages have been amplified, they are fed to phase sensitive servo motors which drive the pen toward the correct position. Some commercially available plotters have tachometers mounted on the drive shafts. The signals generated by these tachometers are fed back to the amplifiers for damping purposes. Others make use of RC networks to obtain damping. Just after the digital words have been inserted into the D / A converters, the digital device shown on the left sends a plot command pulse. This pulse sets the flip-flop and thereby enables the null detector. When the pen 20-66 DESIGN OF DIGITAL COMPUTERS has reached the correct position on both axes the null detector generates a plot complete signal which causes the pen to plot a point and signals the digital device that the plotter is ready to accept the next set of data. In addition, this signal resets the flip-flop and thus, in effect, turns itself off in preparation for plotting the next point. An a-c amplifier and chopper have been shown in the diagram since this mechanization is characteristic of commercially available plotters. When D/A converters are of the digital potentiometer type, the choppers may be eliminated by using an a-c voltage source in lieu of the d-c source shown. Many variations of the scheme shown here are possible, and a number of them are used in commercial equipment. Table 11 lists various characteristics of commercially available plotters together with representative data. The discussion here has been limited to the x-y type plotter; strip charts and printing devices may also be used for plotting digital data. REFERENCES 1. H. M. Smith, The typotron, a novel character display storage tube, I.R.E. Convention Record, Pt. 4, 129-134, March 21-24, 1955. 2. H. Epstein and F. Innes, The electrographic recording technique, I.R.E. Con. vention Record, Pt. 4, 135-138, March 21-24, 1955. 3. S. Baybick and R. E. Montijo, Jr., An RCA high performance tape transport system, Proc. Western Jt. Compo Conf., 52-56, Feb. 26-28, 1957. 4. Louis D. Wilson and Saul Meyer, The model II unityper, Trans. I.R.E. PGEC, EC-2, No.4, 19-27, Dec. 1953. 5. D. W. Burbeck and W. E. Fra'dy, Precision automatic time measurement equipment, Hughes Aircraft Co., Culver City, presented at LR.E. National Convention, New York, March 5, 1952. 6. R. W. Sears, Electron beam deflection tube for pulse code modulation, Bell System Tech. J., 27 (1),44-57 (1958). 7. H. J. Gray, Jr., P. V. Levonian, and M. Rubinoff, An analog-to-digital converter for serial computing machines, Proc. I.R.E., 41, 1462-1465, Oct. 1953. 8. W. S. Shockency, Multi-channel analog-digital conversion system for d.c. voltages, Proc. Western Compo Conf., AlEE, 113-117, Apr. 1954. 9. Taylor C. Fletcher and Norman C. Walker, Analog measurement and conversion to digits, ISA J., 2, 345, Sept. 1955. - 10. Ivan Flores, Reflected number systems, Trans. I.R.E. PGEC, EC-5 (2), 7982, June 1956. 11. R. Hunt Brown, Office Automation, Automation Consultants, Inc., New York. 12. W. F. Bauer, Input-output equipment, Chap. 10, Automation in Business and lndustry, E. M. Grabbe, Editor, Wiley, New York, 1957. 13. Bernard S. Benson and George G. Bower, Analog-to-digital conversion units, Chap. 9, Automation in Business and Industry, E. M. Grabbe, Editor, Wiley, New York, 1957. 14. J. M. Carroll, Trends in computer input-output devices, Electronics, 29, 142149, Sept. 1956. INPUT-OUTPUT EQUIPMENT FOR DIGITAL COMPUTERS 20-67 15. M. Phister, Logical Design of Digital Computers, Chap. 8, Wiley, New York, 1958. 16. J. A. Brustman, K. L. Chien, D. Flechtner, Input and output devices of the RCA BIZMAC system, I.R.E. Convention Record, Pt. 4, 88-93, March 19-22, 1956. 17. James W. Forgie, The Lincoln TX-2 input-output system, Proc. Jt. Camp. Conf., 156-160, Feb. 26-28, 1957, Los Angeles, Calif. 18. Heview of input and output equipment used in computing systems, Jt. AIEEIRE-ACM Camp. Conf., Dec. 10-12, 1952, published March 1953. 19. D. T. Olmsted, Charactron shaped beam tube, Military Automation, 138-140, May-June 1957. 20. E. M. DiGiulio, Burroughs G-I01 high speed (matrix) printer, I.R.E. Convention Record, Pt. 4, 94-100, March 19-22, 1956. 21. C. B. Tompkins, J. H. Wakelin, W. W. Stifter, Jr., High Speed Computing Devices, 146-181, McGraw-Hill, New York, 1950. 22. D. F. Brower, A "one turn" magnetic reading and recording head for computer use, I.R.E. Convention Record, Pt. 4, 95-100, March 21-24, 1955. 23. R. K. Richards, Digital Computer Components and Circuits, Chaps. 7 and 11, Van Nostrand, Princeton, N. J., 1957. 24. M. V. Wilkes, Automatic Digital Computers, pp. 168-188, Wiley, New York, 1956. 25. S. Lubkin, An improved reading system of magnetically recorded digital data, Trans. of the I.R.E. PGEC, EC-3 (3), Sept. 1954. 26. A. Dean Glick, High-speed digital-to-analog conversion by integration of a variable-rate pulse train, Proc. Western Jt. Compo Con}., 128-133, Feb. 26-28, 1957, Los Angeles, Calif. 27. A. K. Susskind, Notes on Analog-Digital Conversion Techniques, Technology· Press of M.I.T., and ""Viley, New York, 1957. 28. M. Rubinoff and R. H. Beter, Input and output equipment, Control Eng., 3, 115-123 (1956). 29. P. Partos, Industrial data-reduction and analogue-digital conversion equipment, J. Brit. Inst. Radio Eng., 16, 651-678, Dec. 1956. 30. K. R. Eldredge, F. J. Kamphoefner, and P. H. Wendt, Automatic input for business data-processing systems, Proc. Eastern Jt. Compo Conf., December 10-12, 1956, New York, 69-72 (1957). 31. D. N. MacDonald, Datafile-a new tool for extensive file storage, Proc. Eastern Jt. Compo Conf., Dec. 10-12, 1{)56, New York, 124-127 (1957). 32. H. Epstein and P. Kinter, The Burroughs electrographic printer-plotter for ordnance computing, Proc. Eastern Jt. Compo Conf., Dec. 10-12, 1956, New York, 73-80 (1957). 33. A. K. Susskind, Characteristics and appraisal of analog-digital conversion techniques, Proc. Compo in Control Conf., October 16-18, 1957, Atlantic City, AlEE, T-I01, 26-29, May 1958. 34. D. H. Shepard, P. F. Bargh, C. C. Heasly, Jr., A reliable character sensing system for documents prepared on conventional business devices, I.R.E. 1957 Wescon Convention Record, Pt. 4, 111-120. 35. F. Bauer, The Burroughs 220 high speed printer system, Proc. Western Jt. Compo Conf., March 3-5, 1959, San Francisco. 36. R. M. Hayes and J. Wiener, Magnacard-a new concept in data handling, I.R.E. 1957 Wescon Convention Record, Pt. 4, 205-210. 20-68 DESIGN OF DIGITAL COMPUTERS 37. A. M. Nelson, H. M. Stern and L. R. Wilson, Magnacard-mechanical handling techniques, I.R.E. 1957 Wescon Convention Record, Pt. 4, 210-214. 38. J. Burkig and L. E. Justice, Magnacard-magnetic recording studies, I.R.E. 1957 Wescon Convention Record, Pt. 4, 214-218. 39. A. M. Angel, A very high speed punched paper tape reader, I.R.E. 1957 Wescon Convention Record, Pt. 4, 218-227. 40. K. R. Eldredge, Magnetic reader speeds travelers check processing, Control Eng., 5, 79-84, July 1958. 41. E. J. Kompass, What about digital transducers?, Control Engr., 5, 94-100, July 1958. 42. E. G. Wild anger, Tape recording systems for computers, Automatic Control, 7, 36-42, Dec. 1957. 43. W. Gersch, Recording media, techniques and devices, Pt. II, Automatic Control, 7, 11-17, Jan. 1958. DESIGN AND APPLICATION OF ANALOG COMPUTERS E. DESIGN AND APPLICATION OF ANALOG COMPUTERS w. 21. 22. 23. 24. 25. 26. 27. 28. J. Karplus. Editor Analog Computation in Engineering, by W. J. Karplus and W. Kindle Linear Electronic Computer Elements, by I. Pfeffer Nonlinear Electronic Computer Elements, by G. A. Bekey Analogs and Duals of Physical Systems, by R. C. Mackey Solution of Field Problems, by W. J. Karp/us Noise and Statistical Techniques, by H. Low Mechanical Computer Elements, by W. J. Karplus Digital Techniques in Analog Computation, by C. T. Lcondes E DESIGN AND APPLICATION OF ANALOG COMPUTERS Chapter 21 Analog Computation in Engineering Walter J. Karplus ana William Kindle I. Definition of Analog Computation 2. Classification of Analog Computers 3. Requirements of Analog Computers 4. General Steps in the Solution of Engineering Problems 5. Areas of Application of Analog Computers 6. Symbols and Diagram Notation References 21-01 .21-02 21-05 21-06 21-09 21-11 21-11 I. DEFINITION OF ANALOG COMPUTATION Introduction. Stimulated by the demands of modern technology, engineers have undertaken the design of systems of ever increasing complexity. Prior to the advent of automatic computing equipment, engineering design and product testing were separated at a point determined primarily by the ability of the engineer to solve the design problems manually, or by using such restricted aids as the slide rule or desk calculator. As systems became more and more complex and as equipment became extremely expensive, and sometimes dangerous, to build and test, means had to be found to expand greatly the capabilities of the design engineer. Analogs and digital computers were developed to help fill this need. Definition. The analog computer is an engineering tool used in the laboratory to study physical systems which are too complicated to analyze with pencil and paper and with manual computational aids, and for which the "cut-and-try" process of design and test is prohibitively 21-01 21-02 DESIGN AND APPLICATION OF ANALOG COMPUTERS time-consuming and expensive. The principal distinctive feature of such computers is that the data involved in the computation are carried in continuous form, for example as continuously varying voltages or shaft rotations. The sensing and display of these quantities is likewise continuous. Thus, the precision, or number of significant figures available, is determined entirely by the quality of the computer components and the output equipment. In most analog computers, each step or operation of computation is performed by a separate unit, and all units operate simultaneously. This type of computation is termed parallel operation, and makes the solution available almost immediately. This feature is particularly important in engineering design problems, for it permits the engineer to adjust and vary any of the design parameters and observe at once the effect of these variations upon the response of the system. The direct insight into the operation of the system, gained in this manner, constitutes an important advantage of analog computers. Analog and Digital Computers. By contrast, the other maj or type of automatic computer, the digital computer, handles data in discrete steps. Arithmetical operations are performed consecutively in a predetermined sequence, termed serial operation. The precision of a digital computer is limited only by the number of significant figures carried in the solution. This is determined by the size of the computer, and can be increased as desired by expanding the installation. The major differences between analog and digital equipment are summarized in Table 1. TABLE 1. MAJOR DIFFERENCES BETWEEN Analog Computers Data 'in continuous form Operations performed simultaneously (parallel) Precision and accuracy limited by quality of components Relatively inexpensive for accuracies within 1 per cent, relatively expensive for higher accuracies AN ALoa AND DIGITAL COMPUTERS Digital Computers Data in discrete form Operations performed sequentially (serial) Precision limited by size of installation Basic cost relatively high regardless of accuracy 2. CLASSIFICATION OF ANALOG COMPUTERS Analog computers may be classified on the basis of their application, their basic principles of operation, and the types of physical variables within the computer which constitute the continuous data. Special Purpose and General Purpose. Special purpose analog computers are designed to perform specific and frequently highly specialized operations within a larger system. Their design characteristics vary widely, depending upon their application. General purpose analog ANALOG COMPUTATION IN ENGINEERING 21-03 computers include all analog devices which are designed for the solution of a general class of problems and which may be applied, as desired by the engineer, in the design and analysis of physical systems. Such computers are generally not a part of any specific system but are maintained separately as a permanent laboratory installation. See Fig. 1. ANALOG COMPUTERS I I I General Purpose I Special Purpose I I Direct I Indirect I I Discrete Mechanical Differential Analyzers Continuous I . Electrical ~ Electronic Differential Analyzers Mechanical Mass-Spring Systems Resistance Networks Thermal Analyzers Structural Analyzers Electrical Electrolytic Tanks' Resistance Paper I Long-Time Mechanical Stretched Membrane I Digital Differential Analyzers 1 Short-Time Hydraulic· Fluid Mappers FIG. 1. Classification of analog computers. Direct and Indirect. General purpose analog computers may be divided into two broad categories: direct and indirect. Direct computers, also known as direct simulators, establish a physical analogy between the simulator and the prototype system under study. Such an analogy is recognized by comparing the characteristic equations, usually ordinary or partial differential equations, describing the transient or static behavior of the two systems. If these equations are similar in form, an analogy exists, and the response of the prototype system to an excitation may be determined by subjecting the analog system to a similar excitation and observing its response. Such analog systems are constructed by simulating every element in the protoype by an element having similar properties, that is, by an element whose excitation and response are related in a similar manner. These analogous elements are interconnected so that the topological properties of the original system are 21-04 DESIGN AND APPLICATION OF ANALOG COMPUTERS conserved. The concept of duality may then be employed to obtain analog systems with inverse structures. Direct analogs may be either of the discrete or continuous variety. Discrete analogs employ lumped physical elements such as resistors and capacitors, and the behavior of the system is defined only for the node points of the circuit. Analog models of this type are useful for the analysis of systems comprised of lumped mechanical elements governed by ordinary differential equations, and for the solution of the finite difference approximations of the partial differential equations governing continuous fields. Continuous analog systems are used to simulate distributed field problems, containing time and space variables, so that every point in the analog corresponds to a specific point in the prototype. Such simulations are employed in the solution of problems governed by partial differential equations. Indirect analog computers are employed in engineering to perform the ,mathematical operations necessary to solve the equations governing the system. Such devices employ only one dependent variable, for instance, voltage, to represent all the dependent variables of the prototype. For example, at one point in a computer voltage may be analogous to displacement, whereas at another location voltage may represent velocity. Such a computer is essentia:ily an equation solver, and the manner of interconnecting its components generally has no direct relation to the topology of the system being simulated. Indirect analog computers are by far the most important and widely used analog computers for automation and control problems. Other Classifications. Both the direct and indirect analog computers may be subdivided according to the physical area to which they belong. Thus, electrical analogs employ voltage or current as dependent variables, while in mechanical analog computers linear or rotational shaft displacements compose the basic data. The indirect electrical analogs are further subdivided into the long-time and short-time classes. The former are designed so that solutions are obtained in from 10 seconds to several minutes, and the output displayed on a strip chart or servodriven recorder. Short time computers, also known as repetitive computers, have solution times of several milliseconds. The solution of the problem is then repeated periodically and displayed on a cathode ray oscilloscope. A recently developed class of long-time, indirect analog computers, known as digital differential analyzers, solve the system of equations comprising the problem in essentially the same mathematical fashion as other indirect analog computers, but perform the individual operations digitally, with pulses and a magnetic drum memory. ANALOG COMPUTATION IN ENGINEERING 21-05 3. REQUIREMENTS OF ANALOG COMPUTERS Input Requirements. The analog computer must be able to accept all data necessary to simulate the excitation and characteristics of the prototype system under study. These include: a. The c01nplete systel1~ of equations, differential and algebraic, as well as necessary graphical or tabular data which together specify the system. The complexity of this analog model is governed by the nature of the physical system under study and how accurately its characteristics are known, as well as by the specific use to which the solution is to be put. b. The parameters of the system. These may remain permanently fixed, or they may be a function either of time or of the dependent variables of the problem. c. Initial conditions, denoting the magnitudes of all dependent variables and their derivatives at the commencement of the computation. d. All external excitations or stimuli imposed upon the system. These may be of constant magnitudes, varying with time in a prescribed manner, or may be of a random character. Output Requirements. The computer must furnish the operator all data required for the accomplishment of his objective. The requirements placed upon the analog computer, therefore, tend to vary widely, depending upon their specific area of utilization, and generally include the following: a. A cont1:nuous display of the variation of the dependent variables and their derivatives as a function of time or some other independent variable. Frequently these data are required only for a limited number of locations in the overall system. b. A display demonstrating the effect of varying a number of the system parameters. Particularly in design problems, the experimental determination of an optimum solution demands the systematic investigation of the behavior of numerous alternative designs. c. Permanent records of the system response. These may be strip chart records, servo-driven potentiometer records, photographs of cathode ray oscillograph displays, tables of measured d-c or a-c voltages, or merely indications of whether the system is stable or unstable under specified conditions. Flexibility. To be a truly general purpose engineering tool, the adaptation of the computer to the treatment of any of a large class of problems must require no m~jor modifications or alterations. In the indirect analog computer, units performing specific computational functions are arranged in such a manner that they may readily be interconnected and utilized 21-06 DESIGN AND APPLICATION OF ANALOG COMPUTERS as required by the specific application. The devices for the generation of excitations, establishment of initial conditions, and displaying the outputs of interest are likewise arranged so as to permit their connection to any point of the simulation system. The excitation instruments and elements determining the magnitude of the sy~tem parameters must be adjustable over a wide range. Convenience. A major portion of the time spent in the computer treatment of engineering problems is devoted to the setting up and checking out of the computer system prior to the obtaining of any useful data. To minimize this effort, the interconnecting and adjusting of the computer units and subunits should be as simple and convenient as possible. To this end, all internal connection points are generally brought out to a centrally located patch bay, and plug-in type patch cords are employed to interconnect the terminals as required. These patch boards are usually removable, so that they may be programmed, checked, and stored separately. This avoids the tying up of the computer installation by a single problem and greatly extends the usefulness of the system. 4. GENERAL STEPS IN THE SOLUTION OF ENGINEERING PROBLEMS Formulation. A clear and complete description of the problem must be provided. The problem statement must include an adequate specification of the physical system, its excitations, and the data which would constitute an acceptable solution. This step usually requires the cooperation of the design engineer and the computer specialist, and frequently poses a serious communication problem. The design engineer should have at least a general understanding of the principles of operation of the computer, and the computer operator should possess some insight into the characteristics of the physical system under study. Mathematical Modeling. The problem statement is then translated into mathematical language. This process almost invariably requires approximations or idealizations of system behavior and strongly affects the final accuracy and value of the solution. Considerable experience and analytical skill are required for this purpose. Rearrangement. The mathematical model is then rearranged to make it suitable for computer solution. This is determined to some extent by the idiosyncrasies of available computer equipment. Block Diagram. The computer units required to perform the specified mathematical operations, to supply the necessary excitations, and to display the desired outputs, are summarized in a block diagram. From such a block diagram it may readily be determined whether or not sufficient computer equipment is available, and how the various units are to be interconnected. ANALOG COMPUTATION IN ENGINEERING 21-07 Scale Factoring. Scale factors relating each dependent and independent variable of the prototype system with a corresponding variable within the computer are selected. The characteristics of the computer place definite upper and lower limits upon the excursions permitted the machine variables. Since the transient behavior of the dependent variables may be initially unknown and may actually comprise the solution of the problem, scale factoring frequently involves the making of judicious guesses, which are revised and improved subsequently. A detailed machine diagram is then drawn, showing the detailed patch board interconnections of all computer units, as well as the dial settings of all parameter units, excitations, etc. Problem Setup. The computer is programmed as indicated by the detailed machine diagram. Since errors in patch board connections are frequently very difficult to pinL R point after all wiring has been completed, it is vital to employ R = 10000 great care and a systematic apc L = 30 Henrys proach in making the plug board c=? connections. At t = 0, i = 1 Check of Problem Setup. Where possible, check runs are FIG. 2. Simple electric system. made for excitations or initial conditions for which the response is known either approximately or exactly. In this way errors may be recognized and eliminated by trouble shooting. Problem Solution. The data comprising the solution of the problem are obtained and recorded. Most frequently, the final records are families of curves illustrating the system behavior under various conditions. Application of Computer Results. The computer solutions are translated back into the language of the original problem, and the results are utilized as required. EXAMPLE. As a simple illustration of the steps involved in the analog computer treatment of a system, consider the problem of predicting the behavior of the electric circuit shown in Fig. 2 with initial conditions as shown. a. The objective of this problem is to determine what capacitance, C, is required to make the frequency of oscillation equal to 100 radians per second. b. The dynamic equation for the circuit of Fig. 2 is (1) at t L = 0, i = 1. d' lIt d~ + Ri + C 0 i dt = 0, 21-08 DESIGN AND APPLICATION OF ANALOG COMPUTERS c. This may be rearranged for computing purposes as (2) R dq dq2 _ dt 2 - - L 1 dt - LC q, where d. A block diagram for the computer solution of this simple equation is shown in Fig. 3. e. If servo-driven recorders are to be used, the frequency of operation should not exceed 1 radian per second. It is, therefore, necessary to q - IO;OOO'LC Multiplier x (lO,OOOLC) Multiplier xC':' lO~L) R - lOOL dq dt - q 1O,OOOLC FIG. 3. Block diagram for computer solution. define a computer time variable T which is related to the time variable in the prototype system according to T t=-. (3) 100 Equation (2) then becomes (4) R dq 1 d2 q = dT2 - 100L dT - 10,000LC q. J. A detailed wiring diagram as shown in Fig. 4 is now drawn. A potentiometer is employed to permit adjustment of the parameter C. A complete discussion of this procedure is presented in Chap. 22. g. Computer runs are now made using various settings of the potentiometer. This process is continued until a potentiometer setting has been obtained for which the recorded frequency is 1 radian per second, corresponding to 100 radians per second in the original system. h. The setting of this potentiometer is then translated into capacitance ANALOG COMPUTATION IN ENGINEERING 21-09 To recorder FIG. 4. Circuit diagram for computer solution. values in the original system. According to (5) Resistance setting in megohms = C in JLfarads, which is the solution of the problem. 5. AREAS OF APPLICATION OF ANALOG COMPUTERS Indirect Computers. Indirect computers have found wide application in many areas of engineering analysis and design. Some of the more important of these are listed below. Since many similar types of problems arise in engineering fields, no clear-cut line can be drawn between the type of problem and the aSi:lOciated engineering field. Engineering Fields Types of Problems 1. Guided missiles 2. Aircraft 3. Automotive design 4. Submarines 5. Nuclear reactors 6. Chemical unit and process operation 7. Internal combustion and turbine engines 8. Electrical, hydraulic, and pneumatic control devices 9. Electronic, electromagnetic, electromechanical instl'uments 10. General process control 11. Information theory 12. Operations research and linear programming 1. Dynamics of rigid bodies 2. Structural dynamics 3. Dynamics of bodies of varying characteristics 4. Aerodynamic and hydrodynamic stability 5. Stability and accuracy of automatic control syster~1s 6. Heat transfer 7. Dynamics of compressible and incompressible fiuids 8. Nuclear kinetics 9. Chemical kinetics and statics 10. Nonlinear electronics 11. Signal processing 12. Trajectory computations 21-10 DESIGN AND APPLICATION OF ANALOG COMPUTERS Direct Computers. Direct computers are used primarily in the simulation of field problems, and some of their areas of application have included: 1. Determination of stability and load characteristics of electric power systems. 2. Temperature distribution in irregular bodies. 3. Stress distribution in complex structures under static and transient conditions. 4. Pressure and fluid distribution in oil reservoirs. 5. Electrostatic fields in capacitors and vacuum tubes. 6. Neutron diffusion in nuclear reactors. 7. Magnetic field patterns in the vicinity of antennas, in wave guides, and in resonators. 8. Pressure distribution in gas pipelines. 9. Trajectory of charged particles in electromagnetic fields. 10. Diffusion of air pollutants in the atmosphere. TABLE Symbol A B C e, e(t) E E(s) f h j k K L M 0 q R s t T u, v, w v x, y, z Z 8 () 'T W 2. SYMBOLS USED IN CHAPTERS ON AN ALoa COMPUTERS Meaning Amplifier gain constant Friction constant; time scale factor Capacity Time-varying voltage Constant voltage Laplace transform of e(t) Function; force; frequency; subscript indicating feedback Weighting function, unit impulse response Current; subscript for input Imaginary Constant; subscript for summation Constant, spring constant Inductance Mass Subscript for output Charge Resistance Laplace transform (complex frequency variable) Time variable Time interval; integration time Variables Velocity Variables Impedance Unit impulse Angle Time constant, delay time Frequency (radians per second) ANALOG COMPUTATION IN ENGINEERING 21-11 6. SYMBOLS AND DIAGRAM NOTATION Symbols. An effort has been made to standardize symbols used in the chapters on analog computers. Lower-case letters are used for variables. Laplace transforms are capitals, alw:1Ys indicated as a function of s. Capitals are used for circuit constants. Other constants may be lower case or capital. Those symbols appearing frequently are listed in Table 2. In a few cases, deviations from the normal usage are also listed in the table. Other symbols used are defined in the sections in which they are used. Diagram Notation. Notation for analog computing elements is given in the following chapters: Linear computing elements Chap. 22, Sect. 1 Nonlinear computing elements Chap. 23, Sect. 1 Chap. 27, Sect. 2 Mechanical computing elements Chap. 24, Sect. 2 Analogs and duals Chap. 28, Sect. 2 Digital differential analyzer REFERENCES 1. G. A. Korn, and T. N. Korn, Electronic Analog Computers, McGraw-Hill, N ew York, 1956. 2. H. M. Paynter, A Palimpsest on the Electronic Analog Art, G. A. Philbrick Researchers, Boston, Mass., 1955. 3. W. J. Karplus, Analog Simulation: Solution of Field Problems, McGraw-Hill, New York, 1958. 4. W. W. Soroka, Analog Methods in Computation and Simulation, McGraw-Hill, New York, 1954. E DESIGN AND APPLICATION Chapter OF ANALOG COMPUTERS 22 Linear Electronic Computer Elements Irwin Pfeffer I. 2. 3. 4. 5. 6. 7. 8. Introduction and Computer Diagram Notation Passive Computer Elements Direct-Current Operational Amplifiers with Feedback Scale Factors Typical Problem Setup Representation of Complex Transfer Functions Operational Amplifier Design Errors in Linear Computer Elements References 22-01 22-04 22-08 22-10 22-12 22-13 22-16 22-33 22-37 I. INTRODUCTION AND COMPUTER DIAGRAM NOTATION One .of the most important applications of electronic analog computers is the solution of systems of ordinary linear differential equations with constant coefficients. The method employed in the solution is a fundamental one and is readily extended to the solution of systems of ordinary nonlinear differential equations. Consider an ordinary linear differential equation with constant coefficients. n dky (1) L ak -dk = J(t). k=O General Solution. t This may be rewritte,n to solve for the highest order derivative. (2) d_n_y = J_(_t) _ dt n an I: a 1 k=O 22-01 k • an _dk_y dt k • 22-02 DESIGN AND APPLICATION OF ANALOG COMPUTERS The general method of solution utilizes a procedure of repeated integration and is based upon the form of eq. (2). A block diagram of the computer configuration is shown in Fig. 1. The solution has the following steps: a. The analog computer independent variable is real time. Assume that a continuously varying electric voltage, proportional in amplitude FIG. 1. Block diagram of computer configuration for solution of general ordinary linear differential equation. at every instant to the highest order derivative, dny/ dt n, is generated at the output of element S in Fig. 1. b. This output is connected to the input of integrating element 11 which generates an output voltage proportional to the time integral of its input, i.e., proportional to dn-1y/dt n- 1. c. This output is connected to 12 , etc., forming a cascade of n integrating elements, each generating a voltage representing one of the derivatives of y. d. Each output voltage is multiplied by an appropriate constant, ak/ an, producing a voltage (ak/an) . (dky/dt k) at the output of the multiplying element. e. These voltages are passed through devices which invert the sign, i.e., reverse the polarity, and are introduced into the summing element S. f. A voltage representing f (t) / an is also introduced into S. LINEAR ELECTRONIC COMPUTER ELEMENTS 22-03 g. Equation (2) indicates that the output of S is indeed the quantity dny/ dt n, originally assumed to be available. The computer configuration is a closed loop system, operating in real time in a manner similar to any closed loop servo system, generating continuously the quantity y and its derivatives. The integrations, multiplications, sign inversions, and summation all occur simultaneously, and the quantities dny/dt n, (ak/an)' (d"y/dt k ) , y, etc., exist simultaneously as continuous voltage waveforms at the outputs of the various computing elements within the computer. Equation (1) can be written alternatively in the form (3) A method of solution utilizing a procedure of repeated differentiation based on eq. (3) is equally acceptable mathematically as the method actually described. In practice, however, this method is almost never used since the process of differentiation tends to accentuate the noise present in all electrical apparatus. A solution based upon differentiation therefore would tend to be noisy and inaccurate; worse yet, the noise might saturate some element in the computer, resulting in a grossly incorrect solution. Computing Elements. The following linear computing elements are required for the solution of systems of linear ordinary differential equations with constant coefficients: 1. An element capable of multiplying a voltage by a positive constant coefficient. 2. An element capable of inverting the sign of a voltage. 3. An element capable of generating the SU1n of two or more voltages. 4. An element capable of generating the time integral of a voltage. In addition, a device for generating an arbitrary function of time is required if nonhomogeneous differential equations are to be solved. Strictly speaking, such a device is not a linear element, and its treatment is deferred to Chap. 23. Computer Diagram Notation. Two basic notations for drawing computer diagrams are in widespread use. The first has evolved for use with computers featuring amplifiers with fixed internal resistors and capacitors, and hence having fixed gains. The second has evolved for use with computers featuring plug-in components. Figure 2 shows the correspondence between these notations. It is felt that the first notation enjoys the advantage of brevity. It will be used in this manual wherever applicable. 22-04 DESIGN AND APPLICATiON OF ANALOG COMPUTERS Symbols. The symbols used throughout this and other chapters are defined in Chap. 21, Sect. 6. Device 1. Potentiometer eo = OAel. 2. Summer eo = - (el + 4e2) First Notation Second N oiaiion 0.4 e 1 - Q - eo "=t>e2 4 eo "10.4 ~ el '0 eo e2 3. Summing integrator eo = - feel + 5e2)dt 4. High gain d-c amplifier (No feedback impedance) eo = - -IT (el + 10 e2) 5. High gain d-c amplifier (N 0 input or feedback impedance) eo = - A el FIG. 2. el --€>- - V G eo el eo Two notations for drawing computer diagrams. Values of resistors and capacitors given in megohms and microfarads. 2. PASSIVE COMPUTER ELEMENTS Multiplication of a Voltage by a Constant Coefficient. The simplest and most satisfactory means of multiplying a voltage by a constant, a, uses a simple resistive voltage divider, or potentiometer as shown in Fig. 3. In the absence of loading (4) (0 ~ a ~ 1), where a is the mechanical rotation of the arm, i.e., dial reading, provided the potentiometer is perfectly linear. If the potentiometer is not linear, or if it is loaded, the arm is set to provide the proper electrical output regardless of the dial reading. This is usually done by applying a known voltage, ei, and adjusting the arm for the desired voltage eo as read by an accurate voltmeter with the load resistance connected across the output terminals. For a potentiometer set in this manner linearity is of little importance. The only important electrical characteristics are reso- LINEAR ELECTRONIC COMPUTER ELEMENTS 22-05 lution, freedom from noise, and stability with temperature and age. For a potentiometer set by means of a dial, linearity is indeed an important factor, since any departure from linearity results in an error in the electrical setting. vVhen setting by means of a dial, the following load correction (5) must be added to the desired electrical setting a, and the dial actually set to (a + €). Figure 4 shows a normalized plot of the loading correction € for the case Rp/R L « 1. FIG. 3. Multiplication of a voltage by a constant coefficient using a potentiometer. Multiturn, helical, wire-wound potentiometers are usually used for coefficient setting. Values of Rp commonly range from 10,000 ohms to 100,000 ohms. The lower limit is determined by power requirements, the upper limit by considerations of loading and the difficulty in manufacture of high-resistance elements. Passive Summing Network. The passive summing network of Fig. 5 has an output voltage, in the absence of loading, given by (6) e. = 1 1 1 1 -+-+-+ ... Ro Rl R2 1 1 ~ l -+L.JRo k=l Rk (~', + ~: + .. -) t~. k =lR k This network performs the operation of multiplication by a constant, as well as the operation of summation. There exists a serious drawback, however, in that the gain with loading depends appreciably on the load 22-06 DESIGN AND APPLICATION OF ANALOG COMPUTERS resistance R L . This dependence can be made small by use of a very small output resistor Ro, but this results in severe attenuation of the output. 0.2 &«1 RL - /.....-- ~ / \ i\ / 0.1 \ I ~ V 1 / V ./ I \ If \ \ 0.5 1.0 a FIG. 4. Loading correction curve for lightly loaded potentiometer. An output buffer amplifier with high input impedance might be used to restore the gain, but the gain of this amplifier would have to be very -----, R3 e3O---"I./\/'V\J'V'---,!1 I Rn en o---J\./V\M---- I I I ..J ... :- 4;:R ::.r" L I I I ~~FIG. 5. Passive summing network. stable and very accurately known. A much more basic and satisfactory method of using amplifiers is presented in Sect. 3. LINEAR ELECTRONIC COMPUTER ELEMENTS 22-07 Passive Integrating Network. The passive RC integrating network of Fig. 6 has an output voltage, in the absence of loading, given by the differential equation (7) In operational, or Laplace, notation, eq. (7) may be rewritten as (8) or (8a) where T] equals RC, s is the complex frequency variable, and Eo(s) and Ei (s) are the Laplace transforms of the output and input voltages respectively. The network of Fig. 6 can be made to approach a true integrator R VV~--r------o--- ----~ I I ). 4:: :: ... RL .2: 4j I I -:-FIG. 6. Passive integrating network. as the time constant T] appearing in the expression TIs/ (T]S + I) is made very large. Several formidable obstacles exist to the widespread use of this network as an integrator: 1. In order to obtain acceptably large time constants, very large, costly capacitors are required. 2. The integrator time constant T] and the integrator gain l/RC are reciprocally related in this network, so that large time constants necessarily result in low gain. 3. The integrator time constant is strongly dependent on the load resistance R L • The practical use of passive integrating networks is restricted to those cases where a reasonably small integrator time constant is satisfactory, i.e., those cases involving high-frequency inputs and/or short computing times. 22-08 DESIGN AND APPLICATION OF ANALOG COMPUTERS 3. DIRECT-CURRENT OPERATIONAL AMPLIFIERS WITH FEEDBACK General Operational Amplifier with Feedback. The high gain d-c operational amplifier with feedback is truly the heart of the electronic analog computer. This device is capable of performing the basic linear operations of multiplication by a constant, sign inversion, summation, and integration, as well as other more complex operations. Figure 7 shows a block diagram of this device. ~ e1 J4. e2 eo eno m - eo High gain d-c amplifier in FIG. 7. Block diagram of d-c operational amplifier with feedback. Z, is a series feedback impedance with current ill Zl, Z2, ... , Zn are series input impedances with currents ii, i 2 , • • • , in, and eG is the grid voltage. The gain of the amplifier must be negative, i.e., the amplifier must provide a polarity reversal. Calling this gain -A, eqs. (9-12)' describe the circuit operation if no grid current is drawn. (9) eo = -AeG, (10) if n + :L i k = 0, k=l (11) (12) k .= 1, 2, ... , n. LINEAR ELECTRONIC COMPUTER ELEMENTS 22-09 Solution of this set of equations for the output voltage gives (13) where The amplifier gain A is made very high, in the order of many thousands or even millions. For high amplifier gain the denominator of eq. (13) approaches unity, so that the output voltage is very nearly given by (14) n e ~-ZfL~. k=l Zk Note that the grid voltage eo must be very nearly zero since in eq. (9) eo is finite. The grid is said to be at virtual ground potential. Sign Inverters and Summers. If all the impedances Z" Zl, Z2, ... , Zn are of the same kind, e.g., pure resistances, the output voltage is the negative sum of the input voltages, each mUltiplied by a constant which is the ratio of the feedback resistance to the particular input resistance. For the case of a single input with the feedback and input resistances made equal, the output is simply the negative of the input and the amplifier is spoken of as a sign inverter. For the multiple input case the amplifier is spoken of as a summing amplifier or summer. Gains greater than unity are achieved by choosing an individual input resistor smaller than the feedback resistor. In some commercially available computers, the feedback and input resistors are selected and plugged in by the operator. In others the feedback and several input resistors are permanently connected with gains of 1, 4, 5, and 10 commonly provided. Values of resistors for this purpose usually range from 100,000 ohms to 1 megohm. Integrators and Summing Integrators. A nearly perfect integrator is obtained by using a capacitor 0 as the fe~edback impedance and a resistor R as the input impedance. The output voltage, in operational notation, is, from eq. (14) (15) 1 -E·(s) ROs t • 22-10 DESIGN AND APPLICATION OF ANALOG COMPUTERS The time constant of this integrator ideally is infinite, as may be seen by comparing eqs. (15) and (8a). The gain is finite and equal to -lIRO. Values of feedback capacitance from 0.1 to 1.0 microfarad are commonly used with input resistances from 100,000 ohms to 1 megohm. By use of multiple input resistors, the sums of integrals may be generated with a single amplifier. Such an amplifier is sometimes spoken of as a summing integrator. In like manner to the summing amplifier, integrator gains of 1, 4, 5, and 10 second -1 are commonly provided by proper selection of input resistors and feedback capacitor. Initial Conditions. In general, n initial conditions are required to specify the solution of a homogeneous nth order differential equation. In the electronic analog computer, these initial conditions are applied as initial voltages at the output of the n integrators shown in Fig. 1. An initial voltage at the output of an integrator is produced by charging the feedback capacitor to the desired level prior to the start of computation. This usually is accomplished by using an appropriate voltage source together with an auxiliary charging network. 'The charging network, consisting of a separate input resistor and a feedback resistor in shunt with the feedback capacitor, is removed at the start of computation. 4. SCALE FACTORS Dependent Variables. In electronic analog computation, the magnitude of each dependent variable of the problem is represented by a voltage at the output of a computing element. The constant relating the magnitude of the voltage to one unit of the variable is called the amplitude scale factor. Every element in the computer has a scale factor associated with it. Considerable care must be exercised in the selection of these scale factors to assure proper operation of the computer. Considerations in Choice of Amplitude Scale Factors. The maximum available output voltage from an operational amplifier is limited by practical considerations to approximately one hundred volts. Before scale factors are assigned, the maximum magnitudes of all variables in the problem must be roughly ascertained by some means or other. The scale factor for each variable is then chosen so that the maximum voltage expected is a sizable fraction of the amplifier limiting level. If the scale factor is thus chosen, the amplifier will never be driven into limiting; yet the output voltage will be large compared with the spurious noise or drift voltages always present in electronic equipment. It frequently happens, particularly when dealing with new or novel problems, that initial scale factor assignments are greatly in error. This results either in overloading of one or more amplifiers or else in noisy, inaccurate LINEAR ELECTRONIC COMPUTER ELEMENTS 22-11 solutions. The scale factors must be readjusted by trial and error when this situation occurs. When convenient, it is usually desirable to choose simple rational scale factors, such as 0.01, 0.4, 5.0, or 200. This facilitates both problem checking and the recording of solutions. Example. If a variable representing displacement is known to have a maximum value in the range of 0.2 to 0.4 feet, a scale factor of 200 volts per foot is appropriate. Independent Variable. In electronic analog computation the independent variable is represented by computer time. The constant relating computer time in seconds to one unit of the independent variable is called the time scale factor. Thus tc (16) = Bx, where tc = computer time in seconds, x = independent variable in appropriate units, B = time scale factor. It frequently occurs, particularly in the study of dynamic systems, that the problem independent variable is time. In this case, the time scale factor relates computer time to problem time. A value of B greater than unity indicates that the computer operates more slowly than the actual system. Considerations in Choice of Time Scale Factors. In a linear problem, choice of time scale factor is influenced by the following considerations: 1. Integrator errors are increased by long computer runs. 2. Long computer runs are associated with low, inaccurate potentiometer settings. 3. Short runs are associated with high amplifier gains and frequently require cascaded amplifiers to provide sufficient gain. 4. The high frequencies associated with short runs cause phase shift in amplifiers, and thus produce errors. 5. The dynamics of recording devices must be considered so that recorder response characteristics do not affect the recording. Integrating errors in modern drift-stabilized computers are usually sufficiently low so that runs of many minutes duration may be tolerated. Much more serious limitations apply to high-speed operation. Cumulative phase shift due to cascading of amplifiers generally imposes a maximum frequency limitation of about 10 cycles per second on the computer. In some cases the errors resulting from phase shift may even become significant at frequencies below 10 cycles per second. If a servodriven recorder is used, rather than a galvanometer type recorder or an 22-12 DESIGN AND APPLICATION OF ANALOG COMPUTERS oscilloscope, the maximum permissible frequencies usually are limited to 1 cycle per second or less, owing to the inability of this device to follow large amplitude excursions at high frequencies. In most computer usage, normal operating frequencies range from about 0.02 to 3.0 cycles per second; solution times range from 2 or 3 seconds to 5 minutes. 5. TYPICAL PROBLEM SETUP Problem Statement. An understanding of the use of linear computing elements and of the manner in which scale factors are determined is best obtained by following through the steps required for the setup of a typical linear problem on the computer. These steps will be carried out for the differential equation d2 y dt 2 (17) + al dy dt + aoy = aou(t), which relates the response y (t) of a second order system to a unit step forcing function u(t), applied at t = O. For definiteness assume ao = + 1600, al = + 8, and all initial conditions are zero. Scale Factor. To determine a proper scale factor for this problem, it is first noted that the undamped natural frequency of the system is Wn = viao =40 rad/sec. If it is desired to display the solution on a servo-driven recorder, it is necessary to effect a time scale change which will reduce the natural frequency on the computer to a much lower value, in the order of 1 to 5 radians per second. A time scale factor, B = 20, will be chosen for this purpose. From eq. (16) it is noted that ~=B!i dt (18) dt e ' d2 d2 _=B2- dt 2 dt c2 • With these relations, eq. (17) may be rewritten for the computer in the form 2 (19) d y = dt e2 - al dy B dte - ao B2 Y ao (tc) + B2 U 13 . Problem Setup. Examination of eq. (17) shows that the steady-state value of y is unity. It is easily shown, however, that for very small (positive) al, the maximum value of y can approach 2. It can also be LINEAR ELECTRONIC COMPUTER ELEMENTS 22-13 shown that the maximum value of the derivative dy / dte cannot exceed a value equal to the product of the computer natural frequency and the peak amplitude of the sinusoidal component of y. In this example, therefore, dy/ dte is limited to a value of 2 per second. Similar reasoning indicates that d'2y/dt e2 will not exceed a value of 4 per second 2 • Hence 20 ao 100.1 • B2 =0.8 +50y Recorder 20 al 50·1·"B=0.16 '------~P.. ~.~50'4 ~--~ B2 - Ps dy +5°Tt c 0.4 r---------------------------------~ FIG. 8. Computer schematic diagram for solution of second order differential equation. amplitude scale factors 50y, 50dy/ dte, and 20d 2 y/ dt e2 are reasonable for this problem. The computer schematic diagram is shown in Fig. 8. It is not necessary to use a switch in series with potentiometer P 1 to apply the step-forcing function, u, since the very act of starting the computation applies this function automatically. 6. REPRESENTATION OF COMPLEX TRANSFER FUNCTIONS Definition and Methods. The concept of the complex transfer function is extremely valuable in the study of dynamic systems on the analog computer. The linear complex transfer function is defined as a mathematical operator which relates the output function (response) to the input function (stimulus) for a particular linear device. (20) G( ) = Eo(s) s Ei(S) , where G(s) = linear complex transfer function, Ei(S) = Laplace transform of input, Eo(s) = Laplace transform of output. If the device is such that the relation between its output and input can be described by a linear differential equation with real constant 22-14 DESIGN AND APPLICATION OF ANALOG COMPUTERS coefficients, (21) then the complex transfer function G (s) may be represented as a quotient of two polynomials in s. (22) Transfer functions of the type of eq. (22) include most cases of interest to the engineer. They may be represented on an analog computer, with certain restrictions, by any of three general methods: (1) direct analog method using passive networks; (2) operational amplifier method using complex input and feedback networks; (3) differential analyzer method which solves eq. (21) by use of potentiometers, summers, integrators, and (when necessary) differentiators. FIG. 9. Typical passive network circuit for realizing simple transfer functions. no loading: Eo(s) Ei(S) With Zz(s) Zl(S) + Z2(S) • Direct Analog Method. This method consists of using a passive network whose input voltage and open-circuit output voltage are related by the desired transfer function. A typical network of this type is shown in Fig. 9. The impedances Zl and Z2 usually consist of series and/ or parallel combinations of resistance and capacitance. Ladder networks consisting of many sections of the type of Fig. 9 are sometimes useful. So too are bridged T and parallel T networks. Passive networks of this type are simple out somewhat restricted in application. For example, if only resistance and capacitance are used, LINEAR ELECTRONIC COMPUTER ELEMENTS 22-15 the transfer function poles are restricted to the negative real axis. Also, output loading affects both the gain and transfer function. (a) (b) FIG. 10. (a) Cb) Generation of first and second order transfer functions by differential analyzer method. EoCs) EiCS) EoCs) EiCS) = bls + bo al8 + a o b2S 2 + bls + bo a2s 2 + als + a o • _ Operational Amplifier Method. The operational amplifier method is based upon eq. (14), rewritten here for the case of a single amplifier input, Ei (s). (23) Eo(s) = Ei(S) Zf(S) - Zi(S)' Suitable selection of input and feedback impedances allows a large class of transfer functions to be realized. Moreover, the input and feedback impedances are not restricted to the usual two-terminal or series type impedance, but may include linear four-terminal networks as well. 22-16 DESIGN AND APPLICATION OF ANALOG COMPUTERS Equation (23) is valid for four-terminal networks provided that the impedance functions used are the short-circuit transfer impedances of the networks, that is, the ratio of input voltage to short-circuit output current. The proof of this follows immediately from the fact that the input grid is at virtual ground potential and draws no current. Table 1 lists the short-circuit transfer impedances of a number of networks suitable for use with- operational amplifiers. Differential Analyzer Method. Figure 10 shows how a general first order and second order transfer function is realized using potentiometers, amplifiers, and integrators to solve eq. (21). Higher order transfer functions may be realized by logical extension of the schematics shown or by decomposition of the function into products of first and second order transfer functions. If the order m of the numerator exceeds the order n of the denominator, (m - n) differentiators are required. This situation rarely arises in practical problems. 7. OPERATIONAL AMPLIFIER DESIGN Characteristics. Operational amplifiers used in electronic analog computers must possess a number of characteristics in order to insure satisfactory performance. Some of the most important of these characteristics are the following: 1. High gain at frequencies from dc to several kilocycles. 2. Linear output .range from + 100 volts to -100 volts (bipolar output) . 3. High input impedance. 4. Low -output impedance. 5. Stable operation when connected to a variety of feedback and load impedances. 6. Low closed loop phase shift at frequencies from dc to several kilocycles. 7. Low noise output', 8. Low output drift. 9. Low grid current, The high gain characteristic usually requires that the amplifier be a multistage device. The d-c gain requirement necessitates use of a d-c amplifier. The linear, bipolar output range requirement necessitates the use of both positive and negative power supplies of sufficient voltage, and also influences the design of the amplifier output stage. High input impedance is usually obtained by placing the signal directly on the first stage grid. Low output impedance results from proper design of the output stage and the strong effect of large negative feedback. Stability, good frequency response (to several kilocycles), and low noise output LINEAR ELECTRONIC COMPUTER ELEMENTS 22-17 (to some extent) are achieved by careful attention to the design of interstage coupling networks and compensation networks. The achievement of low output drift and low grid current are perhaps the most difficult goals of amplifier design and will be considered at greater length. Drift in D-C Amplifiers. The output voltage of a d-c amplifier is sensitive to variations in plate, bias, and filament supply 'voltages, vacuum tube characteristics, and circuit resistance values. The output voltage thus contains, in addition to its correct value a spurious component which depends upon the aforementioned factors and tends to change slowly with time. This spurious component is usually called drift, and its presence gives rise to computer' errors. These errors can be serious, particularly when they are integrated. Great care is given in amplifier FIG. 11. Equivalent circuit for analysis of the effect of drift and grid current. design to selection of high quality components and tubes, choice of operating conditions, and stabilization of supply voltages, in order to minimize drift. In addition a manual drift control is usually provided, yvhich varies the cathode, grid or screen potential in the first or second stage, so that the amplifier may, from time to time, be adjusted to zero output for zero input. Satisfactory performance is sometimes achieved by such means, but for highest accuracy some additional drift reduction device must be provided. Representation and Analysis of Drift. For purposes of analysis, it is convenient to replace those actual factors causing drift by a single, small, equivalent voltage at the first stage grid. The magnitude ed of this voltage is just that which would produce the observed output drift voltage in the absence of the actual factors. These factors may act in any stage, of course, but those acting within the first stage will in general have the most effect on output drift. In Fig. 11, ed is the equivalent drift voltage, ia the first stage grid current, Z, the feedback impedance, and Zi an input impedance. For this TABLE 1. SHORT-CIRCUIT TRANSFER IMPEDANCES FOR OPERATIONAL AMPLIFIERS a This table is used to find networks whose impedance Zo(s), ZI(S), Z2(S), ••• , match the desired equation for operational amplifiers: Zo(s) Xl ZI(S) Xo = - Transfer Impedance Network A R -----'WVVv-- or XlXo = -ZO(S) [ ZI(S) ~ co C m Vl + Z2(S) -X2- + ... ] . (J) z Relations A=R to..) Inverse Relations R=A » z c » .." .." r o ~ A 1 + sT R D- A=R T = RC A = R=A T A C=- c A(l + sT) R R ~ t 2R T = RC 2 R=~ 2 C = 4T A oz o"'T1 » Z » r o(j) () o ~ .." C -I m :;:0 Vl a Reproduced by permission of the McGraw-Hill Publishing Company from F. R. Bradley and R. McCoy, Driftless d-c amplifier, Electronics, April 1952. This table was developed by S. Godet of the Reeves Instrument Corporation, New York City. A (11 :s:~) 0<1 R2 ~ + R2 A = RI T = R2C 0= RI + R2 RI C RI = AO R2 = A(1 - 0) C = T A(1 - 0) C A = RI Rl -D C R2 RI = A + R2)C T = (RI 0= R2 RI + R2 AO R2=-1-0 C= T(1 - 0) A Z m » :;::c m r m 0 --I :;::c 0 Z A ( sT ) 11++s2TIT2 A = 2RI I Rl Rl RICI TI = - 2 RI = 2R2C2 R2 A 2 == T2 = R I C2 ATI 4T2 C = 4TI I A C2 = 2T2 A 0 0 0 ~ "'a C --I n;'I :;::c m r m ~ m Z --I (I') 1 sB B=C ---;r--c C=B ~ ~ I ...0 TABLE l. SHORT-CIRCUIT TRANSFER IMPEDANCES FOR OPERATIONAL AMPLIFIERS-Continued to..) to.) ~ Transfer Impedance Network Relations Inverse Relations 0 0 m I sB (1 + sT) R C ----wNv--i /--- Ul B=C T= RC (j) R='I. B Z C=B » z 0 ~(l sB + ST) sT C C ~tr- B=q 2 T = 2RC T R=4B » C 0 = 2B ""r- » :::! 0 Z 1 sB (II ++s()T ST) ()<1 R ~O c 1 B = Cl T = R(Cl () = C2 Cl c2 + C2) + C2 R= T(l - ()) B Cl = C2 =-- B B() l-() 0 " » Z » r0 (j) () 0 + C2 c1 B = Cl CJ-- T = RC2 R c2 Cl () = Cl + C2 R = T B(l _ ()) Cl C2 = B() = B(l - ()) ~ c" -t m :;:c Ul A (1 1 + ST) + sOT 0<1 A R2 ~ ~C T = = 0= A 2(1 _ 0) 2RlR2 2Rl R2 Rl = RIC 2 R2 =- + 2Rl 2Rl R2 + A 0 C= 4T(1 - 0) A C Z m » ;;0 Rl Rl ~ JR' A = 2Rl T=(R2+~1)C 0= 2R2 2R2 Rl + ,Rl = A 2" m rm () -i R2 = C= AO 4(1 _ 0) 4T(1 - 0) A ;;0 0 Z () () 0 3: -c C -i m ;;0 R R ~ ell A = T = 2R R 2 (Cl + C2) 0= R=:! 2 Cl = C2 = 2C2 01 + O2 2T(2 - 0) A m rm ~ m Z -i Vl 2TO A to.,) to.,) N TABLE 1. SHORT-CIRCUIT TRANSFER IMPEDANCES FOR OPERATIONAL AMPLIFIERS-Continued N N ~ t-.) Transfer Impedance 1 (1 + sOT) sB 1 + sT ()<1 Network Relations B = C2 c2 4~ Cl Ct T = RCI (2C2C~ C 1) Inverse Relations T()2 R = 4B(1 _ () (i) 2B(1 - () » Z C1 = () = 2C 2 2C2 Cl + 0 m tn () C2 = B Z 0 » .-." ." 0 c1 ---;1 ~:2 c1 II- B= C 12 + C2 2Cl T = RC2 () = T()2 R = 4B(1 _ () 2B C1 = - ">- () 2Cl 2Cl C2 + C2 = >-I (5 Z 0 4B(1 - () ()2 Z » .-0 (j) C C ~F B = (Rl; R2) C T = R2C ()=~Rl + R2 T()2 Rl = 2B(2 _ () () 0 ~ ." T() R2 = 2B C = 2B () C -I m :;;0 tn 1sB [(1 + sT l ) (1 + 8T3)] + sT 2 < T2 < T3 B 1 Tl Tl CJc2 R2 = Cl + C2 = RlCl T2 = (Rl T3 T l (T 3 - T l ) Rl = B(T2 - T l ) + ClC2 ) R2) ( Cl + C2 T3(T 3 - T l ) R2 = B(T3 - T2) B(T2 - T l ) C 1 = -T-'----3----=-T1- = R2C2 C2 A [ (1 + Tl 1 + ST2 ] sT l )(1 + sTa) < T2 < T3 A = Rl -DO C1 C2 + Tl = T2 = ( Rl T3 R2 RlCl RlR2 ) + R2 (Cl + C2) = B(T3 - T2) T3 - Tl A(T2 - T l ) R 1 = --'--T-3---=T:-l A(T3 - T2) R2 = T3 - Tl T l (T3 - T l ) C l = A(T2 - T l ) T3(T3 - T l ) C2 = A(T3 - T2) = R2C2 !:: Z m » ;:::0 m r m () -i ;:::0 oz o () o ~ -C C -i m ;:::0 m e C2 A = R2 Rl = T2 = RlCl TlT3 Tl + = RlR 2ClC2 T3 = RlCl + R2C 2 + R2Cl AT22 (T3 - T2)(T2 - T l ) R2 = A C _ (T3 - T2)(T2 - T l ) AT2 1 C2 = TlT3 AT2 r m ~ m Z -i (J') ....., ....., ~ w TABLE 1. Transfer Impedance A[ (1 + Tl SHORT-CIRCUIT TRANSFER IMPEDANCES FOR OPERATIONAL Network 1 + sT2 ] sT l )(1 sT3) < T2 < Inverse Relations Relations = A + AMPLIFIERS-Continued Rl + R2 T T3 2 = ( RlR2 ) C Rl + R2 2 + T3 = RlCl + R2C2 + R2Cl A Rl = Rl T2 = R2(Cl + C2) TlT3 = RlR 2ClC2 Tl + T3 = RlCl + R2C2 +R2Cl A[ (1 + 1 + ST2 ] STl)(1 + sT3) T2 ~ Tl ~ T3 Rl Rl A = 2Rl R12 R2 +- RlR2 ) (C l Rl +2R2 T3 = R l C2 + + C2 = (T l T2 T2 T 3 - Tl T3)2 AT2(T3 - T 2)(T2 - T l ) Rl = A A(T3 - T2)(T2 - T l ) R2 = (Tl T3 - T2)2 Tl T3 - T2 Cl = A C2 = T l T3(Tl T3 - T 2) A(T3 - T2)(T2 - T l ) + + + + C2) N ..a:a. 0 m Ul (j) Z » Z 0 » ""'C ""'C r- 0 ~ (5 Z a -n » z » ra (j) () AT2 Rl = (Tl T3) a AT22 R2 = (Tl T3)(Tl T3 - 2T2) C _ Tl(T l T3) 1 AT2 C + Tl = RlCl T2 = ( = + TlT3 = RlR 2C l C2 Tl AT22 TlT2 T2 T 3 - TlT3 R2 = A(T3 - T2)(T2 - T l ) TlT2 T2T3 - TlT3 C TlT3 1 = AT2 Rl C1 N N + C2 = + + T3(T l T3) AT2 ~ + ""'C --i m ~ Ul A L(1 + s~T~)(u1~ ~ ST3)J T1 ~ T3 ~ T2 .L.L Rl R2 -oro ~C2 .LIJI - TI T2 T3 I = RIC I = R1R2 R1 R2 (2C 1 + + C2) = (T:~ IT3) R2 = AT3 T1 T3 C1 = R2C 1 = RI .L"~ C2 = T1 + + T3 A T1 + T3 (T2 + T2 A A ( + 1+ + ) 1 sT l sT I s2TIT2 A = R2 R2 -C::l Cf,C Rl R 1 T1 = 2R 1C R2 T2 = R2C 2 T3 + 1+ + 1 ST2 ) sT I s2T1T2 A c2 -0- = C A ~Cl 1 sB (1 = 0 2T2 Z B Tl ~ T2 Rl R2 c2 ~rC1 J = TIT2 C RC I 2 1 T1 = + T2 ~ "C 4T2 -i m ;;0 R 1R2C l C2 = () 0 A T1 =- A C2 = () R=2 C2 + sT1)(1 + ST2) > -i A 2R = C Z m ;;0 TI = 2RC2 T2 2) m rm () A A ( _ ;;0 _ AT1 - 4T2 = T1 RIC l + R2C2 R1 = R2 = C = + R l C2 1 C2 = (v0\ - VT;)2 B m rm ~ m Z en -i VT l T 2 B BVT l T 2 (VT 1 - VT2)2 B t-.) t-.) ~ U1 TABLE 1. SHORT-CIRCUIT TRANSFER IMPEDANCES FOR OPERATIONAL AMPLIFIERS-Continued Network Transfer Impedance Relations Inverse Relations to.) to.) ~ 0'0 C ~ [(1 + sT, )(1 + ST2)] sVT I T 2 sB B c2 cl R2 ~1~ Tl~ T2 = C2 TIT2 TI = R I R2C I C2 + T2 = RIC I Rl + R2C2 (~ -VT2)2 RI = B R2 = B C = I C2 ~ [C1 + STI)(l + sT2)] sB . s2TI T2 TI < T2 cl c2 cl ~r;r~ R B = C I C2 CI R= + 2C2 C TI = RC I T2 = R(C I R = + 2C2) _ I - C2 C BVT I T 2 (VT I - V T 2)2 B T I (T 2 - T I ) 2BT2 2BT2 T2 - TI Tl < T2 < T3 B Rl iO R2 c2 T2 = CI = TIT3 TI CRI + R2)C2 = R I R2C I C2 + T3 = RIC I + R2C2 + R I C2 0 :> -i 0 Z 0 Z » .0 (j) + T3 RI = R2 = TI T3CTI - T2 () + T3 c B B(T3 - T2)(T2 - T 1 ) (TI T3 - T2)2 + 0 ~ - T2) BCT3 - T2)(T2 - T I ) CI = B C2 = ""C ""C .- :> = BT2 TI »- 11 TI 1. [(1 + STl)(l + ST3)] sB 1 + sT2 Z » z VT 1 T 2 + R I C2 m Vl (i) ""C -i m ;::0 Vl = Cl B T C1 2 4(1 R2 = TITa TI + C2 R ( C I C2 ) 2 Cl C2 + = RI = TITa BT2 R2 = (TI T2 T2 T a - TI Ta)2 BT2(Ta - T2)(T2 - T I ) R I R2C I C2 + Ta = RIC I C2 + R2C2 + R l C2 CI = C2 = + BT22 TlT2 + T2 T a - TlTa B(Ta - T2)(T2 - T I ) TIT2 T2Ta - TITa + C Z m » :;;0 m rm () B 4%0 R'l. T2 = CI = TITa Tl R R2C2 = + Ta R l R2C l C2 = RIC l C2 + R2C2 + R2C l R2 Cl = = C1 Rl ~~ f' R2 T2 = = Tl Ta TI Cl R 1 R2C2 = + Ta 0 Z (Ta - T2)(T2 - T I ) BT2 . n () 0 ~ B BT22 C (Ta - T2)(T2 - T l ) :;;0 _ TlTa BT2 --I m m rm ~ m Z R I R2C l C2 = :;;0 ""'C C2 = B --I _ TlTa I - BT2 RIC l + R2C2 + Rl C2 R2 = TIT2 T a B(Ta - T2)(T 2 - T I ) Cl = B C2 = B(Ta - T 2)(T2 - T 1) TlT3 --I en t-.J t-.) N ""oJ TABLE 1. Transfer Impedance A [ + sT3 ] 1+ + s2TlT2 1 sT l SHORT-CIRCUIT TRANSFER IMPEDANCES FOR OPERATIONAL R2 T2 Relations Network C2 Tl > 4" (complex roots) A 2RlR2 2Rl R2 Rl (R l Cl 2R2C2) Tl = 2Rl R2 R l R2C l C2 T2 = RlC l 2R2C2 T3 = RlC l 2 = + + + + T3> T2 C2 A = 2Rl + 2Rl C2 Rl(R l + 2R2)C l C2 R2C l + 2R l C2 Tl = R2C l T2 = T3 = ( R2 C3 AMPLIFIERs-Continued + ~1) C1 A = 2R + 2C3) RC3(Cl + C2) C2 + 2C3 Tl = R(C2 T2 = T3 = R "2 (C l + C2) Inverse Relations A T 32 2 2[T3 - Tl (T3 - T2)] AT32 R2 = T l (T3 - T2) 4[T3 2 - T l (T3 - T2)] Cl = AT3 Rl = C2 = TlT2 AT3 A Rl = 2 R2 = N N I N OOP 0 m Vl (fi z » Z 0 » ., .,r- n » -i (5 Z ATl (T3 - T2) 4[T3 2 - Tl (T3 - T2)] 4[T3 2 - T l (T3 - T2)] Cl = AT3 " » C2 = TlT2 A T3 (j) A R=2 2[2T3 2 - T l (T3 - T2)] Cl = A T3 2T l (T3 - T2) C2 = AT3 C3 = TlT2 AT3 0 Z » r0 () 0 ~ ., C m -i ;::0 Vl .L.L T2 Ll + sTI + s2TI T2J TI >4 (complex roots) T3 < TI R -.~ t3 ~ TI = T2 = T3 = A R2 --G;iJ- r Rl = TI = T2 = T3 = + R2C2 R I R2C I (C I + 2C2) 2R I C I + R2C2 2R I C I 2R I CI R2 C I (2RI C2 R2C 1 ) 2C I C2 R I R2 C l C2 2R 1 C2 R2C I C 1 1 2R C 2 + + + 2C 1 A R3 TI T2 T3 = = = = + C2 R3 Rl (2R2 + R3)C Rl + R2 R2 R 3C 2R2 R3 C 1 2R R2 + + R2 = 2RI + R2 I = R2 = C1 = C2 = + STl)(l + ST2) Tl < T2 Rl R2 Rl ~ Y A = T2 = ( RIR2 ) 2RI R2 C RIC + AT3 2 = R2 = C _ 2TIT2 AT3 ' 4[TI T2 - T3(T I - T3)] A I - C2 R1 = 4Tl T2[T 1 T2 - T3(TI - T3)] AT32(TI - T3) = AT3 2 2[2Tl T2 - T3(TI - T3)] R2 = R3 = = C AT3 2(Tl - T3) A 2TIT2 AT3 ~ Z m » :;;0 m rm () --I :;;0 0 Z () () 0 ~ ""tJ C --I m :;;0 m rm ~ m Z --I Vl = R 1 TI .1.-'..5 RI Rl A(l .. 4[TI T2 - T3(T I - T3)] A 2[TI T2 - T3(T 1 - Ta)] AT3 (T 1 - T3) A A (T2 - Tl) 2T2 Tl AT2 2T22 C= A(T2 - T I ) R2 = to.) to.) ~ ..0 22-30 DESIGN AND APPLICATION OF ANALOG COMPUTERS arrangement (24) eo = - A (ed + e), (25) (26) For large A, solution of the above equations yields for the output voltage with feedback: (27) eo = - Kei - (1 + K)ed + iaZj, where K = Zj/Zi. If for the moment the effect of grid current is neglected, the output voltage without feedback is merely (28) Although feedback reduces the output due to drift in the ratio of AI (1 + K), the output due to the signal ei is reduced by an even larger ratio AIK. Therefore, feedback, despite its many other virtues, actually increases the fractional error due to drift in the ratio of (1 + K) I K. Besides the drift, there is in eq. (27) a spurious component of output voltage due to first stage grid current, the magnitude of the voltage being that produced by the flow of all the grid current through the feedback impedance. In practice, there is no simple method of determining whether a given spurious output voltage is caused by drift or by grid current, but the distinction is nevertheless important, particularly in the consideration of drift-corrected amplifiers. Drift-Corrected Amplifiers. The effect of drift can be reduced by adding to the main d-c amplifier an auxiliary drift-free amplifier which amplifies the input signal but not the drift voltage ed. The circuit used is shown in Fig. 12, and a practical method of providing the auxiliary drift-free amplification is presented in the following section. If the gain of the auxiliary amplifier is A', the following equations describe the operation of the circuit of Fig. 12. (29) eo = -Aed - A (1 + A')e, (30) (31) It is seen that eqs. (29-31) are identical to eqs. (24-26) except for the additional amplification - AA' provided for the signal e. Solution of LINEAR ELECTRONIC COMPUTER ELEMENTS 22-31 eqs. (29-31) for large A results in (32) where l( = Z JiZi. Comparison of eqs. (27) and (32) shows that the addition of the auxiliary amplifier reduces the output voltage due to drift by a factor (1 + A'). Values of A' of the order of 10 3 arc not difficult to achieve, so that the reduction in drift is indeed dramatic. Exam,ple. Modern, ;;>----'----0 Co FIG. 12. Use of auxiliary amplifier for drift correction. high quality, operational amplifiers utilizing this method of drift correction may have output drift levels as low as 10 to 100 microvolts over very long periods of time. Comparison of eqs. (27) and (32) once again shows that the spurious output due to grid current is in no way lessened by addition of the auxiliary amplifier. The only practical remedy for input grid current troubles is the selection of a tube with sufficiently small grid current. Fortunately some currently available triodes have grid currents of the order of 10 - 10 to 10 -11 ampere. After initial balancing, the output due to grid current can be maintained as low as 10 to 20 microvolts if a I-megohm feedback resistor is used. Chopper Amplifiers. The usual method of providing auxiliary driftfree amplification is to use the voltage e at the junction of the input and feedback resistors to modulate a carrier signal. The auxiliary amplifier is an a-c amplifier, inherently drift free, which amplifies this carrier signal. The output of the auxiliary amplifier is demodulated and applied to, the first stage of the main amplifier along with the direct path voltage e. Addition of these two voltages is usually accomplished 22-32 DESIGN AND APPLICATION OF ANALOG COMPUTERS through the use of differential amplification in the first stage of the main amplifier. Modulation and demodulation are usually achieved by eio----.J'V\J~-'::'"e., Q - - - - - - - - - - - - - - = - t e I I ( r J J r r-= I \ r .-I ~ L '\ FIG. 13. Operation of chopper amplifier circuit. the action of a single vibrating relay or chopper, driven by an alternating current of suitable frequency. Figure 13 illustrates the operation of this circuit, commonly referred to as a chopper amplifier. The voltage e is chopped, amplified, rectified, LINEAR ELECTRONIC COMPUTER ELEMENTS 22-33 filtered, and applied to the main amplifier. The output filter has a very low passband compared with the chopper frequency, so that the combination of chopper contacts, a-c amplifier, and filter form, effectively, an auxiliary driftless d-c amplifier having a bandwidth from zero to perhaps 1 cycle per second. This small bandwidth is the principal reason why the chopper amplifier cannot be used by itself as the main amplifier. The benefits of the increased gain from the chopper amplifier are, of course, only realized over this very narrow band, but this is sufficient for the suppression of drift in the main amplifier. The combination of the main amplifier and the chopper amplifier is usually spoken of as either a chopper stabilized d-c amplifier or a drift corrected d-c amplifier. Development of the chopper stabilized d-c amplifier was one of the most important events in the development of present day electronic analog computers. The schematic of a typical amplifier employing chopper stabilization is shown in Fig. 14. 8. ERRORS IN LINEAR COMPUTER ELEMENTS Error Sources. The most important errors in the solution of ordinary linear, constant coefficient differential equations on an electronic analog computer arise from the following sources: (1) potentiometer errors, (2) amplifier gain errors, (3) loading errors, (4) amplifier time constant effects (limited bandwidth effects), (5) integrator time constant effects, (6) amplifier drift, (7) amplifier noise, and (8) recording errors. Potentiometer Errors. For potentiometers set by means of an external voltmeter, the principal errors are due to voltmeter inaccuracy, potentiometer resolution, and potentiometer stability. For modern multiturn potentiometers and precision voltmeters, potentiometer errors as low as 0.01 to 0.02 per cent may be achieved. Amplifier Gain Errors. The closed loop gain of a summer or integrator is a function only of the ratio of the feedback and input impedances provided the open loop amplifier gain is sufficiently high. By use of precision resistors and capacitors enclosed in temperature controlled ovens, this ratio can be made accurate to about 0.01 to 0.02 per cent. The error in closed loop gain due to finite open loop amplifier gain is considerably less than 0.01 per cent, under normal operating conditions, and is therefore negligible. Loading Errors. Output loading errors, so serious in passive computing networks, are virtually eliminated by the action of high amplifier gain in a feedback loop. The closed loop amplifier output impedance is of the order of 0.1 ohm or less. The load impedance seen is almost :nJ~v~:r 22-34 DESIGN AND APPLICATION OF ANALOG COMPUTERS r--------------------------rll I II Feedback network I LTJ I c r-1r, I I I r---..., r4 cr- ~ L ___ ...J Input network I ,v.~+-l-~--<~ Input Resistor Resistor High quality .ground A-c input to chopper R20 100 kP. FIG. 14. A typical operational amplifier schematic diagram, LINEAR ELECTRONIC COMPUTER ELEMENTS 22-35 ------------------------------,I ---------------------------------------------------0+110 ----~-------_.------------------~-----_.-------~+300 I -300 I I r--t------o r-----o -500 "4 ± Gnd 5881 I I I I Output_ _ _ RIO 33 kH RI2 150 k12 1w RI3 C22 100 krl 1500 ~---~-;~r_r_--~ " ~.:>Rc I --~---------+-----------~---------------~~~~r_--~ (Courtesy of Electronic Associates Inc., Long Branch, N. J.) . . .J I -.JI 22-36 DESIGN AND APPLICATION OF ANALOG COMPUTERS less than about 5000 ohms. The resulting gain error due to loading is considerably less than 0.01 per cent and is therefore negligible. Amplifier Time Constant Effects. Actual amplifiers used in high quality analog computers have a closed loop bandwidth extending from dc to about 10 kilocycles. The effect of limited bandwidth may be represented approximately by including a small, low pass, time constant, TA, in the amplifier transfer function (33) l?o(S) ~f(S) l?i(S) = - ~i(S) . 1 + 1 TAS' where TA is of the order of 10 to 30 microseconds. The gain and phase errors contributed by this effect are generally significant only at reasonably high frequencies, above about 10 cycles per second. Integrator Time Constant Effects. The time constant of an integrator consisting of an operational amplifier with capacitive feedback, is noninfinite because of two practical effects, capacitor leakage and noninfinite amplifier gain. The actual integrator transfer function is (34) ~(S) = _ ~~ RC where liRO is the integrator gain, and is given by (35) TI = 1 TIS S TIS TI, + 1' the integrator time constant, RC A + (R/R z) . R z, the capacitor shunt leakage, is of the order of 1011 ohms for a high quality polystyrene capacitor of 1 microfarad. For a I-megohm input resistance, Rz/ R is of the order of 10 5 • Since the gain of a chopper stabilized amplifier at low frequencies is in the order of 10 7 , leakage is the dominant effect and TI is of the order of 10 5 seconds. The computation errors due to TI are quite negligible. Amplifier Drift. As indicated in Sect. 7, the output drift voltage of a chopper stabilized amplifier, referred to an amplifier gain of unity, is of the order of 100 microvolts or less. The computational error resulting from this drift is generally quite negligible, except for very long computer runs involving open ended integrations. Amplifier Noise. Random noise at the output of an operational amplifier exists at all frequencies passed by the amplifier. The rms value of this noise may be of the order of 10 millivolts or even greater. However, that portion of the noise within the usual computation frequency bandwidth is much less, perhaps of the order of 1 or 2 millivolts LINEAR ELECTRONIC COMPUTER ELEMENTS 22-37 rms. By proper scaling of a problem, it is almost always possible to minimize the effect of noise on computer accuracy. Recording Errors. The accuracy of solutions of linear differential equations obtained with an electronic analog computer is frequently limited by the characteristics of the output or recording device. The most commonly used recording devices are the galvanometer type and the servo-driven type. Assuming that the time scale of the problem is properly chosen so that the dynamic characteristics of the recorder do not adversely affect the solution, static recording errors and reading errors will nevertheless deteriorate the accuracy in the order of 2 to 5 per cent for the galvanometer type recorder, and 0.1 to 0.5 per cent for the servo-driven recorder. Overall Accuracy. Exclusive of recording error, the most important errors occurring in the solution of linear systems on a properly scaled analog computer result from potentiometer and amplifier gain errors. The error in each individual linear operation is of the order of 0.01 to 0.02 per cent. The overall error will grow in some manner with the size of the problem and the number of operations required. For many linear systems, the overall accuracy of solution is of the order of 0.1 to 1.0 per cent, which is compatible with the accuracy of the recording devices used, and is sufficient for most engineering purposes. REFERENCES 1. C. L. Johnson, Analog Computer Techniques, McGraw-Hill, New York, 1956. 2. G. A. Korn, and T. M. Korn, Electronic Analog Computers, 2nd edition, McGraw-Hill, New York, 1956. 3. C. A. A. Wass, Introduction to Electronic Analogue Computers, McGraw-Hill, New York, 1955. E DESIGN AND APPLICATION Chapter OF ANALOG COMPUTERS 23 Nonlinear Electronic Computer Elements George A. Bek.ey I. Function Multipliers 2. Function Generators 23-01 23-14 3. Switching Devices 23-22 4. Trigonometric Devices 23-31 23-34 5. Time Delay Simulators 23-39 References I. FUNCTION MULTIPLIERS Introduction. Chapter 22 describes linear operations such as addition, multiplication by a constant, and integration with respect to time. Nonlinear operations cannot be performed with amplifiers and potentiometers alone, but require specially constructed computer elements. Many devices have been developed for performing multiplication of variable quantities in electronic analog computers. The most important of these in practical use are the electronic time division multiplier, the "quarter squares" multiplier, and the electromechanical servo multiplier. These are treated in detail in this section. Other types of multipliers are surveyed more briefly. A general list of symbols is given in Chap. 21, Sect. 6. Multiplication of Positive and Negative Numbers. In general an electronic multiplier will have two input voltages x and y. The output will be a voltage proportional to the product. (1) z = kxy, where k is a positive or negative constant. 23-01 23-02 DESIGN AND APPLICATION OF ANALOG COMPUTERS Four-quadrant multipliers are devices that accept plus or minus for both x and y and give a product with the correct sign. Two-quadrant multipliers permit one variable to change sign but not the other. One-quadrant multipliers can accept one sign only for either x or y. (y x(±) -------'---+I Two-quadrant multiplier + E 1)(+) z= -xy I----~ FIG. 1. Four-quadrant multiplier, El ± Y > o. A two-quadrant multiplier may be made to behave as a four-quadrant device by adding a constant voltage to the variable that is not permitted to change sign. ExAMPLE. Multiply ±x and ±y by using a two-quadrant multiplier. Let:x be the variable that can assume plus and minus values for input. Cho'ose El so that El ± Y is always positive. Then the product (2) . (X)(EI + y) = XEl + xy will be formed as shown in Fig. 1, and the desired product is (3) z = xy = X(EI -xE 1• y yo---r---, ">-oE--......---0Z + y) =ay ~E---,--<> Z = kxy Motor Servo amplifier (a) (b) .FIG. 2. Comparison of linear and servo-driven potentiometers. Electromechanical Servo Multipliers Potentiometers are used to multiply by constants, since the voltage at the potentiometer arm represents a constant fraction of the total voltage applied across the potentiometer (see Fig. 2a). If the position NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-03 of the potentiometer arm is made proportional to another variable, the voltage appearing at the wiper will be proportional to the product of the voltage across the potentiometer and the wiper position, or z = lcxy, (4) +w +Y' -w -Y (a) +100 (b) Zl =O.OlxYl " FIG. 3. (a) Basic servo multiplier. (b) Servo multiplier with multiI?le ,outp.,uts. where x is the wiper position and y is the voltage applied across the potentiometer, as illustrated in Fig. 2b. A practical servo multiplier is shown in schematic form in Fig. 3a in which x is the input voltage,' ±w is the constant voltage on the follow-up potentiometer, and ±y is the voltage on the multiplying potentiometer. The follow-up and multiplying potentiometers are ganged together mechanically so that their positions always correspond. Then, (5) z -x =-, w y 1 z = - xy = lcxy w ( ; = Ie = constant) . 23-04 DESIGN AND APPLICATION OF ANALOG COMPUTERS It is customary to set w = 100 so that k = l/w = 0.01. A practical servo multiplier is shown in Fig. 3b. Note the following: (a) More than one product can be obtained with a single servo amplifier by mounting additional potentiometers on the shaft, thus obtaining a series of products kXYb kXY2, kxys, etc. (b) Four-quadrant mutiplication is obtained by applying positive and negative voltages across the multiplying potentiometers, as illustrated in Fig. 3. In this case the grounded center taps are employed. (c) Sign reversal of the output is obtained by reversing the polarities of the voltages applied to the multiplying potentiometers. (d) Increased accuracy can be obtained in two-quadrant multiplication by removing the center taps and grounding one end of all the potentiometers. In this case the x input is restricted to one polarity and the greater accuracy results from increased resolution on the multiplying potentiometers. (e) An indicating dial can be mounted on the servo shaft to provide a continuous measure of the input voltage. Limitations. Owing to the presence of mechanical elements (motor and gear trains) the frequency response of a servo multiplier is severely limited. With 60 cps servos this response seldom exceeds a few cycles per second for full-amplitude input signals, and may reach 10 or 15 cps for low-level input signals. Considerable improvement in frequency response is achieved by the use of 400 cycle servo motors, since at a higher frequency less rotor material is required and thus the inertia of the motor is decreased. Servo multiplier response is often specified for 10 per cent amplitude signals. However, a low amplitude signal reduces the resolution available and consequently reduces the accuracy of multiplication. Overall accuracy can be improved by the use of highly stable and accurate reference voltages, larger diameter or multiturn potentiometers of high linearity, low-inertia servos, and by attention to loading errors (see below). Accuracies better than 0.05 per cent of full scale have been obtained with these devices. Loading. Errors due to loading of potentiometers can be compensated by loading the feedback potentiometer with a resistance equal in value to the load on the multiplying potentiometers, as illustrated by the resistor R in Fig. 3b. It should be noted that: (a) For proper loading compensation, all the multiplying potentiometers must connect to equal resistances, such as unity gain inputs of amplifiers. (b) Since this method is one of compensation and not correction, the servo position (and thus the indicating dial) is no longer a correct indication of the input voltage. NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-05 (c) A multiplying potentiometer itself presents a variable load which depends on the servo position, and should therefore always be fed from a low-output impedance device, such as an amplifier, rather than directly from another potentiometer. Time Division ,Electronic Multipliers The basic principle of this type of multiplier consists of determining the average value of a voltage which consists of a series of modulated ~ Time FIG. 4. Output pulse train in a time division multiplier. rectangular pulses, such as shown in Fig. 4. With reference to this figure, the ayerage value of the voltage is (6) where e is the height of the pulse, T 1 is its duration, and T is the period. Thus, if one of the input variables is made proportional to the pulse height, and the other to the ratio of pulse duration to cycle time, the average amplitude of the rectangular wave will be proportional t'o the product xy, since T (7) Hence y = k2 Tl . z = kxy, 1 k = klk2 . The words "time division" are due to the fact that one of the variables is used to control the ratio of on time to on-plus-off time during a cycle. In England the device is known as a "variable mark space multiplier" for the same reason (Ret 4). Basic Description. A practical time division multiplier is shown in block diagram form in Fig. 5a and the corresponding waveshapes in Fig. 5b. The operation of the device may be summarized as follows: (a) The bistable multivibrator generates a series of gating pulses which control two electronic switches. 23 .. 06 DESIGN AND APPLICATION OF ANALOG COMPUTERS '(b) When the switches are closed, the input to the integrator is (E 1 - ER + y). El and ER are reference voltages. Scale factors are in such a manner that a linearly decreasing integrator output is ~elected x adjust X O-----L----1 I1J1.JL Bistable multi, vibrator yo------------------------------~~ (a) Output of switch 2 Integrator input Integrator output Output of switch 1 -r~----~~~--~--~----~~------------~Time -t-T-----r~r----r--+_----+__+------------~Time -r~~----~~----~~~----~~~--------~Time -r~----~~~---L--L-----~-L------------~Time (b) FIG. 5. (a) Block diagram of electronic time division multiplier. (b) Typical waveforms in a time division multiplier. produced, with a slope proportional to - (E 1 - E R + y). 'Vhen the integrator output reaches the switching level eb of the multivibrator, the switches open (see Fig. 5b). NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-07 (c) With the switch open, the integrator input is (-ER + y), and the output has a positive slope proportional to (E R - y) which continues to rise until it reaches the multivibrator switching level ea. (d) The output of switch 1 is zero when the switch is open, and is proportional to (Ell - x) when the switch is closed, thus creating a series of output pulses as shown in Figs. 4 and 5b. (e) The duration of the pulses is determined from their slope and amplitude, as follows (see Fig. 5b): (8) k(e a - eb) Tl = - - - - - ' - - El - ER + y' (9) T2 = k(e a - eb) ER - Y , where k is a constant of proportionality. The average amplitude of the output is therefore (e = ER - x) (10) Thus, (11) Eav 1 (ER2 - ERx - ERy El = - + xy). In practice, the terms ER2, ERx, and ERy are usually removed before filtering of the pulse train. As indicated in Fig. 5, the output amplifier and filter adds the correcting factors and filters the output to produce a voltage proportional to the product xy. (f) The operation of the circuit as described above depends on maintaining the inputs x and y essentially constant over several cycles of operation. Thus, the repetition rate of the multivibrator must be considerably higher than the highest frequency of interest. Practical rates are of the order of 1 to 50 kilocycles. Accuracy. The accuracy of a multiplier of the type shown in Fig. 5 is of the order of 0.1 to 1.0 per cent of full scale. Higher accuracies, of the order of-O.Ol per cent are possible with chopper-stabilized amplifiers used for the summing, integrating, and output filtering functions; with higher repetition rates; and with the use of stabilized electronic switches. Electronic multiplier accuracies are quoted as percentage of full scale since they generally refer to a specific error in volts. Thus a multiplier with a quoted accuracy of 0.02 per cent can have a possible error of 0.04 volt. This voltage represents the error of 0.02 per cent with 100-volt inputs, but may represent a much greater percentage error if one· or both inputs are near zero. Some commercial multipliers have a band- 23-08 DESIGN AND APPLICATION OF ANALOG COMPUTERS width selector, which allows the multiplier to obtain maximum accuracy at a sacrifice in frequency response or vice versa. The bandwidth is thus dependent on accuracy and repetition rate. Practical values range from 50 cps to 2000 cps. During operation, the repetition rate of a multiplier of the type shown in Fig. 5 may vary over a ratio of 2 to 1. High-accuracy multipliers have also been built using a constant repetition rate. An excellent discussion of problems involved in multiplier design is given in Ref. 2, pages 275-280, and Refs. 5 and 6. Quarter Squares Multipliers This type of multiplier is based on the relationship z = xy = i [(x (12) + y)2 - (x - y)2]. The main differences in the methods of mechanizing this equation come about from differences in the squaring circuits used. Triode Squaring Circuits. Early models of quarter squares multipliers were based on the fact that the plate current of a triode is approximately proportional to the square of the plate voltage over a limited range of operation, i.e., (13) A number of repetitive analog computer installations use multipliers based on this principle. -x o---r----=-I - y o---f-""---.!.i FIG. 6. Block diagram of quarter squares multiplier. Biased Diode Squaring Circuits. Biased diode type function generators (see Sect. 2) can be used to perform accurate squaring of th~ input voltages, and thus, in conjunction with computer amplifiers, can be used to form a quarter squares multiplier as shown in Fig. 6 (Ref. 7). Features. (a) Frequency Response. Can be excellent, since it is not limited by mechanical elements as is the servo multiplier. NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-09 (b) Accuracy. Can be of the order of 0.1 per cent of full scale. The error can be quite large when the values of the variables are approximately equal and thus make the difference (x - y) small. No difficulty is experienced near zero for one of the variables, as is the case for certain models of the time division multiplier (see above). (c ) Modifications. The quarter squares multiplier is sometimes modified to obtain functions which are easier to set up on function generators than the square. One type of multiplier makes use of the functions VI + V 1 2/ a and V 2 - V 2 2/ a, where (14) V1 = (x + y), V2 = (x - y), a = constant thus solving the relation: (15) z = xy = 4:a ([ (x + y) + (x +a y)2J + [ (x - y) - (x - 1 a y)2J - 2x . Other Types of Multipliers The three types of multipliers discussed above are those in most common use in large analog computer installations in the United States. A number of other devices are briefly mentioned below. More extended discussions and further references can be found by consulting the references at the end of the chapter (in particular, Refs. 2 and 8). xo-----~ z = kxy yo-----~ FIG. 7. Block diagram of logarithmic multiplier. Logarithmic Multiplier. Function generators can be used for multiplication by using the rule for the logarithm of a product, (16) log xy = log x + log y, and therefore (17) z = xy = antilog (log x + log y). as indicated in block diagram form in Fig. 7. Dynamometer Multiplier. Based on the principle of operation of a dynamometer type measuring instrument, in which the torque T acting on the needle is proportional to the product of the two coil currents II 23-10 DESIGN AND APPLICATION OF ANALOG COMPUTERS and 12 if the angle of displacement is small, i.e., (18) A feedback circuit which detects shaft motion creates an equal and opposite torque to keep the angular displacement small. Overall accuracy, about 1 per cent. Crossed Fields Multiplier. This device operates on the crossed fields in a cathode ray tube, and is illustrated in Fig. 8. A voltage proportional to x, applied to the horizontal deflection plates, gives the cathode ray beam a horizontal component of velocity. In the presence of a concentric magnetic field proportional to the voltage Yi the cross product z=kxy >---'--~ x Amplifier -b FIG. 8. Crossed fields multiplier. of horizontal velocity and magnetic field deflects the beam in a vertical direction. This vertical deflection is detected by an error amplifier which applies a voltage to the vertical plates which keeps the beam horizontal. The governing equation is, in vector form: (19) f =B X v which reduces to z = ei = kxy. Accuracy of the order of 0.5 per cent and frequency response of 3000 cycles per second have been obtained with this multiplier (Ref. 9). AM-FM Multiplier. In this scheme one of the variables controls the carrier amplitude into an FM discriminator, while the other variable affects the carrier frequency through a frequency modulator as indicated in block diagram form in Fig. 9. Accuracy of 0.5 per cent has been obtained with a frequency response of several kilocycles (Ref. 10). Step Relay Multiplier. This device is basically a variable gain amplifier, thus obtaining a product of input voltage and gain. The variable gain is achieved by using relay-controlled precision attenuator networks actuated by a binary counter circuit. While the cost of this type of NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-11 multiplier is quite high, accuracy of 0.02 per cent has been reported (Ref. 11). Probability Multiplier. The operation of this device is based on at theorem in probability theory which states that the probability of simultaneous occurrence of two events which have a random distribution in time is equal to the product of their separate probabilities. This principle can be mechanized by generating two trains of pulses the durations x y~------------------------------------------------------------~ FIG. 9. Block diagram of AM-FM multiplier. of which are proportional to the variables to be multiplied. If there is no integer relation between the two frequencies, the product can be obtained by detecting the coincidence of the pulse trains (R:ef. 12). Use of Multipliers Scaling. Most commercial multipliers introduce a scale factor of 1/100 into the computation of a product, so that, if z = xy (20) l~ z lexk y 100 = --, where kz, k;c, and k y are the scale factors of the variables z, x, and y respectively. Consequently, care must be taken when the output of a multiplier is required at a high scale factor. Amplification of multiplier outputs is almost always undesirable, since noise levels are generally higher at the output of the multiplier than elsewhere in the computer. Powers. Any multiplier can be used to obtain powers of the input variables by successive multiplication. A single servo multiplier can be used to obtain higher powers by applying the output of a multiplication across another multiplying potentiometer, while loading and scale factors are carefully observed (see Fig. 10). It should be noted that powers of the independent variable time can be obtained simply by successive integration, since (21) 2 ftdt 3 ft 2 dt and so forth. = = t2 , ta, 23-12 DESIGN AND APPLICATION OF ANALOG COMPUTERS +100 +x -100 -x FIG. 10. Higher powers using a servo multiplier. Division. Division can be performed by using multipliers in the feedback circuit of a high-gain operational amplifier, and thus solve an implicit .equation of the form (22) x + zy = 0, so that (23) z:= x y High-gain amplifier z= -kf y~------------------~ FIG. 11. Division by inverse multiplication. Such a circuit for division is shown in Fig. 11. Similar circuits can be used for extracting square roots, cube roots, and for other operations. The following should be noted in connection with Fig. 11: (a) Operation is limited to two quadrants. This can be noted by observing that negative feedback is required for stability in the circuit of Fig. 11. If the multiplier introduces a sign change into the compu- NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-13 tation, the situation is as follows. Assume that x is positive and y is negative. Then the output of the high-gain amplifier z will be negative and the output of the multiplier, yz, will be negative thus resulting in a feedback signal, which will cancel the original input. If y were positive the multiplier output would also be positive and so would give positive feedback and instability. Thus for this situation the x input to the divider can be either positive or negative, but the y input must be negative. If the multiplier introduces no sign change, the y input is restricted to positive values for stability. X~------------------------------------~ z=kj- 1 Yo---'~ FIG. Y 12. Division by reciprocal multiplication. (b) Care must be taken with a division circuit if the denominator approaches zero. (c) Because of the high g,ain of the system, noise is considerably amplified at the lJutput of a division circuit. Operation can be improved by filtering out high frequencies with a small condenser across the amplifier, if an electronic multiplier is utilized in the feedback. Servo multipliers have sufficient mechanical inertia to enable them to act as a low-pass filter. Division is also possible by using a function generator to obtain the reciprocal and then multiplying, as shown in Fig. 12. A servo multiplier can be used for division directly by applying a variable voltage to the feedback potentiometer. However, since the gain of the feedback loop depends on the voltage applied to the feedback potentiometer, the servo divider is unsatisfactory unless some form of automatic gain control (AGC) is used in the feedback loop. Integration with Respect to a Dependent Variable. Multipliers are often used for this operation, which may be performed on an electronic analog computer by the relation (24) since the electronic integrator is capable only of integration with respect to time. 23-14 DESIGN AND APPLICATION OF ANALOG COMPUTERS 2. FUNCTION GENERATORS Many nonlinear problems require the use of information which is available in graphical form, such as the results of experimental work, certain nonlinear parameters, or arbitrary functions of the dependent variables. These functions are usually introduced into the computer by one of the following techniques: (a) curve follower devices, (b) biased diode function generators, (c) servo-driven tapped potentiometers, (d) photoformers. Curve Follower Devices Manual. An arbitrary function can be introduced into the computer by hand-following a drawn eurve. The abscissa is servo-driven in accordance with a particular computer variable and a sight is positioned on the curve by the operator using a hand crank. Advantages. (a) Simplicity, (b) direct utilization of graphical information. Disadvantages. (a) Slow speed, (b) limited accuracy, (c) human tendency to overcompensate for errors. Photoelectric. The above process can be mechanized by using an automatic curve follower device which tracks a black line on white paper (or the edge between a black and white boundary). Its main disadvantages are that it is complex and difficult to adjust, and it cannot return to the curve if Linear potentiometer accidentally displaced. Potentiometer Type. If the function to be generated is represented by a suitably shaped wire which makes contact at one point with a linear potentiometer, as illustrated in Fig. 13, the voltage obtained is proportional to the FIG. 13. Drum type curve follower function ordinate of the curve. In Fig. generator. .13 the wire curve is wrapped on the surface of a rotating cylinder, and thus simplifies contact problems and makes repetitive operation possible. The wire curve is usually prepared by cementing the wire directly over a drawn curve. Its main disadvantage is that a great deal of care and adjustment is required for proper operation. Obtainable accuracy depends on the linearity of the potentiometer and the resolution obtainable on a given size of input curve. NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-15 Conducting Ink Curves. A variation of the device above makes use of a curve drawn on paper with conducting ink and excited with a highfrequency voltage, thus enabling a pickup coil to position itself above the curve. The voltage signal from the pickup head is demodulated and used as an input to the servo amplifier which drives the motor to position it. Advantages. (a) Makes use of graphical information directly; (b) can find the line if displaced. Disadvantages. (a) Limited speed (bandwidth) on account of mechanical elements; (b) accuracy limited by thickness of conducting line. Nate. :Most curve follower type function generating devices can also be used as output recorders if the follower heads are replaced with an appropriate pen or stylus. Biased Diode Function Generators By means of diodes it is possible to approximate a desired curve by a series of straight line segments, thus producing a function generator without the mechanical elements of the curve follower devices discussed above. Diode current i / / / / / /~Actual / Breakpoint / / / / / / . diode characteristic / Applied voltage e FIG. 14. Typical thermionic diode characteristics. Basic Theory. Figure 14 is a representation of the switching characteristic of a thermionic diode. An ideal diode can be considered to be an on-off switch. By suitable choice of bias voltages and circuit resistors, the location of the breakpoint and the slope of the conduction line can be varied. If a number of diodes are biased in such a way as to begin conduction in succession, an arbitrary curve can be approximated by a series of straight line segments (see Ref. 13). Practical Circuits. Two stages of a typical variable-breakpoint diode function generator are shown in Fig. 15. The portion of the circuit 23-16 DESIGN AND APPLICATION OF ANALOG COMPUTERS shown controls two segments of the function being generated, one in the positive range and one in the negative range of the input variable. A practical device may include four to twelve circuits of the type of Fig. 15 in cascade, and thus a curve with eight to twenty-four straight line seg- 500kn Slope adjustments y = f(x) x FIG. 15. Portion of a biased diode function generator circuit. ments may be obtained. Each breakpoint and the corresponding slope are adjusted by the two potentiometers associated with each diode, from tabulated values of x and f (x). The two amplifiers associated with Fig. 15 may be internal to the function generator, or they may be connected at the patchboard. Variations of the Basic Principle. (a) Silicon diodes may be used instead of thermionic diodes, thus obtaining better stability, more reliability, and eliminating the small plate current present in the off condition in a thermionic diode. (b) The sharp corners of the straight line segment output may be rounded by superimposing a high-frequency noise signal on the input which causes the diode to start conducting earlier, or by placing a first order lag in series with the function generator. (c) The breakpoint and slope potentiometers can be positioned with a servo system controlled from punched paper tape or similar input, thus making it possible to store the curve for future use. Features. Advantages. (a) Good frequency response (1 to 10 kc); (b) obtainable accuracy, of the order of 0.1 per cent, .depending on components, circuit design, and number of segments. Disadvantages. (a) Output has slope discontinuities; (b) does not use graphical information directly. -. ~' NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-17 Tapped Potentiometer Function Generators A potentiometer will perform linear interpolation between two values applied as voltages across it, if the potentiometer arm is connected to an infinite impedance. Based on this principle it is possible to construct a function generator from a potentiometer with a large number of taps which are supplied with appropriate voltages. If the wiper is driven in accordance with an input variable x, the wiper voltage y will result from interpolation between each pair of tap voltages. Construction of a Practical Device. Multitap potentiometers are often included with a servo multiplier (see Sect. 1) and a wiper displacement proportional to the input variable is thus obtained. Figure 16a illustrates the simulation of a particular function, and Fig. 16b shows a practical circuit for a potentiometer padder system. In Fig. 16, the following should be noted: (a) Each padding potentiometer can be connected to the plus or the minus reference voltage E R , it can be left open, or grounded (see Fig. 16b). (b) Isolation amplifiers are provided to prevent interaction between tap voltages during setup. Unless such isolation is provided, the taps will have to be set several times until the voltages converge to the desired values. (c) The taps are set in sequence in order to apply the correct voltage to the next tap to be adjusted. (d) Fixed resistor networks can be used to pad the tapped potentiometer for a particular function. These networks can be stored and re-used. (e) On account of loading effects the interpolation between tap voltages is not linear, and the curve is approximated by a series of curved line segments, as shown in Fig. 16a. Features. Advantages. (a) Can be combined with a servo multiplier. (b) Adjustment networks can be stored and re-used. (c) Accuracy of the order of 0.1 per cent can be obtained. Disadvantages. (a) Output has slope discontinuities. (b) Frequency response is limited because of mechanical elements. Nonlinear Potentiometers. A potentiometer can be used to generate many functions directly, without the necessity of padding a series of taps, if the winding is nonlinear and corresponds to the function being simulated. Such nonlinear potentiometers have been wound for trigonometric, exponential, and logarithmic functions (see Sect. 4). 23.18 DESIGN AND APPLICATION OF ANALOG COMPUTERS Output voltage y = {(x) E ~NO load output voltage .,., ..... 3 Output voltage under load (exaggerated) E4 'E5__ Es__ , -Or-__~----------------------~ Shaft rotation x +E2 o-E2 °Open =>----i----r--'\I'V\r.....L.-....;-.-o~ ~ Null meter (b) FIG. 16. (a) Simulation of a function with a padded potentiometer. (b) Simplified schematic of potentiometer padder system. Two padders are shown; others may be added. NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-19 The Photoformer In this device the spot on the face of a cathode ray tube is made to follow an opaque mask which represents the function being generated, and thus a function generator of excellent frequency response which is particularly suitable for repetitive analog computers is obtained. FIG. 17. Block diagram of photoformer. Construction Features. A typical photoformer circuit is indicated in block diagram form in Fig. 17, and its operation can be summarized as follows: (a) A mask is prepared as a plot of the function f(x) desired, and the lower area of the mask below the curve made opaque. (b) The input voltage x is applied to the horizontal deflection plates and thus produces a horizontal beam displacement which is proportional to x. (c) The vertical position of the beam is made to follow the edge of the beam by the combination of photocell detector and biased amplifier which drive the vertical deflection plates of the tube. Features. Advantages. (a) Excellent frequency response; (b) masks can be stored and re-used. Disadvantages. (a) Accuracy limited by size of face on cathode ray tube and spot size necessary for satisfactory operation; (b) distortion of the function may result from nonlinearities in the tube deflection circuits and the fact that horizontal and vertical deflection plates may not be exactly perpendicular. Function Generator Applications Scaling. The following points should be noted when function generators are used to include arbitrary functions in an analog problem: (a) Maximum accuracy is obtained with as wide a range of voltages as possible. 23-20 DESIGN AND APPLICATION OF ANALOG COMPUTERS (b) Wide voltage ranges may exceed the slope limitations of certain function generators, in which case vertical scales need to be reduced and horizontal scales increased. (c) If the range of variation of dependent or independent variable is limited, it is frequently possible to bias and amplify this variable in such a way as to make possible utilization of the full range of the function generator. Uses. Function generators are among the most useful and versatile components available with an analog computer. Some of the uses are: (a) Introduction of empirical data into the computer. (b) Generation of analytic functions which may be difficult to obtain with other components, such as certain trigonometric functions or combinations of transcendental functions. Function generators can be used to obtain higher powers of variables. (c) Where multipliers are in short supply, quarter squares multipliers can be synthesized at the patchboard by using function generators and amplifiers. (d) Machine variables can be transformed to logarithms for easier computation in certain problems. (e) Division can be facilitated by obtaining the reciprocal of a quantity by using a function generator and then multiplying. Generation of Functions of Two Variables In many physical problems it is neces3ary to consider arbitrary functions which depend on more than one variable, such as ! (x,y), where both x and yare functions of the independent variable. If the function is analytic, for example, (25) f(x,y) = sin (x + y), it is possible simply to add x and y and obtain the sine of the sum by using a function generator or servo resolver (see Sect. 4). The following sections deal with several techniques of obtaining arbitrary functions of two variables, when the desired function cannot be obtained as a combination of functions of a single variable. For an excellent discussion of function generation see Ref. 14. Interpolation Techniques. (a) Tapped potentiometers. If the taps on the potentiometers discussed above are supplied with voltages proportional to !(X,Yl), !(X'Y2) ' etc., where the Yk (k = 1, 2, ... ) are chosen so as to coincide with the location of the taps on the potentiometer, and if the wiper displacement is made proportional to y, the output voltage will be the required function of two variable3, f (x,y) • The accuracy of the method is dependent on NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-21 the accuracies of the voltages supplied to the taps and on the number of taps (see Fig. 18). The functions f (x,y,J may be the outputs of other function generators. (b) Resistive materials. Two-dimensional field effects can be represented conveniently by using an electrolytic tank or resistive sheet analogy. A servo-positioned probe is used to pick up an electrical signal in the field, which will be a function of its vertical and horizontal position. A more general function of two variables can be represented by a >-----:>+---1--{(x, y} I I I . y servo-driven f(x, Y5) FIG. 18. Generation of function of two variables using a tapped potentiometer. resistive sheet if lines corresponding to constant value of the function are drawn on the sheet with a conductive material and excited by a voltage proportional to the value of the function (see Fig. 19). The pickup probe is then positioned in the x and y directions by a servo system (a standard x-y plotter may be used), and the probe will pick up a voltage proportional to the function of x and y being considered. The linearity of interpolation is dependent on the linearity of the resistive material between the lines and on the input impedance of the probe circuit. Variahle Reference Diode Function Generators. Biased diode function generators can be made useful for the generation of functions of two variables. For certain classes of functions a good representation can be obtained by replacing the reference voltage of the function generator with a variable voltage y. Then an output is obtained for each value of· y and the breakpoints are proportional to this value; a repre- 23-22 DESIGN AND APPLICATION OF ANALOG COMPUTERS sentation, as shown in Fig. 20, is thus obtained. A more general function of two variables can be obtained if the bias voltages of the individual diode circuits are made functions of y, as discussed in Ref. 15. f(x,y) =0.4 y ~--f(x,y) == 0.3 • P(x,y) f(x,y) :c 0.2 ~f(x,y'=O.l ~----------------------~~x FIG. 19. Resistive sheet representation of a function of two variables. f(x,y) ./ y=O.4 ~----------------------~x FIG. 20. Generation of function of two variables with variable reference diode function generator. Variable Density Film. A number of techniques which utilize film of variable optic~l density are being investigated. Opacity variations of 200 to 1 ratio can be detected. The film density at anyone point on a sheet of film -can be a function of the abscissa and ordinate at that point, and thus represent a function of two variables (Ref. 16). 3. SWITCHING DEVICES In the study of physical phenomena it is often necessary to include the effects of quantities which are defined differently in different regions NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-23 and thus show discontinuities in slope. Among these are such nonlinear phenomena as limiting, backlash, and coulomb friction. This type of phenomenon is usually represented on an analog computer by means of diodes or polarized relays, both of which approximate ideal on-e>ff switches in their action (Ref. 17). General Features Since relays and diodes are used to represent functions with slope discontinuities, they should have as sharp a switching action as possible. The features of each can be summarized as follows: Relays. Advantages. (a) Switching action is true on-off action, (b) three stable states are possible with a polarized relay. Disadvantages. (a) Finite closing time introduces an error into many problems, (b) high sensitivity is required for fast action, (c) special amplifiers may be required for driving polarized relays. Diodes. Advantages. (a) Low cost and ready availability, (b) simplicity of application, (c) no mechanical motion in switching action. Disadvantages. (a) Imperfect switching action, (b) finite back resistance, (c) nonzero forward resistance. -----FIG. 21. Diode limiter characteristic. In many mechanical systems the motion is by physical constraints. A typical limiting operation is shown 21, where the dotted line represents the limiting obtained with The lack of sharpness in clipping is due to diode contact potenmay be seen in a representation of diode characteristics, such 14. Computer Representation. The limiting operation can be stated Limiting Operations. limited in Fig. diodes. tial, as as Fig. 23-24 DESIGN AND APPLICATION OF ANALOG COMPUTERS mathematically as: eo = -a, (26) -a eo = b, _ ei > < ei < b; b. This circuit, shown in schematic form in Fig. 22, operates as follows: (a) If -a < ei < b, neither diode conducts, and eo = ei. >-------.-----~~~ R2 FIG. 22. Shunt output limiter circuit. (b) If ei < -a, diode Dl conducts and the output voltage is limited by the battery or floating d-c supply in series with D 1 . (c) If ei > b, diode D2 conducts and the output is limited by the voltage in series with D 2 • The limiting action is due to the conducting diode and voltage source acting as a low-impedance feedback path for the operational amplifier; this reduces the gain until the output voltage is reduced to the bias level. Generalized Limiting Circuit. Insertion of resistances R 1 , R 2 , R 3 , and R4 into the circuit of Fig. 22 to give that of Fig. 23, makes it possible to vary the slopes of all three line segments of the output and thus give the response of Fig. 24. Input Sh'unt Limiter Circuit. Both the circuits of Fig. 22 and Fig. 23 apply limiting to the output of an amplifier. It is possible to limit the input of an amplifier with a pair of diodes to obtain similar results, but generally this also reduces sharpness in clipping action. I dealized Limiter. The use of a more complex circuit which uses four diodes and three amplifiers produces a considerable increase in the sharpness of the clipping action (see Fig. 25), since the high-gain amplifier makes operation of the circuit independent of diode characteristics. NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-25 Limiting Integrator Outputs. The limiting circuits discussed above cannot be applied directly to the output of an integrator without caution, since such limiting would result in an incorrect value of the derivative >-------~------~eo FIG. 23. Generalized shunt output limiting circuit. ~ o Different values of R3 +Eb Slope = ~~ -::------- R3 = 0 ! I ------------~----~~-----L------------~ei Different values of R4 FIG. 24. Response of limiting circuit of Fig. 23. and consequent wrong results. In general, the differential equation governing the integrator in question changes during the limiting period and the circuit needs to be adjusted accordingly (see Ref. 1, page 121). Simulation by Switching Devices Dead Zone Simulation. The simulation of a dead zone, i.e., no driving action until the input exceeds certain limits, is performed by using the circuits of Fig. 26. It should be noted that this circuit resembles 23-26 DESIGN AND APPLICATION OF ANALOG COMPUTERS eio-------~~------------------------------~ (a) (b) FIG. 25. Idealized diode limiter circuit and its response. FIG. 26. Diode circuit for dead zone simulation. NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-27 very closely those used for limiting operations, but that the diodes are placed in series with the amplifier and thus the effect shown in Fig. 27 is produced. · FIG. 27. Response of dead zone circuit of fi'ig. 25. Coulomb Friction Simulation. "Dry," "solid," or coulomb friction is simulated by a variation of the limiter circuits above which omit the feedback resistor, and thus make the output of the amplifier very large for even small variations from zero at the input. The output is then limited as above and gives the response shown in Fig. 28. ------I+~ -----1i------~ei -F1 1 - - - - - - High-gain (a) (b) FIG. 28. Simulation of coulomb friction. Absolute Value of a Quantity. A circuit commonly used to obtain the absolute value is shown with its response in Fig. 29. This circuit is used for the simulation of a full-wave rectifier. Simulation of Backlash. Backlash or lack of driving action occurs in gear reversal and other reversing physical phenomena. Two diode circuits for simulation of backlash are shown with their response in Fig. 30., Two alternative circuits are'shown to '.indicate that none of the 23-28 DESIGN AND APPLICATION OF ANALOG COMPUTERS (a) (b) FIG. 29. Absolute value circuit and its response. (b) ------------~~+-~----------~ei (c) FIG. 30. Diode circuits for backlash simulation and their response. NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-29 circuits discus.sed above is unique, but that other schemes may be used to accomplish the desired nonlinear operations. Use of Polarized Relays All the circuits described above can be constructed with relays instead of diodes to perform the limiting operations, if relay-driving amplifiers are available. If special relay amplifiers are not available, it is desirable -= +FI I I : O~-------~~ -FI ______~ ) eo 01------0 FIG. 31. Dry friction simulator with a polarized relay. to use operational amplifiers without feedback resistors to obtain the necessary high gain and sensitivity. An open loop amplifier, however, will saturate with even a very small input, and unless the chopper stabilization loop can be disabled, the amplifier's recovery from saturation will be too slow for satisfactory operation. The alternative is to limit the output of the amplifier with diodes as discussed above. This technique offers certain advantages due to the sharp switching characteristics of the relay, but it does not replace diodes. Some types of discontinuities, such as changing from one equation to another during a computation, are best performed with relays. Relay Simulation of Coulomb Friction. This circuit is shown in Fig. 31. Similar circuits can be constructed for the other operations above. Generation of Square and Sawtooth Waves Switching devices can be used conveniently in the generation of square or sawtooth driving functions to be used in the computer. The use of a relay to produce a low-frequency square wave is shown in Fig. 32. The voltages El and -El are supplied from the computer reference voltage supply. The switch is closed at t = O. Prior to closing the switch, the voltage ea equals minus the input voltage E 1, and the polarized relay remains closed in the positive direction as indicated. When the switch is opened, the integrator will begin integrating the voltage E 1 23-30 DESIGN AND APPLICATION OF ANALOG COMPUTERS until the output of the summer becomes zero, when the relay is thrown in the opposite direction.. The frequency of the square wave obtained is (1/4RC) , where RC is the time constant of the integrator. Initial condition = 0 El 0----0 ~--"""-~eo FIG. 32. Low-frequency square wave generator. Diode Circuit for Square Wave. The circuit of Fig. 32 is adequate only for frequencies of the order of a few cycles per second owing to the finite closing time of the relays. Higher frequency square waves can FIG. 33. Diode circuit for square wave generation. be produced by using diode shunt limiter circuits to replace the relay, as shown in Fig. 33. Sawtooth Wave. A sawtooth wave can be obtained by passing the summer voltage ea in either Fig. 32 or 33 through a full-wave rectifier (Fig. 29). The repetition rate of the sawtooth is 1/ (2RC). NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-31 4. TRIGONOMETRIC DEVICES Many physical problems require the use of trigonometric functions to express angular variations or to perform coordinate transformations. Several techniques for obtaining these circular functions are described in this section. Trigonometric Functions of Time. The solution of the differential equation d 2x (27) - 2 + W2 X = 0 dt yields sine and cosine functions of time with adjustable frequency. The long time stability of the sine wave obtained from the solution of this equation on the computer is a function of amplifier phase shift. At very low frequencies the oscillations may tend to decrease in amplitude, whereas at higher frequencies they may tend to diverge. Stable sine and cosine functions can still be obtained by including a damping term in eq. (27) which corrects for the phase shift by adding in a positive or negative damping term. Series Expansions. Very accurate approximations to the trigonometric functions can be obtained by using the first few terms of the series expansions for these functions, if their total angular excursion is not too large. Multipliers and function generators can be used to obtain the necessary powers of the argument (see Sects. 1 and 2). Function Generator Representation. Good accuracies can be obtained by setting up the trigonometric function on a function generator, if the total angular variation is small. Servo-Driven Potentiometers. These represent the most frequently used method of obtaining trigonometric functions. Linear Potentiometers. Combinations of linear potentiometers and resistors can be used for approximating the sine function over certain restricted ranges of its argument. Such potentiometer circuits -are described in Ref. 2, page 425. Nonlinear Servo-Driven Potentiometers. Tapered potentiometers are frequently used in conjunction with servo mult.ipliers (see Sect. 1) to perform polar to rectangular transformations. In schematic outline, a combination of four such tapered potentiometers would appear as in Fig. 34, where two brushes separated by 90° are used to give the sine and cosine respectively. The two outputs then correspond to the results of the transformation, since (28) x = R cos 0, y = R sinO. 23-32 DESIGN AND APPLICATION OF ANALOG COMPUTERS These potentiometers can be mounted on the same shaft with linear potentiometers in a servo multiplier, and the device can perform multiplication as well as resolution. Transformation from rectangular to polar coordinates is considered below. FIG. 34. Tapered sine-cosine potentiometer. A-C Resolvers. Induction resolvers may be used to obtain the polar to rectangular transformations if the input a-c voltages are modulated by the proper d-c values from the computer and the outputs are demodu,:, lated to obtain the quantities x and y. The modulating and demodulating circuits are subject to drift and are difficult to construct for high accuracy, so that induction resolvers are generally used only Ylith a-c computers on flight tables or other special applications. Sines and Cosines from Implicit Computation. If the derivative of the argument () with respect to time is available in the problem, it is possible to obtain sines and cosines by using amplifiers and multipliers only as shown in Fig. 35. This circuit gives satisfactory answers in many applications, but must be used with caution since it is possible to lose the uniqueness of () in the problem if the computation is long. Rectangular to Polar Transformations. The equations governing this transformation are (29) R = Yx 2 + y2, () = arc tan (y/x). Although it is possible to solve these equations directly, it is usually more convenient to use servo-driven resolvers to solve for Rand () by implicit computation by using the equations + ycos(} = x cos () + Y sin () = -ysin(} (30) 0, R, NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-33 which are equivalent to the transformation eq. (29). If resolver potentiometers are used to obtain the quantities x sin (), x cos (), y sin (), and y cos 0, these can be combined in accordance with the equations above. -cosO dO diO-------I sin (1 FIG. 35. Sines and cosines from implicit computation. R Servo amplifier FIG. +100 +x +y -100 -x -y Motor 36. Servo resolver connections for rectangular to polar transformation. The output of the second equation provides the vector length R. The output of the first equation should be zero, and is therefore applied as an input to the servo amplifier which positions the angle () to reduce it to zero. For satisfactory performance such "inverse resolvers" require 23-34 DESIGN AND APPLICATION OF ANALOG COMPUTERS servo amplifiers with automatic gain control (AGe). of this transformation is shown in Fig. 36. The schematic 5. TIME DELAY·SIMULATORS Time delays are encountered in the solution of two types of problems on analog computers. The first involves "transportation lags" such as are those found in flow of material in pipes, signal transmission in hydraulic or pneumatic lines, or the motion of neutrons in nuclear reactors. The need for time delay units also arises in the evaluation of correlation functions and convolution integrals. In this section several methods of introducing time delays into a computation are discussed. While time delay is properly a linear operation, it is included in this chapter because it is often simulated with specially constructed devices. True Time Delays Simulation of a true time delay of the form (31) j(t - 7") necessarily involves use of some device to store information during the delay period. Two-Pen Recorders. Probably the oldest technique of introducing a function of the form of eq. (31) into a computer was used with a mechanical differential analyzer, and in modified form is still used in some cases. A two-pen recorder is a device used for plotting two functions of the same independent variable on the same sheet of paper with fixed displacement between their vertical axes. If the displacement between the two pens is made equal to the delay time, and the second pen is replaced by a sight, the curve can be manually tracked, thus generating the fu'nction f (t - T). An automatic curve follower device can also be used, but this may require generation and plotting of f(t) beforehand. Disadvantages. (a) A very limited range of delay times is available due to the spacing of the recorder heads. (b) Speed of response is severely limited by human tracking and mechanical components. Magnetic Tape. A complex and expensive but very effective way of introducing a time delay into a computation is by means of a magnetic tape recorder with two recording heads. One head is used for recording the information and the second for reading it back to the computer after a suitable delay. The delay is introduced either by an adjustment of movable heads, or by an adjustment of pulleys which regulate the length of tape between the two heads. Tape speed, which directly affects the delay time, is generally fixed by the desired frequency response of the unit. NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-35 Digital Storage Techniques. In large installations where analog to digital converters enable the computer to be interconnected with a digital computer, it is possible to take advantage of the digital storage for introduction of a time delay. This may take the form of recording the function f(t) on a magnetic drum channel in digitized form and then reading it back after a suitable delay through a digital to analog converter. It may also be possible to utilize the buffer storage present in the analog-digital-analog converter unit itself. The frequency response available in this type of system is related to the sampling rate of the converter, and needs to be carefully considered. Approximations to the Time Delay All the devices discussed above utilize a form of storage and retrieval of information to achieve a time delay. It is also possible to simulate an approximation to the time delay by noting that the Laplace transform of eq. (31) is ff [J(t - r)] = F(s)e- ST , (32) where F (8) is the La place transform of f (t ) . The problem: of obtaining a time delay is then reduced to that of approximating the function e-7"8 in such a way as to allow convenient variation of the delay time over a wide range while maintaining a constant amplitude characteristic. Power Series Approximation. It is possible to expand the function e-7"8 by its Taylor series expansion (33) e- TB = 1- rS (r8)2 (r8)3 + -- -+ ... . 2! 3! Unfortunately, this series requires a series of differentiations for its simulation on the computer. Furthermore, the rate of convergence of the series is slow for large values of the argument T8 and therefore it is not suitable for high frequencies or long values of delay. For short delays and limited frequency response, it is possible to obtain satisfactory response from a circuit which simulates the first few terms of the series eq. (33), especially if the problem includes a first order lag in series with the delay, and thus filters out noise from the differentiation process. In many physical problems, such as a pipe transport lag, the transfer functions are of the form (34) Ke-TI S KG(8) = - - , r28 + 1 and thus include a lag term with a delay circuit. 23-36 DESIGN AND APPLICATION OF ANALOG COMPUTERS Multiple Lag Approximation. written as the limit e- (35) 1'8 The exponential function can be = lim ( n-> 1 00 + 1 TS/n )n. If a finite value of n is used, the approximation consists of a pole of order n located on the negative real axis of the S plane at -n/ T. For small values of n the approximation is not very good (Ref. 18). In one computer study the time delay was represented by 80 cascaded first order lags, i.e., n = 80 in the above equation (Ref. 19). The Pade Approximation. A much more satisfactory method of approximating e-7"8 is by means of a rational algebraic function in which both numerator and denominator are polynomials in s. This rational function is known as the Pade approximation (Ref. 20) with numerator of degree n and denominator of degree m: PnCS) e- 1'8 (36) ~ ---. - Qm(S) The coefficients of the polynomials are selected in such a way that the Maclaurin expansion of the approximation agrees with the expansion of e-7"8 (eq. 33) for the largest number of terms possible. EXAMPLE. Approximate e-7"8 by a ratio of a third to a second degree polynomial. There are six coefficients to be determined: e- (37) 1'8 1 + '" a2s 2 + a3s3 blS + b2s 2 + alS bo + If the coefficients are chosen so that the first six terms of the Maclaurin series are correct, one obtains -1'8'" (38) e t TS + ;0 (TS)2 1- = 1 + 2 "5 TS + 20 1 -/-0 ( (TS)3 • TS )2' The Maclaurin series expansion of eq. (38) is (39) 1- TS + t (TS)2 - if (TS)3 + -;4" (TS)4 - rto (TS)5 + 8~O (TS)6 - •••. Since the expansion of e- 1'8 is (40) e- 1'8 = 1- TS+t (TS)2 -if (TS )3+-;4" (78)4 - 1~o (T8 )5+ 7~o (TS )6_ .... Note that the two series differ only in the seventh term. The coefficients of the Pade approximation for various degrees of polynomials in the numerator and denominator have been tabulated (Refs. 18, 20). Commercially available time delay units have made use of approximations where n = n = 2, and also n = m = 4. Thus, I NONLINEAR ELECTRONIC COMPUTER ELEMENTS the approximation for n = 1n e-TB 1"'>.1 (41) 23-37 = 2 is 12 - G(TS) - 12 G(TS) + + (TS)2 + (TS)2 • There are two ways of mechanizing the transfer function of eq. (41). Figure 37 shows a circuit for the second order approximation which can -f(t) L...---~f(t FIG. 37. -r) Circuit for the generation of the second order Pade approximation. be set up on the computer with amplifiers and potentiometers. Figure 38 is a representation of eq. (41) with amplifiers with complex input and Ro 1ft) FIG. >--'---~I(t -T) 38. Two-amplifier circuit for the second order Pade approximation. feedback networks, which thus reduce to two the total number of amplifiers required. Limitations and Features of the Approximation. Time delay in the circuits for the Pade approximation means a linear variation of phase 23-38 DESIGN AND APPLICATION OF ANALOG COMPUTERS shift with fr~quency. The phase shift limit of the second order approximation (n = m = 2) is approximately 100 0 , and its frequency limit is too low for all but crude approximations. The phase shift limit for linearity in the fourth order approximation (n = m = 4) is approximately 400 0 , thus giving a four-to-one improvement in frequency response. A practical circuit for the fourth order approximation, which f(t) FIG. 39. Practical circuit for fourth order approximation to time delay. includes a small lag term for filtering the 'output, is shown in Fig. 39 (Ref. 21). Regarding this circuit, the following can be noted: (a) Frequency response can be improved by cascading several units of the type shown in Fig. 39. A comparison in approximate frequency response to -a step function input is shown in Fig. 40. (b) If the resistors R connected with dotted lines in Fig. 39 are ganged potentiometers, it is possible to make the delay itself a function of time by driving these potentiometers with an appropriate servo. Over a limited range, the delay can be varied as function of time without distortion in this circuit. (c) Output amplitude is independent of delay time. (d) The amplitude-frequency characteristic is flat over the range of frequencies of interest, up to the breakpoint determined by the time constant of the output filter, i.e., 1/ (RoC o ) rad per second. This time constant is sometimes chosen as Y1 00 of the delay time. (e) In certain closed loop applications the so-called diagonal approximation (degree of numerator and denominator equal) will result in instability. In this case, an approximation by a higher degree polynomial NONLINEAR ELECTRONIC COMPUTER ELEMENTS 23-39 in the denominator must be used to restrict the frequency range of the unit. (j) It should be noted that even the rather sophisticated circuit discussed here is only an approximation, and it is still quite limited in fre- 1.0 Response of ideal time delay Response of Fig. 38 circuit _--!-T-H!-++f--i._T-+---l;:---i--f-lr-l-:-l-:::--_ _ _ _ _ _ _ _ _ _T__im~e (tIT) FIG. 40. Step function response of circuit for fourth order Pade approximation (circuit of Fig. 38). quency response for large values of delay, since its frequency limit is approximately equal to the inverse of the delay time selected. External storage type delay simulators, such as a magnetic tape recorder, can offer advantages in frequency response, but these may be offset by the cost and complexity of the interconnecting equipment with the computer. REFERENCES 1. C. L. Johnson, Analog Computer Techniques, McGraw-Hill, New York, 1956. 2. G. A. Korn and T. M. Korn, Electronic Analog Computers, 2nd edition, McGraw-Hill, New York, 1956. 3. W. W. Soroka, Analog Methods in Computation and Simulation, McGraw-Hill, N ew York, 1954. 4. C. A. Wass, Introduction to Electronic Analogue Computers, McGraw-Hill, New York, 1955. 5. E. A. Goldberg, A high-accuracy time-division multiplier, RCA Rev., 23, 265 (1952). 23-40 DESIGN AND APPLICATION OF ANALOG COMPUTERS 6. C. D. Morrill and R. V. Baum, A stabilized electronic multiplier, Trans. I.R.E., PGEC, December 1952. 7. S. Giser, An all-electronic high-speed multiplier, M.I.T. Instrumentation Laboratory, Rept. R-67, November 1953. 8. C. M. Edwards,: Survey of analog multiplication schemes, J. Assoc. Computing Machinery, 1, 27-35 (1954). 9. A. B. MacNee, A crossed-fields electron beam multiplier, Proc. I.R.E., 37, 1315 (1949). 10. W. A. McCool, An AM-:FM electronic analog multiplier, Proc. I.R.E., 41, 14701477 (1953). 11. E. A. Goldberg, Step mUltiplier in a guided missile computer, Electronics, 24, 121-124 (August 1951). 12. W. R. Thomas and M. Squires, Electronic analog methods of multiplication, RAE Tech. Note GW-53, October 1949. 13. H. Hamer, Optimum linear-segment function generation, Trans. Am. Inst. Elec. Engrs., Paper No. 56-696, 1956. 14. P. E. Stanley, The generation of functions for analog computing, Am. Inst. Elec. Engrs., Conference Paper, No. CP 57-661, 1957. 15. H. R. Meissinger, An electronic circuit for the generation of functions of several variables, I.R.E. Convention Record, Pt. IV, 1955. 16. R. A. Sinker, A photo-electric function generator, Electronics, 9, 178 (October 1956). 17. C. D. Morrill and R. V. Baum, Diode limiters simulate mechanical phenomena, Electronics, 25, 122-126 (November 1952). 18. J. G. Truxal, Automatic Feedback Control System Synthesis, Sect. 9.8 (pp. 546-553), McGraw-Hill, New York, 1955. 19. K. L. Chien, J. B. Reswick, and J. A. Hrones, On the automatic control of generalized passive systems, Trans. Am. Soc. Mech. Engrs., 74, 175-183 (1952). 20. R. D. Teasdale, Time domain approximation by use of Pad6 approximants, I.R.E. Convention Record, Pt. V, pp. 89-94, 1953. 21. C. H. Single and G. S. Stubbs,. Transport delay simulation circuits, Westinghouse Atomic Power Division Tech. Rept. WAPD-T-38, May 1952. E DESIGN AND APPLICATION Chapter OF ANALOG COMPUTERS 24 Analogs and Duals of Physical Systems Richard Mackey I. 2. 3. 4. 5. 6. Electric Analogy of Dynamic System General Terminology Analysis of General Syst9ms Energy Considerations Duality Construction of Duals 24-01 24-03 24-03 24-07 24-08 24-09 7. Across and Through Variables in Physical Systems References 24-12 24-12 I. ELECTRIC ANALOGY OF DYNAMIC SYSTEM Introduction. True analogies are not just a superficial correspondence of a few parameters; consequently in many ,cases their significance is not fully appreciated. The validity of an analogy depends solely on the mathk 01 ~ ematical proof of the correspondence rrrfffffff((~J between the two systems. The existFIG. 1. Basic mechanical circuit. encc of a rigorous analogy implies an exact similarity in the form of the mathematical equations which describe the behavior of the two systems under consideration. (See Chap. 21, Sect. 6, for table of symbols and a brief discussion of usage.) Basic Mechanical Elements. Consider the simple damped oscillator shown in Fig. 1. The free element behavior of the mecha,nical com- I 24-01 24-02 DESIGN AND APPLICATION OF ANALOG COMPUTERS ponents is given by: Friction Mass ~~:b f~b f~ Spring B f~ f = Bv, 1 v =-f B dv f=M-, dt v= f = k J v dt, 1 df v=-k dt K ~~ ~ Jfdt Free element response of mechanical components: f = force, v = velocity, B = dash}4)Qt constant (represents any form of viscous friction), M = mass, K = spring constant. Analysis. This mechanical circuit may be solved by either the path or junction (loop or node) principle. A loop is defined as any closed path in a circuit; a node or junction is the point of intersection of two or more distinct paths through the network. The method used will in general depend upon the particular structure (circuit) at hand. Each of the elements of Fig. 1 has the same velocity difference with respect to the .reference frame and therefore the system may be said to have one independent velocity node (junction). This circuit is most easily solved by the junction method since there are fewer junctions than paths. Writing the summation of forces at the velocity node equals zero gives: (1) 'Lf = 0 = M -dv dt + Bv + k J v dt. Because mechanical circuits may be drawn in any number of pictorial ways, the actual circuit connections may be hidden and thus cause confusion during analysis. It is of advantage to develop a technique for reducing such pictorial connection diagrams to standard schematic diagrams. This schematic system R c will be worked out along the lines of electric circuit principles mainly because of the systematic formulation established for the solution of electric networks. FIG. 2. Basic electric circuit. Basic Electrical Elements. Consider the three-element electric circuit given below which represents the general oscillator. The basic electric circuit is shown in Fig. 2. The ANALOGS AND DUALS OF PHYSICAL SYSTEMS 24-03 free element behavior of the component parts is given by Resistance . R l~~ e = iR, i = -R1 e e di = L-, dt i = e . =.!C I i dt' ~e i~ Inductance i-~ Capacitance L \OOO~ -""""::=:e lie '---e~ -i Ie dt i = Cde dt Free element response of electrical components: e = voltage, i = current, R = resistance, L = inductance, C = capacitance. Analysis. Since all these elements have the same voltage difference across them, a simple junction equation is suggested. (2) III . de I>=O=C-+-e+dt R L edt. Equations (1) and (2) have the same general structure but different symbols for the element constants and variables. Note that the across and through variables share the same role in the two systems (dependent variable or excitation)-this is the basis for the structure analogy. An across variable requires two points for its specification and is a measure of the difference of magnitude of a variable between these points such as voltage, velocity, and temperature. The through variable requires only one quantity for its specification and is a measure of variables that have the same magnitude at all points along the element, such as current, force, and heat flux. 2. GENERAL TERMINOLOGY It is convenient to reduce all circuits, whether electric, magnetic, thermal, mechanical, or other, to a schematic diagram using the electrical symbols to represent the various components. Thus Table 1 giveil the relations of across variables to the through variables for various types of elements and the corresponding symbol representation. ex, f3, and yare parameters. Relations (A), (B), (C) may be solved explicitly for the through variable resulting in (A'), (B'), (C'). 3. ANALYSIS OF GENERAL SYSTEMS Schematic Diagrams. The schematic diagram is developed with the following definitions: Series. Elements are said to be in series if the same through variable passes through each element. 24-04 DESIGN AND APPLICATION OF ANALOG COMPUTERS TABLE 1. ELEMENT REPRESENTATION FOR ACROSs-THROUGH RELATIONS Across-Through Variable Relation (A) Across = a (through) . - d (B) Across = (3 dt (through) (C) Across = 'Y f (through) dt = - (across) (B') Through = (C') Through = - d (across) 'Y t a ~ f II- ~ 1 (A') Through Symbol ---MIVW'---- (across) dt 1 d 1\ Parallel. Elements are said to be in parallel if the same across variable exists across each element. N ow Kirchhoff's laws may be expressed as: Path principle. ~ across variable around closed path = O. Junction principle. ~ through variable at junction = O. The following relationships also exist between the across and through variables: Across variable .. h = CirCUlt parameter (structure). T rough variable EXAMPLE. Electrical resistance, eli = R. (Across variable) X (Through variable) = Power. Electrical power, ei = watts. The ideas behind the equations representing the characteristic behavior of the schematic symbols may be expanded to provide a ·test (conceptual or experimental) for the element behavior. Suppose an unknown component from some system is encountered and the schematic circuit diagram is desired. The across variable response to a known through stimulus immediately determines which symbol to use according to the relations (A), (B), (0). Thus if the unknown system component is tested with a step function of through variable and the result is a unit impulse function, by relation (B) that component must be represented by the schematic element ~. These tests may be presented in a tabular form shown in Table 2. The table is entered by picking a function of one of the forms in the row under Test Variable. The element response is one of the three EXAMPLE. Identifying Elements. ANALOGS AND DUALS OF PHYSICAL SYSTEMS 24-05 functions in the column headed by the chosen test variable. When the response has been determined, move along that row to the last column to find the schematic symbol to represent the unknown clement. If the testing function was a through variable, move left to the first column to find the schematic symbol; if the testing function was an across variable, move right to the last column for the schematic symbol. TABLE 2. TEST TABLE FOR COMPONENT Test Variable Through Test Symbol V y I ~ -H- V V . / F y I JL -'\N\r- V ...ro6'- BEHAVIOR / ~ Across Test Symbol + ~ ~ bC\ 90· lag ...IQO\- + ~ -'VV'v- -H--.lL -Y -V- f\:f 90· lead If these principles are applied to the mechanical circuit of Fig. 1, the schematic diagram of Fig. 3 may be arrived at immediately by noting that the across variable is velocity and the through variable is force. Junction Technique. Consider the more complex system shown in ~0~~~~~~~~~~~~ Fig. 4. Mark all points with velocity different from reference frame. (These are velocity nodes, Vi, V2, V3)' It is important to realize in any method of analysis that the mass is B t IJ FIG. 3. Symbolic representation of circuit of Fig. 1. FIG. 4. Complex mechanical circuit. a two-terminal element with one terminal connected to the inertial reference (usually ground or frame). Thus before either the path or junction technique is applied sketch in the reference terminals for all the masses. 24-06 DESIGN AND APPLICATION OF ANALOG COMPUTERS Mark these nodes above a reference plane and connect the corresponding schematic symbols between the various nodes and reference. The resulting circuit is the desir~d schematic shown in Fig. 5. FIG. 5. Schematic of circuit of Fig. 4. FIG. 6. Paths traced through circuit of Fig. 4. FIG. 7. Individual loops for circuit of Fig. 6. Path Technique. Start anywhere, trace through the pictorial of Fig. 5 in such a way as to end up at the starting point (from a closed loop), and replace each pictorial element by its schematic symbol. Continue ANALOGS AND DUALS OF PHYSICAL SYSTEMS 24-07 making loops until every element has been traced through, as shown in Fig. 6. The individual loops are shown symbolically in Fig. 7. N ate. The resulting schematic is the same regardless of the technique used. The choice of which technique to use will depend on the relative number of junctions and paths. 4. ENERGY CONSIDERATIONS The power delivered to a system must equal the rate of kinetic energy storage plus the rate of potential energy storage plus the power loss due to dissipation. The rate at which work is done or power delivered to a system (considered as a driving point impedance) is given by eq. (3). p = (3) ~ (T + V) + D, dt = power supplied = (across) (through), T = kinetic energy, V = potential energy, D = dissipation. where P Continuing the mechanical-electrical comparison. Mechanical System. P (4) = Jv, T = ! Mv 2 , ctv P = M - v dt =! V + k -dx x + Bv 2 dt Dividing through by v gives J= (5) kX2, M -dv dt + Bv + k = Jv. J v dt. Electrical System. P = ei, (6) P = di. L - 1, dt q dq + -edt - + R '2 = 1, • e1,. Dividing through by i gives (7) e = L -di dt + R' + C1 J'd t. 1, - 1, Expressions (5) and (7) meet all the requirements of analogous equations and hence must represent analogous systems. The choice of electrical element to store kinetic energy and the one to store potential energy is somewhat arbitrary. An analogy exists between 24-08 DESIGN AND APPLICATION OF ANALOG COMPUTERS two elements or systems if the form of their mathematical equations is the same. Thus the energy stored in a mass by virtue of its motion could equally well be considered analogous to the stored energy of a capacitor or an inductor, that is, (S) However, closer observation of these relations seems to favor the choice of the inductor for kinetic energy storage and the capacitor for potential energy storage. Rewriting the above eq. (S) with the relations e = q/C and q = J dt i (9) gives !~ 2 C (Ji dt)2 = ! 2 M q [dXJ2 dt = !2 L [ddt J2 . Likewise for the stored potential energy of a spring, (10) c(J i dt)2 = 21 k (J v dt)2 = 21 L [ddtqJ2 . 21 1 Thus the similarity of energy terms in eqs. (9) and (10) leads to the mass-inductor, spring-capacitor analogy. Physically this is also reasonable since kinetic energy is energy of motion. Energy can be stored in the field of an inductor only when there are charges in motion. Potential energy is stored in the spring by displacement of an elastic medium and likewise for the dielectric of a capacitor. This similarity is thus termed the conventional energy analogy but is not unique. 5. DUALITY Since eqs. (1) and (5) are identical and express lJ = 0 for the' mechanical system, eqs. (2) and (7) must bear some relation to each other. They must have the same solution L since each represents the same physical phenomena and each has form lJ = 0, where in (2) the symbol i corresponds to R force and in (7) e corresponds to force. Equation (7) represents an application of Kirchhoff's voltage law and must therefore apply to an end-to-end or loop conFIG. 8. Second analog of mechanical circuit of Fig. 1. nection of the elements, as shown in Fig. S. Thus there are two electric circuits which behave like the given mechanical circuit. This relationship is illustrated in Fig. 9. The two electric circuits are termed "duals." Thus the conventional energy approach suggests another set of corresponding quantities. A comparison of the coefficients of eqs. (5) and ANALOGS AND DUALS OF PHYSICAL SYSTEMS 24-09 (7) shows that mass, mechanical resistance, and compliance in the mechanical system are analogous to inductance, electrical resistance, and - / L C t e I ~M B f 03 (a) (b) (c) FIG. 9. (a) Structural analog, preservation of through and across variables. (b) Given mechanical circuit. (c) Energy analog, preservation of "conventional" kinetic and potential energy terms. capacitance respectively. Also it may be seen that force corresponds to voltage and velocity to current (Table 3). TABLE 3. CORRESPONDENCES: ANALOGOUS QUANTITIES IN MECHANICAL AND ELECTRICAL SYSTEMS Electrical (Structure Basis) Current, i Voltage, e Flux, f Capacitance, C Conductance, llR Inductance, L Through Across Mechanical (Rectilinear System) Force, f Velocity, v Displacement, x Mass, ~1 Resistance, B Compliance, 11k Through Across Electrical (Energy Basis) Voltage, e Current, i Charge, q Inductance, L Resistance, R Capacitance, C Across Through Just as two electric circuits were found to represent a given mechanical circuit, two mechanical circuits can conceptually be found to represent a given electric circuit. These mechanical circuits will also be duals of one another. This correspondence is represented in Fig. 10. 6. CONSTRUCTION OF DUALS Given any planar schematic network, there are two methods of finding its dual (duality fails if the original network is nonplanar). One method may be considered the junction method and the other the path method. Junction Method. Consider the schematic network shown in Fig. 11. The procedure is: 24-10 DESIGN AND APPLICATION OF ANALOG COMPUTERS Mechanical .... Structure analog :. Electrical 'T.f=O =0 'T.i ~ t t Dual Dual { t Mechanical E Structure analog Electrical ~ 'T.u=O =0 'T.e FIG. 10. Relation of duals and analogs. /~--------------..., ( /"..----- \ k2 k3 --, I \ ~~----~----~~ I : B3 ------0------ -, B2 1 D I I I I , _____-_-,::_-___- ____________=_ I = -=--::.. -=--=-.-=--...0=-==-=--------.::- =:: =: ~ ~::::::.:-:~ _/ J Ref. FIG. 11. Original circuit; center of loops marked. D A 1 B1 FIG. 12. Dual of circuit of Fig. 11. ANALOGS AND DUALS OF PHYSICAL SYSTEMS 24-11 1. Mark the center of each loop or "windowpane" with a node and place a reference node outside the circuit. 2. Place these nodes above a reference plane. 3. Connect these nodes in the original circuit by crossing elements. 4. Place the dual of each element between corresponding nodes in the dual circuit. The result of this procedure is shown in Fig. 12. Path .1.11 ethod. The path method will be applied to the dual circuit just derived so as to return to the original circuit (often a convenient check on the correctness of the derived dual). The procedure is: 1. Mark all nodes in the network and encircle each node, as shown in Fig. 13. FIG. 13. Circuit of Fig. 12, nodes encircled. 2. Connect all elements crossing the circle at each node except the reference node in an end-to-end series manner replacing each element by its dual, as shown in Fig. 14. FIG. 14. Elements of Fig. 13 replaced by duals. 3. Now make this connection for the reference node (Ref.) and join the other loops to it, as shown in Fig. 15. Note that one loop is redundant; this comes about because the circuit may be solved by N - 1 node equations. A separate node equation for the reference node is therefore not written. 24.12 DESIGN AND APPLICATION OF ANALOG COMPUTERS If the derived circuit is redrawn, the original circuit, shown in Fig. 16, results. B3 FIG. 15. Loops joined in Fig. 14. B3 FIG. 16. Redrawn Fig. 15, identical with Fig. 11. 7. ACROSS AND THROUGH VARIABLES IN PHYSICAL SYSTEMS The pertinent variables of several physical systems are summarized in Table 4. TABLE 4. ACROSS System Electrical Mechanical (rectilinear) Mechanical (rotation) Acoustical Thermal Fluid Magnetic Chemical AND THROUGH VARIABLES Across Voltage Velocity Angular velocity Pressure Temperature Pressure Magnetomotive force Chemical potential IN PHYSICAL SYSTEM Through Current Force Torque Volume current Heat flow Flow Flux Speed of reaction (molecules) REFERENCES 1. H. F. Olson, Dynamical Analogies, D. Van Nostrand, Princeton, N. J., 1943. 2. W. C. Johnson, Mathematical and Physical Principles of Engineering Analysis, McGraw-Hill, New York, 1944. ANALOGS AND DUALS OF PHYSICAL SYSTEMS 24-13 3. L. A. Pipes, Applied Mathematics for Engineers and Physicists, McGraw-Hill, New York, 1946. 4. M. F. Gardner and J. L. Barnes, Transients in Linear Systems, 'Wiley, New York, 1942. 5. W. Thompson, Mechanical Vibrations, Prentice-Hall, Englewood Cliffs, N. J., 1948. 6. B. Gehlshoj, Electromechanical and Electroacoustical Analogies, Denmark, 1947. 7. M.I.T. Electrical Engineering Staff, Electric Circuits, Wiley, New York, 1943. E DESIGN AND APPLICATION OF ANALOG COMPUTERS Chapter 25 Solution of Field Problems Walter J. Karp/us I. Formulation of Engineering Problems as Partial Differential Equations 2. Continuous Type Electric Analogs 3. Discrete Element Type Electric Analogs 4. Nonelectric Field Ana logs References 25·01 25·05 25·11 25·22 25·23 I. FORMULATION OF ENGINEERING PROBLEMS AS PARTIAL DIFFERENTIAL EQUATIONS Introduction. Field problems arise in phy:sical systems in which the system properties or parameters are distributed in a continuous fashion throughout the system. The independent variables of the problem therefore include one or more of the space coordinates, as well as the time variable in transient problems. The complete solution of such a problem then provides values for the dependent variables at all points within a region of interest, i.e., the field. Analogs represent a powerful tool for dealing with such problems because the field problems characteristic of the many diverse areas of physics and engineering may be described compactly by a relatively small number of partial differential equations. General analog techniques developed to solve these equations may then be applied as desired to the specific problem of interest. A more detailed discussion of this subj ect is presented by Karplus (Ref. 1), and a portion of this chapter is 25·01 25-02 DESIGN AND APPLICATION OF ANALOG COMPUTERS abstracted from this reference with permission of the publishers. (See Chap. 21, Sect. 6, for a brief table of symbols.) Dependent Variables. Just as in lumped systems (see Chap. 24), it is convenient in treating field problems to identify across and through variables. The across variable, generally termed the potential function 1>, expresses the value of a dependent variable with respect to some reference point. It is therefore really the difference in potential between (or across) two points. The through variable, usually called the stream function j, is proportional to the gradient of the potential function (first partial derivative of 1> with respect to a space coordinate) and describes the flow through a region of the field. In Cartesian coordinates . acf> ax acf> . acf> Jz = - az ' ay where jx, jy, and jz represent the flow rate in the x, y, and z directions respectively. In presenting the solution of a field problem all points having the same potential 1> are connected to form equipotential lines; all points for which the stream function j is the same are joined to form streamlines. The complete solution of a field problem is then usually a grid of orthogonal equipotential and streamlines. Coordinate Systems. It is advisable to formulate a field problem in the coordinate system which will make the resulting mathematical expressions take as simple a form as possible. The selection of the coordinate system is therefore governed to a large extent by the shape and symmetry of the field boundaries. Where these boundaries are rectangular, Cartesian coordinates are indicated; where'there exists symmetry about a straight line, cylindrical coordinates become appropriate; and where there is symmetry about a point, spherical coordinates are preferable. These basic coordinate systems are defined in Fig. 1. Other coordinate systems may be developed as needed. In two-dimensional problems the technique of conformal mapping (Vol. 1, Chap. 10) is very useful. Parabolic and hyperbolic coordinates, and phase plane plots are also of occasional advantage. The Laplacian. In order to make the partial differential equations of physics as general as possible it is desirable to make them independent of specific coordinate systems. To this end it is convenient to define the Laplacian operator \7 2 as a shorthand notation. Expressions for \7 2 in the principal coordinate system are included in Fig. 1. In problems of elasticity the biharmonic operator \74cf> represents a4cf> a4cf> a4cf> + 2 + &x 4 ax 2 ay2 ay4 (1) Jx= - - , in Cartesian coordinates. . Jy= - - , Coordinate System Cartesian x,Y,Z Cylindrical r, (J, Z Cartesian x x y y r = Vx + y2 . (J = cos- l (x/V x 2 + y2) z Z Z x r cos (J y r sin (J r r (J=(J Spherical r B , a, {3 2 ~------= Z Z Z = r sin {3 cos a = r sin {3 sin a z = rs cos {3 x y v 2¢ To Convert to Cylindrical = = Z 8 rs = a = COS-l(x/~ y2) (3 = cos- 1 (z/V X2+y+Z2) rs Vr2 + Z2 (J cos- 1 (z/Vr2 = a = (3 = Z r = rs sin {3 (J=a Z = rs cos (3 8 Spherical vi x 2 + y2 + Z2 a 2¢ a 2¢ a 2¢ - +az-2 ax 2+ay2 1 a ( a¢) -;. ar r or + 2 1a ¢ ~ a(J2 Vl + a 2¢2 az + Z2) a=a (3={3 C --f (5 2 a ¢ r2 sin 2 {3 aa 2 1 a (. a¢) r2 sin {3 a{3 sm {3 a{3 .l ~ (r2 a¢) + rs = rs or- r2 ar ar + 1 Z o "T1 :!} m r- o -c ;:0 o ·z c::J 'P(x,y,z) r- fP(r, 0, .. ) 1 1 1 m ~ 1 I :. 1 Vl Iz I 01 y o : , // ,r , , 1 / 1 / Y / -- - - ----'~/ :r Cartesian Coordinate System Cylindrical Coordinate System FIG. 1. Basic coordinate systems. Spherical Coordinate System N U'1 b w 25-04 DESIGN AND APPLICATION OF ANALOG COMPUTERS Important Equations The fundamental partial differential equations of physics and engineering and examples of the more important areas of their application are summarized below. Laplace's Equation. Gravitation: Magnetics: Electrostatics : Electrodynamics: H eat transfer: Fluid mechanics: Statics: "V 2 ¢ = 0. gravitational potential in free space magnetic potential in free space electrostatic potential in an ideal dielectric voltage distribution in a nonreactive field steady-state temperature distribution velocity potential of an incompressible fluid in a porous medium, velocity potential of homogeneous liquid moving irrotationally steady-state deflection of mass spring systems Diffusion Equation. "V 2 ¢ = K(a¢/at) . . Electrodynamics: voltage distribution in a field having distributed resistance and distributed inductance or capacitance H eat transfer: transient temperature distribution Particle diffusion: concentration of particles of one fluid, diffusion into space occupied by another fluid Fluid mechanics: velocity potential of compressible fluid in a porous medium . Electromagnetics: skin effect equation Optics: diffusion of light by a scattering material Soil compaction: hydrostatic pressure in consolidating soils Wave Equation. "V 2 ¢ = K(a 2¢/at 2 ). Electrodynamics: voltage distribution in fields containing distrib- uted inductance and capacitance (ideal transmission lines) Dynamics: vibration of system with negligible mass Fluid mechanics: propagation of vibration in compressible media Electromagnetics: propagation of electromagnetic energy in field with negligible conductivity Poisson's Equation. "V 2 ¢=f(x,y,z) and the related equation "V 2 ¢=f(¢). H eat transfer: temperature distributions in solids in which Electron optics: Shear analysis: nuclear, electrical, or chemical energy is being converted to heat motion of electron in space charge regions shear distribution in torsional problem Biharmonic Equation. "V4¢ = 0, "V4¢ = K, "V4¢ = K(a 2¢/at 2 ). Elasticity: stress distribution in solid structure SOLUTION OF FIELD PROBLEMS 25-05 2. CONTINUOUS TYPE ELECTRIC ANALOGS Basis for the Analogy. Continuous type analogs are based upon the recognition that the current and voltage distribution in an electrical conductor having negligible reactance is governed by Laplace's equation. They may therefore be employed to simulate any field governed by Laplace's equation. Occasionally their application may be extended to fields containing distributed internal sources and sinks and governed by Poisson's equation as well. If the conductive material simulating the field is a solid, only the potential field at the external surfaces of the analog system can be studied. These are therefore generally limited to field problems which can be formulated in two space dimensions. Liquid analog systems on the other hand are suitable for three-dimensional problems as well as two-dimensional ones. Conducting Sheet Analogs As the name implies, conducting sheet analogs consist of a thin layer of electrically conductive material. Kirchhoff introduced this technique in 1845 by describing the simulation of an electric field by means of a thin copper disk. The application of conducting sheet analogs was hampered for many years by the unavailability of sufficiently uniform and isotropic sheets with resistivities of the right order of magnitUde. Great strides have been made in this direction since World War II, however. The solution of problems governed by Laplace's equation proceeds in three steps: 1. A conductive sheet having the same geometrical shape (or a conformal transformation thereof) as the field under study is devised. 2. The boundary conditions of the original field are simulated in the analog systems by the application of voltage and/or current sources at the boundaries of the sheet. In the case of equipotential boundaries, a highly conductive material is placed in contact with the sheet along the entire boundary line, and a constant voltage source is connected to this conductor . • 3. By means of suitable sensing equipment the voltage distribution on the surface of the conductive sheet is measured and recorded. The voltages measured in this manner are then directly proportional to the potentials existing at corresponding points of the original field. 4. If desired, the streamlines of the original field may be plotted by changing all streamline boundaries to equipotential boundaries and vice versa, and repeating the above procedure. A typical conducting sheet analog system is illustrated in Fig. 2. Resistance Paper. The impetus for the recent popularization and development of the conducting sheet technique was provided by· the 25-06 DESIGN AND APPLICATION OF ANALOG COMPUTERS introduction of so-called resistance paper. First described by Hotchkiss (Ref. 2) in 1948, resistance paper, manufactured under the trade name Teledeltos, was designed for use as electrosensitive recording paper in telegraphic instruments. It is formed by adding carbon black to the paper pulp in the pulp beating stage of the manufacturing process. The electrical behavior of such paper is usually specified as "ohms per square," referring to the resistance between opposite sides of a square of paper (the size of the square is irrelevant) . Boundaries at which the voltage is constant are painted directly on the paper with silver paint. Occasionally a copper wire is pasted on top of the silver strip to assure equipotential conditions. Boundaries of varying potential are readily obtained by connecting discretely spaced points along the boundary to voltPotentiometer age sources of suitable magnitudes. AlFIG. 2. Conductive sheet analog ternating or direct current may be used system. to excite the system. The paper may be cut as desired to form streamline boundaries. The field plotting apparatus may be very simple. A blunt metal probe, possibly a roller, is guided along the paper in such a fashion that the galvanometer reads zero at all times for a given potentiometer setting. The line drawn in this manner is an equipotential line. Accuracy. This type of apparatus has a limit of accuracy of about 2 per cent and is probably the simplest and cheapest of all the analog methods. Other Types of Conducting Sheet Analogs. From time to time other types of conducting sheet analogs have been used to advantage. The more important of these include: metal sheets, metalized paper, conductive rubbers (rubbers with carbon black dispersions), cloth impregnated with graphite, and untreated paper. The suitability and relative merits of these materials for use as conducting sheet analogs are summarized in Table 1. Conducting Liquid Analogs Water containing small amounts of dissolved salts is an electrical conductor, and may be used as a continuous type conducting analog. Until- the development of Teledeltos paper, conductive liquid analogs, generally termed electrolytic tanks, were by far the most widely used TABLE Type Teledeltos paper Untreated paper Conductive rubbers (Uskon) Conductive fabrics Conductive plastics (Markites) Source Western Union 1. COMPARISON OF CONDUCTIVE SHEET ANALOGS Approx. Resistivity, a/sq. TypeL:2000 Type H: 20,000 Ordinary drafting paper (nonfibrous) 5 X 10 9 U. S. Rubber Co. 400-2000 Pacific Mills Approx. Approx. Isotropicity Uniformity, R.longitudinal % Fluctuations R. transverse 10% 2% 5% 0.9 Good 0.9 1000 Excellent 0.95 100-1000 Poor Poor Advantages Disad vantages Cheap, easy to cut, convenient to use Easily damaged by probes; absorbs moisture (hence sensitive to temperature changes); easily damaged by bending Very sensitive to humidity; requires very high impedance sensing circuit Sensitive to mechanical stress Cheap, convenient, electrodes may be drawn with pencil May be ltlayered" to effect local change in resistivity, layers adhere to each other May be layered Very hard, not easily damaged, not affected by moisture Readily available Metal sheets Very low Poor Good Homemade sprays 1K-300K 5% Good Hard surface not easily damaged Low Poor Poor Suitable for studies of 3-dimensional fields Graphite and wax models til 0 r- C -i (5 Z 0 " :!! m r0 Sensitive to mechanical stress Sensitive to mechanical stress; hard to cut and shape ""C ;;:0 0cc r- m ~ til Electrodes must be highly conductive Requires special apparatus for preparation of sheets; difficult to work with N c.n b ....., 25-08 DESIGN AND APPLICATION OF ANALOG COMPUTERS electric ·analog systems· for the solution of Laplace's equation. The solution of field problems by this method proceeds as follows: 1. A large container open at the top is filled with a suitable electrolyte. 2. A scale model of the boundary configuration of the field under study, or a conformal transformation thereof, is immersed in the tank. Boundaries which are equipotential surfaces are made of metal, while an insulating material is employed for streamline boundaries. ~1500CPS Potentiometer e / ' - , Cathode ray I ~\ oscilloscope \ ,......... / I FIG. 3. Conductive liquid analog system. 3. A-c voltage sources of appropriate magnitudes are then applied to all equipotential boundaries. 4. The voltage distribution along the surface of the liquid is measured and recorded by means of suitable sensing equipment. In threedimensional field problems the sensing probe is inserted into the liquid, while it is kept at the liquid-air interface in two-dimensional problems. A typical electrolytic tank system is illustrated in Fig. 3. Electrolyte. The conductive liquid must possess the following properties: (1) no electrical reactance; (2) uniform, linear resistivity; (3) resistivity large compared with resistivity of electrodes, small compared with input resistance of sensing device; (4) small surface tension to obviate errors due to meniscus; (5) inert chemically, free of films. Often ordinary tap water is adequate. Small amounts of copper SOLUTION OF FI ELD PROBLEMS 25-09 sulfate, sulfuric acid, and ethyl alcohol are frequently used additives. Excitation. At low a-c frequencies most electrolytes exhibit nonlinear resistive and reactive properties at the electrode-electrolyte interface. These phenomena tend to become negligible at operating frequencies above approximately 1500 cps. Sinusoidal voltage generators are most frequently employed, although squ~re waves have been used to advantage occasionally. Preamplifier Voltage divider 110 v Probe 235'"'1..1 3 2 Tank x-motor r-------.------,------~ 2~f Limit switch 17 200--0 19 18 110 v 60'"'1..1 Relays and timer y-motor FIG. 4. Automatic field plotter (Ref. 3). Boundaries. Boundaries at which the voltage is constant may be graphited silver or aluminum painted surfaces, or tin or aluminum foil may be used to line the container at the required locations. Field Plotters. Single probes, connected to a potentiometer, are employed to sense the field potential. These are generally thin, platinum wires or needles. To detect streamlines, two and four probe arrays are employed. To achieve high accuracies, precision field plotting apparatus is required. Automatic field plotters for sensing and recording equipotential lines have been described by Green (Ref. 3) and others. A typical automatic plotting device is shown in Fig. 4. 25-10 DESIGN AND APPLICATION OF ANALOG COMPUTERS In this type of plotter the probe is made to move with a constant velocity in the x direction. Any difference between the voltage at the probe and an arbitrarily set reference voltage actuates a servo system, which alters the position of the probe along the y coordinate in such a direction that this discrepancy is eliminated. The probe is therefore kept on the desired equipotential line. \Vhen the probe reaches a boundary, a relay causes the probe to reverse its direction of travel and changes the reference voltage at the same time, so that the next desired equipotential line is plotted. In this way any number of preset equipotentials may be traced. A pantograph is employed to obtain a graphic record of the position of the probe within the tank. Electrolyte Tapered wax bottom FIG. 5. Electrolytic tank for system with radial symmetry. Cylindrical Coordinates. Electrolytic tanks are well suited for the study of problems in which there exists symmetry about a straight line. A typical wedge of the cylindrical system may readily be simulated by tilting a shallow electrolytic tank as shown in Fig. 5. Since the depth of [r ~ Electrolyte Glass separating plate FIG. 6. Electrolytic tank for the simulation of infinite fields. the electrolyte is everywhere proportional to the distance r from the cylinder axis, Laplace's equation V2¢ = 0, is satisfied. Infinite Fields. Fields which extend to infinity in all directions may be simulated by a double layer electrolytic tank. In this method, accorcling to Boothroyd (Ref. 4), a thin circular sheet of insulating material is mounted as shown in Fig. 6, and separates the electrolyte into two circular conductive sheets, joined at their periphery. The top sheet behaves aE;l though it were part of an infinite plane. SOLUTION OF FI ELD PROBLEMS 25-11 Accuracy. Accuracies of the order of 5 per cent are readily achieved with inexpensive and simple instrumentation. Accuracies as high as 0.1 per cent have been reported by Einstein (Ref. 11), Sanders (Ref. 12), and others by means of extremely careful and precise experimental techniques. 3. DISCRETE ELEMENT TYPE ELECTRIC ANALOGS Basis for the Analogy. Discrete element type analogs are based upon the recognition of the formal similarity between Kirchhoff's law equations for networks of electric elements and the equations resulting from the finite difference expansion of the partial differential equations describing field problems. The analog method of solution proceeds as follows: 1. The partial differential equations governing the field under study are expanded in finite differences. The grid spacing (mesh size) is chosen so that the expected truncation errors resulting from this process are sufficiently small in all regions of the field. 2. An electric network is constructed in which (a) each node in the finite difference grid is represented by a junction of two or more electric elements and (b) the node equation (according to Kirchhoff's current law) for each node of the network is similar in form, term by term, to the finite difference equation at the corresponding location in the original field. 3. By means of suitable voltage and. current sources the electric network is excited at its boundaries as well as possibly at internal node points as specified by the finite difference equation. 4. The voltages appearing at the nodes of the network are measured and recorded. These are then proportional to the potential at the corresponding points in the original field. If desired, the family of equipotential lines may be sketched by interpolating between points of known potential. Finite Difference Expansions of Partial Differential Equations. The mathematical techniques whereby partial differential equations may be transformed into systems of algebraic equations is discussed in Vol. 1, Chaps. 4 and 14. Numerous expansions for first and second derivatives are available. For analog simulation purposes however, the so-called second central difference type of expansion is most useful in approximating the second derivative. Frequently only the space derivatives are expanded in finite differences whereas the time derivatives are left in continuous form. Table 2 is a summary of the most useful finite difference expansions for the terms of the basic partial differential equations in Cartesian N TABLE 2. Cf1 FINITE DIFFERENCE EXPANSIONS IN CARTESIAN COORDINATES Location of Node Points Node No. (J2cp ax 2 a2cp = 1 Ax2 [CP1 1 ay2 = Ay2 [CP3 a2cp 1 az 2 + CP2 - = AZ2 [CP5 aE/> _ cP 1 ax - - + CP4 + CP6 CPO - CP2 - 2cpo] - 2cpo] forward difference CPo A -- 2cpo] , backward difference . - - , average difference ocp CP3 - CPO , CPO - CP4 , CP3 - CP4 -= oy Ay Ay 2Ay ocp CP5 - CPo CPO -?6 CP5 - CP6 -= , , az Az Az 2Az 1 = Ax4 [CP9 + CPlO - 4CP2 - 4CP1 + 6cpo] om !:!! (i) 0 to, Xo, Yo, Zo 1 to, Xo 2 to, Xo - Ax, Yo, Zo + Ax, Yo, Zo Z » z o 3 to, Xo, yo + Ay, Zo » 4 to, Xo, Yo - Ay, Zo (5 5 to, Xo, Yo, Zo 6 to, Xo, Yo, Zo - Az 7 to 8 to - At, Xo, Yo, Zo 9 to, Xo -+ Az , CP1 - CP2 04cp ox4 Coordinate N + At, Xo, Yo, Zo ""r- ~ (5 Z o » z » ro(j) "'T1 + 2Ax, Yo, Zo 10 to, Xo - 2Ax, Yo, Zo 11 to, Xo, Yo + 2Ay, Zo 12 to, Xo, Yo - 2Ay, Zo 13 to, Xo, Yo, Zo 14 to, Xo, Yo, Zo - 2Az 15 to, Xo 16 to, Xo - Ax, yo - Ay, Zo + 2Az + Ax, Yo + Ay, Zo () o ~ C "--I m :;;0 Vl a4¢ 1 ay4 = l1y4 [¢11 a 4¢ 1 az 4 = l1z 4 [¢13 a4¢ ax 2ay2 + ¢12 + ¢14 - 1 = l1x 2l1y2 [¢15 a4¢ 1 ax 2az 2 = l1x 2l1z 2 [¢19 a 4¢ 1 ay 2az 2 = l1y 2 l1z 2 [¢23 a2¢ at 2 = 1 l1t 2 [¢7 l1t ' 4¢5 - 4¢6 + ¢16 + ¢17 + . ¢lS - 2¢1 - 2¢2 - 2¢3 - 2¢4 - 2¢1 - 2¢2 - 2¢5 - 2¢6 + ¢24 + ¢25 + ¢26 - 2¢3 - 2¢4 - 2¢5 - 2¢6 17 to, Xo - l1x, yO 18 to, Xo + 4¢ol + 4¢ol + 4¢ol + !ly, Zo 20 + l1x, Yo - l1y, Zo to, Xo + l1x, Yo, Zo + l1z to, Xo - l1x, Yo, Zo + l1z 21 to, Xo - l1x, Yo, Zo - l1z 22 24 + l1x, Yo, Zo - l1z to, Xo, Yo + l1y, Zo + !lz to, Xo, Yo - l1y, Zo + !lz 25 to, Xo, Yo - l1y, Zo - l1z 26 to, Xo, yo 19 + 6¢ol + ¢20 + ¢21 + ¢22 + ¢s - a¢ _ ¢7 - ¢o at - + 6¢ol 4¢3 - 4¢4 23 to, Xo + l1y, Zo - l1z Vl 0 r- c ::! 0 Z 0 "T1 :!! m r0 ""tJ 2¢ol forward difference ;;:c 0tD rm ~ Vl ¢o - ¢s backward difference l1t ' ¢7 - ¢s average difference 2l1t ' t-.) 'f1 w 3. TABLE N FINITE DIFFERENCE EXPANSIONS IN CYLINDRICAL COORDINATES 'f1 Location of Node Points Node No. ! [acP (r acP)] r ar ar = ~ [(2r o + 11r)(cP1 - cPO) 2.6r 2 ro a 2cp = cP5 - CPO aZ 2 11z2 2 1 a cp CP3 - 5 a{3 T )2 (cP2 - (11r rso.- (CP1 - cPo) '11{32 sin {30 >0) + sin C!0 - ¥) (>. - >0)] .6{32 sin {30 0 rso, ao, {30 1 rso 2 rso - 11r s, ao, {30 3 r so, ao 4 rso, ao - .6a, {30 5 rso, ao, {30 6 rso, ao, (30 - 11{3 + 11rs, ao, {30 + .6a, {3o + 11{3 " » z » ro(j) () o ~ -a C -f m ;;0 Vl SOLUTION OF FIELD PROBLEMS 25-15 coordinates. Table 3 lists the expansions for cylindrical coordinates, and Table 4 summarizes the pertinent approximations in spherical coordinates. Finite difference expansions for complete equations are constructed by I I I I I I I Xl I I I I I I I X2 I I I I I I I I I I I I I Xa I X4 I I I I I I I x5 I I I I I I I Xs (a) (b) (c) FIG. 7. Resistance networks: (a) one dimension, (b) two dimensions, (c) three dimensions. combining the expressions for the individual terms making up the equations. Resistance Networks. These network analogs are in general rectangular arrays of electrical resistors. Portions of one-, two-, and threedimensional resistance networks are shown in Fig. 7. Typical junctions in these networks and the corresponding node equations are presented in Fig. 8. V o, V 1, V 2, •• , are voltages at points 0, 1; 2, ' ". A formal similarity is evidenced between the above node equations and the finite difference equations from Tables 2, 3, and 4, when written as: 25-16 DESIGN AND APPLICATION OF ANALOG COMPUTERS 6 4 5 (b) (c) FIG. 8. Typical functions and node equations: (a) One dimension, (b) Two dimensions, 1 - (VI - Yo) + R2 -1 Rl (c) Three dimensions, 1 - (VI - yo) Rl (V2 - Yo) 1 + -Ra (Va - yo) 1 + R(V4 4 yo) = + R2 -1 (V2 - yo) . 1 + Ra -1 (Va - Yo) + - (V4 R4 + R5 -1 (V 5 - yo) + -R61 (V 6 - o. Yo) Yo) = O. Cartesian coordinates (x, y, z): (2) V2cp = q,1 - CPo .1x2 + CP2 - CPo .1x 2 + CPa - CPo .1y2 + CP4 - cpo .1y2 + CP5 - cpo .1z2 + CP6 - CPo • .1z2 Cylindrical coordinates (r, 0, z): 2 _ (3) V cP - 2ro + .1r _ ,,) 2 .1 2 (CPl ctu ~ r ( _ ) + 2ro2 - I1r 2 CP2 CPO + cpa - CPO + CP4 - CPO + CP5 ro2.10 2 A ~ur ro2116 2 CPO I1z 2 + CP6 I1z2 CPO • SOLUTION OF FI ELD PROBLEMS 25-17 Spherical coordinates (r s, ex, f3), radial symmetry (rs): 4) ( 2 _ \7 cP - [rso + 2(.1rs/2)] ( _ ) A 2 CPl CPo rso I-lrs + [rso - (.1rs/2)] ( _ ) 2 CP2 CPo. ? A rsO~l-lrs A resistance network may, therefore, be employed to simulate the potential distribution in fields governed by Laplace's equation. The relative magnitudes of the resistors are determined by comparing the finite difference equation for the particular node under consideratio!l with the corresponding electrical node equation. For example, in the case of a node located at radius ro, in a field in polar coordinates, the resistors comprising the two-dimensional net are found by eq. (3) to be (5) ~ Rl = 2ro + .1r , R 2ro.1r2 1 R2 -= 2ro - f1r , R2ro.1r2 1 1 R3 ,R4 -=-= 1 Rro2.18 2 , where R is a scale factor introduced to obtain resistors of convenient magnitudes. The magnitudes of resistors along streamline boundaries and in the vicinity of irregular boundaries must be appropriately modified. Similarly, if the properties of the field to be simulated vary with position, or if different mesh spacings are employed in different portions of the field, the relative magnitudes of the network resistors are changed accordingly. Detailed discussions of this technique are presented in Refs. 1 and 5. Resistance Networks with Internal Excitation. Fields with internal distributed excitations governed by Poisson's equation and equations of the type (6) \7 2 cp = f(x, y, z, t, cp) are simulated by introducing currents of the appropriate magnitude at each network node. The equations for typical network junctions under these conditions are given in Fig. 9. The currents are frequently applied to the network nodes by voltage sources coupled to the node by variable resistors. If the value of these feed-in resistors is large compared with that of the network resistors, the precise adjustment of their resistance magnitudes is relatively simple in most cases. Where the applied currents are specified to be a function of the node voltages or their derivatives, the feed-in resistors must be adjusted and readjusted by an iterative procedure. Electronic computer units may be used to advantage for this purpose. Applications 'of Resistance Networks. Resistance networks have been applied to the solution of the diffusion equation by Liebmann (Ref. 6). The method employs a "backward difference" approximation of the time derivative, and its underlying principle is illustrated in 25-18 DESIGN AND APPLICATION OF ANALOG COMPUTERS 3 n ' 2 IlO RI 2~12 4 (a) FIG. 9. 5 (b) (c) Typical functions of resistance networks with current applied to each node. (a) One dimension, (b) Two dimensions, 1 - (VI - Vo) Rl 1 +(V2 R2 - Vo) 1 +(V3 R3 - V o) 1 +(V4 R4 - Vo) = -io. (c) Three dimensions, 1 1 1 - (VI - Vo) (V2 - V o) (V3 - Vo) Rl R2 R3 +- +- 1 +(V6 R6 - Vo) + R6 -1 (V6 - + R4 -1 (V4 - Vo) Vo) = -io. Fig. 10. The resistances R form the network analog of the space derivatives. At each node, a current is fed through the feed-in resistor R" whose magnitude is proportional to R6.t/6.x 2 , in the case of the problems in one space dimension. It can be shown that if the feed-in voltages Vn represent the potentials existing in the network at time n6.t, the voltages at the network nodes are proportional to the potential distribution at R R R R R FIG. 10. Resistance network for iterative solution of the diffusion equation. SOLUTION OF FIELD PROBLEMS 25-19 time (n + 1) D.-t. The transient potentials are then obtained by repeating these measurements over as many time increments as required, each time resetting the feed-in voltages. Liebmann (Ref. 7) is also responsible for a resistance network method for solving the bihannonic equation in two space dimensions. Two rectangular resistance networks interconnected by feed-in resistors are employed. The wave equation under steady-state conditions becomes (7) This equation is similar in form to eq. (6) and may be treated by the resistance analog method by introducing a current proportional to Kw 2 cp at each node. FIG. 11. Typical nodes of R-C network for simulation of heat conduction in a twodimensional system, Comparatively high accuracies are readily obtained with resistance networks. If the manufacturer's tolerance of the individual components is ± 1 per cent, accuracies within 0.1 per cent are attainable. Truncation errors due to the approximation of a continuous field by a discrete analog may be minimized by refining the network as required. Resistance-Capacitance Networks. Resistance networks modified by connecting a capacitor from each network node to ground are used to simulate fields governed by the diffusion equation. Their principal application is in the area of heat transfer, where thermal analyzers have assumed an important role. Network m'odels of this type are also important in petroleum reservoir engineering in studying unsteady state fluid flow through porous media. A typical node of an R-C network is shown in Fig. 11. In selecting resistor and capacitor values, the solution time is first 25-20 DESIGN AND APPLICATION OF ANALOG COMPUTERS "scaled" to have a convenient magnitude. The element values are then determined by establishing a term-by-term correspondence between the finite difference equation and the node equation of the electric network. The basic R-C network technique has been extended by Paschkis (Ref. 8) and others to the treatment of fields with time-varying parameters and nonlinear parameters, fields in which latent heats of fusion play 2 FIG. 12. 1 (VI - V o) Ll Typical node of network analog for wave equations, + -L21 (V2 - Vo) + -La1 (Va - Vo) + L4 -1 (V4 - Vo) = d 2 Vo Co • d~ a part, and a multitude of combinations of initial and boundary conditions. Inductance-Capacitance Network. Networks containing only reactors are occasionally employed for the simulation of fields governed by the wave equation. The structure of the network is similar to that of the R-C systems described above, with inductors replacing the resistance elements. A typical node of such a network is illustrated in Fig. 12. At any given frequency an inductor has a positive reactance of constant magnitude, while a capacitor has a negative reactance of constant magnitude. This property has led to the application of L-C networks to problems generally treated by means of resistance networks, but in which negative resistors are required. R·L-C Nehyorks. Networks including large numbers resistors, inductors, capacitors, as well as transformers, all of which may be interconnected as desired, constitute a powerful tool for the solution of numerous problems occurring particularly in the areas of power utilization and distribution, and the stress and vibration analysis of elastic structures. So-called a-c network analyzers for the simulation of electric power lines, generators, loads, and transformer stations play an important part in the planning of electric power systems. A partial list of problems handled by this method includes: SOLUTION OF FI ELD PROBLEMS 25-21 Load division problems: circuit loadings, desirable locations of new generators, effect of increased system loadings, effects of system reactances, ratings of transformers. Short-circuit problems: effect of three-phase and unbalanced faults, evaluation of protective measures. Stability problems: steady-state and transient limits, remedial measures. Such networks are, of course, also useful in solving problems governed by any of the basic field equations of engineering and physics. McCann (Ref. 9) has developed a large scale, highly flexible network analyzer for the solution of static and transient beam problems. The network permits the study of one-, two-, and three-dimensional problems with a wide variety of end conditions. A typical application of this analog simulator is illustrated in Fig. 13. I 01.5 I 02.5 03.5 04.5 05.5 06.5 07.5 ~ "L~L , J: I = 1:1= 1 f6 = = 3 If) = = = 13 x_ 16 15 10 ,Clamped end I FIG. 13. Circuit for steady-state vibration of a uniform cantilever beam with eight cells: 0, slope; y, vertical deflection; L, inductance; C, capacitance (Ref. 9). Use of Electronic Analog Computers. Howe (Ref. 1) and Rogers (Ref. 5) have described techniques for employing d-c analog computers at each node of an analog network to perform the additions and integrations specified by the finite difference equation for that node. Complexelement transfer functions (see Chap. 22) may be used to advantage to obtain the required response with a minimum of equipment. Fields governed by the wave equation, equations containing first space derivatives, and fields with certain nonlinearities, are successfully treated by this method. 25-22 DESIGN AND APPLICATION OF ANALOG COMPUTERS In general, however, the d-c analog computer finds its most important application in the solution of field problems as an adjunct to passive network analogs. The generation of time functions comprising the excitation of network models is rea'dily accomplished with this equipment. The application of currents to the internal network nodes is likewise facilitated. 4. NONELECTRIC FIELD ANALOGS Numerous mechanical, thermal, chemical, and hydraulic systems satisfying Laplace's equations have been employed from time to time to locate the equipotential and streamlines in two- and three-dimensional fields. For the most part, these methods are qualitative at best and have in recent years been replaced to a large extent by the electric analog models. Some of the more familiar of these systems are briefly discussed below and are considered in more detail in Refs. 1, 5, and 10. Stretched Membranes. If a very thin film .of negligible weight is placed under uniform tension, its vertical displacement, perpendicular to the plane of the membrane, is determined by Laplace's equation. A model of the field boundary is constructed so that its height is proportional to the boundary potentials of the field under study, and a thin membrane is then stretched over this boundary structure. The membrane then adjusts itself so that its height at interior points of the model is proportional to the potential field at the corresponding points in the original system. Commonly used membranes include soap films and thin sheets of rubber. Considerable skill is required in the application of this method to complex regions and fields with internal excitations. Models of this type have been used widely in the area of electron optics. Fluid Mappers. The pressure in an inviscid incompressible fluid obeys Laplace's equation. This condition may also be approached by causing a viscous, incompressible fluid such as glycerin to flow between two closely spaced parallel walls. Dyes such as potassium permanganate may be introduced into the flow stream at discretely spaced points and a visual display of the streamline pattern obtained. Regions of varying characteristics are readily studied by this method. Blotter Type Electrolytic Models. The motion of ions in an electrolyte under the influence of externally applied electric potentials is governed by Laplace's equation. Ionized salts solution may therefore be injected into an electrolytic system at points corresponding to sources or sinks in the original system and their progress through the system noted. The motion of the ions can be made visible by employing electrolyte-ion solution combinations which change color on contact. For example, a piece of blotting paper may be soaked in a colorless SOLUTION OF FIELD PROBLEMS 25-23 electrolyte containing phenolphthalein, which turns red in the presence of OR - ions. A weak solution of sodium hydroxide is then used as the injected fluid, and a permanent record of the flow pattern may be obtained by photographing the paper at regular time intervals. This method has been used successfully to study the shapes of injection fluid fronts in petroleum engineering problems. Electro-Optical Method. A liquid having a large Kerr constant, such as a colloidal suspension of bentonite, is placed between two parallel pieces of polaroid, and is subjected to an electric field determined by the boundary conditions of the field to be simulated. The applied voltage (approx. 60 cps ac) effects a change in the polarization characteristics of the liquid so that, if light is beamed through the liquid and the polaroid boundaries, a distinctive pattern of dark lines is observed. These are then related to the potential field within the liquid. Guehhard's Rings. A polished sheet of copper is placed in an electrolytic tank, parallel to the air-electrolyte interface. Solutions of copper and lead acetates are used as the conductive liquid, and deposits of lead peroxide form on the surface of the copper sheet when the system is excited electrically. Lines of constant color of this deposit correspond to the equipotential lines of the field. Lichtenberger Figures. A high transient voltage is applied to a piece of photographic paper so that a discharge occurs across its surface. Upon developing, a pattern corresponding to the streamlines of the field are observed on the paper. REFERENCES 1. W. J. Karplus, Analog Simulation: Solution of Field Problems, McGraw-Hill, New York, 1958. 2. G. Hotchkiss, Electrosensitive recording paper for facsimile telegraphic apparatus and graphic chart instruments, Western Union Tech. Rev., 2, 176-187 (1948). 3. P. C. Green, Automatic plotting of electrostatic fields, Rev. Sci. Instr., 19, 646-653 (1948). 4. A. R. Boothroyd, E. C. Cherry, and R. Makar, An electrolytic tank for the measurement of steady state response, transient response, and allied properties of networks, Proc. Inst. Elec. Engrs., 96, Pt. I, 163-177 (1949). 5. W. W. Soroka, Analog Methods in Computation and Simulation, McGraw-Hill, New York, 1954. 6. G. Liebmann, A new electrical analog method for the solution of transient heat conduction problems, Trans. Am. Soc. M echo Engrs., 78, 655-665 (1956). 7. G. Liebmann, Solution of plane stress problems by an electric analogue method, Brit. J. Appl. Phys., 6, 145-157 (1955). 8. V. Paschkis and H. D. Baker, A method for determining unsteady-state heat 25-24 DESIGN AND APPLICATION OF ANALOG COMPUTERS transfer by means of an electrical analogy, Trans. Am. Soc. M echo Engrs., 64, 105112 (1942). 9. G. D. McCann and R. H. McNeal, Beam vibration analysis with electric analog computer, J. Appl. Mechanics, 17, 13-26 (1950). 10. P. E. Green, Methods of plotting electrostatic fields, Eng. School Bull. 45, Dept. of Eng. Research, N. Carolina State College, Raleigh, 1949. 11. P. A. Einstein, Factors limiting the accuracy of electrolytic plotting tanks, Brit. J. Appl. Phys., 2, 49-55 (1951). 12. K. F. Sanders and J. G. Yates, The accurate mapping of electric fields in an electrolytic tank, Proc. Inst. Elec. Engrs., 100, Pt. II, 167-183 (1953). E DESIGN AND APPLICATION OF ANALOG COMPUTERS Chapter 26 Noise and Statistical Techniques Henry Low I. Introduction and Definition 26-01 2. Random Variable Concepts 26-02 3. Treatment of Linear Systems 26-06 4. Treatment of Nonlinear Systems 26-09 5. Noise Generators 26-12 References 26-20 I. INTRODUCTION AND DEFINITION Noise theory has become an essential element in communications and control systems. In such systems noise is usually the predominant factor limiting range, sensitivity, and reliability of the equipment, consistent with economic and size considerations. On the other hand, the development of efficient testing procedures based on the use of a noise wave as input to a system has re-evaluated the concept that noise is inherently evil (Refs. 1 and 2). Noise, from the point of view of this chapter, is perhaps best defined as phenomena which may not be predicted with complete certainty. These random phenomena include thermal noise arising from Brownian motion of electrons in kinetic equilibrium with the molecules of a conductor, static from electrical disturbances in the atmosphere, contact noise associated with fluctuating conductivity, random mechanical vibrations such as encountered in electron tube elements and aircraft landing gears, atmospheric air turbulence and random fluctuations in manufacturing tolerances. 26-01 26-02 DESIGN AND APPLICATION OF ANALOG COMPUTERS In many branches of engineering and science there occur problems whose solutions may be expressed only in statistical terms. A notable example is the frequent occurrence of such problems in modern aerial guidance and control systems. These systems are seldom designed to perform a single task which may be completely specified beforehand; rather, they are designed to perform a task selected at random from a complete repertory of possible tasks. Analysis of the behavior of systems whose forcing functions are a combination of predictable and random functions, is often complicated by the fact that these systems are nonlinear, time-varying, or both. With proper random function generators and appropriate computing techniques, the analog computer approach is a powerful means for studying the effects of random disturbances on complicated systems. (See Chap. 21, Sect. 6, for a brief table of symbols.) 2. RANDOM VARIABLE CONCEPTS Probability Theory. An understanding of the basic concepts of probability theory is essential to the analysis of statistical problems on an analog computer. (See Vol I, Chap. 12.) Only a rudimentary explanation of statistical terms applicable to this chapter will be given here. For more information on this subject see Ref. 3. Consider the quantitative description of the voltage output x (t) of a noise generator most commonly used with analog computers and described in Sect. 5. The output of the noise generator will fluctuate in a random fashion around some average value. It is impossible to predict what the value of the noise voltage x (t) will be at any given time; however, the problem may be clearly formulated in terms of probability theory. Ensemble and Probability Functions. The outputs Xn (t) of a large number of identical noise generators (an ensemble of noise generators) are recorded at a definite time t. If the number of voltages falling in a voltage interval ~x is counted, a probability density function of x (t) is approximated. This probability density function p (x, t) is defined by (1) . P (x, t ) = 11m (Number of voltages in range LlX)/ LlX . , Total number of nOIse generators = n n ~ 00, LlX ~ O. The probability that a particular measured voltage lies in an infinitesimal interval dx is given by p (x, t) dx and the probability that the measured voltage lies in a range Xa to Xb is given by (2) Pr(x a< x < Xb) rXb = Jxa p(X, t) dx. NOISE AND STATISTICAL TECHNIQUES 26-03 The probability distribution function P(x, t) is defined as the probability that the measured voltage is less than some specified voltage x.· It is given by P(x, t) = iX~ p(x, t) dx. (3) The average or mean value of the ensemble of voltages xn(t) may be found from j_ ~ x(t) = (4) '+~ xp(x, t) dx, and will in general depend on the time t. x(t) can also be determined by averaging at time t the noise outputs Xl (t), X2 (t), .. " xn(t) of the ensemble of noise generators; hence, x(t) is termed the ensemble average. Stationary and Ergodic Processes. If the above-mentioned noise generators do not change their characteristics with time, each will generate a stationary output; i.e., the noise outputs will have statistics which do not change with time. In dealing with stationary random processes it is usually assumed that time averages are equivalent to ensemble averages. This is the so-called ergodic hypothesis of statistical mechanics. Since the nature of the underlying mechanism does not change with time, it is expected that a large number of observations made on a single noise generator at randomly chosen times will have the same statistical properties as the same number of observations made on randomly chosen noise generators at the same time. The noise output from a noise generator is said to belong to an ergodic process if its time average (5) -x(t) I = lim -T 2 IT -T x(t) dt, T -'; 00 is equal to the ensemble average x(t). In this case the output record for a long period of time from a single noise generator is sufficient to determine p(x), which now will be independent of time. The ensemble and time averages of any function of X (t) are given, respectively, by (6) f[x(t)] = i:f[x(t)] p(x, t) dx, and (7) f[x(t)] = lim IT 2 IT -T f[x(t)] dt, T-,;oo, wheref[x(t)] is any function of x(t) such as x, X2, (x - 5;)2, etc. Variance and Standard Deviation. Time and ensemble averages are very. useful in describing a random process. Besides physical interpreta- 26-04 DESIGN AND APPLICATION OF ANALOG COMPUTERS tions, such as the d-c value of the output of the noise generator given by xU) and the power output given by (x - X)2, the averages are measures of the shape of the probability density function. (x - X)2 is termed the variance and is a measure of the spread of the probability density function. The positive square root of the variance is termed the standard deviation (J. 1 q~ o--------~------~----~--------~ x o (a) 1.0 -------------~~- o=====--+------~------------~ x o (b) FIG. 1. (a) Probability density function for Gaussian distribution. distribution function for Gaussian case. (b) Probability Gaussian Distribution. A probability density function which occurs very frequently in physical problems is the normal or Gaussian function defined by (8) p(x) ~ 0"~2'" exp [ - (x ;:253 )2J ' and is illustrated in Fig. la. The associated probability distribution function for the Gaussian case (9) 1[ P(x) = 2 1 + erf x)J ' (x _/ (v 2(J) NOISE AND STATISTICAL TECHNIQUES 26-05 where the error function (erf) is defined as erf z = :; lZ exp [_"A2] d"A and is illustrated in Fig. lb. Autocorrelation and Spectral Density. The average value of the product of a function of time with the function displaced T seconds is termed the autocorrelation function. This function is important because it is the link between the direct or time description and the frequency component description of a random variable. For an ergodic process the autocorrelation function is given by (10) ¢(T) = x(t)x(t + r) = lim IT fT x(t)x(t 2 -T + r) dt, T~ 00. The majority of statistical problems studied on an analog computer concern themselves with the effect of a random variable on a frequency filter. The description of the spectral structure of a random function is a very useful and important concept; this description is the spectral density (w). (See Vol. I, Chaps. 17 and 24.) In this treatment W(f) will be used as the spectral density, since most measurements are made in cycles per second rather than in radial frequency. To convert W (j) to (w) replace f by w/2-rr. For a stationary random voltage x(t) impressed across a I-ohm resistor, W (j) df is ,the average power dissipated in the resistance in the frequency interval (j, f + df)' In this case, W (f) has the dimensions of (volt) 2/ cps. The principal usefulness of the spectral density lies in the fact that if Y (2-rrjf) is the transfer function of a linear time-invariant system and Wi (f) is the spectral density of the input, then the output spectral density Wo (f) is (11) The correlation function and power spectral density are Fourier transforms of each other: +OO (12) ¢(T) = _ W(f)e i27rJr df f 00 (13) White Noise. The concept of white noise is a useful mathematical tool and arises in connection with such physical phenomena as shot noise and thermal noise. White noise has a Gaussian probability distribution and a spectral density N that spreads uniformly over all frequencies. 26-06 DESIGN AND APPLICATION OF ANALOG COMPUTERS Noise is considered white with respect to any given system if the bandwidth of the system is small compared with the noise spectrum. 3. TREATMENT OF LINEAR SYSTEMS Note. Portions of the material used in Sects. 3 and 4 were taken from an article by R. R. Bennett (Ref. 4). Definitions. A system is said to be linear provided that the principle of superposition can be applied; i.e., for every pair of inputs [Xl (t), X2 (t)] and corresponding outputs [Yl (t), Y2 (t)], the input axdt) + bX2 (t) produces an output aYl (t) + bY2 (t), where a and b are arbitrary constants or time-varying coefficients. Time-varying systems are thereby included. Any linear system may be completely described by a unitimpulse-response or weighting function h (t2, t l ) which is defined as follows: h (t 2, t l ) is the system output measured at time t2 in response to a unit impulse S(t - td applied at time t l , where t2 > t l . The fundamental characteristic of constant coefficient linear systems is that their weighting functions depend solely upon the difference between the instant of observation t2 and the time h of application of the unit impulse. If the input to the linear system is X (t) the output Y (t) at a particular time t2 is by superposition (14) If the input to the linear system is white noise of spectral density N, where N is measured over real frequencies only, the mean square ensemble output at time t2 is given by (15) The mean square output is usually the most significant value of interest. For stationary noise of spectral density W (f) 1 the mean square ensemble output is given by (16) where H (t 2 , s) is the Laplace transform of the weighting function. Equations (14) and (15) show that the weighting function h (t 21 td is needed if the output to a system for an arbitrary input is desired. The role of the analog computer is that of determining the weighting function, since this may. be difficult by analytical methods. NOISE AND STATISTICAL TECHNIQUES 26-07 If a unit impulse is introduced at time tl1 a simulated system gives h (t 2 , t 1 ) as a function of t 2 • Since the variable of integration in eqs. (14) and (15) is tl1 to evaluate y(t)2' for a particular value of t2 it would appear necessary to take a number of unit impulse responses for various values of t 1 , cross-plot the results, and integrate eqs. (14) and (15) numerically. Laning and Battin (Refs. 5, 6) have shown that by replacing the system under study by another that is closely related to it, (1) (2) a$:a+b+C b c 1: a+b+c X~X{(tJ d+e~d d+e . 1: d+e e y{(tJ--EJ---y O(S)Y~Y. (3) (a) (b) FIG. 2. Construction of adjoint system used to obtain weighting function: (a) building blocks of original system; (b) adjoint system. The three types of operations are (1) addition, (2) multiplication by a function J(t) " and (3) application of a linear constant coefficient operator, 0 (8). called the adjoint system, the desired weighting function may be computed directly in terms of the variable 7' = t2 - t 1. The adjoint technique can often effect a considerable saving in computing time. Adjoint Method. Any linear system may be instrumented by a combination of three types of operations. In terms of analog computer block diagrams these three operations are shown in Fig. 2a. They are sum:' mation, multiplication, and linear constant coefficient operations. By using the same topological system block diagram, but with the direction of flow through each block reversed as shown in Fig. 2b, the adjoint system is evolved. Note that new variables appear in the adjoint. The input to the original system becomes the output of the adjoint system, and vice versa. The adjoint system has the property that its response to a unit impulse, applied at time t 2 , is the desired weighting function. The difficulty of having time run backwards is circumvented by making the mathematical change of variable 7' = t2 - t17 where 7' is now the independent variable for the computer. Since the change of variable has shifted the origin of time as well as reversed the direction of time, the unit impulse input is applied at time tl = t2 or 7' = 0, which 26-08 DESIGN AND APPLICATION OF ANALOG COMPUTERS corresponds to the instant of starting the simulator test. All time-varying parameters in the system will be generated as if the independent variable were decreasing from t2 to - 00 rather than increasing from - 00 to t 2. The adjoint technique is also valid for nonstationary inputs to the linear system, provided that a suitable time-varying shaping filter can be found. If physical hardware is employed in the simulation the use of the adjoint technique is generally not convenient. The presence of timevarying elements within the hardware may preclude reversal of the system to form the adjoint. (b) (a) FIG. 3. (a) Schematic diagram for solution of eq. (17). (b) Schematic diagram for solution of adjoint of eq. (18). (a) d 2y dt 2 + t -dydt + y =x d 2v (b) -2 dtl + -dtd [(t2 - T )v] +v = U. EXAMPLE. Consider the system described by the following second order differential equation: d 2y (17) dt 2 dy + t dt + y = x. This system may be simulated by using only integrators, summers, and time-varying scale factor potentiometers, as shown in Fig. 3a. The adjoint system is obtained from this simulation by interchanging all inputs and outputs of each of the computing elements and replacing the variable t by t2 - T. The schematic diagram for the adjoint system is shown in Fig. 3b. The differential equation instrumented with the schematic of Fig. 3b is found to be (18) NOISE AND STATISTICAL TECHNIQUES 26-09 Equation (18) is the adjoint of the equation of the original system with t replaced by t2 - T. The collection of responses of the original system at time t2 as a result of unit impulses applied at all times prior to time t2 may be generated by a single computer run by recording the response of the adjoint system when this system is excited by a unit impulse 0 (T) at time T = o. The unit impulse input is accomplished by placing an initial condition on an integrator. orr) Unit impulse FIG. 4. Block diagram for obtaining mean square ensemble output with adjoint system. If the input to the system is white noise of spectral density N, the relation between the mean square ensemble output of the original system and the weighting function of the modified system, h*, is obtained from eq. (15): (19) The mean square ensemble output may be obtained by a single computer run as indicated in Fig. 4. The quantity y2 (t) is the steady-state value of the integrator output. 4. TREATMENT OF NONLINEAR SYSTEMS For nonlinear systems, when attempting to find the response to statistical inputs, in general it is necessary to generate the appropriate inputs and apply these to the analog computer. The measurements taken from the analog computer will then exhibit a statistical character. Section 5 describes random function generators for analog computers. If a complete time history of the variables of interest is desired, the usual recording methods common to analog computer operation are applicable. If, however, the values otthe variables at a specific instant are desired, it is expeditious to record only those values. It is economical to provide some automatic means for repeating solutions on the computer (Ref. 7); the only difference between successive solutions is that a different sample of noise or random input is applied each time. Mathematically, the form of the equations is the same each time; the forcing 26-10 DESIGN AND APPLICATION OF ANALOG COMPUTERS TABLE 1. STATISTICAL PROBLEMS AMENABLE TO ANALOG· COMPUTER STUDY Problem Field 1. Radar 2. 3. Missile and aircraft systems Servo system 4. Aerodynamics 5. Operations research Economics Inventory Traffic Cargo handling 6. Data reduction 7. Fil ter analysis and synthesis 8. Noise analysis, generation, and measurement Random Variable Angular scintillation due to multiple reflections from targets (target glint) Amplitude scintillation due to atmospheric disturbances (fading) Receiver noise Quantizing errors in analogto-digital signal converSlOn Launching errors Target maneuver Thrust vector variations vVind disturbances Instrument errors Human response time Probability of hit Input Gear noise Potentiometer noise System gain Atmospheric conditions Winds Turbulence Air density Temperature Runway roughness (land and sea) Arrival time Service time Mean time in queue Manufacturing irregularities Human response time Economic fluc,tuations Data Input Noise References 8 to 12 8 to 12 11, 13, 14 8, 9, 12 8, 9, 12, 15 16, 17 16, 18, 19 9, 58 2, 4, 5, 6, 20 to 25 26 26 27 16, 17 28 29, 31 29 29 30 32, 33, 34 11, 14, 35, 36 7, 10, 14, 21, 22, 23, 25, 37 to 55, 59 functions, initial conditions, and certain parameters vary randomly from solution to solution. The statistical measure now consists of an ensemble measure over the possible solutions of the same transient problem. It is important that the significance which can be attached to a set of such measurements be fully understood (Ref. 4). NOISE AND STATISTICAL TECHNIQUES 26-11 Random Variables. The random inputs to the analog computer correspond to the various quantities of the problem of interest which are statistical in nature. These statistical quantities may be of various types. Table 1 indicates a number of problems that can be studied on an analog computer and the random variables that are usually associated with that particular problem. A selected list of references is given. The indicated references show specific applications of analog computers to statistical problems. EXAMPLE. Consider the simulation of stationary, normally distributed radar scintillation noise jJ.. with a zero mean and a spectral density given by (20) W(f) = (1/10)2 +1 3000 2 (1/2)2 1 ft /cps. + The standard deviation or root-mean-square value of the radar noise is obtained from (21) '" = 1- ~ W(f) dJ = ~"'w~~oJo = 97.08 ft. Gaussian noise generator Simulated system W{f) • = "w,:+0 ft2jcps (ftfo) 1 k = 0.2 vo!t/ft FIG. 5. Schematic of Radar noise simulation. Assume that the analog computer Gaussian noise generator has an output spectral density N, which is uniform from zero to 50 cps with a value of 5.0 volts 2/ cps. The noise voltage has a zero mean and·· an rms voltage in the order of' 18.0 volts. Since the noise generator has a constant spectral density over a frequency range much greater than the cutoff frequency fo of the noise to be simulated, it can be considered as a source of white noise. By using the relationship of eq. (10) with Wi = N = 5.0 volts2/cps and a computer scale factor k = 0.2 volt/foot, the radar noise may be simulated as indi~ated in Fig. 5. 26-12 DESIGN AND APPLICATION OF ANALOG COMPUTERS 5. NOISE GENERATORS Desirable Characteristics. An analog computer noise generator should possess the following characteristics: 1. A stationary output voltage with the desired probability distribution. 2. An output voltage of adequate root-mean-square value in order to reduce further amplification requirements. 3. A stable power spectral density that is uniform from zero frequency to a frequency that is sufficiently large when compared to the noise spectrum to be simulated. 4. A stable zero mean. A mean other than zero is obtained by adding the required d-c voltage. 5. An averaging type output monitoring circuit with a large time constant. Noise Sources. The two most commonly used primary noise sources for analog computer noise generators are (a) a radioactive emitter with an associated Geiger-Mueller tube and (b) a grid-controlled gas-discharge tube. Random numbers (Refs. 52, 53), current-carrying resistors (Refs. 1, 50), temperature-saturated diodes (Ref. 1), and photoelectron multiplier tubes (Ref. 1) have also been used as primary noise sources. Radioactive Source. Gamma and beta radiations emitted by a radioactive source and triggering a self-quenching Geiger-Mueller tube will result in random voltage pulses with a Poisson probability distribution function given by (22) Pen) = (AT)n exp (-AT) . n! That is, in any fixed time of observation T, the number of voltage pulses n obtained in that interval would have the probability distribution P(n), where A is the average rate of occurrance of the pulses in a unit time interval. The GM tube is a gas-filled diode operated in the region of unstable corona discharge. The condition for triggering a discharge in the GM tube is that at least one low-energy electron be produced within the GM tube by the radioactive rays. A voltage pulse is emitted by the formation of an ion sheath which first forms at the anode and then moves to the cathode. The deionization time of the GM tube is the fundamental barrier limiting the highest noise frequency available from a tube (Ref. 56). The Anton 315 S, Victoreen 1 B 85 and Raytheon CK 1019 GM tubes have been used for noise generator applications. NOISE AND STATISTICAL TECHNIQUES 26-13 Gas-Discharge Tube. The noise in a grid-controlled gas-discharge tube arises from fluctuations in the dense layer of positive ions near the cathode. The noise has a normal probability density distribution and the frequency beyond which the noise energy begins to fall off varies inversely with the atomic weight of the gas. Resonance peaks associated with the natural oscillation frequencies of the ions may be suppressed by application of a transverse magnetic field from a permanent magnet enclosing the tube (Ref. 1). Most gas-discharge tubes exhibit an inherent instability with distinct jumps in noise level occurring at random times. Poisson distributed pulses Radioactive source ~ ~ Geiger-Mueller tube ~ Random telegraph signal Limiter xt Bistable multivibrator Low-pass filter +e Low-frequency noise with Gaussian probability distribution yet) FIG. 6. Block diagram of Geiger-Mueller type generator. These jumps have been attributed to (a) variations in heater and plate supply voltages, (b) variations in tube envelope temperatures, and (c) variations in cathode emission. Since these variations are at low frequencies, noise generators using gas tubes resort to a regulator circuit to compensate for them (Ref. 39). The 6D4 argon-filled triode and the 2D21 xenon-filled tetrode are extensively used as hot cathode arc noise sources. Geiger-Mueller Type Noise Generators. The basic principle of this method is the utilization of a radioactive material and a Geiger-Mueller tube to trigger a bistable multivibrator circuit (Refs. 41, 43, 45, 51). A block diagram of a GM type noise generator is shown in Fig. 6. The output of the multivibrator is clipped at equal positive and negative voltages. The result is a random telegraph signal which is defined as a signal that has two possible levels of + e and -e volts, the crossovers between these levels being Poisson distributed in time. 26-14 DESIGN AND APPLICATION OF ANALOG COMPUTERS The spectral density W (f) of the random telegraph signal can be shown to be (23) e2 W (f) = }: 1 (21TJ)2 ' 1+ 2A where e is the magnitude of the positive or negative excursion from zero of the random telegraph signal and A is the average rate of occurrence of the Poisson distributed pulses. If the random telegraph signal is passed through a suitable low-pass filter, the filter output will have an amplitude probability density distribution which is approximately Gaussian. The power spectral density of the output will be essentially uniform from zero frequency to the filter cutoff frequency, provided the input power spectrum W (f) of the random telegraph signal is uniform over this frequency interval. Gas Tube Noise Generator. Noise generators using a gas-discharge tube may be classified into two types: (a) sampling type noise generator, and (b) demodulator type noise generator. Both types employ a frequency shifting technique in order to obtain low-frequency noise from the wide band noise source. This technique produces a noise output of a magnitude which is comparable in magnitude to that of the input energy, rather than being a small fraction thereof. Owing to the limitations of the gas tube noise source at low frequencies, the frequency shifting technique also insures a uniform spectrum at ultra-low frequencies. Sampling Type Noise Generator. A block diagram showing the basic principle of the sampling type noise generator is shown in Fig. 7 (Refs. 14,47,55). The wide band output from the gas tube is first passed through an amplifier to equalize the noise tube characteristics. The output of this amplifier is passed through an automatic gain control (AGC) regulating circuit to compensate for the low-frequency spectrum variations from the gas tube. The noise voltage from the AGC circuit is fed to a sample and hold circuit. The requirements for the sample and hold circuit are that the sampling occur in a linear manner during a very short portion of the sampling period. The sampling may be performed by a rotating commutator or an electronic gate. The holding or storing part of the circuit is usually a condenser. The output from the sample and hold device will be a stepped voltage wave e (t). Each step being a fixed duration T and equal to the duration of every other step (see Fig. 7). The amplitude probability density distribution will be the same as the amplitude distribution of the noise source, namely Gaussian. If the bandwidth of the primary noise source NOISE AND STATISTICAL TECHNIQUES is large samples related. wave in 26-15 when compared to the sampling frequency liT, successive of the primary noise voltage may be considered to be uncorIn this case the spectral density W (f) of the stepped voltage Fig. 7 will be W (f) = (J2T [Sin 7rf TJ2 , 7rfT (24) where (12 is the mean square value of the sampled noise and T is the sampling period. The spectral density is essentially uniform from zero frequency to some higher frequency determined by the sampling rate. Gas tube noise source AGe regulating circuit Amplifier t Reference voltage Low-frequency noise with Gaussian probability e(t)~ ~ Sample and hold circuit i Gaussian noise with highfrequency components Low-pass filter distribut~n , Sampling rate oscillator FIG. 7. Block diagram of sampling type noise generator. Demodulator Type Noise Generator. A block diagram showing the basic principle of this type of low-frequency noise generator is shown in Fig. 8 (Refs. 21, 38, 39, 42, 48). A description of a widely used noise generator employing the principles used in Fig. 8 follows (Ref. 39): The primary source of noise is a type 5727 or 2D21 thyratron connected in a diode configuration. The noise supplied to the regulating circuit extends from about 30 cps to 3 kc. This bandwidth is sufficiently wide to permit adequate averaging of the noise level and yet allows for a reasonably short time constant for the regulating action. Figure 9 shows a block diagram of the AGe regulator circuit. The noise is passed through a variable gain pentode, amplified, and then half-wave rectified. The rectified noise is compared with a reference 26-16 DESIGN AND APPLICATION OF ANALOG COMPUTERS voltage and the difference is averaged by the integrator circuit. If the average noise amplitude is greater than the reference voltage the gain of the variable gain pentode is reduced, and if the noise is less, the gain Gas tube noise source ~ A-C-coupled amplifier ~ AGC regulating circuit ~ Bandpass filter centered around to Low-pass filter ~ t >-- Reference voltage ~ A-C-coupled ~ amplifier Demodulator ~ t Low-frequency noise with Gaussian probability . distribution Demodulating oscillator to FIG. 8. Block diagram of demodulator type noise generator. Input Variable gain pentode A-C-coupled amplifier O-C-coupled integrating amplifier Rectifier Output Reference voltage FIG. 9. Block diagram of regulator circuit. is raised. Thus, the output of the regulator is noise whose average amplitude is constant and whose spectrum extends from 30 cps to 3 kc. A portion of this spectrum is selected by a bandpass filter whose transfer gain is given in Fig. lOa. The output of the filter is centered at 400 cps and has a bandwidth of approximately 100 cps. NOISE AND STATISTICAL TECHNIQUES 26-17 After amplification the noise is demodulated by the use of a 400-cps electromechanical chopper. The chopper alternately multiplies the noise voltage by plus one and minus one. This multiplication results in frequency components consisting of sums and differences of the noise frequencies and the chopper frequency and its harmonics. Thus, there results a low-frequency noise and noise centered at 800 cps, 1200 cps, 1600 cps, 2.0 r - - - - - r - - - - - - r - - - - - - r - - - - - , ~ 'Vi 2.5 § 1.51-----t-?...,..-----t-------........,.-t----; ~ 2.0 e 1.01--~~-~~=--~~---; ~ 1.5 u Q) c. Q) ~ Q) .~ }§ 0.51---T----t-----t------t--"~ 1.0 /v L L ~ ~ \ Q) ~ Q) ro 0:: 0.5 ~ (j) 350 400 450 500 00 0:: 10 20 30 40 50 60 70 80 Frequency, cps Frequency, cps (a) (b) il"d I 10 20 30 40 50 60 70 80 h:::1 ~ ~ 0:: I f~ I 0.51---+--+--T----i---I (j) O~-~--~-~--~ o 10 20 30 40 50 60 70 80 Frequency, cps Frequency, cps (e) (d) FIG. to. Development of uniform spectrum: (a) gain of 400-cps filter; (b) lowfrequency portion of noise spectrum before modification by RC filter; (c) gain of RC filter which follows chopper; (d) net output spectrum. etc. The low-pass filter which follows the chopper effectively eliminates the high-frequency components. If there were no low-pass filter, the spectrum of the low-frequency portion of the output would be as shown in Fig. lOb. The low-pass RC filter, whose gain is shown in Fig. 10c, modifies the spectrum of Fig. lOb to give the output spectrum shown in Fig. 10d. The filtering and demodulating process described above results in a noise generator with the following characteristics: (a) An output spectrum that is within 0.1 db of uniform from zero to 35 cps. (b) The spectral density has a value of approximately 4.0 volts 2 / cps. 26-18 DESIGN AND APPLICATION OF ANALOG COMPUTERS (c) The output voltage has a probability density distribution which does not deviate from the Gaussian distribution by more than 1 per cent. (d) The average output is less than 50 millivolts, with 95 per cent certainty. Figure 11 shows a typical recorded sample of the nOIse generator output. Noise with Other Cbaracte~istics. Beginning with a noise generator whose output spectrum is uniform over a sufficient range, it is a simple matter to alter the spectrum shape in a known manner by passing the noise through a filter composed of passive elements or feedback amplifiers. One may generate special types of nonstationary noise by utilizing time-varying filters. Noise having certain distributions other than Gaussian may be generated from Gaussian noise by combinations of linear and nonlinear filtering. For example, narrow band filtering and subsequent envelope detection of Gaussian noise results in an output having a Rayleigh distribution; phase-detecting narrow band Gaussian noise with reference to a fixed-phase carrier frequency and subsequent filtering will result in an output with a uniform probability density distribution (Ref. 40). Measuring Noise Generator Characteristics. The most demanding aspect of low-frequency noise measurement is the length of time necessary to establish accurate estimates of the statistical properties of the noise. Bennett and Fulton (Ref. 38) have derived the measurement time required in order to determine the characteristics of low-frequency noise generators. Determination of Probability Distribution. The easiest probability distribution to determine experimentally is the probability distribution function P (x) of eq. (3). All that is necessary is to measure the time the voltage from the noise generator is below a level Xl and to compare it to the total obser'vation time. In other words, (25) P(xI) Tl =-, TT where Tl and TT are the times below the level Xli and the total observation time, respectively. By varying the comparison voltage Xl, the cumulative distribution can be obtained for all x. Special cumulative distribution analyzers have been built (Ref. 41) and commercial instruments for this purpose are readily available (Ref. 57). Determination of Mean Value. The mean value of a noise voltage may be found by integrating the voltage for a sufficiently long time. For a NOISE AND STATISTICAL TECHNIQUES 7""'-0. l -I-\. ~ P ~ !-[..5 !-- f - F- r0o- t !-- f.-~ I-- ~p E> d. __ f.-- !-l -Il - I-- t:2 I"-- 1-1- t- t-- t- K ~ I- t-- t-- r-- ~ !-- f.-- Il- b c::~ t-- t- t-- t- t-- tt-- t- t-- - tt- t-- t- -t- l -I-- -c::::: t-- I-- !-- I-l - I-- ~ D t- Ul t-- t- 00 o o t-- I-- o r-- t- I--I-- I...:::: V I-- +-e. I~~ v I-vI- l.) I--I-- rs-' v vI- ~ I--I-vI- I-- ~ - u Q) -V-l! a t- I-- . . . . 1-1 q ttr-- I-17 'c::: 1--1:> - t - c: ....... c~ - ~ tt~ r-- tI--I-- F:::; r--- t-I-- I-- II"" '"-c: t--- tI--I-t;;: *=t--- tl -I-- ~b I ' lt:::t:> t--- tr--. tI.-~ ~ ~ t--I-"C~ tltl.- I-- C ~~ v ~ - l.- I-- I- v I-- '- ~~ 1-===12 1<::.... I-.~ l -I-- . . t> J..- I-v I-l - I-- K-~ 2 t- (5 > t--- t- o (Y) p !-:::::l/ i - t- j.-- l -I-- -- r--- t~ t--- t-' t--- t- D ,'" t--- t- t- 1-1- (~ t--- t- l.- I-- .ct. r--. t- "'r-~ r--- t- I--10- 1--1- ..;~ r--- t- ...;;::l ~ "5o 26-19 26-20 DESIGN AND APPLICATION OF ANALOG COMPUTERS normally distributed noise voltage with a uniform spectral density of N volts 2 / cps and a theoretical mean value of x volts, the measured mean voltage e will be within 95 per cent of the theoretical mean as dictated by (26) e= x± V2N/T volts, where T is the integration ti~e in seconds. The only way to improve the accuracy of the measurement of the mean is to integrate over a longer period of time. Determination of Mean Square Value. The mean square value x 2 of a low-frequency noise voltage may be obtained on an analog computer by squaring the noise voltage and integrating the square over a period of time T. The length of time T required to determine, with 95 per cent certainty, the mean square value to within a percentage accuracy P, for normally distributed noise with zero mean having a spectral density given by eq. (20), is approximately (27) 4 X 10 4 T = 7rfOP2 seconds. Determination of Spectral Density. There is a variety of methods used for determining the spectral density of a noise voltage (Refs. 33, 34, 41). In the case of an analog computer noise generator whose spectrum is known to be essentially uniform in the regions of interest, the noise is usually passed through a selective filter composed of analog computer amplifiers, and the transmitted power is then measured. Repeating this process at a number of different frequencies will give a measure of the spectrum shape. The time of observation required for selective filters of this type is inversely proportional to the bandwidth of the filter. In order to obtain finer resolution of the spectral density, longer measurement times are required. REFERENCES 1. W. R. Bennett, Equipment for generating noise, Electronics, 29 (4), 134-135 (1956). 2. M. V. Mathews, A method for evaluating non-linear servos, Trans. Am. Inst. Elec. Engrs., 74, Pt. 2,188 (May 1955). 3. W. R. Bennett, Methods of solving noise problems, Proc. I.R.E., 44, 609-638 (1956). 4. W. R. Bennett, Analogue computing applied to noise studies, Proc. I.R.E., 41, 1509-1513 (1953). 5. J. H. Laning, Jr., and R. H. Battin, On an application of the use of analogue computers to methods of statistical analysis, Project Cyclone Symposium II, Reeves Instrument Corp., New York, 1952. NOISE AND STATISTICAL TECHNIQUES 26-21 6. J. H. Laning, Jr., and R. H. Battin, Random Processes in Automatic Control, McGraw-Hill, New York, 1956. 7. R. R. Bennett and A. S. Fulton, Automatic REAC operation for statistical studies, Project Cyclone Symposium II on Simulation and Computing Techniques, Pt. 2, p. 129. Reeves Instrument Corp., New York, 1956. 8. R. R. Bennett, R. R. Favreau, and 1. Pfeffer, The adjoint computing method applied to guided missile system design, Project Typhoon Symposium III on Simulation and Computing Techniques, Univ. of Pennsylvania, Philadelphia, Pa., October 1953, Confidential. 9. R. R. Bennett and W. E. Mathews, Analytical determination of miss distance for linear homing navigation systems, Secret Technical M emorandum No. 260, Hughes Aircraft Company, Los Angeles, Calif., March 31, 1952. 10. Columbia University, Beam splitting and search radar simulation, Confidential Rept. F/A-VIII, ERL Columbia University, New York, November 30, 1954. 11. R. H. Delano 'and I. Pfeffer, The effect of AGC on radar tracking noise, Proc. I.R.E., 44, 801-810 (1956). 12. W. W. Seifert, A Study of Noise in Missile Control Systems, Confidential Sc. D. Thesis, Department of Electrical Engineering, Massachusetts Institute of Technology, Cambridge, Mass., 1951. 13. J. A. Aseltine, The Use of Electronic Analog Computers in the Solution of Certain Radar Noise Problems, Presented at the I.R.E. West Coast Convention, San Francisco, Calif., August 1955. 14. D. F. Winter et al., Radar tracking data and filter studies, Confidential NAVORD Rept. 1414, Washington University School of Engineering, Division of SponsClred Research, St. Louis, June 30, 1052. 15. H. Ehlers and E. Vogel, Simulation of noise in missile homing problems, Project Cyclone Symposium I on REAC Techn 1:ques, Reeves Instrument Corp., New York, March 1951. 16. Goodyear Aircraft Corporation, Application of Geda to human dynamics studies, Rept. GER-6608, Goodyear Aircraft Corp., Akron, 0., March 4, 1955. 17. N. W. Trembath, Wind gust simulation, Internal Memo GM 45.3-268, RamoWooldridge Corp., Los Angeles, Calif., May 9, 1957. 18. J. R. Clark, A. B. Fontaine, and C. E. Warren, The generation of a continuous random signal for use in human tracking studies, Research Bull. 53-40, Human Resources Research Center, Air Research and Development Command, Lacklin Air Force Base, Tex., October 1953. 19. C. E. Warren, P. M. Pitts, and J. R. Clark, An electronic apparatus for the study of the human operator in a one-dimensional, closed-loop continuous pursuit task, Trans. Am. Inst. Elec. Engrs., 71, 19-23 (1952). 20. J. A. Aseltine and R. R. Favreau, Weighting functions for time varying feedback systems, Proc. I.R.E., 42, 1559-1564 (1954). 21. R. C. Booton, Jr., Nonlinear control systems with statistical inputs, Rept. No. 61, Dynamic Analysis and Control Laboratory, Massachusetts Institute of Technology, Cambridge, Mass., March 1, 1952. 22. R. C. Booton, Jr., M. V. Mathews, and W. W. Seifert, Nonlinear servomechanisms with random inputs, Rept. No. 70, Dynamic Analysis and Control Laboratory, Massachusetts Institute of Technology, Cambridge, Mass., August 1953. 23. T. B. Garber, RMS Errors in Systems with Constant and Time Varying Coefficients, M.S. Thesis, Department of Aeronautical Engineering, Massachusetts Institute of Technology, Cambridge, Mass., 1952. 26-22 DESIGN AND APPLICATION OF ANALOG COMPUTERS 24. Goodyear Aircraft Corporation, Geda simulation study ofa relay servomechanism, Rept. GER-4799, Goodyear Aircraft Corp., Akron, 0., May 9, 1952. 25. E. C. Hall, Analog simulation for noise analysis in control systems, Rept. R-74, Instrumentation Laboratory, Massachusetts Institute of Technology, Cambridge, Mass., May 1954. 26. Goodyear Aircraft Corporation, Geda simulation study of a carrier-type instrument servomechanism, Rept. GER-5779, Goodyear . Aircraft Corporation, Akron, 0., April 21, 1954. 27. A. Rosenbloom, Analysis of Randomly Time-Varying Linear Systems, Ph.D. Dissertation, University of California at Los Angeles, Calif., July 1954. 28. H. Press and J. W. Tukey, Power spectral methods of analysis and their application to problems in airplane dynamics, AGARD Flight Test Manual, Pt; IVC, pp. 1-41, June 1956, Bell Telephone System, Monograph 2606, New York. 29. Goodyear Aircraft Corporation, Two applications of Geda computers to statistical problems of operations research, Rept. GER-0729, Goodyear Aircraft Corp., Akron, 0., June 4, 1955. 30. O. J. M. Smith, Economic analogs, Proc. I.R.E., 41, 1514-1519 (1953). 31. D. L. Trautman et al., Analysis and simulation of vehicular traffic flow, Research Rept. No. 20, Institute of Transportation and Traffic Engineering, University of California, Los Angeles, Calif.', December 1954. 32. R. A. Johnson and D. Middleton, Measurement of Correlation Functions of Modulated Carriers and Noise Following aNon-Linear Device, Paper presented at Symposium on Applications of Communication Theory, Institute of Electrical Engineers, London, September 1952. 33. F. B. Smith, Analog equipment for processing randomly fluctuating data, Aeronaut. Eng. Rev., 14, 113-119 (1955). 34. H. W. Smith et al., A power spectrum computer, Rept. No. 80, Electrical Engineering Research Laboratories, University of California, Berkeley, Calif., November 15, 1956. 35. R. R. Favreau, H. Low, and 1. Pfeffer, Evaluation of complex statistical functions by an analog computer, I.R.E. Convention Record, 4, Pt. 4, 31, March 1956. 36. A. Rosenbloom, Analysis of an optimum filter with derivative constraints, Memo GM 41-5, Ramo-Wooldridge Corp., Los Angeles, Calif., May 8, 1956. 37. G. W. Anderson and J. E. Murrin, Autocorrelator for Radioactive Sample N vise Generator, Paper given at the 1.R.E. WESCON Conference, August, 1956, Los Angeles, Calif. 38. R. R. Bennett and A. S. Fulton, The generation and measurement of lowfrequency random noise, J. Appl. Phys., 22, 1187-1191 (1951). 39. R. .R. Bennett, D. E. Beecher, and H. Low, Electronically stabilized noise generation, Electronics, 27, 163-165 (July 1954). 40. R. Bernstein, H. Bickel, and E. Brookner, A generator of uniformly distributed random noise, I.R.E. Convention Record, Pt. 10, 97, 1954. 41. H. Dern et al., Noise studies, Tech. Rept. T-1 /122, Electronic Research Laboratories, Columbia University, New York, December 31, 1955. 42. R. R. Favreau, Noise generators, Rept. PCC 19, Electronic Associates Princeton Computation Center, Princeton, N. J., 1955. 43. J. W. Follin, Jr., G. F. Emch, and F. H. Walters, Modifications and additions to the REAC, Project Cyclone Symposium II on Simulation and Computing Techniques, p. 173, Reeves Instrument Corp., New York, April-May 1952. NOISE AND STATISTICAL TECHNIQUES 26-23 44. H. H. Goode, W. A. Wheatley, and G. G. den Broeeler, The generation of a vector with an N-dimensional normal distribution by means of analog equipment, Project Cyclone Symposium I on BEAC Techniques, p. 75, Reeves Instrument Corp., New York, March 1951. 45. Goodyear Aircraft Corporation, Random noise generator for simulation studies, Rept. GER-64S6, Goodyear Aircraft Corp., Akron, 0., December 13, 1954. 46. C. E. Hendrix and R. B. Purcell, A low-frequency random noise generator, 1'. 1~f. 1788, U. S. Naval Ordnance Test Station, Inyokern, China Lake, Calif., February 1954. 47. M. A. Karpeles, Noise Compressor, U. S. Patent 2,649,386, May 19, 1953. 48. M. V. Mathews, Noise generator evaluation study, Rept. DIC 6387, M-4.40-2, Dynamic Analysis and Control Laboratory, Massachusetts Institute of Technology, Cambridge, Mass., December 19, 1951. 49. M. V. Mathews, White noise tape specifications, Rept. DIC 6978, M-l,.l,1-1, Dynamic Analysis and Control Laboratory, Massachusetts Institute of Technology, Cambridge, Mass., April 1, 1953. 50. H. Meister, A thermal noise generator for low-frequency test, Tech. Mitt. Schweiz. Telegr.-Teleph. Verw., 28, 320-324 (1950). 51. K. A. Otto, Generation oj Low-Frequency Random Noise, Master's Thesis, U.S.A.F. Institute of Technology, Wright-Patterson Air Force Base, 0., March 1955. 52. S. Sherman and E. Lakatos, Noise generation for analog simulation, Project Typhoon, Symposium IlIon Simulation and Computer Techhiques, Pt. I, p. 155, University of Pennsylvania, Philadelphia, Pa., October 1953. 53. L. B. Wadel, C. C. Calvin, and J. W. Atkins, Jr., Repeatable generation of noise with a masked cathode-ray tube, Proc. N atl. Simulation Conj., p. 34.1, Dallas, Tex., January 1956. 54. C. A. A. Wass, Introduction to Electronic Analogue Computers, p. 177, McGraw-Hill, New York, 1956. 55. D. F. Winter, A Gaussian noise generator for frequencies down to 0.001 cycles per second, I.RB. Convention Record, Pt. 4, p. 23, 1954. 56. H. Friedman, Geiger counter tubes, Proc. I.R.E., 37, 791 (1949). 57. Berkeley Division of Beckman Instruments, Instruction Manual jor Universal Counter and Timer, Model 7S60-15, Richmond, Calif., March 6, 1957. 58. T. B. Van Horne, An analog method for the solution of probability of hit and related statistical problems, I.R.E. Trans. Electronic Computers, 6, 170 (September 1957). 59. M. R. Bates, D. H. Bock, and F. D. Powell, Analog computer applications in predictor design, I.R.E. Trans. Electronic Computers, 6, 143 (September 1957). E DESIGN AND APPLICATION OF ANALOG COMPUTERS Chapter 27 Mechanical Computer Elements Walter J. Karp/us 27-01 27-02 I. Introduction 2. Basic Operations 3. Function Generation 27-05 4. Solution of Equations 5. Sca Ie Factors 27-09 27-14 References 27-15 I. INTRODUCTION Historically, mechanical computing elements represent the oldest form of automatic computation. In this method the dependent arid independent variables of the problem are represented by either linear or angular displacements. Elements employing linear displacements or combinations of angular and linear displacements in the computing process include such well-known devices as linkage mechanisms, contour cams and gears, and levers. Computing elements of this type, described in some detail by Svoboda (Ref. 1) and Soroka (Ref. 2), are used almost exclusively in special purpose applications, while virtually all general purpose computation by mechanical means is carried out with angular displacement mechanisms. This discussion will, therefore, be limited to the later type of elements. N ate. Most of the examples used in this treatment were contributed by Professor W. C. Hurty of the University of California in Los Angeles. A brief table of symbols is given in Chap. 21, Sect. 6. 27-01 27-02 DESIGN AND APPLICATION OF ANALOG COMPUTERS Comparison of Mechanical and Electronic Elements. Mechanical computing elements are precision-machined devices employing shafts, gears, and disks. The accuracy of such elements is limited by the following: Machining errors, resulting from machine shop tolerances. Slippage errors, where frictional contact forces are employed to transmit displacements. Theoretical errors, resulting from approximations made in mechanizing the mathematical operation. Since all these errors may be minimized by careful design and fabrication, accuracies of the order of 0.01-0.1 % are readily obtained in mechanical computers. Compared with electronic computing elements (see Chapters 22 and 23), mechanical general purpose computing elements have the following advantages and disadvantages: Advantages Greater accuracy More rugged Simplicity of design More dependable Need not work.in real time Solution may be interrupted and continued as desired Not greatly influenced by power line fluctuations Disadvantages Require more space Greater weight Generally more expensive More difficult to "program" Less flexible in application Require more time for solution 2. BASIC OPERATIONS Multiplication by a Constant This is accomplished simply by stepping up or stepping down as the case may be, the angular rotation of the shaft by means of a pair of gears or a gear train. Since the direction of rotation is identified with the algebraic sign of the variable, coupling two shafts with identical gears would represent a mUltiplication by minus one, or a simple change in sign. Addition and Subtraction A differential gearing arrangement is used to obtain an angular displacement which is the sum of two separate angular displacements. Familiar differential arrangements include the bevel gear differential and the spur gear differential. In such devices the rotation of the output shaft is equal to one-half the algebraic sum of the rotation of the two MECHANICAL COMPUTER ELEMENTS 27-03 input shafts. Subtraction is accomplished by merely employing a oneto-one gear coupling to change the sign of one of the variables prior to applying it to the adder. Integration A mechanical integrator relates three quantities, u, v, and w, in the following way .w = Jud~·, where all three functions are generally continuous and have continuous derivatives. Discontinuities in u and v are permissible provided that they are finite in number and do not occur at the same instant in the computing process. ~~ =Ku 1-. v FIG. 1. Kelvin disk integrator. Kelvin Disk Integrator. The Kelvin disk integrator, shown in Fig. 1, is the most commonly used general purpose integrator. The angular displacement of the turntable is proportional to v, that of the integrator wheel to w, and that of the lead screw to u. Accordingly, the distance from the center of the turntable to the plane of the integrator wheel is proportional to u. If it is assumed that there is no slippage of the integrator wheel on the surface of the turntable, a small displacement of the turntable, AV, will produce a small rotation of the wheel AW, according to .6w = Ku .6v, where K is a constant. This may be generalized as W = f III V2 udv. 27-04 DESIGN AND APPLICATION OF ANALOG COMPUTERS Initial Values. It is seen that in so far as initial values are concerned, the initial setting of u is the only one which has significance in determining the subsequent output of the integrator. The lead screw of the integrator must, therefore, be set to correspond to the appropriate initial value before the commencement of each computation. Torque Amplifiers. The accuracy of an integrator is limited by the extent to which the integrator wheel is capable of following the rotation of the turntable. Since this drive is accomplished by frictional forces, care must be taken to assure that there is no slippage at the point of contact. The mechanical load or torque upon the integrator wheel must, therefore, be minimized. The first successful torque amplifiers for this purpose were developed in 1925 by Bush and consisted of a relay servomechanism activated by means of mercury drop contacts between two disks. Subsequent torque amplifiers having gains in excess of 10,000 are described by Soroka (Ref. 2) and include the following: 1. Two-stage capstan type, a two-stage amplifier consisting of two stepped drums driven in opposite directions by a powerful electric motor. 2. Polarized light servo, in which a beam of light is passed through a polaroid disk mounted on the integrator wheel as well as through a polaroid disk mounted on a follow-up disk, and a servomechanism is employed to keep the light falling on a photocell at a constant value. 3. Capacitance type, in which the integrating wheel essentially acts as the plate of a condenser and the variations in capacity resulting from the rotation of the wheel are sensed and amplified. Input and Output Tables Units, called input and output tables, are devices from which plotted functions may be applied as angular displacements to the system, or to which functions present in the system as angular displacements may be applied and translated into plotted curves. In either case, for Cartesian coordinates, they consist of a carriage carrying either a sighting target or a pen that is made to move in a horizontal as well as a vertical direction by means of two screws, which may be rotated by connecting them to appropriate shafts in the. computing system. If the argument of the function is fed into the input table and is made to control one of the coordinates, say the abscissa, then the operator can, by turning a crank, adjust the other screw, so that the sighting target will always follow the plotted curve. The crank rotation, then, will be proportional to the function and may be fed back into the system. If both screws are driven by machine variables and a pen is attached to the carriage, the graphical relationship between the two machine variables will be plotted automatically by the pen. Input and output tables may readily be adapted for use with polar coordinates by making one screw rotate 27-05 MECHANICAL COMPUTER ELEMENTS the table while the other screw is used to adjust the radial position of the carriage. p. . (a) (b) v z =Judv y (c) FIG. 2. u = fly) w z w (d) Schematic representation of basic operations: (a) gear train, multiplies by constant factor n, y = nx; (b) adder; (c) function table; (d) integrator. Schematic Representation of Basic Operations Diagrams of the basic operations of mUltiplication by a constant, addition, function unit (input and output tables), and integration are shown in Fig. 2. ~x -}~~ ..-oo FIG. 3. ax a: 1 0----.-----. y =e GX Generation of exponential, eax• Governing equation: dy/dx = ae ax• 3. FUNCTION GENERATION A wide variety of algebraic and transcendental functions may be generated mechanically by suitable combination and utilization of the basic operations of constant multiplication, addition, and integration. Sche- 27-06 DESIGN AND APPLICATION OF ANALOG COMPUTERS matic diagrams of mechanical circuits suitable for the generation of some of the more importa:c.t analytic functions, without the aid of input tables, are shown in Figs. 3 through 9, together with the basic equation from which these generators were constructed. The governing equations are given in Table 1. The trick in each case is to recognize or derive a x y = frI x -1:1 -Iogx x In FIG. 4. X t=-ftd(1 x) = f}dx Generation of logarithm and reciprocal. Governing equation: ddx22y + (ddxy )2_- O. functional relationship which permits the realization of the desired function with the basic elements available. TABLE 1. ANALYTIC FUNCTIONS THAT MAY BE GENERATED BY MECHANICAL CIRCUITS Function Exponential, Reciprocal, eax !x Logarithm, log x Square, x 2 Governing Equation dy - = aeax dx dy _ - log x dx x 2 d y = _ (d y )2 dx 2 dx, dy = 2x dx J J + Product, xy xy = Sine wx Cosine wx d 2y -+ w 2y = 0 dx 2 Tangent x y2 dy = 1 dx dy =y d(n log x) Power, xn y dx + x dy Solution Fig. 3 Fig. 4 Fig. 4 Fig. 5 Fig. 6 Fig. 7 Fig. 8 Fig. 9 MECHANICAL COMPUTER ELEMENTS y 27-07 = X2 X--~~------~-r--~ 2:1 x 2x X2 FIG. 5. =j2xdx Generation of square. Governing equation: dy/dx = 2x. ~---~xy X--r-~--------~~------------------------+---, y --r-~--------+-~--~----------------~ x y Jydx FIG. 6. y x JxdY Generation of product. Governing equation: xy = f y dx + f x dy. 27-08 DESIGN AND APPLICATION OF ANALOG COMPUTERS cos wx ~ sin wx -1:1 )i ... ow:l ~ wx -sin wx ~ cos wr FIG. 7. cos wx wx -'- = J -sin wx d(wx) sin wx =J cos wx d (wx) Generation of sine wx and cosine wx. Governing equation: (d 2y/dx 2) + w2 y :::= O. =tan x y 2:1 1 + tan 2 x x ,.:.:---J--I----L....... tan x FIG. 8. =J(1 + tan 2 x)dx tan x 2 tan x ..-_-+--+-_--1-...... tan 2 x' =/2 tan xd (tan x) Generation of tangent x. Governing equation: dy/dx = 1+y2. MECHANICAL COMPUTER ELEMENTS x 27-09 log x n:1 -1 :1 1 x x log x FIG. 9. =Ji 1 x -Iogx t =- f dx n logx ~ d (log x) x" =f x"d(n log x) Variable raised to power n. Governing equation: dyjd(n log x) EXAMPLE. Suppose it is desired to generate y dy/dx = sec 2 x = 1+ tan 2 = = y. tan x. Then x = 1 + y2. The generation of the desired function is then equivalent to the solution of the equation dy/dx = 1 + y2, so that after integration = J tan x = J tan 2 x = J y This in terms of x is If it is recognized that (1 (1 + y2) dx. + tan 2 x) dx. 2 tan xd(tan x), the appropriate diagram is readily constructed as shown in Fig. 8. 4. SOLUTION OF EQUATIONS Ordinary Second Order Differential Equation. equation (1) d 2y dy dt dt 2 -+2r-+k y=O. 2 Consider the 27-10 DESIGN AND APPLICATION OF ANALOG COMPUTERS Rearrange to express the highest order term in terms of lower order. d2 y dy dt 2 = - 2r dt - k 2 y. (2) Integrate dy = -2ry - k 2 Jy dt. dt (3) A second integration gives (4) Output y dy dt y !ydt FIG. 10. Schematic diagram for solution of d 2y dy 2 dt 2 2r dt k y = O. + + Two integrators are required, the first to give J y dt Ceq. 3) and the second to give J (dy/dt) dt (eq. 4). y, which is generated by the second integration, is fed back as an input to the first and also to the other term in eq. (3). The schematic arrangement for the mechanization of eqs. (3) and (4) is shown in Fig. 10. MECHANICAL COMPUTER ELEMENTS 27-11 The constant coefficients 2r and /\,2 are represented by gear trains with corresponding ratios. An adder is required to give the sum of the two terms on the right side of eq. (3). The initial values of y and dy/dt must be known to proceed with the solution. Note that both these quantities are instrumental as settings of the leadscrews of integrators. Nonlinear Differential Eq~ation. Consider the equation d2 y dx 2 (5) dy + y dx + f(y) = cos x. Rearrange to express the highest· order term in terms of lower order. d2 y dy -=cosx-y -fey). 2 dx dx (6) Integrate (7) ~~ = sin x - J y dy - J.f(y) dx. A second integration gives (8) It is also necessary to generate cos x. (9) sin x = Jcos x dx; cos x = J - sin x dx. Five integrators are required, two in eq. (7), one in eq. (8), two in eq. (9). Two adders eq. (7) and one input table, to supply the arbitrary fun ction f (y), are also necessary. The schematic arrangement is shown in Fig. 11. The initial values of x, y, and dy/ dx are needed to proceed with the solution. Note that one of the integrations is with respect to a dependent variable. When this occurs it usually means that the turntable (disk) of one integrator is being driven by the output of another, a condition referred to as "cascading." Simultaneous Differential Equations. Consider the two-loop network in Fig. 12, with voltage e any arbitrary function of time and with the nonlinear inductance L2 a function of the current i 2 • The pertinent differential equations are: (10) L1 (11) . 2 1,2 ~t1 + di2 L ( . ) at (R1 + R2)i1 1 + R' 21,2 + C - R2i2 = e(t), J' 1,2 d ' t -R 21,1 = 0. 27-12 DESIGN AND APPLICATION OF ANALOG COMPUTERS Input Output ~ F- ~ y x y fey) dy sin x -i dX - jydy - ff(y)dx -1:1 -1'1 '-0-- J \x " dy x d% ~ y =fdy y y ~ jydy x fey) x -ff(y)dx cos x -sin x =f cos xcix FIG. 11. Schematic diagram for solution of d 2y dy dx 2 + y + f (y) = cos x. ax - sin x x ~. cos x =f - sin xcix 27-13 MECHANICAL COMPUTER ELEMENTS ell) 1 L 2 (i 2 ) ~(,-f---+--O 1. 1 ~..L.-----;~ R 2 (i 2 -i 1 )J ...!..·1~ L' 1 L 2 (i 2 ) . = J(dil)d 7ft t q FIG. 13. Schematic diagram for two-loop network problem of Fig. 12. Rearrange each equation to express the highest order term as a function of lower order terms. (12) (13) 1 - [R' -di2 = --. 21,1 dt - R' 21,2 L2(t2) - -1 C J' dt] . 1,2 Equation (12) may be integrated to give (14) . = J at 1,1 dil d t. But in eq. (13), the expression for di 2 /dt is the product of two variables. 27-14 DESIGN AND APPLICATION OF ANALOG COMPUTERS This may be treated as the integration of a product as follows (15) i2 ~ J L2~i2) d[J( R2i, - R2i2 - a f;2 dt) dt]' A total of four integrators, four adders, and two input tables, one for the function e(t) and the other for the function 1/L2(i2), is required. Five gear trains are needed for constant coefficients. The initial values of dil/dt, il, i2, and J i2 dt must be supplied as well. The schematic arrangement is shown in Fig. 13. 5. SCALE FACTORS Definition. In mechanical computation the magnitude of each variable 'of the problem is simulated by the angular displacement of a shaft. Some number of revolutions of that shaft is therefore proportional to one unit of magnitude of the corresponding variable. The constant relating the number of shaft revolutions to one unit of the variable represented by this shaft is called the scale factor. Every shaft in a mechanical computing system has a scale factor associated with it. Considerable care must be exercised in the selection of these scale factors to assure proper operation of the computer system. Consideration in Choice of Scale Factors. Before an intelligent assignment of scale factors can be made, the maximum and sometimes the minimum values of all variables and their derivatives must be approximated. Frequently the initial approximation of these values may be excessively erroneous and may result in poor performance of the computer system. The scale factors must then be readjusted by trial and error. Limitations on Dependent Variable Scale Factors. 1. The excursion of the integrator wheel is limited by the number of threads on the lead screw. 2. The excursion of the carriage of input and output tables is limited by the number of threads on its screw. 3. The excursion of the shaft as a result of the computing process should be large compared to "noise" deflections due to vibration, backlash, etc. Limitation on Independent (Time) Variable Scale Factor. 1. The maximum speed of shafts is limited by: characteristics of bearings, sensitivity of follow-up servos in torque amplifiers, capability of driving motors, characteristics of output tables (pens, paper, etc.), capabilities of human operators of input tables. 2. The time scale factor should not be so small that an inconveniently MECHANICAL COMPUTER ELEMENTS 27-15 long time is consumed in obtaining a solution over a specified region of interest. The time scale factor should be selected so that a plot of the entire region of interest is displayed on the output table to a convenient scale. Other Considerations. 1. The scale factors at the t"vo inputs of an adder must be equal. 2. The output scale factor of an adder is determined by the input scale factors. 3. The scale factor at the output of an integrator is equal to the product of the two input scale factors divided by a constant (usually 16 or 32). REFERENCES 1. A. Svoboda, Computing Mechanisms and Linkages, MIT Radiation Laboratory Series, 27, McGraw-Hill, N ew York, 1948. 2. W. W. Soroka, Analog Methods in Computation and Simulation, McGraw-Hill, New York, 1954. E DESIGN AND APPLICATION OF ANALOG COMPUTERS Chapter 28 Digital Techniques in Analog Computation Cornelius T. Leondes I. 2. 3. 4. 5. Introduction Digital Differential Analyzer Digital Operational Computers Auxiliary Digital Computing Techniques Auxiliary Digital Control Techniques References 28·01 28·02 28·11 28·15 28·17 28·18 I. INTRODUCTION Digital techniques may be incorporated in analog computers in certain instances with resultant extensions in their capabilities. There are several aspects to this approach. a. In the basic analog computer operational units, discrete variable or digital number representation may be employed rather than the usual continuous variable representation. b. Data entering an analog computer may be in digital number form. Such instances occur, for example, in analog computers employed in traffic control systems. Modified analog operational units such as multipliers, may accept a discrete variable for one input and a continuous variable for the other to produce the product of the two variables in analog form. This provides equipment economies and better overall accuracy when compared with a procedure which employs a digital to analog converter and then supplies the two variables to a conventional analog multiplier. c. The generation of arbitrary functions of machine variables is often 28·01 28-02 DESIGN AND APPLICATION OF ANALOG COMPUTERS a troublesome process in analog computers, particularly when functions of several variables are to be generated. In this instance digital techniques can often be introduced into the analog computer to advantage. d. In addition, digital techniques can often be advantageously introduced into analog computers for the purpose of automatically controlling large analog computing installations. Complete problem setups can be stored on punched tapes or cards and patch panels so that by feeding the punched tapes or cards into the digital tape or card reader complete problems can be automatically set up on the analog computer. Time can be saved, errors can be more readily detected, more reliable operation can be achieved, and more efficient use can be made of the analog computer. Definitions. The mechanization of analog computer operational units can be based upon the employment of discrete variable representation rather than the usual continuous variable representation. The discrete representation employed can be in the form of digital numbers or variable pulse repetition rates. When digital number representation is employed the associated computer mechanization will be referred to as a digital differential analyzer or DDA. When variable pulse repetition rate representation is employed the associated computer mechanization will be referred to as a digital operational computer. 2. DIGITAL DIFFERENTIAL ANALYZER Method of Integration. A mechanical integrator establishes the relationship of eq. (1) between the x, y, and z shafts (see Chap. 27). (1) dz = ley dx. These shaft positions represent directly and on a continuous basis the variables x, y, and z and it follows that (2) z = le !ydx. If one considers finite increments and a discrete variable representation for the variables involved then, corresponding to eq. (1) is the equation (3) ~z = ley ~x, and if the increments are taken to be very small, the integral of eq. (2) may be approximated to a very high degree by a device which mechanizes the equation n (4) Zn = L: Yi ~Xi. i=O This is the approximation to the integral when rectangular integration DIGITAL TECHNIQUES IN ANALOG COMPUTATION 28-03 as implied by eq. (3) is employed. A better approximation can be provided by more sophisticated integration techniques such as the trapezoidal integration equation (5) AZ = (y + Ay/2) AX. Basically, a DDA actuates eq. (4) for variables represented in a discrete manner, and solves differential equations in a manner analogous to that outlined for the mechanical differential analyzer. Operational Integrators in a DDA. Each operational integrator unit in a DDA accepts as inpu.ts 6.x and 6.y, and provides a 6.z output. The integrator must contain at the start of the problem the initial value of y, and this value of y is continually kept up to date by the accumulation of all subsequent 6.y's supplied to the integrator. The 6.z outputs may serve as inputs to other integrators in the computer and are also accumulated to provide a continual and up-to-date indication of the value for the variable z. All the numbers X, 6.x, y, 6.y, z, and 6.z are represented digitally in the computer on a binary, decimal, or other basis depending on such considerations as ease of circuit mechanization, programming convenience, etc. I1z=y/1x llz l1y y (integrand) FIG. 1. Symbol for integrating unit of DDA. Integrator Schematic. Schematically an integrating unit of a DDA may be represented externally as shown in Fig. 1. Inter,nally an integrating unit of a DDA may be represented as shown in Fig. 2. The y integrand register contains the value for y at the start of the problem and accumulates the incoming values of 6.y in order to keep the value of y up to date. The contents of the y register are multiplied by !l.x and added periodically to the R accumulator register. The overflow from the R register is 6.z. The R register contains the digits of lowest significance of the variable z with the digits of highest significance held in the register which is supplied by 6.z. There may be multiple 6. inputs to the integrand register. Solution of Differential Equation. The integrators of a DDA may be interconnected to solve differential equations in much the same manner 28-04 DESIGN AND APPLICATION OF ANALOG COMPUTERS as integrators of d-c analog computers or mechanical integrators of electromechanical analog computers. Thus in this procedure, the highest order derivative is isolated in terms of all other variables. Itsexistence as an integrand is assumed, and it is integrated repeatedly to provide all lower order derivatives. The feedback path is ,'closed to the highest order derivative by combining all lower order terms according to the conditions of the differential equations. R register (accumulation) tlZ fly y register (integrand) FIG. 2. EXAMPLE. (6) Internal configuration of an integrating unit of a DDA. Consider the differential equation d2 y dy ---2y=x dx 2 dx according to the above procedure and rewrite eq. (6) as (7) d2 y dy -=-+2y+x. 2 dx dx The solution to this equation is shown in Fig. 3 and integrator 1 has the output d (dy/ dx). This output serves as the input to the integrand register of integrator 2. The output of integrator 2 then is summed with the other inputs to the integrand register of integrator 1 to generate the integrand d 2 y/ dx 2 • The output of integrator 2 also goes to the integrand register of integrator 3 where the variable y is accumulated and is thus always available. The independent variable x may be generated as part of some other set of equations being solved in the computer, or it may be generated at a regular computer-timed rate. Scaling Problem. In placing a problem on the DDA, variables must be scaled to fit the numerical range of the machine. Once the scaling relations are established it is possible to determine the initial value of DIGITAL TECHNIQUES IN ANALOG COMPUTATION 28-05 every integrand arid to express these integrands in terms of machine values. Some of the points to be considered in scaling a problem for a DDA are analogous to those to be considered in an analog computer Integrator 1 ~--dx ~--od(~) Integrator 2 >-----il---o 2dy = d(2y) dy dx Integrator 3 4y FIG. 3. Computer solution for the equation: d 2y dy - 2 - - - 2y = x. dx dx which employs continuous variable representation. The important factors in scaling a problem for the DDA are: 1. All quantities are represented as integers. 2. The output relationship for an integrator is dz = y dx. 3. Scaling is done· in terms of powers of the radix r of the DDA number representation. Thus for binary number representation r = z, and the scaling is done in terms of powers of two. 4. Associated with each variable u there exists an integer scale factor Su having the significance that the number r,su represents one unit of the quanti~y to the machine. "" " 5. Associated with each integrand there exists a quantity m having the property that rm > maximum absolute value of the integrand, where m is the smallest integer satisfying this property. 6. In" general, one of two incompatible criteria, precision or time, is used to fix the scaling. Some particular variable may be required to be 28-06 DESIGN AND APPLICATION OF ANALOG COMPUTERS of a certain precision, and thus fix its scale and establish all others. Alternatively, the length of computing time for a solution may be specified; and thus fix the scale on the independent, or driving variable of the problem. An increase of one in the scale of the independent variable causes the computer to execute r times as many operations (r is the radix of number representation), each of which is of fixed time duration. Hence, increased accuracy is obtained at the expense of increased computing time, and decreased computing time is obtained at the expense of decreased accuracy. 7. Once a choice has been made eq. (12) below may be applied to define the length of each integrator. 8. In the final analysis, the scaling of a problem is completely determined by the integrator lengths. A correctly scaled problem may be stepped up in accuracy or in speed of computation by readjusting all integrator lengths by the same amount. Scaling Relation for an Integrator. The ~z output of an integrator represents the spillover, from the least significant digits which are contained in the R register; Thus if the Rand Y (integrand) registers are both N digits long, where ,the digits are expressed in the radix r, then it follows that (8) 1 Az = -yAx rN for an integrator. Now letting Sz equal the scale factor of the ~z output, Sy equal scale factor of ~y input, and Sa; equal the scale factor of ~x input, the relationship realized will be (9) or (10) To meet' the condition that Az = y Ax requires that (11)' or (12) Equation (12) is a basic scaling relation and establishes a relationship among the number of digits in the Rand Y registers, the scale factors on the variables of integration, and the scale factor on the output variable. The Y register must be capable of holding the integrand y of the integrator at all times during the computat:on. Thus for each unit of DIGITAL TECHNIQUES IN ANALOG COMPUTATION 28-07 the integrand y, the Y register will have to hold the number rSY. More':' over, the integrand may be almost as large as rln units at some time during the computation. Therefore, the total capacity of the Y register of any integrator must be capable of holding a number as large as rmrSy or rm+Sy. Hence, since the Y register is N digits long, it follows that (13) which says that the number of digits required for an integrator is equal to the scale factor of the integrand plus the quantity m. If 1n is not correctly known, or estimated, the capacity of the Y register may be exceeded. In this case the problem will be automatically halted (by an overflow signal) and must then be rescaled. Equations (12) and (13) may be combined to yield a very useful, though not independent equation as follows: From eq. (12) (14) From eq. (13) (15) Sy ~ N - m. Therefore, (16) Sz +N - Sx ~ N - m, or (17) or (18) Scaling Relations between Integrators. Equations (12), (13), and (18) define the relations necessary for the scaling of any single integrator, but they say nothing about scaling relations between integrators. These are simple and straightforward. To achieve compatible operation all integrators must accept a variable at a common scale factor. Violating this rule results in multiplication by powers of the radix, which may be useful at times. Any set of scale factors satisfying eqs. (11) and (12) and meeting the compatibility requirement may be successfully used. The following procedure leads to a simple solution of the scaling problem. Draw a schematic of the integrator interconnection as was done, for example, in Fig. 3. For each integrator enter scale factors and integrator 28-08 D.ESIGN AND APPLICATION· OF ANALOG COMPUTERS length as indicated in Fig.' 4,' with Ni the length of accumulator· and integrand registers of the ith integrator. Now, let 8 1 be the output (dz) scale factor for integrator 1. Enter 8 1 as the scale factor for the accumulator or integrand inputs for each integrator where the output of integrator 1 is used as an input. Let 8 2 be the output scale of integrator 2 and repeat the operation. Proceed in this manner until all scales are established. Note that if more than one integrator output is used as the integrand input to an integrator, Integrator i ~-- Sy ~ --- ~--------~~--- FIG. 4. }~~h:~~~~~~ inDDA Integrator marked for scaling purposes. all such outputs must have a common scale. This process assures compatibility of all scale factors. For each integrator write eq. (18). This yields a set of simultaneous inequalities of the form 8 i - 8 j > mk which must be satisfied. Magnetic Drum Registers. Thus far in the description, the registers have been depicted as being physically laid out as such. Actually, in the case of binary addition or subtraction, for example, the steps can be performed one column at a time, and it is therefore not necessary to have entire registers present in the electronic circuits of the DDA at one time. Thus in the DDA the integrator registers need be nothing more than segments on a magnetic drum (see Chap. 19) or bits in an acoustic or lumped parameter electrical delay line. The integrators can be processed either serially or in parallel. For serial processing, numbers or areas from these registers are read one column at a time into the adding circuits and the altered numbers are replaced on the drum. or in the delay lines. The integrators are processed serially or in parallel once per revolution of the drum or in each circulation through the delay line. Mechanization of a Serial DDA. Consideration will now be given to some of the mechanization details for a DDA which processes the integrators serially. Mechanization details for an all parallel DDA follow in like manner except that the integrators are processed in parallel. For the serial DDA one track of the magnetic drum storage must be reserved to contain serially the integrand or Y registers for each of the DIGITAL TECHNIQUES IN ANALOG COMPUTATION 28-09 integrators. Similarly, one track must be reserved to contain serially the R registers of each integrator. There is also one "hookup track," labeled the L track, which contains serial registers, one for each integrator, and provides the necessary information to interconnect the outputs and inputs of each integrator. The L track operates in conjunction with an additional track referred to as the ~z track to supply the ~y and ~x inputs to each of the integrators. Thus as each ~z is generated in the DDA it is deposited on the ~z track in a space reserved Gate 2 Write heads • Gate 3 and LlZ L R y Magnetic drum storage Read heads LlZ L R y C FIG. 5. Llz Gate 1 DDA schematic. for the ~z output of the particular integrator. Hence as indicated in Fig. 3, this ~z output can serve as a ~y input for approprIate integrators in the problem under consideration. Thus typically as in Fig. 3, when integrator 1 is processed, it can generate a ~z output. This ~z output is placed in a space reserved in the ~z track for integrator 1. As a result of the equation involved, during the processing of integrator 2 its ~y input is obtained from the ~z output of integrator 1. The L, or problem hookup, track is coded so that it inspects the ~Z track only in the space at which this ~z is placed, and upon detecting a ~z in this space sends it to the y register of integrator 2 as a ~y input. This process is then readily generalized for more complicated problem hookups. DDA Processing Schematic. Schematically the DDA may be depicted as shown in Fig. 5. In the box labeled storage, on the righthand side, are depicted the read head outputs (see Chap: 19) of the 28-10 DESIGN AND APPLICATION OF ANALOG COMPUTERS various DDA tracks. The lowest track labeled C is the clock pulse track. The function of this track is to supply pulses for timing and pulse reshaping purposes. The output of the Y track, which contains the integrand register contents in serial for the various integrators of the DDA, goes two places. (a) First it goes to block 1, which combines it with AX in order to produce y AX, which in turn is added to the R register, as pointed out earlier. (b) It also goes to the y + ~ Ay adder, where it is combined with the sum of the incremental inputs from the other integrator outputs which are to supply the integrand currently being processed. Thus in Fig. 3, for example, the integrand of integrator 1 picks up incremental inputs from three sources. The sum of incremental inputs from such sources is represented as ~ Ay. The output of .the y + ~ Ay adder then goes back to the Y track of the drum to bri,ng ;the contents of the Y integrand register up to date. The output of the R track goes directly to the R + y AX adder. This adder produces two results, an overflow pulse which is placed in an appropriate place on the AZ track and an updated value for R which is placed in the R track and which thus replaces the previous value of R for the integrator being processed. The output of the L track goes to three places. (a) It goes first to a ~ Ay coincidence block. The function of this block is to examine the L track which has been coded at the outset of the problem according to the problem being solved. Pulses placed in the L track for each integrator register cause the AZ track to be examined at the spaces reserved for the appropriate AZ outputs through the action of the coincidence block. Thus the increment in y is determined by computing ~ Ay in the coincidence circuit. The output of the coincidence circuit then goes to the y + ~ Ay adder to form the updated value for y. (b) The L track also goes to block 2, which is a coincidence circuit for producing AX. That is, the L track is also coded at the outset of the problem to pick up the required AX for each integrator of the problem. (c) The L track also goes back to the input of the L track to be replaced without change since the coding stays fixed throughout the problem. The AZ track also goes three places. (a) It goes to the ~.6.y coincidence block and (b) to block 2 to combine with the L track at both of these blocks with the results described above. (c) It also goes back to the input of the AZ track after combining at block 3 with the AZ output of the integrator just processed. Handling Positive and Negative Increments. There are several alternatives for transferring positive and negative information in the DDA. The first of these involves a two-level or binary transfer scheme. In this scheme positive incremental rates are represented by a predominance of DIGITAL TECHNIQUES IN ANALOG COMPUTATION 28-11 1'8 transmitted, negative incremental rates are represented bya predominance of zeros transmitted, and zero incremental rates are represented by alternate l's and O's. It is readily possible to mechanize a DDA using this information transferral scheme (Ref. 1). A second alternative involves the use of a three-level or ternary transfer scheme. Here information is transmitted directly as + 1, 0, or -1. This scheme is more accurate than the binary transfer scheme in that it has less inherent roundoff error, but requires more equipment to realize (Ref. 2). Selection of Method of Mechanization. It is possible to mechanize DDA's by using rectangular, trapezoidal, or other integration techniques. The more sophisticated technique will, in general, produce a more accurate computation, but it will, in general, also require more equipment to mechanize. The choice of integration technique and information transfer scheme for a DDA intended to solve specific classes of problems is based on such considerations as accuracy requirements consistent' with reasonable equipment demands. For a DDA intended for general problem usage where accuracy and frequency requirements may be specified to cover a broad spectrum, it is often felt essential to consider the construction of the DDA to employ ternary transfer and trapezoidal integration. However, special purpose DDA's intended for problems with modest requirements may make it possible to employ a simpler DDA configuration. The integration technique and information transfer schemes required of a DDA to handle any particular class of problems may be determined to a good degree of approximation by analytical means (Refs. 3, 4, and 5) whose results can be verified by suitable simulation studies (Ref. 6). 3. DIGITAL OPERATIONAL COMPUTERS Approach. An analog computer can employ discrete variable representation for information transfer through the use of a variable pulse repetition frequency. Thus to establish the feasibility of such a mechanization it is merely necessary to establish the configuration of suitable operational units such as multipliers, dividers, and integrators. Once these units have been described, it is then a straightforward step to realize that such an approach can be suitably employed to solve differential equations by properly interconnecting the units as was done, for example, to solve the problem shown in Fig. 3. For more details of operational digital techniques see Chap. 29. Multiplier. For configuration of a multiplier for a system employing this data representation technique may be established by considering the 28-12 DESIGN AND APPLICATION OF ANALOG COMPUTERS simplified situation depicted in Fig. 6. The blocks labeled 1 through 4 are the ~tages of a binary counter. Thus if a chain of pulses whose rate of occurrence is proportional to the number x is supplied at the left hand of the counter, the and gate (see Chap. 14) on the first line of the multiplier receives from the first stage of the binary counter a pulse rate of x/2, and so on for the succeeding stages of the binary counter. The contents of the y register then determine which of these sequences of x--~ x 16 y ==t>-- and gate =E>-0rgate FIG. 6. A digital operational multiplier. pulses are passed on to be added through the or gate (see Chap. 14) shown at the right of the multiplier. The output of the or gate then is the desired product. Thus if y is zero and the contents of the y register consists of all zeros, all the and gates will prohibit the scaled down x pulse rates from passing through to the or gate. Thus the output product will be zero as it should. Similarly, if y is at its maximum value, the maximum number of pulses will be passed on to the output of the multiplier, and the output pulse rate will again be proportional to the product xy. The pulses from the various and gates must be separate from one another, otherwise when these pulses litre combined at the output of the or -gate any overlap would result in a loss of information. This overlap is avoided in a straightforward manner by taking the pulses out of the binary counter into the and gate at the noncarry time of the respective stages of the counter. Thus when the pulses are combined at the output DIGITAL TECHNIQUES IN ANALOG COMPUTATION 28-13 of the or gates, they are separate and distinct, and the resultant pulse train output is indeed proportional to the product xy. Divider. Now that a multiplier configuration has been established a mechanization for a divider follows readily. Thus in Fig. 7 the three multipliers combined with a forward backward counter, i.e., a counter which counts up or down depending upon the inputs to F (forward) or B (backward), result in a circuit which produces the quotient in the forward backward counter. The schematic shown in Fig. 7 has one . feedback loop involving z. The P input is a pulse rate, and the numbers x and yare held in the indicated registers. The forward backward p Forward-backward counter z register B p FIG. 7. A digital operational divider. counter will count forward or backward, adjusting z until the counter input Px - Pyz is equal to zero. At that time the quantity z held in the forward backward counter is related to x and y by Px - Pyz = 0, (19) or x z=- , (20) y and z is the desired quotient. Divider Time Constant. A transient analysis may be made of this divider. Thus if there are n stages in the X, Y, and Z registers, from an examination of Fig. 7 there follows (21) Z (t) = it XP dt o 2n - it 0 YPZ(t) dt. 2n 28-14 DESIGN AND APPLICATION OF ANALOG COMPUTERS By differentiating this there follows (22) Solving this equation for the initial conditions at t = 0, Z (t) = Z (0) gives (23) Z (t) = ~ {I - [1 - Z (0)] e- (YP/2n) t}. Thus the equivalent time constant of an operational divider is given as 2n /YP. The equivalent time constant can be reduced by increasing the pulse repetition rate P or by decreasing n, the number of stages. Integration. The process of integration by this representation technique may be mechanized by simply accumulating all incoming pulses in a forward backward counter such as that used in Fig. 7. As a positive pulse rate is supplied to the F input of a forward backward counter, its contents increase. Negative pulse rates are supplied to the B input and the counter's contents decrease. Reasons for Using Discrete Variable Representation There are several reasons for considering the use of this approach in computing. 1. A serial DDA where only one set of adders and other computing functions are required may lead to a simpler computing equipment when the dynamic and accuracy demands of the equations being solved are modest. 2. In real time simulation or control where high accuracy requirements must be met and/or where high dynamic requirements exist, the best solution to the computing problem may well be provided by the use of all parallel DDA elements either throughout the computing system or else at critical positions in the system. For example, an all parallel DDA employing registers 30 binary digits in length, a basic pulse repetition frequency of one megacycle, trapezoidal integration, and ternary transfer provides an accurate computing facility with good dynamic properties as evidenced by the fact that its precision is one part in better than 1,000,000,000, and its integration interval is 30 microseconds, i.e., it provides better than 30,000 quadratures a second. Choice of Computing Method. Thus, for example, as one approach to choosing between the computing methods, a comparison between the true characteristic frequencies of a linearized set of system equations may serve to provide sufficient data to select between the methods, particularly so if one of them shows up very badly in the comparison. N onlinear systems can often be linearized in the Liapounoff sense (Ref. 10) for such analyses to a very good degree of approximation over a consid- DIGITAL TECHNIQUES IN ANALOG COMPUTATION 28-15 erable region. Consider for example, the very good degrees of approximation afforded by linearizing the generally nonlinear equations of motion of aircraft over certain ranges of the dependent variables. Techniques for determining the difference between the true characteristic frequencies of a system and those computed by an analog computer employing continuous variable representation have been presented in the literature (Refs. 8 and 9). Similar techniques for ar:alog computers employing discrete variable representation have also been presented (Ref. 3). If the system equations are nonlinear to the extent that this approach is not held to be valid or if complete verification is desired before embarking on an extensive computer design and construction program, full scale system simulation must ultimately be employed (Ref. 6). Summary. The reasons for using discrete variable representation in an analog computer include possible equipment reductions or/and better accuracy and dynamic performance. 4. AUXILIARY DIGITAL COMPUTING TECHNIQUES It is often possible and desirable to incorporate auxiliary digital computing elements in an analog computer. Thus function generation may be conveniently carried out in this manner particularly when functions of several variables are involved. Also in certain control systems it is often necessary or desirable to be able to multiply an analog variable directly by a digitally represented variable to produce a product in analog form. By avoiding the conversion of the digital variable to an analog variable through the use of a digital to analog converter and then applying the result to a conventional analog multiplier an overall system which is simpler and generally more accurate results. Digital Function Generation in Analog Computers (Ref. 11). It is possible to generate functions of analog variables by converting the analog variable to a digital number through an analog to digital converter. The digital number then may go to a small auxiliary magnetic drum and associated circuitry which is programmed to generate the desired function. Arbitrary functions of several variables can also be generated in this same manner. If it is then desired to multiply the desired function directly' by another variable in the computer as is so often the case, it is not necessary to convert the digitally evaluated function back to analog form. Instead, the quantity can be fed directly to the digital analog multiplier described below. Function generation can also be accomplished by means of a digital function table as shown in Fig. 8. Thus values of x over the expected range of x, in suitable increments are stored in parallel in the x space 28-16 DESIGN AND APPLICATION OF ANALOG COMPUTERS of the drum. This space is examined by the read heads and converted to an analog quantity by the digital to analog converter shown in the figure. This converted quantity is compared with the variable x for which an arbitrary function is desired. When coincidence occurs the read heads associated with the function table, stored on the drum and shown as f (x), are gated, and the digits passing under them are read Digital analog converter x--------l~ Coincidence detector Output Yf(x) FIG. 8. Digital function table. through the gate shown into the register. The register contents then may go to a digital analog multiplier, as shown, to generate the quantity yf(x). Although only one arbitrary function was shown generated in Fig. 8, it is evident that this same technique can be extended to the instance where several different arbitrary functions of any arbitrary variable can likewise be generated. Digital Analog Multiplier (Ref. 11). It was shown in Chap. 22 that for an operational amplifier the output voltage is equal to the input voltage multiplied by the ratio of the output impedance to the input impedance. Thus if this impedance ratio can be directly related to one DIGITAL TECHNIQUES IN ANALOG COMPUTATION 28-17 variable and the input voltage is another variable, the output voltage is proportional to the product of the two variables. This concept then leads to the simple digital analog multiplier shown in Fig. 9, wherein Analog inpu-tx-"--~---I e =xy >----L--:~_I =B- Sign switching circuit ±e =±xy orgate L-..r--I Digital inputs y FIG. 9. Digital analog multiplier. the parallel conductances of the input conductance are switched into or out of the circuit according to the variable. The sign digit of the digital variable can be used for switching purposes at the output in order to produce a four-quadrant multiplier. 5. AUXILIARY DIGITAL CONTROL TECHNIQUES (Refs. 12 and 13) Digital techniques can also be advantageously employed for control purposes in an analog computer. These techniques are of particular advantage in large scale installations. Thus entire problems can be placed on punched tapes or cards operating in conjunction with patch panels. Thus the tapes or cards can control the settings of coefficient potentiometers, condensers, initial conditions, etc., through the use of associated suitable switching circuitry operating in conjunction with servomechanisms coupled to the proper points at the proper time in the computer through suitable clutching arrangements. The patch panel would contain the information to interconnect the proper amplifiers, potentiometers, etc. 28-18 DESIGN AND APPLICATION OF ANALOG COMPUTERS Advantages. Problems can be readily checked since at any desired time the interconnections and all settings can also be arranged to be printed out in some suitable form. Problems can be rapidly placed on the machine and removed if need be temporarily with the full realization that the problems can again be rapidly placed on the computer. More efficient use can be made of extensive facilities. REFERENCES 1. L Reed, Fundamental concepts of the DDA, Mathematical Tables and Other Aids to Computation, 6, 41-49 (1952). 2. M. Poalalevsky, The design of the Bendix DDA, Proc. I.R.E., 41, 1352-1356 (1953). 3. H. J. Gray, Numerical methods in digital real time simulation, Quart. Appl. Math., 12, 133-140 (1954). 4. K. Miller and F. J. Murray, A mathematical basis for an error analysis of differential analyzers, J. Math. and Phys., 32, 136-163 (1953). 5. H. Rademacher, On the accumulation of errors in integration, Ann. Computation Lab. Harvard Univ., 16 (1948). 6. F. Wright Jr., Dynamic System Studies. Pt. 13. Error Studies, WADC Tech. Rept. 54-250, September 1956. 7. L. P. Meissner, Real-time digital differential analyzer (DART), Proc. 1954 West. Jt. Compo Con/., 134-139, Los Angeles, Calif., February 1954. 8. A. B. MacNee, Some limitations on accuracy of electronic differential analyzers, Proc. I.R.E., 40, 303-308 (1952). 9. E. Goldberg and G. Brown, An electronic simultaneous equation solver, J. Appl. Phys., 19, 339-345 (1948). 10. N. Minorsky, Introduction to Nonlinear Mechanics, Edwards Bros., Ann Arbor, Mich., 1947. 11. Digital techniques in analog computers, Proc. West. Jt. Compo Con/., 60--63, San Francisco, Calif., February 1956. 12. An automatically controlled large scale Geda computing and simulation installation, GER-7808, Goodyear Aircraft, Akron, 0., August 1956. 13. Operating Manual EASE 1200 Series Analog Computer, Beckman Instruments, Palo Alto, Calif., 1957. 14. J. M. Mitchell and S. Ruhman, The THRICE-a high speed incremental computer, 1958 LR.E. Convention Record, Pt. 4, 206-216. UNUSUAL COMPUTER SYSTEMS F. UNUSUAL COMPUTER SYSTEMS 29. Operational Digital Techniques, by Bernard M. Gordon and John F. La Fontaine 30. Combined Analog-Digital Computing Systems, by George P. West 31. Simple Turing Type Computers, by Joseph O. Campeau F UNUSUAL COMPUTER SYSTEMS Chapter 29 Operational Digital Techniques Bernard M. Gordon and John F. La Fontaine I. Introduction 29-01 2. Basic Devices 29-05 3. Applications of Operational Digital Techniques 29-14 4. Incremental Computation 29-17 References 29-29 I. INTRODUCTION Operational digital techniques describe an approach to computation that attempts to combine the advantages of both the analog and the programmed digital methods of computation. These combined techniques effect what is called a hybrid system. They do not always provide the best solution to a computation problem, and their useful application is generally economically possible only when especially developed novel components are used. Characteristics of Hybrid Systems. Essentially, in the hybrid system, digital techniques are used in functional units that are laid out in operational form. Objectives of the hybrid system are: 1. Greater precision that can be attained with analog techniques and at lower cost. 2. Greater control and speed than is possible with programmed digital units. 3. Less complexity than is involved when programmed digital units alone are used. 29-01 29-02 UNUSUAL COMPUTER SYSTEMS 4. The ability to accept input data in the analog form, in which they usually occur. These data are translated into the digital language of human beings and with as little recourse as possible to accuracy limiting analog components. A consideration of operational analog systems and of programmed digital systems indicates the advantages and disadvantages of each type. Analog Systems. In analog systems, the variables to be represented or controlled are physically characterized by parameters which may vary over a limited range. A varying voltage, for example, may be proportional to, and thus represent, a varying parameter. Other examples are: signal frequencies, mechanical shaft positions, and light intensities. Advantages 1. The analog system is essentially a visual working model of the parameters being controlled or measured. The design of a given system is reduced to the interconnection of components in a straightforward "operational" manner. Functional units (gears, potentiometers, and synchros), each performing a specific function, are arranged so that the overall transfer function has the desired properties. Example. An analog system for multiplying an input quantity by three would consist of gears arranged so that three turns of an output shaft occurred for every single turn of the input shaft. 2. The real time characteristic of analog operational techniques is also an advantage. By real time is meant simply that the analog process occurs during the same time as does the variation of the parameters it represents. This continuous, as it may be called, nature of analog operational techniques makes them especially applicable for closed loop systems. Particularly when the control function is complex, the operational system may respond faster than is sometimes possible with the periodic sampling operation of programmed digital systems. Disadvantages 1. In terms of accuracy and ultimate reliability, the analog system is limited by the precision of the components composing it. 2. Economics often impose restrictions on the precision of an analog system. There is a practical consideration here, namely how much time and money should be put into developing ultra-precision components for a particular analog system? 3. In practice, the accuracies of practical complex analog systems are limited to one part in a thousand. 4. Some operations such as multiplication may be slow. OPERATIONAL DIGITAL TECHNIQUES 29-03 Swnnwry. The analog approach has the advantages of high speed and real time operation. It is limited in precision, however; and it is also limited in its ability to perform those operations that are not readily representable in analog form, namely certain nonlinear mathematical functions. Digital Systems. The programmed digital technique is quite different from the operational analog technique. Data are not processed in a form analogous to the input information, but rather in the discrete form of a series or set of characters, i.e., information in language form. Advantages 1. The components in a digital system can vary and drift and be off tolerance considerably before they cease being dependable functional units. (See Chap. 12.) Such extreme component tolerances are never possible in the analog system. 2. Any degree of accuracy can be obtained and maintained if a sufficient number of characters are used in the language code of the system. In straight binary code, for example, accuracies on the order of one part in 1000 can be obtained if 10 decision elements are used, or one part in 2000 if 11 decision elements are used. 3. The digital computer is flexible enough to perform any type of mathematical operation. Disadvantages 1. Since the processing is carried out by means of an ordered program, the digital machine must be complex and must contain an internal storage to provide storage of data and commands. The computer and storage are both large and costly. 2. In the digital computer the input quantity must be periodically sampled in order for the machine to determine if a change has taken place. Example. Consider the same example given above, that is, multiplying an input quantity by three. For the digital machine to execute this simple function it is necessary for the input data to be transferred to the internal storage. The data are then transferred to the arithmetic element where each digit is multiplied by three in accordance with the program previously inserted in the machine, and then the result of this multiplication is returned to the storage and finally transferred to the output. 3. These operations-sampling, transferring to storage, operating as programmed, transferring to storage, generating control 'data, etc.-take time. Consequently, in a digital computer the rate of sampling must be limited, and thus information sacrificed, or the computer must operate 29-04 UNUSUAL COMPUTER SYSTEMS at extremely high speeds; or a combination of these adjustments must exist. Summary. The digital computer techniques have the advantages of reliability and versatility; these advantages are offset by complexity and expensiveness. But if the problem to be solved or the measurement required demands that minimum time elapse between receipt of the input information and the computed response, much of the utility of the digital type of instrumentation is negated. Hybrid or Operational Digital Systems. The purpose of the hybrid system, therefore, is to combine the advantages noted above for each of the two types of conventional computer, while at the same time obviating the disadvantages. It is often assumed that because the physical world is a continuously moving analog system, only analog techniques are applicable to it. A closer look at nature, however, reveals that there are many physical phenomena that are basically discrete. To name a few, the breakdown of nuclear energy, the passing of time intervals, and the occurrence of resonant cyclic vibrations occur incrementally. EXAMPLE. The application of operational digital techniques to the doppler phenomenon as the basis for the analysis of motion is a good example. It is known that when energy of a specific frequency is reflected from a moving object, the returned energy undergoes an apparent frequency shift, the doppler shift. This change, or doppler frequency, is proportional to the velocity of the object under observation, and therefore it can be used as a source of data in velocity measuring, tracking, and navigational systems. In analog systems this doppler information is converted to shaft rotation rate or proportional voltage. A closer investigation of the doppler relation indicates that each cycle of the received data can indicate a definite distance traveled by the 'object causing the frequency shift. The doppler relation is of the form v f d = k - f = k}..v, c where fd = doppler frequency, v = velocity to be measured, f = transmitted frequency, c = propagation velocity, k = a constant, }.. = transmitted wavelength. Since f d (cycles per second) is proportional to v (distance per second), by removing time from the relationship, each cycle of the received data represents a definite distance traveled. To integrate, it is necessary only OPERATIONAL DIGITAL TECHNIQUES 29-05 to count the number of cycles received. No conversions are required. Limitations on accuracy are (1) the wavelength of transmission and (2) the number of digits that can be held in the counting device. Note the following: 1. The doppler information is an analog of the moving object, hence, the system receiving and using this information is in a sense an analog system. 2. The measurement is made in real time. 3. A discrete meaning is applied to each cycle of the received energy, hence, the information is digitally characterized. 4. The combination is a hybrid system. In this hybrid system: a. The measurement is operational, that is, it is accomplished in real time; the received data are proportional to the parameter being measured. b. As a digital system, the received data are in language form, and the degrees of accuracy realizable with the digital technique are therefore possible. A characteristic name for such a technique, therefore, is operational digital. 2. BASIC DEVICES Data representation within operational digital systems takes the form of both unitary-weighted pulse trains and binary codes. Pulses which form a unitary-weighted pulse train each have the same numeric weight. Thus, 432 units are represented by a train of 432 pulses; 654 units are represented by a train of 654 pulses, etc. Binary Rate Multiplier Characteristics. 1. This unit accepts a unitary pulse train as one input and a numeric, that is, binary, code as the other input. 2. The output is a pulse train containing a number of pulses equal to the product of the number of input pulses (the multiplicand) and the numeric code (the multiplier). 3. Each pulse of the output train has exactly the same unitary weight as those of the input train. Operation. A binary rate multiplier consists of binary scalers and diode gates. The scaler is a device that yields an output for every two inputs and is indicated by C 2 in figures. Thus, if several scalers are arranged in a series fashioned as in Fig. 1 and a pulse train applied to the input of the series: 1. The first scaler will yield an output after two inputs. UNUSUAL COMPUTER SYSTEMS 29-06 2. The second scaler will yield an output after two inputs from the first scaler, and therefore after four inputs to the series of scalers. 3. The third scaler will, similarly, yield an output after two inputs from the second scaler, which means it will yield an output after eight inputs to the series of scalers. fay = X "'"'' Multiplicand (pulse train) C2 = binary scaler al a2 aa Multiplier y= f~ 2n 1 Product a4 a5 an 0--------------------------; = Multiplier y O. al a2 aa ... an a's are binary numbers Product n =I 1 =xy FIG. 1. an xn 2 n an -2 n = XL 1 Binary rate multiplier block diagram. 4. The scaler outputs, therefore, during the interval in which input pulses arrive are: x/2, x/4, x/8, ... , x/2 n , when n = number of scalers. 5. This means that one-half of the total number of input pulses, during a certain interval, will occur at the output of the first scaler, one-quarter at the output of the second scaler, one-eighth at the output of the third, etc. Since the sum of all these fractions approaches one, as n becomes large, it is evident that the total number of scaler outputs will tend to equal the number of input pulses. OPERATIONAL DIGITAL TECHNIQUES 29-07 The binary-weighted scaler outputs are applied to gates that are opened or closed according to the dictates of the binary-coded multiplier. vVhen a gate is opened, the output pulses of the associated scaler will be passed. The outputs of all gates are combined through a buffer to yield a train of pulses that are the product desired. The multiplier must be scaled to be a fraction less than unity. x Input I (16 pulses) I I I :x "2 Scaler outputs I • I I I :x 16 -- --- -y input a2 al,a3=1 a2, a4 = 0 a3 I I I :x 8 I I I I I I :x 4 tLl I I I • I • I --- r- - ,- -- ~. Gate Open -I- Closed -- -- --- ---- .- --- ,- -- ,--- Open Closed I I xy product !I I I I I ~ I (10 selected pulses) x =16 = 10 Y = 0.625] decimal = 0.1010] binary = 16 ] decimal xy 10 FIG. 2. Binary rate multiplier timing diagram. EXAMPLE 1. Consider an input pulse train of 1000 pulses. If it is desired to multiply this input by zero, the binary numeric code for zero, 0.0000 ... 0, sets all the gates closed, and thus none of the input pulses appears at the output, and the product is zero. If it were desired to multiply the input train by one, the binary code for one, 0.1111 ... 1, would open all the gates, and thus all the scaler outputs would be passed. For a more sophisticated example, assume that it were desired to multiply the 1000 pulses by 0.6250, the binary code for which would be 0.1010 ... 0 (i.e., ~ + Ys). In this case, the gate associated with the first scaler would be opened, and the one associated with the third scaler would be opened. Since half of the pulses, or 500, would be passed by the first scaler, an one-eighth of the pulses, or 125, passed by the third scaler, the output train would consist of 625 pulses, which is the correct product for such multiplication. UNUSUAL COMPUTER SYSTEMS 29-08 EXAMPLE 2. Figure 2 illustrates the input, gating, and output involved in multiplying x = 16 by y X 0.625. Accuracy. According to the number of scalers and gates used, namely the number of digits used in the binary code multiplier, any degree of accuracy can be achieved. For example, for an accuracy of one part in 2000, 11 gates would be required. Timing. In order that the output device receives pulses one at a time, which it must do if ·a unitary pulse train composed of the correct number of pulses is to be obtained, no two scaler outputs can occur at the same time. This prevention is accomplished by interconnecting the scalers so that the carry from one stage to another is out of phase with the output pulses. ' - - _ _ _ _ _ _ _..L-_ _ _ _ _ _ _--1. _ _ _ ~ Vc Product =operating voltage a1. a2. aa = binary digits of multiplier (0. al a2a3' FIG. 3. Magnetic core transistor multiplier block diagram. Magnetic Core Transistor Multiplier. Another operational digital device is the magnetic transistor multiplier. This unit consists of one magnetic square loop core and one current source per binary stage. Each stage operates as a combination gate, flip-flop, and blocking oscillator. Operation. The operation of the unit is as follows. (See Fig. 3.) 1. Each collector drives current around both its related core and the succeeding core; each core then has two collector windings from successive stages. These windings are in opposing directions. 2. As the successive stages are excited, the flux is caused to vary from the upper remanence point (arbitrarily called 1 state) to the lower remanence point (zero state). OPERATIONAL DIGITAL TECHNIQUES 29-09 3. During a flux change, the polarity of a pulse developed in the lower winding of a given core will depend on the initial condition of that core. Consider any particular stage. vVhen a positive pulse is developed in the second winding, it is applied to the emitter of the next transistor. '''hether or not that transistor is excited depends on the polarity of the pulse simultaneously developed in its base winding. If that polarity is positive, the emitter-to-base voltage does not become positive, and no transistor action ensues. If the base pulse is negative, the combination transistor-magnetic circuit is caused to regenerate much in the manner of a blocking oscillator. Thus, each stage is caused to read out once for every two pulses received and a binary count is achieved. Note. This alternate reinforcement and cancellation action ensures that pulses never exist simultaneously on two or more output lines. and Product C2 S SR tv t2 =binary scaler = synchronizer =shift register =timing pulses tl t2 FIG. 4. Dynamic rate multiplier block diagram. Dynamic Rate Multiplier Description. In the basic rate multiplier, as discussed above, the input pulses occur asynchronously, and consequently the gate signal inputs of the binary coded multiplier had to be present at all times. Thus, storage in static storage elements was necessary. An arrangement known as a dynamic rate multiplier (see Fig. 4) permits the binary multiplier coefficient to be stored in a circulating shift register, and once every major shifting cycle, the multiplier code is in the proper position relative to the gates. If the incoming pulses are synchronized to the shift pulses, proper 29-10 UNUSUAL COMPUTER SYSTEMS gating action takes place. The advantage of this arrangement is that static storage is obviated and full use is made of magnetic switching elements basically suited for dynamic operation. Pulse Rates. In the dynamic rate multiplier, the rate of pulse occurrence determines the multiplication required for a given accuracy. For example, if 0.1 per cent accuracy is desired, time intervals for occurrence of at least 1000 pulses must be allowed. Such pulse rates are easily attained with present magnetic circuit techniques. Applications. The basic rate multiplier and its variations may be used to perform a series of rate multiplications in which the output of one multiplier is fed directly into another without need for intermediate storage. The units may also be incorporated into feedback systems to provide operational units whose transfer characteristics can be analyzed in terms of equivalent time constants in a manner analogous to proportional servomechanisms. x+y S tl, t2 =synchronizer = timing pulses FIG. 5. Adder block diagram. Adder The addition of unitary-weighted pulse trains is simply performed, as indicated in Fig. 5. The pulse trains x and yare synchronized at pulse times tl and t 2 , respectively, so that the pulses of each train occur out of phase with the pulses of the other train. The two out-of-phase scaler output trains are then combined, and the output pulse train is the sum of the two input trains. A simple adder could be designed using only two saturable core elements and two diodes. Subtractor The next diagram shows a device used to subtract one pulse train input x from another. Pulse train y is to be subtracted from pulse train x. A reversible binary counter, a forward-backward counter, is used, along with two binary scalers. The x pulse train is applied to the forward input of the counter and the y to the backward input. Thus, the count OPERATIONAL DIGITAL TECHNIQUES 29-11 in the counter is, at all times, the difference between the two pulse trains. The difference x - y in the counter register may be used as the multipliers input for a binary rate multiplier (BM) to produce the product fo (x - y) as shown in Fig. 6. r--------~F x--~ Forward-backward counter I--------~B y--~ , I x-y fo~fo(X-Y) = synchronizer = timing pulses BM = binary multiplier S tl, t2 Subtractor block diagram. FIG. 6. Divider With the basic devices of the binary rate multiplier and the reversible counter, an operational digital divider can be devised. The divider shown in Fig. 7 consists of three binary rate multipliers and one reversible x t----o----~ F Forward-backward counter r---~B to y = At equilibrium: to x to yz, x BM binary multiplier = FIG. 7. =yz, z =.y Divider block diagram. counter, connected as shown. Assume that it were desired to divide binary code x by binary code y. The x code is applied to a binary rate multiplier to generate a pulse train proportional to x. The y code is applied to a binary rate multiplier. The x pulse train is applied to the UNUSUAL COMPUTER SYSTEMS 29-12 forward input of the counter and the y pulse train to the backward input. In the counter z is the desired quotient, i.e., z = x/yo The count z is applied to another binary rate multiplier to produce a pulse train proportional to z. This pulse train is multiplied by the y code input mentioned above, and the output of the binary rate multiplier is a pulse train proportional to the product of yz. This output is applied to the backward input of the counter. Since z = x/y can be written x = yz, due to the feedback loop, the counter will tend to reach equilibrium with as many pulses applied to the forward input as applied to the backward input. At equilibrium the contents in the counter z will therefore be the desired quotient. x #0 F t---~>----~ B Forward-backward counter ...------¢y fo = At equilibrium: y2fo xfo , y2 BM = binary multiplier FIG. 8. =x, Y =vx. Square root unit block diagram. Square Root The ease with which algebraic and exponential relationships may be accommodated might best be illustrated by implementing a device to extract square roots with exactly the same circuit elements as just described for an operational digital divider. Refer to Fig. 8. Whereas in the divider, the output of the counter is multiplied by a rate fo, and that product is multiplied again by an external function y, in the case of the square rooter, the output of the counter will be designated y, and applied simultaneously to the two subsequent binary rate multipliers. The output of the first multiplier is yfo. The second rate multiplier is that product multiplied by y, or y2fo. When this feedback is applied to the backward count, while xfo is applied to the forward count, equilibrium will be achieved in the counter when xfo = y2fo or y = Vx~ OPERATIONAL DIGITAL TECHNIQUES 29-13 A comparison of Fig. 8 with Fig. 7 illustrating the divider will show that the circuit configuration is identical with the exception of one lead, used to set z = y. Variations. There are obvious variations to this setup. If, for example, a unitary-weighted pulse train were to be divided by a binary code, only two binary rate multipliers would be required, for the pulse train could be applied directly to one of the inputs to the counter. If the problem involved two unitary-weighted pulse trains, only one binary rate multiplier would be required. In such a case, one pulse train would be applied directly to the forward input to the counter and the y pulse train would be multiplied by the count in the counter z, and the product applied to the backward input to the counter. !::.y--~ ~--Llx (From storage) (Llz = yLlx) !::.Z For furlher integration FIG. 9. Digital differential analyzer block diagram. Differential Analyzer A description of the basic tools of operational digital techniques in hybrid operations would not be complete without reference to a familiar device, the digital differential analyzer (DDA). The DDA can be likened in many ways to an operational amplifier of the type commonly employed in analog computers, in that it can sum, integrate, and multiply. However, an analog operational amplifier can integrate only with respect to time. In the case of the DDA, the operational digital technique can be used to integrate some variable with respect to any other variable, clearly an important advantage in control or simulation applications. A typical DDA is all digital in operation, i.e., all information flow between integrators is in the form of pulse trains. In integrating y with respect to x as shown in Fig. 9, the procedure is as follows. A counter UNUSUAL COMPUTER SYSTEMS 29-14 has the initial value of y preset into it. It is stepped by a unitary pulse train of D.y values. Associated with the counter is a serial adder which has a pulse input of D.X values. At the occurrence of a D.X pulse, the contents of the y counter is added to a second z counter, which puts O __ overflow pulses, when filled, having the value D.z. The rate of the D.Z pulses is proportional to y and the rate of D.X pulses, such that D.Z = yD.x. If the D.Z pulse train is counted in another similar integrator, the result is a step-by-step rectangular area integration of y with respect to x. J Machine commands (tape) Advance to next command ~ Machine control function (motion power) Pickoff w~ L- _ _ _ _ _ BM* I I ! J =binary multiplier and advance signal generator FIG. 10. Machine tool control diagram. 3. APPLICATIONS OF OPERATIONAL DIGITAL TECHNIQUES Machine Tool Control A practical application for use of the operational digital devices can be derived from one of the variations described above. In this application a machine tool, such as a milling machine or lathe, is to be automatically controlled by means of programmed commands from a tape mechanism. The device involves two unitary-weighted pulse trains, requiring but one rate multiplier and one forward-backward counter as shown in Fig. 10. The programmed commands D.X from the tape mech- OPERATIONAL DIGITAL TECHNIQUES 29-15 anism are fed to a binary rate multiplier via a command register. A fixed rate input, /0, is applied to the other input of the rate multiplier. The commands from the tape mechanism modify the fixed pulse rate so that the output of the multiplier is a train of pulses, AX/o, proportional in number to the command increment. This pulse train is applied to the forward input F of the forward-backward counter in such a manner that the output of the counter is the machine control information, namely, the output provides the forward motion power for the machine. As the machine moves in the direction indicated by this information, a pickoff transducer generates incremental motion pulses, which are fed to the backward input B of the forward-backward counter as the second unitary-weighted pulse train. Thus, the count in the reversible counter is always the difference between the machine commands and the actual position of the controlled element. The entire device is a closed loop positioning servo. It functions as a smoothing and rate control mechanism. The last pulse of a pulse group from the binary rate multiplier is used to advance the tape mechanisms so that the next command is then read into the command register. Information Averaging In some industrial process control situations, (1) it is necessary to sample periodically and find the derivative for the rate of progress of the operation, and (2) it may be desirable also to integrate the rate information over a period of time, so as to yield an optimum approximation or prediction. Problem. Figure lla is a block diagram of a two-loop system where averaged output data x(t) are compared periodically with the sampled input data x (t n ) • The difference between the sampled input and the averaged output is applied to one integrator, is then combined with the difference information and, finally, is applied to a second integrator whose output is the averaged process state information. The difference values applied to both integrators are weighted by factors that indicate the importance that is to be given to the information involved and are appropriately chosen for the specific system. If it is recognized that a temperature-measuring device, for example, is not absolutely accurate, its full output will not be used to modify the system. Instead, its output will be weighted and only a fraction of it applied to the computing section. Thus, the averaged data integrator (the output integrator) not only gets process state corrections at the time of the sampling measurement but, of interest to the present discussion, continuously accumulates rate data. and keeps up to date by extrapolating that rate information. Rate Aiding. The problem exists of how to store accurately and utilize the rate information. As compared to analog or programmed UNUSUAL COMPUTER SYSTEMS 29-16 digital approaches, the operational digital technique for "rate-aiding" (as this averaging system is called) is extremely simple and requires only a single rate multiplier as shown in Fig. lIb. Assume that an integrated rate x is stored in a digital storage register. Physically, this might be a magnetic shift register or counter. Let the maximum possible process rate be represented by a continuous pulse train of rate fmax. Then, as shown in the lower portion of the figure, the entire rate integrator consists of a single binary multiplier. As the code of the instantaneous rate is applied to the binary multiplier to modify the maximum Averaged output + t--~~x(t) Rate (max (a) x(t n ) Ki, K2 = data sampled at time tn =weighting factors FIG. 11. To x(t) integrator (b) Information-averaging system diagram. rate fmax, a new pulse train whose rate is proportional to the process rate is generated. The pulse outputs of this binary rate multiplier may now be applied to the extrapolating integrator so as to predict x(t) continuously. EXAMPLE. This action may be better understood by considering a numerical example. Suppose that in a certain chemical process a temperature builds up toward a final critical value. The nature of the process is such that only periodic measurements of the temperature may be obtained and, indeed, these measurements are less accurate than are required. A rate-aided system is to be employed to average these sampled data and to provide continuous temperature information. For purposes of numerical example only, let the maximum rate of temperature change be 1000°C per minute. As the periodic measurements are carried out, the rate integrator will average itself to the proper instantaneous rate. It is required that this rate information be fed into the temperature integrator to provide, on a continuous basis, the instantaneous temperature of the reaction. Let fmax be equal to 1000 pulses per minute. Then, if the temperature OPERATIONAL DIGITAL TECHNIQUES 29-17 reaction is changing at its maximum possible rate, the stored binary code for 1000 will be .11111, and all the 1000 pulses per minute will be gated out of the binary rate multiplier to increase the averaged and predicted temperature at the proper rate. Should the rate of reaction change so that the temperature is changing at half the rate of 500°C per minute, the binary rate code would then be .01111, and 500 ppm will be fed into the temperature-averaging integrator. For any other rate of change of temperature a proportional pulse rate will be gated through the binary multiplier, and the numerical value of the temperature will be continuously predicted and extrapolated, as desired. Other Applications. This same technique has proved useful for a variety of position and velocity measurements, level and flow measurements, and other processes where periodically obtained data samples must be averaged to obtain more accurate information and to predict the state of the variables at the time when, for one reason or another, no actual measurements 'can be made. 4. INCREMENTAL COMPUTATION Definition and Application. The computer to be described is a hybrid computer. It is composed essentially of digital computer circuitry, and therefore achieves the high accuracy of a digital computer, and it operates in nearly real time, by means of incremental computation techniques, and therefore possesses one of the salient characteristics of the analog computer. The industries which potentially could derive the most benefit from application of hybrid system techniques are the process industries. These industries are characterized by having large numbers of parameters which must be monitored for proper control of the process and, further, by the existence of relatively large inertias on all the parameters being monitored. Automatic Data Acquisition and Process Control Requirements for Data Acquisition. The typical organization of an electronic data acquisition system makes use of a rather sophisticated device, namely, an analog-to-digital converter, and multiplexes this converter to the various inputs. Since it is generally required that the digital information prepared by the analog-to-digital converter be in engineering units compatible with the parameter being measured, various normalization circuits are customarily interposed between the multiplexer and the converter and are programmed in accordance with the type of transducer being monitored for a variety of scale factors, linearization 29-18 UNUSUAL COMPUTER SYSTEMS constants, zero offset (or zero suppression) quantities, and square root. By whatever means the variations in normalization are achieved, the means to variability necessarily imply a device which is tantamount to storage. Storage Requirements. The normal operation of an analog-todigital converter involves a series of successive approximations toward a final measurement value and is performed much in the manner of the optimum program for weighing an object of completely unknown weight on a chemical balance. A distinguishing feature of the process industry systems is the fact that the parameters being monitored have large inertias. Therefore, a measurement of such a parameter is not in the category of the "unknown" weight, inasmuch as the measurement produced on an nth cycle of operation will be either equal to or have trivial deviation from the measurement on the n - 1 cycle. Such systems must contain some forms of storage, such as mechanical inertias and relays. It is reasonable to consider a system organization in which a single storage unit is used for all the required normalization constants, alarm limit values, and the value of measurement on the n - 1 cycle. Such a storage can be extremely simple in its organization inasmuch as the program sequence follows a well-ordered selection arrangement. Any storage device which presents information in a sequential fashion may be utilized without any requirement for complex storage selection circuitry or dead times imposed while waiting for a desired selection. Analog-to-Digital Converters for Incremental Systems. The analogto-digital converter is now called upon to make only one decision per measurement, namely, the determination of whether the parameter being measured is more or less than its last value. The output of the comparator of the converter, which was previously sensed on each of a succession of decision cycles, is now used to activate a simple incremental adder for the purpose of updating the stored measurement value. A systcm organizcd on this basis is inherently faster than its conventional counterpart and in many applications may result in significant economies. Control Applications. However, the present intent is not to show a better way of doing a conventional operation but, rather, to explore the possibilities of this approach to the construction of systems of much higher ability. The fundamental intent of any data monitoring system is the evolution of control information. Inasmuch as many process control variables are of small relative magnitude, repeated output of data on such channels is often extraneous. The important characteristics of a true information-gathering system are: 1. The ability to distinguish information from redundancy. 2. The inclusion of sufficient computing ability to interrelate monitored OPERATIONAL DIGITAL TECHNIQUES 29-19 quantities in whatever manners are necessary to provide controlled information in a form suitable for immediate control action by the system operator or by the system itself. Many of the mathematical operations required in process control computations are surprisingly complex. But the same remarks which applied to the use of old measurement data in the simplification of a new measurement have equal significance to the solution of these equations. The precise solution of the control equations by conventional computing means is exactly analogous to conventional analog-to-digital converter operation. Where nothing is known about the values of the various operands until they appear on the scene from storage, complex computing circuitry must be employed and the evolution of the answer must await the many cycles required in their operation. In contrast, the process control situations frequently involve the repeated call for solution of equations where both the operands and the answer are predictable within close limits. The job of the incremental computer, therefore, is to update a last solution rather than to start fresh on the effectively blind solution of a "new" problem. Machine Organization Block Diagram. The computational unit shown in Fig. 12 comprises three adders, three incremental adders (±1), and three complementers. This apparatus, when connected together, performs the arithmetic given in eqs. (1), (2), and (3) of Table 1. On each storage cycle it receives operands S, R, V, and U from storage, operates on them in the manner indicated, and returns new values of R, V, and U to the corresponding storage positions. The quantities S are used as scaling factors and are never modified except by change of the computational program. The complete equations for the incremental computer are given in Table 1 and are grouped as follows: 1-3 4-12 13-25 26-32 33-45 46-59 60-64 Basic Addition and subtraction M ultiplica tion Division Square root Integration and differentiation Logarithm and exponential Control. Control of the basic equations to effect the desired operations of addition, multiplication, square root, etc., is done by properly combining (or disconnecting) the sensing lines from incremental storage, and by the choice of which one relates to the dependent variable. In 29-20 UNUSUAL COMPUTER SYSTEMS most cases the dependent variable is not actually generated by the main storage cycle but, rather, information is placed in incremental storage which may be used to update the "result" in a separate storage cycle. In most cases the output increment of one program step will be applied directly as an input to a subsequent operation, and only the final solution will be generated for readout. .a :l a. -= Increment storage flip-flops flU -----U Main storage flT flV --------V ----------Sign of R FIG. 12. R Incremental computer block diagram. Thus, the increment storage is the means for communicating information between parts of a problem solution, the mechanism for causing the basic machine algorism to do different sorts of arithmetic, and the channel for input information. Program. The program which accomplishes all this is stored in the main storage and is presented to the increment storage at each step of the storage cycle. Since the program command must be known in advance of the operands, the first bits read out from the four storages at the beginning of a cycle may be used for the program ,to control that cycle. The main storage may be a drum or an array of magnetic cores. Assume eight binary bits as sufficient for command; then the first two pulse positions on the R, S, V, and U output lines will contain this information. A word length of thirty bits, plus one for sign, is probably OPERATIONAL DIGITAL TECHNIQUES TABLE I 1. EQUATIONS FOR THE INCREMENTAL COl\IPUTER OF 29-21 FIG. 12 Basic 111achinc Equations Uk - + ~Uk (1) Uk (2) Vk=Vk-I+~Vk (3) Rk = R k- l = l + Uk~Tk + Vk-l~TVI.; + ~Xk - S~Z/c II Addition and Subtraction A. Desired Output Z = X (4) + U0 T S + V 0 TV B. Initial Conditions (5) AUk=~Vk=Ro=O (6) SZo = Xo (7) AZk+l (8) C. Proof Rk = Rk-l + UoTo + = { +lforRkPositiVe} 1f R . reversed for S or k negative + UO~Tk k=N (9) L k=O VolVo + VO~Wk + ~Xk k=N (Rk - Rk- I ) = L Uo~Tk 1.:=0 + - S~Zk k=N L Vo~lVk 1.;=0 . negatIve + k=N L~Xk - (10) + VolVN + X N + UoTN + VolVN (11) SZN+ RN = UOTN (12) ZN + RN S = X S III 111ultiplication A. Desired Output Z (13) = UV +X S B. Initial Conditions (14) ~Tk (15) A1Vk = (16) Ro = 0 (17) SZo = UoVo (18) AZk+l = (19) C. Proof RI.; = R k- 1 = ~Vk + ~Uk + Xo + 1 for Rk positive} . reversed for {-1 for R k negatlve Uk~Vk + Vk-I~Uk + ~Xk - . S negatIve SAZk L 1.;=0 SAZk 29-22 UNUSUAL COMPUTER SYSTEMS TABLE 1. EQUATIONS FOR THE INCREMENTAL COMPUTER OF FIG. 12 (Contintted) (20) (21) A(UkVk) = UkV k - U k- 1 V k- 1 = (Uk- 1 AUk) (Vk-l AVk) - U k- 1 Vk-l =..I1'J tl'k--r+ Uk-lAVk + Vk-lAUk + AUkAVk = Vk-lAUk + AVk(Uk- 1 + AUk) = Vk-lAUk + UkAVk + + Rk - Rk-l = A(UkV k) k=N (22) L k=l + AXk - (Rk - Rk-l) / = k=N -.lla-l1J+ XN (23) RN - jW'= SZN + RN = (25) ZN'+ RSN = UNVN + X N S UNVN k=N L A(UkV k) + k=O L AXk - k=O L k=O (24) IV SAZ k k=N - U- SZN SAZ k + fi.ZO + XN UNVN Division A. Desired Output = -SZ- V - X - U (2q) B. Initial Conditions (27) ATk = (28) AWk = AUk (29) Ro = 0 (30) UoVo = SZo - (31) AU (32) AVk = k+1 Xo 1+(+ 1 for 1 for -1 for -1 for Rk positive and Vk negative Rk negative and V k positive Rk positive and V k positive Rk negative and V k negative C. Proof Solving eq. (24) for UN, UN = SZN + RN -XN VN V Square Root A. Desired Output (33) V = V SZ - X B. Initial Conditions (34) Vo (35) ATk = Uo = AWk = AVk = AUk -Jh ll'k-l OPERATIONAL DIGITAL TECHNIQUES 1. TABLE 29-23 EQUATIONS FOR TIlE INCREMENTAL COMPUTER OF FIG. 12 (ContimlCd) (36) Ro = 0 (37) U02 = SZO - Xo I::.U (38) {+-11 for Rk negative for Rk positive _ k+l - C. Proof (3Q) Rk (40) AU k 2 (41) Rk-l = + Ukl::.U k + U k- 11::.U k + I::.X k - SI:lZk = U k2 - U k _ 1 2 = (U k- 1 + I::.U k )2 - U k _ 12 =~ + I::.UkU k - 1 + I::.UkUk- 1 + I::. Uk I::. Uk -~ = Uk-II::. Uk + I::.Uk(Uk- 1 + I::.Uk) = Uk-11:lU k + Ukl::.Uk Rk - R k- 1 = (42) L + I::.X k - I::.(U k2) k=N (Rk - Rk-l) L = k=O k=N I::.(U,,2) k=O ~ + XN - RN - U= U N2 (44) RN = UN 2 (45) UN = VSZN - X N + RN + Z = k=N I::.X k - S ~- SZN X N - SZN Integration A. Desired Output (46) - + L k=O (43) VI SI::.Z k k=N ~ J U dT (47) (48) B. Initial Conditions Vo = Uo (49) I::.Vk=I::.Uk (50) I::.W k (51) Ro = X 0 = I::. X k = 0" (52) Zo (53) I::.Z = = k I::.Tk desired value at T = +1 = To {+-11 for Rk positive for Rk negative C. Proof (54) Rk = Rk-l + Ukl::.Tk + Uk-11::.Tk - SI::.Z k L k=O +.8Z'O I::.Z k UNUSUAL COMPUTER SYSTEMS 29-24 TABLE 1. EQUATiONS FOR THE INCREMENTAL COMPUTER OF FIG. (Continu(;d) N 2: (55) '.=1 N (Rk - R k- 1) = N (56) RN - ]k"= (p7) ZN 2'2: k=l RN 2 2: (Uk - Uk-l)~Tk - k=l !(Uk + Uk-l)~Tk - 8Z N N 8 2: 1.;=1 ~Zk + 8 Zo N + -8 = -8 1.;=1 2: !(Uk + U1.-1)~Tk + Zo ~~JUdT+Zo VII Differentiation U~ (58) ~ ~~ (substituting ~U1.+1 for ~Z/~+l in .eq. 53) VII Reciprocal Integration (59) T ~ %J d~ (substituting ~Tk+1 for ~Zk+1 in eq. 53) VIII Natural Logarithms A. Desired Output 2 (60) - T 8 n. = In Z Initial Conditions (61) Z=U (62) AZ = (~3) Ro = Xo = (64) AT ~U ~Xk = 0 _ {+1 for R1. positive 1.+1 - -1 for Rk negative C. Proof Same as VII, since: (65) 8JdZ T = "2 Z = "28 In Z, whence (66) - T = In Z 2 S IX Exponential Z = e2T / S (substituting (67) ~Zk+1 for ~Tk+1 in eq. 64) 12' OPERATIONAL DIGITAL TECHNIQUES 29-25 sufficient for any application. The prototype will, therefore, be assumed to have a minor cycle length of thirty-three pulse times, and have a major cycle (complete storage cycle) which contains thirty-three (1092 + 33) possible program steps. This seems sufficient, inasmuch as considerable arithmetic may be accomplished in each step. For example, a complete summation of the displacements in the thirty monitored lines requires only fifteen cycles. Error Term. In all the machine operations the quantity R represents an error term which at any instant in a problem solution is either at its minimum possible value or is being reduced to that value at the maximum possible rate. The entire intent of the machine algorism is to reduce R on each cycle of computation. The sign of the error may therefore be used as an input to the incremental storage such that, by appropriate action of the program, the next solution for R on that program step will either reverse its sign or reduce its magnitude. The increment storage flip-flop which, by program control, receives its information from the sign of R, is the dependent variable of a desired operation. Operations 1. Addition and Subtraction. The computing unit is capable of continuously updating the sum of three quantities, according to eq. (4). The quantities X, T, and Ware presented to the arithmetic unit in the form of increments, and may be entirely derived from flip-flops which receive their information externally or come from a combination of such information with increments obtained from other computing processes. This mixed mode will become clearer in its operation as the description proceeds. No explicit storage for the quantity Z exists. The sequencing described does not result in the production of an explicit quantity Z unless that is required by the program. Instead, the operation produces as an output information for updating a quantity Z by units of ± 1. These units may be used to modify either U or V in a subsequent cycle of operation to accumulate a quantity equal to Z, if that is desired. But if, for example, Z is to be further added to other quantities, and is not required as a result in its own right, then ~Z will be sensed in a subsequent solution of eq. (4) as being a quantity ~X, ~T, or ~ W. The quantity S is used in all the mathematical operations as a scaling factor. In addition and subtraction the quantities U and V are also available for scaling. However, the choice of S, U, and V must be made in accordance with the requirements of eq. (6), which represents an initial solution of the problem at the start of any computational run. The computation proceeds as follows: 29-26 UNUSUAL COMPUTER SYSTEMS a. Equations (5), (6), and (7) are the microprogramming for the initial solution. Equation (5) says, simply, that the quantities U and V remain invariant and that the initial value of R in the storage is zero. Equation (6) states certain necessary balances of the numbers in the storage at the start of the program sequence. b. Substituting the conditions of eq. (5) in eq. (3), leaves the modified arithmetic operation of eq. (8). c. Summing for N cycles eq. (9) leads to eq. (10). Subtracting out eq. (6), and the fact that R is equal to zero (eq. 5) gives us eq. (11). d. Equation (11) rewritten in eq. (12), is identical to eq. (4), except for the error term. e. It can be shown that the solution is at all times within ± 1 of its correct value or is approaching that value at the maximum possible rate. 2. Multiplication. Multiplication is accomplished as follows. As before, the quantities which are independent variables (U, V, and X) are presented to the arithmetic unit in the form of increments. Unlike the previous example, two of the variables, U and V, are updated as a part of the operation, and could be called from the storage. The single operation thus provides a' means for updating information for a product quantity Z. The sequence is as follows. a. Equations (14) through (18) are the microprogramming equations which adapt the machine algorism for multiplication. Equations (16) through (18) resemble start conditions for the addition process, while eqs. (14) and (15) merely say that two increment storage flip-flops serve as the controlling devices for four operations. b. Substituting the initial conditions into eq. (3), yields eq. (19). c. This becomes eq. (21) following the arithmetic of eq. (20). d. Summing over N cycles and subtracting eqs. (16) and (17) leaves eq. (24). e. The rewritten form in eq. (25) is equivalent to eq. (13), except for the error function, and can be shown to be either equal to ± 1 of the correct value or be moving toward that value at the maximum machine rate. 3. Division. The operation of division as expressed by eq. (26) is the same as that for multiplication except for the choice of dependent variable. With the exception of the rules given in eq. (31), all the microprogramming for the two operations is identical. The solution of the machine equation for division follows the same lines as in multiplication to eq~ (24). Solving eq. (24) for UN yields the result, eq. (32). This is identical with eq. (26) except for the error term. It can be shown that the solution is within + 1 increment of the correct value or is approaching the correct value at the maximum machine rate. OPERATIONAL DIGITAL TECHNIQUES 29-27 Division is the first of the machine operations thus far discussed which directly accumulates its result in the main storage. This property is true only for operations which use the quantity U or V as the dependent variable. 4. Square Root. Square root, according to the relationship of eq. (33), is performed by the computer by imposing the restrictions of eqs. (34) through (38). Note that while all six increment control lines are active, four of them are derived from a single increment storage flip-flop. The procedure is: a. Substituting eqs. (34) and (35) into eq. (19) yields eq. (39). b. Equation (39), following the arithmetic of eq. (40), becomes eq. (41). c. Summing over N cycles and subtracting the initial conditions of eqs. (36) and (37) give eq. (44). d. Rewritten as eq. (45) it may be seen that this is identical with eq. (33) except for the error term. e. It may be shown that UN is within ± 1 increment of the correct solution or is approaching that value at the maximum machine rate. Because of the choice of U as dependent variable, the quotient is accumulated directly in the main storage. 5. Integration and Differentiation. None of the arithmetic processes discussed in the preceding sections has involved approximations.{' The results in all cases have been exact and, presuming reasonable rat'es of change of the input variables, are at all times within ±1 of true value. The subject operations and those which follow are limited in their accuracy by certain approximations which have been required. The accuracy of the approximation depends on the behavior of the variables. In most cases the errors will be quite small. The procedure is: a. Integration according to the relationship shown in ,eq. (46) is performed in the arithmetic unit by the trapezoidal approximation shown in eq. (47). b. The microprogramming for this operation is given in eqs. (48) through (53) . c. Substituting the initial conditions into eq. (3) yields eq. (54). d. The usual procedure of summing over N cycles and subtracting out initial conditions results in eq. (56). e. As rewritten in eq. (57), the result is equivalent to eq. (46), except for the error term and the approximation error of eq. (47). Given the ability to integrate, it follows that the arithmetic organ can also differentiate or perform reciprocal integrand integration as shown in eqs. (58) and (59). These, of course, have the same limitations on accuracy as noted for the baE;ic integration and operation. 29-28 UNUSUAL COMPUTER SYSTEMS These operations are handled identically with integration except for the choice of independent variables, as noted. 6. Logarithm and Exponential. With the aforenoted cautions on accuracy, eq. (59) may be modified according to the conditions of eqs. (60) and (61) to effect natural logarithms according to eq. (62). Further manipulation leads to eq. (64) for exponential. Practical Considerations Transient Solutions. All the foregoing operations function to update their solutions on each cycle of the machine storage. At the beginning of machine operations these corrections are made from a trial solution stored in the machine storage. This solution mayor may not be a good approximation, but in any case serves to relate the scaling factors used in the problem solution properly. In a continuously operating system, where previous values of variables are not erased from the storage, there will never be a starting transient during which the "answers" differ appreciably from their true values. Readout may be initiated at any time and the solutions read out will represent the results of computation which has been performed on the very latest input data. Assume that it were necessary to clear the counters once every 24 hours. If this method of operation were used with an incremental computing system, there would be a short period of time at the beginning of each day's run (probably in the order of seconds) during which the machine's solutions would not be valid. However, it is probable that the clear operation would no longer be required once the computational ability is built into the system. Incremental System Benefits. The addition of incremental computing ability to a data gathering facility can provide a number of very important operating advantages. 1. System cost should be very much less than that originally intended, presuming that at least part of the cost of a medium-sized drum computer must be added to the basic data gathering facility. 2. System reliability should be greatly improved because no electromechanical devices are involved in the computation itself, and only the desired end results need be communicated to the operator. 3. System versatility offers numerous features not heretofore possible. One may, for example, have rate alarming at no additional cost other than the cost of the time for programming. 4. Typeout of any or all of the final results is available at any time during the day, either on demand readout or by automatic initiation at specified intervals. OPERATIONAL DIGITAL TECHNIQUES 29-29 5. The fact that most system inputs are analog in nature and that analog-to-digital conversion is required is no detriment whatsoever to the application of incremental techniques. Indeed, the analog-to-digital conversion process can be made very much easier by combining its operation with the computing unit. Analog-to-digital conversion as performed in present systems makes no use whatever of previous input values and must, therefore, make all decisions required for the digital quantity over again on each cycle of operation. But when previous values are available from a storage, the last updated digital value may be read out into a digital-to-analog converter for a present status comparison. The results of this comparison, in the form of an increment ( + 1) may then be used for further updating the digital quantity in the main storage. REFERENCES 1. B. M. Gordon, Adapting digital techniques for automatic control. I, Elec. Mfg., 136-144, Nov. 1954. 2. B. M. Gordon, Adapting digital techniques for automatic control. II, Elec. Mfg., 120-126, Dec. 1954. 3. C. T. Leondes and M. Nothman, Real time hybrid computers for control systems, Proc. Am. Inst. Elec. Engrs. Conference on Computers in Control Systems, Atlantic City, N. J., Oct. 16-18, 1957. 4. R. Leger and J. Greenstein, Simulate digitally, or by combining analog and digital computing facilities, Control Eng., 3, 145-153 (1956). 5. J. H. McLeod and R. M. Leger, Combined analog and digital systems-Why, when, and how, Instr. and Automation, 30, 1126-1130 (1957). 6. B. K. Smith, Practical information theory aspects of high-speed data handling, Trans. I.R.E., Prof. Group on Information Theory, March 1958. 7. B. Gordon and R. Niccola, Special purpose digital data processing computers, Proc. Assoc. Computing Machinery, 33-45, Pittsburgh, May 2-3, 1952. F UNUSUAL COMPUTER SYSTEMS Chapter 30 Combined Analog-Digital Computing Systems George P. West I. Description and Applications 30-01 2. System Components 30-02 3. Control and Timing 4. Modes of Operation 30-08 30-13 References 30-15 I. DESCRIPTION AND APPLICATIONS A combined system consists of analog computation elements and a digital computer interconnected by transducers and simultaneously employed in computation. A typical combined system comprises: 1. A general purpose digital computer of moderate to high computation speed. 2. Electronic analog computing equipment of the low frequency, or nonrecursive type, in amounts which vary from a few elements to several racks of equipment. 3. The transducers are usually electronic analog-to-digital and digitalto-analog converters. A typical system is shown in block diagram form in Fig. 1. Note. Throughout this chapter the term bit will be used as an abbreviation for binary digit. System Applications. Combined systems are employed to solve systems of differential equations which possess one or more of the following characteristics: 30-01 UNUSUAL COMPUTER SYSTEMS 30-02 1. Exceed the capacity of the largest digital computers in that they require an excessive period of computation to produce results. 2. Exceed the capacity of the analog computation facility usually by requiring more nonlinear elements than are available. 3. Require greater accuracy than is obtainable by analog techniques. EXAMPLE. A system of ordinary differential equations of moderate order and containing many nonlinear coefficients will quite often require more nonlinear elements than are available in a large analog computer. If the system response contains both high- and low-frequency effects Analog computer FIG. 1. Digital computer Block diagram of a combined analog-digital computing facility. which are of interest, the problem may exceed the capacity of a highspeed digital computer. For the digital computer must employ a computation interval small enough to reproduce faithfully the high-frequency effects and at the same time carry the computation forward over many of these small intervals until the low-frequency effects can be observed. If additional computing capacity is sought by attempting to employ two digital computers simultaneously, the problems of coordinating the actions of the two computers, so that they do not interfere with one another while attempting to communicate results, is a difficult one. Furthermore, programming the computation to keep both machines occupied is awkward. 'Although the combined analog-digital approach requires a radical change in the number representation for communication between the two computers, problems of mutual interference and of programming for effective utilization of both machines are much simpler. Problem Types. Table 1 contrasts problem types successfully employing analog, digital, and combined techniques for their solution. 2. SYSTEM COMPONENTS Analog Computer. The low-frequency electronic analog computer performs all computations simultaneously so that, within the restrictions COMBINED ANALOG-DIGITAL COMPUTING SYSTEMS TABLE 1. 30-03 COMPARISON OF PROBLEM TYPES FOR ANALOG, DIGITAL, AND COMBINED COMPUTERS Analog Linear and nonlinear ordinary differential equations of moderate order with simple nonlinear terms and with both high- and lowfrequency effects in response Digital Linear and nonlinear differential equations of moderate order with complex nonlinear coefficients and with either high- or lowfrequency response characteristic Combined Linear and nonlinear differential equations of high order with complex nonlinear coefficients and with both highand low-frequency effects in system response Continuous control system studies requiring about 0.1 % accuracy in solution Continuous or discrete control system studies of moderate complexity requiring better than 0.1 % accuracy in solution Highly complex control systems containing discrete as well as continuous elements and requmng accuracy of better than 0.1 % in solution Computations requiring graphical input data and producing graphical results Computations requiring tabular input data and producing tabular or graphical results Computations requiring graphical and tabular input data and producing graphical and tabular results imposed by the number of computing elements available in the computer, problem complexity does not restrict solution time. These analog computers can furnish solutions to about 0.1 per cent accuracy provided the response does not exceed about 20 cycles per second. Problem changes are easy to effect by plugboard changes or by resetting potentiometers. Input and output of graphical data is easy and straightforward. Output graphical data must be manually identified and scaled. Digital Computer. The high-speed digital computers perform computations sequentially so that computation time depends on the complexity of the problem. The computation time determines the highest sampling frequency possible and, therefore, the highest frequency of the system response which can be accommodated. A high-speed digital computer may well require 25 milliseconds to compute the sine or cosine of six angles so that a coordinate transformation exceeds the computer capacity if 20-cycle variations in position occur. Digital computers handle logical decisions very effectively. They accept tabular data for input and produce tabular output as well as graphical output with identification and scales. Graphical output requires special plotting symbols on the printer as well as the usual alphanumeric characters. 30-04 UNUSUAL COMPUTER SYSTEMS Conversion Equipment Mechanical Analog-Digital Converters. There are many types of analog-digital conversion equipment in use (Refs. 1, 2). The mechanical converters are usually shaft position converters in which a servo positions a code wheel to establish the required digital code, or relay switching networks which switch increments of voltage until the input voltage is matched. Mechanical converters are normally too slow for use in a combined system. Electronic Analog-Digital Converters. The converters most used in combined systems employ vacuum tube or transistor switching circuits to switch increments of current into a ladder network which sums the voltage drops and adds to or subtracts current increments until the output of the ladder network equals the input voltage (Refs. 3, 4). These converters are of two types; the free running or servo type, and the sampling type. Another type of electronic analog converter which has not been employed in combined systems is the pulse width system. 1. Free Running. In this type, the current switches are controlled by the bits in an accumulating register. A least count is added to or subtracted from the register, depending on whether the ladder output is greater or less than the input, at equal intervals of time, until the register counts to a value corresponding to the input voltage. The accumulator then oscillates within plus or minus one least count of the input value. The maximum voltage change that the converter can follow is the voltage change produced by the least significa~t digit divided by the clock period between successive additions. The dynamic response can be improved by sensing whether the comparator is out of balance by more than one voltage increment and when it is causing the bit to add in the next to least significant position. In this way, the converter follows twice as rapid a voltage change but to one-half accuracy. 2. Sampling. Another type of electronic converter starts from zero and switches successively from the most significant bit to the least, each time comparing the input to the ladder output. In this way, the converter establishes a number which was equal to the input voltage at some time during the sampling interval. This value is held until the converter is commanded to sample again. By making the decision interval short, the input changes during sampling are made small. A variation of this converter employs a sample and hold circuit to clamp the input so that it is constant during conversion. The problems inherent in making a fast sample and hold circuit are nearly as great as in producing a fast converter; however, sample and hold devices can improve the accuracy of this type of converter by at least a factor of 10. COMBINED ANALOG-DIGITAL COMPUTING SYSTEMS 30-05 3. Pulse lVidth. The pulse width converter first transforms the analog voltage into a pulse with duration proportional to the analog voltage (Ref. 5). The pulse duration then gates a string of pulses into a counter where they arc counted to arrive at the digital value of the analog voltage. Even with high pulse rates (2 or 3 megacycles), the time required to count to 3-decimal digit accuracy (400 microseconds) is longer than for other electronic analog converters. The pulse width converter is slower than the electronic converters of the sampling or free running types. Digital-Analog Conversion. Conversion from digital to analog is much simpler than the corresponding conversion from analog to digital. The digital number is set up in a register. The bits in the register control the switching of current increments into a ladder network which sums the voltage drops to produce an output proportional to the number placed in the register. The digital-to-analog conversion does not require comparisons and decisions in order to set the current switches properly. Instead the switches are simply set to agree with the bits of the number in the register. Furthermore, the switches are set simultaneously rather than sequentially so that conversion is much faster digital to analog than it is analog to digital. Converter Buffering. The construction of electronic analog-digital and digital-analog converters is such that a buffering action is obtained at no extra cost. In the sampling type analog-digital converter, once the current switches are set, the number can be read out at any time between conversions. Since the current switch settings will remain constant until the next conversion, they may be sensed at any time for readout, and until sensed they will store the number. Buffering action of the free running converter is obtained by stopping the decision pulses so that the converter no longer follows the input. \Vhen the number has been transferred from the buffer, a subsequent conversion must be delayed until the free running converter has had time to catch up to the input voltage. In the same way, the digital-to-analog converter can accept a number at any time for conversion. Once the current switches are set, the analog output will hold constant while the register accepts another number for subsequent conversion. EXAMPLE. A typical electronic analog-to-digital converter will occupy from 6 to 28 inches of rack space, weigh from 50 to 200 pounds, and require from 25 to 500 watts of power. The converter can be obtained in sizes from 10 bits to 18 bits with options as to whether binary or coded decimal representation is preferred. The static accuracy is about 0.1 per cent. The conversion speed will vary from 2 to 5 microseconds per bit. UNUSUAL COMPUTER SYSTEMS 30-06 Converter Bandwidth. 1. Free Running. The highest frequency a free-running converter can follow is that with a maximum slope of one least count in the time required to set a bit. EXAMPLE. If the bit setting time is 4 microseconds and the converter has a 10-bit register, the maximum slope would be one least count (2- 10 ) divided by the time to set the bit 4(10- 6 ), and this in turn must equal the maximum slope 27rfmax of the sine wave of maximum frequency. So that, f max = 2- 10 /4(10- 6 ) 27r = 39 cycles per second. 2. Sampling. The sampling converter must sample the voltage before it has changed appreciably. The sampling process takes a finite length of time. It is the speed of conversion, the time required to set the desired number of bits, which determines the converter bandwidth and not the number of sampling operations which can be performed in a given amount of time. Most converters recover very rapidly so that data can be sampled at a very high rate. To obtain appreciable accuracy from any of the samples, the input must be of quite low frequency content so that the additional samples which could be taken would be redundant and of little value. EXAMPLE. What is the highest frequency that a converter with a speed of 4 microseconds per bit can sample to 10-bit accuracy? For 10-bit accuracy, the input must not change more than one bit in the least significant place. The maximum change is then 2 -10. This change can occur in the length of time required to set 10 bits, or in 40 microseconds. The maximum slope 27rfmax of the sine wave of maximum frequency for 10-bit conversion must equal the maximum allowed change during conversion. So that, f max = 2- 10/40(10- 6 ) 27r = 3.9 cycles per second. Improving Bandwidth by Computation. 1. Free Running. The example above showed that a 4-microsecond free-running converter could follow about 40-cycle data to full 10-bit accuracy. If data are transferred twice per cycle to the digital computer, then at 40 cycles per second, 2 sample~ per cycle, and 10 bits per sample, 800 bits per second are transferred to the computer. The converter makes 250,000 one-bit decisions each second in following the input, which requires a single decision every 4 microseconds. COMBINED ANALOG-DIGITAL COMPUTING SYSTEMS 30-07 The bandwidth can be increased somewhat by reading data which are only approximate from the converter and by using the digital computer program to recover the data from the noise introduced by conversion. It is not possible to increase the bandwidth of the free-running converter very much by these techniques since the converter is either following the input voltage or it is not. Consequently, there are 10 bits of information in each sample, or none. The converter will catch up at the peak values and can provide accurate readings at the crests of the waveform even if it cannot keep up on the steep rise at either side. These peak values can be used to reconstruct the wave. The program can decide whether readings are meaningful or not by differencing to see if the converter was traversing at full speed or if it had settled down to following the input. However, if the input is much above the 40-cycle limit in harmonic content, the converter will produce a triangular waveform intersecting the data waveform more or less randomly. Since the converter is traversing at full speed at all times, it is difficult to determine the intersections with the data and hence the meaningful values. 2. Sampling. The example above showed that a 10-bit sampling converter with a conversion time of 40 microseconds has a bandwidth of about 4 cycles per second. If the converter can recover and be ready to sample within 100 microseconds (many sampling converters can), it would be possible to sample an input every 100 microseconds. Each such sample would require ten decisions in setting the bits for the conversion. In theory then, the converter is capable of making 100,000 decisions per second. However, in transferring 4-cycle data to a computer to 10-bit precision, it is in fact delivering only 80 bits per second, an even lower efficiency than that noted for the free-running converter. The sampling converter, however, can accept a much greater range of frequencies at its input before it reaches the point of delivering no information with each sample. Since the sampling converter sets the most significant digit first, the input can change very rapidly before the converter will fail to set the most significant bit correctly. For example, a 1000-cycle signal would cause at least 4 bits to be set properly. If the high-frequency input is sampled more than the ideal two samples per cycle and a least square fit is made to the data in the computer, it is possible to reconstitute very high-frequency data from its approximate sample values. Since the digital computer is often hard put to complete the required computations in the time available, there may be little time left for reconstituting the input data from its approximate samples. 3. Pulse Width. The output of any converter can be considered as representing precisely the value which the input voltage assumed at 30-08 UNUSUAL COMPUTER SYSTEMS some time in the sampling interval. Usually the exact time at which this coincidence occurred is not known. If the converter is fast enough, this timing uncertainty is not important. If the coincidence is assumed to occur at the start of the sampling interval, an amplitude error results which can be held to prescribed limits by restricting the bandwidth of the input voltage being converted. The pulse width converter has a relatively long conversion interval but its design is such that it is quite easy to compute the instant at which sampling occurred. If the perturbations of the nominal sampling interval are computed, the converter output can be accepted at full design accuracy. The counter in a pulse width converter is gated on as a standard ramp voltage crosses zero and off when the ramp reaches the input voltage level. The converter output is therefore proportional to the time from the start of the sampling interval until the coincidence with the input voltage occurred. This proportionality affords a simple method of computing the sampling instant. Converter Selection. In spite of the bandwidth advantage of the free-running converter, most combined systems use the sampling converter. This is because the sampling converter recovers more rapidly after serving as a buffer than does the free-running converter which must have time to catch up to the input voltage. While this recovery time has little effect on the bandwidth of either converter, it provides a better buffering action for the sampling converter. The improved buffering action is important from the computer programming point of view. 3. CONTROL AND TIMING Definitions. In combined systems, the digital computer accepts inputs from the analog computer and computes results which are transmitted back to the analog computer. The time interval between two successive transfers of the same output variable to the analog computer will be called the cycle time. The time interval between accepting data and delivering results will be called the delay time. ProgramControl. For many digital computers, the time required to complete a program will vary from computation to computation, since the execution time of operations such as multiply depends on the magnitudes of the numbers being used in the computation. The variation in computation time for some digital computers could amount to ± 10 per cent or more. If all conversions from analog to digital or digital to analog were initiated under program control, these variations in program execution time would produce corresponding variations in the cycle times and COMBINED ANALOG-DIGITAL COMPUTING SYSTEMS 30-09 delay times for each computation. For many system studies, variations in cycle time produce effects not present in the system under simulation and their net effect on the simulation is difficult to estimate in assessing the value of the simulation study. These uncertainties can be eliminated by reducing the simula.tion time scale by 10 per cent and inserting sufficient idle time in the digital program to pad out each computation to a fixed length. In order to do this easily, the digital computer must provide interlocks with its input-output buffer. Re:ume enable Lock out enable r--- --------, I Write I I I I Test lock out I Read -+-----' I : L...---;'I~ I I Computer control derived from these pulses Wait read flip-flop Wait write flip-flop I : Initiate lock out read -i-------' : Initiate lock out write - . ; - - - - - - - - t - - - - - 4 - - - - - ' L ___________ J Input pulse from converter when data have been placed in in-out register FIG. 2. Resume pulse from converter after it has accepted data from in-out register Block diagram of input-output buffer and interlocks. Input-Output Buffer and Interlocks. Many of the commercially available digital computers either provide or can be modified to provide an interlocked in-out register, such as that shown in Fig. 2. The interlocks halt the digital computer if it attempts to read data from the in-out register before the external equipment has placed the data in the register. 30-10 UNUSUAL COMPUTER SYSTEMS The interlocks are released as soon as data have been placed in the register at which time computation resumes. Furthermore, the conversion equipment must be provided with a clock which can be manually set to control conversion at a fixed rate, independent of the operation of the digital computer. With the conversion interval set slightly longer than the maximum execution time of the digital computer program, the interlocks will hold the digital computation waiting for the converter clock to transfer data and release the interlocks. In this way, each segment of computation is started in synchronism with the converter clock. Where different computations, each with its own cycle time, must be interleaved, the same techniques are available. Sequencing Computations. Suppose a computation X is to be performed each conversion interval T, while a computation Y is to be performed once in each double interval, 2T. (See Fig. 3a, b.) Note that T is in seconds of problem time. This can be accomplished if the digital program is written to convert AID and D I A as follows: Read and convert data AID for the first computations Xl and Y 1 • Compute Xl' Write Xl results to the converter buffer. Complete half of the Y 1 computation. Convert X 2 data AID and Xl results D I A. Read in data for computation X 2 • Write X 2 results to converter. S. Complete Y 1 computation. 9. Write Y 1 results to converter. 10. Convert Y 1 and X 2 D I A, Y 2 and X 3 AID, and repeat the cycle. 1. 2. 3. 4. 5. 6. 7. This sequence completes two X calculations (Xl and X 2 ) and one Y calculation (Y 1) in the interval 2T. (See Fig. 3c.) The analog computer time scale is adjusted so that 2T seconds of problem time equal the nominal execution time of the entire digital computer program. The digital computer program will control conversions and provide the computations X and Y with approximate cycle time of T and 2T seconds of problem time. These cycle times will not be exactly periodic as pointed out earlier. The cycle times can be made exactly periodic by setting the analog computer time scale so that the maximum execution time of one cycle of the digital program is equal to 2T seconds of problem time. The conversions must also be placed under the control of the external clock which is set to convert every T seconds. In this way, the interlocks on the input-output register insert sufficient idle time at each conversion to accommodate the uncertainty in execution time of the digital computer program. (See Fig. 3d.) Note that while the COMBINED ANALOG-DIGITAL COMPUTING SYSTEMS 30-11 J L-T~ I-k.;----- 2 T - - - - - - ' (a) (b) ~> ~>- -<->- - ~ Timing uncertainties (c) r:I fYJN Idletime~~ 'd,etime,~~ ~Yl ~Yl 10 ~ ·ILl ~ Timing uncertainties (d) R S[3 . d ~-pa-rt-o-f ~[XZJ eo7~ -Y1 (Idle time - Timing uncertainties (e) FIG. 3. Time sequencing of computations: (a) X computation time; (b) Y computation time; (c) combined X and Y computation; (d) combined computations with idle time; (e) combined computation with Y computation divided unequally. actual execution time of the program is longer, the analog computer's time scale has been adjusted so that the longer interval still equals T seconds of the problem time. A difficulty sometimes occurs in dividing the Y computation into equal parts. Frequently, a long operation such as a multiply or divide will occur at the point where the computation is to be split. In this case, it is necessary to rewrite the program by performing the arithmetic opera- 30-12 UNUSUAL COMPUTER SYSTEMS tions in a different order, or to split the program unequally. An unequal split of the program necessitates inserting more idle time into the program during the cycle than would otherwise be necessary. If there are several computations to be interleaved, the basic period of the digital program may be quite long, containing many short computation intervals so that additional idle time inserted to offset the program segmenting difficulties can mount up. Program Interrupt. A feature available on several of the current large-scale computers is useful in attacking this problem. The program interrupt feature provides an input for an interrupt pulse from the converter clock. The interrupt pulse forces a jump in the digital computer program at the completion of the instruction currently being executed with provision for returning to the main program at the point where interrupted at a later time. With this feature, the interleaved X and Y computations would be programmed as two separate computations. The first computation is programmed to read data for the Y computation, compute Y, and write the results to the converter, with a jump back to the start. The second computation is programmed to read data for X, compute X, and write the results to the converter with a final jump to an unspecified location. The procedure is as follows. 1. The program is started in the Y loop. 2. The in-out interlocks halt the program immediately, since Y data have not been delivered by the converter. 3. At the first clock pulse, data transfer into the in-out register and release the interlocks. 4. At the same time, the program interrupt is initiated. 5. At the end of one of the early Y computations, the interrupt becomes effective, forces a jump to the start of the X computation, and sets the address in the jump instruction at the end of the X computation to return to the Y computation at the point of interruption. 6. In this way, the program executes one or two instructions of the Y loop, jumps out to the X computation, completes the X computation, and returns to the Y computation. It continues until the next converter clock pulse initiates data transfers between the two computers and interrupts the Y computation, forcing a jump which inserts the second X computation. 7. The program then returns to the Y loop, which it completes. 8. The program then jumps to the start of the Y computation, where the interlocks hold the program until new Y data are available from the converter. COMBINED ANALOG-DIGITAL COMPUTING SYSTEMS 30-13 With this approach, the analog time scale is set so that the maximum execution time of one Y computation and two X computations is equal to 2T seconds. The converter clock is set to interrupt at T seconds. The in-out interlocks synchronize the start of the Y computation, while the program interrupt inserts X computations at the appropriate time. (See Fig. 3e.) Data Transfers. Cycle time limits the highest frequency component of the response which the digital computer program can faithfully reproduce. Delay time represents a transport lag in the loop through the digital computer. In general, such a lag has a destabilizing effect on the system. Both the cycle time and the delay time are determined by the execution time of the digital computer program. It is important to eliminate as many housekeeping, or nonarithmetic, instructions as possible from the computer program, so that cycle and delay times may be minimized. For this reason, the conversion equipment should be designed to transfer data into the digital computer and accept results from the digital computer as rapidly as possible. The conversion equipment should be designed to require a minimum of control from the digital computer program. The control which the program must supply should be simple and direct so that valuable computer time is not lost in setting up data transfers (Ref. 7). 4. MODES OF OPERATION Sampled Data. The combined system is particularly useful for the simulation of large and complicated control· systems, particularly if the system includes sampled or digital effects such as a radar which obtains information at discrete times or a digital guidance computer. The division of the computational task between the two computers is somewhat arbitrary. The guiding principle is that high-accuracy computations must be performed digitally whereas low-accuracy computations may be performed by either analog or digital techniques. Furthermore, it is advisable, where possible, to place high-frequency effects on the analog computer and low-frequency effects on the digital computer. Computational Assists. The combined system is useful for the same class of problems that are normally placed on an. analog computer. The digital computer can very easily provide computational assistance in areas which are difficult for the analog computer. As an example, a simple time delay is difficult to simulate by analog techniques; the digital computer need only store sampled values for a specified time and then transmit a delayed value each time a new value is read in. A function of two variables is awkward for an analog computer to supply but easy UNUSUAL COMPUTER SYSTEMS 30-14 for a digital computer. While these examples are almost trivial, a properly designed combined system can be efficiently used for applications as simple as this. Time-Sharing Modes. A properly designed combined system can , of course, operate as an independent analog computer and an independent digital computer. It could also act as an independent analog computer and an independent combined analog-digital computer, by splitting the Analog integration Digital integration I I AID converter Analog integrator correction" term: ~-....., Step function from converter + Point slope digital integration FIG. 4. + + Output Combined analog-digital integration. analog equipment between the two computations. It is even possible by means of the program interrupt feature to time-share the digital computer so that an independent combined computation and an independent digital computation are performed simultaneously. In order to do this the digital computation system must reserve a block of cells for the analog computation so that the analog program can be in high-speed storage at all times. The program interrupt feature can then slip a small computation for the analog computer, such as a function of two variables, into the digital program I whenever the analog computer requires it, without appreciably affecting the execution time of the digital computation that is being executed independently. Digital Monitoring. The combined system has interesting applications in addition to the more obvious ones, suggested above, in which the computational load is split between the two computers in such a way COMBINED ANALOG-DIGITAL COMPUTING SYSTEMS 30-15 as to perform one part of the computation by analog techniques while the remainder is computed digitally. The more novel applications employ both analog and digital techniques for the same computational task. The analog computation is performed continuously with the periodic digital computation used to check and modify the analog computation so that the values are correct at the sampling instants. Integrations. Greenstein (Ref. 8) has suggested a method of integration which employs both analog and digital techniques. The input is sampled and integrated digitally as shown in Fig. 4. The sampled values are subtracted from the input waveform in an analog circuit which gives the sampling error. The sampling error function is integrated in an analog circuit, sampled, and added as a correction to the results of the digital integration. The combined analog digital integration produces results which are more precise than an analog integration and more precise than an all digital integr~tion with the same step size and an integration formula of corresponding complexity. REFERENCES 1. G. G. Bower, Analog-to-digital converters-What ones are available and how they are used, Control Eng., 4, 107-118 (1957). 2. T. C. Fletcher and N. C. Walker, Analog measurement and conversion to digits, ISA Journal, 2,345 (1955). 3. B. M. Gordon, High-speed reversible voltage-digital translators and their applications, 10th Annual Instrument-Automation Conference and Exhibit, Sept. 1955. 4. M. Palevsky, Hybrid analog-digital computing systems, Instruments and Automation, 30, 1957, 1877-80 (1957) 5. F. H. Blecker, Transistor circuitry for analog-to-digital conversion, WESCON, August 23, 1956, Los Angeles, Calif. 6. H. Freeman, Cycle and delay time considerations in a real time digital computer, Am. Inst. Elec. Engrs. General Meeting, CP 57-677, Montreal, June 24-28, 1957. 7. W. F. Bauer and G. P. West, A system for general purpose analog-digital computation, J. Assoc. Compo Mach., Jan. 1957 8. J. L. Greenstein, Application of AD-DAverter system in combined analog digital computer operation, Am. Inst. Elec. Engrs. Pacific General Meeting, June 1956. 9. H. K. Skramstad, Combined analog digital simulation of sampled data systems, Am. Inst. Elec. Engrs. Summer General M eeling, Montreal, June 24-28, 1957. 10. G. P. West, Combined analog and digital techniques, Proc. 4th Annual HighSpeed Computer Conference, Louisiana State University, March 5-8, 1957. Note. References 1 and 2 contain additional references. F UNUSUAL COMPUTER SYSTEMS Chapter 31 Simple Turing Type Computers Joseph O. Campeau ,. Basic Concepts 2. Functional Requirements 3. Machine Description 4. Mechanization 5. Programming 6. Communication with no Auxiliary Storage 7. Machine Comparisons References 31·01 31·02 31·03 31·07 31·01 31·13 31·15 31·16 I. BASIC CONCEPTS Time sharing is a basic design feature of general purpose digital computers. For example, the typical digital computer operates by timesharing an arithmetic element among all the arithmetical computations (Ref. 1). The time sharing saves equipment and results in a slower computational rate than would otherwise be achieved with less time sharing, for example, as in an analog computer. A complete set of logical elements is required to design the arithmetic unit and other parts of a digital computer. (See Chap. 17). The complete set of Boolean elements that is usually used in the logical design of digital computers consists of and, or, and not elements. The Sheffer stroke and Pierce function each are complete and can be used to form all logical Boolean functions. The concept of time sharing can be carried one step further. Consider a digital system which will operate by time-sharing an and gate, an or 31·01 31-02 UNUSUAL COMPUTER SYSTEMS gate, and a not gate among all the required logical Boolean computations (and hence also among all the arithmetic computations). Turing first described a general class of machines (see Ref. 2) and pointed out that, by using a few simple operations of the proper type, any digital computation could be carried out. In this chapter, machines of the logically programmed type will be called Turing machines in spite of the fact that the machine has more than one "tape" and the tapes are finite. This name will be used, although it will be recognized that Turing did not in his paper suggest the use of logical operations but rather used arithmetical examples to illustrate his ideas. Such a machine can be used (a) for computation or (b) to imitate other digital systems. Recent work has been concerned with the design of Turing machines (see Refs. 3 and 4). Much has been written on the logical implications of machines of this type, for example see Ref. 5. 2. FUNCTIONAL REQUIREMENTS In order that any Turing type machine be able to imitate any general purpose computer or be used for computation it must have at least the following three characteristics: (a) A storage equal in bit capacity to or greater than the machine it is to imitate. This can be satisfied many different ways, but one which requires a minimum amount of hardware is the use of a delay element with enough capacity to hold all the variables involved. This can be mechanized by using a circulating register on a magnetic drum, and will be called the main storage. (b) The communication ability to take any two bits located anywhere in the storage and pass them through a processing center and place the result anywhere in the storage. Information communication can be realized in one of two ways. The first technique is more direct and will be discussed at greater length. The second technique requires less equipment, but it is more complicated in its operation. (c) A processing center which can combine two bits of information to produce a third and or or function, be able to accept a single bit and produce its complement, and accept inputs to the Turing machine and produce outputs (or the equivalent of these operations). COllllllunication Techniques. The first technique, in its simplest form, utilizes an auxiliary storage S2 of a single bit capacity. When any particular bit is to be moved relative to all the other bits in the main storage Sl, it is transferred to S2. By then waiting the appropriate number of bit times until the second bit involved emerges from Sl, it is possible to present the two desired bits of information to the processing center at the same time. The output from the processing center can then SIMPLE TURING TYPE COMPUTERS 31-03 be set into 82 and by again waiting the appropriate number of bit times this output can be placed anywhere in 8 1 • In this form 82 could consist of a single flip-flop, for example. A less simple version of the 82 communication technique involves a multi bit delay 82. Provided that the lengths of 81 and 82 have no common multiples other than unity, it can be shown that any bit in 82 will eventually come next to any bit in 81. Thus whether 8 2 is of single or multibit capacity it still serves the same basic purpose of information communication, and allows any particular bit to be placed anywhere at all in 81. The multi bit delay can be mechanized by using a second circulating register on the drum. This communication technique allows the con~ struction of a Turing machine which will have no storage external to the surface of a drum. The second information communication technique does not require an 8 2 but makes use of a tap on 81. This technique will be described in Sect. 6. 3. MACHINE DESCRIPTION Operations. The following three operations will perform all the functions mentioned in the previous sections. Note. The main storage 81 and auxiliary storage 82 systems are said to be synchronous when they operate on a common clock, asynchronous if they do not. (a) Do Nothing (DN). Circulate the main and auxiliary storages (81 and 8 2). (b) Combine (C). Combine the two bits coming from 81 and 82 in the operation if + B, i.e., the Sheffer stroke, AlB, (the Pierce function, ALB, will also work) and place the result in 8 2 • Transfer the bit which came from 82 to 81. (c) Input-Output (I). (1) For synchronized systems, read the input bit into 8 2 , read out the bit coming from 8 2 • (2) For asynchronous systems, read the two input bits into 8 1 and 8 2 and read out the two bits emerging from 8 1 and 8 2 . Use of Operations. DN operation is used for communication. The machine will circulate 81 and 8 2 until the two desired bits emerge at the same time and then either the C or the I operations will be used. The C operation can be used to mechanize the and, or, and not operations, as well as provide communication between 81 and 82. The I operation is self-explanatory. Sheffer Stroke. In this chapter a machine will be developed by using the if + B function, although a similar treatment can be used for the A . B operation. The if + B operation is summarized in Table 1. 31-04 UNUSUAL COMPUTER SYSTEMS TABLE 1. SHEFFER STROKE FUNCTION, A B 1+13 o o 1 1 1 o 1 1 1 o 1 1 + 13 o Notation. Assume a single bit S2. A three-row matrix is used: (a) the first row refers to information coming from 8 1 ; (b) the second row, for a given column, will specify the operation which combines the bits in the first and third rows, that is, C, I, or DN; (c) the third row will refer to information from 8 2 . And Function. The program which will form the and function for desired bits A and B in Sl and place the result back into Sl is shown in matrix form in Table 2. TABLE 2. PROGRAM FOR THE and FUNC'l'ION Main storage, 81 0 A 1 B Operation C DN C DN C DN C DN Auxiliarystorage,82 X 1 ... 11 ... 1 A ... A 1+13 1 C 1+13 X DN C AB ... AB Initially it is assumed that S2 is in some arbitrary state X, and that at least one 0 and two l's are available from known locations in Sl. The ... are used to indicate that a certain number of bit times must elapse before the required information is available. Recall that the C operation transfers the variable that came from 8 2 to 8 1 • The operation is then as follows. 1. The C operation combines the 0 with X to produce 0 + X = 1 in S2. 2. The DN operation is then used to hold the 1 in the S2 until A, the first bit, emerges from Sl. Then A coming from Sl is combined with the 1 in S2 and I + A = A is set into S2. 3. This is held in 82 by the DN operation until the 1 emerges from Sl. This is combined with the A from S2 and the result, I A = A, is set into S2. 4. This is held in 82 by the DN operation. When B, the bit to be combined with A, comes from Sl, B is combined with A to produce A B. This is set into S2. 5. The DN operation is again used to hold A + B in S2. When the second 1 comes from Sl, A + B is combined with 1 and the result I + (A + B) = AB is set into 8 2 • 6. The operation DN is used to hold the desired and function, AB, in 8 2 until the desired location (arbitrary state, X) in 8 1 emerges. At this time, in column eleven, the C operation is used to transfer AB from S2 to 8 1 • + + SIMPLE TURING TYPE COMPUTERS COlllplelllent. 31-05 The matrix form of the complement program is shown in Table 3. TABLE 3. PROGRAM FOR COMPLEMENT 81 0 Operation C DN X 1 ..• 82 Or Function. in Table 4. A C DN 1 A ... X C A The matrix form of the or function program is shown TABLE 4. PROGRAM FOR or FUNCTION A 81 0 X 0 B A X Operation C DN C DN C DN C DN C DN C C DN X 1 ... 1 A ... A X+A ... Xl ... 1 B ... B A+B ... A+B S2 Notice that once A has been developed it is sent from 82 to 8 1 by the combine operation at the fifth column. At the eleventh column the A coming from the main memory is combined with the [j in 82 to give A B. The X indicates an arbitrary value in 8 1 which will be replaced by A + B. Regeneration. The combine operation also requires that the bit emerging from 82 be set into 81. This means that whenever a bit from 8 2 is combined, that bit will no longer be in 82. It will have been used up in the operation. It is therefore necessary to have a process which will generate extra quantities from a given quantity to replenish this variable as it is "used up" by the combine operation. Note. For clarity, the DN operations will be omitted from programs. The use of this operation for communication is indicated in Tables 2 to 4. To develop an extra A (where A is any Boolean variable) in 8 2 , given a single A, four l's, and two O's on the drum, first develop A using the program of Table 5. This program generates an extra A needed in the process without using up an A, any l's or O's. + TABLE 5. PROGRAM FOR GENERATING THE COMPLEMENT OF A VARIABLE SI o 1 Operation S2 C X C 1 X C o A C 1 1 X C C A A A This process uses up one 0, two l's, and an A. It produces one 0, two l's, an A and an A. Since the process ended with all the input quantities plus the A, it is self-sustaining. UNUSUAL COMPUTER SYSTEMS 31-06 Generating Extra Variables. Now given the A, the A, four l's, and two D's, an extra A can be generated by the program of Table 6. TABLE 6. PROGRAM FOR GENERATING AN EXTRA VARIABLE 81 Operation 0 C 1 C 82 X 1 X X 0 1 C C C C 1 j( 1 o X C o A C 1 1 1 A C C C A A A 'X C A The inputs to this process were four l's, two D's, an A, and an A. The outputs were four l's, two D's, two A's, and two A's. Thus the program is self-sustaining and also produced the extra desired A. Generation of I's froIIl O's. Initially S1 will be set to all zeros or at least there will be two D's in known locations in S1. A 1 can be generated from zeros jn a self-sustaining manner. The program which does this is shown in Table 7: TABLE 7. 81 Operation 82 PROGRAM FOR GENERATING X C o 1 C C X 1 ... j( C 0 1 l's X C o FROM 1 C 1 O's o The steps are as follows: 1. The process starts with a 0 and produces a 1 in S2 by 0 + X = 1. 2. The 1 in S2 is stored in S1 by X + I = X. 3. A second 1 is then produced in 82 by repeating the first step on a second O. 4. Combine the 1 from S1 with the 1 in S2 to form 0, I I = O. Note that in this process the 1 in S1 has been replaced by the 1 from 82. 5. The 0 in S2 is used to replace the original 0 in S 1 by 0 X = 1 and at the same time starts the sequence again. Thus the process produces l's from D's and can regenerate D's. Self-Sustaining Quality. Even though the combine operation "uses up" the quantity coming from S1, given all D's initially in S1, l's can be generated and for each A at least two A's can be produced. By using these processes any desired number of l's, D's, and A's (any variable) can be generated, so that the machine as a whole is "self-sustaining." Adder Logic. As an example of the use of the DN and C operations, the sum and the carry logics will be generated. The sum and carry logics, given the previous carry K and the bits of the two binary numbers being added together, A and B, is: + + + ABK + ABK + ABK K = AB + BK+AK S = ABK SIMPLE TURING TYPE COMPUTERS 31-07 where S is the sum and K is the new carry. The program to generate these two functions is given in Table 8. The C operation has been dropped out, since it is always implied. It is also understood that enough extra A's, B's, l's, O's, etc., will be generated using the processes described above to make this process self-sustaining. TABLE 81 82 81 82 81 82 A 1 1 B 1 B A SUM AND CARRY LOGICS FOR AN ADDER E A+E K 0 A A+B AB+AB K+AB+AB 0 K+AB+AB K AB+AB K+AB+AE 8 = AER+ABK+ABic+ABK A K A+B B A+B K+AB K = AB+BK+KA A AB+AB 1 8. 0 A+B A 1 Input-Output. With regard to the input-output operation for two synchronous systems, only a single bit need be transferred. The communication for both inputs and outputs can be a train of O's until some information, (either a 1 or a 0) is to be transmitted. At this time first a 1 is transmitted followed immediately by the information bit. Thus to send 1 0 1 and then 1 1 after a slight delay, send the following sequence: o 0 0 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 o. In the case of two asynchronous systems, it is necessary to transmit two bits each for input and output. Assume that the duration of the transmitted signal will always be at least one bit time long (receiver time). The information transmitted as (a) the information bit (either 1 or 0) and (b) the clocking bit. The information bit will be set and then the clocking bit will go from 0 to 1. The receiver samples the information line when the clocking line goes from 0 to 1. 4. MECHANIZATION The specific Turing machine described above can be mechanized by using a drum storage. A single program register of length 2p bits with two read stations p bits apart will be required, where p » m and m is the length of the SI register. Assume asynchronous inputs and outputs. The order code for the machine is given below: Combine Do nothing Input-output PI 0 {~ 1 P2 0 1 0 1 The logic for the machine using set-reset flip-flops (see Chap. 17) as follows: IS UNUSUAL COMPUTER SYSTEMS 31-08 Auxiliary Storage (S2) Flip-Flop A SA = PI RA = PI P2 P2 if + PI P2 VI AR + PI P2 VI Main Storage (SI) Write Flip-Flop W 8W = (P1P2 + P1P2)R + A P1P2 + P1P2V2 RW= SW where R is the main storage (8 1 ) read flip-flop, and VI and V2 are the two input bits. Outputs VI = PI V2 = PI P2 P2 A R The computer block diagram is shown in Fig. 1. Inputs Processing center (no storage) Outputs 82 ~ H FIG. 1. I-- 81 PS PS ~ Block diagram of Turing type computer: 8), main storage; 8 2, auxiliary storage; PS, program storage. Note that only one program storage (PS) with two reading heads on it was required. Since only three different operations are used rather than four, it is possible to use only one program register as follows. By making the order code for the DN operation either of the two codes 01 or 10, it f§ .....:;.---...---'--_ _ _2__-_l_ _ _ P FIG. 2. Alternate form of program storage. of delays SIMPLE TURING TYPE COMPUTERS 31-09 is possible to make the machine operate satisfactorily even though the same bit of information will be used alternately for PI and P2. As a final point it is interesting to note that it is also possible to construct a program storage as in Fig. 2. In using this type storage it will always be necessary to place at least one DN operation between each C and I operation although any number of C or I operations can be placed adjacent to one another. . 5. PROGRAMMING While the logic for the Turing machine as well as the information in the program channels is fixed, it is nevertheless possible to have this machine imitate any general purpose digital computer within the capacity of the program and main storages in all respects except speed of operation. Terlllinology. The actual physical logic for the Turing machine will be called the first level logic. The fixed program in the program memory will be called the first level program. The logic for the digital system that the Turing machine is imitating will be called the second level logic. Note that the Turing machine's first level program is used to imitate the second level logic. The second level machine will be the computer that the Turing machine is imitating. Finally it is instructive to note that the second level computer will have its own program. For example, the second level machine might be Frankel's computer (see Ref. 1), and this computer has a program. The program for the second level machine will be called the second level program. This program will be changeable and will be located physically in the main storage. It is instructive to note that while the first level program (located in the program channels) cannot be changed without the use of extern21 filling equipment, the second level program can be altered without the addition of any extra physical equipment to the Turing machine. This is true since the Turing machine already contains within itself the ability to alter the contents of its own main storage. First Level Progralll Design Exalllple. In order to illustrate tl:e techniques involved in designing a first level program a simple digital system will now be considered. This digital system is to accept asynchronous input pulses and count them. At every fourth pulse it is to reset the counter to zero and send out a counting pulse. The first step in the process is to write out a second level logic which will accomplish the desired task. This logic must be written in terms of delay elements each of which has one input and one output. The particular system under consideration will require two delay elements called Ql and Q2. The input pulse will be called U and the output pulse will be called V. The logic for the system is: UNUSUAL COMPUTER SYSTEMS 31-10 + QIU N2 = QIU + Q2U Nl = Q2U U = UlnUln-l V = UlnUln_l QIQ2 where Nl and N2 are the next states of Ql and Q2 and Ul n and Uln-l are the present and previous values of Ul input line. The counter QIQ2 counts the sequence shown in Table 9. It repeats its TABLE 9. Time Ql Q2 1 0 2 1 1 0 0 3 4 5 - COUNTER SEQUENCING r-- 0 0 Generate all required 1'5, 0'5 Ql's, Q2's, etc. 1 1 0 -- r-- L....-.. ~ Generate Nl Generate N2 If; Generate output f-+~I- ~~ Output V U In put Ul - FIG. 3. Generate U ~ Sequence of operations to be performed. SIMPLE TURING TYPE COMPUTERS 31-11 pattern every fourth count. The signal U1 n Ul n _ 1 = U occurs once each time the asynchronous input U1 goes high. Assume that contact bounce will not last for a complete circulation time of the main storage. There does exist a logic which will bring in three bits to the Turing machine as inputs. One can be the break and a second the make signal so that contact bounce difficulties can be eliminated entirely. First write in block diagram form a flow chart (see Fig. 3) to indicate the order in which the operations are to be performed. The first level programs are shown in Table 10. 10. TABLE a. FIRST LEVEL PROGRAMS Generate U Second level logic : U = Ul n Ul n- 1 Program: X 1 Uln--l ICC X b. U = Ul n Ul n + Uln-l U = Ul n Uln-l Generate V Second level logic : V = Ul n Uln-l QlQ2 = UQlQ2 Auxiliary storage holds U from U generation Program: Ql 1 C 'fJ U Q2 C + Ql 1 eel UQl c. + Q2 + Ql V = QIQ2U Generate Nl Second level logic : Nl = Q2 U Program: 0 Q2 C C 1 X d. U U C 0 C Q2 fT-t- U Q2 C 1 Ql C ii + Q2 U Ql Generate N2 Second level logic: N2 = Ql U Program: Ql C 1 1 C Ql + Ql fj 0 C C +U Nl = Q2U + QIU = QIU + Q2U + Q2 fj U 0 U Q2 C Ql C C C Qi+U 1 U Qi +U C Q2 +U N2 The total program must also regenerate used up quantities in order to be self-sustaining. UNUSUAL COMPUTER SYSTEMS 31-12 TABLE 11. PROGRAM MATRIX A digital system that accepts asynchronous input pu]ses and counts them. At every fourth pulse the counter is reset to zero and sends out a counting pulse. c c - c c c c c c c c c c c c c c c c c - c c c c c c - - - - - - - - c - c c c c c - - - c - - - - C - - - - c - - C - - C - - - c - c - c - - - - - - - - c - - - - - - - - c - - C - - c - c c - - C - c - - - - - - c - c c c c c - - - - - - - - - c c - - - - - - - c - - - c c c c - - - - - c c - - - - - - - - - - - - - - - - - - - c - c - - c - c c c - c c - - - - - c - C C - C C - - - C C - c - - C - ICC C C - - - C - - - - - C - C - C C C - C - - C - - - C - C C - - - C - C - C - C - C - - C - C - - C C - - C - C C - C C - I--·-- - C C - - C - - C - C C - - - - - - - - C C - C - C C - C - Detailed ProgralD. The program itself can best be described using a matrix. For this particular problem a machine with a program 920 instructions long was used. The program channel was 1840 bits long. The main storage was 23 bits long. This means the program recirculates each 40 circulations of the main storage, i.e., 23 X 40 = 920. The matrix SIMPLE TURING TYPE COMPUTERS 31-13 mentioned above will give the instructions during the ith (i = 1, ... , 40) revolution of the main storage in row 4I-i. The matrix is 23 by 40 and if the program positions are numbered 1, ... , 920, then element Qii in the matrix will give the program operation which is to occur at program position 23(40 - i) + j(i = 1, ... ,40; j = 1, ... , 23). The program matrix has been shown below in Table 11. C and I stand for combine and input-output, respectively. A blank space will stand for do nothing. Inputs - - - - - - - - - : l - - - i Processing center I--_----'~--- Outputs Mafn Main storage Program storage Program storage FIG. 4. Block diagram of a Turing type computer having one main storage with a tap. 6. COMMUNICATION WITH NO AUXILIARY STORAGE The Turing machine described in this chapter made use of an auxiliary storage for information communication. It was shown that this could either be a single bit storage (a flip-flop) or a multi-bit storage (provided the main and auxiliary storages had no common multiple other than unity. There is a communication technique which does not require the use of an auxiliary storage but instead requires only a tap in the main storage. One structure a machine of this type can have is as shown in Fig. 4. The logic for the machine in terms of set-reset flip-flops is: Write flip-flop W: SW = PIP2R R-rV = PIP2R + PIRW + piWP2 + PI WU2 + P2RW + PIP2UIW Outputs, VI and V2: VI = PIP2WR V2 = PIP2WR UNUSUAL COMPUTER SYSTEMS 31-14 The program is on fixed channels on the drum and is not altered. The order code for the machine is: Operation P1 0 0 1 1 C, combine· (A + B) I, input-output E9, exclusive or (A E9 B) DN, do nothing P2 0 1 0 1 The DN, C, and I operations are essentially the same as described earlier. The exclusive or operation, A E9 B (or AB .irB) operates on the bits coming from the main storage as shown in Table 12. + TABLE B 0 1 0 1 A 0 0 1 1 12. Exclusive Or, A E9 B 0 1 1 0 The result is set into the main storage. Only the communication mechanism will be described for this particular machine. What must be shown is that any two bits in the storage can be brought adjacent to each other so that they can be operated on. Basically the problem is one of having to move a single bit of information "by" the other bits and next to the bit with which it is to be combined. First assume initially every other bit in the storage is a 0 and that the following sequence exists in the storage: A o B o F o D It is desired to move A past Band F so that A and D can be operated on. After such a move the storage sequence would then be: A o B o F A D The process which does this is shown in Table 13. The E9 is used for the exclusive or operation. Thus the final result was that A and D are adjacent and can be operated on. The communication technique described above made use of a single bit delay on the storage. It can also be shown that as long as the tap distance and the overall length of the main storage have no common multiples other than unity that this technique will also work. Thus again it is possible to build a machine with no logical flip-flop, i.e., all storage on the drum. SIMPLE TURING TYPE COMPUTERS TABLE 13. 31-15 PROGRAM FOR SHIFTING VARIABLES TO MAKE THEM ADJACENT Read Operation Write A 0 B 0 F 0 DN Ef:) DN Ef:) DN Ef:) DN A A B B F F Read Operation Write A A B B F F D DN DN Ef:) Ef:) Ef:) Ef:) DN A A AEf:)B A AEf:)F A Read Operation vVrite A A AEf:)B A AEf:)F A DN DN D DN A Read Operation Write A A DN DN A A Read Operation Write A A DN DN Read Operation Write D DN Ef:) DN A AEf:)B A F A AEf:)B A F A DN Ef:) DN DN D DN AEf:)B B F A AEf:)B B F A D Ef:) Ef:) DN DN DN A A B 0 F A A A B 0 F A Ef:) DN DN DN D DN DN DN A 0 B 0 F A D D DN D D D D 7. MACHINE COMPARISONS Definition of a Measure. One measure of performance of Turing type machines is the sum of the number of bits transferred to and from the processing center per bit time of computer-processing. Define number of bits as the logarithm to the base two of the total number of states represented. For example, two binary lines are required to represent three states, but the number of bits being transferred is log23 = 1.57. This measure (a) is not dependent on the clock frequency of the computer. In determining a all information transfers from the storage should be considered as well as all inputs and outputs to the computer. In considering information processing note that in certain instances such as circulating storage registers on drums and delay lines or composed of flip-flops there is a continuous transfer of information from one storage cell to the next. Even though there is movement of information, it will not be considered that information processing occurs, provided that the transfer always occurs. COIllparisons. For example, a circulating register on the drum closed on itself would have a = O. Thus, a = 0 means no processing of data is occurring, even though information is circulating. The first machine considered which made use of an auxiliary storage 31-16 UNUSUAL COMPUTER SYSTEMS + for communication has an a = 8 log23 = 9.6. Four of the bits come from the input and output (assuming asynchronous inputs and outputs), 2 come from the main storage, 2 from the auxiliary storage, and log2 3 come the program. The second machine considered which did not make use of an auxiliary storage for communication had a = 9. (4 for input-output, 2 for program, and 3 for main storage.) Thus the second machine is seen to have a slightly smaller a measure than the first. A theoretical minimum a for a general purpose digital computer can be developed. For asynchronous inputs and outputs at least four lines are required. The processing center must have at least two inputs from the memory and one output to the memory. Thus a minimum possible value of a = 7 for asynchronous inputs and outputs is obtained although in this paper the minimum value machine presented had a = 9. The machine with a = 9 appears to be the Turing machine with the le3.st a which still can be a general purpose digital computer with asynchronous inputs and outputs. REFERENCES 1. S. P. Frankel, The logical design of a simple general purpose computer, I.R.E. Trans. Elec. Comp., March 1957. 2. A. M. Turing, On computable numbers, with an application to the entscheidungsproblem, Proc. London Math. Soc., 42, 230-265 (1936). 3. W. E. Smith, A digital system simulator, Proc. West. Jt. Compo Con/., Feb. 26-28, 1957. 4. J. Blankenbaker, Logically micro-programmed computers, I.R.E. Trans. Elec. Comp., 4, June 1958. 5. C. E. Shannon and J. McCarthy, Editors, Automata Studies, Annals of Mathematics Studies, No. 34, Princeton University Press, New Jersey (1956). INDEX AO, AI, A2, 2-158 A3, Arithmatic, 2-158 ABC, 2-158 ABC I, 2-159 Academy of Sciences of the Soviet Union, 2-188 Acceptance tests, simulation, 2-239 Access requirements, files, 4-06 Access time, magnetic drum, 19-05 storage, (table) 4-13 Accounting, casualty insurance, 8-08 report preparation, 8-09 data processing, 8-19 dividend, 8-02 inputs and outputs, 8-03, 8-09, 8-12, 8-15 life insurance, 8-01 processing steps, billing, 8-13 casualty insurance, 8-10 life insurance, data, 8-03 payroll and salary distribution, 8-15 quantity of data, 8-03, 8-10, 8-12, 8-15 salary distribution, 8-15 staff, 8-02, 8-09, 8-13, 8-16 Accounting machine, line printers, 5-35 Accuracies, analog computers, 22-37 electrolytic tank, 25-11 quarter square multiplier, 23-09 resistance networks, 25-19 resistance paper, 25-06, 25-07 servo multiplier, 23-04 time division multiplier, 23-07 ACM, 1-02,2-186, 2-190, 2-261 A-C network analyzers, 25-20 ACOM, 2-156 Acoustic delay line storage, 19-29 A-C resolvers, 23-32 Across-through relations, (table) 24-04 Across variable, 24-03, 25-02 Adams method, 2-229 Adams and Milne method, 10-09 Adders, binary, 18-08 decimal, 18-27 full, 18-09 half, 15-22, 18-08 incremental computation, 29-25 Kirchhoff, 18-10 mechanical, 27-02 operational digital, 29-10 parallel, 18-11 symbols, 18-03, 18-10 transistor, 16-11 Turing computers, 31-06 Addition, see Adders Addresses, 2-56 degenerate, 12-28 floating, 2-161 indirect, 2-193 modification methods, 2-60 number per instruction, 12-27 relative, present, 2-192 sorting, 2-146 symbolic, 2-160 system, requirements, 2-56 Addressing, 5-07 Add-substract, 18-16 ADES II, 2-157 Adjoint system, 26-07 AFAC, 2-156 AlEE publications, 2-261 Aircraft production, scheduling, 9-07 ALGEBRAIC, 2-159 Algebraic equations, simultaneous linear, 10-02 Algebraic language, 2-186 Soviet compiler, 2-228 Algorithms, 2-190 2 INDEX Allison, G. M., 2-156, 2-157 Allstate Insurance Company, 8-08 Alphabetic information, 5-39 Alphanumeric codes, 5-05 Datatron 205, (table) 2-108 AMA publications, 2-261 Ambiguous-word logic, 2-54 American Airlines, 9-01 American Institute of Electrical Engineers, 2-261 American Management Association, 2-261 AM-FM multiplier, 23-10 Amplifiers, operational, 22-08, 22-16 characteristics, 22-16 chopper, 22-31 design, 22-16 drift, 22-17 drift corrected, 22-30 drift errors, 22-36 errors, 22-33 gain, 22-09, 22-16 gain errors, 22-33 integration, 22-09 noise errors, 22-36 sign inversion, 22-09 summation, 22-09 summing integrators, 22-09 transfer impedance, (table) 22-18 pulse, 14-21 . torque, 27-04 Amplitude scale factors, 22-10 Analog computers; see also Analogs accuracy, 22-37 A-C resolvers, 23-32 amplifiers, 22-04 analog-digital computing systems, see Analog-digital computing systems applications, 21-09 classification, 21-02 comparison with digital computers, (table) 21-02 continuous, 21-04 curve followers, 23-14 diagrams, 22-03, 21-11 differential analyzers, 21-04 differential equation solution, 22-01 differentiation, 22-03 digital differential analyzers, 21-04, 2802; see also Digital differential analyzers Analog computers, digital operational computers, 28-11 digital techniques, 28-01, 28-15, 29-01; see also Operational digital systems diode switching, 23-23 direct, 21-03, 21-10 discrete, 21-04 discrete variable representation, 28-14 division, 23-12 electronic and mechanical, 27-02 engineering problems, steps in the solution of, 21-06 equations, solution, 27-09 errors, 22-33 field problems, 25-01; see also Field problems; Analogs function generators, 23-14; see also Function generators function mUltipliers, 23-01 general purpose, 21-02 hybrid systems, 29-01 implicit computation, 23-32 indirect, 21-04, 21-09 initial conditions, 22-10 input requirements, 21-05 integration, 22-04, 22-07, 22-09, 23-13, 23-25, 27-03 limiters, 23-23 linear elements, 22-01, 22-03 long-time, 21-04 mechanical, 27-01; see also Mechanical computers multiplication, 22-04, 23-01, 27-02 noise, 26-01; see also Noise noise generators, 26-12; see also Noise generators nonlinear electronic elements, 23-01 notation, 22-03 operating frequencies, 22-12 operational amplifiers, 22-08; see also Am pli fiers, operational operational digital techniques, 28-11, 29-01; see also Operational digital techniques output requirements, 21-05 parailel operation, 21-02 passive computing elements, 22-04 problem setup, 21-07, 22-12 recorders, 23-34 INDEX Analog computers, rectangular to polar transformations, 23-32 relays, 23-23, 23-29 sawtooth wave generation, 23-29 scale factors, 21-07, 22-10, 27-14 servodriven potentiometers, 23-31 short-time, 21-04 simulation, 23-25; see also Simulation special purpose, 21-02 square wave generation, 23-29 statistical problems, (table) 26-10 statistical techniques, 26-01 summers, 22-04, 22-09 summing integrator, 22-04,22-09 switching devices, 23-23 symbols, (table) 21-10,22-03 systems, 29-02 time delays, 23-35 transfer function representation, 22-13 transfer impedance, short circuit, (table) 22-18 trigonometric devices, 23-31 variables, 22-02, 22-11 Analog-digital computing systems, 30-01 applications, 30-01, (table) 30-03 buffers, 30-09 control and timing, 30-08 converters, 20-44, 30-04 data transfer, 30-13 digital monitoring, 30-14 input-output buffer and interlock control, 30-09 integration, 30-15 interlocks, 30-09 intelrupt feature, 30-12 problem types, (table) 30-03 sequencing, 30-10 time sharing modes, 30-14 Analog-digital converters, 20-44, 30-04 applications, 20-44, (table) 20-45 bandwidth, 30-06 buffering action, 30-05 codes,20-45, (table) 20-46 code wheels, 20-52, (table) 20-56 combined systems, 20-45, 30-04 digital-analog, shaft position, 20-60 time interval, 20-57 voltage, 20-58 digital codes, (table) 20-46 electronic, 30-04 3 Analog-digital converters, equipment, 20-44, (table) 20-45 feedback methods, 20-47, 20-60 free running, 30-04,30-06 frequency conversion, 20-48 incremental pattern methods, 20-56 incremental systems, 29-18 indirect, 20-47, 20-57 mechanical, 30-04 plotters,20-63, (table) 20-65 pulse width, 30-05, 30-07 ramp method, 20-49 RC networks, 20-60 resistance networks, 20-58 sampling, 30-04, 30-06 shaft position, 20-51 ambiguities, 20-52 coded patterns, 20-51 code wheel converters, 20-55, (table) 20-56 cyclic binary codes, 20-52 digital-analog, 20-61 dual brush method, 20-52 incremental, 20-56 indirect, 20-57 mechanical brush, (table) 20-56 multispeed coders, 20-55 photoelectric, 20-56 V brush method, 20-54 specifications, 20-44 successive approximation method, 20-63 techniques, 20-44 time interval, 20-47, 20-57 voltage, 20-48, 20-58, 20-62 cascaded stages, 20-50 cathode ray tube, 20-48 ramp method, 20-49 Analogs, 24-01; see also Analog computers across-through relations, (table) 24-04 across variables, 24-03, 24-12 conducting liquid, 25-06 conducting sheet, 25-05, (table) 25-07 continuous, 21-04 electric, 25-05 correspondences, (table) 24-09 direct, transfer function representation, 22-13 discrete element electric, 25-11 duality, 24-08 4 INDEX Analogs, electrical analogy, 24-01 electrolytic, 25-08 electro-optical, 25-23 elements, 24-04; see also Elements energy, 24-07 fluid mappers, 25-22 junction technique, 24-04, 24-05, 24-09 nonelectric, 25-22 path technique, 24-04, 24-06, 24-11 quantities, (table) 24-09 relation ,to duals, 24-10 resistance paper, 25-05 stretched membranes, 25-22 symbols, 24-04 terminology, 24-03 through variables, 24-03, 24-12 Analogy basis, discrete electric analogs, 25-11 Analyzers, digital differential, 12-12, 21-04, 28-02, 29-13 And circuits, 14-34, 17-04, 17-12 magnetic cores, 15-17 transistors, 16-10, 16-18 AN /FSQ-7, 13-03 Arithmetic, classification of subroutines, 2-180 incremental computation, 29-21 instructions, see Instructions operations, 2-59 operators, 2-229 programming, 2-02 programming boxes, 2-131 Arithmetic checks, (table) 13-03, 13-06 Arithmetic and control unit, 12-06, 18-01 adder, 16-11, 18-08, 18-11; see also Adders adder-subtractor, 18-16 binary counters, 18-04 binary operations, 18-03 checking, 18-32 comparison, 18-31 control unit design, 18-33, 18-35 counting, 18-26 decimal operations, 18-25 design, 18-35 division, 18-21 equipment, 5-38 external control, 18-34 extract, 18-31 fixed point, 18-32 Arithmetic and control unit, flip-flop logic, 18-02 floating point, 18-32 logical design, 17-26 logical transfer, 18-31 magnetic cores, 15-22 multiplication, 18-16, 18-27; see also Multiplication notation, 18-02 number system conversion, 18-23 programmed control, 18-34 readin, 18-07 shifting registers, 18:-05 special operations, 18-30 square root, 18-22 subtractor, 18-14; see also Subtraction symbols, 18-02 zero representation, 18-16 Arrow, 2-111; see also Strela Assemblers, see Assembly programs Assembly programs, 2-161; see also SAP directory, 2-164 IBM 704, Share assembly program (SAP), 2-164,2-165,2-167 location counter, 2-164 one-pass, 2-164 PACT, 2-162 pseudo instructions, 2-165 symbolic addresses, 2-163 two-pass, 2-164 utility, 2-183 X-I, 2-162 Association for Computing Machinery, seeACM Asynchronous computers, 17-02, 17-05 AT3, MA THMA TIC, 2-158 Atomic Instrument Company, 20-18 Auerbach Electronics Corporation, 16-30 AUTOCODER, 2-156, 2-157 Autocorrelation function, 26-05 Automatic checks, 3-13 Automatic coding systems, (table) 2-156; see also Automatic programming Automatic data acquisition, 29-17 Automatic programming, 2-02, 2-12, 2-159 algorithms, 2-190 assembly programs, 2-163; see also Assembly programs business systems, 7-03 combined systems, 2-163 INDEX Automatic programming, compiler, Soviet, 2-228; see also Operational programmin(J compilers, 2-160, 2-186; see also Compilers; '1'ranslators control instructions, 2-160 easy mistake discovery, 2-162 elimination of repetitious coding, 2-161 floating addresses, 2-161 future trends, 2-189 generators, 2-163; see also Subroutines, generatots input languages, 2-160 integrated systems, 2-184; see also Integrated systems interpreters, 2-234; see also Interpreters IT translator, 2-200; see also 1'1' compiler-translator languages, 2-186; see also Languages logic machines, 11-08 mnemonic codes, 2-160 objectives, 2-159 preset parameters, 2-161 prevention of mistakes, 2-163 program parameters, 2-161 pseudo instructions, 2-162 recursive languages, 2-244 Soviet algebraic language compiler, 2-228 subroutine generators, 2-182 subroutines, 2-161, 2-167; see also Subroutines symbolic addresses, 2-160 synthetic instructions, 2-162 systems, (table) 2-156 translation, 2-160 translator construction, 2-221; see also '1'ranslator construction translators, 2-186; see also '1'ran.~lators understandable language, 2-160 unification of techniques, 2-163 universal computer language, 2-163 utility programs, 2-162, 2-183; see also Utility programs Auxiliary equipment, 7-08 magnetic tape, 20-42 punched card, 20-31 Avidac, 12-09 BO, FLOWMATIC, 2-158 5 Babcock and Wilcox, 2-158 BACAIC, 2-157 Backlash, simulation of, 23-27 BALIT AC, 2-157 Bandwidth, analog-digital converters, 3006 BAP, 2-156 Base, 12-12 BASE 00, 2-159 Base counter, MIDAC, 2-118 B box, see Index registers BELL Ll, L2, L3, 2-157 Bell Telephone Laboratories, 2-157, 12-09, 16-02, 16-15, 16-30 relay calculator, 2-167, 12-09, 13-03 Bendix Computer Division, 2-263, 12-09 G-15,2-64 Intercom system, 2-241 BESM, 2-111, 2-188 Biharmonic equation, 25-04, 25-19 Biharmonic operator, 25-02 Binary arithmetic processes, 12-21 multiplication, 18-16 Binary coded decimal, 5-05, 18-26 counter, transistors, 16-28 systems, 5-05, 12-18 8421 system, 5-05, 20-46 Binary coded number systems, 12-18 Binary codes, 20-46 Binary counters, 18-04 Binary-decimal conversion, 2-20 Binary digit, 3-06 Binary number system, 5-05 Binary rate multiplier, 29-05 Binary scalers, 29-05 Binary states, 17-02 BIOR,2-158 Biquinary code, (table) 12-21 Bistable storage elements, 17-05 Bizmac, 2-56 B line, see Index registers Block diagrams, computer solution, 2-04 logical design, 17-28 storage, 19-02, 19-06, 19-17 Blocking oscillators, 14-35 Blotter type electrolytic models, 25-22 Boeing, 2-156,2-157 Boolean algebra, 17-10 canonical form, 17-12 equivalences, (table) 17-11 6 INDEX Boolean algebra, normal form, 17-13 Boolean functions, 31-01 Booth method, 18-18 Bound variables, 2-51 Brain behavior, 11-01 Branch instruction, 12-04, 17-26 Breakpoint, diode characteristic, 23-15 programming notations, 2-61 B registers, see Index registers Brush Electronics Company, 19-09 Buffer storage, 17-25 analog-digital converters, 30-05 equipment, 5-23 input-output, 20-03 analog-digital computer systems, 30-09 perforated tape punch, 20-25 Building blocks, preparation of problems, 2-187 Burroughs Corporation, 2-98,2-158, 2-239, 2-263, 12-09, 16-30, 20-18; see also Datatron Datatron, see Datatron Datatron 201, 2-158 Datatron 205, 2-158 UDEC III, 2-158 Business data manipulation, 3-06 Business data processing, 8-01, 9-01; see also Accounting; Business systems; Data processing; Inventory; Reservations; Scheduling Business systems, definition, 7-02, 7-04 design for electronic data processing, 7-01,7-03 economic evaluation, 7-06,7-12 equipment, auxiliary, 7-08 communication, 7-06 data conversion, 7-06 input-output, 7-06 programming, 7-08 selection, 7-02, 7-04, 7-07 storage, auxiliary, 7-05 implementation, 7-03, 7-06 information flow, 7-02 integrated, 7-11 payroll, 7-10 rate of return, 7-12, (table) 7-13 requirements, 7-01 CAGE, 2-156 Calculating punches, 20-32 Call-in, momentary, 2-180 permanent, 2-180 Cambridge University, 2-160, 2-251 Canonical form, 17-12 Capacitor-diode storage, 19-32 Capacitors, 14-49 ceramic, 14-50 electrolytic, 14-50 mica, 14-49 paper, 14-49 Capacity, magnetic tape, 5-28 Card punches,·5-15, 20-31 Cards; see also Punched cards magnetic, 20-42 punched, 20-30 Carnegie Institute of Technology, 2-157, 2-263 Carry function, Veitch diagram, 17-22 Casco de circuits, transistors, 14-39 Case Institute, 2-158 Casting out, 3-14, 13-03, 13-07 Casualty insurance accounting, 8-08 Cathode, followers, 14-29, 17-03 temperature, 14-43 Cathode ray tubes, analog-digital conversion, 20-48 display devices, 5-36,20-14 shaped beam tube, 20-14 storage, 19-31 Typotron, 20-14 Change of control operations, 2-60 Change-on-one recording method, 20-39 Characteristic roots and vectors, 10-04 Character recognition, 5-19 Charactron, 5-37,20-14, 20-16 Checker game, 2-246 Checking, 5-43, 13-02, 18-32 arithmetic, (table) 13-03, 13-06 automatic, 2-258, 3-13, 13-03 casting out, 3-14, 13-03, 13-07 data processing, 3-14 data transfers, (table) 13-03,13-05 diagnostic problems, 13-09 error detecting-correcting codes, 13-03 forbidden combinations, 13-03, 13-06 input data, 3-13 marginal, 13-09, 14-05, 14-07 INDEX Checking, mathematical, 13-03, 13-05 mod 11,3-14 operating, (table) 13-03 output data, 3-14 parity, 13-03, 13-06, 19-03, 19-07, 19-21 programmed, (table) 13-03, 13-04 reasonableness, 13-03, 13-04 self-checking codes, 13-03, 13-06 sums, 13-03, 13-05 weighted, 13-03, 13-06 Checks, see Checking; Digital computers, reliability Chess, 2-246, 11-12 CHIP, 2-158 Chopper amplifier, 22-31 operation, 22-32 Circuit design, digital computers, 14-01, 14-13; see also Components application notes, 14-44, 14-46, 14-53 blocking oscillators, 14-35 cascode, 14-39 cathode followers, 14-29 components, 14-03, 14-43: see also Components design criteria, 14-04 design philosophy, 14-01 diode gates, 14-29, 14-33 flip-flops, 14-10, 14-15, 14-37; see also Flip-flops magnetic core storage, 19-18; see also Magnetic cores marginal checking, 14-05, 14-10 pulse amplifiers, 14-21 pulse source, 14-21 reliability, 13-07, 14-01, 14-19 safety margins, 14-04 semiconductor diodes, 14-20 tolerance plots, 14-06 transistors, 14-36; see also Transistor circuits vacuum tube gates, 14-26 vacuum tubes, 14-20 Circulating loops, 2-58 Clock pulse generator, 14-22 Closed subroutines, 2-162, 2-169 Code conversion, machine translation, 11-13 Coded patterns, analog-digital conversion, 20-51 Coders, 6-11; see also Programmers 7 Codes, see also Instructions; Numbers 2,4,2,1, 12-20 8,4,2,1, 12-21,20-45,20-46 alphanumeric, 5-05; see also Instructions binary, 12-17, (table) 20-46 binary coded decimal, 18-25 biquinary, 12-21 cyclic, 12-17, 20-46, 20-52 excess 3, 12-20 Gray, 12-17,20-46 Hollerith, 12-08, 12-10 IBM,12-10 nonweighted, 12-19 one out of ten, 18-26 parity check, 12-21 punched cards, 12-10 reflected, 12-17,20-46 Remington-Rand, 12-08, 12~11 self-complementing, 12-20 weighted, 12-19 Code wheel converters, 20-51 typical, 20-55, (table) 20-56 Coding, see Programming Coding systems, automatic, 2-155, (table) 2-156 Collating, 3-08 Collation ratio, 4-06, 4-12 Collators, magnetic cards, 20-43 punched card, 20-32 Combined systems, analog-digital computing, 30-01 automatic programming, 2-163 Commercial Control Corporation, 20-10, 20-21 Common language medium, 5-10 Communications equipment, 7-06 Comparators, perforated tape, 20-29 Comparison boxes, 2-132 Comparison techniques, analog-digital conversion, 20-60 Compiled logic, 17-40 COMPILER I, 2-157 Compilers, 2-186; see also Fortran; IT translator; Translators algorithms, 2-190 automatic programming, 2-156 building blocks, 2-187 filing systems, 2-188 8 INDEX Compilers, future trends, 2-189 Generalized Programming, 2-189 indirect addressing, 2-193 instruction modification, automatic, 2-190 IT translator, 2-200 list of, (table) 2-156 representation, 2-221 Soviet algebraic language, 2-228 subroutine hierarchy counters, 2-196. theory of algorithms, 2-190 USE, 2-164 utility programs, 2-184 Compiler-translator, see Compilers; Translators Complements, 2-22, 12-22, 17-03, 17-05; see also Number Systems, complements Completeness, 17-09 Components, analog, test table,
Source Exif Data:File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37 Producer : Adobe Acrobat 9.13 Paper Capture Plug-in Modify Date : 2009:10:20 22:48:06-07:00 Create Date : 2009:10:20 22:48:06-07:00 Metadata Date : 2009:10:20 22:48:06-07:00 Format : application/pdf Document ID : uuid:ac23308f-f307-4b71-9e19-92e02b3ee224 Instance ID : uuid:0967d220-a918-417a-93f5-8bda0d60bbc4 Page Layout : SinglePage Page Mode : UseNone Page Count : 1119EXIF Metadata provided by EXIF.tools