NV3 PMC: Difference between revisions

From NvWiki
Jump to navigation Jump to search
No edit summary
di
Line 3: Line 3:
== Registers ==
== Registers ==


== NV_PMC_BOOT_0 ==
=== NV_PMC_BOOT_0 ===
* MMIO offset: <code>0x0</code>
* Available in: NV1+
* Read/write


Its a register
Holds part of the manufacture-time configuration information (the rest is held in the [[Configuration#Straps|Straps]] for OEM-level configuration, and [[NV3 PFB|PFB_BOOT_0]] for more manufacture-time configuration). Presumably this was set up by Nvidia and/or SGS-Thomson in the factory, possibly via focused ion beam (FIB) chip modification techniques.
 
{| class="wikitable"
|+ <code>NV_PMC_BOOT_0</code> register sections
|-
! Bit range (high:low) !! Name !! Purpose !! Values
|-
| 3:0 || <code>FIB_REVISION</code> || Focused ion beam chip modification revision. Presumably for fixing the chip after the die is manufactured||
* 0 = revision 0
* 1 = revision 1
* 2 = revision 2 (NV3T, stepping A03/A04)
|-
| 7:4 || <code>MASK_REVISION</code> || Revision of the silicon die. ||
* 0 = revision A, RIVA 128 prototype (design finished late January 1997; tapeout March; first prototypes start of April 1997)
* 1 = revision B, RIVA 128 (already in production by week 33 of 1997)
* 2 = revision C, RIVA 128 ZX
|-
| 15:8 || <code>IMPLEMENTATION</code> || Variation of the architecture. This is actually an unused leftover from the NV1 era, where different versions were sold with slightly different functionality (in the case of the NV1, these were the [[NV9]], NV1 with 32-bit DRAM, NV1 with 32-bit VRAM, and an NV1 with a "Picasso" 128-bit DAC), as well as scrapped plans for an audio-less STG-3000 later on. || 0 = NV3
|-
| 23:16 || <code>ARCHITECTURE</code> || The version of the NV architecture. ||
* 0 = [[NV0]] (never intended to use silicon?)
* 1 = [[NV1]]
* 2 = [[NV2]] (cancelled)
* 3 = [[NV3]]
 
In practice only the value 3 will ever be used on NV3.
|-
| 27:24 || <code>MANUFACTURER</code> || Another NV1 remnant from when the NV1 could either be branded as the SGS-Thomson STG-2000 (1, <code>MANUFACTURER_SGS</code>) or the Nvidia NV1 (0, <code>MANUFACTURER_NV</code>. || 0 = Nvidia
|-
| 31:28 || <code>FOUNDRY</code> || The manufacturer of the GPU. ||
* 0 = SGS-Thomson/STMicroelectronics
* 1 = Helios
* 2 = TSMC (NV3T / Riva 128 ZX only)
|}
 
It is not clear what company the name "Helios" refers to. There is a company called Helios Semiconductor, founded in Taiwan on 12 March 1997. However, it is an IC design company focusing on low-end DSPs, LCD controllers, codec decoders, speech synthesis devices (and various other speech-related devices) and MIDI controllers; in the past (~2001) they also made SoCs for PDAs (the heritage of which is still in their modern chips, as they use 8/16-bit RISC CPU architectures for many of their product), which were strangely branded as "cyber neural processors". It seems extremely unlikely that this company ever owned or operated a silicon fab, and it was founded just weeks before the NV3 taped out and manufacturing it would have been logistically impossible (let alone any earlier Nvidia chips). Additionally, Helios' initial capitalisation of $2.5 million<ref>https://web.archive.org/web/20010217143203/http://www.helios.com.tw/ (Helios Semiconductor web archive; 17 February 2001)</ref> is an implausibly low amount for a fab company, even in 1997. It is possibly an earlier name for a known chip company. There is another company that fabricated batteries called Helios, but it was founded long after the RIVA 128 was discontinued; it's possible Nvidia intended to use Helios's parts but this is still extremely unlikely, since the company was barely founded, obscure, and had very few employees, and even then wouldn't be justified as a "foundry".}. The NV2 is set to have a <code>NV_PMC_BOOT_0</code> value of <code>0x10020400</code>, implying that it would have been manufactured by this mysterious company.
 
What Nvidia appear to have been the intended values for various NV3-based chips is listed below. The value hardcoded in the Nvidia drivers for NV3T-based cards is hardcoded to one that implies a TSMC-manufactured card, although presumably, STMicro-manufactured NV3T chips (confirmed to exist) have bits 31 through 27 as zero rather than two (so e.g. <code>0x20030120</code> for stepping A01 NV3Ts would become <code>0x00030120</code>. Only the revision bits are checked (it has to be <code>0x20</code> when determining if "Riva 128" and "Riva 128 ZX" should be printed in NV3T Video BIOSes (which are also NV3 Video BIOSes)
 
{| class="wikitable"
|+ Caption text
|-
! GPU revision !! <code>NV_PMC_BOOT_0</code> value
|-
| NV3 revision A || <code>0x00030100</code>
|-
| NV3 revision B || <code>0x00030110</code>
|-
| NV3T revision A01 (NV3 revision C) || <code>0x20030120</code>{{ref|b}}
|-
| NV3T revision A02 (NV3 revision C) || <code>0x20030121</code>{{ref|b}}
|-
| NV3T revision A03/A04 (NV3 revision C) || <code>0x20030122</code>{{ref|b}}
|}
 
=== NV_PMC_ENABLE_0 ===
 
=== NV_PMC_INTR_EN_0 ===
 
=== NV_PMC_INTR_0 ===

Revision as of 23:12, 16 May 2025

PMC (Master Control) is the subsystem that controls all of the other subsystems within Nvidia-based GPUs. The NV3 version is fairly basic: it stores some manufacture-time configuration info, allows disabling and enabling interrupts, reading and writing interrupt status and enabling and disabling most other subsystems of the GPU. Certain subsystems, such as PTIMER, cannot be disabled as they are critical to GPU operation; disabling all subsystems on a running system with the Nvidia drivers installed will typically crash the GPU and probably the computer it is running under too. Additionally, disabling interrupts does not seem to work as intended (see Hardware errata)

Registers

NV_PMC_BOOT_0

  • MMIO offset: 0x0
  • Available in: NV1+
  • Read/write

Holds part of the manufacture-time configuration information (the rest is held in the Straps for OEM-level configuration, and PFB_BOOT_0 for more manufacture-time configuration). Presumably this was set up by Nvidia and/or SGS-Thomson in the factory, possibly via focused ion beam (FIB) chip modification techniques.

NV_PMC_BOOT_0 register sections
Bit range (high:low) Name Purpose Values
3:0 FIB_REVISION Focused ion beam chip modification revision. Presumably for fixing the chip after the die is manufactured
  • 0 = revision 0
  • 1 = revision 1
  • 2 = revision 2 (NV3T, stepping A03/A04)
7:4 MASK_REVISION Revision of the silicon die.
  • 0 = revision A, RIVA 128 prototype (design finished late January 1997; tapeout March; first prototypes start of April 1997)
  • 1 = revision B, RIVA 128 (already in production by week 33 of 1997)
  • 2 = revision C, RIVA 128 ZX
15:8 IMPLEMENTATION Variation of the architecture. This is actually an unused leftover from the NV1 era, where different versions were sold with slightly different functionality (in the case of the NV1, these were the NV9, NV1 with 32-bit DRAM, NV1 with 32-bit VRAM, and an NV1 with a "Picasso" 128-bit DAC), as well as scrapped plans for an audio-less STG-3000 later on. 0 = NV3
23:16 ARCHITECTURE The version of the NV architecture.
  • 0 = NV0 (never intended to use silicon?)
  • 1 = NV1
  • 2 = NV2 (cancelled)
  • 3 = NV3

In practice only the value 3 will ever be used on NV3.

27:24 MANUFACTURER Another NV1 remnant from when the NV1 could either be branded as the SGS-Thomson STG-2000 (1, MANUFACTURER_SGS) or the Nvidia NV1 (0, MANUFACTURER_NV. 0 = Nvidia
31:28 FOUNDRY The manufacturer of the GPU.
  • 0 = SGS-Thomson/STMicroelectronics
  • 1 = Helios
  • 2 = TSMC (NV3T / Riva 128 ZX only)

It is not clear what company the name "Helios" refers to. There is a company called Helios Semiconductor, founded in Taiwan on 12 March 1997. However, it is an IC design company focusing on low-end DSPs, LCD controllers, codec decoders, speech synthesis devices (and various other speech-related devices) and MIDI controllers; in the past (~2001) they also made SoCs for PDAs (the heritage of which is still in their modern chips, as they use 8/16-bit RISC CPU architectures for many of their product), which were strangely branded as "cyber neural processors". It seems extremely unlikely that this company ever owned or operated a silicon fab, and it was founded just weeks before the NV3 taped out and manufacturing it would have been logistically impossible (let alone any earlier Nvidia chips). Additionally, Helios' initial capitalisation of $2.5 million[1] is an implausibly low amount for a fab company, even in 1997. It is possibly an earlier name for a known chip company. There is another company that fabricated batteries called Helios, but it was founded long after the RIVA 128 was discontinued; it's possible Nvidia intended to use Helios's parts but this is still extremely unlikely, since the company was barely founded, obscure, and had very few employees, and even then wouldn't be justified as a "foundry".}. The NV2 is set to have a NV_PMC_BOOT_0 value of 0x10020400, implying that it would have been manufactured by this mysterious company.

What Nvidia appear to have been the intended values for various NV3-based chips is listed below. The value hardcoded in the Nvidia drivers for NV3T-based cards is hardcoded to one that implies a TSMC-manufactured card, although presumably, STMicro-manufactured NV3T chips (confirmed to exist) have bits 31 through 27 as zero rather than two (so e.g. 0x20030120 for stepping A01 NV3Ts would become 0x00030120. Only the revision bits are checked (it has to be 0x20 when determining if "Riva 128" and "Riva 128 ZX" should be printed in NV3T Video BIOSes (which are also NV3 Video BIOSes)

Caption text
GPU revision NV_PMC_BOOT_0 value
NV3 revision A 0x00030100
NV3 revision B 0x00030110
NV3T revision A01 (NV3 revision C) 0x20030120[1]

NV3T revision A02 (NV3 revision C) 0x20030121[2]

NV3T revision A03/A04 (NV3 revision C) 0x20030122[3]

NV_PMC_ENABLE_0

NV_PMC_INTR_EN_0

NV_PMC_INTR_0

  1. https://web.archive.org/web/20010217143203/http://www.helios.com.tw/ (Helios Semiconductor web archive; 17 February 2001)