No Cache操作

    Win32的VirtualAlloc支持分配不可缓冲的内存,所以我们在这里提供了一个有关这一类内存的比较。下面是测试数据:

NoCache_Tb01.gif (3178 bytes)

这一类的内存其实与屏蔽调CPU的缓存时的情况是不一样的,所以这里的测试结果如此的低。这类内存主要是为内存映射IO、外部设备上的内存等准备的,所以CPU在操作的时候有很强的限制,导致访问速度很慢。具体的限制可以参考Intel和AMD的相关文档。

    表中反映出的一个现象是读操作比写操作慢很多。这应该是因为写操作一般不在程序的关键路径上,CPU发出写命令后没必要等待其完成就可以进行下去,而实际完成操作由主板芯片组完成。

    还有一个值得注意的现象是64位的操作速度是32位时的2倍。这是因为系统总线协议的原因,每次操作要有很多附加的总线周期来传递状态、地址等等,而无论数据多少这些附加总线周期的数目是一样的。从这里我们也可以看出,有写合并(Write Combine)属性的内存应该有更好的写性能。对显存使用写合并,应该可以大幅度提高显示性能。而128位操作的速度不增加的原因,可能是CPU本身只有64位的接口(对NO_CACHE属性的内存,一次传输的数据量不可能比接口宽度大,而对写合并的内存可以)。


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.