Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!zaphod.mps.ohio-state.edu!tut.cis.ohio-state.edu!ucbvax!CS.NIU.EDU!rickert From: rickert@CS.NIU.EDU (Neil Rickert) Newsgroups: comp.lang.asm370 Subject: Re: New System/3x0 Instruction Message-ID: <9103101907.AA18725@ucbvax.Berkeley.EDU> Date: 10 Mar 91 19:03:10 GMT References: <1991Mar8.173043.26275@aplcen.apl.jhu.edu> Sender: daemon@ucbvax.BERKELEY.EDU Reply-To: IBM 370 Assembly Programming Discussion List Distribution: inet Organization: The Internet Lines: 40 In article <1991Mar8.173043.26275@aplcen.apl.jhu.edu> you write: >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. >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. You can't do that in an instruction. An SVC routine -- yes. An instruction -- no. The page tables are not a hardware feature but a creation of the operating system. Therefore a hardware instruction cannot manipulate them. Sure, there are page tables pointed to by hardware registers. But these table entries contain bits of meaning only to the operating system. Then there are auxiliary tables that map logical pages to swap space on paging disks, which are meaniningful only to the operating system. If you want to try this, try writing a locally defined SVC routine to see how it goes. You will probably find it much more complex than you think. You have to take care of pages fixed in memory for I/O buffers, pages shared with other address spaces, pages with no valid contents (the space has been GETMAINed but nothing yet stored there). Then you have to be concerned about entries in the TLB (Translation Lookaside Buffer) of other processors in a multi-processor environment. Actually, it might be much easier, and much more efficient, to just redesign your algorithm so as to not need this kind of move. -- =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Neil W. Rickert, Computer Science Northern Illinois Univ. DeKalb, IL 60115 +1-815-753-6940