CN114521253A - 用于固态驱动器中的输入输出确定性的双层确定性进程间通信调度器 - Google Patents

用于固态驱动器中的输入输出确定性的双层确定性进程间通信调度器 Download PDF

Info

Publication number
CN114521253A
CN114521253A CN202080065859.4A CN202080065859A CN114521253A CN 114521253 A CN114521253 A CN 114521253A CN 202080065859 A CN202080065859 A CN 202080065859A CN 114521253 A CN114521253 A CN 114521253A
Authority
CN
China
Prior art keywords
queue
ipc
nvm
scheduler
pipeline
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
Application number
CN202080065859.4A
Other languages
English (en)
Other versions
CN114521253B (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.)
Kioxia Corp
Original Assignee
Kioxia Corp
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
Application filed by Kioxia Corp filed Critical Kioxia Corp
Publication of CN114521253A publication Critical patent/CN114521253A/zh
Application granted granted Critical
Publication of CN114521253B publication Critical patent/CN114521253B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

提供用于针对固态驱动器(SSD)系统中的输入输出确定性(IOD)集合(也称为NVM集合)的双层或双相确定性进程间通信(IPC)调度的系统和方法。在各种实施例中,一种SSD控制器包含IPC调度器,包括第一层NVM集合调度器和第二层公平共享调度器,其被配置成接收NVM集合的信息消息,可操作以在IPC队列中对所述信息消息区分优先级,且生成待针对I/O操作处理的IPC管线。

Description

