Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/hp300/DOC File contents not interesting anymore, an...
details: https://anonhg.NetBSD.org/src/rev/50413a1bc402
branches: trunk
changeset: 518841:50413a1bc402
user: wiz <wiz%NetBSD.org@localhost>
date: Thu Dec 06 13:56:35 2001 +0000
description:
File contents not interesting anymore, and even partially wrong.
Remove it. Ok'd by chuq.
diffstat:
sys/arch/hp300/DOC/Pmap.notes | 43 -------------------------------------------
1 files changed, 0 insertions(+), 43 deletions(-)
diffs (47 lines):
diff -r f693c17fef12 -r 50413a1bc402 sys/arch/hp300/DOC/Pmap.notes
--- a/sys/arch/hp300/DOC/Pmap.notes Thu Dec 06 13:18:22 2001 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-$NetBSD: Pmap.notes,v 1.3 2000/03/13 23:52:28 soren Exp $
-
-Following are some observations about the BSD hp300 pmap module that
-may prove useful for other pmap modules:
-
-1. pmap_remove should be efficient with large, sparsely populated ranges.
-
- Profiling of exec/exit intensive work loads showed that much time was
- being spent in pmap_remove. This was primarily due to calls from exec
- when deallocating the stack segment. Since the current implementation
- of the stack is to "lazy allocate" the maximum possible stack size
- (typically 16-32mb) when the process is created, pmap_remove will be
- called with a large chunk of largely empty address space. It is
- important that this routine be able to quickly skip over large chunks
- of allocated but unpopulated VA space. The hp300 pmap module did check
- for unpopulated "segments" (which map 4mb chunks) and skipped them fairly
- efficiently but once it found a valid segment descriptor (STE), it rather
- clumsily moved forward over the PTEs mapping that segment. Particularly
- bad was that for every PTE it would recheck that the STE was valid even
- though we should already know that.
-
- pmap_protect can benefit from similar optimizations though it is
- (currently) not called with large regions.
-
- Another solution would be to change the way stack allocation is done
- (i.e. don't preallocate the entire address range) but I think it is
- important to be able to efficiently support such large, spare ranges
- that might show up in other applications (e.g. a randomly accessed
- large mapped file).
-
-2. Bit operations (i.e. ~,&,|) are more efficient than bitfields.
-
- This is a 68k/gcc issue, but if you are trying to squeeze out maximum
- performance...
-
-3. Don't flush TLB/caches for inactive mappings.
-
- On the hp300 the TLBs are either designed as, or used in such a way that,
- they are flushed on every context switch (i.e. there are no "process
- tags") Hence, doing TLB flushes on mappings that aren't associated with
- either the kernel or the currently running process are a waste. Seems
- pretty obvious but I missed it for many years. An analogous argument
- applies to flushing untagged virtually addressed caches (ala the 320/350).
Home |
Main Index |
Thread Index |
Old Index