From: Scott Lurndal on
phil-news-nospam(a)ipal.net writes:
>On Sat, 21 Jun 2008 14:55:27 -0700 (PDT) guenther(a)gmail.com <guenther(a)gmail.com> wrote:
>
>| If my memory serves, the real exception was HP-UX on PA-RISC, where
>| there was NO SUPPORTED METHOD to make a change visible via write()
>| visible to a shared mapping. Completely unmapping the file and
>| remapping it could leave you with old data in the mapping! There were
>| other horrible restrictions on shared mappings (they had to have the
>| same VM address *in all processes*) that made using mmap() there
>| completely unworkable for files that needed to grow while being
>| shared.
>
>My understanding of these limitations is that it is a hardware issue with
>regard to cache line size being larger than a page size.

No, it is because the PA-RISC cache cannot handle virtual aliases
to the same physical memory. Thus, all processes need to use the
same virtual address for the shared memory segment (or mmap(MAP_SHARED)).

Read up on virtually addressed cache architectures, and their limitations.

Then you'll get into cache coloring and all kinds of silly mechanisms
designed to accomodate the defects of a virtually addressed cache.

scott
From: phil-news-nospam on
On Thu, 26 Jun 2008 22:23:51 GMT Scott Lurndal <scott(a)slp53.sl.home> wrote:
| phil-news-nospam(a)ipal.net writes:
|>On Sat, 21 Jun 2008 14:55:27 -0700 (PDT) guenther(a)gmail.com <guenther(a)gmail.com> wrote:
|>
|>| If my memory serves, the real exception was HP-UX on PA-RISC, where
|>| there was NO SUPPORTED METHOD to make a change visible via write()
|>| visible to a shared mapping. Completely unmapping the file and
|>| remapping it could leave you with old data in the mapping! There were
|>| other horrible restrictions on shared mappings (they had to have the
|>| same VM address *in all processes*) that made using mmap() there
|>| completely unworkable for files that needed to grow while being
|>| shared.
|>
|>My understanding of these limitations is that it is a hardware issue with
|>regard to cache line size being larger than a page size.
|
| No, it is because the PA-RISC cache cannot handle virtual aliases
| to the same physical memory. Thus, all processes need to use the
| same virtual address for the shared memory segment (or mmap(MAP_SHARED)).

So what happens when the same physical memory address exists in two different
segment table locations?


| Read up on virtually addressed cache architectures, and their limitations.

I have. It sounds like the PA-RISC is weird. Virtual to real translation is
a basic lookup. But perhaps PA-RISC does this differently and uses some kind
of associative memory where the real address maps to a virtual address and it
scans the table to find which entry has that virtual address?


| Then you'll get into cache coloring and all kinds of silly mechanisms
| designed to accomodate the defects of a virtually addressed cache.

It's not hard if the designers keep the caching design simple.

--
|WARNING: Due to extreme spam, googlegroups.com is blocked. Due to ignorance |
| by the abuse department, bellsouth.net is blocked. If you post to |
| Usenet from these places, find another Usenet provider ASAP. |
| Phil Howard KA9WGN (email for humans: first name in lower case at ipal.net) |