用于固态驱动器中的输入输出确定性的双层确定性进程间通 信调度器
相关申请的交叉引用
本申请要求2019年7月26日提交的第16/523,948号美国申请的优先权,所述美国申请的内容全文以引用的方式并入本文中。
技术领域
本发明实施例大体上涉及固态驱动器(SSD)的领域,更确切地说涉及用于调度进程间通信以实现低时延操作的系统和方法。
背景技术
固态驱动器(SSD)包含若干非易失性存储器装置,例如(但不限于)NAND快闪存储器装置,其由控制器控制使得NAND快闪存储器装置表现为类似于单个驱动器。NAND快闪存储器装置经历例如读取和写入存储在NAND快闪存储器装置中的数据等主机发起的I/O操作,所述数据可来源于一或多个主机上运行的多个不同应用。NAND快闪存储器装置可在任一时间仅处理单个I/O操作,且将多个NAND快闪装置连接到存储器控制器的存储器总线/信道可在任一时间仅传递用于单个存储器装置的数据。传统地,尝试从SSD读取数据或将数据写入到SSD的主机应用因此通常归因于必须与其它应用共享对于存储器装置的存取而经历不同水平的时延。此外,因为不同应用的I/O活动通常不同步或相关,所以单个应用所经历的时延是不可预测的。在其中主机驻留在具有运行存储和检索数据的多个不同应用的大量SSD和主机的数据中心内的实例中,当请求SSD执行针对应用的I/O操作时,归因于其它主机和应用的同时且未连接的活动,所述主机无法控制SSD的不可预测的时延。在其中主机正在SSD上运行时间敏感应用(例如,实时数据搜集、实时数据分布等等)的情境中,主机体验可能进一步劣化。
为了限制对另一应用所经历的I/O时延具有不利影响的一个应用的效应,用于非易失性存储器存储的NVM ExpressTM v1.4基础协议规范引入了“非易失性(NVM)集合”的概念,其中将非易失性存储装置划分成可单独寻址区。这些区是存储器的逻辑上和/或物理上分离的区域,这使单独的主机应用能够专门地存取存储器的单独区域,而不必彼此共享存储器资源。然而,仍需要SSD中的NAND快闪存储器控制器能够针对主机应用以确定性且可预测的I/O时延(也称为I/O确定性,IOD)处理从多个迥然不同的主机应用到多个NVM集合的I/O,并相对于SSD上的I/O操作改进主机应用的体验。
发明内容
提供用于针对SSD系统的双层或双相确定性进程间通信(IPC)调度器的系统和方法。在各种实施例中,一种SSD控制器包含IPC调度器,包括输入输出确定性(IOD)集合调度器(也称为NVM集合调度器)和公平共享调度器,其被配置成对多个NVM集合中的每一个的IPC消息区分优先级以形成待针对I/O操作处理的IPC管线。在第一相中,IPC调度器被配置成将多个NVM集合的每一NVM集合的IPC队列从最高优先级到最低优先级排序以形成每一NVM集合的经排序IPC队列。在第二相中,IPC调度器以循环方式从每一NVM集合的经排序IPC队列选择IPC消息以形成IPC管线,使得单个IPC消息是在单个轮次中从每一NVM集合选择的。如此选定的IPC消息可放置到待针对I/O操作处理的IPC管线中。如此形成的IPC管线减小I/O操作中的时延。
如上文所提及的IPC调度器或调度方案可确保资源在多个NVM集合之间的公平共享,同时管理与每一NVM集合相关联的IPC队列以为每一NVM集合提供确定性且低时延处理量。这有助于减少噪声邻近效应,使得与一个NVM集合相关联的I/O工作负载不会影响针对另一NVM集合的操作。
此IPC调度器可有助于以公平的方式管理SSD系统中的控制器、存储器和HW资源。在没有本发明实施例的解决方案的情况下,控制器将基于I/O工作负载在多个NVM集合之间不均匀地分布其资源,从而导致I/O时延。
附图说明
所属领域的一般技术人员在结合附图审阅了特定实施例的以下描述后,将容易理解本发明实施例的这些和其它方面和特征,附图中:
图1是示出根据一实例的SSD的结构的框图。
图2是示出根据一些实施方案使用IPC队列的控制器内的通信的框图。
图3是示出实例通用IPC调度器的框图。
图4是根据实例实施例包括双层IPC调度器的SSD控制器的框图。
图5是根据实例实施例由双层IPC调度器形成的经排序NVM集合和IPC管线的第一实例。
图6是示出根据实例实施例由双层IPC调度器形成的IPC管线的第二实例。
图7是根据一实施例使用双层IPC调度器形成图5的IPC管线的方法的流程图。
具体实施方式
现将参看图式详细地描述本发明实施例,图式提供为实施例的说明性实例以便使所属领域的技术人员能够实践他们清楚的实施例和替代方案。值得注意的是,下文的图式和实例无意将本发明实施例的范围限于单个实施例,相反地,借助于所描述或所说明的元件中的一些或全部的互换,其它实施例是可能的。此外,在本发明实施例的某些元件可使用已知组件部分或完全实施的情况下,将描述此类已知组件中仅对于理解本发明实施例来说必需的那些部分,且将省略对此类已知组件的其它部分的详细描述,以免使本发明实施例模糊不清。如所属领域的技术人员将明白,除非本文另有规定,否则描述为在软件中实施的实施例不应限于此,而是可包含在硬件或软件和硬件的组合中实施的实施例,且反之亦然。在本发明书中,除非本文另有明确陈述,否则展示单个组件的实施例不应被视为限制性的;相反地,本公开意图涵盖包含多个相同组件的其它实施例,且反之亦然。此外,申请人无意将说明书或权利要求书中的任何术语归于不常见或特殊的含义,除非明确这样陈述。此外,本发明实施例涵盖本文中作为说明提及的已知组件的当前和未来获知的等效物。
如早先所解释,当涉及到固态驱动器(SSD)架构和相关固件时,一些关键考虑因素为带宽和I/O时延(即,完成I/O操作所花费的时间量)。SSD通常包括若干非易失性存储器裸片,例如NAND快闪存储器,其布置成耦合到由信道控制器控制的信道的群组。
SSD系统中的控制器通常必须执行大量I/O操作(读取和写入)以及大量维护操作(例如垃圾收集、擦除无效数据和数据可靠性操作)。然而,维护操作可在任何时间在后台发生且与控制器内的资源以及利用主机发起的I/O操作对NAND快闪存储器的存取竞争,从而致使主机发起的I/O操作变得极其不确定,因为它们可能归因于维护操作的干扰而花费不确定的时间量来完成。在不存在维护操作的情况下,主机I/O可能/仍将归因于自干扰(例如,存取同一SSD的噪声邻近类型应用)而具有非确定性。同样,源自导向同一SSD的不同主机或应用的I/O操作可能对彼此造成干扰,从而引起所谓的“噪声邻近”效应。
用于实现较恒定的带宽和I/O时延的一些现有解决方案包含在确定性模式中操作SSD控制器以执行需要确定性带宽和时延的操作,以及在非确定性模式中操作SSD控制器以执行不具有此要求的操作。在操作时,控制器通常在存储器裸片和主机接口之间交换信息或消息(数据和指令)。为此,常规控制器通常包含通用调度器,其基于此些消息的优先级而非基于任何特定模式(确定性或非确定性)对此些消息大致进行分类,这可能严重地限制其提供确定性模式所需的恒定带宽和I/O时延的能力。
本公开涉及一种用于SSD驱动器中的多个NVM集合的双层确定性IPC调度器。贯穿本说明书,NVM集合还可被称作NVM集合或非易失性存储器(NVM)集合。标题为“支持低时延操作的SSD架构(SSD ARCHITECTURE SUPPORTING LOW LATENCY OPERATION)”的第15/800,742号美国专利申请中已经描述NVM的方面,所述美国专利申请的内容全文以引用的方式并入本文中。
根据某些方面,本申请人认识到,现有SSD控制器通常针对待处理的(例如,与读取/写入操作相关联)IPC消息实施通用调度器。对于NVM驱动器,通用调度器将一NVM集合或多个NVM集合的IPC队列大致分为较高优先级队列和较低优先级队列,且接着以其最高到最低的优先级次序循序处理所有IPC队列。
NVM集合的较高优先级消息可能需要等待先前集合上的较高优先级IPC完成,从而导致一些集合的I/O时延总体增加并降低性能和可预测性。这不适于NVM驱动器,因为其取决于另一集合的相邻IPC上的业务在IPC处理中引入时延。换句话说,在常规系统中,SSD控制器基于I/O工作负载在多个NVM集合之间不均匀地分布其资源,从而导致I/O时延。
为了解决这些和其它问题,根据实施例的控制器实施在所有IPC队列和NVM集合之间公平地分布优先级的双层或双相IPC确定性调度器。如将阐述,所公开的实施例可使SSD系统中的控制器能够基于I/O工作负载在多个NVM集合之间均匀地分布其资源,借此减小I/O时延。
图1是根据一个实施例的SSD 100的实例结构的框图。如图1中所示,SSD存储器控制器120经由主机接口110与一或多个主机装置或主机应用(未图示)通信。主机装置可包括任何合适的装置,例如计算机(例如,计算节点)或存储设备。SSD 100包含易失性存储器130和非易失性存储器裸片阵列140两者。易失性存储器装置130和非易失性存储器裸片阵列140分别经由总线124和122与SSD存储器控制器120通信。存储器裸片阵列140被配置成经由总线或链路122与控制器120通信,所述总线或链路可由一或多个物理存储器信道组成。控制器120被配置成经由总线或链路126与主机接口110通信。
非易失性存储器裸片阵列140包括非易失性存储器裸片142a-d、144a-d、146a-d和148a-d,其可布置在一或多个信道中以经由链路122与控制器120通信。
虽然图1中展示16个非易失性存储器裸片142a-d、144a-d、146a-d和148a-d,但SSD100的非易失性存储器裸片阵列140可包括任何合适数目的非易失性存储器裸片140,其布置于一或多个信道中经由122与SSD存储器控制器120通信。
在一个实施例中,易失性存储器装置130包括易失性存储器DRAM缓冲器或高速缓存。易失性存储器装置130不必为单一类型的单个装置,且可包括能够为SSD 100提供易失性存储器缓冲器的不同类型的多个装置。在一个实施例中,非易失性存储器裸片142a-d、144a-d、146a-d和148a-d包括NAND快闪存储器。
图2是示出根据一些实施方案使用IPC的控制器200内的实例通信的框图。控制器200可以是图1中的控制器120的实例实施方案。非易失性存储装置240可以是非易失性存储器,例如(但不限于)非易失性存储器140。
非易失性存储装置240包含跨8个信道(例如,CH0-CH7)布置的非易失性存储器裸片阵列,其中三个非易失性存储器裸片耦合到每一信道。换句话说,非易失性存储装置240包含NAND快闪存储器装置阵列。为清楚起见,未展示到个别裸片的信道连接。非易失性存储器裸片中的每一个具有多个平面。所属领域的一般技术人员可理解,任何合适数目的裸片可以操作方式耦合到任何合适数目的信道。信道CH0-CH7可以是物理信道或逻辑信道。
非易失性存储装置240的非易失性存储器裸片形成隔离区(物理隔离区)或NVM集合260-263。属于同一NVM集合的裸片由相同阴影表示。举例来说,以操作方式耦合到信道CH0和CH1的裸片形成NVM集合260。以操作方式耦合到信道CH2和CH3的裸片形成NVM集合261。以操作方式耦合到信道CH4和CH5的裸片形成NVM集合262。以操作方式耦合到信道CH6和CH7的裸片形成NVM集合263。
控制器200可包含被配置成执行控制器200的各个进程的一或多个处理器。举例来说,处理器210可以是控制器200的任何合适的处理器或处理程序。控制器200的固件可从非易失性存储装置240中的裸片配置任何合适数目的集合,且可配置相同数目的独立的数据通道。换句话说,控制器200的固件可针对每一所配置集合配置独立的数据通道,如第[117441-0126]号美国申请中更详细地描述,所述美国申请的内容全文以引用的方式并入本文中。
在一些实施方案中,控制器200进一步包含快闪控制器(FC)255a-255d。FC 255a-255d从快闪接口层(未图示)获取存储器命令且在个别存储器信道上调度所述命令,从而执行必需的存储器总线控制信令和到存储器裸片的数据传递,且检查存储器裸片状态以查看命令的成功或失败。如所展示,NVM集合260-263中的每一个具有FC 255a-255d中的一个不同FC。举例来说,FC 255a在NVM集合260的I/O路径中。FC 255b在NVM集合261的I/O路径中。FC 255c在NVM集合262的I/O路径中。FC 255d在NVM集合263的I/O路径中。
如所展示,沿着NVM集合260、261、262和263的I/O路径提供独立的数据通道。第一独立数据通道包含IPC或IPC队列212a、212b,以及未图示的一或多个其它IPC。在FC 255a到NVM集合260之间的链路为信道特定的条件下提供将快闪控制器(FC)255a链接到NVM集合260的两个IPC 212d和212e。第一独立数据通道携载仅NVM集合260而非另一集合的消息。
沿着NVM集合261的I/O路径提供第二独立数据通道。第二独立数据通道包含IPC或IPC队列214a、214b,以及未图示的一或多个其它IPC。在FC 255b到NVM集合261之间的链路为信道特定的条件下提供将FC 255b链接到NVM集合261的两个IPC 214d和214e。第二独立数据通道携载仅NVM集合261而非另一集合的消息。
沿着NVM集合262的I/O路径提供第二独立数据通道。第三独立数据通道包含IPC或例如IPC队列216a、216b,以及未图示的一或多个其它IPC。在FC 255c到NVM集合262之间的链路为信道特定的条件下提供将FC 255c链接到NVM集合262的两个IPC 216d和216e。第三独立数据通道携载仅NVM集合262而非另一集合的消息。
沿着NVM集合263的I/O路径提供第四独立数据通道。第四独立数据通道包含IPC或例如IPC队列218a、218b,以及未图示的一或多个其它IPC。在FC 255d到NVM集合263之间的链路为信道特定的条件下提供将FC 255d链接到NVM集合263的两个IPC 218d和218e。第四独立数据通道携载仅NVM集合263而非另一集合的消息。
每一独立数据通道携载仅针对特定NVM集合而非另一集合的指令、消息和任务。此外,每一独立通道可包括一个IPC、一个IPC队列或多个IPC队列。换句话说,图2中展示的数据通道的实例图示不应被视为限制性的。
沿着IPC队列212a-212b、214a-214b、216a-216b和218a-218b或在其中展示的块指代IPC队列212a-212b、214a-214b、216a-216b和218a-218b中的一个相应IPC队列中携载的IPC消息(例如,指令、任务等等)。具有与NVM集合260-263中的一个相应NVM集合相同的阴影的块指代与所述相应集合而非另一集合相关的消息。
在一个实例中,NVM集合260的IPC消息222a和222b由处理器210经由IPC队列212a接收。NVM集合261的IPC消息224由处理器210经由IPC队列214a接收。NVM集合262的IPC消息226由处理器210经由IPC队列216a接收。NVM集合263的IPC消息228a和228b由处理器210经由IPC队列218a接收。
在一些实施例中,IPC消息可预备为最佳传递和处理单位(OTPU)。每一IPC消息可以OTPU的形式在独立数据通道上传送。
举例来说,NVM集合260的消息可预备为OTPU 222a和222b且由处理器210经由IPC队列212a接收。NVM集合261的消息预备为OTPU 224且由处理器210经由IPC队列214a接收。NVM集合262的消息预备为OTPU 226且由处理器210经由IPC 216a接收。NVM集合263的消息预备为OTPU 228a和228b且由处理器210经由IPC队列218a接收。
在一些实例中,IPC消息可以是I/O操作(例如,读取和写入)、后台操作、开始/停止I/O等等的部分。此外,在其它实例中,除专用于处理不同进程的IPC消息的处理器210外,处理器200还可包含多个处理器。
在一个实例中,IPC消息具有可由控制器200的固件确定的相同大小。在标题为“用于NVMSSD的传递和处理单元(TRANSFER AND PROCESSING UNIT FOR NVMSSD)”的第___号美国专利申请[117441-0127]中描述关于用于在独立通道上通信的消息的大小设定的实例方法的更多细节,所述美国专利申请的内容全文以引用的方式并入本文中。
在常规系统中,控制器的固件可实施用于在处理器210内部形成IPC处理管线250的通用调度器。可以看出,IPC管线250包含来自各个集合的消息。当处理器210包含通用调度器时,管线250中的消息以不为任何IPC队列或集合提供公平共享的次序布置。
举例来说,图3是示出通用IPC调度器进程300的方面的框图。在图3的实例中,要素302-308为四个不同NVM集合的高优先级IPC或IPC队列,且要素310-316为该四个不同NVM集合的低优先级IPC或IPC队列。然而,应注意,NVM集合的数据通道可包括具有任何合适数目的优先级的任何合适数目的IPC或IPC队列。
通用调度器将所有NVM集合的IPC或IPC队列大致分为包含IPC 302(包括IPC消息1A、1B、1C、1D、1E)、304(2A、2B)、306(3A、3B、3C)和308(4A)的高优先级IPC队列350,以及包含IPC 310(包括IPC消息1F、1G、1H、1I)、312(2C、2D、2E、2F)、314(3D、3E、3F、3G)和316(4B、4C、4D)的低优先级IPC队列360。通用调度器进程接着将来自所有IPC队列的信息从最高优先级到最低优先级以循序方式放置到IPC管线370中。在一个实例中,每一IPC队列内的消息的优先级在图3中从右到左减小。换句话说,最右消息的优先级具有最高优先级,且最左消息具有最低优先级。因此,1A、2A、3A和4A是高优先级IPC队列350中的最高优先级消息。类似地,1F、2C、3D和4B是低优先级IPC队列360中的最高优先级消息。由通用调度器生成的IPC管线370以循序次序包括块334(包括来自IPC 302的消息1A、1B、1C、1D、1E)、336(2A、2B)、338(3A、3B、3C)、340(4A)、342(1F、1G、1H、1I)、344(2D、2E、2F)、346(3D、3E、3F、3G)和348(4B、4C、4D)。可以看出,作为通用调度器进程300的操作的结果,IPC队列308的最高优先级消息4A处于IPC管线370中的第11位。如果“t”为处理每一消息所需的时间,则4A必须等待‘10t’的持续时间来被处理,尽管其是与IPC 308相关联的NVM集合的最高优先级消息。换句话说,与4A相关联的时延为‘10t’。类似地,与消息2A相关联的时延为‘5t’。
相应地,尽管通用调度器是基于优先级的,但其不防止一个NVM集合影响其它集合上的时延。此类型的调度方案与I/O确定性的目标冲突,且因此不适于NVM驱动器中的固件。
图4是根据实例实施例的双层IPC调度器410(下文,调度器410)的框图。在由图4指示的实例中,调度器410被实施为控制器的固件的一部分。在其它实施例中,调度器也可实施于硬件中。在这些和其它实施例中,调度器410可被实施为实施控制器中的任何和所有处理器或处理程序(例如结合图2描述的处理器210)的固件或软件的一部分。
如图4的实例中所展示,调度器410包括NVM集合调度器420和公平共享调度器440。NVM集合调度器420被配置成从与存储器装置140中的NVM集合相关联的IPC队列450接收消息。在一个实例中,IPC队列450可以是无序的。换句话说,IPC队列450中的消息可具有混合优先级。调度器420进一步被配置成生成经排序IPC队列430。公平调度器440被配置成经由通信链路432接收经排序NVM队列430,且进一步被配置成生成含有经排序IPC消息的IPC管线460。下文将更详细地论述根据实例实施例的生成经排序IPC队列和IPC管线的方法。
图5示出根据实例实施例由双层IPC调度器410形成的经排序IPC队列和IPC管线的实例。如所展示,NVM集合调度器420被配置成接收NVM集合0(501)、NVM集合1(503)、NVM集合2(505)和NVM集合3(507)的IPC消息。每一NVM集合的IPC消息进一步由NVM集合调度器420经由IPC0和IPC1队列接收。相应地,如所展示,NVM集合501、503、505和507的消息分别经由IPC队列502和504、506和508、510和512、514和516接收。对于NVM集合0,包括消息1A、1B、1C、1D和1E的IPC队列502比包括消息1F、1G、1H和1I的队列504具有更高优先级。对于NVM集合1,包括消息2A、2B的队列506比包括消息2C、2D、2E和2F的队列508具有更高优先级。对于NVM集合2,包括消息3A、3B、3C的队列510比包括消息3D、3E、3F和3G的队列512具有更高优先级。对于NVM集合3,包括消息4A的队列514比包括消息4B、4C和4D的516具有更高优先级。
NVM集合调度器420被配置成分别从NVM集合501、503、505和507的无序IPC队列生成经排序IPC队列518、520、522和524。可以看出,在此实例中,经排序IPC队列以消息的优先级次序放置消息,其中最高优先级消息在每一经排序队列中的最右位。
公平共享调度器440被配置成接收经排序IPC队列518、520、522、524且生成IPC管线460。可以看出,IPC管线460包括与以公平的方式布置的所有NVM集合的队列相关联的呈其优先级次序的消息。举例来说,IPC管线中的块526包括分别来自NVM集合501、503、505和507的最高优先级消息1A、2A、3A和4A。类似地,块528、530、532、534、536、538、540和542包括呈其优先级次序的来自NVM集合0-3的消息。如此,处理消息的过程中的时延减小。举例来说,当由通用调度器300布置时具有10t时延的消息4A现具有仅3t的时延。如此,在一个实例中,本发明实施例的双层调度器410可使通用调度方法的总体时延大大减少。
在一个实施例中,公平共享调度器440通过实施循环算法向所有NVM集合的消息指派公平的优先级。在其它实施例中,可通过使用其它方法指派公平共享优先级。
图6以额外或替代性细节示出由双层IPC调度器410形成IPC管线的实例方面。如所展示,在此实例中,存在NVM集合602、604、606和608的无序消息,所述消息在每一NVM集合的IPC队列0-31中接收。还存在与每一IPC队列相关联的IPC队列掩码位,共同地展示为分别针对集合0、1、2、3的610、612、614和616。这些位经设定(使其等于逻辑高)或复位(使其等于逻辑低),如下文所描述。此外,可存在分别针对每一NVM集合0、1、2、3的NVM集合掩码位618、620、622、624,其可经设定(使其等于逻辑高)或复位(使其等于逻辑低),同样如下文描述。
在一个可能实施例中,固件可针对需要由双层IP调度器410处理的那些IPC队列选择性地设定或复位特定IPC队列掩码位。举例来说,如果在NVM集合1 602的IPC队列0上接收消息,则处理器210的固件可在位掩码612中设定相应位。此外,在此实例和其它实例中,如果使给定NVM集合的任何IPC队列掩码位(即,NVM集合0的位610中的任一个、NVM集合1的位612中的任一个、NVM集合2的位614中的任一个,以及NVM集合3的位616中的任一个)等于逻辑高,则使相应NVM集合掩码位(618-624)也等于逻辑高。此可用作到双层调度器410的关于哪些队列和集合含有待布置于IPC 626管线中的消息的指示。
如上文所描述,选定的消息(如NVM集合602、604、606和608的队列IPC 0-31中所指示)由IPC调度器410(图6中未图示)处理为经排序IPC队列,且IPC调度器410可使用位掩码610、612、614和616中的位来识别每一集合中的哪些队列IPC 0-31含有需要排序的消息。随后,集合调度器420(图6中未图示)将经排序队列中的消息以其优先级次序布置到IPC管线626中,其中每一NVM集合在调度中接收公平共享。在此处理期间,集合调度器420可使用群组掩码618、620、622和624中的位来确定哪些集合具有供处理的经排序IPC队列。在这些和其它实施例中,在执行如上文更详细描述的处理之后,IPC调度器410可复位(例如,使其等于逻辑低)IPC掩码610、612、614和616中的所有位,以及群组掩码618、620、622和624中的所有位。上述配置可针对任何数目的IPC队列和NVM集合扩展。
图7是根据一实施例针对IOD执行双层IPC调度的方法的流程图。
如所示出,过程在框702处开始。
在704处,可检查公平共享操作是否完成。举例来说,此操作可包含确定所有NVM集合群组掩码位(例如,图6中的618-624)是否已经复位(例如,使其等于逻辑低)。如果是,则过程移动到框706,其从该处重新开始。如果否,则过程移动到框708。
在708处,可检查NVM集合调度器操作是否完成。举例来说,此操作可包含确定所有IPC位掩码(例如,610-616)是否已经复位(例如,使其等于逻辑低)。如果是,则过程移动到框722,其从该处可进入公平共享调度器模式。如果否,则过程移动到框710。
可假定存在预定义数目‘max’的NVM集合,且变量‘n’表示特定集合数目。
在710处,可使“n”的值等于零。
在712和714处,可检查第一集合的NVM集合掩码位(n=0时)是否为高。如果是,则过程移动到框738,在该处,过程进入IPC集合调度器模式。如果否,则过程移动到框716。
可假定,每一NVM集合中存在“m”个IPC队列。在738处,可使“m”的值等于零。
在740和742处,可检查IPC队列掩码位(m=0时)是否为高。如果是,则过程移动到框744。如果否,则过程移动到748。
在744处,可将IPC(m)中的个别消息按其优先级次序布置,此后,过程移动到框746。
在746处,可检查“m”的值是否已达到预定义最大值queue_max。如果是,则过程移动到框750。如果否,则过程移动到框748。
在748处,可使“m”的值递增1,此后,过程移动回到框740。如此,集合(n)的每一IPC队列中的个别IPC消息根据其优先级排序。
在750处,可形成对于其队列掩码位为高的所有消息的经排序IPC队列。此后,过程移动到框716的开始。
在716处,可检查“n”的值是否已达到最大预定义值set_max。如果是,则过程移动到框752。如果否,则过程移动到框718。
在718处,可使“n”的值递增1,此后,过程移动回到框712。如此,针对所有NVM集合执行所有IPC队列的排序。
在752处,可将NVM集合调度器操作标记为完成。此可包含使所有IPC位掩码复位到逻辑低。
从框752,过程进一步移动到返回框754。
在从框754返回之后,以及在评估框704和708之后,过程可移动到框722,公平共享调度器模式。
在722处,可再次使“n”的值等于零,此后,过程移动到框724,然后移动到726。
在726处,可检查集合(n)的群组掩码位是否为高。如果是,则过程移动到框728。
在框728处,最高优先级消息可移动到IPC管线,此后,过程移动到框730。
在框730处,可检查“n”的值是否已达到值set_max。如果是,则过程移动到框734。
在框734处,可将公平共享调度器操作标记为完成,此后,过程移动到框736,其可从该处返回到开始。此可包含使所有NVM集合的所有群组掩码位复位到逻辑低。
所属领域的技术人员将理解,一般而言,本文中并且尤其是在所附权利要求书(例如,所附权利要求书的主体)中使用的术语通常既定为“开放性”术语(例如,术语“包含(including)”应被解释为“包含但不限于”,术语“具有”应被解释为“至少具有”,术语“包含(includes)”应被解释为“包含但不限于”等)。
所属领域的技术人员将进一步理解,如果希望特定数目的所引入权利要求陈述,则将在权利要求中明确地陈述此意图,并且在没有此陈述的情况下,不存在此意图。举例来说,为了辅助理解,所附权利要求书可能含有引入性短语“至少一个”和“一或多个”的使用以引入权利要求陈述。然而,使用此类短语不应解释为暗示由不定冠词“一”引入一个权利要求叙述会将含有此类所引入的权利要求叙述的任何特定权利要求限制为仅含有一个此类叙述的实施例,即使当该权利要求包含介绍性短语“一或多个”或“至少一个”以及不定冠词(例如“一”)时(例如“一”应通常解释为表示“至少一个”或“一或多个”);这对用于引入权利要求叙述的定冠词的使用同样成立。另外,即使明确陈述了特定数目的所引入的权利要求陈述,所属领域的技术人员将认识到,此类陈述通常应当解释为意指至少所陈述的数目(例如,在没有其它修饰语的情况下“两个陈述”的简单陈述通常意味着至少两个陈述,或者两个或更多个陈述)。
此外,在使用类似于“A、B和C中的至少一个等”的惯用语的那些情况下,一般而言,此构造的意图在于所属领域的技术人员将理解所述惯用语(例如,“具有A、B和C中的至少一个的系统”将包含但不限于仅具有A、仅具有B、仅具有C、同时具有A和B、同时具有A和C、同时具有B和C,和/或同时具有A、B和C的系统等)。在使用类似于“A、B或C中的至少一个等”的惯用语的那些情况下,一般而言,此构造的意图在于所属领域的技术人员将理解所述惯用语(例如,“具有A、B或C中的至少一个的系统”将包含但不限于仅具有A、仅具有B、仅具有C、同时具有A和B、同时具有A和C、同时具有B和C,和/或同时具有A、B和C的系统等)。所属领域的技术人员将进一步理解,事实上表示两个或更多个替代性术语的任何分离性词语和/或短语,无论是在说明书、权利要求书还是图式中,都应理解为涵盖包含所述术语中的一个、所述术语中的任一个,或两个术语的可能性。举例来说,短语“A或B”将理解为包含“A”或“B”或“A和B”的可能性。此外,除非另外指出,否则词语“近似”、“约”、“大约”、“大体上”等的使用意指加上或减去百分之十。
尽管相对于例如NAND等固态存储器裸片描述本文中所公开的实施例,但那些实施例可适用于其它类型的易失性或非易失性存储器。
上文参考实例实施例描述了本发明技术。因此,基于实例实施例的其它变型既定由本公开涵盖。

Claims (20)

1.一种用于固态存储器装置的控制器,其包括:
第一层非易失性存储器(NVM)集合调度器,其被配置成接收多个无序集合,每一无序集合包括布置于多个队列中的多个信息消息,其中所述NVM集合调度器可操作以针对所述多个无序集合中的每一个输出经排序队列,所述经排序队列在单个队列中以相应优先级次序包括所述多个信息消息,以及
第二层公平共享调度器,其被配置成接收每一经排序队列且进一步可操作以从每一经排序队列生成待针对I/O操作处理的所述信息消息的管线,其中
所述第二层公平共享调度器进一步可操作以按循序方式选择所述经排序队列中的一个,使得每次仅来自选定经排序队列的单个信息消息传递到所述管线。
2.根据权利要求1所述的控制器,其中每一经排序队列具有相等机率被选择以将其信息消息传递到所述管线。
3.根据权利要求1所述的控制器,其中来自每一经排序队列的较高优先级信息消息在较低优先级信息消息之前传递到所述管线。
4.根据权利要求1所述的控制器,其中每一无序集合中的所述信息消息布置于多个队列中,所述队列中的每一个具有相应优先级。
5.根据权利要求1所述的控制器,其中每一无序集合具有与其相关联的NVM集合掩码位,且其中所述第二层公平共享调度器可操作以检查所述NVM集合掩码位的值。
6.根据权利要求5所述的控制器,其中如果所述NVM集合掩码位为第一逻辑电平而非第二相对逻辑电平,则选择无序集合来将信息消息传递到所述管线。
7.根据权利要求6所述的控制器,其中如果所述NVM集合掩码位为所述第二相对逻辑电平,则不选择无序集合来将信息消息传递到所述管线。
8.根据权利要求1所述的控制器,其中每一队列具有与其相关联的队列掩码位,且其中所述第一层NVM集合调度器可操作以检查所述队列掩码位的值。
9.根据权利要求8所述的控制器,其中如果所述队列掩码位为第一逻辑电平而非第二相对逻辑电平,则选择队列来将信息消息传递到所述管线。
10.根据权利要求9所述的控制器,其中如果所述队列掩码位为所述第二相对逻辑电平,则不选择队列来传递信息消息。
11.一种生成待在SSD驱动器中处理的信息的管线的方法,所述方法包括:
接收多个NVM集合的信息消息的多个无序队列;
将所述信息消息排序为所述NVM集合中的每一个的相应经排序队列;以及
通过从所述经排序队列循序地选择所述信息消息而生成所述信息消息的管线,
其中所述多个NVM集合中的每一个具有相等机率被选择以将其信息消息传递到所述管线。
12.根据权利要求11所述的方法,其进一步包括:
由第一层NVM调度器生成所述经排序队列;
由第二层公平共享调度器接收每一经排序队列;以及
由所述第二层公平共享调度器每次将仅单个信息消息从所述经排序队列传递到所述管线。
13.根据权利要求12所述的方法,其进一步包括:
将较高优先级信息消息在较低优先级信息消息之前从每一经排序队列传递到所述管线。
14.根据权利要求11所述的方法,其中每一队列具有相应优先级。
15.根据权利要求12所述的方法,其进一步包括
使NVM集合掩码位与每一集合相关联,以及
由所述第二层公平共享调度器检查所述NVM集合掩码位的值。
16.根据权利要求15所述的方法,其进一步包括如果所述NVM集合掩码位为第一逻辑电平而非第二相对逻辑电平,则选择NVM集合来将信息消息传递到所述管线。
17.根据权利要求16所述的方法,其进一步包括如果所述NVM集合掩码位为所述第二相对逻辑电平,则不选择NVM集合来将信息消息传递到所述管线。
18.根据权利要求12所述的方法,其进一步包括:
使队列掩码位与每一队列相关联;以及
由所述第一层NVM集合调度器检查所述队列掩码位的值。
19.根据权利要求18所述的方法,其进一步包括如果所述队列掩码位为第一逻辑电平而非第二相对逻辑电平,则选择队列来将信息消息传递到所述管线。
20.根据权利要求19所述的方法,其进一步包括如果所述队列掩码位为所述第二相对逻辑电平,则不选择队列来将信息消息传递到所述管线。
CN202080065859.4A 2019-07-26 2020-07-23 用于固态驱动器中的输入输出确定性的双层确定性进程间通信调度器 Active CN114521253B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/523,948 2019-07-26
US16/523,948 US11016829B2 (en) 2019-07-26 2019-07-26 Two-layered deterministic interprocess communication scheduler for input output determinism in solid state drives
PCT/IB2020/056931 WO2021019378A1 (en) 2019-07-26 2020-07-23 Two-layered deterministic inter-process communication scheduler for input output determinism in solid state drives

