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


Reply via email to