戏说FTL (4) – 忆江南

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

上次戏说(2)–鸿门宴说的页映射和块映射两种方式,混合映射简单提了几句,本来想偷个懒就这么带过去 (没怎么花时间去了解)。

睿智的群友们有朝阳区群众一般雪亮的眼睛,立马就发现这一犯罪事实,并立即向阿呆进行了举报。

阿呆非常重视,立即要求我做积极的自我批评和深刻检讨,并向群友们郑重承诺,一定在今年之内把混合映射讲一讲。

作为SSDFans的新员工,心里说着不,嘴巴却很诚实 – 立马向领导承诺保证完成任务。

 

时间总是过得很快,一晃一个多月了我都还没开始动笔。好在蛋蛋每次都能赋予我无限的灵感,那是一次在南京大排档的腐败活动,他一边吃着东西,一边回忆他当年泛舟秦淮河畔的事迹。别人都在喝茶看景,他一路拼命找陈圆圆,董小宛,李香君等人的香闺,然后自己脑补自己若是当年晚明王孙贵族,定当如何如何… (冬瓜哥和唐杰两位”脑出”高手,是不是也有类似的习惯?)

不知不觉一顿饭吃好了,他还在晚明没回来,在我们焦急得等着他买单的时候,他开始追思柳如是和钱谦益: 当时钱谦益做学问的时候,最喜欢柳如是陪着他身边,钱谦益作为当时的东林党党魁,家里藏书之多你懂的,每次他需要什么资料,都是柳如是帮他去找,哪本书在哪,一找一个准。

做学问做到这样子的夫唱妇随,柳如之于钱谦益,就如映射表之于SSD。

顺着这个才子佳人的思路往下走,联想到了另外一对更牛逼的:李清照和赵明诚 。在那个没有电的年月,这二位每天吃完晚饭后的休闲活动是这个样子的:

  1. 先泡上一壶茶
  2. 再端出一摞书
  3. 我说一段话
  4. 你答这段话在哪一本书的哪一章节哪一页
  5. 答对了,我敬你一杯茶
  6. 答错了,你敬我一杯茶

何等逍遥自在,何等的niubility — 他们俩在知识点映射的水平上已经从夫唱妇随升级到了琴瑟和鸣。

FTL映射机制也是朝着这个方向进化的,从页映射、块映射的单一模式到混合映射。

混合映射中最普遍的是日志块映射:在数据块映射表(Data block mapping table)的基础上多了一张日志块映射表(Log-block page mapping table)。

数据块映射表不用解释了 (粒度:块)

日志块映射表(粒度:页)长的复杂一点

数据写入流程:

  1. 数据块Block 3000,4个page已经写满,分别写入数据a, b ,c ,d

  1. 通过查询数据块映射表,对应的逻辑块是1

  2. host要修改逻辑块1的数据,将b, d改为b’, d’
  3. 通过查询日志块映射表,对应的日志块是Block 1000,此时4个logical page offset对应的Physical Page offset都还是null

  1. 将b’, d’ 分别写入 Block 1000的page 0, 1,此时日志块Block 1000 内容如下:

  2. Block 1000里的logical page offset要跟Block 3000保持一致,此时日志块映射表内容如下

  3. 此时host继续修改逻辑块1的数据,将b’, d’改为b”, d”
  4. 因为Block 1000还有空间,继续写入,此时日志块Block 1000 内容如下:

  5. 此时日志块映射表内容如下:

  6. 这个时候日志块Block 1000 跟数据库3000一样也满了,同时两边都有没用的数据

  7. 这个时候,发动GC,找一个空的Block 9000把有效数据 a, b”, c, d”写入,同时把Block 3000, Block 1000擦除

  8. 修改数据块映射表

     

数据读取既需要读取日志块映射表,又需要读取数据块映射表。

如果Host需要读取逻辑块7的数据,需要同时读取Block 2000 (Log)和Block 8000 (data)

以上为了方便理解放了很多图,比较有技术感觉(冬瓜哥用语)的童鞋,看完蛋蛋追思的部分可以直接goto下面这张图。

 

 

补充:

  1. 最早的日志块策略,每次向日志块写入数据的时候必须与原数据块物理偏移相同。

    前面写入数据的例子5~8步骤,如何采用老的策略,就需要两个日志块来存放新写入的数据

这种策略块利用率低,对同一逻辑地址连续进行更新时浪费十分严重。

  1. 正文中的例子应该是BAST映射策略,每个数据块只与一个日志块相关联。在这个基础上继续优化算法,又衍生出FAST和超级块两种映射策略 — 容我再慢慢理解一下
分类目录 未分类.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

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