I take it modders cant mod games to run to 4 cores etc ?

Suspended
Joined
8 Jul 2006
Posts
498
I guess as I have not come across any info or downloads on the web for making oldish games run on 2 cores + is because its just not possible ??

what is the limiting factor here ?? down to the the way games are programmed ?

It seems quite simple to me that when one core is getting maxed it should auto work with the other cores could this be implemented in to vista or something ? - Nothing is that simple thou :D

Must be some way of the CPU just doing it job no matter what
 
Last edited:
I think the developers make it so that individual processes and such in the games are told to run off a certain core. It's definitely a very complicated task, one of the more difficult aspects to programming. It's why some developers had difficulty with early iterations of multicore platforms.
 
jamieuk23 said:
down to the the way games are programmed ?
Hole in one.

If a program is to be able to make full use of all cores/CPUs, it must be able to split its work load across each of them. This can generally only be done via multithreading, which can be rather difficult to implement in games.
 
DampCat said:
cant you set affinity manually? or is that not the same thing :/

That just makes one or both cores available for the application in question. Doesn't mean it's going to use both, unfortunately.
 
but lets say I want to use about 5 programes at one time like video editing downloading and burning a DVD with nero my CPU will Auto start using as many cores as my CPU has with out any type of programe code, as I am sure the CPU has its own code for workign with these programes or is it vista that decides

So in short words the game developers make sure that there game only runs with one core only and there is no programe that could be made or downloaded which could edit the way the CPU works with these games ?

quite confusing as it just seems like such a simple thing and find it hard to believe that some one hasn't come out with something to fix this :confused:

When you don't no much everything seems so simple :D
 
Last edited:
jamieuk23 said:
It seems quite simple to me that when one core is getting maxed it should auto work with the other cores could this be implemented in to vista or something ? - Nothing is that simple thou :D

Unfortunately it just isn't "that simple".

The fundamental issue is communication. Sure you could split a calculation between two cores, but the communication latencies would (in most cases) mean that the overall calculation time is longer than a single game.

Threading has to be done intelligently, with relatively independent sections of the game - for example; passing game logic to one core, sounds processing to another, physics to a third, and GFX-driver calls to a fourth. But to implement this practically and have it perform efficiently is an absolute nightmare.

Multi-threading is easier to implement in games which lend themselves naturally to parallelisation (such as RTSs where hundreds of different units have simple calculations applied to them each frame). FPS games are notoriously difficult to multi-thread, and it will most likely take a step-change in prgramming language design before we can truly take advantage of multiple cores.
 
jamieuk23 said:
So in short words the game devolpoers make sure that there game only runs with one core only and there is no programe that coudl be made or downloaded which could edit the way the CPU works with these games ?

No. It's all down to the source-code level.

If you ever do any programming (C, fortran, Pascal etc) you will understand.

It's kind of like saying "if I put another engine in my car boot, can't I just tell the car to use it as well?". Well, no - the car would need to be designed from the ground up specifically to use the two engines.
 
Duff-Man said:
No. It's all down to the source-code level.

If you ever do any programming (C, fortran, Pascal etc) you will understand.

It's kind of like saying "if I put another engine in my car boot, can't I just tell the car to use it as well?". Well, no - the car would need to be designed from the ground up specifically to use the two engines.

that little car story has made it a little more clear ;)
 
This is the thing i don't get when it comes to these new multicore processors, whats the point in getting them if most current software makes little or no use out of them?

Why can't the hardware side of things make full use of them? programmers shouldn't have to do that sort of work, hardware should be designed to use all its processing power, i just can't see why its not sorted in the hardware, it makes the multicore processors a waste really.
 
Programs are made up of threads, most games that have been released only have one (for the sake of argument just one). Thus this thread can only work on one single core, it can't be halved, half on one core half on the other.

Video/Photo/Audio programs have 2/4/8/16 threads, each working on a seperate part of the image/video/sound thus completing the whole thing quicker.

In FPS games, they currently use single threads, due to the complex nature of the games.

Simulators such as FS-X can use multiple threads to load things and do physics, AI etc, as the environment is much more "confined" in terms of what has to happen. Same with Sup Com, 1000s of unis, each of which can be split across the cores.


Edit:
Radiation said:
This is the thing i don't get when it comes to these new multicore processors, whats the point in getting them if most current software makes little or no use out of them?

Why can't the hardware side of things make full use of them? programmers shouldn't have to do that sort of work, hardware should be designed to use all its processing power, i just can't see why its not sorted in the hardware, it makes the multicore processors a waste really.


Im no programmer or hardware engineer, but you can't just split something to work across two cores and then remerge them when the work is done, because things WILL get out of sync because one core might be doing physics and graphics while the other does AI and player inputs, the 2nd core has more work to do thus getting lagged down and slower than the 1st core.