Publications (2)

Publication Number Publication Date
CN114521253A true CN114521253A (zh) 2022-05-20
CN114521253B CN114521253B (zh) 2024-01-23

Family

ID=74190300

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080065859.4A Active CN114521253B (zh) 2019-07-26 2020-07-23 用于固态驱动器中的输入输出确定性的双层确定性进程间通信调度器

Country Status (3)

Country Link
US (1) US11016829B2 (zh)
CN (1) CN114521253B (zh)
WO (1) WO2021019378A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210065455A (ko) * 2019-11-27 2021-06-04 에스케이하이닉스 주식회사 메모리 시스템의 라이트 성능을 향상시키는 장치 및 방법
US11417410B2 (en) * 2020-09-16 2022-08-16 Kioxia Corporation Die-based high and low priority error queues
US11630601B2 (en) * 2021-03-02 2023-04-18 Silicon Motion, Inc. Memory and apparatus for performing access control with aid of multi-phase memory-mapped queue
US20240103762A1 (en) * 2022-09-23 2024-03-28 Western Digital Technologies, Inc. Automated Fast Path Processing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080320274A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US20100100645A1 (en) * 2008-10-22 2010-04-22 Hitachi, Ltd. Storage System and Method for Controlling Activation of Command
US20160342365A1 (en) * 2015-05-19 2016-11-24 Kabushiki Kaisha Toshiba Memory device that sorts access commands to a nonvolatile semiconductor memory unit thereof
US20170090753A1 (en) * 2015-09-28 2017-03-30 Sandisk Technologies Llc Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues
CN107094370A (zh) * 2012-05-04 2017-08-25 希捷科技有限公司 固态硬盘控制器的0‑1平衡管理

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002062013A2 (en) * 2001-01-30 2002-08-08 Nomadix, Inc. Methods and systems providing fair queuing and priority scheduling to enhance quality of service in a network
US9317204B2 (en) * 2013-11-14 2016-04-19 Sandisk Technologies Inc. System and method for I/O optimization in a multi-queued environment
US10037167B2 (en) * 2015-09-11 2018-07-31 Sandisk Technologies Llc Multiple scheduling schemes for handling read requests
US11294594B2 (en) 2017-08-07 2022-04-05 Kioxia Corporation SSD architecture supporting low latency operation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080320274A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US20100100645A1 (en) * 2008-10-22 2010-04-22 Hitachi, Ltd. Storage System and Method for Controlling Activation of Command
CN107094370A (zh) * 2012-05-04 2017-08-25 希捷科技有限公司 固态硬盘控制器的0‑1平衡管理
US20160342365A1 (en) * 2015-05-19 2016-11-24 Kabushiki Kaisha Toshiba Memory device that sorts access commands to a nonvolatile semiconductor memory unit thereof
US20170090753A1 (en) * 2015-09-28 2017-03-30 Sandisk Technologies Llc Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues

