Path: utzoo!attcan!uunet!husc6!bbn!rochester!cornell!batcomputer!itsgw!nyser!cmx!billo From: billo@cmx.npac.syr.edu (Bill O) Newsgroups: comp.arch Subject: Re: VM needed for rapid startup Keywords: paging virtual-memory speed Message-ID: <508@cmx.npac.syr.edu> Date: 25 May 88 12:47:29 GMT References: <463@cvaxa.sussex.ac.uk> <1016@cresswell.quintus.UUCP> Reply-To: billo@cmx.npac.syr.edu (Bill O'Farrell) Organization: Northeast Parallel Architectures Center, Syracuse NY Lines: 36 In article <1016@cresswell.quintus.UUCP> ok@quintus.UUCP (Richard A. O'Keefe) writes: >In article <463@cvaxa.sussex.ac.uk>, aarons@cvaxa.sussex.ac.uk (Aaron Sloman) writes: >> Perhaps there are memory management techniques I am unaware of that >> make it easy for portions of a large program to be read in as required, >> without the cost of full virtual memory. >... >The B6700 could and did page large data arrays, but it couldn't page >code. Since each procedure was a separately swappable segment, that >didn't matter much. No page tables, but easy partial loading. The B6700, at least the one that I knew and loved :-), did not do "paging" of either data or code. Yes, procedures were in their own segment -- that is the normal logical partitioning of code space. And data was also partitioned logically into segments; examples: rows of an array, stack trunks, heaps, etc. The "swapping" of these segments (code or data) is analogous to paging, but substitutes hardware-supported manipulation and checking of segment descriptors for TLB's and the like. (There's really no "free lunch" in the world of demand-driven loading and virtual memory.) It should also be said that demand-driven loading is as old as the hills, and pre-dates virtual memory. It used to be called "overlays". To do overlays one instructed the linker to link certain procedure calls to special procedures which loaded the appropriate code segment. The special procedure could be set-up to first check and see if the segment was already loaded, and just jump to it in that case. The cost here was a more expensive calling protocol, but not for every call -- only the ones which were requested to be overlays. The word overlay refers, of course, to the "virtual memory" aspect of this method: newly loaded procedures could replace ones already loaded. Overlays could be a really effective memory management tool in some cases, and I think they may still available as an option in some pc linkers. Bill O'Farrell, Northeast Parallel Architectures Center at Syracuse University (billo@cmx.npac.syr.edu)