Virtual memory implementation in S/370 (a.f.c x-post)

2006-05-12 Thread Richard Corak

 The recent thread about virtual memory sparked a (kind of)
 idle question: why did the implementation in the S/370
 have a two-level scheme (segment and page)? My original
 thought was that it facilitated definition of discontiguous
 parts of an address space.

Well, mostly it is because smaller systems don't have enough
real memory to hold a one level page table.

The segment/page system allows page tables to be paged out,
with the invalid bit in the segment table.

VAX uses a two level system where page tables are paged.
There is kernel space, which isn't paged and holds the first
level tables referencing pagable second level tables.

z/Archtecture has three levels.


Actually,
  Region First Table
  Region Second Table
  Region Third Table
  Segment Table
  Page Table

Richard Corak


Virtual memory implementation in S/370 (a.f.c x-post)

2006-05-11 Thread glen herrmannsfeldt
Marten Kemp [EMAIL PROTECTED] writes:
 The recent thread about virtual memory sparked a (kind of)
 idle question: why did the implementation in the S/370
 have a two-level scheme (segment and page)? My original
 thought was that it facilitated definition of discontiguous
 parts of an address space.

Well, mostly it is because smaller systems don't have enough
real memory to hold a one level page table.

The segment/page system allows page tables to be paged out,
with the invalid bit in the segment table.

VAX uses a two level system where page tables are paged.
There is kernel space, which isn't paged and holds the first
level tables referencing pagable second level tables.

z/Archtecture has three levels.

-- glen


Re: Virtual memory implementation in S/370 (a.f.c x-post)

2006-05-11 Thread Alan Ackerman
On Thu, 11 May 2006 11:08:56 -0700, glen herrmannsfeldt [EMAIL PROTECTED]
.edu wrote:

Marten Kemp [EMAIL PROTECTED] writes:
 The recent thread about virtual memory sparked a (kind of)
 idle question: why did the implementation in the S/370
 have a two-level scheme (segment and page)? My original
 thought was that it facilitated definition of discontiguous
 parts of an address space.

Well, mostly it is because smaller systems don't have enough
real memory to hold a one level page table.

The segment/page system allows page tables to be paged out,
with the invalid bit in the segment table.

VAX uses a two level system where page tables are paged.
There is kernel space, which isn't paged and holds the first
level tables referencing pagable second level tables.

z/Archtecture has three levels.

-- glen

=
==
==

Actually, z/Architecture has 5 levels. So far, the existed hardware only 
uses 3 of them.


Virtual memory implementation in S/370 (a.f.c x-post)

2006-05-10 Thread Anne Lynn Wheeler
Marten Kemp [EMAIL PROTECTED] writes:
 The recent thread about virtual memory sparked a (kind of)
 idle question: why did the implementation in the S/370
 have a two-level scheme (segment and page)? My original
 thought was that it facilitated definition of discontiguous
 parts of an address space.

370 virtual memory architecture segment  page tables. 360/67 provided
for both 24-bit virtual addressing and 32-bit virtual addressing (in
its segment/page virtual memory structure).

the introduction of virtual memory on 370 was just 24-bit virtual
addressing with segment and page tables, originally with 1mbyte and
64kbyte segment options as well as 4kbyte and 2kbyte page options.

the original 370 virtual memory architecture also had segment
protection and some selective invalidate instructions. these
additional features were dropped to help get the virtual memory
hardware retrofit to 370/165 back on schedule.

in the morph from cp67/cms to vm370/cms, cms had been restructured to
take advantage of shared segments (single copy of the same virtual
memory page in physical storage for multiple different virtual address
spaces) with the segment protect feature. when segment protect was
dropped from 370 virtual memory architecture, the protection of
these shared pages had to be reworked.

more than 24-bit virtual addressing wasn't re-introduced until 370-xa
with the 3081.

I had done a page-mapped filesystem for CMS, which included compatibility
for existing CMS filesystem API
http://www.garlic.com/~lynn/subtopic.html#mmap

It also included a number of extended features allowing page-mapped
objects (shared  non-shared) to appear at arbitrary virtual address
locations. the same shared (segment) object could even appear at
different virtual addresses in different virtual address space. this
required a lot of fiddling with the prevalent 360/370 software use of
address constants. Lots of posts mentioning the fiddling with
address constants
http://www.garlic.com/~lynn/subtopic.html#adcon

Only a small subset of the virtual memory object support was ever
released called DisContiguous Shared Segment (DCSS). The generalized
virtual memory object support and the page mapped filesystem support
was never released.

various posts mentioning the segment protect issue:
http://www.garlic.com/~lynn/2004p.html#8 vm/370 smp support and shared segment
protection hack
http://www.garlic.com/~lynn/2004p.html#9 vm/370 smp support and shared segment
protection hack
http://www.garlic.com/~lynn/2004p.html#10 vm/370 smp support and shared segment
protection hack
http://www.garlic.com/~lynn/2004p.html#14 vm/370 smp support and shared segment
protection hack
http://www.garlic.com/~lynn/2004q.html#37 A Glimpse into PC Development
Philosophy
http://www.garlic.com/~lynn/2005c.html#20 [Lit.] Buffer overruns
http://www.garlic.com/~lynn/2005d.html#61 Virtual Machine Hardware
http://www.garlic.com/~lynn/2005e.html#53 System/360; Hardwired vs. Microcoded
http://www.garlic.com/~lynn/2005f.html#45 Moving assembler programs above the
line
http://www.garlic.com/~lynn/2005f.html#46 Moving assembler programs above the
line
http://www.garlic.com/~lynn/2005h.html#9 Exceptions at basic block boundaries
http://www.garlic.com/~lynn/2005h.html#10 Exceptions at basic block boundaries
http://www.garlic.com/~lynn/2005h.html#13 Today's mainframe--anything to new?
http://www.garlic.com/~lynn/2005j.html#39 A second look at memory access
alignment
http://www.garlic.com/~lynn/2005o.html#10 Virtual memory and memory protection
http://www.garlic.com/~lynn/2006.html#13 VM maclib reference
http://www.garlic.com/~lynn/2006.html#38 Is VIO mandatory?
http://www.garlic.com/~lynn/2006b.html#39 another blast from the past
http://www.garlic.com/~lynn/2006i.html#9 Hadware Support for Protection Bits:
what does it really mean?

