Working on the MMU component tonight.
Just realized that it is possible to have only a single hierarchical
page table in the system if base and bound addressing is applied before translating with the page table. Or to reduce the number of page tables
using the base/bound addressing.
Building base/bound registers into the MMU, pondering having multiple
sets of registers to reduce the amount of register swapping. A single
BRAM should be enough for 32 sets of 16 registers. Could store an index
for selecting the set in the process control block. Defaulting set zero
for flat addressing.
Working on the MMU component tonight.
Just realized that it is possible to have only a single hierarchical page table in the system if base and bound addressing is applied before
translating with the page table. Or to reduce the number of page tables using the base/bound addressing.
Building base/bound registers into the MMU, pondering having multiple sets of registers to reduce the amount of register swapping. A single
BRAM should be enough for 32 sets of 16 registers. Could store an index for selecting the set in the process control block. Defaulting set
zero for flat addressing.
On 4/10/25 12:02 AM, Robert Finch wrote:
Working on the MMU component tonight.
Just realized that it is possible to have only a single hierarchical
page table in the system if base and bound addressing is applied
before translating with the page table. Or to reduce the number of
page tables using the base/bound addressing.
Building base/bound registers into the MMU, pondering having multiple
sets of registers to reduce the amount of register swapping. A single
BRAM should be enough for 32 sets of 16 registers. Could store an
index for selecting the set in the process control block. Defaulting
set zero for flat addressing.
Congratulations, you've reinvented the SUN / CADR segment/page MMU made
from two sets of SRAMS
On Thu, 10 Apr 2025 7:02:41 +0000, Robert Finch wrote:
Working on the MMU component tonight.
Just realized that it is possible to have only a single hierarchical
page table in the system if base and bound addressing is applied before
translating with the page table. Or to reduce the number of page tables
using the base/bound addressing.
Building base/bound registers into the MMU, pondering having multiple
sets of registers to reduce the amount of register swapping. A single
BRAM should be enough for 32 sets of 16 registers. Could store an index
for selecting the set in the process control block. Defaulting set zero
for flat addressing.
Base and Bounds is not compatible with the feature/functionality we see
in modern applications; things such as::
a) mmap()
b) dynamically linked libraries
c) Address Space Layout Randomization
d) JITTed binaries
At least until there are enough base and bounds registers, and when
there
are enough of these, then the B&B MMU smells just like a SW programmable >TLB--and at this point--either go all the way or don't start down that
path.
Also note:: at SATA data transfer rates, activating a 20 GB application
takes multiple seconds on the disk drive itself, something that only
suffers a dozen milliseconds with typical paging.
Working on the MMU component tonight.
Just realized that it is possible to have only a single hierarchical
page table in the system if base and bound addressing is applied before translating with the page table. Or to reduce the number of page tables using the base/bound addressing.
Building base/bound registers into the MMU, pondering having multiple
sets of registers to reduce the amount of register swapping. A single
BRAM should be enough for 32 sets of 16 registers. Could store an index
for selecting the set in the process control block. Defaulting set zero
for flat addressing.
On Thu, 10 Apr 2025 7:02:41 +0000, Robert Finch wrote:
Working on the MMU component tonight.
Just realized that it is possible to have only a single hierarchical
page table in the system if base and bound addressing is applied before
translating with the page table. Or to reduce the number of page tables
using the base/bound addressing.
Building base/bound registers into the MMU, pondering having multiple
sets of registers to reduce the amount of register swapping. A single
BRAM should be enough for 32 sets of 16 registers. Could store an index
for selecting the set in the process control block. Defaulting set zero
for flat addressing.
Base and Bounds is not compatible with the feature/functionality we see
in modern applications; things such as::
a) mmap()
b) dynamically linked libraries
c) Address Space Layout Randomization
d) JITTed binaries
At least until there are enough base and bounds registers, and when
there
are enough of these, then the B&B MMU smells just like a SW programmable TLB--and at this point--either go all the way or don't start down that
path.
Also note:: at SATA data transfer rates, activating a 20 GB application
takes multiple seconds on the disk drive itself, something that only
suffers a dozen milliseconds with typical paging.
On 4/10/2025 8:48 AM, MitchAlsup1 wrote:
On Thu, 10 Apr 2025 7:02:41 +0000, Robert Finch wrote:
Working on the MMU component tonight.
Just realized that it is possible to have only a single hierarchical
page table in the system if base and bound addressing is applied before
translating with the page table. Or to reduce the number of page tables
using the base/bound addressing.
Building base/bound registers into the MMU, pondering having multiple
sets of registers to reduce the amount of register swapping. A single
BRAM should be enough for 32 sets of 16 registers. Could store an index
for selecting the set in the process control block. Defaulting set zero
for flat addressing.
Base and Bounds is not compatible with the feature/functionality we see
in modern applications; things such as::
a) mmap()
b) dynamically linked libraries
c) Address Space Layout Randomization
d) JITTed binaries
At least until there are enough base and bounds registers, and when
there
are enough of these, then the B&B MMU smells just like a SW programmable
TLB--and at this point--either go all the way or don't start down that
path.
Also note:: at SATA data transfer rates, activating a 20 GB application
takes multiple seconds on the disk drive itself, something that only
suffers a dozen milliseconds with typical paging.
You seem the be talking about B&B as the only mechanism.
In that case,
your criticisms are (mostly) valid. But if, as I think Robert is taling about, you have a B&B implementation "on top of" a paging
implementation, most of those problems go away (albeit introducing
others).
On 4/10/2025 8:48 AM, MitchAlsup1 wrote:
On Thu, 10 Apr 2025 7:02:41 +0000, Robert Finch wrote:
Working on the MMU component tonight.
Just realized that it is possible to have only a single hierarchical
page table in the system if base and bound addressing is applied before
translating with the page table. Or to reduce the number of page tables
using the base/bound addressing.
Building base/bound registers into the MMU, pondering having multiple
sets of registers to reduce the amount of register swapping. A single
BRAM should be enough for 32 sets of 16 registers. Could store an index
for selecting the set in the process control block. Defaulting set zero
for flat addressing.
Base and Bounds is not compatible with the feature/functionality we see
in modern applications; things such as::
a) mmap()
b) dynamically linked libraries
c) Address Space Layout Randomization
d) JITTed binaries
At least until there are enough base and bounds registers, and when
there
are enough of these, then the B&B MMU smells just like a SW programmable
TLB--and at this point--either go all the way or don't start down that
path.
Also note:: at SATA data transfer rates, activating a 20 GB application
takes multiple seconds on the disk drive itself, something that only
suffers a dozen milliseconds with typical paging.
You seem the be talking about B&B as the only mechanism. In that case, your criticisms are (mostly) valid. But if, as I think Robert is taling about, you have a B&B implementation "on top of" a paging
implementation, most of those problems go away (albeit introducing others).
On 4/10/2025 12:02 AM, Robert Finch wrote:
Working on the MMU component tonight.
Just realized that it is possible to have only a single hierarchical
page table in the system if base and bound addressing is applied before
translating with the page table. Or to reduce the number of page tables
using the base/bound addressing.
Building base/bound registers into the MMU, pondering having multiple
sets of registers to reduce the amount of register swapping. A single
BRAM should be enough for 32 sets of 16 registers. Could store an index
for selecting the set in the process control block. Defaulting set zero
for flat addressing.
Separating the protection aspects (base and bound) from the real memory >management aspects (paging) has advantages and disadvantages. Al
mentioned one implementation (with which I am not familiar), but the
Mill also does that (though currently at least, only in >simulation/emulation) and, (out of historical compatibility
requirements) the Unisys 2200 series (currently emulated but there were >dedicated hardware implementations)
There is some documentation of the Mill online, and there is complete >documentation of the Unisys implementation online. Note if you start to >read the Unisys documentation, they call the memory associated with a >particular base and bound, a "bank"
Sysop: | DaiTengu |
---|---|
Location: | Appleton, WI |
Users: | 1,030 |
Nodes: | 10 (0 / 10) |
Uptime: | 72:51:31 |
Calls: | 13,350 |
Calls today: | 2 |
Files: | 186,574 |
D/L today: |
5,296 files (1,409M bytes) |
Messages: | 3,358,839 |