New Hardware Architectures and Software Drive Innovation in a Post Moore's Law World

cageymaru

Fully [H]
Joined
Apr 10, 2003
Messages
22,085
Turing Award recipient, RISC pioneer, Google engineer, and University of California professor David Patterson gave a talk at the 2018 @Scale Conference on how software innovations and revolutionary hardware architectures will drive performance gains in the future as Moore's Law is over. He thinks that applying optimizations to existing software languages could net a 1,000x improvement in performance, and new technologies such as machine learning will require the development of new hardware architectures and software languages. "This," he says, "is a golden age for computer architecture."

"Revolutionary new hardware architectures and new software languages, tailored to dealing with specific kinds of computing problems, are just waiting to be developed," he said. "There are Turing Awards waiting to be picked up if people would just work on these things."
 
Sounds far fetched and stupid.

Really? Development in coding language changes will replace Moore's law? I honestly just don't buy it.

I think if anything, Moore's law will be retained and we will find new ways to innovate hardware with machines and 3D printers.


I also don't think it's dead - no matter how much you want to declare it. Notice that there were plenty of times where the next innovation was slightly below or slightly above the line.

1280px-Moore%27s_Law_Transistor_Count_1971-2016.png
 

Attachments

  • 800px-Transistor_Count_and_Moore%27s_Law_-_2011.svg.png
    800px-Transistor_Count_and_Moore%27s_Law_-_2011.svg.png
    26 KB · Views: 66
That's not David Patterson! It's Jean-Luc Picard of the Federation!!! I wish these "news" outlets would get their facts straight. Jesus.


Also strange that they include all of the Motorola, MOS, etc. CPUs in the early graph, but then stop at the 68020. The 030, 040, and the 060 would start pushing up into and maybe past some of the 486 lines. The R3000 series is missing as well and starts at 4000. I know they aren't the leaps being demonstrated here, but the earlier part of the graph was much more complete as well as the later part.
 
Last edited by a moderator:
I will agree that the current way of computing, at least in the home are a bottleneck, even for current hardware. Bill gates are milking his tit for all it have never been worth.
 
Sigh.

The two points indicated in the article are already known, and in widespread use:
1) Using C/C++ instead of something like Python can dramatically increase performance
2) Using lower precision in math can also increase performance.

1 - it's already done by people who care about performance.
2 - it's already done by people who care about performance.

I am sure he had a lot of other things to say which went in a lot more depth, and touched on actual computer architecture. I hope. But those things in the article jumped out as "no shit" to me.
 
It seems like a lot of stuff these days is developed around just using the hardware to power through poorly optimized code instead of smartly using all the processing power at hand.

Say World of Warcraft for example, basically uses a single core to %100, but practically nothing on the GPU or other CPU Cores. Sure beefing up processing power will give you improvements in the game, But how bout we start properly coding things to utilize the insane capability of modern computing systems.

I've done very very basic coding in my life so I'm sure it's a huge undertaking to basically change the entire way applications are made to truly support some sort of parallel processing, but I just remember from coding classes, you could just power through the code and say "hard code" your application to get your end result, or you could smartly write the same app using half the code but taking twice as long to finish it.

It just pains me to see an application/game chugging along slowly when there's empty CPU/GPU/IO headroom sitting idle. What's the point of a 8core 16thread CPU running at 4.5Ghz when only 1 core is in use, or a 1080ti GPU barely hitting %50 usage when your game is barely hitting playable framerates. Seems to just be a lot of poorly optimized coding going on.
 
"He thinks that applying optimizations to existing software languages could net a 1,000x improvement in performance"

As we all have suspected since the inception of bloatware, most programmers are lazy - but now it's a thousand time worse. :D
 
"He thinks that applying optimizations to existing software languages could net a 1,000x improvement in performance"

As we all have suspected since the inception of bloatware, most programmers are lazy - but now it's a thousand time worse. :D

Not lazy, but forced to meet deadlines you cannot possibly hit if you are writing in a lower level language, and making an optimal design.

So, you get shitty javascript.
 
