From: "Kevin D. Kissell" <kevink@mips.com>
To: "Dominic Sweetman" <dom@algor.co.uk>,
"Carsten Langgaard" <carstenl@mips.com>
Cc: "Ralf Baechle" <ralf@linux-mips.org>, <linux-mips@linux-mips.org>
Subject: Re: Promblem with PREF (prefetching) in memcpy
Date: Fri, 4 Oct 2002 14:37:16 +0200 [thread overview]
Message-ID: <00e001c26ba2$c7e6c960$10eca8c0@grendel> (raw)
In-Reply-To: 200210041153.MAA12052@mudchute.algor.co.uk
From: "Dominic Sweetman" <dom@algor.co.uk>
> Carsten Langgaard (carstenl@mips.com) writes:
>
> > I think we have a problem with the PREF instructions spread out in the
> > memcpy function.
>
> Not really. The MIPS32 manual (for example):
>
> "PREF does not cause addressing-related exceptions. If it does happen
> to raise an exception condition, the exception condition is
> ignored. If an addressing-related exception condition is raised and
> ignored, no data movement occurs."
>
> PREF never generates a memory operation for a location with an
> uncached memory access type."
>
> For a Linux user program, at least, memory pages are "memory-like":
> reads are guaranteed to be side-effect free, so any outlying
> prefetches are harmless. It's hard to see any circumstance where an
> accessible cacheable location would lead to bad side-effects on read.
In case Carsten's reply wasn't clear enough, there is a loophole
in the spec: kseg0. There is no TLB access to cause a TLB
exception (which would suppress the operation and be nullifed),
If the prefetch address is correctly aligned, so that there is no
address exception. In typical use, kseg0 is cacheable, which
means that the second paragraph you quote does not apply.
A prefetch to a well-formed, cacheable kseg0 address which
has no primary storage behind it (e.g. 0x04000000 on a system
with 64M of physical memory) should, according to the spec,
cause a cache fill to be initiated for the line at that address,
which will result in a bus error, if not a flat-out system hang.
Regards,
Kevin K.
WARNING: multiple messages have this Message-ID (diff)
From: "Kevin D. Kissell" <kevink@mips.com>
To: Dominic Sweetman <dom@algor.co.uk>,
Carsten Langgaard <carstenl@mips.com>
Cc: Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
Subject: Re: Promblem with PREF (prefetching) in memcpy
Date: Fri, 4 Oct 2002 14:37:16 +0200 [thread overview]
Message-ID: <00e001c26ba2$c7e6c960$10eca8c0@grendel> (raw)
Message-ID: <20021004123716.cf5l3G0unLs-d8nDzjnzKy-HlmbDt5r6Efw6PC381YQ@z> (raw)
In-Reply-To: 200210041153.MAA12052@mudchute.algor.co.uk
From: "Dominic Sweetman" <dom@algor.co.uk>
> Carsten Langgaard (carstenl@mips.com) writes:
>
> > I think we have a problem with the PREF instructions spread out in the
> > memcpy function.
>
> Not really. The MIPS32 manual (for example):
>
> "PREF does not cause addressing-related exceptions. If it does happen
> to raise an exception condition, the exception condition is
> ignored. If an addressing-related exception condition is raised and
> ignored, no data movement occurs."
>
> PREF never generates a memory operation for a location with an
> uncached memory access type."
>
> For a Linux user program, at least, memory pages are "memory-like":
> reads are guaranteed to be side-effect free, so any outlying
> prefetches are harmless. It's hard to see any circumstance where an
> accessible cacheable location would lead to bad side-effects on read.
In case Carsten's reply wasn't clear enough, there is a loophole
in the spec: kseg0. There is no TLB access to cause a TLB
exception (which would suppress the operation and be nullifed),
If the prefetch address is correctly aligned, so that there is no
address exception. In typical use, kseg0 is cacheable, which
means that the second paragraph you quote does not apply.
A prefetch to a well-formed, cacheable kseg0 address which
has no primary storage behind it (e.g. 0x04000000 on a system
with 64M of physical memory) should, according to the spec,
cause a cache fill to be initiated for the line at that address,
which will result in a bus error, if not a flat-out system hang.
Regards,
Kevin K.
next prev parent reply other threads:[~2002-10-04 12:34 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-04 7:50 Promblem with PREF (prefetching) in memcpy Carsten Langgaard
2002-10-04 11:53 ` Dominic Sweetman
2002-10-04 12:11 ` Carsten Langgaard
2002-10-04 12:35 ` Dr. David Alan Gilbert
2002-10-04 12:36 ` Alan Cox
2002-10-04 12:35 ` Carsten Langgaard
2002-10-04 13:09 ` Alan Cox
2002-10-04 13:07 ` Hartvig Ekner
2002-10-04 13:07 ` Hartvig Ekner
2002-10-04 13:00 ` Kevin D. Kissell
2002-10-04 13:00 ` Kevin D. Kissell
2002-10-04 13:15 ` Alan Cox
2002-10-04 13:15 ` Kevin D. Kissell
2002-10-04 13:15 ` Kevin D. Kissell
2002-10-04 13:44 ` Alan Cox
2002-10-04 14:17 ` Kevin D. Kissell
2002-10-04 14:17 ` Kevin D. Kissell
2002-10-04 14:54 ` Alan Cox
2002-10-04 13:01 ` Maciej W. Rozycki
2002-10-04 13:17 ` Ralf Baechle
2002-10-04 13:32 ` Maciej W. Rozycki
2002-10-04 13:29 ` Dominic Sweetman
2002-10-04 13:46 ` Maciej W. Rozycki
2002-10-04 12:33 ` Hartvig Ekner
2002-10-04 12:33 ` Hartvig Ekner
2002-10-04 12:38 ` Ralf Baechle
2002-10-04 12:36 ` Kevin D. Kissell
2002-10-04 12:36 ` Kevin D. Kissell
2002-10-04 14:24 ` Dominic Sweetman
2002-10-04 14:24 ` Dominic Sweetman
2002-10-04 23:43 ` Ralf Baechle
2002-10-05 15:12 ` Hartvig Ekner
2002-10-05 15:12 ` Hartvig Ekner
2002-10-05 15:56 ` Alan Cox
2002-10-04 12:37 ` Kevin D. Kissell [this message]
2002-10-04 12:37 ` Kevin D. Kissell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='00e001c26ba2$c7e6c960$10eca8c0@grendel' \
--to=kevink@mips.com \
--cc=carstenl@mips.com \
--cc=dom@algor.co.uk \
--cc=linux-mips@linux-mips.org \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox