previous | contents | next

16 set supplied by DEC, that will have memories of particular sizes, controls of particular character, various specific transducers, etc.

The second, and more important, reason why it is not necessary to catalogue all possible parameters and subtypes of each component type is that a scheme of functional description enjoys the important property of being recursive. Take any component (say a memory), however complex, and open it up. It will consist of a combination of subcomponents that can also be described in these same functional terms. A big, memory consists of a collection of smaller memories connected together by links and switches and made to operate by controls; if its internal representation (say as magnetic patches on a drum) is different from the external one, then there will be transducers both going into the internal form and coming out of it. The. addressing will be accomplished by a switch (that, in fact, is what addressing is), and so on. A similar story will hold if you open up a complex control (say a disk controller), or a complex data operation (such as a multiplier), or a complex transducer (such as a line printer).

All the variety of each type of component is to be defined by all the different ways in which systems can be defined (in the same terms) that perform the function. Somewhere down at the bottom of such a decomposition -- of continually opening up each component and finding it to be an assemblage of subcomponents of the same type -- there must be some primitive components. We can consider these to be simple components: simple memories, simple transducers, simple links, etc. These simple components, which cannot be decomposed further conceptually, are all defined on single bits. They correspond to the operations available at the lowest logic level of digital systems: the primitives of combinational and sequential circuits.

Figure 5 shows how a sequential multiplier at the RT-level is hierarchically formed as combinations of K's, M(register)'s, L's, and D's. In Chapter 8, we have the design of such a multiplier; also Chapter 4 describes multipliers formed with our particular RT primitives (RTM's). Notice that there are several distinct design activities: the RT- level, sequential circuits (the K), combinational circuit (the D's), and electronic circuit (the NAND's and possibly the 1-bit M's). With respect to data operations there is no single unique set of primitives. We have given one that involves a single Boolean connective NAND.(1O)

The exercise provided in Figure 5 is entirely for conceptual clarity. It once was the case that the physical components provided to a logic-level designer were simple components such as the NAND and he always had the task of specifying all systems made from these elements, including compound components that he might put together as intermediate subsystems in a design (such as a register consisting of a specified number of bits, which would be used throughout .a design). This is no longer true. What the manufacture provides is a collection of compound components, which then form the actual primitives that terminate the decomposition of a system into subsystems. Now the primitives are registers, adders, and shift networks, but the control part, the most difficult, is still left to the logical designer. Only rarely (as when one is designing a set of new primitives) does one design entirely from simple components.

Again we have exhibited the peculiar feature of digital systems that they elude completely specific description. We have just been definite in one more respect: there are exactly seven types of components. But whereas in a


--------------------

10. NAND(x,y) is defined to be NOT(AND(x,y)) and all logical combinations can be defined in its terms, e.g., NOT(x) = NAND(x,x); OR(x,y) = NAND(NAND(x,x), NAND(y,y)), etc.

19

previous | contents | next