VAX-11/750 memory in 11/70 ?

Johnny Billquist bqt at update.uu.se
Wed Mar 11 10:39:21 CDT 2015


On 2015-03-11 00:11, Ethan Dicks wrote:
> On Tue, Mar 10, 2015 at 7:06 PM, Johnny Billquist <bqt at update.uu.se> wrote:
>>>> Which one of these, if any, could be used in an 11/70?
>> And if you absolutely want to use 1M cards in an 11/70, ping me, and I'll
>> walk you through the howto. (Update have done this in the past. It is not
>> trivial, but it is possible.)
>
> I have a crate of 256MB RAM on my 11/70s but I'd love to learn what it
> takes to use 1MB boards (which I have a few of from 11/750s and
> 11/730s and 11/725s).  I might decide it's too much trouble, but I'd
> to know what's involved.

256K, not 256M, but anyway... :-)

There are several bits to it.
The MK11 only have 18 address pins on the backplane, which means it 
cannot directly address larger boards. In addition, there are 16 card 
select pins. One for each slot. At power on, the memory controller in 
the MK11 writes to all cards in parallel, in order to initialize the ECC 
bits on all cards.

The way you get 1M cards to work is that you need to tie together 4 card 
select lines, so that your 1M card would appear to be four 256K cards in 
the MK11.

In addition, you also need to code back from the four select lines into 
the two additional address lines.

This is not so hard. Essentially we're talking about a OR of 4 lines, 
and a 4-2 encoder.

Important additional detail is that you *really* want to make sure that 
when all cards are select together, that is equivalent to the lowest 
addressed cards.

So far for the hardware.

After you've done this, you then also needs to fix a software problem. 
Like I said at the start, the MK11 initialize all the ECC of all the 
cards, at initialization time. And it does this in parallel for all 
cards. That means all card select lines are active together at 
initialization. And then the address lines runs through address 0-256K 
doing writes.

This means that the ECC for 3/4 of a 1M card will not be initialized. 
The 1/4 that do get initialized, you want to be the low addresses, since 
those you need before you can really do anything more. Having memory 
errors for address 0 is really bad.

Once you've come this far, you need to write a short program that will 
initialize the ECC of the rest of your memory. This can be done through 
software, but it requires some tricks. Normal writes of memory expects 
the ECC to already be correct, so you need to turn off ECC checking in 
the MK11 before writing to the uninitialized memory. You can turn off 
ECC checking in the MK11 by changing a CSR register, where you can set 
the operation of the MK11.
However, there is a problem here. The CSR is in the MK11 box. But the 
MK11 box is on the memory bus, and not on the Unibus. And the CSR 
address is in I/O space.
The trick for this is to use the MMU and the Unibus map to get access to 
the I/O space on the memory bus.
How this actually is done is hidden deep inside one of the technical 
manuals of the 11/70, and in a rather weird form.
I can't seem to find that manual online. It's something like "11/70 
memory subsystem manunal" or something similar. I (Update) have a 
hardcopy of it somewhere.

But the theory of it is not so hard. You access an address in the Unibus 
memory address space, using the MMU. The Unibus map then remaps this 
address into an address in the I/O space. All access of memory through 
the Unibus map will go to the memory bus.

	Johnny



More information about the cctalk mailing list