书签 分享 收藏 举报 版权申诉 / 15

SSD内部数据文件系统EBLOCK链接结构、管理系统及方法.pdf

  • 上传人:v****
  • 文档编号:6254639
  • 上传时间:2019-05-26
  • 格式:PDF
  • 页数:15
  • 大小:1.16MB
  • 摘要
    申请专利号:

    CN201510695564.6

    申请日:

    2015.10.22

    公开号:

    CN105353979A

    公开日:

    2016.02.24

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    专利实施许可合同备案的生效IPC(主分类):G06F 3/06合同备案号:2018430000021让与人:湖南国科微电子股份有限公司受让人:江苏芯盛智能科技有限公司发明名称:SSD内部数据文件管理系统及管理方法申请日:20151022申请公布日:20160224授权公告日:20171027许可种类:普通许可备案日期:20181203|||授权|||实质审查的生效IPC(主分类):G06F 3/06申请日:20151022|||公开

    IPC分类号:

    G06F3/06; G06F12/02

    主分类号:

    G06F3/06

    申请人:

    湖南国科微电子股份有限公司

    发明人:

    李雷; 游毓; 向平; 周士兵; 姜黎; 马翼; 田达海; 彭鹏

    地址:

    410131湖南省长沙市经济技术开发区东十路南10号

    优先权:

    专利代理机构:

    长沙正奇专利事务所有限责任公司43113

    代理人:

    卢宏; 王娟

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种SSD内部数据文件系统eblock链接结构、管理系统及方法,多级eblock链接结构包括:RL0 eblock:用于放置盘片配置信息以及RLn eblock的块位置信息;RLn eblock:用于存放SLT EBLOCK的块位置信息;SLT eblock:用于存放SLT表,供SSD盘片上电时读取。本发明采用多级检索方式访问SLT、FLT等数据,规避多块交替擦写方式下,NAND块寿命消耗过快的问题,并可保证盘片充足的寿命。此方式不需要借助额外的非易失介质,使得完全基于nand flash的SSD内部文件管理得以实现,降低了硬件成本。

    权利要求书

    1.一种SSD内部数据文件管理系统多级eblock链接结构,其特征在于,包括:RL0eblock:用于放置盘片配置信息以及RLneblock的块位置信息;RLneblock:用于存放SLTEBLOCK的块位置信息;SLTeblock:用于存放SLT表,供SSD盘片上电时读取。2.一种SSD内部数据文件管理系统,其特征在于,包括权利要求1所述的eblock链接结构、FILESeblock、buffer、SLT表、逻辑-物理映射表FLT#;其中:FILESeblock:用于存放SSD盘片数据文件内容和各文件最后一次写包含的FLT#;buffer:用于在SSD盘片上电时,根据SLTeblock的块位置信息,从SLTeblock中读取SLT表;缓存逻辑-物理映射表FLT#;根据SLT表记录的最后一次写page的位置,获取逻辑-物理映射表FLT#记录的映射关系,再根据逻辑-物理映射表FLT#读取存放于FILESeblock中的SSD盘片数据文件内容,并缓存读取的SSD盘片数据文件内容;SLT表:用于按文件ID‘#’记录文件file#最后一次写page的位置;该最后一次写page的位置记录有file#的逻辑-物理映射表FLT#;逻辑-物理映射表FLT#:用于记录file#的逻辑地址到物理地址的映射关系。3.根据权利要求2所述的SSD内部数据文件管理系统,其特征在于,所述eblock链接结构的构造过程包括以下步骤:1)选取nandflash中若干固定物理位置的flashblcok作为RL0eblock,并约定SSD在boot阶段从这些固定位置中读取有效的RL0page;2)从nandflash中选取一定数量的flashblock构成一个blockpool,并预留一部分flashblock用于坏块替换和垃圾回收;3)在上述blockpool中获取与设计备份数相同的flashblock,对这些flashblock按顺序记录物理地址构成RLnblockmap,将RLnblockmap作为RLn-1page的一部分记录到RLn-1级中,当前获取的若干个flashblock即构成RLneblock;4)在上述blockpool的剩余flashblock中获取与设计备份数相同flashblock,对这些flashblock按顺序记录物理地址构成SLTblockmap,将SLTblockmap作为RLnpage的一部分记录到RLn中;当前获取的若干个flashblock即构成SLTeblock。4.一种SSD内部数据文件管理方法,其特征在于,该方法主要实现过程为:在SSDboot阶段将SLT表读写到buffer中;读文件file#时,检查file#对应的逻辑-物理映射表FLT#是否在buffer中;若是,则直接查找buffer中的FLT#获取物理地址来读取文件内容;若否,查找buffer中SLT表的’#’号节点获取文件file#最后一次写的物理地址,读取逻辑-物理映射表FLT#到buffer,再查找buffer中逻辑-物理映射表FLT#来读取文件内容;至此完成文件file#的读取;写文件file#时,检查文件file#对应的逻辑-物理映射表FLT#是否在buffer中;若否,则查找SLT表的’#’号节点获取文件file#最近一次写的物理地址,读取逻辑-物理映射表FLT#到buffer中;若是,则直接进行下一步操作;随后,从fileseblock中获取首个空白page写入file#需要更新的数据内容,并将这些page的物理地址更新到逻辑-物理映射表FLT#的对应逻辑节点中;再将逻辑-物理映射表FLT#写入到另一空白page中,更新该空白page的物理地址到SLT表的’#’号节点中;至此,完成文件file#的写入;在SSD盘片掉电时,将SLT表、FLT#下刷到flash中。5.根据权利要求4所述的SSD内部数据文件管理方法,其特征在于,将SLT表读写到buffer中的具体实现过程包括:当SSD盘片上电,读取SLT表到buffer时,首先在RL0eblock中读取一份有效的RL0Page,根据RL0page中块位置信息获取RL1级所在eblock,在RL1级中检索首个空page,读取该空page的上一page数据内容,校验通过后获得有效RL1page;同理,根据RL1page中的块位置信息检索有效SLTpage;写buffer中的SLT表到flash时,若SLT表所在eblock未使用完毕,则将SLTpage内容写入到的SLTeblock首个空白epage;若SLTeblock所在eblock使用完毕,则获取新的eblock,并将SLTpage写入该新的eblock首个空白epage中,随后把SLT表新的块位置信息写入到RL1级中首个空白epage。6.根据权利要求5所述的SSD内部数据文件管理方法,其特征在于,空page的判断方法为:对写入flash的每一page数据进行格式化处理,使得写过的page与空page的比特值为1的个数存在至少5%的差异,对读路径上比特值为1的个数进行统计,若读取的page内容中95%以上的比特值为1,则认为该page为空page。7.根据权利要求4所述的SSD内部数据文件管理方法,其特征在于,将SLT表、FLT#下刷到flash中的具体实现过程包括以下步骤:1)设SSD盘片掉电后的相关数据保存在ID为‘#’的文件中,查找SLT表,读取文件的FLT#到buffer;2)根据FLT#写入掉电数据到所述文件中;3)将FLT#做为文件的最后一部分写入flash;4)更新FLT#的物理位置到SLT表的对应位置;5)检查SLT级是否写满,若写满则进入步骤6),否则写入SLTpage到SLT级中,并跳转到步骤8);6)请求一空白块,写入SLTpage到SLT级中,记录SLT级新的SLTeblockmap;7)写入SLTeblockmap到RL1级;8)结束。

    说明书

    SSD内部数据文件系统eblock链接结构、管理系统及方法

    技术领域

    本发明涉及一种SSD内部数据文件系统eblock链接结构、管理系统及方
    法。

    背景技术

    SSD内部数据文件管理旨在控制SSD内容数据文件的访问。这些数据文件
    主要有盘片日志文件、固件升级文件、配置文件、nandflash块状态、掉电数据
    文件等内容。为保证SSD的可靠性,SSD内部数据管理常采用多备份、SLC模
    式、只使用快page等机制。

    现有SSD内部数据管理采用轻量级的盘片主机数据管理方式,如图1所示。

    在该系统中,给定逻辑地址空间,建立一张逻辑地址到flash物理地址的映
    射表FLT(FirstLevelTable),在FLT中为每个内部数据文件划分一段固定且
    互斥的逻辑地址空间,这些数据文件在分配的逻辑地址空间中存放。此方式下,
    FLT表随着系统数据文件数量的增加而增加,所以,可支持的内部数据文件数
    量有限。另外,需要较大的buffer去缓存FLT表,增加硬件成本;由于各文件
    固定划分逻辑地址空间,当需要增加、删除数据文件时,需要重新构造FLT并
    划分逻辑地址空间,灵活性很差。

    由于FLT较大,FLT也需作为一个文件保存到flash中,所以还需再建立一
    张逻辑地址到flash物理地址的映射表SLT(SecondLevelTable),用于描述
    FLT数据存放关系。在盘片下电时,FLT数据下刷到flash,而SLT数据则被下
    刷到Norflash/EEPROM中SLT所在块的首个空page中。若SLT所在的块记满,
    则需要记录到备用块中,并擦除记满的块。

    SLT数据之所以保存到NorFlash/EEPROM,是因为NorFlash/EEPROM数
    据retention非常可靠且page大小较小(如norpagesize通常为64-256B,但读
    取较慢;nandflashpagesize通常为16KB),SSD控制器在boot阶段可快速、
    有效查询到与SLT紧邻的空page。另外NorFlash/EEPROM块较nandflash块
    的擦写次数多得多,可在Norflash/EEPROM中选用两个块交替擦除/记录掉电
    时的SLT数据。但这意味着,SSD硬盘必须外接额外的非易失介质,硬件成本
    增加。

    当盘片上电时,SSDfirmware从Norflash/EEPROM中给定区域内检索首个
    空page,读取有效SLT到buffer,随后查找SLT从flash中获取FLT到buffer,
    随后即可访问系统区的各个数据文件。通常而言,首先读取掉电数据文件用于
    上电重建。

    读取系统区指定数据文件时,根据文件起始逻辑地址和长度查找FLT读取
    存放于flash物理地址内数据即可。更新指定系统数据文件时,若为page对齐
    写,则将数据写到空白page,更新映射关系到FLT。若非page对齐写,则在执
    行读填充后,再将数据写到空白page,更新映射关系到FLT。

    参考图1,现有技术中,需要在buffer中缓存SLT及整个FLT,并存在于
    SSD的整个运行周期,占用buffer资源较多,增加掉电数据下刷压力,增加硬
    件成本。

    在满足FLT下电下刷条件下,FLT不宜过大,也意味着现有系统区管理方
    法可管理的系统区数据文件数量较少。

    现有设计中,各系统区数据文件从FLT中固定分配逻辑空间用于数据读写。
    观察图1,FLT表中的file之间存在一些无效表项entry,表项空间利用率低下。
    当需要增加或删除某个文件时,将需要对几乎所有系统文件在FLT中的地址段
    进行重新划分,灵活性较差。

    另外,由于nand的比特翻转特性导致检索的空page不可靠且在nand中交
    替擦除/记录会快速消耗nand的块寿命,为有效获取SLT,需要将SLT保存到
    Norflash/EEPROM中,导致硬件成本增加。

    发明内容

    本发明所要解决的技术问题是,针对现有技术不足,提供一种SSD内部数
    据文件系统eblock链接结构、管理系统及方法,解决现有系统区数据管理方法
    灵活性较差,buffer资源占用过多,可支持系统区文件数量较少,表项空间利
    用率低下,需要外接额外非易失介质保存SLT的问题。

    为解决上述技术问题,本发明所采用的技术方案是:一种SSD内部数据文
    件管理系统多级eblock链接结构,包括:

    RL0eblock:用于放置盘片配置信息以及RLneblock的块位置信息;

    RLneblock:用于存放SLTEBLOCK的块位置信息;

    SLTeblock:用于存放SLT表,供SSD盘片上电时读取。

    本发明还提供了一种SSD内部数据文件管理系统,包括上述eblock链接结
    构、FILESeblock、buffer、SLT表、逻辑-物理映射表FLT#;其中:

    FILESeblock:用于存放SSD盘片数据文件内容和各文件最后一次写包含
    的FLT#;

    buffer:用于在SSD盘片上电时,根据SLTeblock的块位置信息,从SLT
    eblock中读取SLT表;缓存逻辑-物理映射表FLT#;根据SLT表记录的最后一
    次写page的位置,获取逻辑-物理映射表FLT#记录的映射关系,再根据逻辑-物
    理映射表FLT#读取存放于FILESeblock中的SSD盘片数据文件内容,并缓存
    读取的SSD盘片数据文件内容;

    SLT表:用于按文件ID‘#’记录文件file#最后一次写page的位置;该最后
    一次写page的位置记录有file#的逻辑-物理映射表FLT#;

    逻辑-物理映射表FLT#:用于记录file#的逻辑地址到物理地址的映射关系。

    本发明所述eblock链接结构的构造过程包括以下步骤:

    1)选取nandflash中若干固定物理位置的flashblcok作为RL0eblock,
    并约定SSD在boot阶段从这些固定位置中读取有效的RL0page;

    2)从nandflash中选取一定数量的flashblock构成一个blockpool,并
    预留一部分flashblock用于坏块替换和垃圾回收;

    3)在上述blockpool中获取与设计备份数相同的flashblock,对这些
    flashblock按顺序记录物理地址构成RLnblockmap,将RLnblock
    map作为RLn-1page的一部分记录到RLn-1级中,当前获取的若干
    个flashblock即构成RLneblock;

    4)在上述blockpool的剩余flashblock中获取与设计备份数相同flash
    block,对这些flashblock按顺序记录物理地址构成SLTblockmap,
    将SLTblockmap作为RLnpage的一部分记录到RLn中;当前获取
    的若干个flashblock即构成SLTeblock。

    本发明还提供了一种SSD内部数据文件管理方法,该方法主要实现过程为:

    在SSDboot阶段将SLT表读写到buffer中;

    读文件file#时,检查file#对应的逻辑-物理映射表FLT#是否在buffer中;
    若是,则直接查找buffer中的FLT#获取物理地址来读取文件内容;若否,查找
    buffer中SLT表的’#’号节点获取文件file#最后一次写的物理地址,读取逻辑-物
    理映射表FLT#到buffer,再查找buffer中逻辑-物理映射表FLT#来读取文件内
    容;至此完成文件file#的读取;

    写文件file#时,检查文件file#对应的逻辑-物理映射表FLT#是否在buffer
    中;若否,则查找SLT表的’#’号节点获取文件file#最近一次写的物理地址,读
    取逻辑-物理映射表FLT#到buffer中;若是,则直接进行下一步操作;随后,
    从fileseblock中获取首个空白page写入file#需要更新的数据内容,并将这些
    page的物理地址更新到逻辑-物理映射表FLT#的对应逻辑节点中;再将逻辑-物
    理映射表FLT#写入到另一空白page中,更新该空白page的物理地址到SLT表
    的’#’号节点中;至此,完成文件file#的写入;

    在SSD盘片掉电时,将SLT表、FLT#下刷到flash中。

    将SLT表读写到buffer中的具体实现过程包括:

    当SSD盘片上电,读取SLT表到buffer时,首先在RL0eblock中读取一份
    有效的RL0Page,根据RL0page中块位置信息获取RL1级所在eblock,在
    RL1级中检索首个空page,读取该空page的上一page数据内容,校验通过后
    获得有效RL1page;同理,根据RL1page中的块位置信息检索有效SLTpage;

    写buffer中的SLT表到flash时,若SLT表所在eblock未使用完毕,则将
    SLTpage内容写入到的SLTEBLOCK首个空白epage;若SLTeblock所在
    eblock使用完毕,则获取新的eblock,并将SLTpage写入该新的eblock首个空
    白epage中,随后把SLT表新的块位置信息写入到RL1级中首个空白epage。

    本发明空page的判断方法为:对写入flash的每一page数据进行格式化处
    理,使得写过的page与空page的比特值为1的个数存在至少5%的差异,对读
    路径上比特值为1的个数进行统计,若读取的page内容中95%以上的比特值为
    1,则认为该page为空page。

    将SLT表、FLT#下刷到flash中的具体实现过程包括以下步骤:

    1)设SSD盘片掉电后的相关数据保存在ID为‘#’的文件中,查找SLT
    表,读取文件的FLT#到buffer;

    2)根据FLT#写入掉电数据到所述文件中;

    3)将FLT#做为文件的最后一部分写入flash;

    4)更新FLT#的物理位置到SLT表的对应位置;

    5)检查SLT级是否写满,若写满则进入步骤6),否则写入SLTpage
    到SLT级中,并跳转到步骤8);

    6)请求一空白块,写入SLTpage到SLT级中,记录SLT级新的SLT
    eblockmap;

    7)写入SLTeblockmap到RL1级;

    8)结束。

    与现有技术相比,本发明所具有的有益效果为:本发明采用多级检索方式
    访问SLT、FLT等数据,规避多块交替擦写方式下,NAND块寿命消耗过快的
    问题,并可保证盘片充足的寿命。此方式不需要借助额外的非易失介质,使得
    完全基于nandflash的SSD内部文件管理得以实现,降低了硬件成本。对SSD
    内部各数据文件独立构造逻辑-物理映射表FLT#,如此,在访问文件时,只需
    存放需要访问文件的FLT#到buffer中即可,并不需要缓存所有文件的FLT,大
    量节省了buffer资源。此方式下,各文件的FLT#互不干扰,使得添加/删除文
    件变得非常灵活,解决逻辑地址空间固定分配下导致数据文件管理灵活性差的
    问题。另外,随着系统区文件数量的增加,在buffer中也仅增加极少的SLT数
    据而已,对掉电下刷数据量影响甚微,可以支持更多的系统文件数量。采用统
    计比特值为1的比例是否超过阈值的方式检测空page,有效解决由nandflash
    比特翻转导致的检测nandflash空page困难问题。

    附图说明

    图1为现有SSD内部文件管理方法简图;

    图2为本发明SSD内部文件管理方法简图;

    图3为本发明数据格式化示例;

    图4为本发明实施例SLTpage结构示例;

    图5为本发明实施例FLT#page结构示例。

    具体实施方式

    本发明原理如图2。图中的eblock(equalblock)由多个内容互为备份的
    block组成(多备份机制)。RL0(recordlevel)中包含盘片配置及RL1的块位
    置等信息,RL1中存放SLT的块位置信息,SLT按文件ID‘#’记录file#最后一
    次写page位置,且该最后一次page写位置记录有file#的逻辑-物理映射表
    FLT#。RL0中的数据在SSD出厂后内容保持不变,前若干page互为备份以增
    强数据可靠性。在RL1与SLT所在块中,只有紧邻空page的数据page为有效
    的RL1page/SLTpage,进一步的,可通过校验来保证数据内容的有效。为增强
    可靠性,本发明对使用到的block采用SLC模式或只使用快page方式来保存数
    据。

    在RL1/SLT中检索到首个空page,则该空page的上一page则为有效RL1
    page/SLTpage。结合图2可知,本发明中不需要额外的非易失介质,只在nand
    中即可完成系统区数据文件的管理,其关键在于解决nand比特翻转导致空page
    检测有效和快速问题。本发明中对写入flash的每一page数据进行格式化处理,
    使得写过的page与空page的比特1的个数存在至少5%的差异。再通计数模块,
    对读路径上比特1的个数进行统计,若对读取的page统计出95%以上的比特为
    1则认为该page为空page。该方法可有效解决在nand中检测空page的有效和
    快速等问题,为省去额外非易介质创造条件。

    由于nandflashblock的擦写次数较Norflash/eeprom少得多,若选用两个块
    交替擦除/记录SLT数据,被选用block的寿命将很快耗光,这也是导致原有方
    法中需使用额外非易失介质的主要原因之一。为解决这一问题,本发明采用多
    级检索方式访问SLT。图2中RL0,RL1,SLTeblock构建了这种多级检索模
    型。读取SLT到buffer时,首先在RL0中读取一份有效的RL0Page,根据RL0
    page中块位置信息获取RL1所在eblock,在RL1中检索首个空page,读取空
    page上一page数据内容,校验通过后即获得有效RL1page。采用类似方式根据
    RL1page中的块位置信息检索有效SLTpage。写buffer中的SLT到flash时,
    若SLT所在eblock未使用完毕,则将SLTpage内容写入到的SLTeblock首个
    空白epage(eblock内page号相同的互为备份的flashpage);若SLT所在eblock
    使用完毕,则获取新的eblock并将SLTpage写入其首个空白epage,随后把
    SLT新的块位置信息写入到RL1eblock中首个空白epage。

    SLT的读取,只需在盘片上电时读取一次到buffer便可。读文件file#时,检
    查其对应的FLT#是否在buffer中;若是,则直接查找buffer中的FLT#获取物
    理地址来读取文件内容;若否,需要查找buffer中SLT的’#’号节点获取file#最
    后一次写的物理地址,该物理地址指向图2中虚线框黄色矩形FLT#,读取
    FLT#到buffer,再查找buffer中FLT#来读取文件内容;至此完成文件file#的读
    取。写文件file#时,检查其对应的FLT#是否在buffer中;若否,则需查找SLT
    的’#’号节点获取file#最近一次写的物理地址,该物理地址指向图2中虚线框黄
    色矩形FLT#,读取FLT#到buffer中;若是,则直接进行下一步操作;随后,
    获取一个或多个空白page写入file#需要更新的数据内容,并将这些page的物
    理地址更新到buffer中FLT#的对应逻辑节点中;再将buffer中FLT#写入到另
    一空白page中,更新该page的物理地址到SLT的’#’号节点中;至此,完成文
    件file#的写入。由于掉电后,buffer中的数据会丢失,所以在盘片掉电时,需
    要执行一次写SLT到flash的操作。

    据上述可知,SLT在上电时读取到buffer,读写文件时,SLT内容在buffer
    中更新即可,在掉电时才将SLT数据下刷到flash,以充分减少对flash的磨损。
    该方法可有效解决nandflash下SLT记录问题,以达到省去外挂额外非易失介
    质的目的,减少硬件成本。假设在每次下电时写入RL1eblock及SLTeblock,
    每个flashblock有256flashpage,则当RL1eblcok写满时,需要下电256x256
    次,足以满足大多数盘片寿命需求。若需要更多的下电次数,还可再增加RLn
    的级数。

    本发明中抛弃现有发明中对SSD内部所有数据文件统一编址构造逻辑-物
    理映射关系表的方式,转而对每个文件file#单独构造逻辑-物理映射关系FLT#,
    FLT#在file#的最后一次写操作中被写入flash,SLT中按文件ID‘#’记录FLT#
    的物理存放地址。读取flie#时,在SLT中查找FLT#的存放地址,读取FLT#到
    buffer,再依据FLT#即可访问存放于flash中的file#。由此可见,本发明只需分
    配足以保存最大的FLT#的buffer即可,可有效节省buffer资源。SSD内部数据
    文件数目越多,这种资源节省效果越明显。另外,各文件独立构造FLT#,SLT
    按文件ID记录FLT#的物理位置的方式,可以非常方便的在SLT中添加删除文
    件,增强文件管理灵活性。再者,若增加系统区文件数量,在buffer中也仅增
    加极少的SLT数据节点而已,对掉电下刷数据量影响甚微,因此该方案可以支
    持更多的文件数量。

    实施例:

    A)nandflash空page检测

    首先需要对page格式化,其目的在于,使写入到flashpage的任何数据,读
    取时,该flashpage中比特值为1的比例不超过设定阈值。例如,可对flash
    page做如图3所示格式化,其中data段为文件数据内容;signature可指示当前
    eblock类型;crc段为data段的循环冗余检验值;pattern段填0,设阈值为95%,
    则pattern段大小为:pageSize*(1-0.95)。

    如此即可保证被写过的page中bit值为1的比例不超过阈值95%。

    其实检测空page,在读路径总线之上可做一简单逻辑模块,启动该模块后,
    该模块即可对读路径中经过的每一个数据中比特值为1的个数进行累计计数,
    读完指定长度后,停止计数并上报cpu,随后cpu即可计数出flashpage中比特
    值为1的比例,再同设定阈值比较判断当前flashpage是否为空page。

    B)构造RL0,RL1,...,RLn多级eblock链接关系

    eblock由多个互为备份的flashblock组成。例如,设计eblock由两个互为备
    份的flashblock组成,若构造RL0,RL1,STLeblock三级eblock链接关系,
    可通过如下步骤实现:

    (1)从nandflash中选取一定数量的block构成一个blockpool,其具体数量
    根据需要支持的文件数量、RL的级数等确定,并预留一部分flashblock用于坏
    块替换。

    (2)构造RL0EBLOCK,RL0的构造较为特殊,可以视为整个链接关系的
    ‘根’,为让主控在boot阶段可快速获取这个‘根’内容,推荐RL0采用固定flash
    block分配方式,主控在boot阶段到约定的固定位置读取即可。例如,可选取
    2-4个die的block编号为0的page0-8记录相同的RL0page数据(RL0page中
    含有RL1blockmap数据)。在SSD主控boot时,随机读取上述范围page的内
    容,直到读到有效的RL0page即可。

    (3)构造RL1级,在步骤(1)中的blockpool中获取2个flashblock,对这
    两个flashblock按顺序记录物理地址构成RL1blockmap,将RL1blockmap作
    为RL0page的一部分记录到RL0中。当前获取的2个flashblock即构成RL1
    级。

    (4)构造SLTEBLOCK,在步骤(1)中的blockpool中获取2个flashblock,
    对这两个flashblock按顺序记录物理地址构成SLTblockmap,将SLTblock
    map作为RL1page的一部分记录到RL1中。当前获取的2个flashblock即构成
    SLTEBLOCK。

    自此完成RL0,RL1,STLeblock三级eblock链接关系。其他n级链接关
    系以此类推。

    C)SLTpage、FLT#page结构示例。

    SLT按文件编号‘#’记录文件最后一次写的物理地址(需要查找fileseblock
    map表将eblock地址转化为flashblock地址),该page中保存该文件的FLT#。
    可定义SLTpage结构如图4所示。其中freeepagecnt描述SLTeblock还剩余多
    少空白page;eblock-epageinfo记录用于保存文件的所有eblock的epage信息
    (如freeepage数、有效epagemap等),结合freeflashblocktable供垃圾回收
    或坏块替换使用。eblockmap记录保持文件的eblock编号与flashblock的映射
    关系,通过该表可将eblock编号转化为多个互为备份的flashblock地址。

    FLT#记录文件ID为‘#’的逻辑地址到物理地址的映射关系(映射基本单元
    根据设计需求设定,如图5中的映射基本单元为page大小),可定义FLT#
    page结构如图5所示,需要查找SLTpage中的fileseblockmap表将图中的
    eblock地址转化为flashblock地址。

    G)power-onboot

    在读写ssd内部数据文件之前,必须在ssdboot阶段将SLT和fileseblock
    map等数据读取到ram(buffer)中,其主要流程如下(省略异常处理流程):



    D)readfile

    假设需要读文件ID为‘#’,起始逻辑地址为offset(512Byte对齐),长度为
    len(512Byte对齐)的文件,操作步骤不下:


    E)writefile

    假设需要重写文件ID为‘#’,起始逻辑地址为offset(512Byte对齐),长度
    为len(512Byte对齐)的文件,若不为pagesize对齐写,还需要执行读填充操
    作。下面仅给出pagesize对齐写情况下操作步骤:



    F)SSDpoweroff

    掉电时,需要对将SLT、FLT#、eblockmap等信息下刷到flash,可参考以下
    方式完成这些数据的下刷:


    关 键  词:
    SSD 内部 数据 文件系统 EBLOCK 链接 结构 管理 系统 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:SSD内部数据文件系统EBLOCK链接结构、管理系统及方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6254639.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1