【测试】15GByte/s: 使用SSE2指令集加速的内存测试工具
novakon2012/12/23软件综合 IP:四川
QQ截图20121223011619.jpg
如图,在我的i7 3610QM DDR3 1600平台上面,可以达到15GByte/s左右的检测速度。

流程:让用户输入内存大小,然后向系统申请内存。将申请到的内存填满0101101001011010...这样的数据。
然后按照用户输入的次数,连续地从内存中读出数据。如果读出的数据和当初写入的相同,则认为这段时间里,内存中没有产生错误。检测过程中出现的数据不一致的情况将会被记录,在每一次读取完毕后会输出记录结果。如果输出的都是0,代表没有出错。

检测原理:读出的数据和原来写入的数据作异或运算。运算结果中的1(代表两个操作数中的某个位不一致)将会用 或运算 记录在错误记录寄存器里。

SSE2指令集:单条指令可以操作128位数据(包括从内存中读出以及往内存中写入)。比32位的一般方法快接近4倍。
现在大部分的台式机处理器都支持SSE2指令集。

下面的zip压缩包包含程序和源文件。在visual studio 2012下编译通过。
存在的问题:发给一个用XP的兄弟,说运行不了。所以希望大家帮忙测试这个程序,可以晒晒自己的配置和自己的内存检测速度,也可以反馈遇到的问题。
我的测试平台是win7 64位 微软.NET框架全部安装,微软VC++运行库全部安装。
如果在您的电脑上不能运行,请立即反馈,万谢。


//补充:已经用vs2010重新编译并且上传了压缩包。修复了不少bug。
attachment icon memtestSSE.zip 38.14KB ZIP 62次下载
+100  科创币    phpskycn    2012/12/25 -
来自:计算机科学 / 软件综合
41
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
古人
12年1个月前 IP:未同步
481210
已测试,提交数据:
i7 3920XM + Samsung PlanetFirst DDR3 1600 4×8GB
@DCUGA)F0HZ1NWQCBAZRJRA.jpg
PQ6$[S%)3B0XSS4}5W%GEPL.jpg
+20
科创币
novakon
2012-12-23
感谢参与测试
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
badboy-fly
12年1个月前 IP:未同步
481227
这测试有什么用求解[s:274]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
12年1个月前 IP:未同步
481228
回 1楼(古人) 的帖子
非常感谢古人同志参与测试!古人的测试结果显示,虽然处理器差一个档次,但是内存操作速度差异不大。原因有待研究。

这个程序是单线程的(至少编译时如此),但是在我的4核处理器上会达到30%左右的处理器占用率。
+20
科创币
古人
2012-12-23
合作愉快
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
12年1个月前 IP:未同步
481235
引用第2楼badboy-fly于2012-12-23 12:34发表的  :
这测试有什么用求解[s:274]  




这个程序可以某种程度上反应您的电脑处理器和内存之间的数据吞吐速率。


我刚才试了一下,如果仅仅是连续地将数据读取到CPU的128位寄存器内,而不做逻辑运算校验结果,可以达到32GByte/s.
所以15GByte/s已经算是相当快了。
+1
科创币
badboy-fly
2012-12-23
原来如此~
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
daxus
12年1个月前 IP:未同步
481247
已测试,数据如下:

捕获.png

系统使用鲁大师检测:
   截屏图片.jpg
+20
科创币
novakon
2012-12-23
感谢参与测试。1333的内存看来真的就比1600慢。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
12年1个月前 IP:未同步
481278
到目前为止,还没有人遇到过内存出错的情况。哪位编程高手能偷偷修改一下内存,产生一个错误,让这个程序抓到一次呢。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小龙
12年1个月前 IP:未同步
481285
提交结果    
AMD Athlon II X4 635 + kingston DDR3 1333MHz 2GB*2
好像我是最慢的。。。。

