Request for reviews (M): 7079329: Adjust allocation prefetching for T4
Christian Thalinger
christian.thalinger at oracle.com
Tue Aug 16 11:32:40 PDT 2011
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