ConfigureNBPMCs
Configures the four hardware Performance Monitor Counters (PMCs) inside the north bridge to enable a title to read the counters directly for the title code.
Syntax
HRESULT ConfigureNBPMCs(
unsigned int eventIndex6,
unsigned int eventIndex7,
unsigned int eventIndex8,
unsigned int eventIndex9
)
Parameters
eventIndex6
Type: unsigned int
Index of the event to count.
eventIndex7
Type: unsigned int
Index of the event to count.
eventIndex8
Type: unsigned int
Index of the event to count.
eventIndex9
Type: unsigned int
Index of the event to count.
Return value
Type: HRESULT
Success or error code.
Code | Description |
---|---|
S_OK | Success. |
E_INVALIDARG | One or more of the indexes is out of range. |
E_ACCESS_DENIED | Access to the driver is denied. |
Remarks
The north bridge has 4 performance counters which can count events. NB PMC values can be read from any core. North bridge memory transactions are 64 bytes.
Events marked with * are recorded from the dram controllers (DCTs). Set eventIndex6 only when configuring these events since the same event need to be set for each dram controller
On Xbox One, we have 4 dram controllers and 4 counters, so you sum PMC6-PMC9 to get the total result.
For example: total memory traffic for NBAllReadWrites = (PCM6+PMC7+PCM8+PMC9) * 64
On Xbox One X, we have 12 dram controllers and 4 counters so we only count traffic on every 3rd DCT. Memory traffic is mostly symmetric so it reasonable to assume that the total number of events is three times the sum PMC6-PMC9.
For example: total memory traffic for NBAllReadWrites = (PCM6+PMC7+PCM8+PMC9) * 3 * 64
Index | Event | Description |
---|---|---|
0 | Reserved | |
1 | NBGarlicReads* | The number of garlic bus reads |
2 | NBGarlicWrites* | The number of garlic bus writes |
3 | NBGarlicReadsWrites* | The number of garlic bus reads and writes |
4 | NBOnionReads* | The number of onion bus reads |
5 | NBOnionWrites* | The number of onion bus writes |
6 | NBOnionReadsWrites* | The number of onion bus reads and write |
7 | NBAllReadWrites* | The number of all NB reads and writes |
8 | NBCPUToMemory | The number of CPU transactions to memory |
9 | NBIOToMemory | The number of IO transactions to memory |
Requirements
Header: pix3.h
Library: pixevt.lib
Supported platforms: Xbox One family consoles and Xbox Series consoles
See also
GetPMCValue
ConfigurePMCs
ConfigureL2IPMCs
PIX3 on Xbox
PIX (NDA topic)Authorization required