Simultaneous MultiThreading (SMT)

Zen will be AMD’s first foray into a true simultaneous multithreading structure, and certain parts of the core will act differently depending on their implementation. There are many ways to manage threads, particularly to avoid stalls where one thread is blocking another that ends in the system hanging or crashing. The drivers that communicate with the OS also have to make sure they can distinguish between threads running on new cores or when a core is already occupied – to achieve maximum throughput then four threads should be across two cores, but for efficiency where speed isn’t a factor, perhaps power gating/clock gating half the cores in a CCX is a good idea.

There are a number of ways that AMD will deal with thread management. The basic way is time slicing, and giving each thread an equal share of the pie. This is not always the best policy, especially when you have one performance dominant thread, or one thread that creates a lot of stalls, or a thread where latency is vital. In some methodologies the importance of a thread can be tagged or determined, and this is what we get here, though for some of the structures in the core it has to revert to a basic model.

With each thread, AMD performs internal analysis on the data stream for each to see which thread has algorithmic priority. This means that certain threads will require more resources, or that a branch miss needs to be prioritized to avoid long stall delays. The elements in blue (Branch Prediction, INT/FP Rename) operate on this methodology.

A thread can also be tagged with higher priority. This is important for latency sensitive operations, such as a touch-screen input or immediate user input elements required. The Translation Lookaside Buffers work in this way, to prioritize looking for recent virtual memory address translations. The Load Queue is similarly enabled this way, as typically low latency workloads require data as soon as possible, so the load queue is perfect for this.

Certain parts of the core are statically partitioned, giving each thread an equal timing. This is implemented mostly for anything that is typically processed in-order, such as anything coming out of the micro-op queue, the retire queue and the store queue. However, when running in SMT mode but only with a single thread, the statically partitioned parts of the core can end up as a bottleneck, as they are idle half the time.

The rest of the core is done via competitive scheduling, meaning that if a thread demands more resources it will try to get there first if there is space to do so each cycle.

New Instructions

AMD has a couple of tricks up its sleeve for Zen. Along with including the standard ISA, there are a few new custom instructions that are AMD only.

Some of the new commands are linked with ones that Intel already uses, such as RDSEED for random number generation, or SHA1/SHA256 for cryptography (even with the recent breakthrough in security). The two new instructions are CLZERO and PTE Coalescing.

The first, CLZERO, is aimed to clear a cache line and is more aimed at the data center and HPC crowds. This allows a thread to clear a poisoned cache line atomically (in one cycle) in preparation for zero data structures. It also allows a level of repeatability when the cache line is filled with expected data. CLZERO support will be determined by a CPUID bit.

PTE (Page Table Entry) Coalescing is the ability to combine small 4K page tables into 32K page tables, and is a software transparent implementation. This is useful for reducing the number of entries in the TLBs and the queues, but requires certain criteria of the data to be used within the branch predictor to be met.

The Core Complex, Caches, and Fabric Power, Performance, and Pre-Fetch: AMD SenseMI
Comments Locked

574 Comments

View All Comments

  • BurntMyBacon - Friday, March 3, 2017 - link

    @ShieTar: "Well, the point of low-resolution testing is, that at normal resolutions you will always be GPU-restricted."

    If this statement is accepted as true, then by deduction, for people playing at normal (or high) resolutions, gaming is not a differentiator and therefore unimportant to the CPU selection process. If gaming is your only criteria for CPU selection, then that means you can get the cheapest CPU possible until you are not GPU restricted.

    @ShieTar: "The most interesting question will be how Ryzen performs on those few modern games which manage to be CPU-restricted even in relevant resolutions, e.g. Battlefield 1 Multiplayer."

    I agree here fully. Show CPU heavy titles to tease out the difference between CPUs. Artificially low resolutions are academic at best. That said, according to Steam Surveys, just over half of their respondents are playing at resolutions less than 1080P. Over a third are playing at 1366x768 or less. Though, I suspect the overlap between people playing at these resolutions and people using high end processors is pretty small.

    Average frame rate is fairly uninteresting in most games for high end CPUs, due to being GPU bound or using unrealistic settings. Some, more interesting, metrics are min frame rate, frame time distribution (or simply graph it), frame time consistency, and similar. These metrics do more to show how different CPUs will change the experience for the player in a configuration the player is more likely to use.
  • Lord-Bryan - Thursday, March 2, 2017 - link

    Who buys a 500 dollar cpu to play games at 720p res. All that talk is just BS.
  • JMB1897 - Friday, March 3, 2017 - link

    That test is not done for real world testing reasons. At that low resolution, you're not GPU bound, you're CPU bound. That's why the test exists.

    Now advance a few years into the future when you still have your $500 Ryzen 7 CPU and a brand new GPU - you may suddenly become CPU bound even at QHD or 4k, whereas a 7700k might not quite be CPU bound just yet.
  • MAC001010 - Saturday, March 4, 2017 - link

    Or a few years in the future (when you get your new GPU) you find that games have become more demanding but better multi-threaded, in which case your Ryzen 7 CPU works fine and the 7700k has become a bottleneck despite its high single-threaded performance.

    This illustrates the inherent difficulty of comparing high freq. CPUs to high core count CPUs in regards to future potential performance.
  • cmdrdredd - Saturday, March 4, 2017 - link

    "Or a few years in the future (when you get your new GPU) you find that games have become more demanding but better multi-threaded, in which case your Ryzen 7 CPU works fine and the 7700k has become a bottleneck despite its high single-threaded performance."

    Maybe, the overclocking scenario is also important. Most gamers will overclock to get a bit of a boost. I have yet to replace my 4.5Ghz 3570k even though new CPUs offer more raw performance, the need hasn't been there yet.

    One other interesting thing is how Microsoft's PlayReady 3.0 will be supported for 4k HDR video content protection. So far I know Kaby Lake supports it, but haven't heard about any of AMD's offerings unless I missed it somewhere.
  • Cooe - Sunday, February 28, 2021 - link

    Lol, except here in reality the EXACT OPPOSITE thing happened. A 6-core/12-thread Ryzen 5 1600 still holds up GREAT in modern titles/game engines thanks to the massive advantage in extra CPU threads. A 4c/4t i5-7600K otoh? Nowadays it performs absolutely freaking TERRIBLY!!!
  • basha - Thursday, March 2, 2017 - link

    all the reviews i read are using NVidia 1080 gfx card. my understanding is AMD graphics has better implementation of DX12 with ability to use multiple cores. I would like to see benchmarks with something like RX480 crosfire with 1700x. this would be in the similar budget as i7 7700 + GTX 1080.
  • Notmyusualid - Friday, March 3, 2017 - link

    http://www.gamersnexus.net/hwreviews/2822-amd-ryze...
  • cmdrdredd - Saturday, March 4, 2017 - link

    Overclocking will be interesting. I don't use my PC for much besides gaming and lately it hasn't been a lot of that either due to lack of compelling titles. However, I would still be interested in seeing what it can offer here too for whenever I finally break down and decide I need to replace my 3570k @ 4.5Ghz.
  • Midwayman - Thursday, March 2, 2017 - link

    Here's hoping the 1600x hits the same gaming benches as the 1800x when OC'd. $500 for the 1800x is fine, Its just not the best value for gaming. Just like the i5's having been better value gaming systems in the past.

Log in

Don't have an account? Sign up now