【仙人掌科技工业级闪小知识】写入中断处理~!存卡- 点击:219 | 回复:0



Cactus-Danile

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 0回
  • 年度积分:0
  • 历史总积分:113
  • 注册:2017年4月20日
发表于:2017-06-09 16:17:35
楼主

覆盖的产品:所有仙人掌科技工业级闪存产品 ( SD | CF | SSD | DOM | PC | MICROSD | USB)


1. 简介

仙人掌科技工业级闪存产品,基于温度,冲击,震动与电压波动等苛刻的操作环境而设计,智能闪存控制器的主要特征能阻止在这些极限条件下导致产品变坏。


2. 需要解决的问题

很多工业计算机与嵌入式系统经常被突然断电、浪涌、尖峰正脉冲、尖峰负脉冲或者电流限制。有时设备被人为移除,这些都会导致数据与存储器出错,将会导致闪存局部失效与产品退货。


在没有操作或者读操作时突然断电,不会有数据丢失。数据丢失仅仅发生在写操作时突然断电或者设备被人为移除。这就是众所周知的写入失败。如果写入失败发生在擦除操作时,数据丢失比写入数据时更严重。


3. 失效的现象

一般来说,用户偶尔突然断电会给闪存导致2中失效的现象:1是文件系统坏了,2是设备存储数据坏了。


文件系统坏导致操作系统不能完整更新文件系统记录,一些文件系统更容易受到攻击,例如,日志文件系统EXT3或者EXT4比FAT文件系统更坚固。FAT文件系统的损坏包括损坏文件分配表或者丢失簇。


需要注意的是文件系统的损坏,不能通过存储设备的软硬件设计来改善。这是因为文件系统一直在使用中,并不知道文件系统本身所做的事情,因此设备没有办法保护文件系统的安全。


幸运的是,文件系统损坏了一般不致命。大部分操作系统在突然断电事件后,在下次上电时会进行文件系统修复操作。用户能运行一些命令或者有效执行修复操作。


内部存储设备数据损坏,在另一方面,可能使这个设备不能使用。在突然断电时,这种错误会导致设备内部元数据(例如符合逻辑的物理映射表)损坏。当发生这种状况时,不是现有的数据被损坏就是主机无法识别驱动器。唯一的办法就是进行低级格式化,因此结果是用户数据丢失。


由于内部数据损坏是致命的,因此需要致力于存储设备的软硬件设计,以确保在任何环境下内部数据不被损坏。


在下面的章节,我们将解释仙人掌科技工业级闪存产品的主要特性,来缓和或消除写入失败数据损坏的问题。


4. 有专利的电源掉电保护算法

仙人掌科技工业级闪存产品-303,-503与-806系列产品,使用了专利算法在数据传输与写入时确保数据完整性。数据写入这些产品时使用了在新旧状态之间减少delta的方法。数据系统在任何时候是连贯性的。在突然断电时,控制器会复位,闪存立即写保护。保存了大部分闪存工作的最近的日志信息。在闪存编程前会生成一些入口。日志信息的最末入口被损坏,控制器就会恢复最末损坏的入口。在掉电时减少了数据的丢失,在物理层完全阻止了数据损坏。当数据写入闪存的同一时间发生电源掉电时,传输中的数据可能会丢失。数据系统还是会被损坏。


在-303与-503系列产品上进行了广泛的电源循环测试,在突然掉电的情况下都没有数据丢失。


5. 减少外部DRAM缓存的使用

很多我们竞争对手的产品广泛使用DRAM缓存来提高性能。通常使用DRAM缓存存储查询表或者其他内部元数据,但是在很多情况,也存储写入闪存的用户数据。在突然断电时候,DRAM缓存里面的数据就很脆弱,并会导致重要数据全部丢失。在最坏的情况下,设备的内部元数据被损坏,主机系统也不能识别设备,唯一的办法是进行低级格式化,导致之前存储的所有数据丢失。


仙人掌科技工业级闪存产品认识到使用外部DRAM缓存的弱点,因此,我们特地尝试使用不带DRAM缓存的控制器。所有我们-303、-503与SD产品都不使用外部DRAM缓存。我们-602S SATA产品也不使用外部缓存。只有我们700S SATA产品使用DRAM缓存,但是它有内部备份电源电路保护,这个问题我们将在下一章节讨论。


仙人掌科技工业级闪存产品也认识到我们的产品缺少DRAM缓存后读/写性能偏低。然而,我们更看到解决写入失败的优越性,尤其是在工业级应用中,高可靠性一般比高性能重要。


6. 内部电源备份

为了实现SATAⅡ或者SATAⅢ的高性能,若不用外部DRAM缓存(或者是大的内部DRAM缓冲器),却要求SATA接口达到很高的数据吞吐量那是不可能的。


仙人掌科技工业级闪存产品认识到在突然断电时数据存储在DRAM缓存里面的弱点,在使用这类缓存的产品上,我们都会使用内部电源备份电路。

这个电路的方块图如下图:

来自主机的输入电源给超级电容充电,这个超级电容能提供足够的电量,来确保DRAM缓存里所有数据成功写入闪存。在通常操作时充电电路也有一个旁路通路的作用,来自主机的Vcc直接供给内部电路。充满超级电容需要花一些时间是很重要的。在驱动器上电前一些系统的BIOS可能超时,因此不能识别驱动器。旁路通路可以确保通常设备可以快速启动。


主机提供的Vcc单独一路到电压检测器,并生成一个触发信号,如果Vcc跌落到预设阀值,这个触发信号会直接通知控制器。控制器有专门的软件设计,当收到触发信号,立即阻止SATA接口发送给驱动器数据。然后开始处理DRAM缓存里面的所有数据到闪存。这需要选择正确的超级电容值来确保完成这个处理过程。


通过结合软硬件设计,仙人掌科技确保即使使用了外部DRAM缓存,设备内部的数据也不会损坏。


值得注意的是我们选择超级电容而不是小电容阵列,但是也有其他供应商这样做。原因是将DRAM缓存数据写入闪存需要花较长时间,这个过程可能会需要几秒的时间。钽电容或陶瓷电容的容值是有限的,我们计算显示,即使使用20-30颗这种电容阵列,也不能提供足够的电量确保DRAM缓存处理完成。因此超级电容是唯一选择。 


仙人掌科技工业级闪存产品的700S系列SATA SSD系列产品中,已经实现了超级电容备份设计。

这些产品已经被无数客户测试OK,对突然断电数据丢失有非常好的效果。


7. 严苛的测试

除了以上我们讨论的软硬件设计特征,仙人掌科技还使用专业的测试工具进行电源循环测试,校验我们的产品在突然断电情况下是非常稳定的。下图显示了我们的测试治具,用来测试SD,CF卡与SATA SSD系列与Cfast卡:

测试治具包含一个DC-DC控制器与总线隔离电路,通过串口连接电脑控制。仙人掌科技编写的专用的测试软件进行随机断电,并从DUT隔离接口总线,以便DUT不被接口总线信号供电,具体测试步骤如下:

1. 先复制一些目录与静态数据到DUT。

2. 校验DUT里面的目录与数据。

3. 删除这个目录FOUND.000下被损坏的文件,这是文件系统修复的结果(具体在第3节讨论)。

4. 启动一个随机定时器与DUT断开连接。

5. 写一个大文件(文件A)到DUT。

6. 在DUT里删除"文件A"。

7. 写入另外一个大文件(文件B)到DUT。

8. 删除"文件B"。

9. 重复第5步,直到随机定时器被激活。

10.随机定时器断开与DUT的连接,等待3秒重新连接DUT。

11.扫描与修复被损坏的文件,这是标准操作系统的文件系统的处理过程。

12.跳到步骤2并开始循环。


下图显示了一个典型的测试运行状况:

仙人掌科技工业级闪存产品在突然断电情况下,对新的控制器与软件进行了连续测试以确保数据稳定。


8. 主机的设计考虑

由于在发生写入失败时会导致数据丢失或损坏,我们强烈推荐主机系统有一些数据校验方案,比如用MD5或者类似校验和的方法,来对比主机上已知的正确的文件。这将确保数据被正确的写入了设备。如果校验失败,主机将重写数据到设备,或者执行其他错误修正步骤确保数据完整性。


9. 版本历史

版本

日期

变更

1.01

2006-9-26

初始版本

2.02

2017-6-9

重写

我们希望本白皮书能帮助我们的客户能更好的理解,读者有更深入的问题,随时欢迎联系我们的销售部门.

邮箱:daniel.zhao@cactus-tech.cn


文章原创:工业级闪存专家仙人掌科技




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师