I am currently working on CUDA, DirectX. I want to know the data flow architecture of GPUs. The one presented for CUDA and DirectX are parallel programming model and graphics pipelines respectively. But, I want to know the data flow architecture (like, the data flow architecture of 8086 processors).
-
Could you link to something that describes the "data flow architecture of 8086 processors"? I don't see what you mean by that. – Mat Sep 09 '12 at 10:02
-
Ya sure. In 8086 processor there are registers, flags, address bus, data bus and all. And, the diagrams show the data flow from one unit to another. In GPU, we have Vertex, Geometry, Pixel Shaders and others. How does the data flow in each of these, deep inside the hardware? – Fr34K Sep 09 '12 at 11:48
-
Careful of your definitions. "Data Flow Architecture" refers to a fundamentally different form of architecture that is completely different to the Von Neumann architecture used by x86 processors family (that includes the 8086). http://en.wikipedia.org/wiki/Dataflow_architecture – Martin York Sep 10 '12 at 03:42
-
Thanks for the clarification. In 8086 architecture diagram, it shows the registers, program counters and stuff. What is the structure of Vertex, Geometry and Pixel Shader in GPU? That's my question – Fr34K Sep 10 '12 at 12:40
1 Answers
You're making the mistake of assuming that GPU architectures are as well-defined and consistent as CPU architectures; this isn't the case. GPU architectures can and will vary between different manufacturers, and can and do vary even between different hardware generations from the same manufacturer.
What APIs model is a graphics pipeline, which describes at quite a high level how the various stages interact. A recent example (for D3D11) may be viewed here: http://msdn.microsoft.com/en-us/library/windows/desktop/ff476882%28v=vs.85%29.aspx
Microsoft also publish register specs for D3D versions; for example the specs for vs_3_0 are here: http://msdn.microsoft.com/en-us/library/windows/desktop/bb172963%28v=vs.85%29.aspx
Both of these are still at a fairly high level and are API-specific rather than hardware-related. As explained above, there is not going to be any single set of hardware-specific info. Even if there was, you would not be able to make use of it as modern operating systems disallow direct access to hardware, and even if you could, any code you write making use of it would have a high risk of not being valid on other manufacturer's hardware, or on other hardware from the same manufacturer.
That's one of the reasons why graphics APIs exist - because all hardware is so different it's just not possible to meaningfully and usefully access the hardware at a lower level. In other words, the kind of info you're asking for is something that you shouldn't have to worry about - that's the job of the API and driver; you worry about your own code.

- 1,498
- 10
- 11
-
Ya, i know that. What you are trying to say. But, taking for nvidia for instance, it has a single architecture for a range of products like Fermi, Kepler. The architecture inside them is same. One can access it using the graphics pipeline. What i am asking is the architecture showing the address bus, data bus, stacks and all. Its related to hardware. – Fr34K Sep 11 '12 at 17:29
-
NVIDIA don't publish their architectures - it's a trade secret. – Maximus Minimus Sep 11 '12 at 17:34
-
They patent the architecture right? I found some on google patents. I havent got time to go through them. I'll check and answer soon. – Fr34K Sep 11 '12 at 17:36
-
Maybe they do patent it and maybe they don't, but it's certainly proprietary and unpublished, which is not the same thing. – Maximus Minimus Sep 12 '12 at 01:14