Chapter 32 A microprogrammed implementation of EULER on IBM System/360 Model 30 391
Address |
Location in Figure |
Description |
address is skipped, IJ is updated by 1 twice in 11C4, 11CA (possible carries out of J handled in 11CF or 1145). The stackpointer is decremented by four in 11CE, 1144. |
||
11C1, 11CC, 11CD: |
G6, L6, N6 |
These words are executed when a typetest occurs. An error code 01 is set up in L and a branch occurs to the error routine not drawn here. |
It can be seen from Fig. 7 that the execution times of the microprograms including the readout of the operator (I-Cycle) are the following:
and 6 m sec1 (8 microprogram steps)
or 6 m sec (8 microprogram steps)
then 6 m sec for value true (8 microprogram steps)
7.5 m sec for value false (10 microprogram steps)
In order to compare this with a hypothetical EULER system for System/360 language, let us assume that the compiler produces in-line code (which probably will give the highest performance although it will be very wasteful with respect to storage space). Then a reasonable sequence for and might be:
CLI 0 (STACK), LOGFALSE
BE ANDFALSE
CLI 0 (STACK), LOCTRUE
BNE TYPEERR
SH STACK, = '4'
Timing: true: 90 m sec; false: 32 m sec.
This comparison seems to indicate that the microprogram interpreter is about an order of magnitude faster than the equivalent program in 360 language. However, this comparison will only yield such a high factor for functions of EULER which do not have simple System/360 language counterparts (as for instance the list-operators, begin-, end-, and procedure-call-operator) or where the overhead for dynamic testing and stackpointer manipulation is heavy as in the above example of the logical operations. For functions which do have System/360 language counterparts and which are slower so that the overhead is relatively lighter as, for instance, arithmetic operations (especially for real numbers), the microprogrammed interpreter will still be faster than the System/ 360 language program, but not by a factor of 10.
The total ROS space requirement for the String Language Interpreter is:
Coded routines |
1000 microwords |
Routines for real number handling |
500 microwords (estimated) |
Divide, Exponentiation, etc. |
400 microwords (estimated) |
Garbage collector |
600 microwords (estimated) |
2500 microwords |
EULER compiler
The translator to translate EULER source language into the Reverse Polish String Language is a one-pass, syntax-driven compiler. The syntax of the language and the precedence functions F and G over the terminal and nonterminal symbols are stored in table form in Model 30 main storage. There is also main storage space reserved for translation tables for character delimiters and word delimiters and for a compile time stack, a name table, and, of course, for the compiled code. All these areas are at fixed storage locations because of the experimental nature of the system.
The microprogram consists of the following parts:
1 A routine reads the next input character from the input buffer to translate it to a 1-byte internal format, if it is a delimiter, or to collect it into a name buffer if it is part of an identifier, or to convert it to hexadecimal if it is part of a numeric constant and to collect the number into a buffer. This "prescan" requires 100 + microwords.
2 As soon as an input unit is collected (delimiter, identifier, number) the main parsing loop is entered which makes use of the precedence tables and the syntax table in main storage. This syntactic analyzer loop requires 100 - microwords.
3 When the parsing loop identifies a syntactic unit to be reduced, it calls the appropriate generation routine which performs essentially the functions described as the semantic interpretation rules in the EULER definition. The micro program space required for these programs amounts to approximately 250 ROS words.
4 If a syntactic error is detected, the system signals an error and does not try to continue with the compilation process. Though this procedure is totally inadequate for a practically useful system, it was deemed sufficient to prove the essential point. For this minimum error analysis and for linkage to the 360 microprograms (IOCP), approximately 60 microwords are required.
1
The cases where carries occur in the IJ and UV updating are disregarded for timing purposes.