CN108153482A - Io命令处理方法与介质接口控制器 - Google Patents
Io命令处理方法与介质接口控制器 Download PDFInfo
- Publication number
- CN108153482A CN108153482A CN201611106709.5A CN201611106709A CN108153482A CN 108153482 A CN108153482 A CN 108153482A CN 201611106709 A CN201611106709 A CN 201611106709A CN 108153482 A CN108153482 A CN 108153482A
- Authority
- CN
- China
- Prior art keywords
- command
- verification data
- data
- interface connector
- media interface
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
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)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Read Only Memory (AREA)
Abstract
本申请提供了IO命令处理方法、介质接口控制器。所公开的方法包括:响应于页条带的校验数据计算完成,将缓存中的校验数据存储到外部存储器,生成中断信号R_CPL,以指示可释放为所述页条带所分配的缓存,并指示校验数据的存储地址;以及响应于向页条带写入校验数据的写入操作完成,生成中断信号P_CPL,以指示可释放外部存储器中的校验数据。所述介质接口控制器耦合到一个或多个逻辑单元,介质接口控制器还耦合到校验数据计算器以及缓存,介质接口控制器还耦合到CPU与外部存储器;校验数据计算器也耦合到CPU与外部存储器,用于同外部存储器交换数据,以及向CPU指示中断信号。本申请应用于固态存储设备的读取操作。
Description
技术领域
本申请涉及存储技术领域,尤其涉及介质接口控制器中的IO命令处理。
背景技术
NVM(非易失存储器,Non-Volatile Memory)用于实现存储功能,具有非易失性特点。图1是固态存储设备的框图,固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(SmallComputer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal SerialBus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式;控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令;控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据;在DRAM可存储FTL表和/或缓存的IO命令的数据。
存储器目标(Target)是闪存颗粒105封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit),每个逻辑单元具有逻辑单元号(LUN,Logic UnitNumber)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在
http://www.onfi.org/~/media/ONFI/specs/ONFI_3_2%20Gold.pdf获得的“Open NAND Flash Interface Specification(Revision 3.2)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义,以及也提供了操作NVM芯片的命令。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。物理页中可以包括多个数据帧(data frame),数据帧具有指定的尺寸,例如4096或4416字节。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
其中,存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
FTL表包括多个FTL表条目(或称表项)。在一个例子中,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一个例子中,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一个例子中,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一个实施例中,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。
在处理来自主机的读命令时,固态存储设备利用读命令中携带的逻辑地址从FTL表中获得对应的物理地址,并依据物理地址向NVM芯片发出读请求,并接收NVM芯片响应于读请求输出的数据。在处理来自主机的写命令时,固态存储设备为写命令分配物理地址,在FTL表中记录写命令的逻辑地址与分配的物理地址的对应关系,并依据分配的物理地址向NVM芯片发出写请求。
固态存储设备中包括多个NVM芯片。每个NVM芯片包括一个或多个管芯(DIE)或逻辑单元(LUN,Logic UNit)。管芯或逻辑单元之间可以并行响应读写操作。在同一管芯或逻辑单元上的多个读、写或擦除操作顺序执行。
图2示出了大块的示意图。大块包括来自多个逻辑单元的每个的物理块。优选的,每个逻辑单元为大块提供一个物理块。作为举例,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个物理块,来自16个逻辑单元(LUN)的每一个。在图2的例子中,大块0包括来自16个逻辑单元(LUN)的每个的物理块0,而大块1包括来自每个逻辑单元(LUN)的物理块1。也可以有多种其他方式来构造大块。
作为一种可选的方式,在大块中构造页条带,每个逻辑单元(LUN)内相同物理地址的物理页构成了“页条带”。图2中,物理页0-0、物理页0-1......与物理页0-x构成了页条带0,其中物理页0-0、物理页0-1......物理页0-14用于存储用户数据,而物理页0-15用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,图2中,物理页2-0、物理页2-1......与物理页2-x构成了页条带2。可选地,用于存储校验数据的物理页可以位于页条带中的任意位置。
大块中的一个或多个物理块可能是坏块。不应向坏块写入数据。因而页条带中可容纳的用户数据量,依赖于页条带所在的大块的坏块数量。物理页包括一个或多个数据单元。页条带的有效数据单元数量,由指页条带中可容纳用户数据的数据单元的数量。作为举例,将页条带中由坏块提供的物理页去除,以及去除用于存储校验数据的物理页,剩下的物理页的数据单元数量,为页条带的有效数据单元数量。
为向页条带写入数据,固态存储设备的控制部件(104)(参看图1)提供校验数据计算单元。以利用异或操作计算校验数据为例,对于包括N+1个物理页的页条带,对N个物理页的用户数据计算异或(例如,(P0-1)XOR(P0-1)XOR(P0-2)XOR...XOR(P0-15)),并将计算结果写入为页条带存储校验数据的物理页(例如P0-X)。可选地,在控制部件(104)中提供多个校验数据计算单元(例如,M个),以同时向M个页条带写入数据。
发明内容
现有技术中,管芯或逻辑单元之间可以并行响应读写操作,在一个存储单元(逻辑单元或管芯等),读命令、编程命令与擦除命令必须被串行执行,虽然闪存的读命令的处理延迟要明显小于编程命令的处理延迟,但是读命令可能需要等待访问相同存储单元的编程命令或擦除命令完成之后才能被处理。这会引起读命令的处理延迟受到编程命令/擦除命令的影响,导致读命令处理延迟明显增长。这也会明显影响服务质量。
虽然相对于编程命令而优先处理读命令有助于降低读命令的处理延迟。然而编程命令也需要被优先处理以降低对用于计算页条带的校验数据的资源的占用并增大固态存储设备的吞吐量(并发处理能力)。用于计算页条带的校验数据计算的资源包括验数据计算单元和/或XOR缓存。XOR缓存在向页条带写入数据时,要计算校验数据。对于N+1结构的页条带,在获得N个页的数据后,才能计算出校验数据。因而在向页条带写入第1页数据开始,校验数据计算单元即被占用,直到向页条带写入第N页数据后,校验数据计算单元才能计算出用于页条带的第N+1页的校验数据。因而校验数据计算单元的数量限制了固态存储设备中并发处理的编程命令的数量。进一步地,编程命令的延迟的增加,使得完成页条带写入的处理延迟增加,进一步增加了对校验数据计算单元的占用,降低了对编程命令的并发处理能力。
本申请的目的包括提供IO命令处理方法、NVM接口控制器,用于降低IO命令的处理延迟、降低对处理器资源的占用,并提高固态存储设备的并发处理能力。
本发明的第一方面提供一种IO命令处理方法,其中从高优先级命令队列或低优先级命令队列中获取待处理的IO命令,以及相对于低优先级命令队列优先处理高优先级命令队列中的IO命令,该IO命令处理方法包括:
若低优先级命令队列中存在访问第一逻辑单元的第一类型的第一命令,取出并处理第一命令;
当处理第一命令的过程中,若高优先级命令队列中存在访问第一逻辑单元的第二类型的第二命令,暂停对第一命令的处理,取出并处理第二命令;
响应于第二命令处理完成,恢复对第一命令的处理。
本发明的第二方面提供一种IO命令处理方法,其中从高优先级命令队列或低优先级命令队列中获取待处理的IO命令,以及相对于低优先级命令队列优先处理高优先级命令队列中的IO命令,该IO命令处理方法包括:
若低优先级命令队列中存在访问第一逻辑单元的第一类型的第一命令,以及高优先级命令队列中存在访问第一逻辑单元的第二类型的第二命令,取出并处理第一命令,将第一命令对应的数据发送给第一逻辑单元,以及暂停对第一命令的处理,取出并处理第二命令;
响应于第二命令处理完成,恢复对第一命令的处理。
根据本发明的第一方面或第二方面,提供了根据本发明第一方面或第二方面的第一IO命令处理方法,其中第一类型第一命令是编程命令,第二类型的第二命令是读命令。
根据本发明的第一方面,提供了根据本发明的第一方面的第二IO命令处理方法,还包括:当处理第一命令的过程中,若高优先级命令队列中存在访问第一逻辑单元之外的其他逻辑单元的命令时,不暂停对第一命令的处理,处理访问其他逻辑单元的命令。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第三IO命令处理方法,还包括:依据IO命令类型将IO命令放入高优先级命令队列或低优先级命令队列。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第四IO命令处理方法,其中将读命令放入高优先级命令队列,将编程命令、擦除命令或不要求处理延迟的读命令放入低优先级命令队列。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第五IO命令处理方法,当高优先级队列中有待处理的读命令,第一逻辑单元上有正在处理的编程命令或擦除命令时,若读命令访问第一逻辑单元,则暂停正在处理的编程命令或擦除命令,以及从高优先级命令队列中取出读命令并处理;以及响应于在读命令处理完成,恢复对编程命令或擦除命令的处理。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第六IO命令处理方法,若高优先级命令队列中有待处理的读命令,低优先级命令队列中有待处理的编程命令或擦除命令,将低优先级命令队列中的编程命令或擦除命令取出并处理;以及若读命令与编程命令或擦除命令均访问第一逻辑单元,则暂停对编程命令或擦除命令的处理,从高优先级命令队列中取出读命令并处理;以及响应于读命令的处理完成,恢复对编程命令或擦除命令的处理。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第七IO命令处理方法,其中N+P个逻辑单元内的N+P个物理页构成页条带,页条带中存储N页用户数据以及P页由所述N页用户数据计算得到的校验数据,N、P为大于或等于1的正整数。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第八IO命令处理方法,缓存存储用于第一页条带的校验数据,所述IO命令处理方法还包括:响应于从低优先级命令队列中取出并处理编程命令,将编程命令对应的数据同缓存所存储的数据进行异或,异或结果存储在缓存中。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第九IO命令处理方法,若缓存中存储了第一页条带中N页用户数据的异或结果;将缓存的校验数据写入第一页条带;以及释放该缓存。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第十IO命令处理方法,还包括:将缓存的校验数据存储至DRAM;以及释放该缓存。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第十一IO命令处理方法,还包括:响应于要向第一页条带继续写入数据,重新分配缓存,并从DRAM中将与第一页条带相关联的校验数据转移到缓存中,将编程命令对应的用户数据同缓存中的数据进行异或,并将异或结果存储到该缓存中;以及将编程命令发送给逻辑单元。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第十二IO命令处理方法,还包括:若缓存中存储了第一页条带中N页用户数据的异或结果,将缓存的校验数据发送给页条带的P个物理页所对应的逻辑单元;将缓存中的数据存储至DRAM;以及释放该缓存。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第十三IO命令处理方法,若向P个物理页之一写入校验数据出错,从DRAM中将与第一页条带相关联的校验数据存储到缓存。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第十四IO命令处理方法,还包括:分配页条带;以及分配缓存。
根据本发明的第一方面或第二方面,提供了根据本发明的第一方面或第二方面的第十五IO命令处理方法,响应于已向第一页条带写入全部用户数据,将该页条带的校验数据写入页条带的P个物理页;以及释放缓存。
由于本发明的第一方面和第二方面的命令调度方法将访问同一逻辑单元的不同类型的IO命令分别放入了高优先级命令队列和低优先级命令队列,且依据命令队列的优先级、以及命令执行中的不同状态,设立了相应的命令处理机制,一方面当处理第一命令的过程中,若高优先级命令队列中存在访问第一逻辑单元的第二类型的第二命令,暂停对第一命令的处理,取出并处理第二命令;另一方面若低优先级命令队列中存在访问第一逻辑单元的第一类型的第一命令,以及高优先级命令队列中存在访问第一逻辑单元的第二类型的第二命令,取出并处理第一命令,将第一命令对应的数据发送给第一逻辑单元,以及暂停对第一命令的处理,取出并处理第二命令;即解决了读命令受到编程命令/擦除命令的影响而造成的处理延迟的问题,也使得编程命令得到优先处理,从而降低了对资源的占用,并增大了固态存储设备的吞吐量(并发处理能力)。
本发明的第三方面提供一种介质接口控制器,所述介质接口控制器耦合到一个或多个NVM芯片,每个NVM芯片包括一个或多个逻辑单元;所述介质接口控制器还耦合到高优先级命令队列和低优先级命令队列,若低优先级命令队列中存在访问第一逻辑单元的第一类型的第一命令时,所述介质接口控制器从低优先级命令队列中取出并处理第一命令;当处理第一命令的过程中,若高优先级命令队列中存在访问第一逻辑单元的第二命令时,所述介质接口控制器暂停对第一命令的处理,取出并处理第二命令;以及响应于第二命令处理完成,所述介质接口控制器恢复对第一命令的处理。
本发明的第四方面提供一种介质接口控制器,所述介质接口控制器耦合到一个或多个NVM芯片,每个NVM芯片包括一个或多个逻辑单元;所述介质接口控制器还耦合到高优先级命令队列和低优先级命令队列,若低优先级命令队列中存在访问第一逻辑单元的第一类型的第一命令,以及高优先级命令队列中存在访问第一逻辑单元的第二类型的第二命令,所述介质接口控制器从低优先级命令队列中取出并处理第一命令,并将第一命令对应的数据发送给第一逻辑单元,以及暂停对第一命令的处理,取出并处理第二命令;以及响应于第二命令处理完成,所述介质接口控制器恢复对第一命令的处理。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第一介质接口控制器,其中高优先级命令队列和低优先级命令队列中的IO命令各自具有不同的类型。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第二介质接口控制器,若高优先级命令队列中存在访问第一逻辑单元之外的其他逻辑单元的命令时,所述介质接口控制器不暂停对第一命令的处理,处理访问其他逻辑单元的命令。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第三介质接口控制器,高优先级命令队列的IO命令为读命令;低优先级命令队列中的IO命令为编程命令、擦除命令或不要求处理延迟的读命令。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第四介质接口控制器,当高优先级队列中有待处理的读命令,第一逻辑单元上有正在处理的编程命令或擦除命令时,若读命令访问第一逻辑单元,所述介质接口控制器具体用于,暂停正在处理的编程命令或擦除命令,以及从高优先级命令队列中取出读命令并处理;以及响应于在读命令处理完成,恢复对编程命令或擦除命令的处理。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第五介质接口控制器,若高优先级命令队列中有待处理的读命令,低优先级命令队列中有待处理的编程命令或擦除命令,所述介质接口控制器用于,将低优先级命令队列中的编程命令或擦除命令取出并处理;以及若读命令与编程命令或擦除命令均访问第一逻辑单元,则暂停对编程命令或擦除命令的处理,从高优先级命令队列中取出读命令并处理;以及响应于读命令的处理完成,恢复对编程命令或擦除命令的处理。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第六介质接口控制器,还包括校验数据计算器,以及至少一个缓存,其中缓存用于存储第一页条带的校验数据;响应于从低优先级命令队列中取出并处理编程命令,校验数据计算器将编程命令对应的数据同缓存所存储的数据进行异或,异或结果存储在缓存中。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第七介质接口控制器,其中N+P个逻辑单元内的N+P个物理页构成页条带,页条带中存储N页用户数据以及P页由所述N页用户数据计算得到的校验数据,N、P为大于或等于1的正整数。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第八介质接口控制器,若缓存中存储了第一页条带中N页用户数据的异或结果,所述介质接口控制器将缓存的校验数据写入第一页条带;以及释放该缓存。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第九介质接口控制器,介质接口控制器还耦合到DRAM,所述介质接口控制器将缓存的校验数据存储至DRAM;以及释放该缓存。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第十介质接口控制器,响应于向第一页条带继续写入数据,所述介质接口控制器重新分配缓存,并从DRAM中将与第一页条带相关联的校验数据转移到缓存中;所述校验数据计算器将编程命令对应的用户数据同缓存中的数据进行异或,并将异或结果存储到该缓存中;以及所述介质接口控制器将编程命令发送给逻辑单元。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第十一介质接口控制器,若缓存中存储了第一页条带中N页用户数据的异或结果,所述介质接口控制器将缓存的校验数据发送给页条带的P个物理页所对应的逻辑单元;以及将缓存中的数据存储至DRAM;以及释放该缓存。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第十二介质接口控制器,若向P个物理页之一写入校验数据出错,所述介质接口控制器从DRAM中将与第一页条带相关联的校验数据存储到缓存。
根据本发明的第三方面或第四方面,提供了根据本发明的第三方面或第四方面的第十三介质接口控制器,响应于已向第一页条带写入全部用户数据,所述介质接口控制器将该页条带的校验数据写入页条带的P个物理页;以及释放缓存。
本发明的第五方面提供一种介质接口控制器,所述介质接口控制器耦合到一个逻辑单元,所述介质接口控制器还耦合到高优先级命令队列和低优先级命令队列,若低优先级命令队列中存在访问所述逻辑单元的第一类型的第一命令时,所述介质接口控制器从低优先级命令队列中取出并处理第一命令;当处理第一命令的过程中,若高优先级命令队列中存在访问所述逻辑单元的第二命令时,所述介质接口控制器暂停对第一命令的处理,取出并处理第二命令;以及响应于第二命令处理完成,所述介质接口控制器恢复对第一命令的处理。
本发明的第六方面提供一种介质接口控制器,所述介质接口控制器耦合到一个逻辑单元,所述介质接口控制器还耦合到高优先级命令队列和低优先级命令队列,若低优先级命令队列中存在访问所述逻辑单元的第一类型的第一命令,以及高优先级命令队列中存在访问所述逻辑单元的第二类型的第二命令,所述介质接口控制器从低优先级命令队列中取出并处理第一命令,并将第一命令对应的数据发送给所述逻辑单元,以及暂停对第一命令的处理,取出并处理第二命令;以及响应于第二命令处理完成,所述介质接口控制器恢复对第一命令的处理。
根据本发明的第五方面或第六方面,提供了根据本发明的第五方面或第六方面的第一介质接口控制器,其中高优先级命令队列和低优先级命令队列中的IO命令各自具有不同的类型。
根据本发明的第五方面或第六方面,提供了根据本发明的第五方面或第六方面的第二介质接口控制器,所述介质接口控制器还耦合到校验数据计算器以及至少一个缓存,其中缓存用于存储第一页条带的校验数据;所述校验数据计算器用于,响应于从低优先级命令队列中取出并处理编程命令,将编程命令对应的数据同缓存所存储的数据进行异或,异或结果存储在缓存中。
根据本发明的第五方面或第六方面,提供了根据本发明的第五方面或第六方面的第三介质接口控制器,所述介质接口控制器还耦合到DRAM,用于当校验数据计算器将编程命令对应的数据同缓存所存储的数据进行异或,并将异或结果存储在缓存中后,通过介质接口控制器将缓存的校验数据存储到DRAM中,以及释放该缓存。
本发明的第七方面提供一种固态存储设备,所述固态存储设备包括主机接口、控制部件、DRAM以及一个或多个NVM芯片,控制部件用于控制接口、NVM芯片与固件存储器之间的数据传输,所述控制部件还包括一个或多个如本发明第三方面和第四方面、及其可能的实施方式中所述的介质接口控制器。
本发明的第八方面提供一种固态存储设备,所述固态存储设备包括主机接口、控制部件、DRAM以及一个或多个NVM芯片,每个NVM芯片包括一个或多个逻辑单元,控制部件用于控制在接口、NVM芯片与固件存储器之间的数据传输,所述控制部件还包括一个或多个如本发明第五方面和第六方面、及其可能的实施方式中所述的介质接口控制器,以及校验数据计算器,所述校验数据计算器与一个或多个所述介质接口控制器耦合,用于对输入数据作异或以得到校验数据。
本发明的第九方面提供一种包括程序的计算机可读存储介质,当所述程序被载入固态存储设备并在固态存储设备的控制器上执行时,所述程序代码使所述控制器执行如本发明第一方面和第二方面、及其可能的实施方式中所述的IO命令处理方法。
本发明的第十方面提供一种固态存储设备,所述存储设备包括一个或多个处理器与存储,所述一个或多个处理器通过运行存储器中的程序来执行如本发明第一方面和第二方面、及其可能的实施方式中所述的IO命令处理方法。
本发明的第十一方面提供一种IO命令处理方法,该IO命令处理方法包括:响应于页条带的校验数据计算完成,将缓存中的校验数据存储到外部存储器,生成中断信号R_CPL,以指示可释放为所述页条带所分配的缓存,并指示校验数据的存储地址;以及响应于向页条带写入校验数据的写入操作完成,生成中断信号P_CPL,以指示可释放外部存储器中的校验数据。
本发明的第十二方面提供一种IO命令处理方法,该IO命令处理方法包括:将向逻辑单元写入数据的编程命令发送给介质接口控制器;响应于收到中断信号R_CPL,生成编程命令将中断信号R_CPL所指示的外部存储器中的校验数据写入页条带,并且指示无需为所生成的编程命令计算校验数据;以及响应于收到中断信号P_CPL,如果中断信号P_CPL指示写入操作成功,丢弃外部存储器中的校验数据。
根据本发明的第十二方面,提供了根据本发明第十二方面的第一IO命令处理方法,如果中断信号P_CPL指示写入操作失败,生成第二编程命令,将外部存储器中的校验数据写入页条带,并且指示无需为所生成的第二编程命令计算校验数据。
根据本发明的第十二方面,提供了根据本发明第十二方面的第二IO命令处理方法,如果中断信号P_CPL指示写入操作失败,读出页条带中已被写入的数据,并生成编程命令以将从页条带读出的数据写入另一条页条带,以及生成编程命令将外部存储器中的校验数据写入所述另一页条带,并且指示无需为所生成的编程命令计算校验数据。
根据本发明的第十二方面,提供了根据本发明第十二方面的第三IO命令处理方法,响应于收到中断信号R_CPL,释放中断信号R_CPL所指示的缓存。
根据本发明的第十二方面,提供了根据本发明第十二方面的第四IO命令处理方法,响应于申请到第二缓存,将向逻辑单元写入数据的第二编程命令发送给介质接口控制器,所述编程命令指示使用第二缓存为第二编程命令计算校验数据。
根据本发明的第十二方面,提供了根据本发明第十二方面的第五IO命令处理方法,响应于收到中断信号R_CPL,忽略该中断信号R_CPL。
本发明的第十三方面提供一种IO命令处理方法,其中用缓存存储用于页条带的校验数据,该IO命令处理方法包括:响应于向页条带写入用户数据的编程命令,将编程命令对应的用户数据同缓存中的数据进行异或,异或结果存储在缓存中;以及将编程命令发送给对应的逻辑单元。
根据本发明的第十三方面,提供了根据本发明第十三方面的第一IO命令处理方法,响应于页条带的所有校验数据计算完成,将校验数据传输到外部存储器,生成中断信号R_CPL,并将中断信号R_CPL发送给CPU。
根据本发明的第十三方面、提供了根据本发明第十三方面的第二IO命令处理方法,还包括:响应于中断信号R_CPL,生成编程命令,将外部存储器中的校验数据写入页条带,并且指示无需为所生成的编程命令计算校验数据。
根据本发明的第十三方面、提供了根据本发明第十三方面的第三IO命令处理方法,响应于中断信号P_CPL,如果中断信号P_CPL指示写入操作成功,丢弃外部存储器中的校验数据。
根据本发明的第十三方面、提供了根据本发明第十三方面的第四IO命令处理方法,响应于中断信号P_CPL,如果中断信号P_CPL指示写入操作失败,生成第二编程命令,将外部存储器中的校验数据写入页条带,并且指示无需为所生成的第二编程命令计算校验数据。
根据本发明的第十三方面、提供了根据本发明第十三方面的第五IO命令处理方法,如果中断信号P_CPL指示写入操作失败,读出页条带中已被写入的数据,并生成编程命令以将从页条带读出的数据写入另一条页条带,以及生成编程命令将外部存储器中的校验数据写入所述另一页条带,并且指示无需为所生成的编程命令计算校验数据。
根据本发明的第十三方面、提供了根据本发明第十三方面的第六IO命令处理方法,响应于收到中断信号R_CPL,中断信号R_CPL所指示的缓存可被释放,或分配用来为其他页条带生成校验数据,并记录R_CPL所指示的地址。
由于本发明的第十一方面至十三方面提供的IO命令处理方法通过响应中断信号来控制命令的执行进程,其中,响应于页条带的所有校验数据计算完成,将校验数据传输到外部存储器,并生成中断信号R_CPL;响应于收到中断信号R_CPL,生成编程命令将中断信号R_CPL所指示的外部存储器中的校验数据写入页条带;响应于向页条带写入校验数据的写入操作完成,生成中断信号P_CPL,响应于收到中断信号P_CPL,如果中断信号P_CPL指示写入操作成功,丢弃外部存储器中的校验数据。从而在写入页条带时可以更早的释放缓存并将释放的缓存分配给其他编程命令,且在固态存储设备能够并发执行更多的编程命令,进而降低了有限的缓存资源对并发执行编程命令的数量的限制,也减少了编程命令等待资源的概率,降低了编程命令的处理延迟,提高了固态存储设备的性能。
本发明的第十四方面提供一种介质接口控制器,所述介质接口控制器包括高优先级命令队列和低优先级命令队列,介质接口控制器耦合到一个或多个逻辑单元,介质接口控制器还耦合到校验数据计算器以及缓存,用于对编程命令对应的用户数据进行异或以得到校验数据,并将异或结果存储到缓存中;介质接口控制器还耦合到CPU与外部存储器;校验数据计算器也耦合到CPU与外部存储器,用于同外部存储器交换数据,以及向CPU指示中断信号。
根据本发明的第十四方面,提供了根据本发明第十四方面的第一介质接口控制器,其中响应于页条带的校验数据计算完成,介质接口控制器或校验数据计算器将缓存中的校验数据存储到外部存储器,生成中断信号R_CPL,以指示可释放为所述页条带所分配的缓存,并指示校验数据的存储地址;以及响应于向页条带写入校验数据的写入操作完成,介质接口控制器或校验数据计算器生成中断信号P_CPL,以指示可释放外部存储器中的校验数据。
根据本发明的第十四方面,提供了根据本发明第十四方面的第二介质接口控制器,响应于向页条带写入用户数据的编程命令,校验数据计算器将编程命令对应的用户数据同缓存中的数据进行异或,异或结果存储在缓存中;以及介质接口控制器将编程命令发送给对应的逻辑单元。
根据本发明的第十四方面,提供了根据本发明第十四方面的第三介质接口控制器,响应于页条带的校验数据计算完成,介质接口控制器或校验数据计算器将校验数据传输到外部存储器,生成中断信号R_CPL,并将中断信号R_CPL发送给CPU。
根据本发明的第十四方面,提供了根据本发明第十四方面的第四介质接口控制器,响应于中断信号R_CPL,CPU生成编程命令,将外部存储器中的校验数据写入页条带,并且指示无需为所生成的编程命令计算校验数据。
根据本发明的第十四方面,提供了根据本发明第十四方面的第五介质接口控制器,响应于中断信号P_CPL,如果中断信号P_CPL指示写入操作成功,CPU丢弃外部存储器中的校验数据。
根据本发明的第十四方面,提供了根据本发明第十四方面的第六介质接口控制器,响应于中断信号P_CPL,如果中断信号P_CPL指示写入操作失败,CPU生成第二编程命令,将外部存储器中的校验数据写入页条带,并且指示无需为所生成的第二编程命令计算校验数据。
根据本发明的第十四方面,提供了根据本发明第十四方面的第七介质接口控制器,如果中断信号P_CPL指示写入操作失败,CPU读出页条带中已被写入的数据,并生成编程命令以将从页条带读出的数据写入另一条页条带,以及生成编程命令将外部存储器中的校验数据写入所述另一页条带,并且指示无需为所生成的编程命令计算校验数据。
根据本发明的第十四方面,提供了根据本发明第十四方面的第八介质接口控制器,响应于收到中断信号R_CPL,中断信号R_CPL所指示的缓存可被释放,或分配用来为其他页条带生成校验数据,并记录R_CPL所指示的地址。
本发明的第十五方面提供一种固态存储设备,所述固态存储设备包括主机接口、控制部件、外部存储器以及一个或多个NVM芯片,控制部件用于控制在接口、NVM芯片与固件存储器之间的数据传输,一个NVM芯片包括一个或多个逻辑单元,所述控制部件包括一个或多个如权利要求15-23所述的介质接口控制器,一个或多个所述介质接口控制器还耦合到校验数据计算器以及缓存,用于对输入数据进行异或以得到校验数据。
本发明的第十六方面提供一种包括指令代码的程序,当被载入固态存储设备并在固态存储设备的控制器上执行时,所述程序代码使所述控制器执行如本发明第十一方面至十三方面,及其可能的实施方式所述的处理IO命令的方法。
本发明的第十七方面提供一种固态存储设备,所述固态存储设备包括一个或多个处理器与存储,所述一个或多个处理器通过运行存储器中的程序来执行如第十一方面至十三方面,及其可能的实施方式所述的处理IO命令的方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的固态存储设备的示意图;
图2为页条带的构造示意图;
图3为本发明实施例一中的固态存储设备的控制部件的示意图;
图4为本发明实施例二中的介质接口控制器的示意图;
图5为本发明实施例三中的介质接口控制器的示意图;
图6为本发明实施例四中的IO命令处理的流程图;
图7为本发明实施例五中的介质接口控制器的示意图;以及
图8为本发明实施例六中的IO命令处理的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图3是根据本发明实施例的固态存储设备的控制部件的框图。固态存储设备的控制部件104中包括主机接口310、前端处理模块320、闪存管理模块330以及一个或多个介质接口控制器340。主机接口310用于同主机交换命令与数据。闪存管理模块330提供逻辑地址到物理地址映射、磨损均衡、垃圾回收等功能,并生成IO命令发送给介质接口控制器340。介质接口控制器耦合到NVM芯片105。介质接口控制器有一个或多个,每个接口控制器耦合到各自的NVM芯片105。介质接口控制器接收IO命令,并根据IO命令向NVM芯片发出IO命令(读、编程、擦除、暂停、读取特征(feature)和/或设置特征等命令)。
在一个例子中,介质接口控制器提供具有不同优先级的多个队列(例如队列342与队列344,其中队列342是高优先级队列而队列344是低优先级队列)来接收IO命令。闪存管理模块330将读命令填入接口控制器的高优先级队列,使介质接口控制器优先处理读命令。而将编程命令、擦除命令和/或读命令(例如不要求处理延迟的读命令)填入介质接口控制器的低优先级队列。介质接口控制器会优先处理高优先级队列342中的命令,而以低优先级处理队列344中的命令。可以理解地,闪存管理模块也可将其他类型的IO命令填入高优先级队列。
根据本发明的实施例,一般情况下,介质接口控制器优先处理高优先级队列中的IO命令,而以低优先级处理低优先级队列中的IO命令。
根据本发明的一个实施例,为了降低固态存储设备的IO命令的处理延迟,若在逻辑单元(L1)上有正在执行的编程命令(P1)或擦除命令(E1),而在高优先级队列中有待处理的读命令(R1)。需要指出的是,读命令R1与编程命令P1访问相同的逻辑单元(L1)。则介质接口控制器向逻辑单元(L1)发出暂停命令,暂停编程命令(P1)或擦除命令(E1)的处理,以及处理读命令(R1)。以及在读命令(R1)处理完成后,向逻辑单元(L1)发出恢复命令,恢复对编程命令(P1)或擦除命令(E1)的处理。
可以理解地,高优先级队列/低优先级队列中的IO命令与发送给逻辑单元的IO命令可具有不同的形态,但以相同的标记(R1、P1、E1等)指示处于不同阶段、具有不同形态但含义相同的同一命令。
根据本发明的又一个实施例,介质接口控制器发现在高优先级队列中有待处理的读命令(R2),而在低优先级队列中有待处理的编程命令(P2)。介质接口控制器不是先处理读命令(R2),而是先处理低优先级队列中的编程命令(P2)。在向逻辑单元(L2)发出编程命令(P2)后,若读命令(R2)与编程命令(P2)访问相同的逻辑单元(L2),则紧接着向逻辑单元(L2)发出暂停命令,以暂停对编程命令(P2)的处理。以及介质接口控制器处理来自高优先级队列的读命令(R2),向逻辑单元(L2)发出读命令(R2),并在读命令(R2)处理完成后,向逻辑单元(L2)发出恢复命令,以恢复对编程命令(P2)的处理。若读命令(R2)与编程命令(P2)访问不同的逻辑单元,则直接处理读命令(R2),而无需暂停编程命令(P2)。
根据本发明的另一实施例,介质接口控制器发现高优先级队列中有待处理的读命令(R3),而在低优先级队列中有待处理的擦除命令(E3)。介质接口控制器不是先处理读命令(R3),而是先处理低优先级队列中的擦除命令(E3)。在向逻辑单元(L3)发出擦除命令(E3)后,若读命令(R3)与擦除命令(E3)访问相同的逻辑单元(L3),则紧接着向逻辑单元(L3)发出暂停命令,以暂停对擦除命令(E3)的处理。以及介质接口控制器处理来自高优先级队列的读命令(R3),向逻辑单元(L3)发出读命令(R3),并在读命令(R3)处理完成后,向逻辑单元(L3)发出恢复命令,以恢复对擦除命令(E3)的处理。若读命令(R3)与擦除命令(E3)访问不同的逻辑单元,则直接处理读命令(R3),而无需暂停擦除命令(E3)。进一步地,若接下来低优先级队列中又出现了访问其他逻辑单元的编程(P4)/擦除(E4)命令(不同于逻辑单元L3的其他逻辑单元),高优先级队列中出现了读命令(R4),则执行编程(P4)/擦除(E4)命令,以及暂停编程(P4)/擦除(E4)命令,接下来执行读命令(R4)以及恢复编程(P4)/擦除(E4)命令的处理。
可选地,每个逻辑单元有对应的介质接口控制器或介质接口控制器的执行状态,从而由同一介质接口控制器正在处理的IO命令访问相同的逻辑单元。在此情况下,介质接口控制器无需判断读命令与编程/擦除命令是否访问相同的逻辑单元,而在执行了编程/擦除后又从高优先级队列收到读命令时,都向逻辑单元发出暂停命令,以暂停对编程/擦除命令的处理。接着发出读命令,并在读命令执行完成后,恢复编程/擦除命令的执行。
实施例二
图4是根据本发明实施例的介质接口控制器440的框图。介质接口控制器包括多个队列(例如,队列342与队列344)。各个队列具有不同的优先级,例如队列342是高优先级队列,而队列344是低优先级队列。介质接口控制器440包括命令调度模块410、校验数据计算器420。作为举例,在校验数据计算器420中还包括XOR缓存(422/424/426),校验数据计算器420对输入数据同XOR缓存(422/424/426)中的数据做异或以得到校验数据,计算得到的校验数据被存储在XOR缓存(422/424/426)中。
可选地,介质接口控制器440还耦合到DRAM(参看图1,DRAM 110)。
命令调度模块410从队列342/344中取出命令,并执行命令以访问NVM芯片。对于编程命令,编程命令对应的数据被发送给NVM芯片的过程中,指定XOR缓存(例如,XOR缓存422),校验数据计算器420对编程命令对应的数据同XOR缓存(例如,XOR缓存422)所缓存的数据执行异或操作,异或操作的结果存储在XOR缓存(例如,XOR缓存422)中。
作为举例,在NVM芯片405/415/425的每个上分配一个物理页来构造页条带(S1)。页条带(S1)中的2个物理页用于存储用户数据,而1个物理页用于存储校验数据。
命令调度模块410从命令队列中获取编程命令(P5),分配XOR缓存(422),将编程命令(P5)的数据同XOR缓存(422)做异或,计算结果存储在XOR缓存(422)中,以及将编程命令(P5)发送给NVM芯片405。
接下来,命令调度模块410从命令队列中获取编程命令(P7),分配XOR缓存(426),将编程命令(P7)的数据同XOR缓存(426)做异或,计算结果存储在XOR缓存(426)中,以及将编程命令(P7)发送给NVM芯片435。
其中,编程命令(P5)向页条带(S1)写入数据,而在页条带(S1)被完整写入前,XOR缓存(422)被占用来生成用于页条带(S1)的校验数据。类似地,编程命令(P7)向页条带(S2)写入数据,XOR缓存(426)被占用来生成用于页条带(S2)的校验数据。
接下来,在高优先级队列中出现读命令(R5),而低优先级队列中出现编程命令(P6)。虽然读命令(R5)的优先级高于编程命令(P6),为了减少对XOR缓存(422)的占用时间,命令调度模块410优先处理编程命令(P6),编程命令(P6)向页条带(S1)写入数据。将编程命令(P6)对应的数据同XOR缓存(422)做异或,异或结果被存储在XOR缓存(422)中。以及将编程命令(P6)发送给NVM芯片415。
此时,由于已经收到了要写入页条带(S1)的全部2页用户数据,将XOR缓存(422)中存储的数据作为页条带(S1)的校验数据并写入NVM芯片425(通过生成编程命令PX5),并释放XOR缓存(422)。
在根据本发明的实施例中,将编程命令(P6)对应的数据同XOR缓存(422)做异或,异或结果被存储在XOR缓存(422)中之后,命令调度模块410处理来自高优先级队列342的读命令(R5)。若读命令(R5)所访问的逻辑单元(L5)上有正在处理的编程命令(例如,编程命令P6/P7/PX5)或擦除命令,向逻辑单元(L5)发出暂停命令,暂停逻辑单元(L5)上正在执行的编程命令或擦除命令,向逻辑单元(L5)发出读命令(R5),在读命令(R5)执行完成后,向逻辑单元(L5)发出恢复命令,以恢复被暂停的编程命令或擦除命令。
可选地,将编程命令对应的数据同XOR缓存(例如,XOR缓存422)做异或,异或结果被存储在XOR缓存(例如,XOR缓存422),并将编程命令发送给逻辑单元后,将XOR缓存(422)存储的内容(例如,用于页条带(S1)的用户数据或校验数据)写入DRAM(参看图1,DRAM110),从而可释放XOR缓存(422),并将XOR缓存(422)分配来计算另一页条带(例如,页条带(S3))的校验数据。以及响应于收到向页条带(S1)写入数据的编程命令,从DRAM中获取所存储的XOR缓存(422)的内容,并存储到XOR缓存(例如,422/426),并继续处理向页条带(S1)写入数据的编程命令。
实施例三
图5展示了本发明又一实施例的介质接口控制器。图5的实施例中,控制部件104(参看图1)包括多个介质接口控制器(540/550)。介质接口控制器包括多个队列(例如,队列542/544,552/554)。各个队列具有不同的优先级,例如队列542/552是高优先级队列,而队列544/554是低优先级队列。介质接口控制器540/550耦合到校验数据计算器520。作为举例,校验数据计算器520对输入数据做异或以得到校验数据,在校验数据计算器520中还包括XOR缓存(522/524/526)。
可选地,介质接口控制器540/550还耦合到DRAM(参看图1,DRAM 110)。
其中,介质接口控制器540专用于访问逻辑单元(LUN 505),介质接口控制器550专用于访问逻辑单元(LUN 515)。因而,为访问LUN 505,将相应的命令添加队列542/544,以及为访问LUN 515,将相应的命令添加到队列552/554。
可以理解地,介质接口控制器中可存储多组执行状态,每组执行状态专用于访问逻辑单元之一。通过对介质接口控制器的执行状态进行切换,使得在每一时刻,介质接口控制器专用于访问同当前执行状态对应的(一个)逻辑单元。
在图5的实施例中,多个介质接口控制器(540/550)共享校验数据计算器520,也共享DRAM。
作为举例,响应于处理编程命令(P10),编程命令(P10)向页条带(S10)写入数据。介质接口控制器540为编程命令(P10)分配XOR缓存(522),将编程命令(P10)对应的数据同XOR缓存(522)做异或,异或结果被存储在XOR缓存(522)中,以及将编程命令(P10)发送给LUN 505。
接下来,高优先级队列542上出现待处理的读命令(R10)。由于介质接口控制器540专用于访问逻辑单元(LUN 505),因而暗示了读命令(R10)与编程命令(P10)都访问逻辑单元(LUN 505)。介质接口控制器540发现编程命令(P10)正在LUN 505上执行,为降低读命令(R10)的处理延迟,向LUN 505发出暂停命令,暂停编程命令(P10)的执行,并将读命令(R10)发送给LUN 505。以及响应于读命令(R10)执行完成,向LUN 505发出恢复命令,以恢复编程命令(P10)的执行。
接下来,高优先级队列542上出现待处理的读命令(R11),低优先级队列544上出现待处理的编程命令(P11)。以及编程命令(P10)已执行完成。由于介质接口控制器540专用于访问逻辑单元(LUN 505),因而暗示了读命令(R11)与编程命令(P11)都访问逻辑单元(LUN505),介质访问控制器540无需再检查收到的命令是否访问相同的逻辑单元。虽然读命令(R11)的优先级高于编程命令(P11),但介质访问控制器540优先处理编程命令(P11)。编程命令(P11)用于向页条带(S11)写入数据。介质接口控制器540为编程命令(P11)分配XOR缓存(524),将编程命令(P11)对应的数据同XOR缓存(524)做异或,异或结果被存储在XOR缓存(524)中,以及将编程命令(P11)发送给LUN 505。接下来,介质访问控制器540向LUN 505发出暂停命令,暂停编程命令(P11)的执行,并将读命令(R11)发送给LUN 505。以及响应于读命令(R11)执行完成,向LUN 505发出恢复命令,以恢复编程命令(P11)的执行。
接下来,响应于高优先级队列552上出现待处理的读命令(R12),低优先级队列554上出现待处理的编程命令(P12),由于介质接口控制器550专用于访问逻辑单元(LUN 515),因而暗示了读命令(R12)与编程命令(P12)都访问逻辑单元(LUN 515),介质访问控制器550无需再检查收到的命令是否访问相同的逻辑单元。即使读命令(R12)的优先级高于编程命令(P12),介质访问控制器550也优先处理编程命令(P12)。编程命令(P12)用于向页条带(S12)写入数据。介质接口控制器550为编程命令(P12)分配XOR缓存(526),将编程命令(P12)对应的数据同XOR缓存(526)做异或,异或结果被存储在XOR缓存(526)中,以及将编程命令(P12)发送给LUN 515。接下来,介质访问控制器550向LUN 515发出暂停命令,暂停编程命令(P12)的执行,并将读命令(R12)发送给LUN 515。以及响应于读命令(R12)执行完成,向LUN515发出恢复命令,以恢复编程命令(P12)的执行。
接下来,响应于高优先级队列552上出现待处理的读命令(R13),低优先级队列554上出现待处理的编程命令(P13),即使读命令(R13)的优先级高于编程命令(P13),介质访问控制器550也优先处理编程命令(P13)。编程命令(P13)用于向页条带(S14)写入数据。介质接口控制器550为编程命令(P13)分配XOR缓存。由于XOR缓存(522/524/526)均被占用,将XOR缓存之一(例如,XOR缓存526)所存储的内容传输到DRAM。初始化XOR缓存(526),将编程命令(P13)对应的数据同XOR缓存(526)做异或,异或结果被存储在XOR缓存(526)中,以及将编程命令(P13)发送给LUN 515。接下来,介质访问控制器550向LUN 515发出暂停命令,暂停编程命令(P13)的执行,并将读命令(R13)发送给LUN 515。以及响应于读命令(R13)执行完成,向LUN 515发出恢复命令,以恢复编程命令(P13)的执行。
接下来,无论介质接口控制器540/550的哪个收到向页条带(S12)写入数据的编程命令,都将XOR缓存(526)的用于页条带(S12)的存储信息传送到DRAM中,并从DRAM中获取之前所存储的用于页条带(S12)的XOR缓存的内容,并存储到XOR缓存(526)中。
实施例四
图6展示了本发明实施例的IO命令处理方法的流程图,用于实施例二和实施例三中的介质接口控制器处理队列中的IO命令。
在一个例子中,为了降低编程命令对读命令的处理延迟,介质接口控制器响应命令队列(例如图4的队列342/344,图5的队列542/544)有待处理的命令。若在高优先级队列中有读命令待处理,而来自低优先级队列的编程命令正在执行(601);则暂停对来自低优先级队列的编程命令的处理(632)。为暂停对编程命令的处理,可向正在执行该编程命令的NVM发送编程暂停命令。以及从高优先级队列中获取并处理读命令(633)。在读命令处理完成后,恢复对被暂停的编程命令的处理(634)。为恢复对被暂停的编程命令的处理,可向该编程命令所针对的NVM发送编程恢复命令。
在又一个例子中,为了降低编程命令对读命令的处理延迟,以及降低编程命令对XOR缓存资源的占用时间,介质接口控制器响应命令队列(例如图4的队列342/344,图5的队列542/544)有待处理的命令。若在高优先级队列中有读命令待处理,以及在低优先级队列中有编程命令待处理(610);则优先从低优先级队列取出编程命令,以及处理该编程命令(611)。为处理编程命令,将编程命令要写入NVM的数据XOR缓存中的数据做异或,结果存储在XOR缓存中,以及将编程命令发送给NVM。可选地,将编程命令发送给NVM后,释放XOR缓存(612)。依然可选地,在释放XOR缓存前,可将XOR缓存中的数据搬移到DRAM中,从而在接下来需要使用XOR缓存的数据时,可从DRAM中获取该数据并搬移到XOR缓存中。接下来,暂停对编程命令的处理(632)。以及处理高优先级队列中的读命令(633)。在读命令处理完成后,恢复对被暂停的编程命令的处理(634)。
在另一例子中,为了降低擦除命令对读命令的处理延迟,介质接口控制器响应命令队列(例如图4的队列342/344,图5的队列542/544)有待处理的命令。若在高优先级队列中有读命令待处理,以及在低优先级队列中有擦除命令待处理(620);则优先从低优先级队列取出擦除命令。以及例如通过向NVM发送擦除命令来处理擦除命令(621)。接下来,通过向NVM发送擦除暂停命令来暂停对该擦除命令的处理(622)。以及处理高优先级队列中的读命令(633)。在读命令处理完成后,恢复对被暂停的擦除命令的处理(634)。
实施例五
图7展示了本发明又一实施例的介质接口控制器。图7的实施例中,介质接口控制器740包括多个队列(例如,队列542/544)。各个队列具有不同的优先级,例如队列542是高优先级队列,而队列544是低优先级队列。介质接口控制器740耦合到校验数据计算器720。作为举例,校验数据计算器720对输入数据做异或以得到校验数据,在校验数据计算器720中还包括XOR缓存(722/724/726)。
可选地,介质接口控制器540还耦合到DRAM(参看图1,DRAM 110)。
其中,介质接口控制器740专用于访问逻辑单元(LUN 505),因而为访问LUN 505,将相应的命令添加队列542/544。
可以理解地,介质接口控制器中可包括多组执行状态,每组执行状态专用于访问逻辑单元之一。对介质接口控制器的执行状态进行切换,使得在每一时刻,介质接口控制器专用于访问同当前执行状态对应的(一个)逻辑单元。
图7所示的介质接口控制器740还通过总线730耦合到CPU与DRAM,从而在CPU的协助下更高效地处理IO命令。校验数据计算器720通过总线730同DRAM交换数据,以及通过总线730向CPU指示中断,中断包括指示用于页条带的校验数据计算完成的中断(R_CPL),以及用于指示向页条带的写入操作处理完成的中断(P_CPL)。可以理解地,中断(P_CPL)也可以由介质接口控制器740产生。向页条带的写入操作处理完成,指页条带的用户数据与校验数据被通过多个编程命令写入NVM芯片105,并且NVM芯片105指示多个编程命令均处于完成。在一些情况下,一个或多个编程命令执行失败,通过响应中断(P_CPL),CPU也将知晓执行失败的编程命令。
作为举例,向页条带(S14)写入数据,页条带(S14)包括3个物理页,用于存储2页用户数据以及1页校验数据。其中已经向页条带(S14)写入了1页用户数据。介质接口控制器740收到编程命令(P14),编程命令(P14)用于向页条带(S14)写入第2页用户数据。在校验数据计算器720的XOR缓存(722)中记录了用于页条带(S14)的校验数据。介质接口控制器740为编程命令(P14)分配XOR缓存(722),将DRAM中存储的编程命令(P14)对应的数据同XOR缓存(722)所存储的数据做异或,异或结果存储在XOR缓存(722)中,以及将编程命令(P14)发送给LUN 505。
接下来,由于已经完成了页条带(S14)的所有用户数据的异或计算,XOR缓存(722)中存储的是用于页条带(S14)的校验数据(X1)。校验数据计算器740将XOR缓存(722)中的校验数据通过总线传输到DRAM,生成中断(R_CPL)并发送给CPU(例如,通过总线730)。CPU基于中断(R_CPL)获知用于页条带(S14)的校验数据已经计算完成,并且获知用于页条带(S14)的校验数据在DRAM中的存储位置。接下来,CPU或者介质接口控制器740可将XOR缓存(722)初始化并分配给其他要写入数据的页条带。
在接下来的任意时刻,CPU向命令队列542/544填充编程命令(P15),以将DRAM中的校验数据(X1)写入页条带(S14),并且向介质接口控制器740指示无需为编程命令(P15)计算校验数据。以及
接下来,响应于LUN 505指示编程命令(P15)执行完成,介质接口控制器740向CPU产生中断(P_CPL),在中断中指示编程命令(P15)的执行结果。若编程命令(P15)执行成功,CPU丢弃DRAM中的校验数据(X1);若编程命令(P15)执行失败,CPU生成另一编程命令(P15),以再次将DRAM中的校验数据(X1)写入NVM芯片。进一步地,若编程命令(P15)执行失败,由于页条带(S14)未被完整写入,需要读出页条带(S14)已被写入的数据,并写入另一页条带。
继续参看图7,在另一种实施方式中,响应于收到并执行编程命令(P14),在XOR缓存(722)中生成了用于页条带(S14)的校验数据(X1)。介质接口控制器740通过编程命令(P16)将XOR缓存(722)中的数据(X1)写入LUN505,以及将XOR缓存(722)中的数据通过总线写入DRAM。响应于校验数据(X1)被写入LUN 505的寄存器以及DRAM,向CPU生成中断(R_CPL)。响应于中断(R_CPL),CPU知晓校验数据(X1)已被发送到LUN 505,且在DRAM中存在校验数据(X1)的副本。接下来,CPU或者介质接口控制器740可将XOR缓存(722)初始化并分配给其他要写入数据的页条带。以及当LUN 505向介质接口控制器740指示编程命令(P16)执行完成,介质接口控制器740生成中断(P_CPL)以向CPU指示对页条带(S14)的操作完成。
在图7的实施例中,写入页条带时,可以更早地释放XOR缓存,并将释放的XOR缓存分配给其他编程命令,从而在固态存储设备能够并发执行更多的编程命令,降低了有限的XOR缓存资源对并发执行编程命令的数量的限制,也减少了编程命令等待XOR缓存资源的概率,降低了编程命令的处理延迟,提高了固态存储设备的性能。
实施例六
图8展示了根据本发明又一实施例的IO命令处理方法的流程图。介质接口控制器(也参看图7,介质接口控制器740)/校验数据计算器(参看图7,校验数据计算器720)与CPU(参看图7)协同操作,以将IO命令发送给逻辑单元(参看图7,例如LUN 505)。
CPU生成用于将用户数据写入逻辑单元(LUN 505)的编程命令(P17),并将编程命令写入介质接口控制器的命令队列(参看图7,队列545/544)(810)。
接下来,响应于收到编程命令(P17),介质接口控制器将编程命令(P17)所对应的数据发送给逻辑单元(LUN 505)(801)。校验数据计算器将编程命令(P17)所对应的数据同XOR缓存(也参看图7,XOR缓存(722/724/726))所缓存的数据做异或,结果存储在XOR缓存(722/724/726)中(802)。响应于页条带(S15)的校验数据计算完成,校验数据计算器将XOR缓存(722/724/726)的校验数据存储到DRAM(参看图7,也参看图1,DRAM 110)中,生成中断R_CPL,并将中断R_CPL发送给CPU,以及向CPU指示校验数据在DRAM中的地址(803)。
响应于收到中断R_CPL(820),CPU生成用于将DRAM或XOR缓存(722/724/726)中的校验数据写入逻辑单元(LUN 505)的编程命令(P18),并发送给介质接口控制器(830)。可选地,响应于收到中断R_CPL(820),CPU还将中断R_CPL所指示的XOR缓存(722/724/726)释放,或分配其用来为其他页条带生成校验数据。依然可选地,CPU还记录中断R_CPL所指示的校验数据在DRAM中的地址;或者响应于收到中断R_CPL(820),CPU忽略该中断R_CPL。
响应于收到编程命令(P18),介质接口控制器将来自DRAM的校验数据发送给逻辑单元(LUN 505)(804),该校验数据是用于页条带(S15)的校验数据。进一步地,响应于页条带(S15)的校验数据被写入NVM,介质接口控制器或者校验数据计算器生成中断P_CPL,并将中断P_CPL发送给CPU,以及向CPU指示其对校验数据编程的执行结果(805)。
接下来,响应于收到中断P_CPL,CPU确认校验数据编程命令(P18)执行成功或失败(840)。若成功,则表明对页条带(S15)的数据写入完成,可丢弃DRAM中的校验数据(850);若失败,CPU生成用于将DRAM中的校验数据再次写入逻辑单元(LUN 505)的编程命令(P19),并发送给介质接口控制器。可选地,若编程命令(P18)执行失败,CPU从页条带(S15)中读出数据,生成用于将从页条带(S15)读出的数据写入页条带(S16)的编程命令(P20),以及将DRAM中的校验数据写入页条带(S16)。
本发明的方法和装置可以以硬件、软件、固件以及上述中的任意组合来实现。硬件可以包括数字电路、模拟电路、数字信号处理器(DSP)、专用继承电路(ASIC)等等。软件可以包括计算机可读程序,这些计算机可读程序在被计算机执行时,实现本发明所述的方法。
本发明的软件还可以存储在计算机可读存储介质,例如硬盘,光盘等等中,该计算机可读存储介质存储有程序,当所述程序被一个设备执行时,使得所述设备进行上面所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种IO命令处理方法,其特征在于,包括:
响应于页条带的校验数据计算完成,将缓存中的校验数据存储到外部存储器,生成中断信号R_CPL,以指示可释放为所述页条带所分配的缓存,并指示校验数据的存储地址;以及
响应于向页条带写入校验数据的写入操作完成,生成中断信号P_CPL,以指示可释放外部存储器中的校验数据。
2.一种IO命令处理方法,其特征在于,包括:
将向逻辑单元写入数据的编程命令发送给介质接口控制器;
响应于收到中断信号R_CPL,生成编程命令将中断信号R_CPL所指示的外部存储器中的校验数据写入页条带,并且指示无需为所生成的编程命令计算校验数据;以及
响应于收到中断信号P_CPL,如果中断信号P_CPL指示写入操作成功,丢弃外部存储器中的校验数据。
3.如权利要求2所述的IO命令处理方法,其特征在于,如果中断信号P_CPL指示写入操作失败,生成第二编程命令,将外部存储器中的校验数据写入页条带,并且指示无需为所生成的第二编程命令计算校验数据。
4.一种IO命令处理方法,其中用缓存存储用于页条带的校验数据,其特征在于,包括:响应于向页条带写入用户数据的编程命令,将编程命令对应的用户数据同缓存中的数据进行异或,异或结果存储在缓存中;以及
将编程命令发送给对应的逻辑单元。
5.一种介质接口控制器,其特征在于,包括高优先级命令队列和低优先级命令队列,介质接口控制器耦合到一个或多个逻辑单元,介质接口控制器还耦合到校验数据计算器以及缓存,用于对编程命令对应的用户数据进行异或以得到校验数据,并将异或结果存储到缓存中;介质接口控制器还耦合到CPU与外部存储器;校验数据计算器也耦合到CPU与外部存储器,用于同外部存储器交换数据,以及向CPU指示中断信号。
6.如权利要求5所述的介质接口控制器,其特征在于,响应于页条带的校验数据计算完成,介质接口控制器或校验数据计算器将缓存中的校验数据存储到外部存储器,生成中断信号R_CPL,以指示可释放为所述页条带所分配的缓存,并指示校验数据的存储地址;以及
响应于向页条带写入校验数据的写入操作完成,介质接口控制器或校验数据计算器生成中断信号P_CPL,以指示可释放外部存储器中的校验数据。
7.如权利要求6所述的介质接口控制器,其特征在于,响应于中断信号R_CPL,CPU生成编程命令,将外部存储器中的校验数据写入页条带,并且指示无需为所生成的编程命令计算校验数据。
8.如权利要求6-7之一所述的介质接口控制器,其特征在于,响应于中断信号P_CPL,如果中断信号P_CPL指示写入操作失败,CPU生成第二编程命令,将外部存储器中的校验数据写入页条带,并且指示无需为所生成的第二编程命令计算校验数据。
9.如权利要求6-7之一所述的介质接口控制器,其特征在于,响应于中断信号P_CPL,如果中断信号P_CPL指示写入操作失败,CPU读出页条带中已被写入的数据,并生成编程命令以将从页条带读出的数据写入另一条页条带,以及生成编程命令将外部存储器中的校验数据写入所述另一页条带,并且指示无需为所生成的编程命令计算校验数据。
10.一种固态存储设备,包括主机接口、控制部件、外部存储器以及一个或多个NVM芯片,控制部件用于控制在接口、NVM芯片与固件存储器之间的数据传输,一个NVM芯片包括一个或多个逻辑单元,其特征在于,所述控制部件包括一个或多个如权利要求5-9之一所述的介质接口控制器,一个或多个所述介质接口控制器还耦合到校验数据计算器以及缓存,用于对输入数据进行异或以得到校验数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611106709.5A CN108153482B (zh) | 2016-12-05 | 2016-12-05 | Io命令处理方法与介质接口控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611106709.5A CN108153482B (zh) | 2016-12-05 | 2016-12-05 | Io命令处理方法与介质接口控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108153482A true CN108153482A (zh) | 2018-06-12 |
CN108153482B CN108153482B (zh) | 2021-09-07 |
Family
ID=62469748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611106709.5A Active CN108153482B (zh) | 2016-12-05 | 2016-12-05 | Io命令处理方法与介质接口控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108153482B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108877862A (zh) * | 2017-05-10 | 2018-11-23 | 北京忆芯科技有限公司 | 页条带的数据组织以及向页条带写入数据的方法与装置 |
CN109815157A (zh) * | 2017-11-22 | 2019-05-28 | 北京忆芯科技有限公司 | 编程命令处理方法与装置 |
CN110928482A (zh) * | 2018-09-19 | 2020-03-27 | 北京忆恒创源科技有限公司 | 部分页条带与使用部分页条带的存储设备及其方法 |
CN111367825A (zh) * | 2018-12-26 | 2020-07-03 | 北京忆恒创源科技有限公司 | 存储设备的虚拟校验数据缓存 |
CN112000608A (zh) * | 2020-09-02 | 2020-11-27 | 展讯通信(上海)有限公司 | 系统级芯片及其中核间通信的方法、智能穿戴设备 |
CN112530509A (zh) * | 2018-12-26 | 2021-03-19 | 上海忆芯实业有限公司 | 为存储设备提供ecc的方法、ecc模块及存储设备 |
CN113608771A (zh) * | 2021-06-20 | 2021-11-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种fpga固件快速烧写的方法、装置、设备及可读介质 |
CN116126251A (zh) * | 2023-04-04 | 2023-05-16 | 北京忆恒创源科技股份有限公司 | 一种实现多并发写入的方法、控制器和固态存储设备 |
CN117251107A (zh) * | 2023-06-27 | 2023-12-19 | 北京忆芯科技有限公司 | 降低页条带写操作性能波动的方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150620A (zh) * | 2006-09-22 | 2008-03-26 | 中兴通讯股份有限公司 | 一种保证用户状态一致性的实现方法 |
CN101196797A (zh) * | 2007-12-07 | 2008-06-11 | 华中科技大学 | 一种存储系统数据分布及互转换方法 |
CN102799392A (zh) * | 2012-06-16 | 2012-11-28 | 北京忆恒创源科技有限公司 | 存储设备及其中断控制方法 |
US20120302918A1 (en) * | 2011-05-23 | 2012-11-29 | William Dietz | All-in-one diabetes blood glucose meter |
CN102811120A (zh) * | 2012-08-03 | 2012-12-05 | 西安电子科技大学 | 基于网络编码的双向中继harq控制系统与方法 |
CN102830942A (zh) * | 2012-06-28 | 2012-12-19 | 记忆科技(深圳)有限公司 | 固态硬盘磁盘阵列映射的方法及其固态硬盘 |
CN103392207A (zh) * | 2011-10-05 | 2013-11-13 | Lsi公司 | 非易失性存储的自身日志记录和层级一致性 |
CN104035830A (zh) * | 2014-06-24 | 2014-09-10 | 浙江宇视科技有限公司 | 一种数据恢复方法和装置 |
CN104283746A (zh) * | 2014-09-26 | 2015-01-14 | 中国南方电网有限责任公司电网技术研究中心 | 使用fpga实现数字化变电站三网合一的系统及方法 |
CN105204939A (zh) * | 2015-11-03 | 2015-12-30 | 浪潮(北京)电子信息产业有限公司 | 一种中断请求的处理方法 |
CN106941488A (zh) * | 2017-03-09 | 2017-07-11 | 西安电子科技大学 | 基于fpga的多层协议数据包封装装置及方法 |
-
2016
- 2016-12-05 CN CN201611106709.5A patent/CN108153482B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150620A (zh) * | 2006-09-22 | 2008-03-26 | 中兴通讯股份有限公司 | 一种保证用户状态一致性的实现方法 |
CN101196797A (zh) * | 2007-12-07 | 2008-06-11 | 华中科技大学 | 一种存储系统数据分布及互转换方法 |
US20120302918A1 (en) * | 2011-05-23 | 2012-11-29 | William Dietz | All-in-one diabetes blood glucose meter |
CN103392207A (zh) * | 2011-10-05 | 2013-11-13 | Lsi公司 | 非易失性存储的自身日志记录和层级一致性 |
CN102799392A (zh) * | 2012-06-16 | 2012-11-28 | 北京忆恒创源科技有限公司 | 存储设备及其中断控制方法 |
CN102830942A (zh) * | 2012-06-28 | 2012-12-19 | 记忆科技(深圳)有限公司 | 固态硬盘磁盘阵列映射的方法及其固态硬盘 |
CN102811120A (zh) * | 2012-08-03 | 2012-12-05 | 西安电子科技大学 | 基于网络编码的双向中继harq控制系统与方法 |
CN104035830A (zh) * | 2014-06-24 | 2014-09-10 | 浙江宇视科技有限公司 | 一种数据恢复方法和装置 |
CN104283746A (zh) * | 2014-09-26 | 2015-01-14 | 中国南方电网有限责任公司电网技术研究中心 | 使用fpga实现数字化变电站三网合一的系统及方法 |
CN105204939A (zh) * | 2015-11-03 | 2015-12-30 | 浪潮(北京)电子信息产业有限公司 | 一种中断请求的处理方法 |
CN106941488A (zh) * | 2017-03-09 | 2017-07-11 | 西安电子科技大学 | 基于fpga的多层协议数据包封装装置及方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108877862A (zh) * | 2017-05-10 | 2018-11-23 | 北京忆芯科技有限公司 | 页条带的数据组织以及向页条带写入数据的方法与装置 |
CN108877862B (zh) * | 2017-05-10 | 2021-10-08 | 北京忆芯科技有限公司 | 页条带的数据组织以及向页条带写入数据的方法与装置 |
CN109815157A (zh) * | 2017-11-22 | 2019-05-28 | 北京忆芯科技有限公司 | 编程命令处理方法与装置 |
CN110928482A (zh) * | 2018-09-19 | 2020-03-27 | 北京忆恒创源科技有限公司 | 部分页条带与使用部分页条带的存储设备及其方法 |
CN111367825A (zh) * | 2018-12-26 | 2020-07-03 | 北京忆恒创源科技有限公司 | 存储设备的虚拟校验数据缓存 |
CN112530509A (zh) * | 2018-12-26 | 2021-03-19 | 上海忆芯实业有限公司 | 为存储设备提供ecc的方法、ecc模块及存储设备 |
CN112000608A (zh) * | 2020-09-02 | 2020-11-27 | 展讯通信(上海)有限公司 | 系统级芯片及其中核间通信的方法、智能穿戴设备 |
CN112000608B (zh) * | 2020-09-02 | 2021-10-01 | 展讯通信(上海)有限公司 | 系统级芯片及其中核间通信的方法、智能穿戴设备 |
CN113608771A (zh) * | 2021-06-20 | 2021-11-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种fpga固件快速烧写的方法、装置、设备及可读介质 |
CN116126251A (zh) * | 2023-04-04 | 2023-05-16 | 北京忆恒创源科技股份有限公司 | 一种实现多并发写入的方法、控制器和固态存储设备 |
CN117251107A (zh) * | 2023-06-27 | 2023-12-19 | 北京忆芯科技有限公司 | 降低页条带写操作性能波动的方法 |
CN117251107B (zh) * | 2023-06-27 | 2024-04-16 | 北京忆芯科技有限公司 | 降低页条带写操作性能波动的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108153482B (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108153482A (zh) | Io命令处理方法与介质接口控制器 | |
CN102681952B (zh) | 将数据写入存储设备的方法与存储设备 | |
CN102693198B (zh) | Dma传输方法及系统 | |
JP5759623B2 (ja) | メモリシステムコントローラを含む装置および関連する方法 | |
KR101560469B1 (ko) | 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들 | |
TWI463314B (zh) | 包含記憶體系統控制器之裝置及相關方法 | |
CN103999060A (zh) | 固态存储管理 | |
TW201227506A (en) | Controller and method for performing background operations | |
CN103218270B (zh) | 具有多个固态盘的计算机 | |
CN108153582A (zh) | Io命令处理方法与介质接口控制器 | |
CN105867840A (zh) | 闪存组件及非易失性半导体存储器组件 | |
CN106469126A (zh) | 处理io请求的方法及其存储控制器 | |
CN109101185A (zh) | 固态存储设备及其写命令和读命令处理方法 | |
CN109164976A (zh) | 利用写缓存优化存储设备性能 | |
CN108664213A (zh) | 基于分布式缓存的原子写命令处理方法与固态存储设备 | |
TW201835757A (zh) | 垃圾回收方法以及使用該方法的裝置 | |
CN107797938A (zh) | 加快去分配命令处理的方法与存储设备 | |
CN114253461A (zh) | 混合通道存储设备 | |
CN108572932A (zh) | 多平面nvm命令融合方法与装置 | |
CN109388333A (zh) | 降低读命令处理延迟的方法与装置 | |
CN108877862B (zh) | 页条带的数据组织以及向页条带写入数据的方法与装置 | |
CN108664214A (zh) | 用于固态存储设备的分布式缓存的掉电处理方法与装置 | |
US9152348B2 (en) | Data transmitting method, memory controller and data transmitting system | |
CN102929813A (zh) | 一种pci-e接口固态硬盘控制器的设计方法 | |
CN108984108A (zh) | 用于调度io命令的方法与固态存储设备 |
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 | ||
CB02 | Change of applicant information |
Address after: 361000 Xiamen, Fujian, China (Fujian) free trade trial area Xiamen area (bonded port area), South Sea Road two Road 45, 4 Building 03 unit F0100 Applicant after: Xiamen Jingcun Semiconductor Technology Co., Ltd Address before: 361000 Fujian province Xiamen free trade test area Xiamen area (bonded port area) sea view south two Road 45 4 Building 03 unit F0100 Applicant before: XIAMEN KINGBLAZE TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |