CN108418589B - 一种单层非易失存储器的动态编解码方法 - Google Patents
一种单层非易失存储器的动态编解码方法 Download PDFInfo
- Publication number
- CN108418589B CN108418589B CN201810179013.8A CN201810179013A CN108418589B CN 108418589 B CN108418589 B CN 108418589B CN 201810179013 A CN201810179013 A CN 201810179013A CN 108418589 B CN108418589 B CN 108418589B
- Authority
- CN
- China
- Prior art keywords
- data
- cache line
- compressed
- bit
- nonvolatile memory
- 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
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/353—Adaptation to the channel
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种单层非易失存储器的动态编解码方法,属于数据编解码技术领域。本发明首先对写入的缓存行数据进行压缩;再对压缩节省的空间进行计算,根据节省空间的大小动态选择对单层非易失存储器编码效果最好的编码方式利用压缩节省的空间对数据进行编码,最后再将编码之后的数据写入到单层非易失存储器阵列中。同时本发明还实现了本申请动态编码方式对应的解码方法。本发明方法在极小的空间开销下减少对单层非易失存储器的写,从而降低单层非易失存储器的写能耗、提升寿命,由此解决现有编解码技术中的为降低存储器的写能耗而增加空间开销的问题。
Description
技术领域
本发明属于数据编解码技术领域,更具体地,涉及一种单层非易失存储器的动态编解码方法。
背景技术
新型的非易失存储器(NVM,Non-Volatile Memory),例如相变存储器(PCM,PhaseChange Memory)忆阻器(RRAM,Resistive RAM),相比传统的DRAM技术具有数据非易失、高集成度、低读延迟的优势,有望取代传统的DRAM用作下一代计算机***的内存。PCM使用相变材料例如Ge2Sb2Te2(GST)的晶态和非晶态的变化来存储逻辑值0和1。当GST处于晶态时,PCM单元处于低电阻值的状态,此时PCM存储逻辑值1。当GST处于非晶态时,PCM单元处于高电阻值的状态,此时PCM存储逻辑值0。当给PCM单元施加一个持续时间很短(约40ns)但是幅值很高的电流脉冲时,PCM单元瞬间会被加热到600摄氏度,材料冷却以后PCM单元会处于高电阻(逻辑值0)的状态;当给PCM单元施加一个持续时间较长,而且强度较低的脉冲时,PCM单元会处于低电阻(逻辑值1)的状态。在反复加热的过程中,PCM材料会受到损伤,当写106至109次以后,PCM单元会陷入到0或者1的状态而不能改变。PCM每个单元的写能耗约为20pJ,是DRAM的2倍。RRAM具有跟PCM类似的特性,目前RRAM器件的磨损次数在1010以下,而且它的写能耗也为DRAM的几倍。
PCM和RRAM都面临着高写能耗,写次数或寿命有限的问题。如何降低新型非易失存储器的写能耗,同时提升他们的寿命使十分关键的问题。
现有的方法提出通过数据编码的方式来减少写NVM的位翻转(即从0写为1,从1写为0)。最早提出的一种方法叫做Flip-N-Write。这种方法的核心思想是给每N位的数据分配一位的标志位。标志位初始值为0。如果写这N位数据和1位的标志位所需要的位翻转超过了(N+1)/2,那么将这N位的数据按位取反,同时将标志位置为1,然后写入。Flip-N-Write可以减少位翻转,同时它引入的标志位也会造成1/N的容量开销。Flip-N-Write对位翻转减少的效果受限于标志位的开销。当N等于16时,标志位造成的容量开销为1/16,同时Flip-N-Write可以减少14.6%的位翻转。当N等于2时,标志位带来的容量开销为50%,但是Flip-N-Write可以减少25%的位翻转。还有一些方法是将缓存行的数据排列称为N行M列的矩阵,然后同时对行和列使用Flip-N-Write。也有针对热数据写的次数更多的规律,将Flip-N-Write应用于减少热数据的写,但是这些方法都会带来大量额外的空间。此外,FlipMin编码方式是基于陪集编码:增加k位的冗余位,同时将数据映射为一个包含2k个元素的集合,每次写之前,从这2k个元素的集合中挑选出一种位翻转最少的写入,同样这种编码方式也会带来大量的空间开销。
目前尚没有一种能够针对单层非易失存储器的编码方式,既能降低非易失存储器的写能耗、提升寿命,又不增加过多的空间开销。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种单层非易失存储器的动态编解码方法,其目的在于将数据压缩和数据编码结合起来,根据压缩率动态的选择合适的编码方式,同时将压缩节省出来的空间用作编码的标志位,在极小的空间开销下减少对单层非易失存储器的写,从而降低单层非易失存储器的写能耗、提升寿命,由此解决现有编解码技术中的为降低存储器的写能耗而增加空间开销的问题。
为实现上述目的,本发明提供了一种单层非易失存储器的动态编解码方法,所述方法包括编码方法和解码方法:
所述编码方法包括以下步骤:
(1)对写入的缓存行数据进行压缩;
(2)若缓存行数据不能压缩,则将缓存行数据直接发送至写控制器,结束;否则进入步骤(3);
(3)若缓存行压缩后节省出来的空间S≥(T-N×P)/2,则选择FlipMin编码方式对压缩数据进行编码;否则选择Flip-N-Write编码方式对压缩数据进行编码;其中T表示缓存行的位数,预设512;N表示每个缓存行的字数,预设8;P为前缀位的位数,预设3;
(4)将编码之后的数据写入到非易失存储器阵列中。
进一步地,所述步骤(1)具体包括:
(11)将缓存行数据以字为单位进行分组,预设字的大小为64;并对每个字分别进行压缩;
(12)设置压缩标志位记录缓存行数据是否能压缩,若该缓存行中有字能压缩,则该缓存行数据记为能压缩,记1,否则该缓存行数据记为不能压缩,记0,压缩标志位的大小预设为1位;
(13)为能压缩的缓存行中的每个字设置前缀位记录压缩信息,前缀位的大小预设为3位。
进一步地,所述步骤(13)中记录压缩后字的信息包括:压缩后字的大小和压缩前字的模式。
进一步地,所述压缩算法优选FPC压缩算法。
进一步地,所述步骤(1)缓存行数据压缩后将压缩标志位、前缀位和编码以后的数据由高位到低位连续存放。
进一步地,所述步骤(2)中若缓存行数据不能压缩,则将压缩标志位和缓存行数据由高位到低位连续存放后发送至写控制器。
进一步地,所述步骤(3)中缓存行压缩后节省出来的空间
其中,Ci为第i个压缩字的位数。
进一步地,所述步骤(3)中:
若(T-N×P)/3≤S<(T-N×P)/2,则选择Flip-N-Write编码方式对压缩数据进行编码,每2位的数据位分配一位的标志位。
进一步地,所述步骤(4)具体为写入数据前判断是否有单元中存储的旧数据和将写入的新数据一样,若有则该单元不需要执行写操作,否则执行写操作。
进一步地,所述解码方法,具体包括:
S1、从非易失存储器单元中读出压缩标志位和压缩以后的缓存行数据;
S2、根据压缩标志位判断缓存行是否被压缩和编码;
S3、若缓存行未被压缩,则读取出的缓存行数据不需要解压缩或解码;若缓存行被压缩,则读取缓存行中的前缀位,由前缀位确定压缩节省出来的空间,从而确定缓存行数据所采用的编码方法,采用对应的解码方法对缓存行数据进行解码。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:
(1)本发明将数据压缩和数据编码结合起来,将压缩节省出来的空间用作编码,可以在极小的空间开销(0.2%)下提升单层非易失存储器的寿命,同时降低单层非易失存储器的能耗;
(2)本发明根据压缩节省的空间动态选择一种效果最佳的编码方式,充分利用压缩节省的空间选择效果最好的编码方式,最大限度提升单层非易失存储器的寿命和降低能耗;
(3)本发明采用了读对比写的方式,可以避免了冗余的写,可以降低写能耗。
附图说明
图1是本发明编码方法的实施过程流程图;
图2是本发明中数据压缩后缓存行的排列方式;
图3是本发明数据解码示意图;
图4是FlipMin编码的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
以下实施例结合附图对本发明进行进一步的介绍:
本实施列中,上级缓存***对内存的写以缓存行为单位,典型的缓存行大小为64字节(64B),因此本专利假设缓存行的大小为64B。本专利中字的大小为64位(64b),压缩方法可以选用其它任意的压缩方法,本专利实施例以FPC压缩算法为例。
如图1所示,本发明实施例的编码方法包括:
对每条写请求,首先判断是否可以压缩。如果不能压缩则直接发送到写控制器,并最终写入到存储阵列,同时将压缩标志位置为0。
如果可以压缩,则首先对写请求的缓存行数据进行压缩,然后计算压缩后的数据位数和压缩节省出来的空间位数,同时将压缩标志位置为1。假设压缩节省出来的空间位数为S,压缩以后的数据位数为D,则根据如下的规则来对压缩以后的数据进行编码:
如果S<163,则使用Flip-N-Write对压缩以后的数据位进行编码,同时给每D/S位的数据位分配一位的标志位;
如果163<=S<244,则使用Flip-N-Write对压缩以后的数据位进行编码,同时给每2位的数据位分配一位的标志位;
如果244=<S,则使用FlipMin对压缩以后的数据位进行编码。
将编码以后的数据位发送到写控制器,并最终写入到存储阵列。
如图2所示,对于可以压缩的缓存行,其压缩标志位为1,每个字都使用3位的前缀位来标识压缩的类型。且前缀位从这个缓存行的高位开始连续存放。压缩以后的字从前缀位开始连续存放,对于不可压缩的缓存行,其压缩标志位为0,每个字都不使用前缀位。
如图3所示,解码方法包括:
首先根据压缩标志位判断缓存行的数据是否被压缩,如果压缩标志位位0,则表示缓存行未被压缩,不需要对缓存和进行解码。如果压缩标志位为1,则表示缓存行可压缩,需要对缓存行进行解码。
解码的方法跟编码的方法相对应。首先读取前24位的前缀位,根据前缀位可以计算得出压缩以后数据位的大小和压缩节省出来的空间。根据压缩以后数据位的大小和压缩节省出来的空间可以判定缓存行数据采用的编码方式,然后使用对应的解码方法Flip-N-Write解码或者FlipMin解码对数据位进行解码。解码以后根据前缀位可以得到每个压缩字。最后使用FPC解压缩分别对每个字进行解压缩即可以得到每个字和整个缓存行的数据。
另介绍实施例中出现的其他技术:
数据压缩技术,本实施例中Frequent Pattern Compression(FPC)可以将数据压缩从而减少需要写入的位数。它使用三位的前缀位来标识数据的规律,从而减少数据存储所需的空间。FPC以64位的字为单位进行压缩,可以压缩7种不同的数据模式。如表1所示。
表1
第一种模式为64位全0的数据,这样的数据可以通过3位的前缀位来表示。第一种模式中64位的全0被压缩为3位的前缀位。第二种模式中,一个字的高56位为0,低8位可变,这种模式通过前缀位001来表示。压缩以后的数据为前缀位加上可变的低8位,因此总的数据位数为11位。除了这两种另外还有5中不同的可压缩的数据模式。对于不同的数据模式,FPC可以节省的空间是变化的。
Flip-N-Write编解码技术:
所述Flip-N-Write编码过程具体为:
将待写入的标志位初始化为0,位数与旧的标志位的位数都为N位;将待写入N×K位缓存行数据中的第N个K位数据与第N位旧的标志位相结合,组成K+1位的数据;统计其中0的个数,若0的个数大于(K+1)/2,则将待写入的标志的第N位置为0,否则将待写入的标志的第N位置为1;依次对所有的缓存行数据和每位待写入的标志位执行以上过程。
所述Flip-N-Write解码过程具体为:
读出旧的缓存行数据N×K位和旧的标志位N位,缓存行的第N个K位数据对应第N位标志位,若该标志位为0,则对应的K位的数据不执行任何操作,否则对K位的数据执行取反操作;依次对所有的数据执行以上过程。
FlipMin编解码技术:
如图4所示,所述FlipMin编码过程具体为:
首先找到RM(1,3)编码的任意一个生成矩阵G,并求出G的左逆矩阵G#。使用所有可能的信息位,分别为二进制的0000-1111,分别乘以生成矩阵得到Coset0(0号陪集)集合对应的所***字。所有的码字设为C0,C1,…C15。对任意即将写入的信息位d,首先将d乘以G#得到d对应的Coset(即Cosetd,d号陪集)中的一个元素。然后将这个元素与已经写入的码字异或,得到传输元素。将这个传输元素与Coset0集合对应的所***字异或,就可以得到传输元素的集合。在这个集合里面找到一个1的个数最少的元素作为Coset leader,然后将Cosetleader已经写入的数据异或就可以得到编码以后待写入的向量。
进一步地,所述FlipMin解码过程具体为:
将编码以后的向量与生成矩阵相乘,得到的元素即为需要的元素,就可以实现解码。
以上内容本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种单层非易失存储器的动态编解码方法,包括编码方法和解码方法,其特征在于,所述编码方法包括以下步骤:
(1)对写入的缓存行数据进行压缩;所述步骤(1)具体包括:
(11)将缓存行数据以字为单位进行分组;并对每个字分别进行压缩;
(12)设置压缩标志位记录缓存行数据是否能压缩,若该缓存行中有字能压缩,则该缓存行数据记为能压缩,否则该缓存行数据记为不能压缩;
(13)为能压缩的缓存行中的每个字设置前缀位记录压缩信息;
缓存行数据压缩后将压缩标志位、前缀位和编码以后的数据由高位到低位连续存放;
(2)若缓存行数据不能压缩,则将缓存行数据直接发送至写控制器,结束;否则进入步骤(3);
(3)若缓存行压缩后节省出来的空间S≥(T-N×P)/2,则选择FlipMin编码方式对压缩数据进行编码;否则选择Flip-N-Write编码方式对压缩数据进行编码;其中T表示缓存行的位数;N表示每个缓存行的字数;P为前缀位的位数;所述步骤(3)中缓存行压缩后节省出来的空间
其中,Ci为第i个压缩字的位数;
所述步骤(3)中:
若(T-N×P)/3≤S<(T-N×P)/2,则选择Flip-N-Write编码方式对压缩数据进行编码,每2位的数据位分配一位的标志位;
(4)将编码之后的数据写入到非易失存储器阵列中。
2.根据权利要求1所述的一种单层非易失存储器的动态编解码方法,其特征在于,所述步骤(13)中记录压缩后字的信息包括:压缩后字的大小和压缩前字的模式。
3.根据权利要求1所述的一种单层非易失存储器的动态编解码方法,其特征在于,所述压缩算法为FPC。
4.根据权利要求1所述的一种单层非易失存储器的动态编解码方法,其特征在于,所述步骤(2)中若缓存行数据不能压缩,则将压缩标志位和缓存行数据由高位到低位连续存放后发送至写控制器。
5.根据权利要求1所述的一种单层非易失存储器的动态编解码方法,其特征在于,所述步骤(4)具体为写入数据前判断是否有单元中存储的旧数据和将写入的新数据一样,若有则该单元不需要执行写操作,否则执行写操作。
6.根据权利要求1所述的一种单层非易失存储器的动态编解码方法,其特征在于,所述解码方法,具体包括:
S1、从非易失存储器单元中读出压缩标志位和压缩以后的缓存行数据;
S2、根据压缩标志位判断缓存行是否被压缩和编码;
S3、若缓存行未被压缩,则读取出的缓存行数据不需要解压缩或解码;若缓存行被压缩,则读取缓存行中的前缀位,由前缀位确定压缩节省出来的空间,从而确定缓存行数据所采用的编码方法,采用对应的解码方法对缓存行数据进行解码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810179013.8A CN108418589B (zh) | 2018-03-05 | 2018-03-05 | 一种单层非易失存储器的动态编解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810179013.8A CN108418589B (zh) | 2018-03-05 | 2018-03-05 | 一种单层非易失存储器的动态编解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108418589A CN108418589A (zh) | 2018-08-17 |
CN108418589B true CN108418589B (zh) | 2020-07-10 |
Family
ID=63130046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810179013.8A Active CN108418589B (zh) | 2018-03-05 | 2018-03-05 | 一种单层非易失存储器的动态编解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108418589B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538677B (zh) * | 2020-04-26 | 2023-09-05 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301152B1 (en) * | 1999-05-12 | 2001-10-09 | Stmicroelectronics S.R.L. | Non-volatile memory device with row redundancy |
US6477082B2 (en) * | 2000-12-29 | 2002-11-05 | Micron Technology, Inc. | Burst access memory with zero wait states |
CN1499531A (zh) * | 2002-10-28 | 2004-05-26 | 管理非易失存储器***中的数据完整性的方法和装置 | |
EP1403879B1 (en) * | 2002-09-30 | 2010-11-03 | STMicroelectronics Srl | Method for replacing failed non-volatile memory cells and corresponding memory device |
WO2011146364A3 (en) * | 2010-05-17 | 2012-01-26 | Seagate Technology Llc | Joint encoding of logical pages in multi-page memory architecture |
CN103140894A (zh) * | 2010-08-17 | 2013-06-05 | 技术研究及发展基金公司 | 在非易失性存储器(nvm)单元中减轻单元间耦合效应 |
CN105427887A (zh) * | 2014-09-15 | 2016-03-23 | Hgst荷兰有限公司 | 用于三维垂直快闪存储器的编码方案 |
CN107622781A (zh) * | 2017-10-12 | 2018-01-23 | 华中科技大学 | 一种提升三层忆阻器写性能的编解码方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8149622B2 (en) * | 2009-06-30 | 2012-04-03 | Aplus Flash Technology, Inc. | Memory system having NAND-based NOR and NAND flashes and SRAM integrated in one chip for hybrid data, code and cache storage |
-
2018
- 2018-03-05 CN CN201810179013.8A patent/CN108418589B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301152B1 (en) * | 1999-05-12 | 2001-10-09 | Stmicroelectronics S.R.L. | Non-volatile memory device with row redundancy |
US6477082B2 (en) * | 2000-12-29 | 2002-11-05 | Micron Technology, Inc. | Burst access memory with zero wait states |
EP1403879B1 (en) * | 2002-09-30 | 2010-11-03 | STMicroelectronics Srl | Method for replacing failed non-volatile memory cells and corresponding memory device |
CN1499531A (zh) * | 2002-10-28 | 2004-05-26 | 管理非易失存储器***中的数据完整性的方法和装置 | |
WO2011146364A3 (en) * | 2010-05-17 | 2012-01-26 | Seagate Technology Llc | Joint encoding of logical pages in multi-page memory architecture |
CN103140894A (zh) * | 2010-08-17 | 2013-06-05 | 技术研究及发展基金公司 | 在非易失性存储器(nvm)单元中减轻单元间耦合效应 |
CN105427887A (zh) * | 2014-09-15 | 2016-03-23 | Hgst荷兰有限公司 | 用于三维垂直快闪存储器的编码方案 |
CN107622781A (zh) * | 2017-10-12 | 2018-01-23 | 华中科技大学 | 一种提升三层忆阻器写性能的编解码方法 |
Non-Patent Citations (2)
Title |
---|
"Coset Coding to Extend the Lifetime of Memory";Adam N. Jacobvitz等;《2013 IEEE 19th International Symposium on High Performance Computer Architecture (HPCA)》;20130603;第1页到第12页 * |
"基于NVM的写操作优化策略研究与设计";董伟;《中国优秀硕士学位论文全文数据库•信息科技辑》;20170215;第2017年卷(第2期);I137-105 * |
Also Published As
Publication number | Publication date |
---|---|
CN108418589A (zh) | 2018-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5785330B2 (ja) | メモリエンデュランスのために動作させる装置および方法 | |
CN111326199B (zh) | 用于存储器设备的多态编程 | |
US9547588B1 (en) | System and method of data storage in flash memory | |
US11372765B2 (en) | Mapping for multi-state programming of memory devices | |
US8176234B2 (en) | Multi-write coding of non-volatile memories | |
US20150067436A1 (en) | Nonvolatile Memory System Compression | |
US8429332B2 (en) | Multi-channel hybrid density memory storage device and control method thereof | |
JP2010528380A (ja) | フラッシュメモリのリード・ライト処理方法 | |
US8581754B2 (en) | Encoding and decoding to reduce switching of flash memory transistors | |
CN109891506B (zh) | 用于使用较低电压阈值进行耐久性友好编程的设备和方法 | |
US20200293439A1 (en) | Memory system | |
KR102628009B1 (ko) | 부분 페이지 압축을 위한 메모리 시스템 | |
US8463982B2 (en) | Method of storing and accessing error correcting code in NAND flash | |
KR102426047B1 (ko) | 폴라 부호 복호화 장치 및 방법 | |
CN108418589B (zh) | 一种单层非易失存储器的动态编解码方法 | |
KR101281685B1 (ko) | 상변화 메모리의 데이터 기록 방법, 데이터 판독 방법, 및그 장치 | |
CN107622781B (zh) | 一种提升三层忆阻器写性能的编解码方法 | |
KR20220072398A (ko) | 메모리 장치 및 메모리 시스템 | |
CN109189694B (zh) | 一种scm的数据编码方法及数据存储方法 | |
TW202240594A (zh) | 用於管理具有動態錯誤更正碼保護之記憶體的方法及系統 | |
KR20220061833A (ko) | 공유 데이터 통계치를 사용한 콘텐츠 인식 디코딩 | |
KR101996136B1 (ko) | 빠른 판독 다중 레벨 3d nand가 수명 용량 향상시키는 것을 가능하게 하는 데이터 매핑 | |
JP6437428B2 (ja) | 不揮発性半導体メモリのコントローラ | |
US20230393920A1 (en) | Adaptive wear leveling for endurance compensation | |
CN114995752A (zh) | 基于mlc相变存储器的数据存储方法、读取方法及装置 |
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 |