Also Published As

Publication number Publication date
US20210026713A1 (en) 2021-01-28
US11016829B2 (en) 2021-05-25
WO2021019378A1 (en) 2021-02-04
CN114521253B (zh) 2024-01-23

Similar Documents

Publication Publication Date Title
CN114521253B (zh) 用于固态驱动器中的输入输出确定性的双层确定性进程间通信调度器
US8108571B1 (en) Multithreaded DMA controller
US9426099B2 (en) Router, method for controlling router, and program
US9588810B2 (en) Parallelism-aware memory request scheduling in shared memory controllers
CN103336669B (zh) 一种基于固态盘内部并行性的i/o调度方法及调度器
US6922749B1 (en) Apparatus and methodology for an input port of a switch that supports cut-through operation within the switch
CN113918101B (zh) 一种写数据高速缓存的方法、系统、设备和存储介质
US10705986B2 (en) Flash interface controller and operation command processing method
US10810146B2 (en) Regulation for atomic data access requests
US10146468B2 (en) Addressless merge command with data item identifier
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
TW202349215A (zh) 可重構資料處理器中的網路的仲裁
CN111416858A (zh) 一种媒体资源的处理平台、方法、装置和服务器
US20230359401A1 (en) Independent set data lanes for iod ssd
US10740032B2 (en) Resource allocation for atomic data access requests
US9804959B2 (en) In-flight packet processing
US6895481B1 (en) System and method for decrementing a reference count in a multicast environment
CN110214437B (zh) 用于存储器访问令牌重新分配的系统和方法
CN111966736B (zh) 一种高吞吐低延时大容量Flume通道及其传输方法
CN114546287A (zh) 一种单通道多逻辑单元号交叉传输的方法和装置
CN113296957A (zh) 一种用于动态分配片上网络带宽的方法及装置
CN114521252A (zh) Iod ssd的传送与处理单位
CN112559400B (zh) 多级调度装置、方法、网络芯片及计算机可读存储介质
US20240111456A1 (en) Storage device controller and method capable of allowing incoming out-of-sequence write command signals
WO2024001332A1 (zh) 多端口存储器、多端口存储器的读写方法及装置

Legal Events

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