RFR: 8347489: RISC-V: Misaligned memory access with COH [v2]

Vladimir Kempik vkempik at openjdk.org
Tue Jan 14 09:58:46 UTC 2025


On Tue, 14 Jan 2025 07:55:51 GMT, Fei Yang <fyang at openjdk.org> wrote:

>> Hi, please consider this change.
>> 
>> We have different base_offset (4 bytes instead of 8 bytes aligned) with COH. This causes misaligned memory accesses for several instrinsics like String.Compare or String.Equals. The reason is that we assume 8-byte alignment and process one 8-byte word starting at the first array element for each iteration in the main loop. As a result, we have performance regressions on platforms with slow misaligned memory accesses like Unmatched and Premier P550 SBCs.
>> PS: Same issue is there when `UseCompressedClassPointers` is disabled.
>> 
>> Correctness test on linux-riscv64:
>> - [x] tier1 (TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCompactObjectHeaders") (release)
>> - [x] tier1 (TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:-UseCompactObjectHeaders") (release)
>> - [x] hotspot:tier1 (TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCompactObjectHeaders") (fastdebug)
>> - [x] hotspot:tier1 (TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:-UseCompactObjectHeaders") (fastdebug)
>> 
>> Performance test on Premier P550 (-XX:+UseParallelGC -XX:+AlwaysPreTouch -Xms8g -Xmx8g):
>> 
>> 1. SPECjbb2005 Score Without Patch
>> 1.1 -XX:-UseCompactObjectHeaders: 32666
>> 1.2 -XX:+UseCompactObjectHeaders: 27610
>> 
>> 2. SPECjbb2005 Score With Patch
>> 2.1 -XX:-UseCompactObjectHeaders: 32820
>> 2.2 -XX:+UseCompactObjectHeaders: 34179
>
> Fei Yang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix assertions

src/hotspot/cpu/riscv/stubGenerator_riscv.cpp line 4466:

> 4464: 
> 4465:       if (multi_block) {
> 4466:         __ subi(consts, consts, vset_sew == Assembler::e32 ? 240 : 608);

makes the code less readable, maybe keep total_adds but keep the change of addi to subi ?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/23053#discussion_r1914544385


More information about the hotspot-compiler-dev mailing list