_JI~@N4CZ}~N3[PB{$5TM(X.jpg
+1
科创币
相对论万岁
2012-12-23
还有比你更慢的……
+1
科创币
向钱看向厚赚
2012-12-23
偶比你快~
+1
科创币
阿飘先生
2012-12-25
比我的快的多多了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
nongmiintou
12年1个月前 IP:未同步
481294
QQ截图20121223162653.png
2G DDR3 1333*4 略慢 qb5wy1.png
QQ截图20121223162653.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
bg8npk
12年1个月前 IP:未同步
481295
5917
I7 620M 4G DDR3 1333*2
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
向钱看向厚赚
12年1个月前 IP:未同步
481296
cpu 速龙2四核635,内存DDR3 1333 4gx1
配置基本同上 22FPBWRSH7`UUEH@1$NWZ64.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁
12年1个月前 IP:未同步
481297
程序貌似出错了一次……
如图 {01P9R1YYU@ZW_P81J~GDXD.jpg
4V%V$}BA%Y[2E5WLF(5FY)V.jpg
最后无聊一次……
8{EU3EG[GBX~5XD@0ZVXLCE.jpg
再次证明了硬盘读写速度很慢……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
向钱看向厚赚
12年1个月前 IP:未同步
481300
此时内存超到1466MHZ,得分明显提高,待会再升~ 433QMP$V9B1@7BRTQACE6D6.jpg
_2%RXLTPPLIWN`IC~ODCDV3.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
向钱看向厚赚
12年1个月前 IP:未同步
481302
此时内存超到1600 结果.. 9E{44)R[HZR_L7VXBVKUAAM.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
12年1个月前 IP:未同步
481308
引用第9楼bg8npk于2012-12-23 16:33发表的  :
5917
I7 620M 4G DDR3 1333*2




看来不同架构版本的处理器,虽然速度差不多,但是效率有较大差别。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
金星凌日
12年1个月前 IP:未同步
481309
这个没法测试完整的内存吧。总有一部分内存是被操作系统保留的。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
wjwj1234xx
12年1个月前 IP:未同步
481311
E3 1230V2 +金士顿DDR31600 8G*2 1231235.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
detonator
12年1个月前 IP:未同步
481320
话说我这个是不是有点科学?。。


i7 3630QM工程样品+G. Skill 8GB DDR3 1600


mem_info.jpg

mem_test.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
北落师门
12年1个月前 IP:未同步
481347
我来秀下限....
Intel Core 2 T6600+Samsung M471B2874DH1-CF8 1GB+Ramaxel Tech. RMT3020EF48E8W1333  2GB
我的内存是组合的,两条性能和牌子不一样,虽然都是DDR3,原本是2条三星的1G,后来朋友A到了一条2G的记忆,于是拆了一条换上去,可能就是因为这样一组合,于是出现了这样的奇葩速度...
不光是这个,USB速度也挺奇葩的,就连学校那种方屏电脑的前置USB口的读写速度都比我笔记本快.....
捕获.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
12年1个月前 IP:未同步
481381
引用第13楼向钱看向厚赚于2012-12-23 16:57发表的  :
此时内存超到1600 结果..




超频赞扬,我就没有成功超过我的内存。


从目前的情况来看,AMD党和i系列一代以前情况危急啊
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
12年1个月前 IP:未同步
481382
引用第15楼金星凌日于2012-12-23 17:10发表的  :
这个没法测试完整的内存吧。总有一部分内存是被操作系统保留的。

是的。

另外程序有限制,申请内存不能超过1800M。可以开多几个程序同时跑。


凡是用此程序抓到内存错误的,截图奖励100KCB。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ljk
12年1个月前 IP:未同步
481426
i3 2120  ADATA 4g*2  1066
未命名.png
+1
科创币
20!Dopaminor
2013-01-09
为什么这么快...  明明只是1066的内存..
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁
12年1个月前 IP:未同步
481589
内存没有出错,倒是程序有过出错,如我发的图
此程序在内存设置太小时容易出错!
+29
科创币
20!Dopaminor
2013-01-09
怎么测的硬盘速度?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
10班陈大葱22号
12年1个月前 IP:未同步
481683
笔记本,
CPU: i7 720M 1.6GHz
RAM: 2G*2, DDR3, 好象是1333MHz的
速度刚开始是5237,写完贴到这里再试了一次变成了4385,不知道为什么= =...
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
phpskycn
12年1个月前 IP:未同步
481842
CPU:Intel Core I7 3630QM@2.4GHZ
MM:2*GM DDR3 1333MHZ 4GB
OS:Windows NT6.1 X64
MMT0.jpg
考虑运行于WOW64中...重新编译为64位版本

   MMT.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
phpskycn
12年1个月前 IP:未同步
481845
BUG:
时间精度造成错误的测试结果
由于clock()函数提供的时间精度非常有限,当输入的测试容量过小时,可能会造成错误的结果。
某些情况下,需要被操作的内存空间全部或相当大的一部分在CPU缓存中,导致操作很快完成,这时候两次通过clock()得到的时间戳相同,导致测试结果为-2048MB(在我的机器上测试容量<=28MB都可能出现这种情况)。
另一种情况是,输入的内存容量仍然不够大,结果由于clock()的精度问题造成的误差使得测试结果严重偏小。
或许LZ需要高精度的系统时间,在一个拥有超大SRAM的系统上,这个问题或许会更加严重。
ME.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
阿飘先生
12年1个月前 IP:未同步
481847
你的好快········
我觉得是不是这电脑抽风了
[OB`1]Z7VJWLN)IH[V~~SQI.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
phpskycn
12年1个月前 IP:未同步
481849
另外,个人认为SSE之类的指令对于内存带宽并没有“加速”的效果,内存的带宽受制于内存本身的带宽和处理器核心到内存控制器之间的总线的带宽。
这类指令虽然能提供更高的操作数宽度,但是并不影响内存带宽。如果只使用Mov之类的指令,应该测得的值是差不多的,而使用支持256bit的AVX也一样。
记得在N多年前针对Nehalem价格(可以认为这是现在的I记CPU架构鼻祖)的资料上看到,内存操作数指令的延迟都非常大,再加上支持4指令发射,不会出现由于质量操作位宽不够导致内存性能被浪费的情况,如果是这样的话,64位系统下性能会比32位高出很多很多……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
phpskycn
12年1个月前 IP:未同步
481852
引用第19楼novakon于2012-12-23 20:28发表的  :




超频赞扬,我就没有成功超过我的内存。
.......

基本上在内存带宽差不多的情况下,Intel CPU内置内存控制器(位于同一DIE,胶水技术实现的忽略)性能差不多,剩下的和AMD的都差不多。。。看来AMD的内存控制器或者总线带宽出了问题。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁
12年1个月前 IP:未同步
481855
你的内存较小,或者开的程序过多,占了很多内存,使剩余的内存小于1000M
由于你设置的是1000M
系统不得不使用虚拟内存来保证程序运行
虚拟内存是存储在硬盘上的,读取速度很慢
如果你把内存设置得小些,就不会出现这种情况了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁
12年1个月前 IP:未同步
481857
另外,此程序还存在一个bug
虽然很扯,但是如果要将这个程序做好,大范围使用的话,建议修改:
对输入的内容未进行检测,当输入为小数,字母,甚至是汉字时程序会出错
另外,为了保证精度,建议限制内存输入范围,譬如小于216M的为无效输入
+100
科创币
novakon
2013-01-09
必须的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
phpskycn
12年1个月前 IP:未同步
481904
回 30楼(相对论万岁) 的帖子
参考25L,精度问题。
这个值很难确定。某些CPU的L3有20MB,如果是四路系统的话,这个值得设置到256MB以上,这样会影响到某些内存过小的机器……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁
12年1个月前 IP:未同步
482188
好了,我再来个汉化版……
未经作者允许……
又没有vs2010,只好使用c32了……
因为要保证字节数相同,只好多插空格了……
本人英语不好,只能这样了……
运行截图:
捕获.png

attachment icon memtestSSE (2) - 副本.zip 35.99KB ZIP 40次下载
+1
科创币
20!Dopaminor
2013-01-09
把内存改成内内嘛
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
20!Dopaminor
12年0个月前 IP:未同步
486289
回 3楼(novakon) 的帖子
蛋疼内存2x2G1333 由于是32bit 实际内存2.509G
神舟本 i3 2310 A560P D1 GT540  开了ramdisk plus把剩余内存打开了做硬盘
最高13000
传说中的双通道在哪里在哪里????
[] 测试2.jpg   
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
20!Dopaminor
12年0个月前 IP:未同步
486597
回 楼主(novakon) 的帖子
这个测试把内存设置为400m的时候得到的速度最快...  不知道为什么

学校电脑   最高4000      但是吧数值调到这样之后.... ram text 4000.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
我说要有光
12年0个月前 IP:未同步
486620
C:\\Users\\MiniLight\\Desktop\\新建文件夹>memtestSSE.exe
memory test utility by Qin Yongliang 2012-12-22
this program REQUIRES SSE2 instruction set
please enter the size to GlobalAlloc() in MB: 1024

how many times do you want to test
your memory for data consistency? 10

here we go
GlobalAlloc() success. writing...
done writing!
now read the data out using SSE2 128-bit instructions...1 of 10
128-bit register OR(XOR(Expected,Read)) result:
00000000-00000000-00000000-00000000
time used: 0.187000 second(s) speed: 5475 MByte/s

now read the data out using SSE2 128-bit instructions...2 of 10
128-bit register OR(XOR(Expected,Read)) result:
00000000-00000000-00000000-00000000
time used: 0.187000 second(s) speed: 5475 MByte/s

now read the data out using SSE2 128-bit instructions...3 of 10
128-bit register OR(XOR(Expected,Read)) result:
00000000-00000000-00000000-00000000
time used: 0.172000 second(s) speed: 5953 MByte/s

now read the data out using SSE2 128-bit instructions...4 of 10
128-bit register OR(XOR(Expected,Read)) result:
00000000-00000000-00000000-00000000
time used: 0.172000 second(s) speed: 5953 MByte/s

now read the data out using SSE2 128-bit instructions...5 of 10
128-bit register OR(XOR(Expected,Read)) result:
00000000-00000000-00000000-00000000
time used: 0.187000 second(s) speed: 5475 MByte/s

now read the data out using SSE2 128-bit instructions...6 of 10
128-bit register OR(XOR(Expected,Read)) result:
00000000-00000000-00000000-00000000
time used: 0.187000 second(s) speed: 5475 MByte/s

now read the data out using SSE2 128-bit instructions...7 of 10
128-bit register OR(XOR(Expected,Read)) result:
00000000-00000000-00000000-00000000
time used: 0.172000 second(s) speed: 5953 MByte/s

now read the data out using SSE2 128-bit instructions...8 of 10
128-bit register OR(XOR(Expected,Read)) result:
00000000-00000000-00000000-00000000
time used: 0.187000 second(s) speed: 5475 MByte/s

now read the data out using SSE2 128-bit instructions...9 of 10
128-bit register OR(XOR(Expected,Read)) result:
00000000-00000000-00000000-00000000
time used: 0.187000 second(s) speed: 5475 MByte/s

now read the data out using SSE2 128-bit instructions...10 of 10
128-bit register OR(XOR(Expected,Read)) result:
00000000-00000000-00000000-00000000
time used: 0.187000 second(s) speed: 5475 MByte/s

memory test ended.
memory freed.

memory test utility by Qin Yongliang 2012-12-22
this program REQUIRES SSE2 instruction set
please enter the size to GlobalAlloc() in MB:


CPU Q6600 2.4GHz
Memory 800Mhz 2GiB*2
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
20!Dopaminor
12年0个月前 IP:未同步
486680
服务器测试结果...
memtextsse86。exe    is not a avlid win32 application      2003R系统
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁
12年0个月前 IP:未同步
487494
回 34楼(20!不曾存在) 的帖子
因为你的内存设置超过了空余内存,系统不得不使用虚拟内存
虚拟内存就是把数据存在硬盘上,硬盘速度慢
我编的一个硬盘测速程序测出我的机械盘速度122M/s……
+1
科创币
20!Dopaminor
2013-01-13
吧你编的发上来看看?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
城市迷彩_cc
12年0个月前 IP:未同步
487605
未命名.jpg
10年买的dell笔记本
未命名1.jpg
原配2G 1333,自购4G水货金士顿 1333 混搭
羡慕古同学的本本
+1
科创币
20!Dopaminor
2013-01-13
有点慢...
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
Earthman
11年1个月前 IP:未同步
656703
2009年底,2010年初的配置,Intel i7 720QM,三星DDR3 4G+4G

捕获.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
alezh1
10年1个月前 IP:上海
732018
下载测试[s::lol]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
novakon
学者 机友 笔友
文章
1256
回复
8386
学术分
16
2008/03/29注册,2年11个月前活动

已走,勿送

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}