Path: utzoo!news-server.csri.toronto.edu!rutgers!usc!wuarchive!zaphod.mps.ohio-state.edu!samsung!umich!sharkey!cfctech!teemc!ka3ovk!wb3ffv!aplcen!visual1.jhuapl.edu!dave From: dave@visual1.jhuapl.edu (Dave Weintraub) Newsgroups: comp.lang.asm370 Subject: New System/3x0 Instruction Keywords: NIC Message-ID: <1991Mar8.173043.26275@aplcen.apl.jhu.edu> Date: 8 Mar 91 17:30:43 GMT Sender: news@aplcen.apl.jhu.edu (USENET News System) Reply-To: dave@visual1.jhuapl.edu (Dave Weintraub) Organization: Applied Physics Laboratory of the Johns Hopkins University Lines: 44 I am in the process of proposing a new 370 (etc.) machine code, to be submitted as a SHARE requirement, probably in the Numerically Intensive Computing (NIC) project. =========================================================================== Statement: Create a new OP code, Move and Discard Character Long. Enhance the Operating System paging services to recognize moves of entire pages, and perform these by updating tables. Justify: (The MVCL instruction is a misnomer. It is really, of course, Copy Character Long, as the "old" data area is available for usage after the instruction has been executed.) When MVCL is used for large data areas (for example, data compaction on large numeric problems, which can easily involve several 16MB data chunks), page swap contention becomes a major issue, as each old and new page must be swapped in, the data copied, and then the next set of pages swapped in. With the proposed instruction, if programmers are careful to keep large (say greater than 40K) areas aligned on page boundaries, then when the dual page fault occurs, the system could test to see if an entire page is being moved to another entire page. If so, no swapping (or byte copying) need actually occur! The page table could be marked to indicate that the two pages have been interchanged; both pages would still belong to the active task, as no FREEMAIN is stated or implied. For large data areas, it seems that the moving of, say, 200MB of data could be reduced to about 5K loops of a few dozen instructions, rather than 10K swapping operations, and 200M actual byte transfers. If whole pages are not involved on both sides ("old" and "new"), then the instruction could be treated as (good old) MVCL. In fact, the test for the special case need only be performed once during each instruction invocation; if the data areas do not both start on page boundaries, and both have lengths of a whole number of pages, then the MVCL situation can be assumed. ========================================================================= An appeal: I am NOT a systems internals person; I have no idea how page faults are really handled, and if this idea can be implemented as stated. Someone more familiar with MVS (or VM or AIX, which could also benefit) page swapping methods, is welcome to comment on the feasibility of this approach!