PC Review


Reply
Thread Tools Rate Thread

PCI Burst transfers initiated by the Northbridge

 
 
Bernhard Walle
Guest
Posts: n/a
 
      20th Nov 2005
Hello,

I want to know how PCI Burst transfers can be initiated by the CPU,
i.e. when does the host bridge start PCI burst transfers as initator?
I'm writing a device driver for Linux and I'm intersted about this
topic.

Can somebody point me to information about this topic or explain
the issue a bit? Thanks for any hints.


Regards,
Bernhard

--
Real Men don't make backups. They upload it via ftp and let the world
mirror it. -- Linus Torvalds
 
Reply With Quote
 
 
 
 
Alexander Grigoriev
Guest
Posts: n/a
 
      20th Nov 2005
If a PCI device has registers base+0, 4, 8, 0x10, and you write to them in
quick sequence, PCI bridge might combine the write to a burst.

"Bernhard Walle" <(E-Mail Removed)> wrote in message
news0o453-(E-Mail Removed)...
> Hello,
>
> I want to know how PCI Burst transfers can be initiated by the CPU,
> i.e. when does the host bridge start PCI burst transfers as initator?
> I'm writing a device driver for Linux and I'm intersted about this
> topic.
>
> Can somebody point me to information about this topic or explain
> the issue a bit? Thanks for any hints.
>
>
> Regards,
> Bernhard
>
> --
> Real Men don't make backups. They upload it via ftp and let the world
> mirror it. -- Linus Torvalds



 
Reply With Quote
 
Keith
Guest
Posts: n/a
 
      21st Nov 2005
In article <o0o453-(E-Mail Removed)>, (E-Mail Removed)
says...
> Hello,
>
> I want to know how PCI Burst transfers can be initiated by the CPU,


By generating a request to an I/O device? ;-)

> i.e. when does the host bridge start PCI burst transfers as initator?
> I'm writing a device driver for Linux and I'm intersted about this
> topic.
>
> Can somebody point me to information about this topic or explain
> the issue a bit? Thanks for any hints.


It depends on the bridge. A classic Pentium cannot initiate a PCI
burst transfer. I/O devices easily can though.

--
Keith
 
Reply With Quote
 
daytripper
Guest
Posts: n/a
 
      21st Nov 2005
On Sun, 20 Nov 2005 22:00:16 -0500, Keith <(E-Mail Removed)> wrote:

>In article <o0o453-(E-Mail Removed)>, (E-Mail Removed)
>says...
>> Hello,
>>
>> I want to know how PCI Burst transfers can be initiated by the CPU,

>
>By generating a request to an I/O device? ;-)
>
>> i.e. when does the host bridge start PCI burst transfers as initator?
>> I'm writing a device driver for Linux and I'm intersted about this
>> topic.
>>
>> Can somebody point me to information about this topic or explain
>> the issue a bit? Thanks for any hints.

>
>It depends on the bridge. A classic Pentium cannot initiate a PCI
>burst transfer. I/O devices easily can though.


It's a trick question.

Why in Big Hairy Thunderer's Name would one want a North Bridge to initiate
PCI burst transfers? Particularly for IO device service?

/daytripper
 
Reply With Quote
 
Kai Harrekilde-Petersen
Guest
Posts: n/a
 
      21st Nov 2005
daytripper <(E-Mail Removed)> writes:

> On Sun, 20 Nov 2005 22:00:16 -0500, Keith <(E-Mail Removed)> wrote:
>
>>In article <o0o453-(E-Mail Removed)>, (E-Mail Removed)
>>says...
>>> Hello,
>>>
>>> I want to know how PCI Burst transfers can be initiated by the CPU,

>>
>>By generating a request to an I/O device? ;-)
>>
>>> i.e. when does the host bridge start PCI burst transfers as initator?
>>> I'm writing a device driver for Linux and I'm intersted about this
>>> topic.
>>>
>>> Can somebody point me to information about this topic or explain
>>> the issue a bit? Thanks for any hints.

>>
>>It depends on the bridge. A classic Pentium cannot initiate a PCI
>>burst transfer. I/O devices easily can though.

>
> It's a trick question.
>
> Why in Big Hairy Thunderer's Name would one want a North Bridge to initiate
> PCI burst transfers? Particularly for IO device service?


Because of performance reasons? - The northbridge will combine writes
from the CPU to consecutive adresses in the PCI address space. By
definition, a write to memory, that is sent to the PCI bus, will be a
Memory Space access. IO Space accesses will only be initiated, when
the CPU does an IN or OUT instruction. The north bridge must not try
to combined the individual OUT's into a burst (cf the PCI spec).


