FTL算法是什么?
在SSD中,数据存进去只是第一步。主机读写的时候,SSD怎么知道某个逻辑地址对应的数据到底在闪存的哪个物理位置呢?这就轮到FTL(闪存转换层)出场了。在确定主控和闪存型号之后,SSD的性能、可靠性和寿命,将很大程度上取决于FTL算法。FTL是固件的灵魂,而本文就来聊聊这个核心技术。
1.FTL是什么
FTL(Flash Translation Layer,闪存转换层)最基本的工作,就是把主机(电脑)使用的逻辑地址,翻译成闪存上的物理地址。这个过程,也可以称为映射。
每次写入数据,FTL都会记录下这个映射关系;下次读取时,根据映射找到数据位置,返回给用户。
不过,现在的FTL早已不只是“翻译”。它还要负责垃圾回收、磨损均衡、坏块管理、异常掉电处理等一大堆工作。它的目标,就是让SSD用起来像传统硬盘一样简单,通过各种算法,让用户不用操心闪存的底层特性。

2.闪存有哪些“怪脾气”?
SSD使用的存储介质一般是NAND闪存。由于闪存本身存在不少特殊的物理特性,因此也带来了一系列可靠性问题,这需要FTL逐一应对。
● 不能覆盖写:闪存在写入前必须先擦除,而且不能直接在原位置修改数据,要写到新地方。这样旧位置的数据就变成了“垃圾”,占着空间。当空闲块不够时,FTL就得做垃圾回收。把几个块里的有效数据合并搬到新块,再擦除旧块,腾出可用空间。
● 有寿命限制:每个闪存块擦写次数有限(用P/E次数衡量)。如果老往少数几个块上写,它们会很快报废。这时,FTL要做磨损均衡,让所有块的写入量尽可能平均,延长整体寿命。
● 读太多也会出错(读干扰):某个块被读得太频繁,数据也可能出错。FTL一般会在读数达到阈值前,把数据搬走,防患于未然。
● 数据会随时间丢失(电荷流失):长期不上电,数据可能慢慢消失,并且在高温下流失速度会更快。所以只要上电,FTL都会定期扫描,发现弱化的数据就搬到新块,刷新一遍。
● 坏块:NAND闪存在出厂时就可能带有一定数量的坏块,在使用过程中还可能出现新的坏块。FTL要负责坏块管理,标记并避开这些坏块。
● 模拟SLC:当前全球主流闪存厂商都把绝大部分产能给到了TLC和QLC。但SLC具备更耐用、更可靠的特点。因此,部分航天或军工应用场景的SSD,就会通过FTL来模拟SLC,提升整盘的写入性能和可靠性。

3.FTL的两种实现方式
值得补充的是,FTL根据运行位置的不同,有Host-Based和Device-Based两种方式:
● Host-Based(主机端):FTL跑在电脑的CPU和内存里,需要SSD厂商和用户深度合作,多见于部分数据中心和企业级应用。
● Device-Based(设备端):FTL在SSD自带的控制器和RAM里运行,位于固件中间层,向上承接主机的读写请求,向下转换为对闪存的实际操作。

目前,市面上绝大多数SSD采用的都是 Device-Based 方式。正如文章开头讲到的,FTL是固件的灵魂。而主控是固件的载体,二者必须深度协同,才能真正发挥闪存的潜力。
然而,市面上的通用主控和参考固件大多面向消费级场景设计,往往难以兼顾极端温度、频繁掉电、强振动或长时间不通电等特殊环境下的可靠性需求。随着闪存工艺不断微缩、质量问题增多,FTL需要更灵活地调整映射策略、更精细地管控异常处理流程。
因此,在航天、军工、工业控制等对可靠性和耐久性要求极高的领域,自研主控与自主固件的价值,并不只是“拥有自己的芯片和代码”,而是能够从硬件到FTL,对整套闪存管理机制进行协同设计。

天硕存储通过对主控芯片的研发、对固件代码的自主编译,在为特种场景中加入了增强型 ECC 引擎、快速擦除等专用硬件模块的同时;还可以深入地调整 FTL 的映射策略、异常处理和闪存管理逻辑,快速适应不同的颗粒特性和特定的写入模式。
同时,为了满足严苛的应用环境要求,天硕还加强了模拟 SLC、数据定期刷新和异常掉电快速恢复等机制,使得其能够在极端情况下依旧具有稳定的表现、持久的数据保持能力和更长的写入寿命,从而保证关键任务应用的安全性与可靠性。
▎相关文章