下一页 上一页 目录
21064 和 21066 采用相同的 (EV4) CPU 核心。 如果在相同的 CPU 速度下,同一程序分别在 21064 和 21066 上运行,那么性能差异仅来自于系统 Bcache 和内存带宽。 任何在 *内部* 缓存中具有高命中率的代码线程,性能都将相同。 主要有以下两个性能瓶颈:
- 写入密集型代码: 尽管 21064 和 21066 具有写入缓冲区以缓解部分延迟,但写入密集型代码仍然会受到系统总线写入带宽的限制。 这是因为片上缓存是直写式的。
- 对于需要将浮点数作为整数处理的代码: Alpha 架构不允许在整数寄存器和浮点寄存器之间直接进行寄存器到寄存器的数据传输。 这种转换必须通过内存完成(因此,由于片上缓存是直写式的,需要经过 Bcache)。 (编者注: 似乎 EV4 和 EV45 都可以通过主数据缓存 (Dcache) 完成这种转换,前提是内存已经被缓存。 在这种情况下,转换序列中的存储操作会更新 Dcache,随后的加载操作在特定情况下能够读取更新后的 Dcache 值,从而避免代价高昂的 Bcache 往返。 特别是,背靠背地执行 stq/ldt 或 stt/ldq 指令似乎是最佳实践,但这有点违反直觉。)
如果在 21064A 和 21066A 之间进行相同的比较,由于两个芯片之间不同的 Icache 和 Dcache 大小,还会存在一个额外的因素。
现在,21164 解决了这两个问题: 它实现了 *更高* 的系统总线带宽(尽管信号引脚数量相同 - 是的,我 *知道* 它的引脚数量大约是 21064 的两倍,但所有额外的引脚都是电源和地线! (是的,真的!!)),并且它采用了回写缓存。 唯一剩下的问题是“成本是多少?”
下一页 上一页 目录