PC progression

My parents’ old e-Machines PC died on them yesterday, and I helped them setup the new PC, also an e-Machines. The old one was whatever e-Machines was selling for $399 3.5 years ago, and the new one is what e-Machines is selling for $399 today.

There has been surprisingly little progression.

The case was, in all substantive details, physically identical. The only differences I noted were slightly different stickers, a different color LED for the power button, and the new case was a very slightly darker shade of black (though perhaps the old case had just faded).

I didn’t go over the specs in detail, but they were rather similar. The CPU had moved from a 1.8 Ghz to an AMD 3000+ (i.e. sorta 3.0 Ghz), but that 66% improvement in ~42 months pales in comparison to the old standard of 100% improvement every 18 months or so.

The CD/RW was now a combo DVD reader with CD/RW capabilities, and there was now an 8 in 1 memory card reader (for camera cards). There were probably minor improvements in video card/chip and perhaps HD size, but they’re moot for my parents and I didn’t look closer.

The OS (Windows XP) was the same.

I suspect rates of improvements will slow even further in the years ahead. Manufacturers seem to have given up on CPU speed improvements and instead are touting multi-core processors. But the programmer in me knows that adding a second processor will not double the effective horsepower of your PC - most of the time it will feel like a ~10% improvement. Going from 2 to 4 processors yields even smaller benefits.

[Borrowing an anology I read somewhere]

From Wilbur and Orville’s first airplane flight in 1903, to the Apollo moon landings in 1969 (i.e 66 years), there was an almost hockey-stick like growth in air/space flight capabilities. The future seemed to promise more of the same. As a boy in the 70s, I read fantastic predictions of 10,000 people living on a space station by the year 2000. But, as we all know, air/space flight improvements slowed dramatically from 1970 onward. Modern jumbo jets are certainly more efficient than the 60s era jets like the 707, but the improvements are only incremental. And in space, needless to say, little from the last 35 years has really surpassed, or even equalled, Apollo and the 1969 moon landings.

The computer industry started with ENIAC in 1946. We are now 60 years old, almost as old as the air/space industry at the top of it’s arc in 1969. I suspect that in 40 years, my children and grandchildren will mark this time period as the one in which the geometric growth in computer capabilities finally started to slow down. I don’t think computers will stop improving, and they’ll probably improve much more over the next 40 years than airplanes have over the last 40, but still, the ‘golden era’ is over.

14 Responses to “PC progression”

  1. Dan O'Connell Says:

    Actually at the Microsoft PDC, Herb Sutter and several other people hammered home the idea that the “free lunch is over”. CPU’s are not going to get faster per se, but are going to add more cores. Writing your app multithreaded was a point made several times over. If you are running many apps at the same time, multiple cores help, but if you do not multithread your app, it won’t seem to run any faster on future computers.

  2. Phil Steinmeyer Says:

    In the old days, steady increases in CPU speed made your apps faster without any extra effort from the programmer.

    Unfortunately, the new model ‘more cores, but the speed of each remains static’, requires:

    1) A program that lends itself to multi-threading. Sure, a few small parts of almost all significant programs can be broken off into separate threads. But overall, the amount of such processing which lends itself to such multi-threading, as a portion of overall computing performed, is small, IMO.

    2) A programmer with the tools (i.e. Language), skills, and time to implement good multi-threading. This is even more of a rarity in my opinion than #1.

    As a result, I stand by my statement that adding a second core, NOW, probably only boosts performance for most users/tasks by ~10%, and that’s mainly because of the ability to shift entire programs/processes onto the second core (i.e. other background Windows tasks), not because of individual programs that are well multi-tasked.

    As programmers get a better grasp of multi-threading and more of a push to use it, there will be a SMALL additional improvement, overall.

    Certain apps, for which performance is more critical and certain problems more parallel-izable (made up word), will see more gain from multi-core (i.e. games, some scientific work).

  3. euplayer Says:

    I dunno, If airplanes were 66% faster every 42 months, that would transform the aviation industry. I also think larger HDs, more RAM, and the routine addition of DVD drives to the cheapest budget PCs represent greater improvement than one sees in 42 months in most products. And of course it should be noted that the CPI has not been level in the last 42 months - in real terms, this is a cheaper computer than the one purchased 42 months ago.

    No, its not like the high flying times when Moore’s Law was firing on all fours. That may have spoiled folks. Its still a product where improvements at the same or lower price point are routine, even if those improvements are no longer dramatic.

  4. Phil Steinmeyer Says:

    If I thought the progression rate was going to stay at ~65% improvement every 42 months, then I’d agree with you.

    But my inkling is that EFFECTIVE speed improvements will be much smaller than that in coming decades.

  5. Phil Steinmeyer Says:

    Just to be more clear, 65% improvement every 42 months equals (adjusted for compounding) ~15.4% improvement annually.

    100% improvement every 18 months equals ~58.7% improvement annually.

    So, by comparison on this simple measure, the rate of annual improvement has dropped to about a quarter of what it was just a few years earlier.

    And the road map for near-term future CPU improvements shows things probably getting flatter in years ahead - again, with the push for multi-core, which sounds splashy (TWICE as many CPUs as your old machine!) but in fact has a quite low impact on effective speed (in my opinion).

  6. Steven Rokiski Says:

    In terms of a user running ONE application on a normal windows desktop machine with NO applications running in the backround, and lets imagine that app is a big and hungry one like office, yeah, a bonus 10% or so on common tasks is what you get by going dual CPU.

    If your parents are running software like your common antivirus solutions, these sit in the backround always scanning memory, always looking at incoming web traffic on the integrated firewall, etc. This takes a lot of cycles. This is exactly the sort of thing that going dual cpu is going to help with. Granted, on a windows machine, I/O is still a bigger bottleneck with such software, because of win32 kernel issues with DMA (not always using it). Thus, disk writes hurt extra because you’re hitting the BIOS for disk writes, freezing the whole system with a hardware interupt. Adding more memory to prevent paging alleviates most of this problem.

    Most adult users seem to use 1 program at a time, but the generations who have grown up with computers multitask- a lot. My neice isn’t particularly computer literate, but I’ve never seen her use a computer without 6 different applications running the foreground, with multiple backround tasks (downloading files, ripping CDs, mp3 player, rss feeds, etc.).

    Also keep in mind that OSes (let alone applications) have never really been optimised for multiple cpus outside of the CS research community. Techniques do exist for getting high performance across multiple (and many, 8+) cores, but they’ve never been implimented in a production environment. Expect the XBox 360 to change that; and since the 360 has a non-power-of-two number of CPU cores (3), there will probably be a bit of new computers science generated by dealing with that.

  7. Phil Jordan Says:

    I think the main progression in the future will be on the software and usability side of things, rather than raw power. For example, ever more portable computers - I have a feeling tablet-PC like things are going to be big once someone figures out a use for them.
    There have been plenty of demonstrations that software has lots of potential to become more usable and generally better, and the idea is certainly spreading as far as I can tell.
    I don’t know if there’s an aviation analogy to be made, but from my point of view, this is where it’s going. It might even be related to the fact that ‘the free lunch is over’ - (we) developers are having to write better, more thought-out software.

    ~phil

  8. StGabe Says:

    To a large extent I think that the huge growth in CPU’s was becoming a non-issue anyway. We don’t need more CPU speed these days, what we need is more memory bandwidth, which has been growing at a slower pace. Multithreading just exacerbates this. Sure, get 4 threads running on 4 cores. The CPU time may be “free” because of the extra cores but you now need to move around 4 times the data and that’s going to be the real show-stopper.

  9. Phil Steinmeyer Says:

    Another thing is that there have been few NEW apps in the last 6-8 years that are real CPU hogs. Yes, all types of programs have gotten a bit more bloated and slow, but that’s because they can, not because they must. And there are specialty apps that can use the CPU.

    But games, for instance, are much less of a CPU driver these days, as more people are playing the high-end 3D games on consoles and using their PCs for lighter weight fare (including casual games). And to the extent that CPU busting games ARE still out there (i.e. 3D shooters, WoW, etc), they’re bound much more by graphics card than by CPU, in general.

    Otherwise, the last few years have seen a lot more web-type things, and a lot of music-type things. Neither of those are very CPU bound. Video, maybe, but that’s still more a question of bandwidth than CPU, for the most part.

  10. Mike Rozak Says:

    I disagree with your claims that there’s no use for additional cores.

    For one, when CPUs reach (about) 8 cores, you’ll find that suddenly graphics accelerators aren’t needed, since 8 non-optimized CPU cores should match an optimized GPU.

    In early 1990, speech recognition could only be done on a DSP. Then came the Pentium with floating point, and speech recognition was done on that. DSP cards for PCs disappeared (not that there were many in the first place). A DSP is still faster at FFTs, but it doesn’t really matter. Cost/flexibility tradeoffs for the user means that they’ll go for the cheaper solutions, which will ultimately be CPU-based rendering.

    Music synthesis used to be done on a DSP too, although it wasn’t called that. It was called a sound card with 16-voice polyphony. Now-a-days, unless you buy a high-end sound card, the synthesis is done on the CPU. Sound cards used to do MPEG decompress, but now its all CPU.

    Furthermore, as graphics quality gets better (aka: ray tracing), you’ll find that GPUs, which are vector processors, don’t do any better than CPUs.

    Of course, if you’re writing casual games, none of this matters… unless your casual games start using 3D, speech recognition, music synthesis, etc. Even then, you won’t have to worry much about multithreaded code yourself.

    Another note: Dual-core computers came out Q1 2007. Quad-core computers will be out around Q1 2007 (as far as I recall), doubling once every 24 months instead of every 18.

  11. StGabe Says:

    I’m not sure that putting graphics processing onto CPU cores is a big win. Even graphics processing these days is bound by the memory heirarchy. Not just RAM but cache. If we see a doubling of RAM and cache sizes and speeds every 18 months then I think we’d be in business.

    Have you written much parallel code? Having done so I can say two things:

    1) It’s very hard. Programming even a simple task in parallel to get even a two-time speedup can be a huge chore.

    2) For most problems there are natural bounds to how much parallelism you can harness before communication overhead, memory bandwidth and dependencies lock you down. If you can’t get the data to your processors, or can’t do anything on all your other processor until one processor finishes then it doesn’t matter how many processors you have.

    This is why the next gen consoles aren’t that much of an improvement over the last gen. They have lots of processing power across lots of cores. However they provide only marginally better memory size/bandwidth than the past generation. They can crunch a lot of numbers, if and only if they could actually get those numbers to the cores, which they can’t, and performance is only slightly better than the past generation.

  12. Nick Harris Says:

    I have a couple of thoughts on this. First of all eliminating the graphics cards from PCs is not what you should expect to see from the market. In fact you will see is the exact opposite. As CPU speeds level off what you will see is more modularization, The next big thing is cards for physics processing becoming mainstream, and also then possibly AI decision making cards and who knows what else the possibilities are endless. I think it’s an awesome area of expansion to let different functions be performed by different cards, I think in the future you will see these cards be embedded in motherboards, the same way that cheap graphics and sound cards are now, but for the true power users I think the upgradeable cards will continue to be way to go.

    I think the 360 and other next-generation consoles will see a huge difference graphically in the future due to their isolation of tasks. (IE processor one processing graphics, processor two spending more time then previously allowed for brilliant artificial intelligence, and processor three focuses on audio and managing the other two.) You are judging the next-generation consoles on the first games released for them. The first games rarely take full advantage of a new consoles potential.

    Thirdly, I agree that writing programs to operate this way is difficult for old hacks like us who learned on single processors, but I think as new programmers are taught on multi-core processors, and classes in colleges focus more closely on this, it will become a more intuitive and second natured ability for most programmers of the future. Also side-note I think there will be many more extensions to graphics APIs, compilers, coding languages that will take advantage of the multi-core processors in the furture.

  13. StGabe Says:

    For what’s worth I’m a young programmer who took courses on distributed and parallel computing. You’re not talking about learning a new API, getting comfortable with threads or just learning some new algorithms. The challenges endemic to computing in a distributed fashion make any software project intrinsically much more complex and difficult.

    There are two problems with, “brilliant AI on one core, audio on another core and graphics on a third.” The first is that one process will almost always dominate all other processes and so the extra cores will be idle most of the time while the entire game is bottlenecked by the most expensive process. The second is that each of those tasks is going to be consuming lots of memory, both RAM and cache. Depending on how you set things up you may actually slow down the entire process by distributing it just because you your distributed cache isn’t too slow for whatever your bottleneck operation happens to be at the moment.

    The bottom line is that distributed/parallel computing is a lot less useful in practice than it sounds. To get really good results requires both a problem that is amenable to parallel processing (and a lot aren’t) and endless fine-tuning. And even then there are many problems where more processors won’t help at all (a lot of tasks are just far too sequential).

  14. Mike Rozak Says:

    StGabe - Yes, I have done lots of multithreaded programming. And, yes, graphics, notably ray tracing, does very well in a multi-cpu/core system. It’s much more math intensive than memory intensive. I have a multithreaded ray tracer now, and it does slow down with each additional core, but not that much. However, I agree that a single memory pool for many processors is a failure point; I wouldn’t be surprised if at some point that each processor (with N cores) is given its own bank of memory.

    Nick Harris - Having experienced and even participated in just such hype 15 years ago about how every computer would have a DSP, I don’t believe you, and I don’t think you have considered the issue in full. Special processors are disliked by consumers because they end up costing more (since each has its own memory, bus, small OS in each, etc.). Special processors are disliked by developers because they have to write code for them, especially since the special processors usually require assembly coding to maximumize their speed.

New comments are disabled.