Compiler construction 有没有办法创建一个用硬件实现的高级语言解释器?

Compiler construction 有没有办法创建一个用硬件实现的高级语言解释器?,compiler-construction,programming-languages,hardware,interpreter,hdl,Compiler Construction,Programming Languages,Hardware,Interpreter,Hdl,一些随机的想法抓住了我,我就是想不出来。我在想,既然现代处理器只是不同种类汇编语言的解释器,那么是否有必要创建一些直接在硬件中实现的高级语言解释器,使用一些HDL,甚至直接使用逻辑门设计? 与此同时,我在想为什么还没有这样做,我现在能想到的一些原因是: 理论上的原因——这在理论上是不可能的,尽管在我看来这是可能的,因为我们已经拥有的CPU或者我们正在讨论的机器只是图灵机器的一个变种,所以它们的性质没有区别,但我不是100%确定这一点 设计的复杂性——制造如此复杂的机器通常太难了 速度缺点——即

一些随机的想法抓住了我,我就是想不出来。我在想,既然现代处理器只是不同种类汇编语言的解释器,那么是否有必要创建一些直接在硬件中实现的高级语言解释器,使用一些HDL,甚至直接使用逻辑门设计? 与此同时,我在想为什么还没有这样做,我现在能想到的一些原因是:

  • 理论上的原因——这在理论上是不可能的,尽管在我看来这是可能的,因为我们已经拥有的CPU或者我们正在讨论的机器只是图灵机器的一个变种,所以它们的性质没有区别,但我不是100%确定这一点
  • 设计的复杂性——制造如此复杂的机器通常太难了
  • 速度缺点——即使它设计和实现得当,它仍然无法获胜,因为它们的速度将是它的缺点

我只是对这个问题感到好奇。

这已经完成了

这不是一个非常复杂的指令集计算机(VCISC),它会导致物理上的大型处理器。语言的某些部分没有其他部分使用得那么频繁,这导致了处理器中很少使用的部分,浪费了硅面积

更大的处理器芯片尺寸会增加产量损失,从而提高最终用户的价格。这样做的经济性有利于小型简单处理器

低功耗处理器设计倾向于RISC而非CISC架构。像这样的超级计算机使用了许多RISC核。大多数移动通信设备使用RISC核。

听说过或该公司

我知道答案很短,大部分是链接,但答案是独立的。

巴勒斯有一句著名的“硬件中的Algol”

不太为人所知的是Burroughs Beauty,它让每个进程定义微码来解释进程代码所使用的HLL。因此,每个进程可以有不同的HLL指令集;在上下文开关上设置硬件交换的微码

RISC世界的一个教训是,构建一个常规指令集,并将您的语言的代码编译成这些指令,更经济(而且您可以获得更大的市场)。DEC VAX试图提供特定语言的指令;事实证明,使用更传统的VAX指令比使用特定指令更快


如果您坚持,使用FPGA实现HLL指令集可能相对容易。(我可以想象这是一个EE设计课程的研究生项目)。它的性能无法与x86或其他现代RISC芯片相媲美

这在理论上当然是可能的:任何传统的低级指令序列都有可能作为单个高级指令实现。我相信你在你的帖子中列出了很多没有做到的原因。一般来说,我认为较低级别的实现效率更高,因为这意味着较少使用的复杂功能在芯片上处于休眠状态。但如果我们处理的是一种特定的语言,那么所有的语言功能都将被频繁使用,从而导致更整洁的设计,不是吗?请阅读原始的“Lambda the ultimate opcode”纸:看看Forth处理器,为什么它比RISC机器慢呢?这背后有什么普遍的原因吗?根据定义,所有复杂的机器都是“复杂的”。它们有很多内部解码和延迟。根据定义,Risc机器试图在复杂性方面做到最低,因此解码器也是如此。复杂解码不需要的硬件可以投资于其他加速器,如管道、缓存等。最初实现的是Lisp,但商业实现通常实现了C可以运行的东西。当然,他们的微码有助于使用内存安全语言。例如,40位字的高位隐藏位有助于内存管理器和类型标志(int、float、vector等)。这实际上允许C程序在其上运行,但会得到在常规CPU上无法接收到的溢出和指针陷阱。所以,实际上,他们只是为了安全而进行了微编码,并且有一个Lisp操作系统。