120

The new AMD processors Ryzen are out on the market and unfortunately they seem to lack in gaming. Intel processors are obviously still faster for gaming. People of course weren't in favour of this and AMD made a statement saying that they're updating the firmware or software for speeding up Ryzen for games.

Correct me if I'm wrong but the processor must have a static firmware to be compatible to the x64 standard? If so wouldn't AMD have to optimize the games(software) for their processors which is obviously impossible? What is going on there to say such things if it seems like it's impossible seeing the underlying conditions?

But I may be wrong (I hope so) so Question is:

Is it possible to achieve a speedup for a processor without changing the underlying hardware? If it's possible, how is this done? Is there software beside the firmware for the processor?

migrated from electronics.stackexchange.com Mar 7 '17 at 22:32

This question came from our site for electronics and electrical engineering professionals, students, and enthusiasts.

  • 71
    You might want to google the term "microcode". – PlasmaHH Mar 7 '17 at 21:58
  • 15
  • 10
    Firmware could be good, or bad, or just not "good for the application". x86 does not define instruction timing, so updating the firmware (microcode) to improve instruction timing does not break x86 compatibility. There are a few potential reasons why this is feasible and could be necessary: 1) the initial microcode is a quick work and is not optimal; 2) the initial microcode perform well when the program is compiled for Ryzen, but not if the program is compiled for generic x86 or for intel's processor, which is the majority of existing software. – user3528438 Mar 7 '17 at 22:01
  • 15
    A microcode update may improve instruction times but there is much more. Modern CPUs do such things as branch prediction, speculative execution, out of order execution, and more that can significantly improve performance. All of this is controlled by microcode. Microcode optimizations take time and that commodity is often in short supply in a competitive business. – LMiller7 Mar 7 '17 at 23:44
  • 4
    Imagine that you are running and for some reason, you refuse to bend your left leg. This will make you awkward and slow - you can easily increase your running speed by more efficiently using the "same hardware" of your leg and bending it more effectively. Changing the "brain" instructions to the leg dramatically increase performance. – enderland Mar 8 '17 at 2:06
122

Modern processors are much more complicated than one might think. They are incredibly complicated, nearly beyond the comprehension of a single person. Expanding on a short remark by "horta", one might have all of the following:

  1. To begin with, almost all internal hardware is configurable to a large extent. There are thousands and thousands of configuration registers with zillions of individual bits that must be set for a CPU to operate. All the several layers of CPU-cache interaction have configurable pipelines, and various timing delays obviously have an effect on overall performance.

  2. There are hundreds of advanced features that are put there by architects that engineering didn't have time to validate, so hundreds of features are disabled or set into fail-safe configuration with "chicken bits". But they can be tuned up and enabled if found functional and useful. These enhancing features usually get validated in-depth over time, and can be gradually enabled over the life of a processor by various microcode patches.

  3. All recent CPUs have several internal units that are controlled by independent microprocessors that are embedded inside the x86 CPU chip. One publicly surfaced unit is the P-Unit. Modern processors can't function without aggressive power management, or they will melt. However, deep power management is in contradiction to an aggressive entry-exit clock/voltage policy, and changes in the policy strongly affect overall system performance. All details are controlled by the P-Unit, and can be optimized/tuned by loading another microcode patch, as answered here.

  4. Many other aspects of internal interconnection are controlled by various additional embedded processors, which can be corrected by loading microcode patches into them, or upgrading the BIOS if it has an access to these configuration resources.

In short, while the CPU hardware is indeed hardwired, the configuration of the said hardware pretty much defines its performance, and can be tuned for better system performance by means of BIOS updates and embedded microcode patches.

  • I'm not sure which answer I should accept. @bwDraco's answer is fine but yours fit the actual answer more even tough his answer is providing problem specific information. – Arthur P. R. Mar 9 '17 at 15:18
  • Well, you should accept this answer. You came from an electronics background, so you seem to be interested about the CPU firmware (not some Windows change). @ArthurP.R. – AnoE Mar 9 '17 at 16:33
  • 3
    @ArthurP.R. If benchmarking people found that Windows doesn't schedule tasks to multithreaded processors properly (treats threads as independent cores), it means that AMD somehow screwed up processor descriptors/whatever, so Microsoft can't understand them. If the descriptors can be patched to Microsoft standards by some update mechanism, then this would be an easy first-order fix. And you have asked a general question, so this answers it. :-) – Ale..chenski Mar 9 '17 at 19:39
  • That's why I accepted your answer even if the answer of @bwDraco fit's here too – Arthur P. R. Mar 9 '17 at 19:44
102

