Linus Torvalds 曾在一家名为 Transmeta 的处理器公司工作。他们制造的处理器的核心是基于 RISC 的对象。如果我没记错的话,这个想法是核心运行一个任意且可升级的“处理器模拟层”(可以是 x86、powerpc 等),它将高级操作码转换为 RISC 核心指令集。

这个想法发生了什么?您认为这种方法的优点、缺点和可能具有优势的情况(在编程方面)是什么?

有帮助吗?

解决方案

该公司的表现并没有达到他们的预期,最终因其节能技术而被 Novafora 收购。( http://www.novafora.com/pr01-28-09.html )

据我所知,该技术根本无法与现有系统竞争。他们远远低于他们的表现数字。另外,虽然可能可以在他们的 VLIW 设计之上放置另一个翻译器,但我不知道他们生产过任何这样做的产品。我不记得 Crusoe 芯片能够接受替代的“翻译”微代码下载。

我个人拥有一台使用 Crusoe 处理器的设备,虽然它确实可以延长电池寿命,但该设备的性能却很差。部分责任可能归咎于它使用的特殊版本的 Windows,但它仍然很慢。

充其量,它对于便携式远程桌面来说是有好处的。

恕我直言,该技术与 .Net 和 JVM 等软件 VM 具有相同的优点:

  • 优势是,您可以使用硬件解决方案(就像IBM使用的Java Accelerator处理器一样)更快地加速代码,而不是纯软件JIT。
  • 不利的一面是,您永远无法获得执行本机代码获得的处理器的原始性能。

从某些角度来看,您可以将现代 x86 芯片视为代码变形,尽管是非常专业的芯片。他们将 x86 架构转换为更高效的类似 RISC 的子指令集,然后执行它们。

此类技术的另一个例子是 FPGA,它可以被编程为在电路级上模拟各种处理器或原始电路。我相信某些 Cray 系统可以配备此类“加速器节点”。

其他提示

一方面最CISC处理器内部翻译其操作码的uop微操作其类似于RISC OPS。流水线和多个内核已经关闭了在RISC处理器的点差距在哪里这是他们之间的一个非常小的差异,如果有的话。如果需要从C源或另一横兼容性组件前端可以使用LLVM。 http://llvm.org/

明显的优点:

  • 能够运行任何操作系统(只需将处理器模拟切换到所需的即可)
  • 无需软件支持即可在同一处理器/操作系统上运行不同架构的二进制文件(当然需要内核支持)的可能性。

明显的缺点:

  • 额外的模拟层==更多的开销==需要更快的处理器才能获得同等的性能。

我会说,降低成本来与数量,所以像全美达的芯片有卖量很多,才可以在价格上与现有的高容量x86芯片竞争。

如果我还记得,全美达芯片的点是它是低功率。有较少的硅大门来回翻转每个时钟周期可节省能源。代码词态化是如此你可以运行低功率RISC芯片上的复杂指令集(CISC)。

Transmeta的第一处理器克鲁索,没有因甚至运行基准测试软件的问题做的非常好。它们的第二处理器,所述的Efficeon,并管理使用比英特尔Atom功率较少(在相同的性能类别),并且以相同的功率包络进行比迅驰更好。

现在,从软件和灵活性的角度看它像你,代码变形是刚刚即时编译的形式,所有的好处和技术的利弊。您的x86代码在虚拟机上运行基本上与由另一处理器被仿真。虚拟化的最大的好处,现在是共享许多虚拟机之间的单个处理器,所以你有较少的空闲的CPU周期的能力,这是更有效的(硬件成本和能源成本)。

所以,在我看来,代码变形,就像任何形式的虚拟化技术,是所有关于是与资源更加高效。

有关的另一种方法,以硬件辅助的x86 ISA的虚拟化,您可能需要阅读有关龙芯3 CPU。

大多数现代处理器实际使用实现其指令集。 有许多原因,包括兼容性问题,但也有其他 的原因。

之间什么是“硬件”,什么是“软件”,实际上是很难做出的区别。 现代的虚拟机,如JVM或CIL(.NET),还不如用硬件来实现,但是这可能只是用微反正来完成。

的原因之一为具有在系统抽象的若干层是该 程序员/工程师不必去想无关的细节,当他们在工作 较高的水平。

在操作系统和系统库还提供附加的抽象层。但是具有这些层不仅使系统“慢”,如果不需要它们所提供的功能(即,由OS进行的线程调度)。这是不容易的任务来获得自己的具体方案,调度击败一个在Linux内核中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top