[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