火星守望者
精华
|
战斗力 鹅
|
回帖 0
注册时间 2008-5-28
|
http://www.hardware.fr/articles/ ... ysteme-memoire.html
看到有人在转这个的机翻,那就随手翻一下(不懂软硬件瞎翻):
可能的三大原因:
- RAM延时过高
- CCX之间的带宽严重不足
- CCX之间的cache访问开销巨大
考虑到以上原因,以及Windows习惯于不停地将线程在不同核心之间转来转去,很可能将线程从一个CCX转到另一个CCX时开销非常巨大
有两种情况容易导致性能低下:
- 线程在转移时,会导致访问cache内数据的延时太高
- 线程无论被转移与否,塞爆了cache
比如在7z和winrar的测试中,更可能是第二种情况,此类软件会持续调用超大的压缩字典。此时CCX之间有限的内存带宽是一个瓶颈
在游戏中,则更偏向于第一种情况,或者是一和二皆有
问题这就无药可救了吗?
也不一定,一种可能的方案是修改windows的调度器,限制跨CCX的线程转移,和推土机时代针对模块(1M2C)的措施有点像
另一种可能对游戏性能有益的方案,就是win10将要引入的“游戏模式”
游戏模式的特点之一,就是减少线程的转移
其他一些补救措施,小aa应该会在GDC大会期间介绍,以后我们会聊到这个话题
目前还无法知道这些措施能有多大效果,而且和每个程序员具体如何开发高度相关
至于CCX之间低下的带宽、高延时,那是完全没救了,只能等下一代zen
Si vous nous avez suivi jusqu'ici, on peut commencer à voir les causes des ralentissements que nous notons dans certains benchmarks. Si l'on résume ce que l'on a pu voir jusqu'ici :
La latence mémoire de Ryzen est plus élevée
La bande passante entre les CCX est particulièrement réduite
Les accès caches entre CCX sont coûteux
Si l'on rajoute la tendance de Windows à déplacer les threads en permanence, on peut commencer à comprendre un peu mieux certains comportements. En effet, balader les threads d'un CCX à l'autre est excessivement couteux sur Ryzen dont la bande passante entre les CCX est réduite.
On peut imaginer facilement deux cas qui causeront des ralentissements :
des threads qui, lorsqu'ils sont balladés payent un prix fort en latence pour accéder aux données de leurs caches
des threads qui, balladés ou non, saturent l'intégralité du cache
Dans le cas de 7-Zip ou de WinRAR, on penchera sur la seconde option, en pratique ces logiciels utilisent un dictionnaire de compression particulièrement large auxquels ils font référence en permanence. Nous supposons que dans ce cas, la bande passante mémoire limitée entre les CCX est un facteur limitant.
Pour les jeux, nous supposons que l'on est plus proche du premier cas, ou d'un mix des deux.
Le problème est-il donc insoluble? Probablement pas, plusieurs solutions sont envisageables, comme par exemple une adaptation du scheduler de Windows pour limiter les déplacements des threads hors du CCX, un peu à l'image de ce qui était fait pour Bulldozer avec les modules. On peut imaginer qu'AMD travaille avec Microsoft pour implémenter un système de ce type, même si le constructeur n'a pas pu nous le confirmer.
Un autre changement qui pourrait se révéler salutaire pour les jeux est l'arrivée du "Game Mode" de Windows 10, dont l'une des particularités est justement là aussi, de moins bouger les threads. D'autres techniques de mitigations sont envisageables et AMD devrait présenter lors d'une session à la GDC plusieurs d'entre elles, nous vous en reparlerons.
Quelle partie de l'écart sera rattrapée par ces éventuels correctifs, patchs, et modifications ? C'est en l'état impossible à dire et il faut rester très prudent sur ce que feront, ou non, les divers développeurs concernés. La bande passante réduite entre les CCX et la latence élevée resteront des choses qui elles n'évolueront pas, en tout cas pas avant une future révision de Zen.
内容差不多的英文贴:
Causes of poor gaming relative to CPU performance of Ryzen:
1. Windows is load-balancing across CCXes.
This means that a thread is being moved around on the CPU - which is normal - so that a single core isn't used more than others. On Ryzen, that needs to happen ONLY within a CCX, otherwise you will incur a massive penalty when that thread no longer finds its data in the caches of the CCX.
2. SMT hurts single threaded performance due to shared structure.
Ryzen statically partitions three structures to support SMT:
a. Micro-op queue (dispatcher)
b. Retirement queue
c. Store queue
This means that, with SMT enabled, these resources are cut, potentially, in HALF (mind you, these are just queues that impact throughput of a single thread).
3. Memory latency quirks still not worked out.
Gaming can be quite sensitive to memory latency and bandwidth. These issues will be, most likely, remedied with BIOS updates.
Combined you can see, clearly, what is happening and most of the reviews make sense.
A Windows driver update to treat each CCX almost as if it were its own CPU will help immensely. The SMT problem is likely PERMANENT... unless AMD can adjust the partitioning with microcode, which I doubt.
What this all means is simple: once the Windows update has landed, BIOSes are patched up, and SMT is disabled, an 8-core Ryzen will likely be competitive with a quad i7 in gaming while blowing past it in multi-threaded. If all you do is game, then the 1700 may well become a very valid option that will work increasingly better in future games.
This also lets us know where Zen 2 will be able to improve the most. Make the impacted queues competitively shared (or just a little larger), improve inter-CCX communications, decouple the L3 speed from core speeds (for higher core clocks), and a few other relatively simple tweaks and you have a second generation Ryzen that steals the show.
We also know why AMD hasn't released anything other than their 8-core chips - these issues need to be ironed out in production. You need thousands of eyes and testers and numerous companies each responding to their customers' needs to get a grip on what is most important to fix before finalizing Zen 2. |
|