"New" Nintendo Switch (OLED Model) [2021-07-06]

Hum?
The Series and PS5 are using RDNA2 GPUs which are flawlessly running games made for GCN (moreso in the case of the PS5, since the others are running over a virtual machine), but for a Tegra GPU they'd have to keep the Maxwell architecture?

The funny thing is if you look at the AMDGPU backend for LLVM, all GFX6/GFX7 (previous consoles were this) and GFX10.x GPUs share a common instruction encoding which totally explains why RDNA/RDNA2 are compatible with code generated on the previous consoles. GFX8 and GFX9 GPUs are the oddballs that don't share a common instruction encoding with them ...

Here's what the CUDA documentation would have to say in Switch's case ...

5. GPU Compilation said:
This chapter describes the GPU compilation model that is maintained by nvcc, in cooperation with the CUDA driver. It goes through some technical sections, with concrete examples at the end.

5.1. GPU Generations
In order to allow for architectural evolution, NVIDIA GPUs are released in different generations. New generations introduce major improvements in functionality and/or chip architecture, while GPU models within the same generation show minor configuration differences that moderately affect functionality, performance, or both.

Binary compatibility of GPU applications is not guaranteed across different generations. For example, a CUDA application that has been compiled for a Fermi GPU will very likely not run on a Kepler GPU (and vice versa). This is the instruction set and instruction encodings of a geneartion is different from those of other generations.

Binary compatibility within one GPU generation can be guaranteed under certain conditions because they share the basic instruction set. This is the case between two GPU versions that do not show functional differences at all (for instance when one version is a scaled down version of the other), or when one version is functionally included in the other. An example of the latter is the base Maxwell version sm_52 whose functionality is a subset of all other Maxwell versions: any code compiled for sm_52 will run on all other Maxwell GPUs.

5.2. GPU Feature List
The following table lists the names of the current GPU architectures, annotated with the functional capabilities that they provide. There are other differences, such as amounts of register and processor clusters, that only affect execution performance.

In the CUDA naming scheme, GPUs are named sm_xy, where x denotes the GPU generation number, and y the version in that generation. Additionally, to facilitate comparing GPU capabilities, CUDA attempts to choose its GPU names such that if x1y1 <= x2y2 then all non-ISA related capabilities of sm_x1y1 are included in those of sm_x2y2. From this it indeed follows that sm_52 is the base Maxwell model, and it also explains why higher entries in the tables are always functional extensions to the lower entries. This is denoted by the plus sign in the table. Moreover, if we abstract from the instruction encoding, it implies that sm_52's functionality will continue to be included in all later GPU generations. As we will see next, this property will be the foundation for application compatibility support by nvcc.

5.3. Application Compatibility
Binary code compatibility over CPU generations, together with a published instruction set architecture is the usual mechanism for ensuring that distributed applications out there in the field will continue to run on newer versions of the CPU when these become mainstream.

This situation is different for GPUs, because NVIDIA cannot guarantee binary compatibility without sacrificing regular opportunities for GPU improvements. Rather, as is already conventional in the graphics programming domain, nvcc relies on a two stage compilation model for ensuring application compatibility with future GPU generations.

If we look at the table we can cleanly see that the Tegra X1/Switch that their GPU generation/version number is SM_53 which basically means that only another SM_5x (Maxwell) GPU is guaranteed share a common instruction set.

Even if Nintendo wanted to upgrade a Switch model with say the Tegra X2 (SM_62), they can't because SM_5x and SM_6x likely have incompatible instruction encodings. You can tell that Nvidia pride themselves on changing the ISA a lot.

AMD have binding commitments to make compatible CPU/GPUs for other console manufacturers. There's no known commitment for Nvidia to do the same for Nintendo ...
 
Last edited:
If we look at the table we can cleanly see that the Tegra X1/Switch that their GPU generation/version number is SM_53 which basically means that only another SM_5x (Maxwell) GPU is guaranteed share a common instruction set.

Even if Nintendo wanted to upgrade a Switch model with say the Tegra X2 (SM_62), they can't because SM_5x and SM_6x likely have incompatible instruction encodings. You can tell that Nvidia pride themselves on changing the ISA a lot.

AMD have binding commitments to make compatible CPU/GPUs for other console manufacturers. There's no known commitment for Nvidia to do the same for Nintendo ...


Fair enough, but couldn't one or two low power modern ARM cores just do a JIT translation from one instruction set to the other?
 
Fair enough, but couldn't one or two low power modern ARM cores just do a JIT translation from one instruction set to the other?

Are you talking about the case of emulation ?

