转自:http://blog.51cto.com/alanwu/1426457

Flash存储是存储界的新人和红人。Flash存储系统由于其优异的性能、高效的存储密度和出色的节能特性使得Flash存储有望替代机械磁盘成为企业级存储的核心。未来很有可能所有的数据都会存储在Flash存储介质上面,包括银行、中小企业、互联网、电信等存储大户。

当年沉迷于电子设计的时候,没有想到一个小小的Flash居然能够做成一个新兴的存储产业。做电子设计的时候,很多时候需要用到存储芯片,比较老的存储芯片如TI的27系列紫外线可擦除存储器。

该存储器需要通过紫外线照射的方式擦除已经存储的数据。也就是需要擦除数据的时候,将芯片放到太阳光底下去晒一段时间,晒完之后,存储在芯片内部的数据就没有了,芯片可以继续编程使用了。此类芯片使用非常麻烦,所以记得到2000年初的时候已经很少有人使用这种芯片了,取而代之用的最多的就是电可擦写存储器EEPROM。

EEPROM的典型代表是SPI接口的93CXX系列存储器,以及I2C接口的24CXX系列存储器。这些EEPROM容量都比较小,通常用来存储一些小容量数据,例如系统的配置信息。像网卡的配置信息、PCI桥的配置信息都存储在93C46之类的芯片中。这种存储器一个比较好的特点是可以进行字节级编程,但是读写性能都很差。如果要进行大数据存储,是不能采用此类芯片的。例如,当初我设计一个收费站监控系统,需要存储一个月的营业额,那么需要采用大容量的可编程存储器进行数据存储。此时就需要采用Flash存储芯片了。

和EEPROM相比,Flash存储芯片的一个特点是存储容量大,并且以块单元进行数据擦除操作,以Page页的方式进行数据读写。该类芯片都采用IO接口的方式与CPU相连,即通过命令的方式进行读写、擦除操作。在电子设计的时候,使用Flash芯片最大的问题在于开发Flash的操作函数集,例如读page函数、写page函数、块擦除函数。在操作系统环境里,这些函数就构成了一个Flash芯片的驱动程序。此外,由于控制器通常采用GPIO和Flash相连,因此需要通过程序的方式模拟Flash接口时序。如果设计的板子上有FPGA/CPLD之类的可编程器件,那么可以通过Verilog/VHDL语言或者通过图形的方式设计一个Flash芯片的时序控制器,这样CPU控制器就无需采用软件方式模拟Flash时序了。这些事情是电子设计工程师经常干的,而且也非常熟悉的东西。基于NAND Flash设计的存储系统电路图比较简单,如下图所示:

上面提到的Flash其实是NAND Flash,在电子设计的时候还会经常用到另外一种Flash——NOR Flash。

NOR Flash通常是用作程序存储器,容量不是很大。和NAND Flash相比,其最大的特点是读取速度快,但是写入速度要比NAND Flash慢,容量要小的多。因此,NOR Flash通常被用作程序存储器。在低速的51系统中,程序可以直接运行在NOR Flash上;在高速的ARM系统中,程序需要从NOR Flash中引导到Memory中,然后在Memory中运行。和NAND Flash相比,NOR Flash的接口也大不一样。NOR Flash采用的是标准总线接口,有地址线、数据线和控制线之分,因此,处理器可以直接与NOR Flash相连,而不像NAND Flash一样还需要接口控制器。一个典型的NOR Flash电路原理图如下所示:

NOR Flash中的程序是需要编程写入的。如果是外置式的NOR Flash,那么需要一些小的技巧才能将程序写入NOR Flash。在ARM处理器中,最常用的思路是首先编写一个小的NOR Flash烧录程序,通过ARM处理器内部的Bootload程序将这个烧录程序下载到内存中,然后运行该烧录程序。编写的该烧录程序有如下几个方面的功能:

1、初始化内存,使得ARM处理器能够使用所有的板载内存

2、通过串口接收需要烧录的程序数据,并且把需要下载的数据缓存至内存中

3、能够操作NOR Flash,并且将内存中的数据烧写入NOR Flash

上述这些工作是嵌入式工程师经常需要做的事情。

在8年前未踏入存储这个行业的时候,对NAND Flash也就是这个理解,仅仅是作为电子设计的一个大容量存储器而已,最多在嵌入式的环境下跑跑Flash的文件系统。但是,这么多年对存储进行深入研究、开发之后发现,NAND Flash的确拥有很多的优势,但是同时也存在很多的问题。如果想要将NAND Flash应用到企业级存储领域,那么面临的挑战将十分严峻。前面有一篇文章《采用NAND Flash设计存储设备的挑战在哪里?》也蜻蜓点水的分析了一下NAND Flash作为企业级存储介质存在的一些挑战,真正想把NAND Flash的特点发挥到极致,需要走的路还很长。

业内很多人都在研究Flash Translation Layer(FTL)算法,目的就是要把NAND Flash的问题屏蔽掉,然后对外提供标准的块设备接口,从而使得传统的应用软件可以直接在Flash上跑起来。可以说FTL是Flash存储最底层的核心技术,其解决了不均衡的性能问题、写放大问题、块擦除的寿命问题。通过这些问题的解决,使得NAND Flash很多方面可以和传统的机械磁盘相媲美,在性能上远远超过传统硬盘。到目前为止,个人认为FTL算法已经研究的相对很成熟了,所以,基于FTL的Flash盘应该说可以大规模应用了,其主要障碍就在于NAND Flash芯片成本了。

