Lisp machine 這種用 Lisp 代碼當機器的彙編指令的硬體實現為什麼銷聲匿跡了?硬體和 Lisp 這樣的高級語言兩個極端如何融合在一起?
02-12
當時的編譯器優化和通用的 CPU 優化都不理想。所以針對 Lisp 做了很多特殊的硬體優化。比如,Lisp 的動態類型讓任意變數的操作都涉及對類型的檢查,Lisp machine 就把這部分做成和其它指令並行運行的特殊硬體。前提是,這些特殊的硬體優化只是針對 Lisp 的。
而今天的 CPU 和編譯器優化的通用方式就已經能達到更快的速度了。像 CPU 流水線,分支預測,指令預取這些優化都不只是針對 Lisp 的通用優化,但是加上更快的時鐘和更大的 cache,已經讓針對 Lisp 的特殊優化沒有價值。
另外,用硬體直接支持 Lisp 這麼高級的抽象,正如你說,是兩個極端融合在一起,很扭曲。當年的 Lisp machine 應該說沒有進程,內核態 / 用戶態這樣的中間層次的抽象,整個機器就是一個大進程。而進程,IPC,內核態 / 用戶態這樣的和硬體保護相關的概念如果完全用 Lisp 這樣的高級抽象來描述,顯然不如 ABI 更為簡單的 C 之類的語言更直接。所以目前的計算機結構也是多層次的抽象決定的。
謝邀。
因為那時候cpu很慢,所以產生了lisp的專用硬體以提高速度,除了lisp我記得還有smalltalk也有過專用硬體。現在也有呀,不少嵌入式cpu支持java位元組碼。
推薦閱讀:
TAG:計算機 | Lisp | 電腦硬體 | Lispmachine |