# CPU Advice



## Twitchtail (Jul 27, 2008)

Well, I'm looking at getting a new computer, mostly just as a gaming machine. I was wondering if I would be better off getting a quad-core 2.5 or a dual-core 3.16. My understanding of the situation is that I'll get better performance from a dual-core now, but in the future I'll get better performace from then quad-core when more games will support streaming across the cores. Am I correct or am I mistaken?


----------



## Pi (Jul 27, 2008)

Probably.


----------



## delFur (Jul 27, 2008)

Personally, since I've had bad luck in the past with quads and heat, I'd go dual core.  By the time the majority of games actually utilize more than 2 cores, you'll be wanting another upgrade.

This is of course assuming you want to upgrade right now.  I myself am waiting for Intel's Nehalem in 2009.


----------



## Twitchtail (Jul 27, 2008)

Yeah I want to upgrade soon as I get the cash. My current computer kicked the bucket, I'm posting from my father's computer.


----------



## jayhusky (Jul 27, 2008)

Id go dual core as quad cores on some of the pc's I've used are power hungry little buggers and you can put them under a lot of stress at anyone time.


----------



## Twitchtail (Jul 27, 2008)

Hmmm. I was rather leaning towards a dual-core. The system I'm looking at getting is:

CPU: Intel Core 2 Duo, 3.16 Ghz
Motherboard: Gigabyte S775 Core 2
RAM: 4GB Geil 1066Mhz
HDD: 500GB Seagate
GPU: Gigabyte GTX 260

Any thoughts?


----------



## markwhitewolf (Jul 27, 2008)

delFur said:


> Personally, since I've had bad luck in the past with quads and heat, I'd go dual core.  By the time the majority of games actually utilize more than 2 cores, you'll be wanting another upgrade.
> 
> This is of course assuming you want to upgrade right now.  I myself am waiting for Intel's Nehalem in 2009.




Do tell, what's the word with Intel's new set of chips?  I'm rather awaiting a stable and power-sipping quad for laptops before I upgrade again...though that may push me outside of my typical upgrade cycle.  In the end, I'd be willing to stay with a dual-core next year if I was going to see significant performance gains over my current chip (Penryn T8100) which I optioned into my HP the week they began offering it.

I've come to find increasingly that it's a whole lot less about the numbers and a whole lot more about the performance of the chip and memory for use with Vista.  I'm sure that the combo that I have would be fantastic for XP, but in Vista I'm already noticing small lags here and there, and I have the laptop maxed out as far as RAM goes.  I sure hope the new version of Windows is less of a ram muncher than Vista is, and that the memory leaks are plugged with subsequent service pack rollouts.


----------



## Ackart (Jul 27, 2008)

My core 2 quad (Q6600) is running at 104 right now with none of the cores above 95f, and this is WITH a horrible stock Dell cooler. 

My friend's AMD Quad Core on the other hand, well, you could fry an egg on. But it also sucked power like no other and underperformed in everything. 

Quad Cores in general are rather nice. And if you can afford it, why have two when you can have four?


----------



## delFur (Jul 27, 2008)

markwhitewolf said:


> Do tell, what's the word with Intel's new set of chips? I'm rather awaiting a stable and power-sipping quad for laptops before I upgrade again...though that may push me outside of my typical upgrade cycle. In the end, I'd be willing to stay with a dual-core next year if I was going to see significant performance gains over my current chip (Penryn T8100) which I optioned into my HP the week they began offering it.


 
With the new chips, Intel is bringing back Hyperthreading from the old P4's.  I'm thinking I can get a really really low watt dual core to replace the quad I have now with little perfromance change.  Intel is also promising a replacement for the frint side bus with something comparable to AMD's hypertransport.  A few of the $1000 chips will be out at the end of the year... though I'll certainly be waiting a bit for something cheaper.



Ackart said:


> My core 2 quad (Q6600) is running at 104 right now with none of the cores above 95f, and this is WITH a horrible stock Dell cooler.


 
You my friend, have been blessed.  I idle at 55C with watercooling.


----------



## Dragoneer (Jul 27, 2008)

Frankly, if you're going to go dual-core the E8500 3.16Ghz is your single best bet for a processor. It's blazingly fast, it's a great overclocker, and while quad-cores ARE badass, few games can really use them yet.

Take this from a hardcore gamer.

As for graphics cards, as much as I may be an Nvidia fan, you would be FAR better off getting a 4870 graphics card. It costs the same, and is faster than the GTX 260.

Oh, and in just a few months (September/October) Intel is going to release their new chips that are 20 to 50% faster than the current fastest Core 2. That's a great build now, and it'd server you damn well. But unless you need it right away, it may be worthwhile to wait.


----------



## fastturtle (Jul 30, 2008)

Some questions to ask yourself:

