Firmware开发

SSD Firmware开发需要考虑的问题:

OP空间选择:OP空间的大小直接关联成本和写放大,OP大则写放大小成本高,OP空间小则写放大大成本低,需要找到一个均衡点;

NAND空间的组织管理:如何组织所有空间,粒度是多大;如果划分用户空间和firmware运行使用空间;

Raid机制:需要N个lun划分一组,来做raid,从而达到数据保护的目的。

Wear leveling(磨损均衡):如何让写入数据均匀分布,如何避免某些块被擦除次数太多;

FTL管理:如何存储FTL,FTL是否有并发访问,如何控制;

GC策略:主动回收还是被动触发回收,选择何种回收策略以及写放大可以降低到多少。

background task:为应对NAND存储失效特性,需要定期扫描重新写入某些数据,如何安排这个工作。

SSD Firmware编程方式:

异步IO请求:IO设备为达到高性能都要采用异步IO,processor之间发送请求都是异步机制,需要保存上下文。

事件驱动方式:polling方式会造成空转及浪费,导致延迟高,使用事件驱动方式,某个事件发生时直接使用绑定函数进行处理,高效。

状态机驱动方式:一个IO请求会经历N个阶段,为编程简单,可以在不同阶段赋予它不同的状态,状态切换时直接调用总的状态机函数就能进行到下一步,简化编程。

Cache机制:为降低延迟,不会等到数据真的写入到NAND中之后再返回给用户,写入到cache就返回,需要电容保护cache。

猜你喜欢

转载自www.cnblogs.com/whutyuxinghai/p/9120625.html