[comp.arch] Software Page Table Machines

reiter@endor.harvard.edu (Ehud Reiter) (05/12/87)

Some friends of mine are playing around with memory-mapped databases.
They are interested in finding a machine which supports

1) Software control of the virtual-to-real memory mapping.  That is,
when a TLB miss occurs in the MMU, they want to have their own program fill
in the TLB entry, not depend on a hardwired hardware algorithm.

2) Large address space.  This is less important, but since there are
plenty of databases out there which are larger than 4 GB, they'd
like a machine with 40 (or more) addressing bits.

3) Networking.  This is supposed to be a distributed database, so good
networking is a must!

So if you know of any machine which fits all (or most) of the above
requirements, please let me know.  Note that I'm not sure if this is
going to be a paper study, or if they're actually planning to build something.

Thanks.
					Ehud Reiter
					reiter@harvard	(ARPA,BITNET,UUCP)
					reiter@harvard.harvard.EDU  (new ARPA)	

mitch@stride1.UUCP (05/15/87)

In article <1968@husc6.UUCP> reiter@endor.UUCP (Ehud Reiter) writes:
>Some friends of mine are playing around with memory-mapped databases.
>

The above line started me wondering if any system has
considerations for per process disk optimizations.  For example
in a database the person building the code might know the best
way to do buffering or read ahead.  I know many programs are
built to take advantage of known disk optimizations, but not the
other way around.

Perhaps something like:
-=-=--=
#include <disk-opt.h>
-stuff-
int	fd;
-stuff-
	fd = open(argv[1], O_RDWR)
	disk-optim(fd, {BUFFER, READ_AHEAD, READ_BEHIND})
-stuff-
Thanks for the Soap



Thomas P. Mitchell (mitch@stride1.Stride.COM)
Phone:	(702) 322-6868 TWX:	910-395-6073
MicroSage Computer Systems Inc. a Division of Stride Micro.
Opinions expressed are probably mine. 

greg@ncr-sd.UUCP (05/17/87)

In article <668@stride.Stride.COM> mitch@stride1.Stride.COM (Thomas P. Mitchell) writes:
>The above line started me wondering if any system has
>considerations for per process disk optimizations.  ....
>... the person building the code might know the best
>way to do buffering or read ahead.

I modified a V6 system once to handle user-specified read-ahead.  It added
a set of seek specifiers parallel to the standard set that had the side-
effect that they started a read-ahead cycle.  That is,
    seek(file, location, 8);
was identical to
    seek(file, location, 0);
except that it also started to read the block specified in the location.  It
did help, but its effectivness was sporatic -- the disk was too slow (an RK05)
or the processor was too fast (PDP-11/40) and the common case was that there
wasn't enough processing to do after deciding which record was needed next, so
you ended up waiting anyway.  On the other hand, we did have one application
that about trebbled its performance -- it wanted to read records in clusters,
so it often would ask for eight or ten records to be pre-read, thus taking
advantage of the better seek scheduling.
-- 
-- Greg Noel, NCR Rancho Bernardo     Greg.Noel@SanDiego.NCR.COM

earl@mips.UUCP (Earl Killian) (05/17/87)

In article <668@stride.Stride.COM>, mitch@stride1.UUCP (Thomas P. Mitchell)
asks about per process disk optimizations.

I don't think this is uncommon in operating systems.  Systems are
often written to accept "hints" from programs.

One example: the ITS operating system (for the PDP10) has system calls
to declare that part of your virtual memory (which can be mapped to a
file or not) is going to be referenced sequentially.  When you page
fault on page I it starts the disk read for I+N (or I-N) depending on
what the user specified.  One use of this was in the editor (the
original EMACS); string searches used this mechanism to get the pages
to be scanned read in faster.

gwu@vlsi.cs.cmu.edu (George Wu) (05/20/87)

Concerning the discussion about pre process disk optimizations:

     I'm not sure whether this was a Berkeley call or something Sun did, but I
remember a long time ago in a Sun-2 manual that there was a system call which
told the system how you expected to access your data. There were three
different "modes:" the system default, some sort of number-of-accesses based
algorithm; sequential access; and completely random access.

     I presume this was all to allow the system to determine what page(s) was
best to swap out. And it would all have to be per process.

							George