Request for reviews (M): 7079329: Adjust allocation prefetching for T4
Vladimir Kozlov
vladimir.kozlov at oracle.com
Tue Aug 16 11:31:55 PDT 2011
thank you, Christian.
Vladimir
Christian Thalinger wrote:
> Looks good.
>
> -- Christian
>
> On Aug 16, 2011, at 7: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