Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Oct 2004 10:50:29 -0600
From:      "Kenneth D. Merry" <ken@freebsd.org>
To:        David Gilbert <dgilbert@dclg.ca>
Cc:        freebsd-hardware@freebsd.org
Subject:   Re: sata raid & write cache state
Message-ID:  <20041012165029.GA86646@nargothrond.kdm.org>
In-Reply-To: <16747.63803.470649.921882@canoe.dclg.ca>
References:  <b21e6cca041010181932879aeb@mail.gmail.com> <20041011043508.GA72113@nargothrond.kdm.org> <b21e6cca041011090816a1352@mail.gmail.com> <20041011210303.GA78436@nargothrond.kdm.org> <16747.63803.470649.921882@canoe.dclg.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Oct 12, 2004 at 11:33:15 -0400, David Gilbert wrote:
> >>>>> "Kenneth" == Kenneth D Merry <ken@freebsd.org> writes:
> 
> Kenneth> See my previous mail.  SATA disks differ in two ways:
> 
> Kenneth> 1.  Many don't support tagged queueing.
> 
> I'd like to see more information on this.  I was under the impression
> that SATA required some form of command queueing in all drives.

Some do, some don't.  Take a look at the vendors' specs and they'll tell
you whether the drive has support for queueing.

e.g. from a quick look at Maxtor's site, the DiamondMax Plus 9 doesn't
support queueing, and the DiamondMax 10 claims to support NCQ.

> Kenneth> 2.  If the SATA disk does support tagged queueing, there is
> Kenneth> still a fundamental problem with the queueing model in SATA
> Kenneth> (and probably ATA, not sure).  According to a coworker of
> Kenneth> mine (hardware engineer) who is a SATA expert, the status
> Kenneth> phase on the bus is the same phase as the data phase.  So you
> Kenneth> basically have to send all the data to the drive on a write
> Kenneth> and the drive has to send the status back before the drive
> Kenneth> can accept any more data for another queued write command.
> Kenneth> So that limits you, effectively, to writing data for one
> Kenneth> command at a time.
> 
> It would appear that the SATA folks are introducing 'NCQ' (Native
> Command Queueing) ... which does supply out-of-order returns among
> other things.

Hopefully it'll be better than the current generation queueing support.

Note that even the current generation queueing support can do out of order
completion on reads.  That's because it's pretty easy to return the data
and status at the same time on a read. :)

The problem is on writes.  If you have write caching turned off, the drive
will have to commit the write to media before it can send status back.  So
you can't effectively send data for the next write command before the
current write data is committed.

It's entirely possible that SATA II has fixed things, I don't know.

Ken
-- 
Kenneth Merry
ken@FreeBSD.ORG



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041012165029.GA86646>