CN109933424B - 基于数据循环移位的pcm内存行复用方法 - Google Patents
基于数据循环移位的pcm内存行复用方法 Download PDFInfo
- Publication number
- CN109933424B CN109933424B CN201910055632.0A CN201910055632A CN109933424B CN 109933424 B CN109933424 B CN 109933424B CN 201910055632 A CN201910055632 A CN 201910055632A CN 109933424 B CN109933424 B CN 109933424B
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- value
- dead
- memory line
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种基于数据循环移位的PCM内存行复用方法,包括:内存行的结构优化;记录卡死单元信息的卡死位置缓存;复用卡死单元的写内存行操作;复用卡死单元的读内存行操作。针对PCM存储器写寿命短导致内存行出现卡死单元的问题,摒弃以往弃之不用的做法,转而优化内存行结构,添加记录卡死单元信息的卡死位置缓存;结合卡死位置缓存中的条目信息,采用数据循环移位的方法,将移位后的数据写入存在卡死单元的内存行中,实现内存行的复用。本方法具备存储代价小、计算速度快的优点。
Description
所属技术领域
本发明涉及一种PCM内存行复用方法。
背景技术
当前计算机中的内存采用DRAM存储技术。随着DRAM存储密度的不断提升,存储单元越来越小,能容纳的电荷越来越少,以至于不能稳定地、足够久地保存数据,因此DRAM技术已经慢慢接近物理极限,需要新的存储技术来代替DRAM。非易失性相变存储器PCM(phasechange memory)是一种新的很有竞争力的存储技术。PCM采用不同的存储原理,即通过相变材料的状态变化而非电荷来存储表示数据,因为不存在DRAM的漏电流效应,可以持久地保存数据,而且PCM的存储密度可以做得更高。
每一个PCM存储单元包含一混合金属层,其可以在高电阻的晶体态和低电阻的非晶体态之间切换,即分别表示、存储逻辑值0和1。虽然PCM有高密度、无漏电流等优势,但相比于DRAM,PCM也有自身的劣势。首先,PCM存储器数据读取的速度比较慢,数据写入的速度则更慢于DRAM。另外,PCM存储器数据写寿命较短,即写入数据的次数,一般是108次。因为反复地写入数据,即PCM存储单元中的合金层频繁改变状态,最终混合金属层疲劳损坏,使得存储单元永久性陷入某种状态不能改变,因此不能再写入新的数据,这种现象称为PCM存储单元卡死(Stuck)。虽然不能写入新数据,存储单元仍然可以被读取,只不过读取的是其卡死状态所代表的数据值。
与DRAM内存架构类似,PCM单元以二维阵列的形式构成存储块(Bank),大小的常见配置是512×512,横向的512个存储单元构成内存行(Block),纵向的称为列。存储块是内存基本的结构和功能单元,每次读写存储块都是以内存行为单位。因为PCM存储单元写寿命较短,而且不同存储单元的写寿命有明显的差距,意味着一个内存行中写寿命较短的单元最早出现存储单元卡死。一旦内存行中的某个存储单元卡死,那么该内存行就不能正常地写入数据,即使剩余的511个存储单元都还未出现卡死。在发现某个内存行出现卡死存储单元时,如果就将该内存行弃之不用,意味着一个存储单元的卡死就将导致整个内存行都不能继续使用,造成极大浪费。
发明内容
本发明要克服现有技术的不足,提出基于数据循环移位的PCM内存行复用方法。本发明的优点是在PCM内存行出现卡死单元的情况下,不仅不禁用内存行,还能够复用内存行,继续读写数据,并且所提的方法存储代价小、计算速度快。
本发明的内容和特征就是:摒弃以往弃之不用的做法,转而优化内存行的结构,添加记录卡死单元信息的卡死位置缓存;结合卡死位置缓存中的条目信息,采用循环移位数据值的方法,将数据写入存在卡死单元的内存行中,实现内存行的复用;读取内存行中的数据时,根据标志位信息,再将读取的数据恢复为原始数据。
基于数据循环移位的PCM内存行复用方法,包括:
1)内存行的结构优化;
内存行的结构优化包括每个内存行添加卡死标志位、移位计数器和翻转标志位。卡死标志位用标识内存行当前是否存在卡死单元;移位计数器记录原始数据循环移位多少位后写入内存行;翻转标志位表示数据是否翻转后写入内存行。
2)记录卡死单元信息的卡死位置缓存;
内存控制器中的卡死位置缓存(Stuck Cache)记录所有内存行的卡死单元位置和陷入值。卡死位置缓存的基本单位是条目(Entry),包含内存行的一个卡死单元位置和陷入值信息。对于n大小的内存行,需要log2(n)个bit表示卡死位置以及1个bit来存储陷入值。每个内存行通过自身地址来寻找、定位卡死缓存中属于自己的条目。
3)复用卡死单元的写内存行操作;
内存行的卡死标志位是0,则直接写数据到内存行;内存行的卡死标志位非0,首先使用内存行地址查询卡死位置缓存,获得卡死单元信息后,循环移位数据值使得数据值与卡死单元的陷入值一致,再写入数据到内存行同时设置移位计数器值。如果循环移位数据值不能找到与卡死单元陷入值一致的移位距离值,则翻转数据后再重复循环移位操作。
4)复用卡死单元的读内存行操作;
为了复用内存行中的卡死单元,内存行中存储的数据需要经过循环移位和翻转操作,因此从内存行读数据的一个重要步骤就是恢复原始数据值。主要根据内存行的翻转标志位和移位计数器的值,对内存行中读出的数据进行翻转操作和逆向循环移位操作,从而将读出的数据值恢复为原始数据值。
本发明优化内存行的结构,添加记录卡死单元信息的卡死位置缓存;结合卡死位置缓存中的条目信息,采用循环移位数据值的方法,将数据写入存在卡死单元的内存行中,实现内存行的复用。
本发明具备存储代价小、计算速度快的优点。
附图说明
图1是本发明方法优化后的内存行结构。
图2是卡死位置缓存的示意图。
具体实施方式
下面结合附图,进一步说明本发明方法的技术方案。图1是优化后的内存行结构,其中(a)是横向多个内存行(Block)构成的内存块结构,(b)是添加卡死标志位、移位计数器和翻转标志位的内存行。图2是卡死位置缓存,缓存包含多个组(Group),每个组包含大量条目,并且由内存行地址寻址。
本发明的一种基于数据循环移位的PCM内存复用方法,包含以下的技术步骤:
内存块中的每个内存行添加卡死标志位(Stuck Bit)、移位计数器(ShiftCounter)和翻转标志位(Flip Bit)。卡死标志位值为1,表示当前内存行已经出现卡死单元;反之,如果值为0,内存行中还没有出现卡死单元。翻转标志位为1,表示内存行中的数据是经过取反操作后写入的,读取时需要再次取反还原。如果移位计数器非0,表示原始数据经过移位操作后才写入存储行,读取时需要再次逆向移位还原为原始数据。移位计数器和翻转标志位值是0,分别表示内存行中的没有经过移位操作和翻转操作。内存行中的数据移位后被写入,对应的移位距离值要写入到移位计数器。数据的原始的未移位状态对应移位距离值0。如果是n位数据,那么移位距离值的范围是0到n-1。移位距离值具体的计算过程参见写数据到内存行时的操作流程,移位计数器和翻转标志位的值也是在写内存行时被设置。
内存控制器中的卡死位置缓存(Stuck Cache)存储所有内存行的卡死单元位置和陷入值。缓存包含多个组(Group),每个组包含大量条目(Entry),每个条目信息包括三部分:有效标志位(Valid Bit)、标签值(Tag value)和陷入值(Stuck Value)。有效标志位表示当前条目是否有效,值为0说明本条目无效;反之,有效。每个条目对应内存行的一个卡死单元位置和陷入值。当内存行包含多个卡死单元,就对应卡死位置缓存中的多个条目。每个内存行通过自身地址来寻找定位卡死位置缓存中隶属于自己的条目。卡死缓存的更新由内存控制器中已有的数据纠错部件负责。
写数据到某个内存行时,如果卡死标志位值是1,则使用该内存行的地址去定位卡死位置缓存中的目标条目。具体的定位过程:将内存行地址分为缓存标签值(Cache Tag)和缓存索引值(Cache Index)两部分,使用缓存索引值定位到目标条目组,读出目标条目组中各个条目的标签值(Tag Value),其中与缓存标签值相等的标签值所在的条目就是目标条目,最后读出目标条目的卡死值用于确定当前内存行中的卡死单元。卡死值包含卡死位置和陷入值两部分内容。以包含512个单元的内存行为例,要确定卡死单元的位置需要log2(512)个bit,即9个bit,陷入值1个bit,所以卡死值是一个10bit的数据。
写数据到内存行时,如果内存行的卡死标志位是0,则直接写数据,同时置移位计数器和翻转标志位为0。当卡死标志位值为1时,要注意内存行中卡死单元的位置以及陷入值,需要查询目标内存行在卡死位置缓存中对应的条目,获得当前内存的卡死单元所在位置和陷入值。一种理想的情况是:将要写入的原始数据值,与内存行的卡死单元的陷入值一致,则直接写入数据并且置移位计数器和翻转标志位值为零。如果两者的值不一致,就需要循环移位原始数据值,使得移位后的原始数据值与内存行的卡死单元陷入值一致。以8位的原始数据为例,从左到右依次是第0位到第7位,那么循环移位1个距离,相当于将原来位置1的数据移动到位置0,位置2到位置1,依次类推,最后位置0的数据移动到位置7。例如现在的原始数据是01011001,内存行中的第0个单元卡死并且陷入值为1,原始数据不能直接写入到内存行,需要循环移位1个距离转化为10110010,此时数据的第1位与卡死单元陷入值一致,然后将移位后的数据写入到内存行。同时,设置移位标志位为1,并且更新移位计数器的值。上例中,移位计数器的值就设置为1,因为移动1个距离。
数据值与卡死单元的一致性判断采用异或比较电路完成:每个卡死单元的陷入值与移位后的数据值按位进行异或操作,所有结果值再分别同时导入或逻辑电路,如果或逻辑电路的值为0,说明数据值一致;否则,数据值不一致,还需要继续移位。每次移动1个距离,那么n位的数据值最多可进行n-1次移位操作。为加速寻找数据一致的移位距离,可采用并行取位异或比较方式。已知内存行中的两个卡死单元(a1,1)和(a2,0),其中的a1和a2表示卡死位置,而1和0分别表示两者的陷入值。假设数据data的第a1和a2位的值为data[a1]和data[a2],如果以2为步长进行并行比较,同时两对数据进行异或比较:第一对是(data[a1],data[a2])和(1,0),第二对是(data[(a1+1)mod n],data[(a2+1)mod n])和(1,0)。因为同时将两个移位在一个时间单位内比较完成,所以可以加快寻找数据一致的移位距离,降低对性能的影响。并行比较步长值越大,表示越多的数据对同时比较,速度也越快。如果一个内存行中出现多个卡死单元时,可能会小概率发生:移位n-1次后还是找不到数据一致的移位距离。作为补救,可以将原始数据取反后,再移位寻找数据一致的移位距离值,如果找到,则在移位计数器的同时,还要设置翻转标志位值为1。
内存行中存储的数据经过移位或者翻转,不再是原始数据,因此从内存行读数据的一个重要步骤就是恢复原始数据值。读取内存行的主要步骤如下:
1.读取内存行数据data,以及移位计数器和翻转标志位;
2.如果翻转位数据值为1,则翻转所读取的内存行数据得到data';如果移位计数器值为0,则直接返回data';
3.如果移位计数器非0,则根据移位计数器的值,逆向循环移位对应的距离,获得原始数据值;
相比于写数据时的循环移位操作,逆向循环移位操作只是移动数据的方向相反,其他一致。
本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。
Claims (1)
1.基于数据循环移位的PCM内存行复用方法,包括以下步骤:
1)内存行的结构优化;
内存行的结构优化包括每个内存行添加卡死标志位、移位计数器和翻转标志位;卡死标志位用于标识内存行当前是否存在卡死单元;移位计数器记录原始数据循环移位多少位后写入内存行;翻转标志位表示数据是否翻转后写入内存行;
2)记录卡死单元信息的卡死位置缓存;
内存控制器中的卡死位置缓存(Stuck Cache)记录所有内存行的卡死单元位置和陷入值;卡死位置缓存的基本单位是条目(Entry),包含内存行的一个卡死单元位置和陷入值信息;对于n大小的内存行,需要log2(n)个bit表示卡死位置以及1个bit来存储陷入值;每个内存行通过自身地址来寻找、定位卡死缓存中属于自己的条目;
3)复用卡死单元的写内存行操作;
内存行的卡死标志位是0,则直接写数据到内存行;内存行的卡死标志位非0,首先使用内存行地址查询卡死位置缓存,获得卡死单元信息后,循环移位数据值使得数据值与卡死单元的陷入值一致,再写入数据到内存行同时设置移位计数器值;如果循环移位数据值不能找到与卡死单元陷入值一致的移位距离值,则翻转数据后再重复循环移位操作;
4)复用卡死单元的读内存行操作;
为了复用内存行中的卡死单元,内存行中存储的数据需要经过循环移位和翻转操作,因此从内存行读数据的一个重要步骤就是恢复原始数据值;主要根据内存行的翻转标志位和移位计数器的值,对内存行中读出的数据进行翻转操作和逆向循环移位操作,从而将读出的数据值恢复为原始数据值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910055632.0A CN109933424B (zh) | 2019-01-22 | 2019-01-22 | 基于数据循环移位的pcm内存行复用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910055632.0A CN109933424B (zh) | 2019-01-22 | 2019-01-22 | 基于数据循环移位的pcm内存行复用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109933424A CN109933424A (zh) | 2019-06-25 |
CN109933424B true CN109933424B (zh) | 2020-11-13 |
Family
ID=66985019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910055632.0A Expired - Fee Related CN109933424B (zh) | 2019-01-22 | 2019-01-22 | 基于数据循环移位的pcm内存行复用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109933424B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112669896A (zh) * | 2021-01-12 | 2021-04-16 | 浙江工商大学 | 基于分组重定向写的pcm内存行复用方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8164967B2 (en) * | 2010-03-24 | 2012-04-24 | Apple Inc. | Systems and methods for refreshing non-volatile memory |
US20120191388A1 (en) * | 2011-01-25 | 2012-07-26 | Analog Devices, Inc. | Diagnostic method to check for stuck bits in storage registers of safety-critical systems |
US20140247673A1 (en) * | 2011-10-28 | 2014-09-04 | Naveen Muralimanohar | Row shifting shiftable memory |
US8719647B2 (en) * | 2011-12-15 | 2014-05-06 | Micron Technology, Inc. | Read bias management to reduce read errors for phase change memory |
US9235465B2 (en) * | 2012-06-06 | 2016-01-12 | University of Pittsburgh—of the Commonwealth System of Higher Education | Recursively determined invertible set approach to correct multiple stuck-at faults in rewritable memory |
US8972649B2 (en) * | 2012-10-05 | 2015-03-03 | Microsoft Technology Licensing, Llc | Writing memory blocks using codewords |
US9280417B2 (en) * | 2013-05-21 | 2016-03-08 | Microsoft Technology Licensing, Llc | Message storage in memory blocks using codewords |
CN105355233B (zh) * | 2015-11-23 | 2018-04-10 | 清华大学 | 基于pcm反转纠错算法的高效数据写入方法 |
CN105740090B (zh) * | 2016-01-27 | 2018-11-23 | 浙江大学 | 一种优化的相变存储器体系结构 |
US9704594B1 (en) * | 2016-02-18 | 2017-07-11 | Western Digital Technolgies, Inc. | Inter-cell interference reduction in flash memory devices |
-
2019
- 2019-01-22 CN CN201910055632.0A patent/CN109933424B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN109933424A (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104115133B (zh) | 用于复合非易失性存储设备的数据迁移的方法、系统和设备 | |
US9348743B2 (en) | Inter-set wear-leveling for caches with limited write endurance | |
CN107153707B (zh) | 一种针对非易失内存的哈希表构建方法及系统 | |
KR102407659B1 (ko) | 메모리 내 데이터 복원 작업의 수행 | |
TW201346911A (zh) | 內容定址記憶體系統 | |
CN107346212B (zh) | 损坏数据行的筛选方法与具有损坏数据行总表的数据储存装置 | |
CN107221351B (zh) | 一种固态盘系统中纠错码的优化处理方法及其应用 | |
TWI669607B (zh) | 用於對資料之記憶體操作之設備及方法 | |
CN109165321B (zh) | 一种基于非易失内存的一致性哈希表构建方法和系统 | |
US6560670B1 (en) | Inter-row configurability of content addressable memory | |
CN112311699B (zh) | 处理网络数据包的方法、装置及存储介质 | |
US10811082B1 (en) | Non-volatile memory with fast data cache transfer scheme | |
US11258539B2 (en) | Technologies for performing encoding of data symbols for column read operations | |
US20120173921A1 (en) | Redundancy memory storage system and a method for controlling a redundancy memory storage system | |
CN104991743A (zh) | 应用于固态硬盘阻变存储器缓存的损耗均衡方法 | |
CN107544749A (zh) | 数据储存媒体的损坏数据行的筛选方法 | |
US11327881B2 (en) | Technologies for column-based data layouts for clustered data systems | |
CN109933424B (zh) | 基于数据循环移位的pcm内存行复用方法 | |
CN101819821B (zh) | 一种固态硬盘动态损耗均衡方法 | |
CN102063340B (zh) | 一种提高磁电阻随机存储器高速缓存抗错能力的方法 | |
CN117539408B (zh) | 一种存算一体索引系统及键值对存储系统 | |
CN107402890A (zh) | 一种基于固态盘阵列和缓存的数据处理方法及系统 | |
US20060215437A1 (en) | Recovering from memory imprints | |
CN106326135B (zh) | 一种平移非易失性存储器nvm的数据的方法及装置 | |
CN111190834B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201113 Termination date: 20220122 |