This message is from the T13 list server.

> "Mcgrath, Jim" <[EMAIL PROTECTED]> 12/06/01 05:52PM
> If a more comprehensive package of changes were developed....

My intent is to offer a fully comprehensive package.

Somebody tell me what's missing?

> other changes would have to be made as well
> (as Hale pointed out).

With all due respect ...
... no matter that Hale is Hale
... this moment, temporarily, inexplicably, ...

Hale was wrong.

We have something of an existence proof to the contrary.  I'm saying adding an 
accurate report of residue will permit a bridge to duplicate standard Pio byte-moving 
behaviour bug-for-bug.

Anybody got a counter example?  My simultations all pass now.

> standard Pio byte-moving behaviour

Only standard Pio.  Sometimes in Pio you'll see a burst of, say, 5 and then 7.  If the 
device wants Dma to move 5 + 7 bytes rather than 6 + 8 bytes, the device may have to 
do some work.  Ansi and Sff before Ansi don't permit this: they say only the last byte 
count can be odd.

> Personally I'd just accept that badness happens,
> and make my design flexible and customizable
> enough to handle it.

Fun choice of words.

This is exactly my thinking.

A fully transparent bridge is exactly this: trivially reprogrammable by the Atapi 
device.  The Atapi device can tell the bridge precisely how many bytes to move to 
which way, subject to the restriction that bytes only move one way for each command.

Fully transparent parallel/Scsi and  Usb/AtapiPio bridges have shipped in the 
millions.  FULLY transparent: these devices do not examine the command block, they 
pass it thru BLIND, as was explicitly required in procurement and tested by 
randomising the command block content during qualification.

("ArbitraryDRQ" qualification of a transparent bridge includes bridging to a device of 
special design that can be reprogrammed on the fly to interpret a randomised command 
as meaning burst a separately randomised series of byte counts.)

> A fully transparent bridge is exactly this:
> reprogrammable by the Atapi device.  

The Atapi devices we buy from third parties reprogram our bridges unwittingly: all 
they do is decode command blocks to decide the count of bytes to move which way.

The Atapi devices whose firmware we code ourselves work harder.  They supply distinct 
idProduct:idVendor:iSerial.  They report what bInterfaceSubClass command set they 
implement.  They monitor Usb power modes.  They wake up Usb in response to a disk 
insert/ eject or ejectButton push.  Etc. etc. etc.

> BTW ... this is NOT a byte count issue -
> in a transparent bridge you don't care
> about the byte count (or you can count it yourself).
> It is just an issue of the last byte's validity.

Agreed this is an issue of distinguishing the count of bytes clocked across the bus 
from the count of bytes willingly requested.

If I had fully understood this portion of your reply before I wrote some of my 
replies, I might have tried to change my choice of words ...

... but don't I remember seeing Hale & Jim also speak of "bytes transferred" as 
meaning bytes willingly requested?

I'm not wedded to any particular terminology.

So far I like "accurate Ide residue" for people who understand, but for people who 
don't understand, ...

... I think "accurate byte counts" might clue them in fastest?  I don't think people 
broadly appreciate that Ide can force the move of X * 2 + 1 more bytes than the 
receiver of clocks wished.

The whole issue is over which bytes to count.  Counting bytes clocked across the bus 
is the wrong answer.  That's an incidental count of no fundamental importance.  Change 
that to be what you like, what host & device have to agree is how many of the bytes 
they both consider meaningful: how many of the bytes at the end crossed just to suit 
the protocol.

> The only issue I've seen identified
> is the issue of the odd byte residue on transfers
> (which occurs in PIO or DMA,
> but DMA has no indication of it like PIO).

I tried to establish, in my first, 12/07/01 07:23AM, reply to your reply,that we face 
of inaccuracy of X * 2 + 1 in every mode, with max X = 0 for Pio/SwDma, max X = 1 for 
MwDma, max X up to five or so as we raise burst rates from UDma 17 to UDma 133.

I trust you'll tell me how I did.

> It seems that the underlying issue here
> is the ability to implement a bridge
> without a uP to parse the commands.

For me, aye.

Am I wrong to imagine more than bridge people are interested in the idea of accurate 
byte counts?  I wasn't trying to be coy when first I framed the issue in terms of 
accurate byte counts - I was making the assumption that not only bridge people cared 
about accurate non-whole-block byte counts.

> ... implement a bridge
> without a uP to parse the commands.
> Assuming for the moment that this is desirable,

Thank you for this latest example of your customary courtesy.

(-: As you might imagine, I find me continuing to get paid desirable.  Here I can even 
drink the water and breathe the air. :-)

> So just making this one change would introduce problems
> (i.e. instability for a lot of designers)

All change is bad, agreed.

> you would still have to handle older devices
> for at least 3 more years ...
> ... before you could really take advantage
> of the feature for all products.

Yes older devices will matter.  The words I used to say what I think you mean here 
were:

'I imagine the final choice of a heuristic [to guess the non-whole-block residue] 
might end up a tightly guarded trade s*cret that gives people competitive edge.  That 
is, this heuristic will become a "secret sauce", like how creatively boot Bios 
interpret our quasi-public Ansi Ide standards.  Secret sauce gets purchased 
expensively by paying people to isolate the root evil in a series of plug 'n play 
troubles over time.'

> you would still have to handle older devices
> So it is actually HARDER than the 48 bit addressing
> (by definition you do not care about older devices,

Sorry, I'm lost again.

Older devices will break only when non-whole-block residue matters.  That's common 
enough to care to improve, but not common enough to keep from shipping.  Newer devices 
will work better for once.  That's a Good Thing.

> here you really do need it
> on all devices to take advantage of it in your bridge design).

Again, I'm lost, sorry.  In a bridge, you take advantage of reported residue where 
present, you don't where absent.  The xEC/A1 Identify bit to tell if you present or 
not is key.  You always win, you never lose.  You can apply whatever heuristics you 
prefer to guess residue when it's not reported.

> If you do want a simple state machine in the hardware,
> then you can accomplish this today.
> You might even be able to make it work
> with "compliant ATAPI devices" (as per your earlier email).

This I didn't quite follow either, sorry again.

I can't easily unilaterally extend the xEC/A1 Identify standard to report that my 
device is polite enough to bother to report accurate Ide residue ... can I?

I can easily unilaterally extend the standard Atapi protocol to report an accurate Ide 
residue, yes.

> will not save you from bad implementation

Aye.

Pat LaVarre

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

Reply via email to