32 位 SPARC V8 應用程序可以在 64 位 SPARC V9 上運行嗎? (Can 32-bit SPARC V8 application run on 64-bit SPARC V9?)


問題描述

32 位 SPARC V8 應用程序可以在 64 位 SPARC V9 上運行嗎? (Can 32‑bit SPARC V8 application run on 64‑bit SPARC V9?)

I have few benchmark application complied for SPARC V8 32‑bit architecture. I used them for performance evaluation of SPARC 32‑bit processor. However, few application fall short of in performance. I want to test the performance with a 64‑bit SPARC V9 architecture ( like OpenSPARC T1/T2). My question is will the compiled binaries for the 32‑bit SPARC V8 architecture run in SPARC V9 architecture without any modifications? Are the binaries in both architectures compatible? 


參考解法

方法 1:

Presuming that you are using the same Operating System though perhaps at a newer version. Then yes. Solaris Sparc is very binary backward compatible. Each revision of the Sparc architecture was designed with this in mind.

Things you should keep in mind:

  • Sparc v7 is the lowest common denominator however in practice Sparc v8 wil cover 99% of machines.
  • Sparc v7 usually lacks hardware floating point so it will be slower in most all cases for that, though it was sometimes added as an accelerator.
  • Sparcv8 code will be faster in some cases than Sparcv9 64bit code due to pointers being half as large.
  • the optimal code for a Sparc v9 is most often Sparc v8+ which is basically 32bit code with some extensions that for the most part only 64bit machines have. Due to this most all 64bit Sparc Operating Systems ship most code as 32bit with some 64bit code where it needs access to more ram or 64bit only extensions for performance such as with software based encryption.
  • While the ISA for Sparc is quite static performance is not.. for instance Sparc T1 Niagra CPUs are dog slow for any single threaded task but run like champs when you load them with many tasks . However some of the Fujitsu Sparc chips probably rival Intel for speed in every area. Also I wouldn't be the least bit supprised if some of the older Ultra workstations were a lot faster than Niagra T1/T2 for single to a couple threads. Once you get into the area of many threads a Niagra style CPU will start to shine.

So remember Sparc v7 , Sparc v8 and Sparc v9 are not chip architectures they are Instruction Set Architectures. The performance for Sparc is mainly dependent on the implementation of the CPU Architecture. Thew newest Sparc processors from Oracle are improving single threaded performance much more than in the past something to keep in mind as well (even if they would burn a hole in your wallet the size of Texas).

If your performance is falling short and you are designing a FPGA based CPU seriously consider improving your CPU design to increase throughput.

方法 2:

Terminology confusion ...

SPARC is a little bit like ARM. You have:

  • the SPARC chip architectures (as far as they were developed by Sun Microsystems / now Oracle) are named sun4[a‑z]; actual tapeout only for sun4sun4csun4dsun4msun4u and sun4v This corresponds to ARM[1‑9]ARM11Cortex‑..., i.e. evolution of the CPU design.
  • SPARC CPU instruction sets are 'versioned' ‑ sparcv7sparcv8/sparcv8+sparcv9; some of these are 32bit, sparcv9 is 64bit This corresponds to ARMv[0‑9], revs on the instruction set.
  • operating modes (32bit / 64bit on SPARC); ARM here has Thumb[2], 32bit ARM and ARMv8/64bit.

In this context, sparcv9 is the 64bit instruction set and therefore requires the 64bit operating mode; the same binary encoding might have different meanings in 32bit/64bit modes and therefore sparcv7/8 code will not run in 64bit mode.

Still, sun4u and sun4v CPU architectures support the 32bit mode ‑ with a sparcv8+ instruction set plus a few extensions, and sparcv8 in itself being a superset of sparcv7. Sun/Oracle pride themselves of their binary backwards compatibility; all current SPARC CPUs should run existing 32bit binary code without problems. I assume, in this context, that you're talking about Solaris binaries ?

(by Shancb88FrankH.)

參考文件

  1. Can 32‑bit SPARC V8 application run on 64‑bit SPARC V9? (CC BY‑SA 3.0/4.0)

#32bit-64bit #sparc #performance #cpu-architecture






相關問題

Visual Studio 將非託管 64 位 DLL 複製到 SysWOW64 而不是 System32 (Unmanaged 64-bit DLL copied to SysWOW64 and not System32 by Visual Studio)

將 R 包從 32 位安裝到 64 位 (install R package from 32bit to 64bit)

x32 ABI - гэта інструмент, як ім карыстацца (x32 ABI is this a tool ,how to use this)

在 64 位應用程序中使用 32 位 .lib 庫 (Using 32bit .lib library in a 64bit application)

當構建配置為“AnyCPU”或“x64”時,Castle Windsor 無法解決 (Castle Windsor not resolving when build configuration is "AnyCPU" or "x64")

32 位 SPARC V8 應用程序可以在 64 位 SPARC V9 上運行嗎? (Can 32-bit SPARC V8 application run on 64-bit SPARC V9?)

Eclipse 內存分析器:無法附加到 32 位進程 (Eclipse Memory Analyzer: Unable to attach to 32-bit process)

如何知道 libpython27.a 是 32 位還是 64 位? (How to know whether libpython27.a is 32-bit or 64-bit?)

確定當前進程是否在 WOW64 中運行或不在 Go 中運行 (Determining if current process runs in WOW64 or not in Go)

確保在 Windows Server 2003 64 位上安裝了 ASP.NET 3.5 Framework (Ensure that ASP.NET 3.5 Framework is installed on Windows Server 2003 64-bit)

為什麼我可以從在 IIS7 中以 64 位模式運行的 AnyCPU .NET Web 應用程序調用 32 位 COM 庫? (Why am I able to call a 32 bit COM library from an AnyCPU .NET web application running in IIS7 in 64 bit mode?)

編譯為 x86 時檢測 OS x86 或 x64 (Detect OS x86 or x64, when compiled as x86)







留言討論