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

Paul Hohensee paul.hohensee at oracle.com
Wed Aug 17 04:43:48 PDT 2011


Looks good.

Paul

On 8/16/11 1:05 PM, 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