如何为嵌入式应用选择适当的SSD
如何为嵌入式应用选择适当的SSD
Selecting the right SSD for evolving embedded applications
变革涉及技术的每一个要素,闪存也不例外。价格下跌加上闪存技术的进步,引发了固态磁盘(SSD)市场的暴涨。由于其卓越的性能,它们正越来越多地取代硬盘驱动器(hdd),并在越来越多的嵌入式计算应用中找到新的角色。
现在,该行业发现自己正处于另一个转变中——从2D NAND到3D NAND flash,它通过多层垂直堆叠存储单元来实现更高的存储密度和更快的读/写操作。
这是一个显著而迅速的发展过程。
不久前,单水平细胞(SLC)被认为是最先进的技术,因为它具有持久性和健壮性。在过去的十年里,由于价格下降和对更高容量的需求,多层电池(MLC)技术开始主导工业市场。去年,96层3D(BiCS4)的固态硬盘变得司空见惯。到2020年,该行业将实现从96层到128层的跨越,带来更大的应用机会。
闪光区也经历了类似的快速进化到闪光电池的下一阶段。32层3D flash MLC/TLC一上市,64层3D TLC就来了。今天,96层3D薄层色谱是标准。早期的采用者制造商已经收到了带有3D四逻辑单元(QLC)的固态硬盘。QLC是一个重要的突破,因为它为每个单元存储4个比特,因此,与TLC技术的“仅仅”8个状态相比,它的状态数量是后者的两倍,使每个单元的容量增加了一倍。
随着3D技术的出现,NAND闪存市场的发展从未像现在这样迅速。将3D nandflash集成到固态硬盘中大大加快了创新的步伐。2019年,96层3D(BiCS4)的固态硬盘开始普及。到2020年中期,预计它们将让位给基于QLC的固态硬盘。今年,3D nandflash将从96层跃升到128层。
研究SSD选择的决策因素
每一次转型都存在障碍。考虑到众多的SSD制造商和变化,用户不一定很容易为他们的应用选择合适的SSD。必须仔细考虑环境条件、大小、写入和擦除周期以及其他因素,才能获得最佳的SSD性能。以下是一些最重要的考虑因素。
容量
有大量适合不同应用的不同固态硬盘。确定正确使用的第一步是查看可用容量。然而,规范中的不一致性使其具有挑战性。一个SSD制造商可以指定完整的闪存大小(即,实际安装了多少闪存),而其他制造商可能只显示一部分容量,并将其余部分隐式用作备用,这也称为过度配置(OP)。OP方法使用额外的闪存容量来执行垃圾收集,以加快内部处理并延长SSD的生命周期。
下面是一个示例:对于闪存存储区域为256GB的SSD,制造商A可能指定完整的256GB,而制造商B指定的是240GB,而制造商C指定的是200GB。对于配备了3D闪存的ssd,应用程序实际可用的容量可能小于指定的容量。一个常见的原因是一个闪存区域被用于内部处理。
因此,工程师应该在接近真实的现场条件下进行测试,以分析固态硬盘的性能和寿命。制造商通常使用“企业”或“客户机”来区分固态硬盘的应用。企业级固态硬盘更多地用于数据中心和服务器应用。与客户端SSD相比,它们需要更大的闪存容量作为备用,以便在更长的时间内提供更稳定的性能。特别是对于存储阵列,工程师应该确保他们的设计在峰值负载期间保持很少或没有延迟降低。
制造商的另一个区别在于使用数据:客户机SSD必须能够在平均40摄氏度下每天运行8小时,而企业级SSD可能需要在55摄氏度的平均操作环境下全天候运行(JEDEC标准)。
工程师还应考虑2D和3D闪存的容量差异。2dnandflash(也称为平面NAND)价格低廉,但该技术已达到其物理极限,其结构约为15纳米(nm)。这种限制可能会导致比特错误和其他问题的增加,因为存储单元的容量太小,无法容纳足够的电子。
3D NAND flash使用多层垂直堆叠,从而实现更高的密度、更好的寿命以及更快的读/写操作和更低的功耗。虽然成本更高、更复杂,但每GB的成本实际上更低,因为3D NAND将如此多的垂直单元封装成一个小尺寸。在相同的长宽尺寸下,它的容量远大于2D NAND。
耐力
在选择SSD时,生存期或写性能耐久性是一个重要的标准,因为错误的选择可能会造成相当大的代价。当使用SSD作为引导介质时,耐久性不起作用,例如,对于接管了数据记录器任务的SSD来说,非常高的耐久性非常重要。
有关写入性能的信息可以在制造商的数据表中找到,通常以写入的TB数(TBW)或每天的驱动器写入数(DWPD)来指定。例如,TBW值为100意味着可以在SSD的整个生命周期中向SSD写入100tb的数据。DWPD值表示根据SSD的容量,每天使用相同数量的数据写入SDD的频率,持续三到五年,直至达到其使用寿命。因此,240GB SSD的DWPD值为1.9/5,这意味着它可以在五年内每天以三倍的数据量写入。
有几个因素会影响固态硬盘的耐久性等级,包括工程师如何以最佳方式实现损耗均衡(在固态硬盘的所有块上均匀地分配数据写入)、写入放大因子和W/E NAND闪存周期。
但工程师并不完全依赖数据表规格。使用合适的工具,工程师需要评估合适的容量、性能和工作温度,以确定固态硬盘在应用中的可实现寿命。在用例中,工程师应在与实际应用程序类似的条件下测试SDD。然后,可以读取测试工具的自我监测、分析和报告技术(SMART)值,或者通过图表将寿命显示为红绿灯函数。
例如,在需要写入大量小数据(<4KB)的应用程序中,可以缩短生存期。在这种情况下,首先打包数据然后写入数据是有意义的。在另一个例子中,SSD的结构会导致固件多次移动传入的数据,直到它最终在闪存中找到自己的位置——这个过程称为写放大因子(WAF)。这个WAF越高,闪光电池的损耗就越大,寿命会迅速下降。
一旦确定WAF并从数据表中获取TBW的相应容量,工程师就可以计算出SDD的近似写入性能。
电源(和电源故障)
功耗是工业嵌入式应用的一个重要指标。由于电源问题,数据传输过程中难免会出现错误。为了解决这个问题,在每个数据传输点都实现了复杂的错误检测和校正(ECC)功能。ECC通过完整的端到端数据路径保护来提供潜在错误,从而确保主机系统和NAND闪存之间的数据传输安全。
工程师需要评估电源的稳定性,同时还要考虑电源电压突然故障的影响。固态硬盘的内部结构及其对输入数据的编程会导致某些问题,甚至会导致数据丢失。
由于集成了低功耗探测器,新型工业固态硬盘在紧急情况下具有良好的保护。如果遇到电压下降,SSD控制器将停止接受任何进一步的命令,并尝试保存当前正在控制器、高速缓存和闪存之间传输的数据。
一些SSD制造商采取额外的步骤,在SSD板上放置电容器,以保持内部电压,以安全地写入当前在DRAM缓存中的数据。工程师应该仔细评估他们的应用需求,以确保他们为固态硬盘设计一个干净稳定的电源。
形状因素
如今大多数固态硬盘都标配了2.5英寸的封装。这个尺寸意味着SSD可以在以前使用过HDD的地方使用,或者工程师只需要一个灵活、易于互换的外形尺寸。2.5英寸SSD可热插拔。
M.2外形尺寸是另一种选择,有多种不同宽度和长度的版本。2280外形尺寸,宽22mm,长80mm,目前最受欢迎。但也有2230个、2242个、2260个和目前的22110个,用于4TB以上的容量。M、 有2280和2242两种,大量生产和使用。但请注意,M.2不像2.5英寸SSD那样是可热插拔的。
接口
接口是SSD和CPU之间的电气和逻辑信号。它定义了SSD的最大带宽、最小延迟、可扩展性和热交换能力。
在三种基本接口选项(串行ATA(SATA)、串行连接SCSI(SAS)和非易失性快速存储器(NVMe)中,SATA几乎是所有系统的标准配置,但在性能或容量方面,它已达到极限。这就是SAS的用武之地。如果需要更高的速度,那么NVMe协议可能是更好的选择。NVMe基于服务器中通常使用的PCI express(PCIe)高速总线标准。随着新的电路板,这种接口越来越多地用于工业和游戏应用。
SSD的速度通常约为500MB/s。但是,带有NVMe的SSD速度要快两到三倍,因为它们是通过PCIe直接连接的,并且SATA/SAS可以绕过瓶颈。工程师应该知道,NVMe固态硬盘有两个版本-gen3x2和gen3x4-这意味着第三代有两个或四个通道来加速数据传输速度。
工具
对于工业嵌入式系统中使用的固态硬盘而言,寿命额定值是一个重要因素。市场上有许多工具,如CrystalDiskInfo、HD Tune、SSD Toolbox、SSD Fresh、HDD Health或Hard Disk Sentinel,可用于预测SSD的使用寿命(有些是免费的)。
但如果工程师需要对固态硬盘的健康状况有更深入的了解,最好的选择是由固态硬盘制造商提供的工具。这些工具提供有关健康和寿命的信息,以及使用的详细信息。工程师也可以设置警报,在固态硬盘出现故障或停止使用之前通知他们。仪表板提供每个已安装SSD的摘要,显示有关运行状况、温度、容量、磨损水平、坏块等的准确信息。换言之,这些制造商的工具几乎总能通过闪存和固件编程来深入了解SSD的复杂深度。
最后的想法
固态硬盘正在经历一场真正的繁荣,并在越来越多的创新应用中占据一席之地。在这方面,2.5英寸的固态硬盘(ssd)在几乎所有领域都取代了较小的硬盘容量。随着从2D NAND到3D NAND闪存的过渡,制造商们正在生产越来越大的ssd和闪存卡,并与HDD展开了激烈的竞争。
固态硬盘的创新并没有停滞不前。闪存制造商已经在开发下一代技术,如相变存储器(PCM)、电阻随机存取存储器(ReRAM)和磁阻随机存取存储器(MRAM)/自旋转移转矩(STT)。看到哪种技术能在大众市场上独树一帜,那将是令人兴奋的。
如何为嵌入式应用选择适当的SSD的更多相关文章
- 深入解析SSD中MLC与SLC的性能差异
固态硬盘(Solid State Disk或Solid State Drive),也称作电子硬盘或者固态电子盘,是由控制单元和固态存储单元(DRAM或FLASH芯片)组成的硬盘. 固态硬盘的接口规范和 ...
- ssd可以用作redo 盘吗?
ssd可以用作redo 盘吗? 1.ssd有写磨损,而且ssd的写性能也不是非常好,ssd只是随机读特别好,因为 ...
- 几个 Ceph 性能优化的新方法和思路(2015 SH Ceph Day 参后感)
一周前,由 Intel 与 Redhat 在10月18日联合举办了 Shanghai Ceph Day.在这次会议上,多位专家做了十几场非常精彩的演讲.本文就这些演讲中提到的 Ceph性能优化方面的知 ...
- Kubernetes之调度器和调度过程
scheduler 当Scheduler通过API server 的watch接口监听到新建Pod副本的信息后,它会检查所有符合该Pod要求的Node列表,开始执行Pod调度逻辑.调度成功后将Pod绑 ...
- MySQL数据库服务器整体规划(go)
我们在搭建MySQL数据库服务器的开始阶段就合理的规划,可以避免以后的很多问题的产生,大大节省我们的时间和精力,在一定幅度上降低成本.当然,这会涉及很多方面.比如机器的选型.业务评估和系统规划等. 所 ...
- Ceph性能优化
几个 Ceph 性能优化的新方法和思路(2015 SH Ceph Day 参后感) 一周前,由 Intel 与 Redhat 在10月18日联合举办了 Shanghai Ceph Day.在这次会议上 ...
- G700存储配置
首先在G700上创建RAID组,这次选择的是SSD做RAID5,SAS磁盘做的是RAID10,把空闲的物理磁盘加入RAID组内,把已分配给RAID组的物理磁盘全部加在一次资源池里面pool 创建主机组 ...
- 高性能MySQL count(1)与count(*)的差别
-------------------------------------------------------------------------------------------------第一篇 ...
- VirtualBox安装Ubuntu-18.04-Server笔记
准备 安装'Windows Terminal' 安装WSL 安装VirtualBox 安装 虚拟磁盘映像文件选择创建在SSD(如果有) 选择openssh,公钥从GitHub获取,前提是GitHub已 ...
随机推荐
- c/c++ 指针数组 和 数组指针
看这个标题都要晕了,我们不妨把他拆开来理解,比较容易 指针数组:对象是一个数组,数组元素的类型是指针 指针数组的定义方式: 类型名 *数组名[数组长度]; 如: int *p[8]; 数组指针:对象是 ...
- Swift系列四 - 枚举
适度给类型起别名能够让代码更加易懂,开发效率更高,可维护性更好. 一.typealias(别名) typealias用来给类型起别名. typealias Byte = Int8 typealias ...
- CM5.11与CDH5.11安装使用说明
1.cdh5 支持jdk7和jdk82.cloudera只支持oracle发布的jdk3.集群中所有主机的jdk版本必须一致4.生态圈中用到的所有组件所依赖的jdk版本必须一致5.cloudera m ...
- 并发容器-CopyOnWriteArrayList
并发容器一览 图源:https://time.geekbang.org/column/article/90201?utm_term=pc_interstitial_938 CopyOnWriteArr ...
- SSM久别遇新坑
SSM久别遇新坑 久别个锤子,也就几天没看,改bug改到怀疑人生 maven的父子模块问题 众所周知,用maven建立一个空的模块,在它之下,将原本的各层次结构分别新建为一个子模块,就能够将各业务进行 ...
- SparkSQL电商用户画像(四)之电商用户画像数据仓库建立
六. 电商用户画像数据仓库建立 7.1 数据仓库准备工作 为什么要对数据仓库分层?星型模型 雪花模型 User----->web界面展示指标表 l 用空间换时间,通过大量的预处理来提升 ...
- [拒绝Visual Studio] 团队博客目录
零.项目展示 Alpha版本项目展示 Beta版本项目展示 一.Scrum Meeting 会议记录 1. Alpha阶段 总体时间安排(粗略): 全部原始会议记录请移步 Google Docs ,这 ...
- java集合-哈希表HashTable
一.简介 HashTable也是一种key-value结构,key-value不允许null,并且这个类的几乎全部的方法都加上了synchronized锁,来保证并发安全,由于加了锁所以性能方面会比较 ...
- jekyll-admin的搭建和使用
通过jekyll搭建好了自己的博客.写博客成为了日常,经过一段时间的摸索,发现jekyll-admin是个好东西,它是博客的后台管理系统,可以方便的管理和编写自己的博客 安装 运行命令gem inst ...
- java基础——参数的应用
命令行传递参数(少用) 有时候,你希望运行一个程序时,在传递给它信息.这个时候,要靠 传递命令行 参数 给main()函数实现. package com.dong.method;public cla ...