在企业级Flash存储中,仅仅有FTL算法是远远不够的。基于Flash如何做盘阵?基于Flash如果做文件系统?基于Flash如果做大规模存储系统?这些存储级别的问题还没有得到完美的解决。个人认为,在Flash存储这一块,RAID技术、文件系统、互连技术、多处理器并行(集群)处理技术应该是研发攻关的重点。Flash存储的未来不是梦,NAND Flash半导体的进步;基于Flash的存储技术的进步;准确的市场切入能力将会推动整个Flash存储产业不断前进。

Redefine storage; change the world; make the world better!

Flash存储的故事相关推荐

  1. Flash存储控制器组成!(flash)

    Flash存储控制器组成 Flash存储控制器(Flash Memory Contoller.FMC)包括AHB从接口.Cacte存储控制器.Boot Loader.Flash控制寄存器.Flash初 ...

  2. stm32怎么加载字库_如何用STM32的片内Flash存储中文字库

    原标题:如何用STM32的片内Flash存储中文字库 在 中,成本往往是敏感的,如果你的Flash足够大,就可以省去片外Flash,我用结构体实现了该功能,并分享给广大网友,最后附有下载链接. 在fo ...

  3. Lora开发板Flash存储读写

    · 本文会介绍如何用Lora开发板一步步实现Flash存储读写(基于STM32L151C8T6芯片) 一.看题 二.读题,明白我门最终要实现成什么样的效果        题目的要求就是板子通上电,LE ...

  4. 关于STM32 flash存储数据的一些弊端 及铁电存储器FM25L16B

    flash存储数据是先擦除块,然后在写入.因为需要擦除块,所以瞬间断电的情况,有可能会造成数据丢失. 对于一些不需要再运行时来回擦除写入的情况下是没有什么问题的,但是如果运行中需要来回擦写flash. ...

  5. 内存(RAM或ROM)和FLASH存储的真正区别总结

    内存(RAM或ROM)和FLASH存储的真正区别总结 1.什么是内存      什么是内存呢?在计算机的组成结构中,有一个很重要的部分,就是存储器.存储器是用来存储程序和数据的部件,对于计算机来说,有 ...

  6. 总结内存(RAM或ROM)和FLASH存储的真正区别

    本文主要向大家介绍了内存(RAM或ROM)和FLASH存储的真正区别,通过具体的分析,让大家能够了解它们,希望对大家学习内存(RAM或ROM)和FLASH存储有所帮助. 1.什么是内存 什么是内存呢? ...

  7. 物联网竞赛NB-IoT模块开发——计数器系统(Flash存储)

    核心代码 源码下载地址 物联网竞赛NB-IoT开发--计数器系统(Flash存储)-Flash文档类资源-CSDN下载

  8. uClinux 平台下的Flash存储技术(转)

    摘要:本文较为详细地介绍了嵌入式操作系统uClinux平台下的Flash的存储技术,并给出了基于三星S3C4510系统下Flash存储器的具体设计实例. 关键字: Flash存储器:uClinux:S ...

  9. QSPI Flash存储控制器(概述)

    QSPI Flash存储控制器(概述) 1. 特征概述 内存映射的直接操作模式,用于Flash数据传输和执行Flash存储的代码: 软件设置的间接操作模式,用于低延迟.非计算密集Flash数据传输: ...

  10. MSP430常见问题之FLASH存储类

    Q1:用IAR Embedded Workbench for MSP430 通过JTAG往MSP430上写程序.为了知道片内程序的版本,必须读出Flash 中内容.什么工具软件可以通过JTAG口实现这 ...

最新文章

  1. Javascript 滑动效果菜单 TreeView [Javascript]
  2. 条令考试小程序辅助器_计算机一级考试干货!
  3. 【英语学习】【English L06】U01 Breakfast L3 I'm full from my brunch
  4. 2019蓝桥杯Java决赛题答案_2019-01-15 第八届蓝桥杯javaB组第二题
  5. FISSA:融合项目相似度模型和自注意网络的时序推荐
  6. 如何自己用U盘重装系统
  7. 传统白板行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  8. TIF合并Java代码
  9. Linux内核的温度阀值,Linux内核参数.doc
  10. 计算机创建快捷方式w10,win10中解决无法在桌面添加快捷方式的修复方法
  11. 影响因素分析论文用什么模型好?
  12. bzoj 1467 exBSGS
  13. js页面指定div刷新(局部刷新)
  14. Java文件解析:Excel解析
  15. Intel8086处理器使用NASM汇编语言实现操作系统15-段的定义section/vstart和align语法
  16. go 代理加速配置详解
  17. 从表征到行动---意向性的自然主义进路(续二)
  18. 舒亦梵:4.24非农周即将来临,黄金趋势将会何去何从
  19. VScode 4 括号颜色分级插件(Bracket Pair Colorizer)
  20. android 炫酷的自定义轮播图,Android实现炫酷轮播图效果

热门文章

  1. HTML前端数据管理,前端数据管理
  2. linux系统论文题目大全_计算机应用专业毕业论文题目大全选题
  3. 昆明理工大学计算机面试题,2016年昆明理工大学管理与经济学院F003运筹学复试笔试仿真模拟题...
  4. 西门子PLC中各个组织块OB作用(OB1、OB100……)
  5. 大数据平台需求调研大纲模板
  6. 自动驾驶-激光雷达预处理/特征提取
  7. AutoCad窗口错误调整
  8. 论文纠错和管理文献工具
  9. 我的世界服务器logo在线制作软件,[树形图制作者]Chestcommands and BossShop首家支持图标显示的编辑器...
  10. 【数值分析】python实现四阶龙格库塔法