In case it got lost in the flurry Friday, I'm going to restate now the one technical 
point on which I imagine we wall want to achieve consensus, no matter how we all then 
agree to disagree over the most profitable business models.

Please tell me that and how I'm wrong?

I think there is no dispute over:  Given N * 2 as the count of bytes the receiver and 
the sender of clocks mutually agree clocked across the bus, given R as the count of 
bytes the receiver of clocks means to transfer,
(N * 2 - R) may be as large as
(X * 2 + 1).

The question being debated is how large is (X * 2 + 1) in practice.

To say the non-communication of non-whole-block residue is only ever an issue for odd 
byte counts is to claim max X is always 0.  Me, I think see a max X of 2 in UDma 33, 
rising with increasing burst rate.

Whatever max X truly is, this is a real issue for block transfers whenever the block 
size is less than
((max X) * 2 + 2), thus an issue for non-whole-block transfers generally.

Please tell me that and how I'm wrong?

Thanks again in advance.    Pat LaVarre

--- Begin Message ---
This message is from the T13 list server.


> "Mcgrath, Jim" <[EMAIL PROTECTED]> 12/06/01 18:01 PM

> Pat, can you clarify

Thanks for hanging in here with me.  I hope you share my feeling that we inch forward 
with every exchange of email.

> ... I would not employ a transfer counter ...
> since that would require a real reworking of UDMA.
>
> Instead, for ... support ... byte residues,
> just implement the counterpart
> to the IGNORE WIDE RESIDUE message in SCSI
>
> - a register you can read
> at the END of the command
> that tells you whether the last byte[s were]
> valid of not (e.g. 0 for valid,
> [nonzero] for invalid).
>
> ... simple[] to implement
> and if done right only [hosts and] devices
> that can have [nonzero] residues need ever to change.

Yes I mean to be asking for precisely that.

But I can see we haven't yet confirmed/denied I'm right to think that standard UDma 
33, for example, builds in an inaccuracy of up to 5 bytes.  So far we're only talking 
about an inaccuracy of 1 and that only when byte counts are odd.

Let's try to get me straight on that much, and then we can move on.

> Pat, can you clarify

We can talk about all the Ide data transfer protocols at once if we distinguish the 
sender of data clocks from the sender of data bits.  In every mode except UDma Data 
IN, the host is the sender of clocks.  In UDma Data IN, the device is the sender of 
clocks.

In any Ide transfer, the sender and the receiver of clocks jointly observe N clocks of 
data.  When then are they wrong to think they both have willingly exchanged N * 2 
bytes of data?

Well, the different data transfer modes give the sender and the receiver more or less 
power to cut short the stream of clocks.

Suppose the sender of clocks wants to move at most S bytes.  The sender stos sending 
clocks when N <= ((S + 1) / 2).  That is, when (N * 2) <= S if S is even, else when (N 
* 2) <= (S + 1) if S is odd.

So far I've said nothing new.

The sender introduces an inaccuracy of 1 only when S is odd, no matter the transfer 
mode. 

But now let's suppose the receiver of clocks wants to move at most R bytes.  The 
receiver stops clocks by telling the sender to stop them.  As burst rates increase, 
turnaround time increases, and the sender runs on further past where the receiver 
wanted to stop.

The receiver can only guarantee N <= ((R + 1) / 2) + X, where X is the count of eXtra 
clocks: the clocks the receiver unwillingly received.

X is 0 for Pio/SwDma.  X is technically 0 or 1 for MwDma, but 0 in practice.  X rises 
with burst rate for UDma.  I hear any of 0 1 2 for UDma 33, 0 1 2 3 for UDma 66, more 
for UDma 100, and so on.

Agreed?

In bus traces in the lab, I see some prejudice in favour of block counts.  Whenever 
the sender and receiver agree over block size, if the sender of clocks delays the next 
clock after a block boundary for as long as a turnaround time, all these inaccuracies 
go away.

Perhaps the inaccuracies really do go away this way with Ata devices: maybe the Ata 
insistence that all commands to a block device in fact move multiples of blocks makes 
this not much of an issue for Ata devices.

By failing to delay for the turnaround time between each two data clocks, the sender & 
the receiver permit a max inaccuracy of (X * 2 + 1) in the count of bytes willingly 
exchanged.  For UDma 33, max X is 2, so max inaccuracy is 5.

Agreed?

Without additional protocol, only the sender can know if S was odd.  Only the receiver 
can know if R was odd and what X actually turned out to be.

To let the host measure this inaccuracy precisely, when the device was the receiver of 
clocks, we need the device to report to the host X and if R was odd.  When the device 
was the sender of clocks, we need the device to report only if S was odd: only the 
host can observe X when the hos is the receiver of clocks.

We can solve all cases one way if we always require the device to report its "Ide Dma 
residue": the count of bytes it knows were exchanged unwillingly.  If the device was 
the sender of clocks, the Ide Dma residue is 1 if S was odd, else 0.  If the device 
was the receiver of clocks, the Ide Dma Residue is X * 2 + 1: in one number we 
communicate both what X was and if R was odd.

Agreed?

> who is sending these commands
> for 5 bytes of returned INQUIRY data?

I don't mean to be coy.

I feel I face a chicken & egg situation here.

My real world data on WHAT happens is pretty concrete: remembered Pio bus traces of 
plug 'n play dying when we step away from latest Windows on out to cover the Windows 
installed base and then out to cover the world beyond Windows.  I also remember 
contrasts between shipping volumes of devices that do this well and devices that don't.

I can only guess WHY host & device folk do such a poor job of coordinating their 
interpretation of commands.  To agree how reasonable or unreasonable my guesses are, I 
think we need to agree first on WHAT the standard permits me to see in bus traces when 
we change only from Pio to UDma.

Only then can we coherently argue out a reasonable guess of how small of subset of 
what I could see will I actually see.

Thanks for talking.    Pat LaVarre


Subscribe/Unsubscribe instructions can be found at www.t13.org.
--- End Message ---

Reply via email to