Are Computers Still Getting Faster?
What is keeping up with trends, and what stalled.
It looks like CES is starting to wind down, which makes sense because it ended three days ago. Now that we're mostly caught up, I found a new video from The 8-Bit Guy. He doesn't really explain any old technologies in this one. Instead, he poses an open question about computer speed. He was able to have a functional computing experience on a ten-year-old Apple laptop, which made him wonder if the rate of computer advancement is slowing down.
I believe that he (and his guest hosts) made great points, but also missed a few important ones.
One of his main arguments is that software seems to have slowed down relative to hardware. I don't believe that is true, but I believe it's looking in the right area. PCs these days are more than capable of doing just about anything in terms of 2D user interface that we would want to, and do so with a lot of overhead for inefficient platforms and sub-optimal programming (relative to the 80's and 90's at the very least). The areas that require extra horsepower are usually doing large batches of many related tasks. GPUs are key in this area, and they are keeping up as fast as they can, despite some stagnation with fabrication processes and a difficulty (at least before HBM takes hold) in keeping up with memory bandwidth.
For the last five years to ten years or so, CPUs have been evolving toward efficiency as GPUs are being adopted for the tasks that need to scale up. I'm guessing that AMD, when they designed the Bulldozer architecture, hoped that GPUs would have been adopted much more aggressively, but even as graphics devices, they now have a huge effect on Web, UI, and media applications.
These are also tasks that can scale well between devices by lowering resolution (and so forth). The primary thing that a main CPU thread needs to do is figure out the system's state and keep the graphics card fed before the frame-train leaves the station. In my experience, that doesn't scale well (although you can sometimes reduce the amount of tracked objects for games and so forth). Moreover, it is easier to add GPU performance, compared to single-threaded CPU, because increasing frequency and single-threaded IPC should be more complicated than planning out more, duplicated blocks of shaders. These factors combine to give lower-end hardware a similar experience in the most noticeable areas.
So, up to this point, we discussed:
- Software is often scaling in ways that are GPU (and RAM) limited.
- CPUs are scaling down in power more than up in performance.
- GPU-limited tasks can often be approximated with smaller workloads.
- Software gets heavier, but it doesn't need to be "all the way up" (ex: resolution).
- Some latencies are hard to notice anyway.
Back to the Original Question
This is where “Are computers still getting faster?” can be open to interpretation.
Tasks are diverging from one class of processor into two, and both have separate industries, each with their own, multiple goals. As stated, CPUs are mostly progressing in power efficiency, which extends (an assumed to be) sufficient amount of performance downward to multiple types of devices. GPUs are definitely getting faster, but they can't do everything. At the same time, RAM is plentiful but its contribution to performance can be approximated with paging unused chunks to the hard disk or, more recently on Windows, compressing them in-place. Newer computers with extra RAM won't help as long as any single task only uses a manageable amount of it — unless it's seen from a viewpoint that cares about multi-tasking.
In short, computers are still progressing, but the paths are now forked and winding.
The prime reason is market
The prime reason is market saturation coupled with legacy support. Once everyone had a PC manufacturers started to lower prices more quickly in order to continue to grow. Clearly that couldn’t continue indefinitely so the manufacturers also invested their R&D budgets into technology for growing markets; namely mobile computing. As you say, this means power efficiency improvements and not necessarily performance improvements.
Now the mobile market is becoming saturated too the manufacturers are looking for a new market. The ‘Internet of Things’ and smart watches are their current consumer based proposals. Extremely cheap, small, power efficient chips with very little performance demand. While FPGA-CPU hybrids are coming for the server market – the aim being power efficiency and performance in a specific individual task.
CPU performance prospects look grim. At least Intel continues to push process nodes smaller, has placed large cache chips on some CPUs and has developed XPoint while AMD also keeps trying to make GPU compute and HSA mainstream. But these things are all developed with power efficiency or cost lowering in mind rather than breaking raw CPU performance records.
The drop in clock
The drop in clock speeds/processing power is dew to Intel’s netbook, and ultrabook/mobile market laptop initiative SKUs, and the abandoning of the laptop as a desktop replacement mantra of the previous generation laptops that where not like the ultrabook/Apple thin and light laptops! The market needs some more powerful laptops SKUs for those that need the power, instead of the much underpowered ultrabook/thin and light SKUs that all laptop OEMs are currently building. It looks like the current gaming laptops are probably the closest SKUs that approach in ability what the old regular form factor laptop as a desktop replacement SKUs of the past could provide in raw laptop processing power.
I think that for those that want a more powerful laptop the future is going to be the gaming laptop, as with the new graphics/compute APIs like DX12 and Vulkan, and AMD’s/other’s HSA foundation initiative there will be more compute done on the GPU, compute that used to be only available via the CPU is now able to be accelerated on the GPU.
AMD’s APU on an Interposer, and Intel’s thunderbolt 3 with its ability to drive externally connected GPUs will also help laptop users. The interposer technology as advanced by AMD is going to lead to some very powerful APUs that can have their separately fabbed CPUs wired up more directly to separately fabbed and more powerful GPUs for future high power laptop/mobile SKUs.
It may not be the CPU’s declining power growth curve that contributes to the rapid growth of computing power anymore, but instead it will be the GPU as an all-around graphics/compute accelerator via Vulkan/Dx12, and HSA compute, that will enable home computing to continue to grow its raw processing power at a rapid pace. A lot of the slowing of growth in home compute can be explaned by most people moving from desktop PCs to laptops, and then to netbooks and Ultrabooks/Thin and Lights, and maybe things like APUs on an interposer with HBM, and TB3 connected external GPUs for laptops will help to reverse the declines in raw processing power for home computing.
Even the open source software like libreOffice is using OpenCL to accelerate spreadsheet calculations on the GPU, the same for the proprietary office suites. Future word processing programs will accelerate spell checking/grammar checking on the GPU for much better/faster results.
I think you vastly
I think you vastly overestimate the amount of people that need more computing horsepower than modern laptops provide.
The shift has been towards low-power computing because consumers just don’t need all the extra horsepower. Nobody cares about GPUs except gamers.
“Nobody cares about GPUs
“Nobody cares about GPUs except gamers” – That’s very inaccurate. A lot of scientific workloads have been coded to run on GPUs, because you can get a lot more throughput with GPUs than CPUs.
In the future, I’d expect to see non-gamer consumers benefit from powerful GPUs as well. Really parallel tasks like image editing (where each pixel is independent) could benefit from GPUs.
Also, some consumers do need the extra horsepower. For example, I’d love it if my code would compile faster.
Yeah, even beyond high-end
Yeah, even beyond high-end workloads, a lot of 2D content, like Web and user interfaces, are heavily reliant upon the GPU these days. Video decode, too.
No, Scott, you don’t
No, Scott, you don’t understand. Anonymous clearly said, “Nobody cares about GPUs except gamers.” Obviously that means you’re wrong, because obviously, nobody but gamers care about GPUs. No matter what software developers have figured out how to do better on GPUs.
Nobody but gamers care about GPUs.
Nobody.
So stop trying.
No you don’t understand that
No you don’t understand that GPU compute is used extensively in mobile tablet/phone devices, and also in PC/Laptops, just look at the support for OpenCL and now Vulkan/DX12 and see. There are a lot of applications that accelerate workloads on the GPU, and even more will do so with the Vulkan/similar APIs, and the HSA foundation’s software that is used from mobile to supercomputers. You do not understand computing, especially GPU computing, and how the modern OSs, and API’s will utilize the GPU, DSPs, and FPGAs even in consumer devices!
The CPU has always been upstaged by the GPU for graphics workloads, and the CPU is being upstaged by the GPU for general purpose compute also. Hell AMDs ACE units get even more CPU like with each successive generation/update because that’s where a lot of the serious number crunching is going to be done. The software market will be increasingly relying on GPU acceleration for even grammar and spell checking, in addition to spread sheet software acceleration. Voice recognition and object tracking/facial recognition will become more available, including language translation done on PC/laptops. CPUs are still relevant for running the common OS housekeeping tasks but many of the other workloads will be done on the GPU.
“Nobody but gamers care about GPUs”, what cave/mother’s basement have you been living in! There are plenty of people that care about GPUs in their Phone/Tablets/laptops/PCs and supercomputers, those exascale supercomputers will not be able to do any exaflops FP number crunching without GPUs(Vector Processors)!
GPUs are the computing devices with the most performance per watt, not CPUs!
Actually, totally the
Actually, totally the opposite is true. High end GPUs like GK110 and GP100 are designed for use in supercomputers and servers FIRST, and then they get turned into a desktop gaming card as an afterthought.
In total computers are
In total computers are getting slower cause of software. Android is great example. Today most apps are written using very high level libs to have nice animated look. Programming language also, Java. C# is also slower but all this makes possible for everybody to make an app. Take a look at today software – animated crap. SkyPe for example!
I always remember my self (and others) writing self modifying software on Apple 2 to save some RAM. Unfortunately, today even IoT devices run Linux on very powerful CPUs. Reason? Time to market and “incompetent” developers.
Most people use their
Most people use their computers for web browsers and such. There is a huge difference between an old static web page and a modern, ad-heavy web page. Using a machine with limited resources, it becomes quickly apparent when you hit an ad-heavy page. For Apple mobile devices with only 1 GB of memory, these pages can use up all of the available resources easily. You could have a huge number of scripts running, animations, and video. I remember browsing the “web” back in the 90s when an Apple PowerPC was new and 16 MB was a lot of system RAM. It was obviously almost all plain text then, with a few low res images.
The languages used are going to make some difference, but I don’t think they are that large of a part of the performance drain. I think it is mostly just the content. I have really been tempted to run ad blockers on the lower powered machines. I have often seen web pages peg a CPU on my desktop machine due a bad script. It would be nice to be able to leave JavaScript disabled, but most pages depend on it heavily even for basic content. I think this is probably unnecessary in some cases. I definitely have plugins set on disabled by default and only enable them if absolutely necessary. Flash is a huge waste of CPU cycles and a huge security risk. It also seems to take a lot more resources than other formats when playing in a web browser. I need to look up how to get twitch to not use flash.
Another thing is that playing video in a web browser takes a huge amount more processing resources than it should. If I am playing a YouTube video in Chrome on Linux, it might take 70% of one core and 40% of another. If I play the same network stream in VLC, it might take only 30% of one CPU on my i7-920. It isn’t the languages used causing the performance difference, it is the overhead of running inside a browser. It adds a bunch of interface layers and overhead.
Yes, you have right and this
Yes, you have right and this is exactly what I’m referring to:HTML is ‘programming’ language and today there is a lot of apps using web pages for ‘local’ usage. For example Box PC app is HTML. Guess what happens if there is no Internet?
You can build up high-level
You can build up high-level libraries even in languages that have the ability to do low level programming. This is like AMD’s switch from the Microsoft .net framework to QT window toolkit. Is the QT application framework really that much “lower level” than the .net framework? I wouldn’t think so, although I have no experience with .net. QT has the advantage of using all natively compiled code, which will speed up the start-up significantly and perform better in general. Whether something is interpreted or compiled to native code is somewhat orthogonal to whether it is “high level” or “low level”.
This may be mostly semantics, but I don’t think that higher level languages are the problem. The split between “high level” and “low level” seems somewhat meaningless anyway. I have worked with perl and ruby a lot, and it can be significantly slower, depending on how you write the code but that is more due to running it as interpreted language rather than the “level”. If you basically use perl or ruby as glue to stick together a bunch of built in function calls, then it will perform very well. The functions you call in perl just call into native, compiled C or C++ code. There is start-up overhead for the perl interpreter though. I haven’t worked with Microsoft .net at all, but I assume it has large start-up overhead given the differences between AMD Catalyst and Crimson.
I would argue that there isn’t much difference between a low level language with a bunch of high level libraries and a supposed higher level language. The usual difference is that supposed higher level languages are often interpreted rather than compiled. When you start using a bunch of media, you generally ain’t really doing any processing on it in the interpreted language, you are just passing it around, and calling functions which are often implemented in native code. With things like playing video in a browser, you get hit with overhead of passing the data around between many different levels, which probably accounts for the performance hit. With the plugin running as a separate process, you will get overhead for passing the data via IPC. Security concerns will prevent efficient implementations in some cases also.
Once we get proper support for WebGL, this will allow JavaScript to be the glue with calls into WebGL functions which will run in native code with hardware acceleration. This will not perform as well as 100% native code, but it should work well as long as you don’t do any heavy processing in the interpreted portions. With something like C++, you obviously can do low level programming, but a lot of consumer applications are mostly just a GUI with little actual heavy processing or custom data structures going on. In that case there is little difference between C++ and a supposed higher level language.
I ran into a case where someone wanted to use a parser written in 100% C code (hand coded state machine) rather than an available parser in Perl. The perl based parser was implemented in C++ using lex and yacc and was available as a function call in perl (compiled module). The perl based system would be considered “high level” by almost any definition. The perl based parser was also about 20 times faster than the old C code. If you can use a “higher level” language to string together a bunch of highly optimized code, then it can be a big win over reinventing the wheel in a low level language.
Well explained in Tron
Well explained in Tron Legacy:
“What’s new in OS 10? We have 10 on the box.”
Computers are getting faster.
Computers are getting faster. Just not consumer level computers.
Why? Server and supercomputer chips and architectures still NEED to be 2-10x faster per generation and ARE.
Consumer level desktop and laptop CPUs havent improved and with Nvidias failure to release a GPU on a new node, GPUs have stagnated too recenntly.
In the supercomputer space, HBM, HMC, optical interfaces, massively increased core counts(10 cores in 2011 to 18 cores in 2015) and XPoint will keep making servers and supercomputers faster.
Meanwhile, consumers are more interested in IoT junk and mobile stuff so theres no reason to cater to the shrinking PC market. High end GPUs are designed as supercomputer accerators FIRST, then they get turned into GPUs for desktops.
I don’t know if that is true.
I don’t know if that is true. There was some cross-over for a little while, but that will not be true going forward. GPUs for games need a massive amount of FP32 processing power and very little FP64 performance while most HPC requires almost entirely FP64 and very little FP32. GPU makers will be making specialized parts for the HPC market. Nvidia already does this. They reduced the FP64 performance on their consumer GPUs down to 1/32 of FP32 since all of the FP64 hardware was just wasting power and die space on the consumer parts. With the FP64 units removed, they can fit more FP32 hardware on die. They can also charge a high price premium for FP64 hardware. Take a look at the price of an Nvidia Tesla compute card vs. a consumer level card.
I was using a 2006 Mac Book
I was using a 2006 Mac Book Pro up until recently. It was a 2.16 GHz core2duo with 3 GB of memory and an ATI 128 MB x1600 graphics card. It would bog down if I opened a lot of tabs at once, but this was mostly due to the small amount of memory, not the CPU. It started crashing recently due to problems with the GPU. With an SSD in it though, it was very usable. If you could connect more and faster memory up to the CPU and more memory for the GPU, it would probably work great. That is, the actual CPU core is probably plenty fast enough for most applications.
There is a fast enough for CPUs. For most applications, the bottleneck is not the CPU these days, it is the GPU. Most general use applications do not stress the CPU that much. Unless you are using ridiculously large spreadsheets, the CPU is probably crunching more numbers to display the GUI than it is to actually compute values in the spreadsheet. Most of the perceived slow down of modern systems is due to useless eye candy and advertising in my opinion. I loaded up Ubuntu on an old i7-920 recently, and it was not a good user experience since it has an old 256 MB graphics card. I ended up using Lubuntu (light-weight GUI) instead because I have no need for eye candy in the OS. I don’t run my computer for the OS, I run it for the applications. I also have been noticing just how much memory and processing advertising heavy web pages take. It has gotten to somewhat ridiculous levels. You can probably use a significantly lower powered machine if you are running an ad blocker. There is a huge difference between an old static web page and a modern web page that could be running hundreds of scripts, animations, and video. I run Chrome on my Linux box because I can just leave the machine and web browser running; I just run a script to kill all of the renderers so they don’t eat up CPU power running scripts and stuff. I can just reload pages as needed then.
The people who think that CPUs have been focusing on lower power just due to mobile demand are probably incorrect. It has become very hard to push single thread performance. All of the low hanging fruit was picked a long time ago. Making the CPU wider and such just doesn’t work. At this point, CPUs are just about more memory hierarchy than anything else. Latency, which is a big limiter on single thread performance, is a lot harder problem to solve than bandwidth. If they did build a bigger, fatter core, it would probably perform the same since it would be bottlenecked by the cache and memory latency. Modern CPUs have all kinds of features that attempt to work around this like branch prediction and pre-fetching. In my opinion, Intel has been in the lead due to better cache design probably more than anything else.
CPU cores are also still heat limited, even when the total power isn’t that high. When I tried to come up with a size for a CPU core based on a broadwell die photo, I came up with around 10 square mm. This isn’t that surprising given the size of the chip. About half is GPU, and large portions are taken up by the system controller and memory interfaces. Ten square mm is only a little over 3 mm on a side. This is absolutely tiny. We are running this tiny CPU core at ~4 GHz. That is a lot of heat to get out of a tiny area.
Sure, a computer two decades
Sure, a computer two decades ago, or a decade ago, ran it’s UI at about the same speed as a modern computer in terms of responsiveness. But a computer two decades was doing less. A LOT less.
My low-mid-range laptop (original Thinkpad Yoga) is right now:
– Hosting a browser session with abut 300 tabs open (most of which require decryption to display)
– Continuously checking multiple email accounts
– Managing a WiFi connection
– Downloading about 1GB of video to watch later (youtube) including remuxing
– Updating software in the background
– Performing on-the-fly backups of data in use via Shadow Copy
– A whole host of other background tasks
Two decades ago I had an Amiga A1200. 10 years ago I had an Optiplex with PIII (via a Slocket adapter, remember those?). If I’d tried to run my current workload on one of them they’d laugh at it, transition into a fit of coughing and burst into flames.
Most of pc issue are caused
Most of pc issue are caused by one choice made about a decade ago. Lets replace tsc. Lets default to lapic.
Personally, I think the SSD
Personally, I think the SSD has made the biggest leap in performance from a user’s perspective. For example, the obscene amount of disk i/o that Windows insists on doing during boot up doesn’t interfere with user experience in the SSD era. I do believe that software has become bloated to the point where it eliminates a portion of performance gained through hardware technology improvements. It is amazing how useable older machines running the software they had at the time — the same machines couldn’t even run a modern browser.