Thread: Upgrading to the new processors (more of a software ?)

  1. #1
    Registered User
    Join Date
    Feb 2009
    Posts
    68

    Upgrading to the new processors (more of a software ?)

    I'm just wondering, what is the point of moving to the new processors? I.e. Core i7

    I was reading something on-line (so I have to take this with a grain of salt), and the guy was saying that moving to the new physical (4-core) logical (8-core), was like getting twice as many people pregnant to have a baby faster - it's just not going to work.

    Can anyone confirm this?

    So basically, I'm just wondering - why can't 1 program be run through all of the cores, so it gets executed fast(er)? I just started looking at the system monitor app in linux, and noticed that 1 core (on a core 2 duo) would get to 100%, and the other one would stay at ~10%. What I really need is a processor that can move this crap faster.

    Are programmers(companies..) working on code so that programs will get run through the entire processor, instead of just 1 core at a time? Any idea when this code is going to be used cooperatively with the new processors?

    One thing I did notice - is that when I build my next computer, I may as well just build one with the new hardware, all of the core 2 crap is hardly being bought. Not to mention I would like to play some games on the pc (free DLC).

    I don't know how many people keep up with hardware "stuff", because I used to - just in the way of knowing how to build them, not how the "stuff" worked. I'm just now trying to learn how software interacts with hardware.

  2. #2
    and the hat of sweating
    Join Date
    Aug 2007
    Location
    Toronto, ON
    Posts
    3,545
    Quote Originally Posted by madmax2006 View Post
    So basically, I'm just wondering - why can't 1 program be run through all of the cores, so it gets executed fast(er)?
    Your program probably isn't multi-threaded.
    "I am probably the laziest programmer on the planet, a fact with which anyone who has ever seen my code will agree." - esbo, 11/15/2008

    "the internet is a scary place to be thats why i dont use it much." - billet, 03/17/2010

  3. #3
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    Quote Originally Posted by madmax2006 View Post
    I was reading something on-line (so I have to take this with a grain of salt), and the guy was saying that moving to the new physical (4-core) logical (8-core), was like getting twice as many people pregnant to have a baby faster - it's just not going to work.
    I don't know what the context of that statement was, but it seems plain wrong.

    One can argue if an application isn't developed to take advantage of multicore processors the application isn't going to use more than 1 core for most of its operations. Many applications are developed just like this. However, the comparison the author of that argument uses doesn't apply, because the application is... monogamous.

    If, on the other hand an application is developed to take advantage of multicore processors, it will employ multithreading. Assuming it is moderately well developed, the application will indeed run faster. There's no way around this argument simply because it has been proven over and over again for the past decades, from large scale enterprise applications to games and other consumer level applications. So, in this context, the application is indeed making babies faster. The problem with the author argument is that he crafted his analogy in a way that doesn't give room for this possibility (because fetuses don't grow faster if someone impregnate more people). You have to be more observant of the arguments some people use and shout Fallacy! when these type of tricks are used.

    There are some intricacies to multithreading and multicore processors, however. An application may be multithreading but not take full advantage of the technology. But these are issues that fall outside the processor real (real!) ability to provide programmers with a multithreading platform to work with. You cannot blame the processor on a task that is the sole responsibility of the programmer. It would be sort of like blaming drunken car accidents on the cars, instead of the drivers.

    One thing I did notice - is that when I build my next computer, I may as well just build one with the new hardware, all of the core 2 crap is hardly being bought. Not to mention I would like to play some games on the pc (free DLC).
    There's no "core 2 crap" as you put it. The responsibility of taking advantage of the 2 cores is that of the programmer. Not of the processor. And not all applications need, neither all programmers want, to take advantage of multithreading at all times. Most of the times in fact, they rightfully say no to multithreading. Simply because it's not needed.

    And just because an application takes the full 100% of a single core at some time, doesn't mean that application requires multithreading either, or that the costs involved in applying multithreading will outweigh any benefits for both the programmer and the user of the application.

    "Running faster" is not always an observable feature that can justify any measures. How exactly do you observe a difference of .2 seconds when you click two buttons that display a window? From the point of view of the user of that application the .2 second delay in displaying the second window is never observed. This easily translates to the programmer as "don't bother with it". They can still bother, but what for exactly?

    There may be circumstances that require a clinical eye into deciding whether or not multithreading will be necessary, like lengthy sequential operations that require the user to wait or the system to become unresponsive until they are finished. Put into context however, what most programmers come to realize is that a large number of these situations don't require, or cannot have, multithreading. Let the user wait because it's acceptable they do. On other situations multithreading is just obvious and is already established, like game development or weather prediction. These situations do not stop the user from waiting, they just move the threshold further high. But do not be mistaken, there are also a lot of applications that use multithreading and that offer no real advantage at all, where on many modern systems they would still fly on one core.

    I don't know how many people keep up with hardware "stuff", because I used to - just in the way of knowing how to build them, not how the "stuff" worked.
    I don't. Shortly after the Pentium I slowly started to disconnect myself from hardware news and keeping an eye on its developments. Kind lost interest in it and shifted instead to a more mundane and practical approach to computers and programming. As you keep learning about programming and accumulate knowledge, the "how things work" side of the question will get richer and richer. It will be your choice if "how things are and how they will become" is something you want to keep an eye out. Personally, I don't.
    Last edited by Mario F.; 02-25-2010 at 09:24 AM.
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

  4. #4
    l'Anziano DavidP's Avatar
    Join Date
    Aug 2001
    Location
    Plano, Texas, United States
    Posts
    2,743
    I echo all that which Mario F. stated.

    In addition:

    madmax2006, You seem to prefer clock speed/rate over cores. In reality, There is so much more that contributes to your program's running speed than the processor's clock rate. You might say, "I'll take the single core Pentium 4 with the 3 GHz clock rate over the quad core Core i7 with the 2 GHz clock rate, because I think it will run faster!", but in reality the Core i7 probably has a better bus speed, can handle working with faster memory, has a larger and faster cache, and has better optimizations in relation to pipelining and branch prediction...not to mention the 3 extra cores. (Please note that I did not actually look up processor specs for that example).

    Truthfully...the processor's clock rate is really only one of many factors that combine to form the overall performance of a processor...and that's true for the amount of cores the processor has as well.
    My Website

    "Circular logic is good because it is."

  5. #5
    Registered User C_ntua's Avatar
    Join Date
    Jun 2008
    Posts
    1,853
    Just to add one more think on what Mario F. said.
    Suppose you had a 6 GHz CPU. And a dual-core CPU, each core on 3 GHz. Everything else more or less the same. Then, yes, the first one will be faster. So you have to think that they don't just increase the clock's speed because it is not that simple. It generates more heat for example.
    So, when thinking of multi-cores CPU is most like thinking of "how to speed CPUs w/o increasing clock rate". Not that "multiple cores are better than single cores".

    Note also that if you run 2 programs your OS can run each program at each core of your dual-core. So even if the program itself doesn't support multiple cores, your OS can help utilize the multiple cores. So you could run a heavy program w/o "freezing" your whole system.

    In the end think that you don't really get to choose that much. As DavidP said there are a lot of factors that make a CPU fast. And some of those factors are upgraded with each new models. A company won't give you the choice of a modern single-core version of its latest CPU model for you to choose.
    If you have the choice of one CPU with 2 cores and another with 4 cores and everything else is the same, then you can see what programs you run usually. If they use only one core go for the 2 cores.

    Finally, performance is one factor for a "good" CPU. Energy spent is another one. Heat generated can be another one as well if you plan to overclock, which would be easier in a low clock rate multi-core CPU (I believe) than a high clock rate single core one.

  6. #6
    Internet Superhero
    Join Date
    Sep 2006
    Location
    Denmark
    Posts
    964
    Quote Originally Posted by C_ntua View Post
    Finally, performance is one factor for a "good" CPU. Energy spent is another one. Heat generated can be another one as well if you plan to overclock, which would be easier in a low clock rate multi-core CPU (I believe) than a high clock rate single core one.
    If a high clock rate is the aim of the overclock (As it often is), then a single-core is the best way to start out. If overall higher performance is the aim, then the question becomes whether or not the target app is multithreaded, overclocking doesn't change much really.

    All overclocking records in place have been set with single-core processors or multi-core processors with only one active core. Good results with absolute clock rate or relative clock rate (relative to the stock clock) are not suitable on multi-core CPUs.

    Edit: Each CPU core is very different when it comes to overclocking capabilities. In a quad-core for example, one of the cores might not be able to reach more than 3.3 Ghz, while the other three would almost do 4.0, this limits the entire CPU to 3.3Ghz. The best way to go is to get the best possible single core. Multi-cores are simply more unstable when overclocking due to the difference in the cores.
    Last edited by Neo1; 02-26-2010 at 07:30 AM.
    How I need a drink, alcoholic in nature, after the heavy lectures involving quantum mechanics.

  7. #7
    C++まいる!Cをこわせ!
    Join Date
    Oct 2007
    Location
    Inside my computer
    Posts
    24,654
    Multi-cores are usually more overclockable than single cores because they really are underclocked already to fit the TDP.
    Quote Originally Posted by Adak View Post
    io.h certainly IS included in some modern compilers. It is no longer part of the standard for C, but it is nevertheless, included in the very latest Pelles C versions.
    Quote Originally Posted by Salem View Post
    You mean it's included as a crutch to help ancient programmers limp along without them having to relearn too much.

    Outside of your DOS world, your header file is meaningless.

  8. #8
    In my head happyclown's Avatar
    Join Date
    Dec 2008
    Location
    In my head
    Posts
    391
    I had thought about starting a thread asking how many cores are necessary before it becomes superflous for pretty much everybody, including gamers/power-users. I suppose the question is not entirely off-topic in this thread.

    'Twas reading about Intel/AMD releasing 6-12 core CPUs in the near future. Is that overkill? When will it end?

    I'll be sticking with my P4 single-core for at least another 2-4 years.
    OS: Linux Mint 13(Maya) LTS 64 bit.

  9. #9
    C++まいる!Cをこわせ!
    Join Date
    Oct 2007
    Location
    Inside my computer
    Posts
    24,654
    Of course it's not overkill. And it will never end. Not in the near future, anyway.
    More demanding calculations, games and programs require more beefy processors. Think 8 cores is overkill? Think again. Video encoding can bring even the newest, best and fastest processors to their knees.
    That said, the number of cores you need is proportional to what you want to be doing.
    However, I would recommend everyone to at least use dual core. It's more ergonomic and makes your system more responsive. Dump that crappy P4 and get a real processor made in this century.

    Thinking about the P4 makes me think about the Atom and the Atom makes me puke.
    Quote Originally Posted by Adak View Post
    io.h certainly IS included in some modern compilers. It is no longer part of the standard for C, but it is nevertheless, included in the very latest Pelles C versions.
    Quote Originally Posted by Salem View Post
    You mean it's included as a crutch to help ancient programmers limp along without them having to relearn too much.

    Outside of your DOS world, your header file is meaningless.

  10. #10
    and the hat of sweating
    Join Date
    Aug 2007
    Location
    Toronto, ON
    Posts
    3,545
    It seems like processors have reached their top speed at about 3GHz, so the only thing left for them to do is add more cores. I've got a quad-core and my total CPU usage rarely goes past 10-15%. Although I don't do any gaming or other really CPU intensive things.
    "I am probably the laziest programmer on the planet, a fact with which anyone who has ever seen my code will agree." - esbo, 11/15/2008

    "the internet is a scary place to be thats why i dont use it much." - billet, 03/17/2010

  11. #11
    In my head happyclown's Avatar
    Join Date
    Dec 2008
    Location
    In my head
    Posts
    391
    I do want a multi-core machine, but I can't find a reason to get one.

    This P4 exceeds my needs. I just did the most extreme thing ever on this machine: ran antivirus, played a DVD in the optical drive, and surfed the net/did office work all at the same time. There were one or two moments where the DVD sound was briefly jerky, but otherwise, it all ran to my satisfaction.

    I had recently upgraded the CPU from a Celeron, and with the Celeron, when I was running the AV, the computer virtually became useless for everything else. Even internet browsing was almost impossible with just the AVG running.

    But damn, I do drool over the multi-cores.
    OS: Linux Mint 13(Maya) LTS 64 bit.

  12. #12
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    I do want a multi-core machine, but I can't find a reason to get one.
    Hmm... that's an odd statement. There's no reason to upgrade if there is no reason to upgrade. But you have a reason. You want to upgrade.

    And then there's the issue of you finding no reason. I mean, you can say that all you do, you have been doing fine on your single-core. And I can understand that. One doesn't need much to program in C++. And even less if under Linux. But you can't find any reason?

    - For one, you can fool around with multi-threading and hyper-threading and see the results on the correct platform. Since thread programming is an area that you will eventually grow an interest on, a single-core CPU is at a serious disadvantage for testing purposes.

    - Virtualization is an excellent way to test certain type of software. Networking software or portable software, for instance. Current virtual machine clients take full advantage of multi-core processors, not to mention hardware virtualization that is not supported by any single core CPU that I know of. Trying to run a VM with a modern operating system on a single-core is already a complicated task. Much more when one is expected to debug software from there.

    Those are two examples. Not to mention, you know, prices. You can get a complete dual-core system (with no monitor) for... what? $400?
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

  13. #13
    Registered User
    Join Date
    Dec 2006
    Location
    Canada
    Posts
    3,229
    I have been using a 1.4ghz ULV Core 2 Solo (~equiv to 2.8ghz P4) single core CPU on my laptop for the past year or so.

    Honestly, I don't feel any difference most of the time. Compilations take a little longer, VHDL routing takes forever (about 3 minutes for my few hundred lines of code), and of course no gaming. But other than that, the system is very responsive under Linux (Vista and 7 are a little laggy, but turning off eye candies should fix that), even when I am doing all those CPU-intensive stuff in background. I guess modern schedulers are better than they used to be. Even virtualizing a Windows box to run a circuit simulation program (CPU intensive) felt not too bad (battery life went down the drain, though - 4 hrs down from 10 hrs).

    My desktop is a Core 2 Duo overclocked to 3.3ghz. But in day-to-day usage, I can't feel any difference at all. The laptop actually feels faster because it has a SSD.

  14. #14
    Registered User C_ntua's Avatar
    Join Date
    Jun 2008
    Posts
    1,853
    happyclown does have a good point though. Not everything depends on the processors, thus for some tasks a P4 would be more than fine. For surfing a higher connection would be more desirable. So one can spent those $400 into buying a faster internet connection (at least for a few months) and probably be happier. Maybe more memory if he is the "never close windows or tabs" guy.
    The rule I believe is don't buy things you don't need. If you need them then buy them. So if you are drooling on something, but you feel you don't need it, I would agree with happyclown not to buy it. At one point you might feel that you need an upgrade. Then buy it. Time is usually in your benefit. Newer models come out, the old ones go cheaper.
    But if your drool is a lot, then you can still find something cheap and multi-core and do things faster. Just be warned that there is no turning back afterwards...

  15. #15
    C++まいる!Cをこわせ!
    Join Date
    Oct 2007
    Location
    Inside my computer
    Posts
    24,654
    Quote Originally Posted by cpjust View Post
    It seems like processors have reached their top speed at about 3GHz, so the only thing left for them to do is add more cores. I've got a quad-core and my total CPU usage rarely goes past 10-15%. Although I don't do any gaming or other really CPU intensive things.
    For now. The problem is that the processor gets too hot inside where cooling cannot reach if they bump up the speeds.
    But when we get cube-like processors where cooling technology intertwines it like a maze, you can be sure they will ramp up the speeds.
    But for now, it's the core race.
    Quote Originally Posted by Adak View Post
    io.h certainly IS included in some modern compilers. It is no longer part of the standard for C, but it is nevertheless, included in the very latest Pelles C versions.
    Quote Originally Posted by Salem View Post
    You mean it's included as a crutch to help ancient programmers limp along without them having to relearn too much.

    Outside of your DOS world, your header file is meaningless.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Software Development. Other costs.
    By Mario F. in forum General Discussions
    Replies: 5
    Last Post: 10-24-2009, 11:34 PM
  2. Software Design/Test - Redmond, WA
    By IRVolt in forum Projects and Job Recruitment
    Replies: 2
    Last Post: 06-11-2008, 10:26 AM
  3. Why C Matters
    By DavidP in forum A Brief History of Cprogramming.com
    Replies: 136
    Last Post: 01-16-2008, 09:09 AM
  4. Adding trial period to software
    By BobS0327 in forum C Programming
    Replies: 17
    Last Post: 01-03-2006, 02:13 PM