Well, in the game world, look at how something like Doom runs next to other games that came out that same year. That'll give you an idea of what's possible with optimization.
 
Turing Award recipient, RISC pioneer, Google engineer, and University of California professor David Patterson gave a talk at the 2018 @Scale Conference on how software innovations and revolutionary hardware architectures will drive performance gains in the future as Moore's Law is over. He thinks that applying optimizations to existing software languages could net a 1,000x improvement in performance, and new technologies such as machine learning will require the development of new hardware architectures and software languages. "This," he says, "is a golden age for computer architecture."

"Revolutionary new hardware architectures and new software languages, tailored to dealing with specific kinds of computing problems, are just waiting to be developed," he said. "There are Turing Awards waiting to be picked up if people would just work on these things."

Wasn't it intel that said software optimizations for Intanium? Pfffft. Good luck with that.

In terms of optimizations, The theoretical limits for things like path searching and sorting have reached their limit and these optimizations are already in use. No one has really expanded on Knuth any.

Now AI has a future. But scaling AI means scaling MIMD execution units.
 
It seems like a lot of stuff these days is developed around just using the hardware to power through poorly optimized code instead of smartly using all the processing power at hand.

Say World of Warcraft for example, basically uses a single core to %100, but practically nothing on the GPU or other CPU Cores. Sure beefing up processing power will give you improvements in the game, But how bout we start properly coding things to utilize the insane capability of modern computing systems.

I've done very very basic coding in my life so I'm sure it's a huge undertaking to basically change the entire way applications are made to truly support some sort of parallel processing, but I just remember from coding classes, you could just power through the code and say "hard code" your application to get your end result, or you could smartly write the same app using half the code but taking twice as long to finish it.

It just pains me to see an application/game chugging along slowly when there's empty CPU/GPU/IO headroom sitting idle. What's the point of a 8core 16thread CPU running at 4.5Ghz when only 1 core is in use, or a 1080ti GPU barely hitting %50 usage when your game is barely hitting playable framerates. Seems to just be a lot of poorly optimized coding going on.
For WOW, Given how old the core of the game is, it's likely to be a huge endeavor to make it properly multi-threaded. It is difficult to unroll all those internal dependencies and models, and really to what end for Blizzard? Are suddenly more people going to play because the game is better optimized? Not enough to make it worth the work.
A code base of that size can't be quickly optimized.

And true, it is painful to see that sort of thing. On the flip side, many newer games are quite adept at multi-threading. They run into rendering bottlenecks instead, so then you're going to be pissed because the GPU is super fast, the CPU is super fast, but you can't get all the geometry to the GPU in time.. it's always something.

On the topic itself, I see it as vastly overstated. Sure, there is poorly optimized software out there and sure, that would be nice if it improved. But most real production software worth its name and price is fairly well optimized. It just so happens that not all problems and workloads CAN be infinitely parallelized. I see my 4C/8T CPU under full load many times, it makes me happy, but I am sure my next CPU will rarely experience it (planning on a 12 or 16 core AMD ZEN2 next year.)

Software will catch up. I was talking about rendering backends (like DX11). Vulkan and DX12 both have improved their pipelines and workflows to better make use of modern many-core chips. It just takes a while for all that to trickle into major engines like Unreal Engine. It isn't that nobody is doing anything, it's that it all takes a while to trickle down to applications and operating systems, toolkits etc.
 
For WOW, Given how old the core of the game is, it's likely to be a huge endeavor to make it properly multi-threaded. It is difficult to unroll all those internal dependencies and models, and really to what end for Blizzard? Are suddenly more people going to play because the game is better optimized? Not enough to make it worth the work.
A code base of that size can't be quickly optimized.

And true, it is painful to see that sort of thing. On the flip side, many newer games are quite adept at multi-threading. They run into rendering bottlenecks instead, so then you're going to be pissed because the GPU is super fast, the CPU is super fast, but you can't get all the geometry to the GPU in time.. it's always something.

