SIMPL(ID:658/sim029)

Horizonatally sequenced Algol  


for Single Identity Micro Programming Language.

C. Ramamoorthy et al, UC Berkeley, 1974.

An Algol 60-like microprogramming language, with horizontal capabilities (it used a form of critical path analysis to optimise the microinstructions to micro-operations ratio).

SIMPL was the first language to allow sequential specification of horizontal microprograms. Compiler in SNOBOL4.


Related languages
SNOBOL4 => SIMPL   Written using
SIMPL => CHAMIL   Influence

References:
  • Ramamoorthy C. V. and Tsuchiya, M. "A Study of User Microprogrammable Computers" view details
          in [AFIPS] Proceedings of the 1970 Spring Joint Computer Conference SJCC 36 view details
  • Ramamoorthy C. V. and R. L. Kleir, "Optimization Strategies for Microprograms," IEEE Trans. on Computers, Vol. c20, no. 7, July 1971, pp. 783-794. view details
          in [AFIPS] Proceedings of the 1970 Spring Joint Computer Conference SJCC 36 view details
  • Ramamoorthy C. V. et al "A higher level language for micro-programming" Conference record of the 6th annual International Symposium on Microarchitecture College Park, Maryland, United States 1973 pp139-144 view details Abstract: There are many reasons why microprogramming has become an essential architectural attribute in contemporary computers. It provides certain well-known design and manufacturing advantages. It also facilitates the emulation of other machine languages. It gives the user the opportunity to tailor instruction sets to suit his application environment. However, a number of difficulties arise when the user attempts to exploit the potential of microprogramming. When microprograms are stored in Read-Only Memories (ROM's), the advantage of dynamic modification of control information is lost at the microprogram level. Recent trends towards writable stores will obviate this disadvantage. Also, microinstruction coding (microcoding) of computers using horizontal or minimally encoded formats becomes a time consuming proposition. In the foregoing sections we shall briefly review some high level languages for microcoding and develop a new language that provides an efficient way for detecting and locating parallel processable independent actions for possible representation in microinstruction.


          in [AFIPS] Proceedings of the 1970 Spring Joint Computer Conference SJCC 36 view details
  • Tsuchiya, M. Ph.D. Thesis, Electronics Research Center, University of Texas, Austin 1973 view details
          in [AFIPS] Proceedings of the 1970 Spring Joint Computer Conference SJCC 36 view details
  • C.V. Ramamoorthy and Tsuchiya, M. "A High Level Language for Horizontal Microprogramming" view details
          in IEEE Transactions on Computing 23(08) August 1974 view details
  • Marleen, Sint "A survey of high level microprogramming languages" pp141-153 view details Extract: SIMPL (Single Identity Micro Programming Language)
    SIMPL (Single Identity Micro Programming Language)
    SIMPL dates from 1974, and was developed at the University of California at Berkeley by C. Ramamoorthy and M. Tsuchlya .
    Deslgn Goals:
    The design goals of SIMPL follow from the following quotations:
    "The [envisaged] high level language should enable the user to write mlcroprograms in a conventional, sequential and procedural fashion and permit these programs to be compiled into efficiently executable mlcrocode."
    "The desirable properties of a hlgh-level mlcroprogrammlng language must be a compromise between machine dependence, ease of detecting and representing explicit and implicit parallelism, and the innate "naturalness" required of all programming languages to establish effective man-machlne communications".
    Primitives.
    A fixed set of operators is included: addition, subtraction, logical and, or, exclusive or and negation, shift (both linear and circular), as well as relational operators. Explicit read and write statements are provided for references to main memory. When the target machine has mlcrooperations of a higher level than those included in this set, it may be difficult to utilize them (see 2.1.2). This problem is not addressed.
    Variables.
    Variables are identified with machine registers. An equivalence statement is provided in order to enable the programmer to refer to a register by more than one name.
    Parallelism.
    A SIMPL program is specified sequentially. One of the underlying concepts of SIMPL is the single assignment rule, well known from dataflow languages [ii]. This rule, which states that each varlable may occur only once as the destination in an assignment, facilitates detection of potential parallelism, but it is incompatible with the register view of variables as it would imply that each register can contain only one value throughout the program.
    The single identity principle was invented to resolve this conflict. In single assignment languages, the order in which the source statements are specified is completely irrelevant. The order in which they are executed is determined only by their data dependencies: A statement which uses the value of a certain variable x, will not be executed before the (only) statement which assigns a value to x is executed. In SlMPL, the order of the source statements is used to distinguish the different values assigned to a variable.
    […]
    Control Structure.
    The control structure of SIMPL resembles that of ALGOL 60. Procedures and blocks are allowed. It is not mentioned in [18] whether or not they may contain declarations, but the examples suggest that they may not. Expressions may contain only one operator. If-then-else, while-do and (probably) for-statements are included; but goto's are not. A case-construct has been added to permit multiway branches, which are available on many machines.
    Datatypes and datastructures.
    The only datatype in SIMPL is the integer. No data-structuring mechanism is provided (presumably, the language does not even permit array declarations, because arrays cause trouble in relation with the single assignment rule).
    Implementation.
    A compiler for SIMPL was written in SNOBOL4. It produces code for the Tucker-Flynn dynamic microprocessor. As this was the first effort to translate a sequential program to horizontal microcode, algorithms had to be developed to detect potential parallelism and possible resource conflicts between microoperations. Unfortunately, no comparison has been made between code generated by the SIMPLcompiler and handwritten code.
    […]
    Conclusions.
    SIMPL was the first language that allows sequential specification of horizontal microprograms- Its design triggered many similar efforts. The fact that the language was implemented and that the compiler actually produced horizontal code was very important. SIMPL is now mainly of historical interest. Especially its limited view of variables and the absence of even the most basic data-structuring mechanism make it awkward to use. It is also doubtful whether it can he implemented with an acceptable result on a machine that supports operations not included in the basic operator set.
          in Proceedings of the 13th International Symposium on Microarchitecture Springs, Colorado, United States 1980 view details