Linus Torvalds曾经在一家名为Transmeta的处理器公司工作。他们制作的处理器是核心中基于RISC的对象。如果我没记错的话,那就是核心运行了一个任意且可升级的“处理器仿真层”(可能是x86,powerpc等),它将高级操作码转换为RISC核心指令集。
这个想法发生了什么,你认为这种方法在编程方面可能具有优势的优点,缺点和情况是什么?
答案 0 :(得分:7)
该公司表现不如预期,并最终被Novafora收购,因为它的节能技术。 (http://www.novafora.com/pr01-28-09.html)
从我所知道的所有账户中,该技术根本没有与现有系统竞争。他们远远落后于他们的表现数字。此外,虽然可能在其VLIW设计之上放置另一个翻译器,但我不知道他们生产的任何产品。我不记得Crusoe芯片是否能够接受替代的“翻译”微代码下载。
我个人拥有一台使用Crusoe处理器的设备,虽然它确实提供了电池寿命,但该设备的性能却令人沮丧。可能会对其使用的特殊版本的Windows进行一些指责,但它仍然很慢。
充其量,这对便携式远程桌面很有用。
恕我直言,该技术与.Net和JVM等软件VM具有相同的优势:从某些角度来看,您可以将现代x86芯片视为代码变形,尽管它们是非常专业的。他们将x86架构转换为更高效的RISC类子指令集,然后执行它们。
这种技术的另一个例子是FPGA,它可以被编程为在电路级模拟各种处理器或原始电路。我相信一些Cray系统可以带有这种“加速器节点”。
答案 1 :(得分:4)
一方面,大多数CISC处理器在内部将其操作码转换为类似于RISC操作的微操作微操作。流水线技术和多核处理器已经缩小了RISC处理器的差距,使它们之间的差距非常小(如果有的话)。如果需要来自C源或其他程序集前端的交叉兼容性,则可以使用LLVM。 http://llvm.org/
答案 2 :(得分:3)
明显的专业人士:
明显的骗局:
答案 3 :(得分:3)
我认为成本降低伴随着数量的增加,所以像Transmeta芯片这样的产品在与现有的大容量x86芯片价格竞争之前必须卖出大量产品。
如果我记得的话,Transmeta芯片的重点是低功耗。每个时钟周期具有较少的硅门来回翻转可以节省能量。代码变形使您可以在低功耗RISC芯片上运行复杂的指令集(CISC)。
Transmeta的第一款处理器Crusoe由于甚至运行基准测试软件的问题而表现不佳。他们的第二个处理器Efficeon确实设法使用的功率低于Intel Atom(在相同的性能类别中),并且在相同的功率范围内比Centrino表现更好。
现在,从软件和灵活性的角度来看,Code Morphing只是一种即时编译形式,具有该技术的所有好处和不利因素。您的x86代码基本上在虚拟机上运行,并由另一个处理器模拟。现在虚拟化的最大好处是能够在许多虚拟机之间共享单个处理器,从而减少空闲CPU周期,从而提高效率(硬件成本和能源成本)。
所以在我看来,代码变形就像任何形式的虚拟化一样,都是为了提高资源效率。
答案 4 :(得分:3)
对于硬件辅助x86 ISA虚拟化的另一种方法,您可能希望了解Loongson 3 CPU。
答案 5 :(得分:2)
大多数现代处理器实际上使用microcode实现其指令集。 这有很多原因,包括兼容性问题,但还有其他原因 的原因。
什么是“硬件”和什么是“软件”之间的区别实际上很难。 现代虚拟机(如JVM或CIL(.NET))也可以在硬件中实现,但这可能只是使用微码完成。
在系统中进行多层抽象的原因之一就是 程序员/工程师在工作时不必考虑不相关的细节 更高的水平。
操作系统和系统库还提供了额外的抽象层。但是,如果不需要它们提供的功能(即,由OS完成的线程调度),则使这些层仅使系统“更慢”。让你自己的程序特定的调度程序胜过Linux内核中的调度程序并非易事。