psx.wiki
Log in
Main page
Hardware
Hardware tests
System software
SDKs
File formats
Games
Tools
History
All pages
page
view source
history
View source for Load and Use During a DMA2 List
← Load and Use During a DMA2 List
You do not have permission to edit this page.
Log in
to edit.
--- 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 | See also: - [CPU Stores and Device Delays](/tests/cpu-stores-device-delays/) - [DMA2 Progress and Cache Line Fills](/tests/dma2-progress-line-fills/) - [CPU Timing on BIOS DMA2 List Shapes](/tests/dma2-list-shapes/) ## 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.