CN116700629B - 数据处理方法和装置 - Google Patents
数据处理方法和装置 Download PDFInfo
- Publication number
- CN116700629B CN116700629B CN202310961363.0A CN202310961363A CN116700629B CN 116700629 B CN116700629 B CN 116700629B CN 202310961363 A CN202310961363 A CN 202310961363A CN 116700629 B CN116700629 B CN 116700629B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- read
- segment
- memory data
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 230000015654 memory Effects 0.000 claims abstract description 246
- 238000000034 method Methods 0.000 claims abstract description 31
- 239000012634 fragment Substances 0.000 claims description 32
- 230000006870 function Effects 0.000 description 33
- 230000008676 import Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000003491 array Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 229910052799 carbon Inorganic materials 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请一个或多个实施例提供一种数据处理方法和装置,应用于电子设备上搭载的WebAssembly虚拟机;电子设备上还搭载了NVM和RAM;该方法包括:从NVM中加载与任一程序模块的程序代码对应的WebAssembly二进制文件,从该二进制文件中确定出内存数据总量;从该二进制文件中确定出至少一个内存数据片段,以及各个内存数据片段的数据属性;基于数据属性从至少一个内存数据片段中确定出只读数据片段,并确定只读数据片段的数据量之和;将内存数据总量与只读数据片段的数据量之和的差值确定为全局数据量,以在执行程序模块时按照全局数据量在RAM中创建存储空间,并将只读数据片段保持存储在NVM中。
Description
技术领域
本申请一个或多个实施例涉及计算机技术领域,尤其涉及一种数据处理方法和装置。
背景技术
WebAssembly是一种新的编码格式,其类似于一种低级的汇编语言,但是可以提供新的性能特性和效果。WebAssembly设计的目的是为高级语言(例如:C、C++、Rust等)提供一个高效的编译目标。
模块是WebAssembly程序编译、传输和加载的单位。基于高级语言编写的程序(例如:应用程序、程序库、系统函数等)的程序代码,可以被编译成WebAssembly程序模块。WebAssembly程序模块实际上是一种以WebAssembly二进制文件的形式呈现的字节码,可以被加载到WebAssembly虚拟机中,由WebAssembly虚拟机解释成机器码并执行。WebAssembly二进制文件通常以.wasm作为文件后缀。
资源受限设备通常是指电量供应有限、计算能力有限以及存储容量有限的电子设备,包括智能卡、安全元件(Secure Element,SE)、物联网设备等。也即,资源受限设备的非易失性存储器(Non-Volatile Memory,NVM)资源有限,一般大小为几十kB至几百kB,最大为几MB;资源受限设备的随机存取存储器(Random Access Memory,RAM)资源也有限,一般为几kB至几十kB。
由于资源受限设备的NVM资源和RAM资源有限,通常不能将标准的WebAssembly技术直接应用于资源受限设备,而是需要进行相应的优化。
发明内容
本申请一个或多个实施例提供技术方案如下:
本申请还提供一种数据处理方法,应用于电子设备上搭载的WebAssembly虚拟机;所述电子设备上还搭载了非易失性存储器NVM和随机存取存储器RAM;所述方法包括:
从所述NVM中加载与任一程序模块的程序代码对应的WebAssembly二进制文件,从所述WebAssembly二进制文件中确定出内存数据总量;
从所述WebAssembly二进制文件中确定出至少一个内存数据片段,以及所述至少一个内存数据片段中的各个内存数据片段的数据属性;
基于所述数据属性从所述至少一个内存数据片段中确定出只读数据片段,并确定所述只读数据片段的数据量之和;
将所述内存数据总量与所述只读数据片段的数据量之和的差值确定为全局数据量,以在执行所述程序模块时按照所述全局数据量在所述RAM中创建存储空间,并将所述只读数据片段保持存储在所述NVM中。
本申请还提供一种数据处理装置,应用于电子设备上搭载的WebAssembly虚拟机;所述电子设备上还搭载了非易失性存储器NVM和随机存取存储器RAM;所述装置包括:
第一确定单元,用于从所述NVM中加载与任一程序模块的程序代码对应的WebAssembly二进制文件,从所述WebAssembly二进制文件中确定出内存数据总量;
第二确定单元,用于从所述WebAssembly二进制文件中确定出至少一个内存数据片段,以及所述至少一个内存数据片段中的各个内存数据片段的数据属性;
第三确定单元,用于基于所述数据属性从所述至少一个内存数据片段中确定出只读数据片段,并确定所述只读数据片段的数据量之和;
第四确定单元,将所述内存数据总量与所述只读数据片段的数据量之和的差值确定为全局数据量,以在执行所述程序模块时按照所述全局数据量在所述RAM中创建存储空间,并将所述只读数据片段保持存储在所述NVM中。
本申请还提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。
在上述技术方案中,对于搭载了非易失性存储器NVM和随机存取存储器RAM的电子设备而言,可以由该电子设备上搭载的WebAssembly虚拟机从该NVM中加载与任一程序模块的程序代码对应的WebAssembly二进制文件,进而一方面,可以从该WebAssembly二进制文件中确定出在标准的WebAssembly技术中,该程序模块中在执行该程序模块本身时会被存储到该RAM中的内存数据的内存数据总量,另一方面,可以先从该WebAssembly二进制文件中确定出至少一个内存数据片段,以及这至少一个内存数据片段中的各个内存数据片段的数据属性,再基于该数据属性从这至少一个内存数据片段中确定出只读数据片段,并确定所有只读数据片段的数据量之和;在这种情况下,可以将该内存数据总量与该只读数据片段的数据量之和的差值确定为全局数据量,从而可以在执行该程序模块时按照该全局数据量在该RAM中创建存储空间,而将所有只读数据片段保持存储在该NVM中。
采用上述方式,由于在由WebAssembly虚拟机执行WebAssembly程序模块时,不再将内存数据中的只读数据存储到与WebAssembly虚拟机对应的RAM中,而是保持存储在与WebAssembly虚拟机对应的NVM中,仅按照内存数据量和只读数据量的差值在该RAM中创建存储空间,使得占用的由RAM提供的存储空间减少。也即,可以在WebAssembly程序模块的执行阶段,减少对RAM资源的占用。
附图说明
下面将对示例性实施例的描述中所需要使用的附图进行说明,其中:
图1是本申请一示例性实施例示出的一种数据处理方法的流程图;
图2是本申请一示例性实施例示出的一种设备的结构示意图;
图3是本申请一示例性实施例示出的一种数据处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或者相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请一个或多个实施例相一致的所有实施方式。相反,它们仅是与本申请一个或多个实施例的一些方面相一致的例子。
需要说明的是,在其他实施例中并不一定按照本申请示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本申请所描述的更多或者更少。此外,本申请中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本申请中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
为了便于理解,下面先对标准的WebAssembly二进制文件的数据格式进行简要说明。
WebAssembly程序模块包含其程序代码中的函数、表、内存、全局变量、导入信息、导出信息等;另外,还包含内存和表的初始化数据以及模块的入口函数。
作为WebAssembly程序模块的呈现形式的WebAssembly二进制文件一共有11种数据段,分别为类型段、导入段、函数段、表段、内存段、全局段、导出段、起始段、元素段、代码段、数据段和自定义段。其中:
(1)类型段
类型段存储模块使用到的所有函数类型。
(2)导入段和导出段
导入段存储模块所有的导入项目(例如:导入函数的函数名称、与导入函数对应的模块名称),导出段存储模块所有的导出项目(例如:导出函数的函数名称和函数索引)。多个模块可以通过导入项目和导出项目链接在一起。一个模块可以根据该模块包含的导入段中与导入函数对应的模块名称以及导入函数的函数名称,确定该模块需要调用的其他模块以及其他模块中的函数;相应地,一个模块可以对外提供该模块包含的导出段中的导出函数的函数名称,从而使其他模块可以通过将导出函数的函数名称以及该模块的模块名称(通常存储在自定义段中)添加到其他模块包含的导入段中,调用该模块中的导出函数。
(3)函数段和代码段
模块内的函数信息分开存储在函数段和代码段中。函数段存储模块内所有函数对应类型索引,代码段存储模块内所有函数的局部变量信息和字节码。函数段和代码段存储的项目数量一致,且一一对应。
(4)表段和元素段
表段存储模块内定义的所有表,元素段存储表初始化数据。
(5)内存段和数据段
内存段存储模块内定义的所有内存,数据段存储常量和内存初始化数据。
(6)全局段
全局段存储模块内定义的所有全局变量信息。
(7)起始段
起始段存储模块的入口函数索引。
(8)自定义段
自定义段存储自定义信息,包括模块名称、数据段属性等。自定义段还包含namesection字段,该字段中存储函数名、局部变量名等调试信息和第三方扩展信息。
在标准的WebAssembly二进制文件中,数据段包含常量和内存初始化数据,全局段包含全局数组和全局变量,代码段包含具有初值的局部数组和局部结构体。在WebAssembly程序模块的加载阶段,需要为模块中所有常量、全局数组和全局变量,以及具有初值的局部数组和局部结构体分配内存中的存储空间,而在WebAssembly程序模块的执行阶段,这些数据就会被存储到内存中。因此,这些数据通常也被称为内存数据。
在实际的应用中,一个电子设备的内存通常由该电子设备上搭载的RAM实现。也即,执行标准的WebAssembly程序模块就需要占用大量的RAM资源。
基于如前所述的标准的WebAssembly二进制文件,本申请提供一种针对标准的WebAssembly技术进行优化的技术方案,以减少在WebAssembly程序模块的执行阶段对RAM资源的占用。
请参考图1,图1是本申请一示例性实施例示出的一种数据处理方法。
在本实施例中,上述数据处理方法可以应用于任意一个电子设备上搭载的WebAssembly虚拟机。其中,该电子设备可以是智能卡、安全元件(Secure Element,SE)、物联网设备等资源受限设备;或者,该电子设备可以是其他具有NVM资源且具有一定的计算能力的设备,使得该电子设备上搭载的WebAssembly虚拟机可以从该电子设备上搭载的NVM中加载WebAssembly程序模块,例如:包含一台独立的物理主机的服务器、由多台互相独立的物理主机构成的服务器集群、台式计算机、笔记本电脑、掌上电脑(PDAs,Personal DigitalAssistants)等。
需要说明的是,上述电子设备上还可以搭载NVM和RAM。作为WebAssembly程序模块的呈现形式的WebAssembly二进制文件可以被存储在该NVM中。在由该电子设备上搭载的WebAssembly虚拟机加载WebAssembly程序模块时,具体可以由该WebAssembly虚拟机从该NVM中读取WebAssembly二进制文件,并将WebAssembly二进制文件解释成机器码;而在由该WebAssembly虚拟机执行WebAssembly的程序模块时,具体可以由该WebAssembly虚拟机执行对WebAssembly二进制文件进行解释得到的机器码。在标准的WebAssembly技术中,在WebAssembly程序模块的执行阶段,模块中的内存数据会被存储到该RAM中。
在实际的应用中,WebAssembly虚拟机可以基于软件方式来实现,NVM和RAM则可以是作为电子设备的组成部分的硬件。
上述数据处理方法可以包括以下步骤:
步骤101:从所述NVM中加载与任一程序模块的程序代码对应的WebAssembly二进制文件,从所述WebAssembly二进制文件中确定出内存数据总量。
在本实施例中,上述电子设备首先可以获取到与任意一个程序模块的程序代码对应的WebAssembly二进制文件。
在实际的应用中,在一个例子中,上述电子设备可以对外提供编译功能。在这种情况下,可以对基于高级语言编写的程序(例如:应用程序、程序库、系统函数等)的程序代码进行编译,得到WebAssembly程序模块。如前所述,WebAssembly程序模块以WebAssembly二进制文件的形式呈现。因此,在编译完成时,就获取到了与程序模块的程序代码对应的WebAssembly二进制文件。
在另一个例子中,上述电子设备可以接收由其他设备发送的WebAssembly程序模块,并对该程序模块进行存储。如前所述,WebAssembly程序模块以WebAssembly二进制文件的形式呈现。因此,在接收到某个WebAssembly程序模块时,就获取到了与该程序模块的程序代码对应的WebAssembly二进制文件。
其中,不管是通过编译得到的WebAssembly二进制文件,还是接收到的由其他设备发送的WebAssembly二进制文件,都可以被存储在上述电子设备上搭载的NVM中。
在一些实施例中,上述程序模块可以包括应用模块、库模块和/或系统模块。其中,应用模块可以是通过对基于高级语言编写的应用程序进行编译得到的WebAssembly程序模块;库模块可以是通过对基于高级语言编写的程序库进行编译得到的WebAssembly程序模块;系统模块可以是通过对基于高级语言编写的系统函数进行编译得到的WebAssembly程序模块。
在获取到了上述WebAssembly二进制文件的情况下,可以由上述电子设备上搭载的WebAssembly虚拟机加载该WebAssembly二进制文件。在加载该WebAssembly二进制文件的过程中,可以先从该WebAssembly二进制文件中确定出模块中的内存数据的内存数据总量。如前所述,上述程序模块中的内存数据即为在标准的WebAssembly技术中,在该程序模块的执行阶段会被存储到该电子设备上搭载的RAM中的数据。
在一些实施例中,在从上述WebAssembly二进制文件中确定出上述内存数据总量时,具体可以从该WebAssembly二进制文件中提取出模块中的内存数据的起始偏移地址和结束偏移地址,并将该结束偏移地址和该起始偏移地址的差值确定为该内存数据总量。例如,假设该起始偏移地址为地址1,该结束偏移地址为地址2,则该内存数据总量=地址2-地址1。
在一些实施例中,上述WebAssembly二进制文件可以与标准的WebAssembly二进制文件类似,包含用于存储上述内存数据的起始偏移地址和结束偏移地址的全局段。在这种情况下,可以从该全局段中提取出该内存数据的起始偏移地址和结束偏移地址。
具体地,上述全局段包含__global_base变量和__data_end变量。其中,__global_base变量的初始值可以表示上述内存数据的起始偏移地址,__data_end变量的初始值可以表示该内存数据的结束偏移地址。
步骤102:从所述WebAssembly二进制文件中确定出至少一个内存数据片段,以及所述至少一个内存数据片段中的各个内存数据片段的数据属性。
在本实施例中,在加载上述WebAssembly二进制文件的过程中,除了可以从该WebAssembly二进制文件中确定出上述内存数据总量之外,还可以从该WebAssembly二进制文件中确定出至少一个内存数据片段,以及这至少一个内存数据片段中的各个数据片段的数据属性。
在一些实施例中,在从上述WebAssembly二进制文件中确定出上述至少一个内存数据片段时,具体可以从该WebAssembly二级制文件中提取出至少一个内存数据片段中的各个内存数据片段的起始偏移地址和存储地址长度。
需要说明的是,对于一个内存数据片段而言,该内存数据片段的结束偏移地址,可以是由该内存数据片段的起始偏移地址加上该内存数据片段的存储地址长度得到的地址。例如,假设该内存数据片段的起始偏移地址为地址1,该内存数据片段的存储地址长度为地址长度1,则该内存数据片段的结束偏移地址=地址1+地址长度1。
在一些实施例中,上述WebAssembly二进制文件可以与标准的WebAssembly二进制文件类似,包含用于存储上述内存数据片段的起始偏移地址和存储地址长度的数据段。在这种情况下,可以从该数据段中提取出上述至少一个内存数据片段中的各个内存数据片段的起始偏移地址和存储地址长度。
在一些实施例中,在从上述WebAssembly二进制文件中确定出上述至少一个内存数据片段中的各个内存数据片段的数据属性时,具体可以从该WebAssembly二进制文件中提取出这至少一个内存数据片段中的各个内存数据片段的数据属性和数据片段索引。
在一些实施例中,上述WebAssembly二进制文件可以与标准的WebAssembly二进制文件类似,包含用于存储上述内存数据片段的数据属性和数据片段索引的自定义段。在这种情况下,可以从该自定义段中提取出上述至少一个内存数据片段中的各个内存数据片段的数据属性和数据片段索引。
具体地,上述自定义段可以包含字段ID为09的字段,该字段中可以存储内存数据片段的数据属性。该自定义段中存储的数据属性与数据片段索引一一对应,互相对应的一个数据属性和一个数据片段索引均对应于一个内存数据片段。
步骤103:基于所述数据属性从所述至少一个内存数据片段中确定出只读数据片段,并确定所述只读数据片段的数据量之和。
在本实施例中,在确定出了上述至少一个内存数据片段,以及这至少一个内存数据片段中的各个数据片段的数据属性的情况下,可以进一步地基于这至少一个内存数据片段中的各个数据片段的数据属性,从这至少一个内存数据片段中确定出只读数据片段,而在确定出了所有只读数据片段的情况下,即可确定所有只读数据片段的数据量之和。其中,该只读数据片段为上述内存数据片段中,数据属性为只读的内存数据片段。数据的数据属性为只读表示该数据为只读数据,例如:常量。
在一些实施例中,如前所述,可以从上述WebAssembly二级制文件中提取出上述至少一个内存数据片段中的各个内存数据片段的起始偏移地址和存储地址长度。因此,对于从这至少一个内存数据片段中确定出的只读数据片段而言,也就得到了各个只读数据片段的起始偏移地址和存储地址长度。相应地,在确定上述只读数据片段的数据量之和时,具体可以计算所有只读数据片段的存储地址长度之和,并将该存储地址长度之和确定为所有只读数据片段的数据量之和。例如,假设从上述至少一个内存数据片段中确定出的只读数据片段一共有3个,其中只读数据片段1的存储地址长度为地址长度1,只读数据片段2的存储地址长度为地址长度2,只读数据片段3的存储地址长度为地址长度3,则所有只读数据片段的数据量之和=地址长度1+地址长度2+地址长度3。
在一些实施例中,如前所述,可以从上述WebAssembly二进制文件中提取出上述至少一个内存数据片段中的各个内存数据片段的数据属性和数据片段索引。在这种情况下,在基于上述数据属性从这至少一个内存数据片段中确定出上述只读数据片段时,具体可以先基于这至少一个内存数据片段中的各个数据片段的数据属性,从这至少一个内存数据片段的数据片段索引中确定出只读数据片段的数据片段索引,再根据确定出的数据片段索引,查找与确定出的数据片段索引对应的内存数据片段,以从这至少一个内存数据片段中确定出与确定出的数据片段索引对应的内存数据片段,此时查找到的内存数据片段即为只读数据片段。由于可以获取到这至少一个内存数据片段中的各个内存数据片段的起始偏移地址和存储地址长度,就可以获取到各个只读数据片段的起始偏移地址和存储地址长度。
具体地,可以从上述自定义段包含的字段ID为09的字段中,获取各个内存数据片段的数据属性,进而可以从中确定出标记为.rodata属性的数据段索引。其中,标记为.rodata属性的数据段索引即为只读数据片段的数据段索引。
步骤104:将所述内存数据总量与所述只读数据片段数据量之和的差值确定为全局数据量,以在执行所述程序模块时按照所述全局数据量在所述RAM中创建存储空间,并将所述只读数据片段保持存储在所述NVM中。
在本实施例中,在确定出了上述内存数据总量和上述只读数据片段的数据量之和的情况下,可以将该内存数据总量与该只读数据片段的数据量之和的差值确定为全局数据量。例如,假设该内存数据总量为数据量(实际上为地址长度)1,该只读数据片段的数据量之和为数据量(实际上也为地址长度)2,则该全局数据量=数据量1-数据量2。
后续,上述电子设备上搭载的WebAssembly虚拟机在执行上述程序模块时,可以仅按照上述全局数据量在该电子设备上搭载的RAM中创建存储空间。也即,在执行该程序模块时,不会再将上述只读数据片段存储到该RAM中,而是将这些只读数据片段保持存储在该电子设备上搭载的NVM中。由此,可以减少对RAM资源的占用。
在一些实施例中,由于在执行WebAssembly程序模块时,不再将只读数据存储到RAM中,而是将只读数据保持存储在NVM中,就需要对内存数据的访问方式进行相应的修改。
具体地,可以先计算待访问的内存数据的地址偏移。例如,可以使用即时数和操作数来计算待访问的内存数据的地址偏移。
在计算得到了待访问的内存数据的地址偏移后,可以根据该地址偏移和上述只读数据片段的数据量之和,确定该内存数据是否为只读数据。例如,内存数据中的只读数据和全局数据(例如:全局数组和全局变量),在内存中的存储顺序可以是只读数据在前,全局数据在后;在这种情况下,如果该地址偏移小于或等于该只读数据片段的数据量之和,则可以认为该内存数据为只读数据;如果该地址偏移大于该只读数据片段的数据量之和,则可以认为该内存数据不为只读数据。
如果上述待访问的内存数据为只读数据,则可以根据上述地址偏移和上述只读数据片段的起始偏移地址,计算该内存数据的访问地址。具体地,可以从所有只读片段的起始偏移地址中确定出最小的起始偏移地址(即位于最前面的起始偏移地址),并根据该地址偏移和该最小的起始偏移地址,计算该内存数据的访问地址。例如,该内存数据的访问地址=该最小的起始偏移地址+该地址偏移。后续,可以按照该访问地址,获取上述电子设备上搭载的NVM中存储的与该访问地址对应的数据,此时该数据即为待访问的内存数据。
如果上述待访问的内存数据不为只读数据,则可以根据上述地址偏移和上述只读数据片段的数据量之和,计算该内存数据的相对偏移。例如,该内存数据的相对偏移=该地址偏移-该只读数据片段的数据量之和。在计算得到该内存数据的相对偏移后,可以进一步地根据该内存数据的相对偏移和在上述电子设备上搭载的RAM中创建的上述存储空间的起始地址,计算该内存数据的访问地址。例如,该内存数据的访问地址=该存储空间的起始地址+该内存数据的相对偏移。后续,可以按照该访问地址,获取该RAM中存储的与该访问地址对应的数据,此时该数据即为待访问的内存数据。
在另一个例子中,内存数据中的只读数据、全局数据和局部数据(例如:具有初值的局部数组和局部结构体),在内存中的存储顺序可以是只读数据在前,全局数据在中间,局部数据在后。在这种情况下,如果上述地址偏移小于或等于该只读数据片段的数据量之和,则可以认为该内存数据为只读数据;如果该地址偏移大于该只读数据片段的数据量之和,但小于或等于上述内存数据总量,则可以认为该内存数据为全局数据;如果该地址偏移大于该内存数据总量,则可以认为该内存数据为局部数据。
如果上述待访问的内存数据为只读数据或全局数据,则可以按照如前所述的两种方式,获取该待访问的内存数据。
如果上述待访问的内存数据为局部数据,则可以根据上述地址偏移和上述内存数据总量,计算该内存数据的相对偏移。例如,该内存数据的相对偏移=该地址偏移-该内存数据总量。在计算得到该内存数据的相对偏移后,可以进一步地根据该内存数据的相对偏移和上述局部数据在上述电子设备上搭载的RAM中的起始偏移地址,计算该内存数据的访问地址。例如,该内存数据的访问地址=该起始偏移地址+该内存数据的相对偏移。后续,可以按照该访问地址,获取该RAM中存储的与该访问地址对应的数据,此时该数据即为待访问的内存数据。
在上述技术方案中,对于搭载了非易失性存储器NVM和随机存取存储器RAM的电子设备而言,可以由该电子设备上搭载的WebAssembly虚拟机从该NVM中加载与任一程序模块的程序代码对应的WebAssembly二进制文件,进而一方面,可以从该WebAssembly二进制文件中确定出在标准的WebAssembly技术中,该程序模块中在执行该程序模块本身时会被存储到该RAM中的内存数据的内存数据总量,另一方面,可以先从该WebAssembly二进制文件中确定出至少一个内存数据片段,以及这至少一个内存数据片段中的各个内存数据片段的数据属性,再基于该数据属性从这至少一个内存数据片段中确定出只读数据片段,并确定所有只读数据片段的数据量之和;在这种情况下,可以将该内存数据总量与该只读数据片段的数据量之和的差值确定为全局数据量,从而可以在执行该程序模块时按照该全局数据量在该RAM中创建存储空间,而将所有只读数据片段保持存储在该NVM中。
采用上述方式,由于在由WebAssembly虚拟机执行WebAssembly程序模块时,不再将内存数据中的只读数据存储到与WebAssembly虚拟机对应的RAM中,而是保持存储在与WebAssembly虚拟机对应的NVM中,仅按照内存数据量和只读数据量的差值在该RAM中创建存储空间,使得占用的由RAM提供的存储空间减少。也即,可以在WebAssembly程序模块的执行阶段,减少对RAM资源的占用。
与前述数据处理方法的实施例相对应,本申请还提供了数据处理装置的实施例。
请参考图2,图2是本申请一示例性实施例示出的一种设备的结构示意图。在硬件层面,该设备包括处理器201、内部总线202、网络接口203、内存204以及非易失性存储器205,当然还可能包括所需要的其他硬件。本申请一个或多个实施例可以基于软件方式来实现,比如由处理器201从非易失性存储器205中读取对应的计算机程序到内存204中然后运行。当然,除了软件实现方式之外,本申请一个或多个实施例并不排除其他实现方式,比如逻辑器件或者软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑模块,也可以是硬件或者逻辑器件。
请参考图3,图3是本申请一示例性实施例示出的一种数据处理装置的框图。
上述数据处理装置可以应用于图2所示的设备上搭载的WebAssembly虚拟机,以实现本申请的技术方案;所述设备上还搭载了非易失性存储器NVM和随机存取存储器RAM。其中,该数据处理装置可以包括:
第一确定单元301,用于从所述NVM中加载与任一程序模块的程序代码对应的WebAssembly二进制文件,从所述WebAssembly二进制文件中确定出内存数据总量;
第二确定单元302,用于从所述WebAssembly二进制文件中确定出至少一个内存数据片段,以及所述至少一个内存数据片段中的各个内存数据片段的数据属性;
第三确定单元303,用于基于所述数据属性从所述至少一个内存数据片段中确定出只读数据片段,并确定所述只读数据片段的数据量之和;
第四确定单元304,将所述内存数据总量与所述只读数据片段的数据量之和的差值确定为全局数据量,以在执行所述程序模块时按照所述全局数据量在所述RAM中创建存储空间,并将所述只读数据片段保持存储在所述NVM中。
可选地,所述第一确定单元301具体用于:
从所述WebAssembly二进制文件中提取出内存数据的起始偏移地址和结束偏移地址,并将所述结束偏移地址和所述起始偏移地址的差值确定为内存数据总量。
可选地,所述WebAssembly二进制文件包括:用于存储所述内存数据的起始偏移地址和结束偏移地址的全局段。
可选地,所述第二确定单元302具体用于:
从所述WebAssembly二级制文件中提取出至少一个内存数据片段中的各个内存数据片段的起始偏移地址和存储地址长度;
所述第三确定单元303具体用于:
计算所述只读数据片段的存储地址长度之和,并将所述存储地址长度之和确定为所述只读数据片段的数据量之和。
可选地,所述第二确定单元302具体用于:
从所述WebAssembly二进制文件中提取出所述至少一个内存数据片段中的各个内存数据片段的数据属性和数据片段索引;
基于所述数据属性,从所述至少一个内存数据片段的数据片段索引中确定出只读数据片段的数据片段索引;
根据所述数据片段索引,确定与所述数据片段索引对应的所述只读数据片段,并获取所述只读数据片段的起始偏移地址和存储地址长度。
可选地,所述WebAssembly二进制文件包括:用于存储所述内存数据片段的起始偏移地址和存储地址长度的数据段;以及,用于存储所述内存数据片段的数据属性和数据片段索引的自定义段。
可选地,所述装置还包括:
计算单元,用于计算待访问的内存数据的地址偏移,并根据所述地址偏移和所述只读数据片段的数据量之和,确定所述内存数据是否为只读数据;
第一获取单元,用于在所述内存数据为只读数据时,根据所述地址偏移和所述只读数据片段的起始偏移地址,计算所述内存数据的访问地址,以按照所述访问地址获取所述NVM中存储的所述内存数据;
第二获取单元,用于在所述内存数据不为只读数据时,根据所述地址偏移和所述只读数据片段的数据量之和,计算所述内存数据的相对偏移,并根据所述相对偏移和在所述RAM中创建的所述存储空间的起始地址,进一步地计算所述内存数据的访问地址,以按照所述访问地址获取所述RAM中存储的所述内存数据。
可选地,所述程序模块包括应用模块、库模块和/或系统模块。
对于装置实施例而言,其基本对应于方法实施例,因此相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请的技术方案的目的。
上述实施例阐明的系统、装置、模块或者单元,具体可以由计算机芯片或者实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或者闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或者技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或者其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或者其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或者其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或者其他磁性存储设备或者任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确存储的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本申请特定实施例进行了描述。其他实施例在本申请的范围内。在一些情况下,在本申请中记载的动作或者步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本申请一个或多个实施例中所使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。术语“和/或”是指并包含一个或多个相关联的存储项目的任何或者所有可能组合。
在本申请一个或多个实施例中所使用的术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或者“一种实施方式”等的描述意指结合该实施例所描述的具体特征或者特点包含于本申请的至少一个实施例中。对这些术语的示意性描述不必须针对相同的实施例。而且,所描述的具体特征或者特点可以在本申请一个或多个实施例中以合适的方式结合。此外,在不相互矛盾的情况下,可以将不同的实施例以及不同实施例中的具体特征或者特点进行结合。
应当理解,尽管在本申请一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或者“当……时”或者“响应于确定”。
以上所述仅为本申请一个或多个实施例的较佳实施例而已,并不用以限制本申请一个或多个实施例,凡在本申请一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请一个或多个实施例保护的范围之内。
Claims (11)
1.一种数据处理方法,应用于电子设备上搭载的WebAssembly虚拟机;所述电子设备上还搭载了非易失性存储器NVM和随机存取存储器RAM;所述方法包括:
从所述NVM中加载与任一程序模块的程序代码对应的WebAssembly二进制文件,从所述WebAssembly二进制文件中确定出内存数据总量;
从所述WebAssembly二进制文件中确定出至少一个内存数据片段,以及所述至少一个内存数据片段中的各个内存数据片段的数据属性;
基于所述数据属性从所述至少一个内存数据片段中确定出只读数据片段,并确定所述只读数据片段的数据量之和;
将所述内存数据总量与所述只读数据片段的数据量之和的差值确定为全局数据量,以在执行所述程序模块时按照所述全局数据量在所述RAM中创建存储空间,并将所述只读数据片段保持存储在所述NVM中。
2.根据权利要求1所述的方法,所述从所述WebAssembly二进制文件中确定出内存数据总量,包括:
从所述WebAssembly二进制文件中提取出内存数据的起始偏移地址和结束偏移地址,并将所述结束偏移地址和所述起始偏移地址的差值确定为内存数据总量。
3.根据权利要求2所述的方法,所述WebAssembly二进制文件包括:用于存储所述内存数据的起始偏移地址和结束偏移地址的全局段。
4.根据权利要求1所述的方法,所述从所述WebAssembly二进制文件中确定出至少一个内存数据片段,包括:
从所述WebAssembly二级制文件中提取出至少一个内存数据片段中的各个内存数据片段的起始偏移地址和存储地址长度;
所述确定所述只读数据片段的数据量之和,包括:
计算所述只读数据片段的存储地址长度之和,并将所述存储地址长度之和确定为所述只读数据片段的数据量之和。
5.根据权利要求4所述的方法,所述从所述WebAssembly二进制文件中确定出至少一个内存数据片段,以及所述至少一个内存数据片段中的各个内存数据片段的数据属性,包括:
从所述WebAssembly二进制文件中提取出所述至少一个内存数据片段中的各个内存数据片段的数据属性和数据片段索引;
基于所述数据属性,从所述至少一个内存数据片段的数据片段索引中确定出只读数据片段的数据片段索引;
根据所述数据片段索引,确定与所述数据片段索引对应的所述只读数据片段,并获取所述只读数据片段的起始偏移地址和存储地址长度。
6.根据权利要求5所述的方法,所述WebAssembly二进制文件包括:用于存储所述内存数据片段的起始偏移地址和存储地址长度的数据段;以及,用于存储所述内存数据片段的数据属性和数据片段索引的自定义段。
7.根据权利要求1所述的方法,所述方法还包括:
计算待访问的内存数据的地址偏移,并根据所述地址偏移和所述只读数据片段的数据量之和,确定所述内存数据是否为只读数据;
如果所述内存数据为只读数据,则根据所述地址偏移和所述只读数据片段的起始偏移地址,计算所述内存数据的访问地址,以按照所述访问地址获取所述NVM中存储的所述内存数据;
如果所述内存数据不为只读数据,则根据所述地址偏移和所述只读数据片段的数据量之和,计算所述内存数据的相对偏移,并根据所述相对偏移和在所述RAM中创建的所述存储空间的起始地址,进一步地计算所述内存数据的访问地址,以按照所述访问地址获取所述RAM中存储的所述内存数据。
8.根据权利要求1所述的方法,所述程序模块包括应用模块、库模块和/或系统模块。
9.一种数据处理装置,应用于电子设备上搭载的WebAssembly虚拟机;所述电子设备上还搭载了非易失性存储器NVM和随机存取存储器RAM;所述装置包括:
第一确定单元,用于从所述NVM中加载与任一程序模块的程序代码对应的WebAssembly二进制文件,从所述WebAssembly二进制文件中确定出内存数据总量;
第二确定单元,用于从所述WebAssembly二进制文件中确定出至少一个内存数据片段,以及所述至少一个内存数据片段中的各个内存数据片段的数据属性;
第三确定单元,用于基于所述数据属性从所述至少一个内存数据片段中确定出只读数据片段,并确定所述只读数据片段的数据量之和;
第四确定单元,将所述内存数据总量与所述只读数据片段的数据量之和的差值确定为全局数据量,以在执行所述程序模块时按照所述全局数据量在所述RAM中创建存储空间,并将所述只读数据片段保持存储在所述NVM中。
10.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310961363.0A CN116700629B (zh) | 2023-08-01 | 2023-08-01 | 数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310961363.0A CN116700629B (zh) | 2023-08-01 | 2023-08-01 | 数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116700629A CN116700629A (zh) | 2023-09-05 |
CN116700629B true CN116700629B (zh) | 2023-09-26 |
Family
ID=87839546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310961363.0A Active CN116700629B (zh) | 2023-08-01 | 2023-08-01 | 数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116700629B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932149A (zh) * | 2023-09-18 | 2023-10-24 | 北京中电华大电子设计有限责任公司 | 数据处理方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684237A (zh) * | 2018-11-20 | 2019-04-26 | 华为技术有限公司 | 基于多核处理器的数据访问方法和装置 |
CN114036524A (zh) * | 2021-10-29 | 2022-02-11 | 中国银联股份有限公司 | 一种电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10353679B2 (en) * | 2014-10-31 | 2019-07-16 | Microsoft Technology Licensing, Llc. | Collecting profile data for modified global variables |
-
2023
- 2023-08-01 CN CN202310961363.0A patent/CN116700629B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684237A (zh) * | 2018-11-20 | 2019-04-26 | 华为技术有限公司 | 基于多核处理器的数据访问方法和装置 |
CN114036524A (zh) * | 2021-10-29 | 2022-02-11 | 中国银联股份有限公司 | 一种电子设备 |
Non-Patent Citations (2)
Title |
---|
R. Madhava Krishnan 等.Tenet: Memory Safe and Fault Tolerant Persistent Transactional Memory.《The Proceedings of the 21st USENIX Conference on File and Storage Technologies》.2023,第247-264页. * |
林敏 ; 张超 ; .针对WebAssembly虚拟机的模糊测试方案.网络安全技术与应用.2020,(06),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN116700629A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9563446B2 (en) | Binary file generation | |
JP6506412B2 (ja) | アプリケーションロード方法及び装置 | |
US20190087208A1 (en) | Method and apparatus for loading elf file of linux system in windows system | |
CN106843842B (zh) | 一种应用程序配置文件的更新方法及装置 | |
CN116680015B (zh) | 函数调用方法、装置、电子设备及可读存储介质 | |
CN116700629B (zh) | 数据处理方法和装置 | |
CN116680014B (zh) | 数据处理方法和装置 | |
CN112181902A (zh) | 数据库的存储方法、装置及电子设备 | |
CN114064594A (zh) | 数据处理方法和装置 | |
CN116661910A (zh) | 一种应用调用的方法及装置 | |
US10095630B2 (en) | Sequential access to page metadata stored in a multi-level page table | |
CN106502707B (zh) | 代码生成方法及装置 | |
CN109409037B (zh) | 一种数据混淆规则的生成方法、装置及设备 | |
CN116755845B (zh) | 数据处理方法和装置 | |
CN117251234B (zh) | 基于补丁的函数调用方法及装置 | |
CN110764777B (zh) | 一种elf文件生成方法、elf文件、设备及存储介质 | |
CN116700840B (zh) | 文件执行方法、装置、电子设备及可读存储介质 | |
CN108874468B (zh) | 应用程序的加载方法、装置、计算机设备及存储介质 | |
CN116955209B (zh) | WebAssembly虚拟机的测试方法和装置 | |
CN113590144A (zh) | 一种依赖处理方法及装置 | |
CN113486274A (zh) | 一种前端页面路由方法、终端设备及计算机介质 | |
CN116700841B (zh) | 一种原生api调用的方法及装置 | |
CN116932149A (zh) | 数据处理方法和装置 | |
CN117785728A (zh) | 数据处理方法和装置 | |
CN116382785B (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 |