JDK-8178811 : Minimize the AVX <-> SSE transition penalty through generation of vzeroupper instruction on x86
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9,10
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • CPU: x86
  • Submitted: 2017-04-14
  • Updated: 2022-01-12
  • Resolved: 2017-05-06
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 10
10 b21Fixed
Related Reports
Relates :  
Relates :  
Description
This fix minimizes the AVX to SSE and SSE to AVX transition penalty through generation of vzeroupper instruction. With this patch we see zero transitions with penalty per SPECjbb2015 jOPS on BDW and a significant reduction on SKX CPU event vector width mismatch from 65 to 0.01 per SPECjbb2015 jOPS. We have also implemented an enhancement to disable vzeroupper generation for Knights family where the instruction has high penalty and is not recommended. The option UseVzeroupper is used to control generation of vzeroupper instruction and gets set to false on the Knights family.
We observed ~3% gain on SPECJvm2008 composite result on Skylake.
Comments
These changes are also being blamed for a general JNI call slowdown: http://mail.openjdk.java.net/pipermail/shenandoah-dev/2019-August/010477.html
23-08-2019

URL: http://hg.openjdk.java.net/jdk10/jdk10/hotspot/rev/c1995208a14f User: jwilhelm Date: 2017-08-18 18:01:35 +0000
18-08-2017

URL: http://hg.openjdk.java.net/jdk10/hs/hotspot/rev/c1995208a14f User: kvn Date: 2017-05-06 04:47:31 +0000
06-05-2017

Updated webrev: http://cr.openjdk.java.net/~vdeshpande/8178811/webrev.02/
04-05-2017

Updated Webrev: http://cr.openjdk.java.net/~vdeshpande/8178811/webrev.01/ Hi Tobias, Sorry I forgot to set the sub component. I will make sure that I set it from now on. Thanks. Vivek
20-04-2017

Hi Vivek, please always set the subcomponent when filing issues (I set it to "compiler" now). I also changed the type to "enhancement" because this is not a bug but an improvement.
18-04-2017

webrev: http://cr.openjdk.java.net/~vdeshpande/8178811/webrev.00/
14-04-2017