CN109542335B - 快闪存储器的数据内部搬移方法以及使用该方法的装置 - Google Patents

快闪存储器的数据内部搬移方法以及使用该方法的装置 Download PDF

Info

Publication number
CN109542335B
CN109542335B CN201810209548.5A CN201810209548A CN109542335B CN 109542335 B CN109542335 B CN 109542335B CN 201810209548 A CN201810209548 A CN 201810209548A CN 109542335 B CN109542335 B CN 109542335B
Authority
CN
China
Prior art keywords
data
internal
command
solid state
move
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810209548.5A
Other languages
English (en)
Other versions
CN109542335A (zh
Inventor
林圣嵂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from TW107101541A external-priority patent/TWI679535B/zh
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to CN202210242579.7A priority Critical patent/CN114546293A/zh
Publication of CN109542335A publication Critical patent/CN109542335A/zh
Application granted granted Critical
Publication of CN109542335B publication Critical patent/CN109542335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及一种快闪存储器的数据内部搬移方法以及使用该方法的装置,由主装置执行,包含下列步骤:检测到固态硬碟中的输出入通道的使用状态满足条件时,产生内部搬移命令;以及提供内部搬移命令以指示固态硬碟于输出入通道中执行内部数据搬移作业。

Description

快闪存储器的数据内部搬移方法以及使用该方法的装置
技术领域
本发明关连于一种快闪存储器,特别是一种快闪存储器的数据内部搬移方法以及使用该方法的装置。
背景技术
快闪存储器装置通常分为NOR快闪装置与NAND快闪装置。NOR快闪装置为随机存取装置,主装置(Host)可于地址脚位上提供存取NOR快闪装置的任意地址,并即时地由NOR快闪装置的数据脚位上获得储存于该地址上的使用者数据。相反地,NAND快闪装置并非随机存取,而是序列存取。NAND快闪装置无法像NOR快闪装置一样,可以存取任何随机地址,主装置反而需要写入序列的位元组(Bytes)到NAND快闪装置中,用以定义请求命令(Command)的类型(如,读取、写入、抹除等),以及此命令上的地址。地址可指向一个页面(在快闪存储器中的一个写入作业的最小数据块)或一个区块(在快闪存储器中的一个抹除作业的最小数据块)。实际上,NAND快闪装置通常从存储器单元(Memory Cells)上读取或写入完整的数页数据。当一整页的数据从阵列读取到装置中的缓存器(Buffer)后,藉由使用提取信号(Strobe Signal)顺序地敲出(Clock Out)内容,让主单元可逐位元组或字元组(Words)存取数据。
开放通道固态硬碟(Open-Channel Solid State Disk)系统包括开放通道固态硬碟(装置端)以及主装置,并不在装置端实施快闪存储器翻译层(FTL,Flash TranslationLayer),反而在主装置实施快闪存储器翻译层。不同于传统的固态硬碟,开放通道固态硬碟让主装置知道固态硬碟内部的操作参数,并允许主装置依据操作参数对开放通道固态硬碟进行操作,即进行数据的管理。然而,目前的开放通道固态硬碟只包含三种基本的存取命令:抹除;读取;及写入。当主装置执行一连串读取及写入才能完成的存取程序时,例如垃圾收集(GC,Garbage Collection)、耗损平均(Wear Leveling)等时,需要透过开放通道固态硬碟的存取介面传输数据,耗费大量存取介面的频宽。
因此,需要一种快闪存储器的数据内部搬移方法以及使用该方法的装置,用以解决如上所述的问题。
发明内容
本发明的实施例提出一种快闪存储器的数据内部搬移方法,由主装置执行,包含下列步骤:检测到固态硬碟中的输出入通道的使用状态满足条件时,产生内部搬移命令;以及提供内部搬移命令以指示固态硬碟于输出入通道中执行内部数据搬移作业。
本发明的实施例提出一种快闪存储器的数据内部搬移装置,包含主装置。主装置检测到固态硬碟中的输出入通道的使用状态满足条件时,产生内部搬移命令;以及提供内部搬移命令以指示固态硬碟于输出入通道中执行内部数据搬移作业。
本发明的实施例另提出一种快闪存储器的数据内部搬移方法,由固态硬碟中的处理单元执行,包含下列步骤:取得由主装置产生的内部搬移命令,其中内部搬移命令指示固态硬碟于输出入通道中执行内部数据搬移作业,包含指向数据缓冲区中的第一笔数据搬移记录的存储器地址;从数据缓冲区中的存储器地址开始取得多笔数据搬移记录,其中,数据搬移记录中之每一者包含来源位置;为每一来源位置决定输出入通道中的目的地位置;指示快闪控制器要求输出入通道执行复制回写程序将输出入通道中的每一来源位置的使用者数据搬移至决定的目的地位置;以及回复每一来源位置的决定的目的地位置给主装置。
本发明的实施例另提出一种快闪存储器的数据内部搬移装置,包含快闪控制器及处理单元。处理单元耦接于快闪控制器,取得由主装置产生的内部搬移命令,其中内部搬移命令指示固态硬碟于输出入通道中执行内部数据搬移作业,包含指向数据缓冲区中的第一笔数据搬移记录的存储器地址;从数据缓冲区中的存储器地址开始取得多笔数据搬移记录,其中,数据搬移记录中之每一者包含来源位置;为每一来源位置决定输出入通道中的目的地位置;指示快闪控制器要求输出入通道执行复制回写程序将输出入通道中的每一来源位置的使用者数据搬移至决定的目的地位置;以及回复每一来源位置的目的地位置给主装置。
附图说明
图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、数据缓冲器(Data Buffer)120及开放通道固态硬碟(SSD,Solid State Disk)130。主装置111运作时可依据其需求而建立伫列(Queue)、实体储存对照表(Storage Mapping Table,又称为L2P Logical-to-Physical表)及使用记录。此系统架构可实施于个人电脑、笔记型电脑(Laptop PC)、平板电脑、手机、数位相机、数位摄影机等电子产品。数据缓冲器120、伫列、实体储存对照表及使用记录可实施于随机存取存储器(RAM,Random Access Memory)中的特定区域。主装置110透过开放通道固态硬碟快速非挥发存储器(NVMe,Non-Volatile Memory express)介面与开放通道固态硬碟130沟通。主装置110可使用多种方式实施,例如使用通用硬件(例如,单一处理器、具平行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行指令(Instructions)、宏码(Macrocode)或微码(Microcode)时,提供之后描述的功能。主装置110可包含运算逻辑单元(ALU,Arithmetic and Logic Unit)以及位移器(Bit Shifter)。运算逻辑单元负责执行布林运算(如AND、OR、NOT、NAND、NOR、XOR、XNOR等)或数学运算(如加、减、乘、除等),而位移器负责位移运算及位元旋转。开放通道SSD NVMe规格,例如:版本1.2,公开于2016年四月,支援数个输出入通道(I/O Channels),每一输出入通道连接至一个逻辑单元编号LUNs,Logical Unit Numbers),用以分别对应到储存单元139中的多个储存子单元。于开放通道SSD NVMe规格中,主装置110整合原来实施于装置端中的快闪存储器翻译层(FTL,FlashTranslation Layer),用以最佳化负载。传统的快闪存储器翻译层将主装置端或档案系统认得的逻辑区块地址(LBAs,Logical Block Addresses)映射至储存单元139的实体地址(也称为逻辑至实体映射)。于开放通道SSD NVMe规格中,主装置110可指示开放通道固态硬碟130将使用者数据储存至储存单元139中的一个实体地址,因此,实体储存对照表的维护由主装置110所负责及记录每个逻辑区块地址的使用者数据实际储存于储存单元139中的哪个实体地址。
开放通道固态硬碟130包含处理单元133。处理单元133可采用开放通道SSD NVMe通讯协定与主装置110沟通,用以接收包含实体地址的数据存取命令,并且依据数据存取命令指示快闪控制器135执行抹除、读取或写入。于此须注意的是,处理单元133可使用轻简型通用目的处理器(Lightweight General-Purpose Processor)实施。
开放通道固态硬碟130另包含快闪控制器135、存取介面137及储存单元139,并且快闪控制器135透过存取介面137与储存单元139沟通,详细来说,可采用双倍数据率(Double Data Rate,DDR)通讯协定,例如,开放NAND快闪(Open NAND Flash Interface,ONFI)、双倍数据率开关(DDR Toggle)或其他介面。开放通道固态硬碟130的快闪控制器135透过存取介面137写入使用者数据到储存单元139中的指定地址(目的地址),以及从储存单元139中的指定地址(来源地址)读取使用者数据。存取介面137使用数个电子信号来协调快闪控制器135与储存单元139间的数据与命令传递,包含数据线(Data Line)、时脉信号(Clock Signal)与控制信号(Control Signal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片致能(Chip Enable,CE)、地址提取致能(AddressLatch Enable,ALE)、命令提取致能(Command Latch Enable,CLE)、写入致能(WriteEnable,WE)等控制信号。处理单元133与快闪控制器135可分开存在或整合于同一芯片中。
于系统开机(System Boot)时,主装置110从开放通道固态硬碟130获得控制开放通道固态硬碟130运作时所需的操作参数,例如,区块数目、坏块(Bad Block)数目、滞后时间(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包含多个数据平面(Data Planes)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中之每一者包含多个实体区块(Physical Blocks),每个实体区块包含多个页面(Pages)P#0至P#(n),每个页面包含多个区段(Sectors)(例如,4个、8个等),其中,n可为767或1535等。每个页面包含多个NAND存储器单元(Memory Cells),并且NAND存储器单元可为单层式单元(Single-Level Cells,SLCs)、多层式单元(Multi-Level Cells,MLCs)、三层式单元(Triple-Level Cells,TLCs)或四层式单元(Quad-Level Cells,QLCs)。于一些实施例中,当每一个NAND存储器单元为单层式单元而可记录2个状态时,数据平面410_0至470_0中的页面P#0可虚拟形成超页面(Super Page)490_0,数据平面410_0至470_0中的页面P#1可虚拟形成超页面490_1,依此类推。于另一些实施例中,当每一个NAND存储器单元为多层式单元而可记录4个状态时,一个实体字元线可包含页面P#0(可称为最低位元页面,MSB,Most Significant Bit page)、页面P#1(可称为最高位元页面,LSB,Least Significant Bit page),依此类推。于更另一些实施例中,当每一个NAND存储器单元为三层式单元而可记录8个状态时,一个实体字元线可包含页面P#0(可称为最低位元页面,MSB page)、页面P#1(可称为中间位元页面,CSB,Center Significant Bit page)及页面P#2(可称为最高位元页面,LSB page)。当每一个NAND存储器单元为四层式单元而可记录16个状态时,除了MSB、CSB以及LSB页面之外,更包括TSB(可称为顶部位元,TSB,Top Significant Bit)页面。
储存单元139运作时,页面可为数据管理或编程的最小单位,大小例如为16KB,此时实体地址可表示为页面编号;或者,页面可包含多个区段,大小例如为4KB,则区段可为数据管理的最小单位,此时实体地址可表示为页面的区段编号(Sector numbers)或此区段在页面的偏移量(Offset)。区块为数据抹除的最小单位。
实体区块可依据其使用状态而区分成主动区块、数据区块以及闲置区块。主动区块表示正在进行数据写入的实体区块,即尚未写入区块结束(End of Block)资讯的实体区块。数据区块为已写入区块结束资讯的实体区块,即不再写入任何使用者数据。闲置区块可被选取而成为主动区块,闲置区块不储存任何有效的使用者数据。通常闲置区块被选取后,需执行抹除动作方可成为主动区块。
于一些实施例中,主装置110传送给开放通道固态硬碟130的实体地址可包含逻辑单元编号、数据平面编号、实体区块编号、实体页面编号及区段编号等资讯,用以指出欲读取或写入的使用者数据位于特定输出入通道中的特定数据平面中的特定实体区块中的特定实体页面中的特定区段。于一些实施例中,有时会以行(Column)编号取代区段编号。于另一些实施例中,主装置110传送给开放通道固态硬碟130的实体地址可包含逻辑单元编号、数据平面编号及实体区块编号等资讯,用以指出欲抹除特定输出入通道中的特定数据平面中的特定数据区块。
图5是命令伫列示意图。伫列115可包含递交伫列(Submission Queue)510及完成伫列(Completion Queue)530,分别用以暂存主装置指令以及完成元件(CompletionElement)。递交伫列510及完成伫列530中之每一者包含多笔条目的集合。递交伫列510中的每一笔条目储存一个主装置指令,例如:输出入命令(以下称为数据存取命令)或管理命令,而完成伫列530中的每一笔条目储存关联至一个数据存取命令或管理命令的完成元件,此完成元件的功能类似确认讯息。集合中的条目依序存放。集合的操作基本原则是由结束位置新增条目(可称为入列),并且由开始位置移除条目(可称为出列)。也就是说,第一个新增至递交伫列510或完成伫列530的命令或讯息,也将会是第一个被移出的。主装置110可写入数据存取命令(Data Access Command,例如,抹除、读取、写入命令等)至递交伫列510,并且处理单元133从递交伫列510读取(或称为提取Fetch)最早到达的数据存取命令并执行。于数据存取命令执行完成后,处理单元133写入完成元件至完成伫列530,主装置110可读取或提取完成元件而判断数据存取命令的执行结果。
图6是数据存取命令的执行步骤的流程图。主装置110产生并写入数据存取命令(例如,抹除、读取、写入命令等)至递交伫列510(步骤S1110),其中,数据存取命令包含实体地址的资讯,并且,实体地址指向特定的区块、页面或区段地址。接着,主装置110发出递交门铃(Submission Doorbell)给处理单元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可乱序或依优先权的顺序来执行数据存取命令,因此,数据存取命令及完成元件都包含命令识别码(Command Identifier),用以让主装置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,Garbage Collection)。
图7是依据一些实施方式的垃圾回收示意图。假设数据区块的一个实体页面包括四个区段,每一区段可储存一笔使用者数据:经过多次存取后,数据区块710中的实体页面P1的第0个区段711储存有效的使用者数据,其余储存无效的使用者数据。数据区块730中的实体页面P2的第1个区段733储存有效的使用者数据,其余储存无效的使用者数据。数据区块750中的实体页面P3的第2个及第3个区段755及757储存有效的使用者数据,其余储存无效的使用者数据。为了将实体页面P1至P3中的有效的使用者数据搜集起来并储存至实体区块770中的新实体页面P4,可执行垃圾回收程序,包含一连串的读取及写入命令。
此外,由于经过一定次数的抹除(例如,500次、1000次、5000次等),储存单元139中的实体区块便会因为不良的数据保存(Data Retention)能力而被列为坏块而不再使用。为了延长实体区块的服务寿命,主装置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在特定输出入通道的来源区块和目的区块之间启动复制回写程序(CopyBack Procedure)(步骤S9320)。虽然在最理想的情况下,处理单元133于步骤S9310读取的最早到达的数据存取命令为内部搬移命令,但是,当递交伫列510中存在其他较早到达的数据存取命令时,处理单元133会花一段时间读取并执行完这些较早到达的数据存取命令后,才接着于步骤S9310读取并执行内部搬移命令。虽然本发明实施例于图6中无法没有显示这些较早到达的数据存取命令的读取与执行,但是本发明并不因此受限。当处理单元133完成内部搬移作业后,处理单元133写入完成元件至完成伫列530(步骤S9330)用以通知主装置110关于相应内部搬移命令已经完成的资讯。于步骤S1130,主装置110可执行中断服务处理程序(ISR,Interrupt ServiceRoutine),用以读取完成伫列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双字组记录实体区段(Physical Sector)资讯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,Physical Region Page Entry)或碎片收集清单(SGL,Scatter Gather List)记录主要存储器地址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将使用者数据编程至下一个页面(的第一个区段);或直接将此实体字元线的所有剩余页面写入虚假数据(Dummy Data),再将使用者数据编程至下一个实体字元线的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-Direct MemoryAccess Circuit)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的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,熟悉本技术领域者可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,熟悉本技术领域者亦可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或平行地执行更多步骤,本发明亦不因此而局限。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了熟悉本技术领域者显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。

