History
One of most famous compiler projects in the U.S.S.R. is a family of compilers and interpreters for Soviet Elbrus computers. The following translators were developed in a few years, by a small team of less than 10 young software engineers:
- Compilers for Pascal
- CLU (that was the first CLU implementation in the U.S.S.R, completed in 1985)
- Modula-2 and BASIC
- Interpreters for LISP, SNOBOL-4, FORTH-83 and REFAL
- A translator for system programming language ABC designed by Dr. Lavrov. This project started with the supervision of Dr. Lavrov and continued under the supervision of Vladimir O. Safonov.
These achievements made the team well known in the country. The compilers for Elbrus, especially for Pascal, were used in major industrial and academic organizations in the U.S.S.R, including at the space ship control center near Moscow. Other compiler groups developing compilers for Elbrus, who worked in; Moscow, Novosibirsk and Rostov developed the following compilers:
- EL-76, the high-level language used by Elbrus system programmers
- SIMULA-67, C, FORTRAN, COBOL, ADA and PL/1
- An interpreter for PROLOG
Compilers and interpreters for most of the worlds widely known languages, a total of 30, were implemented for the Elbrus. The Elbrus compiler experience and TIP technology applied for those compiler projects became a good basis for the subsequent work with Sun on compilers for the SPARC platform.
Source: Trustworthy Compilers Vladimir O. Safonov, John Wiley & Sons, 8 Feb 2010.
Optimizing compilers for Elbrus 2000
Compilers supporting the Elbrus 2000 secure computing architecture are available for the following languages:
- C
- C++
- FORTRAN
The compilers are optimizing for high effeciency and parallel computing. The Elbrus 2000 computer architecture offers a great set of parallel execution and program flow abilities. In order to take full advantage of this, a specialized compiler is needed: The Elbrus compilers implements the most modern and unique methods for analysis and parallelization of programs at the level of individual transactions, as well as at the level of threads.
The Elbrus compiler optimizations demonstrated on main loop for a LISP interpreter: It analyzes the complex management structure and the dependencies between operations in the main loop, using a graph representation of the program. In this case the compiler was able to utilize the Elbrus 2000 VLIW format in a way that it performs an average of above 12 operations per clock cycle, achieving an ideal number of 16 syllables in one instruction word.
C code for the main loop of the LISP interpreter:
A fragment of the parallel representation for the main loop (Operations are nodes and the arcs of the graph represents dependencies):
Binary representation for the main loop in parallelized form. Each line corresponds to a very long instruction word (VLIW), consisting of syllables and operations. One of the words reaches the limit of 16 syllables. Each iteration of the loop is executed for 3 machine cycles, concurrency is 15 operations per clock tick: