一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

主机效能加速模式的数据读取方法及装置与流程

2022-02-20 19:44:10 来源:中国专利 TAG:
1.本发明涉及存储装置,尤指一种主机效能加速模式的数据读取方法及装置。
背景技术
::2.闪存通常分为nor闪存与nand闪存。nor闪存为随机存取装置,中央处理器(host)可于地址引脚上提供任何存取nor闪存的地址,并及时地从nor闪存的数据引脚上获得存储于该地址上的数据。相反地,nand闪存并非随机存取,而是串行存取。nand闪存无法像nor闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(bytes)的值到nand闪存中,用于定义请求命令(command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。3.为了提升闪存模块的数据写入及读取效能,装置端会以多个信道并行地执行数据写入及读取。为了达成并行处理的目的,一段连续性的数据会分散地存储到多个通道所连接的闪存单元,并使用逻辑物理对照表(logical-to-physical,l2pmappingtable)记录用户数据的逻辑地址(由主机端管理)与物理地址(由闪存控制器管理)间的对应关系。然而,在嵌入式多媒体卡(embeddedmulti-mediacontroller,e·mmc)的存储装置中,随着装置容量的快速增加,使得逻辑物理对照表的长度也倍数成长,造成装置端执行的传统管理方法难以负担。就算使用阶层式子区来管理逻辑物理对照表能够提升逻辑物理对照转换的效能,但是花费在逻辑物理对照转换的时间还是大幅高于从闪存模块的闪存数组传输数据到闪存控制器的数据寄存器的时间(tr)。因此,本发明提出一种主机效能加速模式的数据读取方法及装置,用于提升嵌入式多媒体卡的存储装置的数据读取效能。技术实现要素:4.有鉴于此,如何减轻或消除上述相关领域的缺陷,实为有待解决的问题。5.本发明涉及一种主机效能加速模式的数据读取方法,由主机端执行,包含:从闪存控制器获取闪存控制器中的扩充装置专用数据寄存器的值;以及当扩充装置专用数据寄存器的值包含支持主机效能加速功能的信息时,在系统存储器中配置空间作为主机效能加速缓冲区,并且在主机效能加速缓冲区存储从闪存控制器获取的多个逻辑物理对照记录。6.本发明还涉及一种主机效能加速模式的数据读取方法,由闪存控制器执行,包含:在存储装置初始化的过程中,设定闪存控制器中的扩充装置专用数据寄存器的保留比特,用于指出所述存储装置支持主机效能加速功能,使得主机端能够依据扩充装置专用数据寄存器的保留比特的信息在系统存储器中配置空间作为主机效能加速缓冲区,并且在主机效能加速缓冲区存储从闪存控制器获取的多个逻辑物理对照记录。7.本发明另还涉及一种主机效能加速模式的数据读取的装置,包含:扩充装置专用数据寄存器;主机接口;和处理单元。处理单元在装置初始化的过程中,设定扩充装置专用数据寄存器的保留比特,用于指出装置支持主机效能加速功能,使得主机端能够依据扩充装置专用数据寄存器的保留比特的信息在系统存储器中配置空间作为主机效能加速缓冲区,并且在主机效能加速缓冲区存储通过主机接口从装置获取的多个逻辑物理对照记录。8.主机端和闪存控制器间使用嵌入式多媒体卡通信协议彼此通信,并且每个逻辑物理对照记录用于存储逻辑地址的数据实际存储于的物理地址的信息。9.上述实施例的优点之一,通过如上所述主机效能加速缓冲区的设置能够让主机端发送带有逻辑物理对照记录的读取命令给闪存控制器,用于减少闪存控制器花费时间和运算资源进行逻辑物理对照转换。10.本发明的其他优点将配合以下的说明和附图进行更详细的解说。附图说明11.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。12.图1为依据本发明实施例的电子装置的系统架构图。13.图2为依据本发明实施例的闪存装置的示意图。14.图3为依据本发明实施例的高阶对照表和逻辑物理对照子表之间的关联示意图。15.图4为依据本发明实施例的逻辑物理对照子表和物理页面之间的关联示意图。16.图5为依据本发明实施例的主机效能加速(hostperformanceacceleration,hpa)缓存的建立与运用示意图。17.图6为依据本发明实施例的hpa缓冲区初始化的操作顺序图。18.图7和图8为依据本发明实施例的hpa读取的操作顺序图。19.图9为依据本发明实施例的hpa缓冲区更新的操作顺序图。20.图10为依据本发明实施例的切换命令的执行方法流程图。21.图11为依据本发明实施例的写入多块命令的执行方法流程图。22.其中,附图中符号的简单说明如下:23.10:电子装置;110:主机端;130:闪存控制器;131:主机接口;132:总线;134:处理单元;135:只读存储器;136:随机存取存储器;137:寄存器;139:闪存接口;150:闪存装置;151:接口;153#0~153#15:nand闪存单元;ch#0~ch#3:通道;ce#0~ce#3:启动信号;310:高阶对照表;330#0~330#15:l2p对照子表;400:l2p对照记录;410:逻辑区块地址的信息;430:物理区块地址的信息;430-0:逻辑单元号和物理块编号;430-1:物理页面编号;440:物理块;450:物理页面;450#2:物理区段;500:hpa缓存;610~655、711~755、835~839、915、931、955:操作;s1010~s1060、s1110~s1147:方法步骤。具体实施方式24.以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。25.必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。26.本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非135、ram136、寄存器137与闪存接口139可通过单一总线彼此耦接。在另一些实施例中,闪存控制器130中可配置高速总线,用于让处理单元134、rom135、ram136与寄存器137彼此耦接,并且配置低速总线,用于让处理单元134、主机接口131与闪存接口139彼此耦接。总线包含并行的物理线,连接闪存控制器130中两个以上的组件。31.闪存装置150提供大量的存储空间,通常是数百个千兆字节(gigabytes,gb),甚至是多个兆兆字节(terabytes,tb),用于存储大量的用户数据,例如高分辨率图片、影片等。闪存装置150中包含控制电路以及存储器数组,存储器数组中的存储单元可配置为单层式单元(singlelevelcells,slcs)、多层式单元(multiplelevelcells,mlcs)、三层式单元(triplelevelcells,tlcs)、四层式单元(quad-levelcells,qlcs)或上述的任意组合。处理单元134通过闪存接口139写入用户数据到闪存装置150中的指定地址(目的地址),以及从闪存装置150中的指定地址(来源地址)读取用户数据和l2p对照表中的指定部分。闪存接口139使用多个电子信号来协调闪存控制器130与闪存装置150间的数据与命令传递,包含数据线(dataline)、时钟信号(clocksignal)与控制信号(controlsignal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(chipenable,ce)、地址提取启动(addresslatchenable,ale)、命令提取启动(commandlatchenable,cle)、写入启动(writeenable,we)等控制信号。32.参考图2,闪存装置150中的接口151可包含四个输入输出通道(i/ochannels,以下简称通道)ch#0至ch#3,每一个通道连接四个nand闪存单元,例如,信道ch#0连接nand闪存单元153#0、153#4、153#8及153#12。每个nand闪存单元可封装为独立的芯片(die)。闪存接口139可通过接口151发出启动信号ce#0至ce#3中的一个来启动nand闪存单元153#0至153#3、153#4至153#7、153#8至153#11、或153#12至153#15,接着以并行的方式从启动的nand闪存单元读取用户数据,或者写入用户数据至启动的nand闪存单元。33.由于一段连续性(也就是一段连续的逻辑区块地址,logicalblockaddresses,lbas)的数据被分散地存储到多个通道所连接的nand闪存单元,闪存控制器130使用逻辑物理对照表(logical-block-addresstophysical-block-address,l2pmappingtable)记录用户数据的逻辑地址(由主机装置110管理)与物理地址(由闪存控制器130管理)间的对应关系。l2p对照表包含多笔记录,依逻辑地址的顺序存储每个逻辑地址的用户数据实际存储在哪个物理地址的信息。一段连续lba的数据可切分为多个局部(regions),以局部编号标识,而每个局部可切分出多个子区(sub-regions),以子区编号标识。例如,使用lba寻址的128gb的数据可分为16个8gb的局部,而每个8gb的局部可还分出256个32mb的子区。在emmc规范中,每个lba关联于(或指向)512字节(bytes)的数据。然而,由于ram136无法提供足够空间存储整个l2p对照表以供处理单元134将来于数据读取操作时快速查找,整个l2p对照表可依据局部和子区的划分来切出多个子表,并分别存储在非易失性的闪存装置150的不同物理地址,使得将来于数据读取操作时只要从闪存装置150读取相应的子表至ram136即可。参考图3,整个l2p对照表可切成子表330#0~330#15。处理单元134还维护高阶对照表(high-levelmappingtable)310,包含多个记录,依逻辑地址的顺序存储每个lba区段关联的子表的物理地址信息。例如,第0个至第4095个lba的关联子表330#0存储在特定逻辑单元号(logicalunitnumber,lun)的特定物理块中(字母“z”可代表lun和物理块的编号)的第0个物理页面,第4096个至第8191个lba的关联子表330#1存储在特定lun的特定物理块中的第1个物理页面,依此类推。虽然图3中只包含16个子表,但是所属
技术领域
:的技术人员可根据闪存装置150的容量,设置更多的子表,本发明并不因此局限。34.为了配合闪存装置150的物理配置,闪存控制器130可让一个物理区块地址(physicalblockaddress,pba)关联于(或指向)4kb、8kb或16kb的数据,此长度大于emmc规范的一个lba所关联的数据的长度(512b)。因为lba与pba所关联的数据长度不一致,每个子表中的每个记录包含逻辑地址和物理地址的信息,用于精确指出闪存装置150中的地址。参考图4,子表330#0依序存储从lba#0至lba#4095的寻址信息(addressinginformation)。寻址信息可以八个字节表示:四个字节代表lba;其他四个字节代表pba。举例来说,子表330#0中关联于lba#2的记录400存储lba410和pba430的信息。pba430中的两个字节430-0记录逻辑单元号和物理块编号(physicalblocknumber);其他两个字节430-1记录物理页面编号(physicalpagenumber)。所以,相应于lba#2的物理地址信息400可指向物理块440的物理页面450中的特定区段(sector)450#2。35.为了解决闪存控制器130花费过多时间在逻辑物理对照转换上的问题,本发明实施例在现行emmc规范的主机装置通信架构(host-devicecommunicationsarchitecture)的基础上加上hpa的新功能。hpa让原先由闪存控制器130实施的需要耗费大量时间的逻辑物理对照转换的工作负荷,转换到主机端110,可提升短长度数据的随机读取效能,短长度数据可指长度从512b到32kb的数据。参考图5,主机端110在其系统存储器(systemmemory)中配置空间作为hpa缓存500,用于暂存由装置端维护与管理的l2p对照表的信息。hpa缓存500存储多个从装置端接收的l2p对照记录(l2pmappingrecords),每个l2p对照记录记录相应于一个lba的寻址信息。接着,主机端110可发出携带l2p对照记录的命令给装置端,用于取得指定lba的用户数据。闪存控制器130可直接根据l2p对照记录中的信息来驱动闪存接口139从闪存装置150读取指定lba的用户数据,而不需要像以前一样得花费时间和运算资源从闪存装置150读取相应子表并进行逻辑物理地址转换后才能从闪存装置150读取指定lba的用户数据。针对hpa缓存500的建立和运用,可分为三个阶段:36.阶段i(hpa初始化):主机端110读取闪存控制器130中寄存器137的值,检查emmc存储装置(或称装置端,至少包含闪存控制器130和闪存装置150)是否支持hpa功能。如果是,主机端110在系统存储器中配置空间,作为hpal2p对照表区。37.阶段ii(hpa对照表管理):如果emmc存储装置支持hpa功能,主机端110发出一系列命令,用于向闪存控制器130请求读取l2p对照表。为响应这一系列命令,闪存控制器130传送全部或一部分的l2p对照表给主机端110,让主机端110把获得的对照表存储在hpal2p对照表区(这可称为镜像l2p对照表,mirroredl2pmappingtable)。当对应于镜像l2p对照表的实际l2p对照表因数据写入、数据修剪(datatrimming)、垃圾回收(garbagecollection,gc)、磨耗平均(wearleveling)等程序而改变后,闪存控制器130通知主机端110,主机端110的系统存储器中的全部或者相应部分的l2p对照表需要更新。38.阶段iii(hpa读取):主机端110发出带有l2p对照记录的一系列命令给emmc存储装置以请求获取特定lba的数据(特别是小块长度的不连续数据,如512b到32kb的不连续数据),其中的l2p对照记录是从镜像l2p对照表中搜索而得。接着,闪存控制器130依据l2p对照记录的内容从闪存装置150的pba读取指定lba的数据,并且回复读取的数据给主机端110,使得emmc存储装置能够节省为进行逻辑物理对照转换而读取并搜索l2p对照表的时间。39.在emmc规范中,ext_csd[160](也称为partitioning_support[160])定义支持区段特性(supportedpartitionfeatures),其中的bits[7:3]保留给emmc存储装置的制造商自由使用。ext_csd寄存器的第160个字节的第3个比特(ext_csd[160],bit[3])可用于定义emmc存储装置是否支持hpa功能,若支持则设为“1”,若关闭则设为“0”。在emmc存储装置初始化的过程中,处理单元134可将寄存器137中的ext_csd[160],bit[3]设为“1”。虽然本发明实施例描述了以ext_csd[160],bit[3]定义emmc存储装置是否支持hpa功能的技术方案,所属
技术领域
:人员可改变设计来使用ext_csd寄存器中的其他保留比特,例如ext_csd[511:506]、ext_csd[485:309]、ext_csd[306]、ext_csd[233]、ext_csd[227]、ext_csd[204]、ext_csd[195]、ext_csd[193]、ext_csd[190]、ext_csd[188]、ext_csd[186]、ext_csd[184]、ext_csd[182]、ext_csd[180]、ext_csd[176]、ext_csd[172]、ext_csd[170]、ext_csd[135]、ext_csd[129:128]、ext_csd[127:64]、ext_csd[28:27]、ext_csd[14:0]等,本发明并不因此局限。[0040]此外,闪存控制器130可使用成对的ext_csd寄存器来记录主机端110缓存的l2p对照表中需要更新的指定局部和子区的信息。例如,ext_csd寄存器的第64个字节(ext_csd[64])和第66个字节(ext_csd[66])为一对,用于分别指出第0个局部(region#0)和第160个子区(subregion#160)。ext_csd寄存器的第65个字节(ext_csd[65])和第67个字节(ext_csd[67])为另一对,用于分别指出第0个局部(region#0)和第18个子区(subregion#18)。[0041]在emmc规范中,切换命令(cmd6)是由主机端110发出,用于切换选定装置的操作模式或者修改ext_csd寄存器的值,而参数的第26到31比特(bits[31:26])是保留比特。主机端110可设定cmd6的第26个比特(cmd6,bit[26])来表示是否启动hpa功能,若启动则设为“1”,若关闭则设为“0”。虽然本发明实施例描述了以cmd6,bit[26]定义是否启动hpa功能的技术方案,所属
技术领域
:人员可改变设计来使用cmd6的参数中的其他保留比特,本发明并不因此受限。主机端110可设定cmd6的第27个比特(cmd6,bit[27])来表示是否启动l2p对照表的获取功能,若启动则设为“1”,若关闭则设为“0”。虽然本发明实施例描述了以cmd6,bit[27]定义是否启动l2p对照表的获取功能的技术方案,所属
技术领域
:人员可改变设计来使用cmd6的参数中的其他保留比特,本发明并不因此受限。[0042]在emmc规范中,设定块数命令(cmd23)是由主机端110发出,用于表示之后的打包写入命令的块数目,或之后的打包读取命令的标题(header)的块数目。当cmd23关联于之后的打包写入命令时,参数中的第30个比特(bit[30])设为“0b1”,并且cmd23的参数中的第0到第15个比特(bits[15:0])用于表示块数目。当cmd23关联于之后的打包写入命令或打包读取命令时,参数中的第30个比特(bit[30])设为“0b1”。cmd23的参数中的第0到第15个比特(bits[15:0])用于表示块数目。[0043]在emmc规范中,写入多块命令(cmd25)是由主机端110发出,用于不断写入数据块到emmc存储装置,直到发出停止传输命令(stop_transmissioncommand,cmd12),或者请求数目的数据块已经写入完毕。主机端110可通过cmd23及cmd25传送l2p对照表中的指定局部和子区的信息,请求闪存控制器130准备指定局部和子区的l2p对照记录。此外,主机端110可通过cmd23及cmd25传送l2p对照记录,请求闪存控制器130据以准备数据以供将来的读取。cmd25的参数中的第0到第31个比特(bits[31:0])表示数据地址。[0044]在emmc规范中,读取多块命令(cmd18)是由主机端110发出,用于不断从emmc存储装置读取数据块,直到请求数目的数据块已经读取完毕,或者被停止命令(stopcommand)打断。也就是说,cmd18请求emmc存储装置传送先前指出数目的数据块给主机端110。cmd18的参数中的第0到第31个比特(bits[31:0])表示数据地址。主机端110可通过cmd23及cmd18请求闪存控制器130传送指定局部和子区(在先前的cmd25中定义)的l2p对照记录。参考如图4所示的示例,每个l2p对照记录的长度是8b,使得每个数据块可携带最多32个l2p对照记录。此外,主机端110可通过cmd23及cmd18请求闪存控制器130传送相应于l2p对照记录(在先前的cmd25中定义)的数据。[0045]在emmc规范中,正常回复命令(normalresponsecommand,r1)是由闪存控制器130发出,用于告诉主机端110特定信息。r1的长度是48比特,其中的第40到第45比特(bits[45:40])记录要回复命令的索引,并且第8到第39比特(bits[39:8])记录装置状态(devicestatus)。当r1的第31个比特(bit[31])设为“0b1”时,代表地址超过范围(address_out_of_range)。当r1的第30个比特(bit[30])设为“0b1”时,代表地址不适配(address_misalign)。当hpa功能启动但l2p对照表的获取功能未启动时,如果cmd25中携带的l2p对照记录中有部分的pba失效了,闪存控制器130可把用于回复之后cmd18的r1的第31个比特(bit[31])和第30个比特(bit[30])都设为“0b1”,用于指出主机端110中缓存的l2p对照记录需要更新。[0046]针对阶段i和阶段ii中关于hpal2p对照表区(又可称为hpa缓冲区)的建立,在emmc存储装置初始化后,主机端110首次从装置端读取l2p对照表,并且存储到hpa缓冲区。表1描述示例的命令顺序细节,用于初始化hpa缓冲区:[0047]表1[0048][0049]参考如图6所示的hpa缓冲区初始化的操作顺序图,详细说明如下:[0050]操作611:主机端110发出命令给闪存控制器130,用于向闪存控制器130请求获取ext_csd寄存器的值。[0051]操作613:为响应通过主机接口131所接收的寄存器读取命令,处理单元134获取寄存器137中ext_csd寄存器的值,并通过主机接口131回复给主机端110。[0052]操作615:主机端110可检查ext_csd寄存器的值(例如,ext_csd[160],bit[3])来判断此emmc存储装置是否支持hpa功能。如果是,则继续进行操作617的处理。如果不是,则不启动hpa功能。[0053]操作617:主机端110发出切换命令(cmd6)给闪存控制器130来启动hpa功能和l2p对照表的获取功能。例如,参考表1的第二行,主机端110可将cmd6的参数设为“0x0c000000”,也就是包含bit[26]=“0b1”及bit[27]=“0b1”,用于指示闪存控制器130启动这两个功能。[0054]操作619:当闪存控制器130收到如上所示的切换命令后,进入hpa对照表读取状态(hpa_mapping_readstate),用于准备传送一部分的l2p对照表给主机端110。[0055]操作631:主机端110在系统存储器中配置空间给hpa缓冲区,并依据操作系统、驱动程序、应用程序等的需要决定欲向emmc存储装置获取的局部和子区的l2p对照记录。[0056]操作633:主机端110发出设定块数命令(cmd23)给闪存控制器130,用于通知闪存控制器130将传送多少个数据块。例如,参考表1的第三行,主机端110可将cmd23的参数设为“0x40000001”,也就是包含bit[30]=“0b1”及bits[15:0]=“0x0001”,表示之后将写入一个数据块到闪存控制器130。接着,主机端110发出写入多块命令(cmd25)给闪存控制器130,用于不断写入数据块到闪存控制器130,直到请求数目的数据块已经写入完毕。例如,参考表1的第四行,主机端110可将cmd25的参数设为“0x01e2a3e0”,代表特定数据地址。每个数据块可分为32包(packets),而每一包的长度为16b。每包中的2个字节可指出特定局部的编号,而其余的14个字节可指出多个特定子区的编号。例如,当一包中包含{region#0,subregion#0,subregion#1,subregion#2,subregion#3}的信息时,代表l2p对照表的指定部分关联到第0个局部中的第0到第3个子区。接着,主机端110发出设定块数命令(cmd23)给闪存控制器130,用于通知闪存控制器130将接收多少个数据块。例如,参考表1的第四行,主机端110可将cmd23的参数设为“0x40000020”,也就是包含bit[30]=“0b1”及bits[15:0]=“0x0020”,表示之后将从闪存控制器130读取32个数据块,也就是最多1024个l2p对照记录。接着,主机端110发出读取多块命令(cmd18)给闪存控制器130,用于不断从闪存控制器130读取数据块,直到请求数目的数据块已经读取完毕。例如,参考表1的第五行,主机端110可将cmd18的参数设为“0x01e2a3e0”,代表特定数据地址。[0057]操作635:由于已经进入hpa对照表读取状态,当闪存控制器130从主机端110接收到相应于cmd25的数据块时,知道其中的每一包携带了l2p对照表的指定部分的信息,并且可据此从闪存装置150读取请求的l2p对照记录。此外,当闪存控制器130从主机端110接收到cmd18时,知道可以开始传送指定部分的l2p对照记录给主机端110。由于cmd18的参数被设定为与cmd25的参数相同,使得闪存控制器130传送的数据是依据先前cmd25写入的数据块中的内容从闪存装置150读取的指定部分的l2p对照记录。[0058]操作651:闪存控制器130将请求的l2p对照记录组织成指定数目的数据块中的多个包。[0059]操作653:闪存控制器130持续传送组织好的数据块给主机端110,直到指定数目的数据块传送完毕。接着,当从主机端110接收到打包读取完成的信息时,离开hpa对照表读取状态并进入emmc规范的传送状态(transferstate)。[0060]操作655:主机端110接收每包中携带的l2p对照记录,并且存储在hpa缓冲区。当存储完最后一包中携带的l2p对照记录后,主机端110发出传送状态命令(send_statuscommand,cmd13)给闪存控制器130,其中包含打包读取完成的信息。[0061]针对阶段iii的数据读取,表2描述示例的命令顺序细节,用于使用hpa功能读取数及bits[15:0]=“0x0020”,表示之后将从闪存控制器130读取32个数据块,也就是最多1024个lba的数据。接着,主机端110发出读取多块命令(cmd18)给闪存控制器130,用于不断从闪存控制器130读取数据块,直到请求数目的数据块已经读取完毕。例如,参考表2的第六行,主机端110可将cmd18的参数设为“0x01521182”,代表特定数据地址。[0070]操作735:由于已经进入hpa读取状态,当闪存控制器130从主机端110接收到相应于cmd25的数据块时,知道其中的每一包携带了为一个数据读取的成对lba和pba的信息,并且可据此从闪存装置150读取请求的数据。此外,当闪存控制器130从主机端110接收到cmd18时,知道可以开始传送指定的数据给主机端110。由于cmd18的参数被设定为与cmd25的参数相同,使得闪存控制器130传送的数据是依据先前cmd25写入的数据块中的内容从闪存装置150读取的指定lba的数据。[0071]操作751:闪存控制器130将请求的数据组织成指定数目的数据块中的多个包。[0072]操作753:闪存控制器130持续传送组织好的数据块给主机端110,直到指定数目的数据块传送完毕。接着,当从主机端110接收到打包读取完成的信息时,离开hpa读取状态并进入emmc规范的传送状态。[0073]操作755:主机端110接收每包中携带的数据,并且存储在系统存储器的数据缓冲区。当存储完最后一包中携带的数据后,主机端110发出传送状态命令(cmd13)给闪存控制器130,其中包含打包读取完成的信息。[0074]针对阶段ii中关于hpa缓冲区的更新,在装置端运行的过程中,主机端110可请求闪存控制器130执行数据写入、数据剪除(datatrims)、块抹除(blockerases)等操作,而闪存控制器130可主动执行垃圾回收(garbagecollection,gc)、磨耗平均(wearleveling,wl)等程序,造成l2p对照表的部分内容被改变。所以,hpa缓冲区中的内容(也就是镜像l2p对照表)需要根据l2p对照表的变更内容而更新。参考如图8所示的hpa读取的操作顺序图,其中的操作711到733和操作751到753的技术方案相同于图7,其余的操作详细说明如下:[0075]操作835:由于已经进入hpa读取状态,当闪存控制器130从主机端110接收到相应于cmd25的数据块时,知道其中的每一包携带了为一个数据读取的成对lba和pba的信息,并且检查欲读取lba数据的lba对照记录是否被改变(也就是是否无效)。如果是,则闪存控制器130忽略数据块中携带的信息,改为依据变更后的相应lba对照记录从闪存装置150读取数据。当闪存控制器130从主机端110接收到cmd18时,知道可以开始传送指定的数据给主机端110。由于cmd18的参数被设定为与cmd25的参数相同,使得闪存控制器130传送的数据是依据先前cmd25写入的数据块中的内容或者依据变更后的相应lba对照记录中的内容从闪存装置150读取的指定lba的数据。此外,当欲读取lba数据的lba对照记录无效时,闪存控制器130设定相关的ext_csd寄存器来存储主机端110的hpa缓冲区中需要更新的局部和子区的信息。[0076]操作837:闪存控制器130发出用于回复cmd18的r1,其中的第31个比特(bit[31])和第30个比特(bit[30])都设为“0b1”,用于指出主机端110中的镜像l2p对照表需要更新。[0077]在主机端110从装置端接收到镜像l2p对照表需要更新的信息后,主机端110从装置端获取需要更新的局部和子区的信息,并据此从装置端读取l2p对照表中指定部分的l2p对照记录,并且更新hpa缓冲区中的相应内容。表3描述示例的命令顺序细节,用于更新hpa缓冲区:[0078]表3[0079][0080]参考如图9所示的hpa缓冲区更新的操作顺序图,其中的操作611、613、617、619、633、635、651和653的技术方案相同于图6,其余的操作详细说明如下:[0081]操作915:主机端110从ext_csd寄存器(例如,ext_csd[67:64])的值获取需要更新的局部和子区的信息。[0082]操作931:主机端110依据从闪存控制器130获取的信息决定欲向emmc存储装置获取的局部和子区的l2p对照记录。[0083]操作955:主机端110接收每包中携带的l2p对照记录,并且更新hpa缓冲区中的相应部分内容。当更新完最后一包中携带的l2p对照记录后,主机端110发出cmd13给闪存控制器130,其中包含打包读取完成的信息。[0084]命令处理操作619、715中关于cmd6的执行细节可参考如图10所示的方法流程图,此方法由处理单元134在加载并执行相关软件或固件程序代码时实施,进一步说明如下:[0085]步骤s1010:通过主机接口131从主机端110接收到切换命令(cmd6)。[0086]步骤s1020:判断cmd6的保留比特中是否包含启动hpa功能和l2p对照表的获取功能的信息。如果是,流程继续步骤s1030的处理。否则,流程继续步骤s1040的处理。[0087]步骤s1030:在ram136存储进入hpa对照表读取状态的信息,用于让之后接收到cmd25时可以作为判断目前装置状态的依据。[0088]步骤s1040:判断cmd6的保留比特中是否包含启动hpa功能的信息。如果是,流程继续步骤s1050的处理。否则,流程继续步骤s1060的处理。[0089]步骤s1050:在ram136存储进入hpa读取状态的信息,用于让之后接收到cmd25时可以作为判断目前装置状态的依据。[0090]步骤s1060:执行传统的切换程序。例如,切换装置端的操作模式、修改ext_csd寄存器的值等等。[0091]命令处理操作635、735和835中关于cmd25的执行细节可参考如图11所示的方法流程图,此方法由处理单元134在加载并执行相关软件或固件程序代码时实施,进一步说明如下:[0092]步骤s1110:通过主机接口131从主机端110接收到写入多块命令(cmd25)及跟随的数据块。[0093]步骤s1121:依据ram136中存储的信息判断是否进入hpa对照表读取状态或hpa读取状态。如果是,流程继续进行步骤s1131的进一步判断。否则,流程继续进行步骤s1123的处理。[0094]步骤s1123:执行传统的打包写入程序(packedwriteprocedure),用于驱动闪存接口139写入多包的数据至闪存装置150。[0095]步骤s1131:依据ram136中存储的信息判断是否进入hpa对照表读取状态。如果是,流程继续进行步骤s1133的处理。否则(也就是进入hpa读取状态),流程继续进行步骤s1141的判断。[0096]步骤s1133:驱动闪存接口139依据数据块中携带的信息(也就是特定局部和特定子区的信息)从闪存装置150读取l2p对照表中指定部分的l2p对照记录。[0097]步骤s1135:以如上所述多包的格式存储l2p对照记录到ram136,使得将来在收到cmd18后能够以多包的格式传送l2p对照记录给主机端110。[0098]步骤s1141:判断欲读取lba数据所关联的lba对照记录是否已经被改变。如果是,则流程继续进行步骤s1145的处理。否则,流程继续进行步骤s1143的处理。[0099]步骤s1143:驱动闪存接口139依据数据块中携带的信息(也就是l2p对照记录的信息)从闪存装置150读取指定lba的数据。[0100]步骤s1145:驱动闪存接口139依据变更后的相应lba对照记录从闪存装置150读取指定lba的数据。[0101]步骤s1147:以如上所述多包的格式存储指定lba的数据到ram136,使得将来在收到cmd18后能够以多包的格式传送指定lba的数据给主机端110。[0102]本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如存储装置中的固件转换层(firmwaretranslationlayer,ftl)、特定硬件的驱动程序、或软件程序。此外,也可实现于如上所示的其他类型程序。所属
技术领域
:中的技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如dvd、cd-rom、u盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。[0103]虽然图1至图2中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图10、图11的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属
技术领域
:的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属
技术领域
:的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。[0104]以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本技术的权利要求书所界定的范围为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献