4 ms·
> Did their "cpu"(?) had special circuitry for implementing lists, CAR and CDR? It was implemented in Microcode on the CPU. > Was this multi-threaded-ness som
by lispm 2y ago
> Did their "cpu"(?) had special circuitry for implementing lists, CAR and CDR?
It was implemented in Microcode on the CPU.
> Was this multi-threaded-ness something built-in in hardware?
Some. The process scheduler was written in Lisp. See for an early example on the MIT Lisp Machine: https://github.com/mietek/mit-cadr-system-software/blob/master/src/lispm2/proces.150 https://github.com/mietek/mit-cadr-system-software/blob/mast...
- dokyun 2y agoI think you should clarify that the Lisp machines (at least the early ones that you speak of) were not 'multi-threaded' in the sense of multiprocessing--the only multiprocessing they did was running independent Lisp systems on each of their processors, if they had more than one.
- lispm 2y agoFrom the 1981 4th edition Lisp Machine Manual, page 428ff > 25. Processes > The Lisp Machine supports multi-processing; several computations can be executed "concurrently" by placing each in a separate process. A process is like a processor, simulated by software. Each process has its own "program counter", its own stack of function calls and its own special-variable binding environment in which to execute its computation. (This is implemented with stack groups, see chapter 12, page 163.) These computers could send/receive network traffic, handle the GUI, read from disk, while the user would have processes for each application and window. On my mid 1980s Symbolics 3640 I could compile a Lisp application from scratch in a Lisp REPL for half an hour, while I was using Zmacs to edit code. The practical limitations were CPU speed, memory size, disk speed and the Garbage collector. A full GC would halt everything else. Better incremental GCs helped a lot. In GNU Emacs last I tried I could not use two IELM repls executing Lisp code at the same time. One would block the rest of GNU Emacs Lisp code.
- amszmidt 2y agoThere is a bit to much simplification here, and confusing terminology going on here. Lisp Machines did not have "processes" (as in, Unix processes); a Lisp Machine process just a function - with some special properties. The Lisp Machine only had one processor for the Lisp Machine, and it did absolutely support multi-processing and multi-threading. A good explanation can be found in the Lisp Machine manual: https://tumbleweed.nu/r/lm-3/uv/chinual.html#Processes https://tumbleweed.nu/r/lm-3/uv/chinual.html#Stack-Groups Which is also where all current work on the MIT Lisp Machine is being done. :-)
- medo-bear 2y agoAll current work ?