目录
几十年来,机械硬盘由于存储容量高,成本低,非易失性等特点,一直是计算机系统中占主导地位的数据存储设备[1]。然而,机械硬盘的存储系统由于内部结构,其IO访问性能无法进一步提高,CPU与存储器之间的性能差距逐渐扩大。为了提高存储系统的运行速度,以Nand Flash为存储介质的固态硬盘技术得到了飞速发展,性能瓶颈得到缓解。
固态硬盘的出现在于科技的发展, 人们对存储系统的要求越来越高而产生的, 固态硬盘在现代社会被广泛的应用在各种领域, 因为其独特的优势而被更多的人接受, 因此对于固态硬盘方向的研究也越来越深入, 许多专业的人才致力于这方面的研究, 希望能有更重要的科学进步。固态硬盘被广泛使用于军事方面、车载系统方面、工程控制技术方面、视频监控存储、网络监控存储、网络终端保存、电力系统方面、医疗信息存储方面、航空技术方面、导航设备存储等重要领域。
关键词:固态硬盘,存储技术,FTL,ECC,应用
固态硬盘也有固态电子盘或电子硬盘之称,主要由主控、缓存、闪存组成,数据通过接口进入主控,经主控中转调配后储存到各个闪存颗粒中。闪存的基本存储单元是"浮栅晶体管"。相较于普通硬盘而言, 使用方法、接口规范以及使用功能都表现出一定的相似性, 具体类型方面有3.5"、2.5"、1.8"等几种。由于缺少了传统硬盘的旋转介质, 固态硬盘有着极佳的抗震性能, 一般扩展温度控制在-45℃至85℃之间。随着信息技术的发展, 如今固态硬盘的应用已经十分普遍, 电力、军事、医疗、航空等领域都可以体现固态硬盘的使用性能。
固态硬盘的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质,另外一种是采用DRAM作为存储介质。最新还有英特尔的XPoint颗粒技术。
基于闪存的固态硬盘(IDEFLASH DISK、Serial ATA Flash Disk):采用FLASH芯片作为存储介质,这也是通常所说的SSD。它的外观可以被制作成多种模样,例如:笔记本硬盘、微硬盘、存储卡、U盘等样式。这种SSD固态硬盘最大的优点就是可以移动,而且数据保护不受电源控制,能适应于各种环境,适合于个人用户使用。寿命较长,根据不同的闪存介质有所不同。SLC闪存普遍达到上万次的PE,MLC可达到3000次以上,TLC也达到了1000次左右,最新的QLC也能确保300次的寿命,普通用户一年的写入量不超过硬盘的50倍总尺寸,即便最廉价的QLC闪存,也能提供6年的写入寿命。可靠性很高,高品质的家用固态硬盘可轻松达到普通家用机械硬盘十分之一的故障率。
基于DRAM的固态硬盘:采用DRAM作为存储介质,应用范围较窄。它仿效传统硬盘的设计,可被绝大部分操作系统的文件系统工具进行卷设置和管理,并提供工业标准的PCI和FC接口用于连接主机或者服务器。应用方式可分为SSD硬盘和SSD硬盘阵列两种。它是一种高性能的存储器,理论上可以无限写入,美中不足的是需要独立电源来保护数据安全。DRAM固态硬盘属于比较非主流的设备。
基于3D XPoint的固态硬盘:原理上接近DRAM,但是属于非易失存储。读取延时极低,可轻松达到现有固态硬盘的百分之一,并且有接近无限的存储寿命。缺点是密度相对NAND较低,成本极高,多用于发烧级台式机和数据中心。
固态硬盘的结构和工作原理和机械硬盘大不一样。它主要由大量NAND Flash颗粒、Flash存储芯片、SSD控制器控制芯片构成。他们三者的关系通过下图进行表示:

在一个固态硬盘上会有若干Flash存储芯片(可能有2颗、4颗、8颗等数值),每颗存储芯片内部包含大量NAND Flash颗粒,目前(2016年)NAND Flash颗粒的制作工艺已经达到12nm(2012年的主流工艺是90nm)。无论NAND Flash颗粒的制作工艺如何,每一个单位的存储容量都是512字节。
固态硬盘的特点有速度快、噪音小、耗能低和没有碎片文件产生,因此,固态硬盘受到了广泛的欢迎。固态硬盘的应用范围极广, 从军事到科技再到民用, 都能看到固态硬盘的存在。除了上述的特点外,它之所以受众就是因为固态硬盘的应用极为便捷, 只需要flash存储颗粒, 再选择合适的控制芯片, 这样就可以制造固态硬盘, 固态硬盘可以容易的安装在电脑中, 即使不懂电脑的人, 也可以按照安装的步骤自己进行安装。
主要由两大模块构成---主控和闪存介质。另外可选的还有Cache缓存单元。主控是SSD的大脑,承担着指挥、运算和协调的作用,具体表现在:
后端实现与闪存的通信,主要包含数据编解码和ECC。