On the topic itself, I see it as vastly overstated. Sure, there is poorly optimized software out there and sure, that would be nice if it improved. But most real production software worth its name and price is fairly well optimized. It just so happens that not all problems and workloads CAN be infinitely parallelized. I see my 4C/8T CPU under full load many times, it makes me happy, but I am sure my next CPU will rarely experience it (planning on a 12 or 16 core AMD ZEN2 next year.)

Software will catch up. I was talking about rendering backends (like DX11). Vulkan and DX12 both have improved their pipelines and workflows to better make use of modern many-core chips. It just takes a while for all that to trickle into major engines like Unreal Engine. It isn't that nobody is doing anything, it's that it all takes a while to trickle down to applications and operating systems, toolkits etc.

a 1000x improvement in the rendiering pipe? Highly doubtful. Even with vulkan and DX12 extensions you are looking at < 100% improvement. And that's about as metal as you can get as it bypasses a lot of the traditional draw call pipe
 
a 1000x improvement in the rendiering pipe? Highly doubtful. Even with vulkan and DX12 extensions you are looking at < 100% improvement. And that's about as metal as you can get as it bypasses a lot of the traditional draw call pipe

And as you've seen - generally nowhere near 100%. Many of the wild-eyed speculation claims were assuming that not only was the render pipeline single-threaded (very common) but the code generating data for that pipeline was also single-threaded (generally VERY false).

This is setting aside the (major) issue of "who can optimize better - the IHV or the game developer". We've seen very mixed results on that. And for good reasons, which I won't reiterate here.
 
Maybe some people were't around for the twice a year computer upgrades. Celeron 300A to 450MHz for example. Yeah Moore's Law is dead. Plus programmers are more lazy than ever. Doom Engines with Inline Assembler to optimize execution speed. Never see that again either probably.
 
There is a decent bit of truth to this, over years we have relied so much on hardware to increase power output that we are getting to a point that we will have to turn to optimization more and more to make up for the fact we will lack the ability without a major breakthrough to proceed further. Programming may very well have to go through an evolutionary process.
 
Turing Award recipient, RISC pioneer, Google engineer, and University of California professor David Patterson gave a talk at the 2018 @Scale Conference on how software innovations and revolutionary hardware architectures will drive performance gains in the future as Moore's Law is over. He thinks that applying optimizations to existing software languages could net a 1,000x improvement in performance, and new technologies such as machine learning will require the development of new hardware architectures and software languages. "This," he says, "is a golden age for computer architecture."

"Revolutionary new hardware architectures and new software languages, tailored to dealing with specific kinds of computing problems, are just waiting to be developed," he said. "There are Turing Awards waiting to be picked up if people would just work on these things."

His secret ambition is to win a Captain Jean Luc Picard look-a-like award!
 
Something something Celeron 366@550 w/ Abit BM6. Anyone can see we have for a long time been at a point where our focus should have been working with what we currently have. Great things happen when we impose limitations on ourselves and are forced to do more with less. As we will again hit a wall on the limitations of software optimization, the priority flips to restructuring hardware with heavy assistance from AI...something something Skynet.
 
Great things happen when we impose limitations on ourselves and are forced to do more with less.

Seeing the difference between early and late games on early computers (C64) and consoles (SNES) as some examples, tells me you're correct. Also, I find I'm much more creative when I take one instrument, and try to squeeze a track out of it, as opposed to using everything I have at my disposal. (I design, build, and compose on synthesizers.) Trying to come up with ways to maximize what you're able to do on a limited device is not only a creative process on its own, but also gets other creative processes moving along as well in the process. This can somewhat be applied to hardware and programming even with modern hardware. It's just easier to be lazy because the hardware isn't holding us back as much now (at least for certain tasks).

Oh, throw a few more cores in there, and get a better GPU. Yay! Now we don't have to optimize anything. Just bump up the minimum requirements. :p

I used to love seeing what studios would squeeze out of aging consoles because they learned tricks, and improved their processes. They figured out undocumented hacks to make things work better than was originally thought possible. I miss seeing that sort of thing.

You should see what a good Demo coder can squeeze out of a Commodore 64 these days. It's fucking insane!

That doesn't mean I don't think hardware should keep progressing. I just think the software side has been slacking a bit. (except in certain rare cases like id Software for one)

