RFR: 8332587: RISC-V: secondary_super_cache does not scale well [v8]
Andrew Haley
aph at openjdk.org
Wed Jun 19 07:48:13 UTC 2024
On Wed, 19 Jun 2024 07:26:31 GMT, Gui Cao <gcao at openjdk.org> wrote:
>> Implementation of subtype checking [JDK-8180450](https://bugs.openjdk.org/browse/JDK-8180450) for linux-riscv64.
>> This optimization depends on availability of the Zbb extension which has the cpop instruction.
>>
>> ### Correctness testing:
>>
>> - [x] Run tier1-3, hotspot:tier4 tests on SOPHON SG2042 (release)
>> - [x] Run tier1-3 tests with -XX:+UseRVV on qemu 8.1.0 (fastdebug)
>> - [x] Run all of tier1 with `-XX:+VerifySecondarySupers`
>>
>> ### JMH tested on Banana Pi BPI-F3 board (has Zbb) and Enable UseZbb, Not Enable UseZba, UseZbs
>> Original:
>>
>> Benchmark Mode Cnt Score Error Units
>> SecondarySuperCacheHits.test avgt 15 11.375 ± 0.071 ns/op
>> SecondarySuperCacheInterContention.test avgt 15 646.087 ± 32.587 ns/op
>> SecondarySuperCacheInterContention.test:t1 avgt 15 600.090 ± 83.779 ns/op
>> SecondarySuperCacheInterContention.test:t2 avgt 15 692.084 ± 73.218 ns/op
>> SecondarySupersLookup.testNegative00 avgt 15 16.420 ± 0.239 ns/op
>> SecondarySupersLookup.testNegative01 avgt 15 18.307 ± 0.260 ns/op
>> SecondarySupersLookup.testNegative02 avgt 15 21.695 ± 0.458 ns/op
>> SecondarySupersLookup.testNegative03 avgt 15 24.855 ± 0.664 ns/op
>> SecondarySupersLookup.testNegative04 avgt 15 27.305 ± 0.522 ns/op
>> SecondarySupersLookup.testNegative05 avgt 15 29.719 ± 0.385 ns/op
>> SecondarySupersLookup.testNegative06 avgt 15 32.231 ± 0.498 ns/op
>> SecondarySupersLookup.testNegative07 avgt 15 33.747 ± 0.603 ns/op
>> SecondarySupersLookup.testNegative08 avgt 15 35.856 ± 0.629 ns/op
>> SecondarySupersLookup.testNegative09 avgt 15 37.077 ± 0.546 ns/op
>> SecondarySupersLookup.testNegative10 avgt 15 39.408 ± 0.465 ns/op
>> SecondarySupersLookup.testNegative16 avgt 15 51.041 ± 0.547 ns/op
>> SecondarySupersLookup.testNegative20 avgt 15 58.722 ± 0.922 ns/op
>> SecondarySupersLookup.testNegative30 avgt 15 77.310 ± 0.654 ns/op
>> SecondarySupersLookup.testNegative32 avgt 15 81.116 ± 0.854 ns/op
>> SecondarySupersLookup.testNegative40 avgt 15 96.311 ± 0.840 ns/op
>> SecondarySupersLookup.testNegative50 avgt 15 115.427 ± 0.838 ns/op
>> SecondarySupersLookup.testNegative55 avgt 15 124.371 ± 1.076 ns/op
>> SecondarySupersLookup.testNegative56 avgt 15 126.796 ± 0.916 ns/op
>> SecondarySupersLookup.testNegative57 avgt 15 127.952 ± 1.202 ns/op
>> SecondarySupersLookup.testNegative58 avgt 15 131.956 ± 4.515 ns/op
>> Seco...
>
> Gui Cao has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 14 additional commits since the last revision:
>
> - Merge remote-tracking branch 'upstream/master' into JDK-8332587
> - Put "secondary super table" generate code inside COMPILER2 macro
> - Merge remote-tracking branch 'upstream/master' into JDK-8332587
> - Update ins_cost for PartialSubtypeCheck
> - Code Format
> - Merge remote-tracking branch 'upstream/master' into JDK-8332587
> - Polish Code Comment
> - Merge remote-tracking branch 'upstream/master' into JDK-8332587
> - Fix Code format
> - Fix for Hamlin comment
> - ... and 4 more: https://git.openjdk.org/jdk/compare/23e348ba...cd656692
src/hotspot/cpu/riscv/vm_version_riscv.cpp line 210:
> 208: if (!FLAG_IS_DEFAULT(UseSecondarySupersTable)) {
> 209: warning("UseSecondarySupersTable is not supported on this CPU");
> 210: }
Disabling `UseSecondarySupersTable` is probably not a good idea. https://github.com/openjdk/jdk/blob/48621ae193ef70b2fae4dcb7ddc524f349beb131/src/hotspot/cpu/x86/macroAssembler_x86.cpp#L4743 is a better and easier way to handle this situation.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19320#discussion_r1645597500
More information about the hotspot-dev
mailing list