...

and misc. past posts mentioning dcss:
http://www.garlic.com/~lynn/2001c.html#2 Z/90, S/390, 370/ESA (slightly off
topic)
http://www.garlic.com/~lynn/2001c.html#13 LINUS for S/390
http://www.garlic.com/~lynn/2001i.html#20 Very CISC Instuctions (Was: why the
machine word size ...)
http://www.garlic.com/~lynn/2002o.html#25 Early computer games
http://www.garlic.com/~lynn/2003b.html#33 dasd full cylinder transfer (long
post warning)
http://www.garlic.com/~lynn/2003f.html#32 Alpha performance, why?
http://www.garlic.com/~lynn/2003g.html#27 SYSPROF and the 190 disk
http://www.garlic.com/~lynn/2003n.html#45 hung/zombie users ... long boring,
wandering story
http://www.garlic.com/~lynn/2003o.html#42 misc. dmksnt
http://www.garlic.com/~lynn/2004d.html#5 IBM 360 memory
http://www.garlic.com/~lynn/2004f.html#23 command line switches [Re: [REALLY
OT!] Overuse of symbolic
http://www.garlic.com/~lynn/2004l.html#6 Xah Lee's Unixism
http://www.garlic.com/~lynn/2004m.html#11 Whatever happened to IBM's VM PC
software?
http://www.garlic.com/~lynn/2004o.html#9 Integer types for 128-bit addressing
http://www.garlic.com/~lynn/2004o.html#11 Integer types for 128-bit addressing

Virtual memory implementation in S/370 (a.f.c x-post)

2006-05-10 Thread Anne Lynn Wheeler
Marten Kemp [EMAIL PROTECTED] writes:
 The recent thread about virtual memory sparked a (kind of)
 idle question: why did the implementation in the S/370
 have a two-level scheme (segment and page)? My original
 thought was that it facilitated definition of discontiguous
 parts of an address space.

re:
http://www.garlic.com/~lynn/2006i.html#22 virtual memory
http://www.garlic.com/~lynn/2006i.html#23 Virtual memory implementation in
S/370

i had also done page migration as well as table migration ...  which
were released in my resource manager product ... the blue letter
product announcement gives product release as 11may76 ... 30 years ago
tomorrow.  partial reproduction of the resource manager blue letter:
http://www.garlic.com/~lynn/2001e.html#45 VM/370 Resource Manager

page migration would look make judgements about different speed paging
devices ... and if it found high speed paging devices filling up, it
would start looking for idle virtual pages (resident on high speed
devices), that it could migrate to slower speed devices.

when real storage started getting constrained ... it would also look
for idle portions of virtual address spaces. each 64kbyte virtual
segment consumed ten bytes of real storage, 2bytes for the page table
entry and 8bytes of adminstrative stuff (shadow storage protect keys,
and location on paging device for the virtual page). for idle
segments, it would turn on the invalid bit in the segment table entry,
write the administrative stuff to special disk locations, and then
discard the real memory for the page table and administrative stuff
... typically picking up 160bytes of real storage per 64kbyte of idle
virtual address space or 2560bytes of real storage per 1mbyte of idle
virtual address space ... little over 4kbytes of real storage per
2mbytes of idle virtual address space.

the defined virtual address space might or not be contiguous ...  but
the segment table could have large gaps in the pointers to page tables
... potentially because the space wasn't defined in the particular
virtual address space ... or because the virtual address space area
was deamed to be idle at the moment and the associated tables had been
removed from real storage.

the administrative table containing the disk backing store address for
virtual pages (and the shadow storage protect keys) was called a
SWAPTABLE ... so the feature allowing the SWAPTABLE to be removed from
real storage was called SWAPTABLE migration or paging SWAPTABLEs.

a few other posts mentioning SWAPTABLE migration:
http://www.garlic.com/~lynn/2006.html#19 DCSS as SWAP disk for z/Linux
http://www.garlic.com/~lynn/2006.html#25 DCSS as SWAP disk for z/Linux
http://www.garlic.com/~lynn/2006.html#35 Charging Time
http://www.garlic.com/~lynn/2006.html#36 Charging Time

...

and a few posts mentioning shadowing process:
http://www.garlic.com/~lynn/2005h.html#17 Exceptions at basic block boundaries
http://www.garlic.com/~lynn/2005h.html#18 Exceptions at basic block boundaries
http://www.garlic.com/~lynn/2006i.html#10 Hadware Support for Protection Bits:
what does it really mean?

--
Anne  Lynn Wheeler | http://www.garlic.com/~lynn/