Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Jul 2004 02:13:24 -0700
From:      Julian Elischer <julian@elischer.org>
To:        ticso@cicely.de
Cc:        "M. Warner Losh" <imp@bsdimp.com>
Subject:   Re: speeding up ugen by an order of magnitude.
Message-ID:  <40F104B4.2070000@elischer.org>
In-Reply-To: <20040708093145.GX12877@cicely12.cicely.de>
References:  <20040707.232916.126914893.imp@bsdimp.com> <Pine.BSF.4.21.0407080108010.66234-100000@InterJet.elischer.org> <20040708084650.GW12877@cicely12.cicely.de> <20040708093145.GX12877@cicely12.cicely.de>

next in thread | previous in thread | raw e-mail | index | archive | help
Bernd Walter wrote:
> On Thu, Jul 08, 2004 at 10:46:51AM +0200, Bernd Walter wrote:
> 
>>On Thu, Jul 08, 2004 at 01:16:24AM -0700, Julian Elischer wrote:
> 
> OK - It looks like you are absolutely right.
> It seems that the controller sweeps trough the request queues on a
> per frame basis - we can only get per frame what we have set.
> What we havn't set at that time won't make it onto the bus until the
> next frame.
> Not surprising after rethinking, because the priority calculation
> is done on a per frame base.
> 
> If we just have a single 1k xfer then 1k is all we can ever get per ms.
> If we have two 8k xfers or a single 16k xfer then that's what we can
> get per ms at maximum.
> I havn't calculated the maximum size per frame yet, but if it's 60k
> then we really have to push xfers for 60k into the pipe in parallel
> and we are required to have setup the next xfers in time for the next
> frame.
> 
> Say you are doing 128k and you get 60k per frame.
> Then you get 60k in the first ms, 60k in the second and only 8k in
> the third - then you setup the next one and get 60k again.
> If the bus is loaded with other requests then the splitting is
> different.
> Interleaving two 64k requests would get us 4k of the first request and
> 56k of the second request during the second ms.
> Well - that theoretical so far...
> 
> Can we do interleaving with physio?

Sorry to not get back to you but my mail server dropped off the net and I was 
remote from it..

Yes you can do multiple IOs with physio but as charles pointed out we need to
be very careful about allignment requirements.

As Matt pointed out, it may be just easier to do the copying..

Note, you can get an interrupt from ehci every uframe instead of every frame
by changing an config register. We could also use the "interrupt on end of 
transfer interrupt. Async transfers just use up "whatever is left over"
so I thin that priority calculations are not so important for them..

anyhow I've got my mail system going again so hopefully I can get to look at 
something else tomorrow.. maybe even the ehci drive again :-)

BTW in answer to your question "how many interrupts per second?"
the answer was 1000 exactly :-)


-- 
+------------------------------------+       ______ _  __
|   __--_|\  Julian Elischer         |       \     U \/ / hard at work in
|  /       \ julian@elischer.org     +------>x   USA    \ a very strange
| (   OZ    )                                \___   ___ | country !
+- X_.---._/    presently in San Francisco       \_/   \\
           v



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