2009-06-30 25 views
16

Linus Torvalds曾经为一家名为Transmeta的处理器公司工作。他们制造的处理器是核心中基于RISC的对象。如果我没有记错的话,这个想法是核心运行了一个任意的,可升级的“处理器仿真层”(可以是x86,powerpc等),它将高级操作码转换为RISC内核指令集。代码变形去了哪里?

这个想法发生了什么?您认为这种方法在编程方面有优势的优点,缺点和情况如何?

+2

+1非常有趣的问题。我在等待有人将x86 Flash播放器转换为ARM。 :-) – Zifre 2009-06-30 00:12:33

回答

7

该公司的表现并不像他们预期的那样好,最终被Novafora收购为节能技术。 (http://www.novafora.com/pr01-28-09.html

从我知道的所有帐户中,该技术根本没有与现有系统竞争。他们远远低于他们的表现数字。另外,尽管可能在VLIW设计之上加入另一位译员,但我不知道他们制作的任何产品。我不记得Crusoe芯片能够接受另一种“翻译”微码下载。

我个人拥有使用Crusoe处理器的设备,虽然它确实提供了电池续航时间,但设备的性能令人沮丧。有些责任可能会在它使用的特殊版本的Windows上发布,但仍然很慢。

充其量,它对于便携式远程桌面很好。

恕我直言,该技术具有同样的好处软件虚拟机像.NET和JVM:

  • 的好处是,你也许可以 与 硬件解决方案加速代码快(如IBM确实有它的Java加速器处理器 比纯软件JIT。
  • 不足之处在于,您永远无法获得执行 本机代码的处理器获得的原始 性能。

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

这种技术的另一个例子可以是FPGA,它可以被编程为在电路级仿真各种处理器或原始电路。我相信一些Cray系统可以带有这种“加速器节点”。

3

明显的优点:

  • 能够运行任何操作系统(只是切换处理器仿真到所需要的)
  • 可能性(内核的支持,当然)在同一处理器上运行不同的二进制文档的/ OS没有软件支持。

明显CON:

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

一方面,大多数CISC处理器在内部将它们的操作码转换为类似于RISC操作的uops微操作。流水线和多核心已经缩小了RISC处理器之间的差距,以至于它们之间的差异非常小(如果有的话)。如果您需要来自C源代码或其他程序集前端的交叉兼容性,则可以使用LLVM。 http://llvm.org/

2

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

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

系统中有几层抽象的原因之一是编程人员/工程师在工作在 更高级别时不必考虑不相关的细节。

操作系统和系统库也提供了额外的抽象层。但如果不需要它们提供的功能(即OS完成的线程调度),那么只有这些层才会使系统“更慢”。让您自己的特定于程序的调度程序在Linux内核中打败一个并非易事。

3

我想说成本的降低与数量有关,所以像Transmeta芯片之类的产品必须在销售大量数量之前,才能与现有的大容量x86芯片进行价格竞争。

如果我记得,Transmeta芯片的一点是它的功耗很低。使每个时钟周期来回翻转的硅栅节省能源。代码变体就是让你可以在低功耗的RISC芯片上运行一个复杂的指令集(CISC)。

全美达的第一款处理器Crusoe在运行基准测试软件时甚至出现问题,但效果并不理想。他们的第二款处理器Efficeon确实使用了比Intel Atom更低的功耗(相同的性能类别),并且在相同的功耗范围内比Centrino表现更好。

现在,从您的软件和灵活性的角度来看,Code Morphing只是一种即时编译形式,具有该技术的所有优点和不足。您的x86代码基本上在虚拟机上运行,​​并由另一个处理器模拟。现在虚拟化的最大好处是能够在多台虚拟机之间共享单个处理器,因此可以减少闲置的CPU周期,从而提高效率(硬件成本和能源成本)。

因此,在我看来,代码变体就像任何形式的虚拟化一样,都是关于如何更有效地利用资源。

3

有关硬件辅助的x86 ISA虚拟化的另一种方法,您可能需要了解有关Loongson 3 CPU的信息。