Page 4 of 4 FirstFirst 1234
Results 49 to 50 of 50

Thread: Dual Graphics Cards -- Alternating frames

  1. #49
    Senior Member
    Join Date
    Jan 2005
    Location
    Manchester
    Posts
    2,901
    Thanks
    67
    Thanked
    182 times in 136 posts
    • Butcher's system
      • Motherboard:
      • MSI Z97 Gaming 3
      • CPU:
      • i7-4790K
      • Memory:
      • 8 GB Corsair 1866 MHz
      • Storage:
      • 120GB SSD, 240GB SSD, 2TB HDD
      • Graphics card(s):
      • MSI GTX 970
      • PSU:
      • Antec 650W
      • Case:
      • Big Black Cube!
      • Operating System:
      • Windows 7
    Quote Originally Posted by Artic_Kid
    I understand why the push-buffer is there (to handle the asynchrony between the two processes: CPU and GPU. Apparently the central issue involves the "graphics port", which (under the approach I mentioned previously, where the port is handled by a special DMA controller on the graphics board) would always be free. That is, any data thrown at the graphics port by the CPU would immediately be snatched up by the DMA controller on the graphics board -- so the CPU would never have to "wait". Rather, the CPU just throws the commands at the graphics port as fast as it can, and the DMA controller will keep up. This requires zero overhead for the CPU. Also, since the graphics would be maintaining the push-buffer, the GPU could begin processing it whenever it is ready, rather than have to "wait" for the push-buffer to be brought-in in its entirety. I see this approach as a win-win situation for the CPU & GPU.

    If I understand you right, you're saying there's something about the graphics port that (under the approach I suggested) would cause it to be slow and thereby cause the CPU to "wait". I don't yet see that as the case. Can you see my reason why?
    The graphics port is the PCI-E or AGP bus. They are slow. What causes it to be slow is the design of the bus. They are slow because that's how they are designed. Unfortunately making very low latency busses of that nature is expensive and difficult, so it's just not going to happen.

    Note, that you don't have to fill a full frame of data or such before moving data from the push buffer to the GPU. It's common to start the DMA as soon as possible so that the GPU can be reading from the buffer well before the CPU has completed writing the frame's data. The only restriction is that if the GPU catches up to the CPU it will have to stall until the CPU generates more commands.


    Quote Originally Posted by Artic_Kid
    ]So the current approach actually has 1 (or 2 with SLI-AFR-mode) levels of buffering on the CPU side, plus another level of buffering on the GPU side -- for up to three levels of buffering. While I'm suggesting (perhaps yet naively) the elimination of buffering on the CPU side, and one level of buffering on each graphics card.
    More levels of buffering isn't neccessarily slower. Stuff is moving through all these buffers in parallel, the overall effect is to hide the disparities in latency of the various parts of the system such that it's faster overall.



    Quote Originally Posted by Artic_Kid
    It is my understanding that the PCI-express bus (unlike the traditional PCI bus) is a dedicated point-to-point bus, where the CPU speaks directly to the graphics card with no other contingencies or delays to worry about. Under that arrangement, and with the DMA controller on the graphics board like I mentioned, I don't see how this could possibly be slower than the current approach -- that is, the CPU simply throws data at the graphics port as fast as it can, and it all works with no "waiting" and no delays. Is there something about the PCI-express bus that I'm not understanding here?
    PCI-E is not zero-latency. It's a bus like most others - to start a transaction takes a fairly large amount of time. Once the transaction is started the data will flow very quickly. this is why buffering up lots of commands is good - it allows you to have nice large bus transactions to minimise the amount of hit you take for starting transactions.

    Quote Originally Posted by Rys
    You guys are pretty much forgetting the graphics driver here, from what I can tell, in your discussion on how GPU's communicate during multi-GPU rendering. The current approach isn't CPU -> buffer -> GFX Port -> FIFO -> GPU, unless buffer = driver and GFX Port goes away.

    As for PCI Express, it's high latency. So high bandwidth (or you'd think so given the spec), but starting a bus transaction and getting the first bits of data to something on the other end of the bus is lots of cycles. Kind of sucky when doing real-time 3D.

    So forget the CPU just DMA'ing to the graphics hardware on its own, or via a buffer, unless you mean via the driver too, which is keeping the command stream in system memory, and is preparing and storing other data at the same time.
    The push buffer is managed by the driver, so yes buffer = driver in my description. By GFX port I basically mean the PCI-E or AGP bus.
    The command stream kept (by the driver) in system memory is called the push buffer.

  2. #50
    Rys
    Rys is offline
    Tiled
    Join Date
    Jul 2003
    Location
    Abbots Langley
    Posts
    1,479
    Thanks
    0
    Thanked
    2 times in 1 post
    Quote Originally Posted by Butcher
    The push buffer is managed by the driver, so yes buffer = driver in my description. By GFX port I basically mean the PCI-E or AGP bus.
    The command stream kept (by the driver) in system memory is called the push buffer.
    Cool, I'm on the same page as you now
    MOLLY AND POPPY!

Page 4 of 4 FirstFirst 1234

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 5
    Last Post: 15-03-2005, 04:21 AM
  2. Molex connectors on graphics cards
    By YorkieBen in forum Graphics Cards
    Replies: 5
    Last Post: 07-02-2005, 12:46 PM
  3. Dual Monitor Graphics Card
    By hibby in forum Graphics Cards
    Replies: 4
    Last Post: 20-12-2004, 01:09 AM
  4. XFX dual dvi 6800GT corrupt graphics
    By KDH in forum Graphics Cards
    Replies: 4
    Last Post: 17-10-2004, 06:16 PM
  5. Does my graphics card supports dual monitors???
    By icp222 in forum Graphics Cards
    Replies: 10
    Last Post: 31-08-2004, 01:11 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •