存取闪存模块的方法及相关的闪存控制器与电子装置与流程

文档序号:17721084发布日期:2019-05-22 02:10阅读:168来源:国知局
存取闪存模块的方法及相关的闪存控制器与电子装置与流程

本发明有关于闪存,尤指一种存取闪存模块的方法及相关的闪存控制器。



背景技术:

在闪存控制器操作的过程中通常会在本身的缓冲存储器中存储实体地址至逻辑地址对照表或是至少一个逻辑地址至实体地址对照表,而在闪存控制器接收到读取命令时可以从上述对照表搜寻出所需的实体地址。然而,随着区块的大小增加及所包含的资料页也跟着变多的情形下,上述对照表的大小也会大幅增加,因此搜寻出所需的实体地址的时间也会增加许多,因此影响到闪存控制器的效能。



技术实现要素:

因此,本发明的目的的一在于提出一种存取闪存模块的方法,其可以在闪存控制器接收到读取命令时有效率地搜寻出所需的实体地址,以改善闪存控制器的效能。

在本发明的一个实施例中,揭露了一种存取闪存模块的方法,其包括:建立实体地址至逻辑地址对照表,其包含了连续的实体地址及其对应的逻辑地址;建立逻辑地址群组记录表,其中该逻辑地址群组记录表标注了多个逻辑地址群组的状态,其中每一个逻辑地址群组的该状态用来表示该实体地址至逻辑地址对照表中是否有记录位于该逻辑地址群组的中的任一逻辑地址;接收读取命令以要求读取该闪存模块中的数据,其中该读取命令包含了特定逻辑地址;以及根据该特定逻辑地址所对应到的特定逻辑地址群组的状态,以判断是否搜寻该实体地址至逻辑地址对照表,以得到该与该特定逻辑地址相对应的特定实体地址,以供自该闪存模块中读取该数据。

在本发明的另一个实施例中,揭露了一种闪存控制器,其中该闪存控制器用来存取闪存模块,且该闪存控制器包括只读存储器、微处理器以及内存。该只读存储器用来存储程序代码;该微处理器用来执行该程序代码以控制对该闪存模块的存取;以及该内存存储了实体地址至逻辑地址对照表以及逻辑地址群组记录表,其中该实体地址至逻辑地址对照表包含了连续的实体地址及其对应的逻辑地址,且该逻辑地址群组记录表标注了多个逻辑地址群组的状态,其中每一个逻辑地址群组的该状态用来表示该实体地址至逻辑地址对照表中是否有记录位于该逻辑地址群组的中的任一逻辑地址;其中当该微处理器接收读取命令以要求读取该闪存模块中的数据时,该微处理器根据该读取命令所包含的该特定逻辑地址所对应到的特定逻辑地址群组的状态,以判断是否搜寻该实体地址至逻辑地址对照表,以得到该与该特定逻辑地址相对应的特定实体地址,以供自该闪存模块中读取该数据。

在本发明的另一个实施例中,揭露了一种电子装置,其包括闪存模块以及闪存控制器,其中该闪存控制器用来存取该闪存模块,并建立实体地址至逻辑地址对照表以及逻辑地址群组记录表,其包含了连续的实体地址及其对应的逻辑地址,其中该实体地址至逻辑地址对照表包含了连续的实体地址及其对应的逻辑地址,且该逻辑地址群组记录表标注了多个逻辑地址群组的状态,其中每一个逻辑地址群组的该状态用来表示该实体地址至逻辑地址对照表中是否有记录位于该逻辑地址群组的中的任一逻辑地址;其中当该闪存控制器接收读取命令以要求读取该闪存模块中的数据时,该闪存控制器根据该读取命令所包含的该特定逻辑地址所对应到的特定逻辑地址群组的状态,以判断是否搜寻该实体地址至逻辑地址对照表,以得到该与该特定逻辑地址相对应的特定实体地址,以供自该闪存模块中读取该数据。

附图说明

图1为依据本发明实施例的一种记忆装置的示意图。

图2为根据本发明实施例的存取闪存模块的流程图。

图3为实体地址至逻辑地址对照表的示意图。

图4为逻辑地址群组记录表的示意图。

图5为逻辑地址至实体地址对照表的示意图。

图6为根据本发明另一实施例的存取闪存模块的流程图。

