Multi-core support in Games?

Both Quake 4 and Call of Duty 2 now have SMP support, supposedly offering performance improvements on dual core and/or Hyper Threading enabled processors. 

For Call of Duty 2, you simply install the new patch and off you go; SMP support is enabled.  To verify, we ran our CoD 2 benchmark and kept a log of the total processor utilization over time.  Below is a shot of perfmon with a fresh install of CoD2 (sans SMP patch):

Note how the total CPU utilization for our dual-core testbed hovers right around 50%, with the maximum being just under 52% (the remaining 2% can be attributed to driver and other overhead that can eat up extra CPU cycles). 

Now, let's look at CoD2 CPU utilization with the SMP patch installed:

While the average CPU utilization only goes up by around 9%, the maximum CPU utilization increases tremendously, now up to 83%, showing us that the second core is being used. 

We looked at performance at 1024x768 and obviously the higher the resolution, the lesser the impact of a faster CPU (at the same time, the lower the resolution, the greater the impact will be as the game becomes less GPU limited). 

To ensure a fair comparison, we tested using the SMP patch and simply disabled SMP manually by setting the r_smp_backend variable to "0".  We confirmed that SMP support was actually disabled by running perfmon and measuring CPU utilization. 

 Call of Duty 2    SMP Disabled SMP Enabled
AMD Athlon 64 FX-57 (2.8GHz) 80.6 N/A
AMD Athlon 64 X2 4800+ (2.4GHz) 79.8 70.3
AMD Athlon 64 X2 3800+ (2.0GHz) 78.7 68.1
Intel Pentium Extreme Edition 955 (3.46GHz) 79.8 68.4
Intel Pentium Extreme Edition 840 (3.2GHz) 78.1 68
Intel Pentium D 820 (2.8GHz) 75.6 67.1

Surprisingly enough, we actually saw pretty large performance drops in CoD2 with SMP enabled across both AMD and Intel platforms.  This is unfortunate, but the withdrawn SMP support of Quake 3 makes it less than shocking. We do expect that things will get better as time goes on. 

Quake 4 was a different story; with r_useSMP enabled, we saw some extremely large performance gains with the move to dual core:

 Quake 4    SMP Disabled SMP Enabled
AMD Athlon 64 FX-57 (2.8GHz) 115.4 N/A
AMD Athlon 64 X2 4800+ (2.4GHz) 114.9 147.4
AMD Athlon 64 X2 3800+ (2.0GHz) 100.9 143.2
Intel Pentium Extreme Edition 955 (3.46GHz) 98.9 142.3
Intel Pentium Extreme Edition 840 (3.2GHz) 89.0 133.6
Intel Pentium D 820 (2.8GHz) 80.6 125.5

The SMP patch either only spawns two threads, or the instruction mix of Quake 4 with the patch does not mix well with Intel's Pentium EE 955.  The dual core with Hyper Threading enabled platform didn't do anything at all for performance. 

While we're only looking at two games, this is a start for multithreaded game development.  You can expect to see a lot of examples where dual-core does absolutely nothing for gaming, but as time goes on, the situation will change. 

Presler vs. Smithfield - A Brief Look Dual Core and Hyper Threading: Detriment or Not?
Comments Locked

84 Comments