It HAS to be done by the programmers, just has to.
 
Radiation said:
This is the thing i don't get when it comes to these new multicore processors, whats the point in getting them if most current software makes little or no use out of them?

Why can't the hardware side of things make full use of them? programmers shouldn't have to do that sort of work, hardware should be designed to use all its processing power, i just can't see why its not sorted in the hardware, it makes the multicore processors a waste really.
Whilst this would be great, it's a bit like asking car manufacturers why you have to do any driving. Hardware is very, very stupid on it's own. It often doesn't even know what it is or what it can do without being told by some software, ie a programmer.
 
Very clearly explaind, Duff-Man, nice one :)

Radiation said:
Why can't the hardware side of things make full use of them? programmers shouldn't have to do that sort of work, hardware should be designed to use all its processing power, i just can't see why its not sorted in the hardware, it makes the multicore processors a waste really.
It just doesn't work like that I'm afraid. Each program will have one or more threads when it is running: each thread is a sequential string of instructions that can only be executed on one processor. It's just not possible to split the thread across multiple cores or CPUs because of the thread's sequential nature; each instruction has to be executed directly after the previous one, and since each instruction is atomic and cannot itself be split down, that's the end of that.

Hence, the only way of utilising two cores or CPUs properly is to have multiple threads of execution handling different parts of the program's operation. This is where the problems come in for programmers, as this can be very difficult if the program in question does not lend itself well to being split up into different jobs that can be run simultaneously. As Duff-Man said, FPSs are a good example of this.

This even applies at an algorithmic level. Even the simplest algorithm may still be impossible to split it down into individual threads that could be executed concurrently, simply due to the nature of the algorithm itself.
 
Last edited:
As I explained in another thread, one of the biggest problems is that even if you can create a multithreaded game, for it to be efficient all the threads need to be roughly as demanding.

When you look at FPS games, rendering and physics are typically the most demanding threads whereas other stuff like networking and input consumes relatively little cpu time.

What this means in practice is that you could have a core doing rendering which is often maxed out at 100% (and hence becoming a bottleneck); meanwhile you have a thread controlling the network or input (mouse/keyboard) streams which is only say 5% utilised.

It's one of the reason why SMP never really took off in games - it was actually in place as early as the 1990s in the form of Quake3, but due to the reasons above the gains were only around 10% at best.
 
Radiation said:
This is the thing i don't get when it comes to these new multicore processors, whats the point in getting them if most current software makes little or no use out of them?

Because a large section of programs are relatively easy to parallelise. Many scientific computing operations, ray tracing, data compression, etc etc. Buying 24 quad-core machines as a cluster offers a similar performance to buyinga 96 single-core cluster.

Gaming is not the leading market pressure relating to CPUs.

Why can't the hardware side of things make full use of them? programmers shouldn't have to do that sort of work, hardware should be designed to use all its processing power, i just can't see why its not sorted in the hardware, it makes the multicore processors a waste really.

Because it's fundamentally a software issue. the hardware is, in essence, just a unit which takes as input a set of 1s and zeros (as instructions), and outputs another set of 1s and zeros.

At some point a *compiler* will emerge for the standard programming languages that will automatically divide the load among the various CPUs (working under the same kind of principle as branch prediction inside a CPU), but this will be the biggest step change to how programs are written since the end of assembler language (a much bigger jump than object-oriented programming). Don't expect it to happen anytime soon.
 
mulpsmebeauty said:
If there's anything that can't be made clearer with a car analogy, I don't know it :D

The reason is, I guess, that a car is very tangible in the way it works. You can see the pipes, see what drives what, and you know how you control it.

Computer hardware is very abstract, and unless you've actually done some programming I know it's very difficult to appreciate the way that it works (in terms of interacting with the hardware).
 
Duff-Man said:
The reason is, I guess, that a car is very tangible in the way it works. You can see the pipes, see what drives what, and you know how you control it.

Computer hardware is very abstract, and unless you've actually done some programming I know it's very difficult to appreciate the way that it works (in terms of interacting with the hardware).
Even if you do have programming experience you won't necessarily know anything about how the program actually runs (though any good programmer should).
 
Thats interesting, i did know some of it before but i still believe it can all be done at the hardware level, like why can't the cores be linked in such a way as to act as a single core?

Theres almost always a way to get things to work, i think they either just don't know or can't be bothered to get it working like that yet, perhaps what im asking would require quite a new architecture but im sure it could be done, if not then perhaps they need to come up with superior cpu designs or the programmers should actually make an decent compiler.
 
Back
Top Bottom