图7为本发明实施例的使用实体地址至逻辑地址对照表来更新逻辑地址至实体地址对照表的示意图。

其中,附图标记说明如下:

100记忆装置

110闪存控制器

112微处理器

112c程序代码

112m只读存储器

114控制逻辑

116缓冲存储器

118接口逻辑

120闪存模块

130主装置

132编码器

134解码器

200~218、600~618步骤

300实体地址至逻辑地址对照表

310、320闪存芯片

400逻辑地址群组记录表

510_1~510_2逻辑地址至实体地址对照表

b_0~b_m区块

p0~pn资料页

lba_0~lba_1279逻辑地址

lbag1~lbag5逻辑地址群组

具体实施方式

参考图1,图1为依据本发明实施例的一种记忆装置100的示意图。记忆装置100包括闪存(flashmemory)模块120以及闪存控制器110,且闪存控制器110用来存取闪存模块120。依据本实施例,闪存控制器110包含微处理器112、只读存储器(readonlymemory,rom)112m、控制逻辑114、缓冲存储器116、与接口逻辑118。只读存储器112m用来存储程序代码112c,而微处理器112则用来执行程序代码112c以控制对闪存模块120的存取(access)。控制逻辑114包含了编码器132以及解码器134,其中编码器132用来对写入到闪存模块120中的数据进行编码以产生对应的校验码(或称,错误更正码(errorcorrectioncode),ecc),而解码器134用来将从闪存模块120所读出的数据进行解码。

于典型状况下,闪存模块120包含了多个闪存芯片,而每一个闪存芯片包含复数个区块(block),而该控制器(例如:通过微处理器112执行程序代码112c的闪存控制器110)对闪存模块120进行抹除数据运作以区块为单位来进行。另外,区块可记录特定数量的数据页(page),其中该控制器(例如:通过微处理器112执行程序代码112c的内存控制器110)对闪存模块120进行写入数据的运作以数据页为单位来进行写入。在本实施例中,闪存模块120为立体nand型闪存(3dnand-typeflash)。

