Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 32位SPARC V8应用程序能否在64位SPARC V9上运行?_Performance_Cpu Architecture_32bit 64bit_Sparc - Fatal编程技术网

Performance 32位SPARC V8应用程序能否在64位SPARC V9上运行?

Performance 32位SPARC V8应用程序能否在64位SPARC V9上运行?,performance,cpu-architecture,32bit-64bit,sparc,Performance,Cpu Architecture,32bit 64bit,Sparc,我几乎没有为SPARC V8 32位体系结构编写的基准测试应用程序。我用它们来评估SPARC 32位处理器的性能。然而,很少有应用程序在性能上达不到要求。我想用64位SPARC V9体系结构(如OpenSPARC T1/T2)测试性能。我的问题是,32位SPARC V8体系结构的已编译二进制文件是否会在SPARC V9体系结构中运行而不做任何修改?两种体系结构中的二进制文件是否兼容 术语混淆 SPARC有点像ARM。你有: SPARC芯片体系结构(据Sun Microsystems/now O

我几乎没有为SPARC V8 32位体系结构编写的基准测试应用程序。我用它们来评估SPARC 32位处理器的性能。然而,很少有应用程序在性能上达不到要求。我想用64位SPARC V9体系结构(如OpenSPARC T1/T2)测试性能。我的问题是,32位SPARC V8体系结构的已编译二进制文件是否会在SPARC V9体系结构中运行而不做任何修改?两种体系结构中的二进制文件是否兼容

术语混淆

SPARC有点像ARM。你有:

  • SPARC芯片体系结构(据Sun Microsystems/now Oracle开发的)命名为
    sun4[a-z]
    ;仅适用于
    sun4
    sun4c
    sun4d
    sun4m
    sun4u
    sun4v

    这对应于
    ARM[1-9]
    ARM11
    Cortex-…
    ,即CPU设计的演变
  • SPARC CPU指令集是“版本化的”——
    sparcv7
    sparcv8
    /
    sparcv8+
    sparcv9
    ;其中一些是32位,
    sparcv9
    是64位
    这对应于指令集上的
    ARMv[0-9]
  • 操作模式(SPARC上为32位/64位)
    这里的ARM有拇指[2],32位ARM和ARMv8/64位ARM
在此上下文中,
sparcv9
是64位指令集,因此需要64位操作模式;相同的二进制编码在32位/64位模式下可能有不同的含义,因此
sparcv7/8
code不会在64位模式下运行

尽管如此,
sun4u
sun4v
CPU体系结构支持32位模式,带有
sparcv8+
指令集和一些扩展,而
sparcv8
本身就是
sparcv7
的超集。
Sun/Oracle以其二进制向后兼容性而自豪;所有当前SPARC CPU都应该运行现有的32位二进制代码,不会出现问题。在本文中,我假设您谈论的是Solaris二进制文件?

假定您使用的是相同的操作系统,但可能是较新的版本。那么是的。Solaris Sparc是非常二进制向后兼容的。Sparc体系结构的每一次修订都考虑到了这一点

你应该记住的事情:

  • Sparc v7是最低的公分母,但实际上Sparc v8将覆盖99%的机器
  • Sparc v7通常缺少硬件浮点,因此在大多数情况下,它的速度都会较慢,尽管它有时被添加为加速器
  • Sparcv8代码在某些情况下会比Sparcv9 64位代码更快,因为指针只有Sparcv9的一半大
  • Sparc v9的最佳代码通常是Sparc v8+,它基本上是32位代码,带有一些扩展,大多数情况下只有64位机器具有这些扩展。由于这一点,大多数64位Sparc操作系统都以32位的形式提供大多数代码,其中一些64位代码需要访问更多ram或仅64位扩展以获得性能,例如基于软件的加密
  • 虽然Sparc的ISA是相当静态的,但性能并非如此。。例如,Sparc T1 Niagra CPU对于任何单线程任务都非常慢,但在加载多个任务时却像champs一样运行。不过,富士通的一些Sparc芯片在各个领域的速度都可能与英特尔竞争。此外,如果一些较旧的Ultra工作站在单线程到多线程的情况下比Niagra T1/T2快得多,我一点也不会感到惊讶。一旦你进入多线程领域,尼亚格拉风格的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有一条处理乘积或商的1(?)位的指令,因此您必须为32x32=64乘法调用该指令32次。。。没有硬件mul/div。我还更新了32位与64位的错误摘要。。。64位代码的主要变化是指针大小。这不太正确sun4名称是平台名称,与所讨论的CPU没有直接关联,例如sun4 sun4m和sun4d都使用非常相似的CPU(尤其是m和d)。然而,它们是平台设计的演变,CM和d或多或少地共存。。。在一个点c为低端,m为中端,d为高端。u是原始的ultrasparc平台,v是带有虚拟化的ultrasparc。与ARM 1-9等相比的实际CPU架构。。将是不太知名的CPU拱门名称,如microsparc和supersparc,还有许多其他变体。