Functional memory (FM) is a general-purpose systems technology and has been proposed as a solution to the problems of large-scale integration. It is based on an associative array, composed of writable storage cells capable of holding three states; 0, 1, and DON'T CARE. The functional memory module can be used either as a local store, control store, associative store, or logic block. In its use as a logic block, logic is performed by associative table lookup, using the DON'T CARE state to give significant compression of tables over conventional two-state arrays (typically n to n2words for functional memory instead of 2” words for conventional two-state arrays). The basic properties of functional memory are described in . This paper is in two parts. The first part retraces some of the central material in , examines the reasons for table compression, and extends the techniques of table design. Following from a discussion of static tables, the treatment of time-dependent tables leads naturally to microprogramming. The second part identifies two problems with microprogramming and suggests ways to overcome them. The problems are branching delay and field combination. The branching delay problem is the delay inherent in using a data flow condition to modify the address of the next control word to be fetched. The solution is seen in the classification of data flow conditions into two classes: those that give only minor changes in direction (e.g., the kind of differences that exist between ADD, SUBTRACT, and COMPARE), and those that give gross changes in direction (e.g., differences between, say, ADD and EDIT); and in keeping the minor conditions in the data flow and allowing only the gross conditions to return to the control store. Conceptually, whereas the gross changes modify the address of the control word to be fetched, the minor changes modify the contents of the control word that has already been fetched. The field combination problem occurs when the processing of two or more fully or semi-independent (micro) instruction streams is controlled by a single series of control words, each of which controls the whole data flow for a cycle. The problem is that the number of control words necessary is related to the product of the independent instances, and may therefore be very large. The solution is seen in the provision of multiple control streams with linking only where necessary. The number of control words necessary would then be related to the sum of the independent instances, and should therefore be smaller. In discussing these problems, functional memory is not seen as the solution, per se, but as clarifying the problems and making the solution easier to find. The flexibility of functional memory is also seen as a stimulus to the further development of microprogramming. © 1971, IEEE. All rights reserved.