Request for reviews (M): 7079329: Adjust allocation prefetching for T4

Igor Veresov igor.veresov at oracle.com
Tue Aug 16 11:09:05 PDT 2011


Still looks good. 

igor

On Tuesday, August 16, 2011 at 10:05 AM, Vladimir Kozlov wrote:

> Thank you, Christian, Paul and Igor
> 
> I updated webrev with suggestions:
> 
> http://cr.openjdk.java.net/~kvn/7079329/webrev
> 
> - AllocateInstPrefetchLines renamed to AllocateInstancePrefetchLines.
> - Prefetch instructions in x86 .ad use MacroAssembler instructions.
> - Added Abstract_VM_Version::reserve_for_allocation_prefetch() method used in 
> ThreadLocalAllocBuffer::end_reserve().
> - I have to use FLAG_SET_ERGO() for AllocatePrefetchLines*2 setting since 
> VM_Version::initialize() is called twice on Sparc (long story which I don't want 
> to discuss here).
> 
> Vladimir
> 
> Vladimir Kozlov wrote:
> > I will think about it.
> > 
> > Thanks,
> > Vladimir
> > 
> > On 8/16/11 6:11 AM, Paul Hohensee wrote:
> > > Also, is there a way to avoid using #ifdef SPARC in 
> > > threadLocalAllocBuffer.hpp?
> > > Maybe add a predicate to vm_version that says whether or not to play 
> > > the tlab
> > > reserve game.
> > > 
> > > Paul
> > > 
> > > On 8/16/11 9:01 AM, Paul Hohensee wrote:
> > > > You're changing the meaning of an existing flag, 
> > > > AllocatePrefetchLines, to
> > > > apply only to arrays, right?
> > > > 
> > > > If so, I'd add another flag for arrays, maybe call it 
> > > > AllocateArrayPrefetchLines,
> > > > and change the code so AllocatePrefetchLines becomes an optional 
> > > > parameter.
> > > > E.g., default it to -1 in globals.hpp, and if it's specified on the 
> > > > command line,
> > > > set both AllocateArrayPrefetchLines and AllocateInstPrefetchLines to the
> > > > command line value. That would retain backward compatibility: I remember
> > > > seeing AllocatePrefetchLines used in a few jbb submissions.
> > > > 
> > > > Also, I'd rename AllocateInstPrefetchLines to 
> > > > AllocateInstancePrefetchLines. 'Inst"
> > > > is a bit confusing to me and perhaps to others: the first thing I 
> > > > think of is 'instruction'.
> > > > 
> > > > Paul
> > > > 
> > > > On 8/15/11 9:12 PM, Vladimir Kozlov wrote:
> > > > > http://cr.openjdk.java.net/~kvn/7079329/webrev
> > > > > 
> > > > > 7079329: Adjust allocation prefetching for T4
> > > > > 
> > > > > L2 cache line size is 32 bytes on T4 instead of 64 bytes on T series 
> > > > > before. As result BIS instruction prefetches
> > > > > only 32 bytes. Jbb2005 runs show that prefetching 64 bytes is still 
> > > > > better on T4 so 2 BIS instructions should be issued.
> > > > > 
> > > > > BIS can't be use for general prefetching since it may fault. New 
> > > > > PrefetchAllocation node was added for allocation
> > > > > prefetching.
> > > > > 
> > > > > Changed prefetchAlloc_bis parameter from memory to regP.
> > > > > 
> > > > > Use AllocatePrefetchInstr on Sparc to allow specify what instruction 
> > > > > to use for allocation prefetching (0: prefetch
> > > > > write, 1: BIS).
> > > > > 
> > > > > Added new instructions on Sparc cacheLineAdrX to reduce number of 
> > > > > instructions generated for finding next cache line
> > > > > address.
> > > > > 
> > > > > Added new flag AllocateInstPrefetchLines to specify number of lines 
> > > > > to prefetch for instance allocation.
> > > > > 
> > > > > L1_data_cache_line_size() renamed to prefetch_data_size().




More information about the hotspot-compiler-dev mailing list