psx.wiki

CPU Access Time: Difference between revisions

Revision as of 04:48, 23 October 2026
RemmyLee
(Main page: drop the Hardware Tests lede)
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)
Line 1:Line 1:
+---
+title: CPU Access Time
+type: test
+summary: Measures the CPU cycles that one load takes in each region of the memory map.
+category: Hardware tests
+info: Machine = SCPH-5501
+info: Program = cpu/access-time (ps1-tests)
+---
+
+## Overview
+
+The program runs a loop of 100 turns twice: once with a NOP, decrement and branch, and once with a load added after the decrement. The difference between the two, divided by 100, is the time of one load in CPU cycles. It does this for byte, halfword and word loads at one address in each region of the [memory map](/hardware/memory-map/) and at several [I/O ports](/hardware/io-map/).[^src]
+
+SPUCNT at 1F801DAAh is not word aligned, so its word column uses an LWL and LWR pair. The program prints the hundredths after the point without a leading zero: "1.3" means 1.03 cycles and "5.15" means 5.15 cycles.[^src]
+
+## Results
+
+The cycles per load were as follows. The figures are the whole cycles of the run of 25 September 2026; the hundredths moved by up to 0.5 between runs.[^run]
+
+Table: Load time by region (CPU cycles)
+
+| Region | Address | Byte | Halfword | Word |
+| --- | --- | --- | --- | --- |
+| RAM | 80000000h | 5 | 5 | 5 |
+| BIOS ROM | BFC00000h | 7 | 13 | 25 |
+| Scratchpad | 1F800000h | 1 | 1 | 1 |
+| Expansion 1 | 1F000000h | 7 | 13 | 25 |
+| Expansion 2 | 1F802000h | 11 | 26 | 56 |
+| Expansion 3 | 1FA00000h | 6 | 6 | 10 |
+| DMA control, JOY_STAT, SIO_STAT, RAM_SIZE, I_STAT, timer 0, GPUSTAT, MDEC status | 1F801044h to 1F801824h | 3 | 3 | 3 |
+| CD-ROM status | 1F801800h | 8 | 14 | 26 |
+| SPUCNT | 1F801DAAh | 18 | 18 | 39 |
+| Cache control | FFFE0130h | 1 | 1 | 1 |
+
+The BIOS ROM and Expansion 1 cost the same at each width. A halfword load there takes about twice the time of a byte load and a word load about four times. Expansion 2 is slower again at every width.[^run]
+
+A byte read of a CD-ROM register costs 8 cycles. A halfword costs 14 and a word 26, so each byte after the first adds 6 cycles. The SPU costs 18 cycles for a byte or halfword and 39 for the LWL and LWR pair.[^run]
+
+RAM loads measured between 5.15 and 5.47 cycles across the seven runs. In every other region each figure rounds to the same whole cycle in all seven runs.[^run]
+
+## Runs
+
+### 25 September 2026
+
+[02ACC.txt](/tests/raw/20260925T0000Z-5501a-card-main/main/02ACC.txt)
+
+```
+===== 02 ACC CPU ACCESS TIME | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+
+cpu/access-time
+Test CPU access time to different parts of memory map.
+There are no assertions - please manually compare your results with provided psx.log.
+
+SEGMENT ( ADDRESS) 8bit 16bit 32bit (cpu cycles per bitsize)
+RAM (0x80000000) 5.15 5.12 5.19
+BIOS (0xbfc00000) 7.0 13.0 25.1
+SCRATCHPAD (0x1f800000) 1.14 1.3 0.96
+EXPANSION1 (0x1f000000) 7.2 13.0 25.1
+EXPANSION2 (0x1f802000) 11.13 26.6 56.1
+EXPANSION3 (0x1fa00000) 6.10 6.0 9.90
+DMAC_CTRL (0x1f8010f0) 3.6 3.3 2.96
+JOY_STAT (0x1f801044) 3.6 3.1 2.91
+SIO_STAT (0x1f801054) 3.6 3.8 2.94
+RAM_SIZE (0x1f801060) 3.18 3.15 3.15
+I_STAT (0x1f801070) 3.9 3.1 2.91
+TIMER0_VAL (0x1f801100) 3.6 3.3 2.96
+CDROM_STAT (0x1f801800) 8.4 14.0 26.1
+GPUSTAT (0x1f801814) 3.12 3.3 2.96
+MDECSTAT (0x1f801824) 3.6 3.3 2.96
+SPUCNT (0x1f801daa) 18.4 18.6 39.7
+CACHECTRL (0xfffe0130) 1.14 1.3 0.96
+Done.
+```
+
+### 27 September 2026
+
+[02ACC.txt](/tests/raw/20260927T0000Z-5501a-card-1/main/02ACC.txt)
+
+```
+===== 02 ACC CPU ACCESS TIME | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+
+cpu/access-time
+Test CPU access time to different parts of memory map.
+There are no assertions - please manually compare your results with provided psx.log.
+
+SEGMENT ( ADDRESS) 8bit 16bit 32bit (cpu cycles per bitsize)
+RAM (0x80000000) 5.18 5.23 5.32
+BIOS (0xbfc00000) 7.1 13.1 25.1
+SCRATCHPAD (0x1f800000) 1.2 1.2 1.2
+EXPANSION1 (0x1f000000) 7.1 13.1 25.1
+EXPANSION2 (0x1f802000) 11.1 26.1 56.1
+EXPANSION3 (0x1fa00000) 6.1 6.1 10.1
+DMAC_CTRL (0x1f8010f0) 3.2 3.2 3.2
+JOY_STAT (0x1f801044) 3.2 3.2 3.2
+SIO_STAT (0x1f801054) 3.2 3.2 3.2
+RAM_SIZE (0x1f801060) 3.15 3.12 3.13
+I_STAT (0x1f801070) 3.2 3.2 3.2
+TIMER0_VAL (0x1f801100) 3.2 3.2 3.2
+CDROM_STAT (0x1f801800) 8.1 14.1 26.1
+GPUSTAT (0x1f801814) 3.2 3.2 3.2
+MDECSTAT (0x1f801824) 3.2 3.2 3.2
+SPUCNT (0x1f801daa) 18.1 18.1 39.19
+CACHECTRL (0xfffe0130) 1.2 1.2 1.2
+Done.
+```
+
+### 27 September 2026 run 2
+
+[02ACC.txt](/tests/raw/20260927T0000Z-5501a-card-2/main/s024/02ACC.txt)
+
+```
+===== 02 ACC CPU ACCESS TIME | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+
+cpu/access-time
+Test CPU access time to different parts of memory map.
+There are no assertions - please manually compare your results with provided psx.log.
+
+SEGMENT ( ADDRESS) 8bit 16bit 32bit (cpu cycles per bitsize)
+RAM (0x80000000) 5.18 5.31 5.30
+BIOS (0xbfc00000) 7.2 13.2 25.2
+SCRATCHPAD (0x1f800000) 1.3 1.3 1.3
+EXPANSION1 (0x1f000000) 7.2 13.2 25.2
+EXPANSION2 (0x1f802000) 11.2 26.2 56.2
+EXPANSION3 (0x1fa00000) 6.2 6.2 10.2
+DMAC_CTRL (0x1f8010f0) 3.3 3.3 3.3
+JOY_STAT (0x1f801044) 3.3 3.3 3.3
+SIO_STAT (0x1f801054) 3.3 3.3 3.3
+RAM_SIZE (0x1f801060) 3.17 3.13 3.18
+I_STAT (0x1f801070) 3.3 3.3 3.3
+TIMER0_VAL (0x1f801100) 3.3 3.3 3.3
+CDROM_STAT (0x1f801800) 8.2 14.2 26.2
+GPUSTAT (0x1f801814) 3.3 3.3 3.3
+MDECSTAT (0x1f801824) 3.3 3.3 3.3
+SPUCNT (0x1f801daa) 18.2 18.2 39.21
+CACHECTRL (0xfffe0130) 1.3 1.3 1.3
+Done.
+```
+
+### 27 September 2026 run 3
+
+[02ACC.txt](/tests/raw/20260927T0000Z-5501a-card-b/main/s034/02ACC.txt)
+
+```
+===== 02 ACC CPU ACCESS TIME | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+
+cpu/access-time
+Test CPU access time to different parts of memory map.
+There are no assertions - please manually compare your results with provided psx.log.
+
+SEGMENT ( ADDRESS) 8bit 16bit 32bit (cpu cycles per bitsize)
+RAM (0x80000000) 5.18 5.31 5.30
+BIOS (0xbfc00000) 7.2 13.2 25.2
+SCRATCHPAD (0x1f800000) 1.3 1.3 1.3
+EXPANSION1 (0x1f000000) 7.2 13.2 25.2
+EXPANSION2 (0x1f802000) 11.2 26.2 56.2
+EXPANSION3 (0x1fa00000) 6.2 6.2 10.2
+DMAC_CTRL (0x1f8010f0) 3.3 3.3 3.3
+JOY_STAT (0x1f801044) 3.3 3.3 3.3
+SIO_STAT (0x1f801054) 3.3 3.3 3.3
+RAM_SIZE (0x1f801060) 3.17 3.13 3.18
+I_STAT (0x1f801070) 3.3 3.3 3.3
+TIMER0_VAL (0x1f801100) 3.3 3.3 3.3
+CDROM_STAT (0x1f801800) 8.2 14.2 26.2
+GPUSTAT (0x1f801814) 3.3 3.3 3.3
+MDECSTAT (0x1f801824) 3.3 3.3 3.3
+SPUCNT (0x1f801daa) 18.2 18.2 39.21
+CACHECTRL (0xfffe0130) 1.3 1.3 1.3
+Done.
+```
+
+### 27 September 2026 run 4
+
+[02ACC.txt](/tests/raw/20260927T0000Z-5501a-card-g/main/02ACC.txt)
+
+```
+===== 02 ACC CPU ACCESS TIME | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+
+cpu/access-time
+Test CPU access time to different parts of memory map.
+There are no assertions - please manually compare your results with provided psx.log.
+
+SEGMENT ( ADDRESS) 8bit 16bit 32bit (cpu cycles per bitsize)
+RAM (0x80000000) 5.18 5.31 5.30
+BIOS (0xbfc00000) 7.2 13.2 25.2
+SCRATCHPAD (0x1f800000) 1.3 1.3 1.3
+EXPANSION1 (0x1f000000) 7.2 13.2 25.2
+EXPANSION2 (0x1f802000) 11.2 26.2 56.2
+EXPANSION3 (0x1fa00000) 6.2 6.2 10.2
+DMAC_CTRL (0x1f8010f0) 3.3 3.3 3.3
+JOY_STAT (0x1f801044) 3.3 3.3 3.3
+SIO_STAT (0x1f801054) 3.3 3.3 3.3
+RAM_SIZE (0x1f801060) 3.17 3.13 3.18
+I_STAT (0x1f801070) 3.3 3.3 3.3
+TIMER0_VAL (0x1f801100) 3.3 3.3 3.3
+CDROM_STAT (0x1f801800) 8.2 14.2 26.2
+GPUSTAT (0x1f801814) 3.3 3.3 3.3
+MDECSTAT (0x1f801824) 3.3 3.3 3.3
+SPUCNT (0x1f801daa) 18.2 18.2 39.21
+CACHECTRL (0xfffe0130) 1.3 1.3 1.3
+Done.
+```
+
+### 27 September 2026 run 5
+
+[02ACC.txt](/tests/raw/20260927T0000Z-5501a-card-g3/main/02ACC.txt)
+
+```
+===== 02 ACC CPU ACCESS TIME | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+
+cpu/access-time
+Test CPU access time to different parts of memory map.
+There are no assertions - please manually compare your results with provided psx.log.
+
+SEGMENT ( ADDRESS) 8bit 16bit 32bit (cpu cycles per bitsize)
+RAM (0x80000000) 5.29 5.44 5.40
+BIOS (0xbfc00000) 7.6 13.6 25.6
+SCRATCHPAD (0x1f800000) 1.7 1.8 1.7
+EXPANSION1 (0x1f000000) 7.6 13.6 25.6
+EXPANSION2 (0x1f802000) 11.6 26.6 56.6
+EXPANSION3 (0x1fa00000) 6.6 6.6 10.6
+DMAC_CTRL (0x1f8010f0) 3.7 3.7 3.7
+JOY_STAT (0x1f801044) 3.7 3.7 3.7
+SIO_STAT (0x1f801054) 3.7 3.7 3.7
+RAM_SIZE (0x1f801060) 3.15 3.17 3.16
+I_STAT (0x1f801070) 3.7 3.7 3.7
+TIMER0_VAL (0x1f801100) 3.7 3.7 3.7
+CDROM_STAT (0x1f801800) 8.8 14.6 26.6
+GPUSTAT (0x1f801814) 3.7 3.7 3.7
+MDECSTAT (0x1f801824) 3.7 3.7 3.7
+SPUCNT (0x1f801daa) 18.6 18.6 39.25
+CACHECTRL (0xfffe0130) 1.7 1.7 1.8
+Done.
+```
+
+### 28 September 2026
+
+[02ACC.txt](/tests/raw/20260928T0000Z-5501a-card-h/main/02ACC.txt)
+
+```
+===== 02 ACC CPU ACCESS TIME | BIOS 19951204 System ROM Version 3.0 11/18/96 A
+
+cpu/access-time
+Test CPU access time to different parts of memory map.
+There are no assertions - please manually compare your results with provided psx.log.
+
+SEGMENT ( ADDRESS) 8bit 16bit 32bit (cpu cycles per bitsize)
+RAM (0x80000000) 5.22 5.40 5.47
+BIOS (0xbfc00000) 7.6 13.6 25.6
+SCRATCHPAD (0x1f800000) 1.7 1.8 1.7
+EXPANSION1 (0x1f000000) 7.6 13.6 25.6
+EXPANSION2 (0x1f802000) 11.6 26.6 56.6
+EXPANSION3 (0x1fa00000) 6.6 6.6 10.6
+DMAC_CTRL (0x1f8010f0) 3.7 3.7 3.7
+JOY_STAT (0x1f801044) 3.7 3.7 3.7
+SIO_STAT (0x1f801054) 3.7 3.7 3.7
+RAM_SIZE (0x1f801060) 3.15 3.17 3.16
+I_STAT (0x1f801070) 3.7 3.7 3.7
+TIMER0_VAL (0x1f801100) 3.7 3.7 3.7
+CDROM_STAT (0x1f801800) 8.8 14.6 26.6
+GPUSTAT (0x1f801814) 3.7 3.7 3.7
+MDECSTAT (0x1f801824) 3.7 3.7 3.7
+SPUCNT (0x1f801daa) 18.6 18.6 39.25
+CACHECTRL (0xfffe0130) 1.7 1.7 1.8
+Done.
+```
+
+## References
+
+[^src]: ps1-tests, cpu/access-time. https://github.com/JaCzekanski/ps1-tests.
+[^run]: SCPH-5501 output: [main/02ACC.txt](/tests/raw/20260925T0000Z-5501a-card-main/main/02ACC.txt) and the files beside it, with the other runs listed under Runs.