psx.wiki

Load and Use During a DMA2 List: Difference between revisions

Revision as of 05:11, 23 October 2026
RemmyLee
(Hardware tests: 72 more test pages, listed on the main page by area; RUN.toml no longer published)
Revision as of 05:18, 23 October 2026
RemmyLee
(Hardware tests: nine DMA, MDEC and BIOS test pages with part names for titles; join one-sentence paragraphs per voice.md)
Line 1:Line 1:
+---
+title: Load and Use During a DMA2 List
+type: test
+summary: Measures how a RAM load, the use of its value and the accesses around them share time with a DMA2 list.
+category: Hardware tests
+info: Machine = SCPH-5501
+info: Program = followup8
+---
+
+## Overview
+
+Each row is 100 turns from the cache, timed on root counter 2 read by loads only, alone after one warm call and straight after a DMA2 list of 1024 empty nodes starts. The rows separate the cost of a load, of the instruction that uses its value, and of the access that follows.[^run]
+
+Table: Groups
+
+| Tag | Turn of the loop |
+| --- | --- |
+| UAX | A word load, its use two instructions later, then a second access 0 to 6 NOPs after the use |
+| UPR | One to four load and use pairs back to back |
+| UBR | The use by ADDU, BNE, SLL, a store at the loaded address and a store of the loaded value |
+| UDS | A load and its use 2 to 8 instructions later, the turn padded to 10 instructions |
+| ALN | Alone only: an I_STAT load then a RAM load, and a store, NOPs and a load |
+
+## Results
+
+### Second Access After a Use
+
+A load, its use and a second RAM load up to 2 NOPs after the use took about 2,551 cycles during the list. With 4 NOPs it took 2,670 and with 6 NOPs about 3,545. A second access to I_STAT gave about 2,338 up to 2 NOPs and about 3,330 at 6 NOPs. A halfword store after the use took about 2,670 cycles at every gap from 0 to 6 NOPs.[^run]
+
+### Load and Use Pairs
+
+During the list each load and use pair in a turn added about 1,220 cycles over 100 turns: one pair took about 1,343, two about 2,565, three about 3,780 and four about 5,017. Byte and halfword loads gave the same times as word loads.[^run]
+
+### Kind of Use
+
+A use by ADDU, BNE or SLL took about 1,650 cycles alone and about 2,300 during the list. A store that used the loaded value as its address or as its data took about 1,650 alone and about 2,630 during the list.[^run]
+
+### Distance to the Use
+
+With the turn padded to 10 instructions, the time during the list stayed at 2,339 to 2,360 cycles whether the value was used 2, 3, 5, 6 or 8 instructions after the load. Alone it fell from about 1,960 at a distance of 2 or 3 to about 1,555 at a distance of 8.[^run]
+
+### Alone Only
+
+An I_STAT load followed at once by a RAM load took 1,261 cycles over 100 turns. With 1 to 3 NOPs between them it took about 1,465. A halfword store, n NOPs and a load took 1,478 cycles at 4 NOPs and 2,597 at 16 NOPs.[^run]
+
+## Runs
+
+### 2 October 2026
+
+[00RUN.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup8/00RUN.txt)
+
+```
+===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+5 tests
+A chain program, linked at 80100000
+Saved on the card in slot 2, from image 1
+COP0 at start: BPC 00000000 BDA 00000000 TAR 80016128 DCIC 00000000 BadVaddr 00000480 BDAM 00000000
+BPCM 00000000 SR 00000000 Cause 00000020 EPC 80016C84 PRId 00000002
+```
+
+[01UAX.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup8/01UAX.txt)
+
+```
+===== 01 UAX F8 USE THEN ACCESS | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 00000480
+100 turns of a RAM lw, a NOP, an addu of it, a NOPs, then a second access, alone and
+during a list of 1024 empty nodes.
+RAM lw, 0 after the use: alone 1764, during 2551, list done at 10912; alone 1754, during 2552, list done at 10931;
+RAM lw, 1 after the use: alone 1874, during 2551, list done at 10923; alone 1873, during 2551, list done at 10930;
+RAM lw, 2 after the use: alone 1966, during 2557, list done at 10932; alone 1966, during 2552, list done at 10934;
+RAM lw, 4 after the use: alone 2179, during 2670, list done at 11040; alone 2184, during 2671, list done at 11050;
+RAM lw, 6 after the use: alone 2375, during 3554, list done at 10938; alone 2376, during 3537, list done at 10946;
+RAM sh, 0 after the use: alone 1559, during 2671, list done at 11047; alone 1554, during 2670, list done at 11039;
+RAM sh, 1 after the use: alone 1651, during 2663, list done at 11043; alone 1650, during 2661, list done at 11055;
+RAM sh, 2 after the use: alone 1762, during 2673, list done at 11041; alone 1754, during 2675, list done at 11050;
+RAM sh, 4 after the use: alone 1971, during 2666, list done at 11050; alone 1971, during 2665, list done at 11051;
+RAM sh, 6 after the use: alone 2171, during 2687, list done at 11042; alone 2182, during 2683, list done at 11052;
+I_STAT lw, 0 after the use: alone 1550, during 2337, list done at 10699; alone 1550, during 2342, list done at 10718;
+I_STAT lw, 1 after the use: alone 1655, during 2338, list done at 10707; alone 1650, during 2337, list done at 10703;
+I_STAT lw, 2 after the use: alone 1750, during 2340, list done at 10705; alone 1756, during 2342, list done at 10714;
+I_STAT lw, 4 after the use: alone 1954, during 2442, list done at 10813; alone 1956, during 2450, list done at 10824;
+I_STAT lw, 6 after the use: alone 2175, during 3340, list done at 10689; alone 2184, during 3318, list done at 10701;
+Done.
+```
+
+[02UPR.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup8/02UPR.txt)
+
+```
+===== 02 UPR F8 USE PAIRS | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 00000480
+100 turns of n load-use pairs back to back (load, NOP, addu of it), word loads and
+the shell's lb, lhu, lh in turn, alone and during a list of 1024 empty nodes.
+1 pairs, lw: alone 1272, during 1344, list done at 10733; alone 1269, during 1341, list done at 10735;
+2 pairs, lw: alone 2178, during 2566, list done at 10927; alone 2180, during 2563, list done at 10924;
+3 pairs, lw: alone 3064, during 3777, list done at 11119; alone 3064, during 3782, list done at 11127;
+4 pairs, lw: alone 3995, during 5014, list done at 11312; alone 3991, during 5022, list done at 11328;
+1 pairs, lb, lhu, lh: alone 1272, during 1343, list done at 10724; alone 1269, during 1341, list done at 10732;
+2 pairs, lb, lhu, lh: alone 2184, during 2566, list done at 10923; alone 2184, during 2561, list done at 10922;
+3 pairs, lb, lhu, lh: alone 3065, during 3781, list done at 11114; alone 3072, during 3782, list done at 11127;
+4 pairs, lb, lhu, lh: alone 3995, during 5017, list done at 11315; alone 3991, during 5014, list done at 11333;
+Done.
+```
+
+[03UBR.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup8/03UBR.txt)
+
+```
+===== 03 UBR F8 USE KINDS | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 00000480
+100 turns of a RAM lw, a NOP and one use of it, then 4 NOPs, alone and during a list of
+1024 empty nodes; the lw reads a pointer to x_sbuf for the address use.
+use by addu: alone 1650, during 2300, list done at 10716; alone 1650, during 2298, list done at 10714;
+use by bne: alone 1655, during 2297, list done at 10714; alone 1650, during 2293, list done at 10723;
+use by sll: alone 1652, during 2301, list done at 10716; alone 1656, during 2300, list done at 10712;
+use by sh at it (address): alone 1650, during 2628, list done at 11039; alone 1661, during 2633, list done at 11043;
+use by sh of it (data): alone 1650, during 2632, list done at 11034; alone 1661, during 2629, list done at 11042;
+Done.
+```
+
+[04UDS.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup8/04UDS.txt)
+
+```
+===== 04 UDS F8 USE DISTANCE | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 00000480
+100 turns of a RAM lw whose value an addu uses d instructions on, the turn padded to 10
+instructions, alone and during a list of 1024 empty nodes.
+use 2 on: alone 1962, during 2356, list done at 10718; alone 1956, during 2348, list done at 10729;
+use 3 on: alone 1956, during 2352, list done at 10711; alone 1950, during 2360, list done at 10723;
+use 5 on: alone 1750, during 2346, list done at 10719; alone 1752, during 2346, list done at 10714;
+use 6 on: alone 1650, during 2348, list done at 10725; alone 1650, during 2350, list done at 10720;
+use 8 on: alone 1551, during 2339, list done at 10717; alone 1557, during 2353, list done at 10721;
+Done.
+```
+
+[05ALN.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup8/05ALN.txt)
+
+```
+===== 05 ALN F8 ALONE | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+BadVaddr as the group starts: 00000480
+Alone only: 100 turns of an I_STAT lw then a RAM lw k apart, and of a RAM sh, n NOPs
+and a RAM lw.
+I_STAT lw, 0 NOPs, RAM lw: alone 1261; 1335
+I_STAT lw, 1 NOPs, RAM lw: alone 1470; 1523
+I_STAT lw, 2 NOPs, RAM lw: alone 1463; 1529
+I_STAT lw, 3 NOPs, RAM lw: alone 1466; 1527
+I_STAT lw, 4 NOPs, RAM lw: alone 1553; 1620
+sh, 4 NOPs, lw: alone 1478; 1532
+sh, 6 NOPs, lw: alone 1554; 1626
+sh, 8 NOPs, lw: alone 1766; 1828
+sh, 10 NOPs, lw: alone 1954; 2027
+sh, 12 NOPs, lw: alone 2171; 2246
+sh, 14 NOPs, lw: alone 2372; 2449
+sh, 16 NOPs, lw: alone 2597; 2677
+Done.
+```
+
+## References
+
+[^run]: SCPH-5501 output: [followup8/00RUN.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup8/00RUN.txt) and the files beside it, with the other runs listed under Runs.