[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PCI DMA under Windows NT



Dear PCI SIG folks,

Thanks for the opportunity to connect to this reflector. 

We are making medical scanners here. Please check out our web page.

Currenly moving to get our 40 Mbyte/sec stream of nonreproducible 
patient scan data onto PCI and out to a 72 Gbyte RAID system. This 
requirement probably means we'll have to design our own optimized 
PCI card to DMA the data stream into PCI. Have bought an Emulex 
Light Pulse Host Bus Adapter and a Ciprico 72 Gbyte RAID.

Our data stream is to arrive at our PCI card via fiber optic link 
and locally load a FIFO. We'll need to get that FIFO data to RAID 
over the PCI bus.

We are just beginning to understand the scope of this undertaking. 
Just starting to understand the difficulty presented to fast DMA 
hardware under Windows NT. There seem to be two primary problems:

 1) Windows NT is not real time. We are told to expect periods of 
    from 5 to 100 ms where the Pentium processor will not respond 
    to interrupts. 

 2) Windows NT is virtual memory mapped. Assigning the 
    physical memory address to the DMA hardware may force 
    heavy fragmentation of the DMA transfer and require chaining 
    for fast sustainable throughput.

Our application makes both of these problems difficult from one 
extra standpoint. We cannot afford to loose any of our stream. 
If we start off transferring at 40 Mbytes/sec, we'd like to not 
have periods where NT does not keep the DMA transfers going. 
If this happens we've lost a chunk of our patient-in-the-scanner 
data. 

Do we:

 1) Plan for our DMA to go to PC motherboard DRAM in a couple of 
    software defined 4 to 16 Mbyte buffers? If we go this way, may we 
    expect Windows NT to allocate contiguous 16 Mbyte chunks of 
    DRAM space? Or, will we be forced to do DMA chaining with 
    multiple DMA control blocks resident on local static RAM? Or 
    may we expect to do nicely with a pair of prioritized DMA 
    channels, each one able to transfer an entire 4 Mbyte chunk 
    and able to start automatically when the other finishes.

OR

 2) Design 16 Mbytes of DRAM onto our DMA card and let the Light
    Pulse DMA out of our DRAM? A lot of extra hardware design.

OR

 3) Plan for our DMA to write to the 128 Kbyte Static RAM buffer 
    on the Light Pulse card? This seems likely to fall short.

Any guideance you can offer will be appreciated.

Regards,

Bill
_______________________
Bill Jones
Senior Development Engineer
CTI PET Systems, Inc.
810 Innovation Dr.
Knoxville, TN 37932-2571
voice: 423 966 0072 x254
fax: 423 966 8955
email: jones@cti-pet.com
web: www.cti-pet.com
ëÌ»