programming-languageslispcpu-architectureprocessors

Language-Specific Architectures/Processors


I am writing a research paper for a Computer Architecture class on the topic of Language-Specific Architectures/Processors. Obviously two major components of this topic include the LISP Machine and the Java Computer. However, I'm having a hard time finding more information with just Google. I'm asking for any help with this topic, such as references, new sub-topics, papers, journals, books, etc. Thanks in advance for any help!


Solution

  • Most of the so-called language-specific architectures are more specific language-oriented or specific language-friendly. Even the original SPARC provided tagged arithmetic (to help LISP). You are probably aware of Berkeley's SPUR (Symbolic Processing Using RISC, a LISP-targeting RISC) and picoJava (which executes Java bytecode). MAJC was developed with Java in mind, but is a fairly generic VLIW. (ARM's Jazelle extension provided a mode that could execute some bytecode operations directly with unsupported operations generating an exception to a software interpreter.) Azul Systems Vega processor is a RISC targeted to run Java (among the Java-friendly features are write barriers for garbage collection and support for using the most significant bits of pointers for tags [a feature that is also present in ARMv8 AArch64]).

    Rekursiv was oriented to object-oriented languages. The Intel 432 was targeted to "high level languages". Berkeley's SOAR (Smalltalk On A RISC) targeted Smalltalk.

    Several processors have been forth-oriented, e.g., Novix NC4016, GreenArrays, Inc. F18, Bernd Paysan's b16.

    "Retrospective on High-Level Language Computer Architecture" (David R. Ditzel and David A. Patterson, 1980) references some HLL architectures. That paper and William A. Wulf's "Compilers and Computer Architecture" (1981) are papers from the start of the "RISC era" and worth looking at when studying language support in computer architecture.


    As a side note, one significant issue with language-oriented processors beyond the implicit limiting of one's market (given the relatively high fixed costs of hardware and software design and network effects, volume is very important) is the problem of designing an architecture with a specific way of implementing a language in mind. As new techniques are developed (which often come from development in other languages) or technical trade-offs change, initial ISA choices can become noticeably suboptimal (one form of what is termed "semantic clash"). By choosing common primitive operations, some effectiveness may be sacrificed in early implementations, but the risk of long term baggage is reduced.