[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-hotspot-compiler-dev
Subject:    hg: hsx/hotspot-comp/hotspot: 7184394: add intrinsics to use AES instructions
From:       aleksey.shipilev () oracle ! com (Aleksey Shipilev)
Date:       2012-10-25 14:10:07
Message-ID: 5089483F.4040300 () oracle ! com
[Download RAW message or body]

Ugh! Interesting stuff, I did a few point runs with this changeset on my
2nd gen i5, doing AES/CBC/PKCS5Padding on encrypting 10K byte[]-s:

(1 thread):
-XX:-UseAES -XX:-UseAESIntrinsics:   6476.250 +-  27.245 ops/sec
-XX:+UseAES -XX:-UseAESIntrinsics:   6430.232 +-  47.573 ops/sec
-XX:+UseAES -XX:+UseAESIntrinsics:  34071.202 +- 128.339 ops/sec

This sums up to ~350 Mb/sec throughput with intrinsics in single thread.

(4 threads):
-XX:-UseAES -XX:-UseAESIntrinsics:   9327.480 +-  691.092 ops/sec
-XX:+UseAES -XX:-UseAESIntrinsics:   9455.669 +- 1155.928 ops/sec
-XX:+UseAES -XX:+UseAESIntrinsics: 117949.368 +- 1213.273 ops/sec

This adds up to whooping ~1.2 Gb/sec encryption throughput! It's
puzzling however to see the lower scalability boost with baseline cases.
The intrinsified version is ~4x faster, even though half of my hardware
threads are hyperthreads.

-Aleksey.

On 10/25/2012 04:51 AM, vladimir.kozlov at oracle.com wrote:
> Changeset: a3ecd773a7b9
> Author:    kvn
> Date:      2012-10-24 14:33 -0700
> URL:       http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/a3ecd773a7b9
> 
> 7184394: add intrinsics to use AES instructions
> Summary: Use new x86 AES instructions for AESCrypt.
> Reviewed-by: twisti, kvn, roland
> Contributed-by: tom.deneau at amd.com
> 
> ! src/cpu/x86/vm/assembler_x86.cpp
> ! src/cpu/x86/vm/assembler_x86.hpp
> ! src/cpu/x86/vm/stubGenerator_x86_32.cpp
> ! src/cpu/x86/vm/stubGenerator_x86_64.cpp
> ! src/cpu/x86/vm/stubRoutines_x86_32.cpp
> ! src/cpu/x86/vm/stubRoutines_x86_32.hpp
> ! src/cpu/x86/vm/stubRoutines_x86_64.cpp
> ! src/cpu/x86/vm/stubRoutines_x86_64.hpp
> ! src/cpu/x86/vm/vm_version_x86.cpp
> ! src/cpu/x86/vm/vm_version_x86.hpp
> ! src/share/vm/classfile/vmSymbols.hpp
> ! src/share/vm/oops/method.cpp
> ! src/share/vm/opto/callGenerator.cpp
> ! src/share/vm/opto/callGenerator.hpp
> ! src/share/vm/opto/doCall.cpp
> ! src/share/vm/opto/escape.cpp
> ! src/share/vm/opto/library_call.cpp
> ! src/share/vm/opto/runtime.cpp
> ! src/share/vm/opto/runtime.hpp
> ! src/share/vm/runtime/globals.hpp
> ! src/share/vm/runtime/stubRoutines.cpp
> ! src/share/vm/runtime/stubRoutines.hpp
> + test/compiler/7184394/TestAESBase.java
> + test/compiler/7184394/TestAESDecode.java
> + test/compiler/7184394/TestAESEncode.java
> + test/compiler/7184394/TestAESMain.java
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic