zoukankan      html  css  js  c++  java
  • Schemachine

    Schemachine

    https://cs.indiana.edu/hmg/studies/Schemachine/Schemachine.html
    https://legacy.cs.indiana.edu/ftp/techreports/TR413.html
    http://www.cs.indiana.edu/ftp/techreports/TR544.html

    https://help.luddy.indiana.edu/techreports/TRNNN.cgi?trnum=TR544
    http://www.cs.indiana.edu/ftp/techreports/TR544.ps.Z
    https://legacy.cs.indiana.edu/ftp/techreports/TR544.pdf

    A prototype computer implemented in the project area of a Logic Engine.
    Consists of a processor, storage manager, and a dual ported memory organized to implement a data heap.
    All components except the system bus were derived using the DDD transformation system.
    The test system is a codesign environment in which the hardware can be tested against its own executable specification.

    The Schemachine project is an ongoing study in formal methods forsystems.
    It was implemented using the DDD transformation system from a virtual machine specif ication taken from the textbook Essentials of Programming Languages (Friedman , Wand and Haynes, McGraw-Hill, 1992).
    Part of the testing regime involves runni ng the specification model on a PC and comparing its behavior with the derived implementation.
    For example, the garbage collection component on the prototype w as tested by executing the Scheme model of the surrounding
    system with a softwar e interface to the hardware heap implementation.
    All the software for modeling, testing, and deriving the implementation is written in Scheme.

    The technologies used in the prototype include standard DRAM memory SIMMs, PLD d evices (programmable logic arrays) and Actel FPGA devices (field programmable, non-reconfigurable gate arrays).
    The prototype's scale is around 8000 logic gates (a conventional measure not directly related to the hardware technology). In denser technologies, the prototype would easily fit into a single chip, although functionally it would make more sense to use three chips.

     

    评论来源 https://www.zhihu.com/question/283383877/answer/430877209

    这个年头搞硬件结合 PL,相当于 x86 来说,一没性能优势,二没开发者优势。二来 Scheme 一没性能优势,二没基层建筑优势。Lisp Machine 能商业化的原因,一是提供当时其它系统所不能及的硬件性能,二是 Lisp 最早提供了完备的 OOP 界面,促进了图形界面的发展。


    评论来源 https://www.zhihu.com/question/20753279/answer/16063369

    当时的编译器优化和通用的 CPU 优化都不理想。所以针对 Lisp 做了很多特殊的硬件优化。比如,Lisp 的动态类型让任意变量的操作都涉及对类型的检查,Lisp machine 就把这部分做成和其它指令并行运行的特殊硬件。前提是,这些特殊的硬件优化只是针对 Lisp 的。

    而今天的 CPU 和编译器优化的通用方式就已经能达到更快的速度了。像 CPU 流水线,分支预测,指令预取这些优化都不只是针对 Lisp 的通用优化,但是加上更快的时钟和更大的 cache,已经让针对 Lisp 的特殊优化没有价值。

    另外,用硬件直接支持 Lisp 这么高级的抽象,正如你说,是两个极端融合在一起,很扭曲。当年的 Lisp machine 应该说没有进程,内核态 / 用户态这样的中间层次的抽象,整个机器就是一个大进程。而进程,IPC,内核态 / 用户态这样的和硬件保护相关的概念如果完全用 Lisp 这样的高级抽象来描述,显然不如 ABI 更为简单的 C 之类的语言更直接。所以目前的计算机结构也是多层次的抽象决定的。
     

    评论来源 https://www.zhihu.com/question/20753279/answer/404561702
    1. Lisp Machine 用 Lisp 做汇编指令纯属误传,虽然编译器能将 Lisp 编译成机器指令,也可以将机器转回人可读的 Lisp 代码,从某种角度来说,Lisp 处于直接和机器指令之间转换的层次,和现在常见的计算机的汇编是类似的。但说 Lisp Machin 用 Lisp 做汇编是不严谨的,因为 Lisp Machine 也有自己的汇编语言。
    2. Lisp Machine 出现的背景是 16 位处理器向 32 位的迁移,主流 32 位处理器上运行的 Lisp 实现性能不理想,才有了 Lisp Machine 这一构想。当时的 Lisp Machine 有两大派系,MIT 和 Xerox ,分别对应当时两大主流方言 MacLisp 和 INTERLISP。我对 Xerox Lisp Machin 了解不多,以下主要基于 MIT Lisp Machine 的设计。
    3. (MIT) Lisp Machine 的处理器实际就是个栈机器,Lisp 代码依次转化为栈操作执行:参数先依次压入栈,供计算指令调用,执行结果输出到返回栈。函数内部的函数调用就是建立一个新的栈帧,压入参数,输出结果到返回栈。一些特殊的函数直接实现成机器指令,从 destination 接受参数直接输出到返回栈。
    4. Lisp Machine 设计成熟时期,用 Lisp Machine 做数值运算比在当时 32 位处理器上的 Fortran 还快。最大的特色其实是支持大屏图形界面和鼠标。
    5. 很显然这种微处理器是复杂指令集设计,在现代已经过气了。后来基本等于免费分发的 Unix 配合摩托罗拉之类的廉价硬件平台很快取代了几十万美元一台的 Lisp Machine,导致本就经营不善的最大 Lisp Machine 公司之一 Symbolics 挂了,对业界又造成了打击。
    6. 说 Lisp Machine 没有进程,Lisp 不适合用来描述操作系统云云,至少对于后期的 Lisp Machin 来说是错误的。Symbolics Lisp Machine 用物件导向设计操作系统,包括进程在内几乎所有系统构建抽象成物件,Lisp Machine Manual 的原句就是进程相当于虚拟 CPU。Unix 的一切皆文件就是一种弱层次的物件导向设计,Mach 微内核更是大量采用了物件导向设计,就连 Linux 都不可避免引入了 C艹,明显同时具有高级抽象和底层硬件的 Lisp Machin Lisp 是很合适的,而内核态和用户态的访问直接由定义方法来控制,这些问题在 Lisp Machine 还没过气之前都已经解决了。
    7. 两个时代硬件的比较,Lisp Machine 晚期在 DEC Alpha 工作站上用虚拟机运行 Lisp Machine,做一次内存整理花费约 40 分钟,将同样的虚拟机移植到 Linux 后在 Core i7 四核上运行做相同操作,只要不到一分钟。

    References:

    [1] Guy Steele and Richard Gabriel, The Evolution of Lisp

    [2] Richard Stallman, Daniel Weinreb and David Moon, Lisp Machine Manual, 6th Edition

    ============ End

  • 相关阅读:
    Python网络编程 —— 粘包问题及解决方法
    Python网络编程 —— socket(套接字)及通信
    Python网络编程 —— 网络基础知识
    Python
    MySQL 之 数据的导出与导入
    MySQL 之 慢查询优化及慢日志管理
    MySQL 之 索引进阶
    MySQL 之 索引
    MySQL 之 事务
    MySQL 之 表的存储引擎
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/14736949.html
Copyright © 2011-2022 走看看