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