A variety of software issues at both the operating system and appplication levels are causing suboptimal performance.

Eight-core Ryzen processors consist of two core complexes (CCXs) each with four cores and 8 MB of L3 cache. Accessing the L3 cache on a different CCX is slower due to the need to move data farther along the Infinity Fabric (AMD's proprietary cache-coherent interconnect), which means that moving threads from one CCX to another or communicating between cores on different CCXs results in reduced performance. This penalty is reminiscent of what would happen on a multi-socket server running an operating system that is not NUMA-aware.

It appears Windows has a tendency to simply move processes around different cores and does not recognize the inter-CCX communication penalty. This means that Windows may put threads on different CCXs even when doing so is not necessary, reducing performance.

German reviewer PC Games Hardware tested a Ryzen 7 1800X with varying numbers of cores disabled and found that having two CCXs with two cores enabled on each produces slower performance than having one CCX enabled with all of its cores intact:

PC Games Hardware benchmark result: Battlefield 1

This is despite the fact that having only one CCX enabled means that only 8 MB of L3 cache is available, rather than the full 16 MB. From the PC Games Hardware article, via Google Translate (emphasis added):

[...] It is much more exciting to recognize the fact that the CCX data transfers interfere with each other in any case - sometimes more, sometimes less clearly. The advantages of the larger L3 cache (2 + 2 configuration) are nowhere within this measurement series.

This PC Perspective article shows that there is substantial communication latency between cores on different CCXs, but very little latency when communicating with cores on the same CCX. Note that this article suggests Windows is aware of the CCX design and is avoiding scheduling threads on different CCXs but conflicting results have been found by community members.


Many (but not all) gaming benchmarks show increased performance when SMT is disabled. However, rumors that state that Windows improperly schedules as if every hardware thread as its own core are incorrect. According to AMD, this is caused by the fact that many apps are optimized only for Intel processors (which is not unexpected given that AMD has been MIA from the high-end processor market for some five years). AMD says that they're working with hundreds of game developers to improve performance on Ryzen processors. However, I suspect that a Windows update can still help by more finely tuning the scheduler for the characteristics of the Zen architecture.

The following example from Tom's Hardware demonstrates degraded performance with SMT enabled:

Tom's Hardware benchmark result: Ashes of the Singularity

TechSpot did an in-depth analysis of gaming performance with SMT enabled and disabled and came up with very similar results:

TechSpot benchmark result: Deus Ex: Mankind Divided


There are also power management issues implicated in these tests. The same AMD statement notes that Windows is not fully aware of new features in Ryzen such as core parking and fast clock frequency switching. This is consistent with performance improvements reported by Tom's Hardware when using the High Performance power plan (see chart above, HP = High Performance). An update to Windows can add support for these features and improve performance.

  • 12
    I am not sure I am following. The OP explicitly says that since game optimization for Ryzen is out of question at this stage, and Windows bugs are even a longer story, how this answer helps to understand how firmware updates can give hopes for any performance improvement? – Ale..chenski Mar 8 '17 at 1:29
  • 11
    He's essentially saying that windows is totally messing up how/where its allocating threads - causing performance issues. – Journeyman Geek Mar 8 '17 at 2:00
  • 2
    @JourneymanGeek, any decent Windows (I am not sure if W10 qualifies) always have explicit control of core affinity to a process, and mocking with affinity was always the first tool in benchmarking. What's new then? – Ale..chenski Mar 8 '17 at 2:52
  • 4
    Unfortunately yes, but kernel updates are in the works. You will probably need to wait for kernel 4.12; 4.11 brings some fixes but it's not quite there. phoronix.com/scan.php?page=news_item&px=Ryzen-7-Linux-4.11 – bwDraco Mar 8 '17 at 6:41
  • 7
    @Crouchingkitten AMD can only deliver drivers not OS updates. Such stuff is not in AMDS task pool. – Arthur P. R. Mar 8 '17 at 14:28
9

http://wccftech.com/amd-ryzen-launch-aftermath-gaming-performance-amd-response/

1) Early motherboard BIOSes were certainly troubled: disabling unrelated features would turn off cores. Setting memory overclocks on some motherboards would disable boost. Some BIOS revisions would plain produce universally suppressed performance.

2) Ryzen benefits from disabling High Precision Event Timers (HPET). The timer resolution of HPET can cause an observer effect that can subtract performance. This is a BIOS option, or a function that can be disabled from the Windows command shell.

