CN110007855B - 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 - Google Patents
一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 Download PDFInfo
- Publication number
- CN110007855B CN110007855B CN201910153736.5A CN201910153736A CN110007855B CN 110007855 B CN110007855 B CN 110007855B CN 201910153736 A CN201910153736 A CN 201910153736A CN 110007855 B CN110007855 B CN 110007855B
- Authority
- CN
- China
- Prior art keywords
- data
- sub
- storage
- storage space
- write
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6047—Power optimization with respect to the encoder, decoder, storage or transmission
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
- H03M7/6082—Selection strategies
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L25/00—Assemblies consisting of a plurality of semiconductor or other solid state devices
- H01L25/03—Assemblies consisting of a plurality of semiconductor or other solid state devices all the devices being of a type provided for in a single subclass of subclasses H10B, H10D, H10F, H10H, H10K or H10N, e.g. assemblies of rectifier diodes
- H01L25/04—Assemblies consisting of a plurality of semiconductor or other solid state devices all the devices being of a type provided for in a single subclass of subclasses H10B, H10D, H10F, H10H, H10K or H10N, e.g. assemblies of rectifier diodes the devices not having separate containers
- H01L25/065—Assemblies consisting of a plurality of semiconductor or other solid state devices all the devices being of a type provided for in a single subclass of subclasses H10B, H10D, H10F, H10H, H10K or H10N, e.g. assemblies of rectifier diodes the devices not having separate containers the devices being of a type provided for in group H10D89/00
- H01L25/0657—Stacked arrangements of devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Memory System (AREA)
Abstract
本发明涉及一种硬件支持的3D堆叠NVM内存数据压缩方法及系统,设置第一标识对写回数据的压缩状态进行标识,3D堆叠NVM内存数据压缩方法至少包括如下步骤:将写回数据划分为若干个子数据块并基于若干个子数据块彼此之间的或运算以分别获取若干个第一输出结果,或者基于若干个子数据块彼此之间的异或运算以获取若干个第二输出结果,基于所述第一输出结果或所述第二输出结果确定所述写回数据的压缩策略;按照与所述第一标识成对设置的方式设置用于标识所述写回数据的存储方式的第二标识,至少按照对所述第二标识进行轮转处理的方式配置所述写回数据的存储策略。
Description
技术领域
本发明属于数据处理技术领域,尤其涉及一种硬件支持的3D堆叠NVM 内存数据压缩方法及系统。
背景技术
大数据时代,需要处理的数据量巨大、产生速度快,从而要求计算机具有较大的内存、较大的传输带宽、较小的传输延迟。传统的动态随机存储器 (Dynamic Random AccessMemory,DRAM)已经无法满足越来越大的内存需求。新型非易失性存储器(None-VolatileMemory,NVM),比如相变存储器(Phase Change Memory,PCM)、自旋转移力矩磁性随机存储器(Spin Transfer Torque Magnetoresistive Random Access Memory,STT-MRAM)、磁性随机存储器(Magnetic Random Access Memory,MRAM)等,具有字节可寻址、读写速度和DRAM相差不大、无待机功耗、密度大(单位体积可存储的数据更多)、可扩展性强等特点,可能替代DRAM作为主存存储介质。然而和DRAM相比,上述新型的非易失性存储器还存在很多缺陷:(1)写能耗高;(2)读写延迟大,读速度比PCM慢一个数量级,写速度比PCM慢两个数量级;(3)使用寿命有限。因此直接将它们作为计算机主存是不可行的。当前主流的做法是将大量非易失性存储器和少量DRAM混合在一起形成异构内存,同时利用非易失性存储器大容量的优势和DRAM低访问延迟、低写能耗、寿命长的优势,提升内存系统的性能、能耗效率和使用寿命。
因此,围绕如何解决非易失性存储器的写能耗高、写延迟大、使用寿命有限的缺陷,学术界和工业界提出了很多解决方案。一方面,学术界和业界提出3D堆叠的内存,将多个内存芯片以某种方式组织起来,以获取大容量内存,同时也增加了传输带宽。硅穿孔技术(Through Silicon Via)就是解决3D堆叠的一种技术,一种将穿透硅晶圆或芯片垂直互连的技术,它有效地堆叠多个内存芯片,可以增大内存、增大传输带宽、减小传输延迟、增大吞吐率。同时,学术界和业界以3D堆叠的内存为基础,提出以数据为中心的体系结构,将CPU尽量地靠近内存,以减少数据传输距离,从而减小传输延迟,如near-data processing(NDP)、processing in memory(PIM)。通过 TSV技术构造3D堆叠内存,同时结合NDP、PIM思想,将CPU和内存芯片集成在一起已经成为学术界和业界的一大研究热点。海力士和AMD支持的HBM(High Bandwidth Memory),让内存设备靠近CPU或GPU,方法将内存芯片堆叠到一个矩阵里,接着将处理器与内存堆叠组合在一起,形成一个基本组件,然后将其安装到服务器主板上。Intel支持、镁光主导的HMC (Hybrid Memory Cube),通过堆叠存储芯片到垂直组件,创建3-D阵列的串行内存访问;这些阵列增加了一个逻辑层来管理内存,而且服务器制造商可以在每个处理器附近安装这个组件。另一方面,研究表明,内存数据存在很大的冗余,由此学术界和工业界提出内存压缩技术,通过内存压缩技术可以减少数据量,从而降低读写延迟、降低读写能耗、增大内存可用容量。例如公开号为CN105262491A的专利文献公开了一种数据压缩方法及系统、数据解压缩方法及系统、通信设备,该方法包括:预先设置用户设备与是否需要对产生的数据进行压缩的对应关系;在获得其中一个用户设备产生的数据时,根据所述对应关系判断是否需要对获得的数据进行压缩;在不需要对获得的数据进行压缩时,以第一标识符将获得的数据标识为未压缩的数据;在需要对获得的数据进行压缩时,对获得的数据进行压缩;以及以第二标识符将经过压缩得到的数据标识为压缩的数据。该发明中,选择性地对获得的数据进行压缩,能够减少不必要的压缩给通信设备带来的负担。
但是内存数据的压缩和解压缩需要一定的开销,而且解压缩是在访存关键路径上,这就引出内存压缩技术的一个权衡性问题:一方面,一个好的压缩算法通常复杂度较高,实现困难,这将在很大程度上增大读写内存延迟,严重影响系统性能;另一方面,一个压缩率不高的压缩算法,由于其压缩率有限,这对NVM缺陷的改进效果不明显。因此,本发明旨在提出一种能够加快写速度和降低写能耗的数据压缩方法。
发明内容
如本文所用的词语“模块”描述任一种硬件、软件或软硬件组合,其能够执行与“模块”相关联的功能。
针对现有技术之不足,本发明提供一种硬件支持的3D堆叠NVM内存数据压缩方法,设置第一标识对写回数据的压缩状态进行标识,所述3D堆叠NVM内存数据压缩方法至少包括如下步骤:将写回数据划分为若干个子数据块并基于若干个子数据块彼此之间的或运算以分别获取若干个第一输出结果,或者基于若干个子数据块彼此之间的异或运算以获取若干个第二输出结果,基于所述第一输出结果或所述第二输出结果确定所述写回数据的压缩策略。按照与所述第一标识成对设置的方式设置用于标识所述写回数据的存储方式的第二标识,至少按照对所述第二标识进行轮转处理的方式配置所述写回数据的存储策略。第二标识的值是将旧值取反来设置的。现有的磨损均衡技术是在页面粒度下基于页面重映射来实现的,涉及到页表,同时需要操作系统的参与。本发明的轮转不需要操作系统的参与,只需要一个取反逻辑即可基于硬件实现。
根据一种优选实施方式,所述压缩策略的确定至少包括如下步骤:将写回数据划分为n1个子数据块,每一个子数据块均分别输入一个位数为h1的第一比较器中进行或运算以获得n1个均由“0”和“1”表示的第一输出结果,在由“0”表示的第一输出结果的数量N1大于1的情况下,按照执行第一压缩处理的方式对所述写回数据进行压缩处理,其中:在N1小于等于1 的情况下,将所述写回数据重新划分为n2个子数据块,每一个子数据块均分别输入一个位数为h2的第二比较器中进行或运算以获得n2个由“0”和“1”表示的第一输出结果,在由“0”表示的第一输出结果的数量N2大于2且最后p个第一输出结果不全为“1”时,按照执行第二压缩处理的方式对所述写回数据进行压缩处理。第一压缩处理和第二压缩处理是充分利用了内存数据零块多的特点而提出的,是基于cacheline(即64B)粒度的,实现逻辑简单高效,开销小。而其他现有技术是基于页面粒度实现的,实现逻辑比较复杂,开销大。
根据一种优选实施方式,所述压缩策略的确定还包括如下步骤:在N2小于等于2,或者所述p个第一输出结果均为“1”的情况下,将所述写回数据重新划分为n3个子数据块,第一子数据块分别与其自身以及其余子数据块进行异或运算以获取n3个第二输出结果,在所述第二输出结果均为1B的情况下,按照执行第三压缩处理的方式对所述写回数据进行压缩处理。
根据一种优选实施方式,所述存储策略的确定至少包括如下步骤:根据写回数据的大小为写回数据配置至少包括编码标识存储区、压缩数据存储区和空闲区的存储空间,并将所述存储空间依次划分为大小均为1B的a个子存储空间。在所述第二标识的值由0和1进行表示的情况下,按照将第二标识的值进行互换的方式对其进行所述轮转处理,其中:在所述第二标识的值为0时,所述编码标识存储区由前b个子存储空间共同限定,在所述第二标识的值为1时,所述编码标识存储区由最后b个子存储空间共同限定。
根据一种优选实施方式,所述第一压缩处理至少包括如下步骤:将第一标识进行更新以表明写回数据已进行压缩处理,读取第二标识并对其进行轮转处理,在轮转处理后的第二标识的值为0时,按照第一存储方式对数据进行压缩存储,在轮转处理后的第二标识的值为1时,按照第二存储方式对数据进行压缩存储,其中:所述第一存储方式指:第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间共同构成编码标识存储区,其中,第一子存储空间和第二子存储空间配置为写入所述n1个第一输出结果,第三子存储空间和第四子存储空间配置为写入“1”,并且将输出结果为“1”的 M1个子数据块依次写入存储空间的第五子存储空间、第六子存储空间……第4*(M1+1)子存储空间中。所述第二存储方式指:最后4个子存储空间共同构成编码标识存储区,编码标识存储区的前两个子存储空间配置为写入所述n1个第一输出结果,编码标识存储区的后两个子存储空间写入“1”,并且将输出结果为“1”的M1个子数据块依次写入存储空间的第4*(N1-1) +1子存储空间……第a-4子存储空间中。
根据一种优选实施方式,所述第二压缩处理至少包括如下步骤:将所述第一标识进行更新以表明写回数据已进行压缩处理,读取第二标识并对其进行轮转处理,在轮转处理后的第二标识的值为0时,按照第三存储方式对数据进行压缩存储,在轮转处理后的第二标识的值为1时,按照第四存储方式对数据进行压缩存储,其中:所述第三存储方式指:第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间共同构成编码标识存储区,其中,第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间配置为写入所述n2个第一输出结果,并且将输出结果为“1”的M2个子数据块依次写入存储空间的第五子存储空间……第2*(M2+2)子存储空间中。所述第四存储方式指:最后4个子存储空间共同构成编码标识存储区,所述最后4个子存储空间配置为依次写入所述n2个第一输出结果,并且将输出结果为“1”的M2个子数据块依次写入存储空间的第2*(N2-2)+1子存储空间……第a-4子存储空间中。
根据一种优选实施方式,所述第三压缩处理至少包括如下步骤:将第一标识进行更新以表明写回数据已进行压缩处理,读取第二标识并对其进行轮转处理,在轮转处理后的第二标识的值为0时,按照第五存储方式对数据进行压缩存储,在轮转处理后的第二标识的值为1时,按照第六存储方式对数据进行压缩存储,其中:所述第五存储方式指:第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间共同构成编码标识存储区,其中,第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间中均写入“1”,并将所述第一子数据块依次写入第五子存储空间至第八子存储空间中,将所述n3个第二输出结果依次写入第九子存储空间至第二十四子存储空间中。所述第六存储方式指:存储空间的最后4个子存储空间共同构成编码标识区,其中,编码标识存储区中均写入“1”,将所述第一子数据块依次写入第四十一子存储空间至第四十四子存储空间中,将所述n3个第二输出结果依次写入第四十五子存储空间至第六十子存储空间中。
本发明还提供一种硬件支持的3D堆叠NVM内存数据压缩系统,所述 3D堆叠NVM内存数据压缩系统至少包括中央处理器和3D堆叠NVM存储器,所述3D堆叠NVM存储器配置为按照如下方式对所述中央处理器的写回数据进行压缩处理:将写回数据划分为若干个子数据块并基于若干个子数据块彼此之间的或运算以分别获取若干个第一输出结果,或者基于若干个子数据块彼此之间的异或运算以获取若干个第二输出结果,基于所述第一输出结果或所述第二输出结果确定所述写回数据的压缩策略。按照与所述第一标识成对设置的方式设置用于标识所述写回数据的存储方式的第二标识,至少按照对所述第二标识进行轮转处理的方式配置所述写回数据的存储策略。
根据一种优选实施方式,所述3D堆叠NVM存储器至少包括用于压缩写回数据的数据压缩模块、用于进行轮换处理的寻址模块和用于对数据进行解压缩的数据解压缩模块,所述数据压缩模块配置为:将写回数据划分为n1个子数据块,每一个子数据块均分别输入一个位数为h1的第一比较器中进行或运算以获得n1个均由“0”和“1”表示的第一输出结果,在由“0”表示的第一输出结果的数量N1大于1的情况下,按照执行第一压缩处理的方式对所述写回数据进行压缩处理,其中:在N1小于等于1的情况下,将所述写回数据重新划分为n2个子数据块,每一个子数据块均分别输入一个位数为 h2的第二比较器中进行或运算以获得n2个由“0”和“1”表示的第一输出结果,在由“0”表示的第一输出结果的数量N2大于2且最后p个第一输出结果不全为“1”时,按照执行第二压缩处理的方式对所述写回数据进行压缩处理。在N2小于等于2,或者所述p个第一输出结果均为“1”的情况下,将所述写回数据重新划分为n3个子数据块,第一子数据块分别与其自身以及其余子数据块进行异或运算以获取n3个第二输出结果,在所述第二输出结果均为1B的情况下,按照执行第三压缩处理的方式对所述写回数据进行压缩处理。
根据一种优选实施方式,所述数据解压缩模块至少包括第一解压缩单元、第二解压缩单元和第三解压缩单元,所述数据解压缩模块配置为按照如下方式对数据进行解压缩处理:读取第一标识,当第一标识的值为0时,直接读取数据,当第一标识的值为1时,读取第二标识,并提取编码标识存储区的编码标识位数据。在第二标识的值为0且编码标识位数据均为“1”时,通过所述第三解压缩单元对数据进行解压缩处理,其中,在编码标识位数据不均为“1”且其最后两位数据均为“1”的情况下,通过所述第一解压缩单元对编码标识位数据的剩余数据进行解压缩处理;或者在编码标识位数据的最后两位数据不均为“1”的情况下,通过所述第二解压缩单元对数据进行解压缩处理。在第二标识的值为1且编码标识位数据均为“1”时,通过所述第三解压缩单元对数据进行解压缩,其中,在编码标识位数据不均为“1”且其最后两位数据均为“1”的情况下,通过所述第一解压缩单元对编码标识位数据的剩余数据进行解压缩处理;或者在编码标识位数据的最后两位数据不均为“1”的情况下,通过所述第二解压缩单元对数据进行解压缩处理。
本发明的有益技术效果:
(1)系统提出了一个简单高效的数据压缩算法,通过该算法可以减少数据量,从而加快写速度、降低写能耗。
(2)系统利用压缩节省的空间做算法标识,相较于传统的将算法标识单独存放于特殊的存储器中,消除了硬件开销。
(3)系统使用了基于标识轮转的方法,实现了高效的内存数据放置策略,利用压缩剩余空间做磨损均衡,从而提高了NVM的寿命。
附图说明
图1是本发明优选的3D堆叠NVM内存数据压缩系统的模块化结构图;
图2是本发明优选的内存数据的存储方式示意图;
图3是本发明优选的第一压缩处理单元的结构示意图;
图4是本发明优选的第二压缩处理单元的结构示意图;
图5是本发明优选的第三压缩处理单元的结构示意图;
图6是本发明优选的编码标识位的示例图;
图7是本发明优选的数据压缩处理的流程示意图;和
图8是本发明优选的数据解压缩处理的流程示意图。
附图标记列表
1:中央处理器 2:3D堆叠NVM存储器 3:第一比较器
4:第二比较器 5:第一寄存器 6:第二寄存器
2a:数据处理单元 2b:NVM存储单元
201:数据压缩模块 202:寻址模块 203:数据解压缩模块
201a:第一压缩处理单元 201b:第二压缩处理单元
201c:第三压缩处理单元
202a:第一标识 202b:第二标识 202c:轮转处理单元
203a:第一解压缩单元 203b:第二解压缩单元
203c:第三解压缩单元
具体实施方式
下面结合附图进行详细说明。
实施例1
本发明提供一种硬件支持的3D堆叠NVM内存数据压缩系统,将DRAM 与实现数据压缩的3D堆叠的NVM内存组成容量大的异构内存系统,通过在3D堆叠的NVM内存的logic层增加专门用于数据压缩的逻辑处理单元,通过数据压缩减小NVM的写数据量从而加快写速度、降低写能耗。同时,研究内存数据放置策略,以高效地管理压缩后的内存数据,利用压缩后剩余的空间做磨损均衡,以提升NVM的寿命。
具体的,图1示出了本发明的3D堆叠NVM内存数据压缩系统的结构图。3D堆叠NVM内存数据压缩系统至少包括中央处理器1和3D堆叠NVM 存储单元2。中央处理器1和3D堆叠NVM存储单元2彼此通信连接,使得3D堆叠NVM存储单元2能够从中央处理器1中的快速缓冲贮存区中读取写回数据,并且中央处理器1能够从3D堆叠NVM存储单元2中读取数据。优选的,3D堆叠NVM存储单元2至少包括数据处理单元2a和NVM 存储单元2b。数据处理单元2a用于对3D堆叠NVM存储单元2写入的数据至少进行压缩和解压缩处理。例如,当数据从中央处理器1的快速缓冲贮存区中写回至3D堆叠NVM存储器2时,写回数据首先进入3D堆叠NVM 存储器的逻辑层,并且数据处理单元2a对写回数据进行压缩处理,压缩完成后的数据写入NVM存储单元2b中进行存储。当中央处理器1需要读取 3D堆叠NVM存储器中的数据时,数据处理单元2a首先从NVM存储单元 2b中读取数据并进行解压缩处理,解压缩处理后的数据再由中央处理器1 读取。
优选的,再次参见图1,数据处理单元2a至少包括数据压缩模块201、寻址模块202和数据解压缩模块203。数据压缩模块201用于在写内存时负责压缩内存数据。数据解压缩模块203用于在读内存时负责解压缩内存数据。寻址模块202具有第一标识202a、第二标识202b和轮转处理单元202c。第一标识202a负责标识内存数据是否被压缩。第二标识202b用于标识压缩后的内存数据的存储方式。轮转处理单元202c用于负责对第二标识202b 进行轮转变换处理来变换内存存储位置,进而实现磨损均衡。优选的,通过轮转第二标识可以把写操作均摊到对应的储存位置。轮转操作的规则如下是:当数据写入时,如果当前的第二标识为“0”,则将其反转为“1”;如果当前的第二标识为“1”,则将其反转为“0”。反转操作通过bit位的重置和置位即可完成。优选的,寻址模块202中的第一标识和第二标识是成对出现的,其大小均为1bit位大小,用于标识写回数据是否被压缩及数据存放的起始位置。例如,针对一个大小为4KB的页面,其包含6个大小均为64B的数据,每一个页面对应的寻址模块的大小为128bit位,该128bit位的数据可以存储于独立的存储硬件中。
优选的,如图7所示,数据压缩处理模块201至少包括第一压缩处理单元201a、第二压缩处理单元201b和第三压缩处理单元201c。数据处理单元2a按照如下方式对数据进行压缩处理:
S1:对于中央处理器1的快速缓冲贮存区中写回的数据,首先判断是否能被第一压缩处理单元201a压缩。在数据能够被第一压缩处理单元201a 压缩的情况下,选用第一压缩处理单元201a对数据进行压缩处理,同时将第一标识202a进行更新以表明该数据已进行压缩处理,并且将第二标识进行轮转处理,从而结束该数据的压缩处理。例如,第一标识和第二标识可以通过计算机能够识别的二进制码“0”和“1”进行标识。当数据经第一压缩处理单元处理后,将第一标识由初始的“0”更新为“1”以表明数据已完成压缩处理。即当第一标识为“0”时,表明数据未经压缩处理。当第一标识为“1”时,表明数据已经完成压缩处理,进而可以通过第一标识对数据的压缩状态进行判断。将第二标识进行轮转是指:将第二标识的值进行互换。例如,在对写回的数据进行压缩处理时,首先读取第二标识的初始值,当初始值为“0”时,对第二标识进行轮转处理后,第二标识的值将更新为“1”。或者当第二标识的初始值为“1”时,对第二标识进行轮转处理后,第二标识的值将更新为“0”。
S2:在数据不能够被第一压缩处理单元201a压缩的情况下,则判断数据是否能够被第二压缩处理单元201b压缩,若数据能够被第二压缩处理单元压缩,则选用第二压缩处理单元对数据进行压缩,同时将第一标识进行更新以表明该数据已完成压缩处理,并且将第二标识进行轮转处理,从而结束数据的压缩处理。
S3:在数据不能够被第二压缩处理单元201b压缩的情况下,则判断数据能否被第三压缩处理单元201c,若数据能够被第三压缩处理单元压缩,则选用第三压缩处理单元对数据进行压缩,同时将第一标识进行更新以表明该数据已完成压缩处理,并且将第二标识进行轮转处理,从而结束数据的压缩处理。
S4:在数据不能够被第三压缩处理单元201c压缩的情况下,则不对数据进行压缩,将写入的原始数据直接写入NVM存储单元2b中,同时将第一标识进行更新以表明该数据并未进行压缩处理,从而结束数据的压缩处理。
实施例2
本实施例是对实施例1的进一步改进,重复的内容不再赘述。
优选的,本发明还提供一种3D堆叠NVM内存数据压缩方法,将写回数据划分为若干个子数据块并基于若干个子数据块彼此之间的或运算以分别获取若干个第一输出结果,或者若干个子数据块彼此之间的异或运算以获取若干个第二输出结果,基于第一输出结果或第二输出结果确定写回数据的压缩策略。按照与第一标识成对设置的方式设置用于标识写回数据的存储方式的第二标识,至少按照对第二标识进行轮转处理的方式配置写回数据的存储策略。具体的,3D堆叠NVM内存数据压缩方法至少包括如下步骤:
S1:将中央处理器1输入的大小为m的写回数据传输至第一压缩处理单元201a中,第一压缩处理单元201a将写回数据均等地划分为n1个子数据块,其中,每一个子数据块均分别输入一个位数为h1的第一比较器3中以获得n1个输出结果,并将n1个输出结果均输入第一寄存器5中进行存储。
具体的,如图3所示,第一压缩处理单元201a至少包括16个第一比较器3。第一比较器3是32位比较器,其具有64bit输入,能够实现32 位数的比较,其中,第一比较器3由31个“或门”构成。优选的,中央处理器1输入的写回数据的大小可以为64B。根据现有的计算机系统,快速缓冲贮存区写回的数据大小是固定的,其大小始终为64B。第一压缩处理单元 201a可以将64B的写回数据均等地划分为16个子数据块,每一个子数据块的大小为4B。当大小为4B的子数据块全为“0”时,第一比较器3的输出为“0”,否则,第一比较器3的输出为“1”。通过16个第一比较器3可以得到16个分别由“0”或“1”表示的输出结果。每一个输出结果的大小为1bit,故而第一寄存器5的大小可以设定为2B,进而可以对16个输出结果进行存储。
S2:分别确定第一寄存器5中“0”和“1”的数量N1和M1,在N1大于1的情况下,确定写回数据能够被第一压缩处理单元201a压缩并且对写回数据进行第一压缩处理。
具体的,如图2所示,NVM存储单元2b会根据写入数据的大小为其分别一个相同大小的存储空间。例如,当写入数据的大小为m时,存储空间的大小也为m。存储空间可以由编码标识存储区、压缩数据存储区和空闲区。编码标识存储区的大小可以根据n值进行确定。例如,编码标识区的大小被配置为能够完全将n个输出结果进行存储。优选的,编码标识存储区的大小设置为4B。优选的,存储空间可以按照均分的方式分成a个大小均为1B的第一子存储空间、第二子存储空间……第a子存储空间。优选的,在第二标识的值为0时,编码标识存储区由前b个子存储空间共同限定,在第二标识的值为1时,编码标识存储区由最后b个子存储空间共同限定。b可以优选为4个。例如,当存储空间的大小为64B时,则存储空间可以划分为64个大小均为1B的子存储空间。图2a为源数据或者未压缩数据的存储方式,大小为64B。图2b为第二标识为0时的压缩数据的存储方式,前4B为编码标识位,紧接着是压缩后的数据,最后是压缩后节省的空闲空间。图2c是第二标识为1时的压缩数据的存储方式,最后4B为编码标识位,向前紧接着是压缩后的数据,最前面是压缩后节省的空闲空间。
优选的,第一压缩处理至少包括如下步骤:将寻址模块202的第一标识进行更新以表明写回数据已进行压缩处理,读取第二标识并对其进行轮转处理,根据轮转处理后的第二标识确定数据的存储方式。在轮转处理后的第二标识的值为0时,按照第一存储方式对数据进行压缩存储,在轮转处理后的第二标识的值为1时,按照第二存储方式对数据进行压缩存储。
优选的,第一存储方式是指:第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间共同构成编码标识存储区,其中,第一子存储空间和第二子存储空间配置为写入所有第一比较器3输出的n1个输出结果,第三子存储空间和第四子存储空间配置为写入第一子存储空间和第二子存储空间的数值为1的输出结果,并且将第一寄存器3中值为1的M1个子数据块依次写入存储空间的第五子存储空间、第六子存储空间……第4*(M1+1)子存储空间中。例如,如图3所示,16个32位比较器共输出7个“1”和9个“0”,第3B存储空间和第4B存储空间一共可以存储2*8=16个输出结果。7个“1”首先全部存储与第3B存储空间中,第3B存储空间和第4B 存储空间中剩余的位置由“1”进行补齐。由于第3B存储空间和第4B存储空间是为了对齐数据并作为标识,因此,第3B存储空间和第4B存储空间中均写入“1”。
优选的,第二存储方式是指:存储空间的最后四个子存储空间共同构成编码标识区。即第a-3子存储空间、第a-2子存储空间、第a-1子存储空间和第a子存储空间共同构成编码标识存储区。第a-3子存储空间和第a-2子存储空间配置为写入所有第一比较器3输出的n1个输出结果,第a-1子存储空间和第a子存储空间配置为写入第a-3子存储空间和第a-2子存储空间的数值为1的输出结果,并且将第一寄存器3中值为1的M1个子数据块依次写入存储空间的第4*(N1-1)+1子存储空间……第a-4子存储空间中。
S3:在N1小于等于1的情况下,将中央处理器1输入的大小为m的写回数据再次传输至第二压缩处理单元201b中,第二压缩处理单元201a将写回数据均等地划分为n2个子数据块,其中,每一个子数据块均分别输入一个位数为h2的第二比较器4中以获得n2个输出结果,并将n2个输出结果均输入第二寄存器6中进行存储。
具体的,如图4所示,第一压缩处理单元201a至少包括32个第二比较器4。第二比较器4是16位比较器,其中,第二比较器4由15个“或门”构成。优选的,中央处理器1输入的写回数据的大小可以为64B。第二压缩处理单元201b可以将64B的写回数据均等地划分为32个子数据块,每一个子数据块的大小为2B。当大小为2B的子数据块全为“0”时,第二比较器4的输出为“0”,否则,第二比较器4的输出为“1”。通过32个第二比较器4可以得到32个分别由“0”或“1”表示的输出结果。每一个输出结果的大小为1bit,故而第二寄存器6的大小可以设定为4B,进而可以对32个输出结果进行存储。
S4:分别确定第二寄存器6中“0”和“1”的数量N2和M2,将第二寄存器6划分为大小均为1B且数量的子存储区,在N2大于2,并且最后p个第一输出结果不全为“1”时确定写回数据能够被第二压缩处理单元201b压缩并且对写回数据进行第二压缩处理。优选的,p=2,由于第一输出结果均存储至第二寄存器中,最后p个第一输出结果不全为“1”可以理解为:第二寄存器6的第H子存储区和第H-1子存储区的数值不全为1。
具体的,第二压缩处理至少包括如下步骤:将寻址模块202的第一标识进行更新以表明写回数据已进行压缩处理,读取第二标识并对其进行轮转处理,根据轮转处理后的第二标识确定数据的存储方式。在轮转处理后的第二标识的值为0时,按照第三存储方式对数据进行压缩存储,在轮转处理后的第二标识的值为1时,按照第四存储方式对数据进行压缩存储。
优选的,第三存储方式是指:第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间共同构成编码标识存储区,其中,第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间配置为写入第一比较器输出的n2个输出结果,并且将第二寄存器6中值为1的的M2个子数据块依次写入存储空间的第五子存储空间……第2*(M2+2)子存储空间中。优选的,编码标识储存区的大小可以根据压缩粒度进行改变。本发明的第一压缩处理单元执行的第一压缩处理和和第二压缩处理单元执行的第二压缩处理均是根据压缩率及对应开销进行确定的,例如,第一压缩处理采用 Comp_z_32的压缩粒度,第二压缩处理采用Comp_z_16的压缩粒度。编码标识存储区的大小为4B是足以满足Comp_z_8和Comp_z_4这两种压缩粒度的,由于该两种压缩粒度偏大而导致压缩率较小,其实现不具备显著的意义,故而本发明并不对Comp_z_8和Comp_z_4的具体配置方式进行进一步限定。同理,针对Comp_z_64的压缩粒度,其粒度过小而导致开销大,其实现也不具备显著的意义,故而本发明并不对Comp_z_64的具体配置方式进行进一步限定。
优选的,第四存储方式是指:存储空间的最后四个子存储空间共同构成编码标识区。即第a-3子存储空间、第a-2子存储空间、第a-1子存储空间和第a子存储空间共同构成编码标识存储区。第二比较器的n2个输出结果依次写入最后四个子存储空间中,即按照第a-3子存储空间、第a-2子存储空间、第a-1子存储空间和第a子存储空间的顺序写入。并且将第二寄存器6 中值为1的M2个子数据块依次写入存储空间的第2*(N2-2)+1子存储空间……第a-4子存储空间中。
S5:在N2小于等于2,或者所述p个第一输出结果均为“1”的情况,优选的,p=2,也即第二寄存器6的第H子存储区和第H-1子存储区的数值全为1的情况下,将中央处理器1输入的大小为m的写回数据再次传输至第三压缩处理单元201c中,第三压缩处理单元201c将写回数据均等地划分为n3个子数据块,其中,将第一个子数据块作为基数。将基数与基数进行异或比较,并将每一个子数据块均与第一个子数据块进行异或比较以得出n3个差异值。如图5所示,该差异值是指去除前导零后的差异值。在所有差异值均为1B的情况下,将写入数据确定为能够被第三压缩处理单元201c压缩,并且第三压缩处理单元对写入数据进行第三压缩处理。差异值为1B是指子数据块的前3B与基数的前3B是相同的,并且两者的第4B是不同的。例如,如图5所示,写回数据均匀地划分为16个子数据块,第一子数据块通过处理后由“00000000”表示,第二子数据块通过处理后由“000000ba”表示,第一子数据块和第二子数据块的前3B均为“000000”,两者的第4B 分别为“00”和“ba”,从而判断第一子数据块和第二子数据块的差异值为 1B。即在上述过程中,重点关注每个差异值的大小是否为最后1B,而忽略其具体值,最终可以将判断条件减小为前3B是否相同。当两个子数据块的前3B相同时,得出两者的差异值为1B。在得到的16个差异值均为1B时,判定写回数据能够被压缩并且通过第三压缩处理单元对写回数据进行第三压缩处理。
S6:第三压缩处理至少包括如下步骤:将寻址模块202的第一标识进行更新以表明写回数据已进行压缩处理,读取第二标识并对其进行轮转处理,根据轮转处理后的第二标识确定数据的存储方式。在轮转处理后的第二标识的值为0时,按照第五存储方式对数据进行压缩存储,在轮转处理后的第二标识的值为1时,按照第六存储方式对数据进行压缩存储。
具体的,第五存储方式是指:第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间共同构成编码标识存储区,其中,第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间中均写入“1”,将第三压缩处理单元201c输出的基数依次写入第五子存储空间至第八子存储空间中,将所有差异值依次写入第九子存储空间至第二十四子存储空间中。如图6所示,第三压缩处理所对应的编码标识存储区中均写入“1”,由于第一压缩处理和第二压缩处理的编码标识存储区不可能全为“1”,因此可以通过上述方式作为压缩算法的标识,从而将第三压缩处理与第一压缩处理及第二压缩处理进行明显区分。
优选的,第六存储方式是指:存储空间的最后四个子存储空间共同构成编码标识区。即第a-3子存储空间、第a-2子存储空间、第a-1子存储空间和第a子存储空间共同构成编码标识存储区。编码标识存储区中均写入“1”,将第三压缩处理单元201c输出的基数依次写入第四十一子存储空间至第四十四子存储空间中,将所有差异值依次写入第四十五子存储空间至第六十子存储空间中。
S7:在所有差异值的大小不均为1B的情况下,将第一标识进行更新以表明写入数据无法被压缩,并将写入数据直接写入NVM存储单元中。例如,第一标识可以更新为0以表明写入数据无法压缩。至此完成写入数据的压缩处理。
实施例3
本实施例是对前述实施例的进一步改进,重复的内容不再赘述。
本发明还提供一种数据解压缩方法,如图1和图8所示,数据解压缩模块203至少包括第一解压缩单元203a、第二解压缩单元203b和第三解压缩单元203c。数据解压缩模块203按照如下方式对NVM存储单元2中的存储数据进行解压缩处理:
S1:读取第一标识,当第一标识的值为0时,直接将存储数据读取至中央处理器1的快速缓冲贮存区中。当第一标识的值为1时,读取第二标识,并提取编码标识存储区的编码标识位数据。
具体的,当第一标识的值为0时,表明存储数据并未被压缩,从而可以直接进行读取以将其读取至快速缓冲贮存区中。当第一标识的值为1时,表明数据是经过压缩处理的,从而需要读取第二标识并根据编码标识位数据对存储方式进行确定。当第二标识的值为0时,则提取第1B至第4B上的编码标识位数据,当第二标识的值为1时,则提取第61B至第64B上的编码标识位数据。
S2:在第二标识的值为0且编码标识位数据均为“1”时,通过第三解压缩单元203c对存储数据进行解压缩处理,其中,在编码标识位数据不均为“1”且其最后两位数据均为“1”的情况下,通过第一解压缩单元203a 对编码标识位数据的剩余数据进行解压缩处理;或者在编码标识位数据的最后两位数据不均为“1”的情况下,通过第二解压缩单元203b对数据进行解压缩处理。
具体的,编码标识位数据均为“1”表明写回数据是通过第三压缩处理单元进行压缩处理的,进而可以通过与第三压缩处理单元相对应的第三解压缩单元对压缩数据进行解压缩处理。编码标识位数据的后两位数据均为“1”表明写回数据是通过第一压缩处理单元进行压缩处理的,进而可以通过与第一压缩处理单元相对应的第一解压缩单元对压缩数据进行解压缩处理。优选的,对于编码标识位数据的前两位所包含的每一个bit位数据按照从前往后的方式进行处理。具体的,当bit位为“0”时,则输出子数据块的“0”,当 bit位为“1”时,则依次数据子数据块的数据,从而可以得到例如是大小为 64B的原始数据。编码标识位数据的剩余数据是指除其最后两位数据之外的所有数据。例如,当编码标识位数据的大小为4B时,编码标识位数据的剩余数据是指其前两位数据。
优选的,编码标识位数据的最后两位数据不均为“1”表明写回数据是通过第二压缩处理单元进行压缩处理的,进而可以通过与第二压缩处理单元相对应的第二解压缩单元进行解压缩处理。优选的,对于编码标识位数据的每一位数据按照从前往后的方式进行处理。具体的,当bit位为“0”时,则输出子数据块的“0”,当bit位为“1”时,则依次输出子数据块的数据,从而可以得到例如是大小为64B的原始数据。
S3:在第二标识的值为1且编码标识位数据均为“1”时,通过第三解压缩单元对数据进行解压缩,其中,在编码标识位数据不均为“1”且其最后两位数据均为“1”的情况下,通过第一解压缩单元203a对编码标识位数据的剩余数据进行解压缩处理;或者在编码标识位数据的最后两位数据不均为“1”的情况下,通过第二解压缩单元203b对数据进行解压缩处理。
具体的,编码标识位数据均为“1”表明写回数据是通过第三压缩处理单元进行压缩处理的,进而可以通过与第三压缩处理单元相对应的第三解压缩单元对压缩数据进行解压缩处理。编码标识位数据的后两位数据均为“1”表明写回数据是通过第一压缩处理单元进行压缩处理的,进而可以通过与第一压缩处理单元相对应的第一解压缩单元对压缩数据进行解压缩处理。优选的,对于编码标识位数据的前两位所包含的每一个bit位数据按照从前往后的方式进行处理。具体的,当bit位为“0”时,则输出子数据块的“0”,当 bit位为“1”时,则依次数据子数据块的数据,从而可以得到例如是大小为 64B的原始数据。编码标识位数据的剩余数据是指除其最后两位数据之外的所有数据。例如,当编码标识位数据的大小为4B时,编码标识位数据的剩余数据是指其前两位数据。
优选的,编码标识位数据的最后两位数据不均为“1”表明写回数据是通过第二压缩处理单元进行压缩处理的,进而可以通过与第二压缩处理单元相对应的第二解压缩单元进行解压缩处理。优选的,对于编码标识位数据的每一位数据按照从前往后的方式进行处理。具体的,当bit位为“0”时,则输出子数据块的“0”,当bit位为“1”时,则依次输出子数据块的数据,从而可以得到例如是大小为64B的原始数据。解压缩后的数据均读取至中央处理器的快速缓冲贮存区中,至此完成数据的读取。
需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。
Claims (10)
1.一种硬件支持的3D堆叠NVM内存数据压缩方法,设置第一标识对写回数据的压缩状态进行标识,其特征在于,所述3D堆叠NVM内存数据压缩方法至少包括如下步骤:
将写回数据划分为若干个子数据块并基于若干个子数据块彼此之间的或运算以分别获取若干个第一输出结果,或者基于若干个子数据块彼此之间的异或运算以获取若干个第二输出结果,基于所述第一输出结果或所述第二输出结果确定所述写回数据的压缩策略;
按照与所述第一标识成对设置的方式设置用于标识所述写回数据的存储方式的第二标识,至少按照对所述第二标识进行轮转处理的方式配置所述写回数据的存储策略。
2.如权利要求1所述的3D堆叠NVM内存数据压缩方法,其特征在于,所述压缩策略的确定至少包括如下步骤:
将写回数据划分为n1个子数据块,每一个子数据块均分别输入一个位数为h1的第一比较器(3)中进行或运算以获得n1个均由“0”和“1”表示的第一输出结果,在由“0”表示的第一输出结果的数量N1大于1的情况下,按照执行第一压缩处理的方式对所述写回数据进行压缩处理,其中:
在N1小于等于1的情况下,将所述写回数据重新划分为n2个子数据块,每一个子数据块均分别输入一个位数为h2的第二比较器(4)中进行或运算以获得n2个由“0”和“1”表示的第一输出结果,在由“0”表示的第一输出结果的数量N2大于2且最后p个第一输出结果不全为“1”时,按照执行第二压缩处理的方式对所述写回数据进行压缩处理。
3.如权利要求2所述的3D堆叠NVM内存数据压缩方法,其特征在于,所述压缩策略的确定还包括如下步骤:
在N2小于等于2,或者所述p个第一输出结果均为“1”的情况下,将所述写回数据重新划分为n3个子数据块,第一子数据块分别与其自身以及其余子数据块进行异或运算以获取n3个第二输出结果,在所述第二输出结果的大小均为1B的情况下,按照执行第三压缩处理的方式对所述写回数据进行压缩处理。
4.如权利要求3所述的3D堆叠NVM内存数据压缩方法,其特征在于,所述存储策略的确定至少包括如下步骤:
根据写回数据的大小为写回数据配置至少包括编码标识存储区、压缩数据存储区和空闲区的存储空间,并将所述存储空间依次划分为大小均为1B的a个子存储空间;
在所述第二标识的值由0和1进行表示的情况下,按照将第二标识的值进行互换的方式对其进行所述轮转处理,其中:
在所述第二标识的值为0时,所述编码标识存储区由前b个子存储空间共同限定,在所述第二标识的值为1时,所述编码标识存储区由最后b个子存储空间共同限定。
5.如权利要求4所述的3D堆叠NVM内存数据压缩方法,其特征在于,所述第一压缩处理至少包括如下步骤:
将第一标识进行更新以表明写回数据已进行压缩处理,读取第二标识并对其进行轮转处理,在轮转处理后的第二标识的值为0时,按照第一存储方式对数据进行压缩存储,在轮转处理后的第二标识的值为1时,按照第二存储方式对数据进行压缩存储,其中:
所述第一存储方式指:第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间共同构成编码标识存储区,其中,第一子存储空间和第二子存储空间配置为写入所述n1个第一输出结果,第三子存储空间和第四子存储空间配置为写入“1”,并且将输出结果为“1”的M1个子数据块依次写入存储空间的第五子存储空间、第六子存储空间……第4*(M1+1)子存储空间中;
所述第二存储方式指:最后4个子存储空间共同构成编码标识存储区,编码标识存储区的前两个子存储空间配置为写入所述n1个第一输出结果,编码标识存储区的后两个子存储空间写入“1”,并且将输出结果为“1”的M1个子数据块依次写入存储空间的第4*(N1-1)+1子存储空间……第a-4子存储空间中。
6.如权利要求5所述的3D堆叠NVM内存数据压缩方法,其特征在于,所述第二压缩处理至少包括如下步骤:
将所述第一标识进行更新以表明写回数据已进行压缩处理,读取第二标识并对其进行轮转处理,在轮转处理后的第二标识的值为0时,按照第三存储方式对数据进行压缩存储,在轮转处理后的第二标识的值为1时,按照第四存储方式对数据进行压缩存储,其中:
所述第三存储方式指:第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间共同构成编码标识存储区,其中,第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间配置为写入所述n2个第一输出结果,并且将输出结果为“1”的M2个子数据块依次写入存储空间的第五子存储空间……第2*(M2+2)子存储空间中;
所述第四存储方式指:最后4个子存储空间共同构成编码标识存储区,所述最后4个子存储空间配置为依次写入所述n2个第一输出结果,并且将输出结果为“1”的M2个子数据块依次写入存储空间的第2*(N2-2)+1子存储空间……第a-4子存储空间中。
7.如权利要求6所述的3D堆叠NVM内存数据压缩方法,其特征在于,所述第三压缩处理至少包括如下步骤:
将第一标识进行更新以表明写回数据已进行压缩处理,读取第二标识并对其进行轮转处理,在轮转处理后的第二标识的值为0时,按照第五存储方式对数据进行压缩存储,在轮转处理后的第二标识的值为1时,按照第六存储方式对数据进行压缩存储,其中:
所述第五存储方式指:第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间共同构成编码标识存储区,其中,第一子存储空间、第二子存储空间、第三子存储空间和第四子存储空间中均写入“1”,并将所述第一子数据块依次写入第五子存储空间至第八子存储空间中,将所述n3个第二输出结果依次写入第九子存储空间至第二十四子存储空间中;
所述第六存储方式指:存储空间的最后4个子存储空间共同构成编码标识区,其中,编码标识存储区中均写入“1”,将所述第一子数据块依次写入第四十一子存储空间至第四十四子存储空间中,将所述n3个第二输出结果依次写入第四十五子存储空间至第六十子存储空间中。
8.一种硬件支持的3D堆叠NVM内存数据压缩系统,设置第一标识对写回数据的压缩状态进行标识,其特征在于,所述3D堆叠NVM内存数据压缩系统至少包括中央处理器(1)和3D堆叠NVM存储器(2),所述3D堆叠NVM存储器(2)配置为按照如下方式对所述中央处理器(1)的写回数据进行压缩处理:
将写回数据划分为若干个子数据块并基于若干个子数据块彼此之间的或运算以分别获取若干个第一输出结果,或者基于若干个子数据块彼此之间的异或运算以获取若干个第二输出结果,基于所述第一输出结果或所述第二输出结果确定所述写回数据的压缩策略;
按照与所述第一标识成对设置的方式设置用于标识所述写回数据的存储方式的第二标识,至少按照对所述第二标识进行轮转处理的方式配置所述写回数据的存储策略。
9.如权利要求8所述的3D堆叠NVM内存数据压缩系统,其特征在于,所述3D堆叠NVM存储器(2)至少包括用于压缩写回数据的数据压缩模块(201)、用于进行轮换处理的寻址模块(202)和用于对数据进行解压缩的数据解压缩模块(203),所述数据压缩模块(201)配置为:
将写回数据划分为n1个子数据块,每一个子数据块均分别输入一个位数为h1的第一比较器(3)中进行或运算以获得n1个均由“0”和“1”表示的第一输出结果,在由“0”表示的第一输出结果的数量N1大于1的情况下,按照执行第一压缩处理的方式对所述写回数据进行压缩处理,其中:
在N1小于等于1的情况下,将所述写回数据重新划分为n2个子数据块,每一个子数据块均分别输入一个位数为h2的第二比较器(4)中进行或运算以获得n2个由“0”和“1”表示的第一输出结果,在由“0”表示的第一输出结果的数量N2大于2且最后p个第一输出结果不全为“1”时,按照执行第二压缩处理的方式对所述写回数据进行压缩处理;
在N2小于等于2,或者所述p个第一输出结果均为“1”的情况下,将所述写回数据重新划分为n3个子数据块,第一子数据块分别与其自身以及其余子数据块进行异或运算以获取n3个第二输出结果,在所述第二输出结果的大小均为1B的情况下,按照执行第三压缩处理的方式对所述写回数据进行压缩处理。
10.如权利要求9所述的3D堆叠NVM内存数据压缩系统,其特征在于,所述数据解压缩模块(203)至少包括第一解压缩单元(203a)、第二解压缩单元(203b)和第三解压缩单元(203c),所述数据解压缩模块(203)配置为按照如下方式对数据进行解压缩处理:
读取第一标识,当第一标识的值为0时,直接读取数据,当第一标识的值为1时,读取第二标识,并提取编码标识存储区的编码标识位数据;
在第二标识的值为0且编码标识位数据均为“1”时,通过所述第三解压缩单元(203c)对数据进行解压缩处理,其中,在编码标识位数据不均为“1”且其最后两位数据均为“1”的情况下,通过所述第一解压缩单元(203a)对编码标识位数据的剩余数据进行解压缩处理;或者在编码标识位数据的最后两位数据不均为“1”的情况下,通过所述第二解压缩单元(203b)对数据进行解压缩处理;
在第二标识的值为1且编码标识位数据均为“1”时,通过所述第三解压缩单元(201c)对数据进行解压缩,其中,在编码标识位数据不均为“1”且其最后两位数据均为“1”的情况下,通过所述第一解压缩单元(203a)对编码标识位数据的剩余数据进行解压缩处理;或者在编码标识位数据的最后两位数据不均为“1”的情况下,通过所述第二解压缩单元(203b)对数据进行解压缩处理。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910153736.5A CN110007855B (zh) | 2019-02-28 | 2019-02-28 | 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 |
| US16/750,655 US10996856B2 (en) | 2019-02-28 | 2020-01-23 | Hardware-supported 3D-stacked NVM data compression method and system thereof |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910153736.5A CN110007855B (zh) | 2019-02-28 | 2019-02-28 | 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN110007855A CN110007855A (zh) | 2019-07-12 |
| CN110007855B true CN110007855B (zh) | 2020-04-28 |
Family
ID=67166173
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201910153736.5A Active CN110007855B (zh) | 2019-02-28 | 2019-02-28 | 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US10996856B2 (zh) |
| CN (1) | CN110007855B (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111371461B (zh) * | 2020-04-26 | 2023-04-07 | 宁夏隆基宁光仪表股份有限公司 | 一种适用于智能电表的原码与反码混合式数据压缩方法 |
| CN114936170B (zh) * | 2022-04-28 | 2025-04-04 | Oppo广东移动通信有限公司 | 面向终端设备的数据内联压缩方法、终端设备及存储介质 |
| CN117951963B (zh) * | 2024-03-22 | 2024-06-04 | 深圳鸿芯微纳技术有限公司 | 基于哈密尔顿-蒙特卡洛采样的芯片热仿分析方法及装置 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103427844A (zh) * | 2013-07-26 | 2013-12-04 | 华中科技大学 | 一种基于gpu和cpu混合平台的高速无损数据压缩方法 |
| CN104202269A (zh) * | 2014-09-26 | 2014-12-10 | 浪潮软件集团有限公司 | 一种网络数据包的压缩方法 |
| CN105824574A (zh) * | 2015-12-07 | 2016-08-03 | 国家电网公司 | 一种内存数据存储方法 |
| CN106375762A (zh) * | 2015-07-22 | 2017-02-01 | 杭州海康威视数字技术股份有限公司 | 参考帧数据压缩方法及其装置 |
| CN109213433A (zh) * | 2017-07-07 | 2019-01-15 | 华为技术有限公司 | 闪存设备中数据写入的方法及设备 |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN100565883C (zh) * | 2001-10-07 | 2009-12-02 | 张国飙 | 电编程三维集成存储器 |
| CN100430943C (zh) * | 2006-01-09 | 2008-11-05 | 中国科学院自动化研究所 | 一种过程工业历史数据智能两级压缩方法 |
| JP5532560B2 (ja) * | 2008-08-25 | 2014-06-25 | ソニー株式会社 | データ変換装置、およびデータ変換方法、並びにプログラム |
| CN107046812B (zh) * | 2015-12-08 | 2021-02-12 | 华为技术有限公司 | 一种数据保存方法和装置 |
| US10594491B2 (en) * | 2015-12-24 | 2020-03-17 | Intel Corporation | Cryptographic system memory management |
| US10037245B2 (en) * | 2016-03-29 | 2018-07-31 | International Business Machines Corporation | Raid system performance enhancement using compressed data and byte addressable storage devices |
| US10437667B2 (en) * | 2016-03-29 | 2019-10-08 | International Business Machines Corporation | Raid system performance enhancement using compressed data |
| US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
| US10411732B2 (en) * | 2017-02-13 | 2019-09-10 | International Business Machines Corporation | Parallel Lempel-Ziv compression for highly-parallel computer architectures |
| CN107481750B (zh) * | 2017-08-11 | 2021-01-01 | 华中科技大学 | 一种降低多层自旋转移矩磁存储器能耗的编解码方法 |
-
2019
- 2019-02-28 CN CN201910153736.5A patent/CN110007855B/zh active Active
-
2020
- 2020-01-23 US US16/750,655 patent/US10996856B2/en active Active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103427844A (zh) * | 2013-07-26 | 2013-12-04 | 华中科技大学 | 一种基于gpu和cpu混合平台的高速无损数据压缩方法 |
| CN104202269A (zh) * | 2014-09-26 | 2014-12-10 | 浪潮软件集团有限公司 | 一种网络数据包的压缩方法 |
| CN106375762A (zh) * | 2015-07-22 | 2017-02-01 | 杭州海康威视数字技术股份有限公司 | 参考帧数据压缩方法及其装置 |
| CN105824574A (zh) * | 2015-12-07 | 2016-08-03 | 国家电网公司 | 一种内存数据存储方法 |
| CN109213433A (zh) * | 2017-07-07 | 2019-01-15 | 华为技术有限公司 | 闪存设备中数据写入的方法及设备 |
Non-Patent Citations (1)
| Title |
|---|
| 基于逻辑运算的折半划分测试数据压缩方法;吴琼,等.;《系统仿真学报》;20150630;第27卷(第6期);第1324-1328页 * |
Also Published As
| Publication number | Publication date |
|---|---|
| US10996856B2 (en) | 2021-05-04 |
| CN110007855A (zh) | 2019-07-12 |
| US20200278795A1 (en) | 2020-09-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9836277B2 (en) | In-memory popcount support for real time analytics | |
| US20190073132A1 (en) | Method and system for active persistent storage via a memory bus | |
| US10365844B2 (en) | Logical block address to physical block address (L2P) table compression | |
| US20190196907A1 (en) | Compression techniques for distributed data | |
| TWI492059B (zh) | 多串列介面堆疊式晶粒記憶體架構 | |
| US20190266193A1 (en) | Data processing method for bloom filter, and bloom filter | |
| CN110007855B (zh) | 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 | |
| US20200042500A1 (en) | Collaborative compression in a distributed storage system | |
| US11791838B2 (en) | Near-storage acceleration of dictionary decoding | |
| US20180040367A1 (en) | Apparatus and method for endurance friendly programming using lower voltage thresholds | |
| US11768614B2 (en) | Storage device operation orchestration | |
| CN114493978A (zh) | 加速器控制器中心 | |
| US20190114108A1 (en) | Storage compute offloads on compressed and distributed data | |
| US12176059B2 (en) | Internal and external data transfer for stacked memory dies | |
| CN117171060A (zh) | 用于数据和额外数据部分的存储器子系统寻址 | |
| TWI544414B (zh) | 用以重新排序資料的方法和裝置 | |
| CN110046154A (zh) | 在存储器内关系数据库中高效执行过滤操作的方法和装置 | |
| KR20240029419A (ko) | z스왑 가속을 위한 데이터 처리 장치 및 방법 | |
| US20240393945A1 (en) | In-situ memory compression | |
| CN116529705A (zh) | 利用计算机存储器中的值相似性的系统、方法和装置 | |
| CN113994314B (zh) | 扩展存储器接口 | |
| CN117420945A (zh) | 用于经由多个模式存取存储器装置的控制器和方法 | |
| US11476874B1 (en) | Method and system for facilitating a storage server with hybrid memory for journaling and data storage | |
| US20250258600A1 (en) | Lossy compression in memory | |
| CN117420966B (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 |