Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!cmcl2!phri!roy From: roy@phri.UUCP (Roy Smith) Newsgroups: net.arch Subject: Re: VERY LARGE main memories Message-ID: <2426@phri.UUCP> Date: Sun, 31-Aug-86 18:44:37 EDT Article-I.D.: phri.2426 Posted: Sun Aug 31 18:44:37 1986 Date-Received: Tue, 2-Sep-86 23:40:32 EDT References: <1130@bu-cs.bu-cs.BU.EDU> <2289@peora.UUCP> Reply-To: roy@phri.UUCP (Roy Smith) Organization: Public Health Research Inst. (NY, NY) Lines: 43 Keywords: lookup table, process stateword, humor In article <2289@peora.UUCP> joel@peora.UUCP (Joel Upchurch) writes: > One thing that no one has mentioned so far that you could do > with very large memories is table lookups. OK, let's talk bizarre (1/2 :-)). Imagine the stateword of a process as all the bits in that process's memory strung end to end. If you take this as a memory address, you could implement your CPU as a simple lookup table; for each possible state there is only one possible next state that a process can get to. All you have to do is do a simple table lookup to find the next state. Of course, you need a mighty big memory to build the lookup table (not to mention the non-trivial amount of CPU time to calculate what values go where in the table). How much memory? Well, I just did a size on /bin/* (11/750 running 4.2 BSD). Running the results through colex to get the decimal total and desc to get descriptive statistics (both from Gary Perlman's very nice UNIX|STAT package) I get (with a sample size of 60; this excludes the shell scripts /bin/true and /bin/false): ------------------------------------------------------------ Mean Median Midpoint Geometric Harmonic 35343.000 27394.000 57622.000 32294.059 30172.889 ------------------------------------------------------------ SD Quart Dev Range SE mean 17635.600 7553.000 77052.000 2276.746 ------------------------------------------------------------ Minimum Quartile 1 Quartile 2 Quartile 3 Maximum 19096.000 24372.000 27394.000 39478.000 96148.000 ------------------------------------------------------------ The smallest program was /bin/echo (20k to echo argv!?); the largest was /bin/as at 96k. So, assuming most processes will fit into 100 kbytes, that means you need a LUT with an 800k bit long address. Talk about BFM's! As I think I've mentioned before, it is believed that there are approximately 2^200 electrons in the universe. Since it is unlikely that anybody would want to reference more things than there are electrons in the universe, 200 bits seems like a good upper bound for the length of a memory address. -- Roy Smith, {allegra,philabs}!phri!roy System Administrator, Public Health Research Institute 455 First Avenue, New York, NY 10016