CN111930527A - 一种多核异构平台维护cache一致性的方法 - Google Patents

一种多核异构平台维护cache一致性的方法 Download PDF

Info

Publication number
CN111930527A
CN111930527A CN202010598426.7A CN202010598426A CN111930527A CN 111930527 A CN111930527 A CN 111930527A CN 202010598426 A CN202010598426 A CN 202010598426A CN 111930527 A CN111930527 A CN 111930527A
Authority
CN
China
Prior art keywords
state
cache
processing core
core
data information
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
CN202010598426.7A
Other languages
English (en)
Other versions
CN111930527B (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.)
Mianyang Huishi Photoelectric Technology Co ltd
Original Assignee
Mianyang Huishi Photoelectric Technology Co ltd
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 Mianyang Huishi Photoelectric Technology Co ltd filed Critical Mianyang Huishi Photoelectric Technology Co ltd
Priority to CN202010598426.7A priority Critical patent/CN111930527B/zh
Publication of CN111930527A publication Critical patent/CN111930527A/zh
Application granted granted Critical
Publication of CN111930527B publication Critical patent/CN111930527B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache 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/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种多核异构平台维护cache一致性的方法,首先,依次接收多核异构平台上的N个处理核心向内存空间进行读取和/或写入的数据信息,其中,处理核心为CPU、GPU或FPGA;接收到某个处理核心的读写请求后,根据当期所有处理核心的cache状态,判定是否达到准备读、准备写的状态,如果是,则同意该处理核心的访问请求以及cache状态更新,处理核心发起相关的内存数据访问,更新状态,返回第一步;如果否,则拒绝该处理核心的访问请求以及cache状态更新,使用cache无效和cache写回操作调整状态,使得满足当前处理核心的请求,更新状态返回前一步。本发明可通过软件或硬件实现,灵活的设计,可满足不同硬件平台的使用。

Description

