• Re: base and bounds, Why I've Dropped In

    From John Levine@21:1/5 to All on Sun Jun 15 17:15:49 2025
    According to Thomas Koenig <[email protected]>:
    The problem of the /360 was that they put their base registers in
    user space. The other machines made it invisible from user space
    and added its contents to every memory access. This does not take
    up opcode space and allows swapping in and out of the whole process,
    which was a much better solution for the early 1960s. (Actually, I
    believe the UNIVAC had two, one for program and one for data).

    The PDP-6, which was designed around the same time as the 360, had
    base and bounds relocation registers which indeed allowed swapping.
    The follow-on KA10 had two, the low half of the address space for
    private data and the high half for shared code. Later PDP-10s all had
    paging.

    Base and bounds is OK, but I gather that the PDP-6 and KA10 spent
    a lot of time shuffling memory to consolidate free space. An
    underappreciated advantage of paging is that you don't have to do
    that, since one page frame is as good as another.

    (Yeah, I know some sysems have big pages and small pages but those
    don't seem very popular. And some systems don't run I/O through a page
    map so you have to coonsolidate space for large I/O operations.)
    --
    Regards,
    John Levine, [email protected], Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Levine@21:1/5 to All on Sun Jun 15 18:08:21 2025
    According to Stephen Fuld <[email protected]d>:
    As for the base and range mechanism, that is what much of this
    discussion is about. S/360 used arbitrary GPRs for the base registers,
    which prevented programs from being moved once they were initially
    loaded, whereas other contemporaneous systems used hidden base registers >visible only to the OS. That is precisely what I regard, and have
    stated before as a mistake.

    I don't think it was a mistake. The low end 360s were too underpowered to do time sharing and any sort of dynamic relocation would have just made them more expensive with no practical benefit. A 360/30 was a lot slower than a PDP-8 but made up for it with much better I/O devices.

    Remember that S/360 was mostly aimed at batch processing where each program starts and runs until it's done. The higher end systems did multiprogramming so they could run some other batch program in the short interval while waiting for a disk or tape or card operation.

    They included what they called teleprocessing but those systems were transaction
    monitors built in the SAGE model with a queue of short chunks of code running to
    completion. Relocation and swapping wouldn't help there either.

    By the 1970s things had changed. Computers had gotten cheap enough that the batch
    applications were moving to time sharing, and as Lynn Wheeler has often told us,
    OS/360 got so bloated that they needed virtual memory to give it enough address space to leave room for applications.

    --
    Regards,
    John Levine, [email protected], Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Fuld@21:1/5 to John Levine on Sun Jun 15 12:17:55 2025
    On 6/15/2025 10:15 AM, John Levine wrote:
    According to Thomas Koenig <[email protected]>:
    The problem of the /360 was that they put their base registers in
    user space. The other machines made it invisible from user space
    and added its contents to every memory access. This does not take
    up opcode space and allows swapping in and out of the whole process,
    which was a much better solution for the early 1960s. (Actually, I
    believe the UNIVAC had two, one for program and one for data).

    The PDP-6, which was designed around the same time as the 360, had
    base and bounds relocation registers which indeed allowed swapping.
    The follow-on KA10 had two, the low half of the address space for
    private data and the high half for shared code. Later PDP-10s all had
    paging.

    Base and bounds is OK, but I gather that the PDP-6 and KA10 spent
    a lot of time shuffling memory to consolidate free space. An underappreciated advantage of paging is that you don't have to do
    that, since one page frame is as good as another.

    Yes, that is true. While I don't like "tying" the inherently "program oriented" concepts of r/w/e, sharing permissions, etc. to the inherently "system" oriented concept of storage management, if you had to choose
    one, paging is clearly the best answer.

    An interesting question is whether it is worthwhile to do both. I
    gather the Mill is supposed to do that, and Unisys implemented paging transparently "under" its base and bound permission system. It frees up
    the system to optimize page size for just memory management, but it
    seems to incur a penalty of requiring two "lookups", one for the
    permissions, the other to get the physical address. But that idea
    certainly hasn't caught on.



    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MitchAlsup1@21:1/5 to John Levine on Sun Jun 15 20:09:07 2025
    On Sun, 15 Jun 2025 19:44:41 +0000, John Levine wrote:

    According to Stephen Fuld <[email protected]d>:
    [ base and bounds vs paging
    An interesting question is whether it is worthwhile to do both.

    Multics had segments of variable size, with each segment paged.
    That worked, give or take the inevitable problem of running out of
    address bits.

    I think that is an insoluble problem with base and bounds. However
    you divide up the address space into sections, some sections will
    be too small.

    Who was it that said:: The worst error a computer architect
    can make is to specify insufficient number of address bits ??

    Gordon Bell ?

    Base and bunds simply doubles down on avoiding this rule.

    ... It frees up
    the system to optimize page size for just memory management, but it
    seems to incur a penalty of requiring two "lookups", one for the
    permissions, the other to get the physical address.

    Most paging systems have multiple levels of page tables, so they're
    doing some of that.

    Nested paging with 48-bits has 25-levles of page tables (worst case)
    5-levels translate each Guest Virtual to Guest Physical.
    5-levles translate each Guest Physical to Host Physical.
    5×5 = 25

    IBN's zSeries has up to five levels of tables
    each with permission bits that apply to lower level tables and some
    other complications like an optional bit that says a segment table
    pointer isn't to a segment table, it's directly to a 2G or 1M byte
    contiguous segment.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Fuld@21:1/5 to John Levine on Sun Jun 15 12:38:22 2025
    On 6/15/2025 11:08 AM, John Levine wrote:
    According to Stephen Fuld <[email protected]d>:
    As for the base and range mechanism, that is what much of this
    discussion is about. S/360 used arbitrary GPRs for the base registers,
    which prevented programs from being moved once they were initially
    loaded, whereas other contemporaneous systems used hidden base registers
    visible only to the OS. That is precisely what I regard, and have
    stated before as a mistake.

    I don't think it was a mistake.

    Fair enough.

    The low end 360s were too underpowered to do
    time sharing and any sort of dynamic relocation would have just made them more
    expensive with no practical benefit. A 360/30 was a lot slower than a PDP-8 but
    made up for it with much better I/O devices.

    While I admit that was less familiar with the lower end systems, I think
    the extra expense would have been a single register in the CPU to hold
    the base, and a few extra instructions at task switch time to save and
    reload it. Not very much. And the benefits to the larger systems would
    have been significant when they implemented interactive usage.

    Remember that S/360 was mostly aimed at batch processing where each program starts and runs until it's done. The higher end systems did multiprogramming so
    they could run some other batch program in the short interval while waiting for
    a disk or tape or card operation.

    True, and good points.

    They included what they called teleprocessing but those systems were transaction
    monitors built in the SAGE model with a queue of short chunks of code running to
    completion. Relocation and swapping wouldn't help there either.

    Agreed. Although how much were the choices in implementing
    teleprocessing influenced by the hardware design choices? I don't know
    and haven't thought about it at all.

    By the 1970s things had changed. Computers had gotten cheap enough that the batch
    applications were moving to time sharing, and as Lynn Wheeler has often told us,
    OS/360 got so bloated that they needed virtual memory to give it enough address
    space to leave room for applications.

    Yes, but that gets into another area where I think (and have said
    before), the designers made a mistake, but let's not get into that now. :-)


    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Levine@21:1/5 to All on Sun Jun 15 19:44:41 2025
    According to Stephen Fuld <[email protected]d>:
    [ base and bounds vs paging
    An interesting question is whether it is worthwhile to do both.

    Multics had segments of variable size, with each segment paged.
    That worked, give or take the inevitable problem of running out of
    address bits.

    I think that is an insoluble problem with base and bounds. However
    you divide up the address space into sections, some sections will
    be too small.

    ... It frees up
    the system to optimize page size for just memory management, but it
    seems to incur a penalty of requiring two "lookups", one for the
    permissions, the other to get the physical address.

    Most paging systems have multiple levels of page tables, so they're
    doing some of that. IBN's zSeries has up to five levels of tables
    each with permission bits that apply to lower level tables and some
    other complications like an optional bit that says a segment table
    pointer isn't to a segment table, it's directly to a 2G or 1M byte
    contiguous segment.

    --
    Regards,
    John Levine, [email protected], Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Fuld@21:1/5 to John Levine on Sun Jun 15 14:39:06 2025
    On 6/15/2025 12:44 PM, John Levine wrote:
    According to Stephen Fuld <[email protected]d>:
    [ base and bounds vs paging
    An interesting question is whether it is worthwhile to do both.

    Multics had segments of variable size, with each segment paged.
    That worked, give or take the inevitable problem of running out of
    address bits.

    I didn't know that about Multics. Thanks John. ISTM that their
    approach is the opposite of Unisys's approach. They put the pages
    within the base and bounds, whereas Unisys puts the base and bounds
    "over" the pages. I think the Mill's approach is to put them "side by
    side".

    I don't want to use the word segments, as that has bad connotations that
    aren't relevant here. For historical reasons, Unisys uses the word
    "bank" to describe the logical addresses between the base and the bound.


    I think that is an insoluble problem with base and bounds. However
    you divide up the address space into sections, some sections will
    be too small.

    I don't think so. Probably with the Multics approach, but not with the
    Unisys approach. You can make the individual "sections"/banks as large
    as you want.


    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Levine@21:1/5 to All on Mon Jun 16 02:33:37 2025
    According to Stephen Fuld <[email protected]d>:
    Multics had segments of variable size, with each segment paged.
    That worked, give or take the inevitable problem of running out of
    address bits.

    I didn't know that about Multics. Thanks John. ISTM that their
    approach is the opposite of Unisys's approach. They put the pages
    within the base and bounds, whereas Unisys puts the base and bounds
    "over" the pages. I think the Mill's approach is to put them "side by
    side".

    The Intel 386 has a fairly pessimal approach with a bunch of segments of arbitrary size up all mapped into a single 32 bit linear address space, and they
    page the linear address space. Each segment has a base address and size, so you'd think you could use them like Unisys did. But the segment sizes are 32 bits so each segment can in principle be up to 4GB except that all of the currently addressable segments (up to six since there are six segment registers)
    have to fit into the 4GB linear address space, which means some pretty fancy allocation strategies if you don't want to get into situations where the active segments don't fit and they're thrashing in and out.

    I believe that all Unix-ish operating systems create full size segments for code, data, and stack, map them all at location 0 in the linear address space, and in practice make the segments go away.
    --
    Regards,
    John Levine, [email protected], Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Fuld@21:1/5 to All on Sun Jun 15 21:02:26 2025
    On 6/15/2025 1:09 PM, MitchAlsup1 wrote:
    On Sun, 15 Jun 2025 19:44:41 +0000, John Levine wrote:

    According to Stephen Fuld  <[email protected]d>:
    [ base and bounds vs paging
    An interesting question is whether it is worthwhile to do both.

    Multics had segments of variable size, with each segment paged.
    That worked, give or take the inevitable problem of running out of
    address bits.

    I think that is an insoluble problem with base and bounds.  However
    you divide up the address space into sections, some sections will
    be too small.

    Who was it that said:: The worst error a computer architect
    can make is to specify insufficient number of address bits ??

    Gordon Bell ?

    Base and bunds simply doubles down on avoiding this rule.

    I am not sure what you are saying here. There are different "limits"
    involved. One is the maximum addressable by a single program, another
    is the maximum memory the architecture can support, another is the
    maximum size of a section. This last is related to the design of the
    ISA, i.e., register size, number of bits used for displacement, etc.
    These limits don't have to be the same. And a use of base and bounds
    can make the first as large as you want, provided you don't want to
    address all of it "simultaneously". That is if you have a way for the
    user program to, within appropriate limits change the contents of the
    base and bounds registers. As I said before, it is somewhat awkward,
    but certainly doable.


    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to [email protected] on Mon Jun 16 14:25:34 2025
    [email protected] (MitchAlsup1) writes:
    On Sun, 15 Jun 2025 19:44:41 +0000, John Levine wrote:

    According to Stephen Fuld <[email protected]d>:
    [ base and bounds vs paging
    An interesting question is whether it is worthwhile to do both.

    Multics had segments of variable size, with each segment paged.
    That worked, give or take the inevitable problem of running out of
    address bits.

    I think that is an insoluble problem with base and bounds. However
    you divide up the address space into sections, some sections will
    be too small.

    Who was it that said:: The worst error a computer architect
    can make is to specify insufficient number of address bits ??

    Gordon Bell ?

    Base and bunds simply doubles down on avoiding this rule.

    ... It frees up
    the system to optimize page size for just memory management, but it
    seems to incur a penalty of requiring two "lookups", one for the
    permissions, the other to get the physical address.

    Most paging systems have multiple levels of page tables, so they're
    doing some of that.

    Nested paging with 48-bits has 25-levles of page tables (worst case)
    5-levels translate each Guest Virtual to Guest Physical.
    5-levles translate each Guest Physical to Host Physical.
    5×5 = 25

    Surely you mean requires 24 lookups (nested).

    Guest Page Size Nested Page Size Memory References Required

    4K 4K 24
    4K 2M 19
    4K 1G 14
    4K N/A 4

    2M 4K 19
    2M 2M 15
    2M 1G 11
    2M N/A 3

    1G 4K 14
    1G 2M 11
    1G 1G 8
    1G N/A 2

    Table 2 - Page Table Walk Memory References

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to John Levine on Mon Jun 16 14:22:52 2025
    John Levine <[email protected]> writes:
    According to Thomas Koenig <[email protected]>:
    The problem of the /360 was that they put their base registers in
    user space. The other machines made it invisible from user space
    and added its contents to every memory access. This does not take
    up opcode space and allows swapping in and out of the whole process,
    which was a much better solution for the early 1960s. (Actually, I
    believe the UNIVAC had two, one for program and one for data).

    The PDP-6, which was designed around the same time as the 360, had
    base and bounds relocation registers which indeed allowed swapping.
    The follow-on KA10 had two, the low half of the address space for
    private data and the high half for shared code. Later PDP-10s all had
    paging.

    Base and bounds is OK, but I gather that the PDP-6 and KA10 spent
    a lot of time shuffling memory to consolidate free space. An >underappreciated advantage of paging is that you don't have to do
    that, since one page frame is as good as another.

    This was an issue on Burroughs medium systems as well. The code
    that handled it was called 'hiho'. As in hi-ho, hi-ho, it's off
    to work we go..


    (Yeah, I know some sysems have big pages and small pages but those
    don't seem very popular. And some systems don't run I/O through a page
    map so you have to coonsolidate space for large I/O operations.)


    Large pages are problematic in that they must be naturally aligned
    (i.e. a 4MB page must be aligned on a 4MB physical address boundary).

    This makes it difficult to find sufficent aligned space for dynamic
    allocation. Initially, large pages were allocated at boot for use
    by database applications. Linux later developed transparent
    huge pages (THP) which moved data around to create sufficiently
    sized and aligned regions.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Fuld@21:1/5 to quadibloc on Mon Jun 16 07:55:18 2025
    On 6/16/2025 7:37 AM, quadibloc wrote:
    On Mon, 16 Jun 2025 4:02:26 +0000, Stephen Fuld wrote:
    On 6/15/2025 1:09 PM, MitchAlsup1 wrote:

    Who was it that said:: The worst error a computer architect
    can make is to specify insufficient number of address bits ??

    Gordon Bell ?

    Base and bunds simply doubles down on avoiding this rule.

    I am not sure what you are saying here.  There are different "limits"
    involved.  One is the maximum addressable by a single program, another
    is the maximum memory the architecture can support, another is the
    maximum size of a section.  This last is related to the design of the
    ISA, i.e., register size, number of bits used for displacement, etc.
    These limits don't have to be the same.

    The first two are the ones that were being considered. If an ISA doesn't allow you to run big programs on it - the first - and even more so if it
    only works on a computer with a small memory, then, when you go out and
    get a shiny new computer, it's going to have a different ISA.

    Yes. The first two are not issues related to the choice of base and
    bounds versus pages. As I pointed out, and your agree, they are ISA
    design issues. Which is why I questioned what Mitch meant.


    The second, though, has often been gotten around while retaining compatibility. If you have base and bounds, the base isn't visible to
    the user, so making the base bigger on a newer version of the computer doesn't break compatibility, except for needing to update the operating system.

    Absolutely.



    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Levine@21:1/5 to All on Mon Jun 16 16:42:40 2025
    According to Scott Lurndal <[email protected]>:
    (Yeah, I know some sysems have big pages and small pages but those
    don't seem very popular. And some systems don't run I/O through a page
    map so you have to coonsolidate space for large I/O operations.)

    Large pages are problematic in that they must be naturally aligned
    (i.e. a 4MB page must be aligned on a 4MB physical address boundary).

    Indeed.

    This makes it difficult to find sufficent aligned space for dynamic >allocation. Initially, large pages were allocated at boot for use
    by database applications. Linux later developed transparent
    huge pages (THP) which moved data around to create sufficiently
    sized and aligned regions.

    IBM 370 had 1MB secttions which could either be paged or one chunk,
    to which z added 2GB regions, same thing.

    IBM has invested a lot in z linux, should take a look and see what page aanagement they offer. 2GB contiguous regions seem rather large, but on
    a machine that can have 16TB of RAM, maybe not

    --
    Regards,
    John Levine, [email protected], Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to John Levine on Mon Jun 16 16:52:43 2025
    John Levine <[email protected]> writes:
    According to Scott Lurndal <[email protected]>:
    (Yeah, I know some sysems have big pages and small pages but those
    don't seem very popular. And some systems don't run I/O through a page >>>map so you have to coonsolidate space for large I/O operations.)

    Large pages are problematic in that they must be naturally aligned
    (i.e. a 4MB page must be aligned on a 4MB physical address boundary).

    Indeed.

    This makes it difficult to find sufficent aligned space for dynamic >>allocation. Initially, large pages were allocated at boot for use
    by database applications. Linux later developed transparent
    huge pages (THP) which moved data around to create sufficiently
    sized and aligned regions.

    IBM 370 had 1MB secttions which could either be paged or one chunk,
    to which z added 2GB regions, same thing.

    IBM has invested a lot in z linux, should take a look and see what page >aanagement they offer. 2GB contiguous regions seem rather large, but on
    a machine that can have 16TB of RAM, maybe not

    When we wrote the 3-leaf hypervisor, we leveraged AMDs 1GB pages for
    the guest (nested) page table. This cut the memory references on
    a table walk by about 50%.

    Granted, this required a minimal allocation of 1GB per guest, but that
    wasn't a significant constraint in practice as we could devolve to
    2MB or 4KB nested pages for smaller guests with slight hit on each table walk.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Fuld@21:1/5 to All on Mon Jun 16 10:56:40 2025
    On 6/16/2025 10:42 AM, MitchAlsup1 wrote:
    On Mon, 16 Jun 2025 4:02:26 +0000, Stephen Fuld wrote:

    On 6/15/2025 1:09 PM, MitchAlsup1 wrote:
    On Sun, 15 Jun 2025 19:44:41 +0000, John Levine wrote:

    According to Stephen Fuld  <[email protected]d>:
    [ base and bounds vs paging
    An interesting question is whether it is worthwhile to do both.

    Multics had segments of variable size, with each segment paged.
    That worked, give or take the inevitable problem of running out of
    address bits.

    I think that is an insoluble problem with base and bounds.  However
    you divide up the address space into sections, some sections will
    be too small.

    Who was it that said:: The worst error a computer architect
    can make is to specify insufficient number of address bits ??

    Gordon Bell ?

    Base and bunds simply doubles down on avoiding this rule.

    I am not sure what you are saying here.

    Often base ends up with too few address bits,
    almost always bounds ends up with too few size bits.

    But since these can be/should be/are hidden from the user, they can be
    expanded at will.

    On a machine today, wanting byte alignment and bite sizing of
    memory areas, you need 64-bits of base, 64-bits of bounds and
    about 5 more bits to control things. {{Now while I would not
    call someone doing base-bounds sane today--I would claim that
    knocking a couple bits off the top of bounds and another couple
    of bits of bounds to make the control point fit a control register
    container might be considered "sane"}}

    :-)



    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From MitchAlsup1@21:1/5 to Stephen Fuld on Mon Jun 16 17:42:29 2025
    On Mon, 16 Jun 2025 4:02:26 +0000, Stephen Fuld wrote:

    On 6/15/2025 1:09 PM, MitchAlsup1 wrote:
    On Sun, 15 Jun 2025 19:44:41 +0000, John Levine wrote:

    According to Stephen Fuld  <[email protected]d>:
    [ base and bounds vs paging
    An interesting question is whether it is worthwhile to do both.

    Multics had segments of variable size, with each segment paged.
    That worked, give or take the inevitable problem of running out of
    address bits.

    I think that is an insoluble problem with base and bounds.  However
    you divide up the address space into sections, some sections will
    be too small.

    Who was it that said:: The worst error a computer architect
    can make is to specify insufficient number of address bits ??

    Gordon Bell ?

    Base and bunds simply doubles down on avoiding this rule.

    I am not sure what you are saying here.

    Often base ends up with too few address bits,
    almost always bounds ends up with too few size bits.

    On a machine today, wanting byte alignment and bite sizing of
    memory areas, you need 64-bits of base, 64-bits of bounds and
    about 5 more bits to control things. {{Now while I would not
    call someone doing base-bounds sane today--I would claim that
    knocking a couple bits off the top of bounds and another couple
    of bits of bounds to make the control point fit a control register
    container might be considered "sane"}}

    There are different "limits" involved. One is the maximum addressable by a single program, another
    is the maximum memory the architecture can support, another is the
    maximum size of a section. This last is related to the design of the
    ISA, i.e., register size, number of bits used for displacement, etc.
    These limits don't have to be the same. And a use of base and bounds
    can make the first as large as you want, provided you don't want to
    address all of it "simultaneously". That is if you have a way for the
    user program to, within appropriate limits change the contents of the
    base and bounds registers. As I said before, it is somewhat awkward,
    but certainly doable.


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Lurndal@21:1/5 to [email protected] on Mon Jun 16 18:11:46 2025
    [email protected] (MitchAlsup1) writes:
    On Mon, 16 Jun 2025 4:02:26 +0000, Stephen Fuld wrote:

    On 6/15/2025 1:09 PM, MitchAlsup1 wrote:
    On Sun, 15 Jun 2025 19:44:41 +0000, John Levine wrote:

    According to Stephen Fuld  <[email protected]d>:
    [ base and bounds vs paging
    An interesting question is whether it is worthwhile to do both.

    Multics had segments of variable size, with each segment paged.
    That worked, give or take the inevitable problem of running out of
    address bits.

    I think that is an insoluble problem with base and bounds.  However
    you divide up the address space into sections, some sections will
    be too small.

    Who was it that said:: The worst error a computer architect
    can make is to specify insufficient number of address bits ??

    Gordon Bell ?

    Base and bunds simply doubles down on avoiding this rule.

    I am not sure what you are saying here.

    Often base ends up with too few address bits,
    almost always bounds ends up with too few size bits.

    On a machine today, wanting byte alignment and bite sizing of
    memory areas, you need 64-bits of base, 64-bits of bounds and
    about 5 more bits to control things.

    CHERI encodes all that in 128 bits or 256 bits and various
    compression techniques can reduce the size of a capability
    stored in memory.

    https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-927.pdf

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Fuld@21:1/5 to quadibloc on Mon Jun 16 15:04:36 2025
    On 6/16/2025 2:52 PM, quadibloc wrote:
    On Mon, 16 Jun 2025 17:56:40 +0000, Stephen Fuld wrote:

    But since these can be/should be/are hidden from the user, they can be
    expanded at will.

    This could be clearer. How about:

    These can be hidden from the user. Since they should be, the fact that
    if they are, they can be expanded at will, solves the issue.

    OK. That's fine.



    --
    - Stephen Fuld
    (e-mail address disguised to prevent spam)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)