Claims (22)

1.一种快闪存储器的数据内部搬移方法,由一主装置执行,包含:
上述主装置检测到一固态硬碟中多个输出入通道中的一个输出入通道的一使用状态满足一条件时,产生一内部搬移命令,其中每个上述输出入通道包含多个储存子单元;以及
上述主装置提供上述内部搬移命令给上述固态硬碟以指示上述固态硬碟于上述输出入通道中执行一内部数据搬移作业。
2.如权利要求1所述的快闪存储器的数据内部搬移方法,其特征在于,包含:
写入上述内部搬移命令至一递交伫列;以及
发送一递交门铃给上述固态硬碟的一处理单元,使得上述处理单元从上述递交伫列读取上述内部搬移命令,并且依据上述内部搬移命令指示一快闪控制器要求上述输出入通道执行一复制回写程序将上述输出入通道中的一来源位置的使用者数据搬移至一目的地位置。
3.如权利要求1所述的快闪存储器的数据内部搬移方法,其特征在于,包含:
于提供上述内部搬移命令前,储存多笔数据搬移记录至一数据缓冲区,其中,上述数据搬移记录中之每一者包含一对的一来源位置及一目的地位置,以及上述来源位置及上述目的地位置中之任一者以逻辑单元编号、数据平面编号、实体区块编号、实体页面编号及区段编号表示;以及
储存指向一第一笔数据搬移记录的一存储器地址至上述内部搬移命令,使得上述固态硬碟从上述数据缓冲区取得上述来源位置及上述目的地位置。
4.如权利要求3所述的快闪存储器的数据内部搬移方法,其特征在于,包含:
从上述固态硬碟接收到相应于上述内部搬移命令的一完成元件后,依据上述来源位置及上述目的地位置更新一实体储存对照表,其中,上述实体储存对照表指出每一逻辑区块地址的数据实际储存于上述固态硬碟中的一储存单元中的哪个位置。
5.如权利要求1所述的快闪存储器的数据内部搬移方法,其特征在于,于提供上述内部搬移命令前,储存多笔数据搬移记录至一数据缓冲区,其中,上述数据搬移记录中之每一者包含一来源位置,以及上述来源位置以逻辑单元编号、数据平面编号、实体区块编号、实体页面编号及区段编号表示;以及
储存指向一第一笔数据搬移记录的一存储器地址至上述内部搬移命令,使得上述固态硬碟从上述数据缓冲区取得上述来源位置,依据上述来源位置决定一目的地位置,并储存上述目的地位置至一数据缓冲区。
6.如权利要求5所述的快闪存储器的数据内部搬移方法,其特征在于,包含:
从上述数据缓冲区取得相应于每一上述来源位置的上述目的地位置;以及
依据上述来源位置及上述目的地位置更新一实体储存对照表,其中,上述实体储存对照表指出每一逻辑区块地址的数据实际储存于上述固态硬碟中的一储存单元中的哪个位置。
7.一种快闪存储器的数据内部搬移装置,包含:
一主装置,检测到一固态硬碟中多个输出入通道中的一个输出入通道的一使用状态满足一条件时,产生一内部搬移命令,其中每个上述输出入通道包含多个储存子单元;以及提供上述内部搬移命令给上述固态硬碟以指示上述固态硬碟于上述输出入通道中执行一内部数据搬移作业。
8.如权利要求7所述的快闪存储器的数据内部搬移装置,其特征在于,包含:
一递交伫列;
其中,上述主装置写入上述内部搬移命令至上述递交伫列;以及发送一递交门铃给上述固态硬碟的一处理单元,使得上述处理单元从上述递交伫列读取上述内部搬移命令,并且依据上述内部搬移命令指示一快闪控制器要求上述输出入通道执行一复制回写程序将上述输出入通道中的一来源位置的使用者数据搬移至一目的地位置。
9.如权利要求7所述的快闪存储器的数据内部搬移装置,其特征在于,包含:
一数据缓冲区;
其中,上述主装置于提供上述内部搬移命令前,储存多笔数据搬移记录至上述数据缓冲区,其中,上述数据搬移记录中的每一者包含一对的一来源位置及一目的地位置,以及上述来源位置及上述目的地位置中的任一者以逻辑单元编号、数据平面编号、实体区块编号、实体页面编号及区段编号表示;以及储存指向一第一笔数据搬移记录的一存储器地址至上述内部搬移命令,使得上述固态硬碟从上述数据缓冲区取得上述来源位置及上述目的地位置。
10.如权利要求9所述的快闪存储器的数据内部搬移装置,其特征在于,上述主装置从上述固态硬碟接收到相应于上述内部搬移命令的一完成元件后,依据上述来源位置及上述目的地位置更新一实体储存对照表,其中,上述实体储存对照表指出每一逻辑区块地址的数据实际储存于上述固态硬碟中的一储存单元中的哪个位置。
11.如权利要求7所述的快闪存储器的数据内部搬移装置,其特征在于,包含:
一数据缓冲区;
其中,上述主装置于提供上述内部搬移命令前,储存多笔数据搬移记录至一数据缓冲区,其中,上述数据搬移记录中的每一者包含一来源位置,以及上述来源位置以逻辑单元编号、数据平面编号、实体区块编号、实体页面编号及区段编号表示;以及储存指向一第一笔数据搬移记录的一存储器地址至上述内部搬移命令,使得上述固态硬碟从上述数据缓冲区取得上述来源位置,依据上述来源位置决定一目的地位置,并储存上述目的地位置至一数据缓冲区。
12.如权利要求11所述的快闪存储器的数据内部搬移装置,其特征在于,上述主装置从上述数据缓冲区取得相应于每一上述来源位置的上述目的地位置;以及依据上述来源位置及上述目的地位置更新一实体储存对照表,其中,上述实体储存对照表指出每一逻辑区块地址的数据实际储存于上述固态硬碟中的一储存单元中的哪个位置。
13.如权利要求7所述的快闪存储器的数据内部搬移装置,其特征在于,上述固态硬碟中的上述输出入通道的上述使用状态满足上述条件指上述固态硬碟中的一储存单元的可用空间不足。
14.如权利要求7所述的快闪存储器的数据内部搬移装置,其特征在于,上述固态硬碟中的上述输出入通道的上述使用状态满足上述条件指上述输出入通道中的一实体区块的一抹除次数超过一阀值。
15.一种快闪存储器的数据内部搬移方法,由一固态硬碟中的一处理单元执行,包含:
取得由一主装置产生的一内部搬移命令,其中,上述内部搬移命令指示上述固态硬碟于一输出入通道中执行一内部数据搬移作业,包含指向一数据缓冲区中的一第一笔数据搬移记录的一存储器地址;
从上述数据缓冲区中的上述存储器地址开始取得多笔数据搬移记录,其中,上述数据搬移记录中的每一者包含一来源位置;
为每一上述来源位置决定上述输出入通道中的一目的地位置;
指示一快闪控制器要求上述输出入通道执行一复制回写程序将上述输出入通道中的每一上述来源位置的使用者数据搬移至上述决定的目的地位置;以及
回复每一上述来源位置的上述目的地位置给上述主装置。
16.如权利要求15所述的快闪存储器的数据内部搬移方法,其特征在于,包含:
从上述主装置接收一递交门铃后,从一递交伫列读取上述内部搬移命令。
17.如权利要求15所述的快闪存储器的数据内部搬移方法,其特征在于,包含:
当写入上述目的地位置中的任一者失败时,重新决定一目的地位置;以及
指示上述快闪控制器要求上述输出入通道执行一复制回写程序将上述相应来源位置的使用者数据搬移至上述重新决定的目的地位置。
18.如权利要求15所述的快闪存储器的数据内部搬移方法,其特征在于,包含:
当上述复制回写程序执行后,储存相应于所有上述来源位置的上述目的地位置至上述数据缓冲区;
储存指向上述数据缓冲区中的一第一笔目的地位置的一存储器地址至一完成元件;以及
写入上述完成元件至一完成伫列。
19.一种快闪存储器的数据内部搬移装置,包含:
一快闪控制器;以及
一处理单元,耦接于上述快闪控制器,取得由一主装置产生的一内部搬移命令,其中,上述内部搬移命令指示一固态硬碟于一输出入通道中执行一内部数据搬移作业,包含指向一数据缓冲区中的一第一笔数据搬移记录的一存储器地址;从上述数据缓冲区中的上述存储器地址开始取得多笔数据搬移记录,其中,上述数据搬移记录中之每一者包含一来源位置;为每一上述来源位置决定上述输出入通道中的一目的地位置;指示上述快闪控制器要求上述输出入通道执行一复制回写程序将上述输出入通道中的每一上述来源位置的使用者数据搬移至上述决定的目的地位置;以及回复每一上述来源位置的上述目的地位置给上述主装置。
20.如权利要求19所述的快闪存储器的数据内部搬移装置,其特征在于,上述处理单元从上述主装置接收一递交门铃后,从一递交伫列读取上述内部搬移命令。
21.如权利要求19所述的快闪存储器的数据内部搬移装置,其特征在于,当写入上述目的地位置中的任一者失败时,上述处理单元重新决定一目的地位置;以及指示上述快闪控制器要求上述输出入通道执行一复制回写程序将上述相应来源位置的数据搬移至上述重新决定的目的地位置。
22.如权利要求19所述的快闪存储器的数据内部搬移装置,其特征在于,当上述复制回写程序执行后,上述处理单元储存相应于所有上述来源位置的上述目的地位置至上述数据缓冲区;储存指向上述数据缓冲区中的一第一笔目的地位置的一存储器地址至一完成元件;以及写入上述完成元件至一完成伫列。
CN201810209548.5A 2017-09-22 2018-03-14 快闪存储器的数据内部搬移方法以及使用该方法的装置 Active CN109542335B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210242579.7A CN114546293A (zh) 2017-09-22 2018-03-14 快闪存储器的数据内部搬移方法以及使用该方法的装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762561824P 2017-09-22 2017-09-22
US62/561,824 2017-09-22
TW107101541A TWI679535B (zh) 2017-09-22 2018-01-16 快閃記憶體的資料內部搬移方法以及使用該方法的裝置
TW107101541 2018-01-16

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210242579.7A Division CN114546293A (zh) 2017-09-22 2018-03-14 快闪存储器的数据内部搬移方法以及使用该方法的装置

