Architectures with strict alignment?
Kostik Belousov
kostikbel at gmail.com
Mon Dec 31 03:33:32 PST 2007
On Mon, Dec 31, 2007 at 05:38:43PM +0800, Erich Dollansky wrote:
> Hi,
>
> Kostik Belousov wrote:
> >On Sat, Dec 29, 2007 at 01:12:04PM +0200, Kostik Belousov wrote:
> >>On Sat, Dec 29, 2007 at 12:14:11AM -0800, Kip Macy wrote:
> >
> >I.e., it seems that gcc does not feel too guilty generating unaligned
> >half-word writes on i386. :(
>
> this should not be a problem inside a cache line.
>
> If the access goes accross two cache lines and the other cache line is
> not in the cache, it becomes real difficult.
>
> I can't tell you what the hardware actually does in this case.
>
> It should read the second affected cache line into the cache. But what
> happens if the second affected cache line is blocked by another CPU
> while the current CPU blocks the first cache line?
From the manual, 253668, 7.1.1:
Accesses to cacheable memory that are split across bus widths, cache
lines, and page boundaries are not guaranteed to be atomic by the Intel
Core 2 Duo, Intel Core Duo, Pentium M, Pentium 4, Intel Xeon, P6 family,
Pentium, and Intel486 processors. The Intel Core 2 Duo, Intel Core Duo,
Pentium M, Pentium 4, Intel Xeon, and P6 family processors provide bus
control signals that permit external memory subsystems to make split
accesses atomic; however, nonaligned data accesses will seriously impact
the performance of the processor and should be avoided.
I think we might get any half of the operation as a result.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20071231/4595825a/attachment.pgp
More information about the freebsd-hackers
mailing list