Sure the CPU can recompile the shader binaries but that doesn't change the reality that there are instructions from the previous GPU architecture that doesn't map to the new GPU architecture so the overhead of translation isn't trivial. The best possible outcome Nintendo could hope for in that situation is mirroring what Microsoft is achieving with Xbox 360 software for their current Xbox consoles. A complete solution is intractable and it's not just mismatched instruction sets that is your only problem but fixed function hardware design can change as well ...

From my understanding Nvidia provided most of the development tools for Nintendo Switch. I doubt Nintendo and Nvidia didn't consider future compatibility in mind when they designed Switch and the dev tools.

They should've thought of that before making NVN for the Switch because there are now Nintendo games released using Vulkan since they are dead worried about their work getting obsoleted so they needed some insurance ...
 
They should've thought of that before making NVN for the Switch because there are now Nintendo games released using Vulkan since they are dead worried about their work getting obsoleted so they needed some insurance ...

Nintendo has been offering backward compatibility on their portable console ever since Game Boy Color, which each successive generation offering backward compatibility of previous generation hardware.
I am willing to bet that the ability to offer backward compatibility on future hardware was one of the priorities at Nintendo when they went to Nvidia for Switch SoC. Stop overdramatizing as if it would be too difficult for Nintendo to offer backward compatibility because of GPU complier difference, as they are nowhere as difficult as providing backward compatibility on different CPU ISA.
 
Nintendo has been offering backward compatibility on their portable console ever since Game Boy Color, which each successive generation offering backward compatibility of previous generation hardware.
I am willing to bet that the ability to offer backward compatibility on future hardware was one of the priorities at Nintendo when they went to Nvidia for Switch SoC. Stop overdramatizing as if it would be too difficult for Nintendo to offer backward compatibility because of GPU complier difference, as they are nowhere as difficult as providing backward compatibility on different CPU ISA.

Providing binary compatibility for GPUs is just as hard if not harder than it is CPUs. Modern emulation is largely starting to be gated by GPUs now while the industry luckily converged on AArch64 or x86_64. Some Switch games are somehow 32-bits which is going to be an issue down the line since ARM vendors are eventually going to deprecate 32-bit support ...

And your initial statement isn't true at all because the Switch doesn't have backwards compatibility with software from the previous generation especially against a much more simpler system ...
 
Providing binary compatibility for GPUs is just as hard if not harder than it is CPUs. Modern emulation is largely starting to be gated by GPUs now while the industry luckily converged on AArch64 or x86_64. Some Switch games are somehow 32-bits which is going to be an issue down the line since ARM vendors are eventually going to deprecate 32-bit support ...

Since X1 on Switch only utilizes 4 A57 cores (1 reserved for OS), they can easily offer them as little cores on Next switch and there won't be any problem on CPU end. For GPUs, I am sure Nvidia has guidelines to ensure compatibility with future architecture on their development toolkit.

And your initial statement isn't true at all because the Switch doesn't have backwards compatibility with software from the previous generation especially against a much more simpler system ...

It has to do with all the previous Nintendo consoles having dual screen gameplay(Both Wii U and 3DS). They are starting from clean state with Switch.
 
Since X1 on Switch only utilizes 4 A57 cores (1 reserved for OS), they can easily offer them as little cores on Next switch and there won't be any problem on CPU end. For GPUs, I am sure Nvidia has guidelines to ensure compatibility with future architecture on their development toolkit.

They don't really seem to care either way. Nintendo wants to have access to low level optimizations which conflicts with Nvidia's determination to always design foreign GPU architectures to each other. There's no sign that their partnership is driven by anything else but their own impulses ...

It has to do with all the previous Nintendo consoles having dual screen gameplay(Both Wii U and 3DS). They are starting from clean state with Switch.

If this is their justification then they obviously weren't even trying since this could've been easily fixed by including a USB-C to HDMI adapter while allowing for active dual display. That's the solution to full compatibility but partial compatibility would've been an option as well but it just goes to show you that they aren't always primarily concerned with compatibility ...
 
What's their api's like?
Isn't it provided by Nvidia, I'm sure if anyone can they would be able to maintain compatibility.
It's not about the API, but the GPUs' instruction set architecture. Newer Nvidia μarchs' ISA look drastically different from Maxwell's, to maintain backward compatibility they'll have to recompile all the shader code. If they can get all developers to do it (even for titles released way back) then it should be easy, otherwise they'll need a binary translation solution, some endeavour that Nintendo might not be bothered to (pay Nvidia to) take.