一种多核异构平台维护cache一致性的方法
技术领域
本发明涉及嵌入式或移动设备领域,特别是涉及一种多核异构平台维护cache一致性的方法。
背景技术
在嵌入式或移动设备领域,异构多核架构被广泛使用,比如常用的智能手机、智能终端、安防设备和视频处理设备等,异构多核架构是指在同一个芯片(通常为SOC)上集成多个不同类型的CPU,如ARM、DSP、GPU、TPU或其他协处理器,多个处理器之间共享***总线和芯片资源,满足不同场景的应用需求。大多数情况下,每个处理器都有自己独立的cache模块(高速缓冲存储器),用来提高内存访问效率,这个cache模块由硬件实现且与CPU架构/指令集高度关联,多个处理器的cache模块彼此独立,对于单核或者SMP架构CPU,cache模块能够很好的处理一致性问题,但是对于异构多核***,在多个核心间传递数据时,cache一致性问题难以由硬件来解决。
发明内容
针对上述技术问题,本发明提供了一种多核异构平台维护cache一致性的方法,可通过软件或硬件实现,具有设计灵活、可移植性强、可保证多核架构CPU的cache具有高度一致性的优点。
本发明的技术方案是:
一种多核异构平台维护cache一致性的方法,包括以下步骤:
S1、依次接收多核异构平台上的N个处理核心向内存空间进行读取和/或写入的数据信息,其中,处理核心为CPU、GPU或FPGA;
S2、接收到某个处理核心的读写请求后,根据当期所有处理核心的cache状态,判定是否达到准备读、准备写的状态,如果是,则同意该处理核心的访问请求以及cache状态更新,进入步骤S3,如果否,则拒绝该处理核心的访问请求以及cache状态更新,进入步骤S4;
S3、处理核心发起相关的内存数据访问,更新状态,返回步骤S1;
S4、使用cache无效和cache写回操作调整状态,使得满足当前处理核心的请求,更新状态返回步骤S3。
在上述技术方案中,处理核心的cache状态的设定方法如下:
当为内存空间中的数据信息没有被缓存到CPU的cache中时,设定为UNCACHED状态;
当内存空间中的数据信息已经被缓存到CPU的cache中,cache中的数据信息与内存空间中的数据信息保持一致时,设定为CACHED状态;
当CPU的cache中的数据信息发生修改,修改后的数据信息没有同步到内存空间中,cache中的数据信息与内存空间中的数据信息不一致时,设定为MODIFIED状态;
当CPU的cache中的数据信息与内存空间中的数据信息不一致,cache中的数据信息无效时,设定为DIRTY状态。
步骤S2中,还包括以下步骤:
S21、第n个处理核心向内存空间读取数据信息,执行准备读操作,读取数据信息完成后,执行已读操作,判定此时第n个处理核心的cache状态为CACHED;
S22、第n+1个处理核心向内存空间写入数据信息,执行准备写操作,写入数据信息完成后,执行已写操作,判定此时第n+1个处理核心的cache状态为MODIFIED,第n个处理核心的cache状态修正为DIRTY;
S23、第n+1个处理核心执行写回操作后,将第n+1个处理核心的cache状态修正为CACHED,第n个处理核心向内存空间读取数据信息,此时第n个处理核心的cache状态为DIRTY,执行失效操作,将第n个处理核心的cache状态为修正为UNCACHED。
在上述技术方案中,任意一个处理核心向内存空间进行读取或写入操作时,对状态和操作加锁,同时设定其他处理核心无向内存空间进行读取或写入操作的权限。这样使得每个处理核心对共享内存的访问在状态机的控制下执行,对于状态数据本身,通过数据对象中的同步锁来进行同步,保证同一时刻只能有一个处理核心访问数据对象本身的数据。
上述技术方案中,步骤S2中,未达到准备读、准备写的状态的情况如下:
当前处理核心的状态为DIRTY,或者存在状态为MODIFIED的其他处理核心。
上述技术方案中,步骤S3中,更新状态的步骤如下:
读数据完成后,当前处理核心的状态改为CACHED;
写数据完成后,当前处理核心的状态改为MODIFIED,状态为CACHED的其他核心的状态改为DIRTY。
上述技术方案中,步骤S4中,使用cache无效和cache写回操作调整状态的步骤如下:
如果当前处理核心的状态为DIRTY,当前处理核心执行失效操作并更新状态为UNCACHED;
如果存在状态为MODIFIED的其他处理核心,这些处理核心执行写回操作并更新状态为CACHED。
本发明的核心是维护多核间共享数据的状态,保证各个处理核心在数据存取时具有一致的状态,按照设计的状态逻辑和状态约束,数据能在在多个核心上正确的读写和写入,使得多核异构平台上多个核心间传递数据时,可保证各处理核心的cache高度的一致性。
本发明的有益效果是:
1、可通过软件或硬件实现,灵活的设计,可满足不同硬件平台的使用;
2、作为一种底层组件,可为软件设计提供统一的多核间数据共享和数据交互方法,增强了程序的可移植性;
3、可支持读写锁或互斥锁逻辑,在任意时刻只有一个处理核心写数据或多个核读数据,保证数据在多核访问时可控。
附图说明
图1是本发明实施例中当前CPU和其他CPU的所有状态的转换逻辑图。
具体实施方式
下面结合附图对本发明的实施例作进一步说明。
实施例1:
本实施例中当前CPU和其他CPU的所有状态的转换逻辑如图1所示。一种多核异构平台维护cache一致性的方法,包括以下步骤:
S1、依次接收多核异构平台上的N个处理核心向内存空间进行读取和/或写入的数据信息,其中,处理核心为CPU,也可以是GPU,也可以是FPGA,还可以是特定功能硬件处理模块,还可以是神经网络加速单元,等等类似的都可以。
S2、接收到某个处理核心的读写请求后,根据当期所有处理核心的cache状态,判定是否达到准备读、准备写的状态,如果是,则同意该处理核心的访问请求以及cache状态更新,进入步骤S3,如果否,则拒绝该处理核心的访问请求以及cache状态更新,进入步骤S4。
S3、处理核心发起相关的内存数据访问,更新状态,返回步骤S1。
S4、使用cache无效和cache写回操作调整状态,使得满足当前处理核心的请求,更新状态返回步骤S3。
在实施例1中,处理核心的cache状态的设定方法如下:
当为内存空间中的数据信息没有被缓存到CPU的cache中时,设定为UNCACHED状态;
当内存空间中的数据信息已经被缓存到CPU的cache中,cache中的数据信息与内存空间中的数据信息保持一致时,设定为CACHED状态;
当CPU的cache中的数据信息发生修改,修改后的数据信息没有同步到内存空间中,cache中的数据信息与内存空间中的数据信息不一致时,设定为MODIFIED状态;
当CPU的cache中的数据信息与内存空间中的数据信息不一致,cache中的数据信息无效时,设定为DIRTY状态。
实施例2:
在实施例1的基础上,实施例2的步骤S2还包括以下步骤:
S21、第n个处理核心向内存空间读取数据信息,执行准备读操作,读取数据信息完成后,执行已读操作,判定此时第n个处理核心的cache状态为CACHED;
S22、第n+1个处理核心向内存空间写入数据信息,执行准备写操作,写入数据信息完成后,执行已写操作,判定此时第n+1个处理核心的cache状态为MODIFIED,第n个处理核心的cache状态修正为DIRTY;
S23、第n+1个处理核心执行写回操作后,将第n+1个处理核心的cache状态修正为CACHED,第n个处理核心向内存空间读取数据信息,此时第n个处理核心的cache状态为DIRTY,执行失效操作,将第n个处理核心的cache状态为修正为UNCACHED。
在实施例1和实施例2中,任意一个处理核心向内存空间进行读取或写入操作时,对状态和操作加锁,同时设定其他处理核心无向内存空间进行读取或写入操作的权限。这样使得每个处理核心对共享内存的访问在状态机的控制下执行,对于状态数据本身,通过数据对象中的同步锁来进行同步,保证同一时刻只能有一个处理核心访问数据对象本身的数据。
上述两个实施例的核心是维护多核间共享数据的状态,保证各个处理核心在数据存取时具有一致的状态,按照设计的状态逻辑和状态约束,数据能在在多个核心上正确的读写和写入,使得多核异构平台上多个核心间传递数据时,可保证各处理核心的cache高度的一致性。
上述两个实施例,步骤S2中,未达到准备读、准备写的状态的情况如下:
当前处理核心的状态为DIRTY,或者存在状态为MODIFIED的其他处理核心。
上述两个实施例,步骤S3中,更新状态的步骤如下:
读数据完成后,当前处理核心的状态改为CACHED;
写数据完成后,当前处理核心的状态改为MODIFIED,状态为CACHED的其他核心的状态改为DIRTY。
上述两个实施例,步骤S4中,使用cache无效和cache写回操作调整状态的步骤如下:
如果当前处理核心的状态为DIRTY,当前处理核心执行失效操作并更新状态为UNCACHED;
如果存在状态为MODIFIED的其他处理核心,这些处理核心执行写回操作并更新状态为CACHED。
本发明所述的实施例,可通过软件或硬件实现,灵活的设计,可满足不同硬件平台的使用。作为一种底层组件,可为软件设计提供统一的多核间数据共享和数据交互方法,增强了程序的可移植性。可支持读写锁或互斥锁逻辑,在任意时刻只有一个处理核心写数据或多个核读数据,保证数据在多核访问时可控。
接下来以两个处理核心的数据读写举例说明,其步骤如下:
a、初始化一个数据对象,分配内存空间,每个处理核心的cache状态设置为UNCACHED;
b、某个处理核心,假设为X,要读取数据,执行准备读操作,状态不改变,请求锁;
c、X读取内存空间中的数据;
d、X读取完成,执行已读操作,X的cache状态设为CACHED,释放锁;
e、某个处理核心,假设为Y,要写入数据,执行准备写操作,内存空间状态不改变,请求锁;
f、Y向内存空间中写入数据;
g、Y写入数据完成,执行已写操作,Y的cache状态设为MODIFIED,X的cache状态设置为DIRTY,释放锁;
h、X读取数据,X的状态为DIRTY,执行失效操作,X的cache状态设置为UNCACHED,Y执行写回操作,Y的状态变为CACHED,重复步骤b。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

