CN105955891B - 一种双层磨损均衡方法及系统 - Google Patents
一种双层磨损均衡方法及系统 Download PDFInfo
- Publication number
- CN105955891B CN105955891B CN201610259384.8A CN201610259384A CN105955891B CN 105955891 B CN105955891 B CN 105955891B CN 201610259384 A CN201610259384 A CN 201610259384A CN 105955891 B CN105955891 B CN 105955891B
- Authority
- CN
- China
- Prior art keywords
- row
- gap
- address
- module
- physical 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种双层磨损均衡方法及系统,适用于相变存储器内存。该方法具体为:外层负责整个内存存储区域逻辑地址到中间地址的映射,通过增加密钥的复杂度,可以在恶意程序探测出完整的密钥前变换密钥;内层负责在每个子区域内使用独立的代数磨损均衡方法,在低开销的情况下达到区域内的磨损均衡,解决由于相变存储器存在复位和置位操作的延时差别而泄露磨损均衡算法的密钥,降低内存系统安全性的问题。
Description
技术领域
本发明属于固态存储领域,具体涉及一种双层磨损均衡方法及系统,适用于相变存储器内存。
背景技术
随着多核技术的发展,计算机系统对内存的需求越来越高。而传统的动态随机存取存储器(DRAM)内存由于受到可扩展性和漏电功耗的约束,无法满足新环境的应用需求,其发展受到了限制。相变存储器(Phase Change Memory,PCM)具有可扩展性高、容量大、功耗低和性能高的优点,是替代DRAM作为下一代内存最有竞争力的候选者。
然而,PCM面临的最大挑战是耐久性限制,即每个存储单元最多只可以承受107-108次写。在写请求均匀分布的情况下,PCM可以达到5年以上的使用寿命。但是真实应用中存在大量的不均衡分布的写请求,一些被频繁写的存储单元会在短期内(例如几周~几个月)失效,从而导致相变存储内存无法正常工作。除此之外,PCM还存在严重的安全问题,例如恶意的攻击程序持续地写入特定的行,会导致PCM在几十秒钟内失效。为了解决不均匀的写请求和恶意攻击的问题,磨损均衡技术把上层应用的不均衡的写请求均匀地重映射到各个存储单元,尽量使每个存储单元承受的写操作数量一致。已有的磨损均衡方法可以分为两类——基于表格的磨损均衡算法(TBWL)和基于代数的磨损均衡算法(AWL)。(1)基于表格的磨损均衡算法:该类算法记录了每个逻辑块和物理块的映射关系,同时也统计了每个物理块的写次数。通过周期性的交换写次数最高和最低的行来平衡块之间的写差距。为了达到高的寿命,映射和交换块的粒度要求足够小,但是这会导致非常高的空间开销。除此之外,大部分的基于表格的磨损算法采用确定的交换策略,使得恶意的程序可以猜测出待交换区域的新位置,从而持续攻击某个特定区域,导致这个区域的所有行在短时间内都被磨穿。(2)基于代数的磨损均衡算法:典型的算法有Start-Gap和Security Refresh等。基于代数的磨损均衡算法通过代数映射,周期性的移动物理行,通过大量的行交换从概率上使得“热”的逻辑行可以移动到各个物理行上,其物理地址可以通过给定的逻辑地址和代数函数计算获得。基于代数的磨损均衡算法具有低开销,高安全性的优点。
然而,近期研究者提出了一种新型的攻击算法。其核心思想是:根据相变存储器的复位和置位操作的延时存在明显的差别,即每个单元写入“0”和“1”具有显著的差别,恶意的攻击程序可以通过探测逻辑地址到物理地址映射的变化,精心安排攻击的逻辑地址序列,使写请求命中到小部分物理位置上,令PCM内存快速失效。PCM的差别写延时特征导致了代数磨损均衡算法的密钥可能泄露,内存安全性降低的问题。因此动态变换逻辑地址到物理地址的映射,并保证映射关系不为攻击者所知,是保证PCM安全的必要条件。然而,现有的磨损均衡算法不能有效抵御新型的恶意攻击程序。
发明内容
针对现有技术的缺陷,本发明提供了一种双层磨损均衡方法及系统,其目的在于,通过外层实现逻辑地址到中间地址的映射,通过增加密钥的复杂度,可以在恶意程序探测出完整的密钥前变换密钥,从而避免密钥泄露,抵抗恶意攻击;内层负责在每个区域内使用独立的代数磨损均衡方法,在低开销的情况下达到区域内的磨损均衡,解决由于相变存储器存在复位(写“1”)和置位(写“0”)操作的延时差别而泄露磨损均衡算法的密钥,降低内存系统安全性的问题。
为了实现本发明技术目的,本发明采用如下技术方案:
一种双层磨损均衡方法,相变存储器内存存储区域被分为多个大小相同的子存储区域,每个子存储区域被分为多个大小相同的物理行,每一物理行对应一个逻辑地址和一个物理地址,所述逻辑地址和物理地址具有唯一映射的关系;所述方法包括以下步骤:
对每个子存储区域,在其每执行P个写请求之后,使用代数磨损均衡算法移动该子存储区域中物理行的数据,从而实现子存储区域内部的磨损均衡;
对整个内存存储区域,在其每执行T个写请求之后,按照如下步骤实现整个内存存储区域的磨损均衡:
(S1)整个内存存储区域包含的物理行依序为第0行、第1行、……、第N行;判断当前空白行GAP是否是第N物理行,若是,跳转步骤(S2);否则,选择一个行进行重映射,跳转(S3);
(S2)判定所有物理行的重映射标志是否都为true,若是,则说明所有物理行已完成本轮重映射,跳转步骤(S4),否则,跳转步骤(S5);
(S3)利用本轮密钥计算当前空白行GAP所指向的逻辑地址DECKc(GAP),再利用上一轮密钥计算出该逻辑地址在上一轮映射中的物理行地址ENCKp(DECKc(GAP)),判断上一轮的物理行地址ENCKp(DECKc(GAP))是否等于需转移数据的物理行START,如果是,跳转步骤(S6),否则,跳转步骤(S7);
(S4)令需转移数据的物理行START和当前空白行GAP同时为第0行;将第START物理行的数据移动到第N物理行,并为下一轮重映射生成密钥,结束;
(S5)令需转移数据的物理行START为一个未重映射的行,将物理行START的数据移动到第N物理行,更新当前空白行GAP为物理行START,结束;
(S6)将第N行的数据转移到当前空白行GAP,更新当前空白行GAP为第N行,将逻辑地址DECKc(GAP)所指物理行的重映射标志置为true,结束;
(S7)将第ENCKp(DECKc(GAP))行的数据转移到当前空白行GAP,更新当前空白行GAP为第ENCKp(DECKc(GAP))行,将第ENCKp(DECKc(GAP))行的重映射标志置为true,结束。
一种基于双层磨损均衡的内存访问方法,包括以下步骤:
(T1)查找待访问逻辑地址LA所对应的重映射标志,判断其是否为true.若是,说明该逻辑行在此轮已经被重映射,跳转到(T2);否则,该逻辑行还未被重映射,跳转到(T3);
(T2)使用本轮密钥Kc翻译逻辑地址LA得到中间地址IA,即中间地址IA等于ENCKc(LA),跳转到(T6);
(T3)使用上一轮密钥Kp翻译逻辑地址得到中间地址IA,即中间地址IA等于ENCKp(LA),判断ENCKp(LA)是否为需转移数据的物理行START,若是,则跳转到(T4);否则跳转到(T5);
(T4)判断当前空白行GAP是否为需转移数据的物理行START行,若是,说明需转移数据的物理行START的数据已被移动到第N物理行,则令中间地址IA等于N;否则,中间地址IA等于START,跳转到(T6);
(T5)令中间地址IA等于ENCKp(LA),跳转到(T6);
(T6)通过中间地址IA除以子区域数量获知IA所对应的物理行存储于哪个子区域中;依据中间地址IA,结合该子区域的地址映射算法,计算得到对应的物理地址PA,返回物理地址PA以作访问。
一种双层磨损均衡系统,包括相变存储内存控制器和相变存储内存;
所述相变存储内存包括:多个代数磨损均衡模块,以及与其一一对应和多个子存储区域,代数磨损均衡模块用于使用代数磨损均衡算法移动子存储区域中物理行的数据;
所述相变存储内存控制器包括:
第一组寄存器Kc,用于存储本轮密钥;
第二组寄存器Kp,用于存储上一轮密钥;
随机数产生器,用于产生密钥;
GAP寄存器,用于记录当前空白行的位置;
START寄存器,用于记录需转移数据在转移前的物理行地址;
Crt寄存器,用于记录内存累计写入次数;
重映射标志存储器SRAM,用于标记物理行在本轮重映射是否已经被重映射;
加解密电路,用于利用密钥进行物理地址与逻辑地址之间的映射转换;
数据交换模块,用于负责重映射数据交换;
控制电路,用于控制实现整个内存存储区域的磨损均衡;
所述控制电路包括:
第S1模块,用于整个内存存储区域包含的物理行依序为第0行、第1行、……、第N行;判断GAP寄存器记录的当前空白行GAP是否是第N物理行,若是,跳转第S2模块;否则,选择一个行进行重映射,跳转第S3模块;
第S2模块,用于判定重映射标志存储器SRAM记录的所有物理行的重映射标志是否都为true,若是,则说明所有物理行已完成本轮重映射,跳转步骤第S4模块,否则,跳转第S5模块;
第S3模块,用于调用加解密电路利用本轮密钥计算当前空白行GAP所指向的逻辑地址DECKc(GAP),再利用上一轮密钥计算出该逻辑地址在上一轮映射中的物理行地址ENCKp(DECKc(GAP)),判断上一轮的物理行地址ENCKp(DECKc(GAP))是否等于需转移数据的物理行START,如果是,跳转第S6模块,否则,跳转第S7模块;
第S4模块,用于令START寄存器存储的需转移数据的物理行START和GAP寄存器存储的当前空白行GAP同时为第0行;调用数据交换模块将第START物理行的数据移动到第N物理行,并调用随机数产生器为下一轮重映射生成密钥,结束;
第S5模块,用于令START寄存器存储的需转移数据的物理行START为一个未重映射的行,调用数据交换模块将物理行START的数据移动到第N物理行,更新当前空白行GAP为物理行START,结束;
第S6模块,用于调用数据交换模块将第N行的数据转移到当前空白行GAP,更新当前空白行GAP为第N行,将逻辑地址DECKc(GAP)所指物理行的重映射标志置为true,结束;
第S7模块,用于调用数据交换模块将第ENCKp(DECKc(GAP))行的数据转移到当前空白行GAP,更新当前空白行GAP为第ENCKp(DECKc(GAP))行,将第ENCKp(DECKc(GAP))行的重映射标志置为true,结束。
一种基于双层磨损均衡的内存系统,包括相变存储内存控制器和相变存储内存;
所述相变存储内存包括:多个代数磨损均衡模块,以及与其一一对应和多个子存储区域;代数磨损均衡模块用于使用代数磨损均衡算法移动子存储区域中物理行的数据;
所述相变存储内存控制器包括:
第一组寄存器Kc,用于存储本轮密钥;
第二组寄存器Kp,用于存储上一轮密钥;
随机数产生器,用于产生密钥;
GAP寄存器,用于记录当前空白行的位置;
START寄存器,用于记录需转移数据在转移前的物理行地址;
Crt寄存器,用于记录内存累计写入次数;
重映射标志存储器SRAM,用于标记物理行在本轮重映射是否已经被重映射;
加解密电路,用于利用密钥进行物理地址与逻辑地址之间的映射转换;
数据交换模块,用于负责重映射数据交换;
地址映射模块,用于将逻辑地址翻译成中间地址;
控制电路,用于控制实现整个内存存储区域的磨损均衡;
所述控制电路包括:
第T1模块,用于令整个内存存储区域包含的物理行依序为第0行、第1行、……、第N行;判断GAP寄存器记录的当前空白行GAP是否是第N物理行,若是,跳转第T2模块;否则,选择一个行进行重映射,跳转第T3模块;
第T2模块,用于判定重映射标志存储器SRAM记录的所有物理行的重映射标志是否都为true,若是,则说明所有物理行已完成本轮重映射,跳转第四模块,否则,跳转第五模块;
第T3模块,用于调用加解密电路利用本轮密钥计算当前空白行GAP所指向的逻辑地址DECKc(GAP),再利用上一轮密钥计算出该逻辑地址在上一轮映射中的物理行地址ENCKp(DECKc(GAP)),判断上一轮的物理行地址ENCKp(DECKc(GAP))是否等于需转移数据的物理行START,如果是,跳转第六模块,否则,跳转步骤第七模块;
第T4模块,用于令START寄存器存储的需转移数据的物理行START和GAP寄存器存储的当前空白行GAP同时为第0行;调用数据交换模块将第START物理行的数据移动到第N物理行,并调用随机数产生器为下一轮重映射生成密钥,结束;
第T5模块,用于令START寄存器存储的需转移数据的物理行START为一个未重映射的行,调用数据交换模块将物理行START的数据移动到第N物理行,更新当前空白行GAP为物理行START,结束;
第T6模块,用于调用数据交换模块将第N行的数据转移到当前空白行GAP,更新当前空白行GAP为第N行,将逻辑地址DECKc(GAP)所指物理行的重映射标志置为true,结束;
第T7模块,用于调用数据交换模块将第ENCKp(DECKc(GAP))行的数据转移到当前空白行GAP,更新当前空白行GAP为第ENCKp(DECKc(GAP))行,将第ENCKp(DECKc(GAP))行的重映射标志置为true,结束。
进一步地,所述地址映射模块包括:
第T11模块,用于查找待访问逻辑地址LA所对应的重映射标志,判断其是否等于true.若等于,说明该逻辑行在此轮已经被重映射,跳转到第T12模块;否则,该逻辑行还未被重映射,跳转第T13模块;
第T12模块,用于使用本轮密钥Kc翻译逻辑地址LA得到中间地址IA,即中间地址IA等于ENCKc(LA),跳转到第T16模块;
第T13模块,用于使用上一轮密钥Kp翻译逻辑地址得到中间地址IA,即中间地址IA等于ENCKp(LA),判断ENCKp(LA)是否为需转移数据的物理行START,若等于,则跳转到第T14模块;否则跳转到第T15模块;
第T14模块,用于判断当前空白行GAP是否等于需转移数据的物理行START,若是,说明需转移数据的物理行START的数据已被移动到第N物理行,则令中间地址IA等于N;否则,中间地址IA等于START,跳转到子区域地址映射子模块;
第T15模块,用于令中间地址IA等于ENCKp(LA),跳转到子区域地址映射子模块;
所述代数磨损均衡模块包括子区域地址映射子模块,用于通过中间地址IA除以子区域数量获知IA所对应的物理行存储于哪个子区域中;依据中间地址IA,结合该子区域的地址映射算法,计算得到对应的物理地址PA,返回物理地址PA以作访问。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
1、外层实现逻辑地址到中间地址的映射,通过增加密钥的复杂度,可以在恶意程序探测出完整的密钥前变换密钥,从而避免密钥泄露,抵抗恶意攻击,保证PCM内存设备的安全。
2、内层负责在每个区域内使用独立的代数磨损均衡方法(如Start-Gap,SecurityRefresh),在低开销的情况下达到区域内的磨损均衡。
整个方案使用两层的磨损均衡策略,既可以对抗恶意攻击,又可以保证PCM内存设备在普通负载下的低开销与高寿命。
附图说明
图1是本发明基于双层磨损均衡的内存访问系统结构图;
图2是本发明外层磨损均衡方法流程图;
图3是本发明外层磨损均衡方法的数据移动示例图;
图4是本发明Feistel网络的加解密原理示意图;
图5是本发明基于双层磨损均衡的内存访问方法流程图。
具体实施方式
为了便于理解本发明,首先对本发明中出现的以下名词进行解释:
物理行:内存系统最基本的访问单元。在不同的系统中,行大小可以不同。通常一个行大小可以为64字节,128字节,256字节;
区域(region):内存空间中的一片存储区间,由若干个物理行组成。通常一个区域可以由2048,4096和8192个行组成;
逻辑行地址:上层应用程序请求的地址,是一个虚拟地址,记为LA
中间行地址:逻辑地址经上层映射后对应的地址,是一个虚拟地址,记为IA。
物理行地址:物理设备所对应的地址,它是一个真实地址,记为PA;
重映射:根据新的密钥改变逻辑行地址到物理行地址的对应关系。
一轮重映射:磨损均衡方法对其管理范围内的所有行都进行了一次重映射;
ENCKey(·):密钥为Key的Feistel网络加密结果.
DECKey(·):密钥为Key的Feistel网络解密结果。
图1是本发明提高安全性的双层磨损均衡方法的原理示意图。针对新型攻击方法导致的安全问题,本发明外层实现逻辑地址到中间地址的映射,通过增加密钥的负责度,使得恶意程序无法在密钥动态变换前探测出完整的密钥,保证了PCM内存设备的安全。外层的磨损均衡算法由PCM内存控制器实现,PCM内存控制器包括存储单元和硬件控制单元。
存储单元包括:两组寄存器组Kc(记录当前轮密钥)和Kp(记录上一轮密钥),每组含有S个寄存器,分别记录了当前轮和上一轮重映射的Feistel网络密钥。S为Feistel网络的循环次数,可以根据不同安全需求进行调节,但一旦确定就无法更改;GAP寄存器,记录当前空白行的位置;START寄存器,记录被移动到空白行的数据的原位置;Crt寄存器,记录内存累积写入次数,用于触发磨损均衡算法的数据移动;行映射标志(SRAM),每个逻辑行一个位,用于标记逻辑行在当前重映射轮是否已经被重映射。
硬件控制单元包括:加解密电路、随机数产生器、负责重映射数据交换的数据交换模块、负责把逻辑地址翻译成中间地址的地址映射模块、实现整个内存存储区域的磨损均衡的控制电路。
为了平衡一个区域内部各个行之间不均衡的写分布,本发明在内层使用譬如Start-Gap的磨损均衡算法独立地管理各个区域,使得写次数多的行可以快速的与这个区域内的其他行进行交换,避免一个行被过早的磨穿。Start-Gap磨损均衡算法预留一个空白行,周期性的把空白行邻居行的数据移动到空白行,原邻居行成为新的空白行。Start-Gap需要3个寄存器,分别存储最小逻辑地址对应的物理地址、空白行指针和写计数器。Start-Gap以非常低的计算和存储开销平衡达到区域内磨损均衡的效果。
内层的代数磨损均衡模块集成在PCM bank中,每个代数磨损均衡模块独立管理一个区域。每个磨损均衡模块使用纯硬件实现,具有低开销和低延时的优势。在本发明实例中,每个区域都独立进行Start-Gap磨损均衡策略,以使得写次数更多的区域可以进行更多有效的移动。
本发明将PCM内存系统的存储区域平均划分为多个子存储区域,每个子存储区域由若干个物理行组成,每个子存储区域包含的物理行行数相等。
本发明提高安全性的双层磨损均衡数据交换方法包括如下步骤:
(1)内层磨损均衡数据交换
对每个子存储区域,在其每执行P个写请求之后,使用譬如Start-Gap的代数磨损均衡算法移动该子存储区域的物理行中的数据,从而实现子存储区域内部的磨损均衡。
其中,P为代数磨损均衡算法的交换周期,为预定值,综合考虑本发明的磨损均衡方法的寿命和性能选取P的值。优选地,P∈(8,128),此时,本发明的磨损均衡方法的寿命适中,同时其性能降级维持在0.78%和12.5%之间。
(2)外层磨损均衡数据交换
对整个内存存储区域,在其每执行T个写请求之后,控制电路按照如下步骤实现整个内存存储区域的磨损均衡:
初始状态下,除了GAP寄存器的值为N,其他所有寄存器值均为0,所有行映射标志均为true。在PCM系统的存储区域每执行T个写请求之后,触发外层磨损均衡方法进行数据交换,具体实现过程为:
(S1)整个内存存储区域包含的物理行依序为第0行、第1行、……、第N行;判断当前空白行GAP是否是第N物理行,若是,跳转步骤(S2);否则,选择一个行进行重映射,跳转(S3);
(S2)判定所有物理行的重映射标志是否都为true,若是,则说明所有物理行已完成本轮重映射,跳转步骤(S4),否则,跳转步骤(S5);
(S3)利用本轮密钥计算当前空白行GAP所指向的逻辑地址DECKc(GAP),再利用上一轮密钥计算出该逻辑地址在上一轮映射中的物理行地址ENCKp(DECKc(GAP)),判断上一轮的物理行地址ENCKp(DECKc(GAP))是否等于需转移数据的物理行START,如果是,跳转步骤(S6),否则,跳转步骤(S7);
(S4)令需转移数据的物理行START和当前空白行GAP同时为第0行;将第START物理行的数据移动到第N物理行,并为下一轮重映射生成密钥,结束;
(S5)令需转移数据的物理行START为一个未重映射的行,将物理行START的数据移动到第N物理行,更新当前空白行GAP为物理行START,结束;
(S6)将第N行的数据转移到当前空白行GAP,更新当前空白行GAP为第N行,将逻辑地址DECKc(GAP)所指物理行的重映射标志置为true,结束;
(S7)将第ENCKp(DECKc(GAP))行的数据转移到当前空白行GAP,更新当前空白行GAP为第ENCKp(DECKc(GAP))行,将第ENCKp(DECKc(GAP))行的重映射标志置为true,结束。
其中,T为预定值,优选地,T∈(16,256)。
通过执行上述步骤(1)和(2),分别在不同层次完成子存储区域内部和子存储区域之间的写次数平衡,从而实现磨损均衡。
图3是基于外层磨损均衡算法的数据移动原理示例图,该示例中存储区域物理行的数目N为4,第4行为预留的空白行。初始状态下,START等于0,GAP等于N。T次写后,进行第一次重映射。因为GAP等于N且所有行的重映射标志都是true,因此将第0物理行的数据移动到第N物理行,令START和GAP都等于0,并为下一轮重映射生成密钥。再T次写,触发第二次重映射,此时GAP(0)不等于N且ENCKp(DECKc(0))等于3,所以把第3行的数据移动到第0行,令GAP等于3,把第3行对应重映射标志置为true。再T次写,触发第三次重映射,此时GAP(3)不等于N且ENCKp(DECKc(3))等于START(0),所以把第N行的数据移动到GAP(3)行,令GAP=N,把第0行对应重映射标志置为true。再T次写,触发第四次重映射,此时GAP=N,且第1、2行还未进行重映射,所以令START和GAP都等于1,把第1行的数据移动到第N行,把第1行对应重映射标志置为true。再T次写,触发五次重映射,此时GAP(1)不等于N且ENCKp(DECKc(1))等于2,所以把第2行的数据移动到第1行,令GAP等于2,把第2行对应重映射标志置为true。再T次写,触发第六次重映射,此时GAP(2)不等于N且ENCKp(DECKc(2))等于START(1),所以把第N行的数据移动到GAP(2)行,令GAP等于N,把第1行所对应重映射标志置为true,至此,存储空间内所有行都已进行了一次重映射,当前重映射轮结束。
外层磨损均衡算法中,代数映射方法可采用Feistel网络、随机可逆矩阵等一一对应的映射方法。作为优选,本发明外层采用基于动态Feistel网络的磨损均衡方法,利用Feistel网络作为磨损均衡算法的代数方法,通过增加Feistel网络的轮数,就可以增加密钥的复杂度,使探测完整密钥所需的时间变长。而通过动态变换密钥,就可以在恶意程序探测出完整密钥前变换Feistel网络的密钥,使恶意攻击失效,保证了PCM内存设备的安全性。内层采用低复杂度低,性能和低硬件开销的代数磨损均衡算法Start-Gap,保证了PCM内存在普通负载下的使用寿命。
Feistel网络是一种广泛应用与安全领域的对称加密方法,其工作流程如图1所示。输入被分割为两个部分(L和R),对于加密过程的每一轮i(i=1,2,...,S),新的左半部分和右半部分分别依如下规则计算生成:Li=Ri-1;Ri=Li XOR F(Ri-1,Ki)。F为预先自定义的轮函数,{K1,K2,...,KS}为密钥。解密过程与加密相似,只需要改变密钥输入的次序,即解密密钥相应地为{KS,KS-1,...,K1}。
本发明还提供了一种基于上述双层磨损均衡方法的内存访问方法。每个请求到达内存需要执行地址映射算法,把逻辑地址转化为实际可访问的物理地址。本发明基于上述双层磨损均衡方法的内存访问方法包括如下步骤:
(T1)查找待访问逻辑地址LA所对应的重映射标志,判断其是否为true.若是,说明该逻辑行在此轮已经被重映射,跳转到(T2);否则,该逻辑行还未被重映射,跳转到(T3);
(T2)使用本轮密钥Kc翻译逻辑地址LA得到中间地址IA,即中间地址IA等于ENCKc(LA),跳转到(T6);
(T3)使用上一轮密钥Kp翻译逻辑地址得到中间地址IA,即中间地址IA等于ENCKp(LA),判断ENCKp(LA)是否为需转移数据的物理行START,若是,则跳转到(T4);否则跳转到(T5);
(T4)判断当前空白行GAP是否为需转移数据的物理行START,若是,说明需转移数据的物理行START的数据已被移动到第N物理行,则令中间地址IA等于N;否则,中间地址IA等于START,跳转到(T6);
(T5)令中间地址IA等于ENCKp(LA),跳转到(T6);
(T6)通过中间地址IA除以子区域数量获知IA所对应的物理行存储于哪个子区域中;依据中间地址IA,结合该子区域的地址映射算法,计算得到对应的物理地址PA,返回物理地址PA以作访问。
下面从安全性、存储开销、硬件开销和性能影响等方面对本发明的高安全性双层的磨损均衡方法进行评估。
设总存储容量是C,每个行大小为M Byte,总行数为N,被分成R个子区域,Feistel网络的轮数为S,外层的数据交换周期为T,内层的数据交换周期为P。推荐配置为1GB总容量,行大小为256Byte,512个子区域,外层数据交换周期为128,内存数据交换周期为64。
假设恶意攻击每N/R次写可以探测出密钥的一个位,而密钥变换的周期为N*T,则密钥的长度必须大于T*R。每一轮密钥的长度为log2(N),为了保证安全性,使恶意攻击在探测出密钥前就已变换新密钥,Feistel网络的轮数必须大于T*R/log2(N),在推荐配置下,轮数必须大于6。
首先分析存储开销。Kc和Kp所需的存储空间为S*log2(N)位。GAP,START和Crt寄存器分别需要log2(N),log2(N)和log2(T)位,即需要的寄存器存储开销为(S+2)*log2(N)+log2(T)位。内层以start-gap方法为例,每个子区域需要2×log2(N/R)位寄存器用以存储START和GAP的位置,log2(P)为寄存器用以计算写次数。因此内外层总共需要(S+2)×log2(N)+log-2(T)+R×(2×log2(N/R)+log2(P))位寄存器。每个磨损均衡都需要一个额外行辅助数据移动,因此额外的PCM存储空间为(R+1)×M Byte.每个行需要一个位来记录是否已经被重映射,因此行映射标志的SRAM开销为N位。
优选地,使用立方函数作为轮函数,每个立方函数需要大概(3/8)×B2个逻辑门,因此S轮Feistel网络的逻辑门开销大概为S*(3/8)×B2。
每一轮Feistel网络大约带来1个时钟周期的延迟,而访问SRAM的延迟大概为3-5个时钟周期。所以因地址转换对读写访问造成的延迟大概为10个时钟周期。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种双层磨损均衡方法,其特征在于,相变存储器内存存储区域被分为多个大小相同的子存储区域,每个子存储区域被分为多个大小相同的物理行,每一物理行对应一个逻辑地址和一个物理地址,所述逻辑地址和物理地址具有唯一映射的关系;所述方法包括以下步骤:
对每个子存储区域,在其每执行P个写请求之后,使用代数磨损均衡算法移动该子存储区域中物理行的数据,从而实现子存储区域内部的磨损均衡;
对整个内存存储区域,在其每执行T个写请求之后,按照如下步骤实现整个内存存储区域的磨损均衡:
(S1)整个内存存储区域包含的物理行依序为第0行、第1行、……、第N行;判断当前空白行GAP是否是第N物理行,若是,跳转步骤(S2);否则,选择一个行进行重映射,跳转(S3);
(S2)判定所有物理行的重映射标志是否都为true,若是,则说明所有物理行已完成本轮重映射,跳转步骤(S4),否则,跳转步骤(S5);
(S3)利用本轮密钥计算当前空白行GAP所指向的逻辑地址DECKc(GAP),再利用上一轮密钥计算出该逻辑地址在上一轮映射中的物理行地址ENCKp(DECKc(GAP)),判断上一轮的物理行地址ENCKp(DECKc(GAP))是否等于需转移数据的物理行START,如果是,跳转步骤(S6),否则,跳转步骤(S7);
(S4)令需转移数据的物理行START和当前空白行GAP同时为第0行;将第START物理行的数据移动到第N物理行,并为下一轮重映射生成密钥,结束;
(S5)令需转移数据的物理行START为一个未重映射的行,将物理行START的数据移动到第N物理行,更新当前空白行GAP为物理行START,结束;
(S6)将第N行的数据转移到当前空白行GAP,更新当前空白行GAP为第N行,将逻辑地址DECKc(GAP)所指物理行的重映射标志置为true,结束;
(S7)将第ENCKp(DECKc(GAP))行的数据转移到当前空白行GAP,更新当前空白行GAP为第ENCKp(DECKc(GAP))行,将第ENCKp(DECKc(GAP))行的重映射标志置为true,结束。
2.一种基于双层磨损均衡的内存访问方法,其特征在于,包括以下步骤:
(T1)查找待访问逻辑地址LA所对应的重映射标志,判断其是否为true,若是,说明待访问逻辑地址LA在此轮已经被重映射,跳转到(T2);否则,待访问逻辑地址LA还未被重映射,跳转到(T3);
(T2)使用本轮密钥Kc翻译逻辑地址LA得到中间地址IA,即中间地址IA等于ENCKc(LA),跳转到(T6);
(T3)使用上一轮密钥Kp翻译逻辑地址得到中间地址IA,即中间地址IA等于ENCKp(LA),判断ENCKp(LA)是否为需转移数据的物理行START,若是,则跳转到(T4);否则跳转到(T5);
(T4)判断当前空白行GAP是否为需转移数据的物理行START行,若是,说明需转移数据的物理行START的数据已被移动到第N物理行,则令中间地址IA等于N;否则,中间地址IA等于START,跳转到(T6);
(T5)令中间地址IA等于ENCKp(LA),跳转到(T6);
(T6)通过中间地址IA除以子区域数量获知IA所对应的物理行存储于哪个子区域中;依据中间地址IA,结合该子区域的地址映射算法,计算得到对应的物理地址PA,返回物理地址PA以作访问。
3.一种双层磨损均衡系统,其特征在于,包括相变存储内存控制器和相变存储内存;
所述相变存储内存包括:多个代数磨损均衡模块,以及与其一一对应和多个子存储区域,代数磨损均衡模块用于使用代数磨损均衡算法移动子存储区域中物理行的数据;
所述相变存储内存控制器包括:
第一组寄存器Kc,用于存储本轮密钥;
第二组寄存器Kp,用于存储上一轮密钥;
随机数产生器,用于产生密钥;
GAP寄存器,用于记录当前空白行的位置;
START寄存器,用于记录需转移数据在转移前的物理行地址;
Crt寄存器,用于记录内存累计写入次数;
重映射标志存储器SRAM,用于标记物理行在本轮重映射是否已经被重映射;
加解密电路,用于利用密钥进行物理地址与逻辑地址之间的映射转换;
数据交换模块,用于负责重映射数据交换;
控制电路,用于控制实现整个内存存储区域的磨损均衡;
所述控制电路包括:
第S1模块,用于整个内存存储区域包含的物理行依序为第0行、第1行、……、第N行;判断GAP寄存器记录的当前空白行GAP是否是第N物理行,若是,跳转第S2模块;否则,选择一个行进行重映射,跳转第S3模块;
第S2模块,用于判定重映射标志存储器SRAM记录的所有物理行的重映射标志是否都为true,若是,则说明所有物理行已完成本轮重映射,跳转步骤第S4模块,否则,跳转第S5模块;
第S3模块,用于调用加解密电路利用本轮密钥计算当前空白行GAP所指向的逻辑地址DECKc(GAP),再利用上一轮密钥计算出该逻辑地址在上一轮映射中的物理行地址ENCKp(DECKc(GAP)),判断上一轮的物理行地址ENCKp(DECKc(GAP))是否等于需转移数据的物理行START,如果是,跳转第S6模块,否则,跳转第S7模块;
第S4模块,用于令START寄存器存储的需转移数据的物理行START和GAP寄存器存储的当前空白行GAP同时为第0行;调用数据交换模块将第START物理行的数据移动到第N物理行,并调用随机数产生器为下一轮重映射生成密钥,结束;
第S5模块,用于令START寄存器存储的需转移数据的物理行START为一个未重映射的行,调用数据交换模块将物理行START的数据移动到第N物理行,更新当前空白行GAP为物理行START,结束;
第S6模块,用于调用数据交换模块将第N行的数据转移到当前空白行GAP,更新当前空白行GAP为第N行,将逻辑地址DECKc(GAP)所指物理行的重映射标志置为true,结束;
第S7模块,用于调用数据交换模块将第ENCKp(DECKc(GAP))行的数据转移到当前空白行GAP,更新当前空白行GAP为第ENCKp(DECKc(GAP))行,将第ENCKp(DECKc(GAP))行的重映射标志置为true,结束。
4.一种基于双层磨损均衡的内存系统,其特征在于,包括相变存储内存控制器和相变存储内存;
所述相变存储内存包括:多个代数磨损均衡模块,以及与其一一对应和多个子存储区域;代数磨损均衡模块用于使用代数磨损均衡算法移动子存储区域中物理行的数据;
所述相变存储内存控制器包括:
第一组寄存器Kc,用于存储本轮密钥;
第二组寄存器Kp,用于存储上一轮密钥;
随机数产生器,用于产生密钥;
GAP寄存器,用于记录当前空白行的位置;
START寄存器,用于记录需转移数据在转移前的物理行地址;
Crt寄存器,用于记录内存累计写入次数;
重映射标志存储器SRAM,用于标记物理行在本轮重映射是否已经被重映射;
加解密电路,用于利用密钥进行物理地址与逻辑地址之间的映射转换;
数据交换模块,用于负责重映射数据交换;
地址映射模块,用于将逻辑地址翻译成中间地址;
控制电路,用于控制实现整个内存存储区域的磨损均衡;
所述控制电路包括:
第T1模块,用于令整个内存存储区域包含的物理行依序为第0行、第1行、……、第N行;判断GAP寄存器记录的当前空白行GAP是否是第N物理行,若是,跳转第T2模块;否则,选择一个行进行重映射,跳转第T3模块;
第T2模块,用于判定重映射标志存储器SRAM记录的所有物理行的重映射标志是否都为true,若是,则说明所有物理行已完成本轮重映射,跳转第T4模块,否则,跳转第T5模块;
第T3模块,用于调用加解密电路利用本轮密钥计算当前空白行GAP所指向的逻辑地址DECKc(GAP),再利用上一轮密钥计算出该逻辑地址在上一轮映射中的物理行地址ENCKp(DECKc(GAP)),判断上一轮的物理行地址ENCKp(DECKc(GAP))是否等于需转移数据的物理行START,如果是,跳转第T6模块,否则,跳转步骤第T7模块;
第T4模块,用于令START寄存器存储的需转移数据的物理行START和GAP寄存器存储的当前空白行GAP同时为第0行;调用数据交换模块将第START物理行的数据移动到第N物理行,并调用随机数产生器为下一轮重映射生成密钥,结束;
第T5模块,用于令START寄存器存储的需转移数据的物理行START为一个未重映射的行,调用数据交换模块将物理行START的数据移动到第N物理行,更新当前空白行GAP为物理行START,结束;
第T6模块,用于调用数据交换模块将第N行的数据转移到当前空白行GAP,更新当前空白行GAP为第N行,将逻辑地址DECKc(GAP)所指物理行的重映射标志置为true,结束;
第T7模块,用于调用数据交换模块将第ENCKp(DECKc(GAP))行的数据转移到当前空白行GAP,更新当前空白行GAP为第ENCKp(DECKc(GAP))行,将第ENCKp(DECKc(GAP))行的重映射标志置为true,结束。
5.根据权利要求4所述的基于双层磨损均衡的内存系统,其特征在于,
所述地址映射模块包括:
第T11模块,用于查找待访问逻辑地址LA所对应的重映射标志,判断其是否等于true.若等于,说明待访问逻辑地址LA在此轮已经被重映射,跳转到第T12模块;否则,待访问逻辑地址LA还未被重映射,跳转第T13模块;
第T12模块,用于使用本轮密钥Kc翻译逻辑地址LA得到中间地址IA,即中间地址IA等于ENCKc(LA),跳转到第T15模块;
第T13模块,用于使用上一轮密钥Kp翻译逻辑地址得到中间地址IA,即中间地址IA等于ENCKp(LA),判断ENCKp(LA)是否为需转移数据的物理行START,若等于,则跳转到第T14模块;否则跳转到第T15模块;
第T14模块,用于判断当前空白行GAP是否等于需转移数据的物理行START,若是,说明需转移数据的物理行START的数据已被移动到第N物理行,则令中间地址IA等于N;否则,中间地址IA等于START,跳转到子区域地址映射子模块;
第T15模块,用于令中间地址IA等于ENCKp(LA),跳转到子区域地址映射子模块;
所述代数磨损均衡模块包括子区域地址映射子模块,用于通过中间地址IA除以子区域数量获知IA所对应的物理行存储于哪个子区域中;依据中间地址IA,结合该子区域的地址映射算法,计算得到对应的物理地址PA,返回物理地址PA以作访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610259384.8A CN105955891B (zh) | 2016-04-25 | 2016-04-25 | 一种双层磨损均衡方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610259384.8A CN105955891B (zh) | 2016-04-25 | 2016-04-25 | 一种双层磨损均衡方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105955891A CN105955891A (zh) | 2016-09-21 |
CN105955891B true CN105955891B (zh) | 2018-12-14 |
Family
ID=56915199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610259384.8A Active CN105955891B (zh) | 2016-04-25 | 2016-04-25 | 一种双层磨损均衡方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105955891B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980799B (zh) * | 2017-03-10 | 2019-05-14 | 华中科技大学 | 一种磨损均衡感知的非易失内存加密系统 |
CN108536616B (zh) * | 2018-03-28 | 2021-10-15 | 华中科技大学 | 一种提升pcm数据加密写性能和寿命的映射方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778126A (zh) * | 2015-04-20 | 2015-07-15 | 清华大学 | 非易失性主存中事务数据存储优化方法及系统 |
CN105068938A (zh) * | 2015-08-12 | 2015-11-18 | 华中科技大学 | 一种基于多层单元的非易失内存的磨损均衡方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806171B2 (en) * | 2011-05-24 | 2014-08-12 | Georgia Tech Research Corporation | Systems and methods providing wear leveling using dynamic randomization for non-volatile memory |
-
2016
- 2016-04-25 CN CN201610259384.8A patent/CN105955891B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778126A (zh) * | 2015-04-20 | 2015-07-15 | 清华大学 | 非易失性主存中事务数据存储优化方法及系统 |
CN105068938A (zh) * | 2015-08-12 | 2015-11-18 | 华中科技大学 | 一种基于多层单元的非易失内存的磨损均衡方法 |
Non-Patent Citations (2)
Title |
---|
PCM 多向Start -Gap算法设计与实现;朱鹏 等;《小型微型计算机系统》;20160331;第37卷(第3期);第627-631页 * |
一种基于代数映射的相变内存矩阵磨损均衡方法;杜雨阳 等;《计 算 机 研 究 与 发 展》;20121231;第49卷(第12期);第2713-2720页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105955891A (zh) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11636038B2 (en) | Method and apparatus for controlling cache line storage in cache memory | |
US10884940B2 (en) | Method and apparatus for using compression to improve performance of low voltage caches | |
Seong et al. | Security refresh: Prevent malicious wear-out and increase durability for phase-change memory with dynamically randomized address mapping | |
US9348743B2 (en) | Inter-set wear-leveling for caches with limited write endurance | |
US9418700B2 (en) | Bad block management mechanism | |
CN104115133B (zh) | 用于复合非易失性存储设备的数据迁移的方法、系统和设备 | |
CN107491397A (zh) | 存储设备、存储模块和存储设备的操作方法 | |
CN103959258B (zh) | 背景重排序——具有有限开销的预防性的磨损控制机制 | |
CN105068938B (zh) | 一种基于多层单元的非易失内存的磨损均衡方法 | |
CN110018971B (zh) | 缓存替换技术 | |
CN111602377A (zh) | 高速缓存中资源调整方法、数据访问方法及装置 | |
TWI652576B (zh) | Memory system and processor system | |
US11615030B2 (en) | Cache memory system and cache memory control method | |
Mittal et al. | EqualWrites: Reducing intra-set write variations for enhancing lifetime of non-volatile caches | |
CN103942161B (zh) | 只读缓存的去冗余系统及方法以及缓存的去冗余方法 | |
CN108351833A (zh) | 用来压缩密码元数据以用于存储器加密的技术 | |
CN106980799B (zh) | 一种磨损均衡感知的非易失内存加密系统 | |
CN105955891B (zh) | 一种双层磨损均衡方法及系统 | |
Quan et al. | Prediction table based management policy for STT-RAM and SRAM hybrid cache | |
KR20140135580A (ko) | 쓰기 트래픽이 적은 캐시 메모리 블록 교체 방법 및 이를 이용한 캐시 서브시스템을 가지는 정보 처리 장치 | |
US20090100226A1 (en) | Cache memory device and microprocessor | |
JP2017058955A (ja) | キャッシュメモリシステム | |
Liu et al. | Efficient wear leveling for PCM/DRAM-based hybrid memory | |
KR20150091892A (ko) | 하이브리드 메인 메모리 기반의 메모리 접근 관리방법 | |
Wu et al. | Efficient space management and wear leveling for PCM-based storage systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |