" /> " />

目 录CONTENT

文章目录

内存测试:Memetester

Administrator
2024-02-21 / 0 评论 / 0 点赞 / 16 阅读 / 4349 字

官网:memtester(8) - Linux man page

linux平台安装:

1).wget http://pyropus.ca/software/memtester/old-versions/memtester-4.3.0.tar.gz

2).tar -xzvf memtester-4.3.0.tar.gz

3).cd memtester-4.3.0
4).make && make install

测试项

memtester-4.3.0 memtester-ARM
3. int test_stuck_address(bufa, count); (√ ) 先全部把地址值交替取反放入对应存储位置,然后再读出比较,重复2次(官网的重复了16次):测试address bus
4. int test_random_value(bufa, bufb, count); (√ )等效test_random_comparison(bufa, bufb, count):数据敏感型测试用例
5. int test_xor_comparison(bufa, bufb, count); (-) 与test_random_value比多了个异或操作,用户场景之一,用例覆盖。数据敏感/指令功能验证,同时可验证SAF;
6. int test_sub_comparison(bufa, bufb, count); (-)与test_random_value比多了个减法操作,用户场景之一,用例覆盖。数据敏感/指令功能验证,同时可验证SAF;
7. int test_mul_comparison(bufa, bufb, count); (-)与test_random_value比多了个乘法操作,用户场景之一,用例覆盖。数据敏感/指令功能验证,同时可验证SAF;
8. int test_div_comparison(bufa, bufb, count); (-)与test_random_value比多了个除法操作,用户场景之一,用例覆盖。数据敏感/指令功能验证,同时可验证SAF;
9. int test_or_comparison(bufa, bufb, count); (√ )在test_random_comparison()里面合并了,用户场景之一,用例覆盖。数据敏感/指令功能验证,同时可验证SAF;
10. int test_and_comparison(bufa, bufb, count); (√ )在test_random_comparison()里面合并了,用户场景之一,用例覆盖。数据敏感/指令功能验证,同时可验证SAF;
11. int test_seqinc_comparison(bufa, bufb, count); (√ )这是 test_blockseq_comparison的一个子集;模拟客户压力测试场景。
12. int test_solidbits_comparison(bufa, bufb, count); (√ )固定全1后写入两个buffer,然后读出比较,然后全0写入读出比较;这就是Zero-One算法,Breuer & Friedman 1976 ,检测SAF的,算法是{w0,r0,w1,r1}时间复杂度是4N,又叫做MSCAN,验证每个cell能读写,间接测试了stuck at fault
13. int test_checkerboard_comparison(bufa, bufb, count); (√ )把设定好的几组Data BackGround,依次写入,然后读出比较 (注:论文里说设计良好的Data background可以检测出state coupling faults时间复杂度是4N,这是验证相邻位置是否互相影响从而设计的用例。
14. int test_blockseq_comparison(bufa, bufb, count); (√ )一次写一个count大小的块,写的值是拿byte级的数填充32bit,然后取出对比,接着重复256次;也是压力用例,只是次数变多了;
15. int test_walkbits0_comparison(bufa, bufb, count); (√ )就是bit=1的位置在32bit里面移动,每移动一次就全部填满buffer,先是从低位往高位移,再是从高位往低位移动,(这么做的目的是啥?其中的一个目的是检测NPSF其次是CFs,其次是数据敏感型异常检测,注这里是32bit的,还有8bit的粒度更细了)
16. int test_walkbits1_comparison(bufa, bufb, count); (√ )与上同理,另注:早memtester86中这个算法叫做moving inversions algorithm
17. int test_bitspread_comparison(bufa, bufb, count); (√ )还是在32bit里面移动,只是这次移动的不是单单的一个0或者1,而是两个1,这两个1之间隔着两个空位,(是临近耦合异常的一种data pattern变体:两个1之间间隔1个位置,然后同步移动)
18. int test_bitflip_comparison(bufa, bufb, count); (√ )也是32bit里面的一个bit=1不断移动生成data pattern然后,每个pattern均执行:{取反交替写入a、b缓冲区,写完之后检查一遍,然后不断重复以下步骤八次{用八个DMA从a缓冲区搬数据到b缓冲区,并行搬,模拟短时间内反复读写同一位置看是否有数据丢失异常}}核心思想:短时间内反复读写同一位置。
19. int test_8bit_wide_random(bufa, bufb, count); (√ )以char指针存值,也就是每次存8bit,粒度更细;
20. int test_16bit_wide_random(bufa, bufb, count); (√ )以unsigned short指针存值,也就是每次存16bit,不同粒度检测;
21. × int test_crosstalk_comparison(bufa, bufb, count):[32个0,接着32bit里面1个0移动]以这样的模型叠加写入内存;(只有上行,没像有moving inversions algorithm一样进行反转)

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区