Subject: Re: DSSI opcodes
To: Chuck McManis <cmcmanis@mcmanis.com>
From: Lord Isildur <mrfusion@guildvax.guild.net>
List: port-vax
Date: 03/11/2000 17:14:31
> I'm going to have to disagree with you a bit here. The DSSI bus is a 
> separate bus just as the SCSI bus is a separate bus. Consider for a moment 
> that existing SCSI disks on the VS3100 series appear as "sd0 ... sdn" and 
> "attach" to scsibus0, scsibus1, etc. MSCP disks on the other hand attach to 
> the mscpbus and are labels ra0, ra1, etc. Now there are DSSI disks that 
> connect to the MSCP bus using the KFQSA, but that is no different than SCSI 
> disks that attach to the MSCP bus through a SCSI to MSCP adapter.

MSCP is not a bus, it is a networking protocol. MSCP can be spoken over 
many buses: Qbus, Massbus, XMI, Unibus, CI, BI, and so on. DSSI only 
resembles SCSI electrically and in the mechanical specification: logically
it is totally different. The DSSI protocol is a subset of CI. Like i said 
beofre, this is why DSSI in the later-model machines is done with SHAC, 
which is the ci-adapter-on-a-chip chip. 

> 
> So as an I/O bus, the DSSI bus on the KA640 is a separate bus just like 
> SCSI, therefore I plan to treat it like SCSI and give it its own config 
> lines. (think along the lines of:

But the DSSI is a CI bus. do a straight CI support and DSSI as one of the 
things that goes over it. DSSI itself is just using some of the 
facilities of the CI protocol. CI adapters are nexi themselves, like any 
other kind of bus adapter. so you should have:

ci0 at nexus
hsc? at ci0 
ra? at hsc? 

since the logic in a DSSI disk acts like an HSC. you could differentiate
between a 'real' HSC and a faked on in the DSSI device's logic, perhaps
by doing
dssi? at ci0 
ra? at dssi? 
or by even covering the abstraction with some glue and doing 
ra? at ci? 
but thats not exactly kosher.. 
DSSI is CI, plain and simple. CI is a complex protocol, which is why 
support for it is not going to be very simple! 

> 
> dssibus*   at sii?
> dd*        at dssibus? target?
> dt*        at dssibus? target?
> 
> For now I've added a KA640 CPU type that will control the enabling of this 
> code.
> 
> Now, as for your assertion that DSSI protocol is a subset of CI, I can't 
> say that I know enough to understand that statement as made. The KA640 does 

Read the Ultrix sources. If you want access to the ultrix sources, lemme 
know, i keep them online. 

> _not_ use the SHAC chip like the KA660 and KA670 does, instead it uses 
> something called the SII chip in the docs. (the KA670 docs call the SHAC 

SII is a programmable chip, there is other stuff elsewhere which 
configures it as what it needs to be: it handles all the elctrical 
interface, though, which is why it is used for SCSI as well as DSSI in 
some systems. 

> chip the SHAC chip.:-) And in the KA670 docs the SHAC chip is identified as 
> being able to operate both a CI bus _and_ a DSSI bus, although they aren't 
> shown or discussed as proper (or even improper) subsets of each other.

this is because DSSI is essentially just some set of the features of CI. 
It's a full CI bus, just that if you only use the DSSI features, many 
folks called it a 'dssi bus'. Clustering was done through the DSSI channel
just like any other CI, except that there's no star coupler in the 
middle. 

> 
> Further, while the KFQSA appears to treat each DSSI disk as a single 
> virtual controller, the SII chip on the KA640 is more like SCSI that can 
> talk to several targets through a single controller.

the sii does more in software and fudges some things to get it all right. 
the sii is way lower performance than the SHAC, which can halde the full 
70 mbit/sec bus. 

> 
> And this statement
>  > In any case the language spoken over this CI is MSCP.
> 
> Is fairly bold and spicy but I can't find any indication that it is true in 
> either manual. Both refer to DSSI as having its own set of opcodes with 
> targets, arbitration phases, data phases and such like, (very SCSI like) 
> and neither mention anything or reference MSCP anywhere (except in the 
> discussion of Q-bus peripherals)
> 
> I guess what I'm saying is that I don't intend any disrespect but I can't 
> reconcile these statements with the documentation. There must be something 
> I'm missing here.

Contact me off-list in private email and i'll give you an account on my 
system, where I keep Ultrix 4.2 sources. There's a hierarchy that is so 
simple it is beautiful, which really shows how well DEC thought the whole 
VAX architecture out, including how the hardware and software are so 
closely intermingled and symbiotically interdependent. There are a few 
generic protocols that bind a VAX together: the means of clustering them 
are just an extension of the same theme, all following from the concept 
of the equals-among-peers nexi at the very core of a system. Nexi all 
exchange information purely through manipulation of memory directly (an 
indicator of how memory-centric the VAX architecture is) and all things 
in the end go through a nexus. Processors, memory, bus adapters, these 
things are nexi. Sometimes other things are nexi, too. All XMI devices are,
for example. SGEC and sHAC are. There is a lot of overhead in this, since 
these devices can only communicated via paged virtual-addressed 
scatter-gather DMA. Lots of silicon needed, but it is very high 
performance. On smaller VAXen, the only nexi you might see , say in a 
microVAX, are the processor and a Qbus adaptor. (and of course memory 
controller) Bigger VAXen, like 780s or 750s or the BI&XMI machines, there 
are more nexi. The SBI on a 750 is a nexus interconnect, for example. 
Anyway, from a nexus there flows the core of interconnection and moving 
of information. CI adapters are nexi. they then have a protocol called 
GVP which runs over them, and everything is within this protocol. CI 
itself lives within it. GVP is an abstraction to thenexus interconnect to 
try to make the nexus scheme more easily used in operating system code, 
since communicating with a nexus is a very complicated thing. 
MSCP and so on are all things which live within these layers of protocol. 
In some cases more of this work is done by hardware than in other cases. 
In the case of a DSSI disk attached to an XMI DSSI (CI) adapter, it is 
_all_ done by hardware, you have an example of the entire protcol from 
bottom to top implemented in hardware all the way down to the DSSI/CI 
adapter, which is a nexus, manipulating page tables and modifying memory. 
(yes, nexi manipulate page tables themselves. this is one of the reasons 
that 25 to 30% of _every_ XMI board is dedicated to the 'XMI corner' 
interface logic which includes a microVAX processor to handle the work!)

isildur