CN110114762A - 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备 - Google Patents

用于访问作为字节可寻址存储器的非易失性存储器的方法和设备 Download PDF

Info

Publication number
CN110114762A
CN110114762A CN201780080357.7A CN201780080357A CN110114762A CN 110114762 A CN110114762 A CN 110114762A CN 201780080357 A CN201780080357 A CN 201780080357A CN 110114762 A CN110114762 A CN 110114762A
Authority
CN
China
Prior art keywords
data transfer
transfer command
byte
block
processor
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
CN201780080357.7A
Other languages
English (en)
Other versions
CN110114762B (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.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
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 ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of CN110114762A publication Critical patent/CN110114762A/zh
Application granted granted Critical
Publication of CN110114762B publication Critical patent/CN110114762B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本文描述的是用于访问作为字节可寻址存储器的块可寻址输入/输出(I/O)装置诸如非易失性存储器(NVM)的方法和系统。连接到外围部件互连高速(PCIe)交换机的前端处理器充当所述块可寻址I/O装置的前端接口,以模拟字节可寻址性。PCIe装置诸如图形处理单元(GPU)可以通过所述前端处理器从所述块可寻址I/O装置直接访问必要的字节。PCIe兼容装置可以访问所述块I/O装置的数据,而无需通过系统存储器和主处理器。在一种实现方式中,系统可以包括块可寻址I/O、字节可寻址I/O及其混合形式,其支持由所述主处理器、GPU和任何其他PCIe兼容装置直接访问字节可寻址存储器。

Description

用于访问作为字节可寻址存储器的非易失性存储器的方法和 设备
相关申请的交叉引用
本申请要求2016年12月23日提交的美国专利申请号15/389,811的权益,该专利申请通过引用方式并入,如同在本文完整阐述一样。
背景技术
图形处理单元(GPU)可以名义上配置有一定量的本地或专用存储器(以下称为“本地存储器”),以服务于在GPU上执行的操作。例如,本地存储器可以是动态随机存取存储器。具有诸如其本地存储器之类的字节可寻址装置的GPU也可以访问非易失性存储器(NVM),其是一种块可寻址存储器。如果GPU或某些应用需要在NVM和本地存储器之间传输数据,则在主计算系统上运行的操作系统(OS)、显示驱动程序、装置驱动程序或类似的硬件/软件实体通常控制或管理数据传输过程。该数据传输过程需要两跳过程;首先从NVM到系统存储器,然后从系统存储器到本地存储器。特别是,必须首先通过NVM控制器的块输入/输出(I/O)传输机制,将NVM数据传输到系统存储器中。然后,GPU可以从本地存储器访问数据。这涉及至少使用系统存储器并会导致流量增大和拥塞。
附图说明
可从结合附图以举例的方式给出的以下描述中获得更详细的了解,在附图中:
图1示出了根据某些实现方式的具有主计算系统和固态图形(SSG)卡的处理系统;
图2示出了通用软件栈和硬件架构;
图3示出了根据某些实现方式的具有主计算系统和固态图形(SSG)卡的处理系统;
图4示出了根据某些实现方式的软件栈和硬件架构;
图5是根据某些实现方式的使用图3和图4的处理系统的流程图;
图6是根据某些实现方式的使用图3和图4的处理系统的流程图;以及
图7是其中可以实现一种或多种公开的实现方式的示例装置的框图。
具体实施方式
本申请涉及以下共同未决的申请:2016年12月23日提交的标题为“Method andApparatus for Connecting Direct Access From Non-volatile Memory to LocalMemory”(用于连接从非易失性存储器到本地存储器的直接访问的方法和设备)的美国专利申请号15/389,596以及2016年12月23日提交的标题为“Method and Apparatus forConnecting Non-volatile Memory locally to a GPU through a Local Switch”(用于通过本地交换机将非易失性存储器本地连接到GPU的方法和设备)的美国专利申请号15/389,747以及2016年12月23日提交的标题为“Method and Apparatus for Integration ofNon-volatile Memory”(用于集成非易失性存储器的方法和设备)的美国专利申请号15/389,908,它们通过引用方式并入,如同完整阐述一样。
本文描述的是用于访问作为字节可寻址存储器的块可寻址输入/输出(I/O)装置(诸如非易失性存储器(NVM)和控制器或其他类似地使用的装置)的方法和系统。连接到高速串行计算机扩展总线的前端处理器,诸如但不限于外围部件互连快速(PCIe)根联合体和交换机(统称为PCIe交换机),充当块可寻址I/O装置的前端接口,以模拟字节寻址能力。PCIe装置(诸如图形处理单元(GPU)或其他PCIe兼容装置)通过前端处理器从块可寻址I/O装置直接访问必要的字节。也就是说,PCIe兼容装置可以从块可寻址I/O装置访问数据,而无需通过系统存储器和主处理器。由于绕过主处理器的参与并且不必执行系统存储器复制,这在带宽节省方面增强了GPU性能。
此外,前端处理器还使用高速缓存来存储所访问的块,从而提高速度并减少延迟。这也通过在随后访问块时不必传输整个块来增大可用带宽和容量。在一种实现方式中,系统可以包括块可寻址I/O、字节可寻址I/O及其混合形式,其支持由主处理器、GPU和任何其他PCIe兼容装置直接访问字节可寻址存储器。出于说明和讨论的目的,术语“NVM”和“NVM控制器”将在说明书中用作块可寻址I/O装置的示例,而不限制说明书和权利要求的范围。
图1示出了根据某些实现方式的示例处理系统100。处理系统100可以包括连接到一个或多个固态图形(SSG)卡110的主计算系统105。主计算系统105包括处理器120,处理器包括一个或多个中央处理单元(CPU)122和L2高速缓存124。处理器120可以连接到系统存储器126(诸如例如动态随机存取存储器(DRAM))以及本领域普通技术人员已知的其他部件,或与它们进行通信(统称“连接到”)。
通常,每个SSG卡110都包括高速串行计算机扩展总线,诸如但不限于用于与处理器120对接的外围部件互连快速(PCIe)交换机(PCIe交换机)130。出于说明的目的示出了PCIe交换机130,并且可以使用其他电气或通信接口。每个SSG卡110都还包括一个或多个非易失性存储器(NVM)控制器132,诸如例如NVM Express(NVMe)或非易失性存储器主机控制器接口规范(NVMHCI)装置,用于访问通过PCIe交换机130连接的相关联的NVM 134和一个或多个GPU 140。每个GPU 140都可以连接到L2高速缓存142并且可以本地连接到存储器架构,该存储器架构可以是,例如,本地存储器144、高带宽存储器(HBM)、双倍数据速率第四代同步动态随机存取存储器(DDR4)、双数据速率类型五同步图形随机存取存储器(GDDR5)、混合存储器立方体或其他类似地使用的存储器,以及相关联的控制器。出于说明和讨论的目的,术语“本地存储器”将在说明书中用作存储器架构的示例,而不限制说明书和权利要求的范围。每个NVM控制器132都可以管理和访问相关联的NVM 134,并且特别地,可以解码来自主计算系统105或GPU 140的传入命令。该配置是说明性的,并且可以在说明书和权利要求的范围内实现其他配置。
图2示出了诸如例如图1中的处理系统100之类的处理系统的软件互操作性。图2使用简化的处理系统205来说明使用软件栈200的软件和硬件互操作性。处理系统205包括连接到系统存储器252的CPU 250,连接到NVM 264的NVM控制器262和连接到本地存储器272的GPU 270,所有这些都通过PCIe交换机280连接。
软件栈200的功能对于本领域普通技术人员来说是已知的,以下是代表性和说明性的示例。通常,软件栈200在CPU 250上操作。软件栈200包括但不限于管理栈210、块访问应用程序接口(API)220、文件访问API 230、文件系统240、NVM装置驱动程序245和其他软件部件,诸如操作系统(OS)(未示出)。管理栈210提供系统管理工具并包括管理用户界面(UI)212和管理库214,其用于控制和配置文件系统240,格式化卷以及执行其他类似功能。块访问API 220和文件访问API 230是输入/输出(I/O)或访问API。块访问API 220由应用程序222用于通过标准原始装置访问协议224来访问各种块大小(诸如2K、4K、8K、16K、64K、128K等)的存储器。文件访问API 230由应用程序232用于通过标准文件API 234来访问文件系统240。这可以使用各种访问协议,诸如网络文件系统(NFS)或服务器消息块(SMB),来完成。块访问API 220和文件访问API 230两者都使用诸如NVM装置驱动器245之类的装置驱动程序来访问存储器,诸如NVM 264。
在使用软件栈200的I/O或文件访问API来执行访问操作的示例中,打开文件并创建文件句柄以识别用于函数调用的文件。然后,为文件句柄创建文件映射句柄或对象。这分配了相对于文件大小的虚拟地址(VA)范围或空间,以供CPU 250访问。然后,将该文件映射到已分配的VA空间。在访问的情况下,VA空间将被来自CPU 250的相关加载或存储命令命中。由于VA空间未被物理映射到存储器的一部分,因此加载或存储命令将会生成错误。例如,OS将捕获错误并调用NVM装置驱动程序245以向NVM控制器262发出块I/O直接存储器访问(DMA)命令。所请求的数据将从NVM 264复制到系统存储器252(如数据路径290所示)。OS会将系统存储器252的一部分映射到被分配的出错的VA空间,解除阻止CPU 250的访问。如图所示,应用程序222或232不知道底层访问机制。OS通过利用由块I/O装置(诸如NVM控制器262和NVM 264)提供的块I/O DMA命令来执行完成访问的基础工作。
从硬件角度来看,CPU 250使用块I/O编程接口(其是寄存器接口)来发出DMA命令,DMA命令以例如4千字节为单位将数据块复制到系统存储器252。这是使用诸如NVM装置驱动程序245之类的装置驱动程序来完成的,装置驱动程序使用NVM控制器的262块I/O DMA命令来复制数据并将数据发送到系统存储器252。然后,CPU 250可以从系统存储器252访问数据。GPU 270可以通过诸如PCIe之类的互连总线从系统存储器252访问数据。或者,首先将数据的副本从系统存储器252复制到本地存储器272(如数据路径292所示)。然后,GPU 270可以从本地存储器272访问数据。
以上描述了通用的存储器映射文件I/O机制或块I/O访问模型。在通用存储器映射文件I/O机制中,需要在GPU 270能够访问数据之前完成一系列顺序步骤。特别地,数据被复制,存储在系统存储器252中,再次被复制并最终存储在本地存储器272中。在此期间,GPU270不能继续并且处于停滞状态。问题是,GPU 270不能直接访问NVM 264。该问题的一个潜在解决方案是使用非易失性双列直插存储器模块(NVDIMM),其是字节可寻址的存储器映射装置。但是,仅连接到CPU且不连接到GPU(是PCIe装置)的动态随机存取存储器(DRAM)接口支持NVDIMM。因此,该提出的解决方案不足以提供直接访问。
图3示出了根据某些实现方式的提供对块I/O装置的直接访问的示例处理系统300。处理系统300可以包括连接到一个或多个SSG卡310的主计算系统305。主计算系统305包括处理器320,该处理器包括一个或多个CPU 322和L2高速缓存324。处理器320可以连接到系统存储器326,诸如例如DRAM,以及连接到本领域普通技术人员已知的其他部件。
通常,每个SSG卡310都包括用于与处理器320对接的PCIe交换机330。出于说明的目的示出了PCIe交换机330,并且可以使用其他电气或通信接口。每个SSG卡310都还包括一个或多个NVM控制器332,诸如例如NVMe或NVMHCI装置,用于访问通过PCIe交换机330连接的相关联的NVM 334和一个或多个GPU 340。每个GPU 340都可以连接到L2高速缓存342,并且可以本地连接到本地存储器344。每个SSG卡310都还包括前端处理器350,其与PCIe交换机330在一起并与其连接,并且还连接到一个或多个NVM控制器332中的每一个。高速缓存352连接到前端处理器350。前端处理器350可以是微处理器、嵌入式微处理器、现场可编程门阵列(FPGA)或充当NVM控制器332和NVM 334的前端接口以模拟PCIe总线上的字节可寻址性的类似装置。特别地,并且如参考图4进一步描述的,前端处理器350解码来自主计算系统305或GPU 340的传入命令,从NVM控制器332和NVM 334读取所请求的字节,并直接将字节分别传输到CPU 322或GPU 340。在一种实现方式中,字节可以被传输到L2高速缓存324或L2高速缓存342,以分别由CPU 322或GPU 340进行访问。该配置是说明性的,并且可以在说明书和权利要求的范围内实现其他配置。
图4示出了诸如例如图3中的处理系统300之类的处理系统的软件互操作性。图4使用简化的处理系统405来说明使用软件栈400的软件和硬件互操作性。通常,软件栈400在CPU 450上操作。软件栈400包括但不限于管理栈410、块访问应用程序接口(API)420、文件访问API 430、文件系统440、NVM装置驱动程序445和其他软件部件,诸如操作系统(OS)(未示出)。管理栈410提供系统管理工具并包括管理用户界面(UI)412和管理库414,其用于控制和配置文件系统440,格式化卷以及执行其他类似功能。块访问API 420和文件访问API430是输入/输出(I/O)或访问API。块访问API 420由应用程序422用于通过标准原始装置访问协议424来访问各种块大小(诸如2K、4K、8K、16K、64K、128K等)的存储器。文件访问API430由应用程序432用于通过标准文件API 434来访问文件系统440。
处理系统405包括连接到系统存储器452的CPU 450,连接到NVM 462的NVM控制器460和连接到本地存储器472的GPU 470,所有这些都通过PCIe交换机480连接。处理系统405还包括前端处理器465。在一种实现方式中,前端处理器465既可以是PCIe主装置,也可以是PCIe从装置,这意味着它既能启动到目的地存储器地址的DMA数据传输,也能响应另一装置的存储器访问请求。在一种实现方式中,前端处理器465连接到高速缓存467,可以提供高速缓存以维持从属请求。前端处理器465与PCIe交换机480在一起,并通过寄存器孔径482和存储器孔径484与其连接。寄存器孔径482和存储器孔径484在PCIe语义(也称为基本地址寄存器(BAR))下定义,并允许对等PCIe装置(诸如GPU 470或CPU 450)使用标准PCIe访问周期,来访问目标PCIe装置,诸如NVM控制器460和NVM 462。
通常,如果数据传输命令具有PCIe目的地地址(例如,从GPU 470或CPU 450接收到的),其落入寄存器孔径482或存储器孔径484中的一个中,则数据传输命令被转发到前端处理器465。在PCIe目的地地址落入寄存器孔径482的情况下,前端处理器465通过NVM控制器460的块I/O DMA命令来执行块可寻址处理,如上所述。在PCIe目的地地址落入存储器孔径484的情况下,前端处理器465执行字节可寻址处理。在一种实现方式中,前端处理器465可以例如操作以进行读和写访问。在读访问实现方式中,前端处理器465从高速缓存467读取数据字节(如果所请求的字节在先前请求的块中),或者通过NVM控制器460的块I/O DMA命令,从NVM 462读取数据块。读取数据块存储在高速缓存467中,并且所请求的字节被转发到CPU 450(如数据路径495所示),或转发到GPU 470(如数据路径496所示)。在写访问实现方式中,前端处理器465将数据字节写入高速缓存467,并通过NVM控制器460的块I/O DMA命令将数据刷新回到NVM 462(如果所请求的字节存在于高速缓存467中)或通过NVM控制器460的块I/O DMA命令,将数据写入到NVM 462。通过提供寄存器孔径482和存储器孔径484,可允许块和字节可寻址性处理。
除了块访问API 420和文件访问API 430之外,通过包括前端处理器465和存储器孔径484,也能够例如使用永久存储器栈490。块访问API 420和文件访问API 430的操作如上所述。例如,永久存储器堆栈490使应用程序491能够执行对NVM 462的零复制访问。也就是说,应用程序491可以通过存储器映射处理493执行加载/存储处理492,而无需I/O处理,没有排队,也没有异步读取和/或写入。
图5与图3和图4一起示出了用于在读访问场景中为块I/O装置提供字节可寻址性的示例流程图500。数据传输命令或存储器访问请求从诸如处理器320或GPU 340之类的处理器(步骤505)通过诸如PCIe交换机330之类的本地交换机发送到诸如NVM 334之类的目的地装置。在一种实现方式中,目的地地址与数据传输命令一起提供。诸如前端处理器350之类的前端处理器确定数据传输命令是需要块可寻址处理还是需要字节可寻址处理(步骤510)。在一种实现方式中,数据传输命令是落入寄存器孔径还是存储器孔径484确定了要求块可寻址处理或字节可寻址处理。在执行块可寻址处理的情况下,前端处理器确定所请求的块是否在相关联的高速缓存中,诸如高速缓存352(步骤515)。如果所请求的块存在于高速缓存中,则通过块I/O处理来传输所请求的块(步骤520)。在一种实现方式中,块I/O处理可以是块I/O DMA命令处理。如果所请求的块不存在于高速缓存中,则从目的地装置读取所请求的块(步骤525),然后通过块I/O处理来传输(步骤520)。在一种实现方式中,请求的或读取的块保存在高速缓存中。在一种实现方式中,无论目标装置如何,所请求的块都被传输到系统存储器。
在执行字节可寻址处理的情况下,前端处理器确定所请求的块是否在相关联的高速缓存中(步骤530)。如果所请求的字节存在于高速缓存中,则将所请求的字节直接传输到目标处理器(步骤535)。如果所请求的字节不存在于高速缓存中,则从目的地装置读取包含所请求的字节的块(步骤540)。然后,前端处理器将所请求的字节传输到目标处理器(步骤535)。在一种实现方式中,请求的或读取的块保存在高速缓存中。
图6与图3和图4一起示出了用于在写访问场景中为块I/O装置提供字节可寻址性的示例流程图600。数据传输命令或存储器访问请求从诸如处理器320或GPU 340之类的处理器(步骤605)通过诸如PCIe交换机330之类的本地交换机发送到诸如NVM 334之类目的地装置。在一种实现方式中,目的地地址与数据传输命令一起提供。诸如前端处理器350之类的前端处理器确定数据传输命令是需要块可寻址处理还是需要字节可寻址处理(步骤610)。在一种实现方式中,数据传输命令是落入寄存器孔径还是存储器孔径484确定了要求块可寻址处理或字节可寻址处理。在执行块可寻址处理的情况下,前端处理器确定所请求的块是否在相关联的高速缓存中,诸如高速缓存352(步骤615)。如果所请求的块存在于高速缓存中,则用数据来更新高速缓存(步骤620),并且通过NVM控制器332的块I/O DMA命令,将数据刷新回目的地装置,诸如NVM 334(步骤622)。在一种实现方式中,使高速缓存中的数据失效(步骤621),并且通过NVM控制器332的块I/O DMA命令,在目的地装置中更新数据(步骤622)。可以使用各种技术来实现高速缓存失效,并且图6是说明性的。如果所请求的块不存在于高速缓存中,则通过块I/O DMA命令,在目的地装置中更新数据(步骤625)。
在执行字节可寻址处理的情况下,前端处理器确定所请求的字节是否在相关联的高速缓存中(步骤630)。如果所请求的字节存在于高速缓存中,则直接更新高速缓存(即,在字节级别),(步骤635),并且通过NVM控制器332的块I/O DMA命令,将数据刷新回目的地装置,诸如NVM 334(步骤637)。在一种实现方式中,使高速缓存中的数据失效(步骤636),并且通过NVM控制器332的块I/O DMA命令,在目的地装置中更新数据(步骤637)。如果所请求的字节不存在于高速缓存中,则通过块I/O DMA命令,在目的地装置中更新数据(步骤640)。
图7是其中可以实现一种或多种公开的实现方式的一部分的示例装置700的框图。装置700可以包括例如头戴式装置、服务器、计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话或平板计算机。装置700包括处理器702、存储器704、存储装置706、一个或多个输入装置708,以及一个或多个输出装置710。装置700还可任选地包括输入驱动程序712和输出驱动程序714。应理解的是,装置700可包括图7中未示出的其他部件。
处理器702可包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一裸片上的CPU和GPU,或一个或多个处理器核心,其中每个处理器核心都可以是CPU或GPU。存储器704可以与处理器702位于同一裸片上,或者可与处理器702分开。存储器704可包括易失性存储器或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储装置706可包括固定存储装置或可移除存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置708可包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物识别扫描器或网络连接件(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出装置710可包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接件(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动程序712与处理器702和输入装置708进行通信,并允许处理器702从输入装置708接收输入。输出驱动程序714与处理器702和输出装置710进行通信,并允许处理器702将输出发送到输出装置710。应指出的是,输入驱动程序712和输出驱动程序714是任选部件,并且在输入驱动程序712和输出驱动程序714不存在的情况下,装置700将以相同方式操作。
通常,用于传输数据的方法包括前端处理器,当处理器需要访问块输入/输出(I/O)装置时,前端处理器通过本地交换机接收数据传输命令。如果通过第一路径接收到数据传输命令,则前端处理器执行字节可寻址处理,并且在执行字节可寻址处理的情况下,检查在数据传输命令中请求的字节是否在与前端处理器相关联的高速缓存中。当数据传输命令是读取时,前端处理器在高速缓存中没有该字节的情况下,从块I/O装置读取包含该字节的块,并且通过本地交换机,将该字节从前端处理器直接传输到目标处理器。在一种实现方式中,处理器是图形处理单元(GPU)或中央处理单元(CPU)之一,目标处理器在GPU或CPU之一中,本地交换机是外围部件互连快速(PCIe)交换机或根联合体,并且块I/O装置是非易失性存储器(NVM)装置。在一种实现方式中,第一路径是在本地交换机的存储器孔径接收数据传输命令。在一种实现方式中,该方法还确定在数据传输命令中的目的地地址是否落入存储器孔径内。在一种实现方式中,该方法还在从块I/O装置读取块的情况下,将块存储在高速缓存中。在一种实现方式中,其中如果通过第二路径接收到数据传输命令,则前端处理器执行块可寻址处理。在一种实现方式中,其中第二路径是在本地交换机的寄存器孔径接收数据传输命令。在一种实现方式中,该方法还确定在数据传输命令中的目的地地址是否落入寄存器孔径内。在一种实现方式中,当数据传输命令是写入时,该方法还在高速缓存中存在字节的情况下更新高速缓存,并将数据刷新回块输入/输出(I/O)装置。
通常,用于传输数据的设备包括至少一个图形处理单元(GPU)、至少一个块输入/输出(I/O)装置、连接到至少一个GPU的本地交换机、连接到本地交换机和至少一个块I/O装置的前端处理器,以及连接到前端处理器的高速缓存。当需要访问至少一个块I/O装置时,前端处理器从GPU接收数据传输命令,如果通过第一路径接收到数据传输命令,则对数据传输命令执行字节可寻址处理,并且在执行字节可寻址处理的情况下,检查在数据传输命令中请求的字节是否在高速缓存中。当数据传输命令是读取时,前端处理器在高速缓存中不存在该字节的情况下,从至少一个块I/O装置读取包含该字节的块,并将该字节直接传输到目标处理器。在一种实现方式中,该设备还包括本地交换机中的存储器孔径,其中第一路径是在本地交换机的存储器孔径接收数据传输命令。在一种实现方式中,前端处理器确定在数据传输命令中的目的地地址是否落入存储器孔径内。在一种实现方式中,如果从至少一个块I/O装置读取块,则前端处理器将块存储在高速缓存中。在一种实现方式中,如果通过第二路径接收到数据传输命令,则前端处理器对数据传输命令执行块可寻址处理。在一种实现方式中,该设备还包括本地交换机中的寄存器孔径,其中第二路径是在本地交换机的寄存器孔径接收数据传输命令。在一种实现方式中,前端处理器确定在数据传输命令中的目的地地址是否落入寄存器孔径内。在一种实现方式中,当数据传输命令是写入时,前端处理器在高速缓存中存在字节的情况下,更新高速缓存,并将数据刷新回到至少一个块输入/输出(I/O)装置。
通常,用于传输数据的系统包括主处理器,以及至少一个固态图形(SSG)卡,其中主处理器包括处理器和系统存储器。每个SSG卡都包括至少一个图形处理单元(GPU)、至少一个块输入/输出(I/O)装置、连接到主处理器和至少一个GPU的本地交换机、连接到本地交换机和每个块I/O装置的前端处理器,以及连接到前端处理器的高速缓存。当需要访问至少一个块I/O装置时,前端处理器从GPU或主处理器之一接收数据传输命令,如果通过第一路径接收到数据传输命令,则对数据传输命令执行字节可寻址处理,并且在执行字节可寻址处理的情况下,检查在数据传输命令中请求的字节是否在高速缓存中。当数据传输命令是读取时,如果该字节不在高速缓存中,则前端处理器从块I/O装置读取包含该字节的块,并通过本地交换机,将该字节直接传输到目标处理器。在一种实现方式中,该系统还包括本地交换机中的存储器孔径,其中第一路径是在本地交换机的存储器孔径接收数据传输命令,并且其中前端处理器确定在数据传输命令中的目的地地址是否落在存储器孔径内。在一种实现方式中,其中如果通过第二路径接收到数据传输命令,则前端处理器对数据传输命令执行块可寻址处理,并且其中本地交换机包括寄存器孔径,并且第二路径是在本地交换机的寄存器孔径接收数据传输命令。
通常,一种计算机可读非暂时性介质包括指令,当在处理系统中执行时,所述指令使得处理系统执行用于传输数据的方法,该方法包括以下步骤:当处理器需要访问块输入/输出(I/O)装置时,通过本地交换机,在前端处理器处接收数据传输命令,如果通过第一路径接收到数据传输命令,则由前端处理器执行字节可寻址处理,并且在执行字节可寻址处理的情况下,检查在数据传输命令中请求的字节是否在与前端处理器相关联的高速缓存中,并且当数据传输命令是读取时,如果该字节不在高速缓存中,则从块I/O装置读取包含该字节的块,并通过本地交换机,将该字节从前端处理器直接传输到目标处理器。在一种实现方式中,其中第一路径是在本地交换机的存储器孔径接收数据传输命令,并且该方法还包括确定在数据传输命令中的目的地地址是否落入存储器孔径内,并且如果通过第二路径接收到数据传输命令,则对数据传输命令执行块可寻址处理,其中第二路径是在本地交换机的寄存器孔径接收数据传输命令。在一种实现方式中,计算机可读非暂时性介质还包括当数据传输命令是写入时,如果字节存在于高速缓存中,则更新高速缓存,并将数据刷新回块输入/输出(I/O)装置。
通常并且不限制本文描述的实现方式,一种计算机可读非暂时性介质包括指令,当在处理系统中执行时,所述指令使得处理系统执行用于访问作为字节可寻址存储器的非易失性存储器的方法。
应理解,基于本文的公开内容,许多变型是可能的。尽管上文以特定组合描述了特征和元件,但是每个特征或元件可在没有其他特征和元件的情况下单独使用,或者可在具有或没有其他特征和元件的情况下以各种组合使用。
可在通用计算机、处理器或处理器核心中实现所提供的方法。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、其他任何类型的集成电路(IC)和/或状态机。可通过使用处理后的硬件描述语言(HDL)指令的结果和包括网表的其他中间数据(这些指令能够存储在计算机可读介质上)配置制造过程来制造这种处理器。这种处理的结果可以是掩膜作品,这种掩膜作品随后在半导体制造过程中用来制造实现实施方案的各方面的处理器。
本文提供的方法或流程图可用并入非暂时性计算机可读存储介质中以供通用计算机或处理器执行的计算机程序、软件或固件来实现。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器装置、诸如内部硬盘和可移动磁盘的磁性介质、磁光介质以及诸如CD-ROM盘和数字通用盘(DVD)的光学介质。

Claims (23)

1.一种传输数据的方法,所述方法包括:
当处理器需要访问块输入/输出(I/O)装置时,通过本地交换机,在前端处理器处接收数据传输命令;
如果通过第一路径接收到所述数据传输命令,则由所述前端处理器执行字节可寻址处理;
在执行字节可寻址处理的情况下,检查在所述数据传输命令中请求的字节是否在与所述前端处理器相关联的高速缓存中;
当所述数据传输命令是读取时:
如果在所述高速缓存中没有所述字节,则从所述块I/O装置读取包含所述字节的块;以及
通过所述本地交换机,从所述前端处理器,将所述字节直接传输到目标处理器。
2.如权利要求1所述的方法,其中所述处理器是图形处理单元(GPU)或中央处理单元(CPU)之一,所述目标处理器在GPU或CPU之一中,所述本地交换机是外围部件互连快速(PCIe)交换机或根联合体,并且所述块I/O装置是非易失性存储器(NVM)装置。
3.如权利要求1所述的方法,其中所述第一路径是在所述本地交换机的存储器孔径接收所述数据传输命令。
4.如权利要求3所述的方法,其还包括:
确定所述数据传输命令中的目的地地址是否落在所述存储器孔径内。
5.如权利要求1所述的方法,其还包括:
如果从所述块I/O装置读取所述块,则将所述块存储在所述高速缓存中。
6.如权利要求3所述的方法,其还包括:
如果通过第二路径接收到所述数据传输命令,则由所述前端处理器执行块可寻址处理。
7.如权利要求6所述的方法,其中所述第二路径是在所述本地交换机的寄存器孔径接收所述数据传输命令。
8.如权利要求7所述的方法,其还包括:
确定所述数据传输命令中的目的地地址是否落在所述寄存器孔径内。
9.如权利要求1所述的方法,其还包括:
当所述数据传输命令是写入时:
如果所述字节存在于所述高速缓存中,则更新所述高速缓存;以及
将数据刷新回到所述块I/O装置。
10.一种用于传输数据的设备,其包括:
至少一个图形处理单元(GPU);
至少一个块输入/输出(I/O)装置;
连接到所述至少一个GPU的本地交换机;
连接到所述本地交换机和所述至少一个块I/O装置的前端处理器;以及
连接到所述前端处理器的高速缓存,
其中所述前端处理器:
当需要访问所述至少一个块I/O装置时,从所述GPU接收数据传输命令;
如果通过第一路径接收到所述数据传输命令,则对所述数据传输命令执行字节可寻址处理;
在执行字节可寻址处理的情况下,检查在所述数据传输命令中请求的字节是否在所述高速缓存中;
当所述数据传输命令是读取时:
在所述高速缓存中不存在所述字节的情况下,从所述至少一个块I/O装置读取包含所述字节的块;以及
将所述字节直接传输到目标处理器。
11.如权利要求10所述的设备,其还包括:
所述本地交换机中的存储器孔径,其中所述第一路径是在所述本地交换机的所述存储器孔径接收所述数据传输命令。
12.如权利要求11所述的设备,其中所述前端处理器:
确定所述数据传输命令中的目的地地址是否落在所述存储器孔径内。
13.如权利要求10所述的设备,其中所述前端处理器:
在从所述至少一个块I/O装置读取所述块的情况下,将所述块存储在所述高速缓存中。
14.如权利要求10所述的设备,其中所述前端处理器:
如果通过第二路径接收到所述数据传输命令,则对所述数据传输命令执行块可寻址处理。
15.如权利要求14所述的设备,其还包括:
所述本地交换机中的寄存器孔径,其中所述第二路径是在所述本地交换机的所述寄存器孔径接收所述数据传输命令。
16.如权利要求15所述的设备,其中所述前端处理器:
确定所述数据传输命令中的目的地地址是否落在所述寄存器孔径内。
17.如权利要求10所述的设备,其中所述前端处理器:
当所述数据传输命令是写入时:
如果所述字节存在于所述高速缓存中,则更新所述高速缓存;以及
将数据刷新回到所述至少一个块I/O装置。
18.一种用于传输数据的系统,其包括:
主处理器,所述主处理器包括处理器和系统存储器;以及
至少一个固态图形(SSG)卡,其中每个SSG卡都包括:
至少一个图形处理单元(GPU);
至少一个块输入/输出(I/O)装置;
连接到所述主处理器和所述至少一个GPU的本地交换机;
连接到所述本地交换机和每个块I/O装置的前端处理器;以及
连接到所述前端处理器的高速缓存,
其中所述前端处理器:
当需要访问所述至少一个块I/O装置时,从所述GPU或主处理器之一接收数据传输命令;
如果通过第一路径接收到所述数据传输命令,则对所述数据传输命令执行字节可寻址处理;
在执行字节可寻址处理的情况下,检查在所述数据传输命令中请求的字节是否在所述高速缓存中;
当所述数据传输命令是读取时:
如果在所述高速缓存中没有所述字节,则从所述块I/O装置读取包含所述字节的块;以及
通过所述本地交换机,将所述字节直接传输到目标处理器。
19.如权利要求18所述的系统,其还包括:
所述本地交换机中的存储器孔径,其中所述第一路径是在所述本地交换机的所述存储器孔径接收所述数据传输命令,并且其中所述前端处理器确定在所述数据传输命令中的目的地地址是否落入所述存储器孔径内。
20.如权利要求18所述的系统,其中如果通过第二路径接收到所述数据传输命令,则所述前端处理器对所述数据传输命令执行块可寻址处理,其中所述本地交换机包括寄存器孔径,并且所述第二路径是在所述本地交换机的所述寄存器孔径接收所述数据传输命令。
21.一种计算机可读非暂时性介质,其包括指令,当在处理系统中执行时,所述指令使所述处理系统执行用于传输数据的方法,所述方法包括以下步骤:
当处理器需要访问块输入/输出(I/O)装置时,通过本地交换机,在前端处理器处接收数据传输命令;
如果通过第一路径接收到所述数据传输命令,则由所述前端处理器执行字节可寻址处理;
在执行字节可寻址处理的情况下,检查在所述数据传输命令中请求的字节是否在与所述前端处理器相关联的高速缓存中;
当所述数据传输命令是读取时:
如果在所述高速缓存中没有所述字节,则从所述块I/O装置读取包含所述字节的块;以及
通过所述本地交换机,从所述前端处理器,将所述字节直接传输到目标处理器。
22.如权利要求21所述的计算机可读非暂时性介质,其中所述第一路径是在所述本地交换机的存储器孔径接收所述数据传输命令,并且还包括:
确定在所述数据传输命令中的目的地地址是否落在所述存储器孔径内;以及
如果通过第二路径接收到所述数据传输命令,则对所述数据传输命令执行块可寻址处理,其中所述第二路径是在所述本地交换机的寄存器孔径接收所述数据传输命令。
23.如权利要求21所述的计算机可读非暂时性介质,其还包括:
当所述数据传输命令是写入时:
如果所述字节存在于所述高速缓存中,则更新所述高速缓存;以及
将数据刷新回到所述块I/O装置。
CN201780080357.7A 2016-12-23 2017-12-06 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备 Active CN110114762B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/389,811 US10521389B2 (en) 2016-12-23 2016-12-23 Method and apparatus for accessing non-volatile memory as byte addressable memory
US15/389,811 2016-12-23
PCT/CA2017/051471 WO2018112604A1 (en) 2016-12-23 2017-12-06 Method and apparatus for accessing non-volatile memory as byte addressable memory

Publications (2)

Publication Number Publication Date
CN110114762A true CN110114762A (zh) 2019-08-09
CN110114762B CN110114762B (zh) 2023-09-15

Family

ID=62624080

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780080357.7A Active CN110114762B (zh) 2016-12-23 2017-12-06 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备

Country Status (5)

Country Link
US (1) US10521389B2 (zh)
JP (2) JP7227907B2 (zh)
KR (1) KR102617360B1 (zh)
CN (1) CN110114762B (zh)
WO (1) WO2018112604A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10714179B2 (en) * 2016-10-07 2020-07-14 Hewlett-Packard Development Company, L.P. Hybrid memory devices
US10909012B2 (en) 2018-11-12 2021-02-02 H3 Platform, Inc. System having persistent memory
CN110209605B (zh) * 2019-05-31 2021-09-07 广州大学 Pcie总线网卡的寄存器读写方法和计算设备
US11467776B1 (en) * 2021-06-28 2022-10-11 H3 Platform Inc. System supporting virtualization of SR-IOV capable devices

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017461A (zh) * 2006-02-07 2007-08-15 国际商业机器公司 统一cpu操作和io操作的存储器访问的方法和系统
US20100191898A1 (en) * 2009-01-23 2010-07-29 Jin-Kyu Kim Complex memory device and i/o processing method using the same
US20140129753A1 (en) * 2012-11-06 2014-05-08 Ocz Technology Group Inc. Integrated storage/processing devices, systems and methods for performing big data analytics
US20140280664A1 (en) * 2013-03-14 2014-09-18 Microsoft Corporation Caching content addressable data chunks for storage virtualization
US20140317336A1 (en) * 2013-04-23 2014-10-23 International Business Machines Corporation Local direct storage class memory access
US20150324118A1 (en) * 2014-05-07 2015-11-12 HGST Netherlands B.V. SYSTEM AND METHOD FOR PEER-TO-PEER PCIe STORAGE TRANSFERS
JP2016062406A (ja) * 2014-09-19 2016-04-25 国立大学法人 筑波大学 メモリシステム、メモリシステムの制御方法及びプログラム
CN105706071A (zh) * 2013-09-26 2016-06-22 英特尔公司 持久性存储器的块存储孔
US20160350010A1 (en) * 2015-05-31 2016-12-01 Vmware, Inc. Providing block size compatibility with a storage filter

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050251617A1 (en) 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
JP4910360B2 (ja) * 2005-10-20 2012-04-04 ソニー株式会社 記憶装置、コンピュータシステム、およびデータ書き込み方法
US20090203430A1 (en) 2008-02-07 2009-08-13 Igt Hybrid memory system and spin-buffer journaling in a gaming machine
US9058675B2 (en) 2010-05-29 2015-06-16 Intel Corporation Non-volatile storage for graphics hardware
US9251058B2 (en) * 2010-09-28 2016-02-02 SanDisk Technologies, Inc. Servicing non-block storage requests
US9003071B2 (en) 2013-03-13 2015-04-07 Futurewei Technologies, Inc. Namespace access control in NVM express PCIe NVM with SR-IOV
US9311266B2 (en) 2013-06-14 2016-04-12 National Instruments Corporation Hidden base address register programming in peripheral component interconnect express buses
US10275175B2 (en) 2014-10-06 2019-04-30 Western Digital Technologies, Inc. System and method to provide file system functionality over a PCIe interface
US9891824B2 (en) * 2015-04-24 2018-02-13 International Business Machines Corporation Sub-block input/output (I/O) commands for storage device including byte stream buffer

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017461A (zh) * 2006-02-07 2007-08-15 国际商业机器公司 统一cpu操作和io操作的存储器访问的方法和系统
US20100191898A1 (en) * 2009-01-23 2010-07-29 Jin-Kyu Kim Complex memory device and i/o processing method using the same
US20140129753A1 (en) * 2012-11-06 2014-05-08 Ocz Technology Group Inc. Integrated storage/processing devices, systems and methods for performing big data analytics
US20140280664A1 (en) * 2013-03-14 2014-09-18 Microsoft Corporation Caching content addressable data chunks for storage virtualization
US20140317336A1 (en) * 2013-04-23 2014-10-23 International Business Machines Corporation Local direct storage class memory access
CN105706071A (zh) * 2013-09-26 2016-06-22 英特尔公司 持久性存储器的块存储孔
US20150324118A1 (en) * 2014-05-07 2015-11-12 HGST Netherlands B.V. SYSTEM AND METHOD FOR PEER-TO-PEER PCIe STORAGE TRANSFERS
JP2016062406A (ja) * 2014-09-19 2016-04-25 国立大学法人 筑波大学 メモリシステム、メモリシステムの制御方法及びプログラム
US20160350010A1 (en) * 2015-05-31 2016-12-01 Vmware, Inc. Providing block size compatibility with a storage filter

Also Published As

Publication number Publication date
CN110114762B (zh) 2023-09-15
KR102617360B1 (ko) 2023-12-26
JP2020502694A (ja) 2020-01-23
EP3559815A4 (en) 2020-07-29
US10521389B2 (en) 2019-12-31
JP2023015243A (ja) 2023-01-31
WO2018112604A1 (en) 2018-06-28
KR20190098146A (ko) 2019-08-21
JP7227907B2 (ja) 2023-02-22
EP3559815A1 (en) 2019-10-30
US20180181519A1 (en) 2018-06-28

Similar Documents

Publication Publication Date Title
US11500810B2 (en) Techniques for command validation for access to a storage device by a remote client
US10896136B2 (en) Storage system including secondary memory that predicts and prefetches data
US10496281B2 (en) Data storage device, data processing system and method of operation
CN105068953B (zh) 用于对等高速外围组件互联存储传输的系统和方法
CN110114762A (zh) 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备
US9881680B2 (en) Multi-host power controller (MHPC) of a flash-memory-based storage device
US11635902B2 (en) Storage device processing stream data, system including the same, and operation method
US9632953B2 (en) Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
US10866755B2 (en) Two stage command buffers to overlap IOMMU map and second tier memory reads
CN106462521A (zh) 在基于闪存存储器的存储设备的输入/输出虚拟化主机控制器中的命令捕获
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
US10564847B1 (en) Data movement bulk copy operation
JP7247405B2 (ja) ストレージコントローラ、計算ストレージ装置及び計算ストレージ装置の動作方法
US20220283961A1 (en) Computing system for reducing latency between serially connected electronic devices
KR20200051450A (ko) 스트림 데이터를 처리하는 스토리지 장치, 그것의 포함하는 컴퓨팅 시스템, 그리고 그것의 동작 방법
CN114546902A (zh) 基于多协议访问存储器的系统、设备和方法
EP3559815B1 (en) Method and apparatus for accessing non-volatile memory as byte addressable memory
US11321254B2 (en) Computing system for transmitting completion early between serially connected electronic devices
KR20230138777A (ko) 데이터 재구성가능한 스토리지 장치, 전자 시스템 및 그 동작방법

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