历史上的今天
今天是:2025年02月19日(星期三)
2018年02月19日 | 嵌入式系统中动态随机存储器性能的研究
2018-02-19 来源:eefocus
引言
随着超大规模集成电路的制造工艺的进步,在单一芯片上动态随机存储器实现了更高密度的比特位,使得计算机系统在计算速度迅猛发展的同时,内存容量极大的扩大。伴随着集成度的提高,存储器单元呈现失效的可能性随之增大,失效的形式和原因也趋于更加复杂化。存储器测试的目的是确保其每个单元能够存储数据并且惟一的寻址、读、写。存储器的测试面临两方面的要求:较高失效类型覆盖率,尽可能检测出潜在的存储器故障;较少的存储器操作,以便缩短检测时间。因此存储器测试应能够在一定的测试时间内得到可能的最佳故障覆盖率。由于对存储器进行物理检测是不可能的,可行的办法是将待测存储器的访存结果与认定无故障的存储器的访存结果做比较。
1 DRAM的原理及失效模型
动态内存的结构和ROM及SRAM有较大的不同。图1是动态内存的总体结构。内存单元按照行、列组成阵列。地址首先分为行地址和列地址,行地址经过译码器,选中一行内存单元。列地址选择数据输出到数据输出端。

图2是内存单元的结构图。动态内存使用一个晶体管和一个电容来存储一位数据。由于电容量很小,数据读出消耗电容上存储的电荷,读取以后需要重新对电容充电。并且由于电容自身的漏电,动态内存需要定期刷新。

图3是读写控制电路示意图。图中显示了读取1位数据的过程。假设这个单元存储的数据为“1”初始状态(图3(a)),电容电压为V,数据线D和
电压均为0.5 V,T1,T2,T3均截止。首先,T3导通,电容上的电荷使数据线D上电压为0.5 V+a。放大器对信号放大,使得数据线D上电压为V,
上电压为0,读出数据“1”(图3(b)),同时对电容充电,电容电压为V(图3(c))。然后T3截止,T1,T2导通,数据线D,
上电压恢复为0.5V。电路恢复初始状态(图3(d))。

假设存储器实效仅仅被单元状态的跳变所激活,即不考虑不改变状态的写操作时出现的失效。存储器的失效模型可以表述为如下:
(1)粘滞实效(Stuck-at Faults,SF)。一个或多个存储器单元固定为s,s∈(0,1),不因对该单元的读写而发生状态的变化。
(2)组合实效(Coupling Faults,CF)。存储器某些位的跳变导致其他位的逻辑值发生非预期的变化。组合失效的产生归咎于单元物理上毗邻所产生的分布电容或者是单元间的电流泄漏。2个存储单元之间的组合失效称双组合实效。例如:对于单元j的一个0→1或是1→0的写操作将会改变i单元的内容,使之状态翻转。但是反之i单元的状态改变并不一定也会对j产生影响。
(3)地址译码故障(Address Decoder Faults,AF)。有4种情况:某地址不能访问任何单元;某单元无法被任何地址访问;某地址可以同时访问多个单元;某单元可被多个地址访问到。
2 测试用数据
由前节讨论可知,动态内存除了内存单元,还有地址译码器,选择器,控制器,放大器等部件。为此针对不同的部件,设计了不同的数据和读写方式来进行测试。
2.1 普通数据
普通数据就是全“0”或者全“1”。写入全“0”或者全“1”的数据,然后读取校验,来验证内存单元是否正常工作。
2.2 棋盘数据
图4表示了棋盘数据。在内存单阵列中写入如国际象棋棋盘一样的数据。由于与每一位数据相邻的数据都不一样,棋盘数据可以用来检测内存单元间的泄漏。

2.3 行带状数据
图5表示了行带状数据。采用行带状数据可以检测Word线之间的泄漏。

2.4 列带状数据
图6表示了列带状数据,用来检测Bit线(数据线)之间的泄漏。

2.5 移位数据
读取内存数据时,Word线选中一行内存单元,数据还要通过选择器,经过列地址选择,到达数据线。使用移位数据,使得每次只有一个数据引脚为1,其余都为0,检测相互是否有影响。
2.6 Waltz数据
前面介绍了使用行带状数据检测Word线之间的泄漏,为了检测相隔行的微弱的影响,可以使用Waltz数据。如图7所示。

3 测试用读写方式
为了检测内存潜在的问题,除了设计一些测试用的数据,还设计了一些读写方式,和数据相结合来检测。
3.1 MSCAN
MSAN读写方式是按地址递增顺序,首先写入0,然后仍然按照此顺序读出校验。MSCAN用来检测内存单元。
3.2 MARCH
MARCH读写方式的检测对象是地址译码器。如果地址译码器有问题,就会产生多重选择的问题,即同一个地址对应多个内存单元,或者多个地址对应同一个内存单元。可以采用如下的读写方式来检测这种问题。如图8,首先顺序写入“0”,然后顺序校验,校验一个数据后立即将数据改为“1”,然后逆序校验,校验后立即将数据改为“0”。

3.3 MASEST
MASEST读写方式的检测对象也是地址译码器。不过侧重于地址译码器的翻转噪声。按照图8中的顺序写入行带状数据,此顺序的目的是让地址译码器译码每次输出都尽可能多的翻转。然后在按此顺序校验,校验同时把数据翻转。最后顺序读取数据校验。
3.4 CMD
CMD读写方式检测内存单元间的相互干涉。如图9,首先写入棋盘数据。然后按照如图9顺序校验。

3.5 ROW/COL组合
ROW/COL组合测试的对象是内存控制电路。内存单元阵列分为行和列,某一个行地址有效时,对某一个单元进行读/写组合的操作,由于内存单元需要定时刷新,这种操作可能对刷新造成影响。ROW/COL组合读取方式固定某一行,对一个单元进行读/写组合操作,验证刷新的影响。然后对同一行的下一列进行相同的操作。
4 测试系统
上面讨论了用于测试内存的数据和读取方式。在实际组成的系统中,针对特定的测试对象,两者总是结合使用的。下面的表1列出了本测试系统测试的项目和相对应使用的数据和读取方式。

前节讨论的数据和读取方式的时候,都是基于动态内存的实际结构,从内存单元矩阵行地址,列地址来分析的。实际应用过程中,内存控制器总是把内存单元矩阵映射成线性连续空间的。不同的芯片组会给出不同的映射方法。图10是Intel BX 440芯片组的内存行列地址映射(128 MB)。本测试系统测试的时候需要了解硬件的结构,才能有效的找出内存潜在的缺陷。

测试系统基于嵌入式Linux操作系统,采用命令行方式运行,所有的输入采用配置文件来设定。下面给出了一个配置文件的例子:
![]()

在正常和DRAM系统有故障的嵌入式系统下面分别得到了如图11的检测结果,从实验中可以发现有故障的系统在测试过程中某些测试项目无法通过,根据具体的情况就可以大致判断出故障的原因,这样就给系统设计者指明了改善系统性能的方向。

5 结语
本文研究从动态内存的失效模型出发,针对不同的部件可能发生的问题,设计了检测用的数据和读取方式,将它们组合起来进行测试,可以更有效地检测动态内存中潜在的缺陷,具有高的失效类型的覆盖率。同时,动态内存测试作为嵌入式Linux测试系统的一个子系统得到了国际计算机系统制造商富士通公司的认可。
史海拾趣
|
想做一个视频采集的东西,用S3C2410搭的平台.计划通过前端的摄像头来采集图象,然后存到MMC卡中,请教大家,摄像头可以用什么样的啊?USB的吗?市面上常见的那种吗?… 查看全部问答> |
|
我想问的问题是这样的 1.如何扩展RAM区 2.如何在flash中定义一存储空间来存储大量的数据,例如在MSP430单片机中 3.现在流行的单片机有FLASH和RAM,(1)一般的工程师将程序放到FLASH里,并在RAM里运行;(2)而有的单片机没有FLASH,只有RAM ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:26 编辑 ? ?Integrated Thermopile With Analog Front End ?IR Spectrum Sensitivity: 4um – 8um ?16-Bit ADC with I2C SMBus interface ?Integrated Local Temp. and Voltage Reference ...… 查看全部问答> |
|
看了大侠的这篇文章: 【LaunchPad手记】MSP430 LaunchPad演示应用:内部温度测量 发现默认的烧在片子里的程序,如果按了S2按钮之后,是一直在往外发温度数据,随便找个串口工具,打开板子的串口,波特率2400,选择16进制数据,转换为10进制,就 ...… 查看全部问答> |
|
2600A系列型数字源表[1]触发模型,允许用户在微秒数量级的精度对源电平和延迟时间进行编程。下面的命令序列将2602A[2]型数字源表SMUA[3]与SMUB[4]开启时间延迟设置为200µs 。 The Series 2600A trigger model allows the ...… 查看全部问答> |
|
求 msp430系列单片机系统工程设计与实践 pdf 谢楷、赵建那本 有的发到378148949@qq.com吧 谢谢了 附件是我们老师讲课做的ppt,目前只有前两章的… 查看全部问答> |
|
ccs5.5中的GUI Composer中的小部件LineGraph和ScatterPlot怎么使用不了啊? 我是刚接触CCS5.5的新手加菜鸟。发现ccs5.5中的GUI Composer中的小部件LineGraph和ScatterPlot使用不了,和变量相关联后,工程可以编译和运行,Dial可以正常实现修改参数的功能,但是LineGraph和ScatterPlot一直都不能出现曲线。是不是一定要横坐标 ...… 查看全部问答> |




