【问题标题】:Can 32-bit SPARC V8 application run on 64-bit SPARC V9?32 位 SPARC V8 应用程序可以在 64 位 SPARC V9 上运行吗?
【发布时间】:2013-04-28 13:00:45
【问题描述】:

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

【问题讨论】:

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


    【解决方案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]、32bit ARM 和 ARMv8/64bit。

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

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

    【讨论】:

    • 这不太正确,sun4 名称是平台名称,并且与所讨论的 CPU 没有直接关联,例如 sun4 sun4m 和 sun4d 都使用极其相似的 CPU(尤其是 m 和 d)。然而,它们是平台设计 c m 和 d 或多或少共存的演变……在某一点上,c 是低端,m 和中端,d 是高端。 u 是最初的ultrasparc 平台,v 是带有虚拟化的ultrasparc。与 ARM 1-9 等相比,实际的 CPU 架构将是不太知名的 CPU 架构名称,例如 microsparc 和 supersparc,还有许多其他变体。
    【解决方案2】:

    假设您使用的是相同的操作系统,但可能是较新的版本。好的。 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 架构的实现。来自 Oracle 的最新 Sparc 处理器比过去提高了单线程性能,这也是需要牢记的(即使它们会在你的钱包上烧出一个德克萨斯州大小的洞)。

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

    【讨论】:

    • Sparc v7 支持浮点 - 但是,FPU 位于单独的芯片上。不确定您是否也可以拥有没有内置 FPU 的 Sparc v8 CPU。 Sparc v7 没有的是乘法或除法指令。相反,Sparc v7 有一条指令可以处理乘积或商的一个 (?) 位,因此您必须调用该指令 32 次才能进行 32x32=64 乘法。
    • 没错,说 v7 没有标准化的 FPU 更正确……也没有硬件 mul/div。我还更新了我对 32 位和 64 位的错误总结……随着 64 位代码的变化,主要变化是指针大小。
    猜你喜欢
    • 2023-02-14
    • 2014-06-20
    • 1970-01-01
    • 2010-10-28
    • 2011-01-14
    • 1970-01-01
    • 2010-10-01
    • 2015-04-03
    • 2013-11-24
    相关资源
    最近更新 更多