psx.wiki

Multiply and Divide Timing: Difference between revisions

Revision as of 04:31, 23 October 2026
RemmyLee
(Hardware tests: test page type, raw console output served from truth/, first test page)
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 37:Line 37:
A second multiply issued while the first is still running waits for it. Two slow multiplies in a row took 13 cycles more than the baseline. A multiply followed by a divide took 36 cycles more, which is the time of the divide alone.[^run]A second multiply issued while the first is still running waits for it. Two slow multiplies in a row took 13 cycles more than the baseline. A multiply followed by a divide took 36 cycles more, which is the time of the divide alone.[^run]
−Writing LO or HI with MTLO or MTHI while a multiply is running stops the multiply at once and adds no time. The register that was written holds the new value, and the other register holds a partial result that is neither its old value nor the product. After MULT 12345678h by 12345678h followed by MTLO, HI read 00000000h where the product's high word is 014B66DCh. After MTHI, LO read 12345678h, which is the value of rs.[^run]+Writing LO or HI with MTLO or MTHI while a multiply is running stops the multiply at once and adds no time. The register that was written holds the new value, and the other register holds a partial result that is neither its old value nor the product. After MULT 12345678h by 12345678h followed by MTLO, HI read 00000000h where the product's high word is 014B66DCh. After MTHI, LO read 12345678h, which is the value of rs.[^run] When 32 NOPs separate the multiply from the MTLO, the multiply finishes first and HI holds the high word of the product.[^run]
−When 32 NOPs separate the multiply from the MTLO, the multiply finishes first and HI holds the high word of the product.[^run]
−
## Runs## Runs
### 22 October 2026### 22 October 2026
−Run 20261022T2214Z-5501a-link ran on the SCPH-5501 and was loaded over the serial cable. The program is nugget's tests/mult-timing as published, with its exit changed to return to the serial loader.[^runtoml] The raw output is [MULTTIME.txt](/tests/raw/20261022T2214Z-5501a-link/multtime/MULTTIME.txt).+The raw output is [MULTTIME.txt](/tests/raw/20261022T2214Z-5501a-link/multtime/MULTTIME.txt).
``````
Line 199:Line 197:
[^src]: pcsx-redux nugget, tests/mult-timing/mult-timing.c, header comment. MIT License. https://github.com/pcsx-redux/nugget[^src]: pcsx-redux nugget, tests/mult-timing/mult-timing.c, header comment. MIT License. https://github.com/pcsx-redux/nugget
[^run]: Hardware test run 20261022T2214Z-5501a-link on the SCPH-5501: [MULTTIME.txt](/tests/raw/20261022T2214Z-5501a-link/multtime/MULTTIME.txt).[^run]: Hardware test run 20261022T2214Z-5501a-link on the SCPH-5501: [MULTTIME.txt](/tests/raw/20261022T2214Z-5501a-link/multtime/MULTTIME.txt).
−[^runtoml]: Hardware test run 20261022T2214Z-5501a-link: [RUN.toml](/tests/raw/20261022T2214Z-5501a-link/RUN.toml).