Queued in gitlab.com/danielhb/qemu/tree/ppc-next. Thanks,
Daniel On 5/30/23 10:28, BALATON Zoltan wrote:
Hello, This series improves embedded PPC TLB emulation a bit and contains some misc clean up I've found along the way. Before this patch ppcemb_tlb_check() shows up in a memory access intensive profile (running RageMem speed test in AmigaOS on sam460ex) at 11.91% children, 10.77% self. After this series it does not show up at all. This is not the biggest bottleneck, that is calling tlb_flush() from helper_440_tlbwe() excessively but this was simpler to clean up and still makes a small improvement. RageMem results on master: ---> RAM <--- READ32: 593 MB/Sec READ64: 616 MB/Sec WRITE32: 589 MB/Sec WRITE64: 621 MB/Sec WRITE: 518 MB/Sec (Tricky) ---> VIDEO BUS <--- READ: 588 MB/Sec WRITE: 571 MB/Sec with this series: ---> RAM <--- READ32: 674 MB/Sec READ64: 707 MB/Sec WRITE32: 665 MB/Sec WRITE64: 714 MB/Sec WRITE: 580 MB/Sec (Tricky) ---> VIDEO BUS <--- READ: 691 MB/Sec WRITE: 662 MB/Sec The results have some jitter but both the higher values and that the function is gone from the profile can prove the series has an effect. If nothing else then simplifying the code a bit. For comparison this is faster than a real sam460ex but much slower than running the same with -M pegasos2 so embedded PPC TLB emulation still might need some improvement. I know these are different and PPC440 has software assisted TLB but the problem with it seems to be too much tlb_flushes not that it needs more exceptions. (If somebody is interested to reproduce and experiment with it the benchmarks and some results are available from here: https://www.amigans.net/modules/newbb/viewtopic.php?topic_id=9226 some of the tests also have MorphOS versions that's easier to get than AmigaOS or sources that could be compiled under Linux.) Regards, BALATON Zoltan BALATON Zoltan (7): target/ppc: Remove single use function target/ppc: Remove "ext" parameter of ppcemb_tlb_check() target/ppc: Move ppcemb_tlb_search() to mmu_common.c target/ppc: Remove some unneded line breaks target/ppc: Simplify ppcemb_tlb_search() target/ppc: Change ppcemb_tlb_check() to return bool target/ppc: Eliminate goto in mmubooke_check_tlb() target/ppc/cpu.h | 13 ++---- target/ppc/mmu_common.c | 91 +++++++++++++++++++++++------------------ target/ppc/mmu_helper.c | 32 +-------------- 3 files changed, 57 insertions(+), 79 deletions(-)