指令解码/缓存/执行能力
众所周知,x86 是复杂指令集架构,但是和精简指令集相比,区别并非什么指令数量的多寡,而是其指令长度格式不一。
以最简单的 NOP 空指令为例,它的 x86 编码长度是一个字节,加法指令 ADD、乘法指令 MUL 等则是两个字节,最长的 x86 指令有 17 个字节。
我们采用了部分有代表性的 x86 指令进行指令解码测试,测算出解码带宽信息(结果受微操作高速缓存、指令高速缓存、解码器、执行单元、回退等工位影响):
正如你所看到的测试结果,Zen2/Zen + 都具备每周执行 5 个单字节指令的能力,而 Coffee 则是只有每周期 4 单字节指令的能力。
Prefixed CMP 其实是针对 x86-64 指令的测试,可以看到,在微操作高速缓存范围内的指令流能够为处理器维持每周期 4 条 8 字节指令的执行能力。
如果单纯从表格来看的话,Zen2 似乎和 Zen+ 一样,但是我们将收集的数据整理为图表后,看到了更多的细节:


我们选取了 NOP 指令(x86 指令长度 1 个字节)以及 Prefixed 的 CMP 4(x86 指令长度 8 个字节)的测试结果做了上面的两个图表。
可以看到 Zen 2 在 NOP 的时候,每周期 5 指令的峰值数据可以维持到 3KiB 以上,而Zen+ 只能维持到大约 0.2KiB 左右。
在长度为 8 字节的指令时,Zen2 每周期两指令的峰值数据可以维持到 16KiB,而 Zen + 只能维持到 8KiB。
从目前的测试结果来看,我们估计 Zen2 的微操作高速缓存容量按照字节衡量的话,应该不低于 16KiB。
众所周知,x86 是复杂指令集架构,但是和精简指令集相比,区别并非什么指令数量的多寡,而是其指令长度格式不一。
以最简单的 NOP 空指令为例,它的 x86 编码长度是一个字节,加法指令 ADD、乘法指令 MUL 等则是两个字节,最长的 x86 指令有 17 个字节。
我们采用了部分有代表性的 x86 指令进行指令解码测试,测算出解码带宽信息(结果受微操作高速缓存、指令高速缓存、解码器、执行单元、回退等工位影响):
正如你所看到的测试结果,Zen2/Zen + 都具备每周执行 5 个单字节指令的能力,而 Coffee 则是只有每周期 4 单字节指令的能力。
Prefixed CMP 其实是针对 x86-64 指令的测试,可以看到,在微操作高速缓存范围内的指令流能够为处理器维持每周期 4 条 8 字节指令的执行能力。
如果单纯从表格来看的话,Zen2 似乎和 Zen+ 一样,但是我们将收集的数据整理为图表后,看到了更多的细节:


我们选取了 NOP 指令(x86 指令长度 1 个字节)以及 Prefixed 的 CMP 4(x86 指令长度 8 个字节)的测试结果做了上面的两个图表。
可以看到 Zen 2 在 NOP 的时候,每周期 5 指令的峰值数据可以维持到 3KiB 以上,而Zen+ 只能维持到大约 0.2KiB 左右。
在长度为 8 字节的指令时,Zen2 每周期两指令的峰值数据可以维持到 16KiB,而 Zen + 只能维持到 8KiB。
从目前的测试结果来看,我们估计 Zen2 的微操作高速缓存容量按照字节衡量的话,应该不低于 16KiB。
ob

前面部分是微架构部分,后面就是相对宏观的平台架构部分。
上面就是个典型的北桥芯片布局图,CPU通过FSB前端总线连接北桥,而内存和PCI控制器这些高速接口都在北桥里,而南桥主要负责串口,USB、SATA这样的低速设备。此外白桥还有个特征,就是北桥是通过Front Side Bus前端总线和CPU相连,并且之间的连接速率并不是全速,而是和外频成倍数关系。如我之前的Core 2 E6300外频是266,FSB是X4 1066MHz,倍频是7,那处理器频率是266×7=1.86GHz,而我超频可以将外频提升到500,达成500×7=3.5GHz。





但更为细致的手工调节,我们可以在同步模式将IF频率拉到1900,内存运行在3800,这个时候内存控制器依然是同步模式。其实更为准确的说,只要是内存频率/2等于IF频率的同步模式,内存控制器依然是全速,因此追求最佳效能,可以同步拉高IF和内存频率。但从现在的情况看,IF可以提高的余地大概只有33MHz,从1866到1900MHz。
















