测量带宽
测试数据流测量“可持续的内存带宽”,因此是一个CPU将如何处理数据密集型应用的一种好的显示方法。John McCalpin博士是STREAM基准测试的开发者和维护人。
我们在所有平台上使用gcc 4.7来进行编译,并使用了-O3-fopen-静态设置,必须提醒的是这一版本的gcc已经由Linaro团队加以优化,Linaro是一个非盈利的软件工程组织,其目标是优化用于ARM-Cortex A系列CPU的软件核心和常用工具。
在英特尔的CPU上,我们强迫线程去使用带有任务设置的超线程。例如,4个线程的测量针对的是带有4个线程的两个物理内核,其理念是如何用一个四核的ARM服务器节点来对比一台由管理程序分配了一些物理内核和一些逻辑内核的虚拟机。这也使我们能够去评估一个凌动处理器内核上的两个线程与两个ARM内核的对比结果。当你用相近的功耗去对比不同的CPU时,你通常用两个ARM 内核去对比每一个超线程的凌动处理器内核。
对于现在比较的内存密集型负载,基于ARM的服务器是一种相对差的选择。即使使用4个内核和DDR3-1333,可用的带宽少于一个至强内核可持续提供的带宽的六分之一。
沿着相似的脉络,ECX-1000不能提供比一个搭载了DDR2-667的凌动系统更大的带宽。但是就带宽而言,凌动和ARM内核双双的表现都非常差。尽管其规格都声称这些CPU都能够驱动一个DDR3-1066通道,实际测量的带宽都远远达不到这样一种DIMM能够提供的8.5GB/s的理论值。
整数处理
为了测量不同CPU的整数处理潜力,我们将转向使用几种不同的工作负载。第一步,我们使用了7z LZMA压缩和解压缩,再一次观察了从一到四个线程的性能。在下一节,我们将观察使用gcc编译器时的性能。
压缩
压缩是一种低IPC工作负载,它对内存的并行性和延迟敏感。指令混合有一点不同,但是这种工作负载仍然在一定程度上与许多种服务器负载相似。
从时钟与时钟的对比看,嘉协达ECX-1000中无需排序的Cortex-A9胜出了Atom有序的内核。单个Cortex-A9毫无悬念地胜过了早期的凌动,而与时钟高出许多的N2800非常接近,N2800与ECX-1000性能相似。
解压缩
解压缩是下分支指令(branch)相当密集型的任务,同时取决于增加和转移指令的延迟。
下分支指令的错误预报很常见,而且凌动凭借其同步多线程(SMT)内核非常好地处理了下分支指令错误预报。得益于超线程的提升效应此时是非常大的:第二个ARM Cortex-A9内核实现了52%的提升,而超线程实现了56%的提升。这是非常意外的,因为超线程的性能令人担忧。
同时观察解压缩和压缩,看上去一个四核ARM Cortex-A9在同样的时钟速度时,它与一个至强内核(没有超线程)的速度相当。我们需要6个Cortex-A9内核来匹配一个使用了超线程的至强内核。1.4GHz的四核ECX-1000也接近于1.86GHz的双核、四线程凌动。这对嘉协达来讲是个好消息,因为6.1W的S1240 的主频仅为1.6GHz。
创建和编译
我们通过执行一次生成-jx(x是线程的数量)来编译7z源代码。编译是下分支指令密集(22%)的工作负载,它完成了主要的上载和存储(大约40%)。
分析单线程性能可发现,ARM Cortex-A9和凌动处于同一层次。这是一种至强的Sandy Bridge内核可以大放异彩的工作负载。你大概需要八个Cortex-A9内核来胜出一个至强(不带超线程)。不得不说:与凌动和ECX的长时间等待相比,在基于至强E5的虚拟机内进行编译是一种非常愉悦的体验。