Xref: utzoo comp.arch:9123 comp.lang.c:17411 Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!bloom-beacon!apple!vsi1!daver!mips!mash From: mash@mips.COM (John Mashey) Newsgroups: comp.arch,comp.lang.c Subject: Re: looking for >32-bit address space [and how will C handle it] Message-ID: <16568@winchester.mips.COM> Date: 4 Apr 89 17:46:05 GMT References: <1032@myrias.UUCP> <12289@reed.UUCP> Reply-To: mash@mips.COM (John Mashey) Organization: MIPS Computer Systems, Sunnyvale, CA Lines: 54 In article <12289@reed.UUCP> mdr@reed.UUCP (Mike Rutenberg) writes: >>Are there any micros or chipsets out there that support an address space >>larger than 32 bits? >I assume you are asking about physical address space. Physical address space is, in some sense, the easier one to extend, in that it need not be visible to ordinary user programs. Also, 4GB will last a little while, although the end is in sight, of course. >Lots of processors, like the 386, 486, HP Prisim, and others support >virtual addresses of several terabytes, usually through the use of >multiple 32bit segments. Segments seem like an obvious way of doing >large address spaces while keeping the current technology chips fast. MVS/ESA does some sort-of-similar segment mapping to get equivalent effects, I think. >I don't know of any >32bit physical address space microprocessors. If >you have the money, I would suppose you could convince a manufacturer >like Intel to make a custom version of a chip for you. Somebody had >Motorola build a 68012 at one point, which was a 32 bit address bus 68010. The real issue is address-space extension versus software & implementation technology. 1) Segments are the obvious way to do the extension, but they have their drawbacks for general use, compared with flat-address-space models. In particular, everybody's idea of segmentation seems different, and so portable code seems nontrivial. 2) Flat 64-bit addressing has been, and will be for a lonnng time, too costly for most micros. One interesting issue, for some ways out, is what the 64-bit model ought to be be: maybe some of the mini-super and supercomputer folks can give us some hints here: What's the C programming model for machines with 64-bit pointers? how do you say 8-, 16-, 32, and 64-bit ints? (char and short are fine. Now, are 64s long-longs, or just longs? are 32s longs? which one is int? how much code breaks under these various cases? user code operating system code networking code Is there any chance of standardization? The other interesting input that people might be able to give is what they really do on the earlier-mentioned machines that have segments. Can anybody say how the two HP OS's use them? Can people talk about how RT PC's use them? Do any 386 UNIXes use them? How do they work in practice? Anyway, it would be nice to get real experience and data. -- -john mashey DISCLAIMER: UUCP: {ames,decwrl,prls,pyramid}!mips!mash OR mash@mips.com DDD: 408-991-0253 or 408-720-1700, x253 USPS: MIPS Computer Systems, 930 E. Arques, Sunnyvale, CA 94086