实作上,通过微处理器112执行程序代码112c的闪存控制器110可利用其本身内部的组件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存模块120的存取运作(尤其是对至少一区块或至少一数据页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与主装置(hostdevice)130沟通。缓冲存储器116以随机存取内存(randomaccessmemory,ram)来实施。例如,缓冲存储器116可以是静态随机存取内存(staticram,sram),但本发明不限于此。

在实施例中,记忆装置100可以是可携式记忆装置(例如:符合sd/mmc、cf、ms、xd标准的记忆卡),且主装置130为可与记忆装置连接的电子装置,例如手机、笔记本电脑、桌面计算机…等等。而在另一实施例中,记忆装置100可以是固态硬盘或符合通用闪存存储(universalflashstorage,ufs)或嵌入式多媒体记忆卡(embeddedmultimediacard,emmc)规格的嵌入式存储装置,以设置在电子装置中,例如设置在手机、笔记本电脑、桌面计算机的中,而此时主装置130可以是该电子装置的处理器。

参考图2,其为根据本发明实施例的存取闪存模块120的流程图。在步骤200中,流程开始。在步骤200中,流程开始。在步骤202中,闪存控制器110接收来自主装置130的至少一写入命令,以将多笔数据写入至闪存模块120的区块中。在本实施例中,参考图3,闪存模块120包含了多个闪存芯片310、320,每一个闪存芯片包含了多个区块b0~b_m,而每一个区块包含了n个资料页p0~pn。在以下的说明中,闪存控制器110将数据循序写入到闪存芯片310的区块b_0,然而,需注意的是,上述的“区块”在实作上也可以是包含了多个芯片的位于不同平面(plane)的多个区块(一般称为“超级区块”),举例来说,假设闪存芯片310、320均包含了两个平面(plane),而区块b_0及b_m是位于不同的平面,则闪存芯片310的区块b_0、b_m以及闪存芯片320的区块b_0、b_m可以构成一个超级区块。

在数据写入至区块b_0之前,微处理器112会建立实体地址至逻辑地址对照表(以下称p2l对照表)300,并存储在缓冲存储器116的中,其中p2l对照表300包含区块b_0中的连续的数据页的实体地址p0~pn,以及所对应的逻辑地址。详细来说,闪存控制器110首先将来自主装置130且具有逻辑地址lba_5的数据写入至数据页p0中,接着,依序将来自主装置130且具有逻辑地址lba_500、lba_350、lba_6、lba_7、lba_100的数据分别写入至数据页p1~p5。此外,在区块b_0的所有数据页p0~pn都完成数据写入的后,微处理器112可将p2l对照表300存储至闪存模块120。需注意的是,在本实施例中,逻辑地址的序号代表着其顺序,而连续的序号代表着连续的逻辑地址。

另一方面,微处理器112另外记录了如图4所示的逻辑地址群组记录表400,并存储在缓冲存储器116中,其中逻辑地址群组记录表400标注了多个逻辑地址群组的状态,其中每一个逻辑地址群组的该状态用来表示p2l对照表300中是否有记录位于该逻辑地址群组的中的任一逻辑地址。在本实施例中,参考图4,逻辑地址群组记录表400至少包含了多个逻辑地址群组lbag1~lbag5,而每一个逻辑地址群组包含了逻辑地址范围,例如逻辑地址群组lbag1包含了逻辑地址lba_0~lba_255、逻辑地址群组lbag2包含了逻辑地址lba_256~lba_511、逻辑地址群组lbag3包含了逻辑地址lba_512~lba_767、逻辑地址群组lbag4包含了逻辑地址lba_768~lba_1023、逻辑地址群组lbag5包含了逻辑地址lba_1024~lba_1279;此外,逻辑地址群组记录表400用比特来表示每一个逻辑地址群组的状态,例如由于p2l对照表记录了lba_5~lba_7、lba_100、lba_350、lba_500,故逻辑地址群组lbag1及lbag2的状态被设为数字值“1”;而由于p2l对照表并未包含逻辑地址lba_512~lba_1279,故逻辑地址群组lbag3~lbag5的状态被设为数字值“0”。

需注意的是图4所示的逻辑地址群组记录表400仅是一个范例说明,而非是作为本发明的限制。只要逻辑地址群组记录表400可以用来表达p2l对照表300中是否有记录位于各个逻辑地址群组的中的任一逻辑地址,其细节内容可以有不同的变化,而这些设计上的变化均应隶属于本发明的范畴。

另外,在本实施例中,每一个逻辑地址群组lbag1~lbag5的逻辑地址范围相同于在记忆装置100中所使用的逻辑地址至实体地址对照表(以下称l2p对照表)的逻辑地址范围。举例来说,参考图5,其为多个l2p对照表的示意图,其中每一个l2p对照表,例如图示的510_1、510_2,包含了连续的逻辑地址及对应的实体地址。

在步骤204中,闪存控制器110接收到来自主装置130的读取命令,以要求自闪存模块120中读取具有特定逻辑地址的数据。接着,在步骤206中,微处理器112判断该特定逻辑地址所对应的逻辑地址群组的状态是否为数字值“1”,若是,流程进入步骤208;若否,则流程进入步骤212。举例来说,假设特定逻辑地址为lba_30,则由于lba_30位于具有状态“1”的逻辑地址群组lbag1,故流程会进入到步骤208;而假设特定逻辑地址为lba_700,则由于lba_700位于具有状态“0”的逻辑地址群组lbag3,故流程会进入到步骤212。

在步骤208中,微处理器112搜寻p2l对照表300,并判断特定逻辑地址是否位于p2l对照表300中。若是,流程进入步骤210;若否,则流程进入步骤212。在步骤210中,微处理器112可以直接地从存储在缓冲存储器116中的p2l对照表300中来搜寻出特定逻辑地址所对应的实体地址,并根据所搜寻到的实体地址以自闪存模块120中找到存储在该实体地址的数据。

在步骤212中,由于特定逻辑地址所对应到的逻辑地址群组的状态为“0”,因此代表着p2l对照表300中并未存储有关于特定逻辑地址的信息(亦即,区块b_0未包含具有特定逻辑地址的数据),因此,微处理器112便不需要对p2l对照表300进行搜寻的操作,而直接地判断缓冲存储器116上是否具有包含特定逻辑地址的l2p对照表。举例来说,假设特定逻辑地址为lba_700,则微处理器112判断缓冲存储器116中是否存储具有lba_512~lba_767相关信息的l2p对照表,若是,流程进入步骤214;若否,流程进步入步骤216。

在步骤214中,由于缓冲存储器116存储具有lba_512~lba_767相关信息的l2p对照表,故微处理器112可以直接自此l2p对照表中读取搜寻出特定逻辑地址lba_700所对应的实体地址,并根据所搜寻到的实体地址以自闪存模块120中读取存储在该实体地址的数据。

在步骤216中,由于缓冲存储器116不具有lba_512~lba_767相关信息的l2p对照表,故微处理器112自闪存模块120中读取具有lba_512~lba_767相关信息的l2p对照表并存储到缓冲存储器116中。接着,在步骤218中,微处理器112自加载的l2p对照表中读取搜寻出特定逻辑地址lba_700所对应的实体地址,并根据所搜寻到的实体地址以自闪存模块120中读取存储在该实体地址的数据。

后续流程可以回到步骤202以继续将数据写入区块b_0并同步建立/更新p2l对照表300与逻辑地址群组记录表400,或是进入步骤204以接收下一个读取命令。另外,若是闪存控制器110继续对区块b_0进行数据写入,则由于所写入的数据有可能是先前写入数据的更新数据(亦即,具有相同的逻辑地址),因此,为了避免后续的查找错误,一旦区块b_0有数据写入,先前因为读取命令所加载的一或多个l2p对照表会被设为无效,亦即缓冲存储器116中的l2p对照表会被标记为无效或是删除。

参考以上的实施例所述,当微处理器112接收到读取命令的时候,会直接参考存储在缓冲存储器116中的逻辑地址群组记录表400来判断读取命令所包含的逻辑地址是否有可能包含在p2l对照表300中,而若是逻辑地址群组记录表400指出读取命令所包含的逻辑地址不存在于p2l对照表300时,微处理器112便不需要对p2l对照表300进行搜寻,而可以直接从缓冲存储器116的l2p对照表、或是自闪存模块120所加载的l2p对照表来取得所需的实体地址。因此,本发明的实施例可以确实降低无效读取p2l对照表的次数,故可以加速闪存控制器的读取速度,增进系统效能。另一方面,由于逻辑地址群组记录表400仅需要很少的内存空间,故不会对缓冲存储器116有实质影响。

此外,在上述的实施例中,逻辑地址群组记录表400被使用在闪存控制器110接收到读取命令的情形下,然而,在其他的实施例中,逻辑地址群组记录表400亦可被用在其他任何需要搜寻p2l对照表300操作中。举例来说,在某些情形下,由于p2l对照表300中具有最新的信息,故微处理器112会需要使用p2l对照表300来更新自闪存模块120所加载的多个l2p对照表(例如图5的510_1及510_2),而此时微处理器112便可以参考逻辑地址群组记录表400来决定要对哪些l2p对照表进行更新操作(没有被记录在逻辑地址群组记录表400的便不需要处理),以避免进行无效的更新操作。具体来说,参考图6,其为根据本发明另一实施例的存取闪存模块120的流程图。在步骤600中,流程开始。在步骤602中,闪存控制器110接收来自主装置130的至少一写入命令,以将多笔数据写入至闪存模块120的区块中。在以下的说明中,闪存控制器110将数据循序写入到的图3所示的闪存芯片310的区块b_0。

另一方面,在数据写入至区块b_0之前,微处理器112会建立p2l对照表,例如图所示的p2l对照表300,并存储在缓冲存储器116的中;以及微处理器112另外记录了如图4所示的逻辑地址群组记录表400,并存储在缓冲存储器116中。

在步骤604中,闪存控制器110接收到来自主装置130的第一读取命令,以要求自闪存模块120中读取具有第一逻辑地址的数据。接着,在步骤606中,微处理器112判断缓冲存储器116中是否存储有包含该第一逻辑地址的l2p对照表。具体来说,闪存模块120中会存储有多个l2p对照表,而每一个l2p对照表都包含了逻辑地址范围的映像信息,例如第一个l2p对照表用来存储lba_0~lba_255所对应到的实体地址(需注意,不一定每一个逻辑地址相对应的实体地址都存在)、第二个l2p对照表用来存储lba_256~lba_511所对应到的实体地址、第三个l2p对照表用来存储lba_512~lba_767所对应到的实体地址、…以此类推。因此,在上述例子中,若是该第一逻辑地址为lba_20,则微处理器112便判断用来存储lba_0~lba_255的第一个l2p对照表是否刚好位于缓冲存储器116中,若是,流程进入步骤608;若否,则流程进入步骤610。以下以该第一逻辑地址为lba_20来进行说明。

在步骤608中,若是第一个l2p对照表存储在缓冲存储器116中,微处理器112便可以直接地从存储在缓冲存储器116中的第一个l2p对照表来搜寻出第一逻辑地址lba_20所对应的实体地址,并根据所搜寻到的实体地址以自闪存模块120中找到存储在该实体地址的数据。

在步骤610中,微处理器112搜寻p2l对照表300,并判断第一逻辑地址lba_20是否位于p2l对照表300中。若是,流程进入步骤214;若否,则流程进入步骤216。

在步骤614中,微处理器112可以直接地从存储在缓冲存储器116中的p2l对照表300中来搜寻出第一逻辑地址lba_20所对应的实体地址,并根据所搜寻到的实体地址以自闪存模块120中找到存储在该实体地址的数据。

在步骤616中,由于第一逻辑地址lba_20的相关信息并未存储在缓冲存储器116的中,故微处理器112根据第一逻辑地址lba_20,以自闪存模块120中读取包含第一逻辑地址lba_20的l2p对照表,在本实施例中,微处理器112从闪存模块120中读取用来存储lba_0~lba_255的第一个l2p对照表,并存储到缓冲存储器116中。

在步骤618中,微处理器112自读取第一个l2p对照表中读取搜寻出第一逻辑地址lba_20所对应的实体地址,并根据所搜寻到的实体地址以自闪存模块120中读取存储在该实体地址的数据。此外,此时微处理器116会参考逻辑地址群组记录表400来决定是否使用p2l对照表300来更新第一个l2p对照表,以使得第一个l2p对照表中所存储的都是最新的信息。具体来说,由于逻辑地址群组记录表400所记录的逻辑地址群组lbag1的状态被设为数字值“1”,因此,微处理器116便可以直接地使用p2l对照表300来更新第一个l2p对照表(例如图5所示的510_1)。参考图7,其为使用p2l对照表300来更新l2p对照表510_1的示意图。在图7中,由于p2l对照表300中有4笔对应至逻辑地址范围lba_0~lba_255中的信息,故微处理器112将l2p对照表510_1中的逻辑地址lba_5更新为对应到区块b_0的数据页p0、逻辑地址lba_6更新为对应到区块b_0的数据页p3、逻辑地址lba_7更新为对应到区块b_0的数据页p4、且逻辑地址lba_100更新为对应到区块b_0的数据页p5。

需注意的是,当l2p对照表510_1从闪存模块120中读取而尚未更新前,l2p对照表510_1可以并未包含逻辑地址lba_5、lba_6、lba_7或是lba_100的相对应实体地址,而此时微处理器将p2l对照表300中上述4笔信息加入到l2p对照表510_1的中;或是l2p对照表510_1已经包含逻辑地址lba_5、lba_6、lba_7或是lba_100的相对应实体地址,而此时微处理器将p2l对照表300中上述4笔信息来更新l2p对照表510_1中逻辑地址lba_5、lba_6、lba_7或是lba_100所对应的实体地址。

在另外一个例子中,假设流程再次回到步骤604,且闪存控制器110自主装置130接收第二读取命令,以要求自闪存模块120中读取具有第二逻辑地址的数据。假设该第二逻辑地址为lba_800,由于逻辑地址为lba_800并未包含在p2l对照表300中,故流程会进入步骤616以自闪存模块120中读取包含第二逻辑地址lba_800的l2p对照表,例如,用来存储lba_768~lba_1023的第四个l2p对照表,并存储到缓冲存储器116中。接着,微处理器112自第四个l2p对照表中搜寻出第二逻辑地址lba_800所对应的实体地址,并根据所搜寻到的实体地址自闪存模块120中读取存储在该实体地址的数据。此外,此时微处理器116会参考逻辑地址群组记录表400来决定是否使用p2l对照表300来更新第四个l2p对照表。具体来说,由于逻辑地址群组记录表400所记录的逻辑地址群组lbag4的状态被设为数字值“0”,因此,微处理器116便无需使用p2l对照表300来更新第四个l2p对照表,以避免进行无效的更新操作。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1