本发明关连于一种快闪存储器,特别是一种快闪存储器的数据内部搬移方法以及使用该方法的装置。
背景技术:
::快闪存储器装置通常分为nor快闪装置与nand快闪装置。nor快闪装置为随机存取装置,主装置(host)可于地址脚位上提供存取nor快闪装置的任意地址,并即时地由nor快闪装置的数据脚位上获得储存于该地址上的使用者数据。相反地,nand快闪装置并非随机存取,而是序列存取。nand快闪装置无法像nor快闪装置一样,可以存取任何随机地址,主装置反而需要写入序列的位元组(bytes)到nand快闪装置中,用以定义请求命令(command)的类型(如,读取、写入、抹除等),以及此命令上的地址。地址可指向一个页面(在快闪存储器中的一个写入作业的最小数据块)或一个区块(在快闪存储器中的一个抹除作业的最小数据块)。实际上,nand快闪装置通常从存储器单元(memorycells)上读取或写入完整的数页数据。当一整页的数据从阵列读取到装置中的缓存器(buffer)后,藉由使用提取信号(strobesignal)顺序地敲出(clockout)内容,让主单元可逐位元组或字元组(words)存取数据。开放通道固态硬碟(open-channelsolidstatedisk)系统包括开放通道固态硬碟(装置端)以及主装置,并不在装置端实施快闪存储器翻译层(ftl,flashtranslationlayer),反而在主装置实施快闪存储器翻译层。不同于传统的固态硬碟,开放通道固态硬碟让主装置知道固态硬碟内部的操作参数,并允许主装置依据操作参数对开放通道固态硬碟进行操作,即进行数据的管理。然而,目前的开放通道固态硬碟只包含三种基本的存取命令:抹除;读取;及写入。当主装置执行一连串读取及写入才能完成的存取程序时,例如垃圾收集(gc,garbagecollection)、耗损平均(wearleveling)等时,需要透过开放通道固态硬碟的存取介面传输数据,耗费大量存取介面的频宽。因此,需要一种快闪存储器的数据内部搬移方法以及使用该方法的装置,用以解决如上所述的问题。技术实现要素:本发明的实施例提出一种快闪存储器的数据内部搬移方法,由主装置执行,包含下列步骤:检测到固态硬碟中的输出入通道的使用状态满足条件时,产生内部搬移命令;以及提供内部搬移命令以指示固态硬碟于输出入通道中执行内部数据搬移作业。本发明的实施例提出一种快闪存储器的数据内部搬移装置,包含主装置。主装置检测到固态硬碟中的输出入通道的使用状态满足条件时,产生内部搬移命令;以及提供内部搬移命令以指示固态硬碟于输出入通道中执行内部数据搬移作业。本发明的实施例另提出一种快闪存储器的数据内部搬移方法,由固态硬碟中的处理单元执行,包含下列步骤:取得由主装置产生的内部搬移命令,其中内部搬移命令指示固态硬碟于输出入通道中执行内部数据搬移作业,包含指向数据缓冲区中的第一笔数据搬移记录的存储器地址;从数据缓冲区中的存储器地址开始取得多笔数据搬移记录,其中,数据搬移记录中之每一者包含来源位置;为每一来源位置决定输出入通道中的目的地位置;指示快闪控制器要求输出入通道执行复制回写程序将输出入通道中的每一来源位置的使用者数据搬移至决定的目的地位置;以及回复每一来源位置的决定的目的地位置给主装置。本发明的实施例另提出一种快闪存储器的数据内部搬移装置,包含快闪控制器及处理单元。处理单元耦接于快闪控制器,取得由主装置产生的内部搬移命令,其中内部搬移命令指示固态硬碟于输出入通道中执行内部数据搬移作业,包含指向数据缓冲区中的第一笔数据搬移记录的存储器地址;从数据缓冲区中的存储器地址开始取得多笔数据搬移记录,其中,数据搬移记录中之每一者包含来源位置;为每一来源位置决定输出入通道中的目的地位置;指示快闪控制器要求输出入通道执行复制回写程序将输出入通道中的每一来源位置的使用者数据搬移至决定的目的地位置;以及回复每一来源位置的目的地位置给主装置。附图说明图1是依据本发明实施例的快闪存储器的系统架构示意图。图2是依据本发明实施例的存取介面与储存单元的方块图。图3是依据本发明实施例的一个存取子介面与多个储存子单元的连接示意图。图4是储存单元的示意图。图5是命令伫列示意图。图6是数据存取命令的执行步骤的流程图。图7是依据一些实施方式的垃圾回收示意图。图8是依据一些实施方式的耗损平均示意图。图9是依据本发明实施例的快闪存储器的数据内部搬移方法流程图。图10是依据本发明实施例的内部搬移命令的数据格式图。图11是完成元件的数据格式图。图12是依据本发明实施例的废料搜集程序的内部搬移作业示意图。图13是依据本发明实施例的耗损平均程序的内部搬移作业示意图。符号说明110主装置;120数据缓冲器;130固态硬碟;133处理单元;135快闪控制器;137存取介面;137_0~137_j存取子介面;139储存单元;139_0_0~139_j_i储存子单元;310_0数据线;320_0_0~320_0_i芯片致能控制信号;410、430、450、470输出入通道;410_0~410_m、430_0~430_m、450_0~450_m、470_0~470_m数据平面;490_0~490_n超页面;p#0~p#(n)实体页面;510递交伫列;530完成伫列;s1110~s1360方法步骤;710、730、750、770实体区块;p1~p4实体页面;711、733、755、757区段;810、830实体区块;p5~p8实体页面;s9110~s9120、s9310~s9330方法步骤;1000内部搬移命令;1010操作码;1020写入模式;1030命令识别码;1040命名空间识别码;1050主要存储器地址;1060延伸存储器地址;1070实体区段资讯;1080搬移区段数量;1100完成元件;1110实体区域页面记录;1120状态旗标;1130命令识别码;1210存取子介面;1230直接数据存取电路;1250寄存器;1310存取子介面;1330直接数据存取电路;1350寄存器。具体实施方式以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的
发明内容必须参考之后的权利要求范围。必须了解的是,使用于本说明书中的"包含"、"包括"等词,是用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。于权利要求中使用如"第一"、"第二"、"第三"等词系用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。图1是依据本发明实施例的开放通道固态硬碟系统100架构示意图。开放通道固态硬碟系统100架构包含主装置110、数据缓冲器(databuffer)120及开放通道固态硬碟(ssd,solidstatedisk)130。主装置111运作时可依据其需求而建立伫列(queue)、实体储存对照表(storagemappingtable,又称为l2plogical-to-physical表)及使用记录。此系统架构可实施于个人电脑、笔记型电脑(laptoppc)、平板电脑、手机、数位相机、数位摄影机等电子产品。数据缓冲器120、伫列、实体储存对照表及使用记录可实施于随机存取存储器(ram,randomaccessmemory)中的特定区域。主装置110透过开放通道固态硬碟快速非挥发存储器(nvme,non-volatilememoryexpress)介面与开放通道固态硬碟130沟通。主装置110可使用多种方式实施,例如使用通用硬件(例如,单一处理器、具平行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行指令(instructions)、宏码(macrocode)或微码(microcode)时,提供之后描述的功能。主装置110可包含运算逻辑单元(alu,arithmeticandlogicunit)以及位移器(bitshifter)。运算逻辑单元负责执行布林运算(如and、or、not、nand、nor、xor、xnor等)或数学运算(如加、减、乘、除等),而位移器负责位移运算及位元旋转。开放通道ssdnvme规格,例如:版本1.2,公开于2016年四月,支援数个输出入通道(i/ochannels),每一输出入通道连接至一个逻辑单元编号luns,logicalunitnumbers),用以分别对应到储存单元139中的多个储存子单元。于开放通道ssdnvme规格中,主装置110整合原来实施于装置端中的快闪存储器翻译层(ftl,flashtranslationlayer),用以最佳化负载。传统的快闪存储器翻译层将主装置端或档案系统认得的逻辑区块地址(lbas,logicalblockaddresses)映射至储存单元139的实体地址(也称为逻辑至实体映射)。于开放通道ssdnvme规格中,主装置110可指示开放通道固态硬碟130将使用者数据储存至储存单元139中的一个实体地址,因此,实体储存对照表的维护由主装置110所负责及记录每个逻辑区块地址的使用者数据实际储存于储存单元139中的哪个实体地址。开放通道固态硬碟130包含处理单元133。处理单元133可采用开放通道ssdnvme通讯协定与主装置110沟通,用以接收包含实体地址的数据存取命令,并且依据数据存取命令指示快闪控制器135执行抹除、读取或写入。于此须注意的是,处理单元133可使用轻简型通用目的处理器(lightweightgeneral-purposeprocessor)实施。开放通道固态硬碟130另包含快闪控制器135、存取介面137及储存单元139,并且快闪控制器135透过存取介面137与储存单元139沟通,详细来说,可采用双倍数据率(doubledatarate,ddr)通讯协定,例如,开放nand快闪(opennandflashinterface,onfi)、双倍数据率开关(ddrtoggle)或其他介面。开放通道固态硬碟130的快闪控制器135透过存取介面137写入使用者数据到储存单元139中的指定地址(目的地址),以及从储存单元139中的指定地址(来源地址)读取使用者数据。存取介面137使用数个电子信号来协调快闪控制器135与储存单元139间的数据与命令传递,包含数据线(dataline)、时脉信号(clocksignal)与控制信号(controlsignal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片致能(chipenable,ce)、地址提取致能(addresslatchenable,ale)、命令提取致能(commandlatchenable,cle)、写入致能(writeenable,we)等控制信号。处理单元133与快闪控制器135可分开存在或整合于同一芯片中。于系统开机(systemboot)时,主装置110从开放通道固态硬碟130获得控制开放通道固态硬碟130运作时所需的操作参数,例如,区块数目、坏块(badblock)数目、滞后时间(latency)、输出入通道总数等。储存单元139可包含多个储存子单元,每个储存子单元,各自使用关联的存取子介面与快闪控制器135进行沟通。一或多个储存子单元可封装在一个晶粒(die)之中。图2是依据本发明实施例的存取介面与储存单元的方块图。开放通道固态硬碟130可包含j+1个存取子介面137_0至137_j,每一个存取子介面连接i+1个储存子单元。存取子介面及其后连接的储存子单元又可统称为输出入通道,并可以逻辑单元编号识别。换句话说,i+1个储存子单元共享一个存取子介面。例如,当开放通道固态硬碟130包含4个输出入(j=3)且每一个输出入连接4个储存单元(i=3)时,开放通道固态硬碟130一共拥有16个储存子单元139_0_0至139_j_i。快闪控制器135可驱动存取子介面137_0至137_j中之一者,从指定的储存子单元读取数据。每个储存子单元拥有独立的芯片致能(ce)控制信号。换句话说,当欲对指定的储存子单元进行数据读取时,需要驱动关联的存取子介面来致能此储存子单元的芯片致能控制信号。图3是依据本发明实施例的一个存取子介面与多个储存子单元的连接示意图。快闪控制器135可透过存取子介面137_0使用独立的芯片致能控制信号320_0_0至320_0_i从连接的储存子单元139_0_0至139_0_i中选择出其中一者,接着,透过共享的数据线310_0从选择出的储存子单元的指定地址读取数据。图4是储存单元139的示意图。储存单元139包含多个数据平面(dataplanes)410_0至410_m、430_0至430_m、450_0至450_m及470_0至470_m,每一数据平面或多个数据平面置于一个逻辑单元编号中。数据平面410_0至410_m及共享的存取子介面称为输出入通道410,数据平面430_0至430_m及共享的存取子介面称为输出入通道430,数据平面450_0至450_m及共享的存取子介面称为输出入通道450,及数据平面470_0至470_m及共享的存取子介面称为输出入通道470,其中,m可为2的次方的整数(例如2、4、8、16、32等),输出入通道410、430、450及470可使用逻辑单元编号识别。数据平面410_0至470_m中之每一者包含多个实体区块(physicalblocks),每个实体区块包含多个页面(pages)p#0至p#(n),每个页面包含多个区段(sectors)(例如,4个、8个等),其中,n可为767或1535等。每个页面包含多个nand存储器单元(memorycells),并且nand存储器单元可为单层式单元(single-levelcells,slcs)、多层式单元(multi-levelcells,mlcs)、三层式单元(triple-levelcells,tlcs)或四层式单元(quad-levelcells,qlcs)。于一些实施例中,当每一个nand存储器单元为单层式单元而可记录2个状态时,数据平面410_0至470_0中的页面p#0可虚拟形成超页面(superpage)490_0,数据平面410_0至470_0中的页面p#1可虚拟形成超页面490_1,依此类推。于另一些实施例中,当每一个nand存储器单元为多层式单元而可记录4个状态时,一个实体字元线可包含页面p#0(可称为最低位元页面,msb,mostsignificantbitpage)、页面p#1(可称为最高位元页面,lsb,leastsignificantbitpage),依此类推。于更另一些实施例中,当每一个nand存储器单元为三层式单元而可记录8个状态时,一个实体字元线可包含页面p#0(可称为最低位元页面,msbpage)、页面p#1(可称为中间位元页面,csb,centersignificantbitpage)及页面p#2(可称为最高位元页面,lsbpage)。当每一个nand存储器单元为四层式单元而可记录16个状态时,除了msb、csb以及lsb页面之外,更包括tsb(可称为顶部位元,tsb,topsignificantbit)页面。储存单元139运作时,页面可为数据管理或编程的最小单位,大小例如为16kb,此时实体地址可表示为页面编号;或者,页面可包含多个区段,大小例如为4kb,则区段可为数据管理的最小单位,此时实体地址可表示为页面的区段编号(sectornumbers)或此区段在页面的偏移量(offset)。区块为数据抹除的最小单位。实体区块可依据其使用状态而区分成主动区块、数据区块以及闲置区块。主动区块表示正在进行数据写入的实体区块,即尚未写入区块结束(endofblock)资讯的实体区块。数据区块为已写入区块结束资讯的实体区块,即不再写入任何使用者数据。闲置区块可被选取而成为主动区块,闲置区块不储存任何有效的使用者数据。通常闲置区块被选取后,需执行抹除动作方可成为主动区块。于一些实施例中,主装置110传送给开放通道固态硬碟130的实体地址可包含逻辑单元编号、数据平面编号、实体区块编号、实体页面编号及区段编号等资讯,用以指出欲读取或写入的使用者数据位于特定输出入通道中的特定数据平面中的特定实体区块中的特定实体页面中的特定区段。于一些实施例中,有时会以行(column)编号取代区段编号。于另一些实施例中,主装置110传送给开放通道固态硬碟130的实体地址可包含逻辑单元编号、数据平面编号及实体区块编号等资讯,用以指出欲抹除特定输出入通道中的特定数据平面中的特定数据区块。图5是命令伫列示意图。伫列115可包含递交伫列(submissionqueue)510及完成伫列(completionqueue)530,分别用以暂存主装置指令以及完成元件(completionelement)。递交伫列510及完成伫列530中之每一者包含多笔条目的集合。递交伫列510中的每一笔条目储存一个主装置指令,例如:输出入命令(以下称为数据存取命令)或管理命令,而完成伫列530中的每一笔条目储存关联至一个数据存取命令或管理命令的完成元件,此完成元件的功能类似确认讯息。集合中的条目依序存放。集合的操作基本原则是由结束位置新增条目(可称为入列),并且由开始位置移除条目(可称为出列)。也就是说,第一个新增至递交伫列510或完成伫列530的命令或讯息,也将会是第一个被移出的。主装置110可写入数据存取命令(dataaccesscommand,例如,抹除、读取、写入命令等)至递交伫列510,并且处理单元133从递交伫列510读取(或称为提取fetch)最早到达的数据存取命令并执行。于数据存取命令执行完成后,处理单元133写入完成元件至完成伫列530,主装置110可读取或提取完成元件而判断数据存取命令的执行结果。图6是数据存取命令的执行步骤的流程图。主装置110产生并写入数据存取命令(例如,抹除、读取、写入命令等)至递交伫列510(步骤s1110),其中,数据存取命令包含实体地址的资讯,并且,实体地址指向特定的区块、页面或区段地址。接着,主装置110发出递交门铃(submissiondoorbell)给处理单元133(步骤s1120),用以通知处理单元133关于递交伫列510中已写入一个数据存取命令的资讯,并更新递交伫列510的伫列尾(tail)的值。处理单元133接收到递交门铃后(步骤s1310),从递交伫列510读取(最早到达的)数据存取命令(步骤s1320),并且依据数据存取命令指示快闪控制器135,用以完成指定的作业(例如,抹除、数据读取、写入等)(步骤s1330)。指定作业完成后,处理单元133产生并写入完成元件至完成伫列530(步骤s1340)用以通知主装置110相应于特定数据存取命令的作业的执行状态资讯,并且发出中断给主装置(步骤s1350)。接收中断后(步骤s1130),主装置110从完成伫列530读取(最早到达的)完成元件(步骤s1130),接着,发出完成门铃给处理单元133(步骤s1140)。接收完成门铃后(s1360),处理单元133更新完成伫列530的伫列头(head)的值。于步骤s1120及s1140,主装置110可设定相应寄存器(registers)来向处理单元133发出递交门铃及结束门铃。一笔数据存取命令可处理多笔使用者数据,例如:64笔,则完成元件中可包括64个位元的执行回复表,每个位元分别表示每一笔使用者数据的执行结果,例如:"0"表示成功,"1"表示失败。数据存取命令包含操作码栏位,用以储存数据存取命令的类型(例如,抹除、读取、写入等)。完成元件包含状态栏位,用以储存对应的数据存取命令的执行状态(例如,成功、失败等)。另外,处理单元133可乱序或依优先权的顺序来执行数据存取命令,因此,数据存取命令及完成元件都包含命令识别码(commandidentifier),用以让主装置110可将每一个完成元件关联至特定数据存取命令。举例来说,一个闲置区块在写入前需要被抹除以成为主动区块,主装置110可写入抹除命令至递交伫列510(步骤s1110)用以指示开放通道固态硬碟130(详细来说为处理单元133)针对特定输出入通道中的特定闲置区块执行抹除作业。处理单元133因应抹除命令而指示快闪控制器135通过驱动存取介面137以完成于储存单元139中指定的抹除作业(步骤s1330)。当抹除作业完成,处理单元133写入完成元件至完成伫列530(步骤s1340)用以通知主装置110关于相应抹除作业已经完成的资讯。举例来说,主装置110可写入读取命令至递交伫列510(步骤s1110)用以指示开放通道固态硬碟130从特定输出入通道中的特定数据平面中的特定实体区块中的特定实体页面(的特定区段)读取使用者数据。处理单元133因应读取命令而指示快闪控制器135通过驱动存取介面137从储存单元139中指定的实体地址读取使用者数据,并且将使用者数据储存至读取命令所指定的数据缓冲区120(步骤s1330)。当读取作业完成,处理单元133写入完成元件至完成伫列530(步骤s1340)用以通知主装置110关于相应读取作业已经完成的资讯。举例来说,主装置110可储存欲写入的使用者数据于数据缓冲区120,并储存写入命令至递交伫列510(步骤s1110)用以指示开放通道固态硬碟130写入使用者数据至特定输出入通道中的特定数据平面中的特定主动区块中的特定实体页面(的特定区段),其中,写入命令包含数据缓冲区120中储存欲写入的使用者数据的地址资讯。处理单元133因应写入命令而从数据缓冲区120中的指定地址读取欲写入的使用者数据,并指示快闪控制器135通过驱动存取介面137将使用者数据编程至储存单元139中写入命令所指定的实体地址(步骤s1330)。当写入作业完成,处理单元133写入完成元件至完成伫列530(步骤s1340)用以通知主装置110关于相应写入作业已经完成的资讯。经过多次的存取后,一个实体页面可能包含有效及无效区段(又称为过期区段),其中,有效区段储存有效的使用者数据,无效区段储存无效的(旧的)使用者数据。于一些实施方式中,当主装置110检测到储存单元139的可用空间不足时,可使用如上所述的读取命令指示处理单元133读取并搜集有效区段中的使用者数据,接着,主装置110使用如上所述的写入命令指示处理单元133重新写入搜集起来的有效的使用者数据至闲置区块或主动区块的空实体页面,使得这些包含无效的使用者数据的数据区块可变更成为闲置区块,于抹除后,即可提供数据储存空间。如上所述的程序称为垃圾收集(gc,garbagecollection)。图7是依据一些实施方式的垃圾回收示意图。假设数据区块的一个实体页面包括四个区段,每一区段可储存一笔使用者数据:经过多次存取后,数据区块710中的实体页面p1的第0个区段711储存有效的使用者数据,其余储存无效的使用者数据。数据区块730中的实体页面p2的第1个区段733储存有效的使用者数据,其余储存无效的使用者数据。数据区块750中的实体页面p3的第2个及第3个区段755及757储存有效的使用者数据,其余储存无效的使用者数据。为了将实体页面p1至p3中的有效的使用者数据搜集起来并储存至实体区块770中的新实体页面p4,可执行垃圾回收程序,包含一连串的读取及写入命令。此外,由于经过一定次数的抹除(例如,500次、1000次、5000次等),储存单元139中的实体区块便会因为不良的数据保存(dataretention)能力而被列为坏块而不再使用。为了延长实体区块的服务寿命,主装置110持续监督每个实体区块的抹除次数。当一个数据区块的抹除次数超过抹除阀值时,主装置110可使用如上所述的读取命令指示处理单元133读取这个数据区块(来源区块)中的使用者数据。接着,主装置110选择一个抹除次数最少的闲置区块作为目的区块,并且使用如上所述的写入命令指示处理单元133写入之前的读取的使用者数据写至选择的目的区块中的可用实体页面。如上所述的程序称为耗损平均(wearleveling)。图8是依据一些实施方式的耗损平均示意图。假设数据区块810的抹除次数已经超过抹除阀值,而闲置区块830的抹除次数是此输出入通道中所有实体区块中最少的:主装置110启动耗损平均,将数据区块810中的实体页面p5至p6的使用者数据搬移至闲置区块830中的实体页面p7至p8,其中,耗损平均程序包含一连串的读取及写入命令。此外,主装置110可记录每一数据区块的读取次数并以读取次数作为耗损平均程序启动的条件。例如:在一个月中,数据区块810的读取次数最低且抹除次数未超过抹除阀值,主装置110可选取所有闲置区块中或同一输出入通道的所有闲置区块中具有最高抹除次数的闲置区块,例如:闲置区块830,作为目的区块,并将数据区块810作为来源区块,启动耗损平均程序以将数据区块810的使用者数据(或称冷数据)搬移至闲置区块830,其中,耗损平均程序包含一连串的读取及写入命令。然而,使用如上所述的读取及写入命令来完成垃圾收集或耗损平均程序,会让伫列115耗费大量空间储存一连串的读取及写入命令以及完成元件,并且数据缓冲器120也需要耗费大量频宽传输从储存单元139读取的数据以及传输欲写入储存单元139的数据,以及耗费大量空间储存从储存单元139读取的数据。此外,主装置110及处理单元133亦需要耗费大量运算资源处理这一连串的读取及写入命令,而这将使开放通道固态硬碟130无法维持适当的运算资源以及时回应主装置110的数据存取命令,造成开放通道固态硬碟130的系统效能低落。为了解决如上所述实施方式的缺陷,本发明实施例提出一种快闪存储器的数据内部搬移方法,此数据内部搬移方法适用于实体储存对照表117由主装置110负责维护的系统,例如:开放通道固态硬碟系统100。图9是依据本发明实施例的快闪存储器的数据内部搬移方法流程图。主装置110可周期性地监督每一个输出入通道的使用状态,例如,可用闲置区块的数量、每一实体区块的抹除次数或读取次数等等。当主装置110检测到开放通道固态硬碟130中的一个输出入通道的使用状态满足数据搬移的条件后,产生内部搬移(internalmovement)命令并写入至递交伫列510(步骤s9110),用以指示开放通道固态硬碟130将特定输出入通道中的来源区块的使用者数据搬移至相同输出入通道中的目的区块,其中,数据搬移的条件可以是闲置区块的数量低于闲置阀值或是数据区块(来源区块)的抹除次数或读取次数分别高于抹除阀值或读取阀值。另外,较佳仅搬移有效的使用者数据至目的区块,但为了较高的执行效率或大部份使用者数据皆为有效时,可搬移全部的使用者数据至目的区块。写入内部搬移命令至递交伫列510后,主装置110发出递交门铃给处理单元133(步骤s1120),用以通知处理单元133关于递交伫列510中已写入一个数据存取命令的资讯。处理单元133接收递交门铃后(步骤s1310),从递交伫列510读取内部搬移命令(步骤s9310),并且因应内部搬移命令而指示快闪控制器135通过驱动存取介面137在特定输出入通道的来源区块和目的区块之间启动复制回写程序(copybackprocedure)(步骤s9320)。虽然在最理想的情况下,处理单元133于步骤s9310读取的最早到达的数据存取命令为内部搬移命令,但是,当递交伫列510中存在其他较早到达的数据存取命令时,处理单元133会花一段时间读取并执行完这些较早到达的数据存取命令后,才接着于步骤s9310读取并执行内部搬移命令。虽然本发明实施例于图6中无法没有显示这些较早到达的数据存取命令的读取与执行,但是本发明并不因此受限。当处理单元133完成内部搬移作业后,处理单元133写入完成元件至完成伫列530(步骤s9330)用以通知主装置110关于相应内部搬移命令已经完成的资讯。于步骤s1130,主装置110可执行中断服务处理程序(isr,interruptserviceroutine),用以读取完成伫列530中完成元件,并且因应已执行的内部搬移作业更新实体储存对照表117。例如,将实体储存对照表117中的一个逻辑区块地址原先关联的实体地址(也就是来源区块)更新为新的实体地址(也就是目的区块)。虽然在最理想的情况下,处理单元133于步骤s1130读取的最早到达的确认讯息相应于内部搬移命令,但是,当完成伫列530中存在其他较早到达的确认讯息时,处理单元133会花一段时间读取这些较早到达的确认讯息并执行相应处理后,才接着于步骤s1130读取相应于内部搬移命令的确认讯息,并据以更新实体储存对照表117。虽然本发明实施例于图6中无法没有显示这些较早到达的确认讯息的读取与相应处理,但是本发明并不因此受限。在另一实施例中,主装置110于步骤s9110或步骤s9110之前即更新实体储存对照表117,而非等到步骤s1130或步骤s1130之后再更新实体储存对照表117。在另一实施例中,主装置110于步骤s1130时更会判断目的区块是否已写满使用者数据并写入区块结束资讯,如果是,则更新实体储存对照表117,如果不是,则不更新实体储存对照表117。内部搬移命令可使用结构化格式定义。图10是依据本发明实施例的内部搬移命令的数据格式图。内部搬移命令可为64位元组命令。内部搬移命令1000的第0双字组的第0位元组记录操作码(opcode)1010,用以通知开放通道固态硬碟130此为内部搬移命令。内部搬移命令1000的第0双字组的第2至3位元组记录命令识别码1030,此命令识别码1030较佳为依序产生,作为内部搬移命令1000识别的依据,也用以让完成伫列530中的一个对应的完成元件关联至内部搬移命令1000。内部搬移命令1000以区段为基本单元指示开放通道固态硬碟130执行特定输出入通道的数据搬移作业,但不以此为限。内部搬移命令1000的第12双字组的第0至5位元记录搬移区段数量1080,最大值为64,因此,一个内部搬移命令1000可指示开放通道固态硬碟130于数据搬移作业中搬移特定输出入通道中至多64个区段的使用者数据。内部搬移命令1000的第10至11双字组记录实体区段(physicalsector)资讯1070。如果实体区块的实体地址以32位元表示,且搬移区段数量1080的值为1,则内部搬移命令1000的第10双字组记录使用者数据储存于来源区块的区段地址(来源地址),第11双字组记录使用者数据储存于目的区块的区段地址(目的地址)。藉由复制回写程序,处理单元133可将来源地址的使用者数据编程至目的地址。若搬移区段数量1080的值大于1,或实体区块的实体地址以64位元表示,则实体区段资讯1070记录数据缓冲器120的存储器地址,此时,来源地址以及目的地址以成对地(paired)存在数据缓冲器120中。于步骤s9310中,处理单元133从递交伫列510读取内部搬移命令1000并依据实体区段资讯1070的记录以及搬移区段数量1080的值,自数据缓冲器120取得成对的来源地址以及目的地址,藉由复制回写程序,处理单元133可将多个来源地址的多个使用者数据编程至多个指定的目的地址。在另一实施例中,内部搬移命令1000的第6至7双字组以实体区域页面记录(prp,physicalregionpageentry)或碎片收集清单(sgl,scattergatherlist)记录主要存储器地址1050,且内部搬移命令1000的第8至9双字组以实体区域页面记录或碎片收集清单记录延伸存储器地址1060。当搬移区段数量1080的值大于1时,实体区段资讯1070可记录第一笔来源地址,主要存储器地址1050可记录第一笔目的地址。在另一实施例中,主要存储器地址1050可记录第一笔来源地址,延申存储器地址1060可记录第一笔目的地址。在另一实施例中,主要存储器地址1050可记录第一笔成对的来源地址以及目的地址,当主要存储器地址1050所涵盖的存储器空间无法记录所有成对的来源地址以及目的地址时,延申存储器地址1060可记录剩余的成对的来源地址以及目的地址。内部搬移命令1000的第12双字组的第24-25位元记录写入模式(m1)1020,第12双字组的第26-27位元记录读取模式(m2)1040。写入模式及读取模式各可包含二个状态,例如:预设模式及slc模式。当其指出为slc模式时,处理单元133指示快闪控制器135通过驱动存取介面137以slc模式读取或写入一个页面的数据。当其指出为预设模式时,处理单元133指示快闪控制器135通过驱动存取介面137以预设模式读取或写入一个页面的数据。预设模式以tlc为例,此页面可以是msb页面、csb页面或lsb页面。于另一些实施例中,写入模式可包含四个状态,例如:slc模式;mlc模式;tlc模式;及qlc模式。另外,写入模式的数目较佳与储存单元139的编程方式有关,例如:储存单元139为qlc并采用三段编程(3-passprogramming)方式,第一段编程仅写入msb页面,第二段编程再写入csb页面以及lsb页面,第三段编程再写入tsb页面,则写入模式可包含三个模式,包括:slc模式、tlc模式及qlc模式(预设模式)。当其指出qlc模式时,处理单元133指示快闪控制器135通过驱动存取介面137要求特定输出入通道于每个存储器单元写入msb页面、csb页面、lsb页面或tsb页面的使用者数据。上述设定可也套用至读取模式中。需注意的是,读取模式与写入模式的设定值可不同,例如:读取模式是slc模式但写入模式是预设模式。假设储存单元139为qlc,主装置110可以多个输出内部搬移命令1000而将4笔使用者数据以slc模式自来源区块的来源地址中读出,并依序以qlc模式编程至目的区块的目的地址。图11是完成元件的数据格式图。完成元件1100可为16位元组讯息。完成元件1100的第3双字组的第0至1位元组记录命令识别码1130,其内容应与内部搬移命令1000的命令识别码1030一致,用以让此完成元件1100关联至特定内部搬移命令1000。完成元件1100的第0至1双字组储存执行回复表1110,用以记录每一使用者数据的存取结果。完成元件1100的第3双字组的第17至31位元记录状态栏位1120,用以记录内部搬移命令1000的执行结果。在步骤s9110之前,主装置110系统可储存多笔使用记录119,每笔记录储存一个输出入通道的实体区块的使用状态的资讯。于每次开放通道固态硬碟130执行完数据存取作业(例如,抹除、读取、写入、内部搬移等),主装置110可更新相应使用记录中的使用状态的资讯,并判定是否满足相应输出入通道的数据搬移条件。例如,将相应输出入通道的闲置区块的数量减1,将相应输出入通道的一个实体区块的抹除次数加1,或将相应输出入通道的一个数据区块的读取次数加1等。于一些实施例中,当使用记录119指出相应输出入通道的闲置区块的数量低于闲置阀值时,代表闲置区块的数量太少,需要启动垃圾收集程序,以增加闲置区块的数量。于一些实施例中,当使用记录119指出相应输出入通道的一个实体区块的抹除次数高于抹除阀值时,主装置启动耗损平均程序以避免使用者数据遇到数据保存的问题。在执行数据读取或写入的过程中,可能遇到读取失败或写入失败的情况。当遇到上述清况时,完成元件1100的状态栏位1120会被设为"1",读取失败或写入失败的使用者数据所对应在执行回复表的位元也会设为"1"。此时,主装置110必须先判断此失败为读取失败或写入失败,如果是读取失败,则启动错误管理程序,例如:raid,以修复来源地址的使用者数据;如果是写入失败,则重新为使用者数据决定一个新的目的地址。由上述的描述中可知,内部搬移过程中如果发生会失败的情况,则主装置110需耗费大量时间及运算资源以判断原因并修正此错误。为解决如上所述的缺陷,于另一些实施例,主装置110不为每一个来源地址的使用者数据决定一个目的地址,而是让开放通道固态硬碟130决定,之后,开放通道固态硬碟130再将决定的目的地址依据内部搬移命令1000的指示上传至主装置111所指定的数据缓冲器120的存储器地址,例如:主要存储器地址1050、延伸存储器地址1060或实体区段资讯1070所指定的存储器地址。最后,透过完成元件1100通知主装置110目的地址已完成上传,之后,主装置110可依据目的地址更新实体储存对照表117。当需要进行多个区段的使用者数据搬移时,详细来说,于步骤9110前,主装置110可储存多笔使用者数据的来源地址至数据缓冲区120,并将来源地址在数据缓冲区120的存储器地址储存至内部搬移命令1000中的主要存储器地址1050、延伸存储器地址1060或实体区段资讯1070其中一个,主要存储器地址1050、延伸存储器地址1060或实体区段资讯1070中的另一个则供开放通道固态硬碟130上传使用者数据的目的地址。在步骤9110,将内部搬移命令1000写入至递交伫列510。来源地址可使用逻辑单元编号、数据平面编号、实体区块编号、实体页面编号及区段编号表示。于步骤s9310,处理单元133读取并判断内部搬移命令1000的操作码1010,接着再读取内部搬移命令1000的搬移区段数量1080、主要存储器地址1050、延申存储器地址1060或实体区段资讯1070的值,再至数据缓冲器120的存储器地址取得多笔使用者数据的来源地址。接着,于步骤s9320,处理单元133为每一个使用者数据决定一个目的地址,例如:选取具有抹除次数的闲置区块作为目的区块,并指示快闪控制器135通过驱动存取介面137对特定输出入通道的来源区块和目的区块执行复制回写程序。当写入任何一个目的地址失败时,处理单元133将使用者数据编程至下一个页面(的第一个区段);或直接将此实体字元线的所有剩余页面写入虚假数据(dummydata),再将使用者数据编程至下一个实体字元线的msb页面(的第一个区段),或是,重新指示快闪控制器135通过驱动存取介面137要求对特定输出入通道的来源区块和目的区块执行复制回写程序,将使用者数据搬移至下一个实体字元线的msb页面,或是,将使用者数据编程至另一个目的区块。于步骤s9330,当复制回写程序成功执行完毕后,处理单元133可储存所有使用者数据的目的地址至数据缓冲区120,写入完成元件1100至完成伫列530。于步骤s1130,主装置110收到完成元件1100之后,依据搬移区段数量1080、主要存储器地址1050、延伸存储器地址1060或实体区段资讯1070的值从数据缓冲区120读取所有的目的地址,并据以更新实体储存对照表117。当只需要一个区段的使用者数据搬移时,详细来说,于步骤9110,主装置110可储存一个来源地址至内部搬移命令1000中的实体区段资讯1070,并设定主要存储器地址1050的值以供开放通道固态硬碟130上传使用者数据的目的地址,并且写入内部搬移命令1000至递交伫列510。于步骤s9310,处理单元133读取内部搬移命令1000中的实体区段资讯1070的来源地址时,为此来源地址决定一个目的地址,并指示快闪控制器135通过驱动存取介面137要求特定输出入通道执行复制回写程序。于步骤s9330,当此复制回写程序成功执行完毕后,处理单元133上传使用者数据的目的地址至主要存储器地址1050所对应的存储器地址写入完成元件1100至完成伫列530。于步骤s1130,主装置110读取完成元件1100并依据主要存储器地址1050的值从数据缓冲区120读取目的地址,并据以更新实体储存对照表117。图12是依据本发明实施例的废料搜集程序的内部搬移作业示意图。主装置111可写入内部搬移命令至递交伫列510,内部搬移命令包含多组来源区段及目的地区段的实体位置。第一组包含来源区段711及目的地区段771的实体位置,第二组包含来源区段733及目的地区段773的实体位置,第三组包含来源区段755及目的地区段775的实体位置,以及第四组包含来源区段757及目的地区段777的实体位置。接着,快闪控制器135驱动存取子介面1210执行复制回写程序。存取子介面1210指示直接数据存取电路(dma-directmemoryaccesscircuit)1230读取来源区段711、733、755及757的数据,并搜集储存至寄存器1250,接着,指示直接数据存取电路1230将寄存器1250中一整个实体页面的数据写入实体块770中的实体页面p4(包含区段771、773、775及777)。图13是依据本发明实施例的耗损平均程序的内部搬移作业示意图。主装置111可写入内部搬移命令至递交伫列510,内部搬移命令包含多组来源区段及目的地区段的实体位置。例如,第一组包含实体块810的实体页面p5中的第一来源区段以及实体块830的实体页面p7中的第一目的地区段的实体位置,第二组包含实体块810的实体页面p5中的第二来源区段以及实体块830的实体页面p7中的第二目的地区段的实体位置,依此类推。接着,快闪控制器135驱动存取子介面1310执行复制回写程序。存取子介面1310指示直接数据存取电路1330读取实体页面p5及p6中八个来源区段的数据,并储存至寄存器1350,接着,指示直接数据存取电路1330将寄存器1350中二个实体页面的数据写入实体块830中的实体页面p7及p8。另外,复制回写程序的执行过程中,使用者数据不需要上传至数据缓冲器120。快闪控制器135输出复制回写的读取命令至储存单元139的来源区块,使得自来源地址读取出的使用者数据暂存于储存单元139的寄存器(快取寄存器或页面寄存器)中。接着,快闪控制器135输出复制回写的编程命令至储存单元139的目的区块,使得暂存在寄存器1250的使用者数据被编程至目的地址。由于使用者数据不需要上传至数据缓冲器120,因此,使用者数据自来源区块传送至数据缓冲器120以及自数据缓冲器120传送至目的区块的时间即可被节省,故能增加开放通道固态硬碟130的系统效能,达到本发明的目的。虽然图1至3中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,已达成更佳的技术效果。此外,虽然图6及图9的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,熟悉本
技术领域:
:者可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,熟悉本
技术领域:
:者亦可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或平行地执行更多步骤,本发明亦不因此而局限。虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了熟悉本
技术领域:
:者显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。当前第1页12当前第1页12