CN109558266B - 主动错误更正失败处理方法 - Google Patents

主动错误更正失败处理方法 Download PDF

Info

Publication number
CN109558266B
CN109558266B CN201810668594.1A CN201810668594A CN109558266B CN 109558266 B CN109558266 B CN 109558266B CN 201810668594 A CN201810668594 A CN 201810668594A CN 109558266 B CN109558266 B CN 109558266B
Authority
CN
China
Prior art keywords
data
command
solid state
open channel
queue
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
CN201810668594.1A
Other languages
English (en)
Other versions
CN109558266A (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 TW107109044A external-priority patent/TWI670595B/zh
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Publication of CN109558266A publication Critical patent/CN109558266A/zh
Application granted granted Critical
Publication of CN109558266B publication Critical patent/CN109558266B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (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)内容,让主装置可逐字节(Bytes)或字组(Words)存取数据。
开放通道固态硬盘(Open-Channel Solid State Disk)并不在装置端实施闪存存储器翻译层(FTL,Flash Translation Layer),反而将实体固态硬盘转交给主装置管理。不同于传统的固态硬盘,开放通道固态硬盘让主装置知道固态硬盘内部的并行架构,并允许主装置进行管理。开放通道固态硬盘中具有编码器,用以依据主装置欲写入的数据产生错误修正码,并一并将数据及错误修正码写入存储单元。此外,开放通道固态硬盘中另有错误修正电路,在不需要主装置参与的情况下,使用错误修正码修正存在于读取数据的错误。然而,随着存储器单元的存取次数增加,存储数据的错误比特数目会上升。由于主装置不知道读取数据的错误率趋势,无法指示开放通道固态硬盘执行数据迁移操作,用以将数据迁移到较少使用的位置。
发明内容
有鉴于此,因为主装置不知道读取数据的实际错误率趋势,造成无法预先指示开放通道固态硬盘将实际错误率过高的数据迁移到较少使用的位置,实为有待解决的问题。
本发明提供一种主动错误更正失败处理方法的实施例,其包含:从完成队列取得完成元件;判断该完成元件的执行回复表是否包括不安全值,如果是则重新分配实体地址给该不安全值所对应的使用者数据;以及输出数据写入命令至递交队列以将该使用者数据写入至重新分配后的该实体地址。
本发明还提供一种主动错误更正失败处理方法的实施例,其包含:接收参数设定命令;依据该参数设定命令而设定错误比特阀值;接收数据读取命令;依据该数据读取命令至来源地址读取使用者数据,如果该使用者数据的错误比特数大于或等于该错误比特阀值时,将执行回复表中对应至该使用者数据的比特设定成不安全值;以及将包括该执行回复表的完成元件写入至完成队列。
上述实施例的优点之一是降低开放通道固态硬盘发生数据读取错误的可能性或频率,从而避免主装置因发生数据读取错误而需要耗费大量时间及运算资源进行进阶数据修正机制。
本发明的其他优点将配合以下的说明和附图进行更详细的描述。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的闪存存储器的系统架构示意图。
图2为依据本发明实施例的存取接口与存储单元的方框图。
图3为依据本发明实施例的一个存取子接口与多个存储子单元的连接示意图。
图4为存储单元的示意图。
图5为命令队列示意图。
图6为管理命令或数据存取命令的执行步骤的流程图。
图7为依据本发明实施例的闪存存储器的装置参数取得及设定方法流程图。
图8为依据本发明实施例的主动错误更正失败处理方法流程图。
图9为完成元件的数据格式图。
图10为本发明一实施例的主动错误更正失败处理装置的功能模块示意图。
【附图标记列表】
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 完成队列
S611-S636 方法步骤
710 装置辨认阶段
730 参数设定阶段
S711-S735 方法步骤
S811-S827 方法步骤
900 完成元件
910 执行回复表
920 状态字段
930 命令标识码
1110 装置辨认命令产生模块
1130 参数设定命令产生模块
1150 数据读取命令产生及读取错误处理模块
1310 装置辨认命令处理模块
1330 参数设定命令处理模块
1350 数据读取命令处理模块
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的元件或方法流程。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、操作处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、操作处理、元件、组件,或以上的任意组合。
在权利要求中使用如“第一”、“第二”、“第三”等词用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。
图1为本发明一实施例的开放通道固态硬盘系统100架构示意图。开放通道固态硬盘系统100架构包含主装置110、数据缓冲器(Data Buffer)120及开放通道固态硬盘(SSD,Solid State Disk)130。主装置110运行时可依据其需求而建立队列(Queue)、实体存储对照表(Storage Mapping Table,又称为L2PLogical-to-Physical表)及使用记录。此系统架构可实施在个人电脑、笔记本电脑(Laptop PC)、平板电脑、移动电话、数字相机、数字摄影机等电子产品上。数据缓冲器120、队列、实体存储对照表及使用记录可实施在随机存取存储器(RAM,Random Access Memory)中的特定区域。主装置110通过开放通道固态硬盘快速非易失存储器(NVMe,Non-Volatile Memory express)接口与开放通道固态硬盘130通信。主装置110可使用多种方式实施,例如使用通用硬件(例如,单一处理器、具有平行处理能力的多处理器、图形处理器或其他具有运算能力的处理器),并且在执行特定指令(Instructions)、宏码(Macrocode)、微码(Microcode)以及/或软件模块(modules)时,提供之后描述的功能。主装置110可包含运算逻辑单元(ALU,Arithmetic and Logic Unit)以及位移器(Bit Shifter)。算数逻辑单元负责执行布林运算(如AND、OR、NOT、NAND、NOR、XOR、XNOR等)或数学运算(如加、减、乘、除等),而位移器负责位移运算及比特旋转。开放通道SSDNVMe规格,例如:版本1.2,公开于2016年四月,支援数个输出输入通道(I/O Channels),每一输出输入通道连接至一个逻辑单元编号(LUNs,Logical Unit Numbers),用以分别对应到存储单元139中的多个存储子单元。在开放通道SSD NVMe规格中,主装置110整合原来实施在装置端中的闪存存储器翻译层(FTL,Flash Translation Layer),用以优化负载。传统的闪存存储器翻译层将主装置端或档案系统认得的逻辑区块地址(LBAs,Logical BlockAddresses)映射至存储单元139的实体地址(也称为逻辑至实体映射)。在开放通道SSDNVMe规格中,主装置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可分开存在或整合于同一芯片中。
闪存控制器135包含错误更正编码器(ECC,Error Correction Code Encoder)及错误更正译码器(ECC Decoder)。在写入操作中,错误更正编码器使用编码算法依据主装置110传来的数据产生错误更正码,并且将主装置的数据及错误更正码(可统称为使用者数据)写入存储单元139。在读取操作中,错误更正译码器使用相应的译码算法检查从存储单元139读出的使用者数据的正确性,并尝试修正其中的错误比特。如果使用者数据正确,闪存控制器135直接丢弃错误更正码,并通过处理单元133回复主装置110原始读出的数据。如果使用者数据包含错误比特但已经被错误更正译码器修正,闪存控制器135丢弃修正后的错误更正码,并通过处理单元133回复主装置110修正后的数据。如果错误比特太多而无法回复,闪存控制器135通过处理单元133回复数据读取错误的信息给主装置110。错误更正码可为低密度奇偶校验码(LDPC,Low-Density Parity Check Code)、BCH码(Bose–Chaudhuri–Hocquenghem Code)等。一般而言,低密度奇偶较验码可提供比BCH码较佳的错误比特更正能力,例如:每1K字节(Bytes)的使用者数据,BCH码可提供最多76个错误比特的修正能力,而低密度奇偶较验码可提供最多120个错误比特的修正能力。
在系统开机(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包含多个数据平面(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),每个页面包含一个以上区段(Sector),例如,4个,其中,n可为767或1023等。每个页面包含多个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,CenterSignificant Bit Page)及页面P#2(可称为最高比特页面,LSB Page)。当每一个NAND存储器单元为四层式单元而可记录16个状态时,除了MSB、CSB以及LSB页面之外,还包括TSB(可称为顶部比特,TSB,Top Significant Bit)页面。
存储单元139运行时,页面为数据写入或编程(program)的最小单位,大小例如为4KB,此时实体地址可表示为页面编号;如果页面包含多个区段,大小例如为16KB,每一区段可存储4KB的数据时,则区段可为数据管理的最小单位,此时实体地址可表示为页面的区段编号(Sector Number)或区段在页面的偏移量(Offset)。另外,一般而言,区块为数据抹除的最小单位。
实体区块可依据其使用状态而区分成主动区块、数据区块以及闲置区块。主动区块表示正在进行数据写入的实体区块,即尚未写入区块结束(End of Block)信息的实体区块。主动区块的选取可依据一些参数,例如:最低的抹写次数或最久的使用者数据写入时间。当主动区块已写满使用者数据或不再写入使用者数据时,区块结束信息将被写入主动区块中,并将主动区块视为数据区块。闲置区块可被选取而成为主动区块,闲置区块不存储任何有效的使用者数据。通常闲置区块被选取后,需执行抹除操作方可成为主动区块。
在一些实施例中,主装置110传送给开放通道固态硬盘130的实体地址可包含输出输入通道编号、逻辑单元编号、数据平面编号、实体区块编号、实体页面编号及区段编号等信息,用以指出欲读取或写入位于特定输出输入通道中的特定数据平面中的特定实体区块中的特定实体页面中的特定区段的使用者数据。在一些实施例中,有时会以列(Column)编号取代区段编号。在另一些实施例中,主装置110传送给开放通道固态硬盘130的实体地址可包含逻辑单元编号、数据平面编号及实体区块编号等信息,用以指出欲抹除特定输出输入通道中的特定数据平面中的特定数据区块。
图5为命令队列示意图。队列115可包含递交队列(Submission Queue)510及完成队列(Completion Queue)530,分别用以暂存主装置指令以及完成元件(CompletionElement)。递交队列510及完成队列530中的每一者包含多笔项目(Entry)的集合。递交队列510中的每一笔项目存储一个主装置命令,例如:管理命令(Administration Command),例如,装置辨认(Device Identification)、参数设定(Parameter Setting)命令、输出输入命令(I/O Command),例如,抹除、读取、写入命令等,亦可称为数据存取命令。
完成队列530中的每一笔项目(Entry)存储关联至一个管理命令或数据存取命令的完成元件(Completion Element),此完成元件的功能类似确认信息。集合中的项目依序存放。集合的操作基本原则是由结束位置(或称为队列尾,Tail)新增项目(可称为入列),执行位于开始位置(或称为队列头,Head)的项目(可称为出列),其中,入列或出列一次的项目总数可大于等于一。第一个新增至递交队列510或完成队列530的命令或信息,之后,也将会是第一个被替代或更新的。主装置110可写入管理或数据存取命令至递交队列510,并且处理单元133从递交队列510读取(或称为提取Fetch)最早到达的管理或数据存取命令并执行。于管理或数据存取命令执行完成后,处理单元133写入完成元件至完成队列530,主装置110可读取或提取完成元件而判断管理或数据存取命令的执行结果。
图6为管理命令或数据存取命令的执行步骤的流程图。主装置110产生并写入管理命令或数据存取命令至递交队列510(步骤S611)。数据存取命令包含实例地址的信息,实体地址包括来源地址或目的地址,并且,来源地址或目的地址指向存储单元139或数据缓冲器120的实体地址,例如:特定的区块、页面或区段地址,而非逻辑区块地址。接着,主装置110发出递交门铃(Submission Doorbell)给处理单元133(步骤S612),用以通知处理单元133关于递交队列510中已写入一个管理命令或数据存取命令的信息,并更新递交队列510的队列尾的值。在此须注意的是,步骤S611及步骤S612又可称为主装置110发出管理命令或数据存取命令给开放通道固态硬盘130。处理单元133接收到递交门铃后(步骤S631),从递交队列510读取位于队列头的管理命令或数据存取命令(步骤S632),并且依据管理命令或数据存取命令指示闪存控制器135,用以完成指定的操作(例如,装置辨认、参数设定、抹除、数据读取、写入等)(步骤S633)。
在此须注意的是,步骤S631及步骤S632又可称为开放通道固态硬盘130接收从主装置110发出的管理命令或数据存取命令。当指定的操作完成后,处理单元133产生并写入完成元件至完成队列530(步骤S6340)用以通知主装置110相应于特定管理命令或数据存取命令的操作的执行状态信息,并且发出中断给主装置(步骤S635)。接收中断后(步骤S613),主装置110从完成队列530读取位于队列头的完成元件(步骤S613),接着,发出完成门铃给处理单元133(步骤S614)。接收完成门铃后(S636),处理单元133更新完成队列530的队列头的值。在此须注意的是,步骤S634及步骤S635又可统称为开放通道固态硬盘130回复主装置110执行管理命令或数据存取命令的结果。在此须注意的是,步骤S613及步骤S614又可统称为主装置110从开放通道固态硬盘130接收执行管理命令或数据存取命令的结果。
在步骤S612及S614,主装置110可设定相应寄存器(Registers)来向处理单元133发出递交门铃及结束门铃。
一笔数据存取命令可处理多笔使用者数据,例如:64笔,则完成元件中可包括64个比特长度的执行回复表,在此执行回复表中,每个比特分别表示一笔使用者数据的执行结果,例如:“0”表示成功,“1”表示失败。数据存取命令包含操作码字段,用以表示数据存取命令的类型(例如,抹除、读取、写入等)。完成元件包含状态字段,用以存储对应的数据存取命令的执行状态(例如,成功、失败等)。另外,处理单元133可乱序或依优先权的顺序来执行数据存取命令,因此,数据存取命令及完成元件都包含命令标识码(Command Identifier),用以让主装置110及处理单元133将每一个完成元件关联至特定数据存取命令。
举例来说,一个闲置区块在写入前需要被抹除以成为主动区块,主装置110可写入抹除命令至递交队列510(步骤S611)用以指示开放通道固态硬盘130(详细来说为处理单元133)针对特定输出输入通道中的特定闲置区块执行抹除操作。处理单元133因应抹除命令而指示闪存控制器135通过驱动存取接口137以完成在存储单元139中指定的抹除操作(步骤S633)。当抹除操作完成,处理单元133写入完成元件至完成队列530(步骤S634)用以通知主装置110关于相应抹除操作已经完成的信息。
又举例来说,主装置110可写入数据读取命令至递交队列510(步骤S611)用以指示开放通道固态硬盘130从特定输出输入通道中的特定数据平面中的特定实体区块中的特定实体页面(的特定区段)读取使用者数据。处理单元133因应数据读取命令而指示闪存控制器135通过驱动存取接口137从存储单元139中指定的来源地址读取使用者数据,并且将使用者数据存储至数据读取命令所指定的数据缓冲器120(步骤S633)。当读取操作完成,处理单元133写入完成元件至完成队列530(步骤S634)用以通知主装置110关于相应数据读取操作已经完成的信息。
又举例来说,主装置110可存储欲写入的使用者数据于数据缓冲器120,并存储写入命令至递交队列510(步骤S611)用以指示开放通道固态硬盘130写入数据缓冲器120的使用者数据至特定主动区块中的特定实体页面(的特定区段),其中,写入命令包含特定实体页面(的特定区段)的目的地址(实体地址)以及使用者数据的来源地址(实体地址)的信息。处理单元133因应写入命令而从数据缓冲器120的来源地址读取使用者数据,并指示闪存控制器135通过驱动存取接口137将使用者数据编程至存储单元139中写入命令所指定的目的地址(步骤S633)。当写入操作完成,处理单元133写入完成元件至完成队列530(步骤S634)用以通知主装置110关于相应写入操作已经完成的信息。
虽然图5只显示两个队列510及530,但所属技术领域的技术人员可将递交队列510分为管理递交队列(Administration Submission Queue)及输出输入递交队列(I/OSubmission Queue),分别用以暂存来自主装置110的管理命令及数据存取命令,并且将完成队列530分为管理完成队列(Administration Completion Queue)及输出输入完成队列(I/O Completion Queue),用以分别存储关联至管理命令及数据存取命令的完成元件。
随着区块的抹除次数的增加,区块的数据保存(Data Retention)能力会逐渐变弱,这将造成存储于实体页面的使用者数据可能包含更多的错误比特。由于错误更正译码器会自动检查并修正使用者数据中的错误比特,所以,主装置110无法知道一个实体页面的错误比特率增加的程度,故无法采取适当的错误预防机制。最后,当错误更正译码器无法修正使用者数据中的错误比特时,开放通道固态硬盘130回传数据读取错误信息到主装置110,主装置110只能启动进阶数据修正机制,例如,使用独立硬盘冗余数组(RAID,Redundant Array of Independent Disks)以修正使用者数据。然而,独立硬盘冗余数组回复的执行会耗费大量主装置110及开放通道固态硬盘130的运算资源及时间,以及主装置110与开放通道固态硬盘130间的数据频宽。为了避免此缺陷,本发明实施例提出一种错误预防机制以降低发生数据读取错误的可能性或频率。
大致上而言,本发明错误预防机制先取得开放通道固态硬盘130的操作参数的目前状态,接着依据目前状态设定开放通道固态硬盘130的操作参数,其中,包括错误比特阀值,并配合主动错误更正失败处理(Proactive ECC failure handling)方法以达到本发明的目的。
图7为依据本发明实施例的闪存存储器的装置参数取得及设定方法流程图。整个流程包含装置辨认阶段(Device Identification Phase)710及参数设定阶段(ParameterSetting Phase)730。装置辨认阶段710包括步骤S711-S715。主装置110写入装置辨认(Device Identification)命令至递交队列510(步骤S711)。装置辨认命令用以请求开放通道固态硬盘130(详细来说为处理单元133)提供操作参数,包括;区块数目、坏块数目、延迟时间、输出输入通道总数、是否使能错误更正功能、错误更正功能的最大值(单位错误比特数/数据长度)等,还可包括错误比特阀值(单位错误比特数/数据长度)。开放通道固态硬盘130从递交队列510接收装置辨认命令(步骤S713)。在收到装置辨认命令后,开放通道固态硬盘130存储操作参数至装置辨认命令所指定的存储器地址,之后,写入装置辨认命令所对应的完成元件至完成队列530(步骤S715)。
参数设定阶段(Parameter Setting Phase)730包括步骤S731-S735。主装置110可对开放通道固态硬盘130所回传的操作参数进行设定,例如:使能错误更正功能,并设定错误比特阀值的值,例如:100,其中,错误比特阀值小于被使能的错误更正功能的最大值,例如:120。之后,主装置110再将上述设定值存储至参数设定命令,接着主装置110写入参数设定命令至递交队列510(步骤S731)。开放通道固态硬盘130从递交队列510接收到参数设定命令(步骤S733)。当取得参数设定命令后,开放通道固态硬盘130依据参数设定命令的设定值进行操作参数的设定,例如:使能错误更正功能且设定错误比特阀值为100。当参数设定命令的设定值有效且依此完成操作参数的设定后,开放通道固态硬盘130写入参数设定命令所对应的完成元件至完成队列530(步骤S735)。
当错误比特阀值完成设定后,主装置110即可启动本发明主动错误更正失败处理方法。第8图是依据本发明实施例由主装置110执行的主动错误更正失败处理方法的流程图。主装置110输出数据读取命令至开放通道固态硬盘130(步骤S811),其中,输出数据读取命令的方法可参考步骤S611-S612。
接着,开放通道固态硬盘130依据数据读取命令从指定的来源地址(实体地址)读取使用者数据(步骤S813),步骤S813的细节可参考步骤S631-S633。在取得使用者数据后,开放通道固态硬盘130的错误更正译码器会自动检查并修正读取的使用者数据的错误比特,并计算错误比特的总数。
接着,开放通道固态硬盘130的闪存控制器135判断读取的使用者数据的错误比特的总数是否等于或大于错误比特阀值(步骤S815)。若是(步骤S815中“是”的路径),将错误比特的总数等于或大于错误比特阀值的使用者数据在执行回复表中所对应的比特设定成“1”(步骤S817)。假设一笔数据读取命令要求读取64笔使用者数据,执行回复表中的每个比特可分别表示一笔使用者数据的错误比特的总数是否等于或大于错误比特阀值,如果否则值为“0”,即安全值,表示使用者数据仍被安全地存储,如果是则值为“1”,即不安全值,表示使用者数据的存储可能存在着风险。
接着,开放通道固态硬盘130将使用者数据存储至数据读取命令所指定的目的地址(步骤S819),其中,目的地址较佳为数据缓冲器120的实体地址。接着,开放通道固态硬盘130将完成元件写入至完成队列530(步骤S821)。
接着,主装置110自完成队列530取得完成元件的执行回复表(步骤S823),接着,主装置110判断执行回复表中是否有“1”(步骤S825),如果否则结束本发明的执行。
接着,主装置110重新分配实体地址给执行回复表中“1”所对应的使用者数据(步骤S827),其中,重新分配的实体地址置于主动区块中。
接着,主装置110输出数据写入命令至开放信道固态硬盘130以将执行回复表中“1”所对应的使用者数据写入至重新分配后的实例地址(步骤S829),其中,输出数据写入命令的方法可参考步骤S611~S612。
图9为完成元件的数据格式图。完成元件900可为16字节信息。完成元件900的第3双字组的第0至1字节记录命令标识码930,其内容应与主装置数据读取命令的命令标识码一致,用以让此完成元件900关联至此主装置110所发出的数据读取命令。完成元件900的第0至1双字组存储执行回复表910,共计有64比特,每一比特可记录一笔使用者数据在步骤S817的执行结果,即一笔使用者数据的错误比特的总数是否等于或大于错误比特阀值。完成元件1100的第3双字组的第17至31比特记录状态字段(Word)920,状态字段920可表示主装置110所发出的数据读取命令是否已成功地执行。
错误比特阀值的设定值可使用以下公式:
Tr=MAXi xα;
Tr代表阀值,MAXi代表特定错误更正能力的最大值(单位为错误比特数/数据长度),例如120b/1KB,α代表介于0至1之间的系数,可为0.6≦α≦1。例如,α的初始值设为0.8,则错误比特阀值的初始设定值为96。当读取64笔使用者数据,完成元件的状态字段显示成功,且完成元件的执行回复表中全部为“0”。
随着抹除次数的增加及存储单元139的老化,开放信道固态硬盘130所回传的警告信息的频率也将随之增加。因此,主装置110可适当地增加α的值,例如,将α的值变更为0.9,即错误比特阀值变更为108,以避免不必要的数据迁移操作。例如:读取64笔使用者数据时,完成元件的状态字段显示成功,但是完成元件的执行回复表中有32个“1”,即有32笔使用者数据的错误比特数的值超过96,此时,主装置110可将错误比特阀值变更为108并存储至参数设定命令,接着发出参数设定命令至开放通道固态硬盘130,使开放通道固态硬盘130将变更错误比特阀值变更为108,即有效地降低执行回复表中有“1”的数目。之后,主装置110仅需对“1”的使用者数据重新分配一个实体地址。由于重新分配的实体地址位于主动区块中,而主动区块通常具有较低的抹除次数,即具有较佳的数据保存,故能有效地克服现有技术的缺失。
在开放通道固态硬盘系统(又可称为主动错误更正失败处理装置)100,使用主装置110及处理单元130执行的方法步骤,可用一个或多个功能模块组成的计算机程序产品来实现。这些功能模块存储于非易失性存储装置(未显示),并且可被主装置110及处理单元130于特定时间点载入并执行。图10为本发明一实施例的主动错误更正失败处理装置的功能模块示意图。在装置辨认阶段710,主装置110执行装置辨认命令产生模块1110,用以完成步骤S711的操作。相应地,处理单元133执行装置辨认命令处理模块1310,用以完成步骤S713及S715的操作。在参数设定阶段730,主装置110执行参数设定命令产生模块1130,用以完成步骤S731的操作。相应地,处理单元133执行参数设定命令处理模块1330,用以完成步骤S733及S735的操作。除此以外,主装置110执行数据读取命令产生及读取错误处理模块1150,用以完成步骤S811及S823-S829的操作。相应地,处理单元133执行数据读取命令处理模块1350,用以完成步骤S813-S821的操作。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限制本发明。相反地,此发明涵盖了所属技术领域中的技术人员显而易见的修改与相似设置。所以,本申请的保护范围当以权利要求所界定者的范围为准。

Claims (16)

1.一种主动错误更正失败处理方法,由一主装置(110)执行,其特征在于,包含:
从一完成队列(530)取得相应于一数据读取命令的一完成元件,其中该主装置(110)先前发出该数据读取命令给一开放通道固态硬盘(130)以从一来源地址读取一使用者数据,该开放通道固态硬盘(130)在执行该数据读取命令之后写入该完成元件至该完成队列(530),以及该完成元件包含该数据读取命令的一执行结果;
判断该完成元件的一执行回覆表中是否包括一不安全值,其中,当该开放通道固态硬盘(130)从该来源地址读取该使用者数据时发现错误比特的总数等于或大于一阈值 时,产生该不安全值;
如果是则重新分配一实体位址给该不安全值所对应的该使用者数据;以及
输出一数据写入命令至一递交队列(510)以将该使用者数据写入至重新分配后的该实体位址,
其中,该主装置(110)建立该递交队列(510)和该完成队列(530)。
2.如权利要求1所述的主动错误更正失败处理方法,其特征在于,该完成队列(530)以及该递交队列(510)皆位于该主装置(110)。
3.如权利要求2所述的主动错误更正失败处理方法,其特征在于,该开放通道固态硬盘(130)自该递交队列(510)取得该数据写入命令,该开放通道固态硬盘(130)将该完成元件写入至该完成队列(530)。
4.如权利要求3所述的主动错误更正失败处理方法,其特征在于,该实体位址位于该开放通道固态硬盘(130)。
5.如权利要求1所述的主动错误更正失败处理方法,其特征在于,包含:
输出一数据读取命令至该开放通道固态硬盘(130)以读取该使用者数据。
6.如权利要求1所述的主动错误更正失败处理方法,其特征在于,该方法更包括:
输出一参数设定命令至该开放通道固态硬盘(130)以设定一错误比特阈值 。
7.如权利要求6所述的主动错误更正失败处理方法,其特征在于,该错误比特阈值 小于该开放通道固态硬盘(130)的错误更正功能的一最大能力值。
8.如权利要求1所述的主动错误更正失败处理方法,其特征在于,包含:
输出一装置辨认命令至该开放通道固态硬盘(130)以取得该开放通道固态硬盘(130)的至少一操作参数。
9.一种主动错误更正失败处理方法,由一开放通道固态硬盘(130)执行,其特征在于,包含:
从一主装置(110)接收一参数设定命令;
依据该参数设定命令而设定一错误比特阈值 ;
从一递交队列(510)接收一数据读取命令;
依据该数据读取命令至一来源位址读取一使用者数据,如果该使用者数据的一错误比特数大于或等于该错误比特阈值 时,将相应于该数据读取命令的一执行回覆 表中对应至该使用者数据的一比特设定成一不安全值;以及
将包括该执行回覆表的一完成元件写入至一完成队列(530),使得该主装置(110)能够从该完成队列(530)取得相应于该数据读取命令的该完成元件以知道该数据读取命令的执行结果。
10.如权利要求9所述的主动错误更正失败处理方法,其特征在于,该方法更包括:
当执行该数据读取命令时,如果读取的该使用者数据的该错误比特数小于该错误比特阈值 时,将该执行回覆 表中对应至该使用者数据的该比特设定成一安全值。
11.如权利要求9所述的主动错误更正失败处理方法,其特征在于,该方法更包括:
依据该参数设定命令而致能一错误更正功能。
12.如权利要求9所述的主动错误更正失败处理方法,其特征在于,其中,该参数设定命令以及该数据读取命令皆由该开放通道固态硬盘(130)所接收。
13.如权利要求12所述的主动错误更正失败处理方法,其特征在于,该错误比特阈值小于该开放通道固态硬盘(130)的一错误更正功能的一最大能力值。
14.如权利要求12所述的主动错误更正失败处理方法,其特征在于,该完成队列(530)以及该递交队列(510)皆位于该主装置(110)。
15.如权利要求9所述的主动错误更正失败处理方法,其特征在于,该参数设定命令存储于一递交队列(510)。
16.如权利要求9所述的主动错误更正失败处理方法,其特征在于,该方法包括:
将该使用者数据存储至该数据读取命令所指定的一目的位址。
CN201810668594.1A 2017-09-26 2018-06-26 主动错误更正失败处理方法 Active CN109558266B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762563115P 2017-09-26 2017-09-26
US62/563,115 2017-09-26
TW107109044 2018-03-16
TW107109044A TWI670595B (zh) 2017-09-26 2018-03-16 主動錯誤更正失敗處理方法

Publications (2)

Publication Number Publication Date
CN109558266A CN109558266A (zh) 2019-04-02
CN109558266B true CN109558266B (zh) 2022-06-14

Family

ID=65809014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810668594.1A Active CN109558266B (zh) 2017-09-26 2018-06-26 主动错误更正失败处理方法

Country Status (2)

Country Link
US (1) US11016841B2 (zh)
CN (1) CN109558266B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI696180B (zh) * 2019-05-23 2020-06-11 建興儲存科技股份有限公司 使用預測方程式的固態儲存裝置
KR20210041159A (ko) 2019-10-04 2021-04-15 삼성전자주식회사 정정 가능한 독출 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법
US11599481B2 (en) * 2019-12-12 2023-03-07 Western Digital Technologies, Inc. Error recovery from submission queue fetching errors
CN112732176B (zh) * 2020-12-28 2022-10-04 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 基于fpga的ssd访问方法及装置、存储系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101379563A (zh) * 2006-02-08 2009-03-04 三星电子株式会社 纠错块、产生纠错块的设备和方法以及纠错方法
CN102014150A (zh) * 2010-09-29 2011-04-13 厦门市美亚柏科信息股份有限公司 一种基于udp分布式小文件存储系统及其数据处理方法
CN103984506A (zh) * 2014-04-30 2014-08-13 深圳市江波龙电子有限公司 闪存存储设备数据写的方法和系统
CN107066390A (zh) * 2017-04-24 2017-08-18 许继集团有限公司 一种动态内存泄漏检测方法及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI382422B (zh) 2008-07-11 2013-01-11 Genesys Logic Inc 根據錯誤更正碼更新快閃記憶體之資料頁面之儲存裝置與方法
TWI479359B (zh) 2013-08-01 2015-04-01 Phison Electronics Corp 指令執行方法、記憶體控制器與記憶體儲存裝置
TWI467578B (zh) 2014-01-09 2015-01-01 Phison Electronics Corp 錯誤處理方法、記憶體儲存裝置與記憶體控制電路單元
US10241715B2 (en) 2014-01-31 2019-03-26 Hewlett Packard Enterprise Development Lp Rendering data invalid in a memory array
US9417945B2 (en) * 2014-03-05 2016-08-16 International Business Machines Corporation Error checking and correction for NAND flash devices
US9582361B2 (en) * 2014-05-20 2017-02-28 Seagate Technology Llc Fixed point conversion of LLR values based on correlation
TWI585770B (zh) 2015-08-11 2017-06-01 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US9710329B2 (en) * 2015-09-30 2017-07-18 Sandisk Technologies Llc Error correction based on historical bit error data
TWI601059B (zh) 2015-11-19 2017-10-01 慧榮科技股份有限公司 資料儲存裝置與資料儲存方法
US20170177349A1 (en) 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations
TWI591640B (zh) 2016-01-08 2017-07-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
US10331600B1 (en) * 2016-03-31 2019-06-25 EMC IP Holding Company LLC Virtual I/O queuing
US10180875B2 (en) * 2016-07-08 2019-01-15 Toshiba Memory Corporation Pool-level solid state drive error correction

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101379563A (zh) * 2006-02-08 2009-03-04 三星电子株式会社 纠错块、产生纠错块的设备和方法以及纠错方法
CN102014150A (zh) * 2010-09-29 2011-04-13 厦门市美亚柏科信息股份有限公司 一种基于udp分布式小文件存储系统及其数据处理方法
CN103984506A (zh) * 2014-04-30 2014-08-13 深圳市江波龙电子有限公司 闪存存储设备数据写的方法和系统
CN107066390A (zh) * 2017-04-24 2017-08-18 许继集团有限公司 一种动态内存泄漏检测方法及系统

Also Published As

Publication number Publication date
CN109558266A (zh) 2019-04-02
US11016841B2 (en) 2021-05-25
US20190095274A1 (en) 2019-03-28

Similar Documents

Publication Publication Date Title
US10782910B2 (en) Methods for internal data movements of a flash memory device and apparatuses using the same
US11163444B2 (en) Configure storage class memory command
CN109558266B (zh) 主动错误更正失败处理方法
US10013256B2 (en) Data returned responsive to executing a start subchannel instruction
US10353587B2 (en) Data storage device and method of processing data thereof
US10338846B2 (en) Method for reducing read buffer size requirements in NVMe based solid state drives
US9122573B2 (en) Using extended asynchronous data mover indirect data address words
TWI601060B (zh) 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元
US9411737B2 (en) Clearing blocks of storage class memory
EP2601580B1 (en) Deconfigure storage class memory command
US11675698B2 (en) Apparatus and method and computer program product for handling flash physical-resource sets
TWI670595B (zh) 主動錯誤更正失敗處理方法
TWI726475B (zh) 快閃記憶體的資料內部搬移方法以及使用該方法的裝置
US20200097216A1 (en) Data storage device equipped to reduce page faults in host device
US10901624B1 (en) Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
TWI648634B (zh) 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
US11537328B2 (en) Method and apparatus for executing host commands
US11775389B2 (en) Deferred error-correction parity calculations
US20220100425A1 (en) Storage device, operating method of storage device, and operating method of computing device including storage device
US20170302299A1 (en) Data processing method, memory storage device and memory control circuit unit
US9971549B2 (en) Method of operating a memory device
CN106874223B (zh) 数据传输方法、存储器存储装置及存储器控制电路单元
US10831684B1 (en) Kernal driver extension system and method
US20180196602A1 (en) Data storage device and data processing system including the same
US20150212759A1 (en) Storage device with multiple processing units and data processing method

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