AMD Zen3架构深度解析!揭开性能暴涨39%的秘密( 三 )


浮点执行方面 , 浮点单元增至6条流水线意味着可以一次性分派6个微操指令 , 同时以前兼顾负责存储与浮点寄存器文件的MUL乘法、ADD加法整数单元现在改为独立流水线 , 需要的时候可以更好地处理真正的MUL、ADD指令 。
另外还有更快的4周期FMAC、分离的F2I与存储单元、更大的调度器 。
AMD Zen3架构深度解析!揭开性能暴涨39%的秘密文章插图
AMD Zen3架构深度解析!揭开性能暴涨39%的秘密文章插图
载入/存储方面 , 存储队列节点从48个增至64个 , 同时增大了与32KB一级指令缓存之间的带宽 , 每时钟周期可以执行3个载入 , 或者2个浮点与1个存储 , 另外还改进了预取算法 , 以更好地利用容量翻番的三级缓存 。
接下来我们回到“高级”层面 , 看看Zen3在核心与缓存方面的设计 。
AMD Zen3架构深度解析!揭开性能暴涨39%的秘密文章插图
这张CDD核心与缓存布局图大家很熟悉了 。 Zen2、Zen3的每个CCD都是8个物理核心、32MB三级缓存 , 但前者是隔离的两部分 , 每4个核心共享一半的16MB三级缓存 , 而后者是完整的一部分 , 所有8个核心共享所有32MB三级缓存 , 等于每个核心可获取的三级缓存容量直接翻了一番 。
Zen2上边 , 如果某个核心需要的指令、数据在非直接共享的另一半三级缓存里 , 那么就要绕一个圈 , 延迟自然大大增加 , 现在可以直接一步到位了 , 当第一个核心需要的数据在第八个核心里的时候 , 也可以直接在CCX内部快速获取到 。
AMD Zen3架构深度解析!揭开性能暴涨39%的秘密文章插图
再看缓存细节 。 一二三级容量都没变 , 但效率高得多 , 比如32KB一级指令缓存支持32bit拾取 , 32KB一级数据缓存支持最多3个载入、2个存储 , 512KB二级缓存速度也更快了 。
三级缓存容量增大、访问统一后 , 可以完全保存二级缓存里被丢弃出来的牺牲品缓存(victim cache) , 相当于一个备份 , 因为它们被再次访问的概率很高 , 这样无论哪个核心再次需要 , 都可以直接从缓存从交换获取 。
另外 , 每个核心从二级缓存到三级缓存允许64个命中失败 , 从三级缓存到内存则允许192个命中失败 。
AMD Zen3架构深度解析!揭开性能暴涨39%的秘密文章插图
锐龙5000系列让然延续chiplet小芯片设计 , 一个或两个CCD Die搭配一个IOD(负责内存控制器和输入输出) , 但是由于每个CCD里只有统一的一个CCX而不再是独立的两个 , CCD与IOD、内存之间的连接通信也更加一致、高效 。
AMD Zen3架构深度解析!揭开性能暴涨39%的秘密文章插图
两个CCD搭配一个IOD的时候 , 带宽是相同的 , 也是同样的一致性系统 。
AMD Zen3架构深度解析!揭开性能暴涨39%的秘密文章插图
【AMD Zen3架构深度解析!揭开性能暴涨39%的秘密】这时候也再次体现了chiplet小芯片设计的好处 , 可以轻松做到16核心 , 可以不换布局和平台就升级到Zen3架构 , 一切都在封装内部进行 。
AMD Zen3架构深度解析!揭开性能暴涨39%的秘密文章插图
安全方面 , Zen3重点增加了控制流强制技术(CET) , Intel此前已支持 。 它引入了影子堆栈(shadow stack) , 只包含返回地址并且存储在系统内存中 , 同时受到处理器内存管理模块的保护 , 如果有恶意代码利用漏洞村改堆栈 , 在造成伤害之前就能被发现并阻止 。
AMD Zen3架构深度解析!揭开性能暴涨39%的秘密文章插图


推荐阅读