Deutsch   English   Français   Italiano  
<vnpav0$1osr$1@gal.iecc.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: John Levine <johnl@taugh.com>
Newsgroups: comp.arch
Subject: Re: Fun with a Vax, Cost of handling misaligned access
Date: Mon, 3 Feb 2025 02:51:12 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <vnpav0$1osr$1@gal.iecc.com>
References: <5lNnP.1313925$2xE6.991023@fx18.iad> <vnokui$488$1@gal.iecc.com> <vDRnP.234888$vfee.177829@fx45.iad> <ObSnP.241954$HO1.193621@fx14.iad>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 3 Feb 2025 02:51:12 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
	logging-data="58267"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <5lNnP.1313925$2xE6.991023@fx18.iad> <vnokui$488$1@gal.iecc.com> <vDRnP.234888$vfee.177829@fx45.iad> <ObSnP.241954$HO1.193621@fx14.iad>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
Bytes: 3496
Lines: 56

According to EricP  <ThatWouldBeTelling@thevillage.com>:
>>> 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.

According to my VAX Architecture Handbook, the operands were:

 opcode srclen.rw, srcaddr.ab, fill.rb, tbladdr.ab, dstlen.rw, dstaddr.ab

The fill.rb was a single byte fill character which could be in memory, the rest all multibyte.

>>> 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.

Pretty close, the deferred modes only did one level of indirection.
There were a bunch of flavors, @(R)+ @B(R) @W(R) @L(R) but they were
all single indirect, so it's four for most operands and three for the
fill byte.

>>> 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 = 

I get 4 addresses for the five long operands plus 3 for the fill byte plus two
for the instruction, total of 25.

Double that for the page tables and it's 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.)

Right, it also had to look at the PTEs to find the P0 or P1 table pages.

R's,
John
-- 
Regards,
John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
Please consider the environment before reading this e-mail. https://jl.ly