StarBlaze告诉你Program Suspend有啥用

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

对于NAND来说,Read操作是最快的,Program次之,最慢的是Erase。

下面这张图能够给你直观的认识:

对一个LUN来说,命令只能一个一个执行,假设一个Read命令跟在一个Program后面,那么对这个Read命令来说,他的Latency(时延)= tProg+tR。

Suspend命令是干什么用的呢?就是暂停先发的Program(或Erase)命令,让后发的Read先执行,然后再恢复被暂停的Program(或Erase)命令。

这样这个read命令的时延就大大缩短 — tProg+tR—>tR.

想法很好,在实际执行中其实有很多需要考虑的地方,比如:

  • 对哪些地址的访问使用这个功能?
  • 什么时候suspend,什么时候恢复?
  • 固件和HW怎么配合?
  • Multi-plane的时候要怎么处理?
  • 频繁的Suspend Program(Erase)可能会影响GC

举个例子: Program1->Program2->Program3->Read1->Program4->Program5这个序列。

  • 应该把Program1~3都暂停,等Read1完成,再恢复他们吗?
  • 如果不是,应该暂停前面几个命令?
  • 如果Program1很急,想把Read1加到Program1和Program2之间,能实现吗?
  • 如果Host要求Program1~2不能被断开,能实现吗?

看看StarBlaze的方案:

FW这边的命令序列下来以后,全部进入一个叫做Queue Scheduler的模块,这个模块根据设定好的硬件逻辑对进来的命令重新排序再交给NAND Controller执行。

这个Queue Scheduler的深度,跟FW之间如何交互,具体的实施逻辑,StarBlaze没有公布,大家看看效果就好。

平均时延和最大时延都有明显的降低。

分类目录 SSD.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。