Claims (7)

1.一种多核异构平台维护cache一致性的方法,其特征在于,包括以下步骤:
S1、依次接收多核异构平台上的N个处理核心向内存空间进行读取和/或写入的数据信息,其中,处理核心为CPU、GPU或FPGA;
S2、接收到某个处理核心的读写请求后,根据当期所有处理核心的cache状态,判定是否达到准备读、准备写的状态,如果是,则同意该处理核心的访问请求以及cache状态更新,进入步骤S3,如果否,则拒绝该处理核心的访问请求以及cache状态更新,进入步骤S4;
S3、处理核心发起相关的内存数据访问,更新状态,返回步骤S1;
S4、使用cache无效和cache写回操作调整状态,使得满足当前处理核心的请求,更新状态返回步骤S3。
2.根据权利要求1所述的一种多核异构平台维护cache一致性的方法,其特征在于,步骤S2中,处理核心的cache状态的设定方法如下:
当为内存空间中的数据信息没有被缓存到CPU的cache中时,设定为UNCACHED状态;
当内存空间中的数据信息已经被缓存到CPU的cache中,cache中的数据信息与内存空间中的数据信息保持一致时,设定为CACHED状态;
当CPU的cache中的数据信息发生修改,修改后的数据信息没有同步到内存空间中,cache中的数据信息与内存空间中的数据信息不一致时,设定为MODIFIED状态;
当CPU的cache中的数据信息与内存空间中的数据信息不一致,cache中的数据信息无效时,设定为DIRTY状态。
3.根据权利要求2所述的一种多核异构平台维护cache一致性的方法,其特征在于,步骤S2中,还包括以下步骤:
S21、第n个处理核心向内存空间读取数据信息,执行准备读操作,读取数据信息完成后,执行已读操作,判定此时第n个处理核心的cache状态为CACHED;
S22、第n+1个处理核心向内存空间写入数据信息,执行准备写操作,写入数据信息完成后,执行已写操作,判定此时第n+1个处理核心的cache状态为MODIFIED,第n个处理核心的cache状态修正为DIRTY;
S23、第n+1个处理核心执行写回操作后,将第n+1个处理核心的cache状态修正为CACHED,第n个处理核心向内存空间读取数据信息,此时第n个处理核心的cache状态为DIRTY,执行失效操作,将第n个处理核心的cache状态为修正为UNCACHED。
4.根据权利要求1或2或3所述的一种多核异构平台维护cache一致性的方法,其特征在于,任意一个处理核心向内存空间进行读取或写入操作时,对状态和操作加锁,同时设定其他处理核心无向内存空间进行读取或写入操作的权限。
5.根据权利要求1或2或3所述的一种多核异构平台维护cache一致性的方法,步骤S2中,未达到准备读、准备写的状态的情况如下:
当前处理核心的状态为DIRTY,或者存在状态为MODIFIED的其他处理核心。
6.根据权利要求1或2或3所述的一种多核异构平台维护cache一致性的方法,步骤S3中,更新状态的步骤如下:
读数据完成后,当前处理核心的状态改为CACHED;
写数据完成后,当前处理核心的状态改为MODIFIED,状态为CACHED的其他核心的状态改为DIRTY。
7.根据权利要求1或2或3所述的一种多核异构平台维护cache一致性的方法,步骤S4中,使用cache无效和cache写回操作调整状态的步骤如下:
如果当前处理核心的状态为DIRTY,当前处理核心执行失效操作并更新状态为UNCACHED;
如果存在状态为MODIFIED的其他处理核心,这些处理核心执行写回操作并更新状态为CACHED。
CN202010598426.7A 2020-06-28 2020-06-28 一种多核异构平台维护cache一致性的方法 Active CN111930527B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010598426.7A CN111930527B (zh) 2020-06-28 2020-06-28 一种多核异构平台维护cache一致性的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010598426.7A CN111930527B (zh) 2020-06-28 2020-06-28 一种多核异构平台维护cache一致性的方法