Cheers,

Kai
--
Kai Harrekilde-Petersen <khp(at)harrekilde(dot)dk>
 
Reply With Quote
 
daytripper
Guest
Posts: n/a
 
      21st Nov 2005
On Mon, 21 Nov 2005 20:35:59 +0100, Kai Harrekilde-Petersen
<(E-Mail Removed)> wrote:

>daytripper <(E-Mail Removed)> writes:
>
>> On Sun, 20 Nov 2005 22:00:16 -0500, Keith <(E-Mail Removed)> wrote:
>>
>>>In article <o0o453-(E-Mail Removed)>, (E-Mail Removed)
>>>says...
>>>> Hello,
>>>>
>>>> I want to know how PCI Burst transfers can be initiated by the CPU,
>>>
>>>By generating a request to an I/O device? ;-)
>>>
>>>> i.e. when does the host bridge start PCI burst transfers as initator?
>>>> I'm writing a device driver for Linux and I'm intersted about this
>>>> topic.
>>>>
>>>> Can somebody point me to information about this topic or explain
>>>> the issue a bit? Thanks for any hints.
>>>
>>>It depends on the bridge. A classic Pentium cannot initiate a PCI
>>>burst transfer. I/O devices easily can though.

>>
>> It's a trick question.
>>
>> Why in Big Hairy Thunderer's Name would one want a North Bridge to initiate
>> PCI burst transfers? Particularly for IO device service?

>
>Because of performance reasons? - The northbridge will combine writes
>from the CPU to consecutive adresses in the PCI address space. By
>definition, a write to memory, that is sent to the PCI bus, will be a
>Memory Space access. IO Space accesses will only be initiated, when
>the CPU does an IN or OUT instruction. The north bridge must not try
>to combined the individual OUT's into a burst (cf the PCI spec).
>
>
>Cheers,
>
>Kai


It is precisely about "performance reasons" that dictates why CPUs don't
initiate *write* bursts across PCI buses.

And you totally mistook "IO device service" as being synonymous with "IO
Space" accesses.

Bootstrap: you clearly have to go back to architectural basics and understand
why it is the *PCI agents* that inspire burst data transactions - in BOTH
directions - across the bus, not the North Bridge...

Cheers

/daytripper
 
Reply With Quote
 
Alexander Grigoriev
Guest
Posts: n/a
 
      22nd Nov 2005
A company I user to work for, had a PCI communication ASIC designed. For
some reasons, the PCI interface was not done right and would lock up if a
memory write burst was initiated by CPU bridge. And we took pains to make
sure we NEVER write to successive registers, otherwise burst occured and the
system was screwed.

"daytripper" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
>
> It is precisely about "performance reasons" that dictates why CPUs don't
> initiate *write* bursts across PCI buses.
>
> And you totally mistook "IO device service" as being synonymous with "IO
> Space" accesses.
>
> Bootstrap: you clearly have to go back to architectural basics and
> understand
> why it is the *PCI agents* that inspire burst data transactions - in BOTH
> directions - across the bus, not the North Bridge...
>
> Cheers
>
> /daytripper



 
Reply With Quote
 
daytripper
Guest
Posts: n/a
 
      22nd Nov 2005
On Tue, 22 Nov 2005 03:47:20 GMT, "Alexander Grigoriev" <(E-Mail Removed)>
wrote:
>"daytripper" <(E-Mail Removed)> wrote in message
>news:(E-Mail Removed)...
>>
>> It is precisely about "performance reasons" that dictates why CPUs don't
>> initiate *write* bursts across PCI buses.
>>
>> And you totally mistook "IO device service" as being synonymous with "IO
>> Space" accesses.
>>
>> Bootstrap: you clearly have to go back to architectural basics and
>> understand
>> why it is the *PCI agents* that inspire burst data transactions - in BOTH
>> directions - across the bus, not the North Bridge...
>>
>> Cheers
>>
>> /daytripper

>
>A company I user to work for, had a PCI communication ASIC designed. For
>some reasons, the PCI interface was not done right and would lock up if a
>memory write burst was initiated by CPU bridge. And we took pains to make
>sure we NEVER write to successive registers, otherwise burst occured and the
>system was screwed.


Shades of the early days of PCI, when erratum flew like confetti, and bios and
driver writers held chip designers hostage...

And yet another good reason not to use host-initiated bus transactions of any
stripe: Writes to memory mapped PCI space are *allowed* to be coalesced by the
host bridge. If the ASIC designers fail to implement their target state
machine to handle the resulting "burst" of register writes correctly to begin
with, the driver must utilize barrier instructions to get the write buffer
flushed between "register" writes, a pitiful way to run an airline...