1) Do you plan on overclocking?
2) Why a Single Drive?
3) 32 or 64 bit (XP or Vista)

#1 - If you plan on Overclocking - check the Overclocking sites and see what offers the best bang for buck - Otherwise, I'd say go with the E8400 or 8500 Wolfdale as both are pretty efficient CPU's (65watt ratings) - means they'll run cool and not need a Turbine to cool them down - Price difference betwen them is minimal but may not be worth it based on a less then 200Mhz speed difference (minor overclock will easily hit that)

#2 - Must have multiple drives - Install OS on one and stuff like saved games/porn/music on the other (80-120 for OS install)
Much nicer if Windows pukes on you because you still have everything else unless it's a virus that wipes drives

#3 - Unless you're going with Vista64 don't spring for more then 2GB of budget ram even if you plan on Overclocking (stick with Kingston/Crucial/Corsair) and you should be able to overclock to a reasonable amount (what does the motherboard support?)

Everyone always suggest going with the fastest most expensive Gaming RAM yet most boards are only certified to work with specific types of ram and I Highly Recommend checking the boards memory certification (it'll surprise you). In this regards the Budget lines of Kingston/Crucial/Corsair will serve you well while still offering some Overclocking ability.


----------



## harry2110 (Jul 30, 2008)

Twitchtail said:


> Well, I'm looking at getting a new computer, mostly just as a gaming machine. I was wondering if I would be better off getting a quad-core 2.5 or a dual-core 3.16. My understanding of the situation is that I'll get better performance from a dual-core now, but in the future I'll get better performance from then quad-core when more games will support streaming across the cores. Am I correct or am I mistaken?


It will take a few years before the quad core would be fully utilized as most games are just starting to recognize dual-cores that have been out for many years now.


----------



## Runefox (Jul 30, 2008)

The only problem with the "just starting to recognize dual cores now" argument is that if an application can be split between two processors, not much extra work is required to multithread them across more than two, since the foundation is already laid.


----------



## hiphopopotimus (Jul 30, 2008)

Twitchtail said:


> My understanding of the situation is that I'll get better performance from a dual-core now



The majority of games that I have tried this year still rely heavily on a single core. And clock speed is still important.


----------



## Dragon-Commando (Jul 31, 2008)

If a program is built for hyper-threading, or duel CPUs, then it will work with dual core systems, but not quad core.

Its not as simple as telling the program it has two more threads to play with, you have to re-write entire sections of code to utilize more than the 2 threads you had with hyper-threading.

People don't seem to understand how the system works, and make silly assumptions that it's easy to go from 2 to 4. It's as hard to go from 2 to 4 as it is to go from 1 to 2 threads. You have to work out what is going to be done with each thread and still keep compatability with single thread CPUs, this means a lot of code just to control what gets done by each thread.

now on topic.

If you are going to get a new rig, I would listen to Dragoneer, I haven't kept up with the latest CPUs, but I will say that he is dead on with the 4870.

I have one of the earlier cards in the HD series, a 2600, realy not a bad card, but it brings up something else you should watch. That is, compatability.

The biggest thing you have to work out is if everything is compatable with everything else, I didn't do this when I upgraded last, so my 2gb kingston ram worked fine, since my MB is built for it, but my AGP bus (LOL if you must) doesn't seem to like my HD2600, so it crashes constantly.

Make sure everything is compatable, if you can't find something that says it is, make sure you can't find something that says it isn't also.


----------



## hiphopopotimus (Jul 31, 2008)

Dragon-Commando said:


> People don't seem to understand how the system works, and make silly assumptions that it's easy to go from 2 to 4. It's as hard to go from 2 to 4 as it is to go from 1 to 2 threads. You have to work out what is going to be done with each thread and still keep compatability with single thread CPUs, this means a lot of code just to control what gets done by each thread.



Mutex for the lose.

But seriously, this is what we pay code monkeys for, if they cant figure out at least duel core multithreading scenarios then we aren't starving them enough.


----------



## Pi (Jul 31, 2008)

Dragon-Commando said:


> If a program is built for hyper-threading, or duel CPUs, then it will work with dual core systems, but not quad core.
> 
> Its not as simple as telling the program it has two more threads to play with, you have to re-write entire sections of code to utilize more than the 2 threads you had with hyper-threading.



Credentials and source, please?

If you're doing threading and locking properly, then no, threading happens for free, no matter how many cores/CPUs. You're at the mercy of your OS's scheduler, but those have been written to target n-cpu systems for years.



> People don't seem to understand how the system works


People like you.


----------



## Runefox (Jul 31, 2008)

Dragon-Commando: Optimizing a program for dual core processors in effect allows for the same program to benefit from three or four cores in the same way as it would with two. If an application can be split into two threads, it is trivial to make that three or four, though ensuring that those threads are actually doing something meaningful is the hard part. Separating a single-threaded application across cores is fundamentally not going to happen; However, you can therefore have multiple single-threaded applications running at a time, with minimal performance impact (in the form of cache latency, memory usage, front side bus frequency/HT level). That, right now, is the biggest draw for quad core processors.

Right now, dual core processors are all that are "supported" because really, nothing right now uses a dual core processor efficiently, because we aren't seeing applications designed from the ground up to be split into threads. We're seeing applications calling a second thread to perform secondary tasks (for example, having most of a game's programming take place on one core, and having audio playback and input take place on the other), but we aren't seeing applications specifically designed to share their processing load across more than one CPU in a meaningful way.

Once common programming standards evolve to do this natively, we will see a performance increase based on the number and power of a CPU's cores. As of right now, it's far easier to program for a single-threaded application and create other threads as convenient for a slight performance increase. I would contest that most people wouldn't see a difference for most modern software if they were to disable all but one core of their CPU, except in general system responsiveness (as Windows/*NIX automatically shares resources across all available cores, hence why quad core systems tend to be extremely responsive no matter what is being thrown at them).


----------



## Dragon-Commando (Aug 1, 2008)

Have you ever done programing? Its not as simple as that, you have to write alot of code changes to account for the extra threads.

Lets look at a basic program.

If you have 4 units in your program, each unit has to run sequentialy in a single threaded application, sometimes you re-use a unit multiple times.

In a duel thread application you can now run 2 of those units at a time, thus giving you the chance to do 2 functions at the exact same time. BUT you still have to be able to run them sequentialy on single threaded systems, so the units have to be writen differently. Also, the resault of each unit may be used by another unit, so you need to store this, or pass it on. either way, it uses memory. This brings up the question of which units to run on which thread, because you can't run a unit at the same time as the one it needs the output from.

Now if you go to quad core, you can run all 4 units at the same time
But they still have to end up sequentialy doing thier part, so you get the same resault. This requires even more modification to the program, again with the possibility that you could have to re-write whole units, or even add some.

Sure you can make easy modifications to a program to get it to "use" multiple threads, but it would be a hack together job at best. to optimize it you need to re-write alot of code to get the process to be efficient and not a waste of memory.

We are talking a single application here though, so its a single process, if you run multiple processes, then of course its going to automaticaly scale onto the extra cores. But single and duel threaded applications will still only work on one or two threads unless they are extensively reworked.


----------



## Pi (Aug 1, 2008)

Dragon-Commando said:


> Have you ever done programing?



You obviously haven't.



> Its not as simple as that, you have to write alot of code changes to account for the extra threads.



You do not. If you are accounting for threads in general, the presence or absence of cores is not a relevant subject as far as the application developer is concerned. It then becomes the OS's problem to schedule those threads as effectively as possible.



> Lets look at a basic program.
> 
> If you have 4 units in your program, each unit has to run sequentialy in a single threaded application, sometimes you re-use a unit multiple times.



Pascal/Delphi developer much?



> In a duel thread application you can now run 2 of those units at a time, thus giving you the chance to do 2 functions at the exact same time. BUT you still have to be able to run them sequentialy on single threaded systems, so the units have to be writen differently. Also, the resault of each unit may be used by another unit, so you need to store this, or pass it on. either way, it uses memory. This brings up the question of which units to run on which thread, because you can't run a unit at the same time as the one it needs the output from.



Put the joint down before you go to your operating systems class. The rest deserves no response.



> Now if you go to quad core, you can run all 4 units at the same time
> But they still have to end up sequentialy doing thier part, so you get the same resault. This requires even more modification to the program, again with the possibility that you could have to re-write whole units, or even add some.
> 
> Sure you can make easy modifications to a program to get it to "use" multiple threads, but it would be a hack together job at best. to optimize it you need to re-write alot of code to get the process to be efficient and not a waste of memory.
> ...





Pi said:


> Have you ever done programing?


----------



## Vesuro (Aug 1, 2008)

I've got a Phenom 9600 Black Edition, outperforms my friend's C2Q 6600 on everything.

Also, Dragon-Commander is correct to a degree, if a program is written for dual core, it will only run on two cores.

HOWEVER, most (multithreaded) programs now are written with algorithms to use any number of cores.


----------



## hiphopopotimus (Aug 1, 2008)

Dragon-Commando said:


> If you have 4 units in your program, each unit has to run sequentialy in a single threaded application, sometimes you re-use a unit multiple times.



Its as easy as

pthread_create( &unit1, NULL, functionA, NULL);
pthread_create( &unit2, NULL, functionB, NULL);
pthread_create( &unit3, NULL, functionC, NULL);
pthread_create( &unit4, NULL, functionD, NULL);

That will run nomatter how many/few cores are in a computer. No extra work needed unless you plan on sharing resources between threads; Then some form of mutual exclusion may be needed.


----------



## JTur (Aug 1, 2008)

If it's strictly for gaming, then a Dual Core, high clock speed chip will be a better solution than a Quad Core, lower clock speed CPU.  If it's a DDR2 and Vista x64 based system, then definitely shell out for 4GB of RAM as well (DDR3 is still fairly expensive for low latency sticks, so I'd go DDR2 if you can - dirt cheap, and only a tiny performance hit, though it may limit upgrades in the future).  On the other hand, if it's going to be a multipurpose machine (Video encoding, photo editing, etc), then you may want that quad core chip to move things along.

As for the video card, while I hate to say it, Dragoneer is right about the 4870.  The GTX cards are great, don't get me wrong, but ATI manages to get the better bang for your buck this time around - just watch out for their bloated drivers.

Good luck on the build!


----------



## nrr (Aug 1, 2008)

hiphopopotimus said:


> Its as easy as
> 
> pthread_create( &unit1, NULL, functionA, NULL);
> pthread_create( &unit2, NULL, functionB, NULL);
> ...


Yes, and async I/O facilities exist for a reason.


----------



## nrr (Aug 1, 2008)

Dragon-Commando said:


> Have you ever done programing?


Yes.  I've written several hundred thousand lines of code commercially in my lifetime in various languages.

These days, I do scientific and distributed computing for mathematics research, so this is right up my alley.



			
				Dragon-Commando said:
			
		

> Its not as simple as that, you have to write alot of code changes to account for the extra threads.


Um, no?  On NT, it's as easy as CreateThread() and ExitThread().  I'm not joking.  The kernel takes care of the rest.

... and even then, if you're really, really into writing your own scheduler (in some cases, I wouldn't blame you), you can use CreateFiber() and ConvertThreadToFiber() and DeleteFiber().

POSIX threads are just as trivial.



			
				Dragon-Commando said:
			
		

> Lets look at a basic program.
> 
> If you have 4 units in your program, each unit has to run sequentialy in a single threaded application, sometimes you re-use a unit multiple times.


Oh, you're a Pascal kid.

[size=+2]*Get out of my pool.*[/size]



			
				Dragon-Commando said:
			
		

> In a duel thread application you can now run 2 of those units at a time, thus giving you the chance to do 2 functions at the exact same time.


This is true for _n_-threaded programs, for some natural number _n_.



			
				Dragon-Commando said:
			
		

> BUT you still have to be able to run them sequentialy on single threaded systems, so the units have to be writen differently.


The scheduler in the OS's kernel takes care of this for you.



			
				Dragon-Commando said:
			
		

> Also, the resault of each unit may be used by another unit, so you need to store this, or pass it on. either way, it uses memory. This brings up the question of which units to run on which thread, because you can't run a unit at the same time as the one it needs the output from.


OK, so you (ab)use mutual exclusions and synchronous I/O.  Big deal?



			
				Dragon-Commando said:
			
		

> Now if you go to quad core, you can run all 4 units at the same time


This is true for _n_-threaded programs.

[size=+2]*Get out of my pool.*[/size]



			
				Dragon-Commando said:
			
		

> But they still have to end up sequentialy doing thier part, so you get the same resault. This requires even more modification to the program, again with the possibility that you could have to re-write whole units, or even add some.


I've gone over this already.



			
				Dragon-Commando said:
			
		

> Sure you can make easy modifications to a program to get it to "use" multiple threads, but it would be a hack together job at best. to optimize it you need to re-write alot of code to get the process to be efficient and not a waste of memory.


You can really gleam a lot of insight as to how to do this if you learn about how mathematicians and programmers who use functional languages get around this problem.

In short, you factor everything down into smaller functions and (ab)use function composition.  You should be doing this from day one.  In the OO world, you'd probably use a fluent repeater.



			
				Dragon-Commando said:
			
		

> We are talking a single application here though, so its a single process, if you run multiple processes, then of course its going to automaticaly scale onto the extra cores.


*[size=+2]Quoted for truth.[/size]*


----------



## ShadowComet (Aug 4, 2008)

Just remember that gaming isn't the only thing you're going to do on this computer, Dual Core is fine, it will run alot of things, then wait say...6 years before you worry about upgrading, then for sure, any kinks in the quad core should be nonexistant.

Always try and run more than one "Physical" hardrive (Physical: means how many are actually in your machine. Logical: Means all partitions in your machines hard drives.)

Always run two disc drives, trust me, it helps, greatly it helps.

Lastly, make sure you have a power supply to manage it all.

Graphics enhancement isn't nesseccary in most newer factory builds, but it could hurt.


----------