Publications (2)

Publication Number Publication Date
CN109542335A CN109542335A (zh) 2019-03-29
CN109542335B true CN109542335B (zh) 2022-04-01

Family

ID=65807444

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810209548.5A Active CN109542335B (zh) 2017-09-22 2018-03-14 快闪存储器的数据内部搬移方法以及使用该方法的装置
CN202210242579.7A Pending CN114546293A (zh) 2017-09-22 2018-03-14 快闪存储器的数据内部搬移方法以及使用该方法的装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210242579.7A Pending CN114546293A (zh) 2017-09-22 2018-03-14 快闪存储器的数据内部搬移方法以及使用该方法的装置

Country Status (2)

Country Link
US (1) US10782910B2 (zh)
CN (2) CN109542335B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10423361B2 (en) * 2017-12-21 2019-09-24 Microsoft Technology Licensing, Llc Virtualized OCSSDs spanning physical OCSSD channels
TWI643066B (zh) * 2018-01-15 2018-12-01 慧榮科技股份有限公司 用來於一記憶裝置中重新使用關於垃圾收集的一目的地區塊之方法、記憶裝置及其控制器以及電子裝置
US10635353B2 (en) * 2018-05-30 2020-04-28 Circuit Blvd., Inc. Method of transceiving data using physical page address (PPA) command on open-channel solid state drive (SSD) and an apparatus performing the same
US11347653B2 (en) 2018-08-31 2022-05-31 Nyriad, Inc. Persistent storage device management
US10901734B2 (en) * 2019-03-01 2021-01-26 Micron Technology, Inc. Memory mapping using commands to transfer data and/or perform logic operations
KR20200114212A (ko) * 2019-03-28 2020-10-07 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN112052188B (zh) * 2019-06-05 2023-09-29 建兴储存科技(广州)有限公司 运用于固态存储装置的电脑系统的数据处理方法
US10886002B1 (en) * 2019-06-13 2021-01-05 Sandisk Technologies Llc NAND field use erase plus defect detections
US10901624B1 (en) 2019-07-01 2021-01-26 Western Digital Technologies, Inc. Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
US10901733B1 (en) * 2019-07-01 2021-01-26 Western Digital Technologies, Inc. Open channel vector command execution
TWI715248B (zh) * 2019-07-10 2021-01-01 慧榮科技股份有限公司 主機輸出入命令的執行裝置及方法及電腦程式產品
US20210406169A1 (en) * 2019-10-09 2021-12-30 Micron Technology, Inc. Self-adaptive wear leveling method and algorithm
JP2021114038A (ja) 2020-01-16 2021-08-05 キオクシア株式会社 メモリシステムおよび制御方法
US11372543B2 (en) * 2020-04-10 2022-06-28 Western Digital Technologies, Inc. Zone-append command scheduling based on zone state
US11580017B2 (en) 2020-04-27 2023-02-14 Silicon Motion, Inc. Method and apparatus and computer program product for preparing logical-to-physical mapping information for host side
CN113918082B (zh) * 2020-07-08 2024-03-08 慧荣科技股份有限公司 计算机可读取存储介质、配置可靠命令的方法及装置
US11733918B2 (en) 2020-07-28 2023-08-22 Samsung Electronics Co., Ltd. Systems and methods for processing commands for storage devices
KR20220014272A (ko) * 2020-07-28 2022-02-04 삼성전자주식회사 복사 명령 처리 시스템 및 방법
US11789634B2 (en) 2020-07-28 2023-10-17 Samsung Electronics Co., Ltd. Systems and methods for processing copy commands
US11314427B2 (en) * 2020-08-21 2022-04-26 Micron Technology, Inc. Memory device with enhanced data reliability capabilities
US11934684B2 (en) 2021-12-14 2024-03-19 Western Digital Technologies, Inc. Maximum data transfer size per tenant and command type
CN115629719B (zh) * 2022-12-19 2023-04-14 合肥康芯威存储技术有限公司 一种存储装置及其控制方法
CN117742619B (zh) * 2024-02-21 2024-04-19 合肥康芯威存储技术有限公司 一种存储器及其数据处理方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999437A (zh) * 2011-09-19 2013-03-27 群联电子股份有限公司 数据搬移方法、存储器控制器与存储器储存装置
CN103577336A (zh) * 2013-10-23 2014-02-12 华为技术有限公司 一种存储数据处理方法及装置
CN103608866A (zh) * 2013-03-15 2014-02-26 华为技术有限公司 用于闪存存储器的数据擦除方法及装置
CN103678162A (zh) * 2012-09-12 2014-03-26 群联电子股份有限公司 系统数据储存方法、存储器控制器与存储器储存装置
CN103699344A (zh) * 2013-11-05 2014-04-02 威盛电子股份有限公司 非易失性存储器装置及其操作方法
CN106528000A (zh) * 2016-12-02 2017-03-22 郑州云海信息技术有限公司 一种数据存储装置及其读写性能优化方法、系统
CN106527962A (zh) * 2015-09-11 2017-03-22 慧荣科技股份有限公司 内部数据搬移方法以及使用该方法的装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI232466B (en) * 2003-10-28 2005-05-11 Prolific Technology Inc Method for updating data of non-volatile memory
US8650362B2 (en) * 2009-04-17 2014-02-11 Violin Memory Inc. System for increasing utilization of storage media
TWI497293B (zh) * 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
KR102053865B1 (ko) * 2013-03-15 2019-12-09 삼성전자주식회사 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템
CN103761988B (zh) 2013-12-27 2018-01-16 华为技术有限公司 固态硬盘及数据移动方法
US9454551B2 (en) * 2014-03-13 2016-09-27 NXGN Data, Inc. System and method for management of garbage collection operation in a solid state drive
TWI602067B (zh) 2014-05-01 2017-10-11 物聯網科技股份有限公司 與外部裝置互動的電子裝置
KR101730151B1 (ko) 2014-06-27 2017-04-25 후아웨이 테크놀러지 컴퍼니 리미티드 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템
US10552058B1 (en) * 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999437A (zh) * 2011-09-19 2013-03-27 群联电子股份有限公司 数据搬移方法、存储器控制器与存储器储存装置
CN103678162A (zh) * 2012-09-12 2014-03-26 群联电子股份有限公司 系统数据储存方法、存储器控制器与存储器储存装置
CN103608866A (zh) * 2013-03-15 2014-02-26 华为技术有限公司 用于闪存存储器的数据擦除方法及装置
CN103577336A (zh) * 2013-10-23 2014-02-12 华为技术有限公司 一种存储数据处理方法及装置
CN103699344A (zh) * 2013-11-05 2014-04-02 威盛电子股份有限公司 非易失性存储器装置及其操作方法
CN106527962A (zh) * 2015-09-11 2017-03-22 慧荣科技股份有限公司 内部数据搬移方法以及使用该方法的装置
CN106528000A (zh) * 2016-12-02 2017-03-22 郑州云海信息技术有限公司 一种数据存储装置及其读写性能优化方法、系统

