Template Version: @(#)sac_nextcase %I% %G% SMI This information is Copyright 2009 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: prefetch interfaces 1.2. Name of Document Author/Supplier: Author: Paul Durrant 1.3 Date of This Document: 21 January, 2009 4. Technical Description
I'm sponsoring this case for Paul Durrant. I believe it qualifies for self review. The interfaces proposed (prefetch_read_many and prefetch_read_once) are proposed for Consolidation Private commitment. This case seeks Patch binding, although at the moment we believe this will only be delivered into Nevada. If anyone thinks it deserves more discussion, please feel free to bump it up to a regular fast track. -- Garrett PROBLEM Many device drivers, particularly 10 gigabit network drivers, need to avoid CPU stalls to achieve good bandwidth. CPU stalls can be caused by many things including cache and TLB misses. Careful code and data structure layout can be used to mitigate TLB misses. Cache misses can also be mitigated by careful code and data layout, but also by giving hints to the CPU to prefetch certain data into cache many cycles before that data is required. ON currently lacks interfaces for device drivers to request prefetch in a platform agnostic way. PROPOSAL Add inlines for i386/amd64 and sparcv9 for the following types of prefetch: void prefetch_read_many(void *) This requests data be loaded into a cache for repeated reading. (This equates to a 't0' prefetch on x86 CPUs). void prefetch_read_once(void *) This requests data be loaded into a cache for one read only, so it can be flushed from the cache immediately after access. (This equates to a 'nta' prefetch on x86 CPUs). 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: ON 6.5. ARC review type: Automatic 6.6. ARC Exposure: open