A language-oriented approach to computer architecture

Clark Roger Wilcox · 1980

A language-oriented approach to computer architecture starts with a high-level language, from which an ideal program representation and execution environment is derived, which in turn determines an ideal processor architecture. This is in contrast to the conventional approach wherein a single fixed instruction set supports all languages. In order to examine and evaluate the issues raised by the language-oriented approach, a methodology is presented for deriving successive levels in a design hierarchy consisting of the following components: an abstract syntax and abstract semantics for the language; derivation and interpretation of a token stream and a bit-oriented code stream; language processor architecture; and program monitoring facilities. The methodology is applied to a particular machine-independent high-level language in order to obtain detailed data concerning static program size and dynamic execution characteristics. A language-specific representation, postfix code, is designed according to this methodology. Postfix code is up to one fifth the size of conventional machine code and is simple to generate. A computer architecture is designed for interpretive execution of bit-oriented code streams. The 32-bit processor has a control store for micro-coded interpreters, hardware maintenance of the code stream, table-driven variable-width field extraction and operator dispatch in parallel with micro-code execution, and two micro-level stacks. The processor is unbiased with regard to the source language in that it defines neither the form of the instruction stream, nor the formats of data structures. A micro-coded postfix interpreter is used to execute a number of program modules compiled into postfix code. The postfix execution is compared with a conventional implementation and shown to be superior in every measured quantity; for example it has half as many instruction loads. A novel feature of postfix code is its ability to be decompiled into source text, including variable names. This provides the basis for a display-oriented program development and monitoring environment which can decompile and display the program text during a debugging session, with the cursor following the execution locus while in single-step mode. Breakpoints are set by moving the cursor to the desired point in the displayed text.

Read the paper · More papers on PaperTik