Publications (2)

Publication Number Publication Date
CN111930527A true CN111930527A (zh) 2020-11-13
CN111930527B CN111930527B (zh) 2023-12-08

Family

ID=73316710

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010598426.7A Active CN111930527B (zh) 2020-06-28 2020-06-28 一种多核异构平台维护cache一致性的方法

Country Status (1)

Country Link
CN (1) CN111930527B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114217809A (zh) * 2021-04-14 2022-03-22 无锡江南计算技术研究所 一种无横向一致性的众核精简Cache协议实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101958834A (zh) * 2010-09-27 2011-01-26 清华大学 支持高速缓存一致的片上网络***及数据请求方法
CN104991868A (zh) * 2015-06-09 2015-10-21 浪潮(北京)电子信息产业有限公司 一种多核处理器***和缓存一致性处理方法
US20160026436A1 (en) * 2014-07-24 2016-01-28 Qualcomm Incorporated Dynamic Multi-processing In Multi-core Processors
US20200134182A1 (en) * 2018-10-26 2020-04-30 Alibaba Group Holding Limited Method and apparatus for updating shared data in a multi-core processor environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101958834A (zh) * 2010-09-27 2011-01-26 清华大学 支持高速缓存一致的片上网络***及数据请求方法
US20160026436A1 (en) * 2014-07-24 2016-01-28 Qualcomm Incorporated Dynamic Multi-processing In Multi-core Processors
CN104991868A (zh) * 2015-06-09 2015-10-21 浪潮(北京)电子信息产业有限公司 一种多核处理器***和缓存一致性处理方法
US20200134182A1 (en) * 2018-10-26 2020-04-30 Alibaba Group Holding Limited Method and apparatus for updating shared data in a multi-core processor environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘柯: "多核处理器Cache一致性的改进", 《西安邮电大学学报》, vol. 20, no. 2, pages 98 - 104 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114217809A (zh) * 2021-04-14 2022-03-22 无锡江南计算技术研究所 一种无横向一致性的众核精简Cache协议实现方法
CN114217809B (zh) * 2021-04-14 2024-04-30 无锡江南计算技术研究所 一种无横向一致性的众核精简Cache协议实现方法

