测试平台和测试的意义

    我在这里进行的测试仅是作一个数据分析的例子,所以并没有刻意追求性能的高低和不同平台间的比较。当然买不起那么多的昂贵设备也是一个重要原因。

    我所测试的平台仅是我日常使用的一个电脑,配置如下:

CPU Intel Mobile Pentium III 650(我一般让其运行在500MHz上,简写为PIII-M650@500)L1 I-Cache和L1 D-Cache均为16KB,L2为256KB。
内存 PC100 64MB×2
主板芯片组 440BX
型号 Dell CPxJ

无关的部分我就不列出来了。

    在测试中尽量少加载进程,让内存比较干净的情况下运行。

    另外,在这里说明一下测试中表示测试数据的单位。在测试中,大部分情况我们并不关心绝对性能,而希望得到消除主频因素以后的性能。所以我们一般用这些单位:

Cycle 完成一个操作的平均周期数,越小越好
ns 完成一个操作的绝对时间(纳秒=10e-9秒),越小越好
Byte/Cycle 表示平均每个指令周期可以传输的字节数,简写为Byte/c或B/c,越大越好
MB/s 表示每秒钟平均可以传递的字节数,以MB为计算单位。一般在需要比较绝对性能的时候才使用(如:内存带宽)。越大越好

在后面的测试中上面这些单位将不再特别说明。

    在测试中常用的测试在以前都讨论过。对应于读、写和复制操作,后面将分别称作Read、Write和Copy。某些时候将简写为RD、WR和CP。而对应每种操作,将有32位、64位和128位的不同操作,将分别在名称后面加后缀04、08和16。例如Read04表示32位的读操作,CP/16表示128位的复制操作等等。还有数据地址的对齐和未对齐(Align/Unalign)将用后缀A和U表示。例如WR/08/U表示未地址对齐的64位写操作。这些名称在后面将直接引用而不作说明。

    在这里还要说明一下测试的意义。虽然后面所进行的测试所得到的参数一般都可以通过CPUID获得,但这并没有减少我们的测试的意义。CPUID和Intel/AMD文档所给的数值,仅是Intel/AMD的一家之辞,只可作为参考。我们的工作,是通过执行一系列的指令,来测试系统的某些部件是否按照其设计意图工作,是否达到了设计的性能指标。后面的检测值显示,并不是所有检测值都与CPUID和Intel/AMD文档一致,某些检测值反映出部分部件未能达到设计的性能参数,有些部件则工作得很好。当然这对选购CPU这样的应用是没有什么参考价值的,如果你是为这样的目的阅读本网站,现在就可以退出了:)

    这方面的工作其实很早就有人开展了。在486盛行的时代,主板一般都要集成缓存。很多主板商则用假的缓存芯片来冒充,并通过修改BIOS代码使BIOS显示错误的信息,骗取消费者钱财。于是有一些测试缓存大小的程序出现。这些程序并不是通过CPUID或者BIOS调用获得缓存大小的,而是通过执行特定的代码序列,通过该代码序列在不同的条件下测试值的差异反映出缓存大小,即所谓的“实际效果”。这些测试值可实在的,不可能通过修改BIOS或者CPUID指令的返回值改变,所以可见检测处准确的缓存大小。本网站的工作是对这些内容的扩展。不过我们的扩展已经非常大了,几乎任何信息都可以测试出来,甚至有些测试已经超出了内存子系统。有些测试可是有难度的,比如内存子系统内的测试“缓存的相关路数”、和内存子系统关系不大的“分支预测历史记录表的深度”等。在本站公布我们的测试原理之前,你是否可以想得出来?:)

    另外,关于缓存系统的一般性理论这里就不介绍了。如果你不了解,可以参考计算机体系结构方面的书籍,或者访问本服务器上的计算机原理课程网站。后面的文章假定读者都对计算机原理课程网站上实验课的讲义有关内容有一定的了解。


Leading Cloud Surveillance, Recording and Storage service; IP camera live viewing

Leading Enterprise Cloud IT Service; cloud file server, FTP Hosting, Online Storage, Backup and Sharing

Powered by FirstCloudIT.com, a division of DriveHQ, the leading Cloud IT and Cloud Surveillance Service provider since 2003.