首先我们简单说下Zen3相比Zen 2的主要变化:
前端增强:
• 主要目标:特别针对分支和大代码的更快的取指令改进.
• L1分支目标缓冲区的大小倍增至1024以获得更好的预测延迟;
• 提升了分支预测器带宽;
• 更快地从错误预测中恢复;
• 可更快地进行背靠背预测与处理分支代码的“无泡”预测功能;
• 更快的op-cache取指令排序;
• 粒度更细的op-cache管道切换.
执行引擎改进:
主要目标:通过降低延迟和扩大结构以抽取更高ILP.
• 新增用于整数专用分支和st-data选择器,每周期发射数达到10,比Zen 2提高了3发射;
• 更大的整数窗口, 相比Zen 2提高了32;
• 降低了选择浮点和整数操作的延迟;
• 浮点宽度增加了2个单位, 分发与发射总共达到6宽度;
• 浮点FMAC加快了1个周期;
加载存储改进:
主要目标:通过更大的结构和更好的预取以支撑增加后的执行引擎带宽.
• 更高的整体带宽可以满足更大/更快的执行资源的需求;
• 加载宽度相比Zen 2提高1个单位;
• 存储宽度相比Zen 2提高1个单位;
• 更具灵活性的加载存储操作;
• 改进的内存依赖检测;
• TLB中增加了4个table walker.
SOC架构改进:
主要目标:减少对主内存访问的依赖性,减少核心到核心的延迟,减少核心到缓存的延迟.对游戏而言意义重大, 游戏往往会设计一条频繁使用L3缓存的”超级线程”, 而现在游戏可直接访问的缓存从16MB提高至32MB.
• 将单个CCD中的核心整合为单个包含由4个,6个或8个相连形式的统一体系;
• 将单个CCD中的所有L3缓存统一为最大32MB的连续单组;
• 核心/缓存通信重构为环形系统.