Also Published As

Publication number Publication date
CN111930527B (zh) 2023-12-08

Similar Documents

Publication Publication Date Title
US9405595B2 (en) Synchronizing multiple threads efficiently
US9594521B2 (en) Scheduling of data migration
JP3974597B2 (ja) 非対称型異種マルチプロセッサ環境でアトミック更新プリミティブを提供するための方法
CN105103144B (zh) 用于存储器的自适应控制的设备及方法
CN101631328B (zh) 一种对共享资源互斥访问的同步方法、装置和网络设备
US20040098575A1 (en) Processor cache memory as RAM for execution of boot code
EP3701377B1 (en) Method and apparatus for updating shared data in a multi-core processor environment
CN106462395B (zh) 多线程处理器架构中的线程等待
CN114580344B (zh) 测试激励生成方法、验证方法、验证***及相关设备
CN110597640A (zh) 进程间的数据传输方法、装置、终端及计算机存储介质
US10152436B2 (en) Mutual exclusion in a non-coherent memory hierarchy
CN103119912A (zh) 多处理器计算平台中的处理器间通信技术
US6795901B1 (en) Shared memory interface with conventional access and synchronization support
JP2012038293A (ja) マシンビジョン用マルチプロセッサシステムオンチップ
US7620954B2 (en) Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors
US9552303B2 (en) Method and system for maintaining release consistency in shared memory programming
CN103377157B (zh) 一种用于嵌入式数控***的双核数据通信方法
JPS6081650A (ja) データ処理システム
CN111913822B (zh) 一种基于amp架构的核间通信方式
US20190258508A1 (en) Persistent Multi-Word Compare-and-Swap
US7080213B2 (en) System and method for reducing shared memory write overhead in multiprocessor systems
CN117546149A (zh) 用于执行共享存储器操作的***、装置和方法
CN111930527B (zh) 一种多核异构平台维护cache一致性的方法
KR101695845B1 (ko) 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치
CN104714792A (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