NVMeDirect:超越SPDK

我们知道,从Linux内核版本3.3开始,内核代码自带NVMe SSD驱动程序,运行在内核态。但是,用户的应用程序又都是在用户态运行,所以驱动跑在内核态会有些不便。哪些不便呢?不急,我们先来科普一下Linux的用户态和内核态区别。

在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等。如果所有的程序都能使用这些指令,那么你的系统一天死机n回就不足为奇了。所以,CPU将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令。Intel的CPU将特权级别分为4个级别:RING0[……]

阅读全文

群联主控的那些Bigger术语

最近看到一张Phison(群联)主控的汇总表格,Feature里面各种的术语引起了我的兴趣。

BCH,DevSlp,TLC这些一看就知道是啥。其他的就不是非常直观了。

耳边回忆起冬瓜哥雄厚的嗓音 – 有些术语其实就是旧概念重新起个名字以提升Bigger,就是为了方便去忽悠客户。

再想起蛋蛋经常吹嘘的两道拿手菜:”法式甜酸西红柿片配黄油鸡蛋粒”和”特调微辣酸甜汁焗猪柳伴长葱 ” 我似乎明白了什么 …

 

那我们来看看蛋(Qun)蛋(Lian)是怎么提升Bigger的:

SmartRefresh (这个功能是关于Read Disturb监控的 ) — SSDFans之前有Read D[……]

阅读全文

Linux多队列与scsi-mq

 

时光荏苒,才过了半年的时间,ssdfans已经有14位不同领域的作者了。我们这些作者有个微信群,大家写了新文章就会发到群里求审。话说上回阿呆班门弄斧,写了篇Linux多队列的文章发到群里显摆,结果技术偏执狂冬瓜哥问了很多问题,从NUMA架构到Cache的机制,阿呆看的都湿了,流汗流湿的。最后冬瓜哥还留了个家庭作业:能不能推出个系列3,讲讲block-mq和scsi-mq的区别。

 

没办法,谁叫我开了头呢,阿呆只能求助于Bing搜索了,毕竟百度这种时候不顶用,阿呆又懒得翻墙用Google。看了几篇文章,算是有点眉目了,所以再次鲁班门前弄大斧了。为啥是大斧呢?鲁班发明的不是锯子吗?时代在[……]

阅读全文

黑片管理在FTL中的应用

作者:菜鸟

SSD和U盘的区别

图 1 SSD和U盘结构示意图

两者之间的区别,除了接口协议不一样,其他的惊人的相似,协议不一样,速度不一样。可以通过Nand Flash的Datasheet估算一下速度Nand Flash的速度。

 

图 2 三星K9ADGD8x0D Datasheet Feature

USB2.0理论速度480Mbps,SATA3.0理论速度6Gbps。按照上述Flash Datasheet大致估算一下,一页随机读取Busy时间最大,数据传输最大400MBps(datasheet中此参数的bps中b为一条数据线上的数据,Flash有8条数据线,一个Cycle[……]

阅读全文