Load and Use During a DMA2 List
Measures how a RAM load, the use of its value and the accesses around them share time with a DMA2 list.
| Machine | SCPH-5501 |
|---|---|
| Program | followup8 |
This is an old revision of this page, as edited by RemmyLee at 05:40, 23 October 2026. Edit this revision | Latest revision
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.1
| 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.1
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.1
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.1
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.1
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.1
Runs
2 October 2026
===== 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
===== 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.
===== 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.
===== 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.
===== 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.
===== 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.