3) Ryzen benefits from enabling the High Performance power profile. This overrides core parking. Eventually we will have a driver that allows people to stay on balanced and disable core parking anyways. Gamers have been doing this for a while, too. I misspoke, here. I want to clarify the benefit: High Performance mode allows the CPU to update its voltage/clockspeed in 1ms, vs. the 30ms that it takes balanced mode. This is what our driver will accomplish. Apologies for the confusion!

So the real question isn't how can a BIOS/firmware update make a processor faster (it can do, optimisation of microcode etc...) its more... how crippled is a CPU by buggy BIOS/firmware

  • I'm sorry for asking on the wrong question side. I thought it would fit especially because I'm interested in non trivial information too. – Arthur P. R. Mar 7 '17 at 22:06
  • np, it maybe abstract enough to stay. I am following Ryzen as I am planning a major rebuild so I am following all the teething problems. As a Linux user I am also following linux-specific issues. One thing to consider with the Ryzen (and the zen core) is this is AMD's 1st SMT & initial indications are it reports logical cores differently than Intel and BIOS/Windows could be attempting to use all "cores" as physical cores when half are logical cores. This would SIGNIFICANTLY affect performance – Naib Mar 7 '17 at 22:10
  • The answers, comments and thoughts about this question is very important I think because people need to know whether things can get still better and so far I saw now I can hope again. BTW the article is very very good! – Arthur P. R. Mar 7 '17 at 22:12
  • For more Ryzen specific... forums.gentoo.org/viewtopic-t-1057910.html A bunch of us on the gentoo forum post and discuss when we get info. Right now for linux the mobo audio drivers are in git only, likewise thermal monitors do not exist... The HPET and core issues is an immediate concern. Right now AMD completely knock Intel out for pure computation – Naib Mar 7 '17 at 22:17
  • 1
    to a degree yes. I stand by my statement that for the Ryzen it is being crippled so BIOS/drivers will "speed it up" – Naib Mar 7 '17 at 22:19
6

BIOS is generally thought of as firmware. BIOS can twiddle all sorts of bits in the hardware to change how the system runs

So yes it’s entirely feasible for them to push out new firmware and for things like clock speeds, or whether prefetches are enabled, or whether a certain core—or IIO—can get certain preferences to the cache which has the potential to increase gaming performance due to most games being designed in a single-threaded manner.

  • This sounds interesting, is it possible to find any references for this? It would be very nice to have some of them to proof it to people :) – Arthur P. R. Mar 7 '17 at 21:56
  • @ArthurP.R. Between pcode, ucode (microcode) and bios, performance and functionality of a chip can be altered greatly. Those are all software/firmware. Source wise, no I can't give you any external sources for this information (as it's all internal). – horta Mar 7 '17 at 22:11
  • What a bummer @horta however many thanks for this information. Feel free to adjust your answer to include this information too. It's worth! – Arthur P. R. Mar 7 '17 at 22:13
4

It's not so much that software updates will make the processor faster. What everyone is expecting is that software updates will make the software more suitable for Ryzen's architecture, and able to better leverage its performance.

Correct me if I'm wrong but the processor must have a static firmware to be compatible to the x64 standard?

Almost. There is software in the CPU (microcode, as mentioned above) and it can influence performance. Basically X86 only specifies the results of operations, how exactly the CPU achieves those results is the engineers' problem. The odds of microcode tweaks playing a major role with Ryzen are slim though, as the performance gap seems to apply mostly to games which suggests the CPU performs well, but some games in particular don't leverage it well.

The Operating System is responsible for trying to make sure programs are spread across the CPU efficiently, which can impact performance, but broadly speaking neither of these factors are the main problem for a new architecture. Most performance improvements in cases like this come as a result of developers writing code better suited to the new architecture. This tends not to happen between generations of Intel CPU as the design changes aren't tremendously significant, so what works well on one will likely work well on another.

Ryzen however is a ground up new design, so everything that's been written to suit other CPUs by definition hasn't been written to suit Ryzen.

To massively oversimplify the situation, picture two processors:

  • Processor One has been on the market a while, and is (for whatever reason) very very quick at adding numbers. Software is designed to try and use addition as much as possible, to take advantage of this ability.

  • A competing processor lands on the market and is weaker at addition, but stronger at multiplication. All of the software optimised to use more addition-heavy instructions performs badly on the new processor, but software that hasn't been tailored to use lots addition performs more or less similarly. Some software may already do lots of multiplication, and will do better on the new CPUs than they would on Processor One, even on launch day.

Some time after launch, developers will start to adapt, using more multiplication in their software, or even design their software to switch between addition-heavy code paths, and multiplication-heavy ones depending on which CPU architecture is being used.

