Burst PCI target read/write transfers is a function of the CPU’s
north-bridge chipset. There really isn’t a special opcode in the x86
instruction set to signal such a read, so it would be up to the north-bridge
to somehow combine the reads and produce the right request. So far, Intel
has not supported anything like this.
On the other hand, you can usually get short *write* bursts using the CPU,
if you have write-combining turned on in the north-bridge chipset. The rule
of thumb for PCI burst transfers, is that the source of the data must master
the bus. So, if you wish to burst data from a board into the CPU memory, you
cannot use the CPU to do reads.
It will be terribly inefficient. The best you will be able to do will be
word-size reads, with lots of bus protocol overhead. If you master the bus
with the board that has the data to send, then you can do burst *writes*
into the north-bridge chipset.
All modern north-bridges support this, but the maximum burst length varies.
It is usually the cache-line length of the memory interface behind the
north-bridge, so it may
be only 16 or 32 bytes, or some other small number.
This means that no matter what, you won’t be able to achieve that nirvana of
PCI bus speed, 132 MBytes/sec. Also, there is always CPU contention for the
memory behind the north-bridge, which always gets top priority over incoming
PCI bus transfers. Realistically, I’ve seen maximum 80 MByte/sec transfers,
and that was only obtained by using bus mastering data sources.
One uses READ/WRITE_REGISTER_BUFFER_UCHAR/SHORT/LONG and let the HAL do the
right thing.
In this case a simple memory read (MR) occurs. So you need a hardware
decision, develop your own PCI controller that will master the bus.
Regards,
Max
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Moreira, Alberto
Sent: Friday, September 14, 2001 6:29 PM
To: NT Developers Interest List
Subject: [ntdev] RE: Burst PCI target read/write transfers.
Not in a diagnostic program, no, that’s not acceptable! In the device driver
maybe it’s ok to punt to authority, although I myself would doubt that
Microsoft and their HAL know my hardware better than I do. If nothing else,
when everything fails I can walk down the hall and talk to the chip
designer. I personally feel like bypassing is almost always better than
comply, but hey, there may be more than one way to skin this cat.
Incidentally, one more thing I’d suggest: write the diagnostic first, and
make sure to modularize your hardware level i/o so that you can reuse the
routines in the driver.
Alberto.
-----Original Message-----
From: Mark Roddy [mailto:xxxxx@hollistech.com]
Sent: Thursday, September 13, 2001 7:58 PM
To: NT Developers Interest List
Subject: [ntdev] RE: Burst PCI target read/write transfers.
One uses READ/WRITE_REGISTER_BUFFER_UCHAR/SHORT/LONG and let the HAL do the
right thing.
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Richaed Sliwinski
Sent: Thursday, September 13, 2001 5:21 PM
To: NT Developers Interest List
Subject: [ntdev] Burst PCI target read/write transfers.
I am writing a device driver as well as diagnostic software for PCI card,
wich is capable
of PCI burst transfers – it is not a bus muster.
How does one explicitly force PCI burst transfers?
You are currently subscribed to ntdev as: xxxxx@hollistech.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: xxxxx@compuware.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: xxxxx@acronis.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com