Also Published As

Publication number Publication date
US10782910B2 (en) 2020-09-22
US20190095123A1 (en) 2019-03-28
CN114546293A (zh) 2022-05-27
CN109542335A (zh) 2019-03-29

Similar Documents

Publication Publication Date Title
CN109542335B (zh) 快闪存储器的数据内部搬移方法以及使用该方法的装置
TWI679535B (zh) 快閃記憶體的資料內部搬移方法以及使用該方法的裝置
US11593259B2 (en) Directed sanitization of memory
US8392649B2 (en) Memory storage device, controller, and method for responding to host write commands triggering data movement
TWI601060B (zh) 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元
US9146691B2 (en) Method for managing commands in command queue, memory control circuit unit and memory storage apparatus
CN111554340B (zh) 存取管理的方法、记忆装置、控制器、主装置和电子装置
US20130212320A1 (en) Non-volatile memory controller processing new request before completing current operation, system including same, and method
US9965194B2 (en) Data writing method, memory control circuit unit and memory storage apparatus which performs data arrangement operation according to usage frequency of physical erasing unit of memory storage apparatus
TW201719415A (zh) 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
TW201426303A (zh) 資料讀取方法、記憶體控制器與記憶體儲存裝置
TWI670595B (zh) 主動錯誤更正失敗處理方法
CN111399750B (zh) 闪存数据写入方法及计算机可读取存储介质
CN109558266B (zh) 主动错误更正失败处理方法
TWI540428B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
TW201923599A (zh) 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
TWI448892B (zh) 資料搬移方法、記憶體控制器與記憶體儲存裝置
CN108877862B (zh) 页条带的数据组织以及向页条带写入数据的方法与装置
US10884660B2 (en) Memory management method, memory storage device and memory control circuit unit
TWI814590B (zh) 資料處理方法及對應之資料儲存裝置
CN117632038B (zh) 损耗平衡方法、存储器存储装置及存储器控制电路单元
CN114115739A (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant