Very important semantics. What constitutes a new CPU? And what constitutes BC? Most of us are considering a CPU as hardware BC when it can run the same code.
Actually here's a much more modern example ; fairly recently I had trouble running crysis on my new computer because it was coded for 32 bit OS's.
That's a middleware software issue, not a CPU issue. I can find only one reference to Jag code not running on Zen and that's a highly optimised benchmark.
https://www.techpowerup.com/231536/amd-ryzen-machine-crashes-to-a-sequence-of-fma3-instructions
How many programs that ran on Jaguar based APUs fail to run on Zen PCs?
That's on PC, let alone whatever wonky workarounds developers are able to use on console. I'm going to assume there are more programs that have issues.
You're assuming a lot, which makes for a poor technical discussion, hence me moving this to its own thread. Why are you assuming devs are using to-the-metal CPU code? Is there any evidence supporting that, or are you guessing? Most code is written with high-level development languages. There's very little reason to use low-level CPU code, especially for anything multiplatform. I won't say it's impossible - Naughty Dog might well be using Intrinsics as they are platform exclusive - but it's far from a certainty unless you have reason to think that's the case beyond, "that's how it used to be and things never change so that must be how it is now."
You started it. Don't say I don't want to learn something new and i'm nothing but noise and expect niceties in return.
I'm politely requesting you stop posting that discussion in the technical thread because it's a non-techncial argument. That's my job as a moderator. I've moved the discussion to a new thread so you may continue.
You said "So Wii U had hardware BC with the GC CPU despite being a different CPU because it was the same ISA." Implying that Wii U didn't have all previous extensions and architecture
How is that implied? Why would a new iteration of a processor family not have the previous extensions and features?
Because Zen does not have all the extensions that Jaguar does.
What is it missing? It has a superset of AVX. The difference, the only compatibility issue, is the way FMA is implemented AFAIK, which shouldn't be a problem because the CPU microcode will handle mapping of instructions. For the past ten years, Intel and AMD CPUs have been
swapping implementation of FMA...
The incompatibility between Intel's FMA3 and AMD's FMA4 is due to both companies changing plans without coordinating coding details with each other. AMD changed their plans from FMA3 to FMA4 while Intel changed their plans from FMA4 to FMA3 almost at the same time. The history can be summarized as follows:
- August 2007: AMD announces the SSE5 instruction set, which includes 3-operand FMA instructions. A new coding scheme (DREX) is introduced for allowing instructions to have three operands.[6]
- April 2008: Intel announces their AVX and FMA instruction sets, including 4-operand FMA instructions. The coding of these instructions uses the new VEX coding scheme,[7] which is more flexible than AMD's DREX scheme.
- December 2008: Intel changes the specification for their FMA instructions from 4-operand to 3-operand instructions. The VEX coding scheme is still used.[8]
- May 2009: AMD changes the specification of their FMA instructions from the 3-operand DREX form to the 4-operand VEX form, compatible with the April 2008 Intel specification rather than the December 2008 Intel specification.[9]
- October 2011: AMD Bulldozer processor supports FMA4.[10]
- January 2012: AMD announces FMA3 support in future processors codenamed Trinity and Vishera; they are based on the Piledriver architecture.[11]
- May 2012: AMD Piledriver processor supports both FMA3 and FMA4.[10]
- June 2013: Intel Haswell processor supports FMA3.[12]
- February 2017 AMD Ryzen processor officially supports FMA3, but not FMA4 according to the CPUID instruction.[13] There has been confusion regarding whether FMA4 was implemented or not on this processor due to errata in the initial patch to the GNU Binutils package that has since been rectified.[14][15] While the FMA4 instructions seem to work according to some tests, they can also give wrong results.[16] Additionally, the initial Ryzen CPUs could be crashed by a particular sequence of FMA3 instructions. It has since been resolved by an updated CPU microcode.[17]
Every one of these processor families has been functioning correctly with the same x64 code on PC despite mixed FMA3 and FMA4 implementations.
To be absolutely certain hardware is 100% compatible with older software without additional software workarounds, you have to have the same architectural design. It's not that complicated.
No, you don't. You need a CPU that can run the same code with the same timings for perfect compatibility. For perfectly
functioning compatibility, you need a CPU that can run the same code without producing errors or different outcomes.
I'm in the same boat, just don't shoot me down because I have different uncertainties.
Where in the past page of discussion did you suggest you weren't right and weren't sure and might be wrong? When did you not state categorically as if your point was right? You opened with an assertion hardware BC (backwards compatibility in hardware) would require Jaguar cores to be present and then made ponits as if it was obvious to anyone who knew anything. It was polite up until this point:
Uh, yeah we do know they all share the same CPU. At least I know. ;-) That's how a modded Wii u can play GameCube games. Because, if it was part emulation than Nintendo wouldnt have accounted for GameCube games and only Wii games would run.
Arrogant assertion that you know the CPU in Espresso, although with a smiley.
Lol of course some developers are using these console CPUs at a very low level unlike pc. It's how it's always been.
Uncorroborated theory preceded with a mocking LOL, as if it's laughably stupid to suggest that devs have moved on from low-level, per CPU optimisations that were essential on limited hardware, to using higher-level coding because it's a lot easier and there's enough CPU flexibility nowadays to make the gains not worth the costs.
But it doesn't matter if the majority of developers arent, with hardware BC you have to account for every possibility. If you don't want Jaguar in next gen, then what you would get is software emulation, or at least partial. And that means they'd have to release games individually like ms. Expecting otherwise is ignorant wishful thinking.
Arrogant assertion that thinking software emulation isn't necessary is "ignorant wishful thinking." That is, and people believing in Zen being able to run the current CPU code for games are ignorant and dreamers. An assertion made without any technical explanation, just some assumptions that devs are hitting the CPUs hard with super-low-level optimisations and Zen can't run the same code. Also some questionable arguments linking to a reference to Zen lacking AVX when it features AVX2, a superset that includes all AVX functionality (which is also compatible with old SSE instructions as I understand it).
Prior to that post, twice I had acknowledged the limits of my knowledge and been open to technical corrections. Your response was derogatory and unintelligent. Hence my lack of patience with continuing the discussion with you in a serious thread that needs arguments to be supported with facts, and contributors to be civil and respectful.