View All Comments

  • Betwon - Saturday, December 31, 2005 - link

    NO, 2. is wrong.

    We need to know the end time of all tasks.

    The sum of each task's time will mislead.

    Because it can not show the real time spend to complete those tasks. (Time is overlayed)
  • Viditor - Saturday, December 31, 2005 - link

    quote:

    The sum of each task's time will mislead

    That's what I thought you meant...it's not misleading to me (nor to most of the other readers I gather, since nobody else has come forward). If you want to know the time to complete all tasks, then just take the largest time number of what ever test you wish.
    The reason that the setup they used appeals to me is that it helps me understand how an individual application is affected under those conditions, and the totals give me a relative picture of each of the apps as a whole. They haven't said that the time listed in the "Total" is actually how long things took in reality, they said it was the total of the times.
    I understand that the difference in those two phrases is perhaps a difficulty that many have when understanding a foriegn language...

    In the future, you might want to be less confrontational about your questions...
    Phrases like "There are still many knowledge about CPU that anandtech need to learn" are considered quite inhospitable...
  • fitten - Saturday, December 31, 2005 - link

    No. What is being mentioned here is "Wall Clock Time" vs. summation of execution times. You start a stopwatch at the instant you start your task bundle and when the last task in the bundle is finished, you stop your stopwatch. That's the wall clock time. Measuring CPU utilization time is quite easily seen to be false. with two CPUs, two tasks may take 20s each to finish, but they may start and finish at the same time after 20s of wall clock time... not 20s + 20s = 40s (each task will see 20s of CPU utilization time, but those sets of 20s are simultaneously used... 20s on one CPU and 20s on the other CPU at the same time - for a wall clock finish time of 20s, not 40s).

    And, you cannot simply take the largest time number. For example, suppose a task that runs for 1s is blocked by a second task which takes 10s, then the first task takes another 1s to finish, while 10s is larger than 2s, the wall clock time for this bundle is actually 12s (1s + 10s + 1s), not 10s or 2s.
  • bldckstark - Monday, January 2, 2006 - link

    Ummmmm, all of the times you are screaming about are listed. You can work it out for yourself. Although, when you look at the concurrent timing for each app, you will find that the AMD posted a better score. Concurrent timing results -
    AMD 4800+ - 65.9s
    955EE No HT - 83.3
    955EE With HT - 71.1

    Consecutive times of course show a different picture, and most of all, SPCC is a wreck during all of this for AMD.

    I have to say, I can't remember when I last opened 4 huge memory and CPU hogging programs at exactly the same time that I tried to play a game. These CPU's may be great at doing this many activities at once, but I can only do one thing at a time. Each of these programs would be started separately, and when they are on their way, I might start gaming. This is a great test, but not realistic.

  • Betwon - Friday, December 30, 2005 - link

    Your test of the SMP game --Quake4
    Your result is diffirent with the result of the more detail test from FiringSquad.
    http://www.firingsquad.com/hardware/quake_4_dual-c...">http://www.firingsquad.com/hardware/qua...-core_pe...

    We find that both HT and multi-core will improve the fps. P4 540 HT is about 1x % improvement.

    We need your explains. Why you say that HT will not help the in the the SMP game --Quake4?

    And we do not find that AthlonX2 have the more excellent improvement than PD, when they work (change from single-core-work to multi-core-work).

    Where is the benefits of on-die communication? 101ns latency? why is it slower the lateny of the memory? Is your cache2cache test software wrong?

    The test shows that
    SMPon/SMPoff PD840 102.9 fps/74.8 fps --> 37.6% improvement
    SMPon/SMPoff X2 3800+ 101.1 fps/74.4 fps --> 35.9% improvement
    SMPon/SMPoff X2 4800+ 103.2 fps/87.7 fps --> 17.7% improvement
    AMD test:
    http://www.firingsquad.com/hardware/quake_4_dual-c...">http://www.firingsquad.com/hardware/qua...al-core_...
    Intel test:
    http://www.firingsquad.com/hardware/quake_4_dual-c...">http://www.firingsquad.com/hardware/qua...-core_pe...

    The improvement ratio of PD is better than that of athlonX2.
  • psychobriggsy - Saturday, December 31, 2005 - link

    > SMPon/SMPoff PD840 102.9 fps/74.8 fps --> 37.6% improvement
    > SMPon/SMPoff X2 3800+ 101.1 fps/74.4 fps --> 35.9% improvement
    > SMPon/SMPoff X2 4800+ 103.2 fps/87.7 fps --> 17.7% improvement

    Looks like the issue is an upper performance limit around the 103 fps mark that probably isn't caused by the CPU - e.g., GPU or something else.

    If it is a memory bandwidth issue (which should be easy to test for by using faster memory and running the tests again) then there isn't much that can be done. Then again, the Intel processor uses DDR2 so ...

    If the 4800+ improved by 36% like the 3800+ then it would achieve around 120fps.

    In the end it just shows that the lower-priced dual-cores are still a better deal ... especially as they can be overclocked quite nicely.
  • Viditor - Friday, December 30, 2005 - link

    quote:

    The improvement ratio of PD is better than that of athlonX2.

    I would hope so, since the patch was partially written by Intel...
    quote:

    the 1.0.5 patch mentions Intel by name as a collaborator with no word on AMD...While it isn’t optimized for AMD64, frame rates on a dual-core Athlon 64 X2 3800+ are 63 percent faster at 800x600 with threading enabled. The 4800+ also feeds back good gains

    http://firingsquad.com/hardware/quake_4_dual-core_...">http://firingsquad.com/hardware/quake_4_dual-core_...
  • Betwon - Saturday, December 31, 2005 - link

    PD840 139.1fps/83fps --> 67.6%
    PD840 are 67.6 percent faster at 800x600 with threading enabled.

    67.6% > 63%

    Patch was partially written by Intel...?
    But the patch is very excellent!

    This patch is the most improvement game patch for SMP CPU.
    We can not find that another SMP game patch can improvement the game performent so much.

    Good quality of the codes!
  • Betwon - Saturday, December 31, 2005 - link

    PD840 139.1fps/83fps --> 67.6%
    PD840 are 67.6 percent faster at 800x600 with threading enabled.

    67.6% > 63%

    Patch was partially written by Intel...?
    But the patch is very excellent!

    This patch is the most improvement game patch for SMP CPU.
    We can not find that another SMP game patch can improvement the game performent so much.

    Good quality of the codes!
  • Viditor - Saturday, December 31, 2005 - link

    quote:

    But the patch is very excellent!

    Possibly, but Intel is well known for creating an imbalance in performance for their processors using software (e.g. the Intel Compiler). Most likely, future versions of the patch will correct for this. Either way, it really says less about the CPU than it does the patch...

Log in

Don't have an account? Sign up now