|Homepage||The Computer Inside You||
essays and commentary
|Prev||book’s homepage --|-- table of contents --|-- entire book in a single web page||Next|
Today, computers are commonplace and the basics of programs and computers are widely known. The idea of a program is easily understood: any sequence of intelligible instructions that together order the accomplishment of some predefined work, is a program. The instructions can take any form as long as they are understandable to whatever mind or machine will follow those instructions and do the actual work. The same program has as many different representations as there are different languages in which that program can be written. Assuming a nontrivial language, any machine that can read that language and follow any program written in that language is a computer.
Given the hypothesized computing elements that lie at the deepest level of the universe, overall complexity is minimized by assuming the following:
Each computing element is structurally identical, and there is only one type of computing element.
Each computing element runs the same program—called the computing-element program—and there is only one program; each computing element runs its own copy of this program.
Each computing element can communicate with any other computing element.
Regarding communication between computing elements, a message is a block of information that is transmitted from one computing element to another. The communication topology describes how the computing elements are connected in terms of their ability to exchange messages. The speed at which messages can move across the communication topology to different computing elements is at least 20 billion times the speed of light (section 1.1).
Regarding the shape and spacing of the computing elements, the question of shape and spacing is unimportant. Whatever the answer about shape and spacing might be, there is no obvious impact on any other question of interest. From the standpoint of what is esthetically pleasing, one can imagine that the computing elements are cubes that are packed together without intervening space.
Regarding the size of the computing elements, the required complexity of the computing-element program can be reduced by reducing the maximum number of particles that a computing element simultaneously stores and manipulates in its memory. In this regard the computing-element program is most simplified if that maximum number is one. Given this maximum of one, if one then assumes that no two particles can be closer than 10–16 centimeters apart—and consequently that each computing element is a cube 10–16 centimeters wide—then each cubic centimeter of space contains 1048 computing elements.,
Regarding computing-element processing speed, it is possible to compute lower-bounds by making a few assumptions: For example, assume a computing element only needs to process a hundred-million program instructions to determine that it should transfer to a neighboring computing element an information block. In addition, assume that this information block represents a particle moving at light speed, and the distance to be covered is 10–16 centimeters. With these assumptions there are about 10–26 seconds for the transfer of the information block to take place, and this is all the time that the computing element has to process the hundred-million instructions, so the MIPS rating of each computing element is at least 1028 MIPS (millions of instructions per second). For comparison, the first edition of this book was composed on a personal computer that had an 8-MIPS 386 microprocessor.
 One can assume an economical communication topology that connects each computing element only to its nearest neighbors. In this scheme a message destined for a more distant computing element has to be transmitted to a neighbor. In turn, that neighbor routes that message to one of its neighbors, and so on, until the message is received at its ultimate destination.
In such a message-routing scheme, if the message’s routing is conditional on information held by each neighbor doing the routing, then it is not necessary that the sending computing element know exactly which computing elements should ultimately receive its message.
 In this book very large numbers and very small numbers are given in scientific notation. The exponent is the number of terms in a product of tens. A negative exponent means that 1 is divided by that product of tens. For example, 10–16 is equivalent to 1/10,000,000,000,000,000 which is 0.0000000000000001; and, for example, 3x108 is equivalent to 300,000,000.
 The value of 10–16 centimeters is used, because this is an upper-bound on the size of an electron.