Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 35 |
Nodes: | 6 (1 / 5) |
Uptime: | 18:45:15 |
Calls: | 321 |
Calls today: | 1 |
Files: | 957 |
Messages: | 82,382 |
Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
problem these days, but the 48 pages or so potentially needed by VAX
complicated the OS.
48 pages? What instruction would need that?
According to Thomas Koenig <tkoenig@netcologne.de>:
Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
problem these days, but the 48 pages or so potentially needed by VAX48 pages? What instruction would need that?
complicated the OS.
I think it was actually 50.
The MOVTC and MOVTUC instructions had six operands, five
of which were multibyte, and one of which was one byte.
Each of those multibyte operands could cross a page
boundary, so that's 11 pages.
But all of the operands could use indirect addressing, each of which
could cross a page boundary, so that's 12 more pages.
The instruction itself could cross a page boundary, two more pages,
for a total of 25.
The user mode page tables on a Vax were in kernel virtual memory,
so by carefully pessimized memory allocation, each of those 25
pages could need a separate page table page, for another
25, total of 50.
I am not sure how far along the Vax's design was when they noticed this.
John Levine wrote:
According to Thomas Koenig <tkoenig@netcologne.de>:
Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
problem these days, but the 48 pages or so potentially needed by VAX48 pages? What instruction would need that?
complicated the OS.
I think it was actually 50.
I believe it's 54 PTE's that must be marked Present.
The MOVTC and MOVTUC instructions had six operands, five
of which were multibyte, and one of which was one byte.
Each of those multibyte operands could cross a page
boundary, so that's 11 pages.
But all of the operands could use indirect addressing, each of which
could cross a page boundary, so that's 12 more pages.
Yes, each memory operand could use deferred indirect (register contains the address of address of operand) and the addresses could be misaligned and straddle two pages, so that is 5 virtual addresses per memory operand.
The instruction itself could cross a page boundary, two more pages,
for a total of 25.
5 operands gives 25 virtual addresses, +2 for the instruction straddle =
27.
Then we look at how virtual addresses are translated.
The user mode page tables on a Vax were in kernel virtual memory,
so by carefully pessimized memory allocation, each of those 25
pages could need a separate page table page, for another
25, total of 50.
Yes, because the page table base register for user process P0 space
(the first lowest 1GB) was a *virtual* address in process P1 space
(the second 1GB), and P1 space PTE virtual address was also a *virtual* address in system S0 space (the third 1GB).
(The net result is for VAX to effect a reverse page table walk similar
to Intel's caching the interior PTE nodes on its top down walk,
then checking them in reverse bottom-up order on a TLB miss.)
So each user virtual address required 2 PTE's be Present, giving 54 pages
and potentially 27*3=81 memory accesses.
The MOVTC and MOVTUC instructions had six operands, five
of which were multibyte, and one of which was one byte.
Each of those multibyte operands could cross a page
boundary, so that's 11 pages.
MOVTC had 6 operands, one in a register, one address of byte table,
and 4 multibyte operands which could straddle.
But all of the operands could use indirect addressing, each of which
could cross a page boundary, so that's 12 more pages.
Yes, each memory operand could use deferred indirect (register contains the >> address of address of operand) and the addresses could be misaligned and
straddle two pages, so that is 5 virtual addresses per memory operand.
That should be 4 virtual addresses per multibyte operand
and 3 addresses for the byte table.
The instruction itself could cross a page boundary, two more pages,
for a total of 25.
5 operands gives 25 virtual addresses, +2 for the instruction straddle =
Yes, because the page table base register for user process P0 space
(the first lowest 1GB) was a *virtual* address in process P1 space
(the second 1GB), and P1 space PTE virtual address was also a *virtual*
address in system S0 space (the third 1GB).
(The net result is for VAX to effect a reverse page table walk similar
to Intel's caching the interior PTE nodes on its top down walk,
then checking them in reverse bottom-up order on a TLB miss.)