RFR: 8291550: RISC-V: jdk uses misaligned memory access when AvoidUnalignedAccess enabled [v8]

Vladimir Kempik vkempik at openjdk.org
Fri May 5 11:15:24 UTC 2023


On Fri, 5 May 2023 08:31:23 GMT, Vladimir Kempik <vkempik at openjdk.org> wrote:

>> Please review this attempt to remove misaligned loads and stores in risc-v specific part of jdk.
>> 
>> The patch has two main parts:
>>  - opcodes loads/stores is now using put_native_uX/get_native_uX
>>  - some code in template interp got changed to prevent misaligned loads
>>  
>> perf stat numbers for trp_lam ( misaligned loads) and trp_sam ( misaligned stores) before the patch: 
>> 
>>  169598      trp_lam                                          
>>   13562      trp_sam  
>> 
>> 
>> after the patch both numbers are zeroes.
>> I can see template interpreter to be ~40 % faster on hifive unmatched ( 1 repetition of renaissance philosophers in -Xint mode), and the same performance ( before and after the patch) on thead rvb-ice ( which supports misaligned stores/loads in hw)
>> 
>> tier testing on hw is in progress
>
> Vladimir Kempik has updated the pull request incrementally with one additional commit since the last revision:
> 
>   rename helper function, add assertion

On long runs I still can see some small amount of ptr_lam event, however they aren't originating from TemplateInterpreter and should be a part of different PR

`
 Samples: 1K of event 'trp_lam'
 Event count (approx.): 5240

 Overhead  Command   Shared Object    Symbol                                                                              
 ........  ........  ...............  ....................................................................................

    76.95%  java      [JIT] tid 41259  [.] boolean java.lang.String.equals(java.lang.Object)
     9.22%  Thread-4  [JIT] tid 41259  [.] boolean java.lang.String.equals(java.lang.Object)
     6.47%  Thread-2  [JIT] tid 41259  [.] boolean java.lang.String.equals(java.lang.Object)
     5.65%  Thread-3  [JIT] tid 41259  [.] boolean java.lang.String.equals(java.lang.Object)
     0.53%  java      [JIT] tid 41259  [.] int jdk.internal.org.objectweb.asm.SymbolTable.addConstantUtf8(java.lang.String)
     0.44%  Thread-2  [JIT] tid 41259  [.] int jdk.internal.org.objectweb.asm.SymbolTable.addConstantUtf8(java.lang.String)
     0.38%  Thread-4  [JIT] tid 41259  [.] int jdk.internal.org.objectweb.asm.SymbolTable.addConstantUtf8(java.lang.String)
     0.36%  Thread-3  [JIT] tid 41259  [.] int jdk.internal.org.objectweb.asm.SymbolTable.addConstantUtf8(java.lang.String)
`

            java 41261 778606.540630:          1 trp_lam:        3f88afae7c boolean java.lang.String.equals(java.lang.Object)+0xbc (/tmp/perf-41259.map)
            java 41261 778606.540730:          1 trp_lam:        3f88afae84 boolean java.lang.String.equals(java.lang.Object)+0xc4 (/tmp/perf-41259.map)
        Thread-2 41308 778666.802401:          2 trp_lam:        3f88b12f68 int jdk.internal.org.objectweb.asm.SymbolTable.addConstantUtf8(java.lang.String)+0x1e8 (/tmp/perf-41259.map)
...

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

PR Comment: https://git.openjdk.org/jdk/pull/13645#issuecomment-1536095284


More information about the hotspot-dev mailing list