CN103136136A - 用于闪存存储介质执行数据传输的方法和系统 - Google Patents
用于闪存存储介质执行数据传输的方法和系统 Download PDFInfo
- Publication number
- CN103136136A CN103136136A CN2012104999330A CN201210499933A CN103136136A CN 103136136 A CN103136136 A CN 103136136A CN 2012104999330 A CN2012104999330 A CN 2012104999330A CN 201210499933 A CN201210499933 A CN 201210499933A CN 103136136 A CN103136136 A CN 103136136A
- Authority
- CN
- China
- Prior art keywords
- order
- controller
- flash
- data
- flash memory
- 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
Images
Classifications
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
-
- 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/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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
- G06F13/1673—Details of memory controller using buffers
-
- 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
-
- 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
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- 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
-
- 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/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明披露了一种在主机内存和闪存模块之间通过直接内存存取(DMA)来进行数据传输的方法,及其相关的数据传输子系统。在一个实施例中,该子系统包括一个DMA控制器、一个闪存控制器、一个数据缓存器(用于缓存在DMA控制器和闪存控制器之间传输的数据)、和一个状态寄存器组(用于存储数据缓存器的当前状态)。DMA控制器和闪存控制器被配置使得它们都能更新当前状态,并在数据传输期间检测当前状态的变化,因此大部分数据传输过程都是通过DMA控制器和闪存控制器之间的直接互动而执行的,并不涉及中央处理单元。该子系统还包括一个命令存储单元,用于存储由闪存控制器执行的命令包。
Description
【技术领域】
本发明涉及用于存储系统特别是闪存存储系统里的高效率的数据传输方法。
【背景技术】
闪存是一种非易失性的电子存储介质,其能够电子地擦除或重写入数据,从而非常适合作为一种可重写的、小型的数据存储介质用于电子系统、计算机系统,特别适合用于移动设备。
NAND闪存是一种特别的闪存,其使用了浮栅晶体管,它们以类似于与非门的形式串连在一起。NAND闪存广泛应用于计算机系统、数码相机、便携式音乐播放器、USB闪存驱动器、存储卡、和SmartMediaTM卡。特别在计算机系统和持久性数据存储系统里,基于磁盘的数据存储介质被使用NAND闪存的固态硬盘取代的情况越发普遍,因为这些固态硬盘比基于磁盘的数据存储介质具有更多优点,如较少的功耗、更好的抗物理震动和电磁兼容特性、更小的物理尺寸、以及更轻的重量。
根据制造、型号和使用的技术,NAND闪存有不同的容量和电子构造。例如,NAND闪存装置内的存储库(memory bank)被分成块(block),块的尺寸包括但不限于256K、512K、1M或2M字节。每个块又被分成页。页的数量可以是32、64、128或更多,每页的尺寸可以是256、512、1K、2K、4K、8K字节或更多。其它技术变化会带来其它属性,如块类型、地址周期、和备用存储空间尺寸。
通常,NAND闪存的数据存储操作包括三个基本操作:页读取、页写入、和块擦除。在页写入或再次写入之前,必须首先对包含页的块进行块擦除。操作速度是非均匀的。页读取比页写入或块擦除要更快。另外,NAND闪存的存储单元具有有限的使用寿命。存储单元在一定次数地擦除循环之后便会损坏。通常,一个单阶存储单元(SLC)的擦除循环次数是100,000,一个多阶存储单元(MLC)的擦除循环次数是3,000到10,000。因此,已经研发出了各种数据存储操作方案,以最小化块擦除操作,并将块擦除操作平均分布到所有块上。
在现有技术里,芯片内执行(XIP)是指应用程序可以直接在存储介质内运行,不必再把代码读到系统RAM中。NAND闪存就是一种典型的非XIP存储器。非XIP存储器并不提供一个接口直接与中央处理器(CPU)连接。而且,由于RAM与NAND闪存或非XIP存储器之间的上述区别,非XIP存储器并不与主机的内存如RAM直接连接用于数据传输。在非XIP存储器和主机内存或CPU之间,需要一个闪存控制器来进行数据传输。
图1是主机内存和一个或多个闪存模块之间通过直接内存存取(DMA)进行数据传输的典型结构示意图。例如,假设CPU接收到一个从主机内存到一个闪存模块的数据写入命令,那么CPU就指示DMA控制器从主机内存传输一页数据到数据缓存器,数据缓存器与DMA控制器和闪存控制器连接。在该页数据传输到数据缓存器后,DMA控制器就会提交一个中断请求给CPU。一旦接收到中断请求,CPU就知道该页数据在数据缓存器内就绪。或者,CPU通过定时地轮询DMA控制器而得知情况。然后CPU可以选择性地在一个擦除命令之前发送一个写入指令到闪存控制器,以从该数据缓存器写入该页数据到闪存模块。当该写入命令完成时,闪存控制器发送一个中断给CPU,CPU就知道该写入命令完成了,或CPU通过定时地轮询闪存控制器而得知情况。然后CPU重复该过程:指示DMA加载另一页数据到数据缓存器,然后命令闪存控制器去做写入操作,直到所有的数据都传输了。读取操作的过程也是类似的。擦除操作也需要中断或轮询。因为这个过程要重复很多次,这就会产生很高的CPU负载。而且,因为一个新的闪存操作命令只有在前一命令(两个命令都是属于同一个闪存模块)完成后才能发出,这会导致CPU低效率。
这就需要一种在主机内存和闪存模块之间的具有减少CPU负载和/或增加CPU效率的数据传输方法,以改良上述典型安排。
【发明概述】
本发明的一个方面是提供一种数据传输子系统,其能在主机内存和由该子系统支持的任意一个或多个闪存模块之间通过DMA来进行数据传输。该子系统包括:一个DMA控制器、一个闪存控制器、一个连接到DMA控制器和闪存控制器的数据缓存器(用于缓存在DMA控制器和闪存控制器之间传输的数据)、和一个可由DMA控制器和闪存控制器访问的状态寄存器组(用于存储数据缓存器的当前状态)。当前状态是和数据传输相关的。DMA控制器包括至少一个功能:传输数据往来主机内存。闪存控制器有至少一个功能:传输数据往来任意一个或多个闪存模块。另外,DMA控制器和闪存控制器被配置使得它们都能读取和更新当前状态,并在数据传输期间检测当前状态的变化,因此大部分数据传输过程都是通过DMA控制器和闪存控制器之间的直接互动而执行的,并不涉及CPU。所以CPU负载得以降低。
优选地,数据传输子系统还包括一个命令存储单元。该命令存储单元接收命令包,每个命令包都包括一个操作类型,其指定一个由闪存控制器执行的命令,并指向所述一个或多个闪存模块中的一个目标闪存模块。命令包是从CPU处接收的。另外,根据命令包指向的目标闪存模块,命令存储单元被配置以一个或多个有序序列存储命令包,其中以一个或多个有序序列存储的命令包是以命令包的接收时间或接收次序来排列的。闪存控制器可以根据一个选中序列的次序一个接一个地获取所选序列存储的命令包。
本发明的第二个方面是提供一种能在主机内存和闪存模块之间通过DMA来进行数据传输的方法。当接收到一个关于数据传输的主机命令时,CPU就配置DMA控制器和闪存控制器去执行该主机命令。特别地,CPU通过产生一个或多个命令包并按照一定次序排列成一个有序序列,该有序序列中的命令包用于闪存控制器顺序执行。根据该有序序列的次序,闪存控制器一个接一个地顺序执行这一个或多个命令包,直到所有的命令包都被执行了。顺序执行是指,在这一个或多个命令包中的第一个命令包的执行完成之前,紧接着第一个命令包的第二个命令包的执行不能启动。DMA控制器和闪存控制器检测并更新数据缓存器的当前状态,其中当前状态是和数据传输相关的,以便能在大部分数据传输过程执行里,DMA控制器和闪存控制器之间是直接互动,而不涉及中央处理单元。另外,DMA控制器和闪存控制器还被配置完成以下两个结果。第一,在执行第一个命令包期间,如果闪存控制器检测到当前状态不匹配第一数值,那么闪存控制器等待,直到DMA控制器更新当前状态为第一数值。第二,当第一个命令包的执行完成时,闪存控制器更新当前状态为第二数值,使得DMA控制器一旦检查当前状态就能检测到第一个命令包的执行结束了。优选地,第一数值是第一个命令包里的一个命令启动数值,第二数值是第一个命令包里的一个命令结束数值。
优选地,在产生一个或多个命令包后,CPU就将这所有命令包存储在一个命令存储单元中。因此,闪存控制器可以直接从该命令存储单元中获取一个或多个命令包用于顺序执行,而不再需要涉及CPU。
【附图说明】
图1是主机内存和一个或多个闪存模块之间通过直接内存存取(DMA)进行数据传输的典型结构示意图。
图2显示本发明一个典型实施例的能在主机内存和一个或多个闪存模块之间进行数据传输的数据传输子系统。
【发明详述】
本发明的一个方面是一个数据传输子系统,其能在主机内存和由该子系统支持的任意一个闪存之间通过DMA来进行数据传输。该子系统可以用于的存储设备包括但不限于SATA(串行高级技术附件)设备、USB(通用串行总线)设备、和PCIE(快速外围组件互连)设备。图2显示本发明数据传输子系统的一个典型实施例。
数据传输子系统200包括DMA控制器220和闪存控制器210。DMA控制器220包括至少一个功能:传输数据到主机内存280,或从主机内存280传输数据出来,被配置以通过DMA从主机内存280来回地执行数据传输。例如,主机内存280可以是一个RAM或一组RAM。闪存控制器210包括至少一个功能:传输数据到任意闪存模块270,或从任意闪存模块270传输数据出来。一个或多个闪存模块270中的每个闪存模块可以是NAND闪存、非XIP存储器、或任何非易失性闪存存储介质。如果使用的是NAND闪存,闪存控制器210就专用于执行NAND闪存命令,其相关的操作包括但不限于擦除、写入、读取、读取状态、复位、和多重命令(Multi-Plane command)。通常,闪存控制器210使用的指令集是基于存储器的类型的。可选地,闪存控制器210可以被配置以有一个或多个通道(从主机的角度来看),其中每个通道都用于从主机传输数据到闪存模块270中的一个单独的闪存模块。闪存控制器210可以在子系统200中作为一个单独的器件来实施,或者作为多个电子器件来实施,其中每个都负责闪存模块270中的一个子集。
在子系统200中,数据缓存器230连接到DMA控制器220和闪存控制器210,数据缓存器230用于缓存在DMA控制器220和闪存控制器210之间传输的数据。需要数据缓存是因为传统闪存的逐页读取/写入特性。例如,在一个页读取操作中,通过闪存控制器210加载一页数据到数据缓存器230中,然后DMA控制器220通过DMA从数据缓存器230传输该页数据到主机内存280。数据缓存器230可以通过一个RAM或多个RAM来实现,不论是单端口还是双端口。子系统200还包括一个状态寄存器组240,其是可通过DMA控制器220和闪存控制器210存取的。数据缓存器230的当前状态就存储于状态寄存器组240中。特别地,当前状态是与在主机内存280和正在使用的专用闪存模块之间传输的数据相关的。该专用闪存模块就是闪存模块270中的一个。由此可见,如果子系统200支持多于一个闪存模块,那么数据缓存器230中就存储有多于一个的当前状态。状态寄存器组240,作为存储装置,可以由一个RAM(单端口或双端口)或一个寄存器组来实现。
另外,经配置DMA控制器220和闪存控制器210,使得DMA控制器220和闪存控制器210可以更新当前状态,并在数据传输时检测当前状态的变化。在现有技术里,通常认为两个存储单元的同时更新是不可取的。在此说明书和所附权利要求书中,DMA控制器和闪存控制器可以独自更新当前状态,但是DMA控制器和闪存控制器不能在任何时间同时更新当前状态。在完成一个任务或一个操作后的当前状态,可以由DMA控制器220或闪存控制器210来进行更新。另外,当前状态是选自一组用于子系统200的预定数值,因此由DMA控制器220或闪存控制器210完成的一个任务或操作,可以由另一个通过检测当前状态而检测到。更新当前状态以及检测其变化,这个动作使得DMA控制器220和闪存控制器210之间可以直接互动。由闪存控制器210完成的每个闪存操作命令都不需要通过中断或轮询而告知CPU 260,CPU 260也不需要通知DMA控制器220去开始下一个操作以响应闪存控制器210完成了上一个闪存操作命令。闪存控制器210只需要通知CPU 260特殊事件的发生,例如当擦除/写入命令失败了或者当闪存数据的数据完整性测试失败了,闪存控制器210才需要通知CPU 260。由此可见,大部分数据传输过程是通过DMA控制器220和闪存控制器210之间的直接互动而完成的,并不涉及CPU 260,因此CPU负载降低了。
优选地,子系统200还包括一个命令存储单元250。命令存储单元250接收并存储命令包。每个命令包包括一个操作类型,其指定一个可由闪存控制器210执行的命令,并指向闪存模块270中的一个目标闪存模块。也就是说,由该操作类型指定的命令是一个为目标闪存模块执行的闪存操作。闪存操作的例子包括擦除、写入、读取、读取状态、复位、和多重命令。在命令存储单元250中,根据命令包指向的目标闪存模块,命令包存储在一个或多个有序序列中。在任一有序序列中,命令包以该命令包的接收时间或接收次序来排列。命令存储单元250还可以允许闪存控制器210根据所选序列的次序一个接一个地获取存储在所选序列中的命令包,其中所选序列就是任一有序序列。
可以从CPU 260或从另一个产生这些命令包的处理器或协处理器(co-processor)处接收命令包。可选地,可以从CPU 260连续接收命令包,因此允许从CPU 260连续传输这些命令包到命令存储单元250。没有来自闪存控制器210的中断或定时轮询闪存控制器210,使得CPU效率得以提高。
除了指定由闪存控制器210执行命令的操作类型,命令包还包括其它可用于执行命令的数据。这些其它数据可以包括:当当前状态匹配命令启动值(command-initiating value)时指示闪存控制器210开始执行命令的命令启动值、和当命令完成时闪存控制器210更新当前状态的命令完成值(command-done value)。这些其它数据还可以包括:目标闪存模块的地址、如果命令是关于读取操作或写入操作的数据缓存器的地址、和用于支持闪存控制器210执行命令的元数据(meta data)列表。
命令存储单元250可以由一个RAM或多个RAM实现。可选地,命令存储单元250可以由一个或多个先进先出(FIFO)存储设备来实施,其中每个FIFO存储设备存储一个有序序列命令包。
可选地,命令存储单元250可以包括一个或多个命令存储子单元,每个子单元都能存储命令包在一个单独的有序序列中,该单独的有序序列即选自所述一个或多个有序序列。命令存储子单元的数量等于由子系统200支持的闪存模块270的数量。
可选地,数据缓存器230可以包括一个或多个数据缓存单元(constituent buffer),每个数据缓存单元都用于缓存往来一个单独的专用闪存模块的数据,所述单独的专用闪存模块选自所述一个或多个闪存模块。类似地,状态寄存器组240可以包括一个或多个状态寄存器,每个状态寄存器都存储一个单独的数据缓存单元的当前状态,所述单独的数据缓存单元选自所述一个或多个数据缓存单元。状态寄存器的数量等于数据缓存单元的数量。
本发明的第二方面是一种能在主机内存和闪存模块之间通过DMA来进行数据传输的方法。主机包括一个DMA控制器用于传输数据往来主机内存、一个闪存控制器用于传输数据往来闪存模块、和一个数据缓存器用于缓存在DMA控制器和闪存控制器之间传输的数据。主机的例子包括但不限于SATA设备、USB设备、PCIE设备。闪存模块的例子包括NAND闪存、非XIP存储器和非易失性闪存介质。如果该闪存模块是NAND闪存,那么闪存控制器就是专门用于执行NAND闪存命令。数据缓存器可以由一个RAM或多个RAM来实现,无论是单端口还是双端口。
借助于图2所示,该方法的细节描述如下。当CPU 260接收到一个主机命令,要在主机内存280和闪存模块270之间传输数据,那么CPU260先分析该主机命令,以便能配置DMA控制器220和闪存控制器210去执行该主机命令。特别地,CPU 260通过产生一个或多个命令包来配置闪存控制器210,类似于以上在本发明第一方面里描述的命令包,排列成有序序列用于闪存控制器210顺序执行。根据该有序序列的次序,闪存控制器210按顺序地一个接一个地执行这一个或多个命令包,直到所有的命令包都被执行了。在这些命令包的按顺序执行里,重叠执行不同命令包是不允许的。也就是说,在所有命令包中的第一个命令包完成之前,紧接着这第一个命令包的第二个命令包的执行是不可以启动的。在该方法中,允许DMA控制器220和闪存控制器210去检查和更新数据缓存器230的当前状态(其中当前状态是关于主机内存280和闪存模块270之间的数据传输的),使得在部分数据传输过程的执行中,DMA控制器220和闪存控制器210之间可以直接互动,而不涉及CPU 260。直接互动的好处在以上本发明的第一方面中已经有描述了。另外,DMA控制器220和闪存控制器210还被配置以实施以下两个期望的任务。以闪存写入操作为例,第一,在执行第一命令包时,如果闪存控制器210检测到当前状态并不匹配第一数值,那么闪存控制器210等待,直到DMA控制器220更新了当前状态为第一数值。第二,当完成第一命令包时,闪存控制器210更新当前状态为第二数值,使得DMA控制器220一旦检测当前状态就可以检测到第一命令包完成了。在以上描述的两个协同动作中,第一数值和第二数值是DMA控制器220和闪存控制器210之间的预备值。可选地,第一数值是在第一命令包里的命令启动值,第二数值是在第一命令包里的命令结束值。闪存读取操作过程也是类似的。
优选地,在产生一个或多个命令包后,CPU 260将这所有一个或多个命令包存储在一个命令存储单元250中。因此,闪存控制器210可以直接从命令存储单元250中获取这一个或多个命令包顺序执行,而不再需要涉及CPU 260,所以能提高CPU效率,如以上本发明第一方面描述的。
本发明还可以以其它具体形式但不脱离其精神或本质特征来实施。因此本实施例在所有方面都应考虑为描述性的而非限制性的。本发明的范围是由所附权利要求限定,而不是由以上描述限定,因此在所附权利要求或其等同物的意义和范围内的所有变化都在其覆盖范围内。
Claims (20)
1.一种数据传输子系统,其能在主机内存和由该子系统支持的任意一个或多个闪存模块之间通过直接内存存取(DMA)来进行数据传输,该子系统包括:
DMA控制器,用于至少传输数据到所述主机内存,以及从所述主机内存传输出数据;
闪存控制器,用于至少传输数据到所述任意一个或多个闪存模块,以及从所述任意一个或多个闪存模块传输出数据;
数据缓存器,其连接到所述DMA控制器和所述闪存控制器,用于缓存在所述DMA控制器和所述闪存控制器之间传输的数据;
状态寄存器组,其可被所述DMA控制器和所述闪存控制器存取,用于存储所述数据缓存器的当前状态,所述当前状态是与所述数据传输相关的;
其中所述DMA控制器和所述闪存控制器被配置,使得所述DMA控制器和所述闪存控制器可以更新所述当前状态,并可以在数据传输期间检测所述当前状态的变化,因此大部分数据传输过程都是通过在所述DMA控制器和所述闪存控制器之间的直接互动而执行的,并不涉及中央处理器。
2.根据权利要求1所述的数据传输子系统,还包括命令存储单元,其被设置成:
接收命令包,每个命令包包括一个操作类型,其指定一个可由所述闪存控制器执行的命令,并指向所述一个或多个闪存模块中的一个目标闪存模块;
根据所述命令包指向的所述目标闪存模块,以一个或多个有序序列存储所述命令包,其中以一个或多个有序序列存储的所述命令包是以命令包的接收时间或接收次序的顺序来排列的;
允许所述闪存控制器按照次序一个接一个地获取并执行所选中序列存储的命令包。其中所述选中序列是所述一个或多个有序序列中的任意一个。
3.根据权利要求2所述的数据传输子系统,其中所述命令包是由所述中央处理器发出的。
4.根据权利要求2所述的数据传输子系统,其中每个所述命令包还包括:
命令启动数值,用于当所述当前状态匹配所述命令启动数值时,指示所述闪存控制器启动执行所述命令;
命令完成数值,当所述命令完成时,所述闪存控制器更新当前状态为所述命令完成数值;
所述目标闪存模块的地址;
如果所述命令是关于一个读取操作或一个写入操作时的所述数据缓存器的地址;
元数据列表,用于支持所述闪存控制器执行命令。
5.根据权利要求2所述的数据传输子系统,其中所述命令是关于擦除、写入、读取、读取状态、复位、或多重命令(Multi-Plane command)的操作。
6.根据权利要求2所述的数据传输子系统,其中所述命令存储单元包括一个或多个命令存储子单元,每个命令存储子单元都用来存储所述一个或者多个按照一定次序排列的命令包,所述一个或多个命令存储子单元的数量等于所述一个或多个闪存模块的数量。
7.根据权利要求1所述的数据传输子系统,其中:
所述数据缓存器包括一个或多个数据缓存单元,每个数据缓存单元都用于缓存一个往来专用闪存模块的数据,所述专用闪存模块选自所述一个或多个闪存模块;
所述状态寄存器组包括一个或多个状态寄存器,每个状态寄存器都存储一个单独的数据缓存单元的当前状态,所述单独的数据存储单元选自所述一个或多个数据存储单元,所述一个或多个状态寄存器的数量等于所述一个或多个数据缓存单元的数量。
8.根据权利要求1所述的数据传输子系统,其中所述闪存模块可以是NAND闪存、非XIP存储器、或非易失性闪存存储介质。
9.根据权利要求1所述的数据传输子系统,其中所述数据缓存器是由随机存取存储器(RAM)或多个RAM实现的,无论是单端口或双端口的。
10.根据权利要求1所述的数据传输子系统,其中所述闪存控制器是专用于执行NAND闪存命令或基于存储器类型的任意其它指令集里的命令。
11.根据权利要求1所述的数据传输子系统,其中所述子系统用于SATA设备或USB设备或PCIE设备或任意其它设备。
12.一种能在主机内存和闪存模块之间通过直接内存存取(DMA)来进行数据传输的方法,一个DMA控制器用于传输往来主机内存的数据,一个闪存控制器用于传输往来闪存模块的数据,一个数据缓存器用于缓存在所述DMA控制器和所述闪存控制器之间传输的数据,该方法包括;
当接收到一个关于在所述主机内存和所述闪存模块之间传输数据的主机命令时,中央处理单元配置所述DMA控制器和所述闪存控制器去执行所述主机命令,其中所述中央处理单元通过产生一个或多个命令包并将所述命令包按照一定次序排列组成有序序列,同时配置所述闪存控制器顺序执行所述命令包;
所述闪存控制器根据所述有序序列的次序一个接一个地顺序执行所述一个或多个命令包,直到所有命令包都执行了,其中在所述一个或多个命令包中的第一个命令包执行完成之前,紧接着所述第一个命令包的第二个命令包的执行不能启动;
配置所述DMA控制器和所述闪存控制器去检测和更新所述数据缓存器的当前状态,所述当前状态是关于所述数据缓存器的,使得:
在执行第一个命令包期间,如果所述闪存控制器检测到的当前状态不匹配第一数值,那么所述闪存控制器就等待,直到所述DMA控制器更新当前状态为第一数值;
当所述第一个命令包的执行完成时,所述闪存控制器就更新当前状态为第二数值,使得所述DMA控制器一旦检查当前状态就能检测到所述第一个命令包的执行已经完成了;
因此,在执行大部分数据传输过程时,所述DMA控制器和所述闪存控制器之间都是直接互动,而不涉及所述中央处理单元。
13.根据权利要求12所述的方法,其中:
第一数值是在所述第一个命令包里的命令启动数值;
第二数值是在所述第一个命令包里的命令结束数值。
14.根据权利要求12所述的方法,还包括:
在产生所述一个或多个命令包之后,所述中央处理单元将所有所述一个或多个命令包存储在一个命令存储单元中,因此允许所述闪存控制器直接从所述命令存储单元中获取所述一个或多个命令包用于顺序执行,而不需要另外涉及所述中央处理单元。
15.根据权利要求12所述的方法,其中每个命令包包括:
一个操作类型,其指定一个由所述闪存控制器执行的命令;
一个命令启动数值,用于当所述当前状态匹配所述命令启动数值时指示所述闪存控制器启动执行所述命令;
一个命令结束数值,当所述命令完成时,所述闪存控制器更新当前状态;
所述闪存模块的地址;
如果所述命令是关于一个读取操作或一个写入操作时的所述数据缓存其的地址;
元数据列表,用于支持所述闪存控制器执行所述命令。
16.根据权利要求15所述的方法,其中所述命令是关于擦除、写入、读取、读取状态、复位、或多重命令(Multi-Plane command)的操作。
17.根据权利要求12所述的方法,其中所述闪存模块可以是NAND闪存、非XIP存储器、或非易失性闪存存储介质。
18.根据权利要求12所述的方法,其中所述数据缓存器是由随机存取存储器(RAM)或多个RAM实现的,无论是单端口或双端口的。
19.根据权利要求12所述的方法,其中所述闪存控制器是专用于执行NAND闪存命令或根据存储器类型的任意其它指令集里的命令。
20.根据权利要求12所述的方法,其中所述方法是用于SATA设备或USB设备或PCIE设备或任意其它设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/684,242 US9098491B2 (en) | 2012-11-23 | 2012-11-23 | Method and system for performing data transfer with a flash storage medium |
US13/684,242 | 2012-11-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103136136A true CN103136136A (zh) | 2013-06-05 |
CN103136136B CN103136136B (zh) | 2015-05-13 |
Family
ID=48495980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210499933.0A Expired - Fee Related CN103136136B (zh) | 2012-11-23 | 2012-11-29 | 用于闪存存储介质执行数据传输的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9098491B2 (zh) |
CN (1) | CN103136136B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617809A (zh) * | 2013-12-06 | 2014-03-05 | 上海新储集成电路有限公司 | 一种可就地执行的非挥发存储器 |
CN104182264A (zh) * | 2014-09-03 | 2014-12-03 | 福州瑞芯微电子有限公司 | 一种eMMC的开机优化方法及其装置 |
CN105354154A (zh) * | 2015-10-23 | 2016-02-24 | 北京麓柏科技有限公司 | 零cpu负载实现存储系统命令传输的装置和方法 |
CN105607871A (zh) * | 2015-12-18 | 2016-05-25 | 四川和芯微电子股份有限公司 | 智能u盘的控制方法 |
CN106557716A (zh) * | 2015-09-29 | 2017-04-05 | 恩智浦有限公司 | 近场通信装置 |
CN106557442A (zh) * | 2015-09-28 | 2017-04-05 | 北京兆易创新科技股份有限公司 | 一种芯片系统 |
CN108536623A (zh) * | 2018-04-19 | 2018-09-14 | 深圳市得微电子有限责任公司 | 多通道NAND Flash控制器及移动存储设备 |
CN109614049A (zh) * | 2018-12-11 | 2019-04-12 | 湖南国科微电子股份有限公司 | 闪存控制方法、闪存控制器及闪存系统 |
CN109614046A (zh) * | 2018-12-09 | 2019-04-12 | 江苏华存电子科技有限公司 | 一种用以连续快速产生闪存接口讯号序列的方法 |
CN110164499A (zh) * | 2019-05-24 | 2019-08-23 | 中国科学院微电子研究所 | 一种非易失性存储器的控制系统 |
CN110209352A (zh) * | 2019-05-14 | 2019-09-06 | 西安艾可萨科技有限公司 | 一种存储器的控制方法、存储器控制器、电子设备及存储介质 |
CN110399321A (zh) * | 2018-04-25 | 2019-11-01 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
CN111103960A (zh) * | 2019-12-22 | 2020-05-05 | 北京浪潮数据技术有限公司 | 一种Nvme SSD及其复位方法和系统 |
CN111338999A (zh) * | 2020-02-20 | 2020-06-26 | 南京芯驰半导体科技有限公司 | 直接存储器存取dma系统及数据传输方法 |
CN113010236A (zh) * | 2021-02-26 | 2021-06-22 | 山东英信计算机技术有限公司 | 一种程序执行方法、装置、设备及存储介质 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9887008B2 (en) * | 2014-03-10 | 2018-02-06 | Futurewei Technologies, Inc. | DDR4-SSD dual-port DIMM device |
KR102507219B1 (ko) | 2016-02-02 | 2023-03-09 | 에스케이하이닉스 주식회사 | 시스템 및 시스템의 동작 방법 |
US10055807B2 (en) | 2016-03-02 | 2018-08-21 | Samsung Electronics Co., Ltd. | Hardware architecture for acceleration of computer vision and imaging processing |
US10455045B2 (en) | 2016-09-06 | 2019-10-22 | Samsung Electronics Co., Ltd. | Automatic data replica manager in distributed caching and data processing systems |
US10467195B2 (en) | 2016-09-06 | 2019-11-05 | Samsung Electronics Co., Ltd. | Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system |
US10579516B2 (en) | 2017-03-13 | 2020-03-03 | Qualcomm Incorporated | Systems and methods for providing power-efficient file system operation to a non-volatile block memory |
US10963295B2 (en) * | 2017-09-08 | 2021-03-30 | Oracle International Corporation | Hardware accelerated data processing operations for storage data |
GB201808820D0 (en) * | 2018-05-30 | 2018-07-11 | Nordic Semiconductor Asa | Direct memory access controller |
CN109165177A (zh) * | 2018-09-21 | 2019-01-08 | 郑州云海信息技术有限公司 | 一种pcie接口的通信方法及相关装置 |
US11474698B2 (en) | 2019-12-04 | 2022-10-18 | Micron Technology, Inc. | Reset verification in a memory system by using a mode register |
CN113157205B (zh) * | 2021-02-26 | 2023-03-14 | 西安微电子技术研究所 | 一种nand阵列的控制方法、控制器、电子设备及存储介质 |
CN116931842B (zh) * | 2023-09-12 | 2023-12-08 | 合肥康芯威存储技术有限公司 | 一种存储器、数据处理方法、电子设备及介质 |
CN116909492B (zh) * | 2023-09-12 | 2023-12-08 | 合肥康芯威存储技术有限公司 | 一种存储设备及其控制方法 |
CN117348821B (zh) * | 2023-12-04 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种存储器、电子设备及开机数据读取方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6219759B1 (en) * | 1997-11-07 | 2001-04-17 | Nec Corporation | Cache memory system |
US20040230738A1 (en) * | 2003-01-09 | 2004-11-18 | Samsung Electronics Co., Ltd. | Apparatus and method for controlling execute-in-place (XIP) in serial flash memory, and flash memory chip using the same |
US20050195635A1 (en) * | 2004-03-08 | 2005-09-08 | Conley Kevin M. | Flash controller cache architecture |
US20080195800A1 (en) * | 2007-02-08 | 2008-08-14 | Samsung Electronics Co., Ltd. | Flash Memory Device and Flash Memory System Including a Buffer Memory |
CN101620581A (zh) * | 2008-07-03 | 2010-01-06 | 西安奇维测控科技有限公司 | 双口ram实现闪存控制器缓存的结构及实现该缓存的方法 |
CN102176325A (zh) * | 2011-02-28 | 2011-09-07 | 浪潮电子信息产业股份有限公司 | 一种用于固态硬盘的闪存控制器 |
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6230219B1 (en) * | 1997-11-10 | 2001-05-08 | International Business Machines Corporation | High performance multichannel DMA controller for a PCI host bridge with a built-in cache |
KR100758301B1 (ko) | 2006-08-04 | 2007-09-12 | 삼성전자주식회사 | 메모리 카드 및 그것의 데이터 저장 방법 |
CN101882119B (zh) | 2009-05-08 | 2014-05-14 | 上海炬力集成电路设计有限公司 | 与非型闪存控制器及其数据传输方法 |
US8595411B2 (en) * | 2009-12-30 | 2013-11-26 | Sandisk Technologies Inc. | Method and controller for performing a sequence of commands |
-
2012
- 2012-11-23 US US13/684,242 patent/US9098491B2/en not_active Expired - Fee Related
- 2012-11-29 CN CN201210499933.0A patent/CN103136136B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6219759B1 (en) * | 1997-11-07 | 2001-04-17 | Nec Corporation | Cache memory system |
US20040230738A1 (en) * | 2003-01-09 | 2004-11-18 | Samsung Electronics Co., Ltd. | Apparatus and method for controlling execute-in-place (XIP) in serial flash memory, and flash memory chip using the same |
US20050195635A1 (en) * | 2004-03-08 | 2005-09-08 | Conley Kevin M. | Flash controller cache architecture |
US20080195800A1 (en) * | 2007-02-08 | 2008-08-14 | Samsung Electronics Co., Ltd. | Flash Memory Device and Flash Memory System Including a Buffer Memory |
CN101620581A (zh) * | 2008-07-03 | 2010-01-06 | 西安奇维测控科技有限公司 | 双口ram实现闪存控制器缓存的结构及实现该缓存的方法 |
CN102176325A (zh) * | 2011-02-28 | 2011-09-07 | 浪潮电子信息产业股份有限公司 | 一种用于固态硬盘的闪存控制器 |
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617809A (zh) * | 2013-12-06 | 2014-03-05 | 上海新储集成电路有限公司 | 一种可就地执行的非挥发存储器 |
CN104182264A (zh) * | 2014-09-03 | 2014-12-03 | 福州瑞芯微电子有限公司 | 一种eMMC的开机优化方法及其装置 |
CN104182264B (zh) * | 2014-09-03 | 2017-07-11 | 福州瑞芯微电子股份有限公司 | 一种eMMC的开机优化方法及其装置 |
CN106557442A (zh) * | 2015-09-28 | 2017-04-05 | 北京兆易创新科技股份有限公司 | 一种芯片系统 |
CN106557442B (zh) * | 2015-09-28 | 2019-05-21 | 北京兆易创新科技股份有限公司 | 一种芯片系统 |
CN106557716A (zh) * | 2015-09-29 | 2017-04-05 | 恩智浦有限公司 | 近场通信装置 |
CN105354154B (zh) * | 2015-10-23 | 2018-12-28 | 贵州轩通大数据科技有限责任公司 | 零cpu负载实现存储系统命令传输的装置和方法 |
CN105354154A (zh) * | 2015-10-23 | 2016-02-24 | 北京麓柏科技有限公司 | 零cpu负载实现存储系统命令传输的装置和方法 |
CN105607871A (zh) * | 2015-12-18 | 2016-05-25 | 四川和芯微电子股份有限公司 | 智能u盘的控制方法 |
CN108536623A (zh) * | 2018-04-19 | 2018-09-14 | 深圳市得微电子有限责任公司 | 多通道NAND Flash控制器及移动存储设备 |
CN110399321A (zh) * | 2018-04-25 | 2019-11-01 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
US11645010B2 (en) | 2018-04-25 | 2023-05-09 | SK Hynix Inc. | Solid state drive (SSD) memory system improving the speed of a read operation using parallel DMA data transfers |
CN109614046A (zh) * | 2018-12-09 | 2019-04-12 | 江苏华存电子科技有限公司 | 一种用以连续快速产生闪存接口讯号序列的方法 |
CN109614049B (zh) * | 2018-12-11 | 2022-03-25 | 湖南国科微电子股份有限公司 | 闪存控制方法、闪存控制器及闪存系统 |
CN109614049A (zh) * | 2018-12-11 | 2019-04-12 | 湖南国科微电子股份有限公司 | 闪存控制方法、闪存控制器及闪存系统 |
CN110209352A (zh) * | 2019-05-14 | 2019-09-06 | 西安艾可萨科技有限公司 | 一种存储器的控制方法、存储器控制器、电子设备及存储介质 |
CN110209352B (zh) * | 2019-05-14 | 2023-03-14 | 西安艾可萨科技有限公司 | 一种存储器的控制方法、存储器控制器、电子设备及存储介质 |
CN110164499A (zh) * | 2019-05-24 | 2019-08-23 | 中国科学院微电子研究所 | 一种非易失性存储器的控制系统 |
CN110164499B (zh) * | 2019-05-24 | 2023-02-28 | 中国科学院微电子研究所 | 一种非易失性存储器的控制系统 |
CN111103960B (zh) * | 2019-12-22 | 2021-06-29 | 北京浪潮数据技术有限公司 | 一种Nvme SSD及其复位方法和系统 |
CN111103960A (zh) * | 2019-12-22 | 2020-05-05 | 北京浪潮数据技术有限公司 | 一种Nvme SSD及其复位方法和系统 |
CN111338999B (zh) * | 2020-02-20 | 2021-05-28 | 南京芯驰半导体科技有限公司 | 直接存储器存取dma系统及数据传输方法 |
CN111338999A (zh) * | 2020-02-20 | 2020-06-26 | 南京芯驰半导体科技有限公司 | 直接存储器存取dma系统及数据传输方法 |
CN113010236A (zh) * | 2021-02-26 | 2021-06-22 | 山东英信计算机技术有限公司 | 一种程序执行方法、装置、设备及存储介质 |
CN113010236B (zh) * | 2021-02-26 | 2024-01-19 | 山东英信计算机技术有限公司 | 一种程序执行方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US9098491B2 (en) | 2015-08-04 |
US20140149637A1 (en) | 2014-05-29 |
CN103136136B (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103136136B (zh) | 用于闪存存储介质执行数据传输的方法和系统 | |
US11151027B2 (en) | Methods and apparatuses for requesting ready status information from a memory | |
KR102384773B1 (ko) | 스토리지 장치, 컴퓨팅 시스템, 그리고 그것의 디버깅 방법 | |
US9348521B2 (en) | Semiconductor storage device and method of throttling performance of the same | |
CN103970688B (zh) | 缩短数据存储系统中写入等待时间的方法和系统 | |
US8898375B2 (en) | Memory controlling method, memory controller and memory storage apparatus | |
CN101908379B (zh) | 基于访问时间调整对非易失性半导体存储器的访问 | |
US8769232B2 (en) | Non-volatile semiconductor memory module enabling out of order host command chunk media access | |
US8606988B2 (en) | Flash memory control circuit for interleavingly transmitting data into flash memories, flash memory storage system thereof, and data transfer method thereof | |
KR101560469B1 (ko) | 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들 | |
US11630578B2 (en) | Electronic system with storage management mechanism and method of operation thereof | |
CN105683897B (zh) | 具有陈旧数据机制的数据贮存系统及其操作方法 | |
US20110055457A1 (en) | Method for giving program commands to flash memory, and controller and storage system using the same | |
TWI472920B (zh) | A system and method for improving the read and write speed of a hybrid storage unit | |
CN103282887A (zh) | 用于进行后台操作的控制器和方法 | |
CN102096647A (zh) | 多芯片存储器系统和相关的数据传送方法 | |
CN104281413A (zh) | 命令队列管理方法、存储器控制器及存储器储存装置 | |
CN111538460A (zh) | Raid功能实现方法及相关装置 | |
CN109992202A (zh) | 数据存储设备、其操作方法以及包括其的数据处理系统 | |
CN105930186A (zh) | 多cpu的软件加载方法及基于多cpu的软件加载装置 | |
CN111435291A (zh) | 用于擦除非易失性存储器块中编程的数据的装置和方法 | |
CN104126203A (zh) | 使用平面之间的片上页面交换的元块尺寸缩小 | |
CN109992201A (zh) | 数据存储设备及其操作方法 | |
CN109656469A (zh) | 用于控制一个或多个存储器装置的控制器及其操作方法 | |
CN109407966A (zh) | 数据存储装置及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150513 Termination date: 20211129 |