Previous Post

Status update from Nekotekina (2019-07-31)

Next Post
no preview
DESCRIPTION

Hello everyone. This month I have worked on multiple improvements to the emulator. Starting with TSX, I have significantly improved TSX stability after TSX Fallback with this PR: https://github.com/RPCS3/rpcs3/pull/6249 

I also added a workaround for a JIT 'out of memory' issue that occurs when building SPU cache sometimes. Memory consumption after SPU PIC is still high, but this PR should allow to build SPU cache at startup without issues: https://github.com/RPCS3/rpcs3/pull/6225 

Next up, I tried to implement C++20 feature recently added to the future standard. I believe it's necessary to fix performance issues in future on currently officially unsupported OSX and BSD systems in this PR: https://github.com/RPCS3/rpcs3/pull/6267 

C++20 essentially adds a limited futex (https://en.wikipedia.org/wiki/Futex). It's a feature for efficient waiting on an atomic variable to change. Many systems support a similar mechanism for synchronization with different limitations. Ironically, the standardized version maps closely to the WaitOnAddress API introduced in Windows 8. Unfortunately, it doesn't map so well to the Linux futex which was available for much longer. The reality is that this mechanism should be emulated on all platforms.

macOS and BSD currently suffer from a bottlenecked "reference" futex implementation which is intentionally unoptimized in favor of correctness. I really do hope to fix it soon, although I only implemented it in Windows and Linux versions in the previously mentioned PRs.

I've had to spend some time analysing existing PRs and hope to merge most of them soon.

I'm currently investigating some advanced synchronization techniques, seeking to replace some locks with more efficient lock-free approaches.

Thank you for the support.

Nekotekina PATREON 7 favs
VIEWS1
FILES1 file
POSTEDAug 1, 2019
ARCHIVEDJun 10, 2026