[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: from PCI framegrabber to PCI raid
> From Geert.Bellens@esat.kuleuven.ac.be Tue Apr 4 04:10:16 2000
>
> Hello,
>
> I have an IDE RAID which is connected via the PCI bus.
> I have also 2 framegrabbers. I'd like to capture real time video (2 x
> 27Mb/s) to my RAID (max transferrate ~ 70 MB/s).
>
> I haven't tried it yet. But I suppose it should work.
>
> Is it however possible to move the video stream directly to the raid
> without passing the system memory ?
Short answer: No.
Medium answer: Depends on some properties of the IDE RAID controller &
framegrabber. If they have some special properties and if you are willing
to write a bunch of custom software, then it might be possible.
Long answer is too long to go into detail here, but basically it boils down to
this: most PCI bus masters assume that they are going to be asked to read/write
memory and can do so at their own convienence and memory is going to be
ready for whatever they want to do. If you want to transfer data between
two of these kinds of cards, then one is going to be the initiator of the
transfer and the other must be the target. However, being a target is quite
annoying to most bus master cards as they are then being asked to relinquish
control over the transfer.
Here's a concrete example. When you write data to an IDE drive, the
software driver gives the drive a data structure which lists information about
the transfer (things like where on the drive to put the data (and where to
put data on the drive is controlled by the file system) and where in memory
the data is currently stored.) The drive then reads memory at it's own
pace and puts it onto the drive at the locations given in the control block.
When its done all of this, it will let the driver know that the transfer
is complete.
Now, what would happen if another PCI device tries to throw data directly
at the drive. First, you'll have some problems addressing the drive, as
most bus master devices only have a few control registers and don't generally
provide a large memory mapped buffer space. (Since they expect to be
bus masters, they don't need one.) Assuming that you could address the drive,
you then have the problem of having the disk somehow knowing where on
the disk to place all of this incoming data.
If you turn the situation around and want to have the drive read data from
the other PCI device, you now have the problem from the other point of view:
does you other device provide a memory-mapped buffer for the drive to read
from and does it have a way to let the drive know when & where data is
available?
> Because if you use the PCI bus to pass the RAM and vice versa than the
> bandwith of the PCI bus is divided in half.
Yup, you're correct. And it sucks, too. If you want to somewhat mitigate
this situation, the best way is to get a system which has multiple peer PCI
busses and put your framegrabbers on one PCI bus and the drives on another
bus. That way, you're not dividing the PCI bandwidth in half, but only
dividing the memory bandwidth in half (which is hopefully alot faster than
PCI.)
>
> Best Regards,
>
> Geert
-Richard Walter
rwalter@corp.auspex.com
Note: I speak for myself, not for Auspex