tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: NetBSD 5.1 TCP performance issue (lots of ACK)

On Tue, Nov 22, 2011 at 12:23:06PM -0800, Dennis Ferguson wrote:
> Needless to say, the last bit would be entirely inconsistent with section
> 7.2 of any version of the "Intel 64 and IA-32 Architectures Software 
> Developer?s
> Manual, Volume 3A: System Programming Guide, Part 1" published more recently
> than 2007.  I won't repeat what it says here, but it is rather unambiguous
> about the fact that newer reads (in program order) are always done after older
> reads, at least in the basic instruction set.

I have "IA-32 Intel® Architecture Software Developer's Manual Volume 3:
System Programming Guide" from 2004, and it says at the beggining
of 7.2.2:
| In a single-processor system for memory regions defined as write-back
| cacheable, the following ordering rules apply:
| 1. Reads can be carried out speculatively and in any order.

and a bit later
| In a multiple-processor system, the following ordering rules apply:
| ·    Individual processors use the same ordering rules as in a
|      single-processor system.
| ·    Writes by a single processor are observed in the same order by all
|      processors.
| ·    Writes from the individual processors on the system bus are NOT ordered
|      with respect to each other.

I can't see anything about read ordering being stronger in a SMP system.

So we have to assume that reads can be reorderd, unless we want
NetBSD to run only on x86 systems newer than 2007 (and a lfence instruction
is enough to enforce read ordering).
and yes, my test system is older than 2007.

Manuel Bouyer <>
     NetBSD: 26 ans d'experience feront toujours la difference

Home | Main Index | Thread Index | Old Index