wilson@uicbert.eecs.uic.edu (Paul Wilson) (01/26/91)
A while back there was a lot of traffic here about the advantages and disadvantages of 64 bit addresses. I say you don't need them, not in hardware anyway, and you never will. I have a scheme for translating pointers from an idealized 64-bit large format to a machine-supported 32-bit format by "swizzling" (translating) the pointers in a page at page fault time. So 64-bit (or 100-bit, or whatever) pointers are supported in software, but do NOT incur continual overhead for running programs. The page fault handler ensures that the running program only ever sees "real" hardware-supported pointers. (For people who know the Appel, Ellis, and Li stock-hardware pagewise incremental gc, yes, the principle is the same and that's where I got the basic idea. I realized that objects in fromspace can have a different format than objects in tospace. You also can relocate pages instead of objects, and -- voila -- you've got page-fault-time address translation.) If anybody is interested, I've got a tech report that says how this is done, and can send a copy. (The 20-or-so people who've requested my paper on gc locality effects will get this one, too -- no need to send another request.) This paper assumes that real memories are not greater than 4GB, but I'm working on a scheme to support huge RAM too. -- Paul -- Paul R. Wilson Software Systems Laboratory lab ph.: (312) 996-9216 U. of Illin. at C. EECS Dept. (M/C 154) wilson@bert.eecs.uic.edu Box 4348 Chicago,IL 60680