1987 C64 Demo




2018 C64 Demo

 
Last edited by a moderator:
Love the C64 nostalgia, and the 2018 demo is really most amazing given the hardware. But that's 30 years after the first demo, and the hardware was fixed. So was the OS. We live in very different and better days with regards to hardware, I can plug in a 15 year old USB device and it'll just work. Compare that to the days of serial/parallel peripherals.

And the fact just is, hardware is short lived these days. Nobody is still on a Riva TNT2, which has insanely more power than the C64 and could be tickled for some awesome visuals. We have different screen resolutions and even number of screens, we have so much more flexibility that costs performance, but it sacrifices performance for usability and versatility in many cases, and I'm OK with that.
 
Love the C64 nostalgia, and the 2018 demo is really most amazing given the hardware. But that's 30 years after the first demo, and the hardware was fixed. So was the OS. We live in very different and better days with regards to hardware, I can plug in a 15 year old USB device and it'll just work. Compare that to the days of serial/parallel peripherals.

And the fact just is, hardware is short lived these days. Nobody is still on a Riva TNT2, which has insanely more power than the C64 and could be tickled for some awesome visuals. We have different screen resolutions and even number of screens, we have so much more flexibility that costs performance, but it sacrifices performance for usability and versatility in many cases, and I'm OK with that.


I think you missed his point.
 
I think if anything, Moore's law will be retained and we will find new ways to innovate hardware with machines and 3D printers.

3D doesn't solve any problem that he and others are adressing. We continue having the IPC/ILP wall and the frequency wall. And 3D just adds another problem heat disispation on inner dies.

We need a new material beyond silicon.

We need a new architecture beyond SS/OOO.

We need new programing paradigms more parallel and less sequential.
 
meh, it might flatten out over the next 5 - 10 years, but then once some of this revolutionizing tech starts to come out (quantum computing comes to mind), there will be a big upswing and I will bet you money if you flatten out the plot points on a graph it will follow the same growth rate again.

I definitely think we have barely scratched the surface of computing power but we have all but capped out this variant of it, kind of like the horse and carriage was the pinnacle of the transportation industry at one point.
 
meh, it might flatten out over the next 5 - 10 years, but then once some of this revolutionizing tech starts to come out (quantum computing comes to mind), there will be a big upswing and I will bet you money if you flatten out the plot points on a graph it will follow the same growth rate again.
Quantum computing only has an advantage in certain sorts of tasks. It isn't general supercomputing. There are other emerging technologies which show promise however.
 
I always thought of those C64 demos as witchcraft.

Way back when, I coded some cycling raster-bars in Turbo Assembler on the C64, and wrote some music in one of the monitors. I was never good enough to link it all into a single intro though. :D I knew a few guys in some demo groups for a while on the 64, Amiga, and early DOS PC era. The Europeans are still putting out some impressive stuff these days on PCs. A little more artistry and a little less sorcery these days, but still very cool. Some of the stuff they do in 4K or 64K of space is pretty insane.

My cousin did his coding in straight ML Monitor on the 64. Pretty nuts.
 
Last edited by a moderator:
Love the C64 nostalgia, and the 2018 demo is really most amazing given the hardware. But that's 30 years after the first demo, and the hardware was fixed. So was the OS.

That was part of my point. Given limitations, and enough time, people will figure out new and better ways to do things on the software side that were never originally thought of or intended. Maybe not 1000% worth, but significant.

As to your TNT2 reference, imagine what someone could push through that card now, if they had been stuck on it for 15-30 years. They'd find a way to squeeze more out of it through software, use of the CPU etc. The way things are these days, they never had to. There's a new GPU waiting every 6-18 months, so why bother with the software approach when you can brute force it a few months later?

I'm not against that level of hardware progress. Far from it. I do think some combination of better software methods, new APIs, looking for fancy new ways of doing similar work-loads and just some old-fashioned showing off should all be balanced into making better use of technology. If we can get results using trickery too, I'm not opposed, as long as it's not a precision application like engineering or something. :D
 
Back
Top