Non-optimized old PC games working on a new, multi-core CPU?

TheGeekyGamer

Reputable
Mar 27, 2014
1
0
4,510
Background information: Skip down if you want to just hear my question

Now I understand that all CPUs aren't created equal--and not even similar CPUs aren't created equal; but with that in mind, I'd like as general an answer as possible, if there is one.

I own several games from the "pre-multicore era" of CPUs, such as X3, Reunion, Terran Conflict, and Albion Prelude, the original Trackmanias, all kinds of games that were designed with the idea that we would eventually have 8GHz single-core CPUs. But, instead, we have quad-core CPUs and above, which, from what limited knowledge I have, is actually a better way of doing things.

That being said, I also want to play some of the "brand-new" games, such as Need for Speed Rivals, Planetside 2, GTA V (if and when it comes to PC), and others, and those clearly DO need a multi-core CPU to be used to their potential.

Background info ends here: Direct question below

My question is this: For a game that is only optimized to be run on a single-core CPU, is it possible to switch the program's priority (say in task manager or something), to only use a single core of a multi-core processor for improved performance? I know that a 3GHz quad-core is *not* the same as a 12GHz single-core...what I had originally thought was it was like four 750MHz single cores, because the processor speed would be "split" over the four cores. That was originally why I got a dual-core processor, to minimize that "split", but I see now that that is incorrect as well, and really, I've only hamstrung myself as far as performance goes. So, any and all feedback on this is welcome, like I said, can a single-core program be shunted over to a single core of a multicore processor to maximize performance, and if so, what kind of performance loss, if any, can I expect?

Thank you in advance for your time, and for reading this (I know it's a bit lengthy).


UPDATE: Thank you for all your answers--it's been quite enlightening. So, essentially, I should have gone with the quad core originally and I would have not seen any loss in performance. I do feel a bit silly now, but thanks for explaining that to me--when I have the time and money to upgrade, I'll do it and get an even better gaming experience on my PC. :)
 

spdragoo

Splendid
Ambassador
It doesn't quite work like that.

Single-core CPUs can only run 1 "thread" or process at a time. If your PC/device is running multiple applications at the same time (including games), what the operating system does is keep switching between the different applications, both in response to their processing/data needs & on your interaction with them.

Multi-core/multi-threaded CPUs are more efficient because each core (physical or virtual) is treated as a separate single-core CPU for handling applications & their data needs.

So, for example, say you have CPU #1 (single-core with a processing speed of X) & CPU #2 (quad-core, with each core being the equivalent of CPU #1 in terms of X processing speed equivalent). Let's say CPU #1 can handle 4 "simultaneous" applications before performance starts bogging down, but only 1 application process is actually being worked on at any given microsecond. Given the same setup, each of the 4 cores within CPU #2 can also handle 4 "simultaneous" applications before bogging down... but each core is handling a separate application process at any given microsecond, so it can run 16 "simultaneous" applications (again, 4 of them actually simultaneous). That's a simplified example, but essentially that's what's going on in the multi-core CPUs.

Now, since we've had multi-core CPUs for a few years now, you're starting to see applications optimized to take advantage of the multi-core units. In order to improve performance (or to provide additional capabilities for the same application speed), the applications send multiple data requests to the CPU, with each one assigned to a separate core. This gets around the old method of "to improve performance, you need more speed", & you're actually sending data for simultaneous processing.

Now, for your older games that were designed for single-core CPUs, the operating system will automatically assign them to a single core when you play the game. So as long as each core has at least the same speed as the game's requirements -- or, more importantly, as long as the multi-core CPU's single-core performance meets or exceeds the game's original requirements -- your game performance should at the very least be unchanged (& quite possibly might actually be improved).

Now, while you're running the game, you can always go into Task Manager & assign it to a particular core in the Processes tab, but that is done after the app is already running, & is only effective if there's an available core not already in use (i.e. if all cores are in use, Windows will automatically assign it to a core as needed to optimize performance). If you want a particular game to always run on a particular core without having to manually assign it every time, you have to modify the shortcut to the application and add "c:\windows\system32\cmd.exe /C start /affinity x" to the front of the shortcut's target (x = cpu core # plus 1, i.e. 1 = core #0, 2 = core #1, etc.); you'll have the Command Prompt screen flash up for a second when you run the app, but otherwise there won't be any difference.
 

navysealbrian

Distinguished
Jan 18, 2006
214
0
18,760
You're getting something mixed up. You have to do ZERO extra work to run a single threaded game optimally on a multi-core system. The OS does that by default without any input. Changing CPU affinity won't help you squeeze extra performance. More importantly, a single core from a 3GHz Core i5 will out perform a 3GHz Pentium 4. The GHz hasn't necessarily increased, but the work per cycle has. So a single threaded program will run faster on a newer CPU even if the GHz is the same. More importantly, newer CPUs like the Intel Core series have speedstep which will over clock the CPU if you are only stressing 1-2 cores, so that 3GHz CPU will now be something like 3.8 while playing a single threaded game. Unless you're running on an old CPU, single threaded performance for old games shouldn't even be a consideration.
 

vmN

Honorable
Oct 27, 2013
1,666
0
12,160
The OS is not the factor when it comes to multithreading, it is solid the application.
The OS wont split up and application and send it to multiple cores, it would need to be developed that way in the application.
 

spdragoo

Splendid
Ambassador


I never said that. Quoting myself:

"Now, since we've had multi-core CPUs for a few years now, you're starting to see applications optimized to take advantage of the multi-core units. In order to improve performance (or to provide additional capabilities for the same application speed), the applications send multiple data requests to the CPU, with each one assigned to a separate core."

In other words, I already said that the application has to be designed to utilize multiple cores for it to actually use more than 1 core at a time. Otherwise, if the application isn't set up to take advantage of a multi-core/-threaded CPU, then it still works the old way: 1 application/process/thread assigned to a single core on the CPU, with the operating systme handling the assignment on an as-needed basis unless the user specifies that they want the particular application dedicated to a particular core (either by specifying in Task Manager or by modifying the shortcut).



I was purposefully avoiding exact number comparisons. Obviously newer architectures will show speed increases even if the core speed hasn't changed (i.e. Phenom II X4 970 & FX 8320 both run at 3.5GHz, but the FX chip runs faster because of improvements in the chip design).

Guess you didn't notice where I said "with each core being the equivalent of CPU #1 in terms of X processing speed equivalent". If each core in a 2GHz multi-core runs as fast as a 3GHz single-core CPU, you say that it has the same performance as the older 3GHz chip, or that its performance is equivalent to the older chip...but you don't say that the cores run at 3GHz when they obviously only run at 2GHz.
 
Technically, the OS will load any thread to any core it wants, based on its own scheduling algorithm. Its likely though that the majority of older games do most all their work on a single thread, so most of the work ends up getting assigned to a single core. For such titles, you may see a VERY small performance bump if you force affinity to a single core, to prevent that one major work thread from jumping across cores, reducing performance due to effects on the CPU cache, but I wouldn't expect much performance benefit in doing so.