Hum?
The Series and PS5 are using RDNA2 GPUs which are flawlessly running games made for GCN (moreso in the case of the PS5, since the others are running over a virtual machine), but for a Tegra GPU they'd have to keep the Maxwell architecture?
RDNA 2 GPUs are binary compatible with GCN, the two ISAs also look very similar, think of it like x64 processors being able to run x86 code. But for Nvidia it's different.
 
If this is their justification then they obviously weren't even trying since this could've been easily fixed by including a USB-C to HDMI adapter while allowing for active dual display. That's the solution to full compatibility but partial compatibility would've been an option as well but it just goes to show you that they aren't always primarily concerned with compatibility ...

Nintendo at least kept the backward compatibility for two generations for a while (Game Boy and Game Boy Advance, DS and 3DS, and Wii and Wii U). I fully expect they will maintain the full backward compatibility on Switch successor as well, especially given the success they had with the Switch.
 
They don't really seem to care either way. Nintendo wants to have access to low level optimizations which conflicts with Nvidia's determination to always design foreign GPU architectures to each other. There's no sign that their partnership is driven by anything else but their own impulses ...

This doesn't sound like anything other than your own assumptions.
 

you need to click thru to see the tweet chain

twitter com /hexkyz/status/1348007153643130881?lang=en

info since many months ago about switch oled.

so it seems it have more efficient memory (10nm), and a better HDMI out chip (supports 4K upscaling).

Well these guys were spot on back in January.
The HDMI out @4K is supported by the header, but the console's maximum output is still 1080p60.


Are you talking about the case of emulation ?

Sure the CPU can recompile the shader binaries but that doesn't change the reality that there are instructions from the previous GPU architecture that doesn't map to the new GPU architecture so the overhead of translation isn't trivial.

But a new "Switch 2" would probably bring in more ARM cores which could do that work with trivial amounts of power consumption.
Or knowing Nintendo I wouldn't be surprised if a new SoC simply brought the two Maxwell SMs to ensure compatibility, and for the new games they could use it as a dedicated ML upscaler, and/or sound processor. At 1GHz they'd have 1TFLOPs FP16 which could be plenty for CUDA-driven DLSS.


Assuming there even is a backwards-compatible Switch 2 with another Nvidia SoC in the works.
If Nvidia's GPU architectures are indeed ISA-incompatible and Nintendo would need to emulate the GPU instructions, then maybe they're better off with a Samsung + RDNA2 chip (as in being a much cheaper deal than Nvidia).
 
But a new "Switch 2" would probably bring in more ARM cores which could do that work with trivial amounts of power consumption.
Or knowing Nintendo I wouldn't be surprised if a new SoC simply brought the two Maxwell SMs to ensure compatibility, and for the new games they could use it as a dedicated ML upscaler, and/or sound processor. At 1GHz they'd have 1TFLOPs FP16 which could be plenty for CUDA-driven DLSS.

Assuming there even is a backwards-compatible Switch 2 with another Nvidia SoC in the works.
If Nvidia's GPU architectures are indeed ISA-incompatible and Nintendo would need to emulate the GPU instructions, then maybe they're better off with a Samsung + RDNA2 chip (as in being a much cheaper deal than Nvidia).

Whatever their decision is, the only complete solution for compatibility is either they include the chip itself or keep/extend the architecture ...

One outcome would involve having redundant die space being taken up which would bloat the design of the system and the other outcome miraculously requires Nvidia following a model they don't like ...

All hopes of retaining compatibility and moving to a different architecture are dead since NVN is lower level than CUDA. If NVN supported ingesting PTX (forward compat ISA) binaries instead SASS (native ISA) binaries then that scenario would've been possible but Nintendo refused this option ...
 
Whatever their decision is, the only complete solution for compatibility is either they include the chip itself or keep/extend the architecture ...

NIntendo has been doing exactly that, with Wii U, Wii, and their previous generation handheld consoles starting with GBA. Whatever the method Nintendo will end up using to retain Switch backward compatibility, it will definitely have it.
 
There's eve a meme where a Wii is two game cube taped together, a Wii u is four game cube taped together
Well if the meme was trying to mock the Wii's processing power then it actually underdelivered.
The Wii is literally a gamecube with 50% higher clocks and one slow single-channel 64MB GDDR3 chip.
 
Well if the meme was trying to mock the Wii's processing power then it actually underdelivered.
The Wii is literally a gamecube with 50% higher clocks and one slow single-channel 64MB GDDR3 chip.

Yes and no, IIRC the Wii's GPU features TEV on all four pipelines where the GCN's only supported one TEV. Not a monumental difference, but it definitely does add *something* besides just faster clocks.
 
Back
Top