SSD作为数据存储设备, 其实是一种典型的(System on Chip) 单机系统, 有主控CPU、 RAM、 操作加速器、 总线、 数据编码译码等模块(见图2-1) , 操作对象为协议、 数据命令、 介质, 操作目的是写入和读取用户数据[2]。
SSD 控制器根据FTL不同大致可以分为2个大类。消费级SSD和服务器应用等也有所不同。阿里、百度等服务器SSD及SSD控制器也有自研IC和方案。
SSD控制器是固态硬盘的主要控制芯片, 负责指挥、运算和协调SSD设备, FTL (Flash Translation Layer) 算法的运行[3]。主控CPU和普通的嵌入式设备相似, 缓存控制器负责控制DRAM和buffer等。Flash控制器负责把上位机指令转化为NAND可以识别的指令, 并完成ECC (Error Correction Code) 纠错和控制闪存的读写, CPU要能够在并行处理时负载均衡。对于一个称职的主控,需要有能力完成两项艰巨的任务:
1. 为Host和NAND提供适当的对接界面(Interface)以及协议(protocol);
2. 高效地处理数据,优化传输速率,同时保证数据的完整性。
目前主流的SSD主控架构如下图:

主要有三大部分组成:与Host对接的界面(Host interface), 闪存转换层FTL以及闪存对接界面(Flash interface)。
Host interface采用的协议(protocol)包括SATA,PCIe/NVMe SSD协议。
闪存转换层FTL是主控的核心部分,主要实现磨损平衡(Wear-leveling), 垃圾数据回收(Garbage Collection), 坏块管理(Bad Block Management)和数据纠错处理(ECC, Error Correction Code)。
Flash interface包括了SSD主控的flash controller,用来控制主控与NAND闪存之间的数据传输。
NAND闪存是数据归属地,NAND颗粒的存在,赋予了SSD储存数据的使命。为了提高存储的性能,主控会通过不同的通道(Channel)操作NAND闪存。
闪存具有非易失性, 闪存芯片主要为NOR型和NAND型。NOR型主要应用于程序存储, NAND型应用于数据存储, 因此, 固态硬盘存储介质为NAND型。闪存的基本存储单元是一种双层浮栅MOS管, 被捕获电子的数量就像一个静电屏蔽, 最终会改变晶体管的阈值电压。通过仔细调节电子的数量, 可以产生多个阈值电压并将其转换成数字域。根据存储位数, 目前, NAND可以分为:SLC、MLC、TLC、QLC。
FTL(Flash Translation Layer)译为闪存转换层,是Flash Memory(存储介质)与Device Controller(设备主控器)之间的连接关系。
不同于机械硬盘的磁头直接进行数据读写,SSD或者其它以Flash作为储存介质的硬盘无法直接进行数据读写操作。解决这个问题的办法,就是FTL层管理几张逻辑映射表做一个中间转换,Host给定一个逻辑地址,FTL根据这个逻辑地址在逻辑映射表上建立映射关系,连接到Flash上的物理地址。一般来说,FTL将逻辑地址处理后,建立的映射关系包含了Flash的Block编号、Page编号等,数据读取时便根据这些信息在Flash对应的位置上找到数据,传输至Host。
以Flash为储存介质,其可编程次数是必须考虑的重点。拿目前的固态举例,多以TLC Flash为储存介质,其编程次数在1000-1500次之间,若对TLC Flash上的某些block擦除次数超过了次数限制,那么将导致坏块产生,所以FTL须实现磨损均衡,协调整个Flash上的Block,将使用次数少的Block拿出来分担使用次数多的Block的压力。通俗的说,磨损均衡就是以相对最优的选择使Flash上每个Block的擦除次数尽可能相同,以避免有些Block擦除次数过多成为坏块致使用户可用容量变小的问题[4]。
当闪存的空闲空间减小到一定阈值时, FTL负责擦除闪存中无用的数据块, 即垃圾回收。垃圾回收策略由三部分构成, 垃圾回收机制的触发条件、回收块的选择和垃圾回收处理方式, 需要固件在写用户数据时记录和维护每个用户闪存块的有效数据量。
由于擦写磨损、读取干扰、编程干扰等原因造成闪存比特翻转, 当擦除次数增加时, 内存中的氧化物层会逐渐被破坏, 使得捕获电子越来越难, 交叉概率增大。因此闪存需要纠错码方案, 即ECC技术[5]。纠错码从最初的汉明码逐渐到广泛应用的BCH码。随着Flash技术向高3D堆叠和QLC技术的发展, 低密度奇偶校验码 (Low-Density Parity-check Code, LDPC) 引起了广泛的关注, 因为它更接近香农极限。
得益于固态存储优越的性能和特点,SSD的应用场景非常广泛,除了日常中网络终端、电力、医疗、航空、导航设备等诸多领域。
例如在互联汽车应用中,固态驱动器(SSD)被用于满足高性能图形、数据存储和通信的要求,并提供闪存解决方案,帮助交付高性能存储和可靠性在多种车载应用,包括司机辅助技术、娱乐系统、导航系统和3D地图等,在车联网和信息娱乐乘用车中得到了广泛应用。
在航空气象领域, 实时气象数据、预报气象数据、以及数值预报计算数据量每年都以几何倍数增长。如何进行高效和安全的存储成为研究的新课题。随着科技的发展, 由固态电子存储芯片阵列制成的固态硬盘逐渐兴起。目前已被广泛应用于军事、航天、导航、医疗等领域。其高速读写的特性, 以及在固态硬盘组成盘阵后的极大优势, 适合在航空气象领域应用。
随着云计算时代的到来,固态硬盘以其所带来的高效的存储性能优势和节约的能耗成本将使其是未来存储领域中数据中心和云计算的首选配置。
从市场现状来看,目前SSD市场需求持续升温,TrendForce集邦咨询表示,自今年第二季以来,受惠于服务器出货量向上攀升,enterprise SSD采购量也同步增长。其中又以资料中心8TB容量出货占比成长最为明显,推估此一成长趋势将延续至第三季。然受限于晶圆代工产能吃紧,SSD相关零部件可能出现供应不及的情况,实际市场需求仍未得到实质提升。
近年来SSD的爆发式增长也推动了相关技术的进步,在企业级SSD领域,涌现出了不少新技术,比如3D XPoint、QLC等新型存储介质,以及Open Channel SSD、定制化SSD等新产品。如今的存储产业正发生着翻天覆地的变化,而随着新技术的发展与广泛应用,也为闪存行业带来了新的机遇与挑战。
[1]王发宽.基于NADA闪存的混合固态硬盘设计研究[D].杭州:杭州电子科技大学,2017.
[2]SSD Fans.深入浅出SSD[M].机械工业出版社,2018.
[3]李想.基于软件架构的固态硬盘FTL设计[D].武汉:华中科技大学,2015.
[4]赵鹏,白石.基于随机游走的大容量固态硬盘磨损均衡算法[J].计算机学报,2012,35(5):972-978.
[5]周懿,戴紫彬,面向Nand Flash自适应纠错码方案研究与设计[J].计算机工程与设计,2017,38(6):1681-1685.
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于
我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不
我正在使用mechanize登录网站,然后检索页面。我遇到了一些问题,我怀疑这是由于cookie中的某些值造成的。当Mechanize登录网站时,我假设它存储了cookie。如何通过Mechanize打印出存储在cookie中的所有数据? 最佳答案 代理有一个cookie方法。agent=Mechanize.newpage=agent.get("http://www.google.com/")agent.cookiesagent.cookies.to_scookie返回一个Mechanize::Cookiesobject
我以为它们存储在cookie中-但不,检查cookie没有任何结果。session也不存储它们。那么,我在哪里可以找到它们?我需要这个来直接设置它们(而不是通过flashhash)。 最佳答案 它们存储在inyoursessionstore.自rails2.0以来的默认设置是cookie存储,但请检查config/initializers/session_store.rb以检查您是否使用默认设置以外的东西。 关于ruby-on-rails-闪存消息存储在哪里?,我们在StackOverf
我刚刚看到whitehouse.gov正在使用drupal作为CMS和门户技术。drupal的优点之一似乎是很容易添加插件,而且编程最少,即重新发明轮子最少。这实际上正是Ruby-on-Rails的DRY理念。所以:drupal的缺点是什么?Rails或其他基于Ruby的技术有哪些不符合whitehouse.org(或其他CMS门户)门户技术的资格? 最佳答案 Whatarethedrawbacksofdrupal?对于Ruby和Rails,这确实是一个相当主观的问题。Drupal是一个可靠的内容管理选项,非常适合面向社区的站点。它
对于我正在编写的Rails3应用程序,我正在考虑从本地文件系统上的XML、YAML或JSON文件中读取一些配置数据。重点是:我应该把这些文件放在哪里?Rails应用程序中是否有用于存储此类内容的默认位置?附带说明一下,我的应用程序部署在Heroku上。 最佳答案 我经常做的是:如果文件是通用配置文件:我在目录/config中创建一个YAML文件,每个环境有一个上层key如果我为每个环境(大项目)创建一个文件:我为每个环境创建一个YAML并将它们存储在/config/environments/然后我在加载YAML的地方创建了一个初始化