3 ms·
What you're describing actually exists, it's called Heterogeneous Systems Architecture. https://en.wikipedia.org/wiki/Heterogeneous_System_Architecture https://
by nwallin 6y ago
What you're describing actually exists, it's called Heterogeneous Systems Architecture. https://en.wikipedia.org/wiki/Heterogeneous_System_Architecture https://en.wikipedia.org/wiki/Heterogeneous_System_Architect... It's nifty, but it's generally only used as a cost saving measure, not a performance one. It does, as you mention, broaden the scope of what is a useful target for GPU compute operations.
Memory bandwidth is typically the bottleneck in GPUs. Meanwhile, the access patterns are typically very predictable. So they're able to prefetch data, so latency is generally not a problem. So GPU memory is designed to have very high bandwidth, even if it means completely tanking the latency.
On the other hand, CPUs typically always need better memory latency, and most workloads do not saturate the memory bandwidth. Unlike in a GPU, many memory access patterns are unpredictable. The bottleneck of operations that are pointer heavy tends to be limited by latency. All tree operations and linked list iteration tend to be latency limited. Languages like C#, Java, Python and Javascript where all data lives behind a pointer tend to benefit significantly from improving latency. So while improvement memory bandwidth up to a point is important, there's much more attention given to latency.