/daytripper
 
Reply With Quote
 
Kai Harrekilde-Petersen
Guest
Posts: n/a
 
      22nd Nov 2005
daytripper <(E-Mail Removed)> writes:

> On Mon, 21 Nov 2005 20:35:59 +0100, Kai Harrekilde-Petersen
> <(E-Mail Removed)> wrote:
>
>>daytripper <(E-Mail Removed)> writes:
>>
>>> On Sun, 20 Nov 2005 22:00:16 -0500, Keith <(E-Mail Removed)> wrote:
>>>
>>>>In article <o0o453-(E-Mail Removed)>, (E-Mail Removed)
>>>>says...
>>>>> Hello,
>>>>>
>>>>> I want to know how PCI Burst transfers can be initiated by the CPU,
>>>>
>>>>By generating a request to an I/O device? ;-)
>>>>
>>>>> i.e. when does the host bridge start PCI burst transfers as initator?
>>>>> I'm writing a device driver for Linux and I'm intersted about this
>>>>> topic.
>>>>>
>>>>> Can somebody point me to information about this topic or explain
>>>>> the issue a bit? Thanks for any hints.
>>>>
>>>>It depends on the bridge. A classic Pentium cannot initiate a PCI
>>>>burst transfer. I/O devices easily can though.
>>>
>>> It's a trick question.
>>>
>>> Why in Big Hairy Thunderer's Name would one want a North Bridge to initiate
>>> PCI burst transfers? Particularly for IO device service?

>>
>>Because of performance reasons? - The northbridge will combine writes
>>from the CPU to consecutive adresses in the PCI address space. By
>>definition, a write to memory, that is sent to the PCI bus, will be a
>>Memory Space access. IO Space accesses will only be initiated, when
>>the CPU does an IN or OUT instruction. The north bridge must not try
>>to combined the individual OUT's into a burst (cf the PCI spec).

>
> It is precisely about "performance reasons" that dictates why CPUs don't
> initiate *write* bursts across PCI buses.


There are actually PCI chips out there, that don't implement a DMA
engine. For those, you need to use the CPU (aka Programmed IO) to get
the data to the PCI chip. But we both know that. So what was the
point you were trying to make in the first place?

> And you totally mistook "IO device service" as being synonymous with "IO
> Space" accesses.


Yawn. Pass the beernuts.


Kai
--
Kai Harrekilde-Petersen <khp(at)harrekilde(dot)dk>
 
Reply With Quote
 
Alexander Grigoriev
Guest
Posts: n/a
 
      22nd Nov 2005
You confuse write-combine and write burst.

If a range in the bridge is set up for write combine, you can get
transactions out of order, and partial writes combined to one write.
If a range doesn't allow write-combine, you can still get a burst.

"daytripper" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> On Tue, 22 Nov 2005 03:47:20 GMT, "Alexander Grigoriev"
> <(E-Mail Removed)>
> wrote:
>>
>>A company I user to work for, had a PCI communication ASIC designed. For
>>some reasons, the PCI interface was not done right and would lock up if a
>>memory write burst was initiated by CPU bridge. And we took pains to make
>>sure we NEVER write to successive registers, otherwise burst occured and
>>the
>>system was screwed.

>
> Shades of the early days of PCI, when erratum flew like confetti, and bios
> and
> driver writers held chip designers hostage...
>
> And yet another good reason not to use host-initiated bus transactions of
> any
> stripe: Writes to memory mapped PCI space are *allowed* to be coalesced by
> the
> host bridge. If the ASIC designers fail to implement their target state
> machine to handle the resulting "burst" of register writes correctly to
> begin
> with, the driver must utilize barrier instructions to get the write buffer
> flushed between "register" writes, a pitiful way to run an airline...
>
> /daytripper



 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
user initiated vs. computer initiated =?Utf-8?B?QmViYXJjZQ==?= Windows XP General 5 7th May 2007 10:54 PM
Virus Burst =?Utf-8?B?RGF2ZSBDdWU=?= Windows XP General 3 25th Sep 2006 02:19 PM
Has the sky Football Bubble burst ? Rush General Discussion 8 5th May 2006 10:15 PM
WD1200JB -- Low Read Burst rates? Q Storage Devices 10 3rd Dec 2003 10:37 PM
RE: Burst Copy Question Dan Rather Freeware 0 16th Oct 2003 05:09 AM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 12:57 PM.