This is kind of what's happening with Ryzen - it's a new architecture that software developers haven't optimised to suit the characteristics of yet. Given time, developers will start tweaking their software to perform better on it. As most software is already designed to perform well on Intel CPUs (they are quite popular, after all!), they likely aren't going to benefit from these changes very much.

There are some workloads that Intel will simply remain faster at, and some that Ryzen is already faster at (and will get faster still) depending on the underlying behaviour. In the situation I gave above, a piece of software that only needs to add things will always perform better on the first processor, and software that simply must multiply things will always perform better on the second - but for the most part software is complex and these differences will level out somewhat.

If so wouldn't AMD have to optimize the games(software) for their processors which is obviously impossible?

It's also worth noting that what AMD have actually said about gaming performance is that they're working with developers to get games optimised. They're sending dev systems out to companies (currently there are 300 in the wild, and they're aiming for 1000 by the end of the year) and talking to those whose games perform badly to help address the issue. As far as I know, no statement has been made that AMD are optimising games themselves.

In this particular case Ryzen is also being held back in some circumstances by Windows making poor decisions about which cores to load up with work, and current BIOSes are problematic for reasons I simply won't pretend to know about. However those issues can't be the responsible for all of the performance gap, as there are workloads where Ryzen already outperforms Intel convincingly, which suggests the issue is at least partially (if not mostly) down to the particular programs being run, rather than the OS or BIOS as a whole.

  • This answer is also interesting and ni e. Thanks. – Arthur P. R. Mar 10 '17 at 5:34
1

Of course software can improve CPU's or even GPU's performance.

One way is definitely overclocking or some other kind of clock altering mechanism. Second can be driver optimizations. These include better data compression methods, faster decoding algorythms, etc...basically features that help utilize more of the hardware better. These features can be updated by firmware updates as well, which isn't really (regular) software. Then there is software that can control your computer's cooling solution. That is very useful for CPUs and GPUs that utilize performance boosting technologies like Intel's Turbo boost and Nvidia's GPU boost. Hardware like that has certain temperature limitations, so they lower their performance, when they're running too hot and dynamically overclock, when apps demand higher computing power, as long as they haven't reached their maximum power draw and they're cool enough.

There's other options as well, but these mostly cover it. Basically, as long as you know the problem and can programatically manipulate either the way the data is processed(like introducing some smart decoding algorythm that replaces a "brute force" kind of solution) or manipulate the processor's reactions to different key factors to its performance(like increasing the cooling more aggressively in case of overheating or monitoring the resource demands of the applications and dynamically overclocking itself when more processing power is needed), you can do a lot to improve(or worsen) the performance of a processing unit.

In AMD's case, it's probably an optimization of its boosting mechanism or cooling solution. One or both of these have probably been altered to react more aggressively to increasing load or temperature.

TL;DR: Yes, software can improve a processor's performance. There's many ways that can be done, like driver and firmware optimizations, overclocks, etc. Any software change that prepares data so that it's easier to process or makes the hardware react better to the load or its limitations will very likely lead to increased performance.

-1

Software updates can definitely make the system (including the processor) run faster.

A very extreme example of this are large IBM mainframe computers: you can buy more CPU time online, and all you get is a license key which you have to enter into your OS, and boom!, your system runs faster. The trick is simple: the OS scheduler will sometimes just refuse to schedule tasks and have the CPU go to sleep instead, or even just run a NO-OP loop for a short time, to achieve a given overall average throughput. If you pay for a more expensive license, the scheduler then removes those NO-OPs.

Or, even more drastically: if you buy a system with only 4 or 6 or 8 CPUs, there will typically be around 16-32 ones actually installed. The OS simply shuts some of them down, and by entering a license key, you can turn them on.

Similarly, IBM mainframes distinguish between different kinds of processors: Linux processors, Java processors, Transaction processors, etc. They are actually all the same processor, but the OS scheduler will refuse to schedule Transaction tasks (which are the most important ones) to a Java or Linux processor. Only Java VMs will be scheduled to the Java processors and only Linux VMs will be scheduled to the Linux processors. If you want to get higher Transaction performance, you have to buy licenses for more Transaction processors: again, those are the exact same processors, the only difference is a configuration flag in the scheduler which says "don't schedule transaction tasks to those processors".

Another example, not quite so extreme, are the different editions of Windows. Different editions of Windows support different number of CPU cores and different amounts of memory. If you have large memory and a large number of CPUs, you can make your system faster, just by upgrading to a "bigger" edition of Windows. Note that the editions have the exact same code; there is just some configuration switch somewhere that says "you are a Home Edition, you only support 1 CPU and 128 GiByte".

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.