32位SPARC V8应用程序可以在64位SPARC V9上运行吗?

时间:2013-05-04 04:14:21

标签: performance architecture benchmarking 32bit-64bit sparc

我很少有基准应用程序符合SPARC V8 32位架构。我用它们来评估SPARC 32位处理器的性能。但是,很少有应用程序达不到性能。我想用64位SPARC V9架构(如OpenSPARC T1 / T2)测试性能。我的问题是,32位SPARC V8架构的编译二进制文件是否会在SPARC V9架构中运行而不进行任何修改?这两种架构中的二进制文件是否兼容?

2 个答案:

答案 0 :(得分:3)

假设您使用的是相同的操作系统,可能是在较新的版本中。好的。 Solaris Sparc非常向后兼容。 Sparc架构的每个版本都是考虑到这一点而设计的。

你应该记住的事情:

  • Sparc v7是最低的共同点,但在实践中,Sparc v8将覆盖99%的机器。
  • Sparc v7缺少硬件浮点,因此在大多数情况下都会慢一些
  • 由于指令负载开销减半,Sparcv8代码在某些情况下会比Sparcv9 64位代码更快。
  • Sparc v9的最佳代码通常是Sparc v8 +,它基本上是32位代码,有一些扩展,大多数情况下只有64位机器有。由于这一点,大多数所有64位Sparc操作系统都将大多数代码作为32位,其中包含一些64位代码,它需要访问更多内存或64位扩展以获得性能,例如基于软件的加密。
  • 虽然Sparc的ISA是非常静态的,但性能却不是......例如Sparc T1 Niagra CPU对于任何单线程任务来说都很慢,但是当你加载许多任务时它们就像champs一样运行。然而,一些富士通Sparc芯片可能在各个领域与英特尔竞争速度。如果一些较旧的Ultra工作站比单个线程的Niagra T1 / T2快很多,我也不会感到沮丧。一旦你进入许多线程领域,Niagra风格的CPU将开始闪耀。

所以请记住Sparc v7,Sparc v8和Sparc v9不是芯片架构,它们是指令集架构。 Sparc的性能主要取决于CPU架构的实现。来自Oracle的最新Sparc处理器正在改进单线程性能,比以往要记住的要多得多(即使它们会在你的钱包中烧掉像德克萨斯那样大小的洞)。

如果您的性能不足并且您正在设计基于FPGA的CPU,请认真考虑改进CPU设计以提高吞吐量。

答案 1 :(得分:1)

术语混淆......

SPARC有点像ARM。你有:

  • SPARC芯片架构(由Sun Microsystems /现在的Oracle开发)命名为sun4[a-z];仅适用于sun4sun4csun4dsun4msun4usun4v的实际流片 这相当于ARM[1-9]ARM11Cortex-...,即CPU设计的演变。
  • SPARC CPU指令集已“版本化” - sparcv7sparcv8 / sparcv8+sparcv9;其中一些是32位,sparcv9是64位 这对应于ARMv[0-9],转换指令集。
  • 操作模式(SPARC上为32位/ 64位);
    这里的ARM有Thumb [2],32位ARM和ARMv8 / 64bit。

在此上下文中,sparcv9是64位指令集,因此需要64位操作模式;相同的二进制编码在32位/ 64位模式下可能有不同的含义,因此sparcv7/8代码不会在64位模式下运行。

仍然,sun4usun4v CPU架构支持32位模式 - sparcv8+指令集加上一些扩展,sparcv8本身就是{的超集{1}}。 Sun / Oracle以其二进制向后兼容性而自豪;所有当前的SPARC CPU都应该运行现有的32位二进制代码而不会出现问题。在这种情况下,我假设你在谈论Solaris二进制文件?