BIOS Logo Race and Uncached Calls: 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: BIOS Logo Race and Uncached Calls | ||
| + | type: test | ||
| + | summary: Measures the BIOS shell's own instruction path through the logo race window, and calls from cached code into uncached routines, alone and during a DMA2 list. | ||
| + | category: Hardware tests | ||
| + | info: Machine = SCPH-5501 | ||
| + | info: Program = followup9 | ||
| + | --- | ||
| + | |||
| + | ## Overview | ||
| + | |||
| + | RPL replays the BIOS shell's instruction sequence from the logo race window: 2,971 words in four parts. Its RAM accesses go to a scratch buffer. Each part runs cold, with the instruction cache flushed first, and warm, alone and straight after a DMA2 list of 1024 empty nodes starts. All four parts then run in a row from a flushed cache.[^run] | ||
| + | |||
| + | UCL runs a cached loop of 100 turns that calls a routine of NOPs with JALR. The routine holds 1 NOP in the first rows and then 4 and 8. The routine sits in KSEG1 or in the cache. Root counter 2 times every row, and the program reads it with loads only.[^run] | ||
| + | |||
| + | ## Results | ||
| + | |||
| + | ### Replay | ||
| + | |||
| + | Each part of about 743 words took 3,056 to 3,246 cycles cold and 1,695 to 1,937 warm when run alone. During the list each part took 5,440 to 5,953 cycles cold and 3,038 to 3,524 warm.[^run] | ||
| + | |||
| + | The four parts in a row from a flushed cache took about 12,570 cycles alone and about 18,480 during the list. The list ended about 50 cycles after them.[^run] | ||
| + | |||
| + | ### Calls Into Uncached Code | ||
| + | |||
| + | A call to a routine of 1 NOP in KSEG1 took about 2,605 cycles for 100 turns alone and about 3,910 during the list. A routine of 4 NOPs took about 4,400 alone and about 7,575 during the list, and 8 NOPs about 6,880 alone and about 12,445 during the list.[^run] The same routines in the cache took 1,053, 1,353 and 1,753 cycles alone and 1,102 to 1,803 during the list.[^run] | ||
| + | |||
| + | ## Runs | ||
| + | |||
| + | ### 2 October 2026 | ||
| + | |||
| + | [00RUN.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup9/sfollowup9/00RUN.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | 2 tests | ||
| + | A chain program, linked at 80010000 | ||
| + | Saved on the card in slot 2, from image 1 | ||
| + | COP0 at start: BPC 00000000 BDA 00000000 TAR BFC02BAC DCIC 00000000 BadVaddr 00000480 BDAM 00000000 | ||
| + | BPCM 00000000 SR 00000000 Cause 00000020 EPC 80109C8C PRId 00000002 | ||
| + | ``` | ||
| + | |||
| + | [01RPL.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup9/sfollowup9/01RPL.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 01 RPL F9 RACE REPLAY | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | The race window's path in four parts: cold (i-cache flushed) and warm, alone and during a | ||
| + | list of 1024 empty nodes; then the four in a row, cold. Cycles by timer 2. | ||
| + | part 0 (742 words): alone cold 3056, warm 1702; during cold 5651, warm 3295 | ||
| + | part 1 (743 words): alone cold 3227, warm 1937; during cold 5440, warm 3038 | ||
| + | part 2 (743 words): alone cold 3110, warm 1848; during cold 5459, warm 3274 | ||
| + | part 3 (743 words): alone cold 3152, warm 1830; during cold 5945, warm 3524 | ||
| + | all four, cold: alone 12578; during 18490, list done at 18542 | ||
| + | part 0 (742 words): alone cold 3059, warm 1695; during cold 5651, warm 3288 | ||
| + | part 1 (743 words): alone cold 3246, warm 1934; during cold 5444, warm 3040 | ||
| + | part 2 (743 words): alone cold 3112, warm 1835; during cold 5463, warm 3284 | ||
| + | part 3 (743 words): alone cold 3152, warm 1848; during cold 5953, warm 3515 | ||
| + | all four, cold: alone 12564; during 18472, list done at 18524 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [02UCL.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup9/sfollowup9/02UCL.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 02 UCL F9 UNCACHED CALLS | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | 100 turns of a cached loop calling a routine of n NOPs (jalr, link in t9), the routine | ||
| + | run from KSEG1 (uncached) or from the cache, alone and during a list of 1024 empty nodes. | ||
| + | KSEG1 routine of 1 NOPs: alone 2610, during 3910, list done at 11242; alone 2602, during 3908, list done at 11223; | ||
| + | KSEG1 routine of 4 NOPs: alone 4399, during 7575, list done at 11832; alone 4403, during 7572, list done at 11817; | ||
| + | KSEG1 routine of 8 NOPs: alone 6880, during 12446, list done at 12611; alone 6879, during 12447, list done at 12599; | ||
| + | cached routine of 1 NOPs: alone 1053, during 1102, list done at 10546; alone 1053, during 1113, list done at 10525; | ||
| + | cached routine of 4 NOPs: alone 1353, during 1397, list done at 10549; alone 1353, during 1403, list done at 10530; | ||
| + | cached routine of 8 NOPs: alone 1753, during 1800, list done at 10551; alone 1753, during 1802, list done at 10524; | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | ### 2 October 2026 run 2 | ||
| + | |||
| + | [00RUN.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup9/sfollowup9-run2/00RUN.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | 2 tests | ||
| + | A chain program, linked at 80010000 | ||
| + | Saved on the card in slot 2, from image 1 | ||
| + | COP0 at start: BPC 00000000 BDA 00000000 TAR 80109544 DCIC 00000000 BadVaddr 00000480 BDAM 00000000 | ||
| + | BPCM 00000000 SR 00000000 Cause 00000020 EPC 8010A0F8 PRId 00000002 | ||
| + | ``` | ||
| + | |||
| + | [01RPL.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup9/sfollowup9-run2/01RPL.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 01 RPL F9 RACE REPLAY | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | The race window's path in four parts: cold (i-cache flushed) and warm, alone and during a | ||
| + | list of 1024 empty nodes; then the four in a row, cold. Cycles by timer 2. | ||
| + | part 0 (742 words): alone cold 3049, warm 1706; during cold 5643, warm 3281 | ||
| + | part 1 (743 words): alone cold 3218, warm 1931; during cold 5429, warm 3030 | ||
| + | part 2 (743 words): alone cold 3120, warm 1852; during cold 5455, warm 3282 | ||
| + | part 3 (743 words): alone cold 3152, warm 1832; during cold 5953, warm 3517 | ||
| + | all four, cold: alone 12601; during 18481, list done at 18533 | ||
| + | part 0 (742 words): alone cold 3064, warm 1716; during cold 5643, warm 3281 | ||
| + | part 1 (743 words): alone cold 3239, warm 1931; during cold 5447, warm 3043 | ||
| + | part 2 (743 words): alone cold 3126, warm 1852; during cold 5455, warm 3282 | ||
| + | part 3 (743 words): alone cold 3152, warm 1832; during cold 5953, warm 3517 | ||
| + | all four, cold: alone 12601; during 18481, list done at 18533 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [02UCL.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup9/sfollowup9-run2/02UCL.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 02 UCL F9 UNCACHED CALLS | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | 100 turns of a cached loop calling a routine of n NOPs (jalr, link in t9), the routine | ||
| + | run from KSEG1 (uncached) or from the cache, alone and during a list of 1024 empty nodes. | ||
| + | KSEG1 routine of 1 NOPs: alone 2604, during 3905, list done at 11242; alone 2614, during 3905, list done at 11217; | ||
| + | KSEG1 routine of 4 NOPs: alone 4403, during 7574, list done at 11831; alone 4398, during 7569, list done at 11824; | ||
| + | KSEG1 routine of 8 NOPs: alone 6880, during 12446, list done at 12611; alone 6879, during 12447, list done at 12599; | ||
| + | cached routine of 1 NOPs: alone 1053, during 1102, list done at 10546; alone 1053, during 1113, list done at 10525; | ||
| + | cached routine of 4 NOPs: alone 1353, during 1397, list done at 10549; alone 1353, during 1403, list done at 10530; | ||
| + | cached routine of 8 NOPs: alone 1753, during 1800, list done at 10551; alone 1753, during 1802, list done at 10524; | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | ## References | ||
| + | |||
| + | [^run]: SCPH-5501 output: [followup9/sfollowup9/00RUN.txt](/tests/raw/20261002T0000Z-5501a-card-m/followup9/sfollowup9/00RUN.txt) and the files beside it, with the other runs listed under Runs. | ||