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

问题描述:

我有几个基准应用程序符合SPARC V8 32位体系结构。我将它们用于SPARC 32位处理器的性能评估。但是,很少有应用程序的性能不足。我想用64位SPARC V9架构(如OpenSPARC T1/T2)测试性能。我的问题是,32位SPARC V8体系结构的编译二进制文件是否将在SPARC V9体系结构中运行,而无需进行任何修改?两种体系结构中的二进制文件是否兼容?32位SPARC V8应用程序可以在64位SPARC V9上运行吗?

术语混淆...

SPARC有点像ARM。您有:

  • SPARC芯片架构(只要它们是Sun Microsystems /现在的Oracle开发的)被命名为sun4[a-z];实际流片只为sun4sun4c,​​,sun4msun4usun4v
    这对应于ARM[1-9]ARM11Cortex-...,即CPU设计的演进。
  • SPARC CPU指令集是'版本化的 - sparcv7,sparcv8/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位模式 - 在自己为的sparcv7一个超集sparcv8+指令集加了一些扩展,并sparcv8。 Sun/Oracle为自己的二进制向后兼容性而自豪;所有当前的SPARC CPU都应该运行现有的32位二进制代码而不会出现问题。在这种情况下,我假设你在谈论Solaris二进制文件?

假设您使用的是相同的操作系统,但可能是在较新的版本。好的。 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对于任何单线程任务来说都很慢,但是当您用很多任务加载它们时就像冠军一样运行。然而,一些富士通Sparc芯片可能与英特尔在各个领域的速度相提并论。另外,如果一些旧的Ultra工作站比Niagra T1/T2更快,那么对于单个到多个线程,我也不会轻易得到。一旦进入许多线程区域,Niagra风格的CPU将开始发光。

所以记住,Sparc v7,Sparc v8和Sparc v9不是芯片架构,它们是指令集架构。 Sparc的性能主要取决于CPU架构的实现。甲骨文公司最新的Sparc处理器正在改进单线程性能,比过去要多得多(即使它们会在德克萨斯州的大小的钱包中烧出一个洞)。

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