Impulse Research & Production Corporation (Russian Federation)
The first monocrystal 6502 processors (used in Apple and Commodore computers) appeared in the eighties and a short time later Intel released the 8086 and 8088 processors. These processors had a rather high speed for that period, but their RAM was very small and not extensible (in addition, the 6502 was a one-byte type, so the
programs were very long).
By that time, interpretation systems (p-code) for Pascal type languages were available, but still the emphasis in these systems was the interpretation of programming language constructions, rather than making the systems general-purposed. Therefore, the necessity arose to develop and implement a virtual machine architecture with a complete command system.
We developed and implemented the architecture and the instruction set for a virtual machine designed for microcomputer implementation of algorithmic high-level languages with static type checking (Ada, Algol, Modula2, Pascal and others).
The main ideas behind this architecture were published in the article "Standardization of Microcomputer Software Using Virtual-machine Design" by Yu. V. Matiyasevich, A. N. Terekhov, B. A. Fedotov in "Avtomatika i Telemekhanika", No.5, pp.168-175, May 1990.
The English version of the article can be found at http://www.iti.spbu.ru/publications/eng/IOSPress96.htm
Originally the SAMSON architecture was used for porting Algol 68 compilers to different platforms. We implemented an Algol 68 to the SAMSON virtual-machine code compiler and VM interpreter for all the widespread microprocessors. For example, in the Department of Mathematics and Mechanical Engineering at St. Petersburg State University, we had several computer terminal classrooms with terminals in which microcomputers with the 8086 microprocessor and 64 Kb of RAM were installed. These displays were connected to a low-power IBM mainframe, so the response time was very long. When using our architecture, the programs written in the virtual machine codes were 4-5 times shorter than the programs in the 16-digit 8086 codes (and more than 10 times shorter than those for the 8-digit 6502), while the interpretation time was no more than 2-3 times slower than the direct execution time. We managed to "squeeze" the analyzing part of the translator from Algol 68 directly in the terminal, which reduced the number of calls to the mainframe by dozens of times. These terminals worked well for many years and were discarded together with the last mainframe. Similar developments were performed for other programming languages on the Apple platform, which at the time had no other development tools than the primitive Basic. The SAMSON virtual machine helped us when we created software for a telephone exchange with peripheral devices serviced by a controller with a microprogram. 5 to 10% of the operations in this system
were very critical with respect to execution time, while the rest of the software provided technical servicing and had virtually no realtime constraints. We implemented the virtual machine's microprogram interpreter and, though it "ate up" 80% of the micromemory, the remaining 20% proved sufficient for time-critical fragments of the software.
We regarded the emergence of Java, with its interpreted bytecode, as a direct continuation of our work.
1987 -1996
950 person-months