3 ms·
> "increasing cache or writing better algorithms will make things faster" There are performance ceilings on those as well. Best case scenario we come up with a
by ZenoArrow 9y ago
> "increasing cache or writing better algorithms will make things faster"
There are performance ceilings on those as well. Best case scenario we come up with a new architecture that is more efficient than the current ones (something built around reconfigurable chips could be ideal). However, we will eventually reach a point where computers don't get significantly faster. Maybe it takes 20 years, maybe it takes 30 years, but there will come a point where that happens.
- HankB99 9y ago> However, we will eventually reach a point where computers don't get significantly faster. Help me understand why. Even if individual computational units cannot get faster, can we not benefit from additional computational units? I know that these don't scale linearly but I suspect there remains work that can be done to improve scaling. Isn't that where GPUs get their computational power?
- throwaway2048 9y agotons of algorithms and software don't run any faster with more cores. Plus each core has a n+1 cost associated with it, whereas with how scaling worked previously you got better performance for cheaper because of size decreases. The most significant cost in making an ASIC is the silicon wafer, which is extremely expensive, so anything that uses it more efficiently [ less space] makes things cheaper, faster (easier to keep a faster clock synced over a small area), and use less power (less power means you can go faster too, because you have more power/head headroom for cranking clock speeds). Scaling by going smaller is extremely synergistic, and has super exponential performance impact, whereas in the very best case adding more cores is linear, and in almost every real world case, sub linear. It also costs more, not less. The fact is baring major breakthroughs, we are stuck with roughly today's level of performance for the foreseeable future.
- carlmr 9y ago>The fact is baring major breakthroughs, we are stuck with roughly today's level of performance for the foreseeable future. Maybe finally we stop wasting hardware and use the supercomputers we have in our pockets for greater things. Another thing to consider is that memory access is still the most prevalent speed problem. If we can work on these bottlenecks we can still get significant performance increases without actually increasing CPU performance that much.
- pcwalton 9y ago> tons of algorithms and software don't run any faster with more cores. > The fact is baring major breakthroughs, we are stuck with roughly today's level of performance for the foreseeable future. That's obviously false. Otherwise graphics wouldn't get any faster when you add more GPU cores, to name one common embarrassingly parallel problem. Our software is just really bad at making use of those extra cores. Measure real-world use cases with a well-tuned work stealing engine and you'll see how much performance we're leaving on the table. (Source: I wrote the first version of possibly the largest consumer deployment of a major software component backed by a work stealing engine.)
- ZenoArrow 9y ago> "Isn't that where GPUs get their computational power?" GPUs get their power from being able to execute multiple calculations in parallel. Rendering a 3D scene is something that lends itself to being processed in parallel, for example on a simple level you can have different cores each rendering a different section of the overall image (tile-based rendering is one example of an approach that benefits from this: https://en.wikipedia.org/wiki/Tiled_rendering https://en.wikipedia.org/wiki/Tiled_rendering ). The GPGPU uses of GPUs (i.e. non-graphics uses) also take advantage of this parallel processing power. The issue is, not all computing workloads are easy to split up into smaller workloads that can run in parallel. Some workloads are easiest to manage sequentially. For example, consider some code that had a lot of conditional logic (such as "if" statements), where the code executed depended on validating a condition was met. What advantages would you gain from running this code in parallel?