CN112181864B - 针对Path ORAM的地址标签分配调度与多路径缓存写回方法 - Google Patents
针对Path ORAM的地址标签分配调度与多路径缓存写回方法 Download PDFInfo
- Publication number
- CN112181864B CN112181864B CN202011152061.1A CN202011152061A CN112181864B CN 112181864 B CN112181864 B CN 112181864B CN 202011152061 A CN202011152061 A CN 202011152061A CN 112181864 B CN112181864 B CN 112181864B
- Authority
- CN
- China
- Prior art keywords
- data
- path
- label
- oram
- paths
- 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
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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]
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种针对Path ORAM的地址标签分配调度与多路径缓存写回方法,包括新数据进入ORAM树的标签分配、访问路径时的部分提前与合并、缓存中数据的写回及数据写回ORAM树的标签分配四个阶段;在新数据进入内存或数据从缓存中写回后对数据进行基于内存行的标签分配或随机分配;接着对路径的访问进入请求队列,进行路径提前或合并优化;执行对整条路径的访问,路径中所有结点的数据被送入缓存;从缓存中返回数据时,选择一条最优的路径进行写回,使得对于下一次随机的路径访问中重叠的数据数量期望值最大。本发明提供的针对Path ORAM的地址标签分配调度与多路径缓存写回方法,在很小的硬件成本下,能快速访问Path ORAM,并降低执行时间,显著提高系统性能。
Description
技术领域
本发明涉及信息安全技术领域,尤其涉及一种针对Path ORAM的地址标签分配调度与多路径缓存写回方法及装置。
背景技术
不可见存储器(Oblivious RAM,以下简称ORAM)是一种保护内存访存模式的安全协议,该协议将对单个内存单元的访问转化为计算不可区分的含有固定数量访存的访问序列,从而掩盖原有的访问模式。其中,基于路径的不可见存储器(Path Oblivious RAM,以下简称Path ORAM)是目前访存效率最高,可行性最强的ORAM协议。但是,ORAM协议带来的巨大的内存访问开销,会严重降低系统性能。
为了降低访问开销,现有技术通常采用以下几种做法:第一,通过识别并丢弃路径访问之间的冗余请求部分,从而降低一部分开销,但该方法在数据之间存在依赖性时具有一定的局限性,可实施性差;第二,根据fork Path ORAM的数据写回后短时间内不会再读取的这一现象,将“读操作”提前到“写操作”之前,该方法虽然能有效提升系统性能,但是降低的开销占比很小,访问成本依然很大;第三,通过给主ORAM树设置一个小的ORAM树作为其缓存,而该方法与第二种效果类似,Path ORAM的访存开销仍然很大。因此,如何实现大幅降低Path ORAM的访存开销,并且显著提高系统的性能,是目前Path ORAM访存中亟待解决的问题。
发明内容
本发明的目的在于提供一种针对Path ORAM的地址标签分配调度与多路径缓存写回方法,该方法通过隐藏访存模式进行调度优化,在很小的硬件成本下,就能够快速访问Path ORAM,从而大幅降低Path ORAM的访存代价,同时降低系统执行时间,显著提高系统性能。
为了克服上述现有技术中的缺陷,本发明实施例提供了一种针对Path ORAM的地址标签分配调度与多路径缓存写回方法,包括:
新数据进入ORAM树的标签分配阶段、访问路径时的部分提前与合并阶段、缓存中数据的写回阶段及数据写回ORAM树的标签分配阶段;
A.在新数据进入ORAM树的标签分配阶段,执行如下操作:
A1.将新数据的地址记为addr,若与该新数据于同一内存行的地址中,存在在ORAM树中未成对的内存单元,将该内存单元地址记为addr’,执行步骤A2;
A2.根据位置图,获得addr’地址对应单元的路径标签label’及所在层数l’;为新数据随机分配一个与label’的二进制前l’位相同的新标签label-k;
A3.根据位置图,判断label-k对应的path-k的前l’个节点中是否有空闲位置,若是,则执行步骤A4;若否,则返回执行步骤A2,并将随机分配的新标签记为label-k’;
A4.根据path-k中已配对数据的数量,判断该数量是否达到第一预设阈值k;若否,则执行步骤A5;若是,则返回执行步骤A2,并将随机分配的新标签记为label-k’;
A5.将新数据的地址addr和标签label-k的配对关系标记在位置图中,并将该数据插入到ORAM树中,更新该数据的配对状态为已配对;
B.在访问路径时的部分提前与合并阶段,执行如下操作:
B1.根据当前访问路径的周期终点标志判断是否到达周期终点;若是,执行步骤B2;若否,执行步骤B3;
B2.将访问队列中最前面的两个路径请求需要访问的路径序号依次记为i,j,将每条路径请求需要访问的内存单元数量记为L,将路径中已经配对的数据数量分别记为ri、rj,根据具体设定情况判断是否进行访问路径时的部分提前与合并操作;
B3.重置周期计数器,将周期终点标志置反,且下一次路径访问不执行提前或合并操作;
C.在缓存数据的写回阶段,当缓存中有多条路径时,将使得下一次随机的路径访问中重叠的数据数量期望值最大的路径作为最优路径进行写回;
D.在数据写回ORAM树的标签分配阶段,当所述数据为目标数据时,由ORAM控制器为之分配一个新的标签,当所述数据为其他数据时,保持原标签不变。
在某一个实施例中,在所述A.在新数据进入ORAM树的标签分配阶段,还包括执行步骤A6;
其中,在所述步骤A1中,若与该新数据于同一内存行的地址中,不存在在ORAM树中未成对的内存单元,则执行步骤A6.为该新数据随机分配一个标签后插入到ORAM树中,更新位置图,并将该新数据的状态设置为未配对。
在某一个实施例中,所述D.在数据写回ORAM树的标签分配阶段,具体执行以下操作:
D1.根据当前目标数据的成对标识,判断上一次目标数据是否已配对;若是,则执行步骤D2;若否,则执行步骤D3;
D2.随机给当前目标数据一个新标签,记录当前状态为未配对,并更新位置图;
D3.将待写回的目标数据作为新数据,返回执行A1-A6操作;
D4.当目标数据和其他数据在不与自身标签冲突时,将其插入到ORAM树的路径中,并将所有数据写回内存。
在某一个实施例中,在所述B.在访问路径时的部分提前与合并阶段中,所述根据具体设定情况进行访问路径时的部分提前与合并阶段,包括:
B21.路径i,j中的目标数据都已经配对:用路径j中已配对的数据代替路径i中未配对的数据;若L-ri>rj,将全部rj个数据前移到路径i中,路径i保留rj-(L-ri)个未配对数据,并重置周期计数器;若L-ri<rj,则在rj个数据中随机选择L-ri个代替掉路径i中的未配对部分,周期计数器自增;
B22.路径i中的目标数据已配对,路径j中的目标数据未配对,且ri+(L-rj)<L,将ri个路径i中的已配对数据、(L-rj)个路径j中的未配对数据、(rj-ri)个路径j中的已配对数据组合成一条新的路径,重置周期计数器;
B23.路径j中的目标数据已配对,路径i中的目标数据未配对,且rj+(L-ri)<L,将rj个路径j中的已配对数据、(L-ri)个路径i中的未配对数据、(ri-rj)个路径i中的已配对数据组合成一条新的路径,重置周期计数器;
B24)不符合上述三种情况中的任一种,不执行任何提前或合并操作,周期计数器自增。
在某一个实施例中,所述C.在缓存数据的写回阶段,具体执行以下操作:
C1.设可缓存的最大路径数为N,i为目标数据有依赖关系的路径;当i=N时,写回特定的路径;当i<N时,对N-i条路径执行步骤C2;
C2.计算N-i条路径两两之间的最小共同祖先,具体为:将N-i条路径所对应的标签两两进行位异,或根据两条路径的LCA所在层数中的层数值最大的LCA,随机写回其对应的两条路径中的任意一条。
在某一个实施例中,所述两条路径的LCA所在层数为为路径出现最高位数所在的层。
本发明某一实施例还提供一种针对Path ORAM的地址标签分配调度与多路径缓存写回装置,包括:
新数据进入ORAM树的标签分配模块,用于在A.在新数据进入ORAM树的标签分配阶段,执行如下操作:
A1.将新数据的地址记为addr,若与该新数据于同一内存行的地址中,存在在ORAM树中未成对的内存单元,将该内存单元地址记为addr’,执行步骤A2;
A2.根据位置图,获得addr’地址对应单元的路径标签label’及所在层数l’;为新数据随机分配一个与label’的二进制前l’位相同的新标签label-k;
A3.根据位置图,判断label-k对应的path-k的前l’个节点中是否有空闲位置,若是,则执行步骤A4;若否,则返回执行步骤A2,并将随机分配的新标签记为label-k’;
A4.根据path-k中已配对数据的数量,判断该数量是否达到第一预设阈值k;若否,则执行步骤A5;若是,则返回执行步骤A2,并将随机分配的新标签记为label-k’;
A5.将新数据的地址addr和标签label-k的配对关系标记在位置图中,并将该数据插入到ORAM树中,更新该数据的配对状态为已配对;
访问路径时的部分提前与合并模块,用于在B.在访问路径时的部分提前与合并阶段,执行如下操作:
B1.根据当前访问路径的周期终点标志判断是否到达周期终点;若是,执行步骤B2;若否,执行步骤B3;
B2.将访问队列中最前面的两个路径请求需要访问的路径序号依次记为i,j,将每条路径请求需要访问的内存单元数量记为L,将路径中已经配对的数据数量分别记为ri、rj,根据具体设定情况判断是否进行访问路径时的部分提前与合并操作;
B3.重置周期计数器,将周期终点标志置反,且下一次路径访问不执行提前或合并操作;
缓存中数据的写回模块,用于在C.在缓存数据的写回阶段,当缓存中有多条路径时,将使得下一次随机的路径访问中重叠的数据数量期望值最大的路径作为最优路径进行写回;
数据写回ORAM树的标签分配模块,用于在D.在数据写回ORAM树的标签分配阶段,当所述数据为目标数据时,由ORAM控制器为之分配一个新的标签,当所述数据为其他数据时,保持原标签不变。
在某一个实施例中,所述新数据进入ORAM树的标签分配模块,还用于
在所述A.在新数据进入ORAM树的标签分配阶段,还执行步骤A6;其中,在所述步骤A1中,若与该新数据于同一内存行的地址中,不存在在ORAM树中未成对的内存单元,则执行步骤A6.为该新数据随机分配一个标签后插入到ORAM树中,更新位置图,并将该新数据的状态设置为未配对。
在某一个实施例中,所述数据写回ORAM树的标签分配模块,还用于,
在所述D.在数据写回ORAM树的标签分配阶段,具体执行以下操作:
D1.根据当前目标数据的成对标识,判断上一次目标数据是否已配对;若是,则执行步骤D2;若否,则执行步骤D3;
D2.随机给当前目标数据一个新标签,记录当前状态为未配对,并更新位置图;
D3.将待写回的目标数据作为新数据,返回执行A1-A6操作;
D4.当目标数据和其他数据在不与自身标签冲突时,将其插入到ORAM树的路径中,并将所有数据写回内存。
在某一个实施例中,所述缓存数据的写回模块,还用于,
在所述C.在缓存数据的写回阶段,具体执行以下操作:
C1.设可缓存的最大路径数为N,i为目标数据有依赖关系的路径;当i=N时,写回特定的路径;当i<N时,对N-i条路径执行步骤C2;
C2.计算N-i条路径两两之间的最小共同祖先,具体为:将N-i条路径所对应的标签两两进行位异,或根据两条路径的LCA所在层数中的层数值最大的LCA,随机写回其对应的两条路径中的任意一条。
本发明某一实施例还提供一种计算机终端设备,包括:一个或多个处理器;存储器,与所述处理器耦接,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上任一项所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法。
本发明某一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行实现如上任一项所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法。
相对于现有技术,本发明实施例通过隐藏访存模式进行调度优化,在很小的硬件成本下,就能够快速访问Path ORAM,从而大幅降低Path ORAM的访存代价,同时降低系统执行时间,显著提高系统性能。
附图说明
图1是本发明某一实施例提供的针对Path ORAM的地址标签分配调度与多路径缓存写回方法的流程示意图;
图2是本发明某一实施例提供的新数据进入ORAM树的标签分配流程示意图;
图3是本发明某一实施例提供的访问路径时的部分提前与合并流程示意图;
图4是本发明某一实施例提供的针对Path ORAM的地址标签分配调度与多路径缓存写回装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,文中所使用的步骤编号仅是为了方便描述,不对作为对步骤执行先后顺序的限定。
应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
第一方面:
本发明某一实施例提供了一种针对Path ORAM的地址标签分配调度与多路径缓存写回方法,包括:
A.新数据进入ORAM树的标签分配阶段;
B.访问路径时的部分提前与合并阶段;
C.缓存中数据的写回阶段;
D.数据写回ORAM树的标签分配阶段;
需要说明的是,为了行文方便,本实施例对文本的术语定义如下:
ORAM,Oblivious RAM(不可见存储器):一种保护内存访存模式的安全协议,将对单个内存单元的访问转化为Computationally Indistinguishable(计算不可分辨)的,含有固定数量访存的访问序列,从而掩盖原有的访问模式。
ORAM Tree(不可见存储器树):指一种树状结构的ORAM。内存在形式上被组织为一个树状结构,每个节点可以存储多个数据,从根节点到叶节点的路径被称为路径(path),每条路径都对应一个标签(label)。一般以path-i表示第i条路径,用label-i来表示值为i的标签。Path ORAM协议中每个内存访问都将转化为对ORAM树一条路径上所有节点的访问,即路径上的所有数据都会被写入最低一级缓存(LLC),目标数据被取出后,将会插入先前访问中的目标数据或空数据,再将整条路径写回内存。
Path ORAM(路径不可见存储器):使用ORAM树来管理内存的ORAM协议,每个数据都会被随机分配一个标签,且该数据在ORAM树中只能出现在对应于该标签的路径中。每次目标数据被读入CPU时都会被重新随机分配一个新的标签。
ORAM Controller(不可见存储器控制器):在内存控制器中专门负责ORAM访问的模块,主要包括位置图(position map),缓冲区(stash)和其他元数据,位置图用于记录物理地址和ORAM树的标签的对应关系,缓冲区用于存放来自内存的数据,其他元数据包括配对表,路径阈值表。
已配对/未配对(labeled/non-labeled):指该数据的标签是/否由本方法中的特殊标签分配方法获得,而不是随机分配。
ACT:打开内存行,即将整个内存行的数据移动到行缓冲区中;
READ:读内存行中某一列的数据;
PRE:关闭内存行,即将行缓冲区中的数据移动到内存行中。
本发明实施例中,在A.在新数据进入ORAM树的标签分配阶段,具体执行以下操作:
A1.记新进入内存的数据的物理地址为addr,检查与该地址处于同一内存行(memory row)的所有地址是否有在ORAM树中且未成对的内存单元,当存在这样的内存单元时,执行步骤A2;当不存在这样的数据时,执行步骤A6;
A2.记符合A1要求的内存单元地址为addr’,根据位置图(position map)获得该单元的路径标签(label’)以及所在层数l’,为新数据随机分配一个与label’的二进制前l’位相同的新标签label-k。
A3.检查位置图,判断标签label-k对应的path-k的前l’个节点中是否有空闲的位置,若有则继续执行步骤A4;若无则返回步骤A2再随机分配另一个符合条件的新标签label-k’;
A4.检查path-k中已经有配对的数据的数量,若已经达到预先设置的阈值K,则返回步骤A2再随机分配另一个符合条件的新标签label-k’;若未达到阈值K,则继续执行步骤A5;
A5.将新数据的地址addr和标签label-k的配对关系记录在位置图中,将该数据插入到ORAM树中,更新该数据的配对状态为已配对;
A6.同普通的Path ORAM,为该数据随机分配一个标签,并插入到ORAM树中,更新位置图,设置状态为未配对。
在第一阶段结束后,完成了新数据进入ORAM树的标签分配,在不失安全性的前提下为ORAM中的数据分配特定的标签,从而使得在路径访问中包含更多同一内存行的数据,减少时间开销。然后进入阶段B,该阶段的作用是,对访问路径进行部分提前、合并或者不合并的操作,即对访问路径作出优化。
具体操作如下:
B.在访问路径时的部分提前与合并阶段,对读写请求队列中的最前面两个路径请求进行检查,进行可能的提前或合并操作,具体执行如下操作:
B1.检查周期终点标志,若是周期终点,本次路径访问不执行任何提前或合并操作,并重置周期计数器,将周期终点标志置反。若不是周期终点,执行步骤B2。
B2.即队列中最前面的两个路径请求需要访问的路径序号依次为i,j,每条路径请求需要访问的内存单元数量为L,路径中已经配对的数据数量分别为ri,rj,有下列四种情况:
B21)路径i,j中的目标数据都已经配对:用路径j中已配对的数据代替路径i中未配对的数据。若L-ri>rj,将全部rj个数据前移到路径i中,路径i保留rj-(L-ri)个未配对数据,并重置周期计数器;若L-ri<rj,则在rj个数据中随机选择L-ri个代替掉路径i中的未配对部分,周期计数器自增;被替换掉的未配对数据访问请求会被丢弃,即内存控制器会按照调度后的路径依次对其中的地址发送访问请求,被替换的数据不会受到访问请求。
B22)路径i中的目标数据已配对,路径j中的目标数据未配对,且ri+(L-rj)<L:将ri个路径i中的已配对数据,(L-rj)个路径j中的未配对数据,(rj-ri)个路径j中的已配对数据组合成一条新的路径,重置周期计数器,原两条路径中的其他数据的访问请求将会被丢弃。
B23)路径j中的目标数据已配对,路径i中的目标数据未配对,且rj+(L-ri)<L:将rj个路径j中的已配对数据,(L-ri)个路径i中的未配对数据,(ri-rj)个路径i中的已配对数据组合成一条新的路径,重置周期计数器,原两条路径中的其他数据的访问请求将会被丢弃。
B24)不符合上述三种情况中的任一种,不执行任何提前或合并操作,周期计数器自增。
B3.周期计数器到达计数终点时,将周期终点标志置反,下一次路径访问不执行任何提前或合并操作。
然后,进入缓存数据的写回阶段,包括:
C.在缓存数据的写回阶段,ORAM协议每次需要写回一整条路径到内存中,当缓存中有多条路径时,可以选择一条最优的路径进行写回,使得对于下一次随机的路径访问中重叠的数据数量期望值最大,具体执行如下操作:
C1.设可缓存的最大路径数为N,其中有i条路径中的目标数据有依赖关系,这些目标数据还未被使用或可能被修改,不作为写回策略的考虑对象,对剩余的N-i条路径执行步骤C2;特殊地,当i=N时,只能写回特定的路径。
C2.计算N-i条路径两两之间的最小共同祖先(Least Common Ancestor,LCA),具体方法为:将路径所对应的标签两两进行位异或,1出现的最高位数即为这两条路径的LCA所在层数,即这两条路径分叉点的层数。取层数值最大的LCA,随机写回其对应的两条路径中的任意一条。
最后,将数据重新写回ORAM树的标签分配,使得下次访问时能够实现快速的访问,包括:
D.在数据写回ORAM树的标签分配阶段,对于目标数据,ORAM控制器需要为其分配一个新的标签,对于其他的数据,保持原标签不变。具体操作如下:
D1.判断目标数据的成对标识,若上一次目标数据已经配对过,则执行步骤D2,;若上一次未配对,则执行步骤D3;
D2.本次写回不执行标签分配,随机给该数据一个新标签,记录该数据为未配对,更新位置图;
D3.把该写回的目标数据看作是新数据,同步骤A中的操作:查找同内存行的单元,检查是否有空位,是否超过阈值,将符合限制的配对关系记录在位置图中,更新为已配对;若无法配对,则随机分配一个新标签,更新位置图,配对关系;
D4.将目标数据和其他数据在不与自身标签冲突的情况下插入到ORAM树的路径中,并将数据写回内存。
本发明实施例通过隐藏访存模式进行调度优化,在很小的硬件成本下,就能够快速访问Path ORAM,从而大幅降低Path ORAM的访存代价,同时降低系统执行时间,显著提高系统性能。
第二方面:
请参阅图1-3,本发明某一实施例还提供了将新数据代入该方法进行操作,以帮助理解该方法的全部流程,其中,
本发明的工作分为4个阶段,如图1所示,包括新数据进入ORAM树的标签分配阶段,访问路径时的部分提前与合并阶段,缓存中数据的写回阶段,数据写回ORAM树的标签分配阶段。设此时ORAM树有3层8个标签作为例子,此时一条路径有4个节点的数据。实际上ORAM一般有20层以上。假设此时有一新数据进入内存,如程序声明新变量,或数据从外存中读入等;与其在同一内存行中的数据有一个标签为4,处在ORAM树第二层;访问请求等待队列中只有路径4。路径4有3个已配对数据,当次访问的目标数据为未配对,路径5有1个已配对数据。缓存中有路径1和6的数据。
图2是本发明提供方法中标签分配的流程框图。如图2所示,此时新数据进入内存,检查是否有处在同一内存行且在ORAM树中的数据,查询到了上述标签为4,处在ORAM树第二层的数据,4的二进制表示为110,前两位为11,因此该新数据可以分配的标签为11x,即4或5;设随机分配到的标签为5,即可将带有标签5的数据放入到路径4中,并将新数据的地址和标签5的配对关系记录在位置图中,更新该数据的配对状态为已配对。
图3是本发明提供方法中路径提前与合并的流程框图。如图3所示,设此时LLC发出对path 5的访问请求,此时标签5进入访问等待队列。下一次路径请求处理开始,ORAM控制器检查处在访问请求等待队列头部的两个路径,分别是4和5.此时路径5中的目标数据已配对,路径4中的目标数据未配对,且路径5中已配对数据数量+路径4中未配对数据数量<路径数据总数,于是将取出路径5的已配对部分和路径4的未配对部分,剩余数量的数据由路径4中已配对数据随机抽出补齐,组合成一条新的路径,但仍称为路径4.
在新路径4进入缓存并将目标数据取出后,缓存需要选择一条路径写回。此时在缓存中的是路径1,4,6,对其进行两两异或,计算结果最小的是4和6的异或为010.因此在路径4和6中随机选一条写回。不妨设写回路径4,此时的路径4混合了来自原路径4和5的数据,通过查位置图可以得知每个数据所拥有的标签,即可在ORAM树中回到原来的位置。对于两个目标数据,若为本次路径写回可以一并写回,则检查上一次是否有过配对:若是,则本次随机分配;若否,则类似新数据进入内存执行标签分配算法;若目标数据在本次路径写回不能一并写回,则插入先前进入缓存的其他目标数据,或插入空数据。
第三方面:
请参阅图4,本发明某一实施例还提供一种针对Path ORAM的地址标签分配调度与多路径缓存写回装置100,包括:
新数据进入ORAM树的标签分配模块01,用于在A.在新数据进入ORAM树的标签分配阶段,执行如下操作:
A1.将新数据的地址记为addr,若与该新数据于同一内存行的地址中,存在在ORAM树中未成对的内存单元,将该内存单元地址记为addr’,执行步骤A2;
A2.根据位置图,获得addr’地址对应单元的路径标签label’及所在层数l’;为新数据随机分配一个与label’的二进制前l’位相同的新标签label-k;
A3.根据位置图,判断label-k对应的path-k的前l’个节点中是否有空闲位置,若是,则执行步骤A4;若否,则返回执行步骤A2,并将随机分配的新标签记为label-k’;
A4.根据path-k中已配对数据的数量,判断该数量是否达到第一预设阈值k;若否,则执行步骤A5;若是,则返回执行步骤A2,并将随机分配的新标签记为label-k’;
A5.将新数据的地址addr和标签label-k的配对关系标记在位置图中,并将该数据插入到ORAM树中,更新该数据的配对状态为已配对;
访问路径时的部分提前与合并模块02,用于在B.在访问路径时的部分提前与合并阶段,执行如下操作:
B1.根据当前访问路径的周期终点标志判断是否到达周期终点;若是,执行步骤B2;若否,执行步骤B3;
B2.将访问队列中最前面的两个路径请求需要访问的路径序号依次记为i,j,将每条路径请求需要访问的内存单元数量记为L,将路径中已经配对的数据数量分别记为ri、rj,根据具体设定情况判断是否进行访问路径时的部分提前与合并操作;
B3.重置周期计数器,将周期终点标志置反,且下一次路径访问不执行提前或合并操作;
缓存中数据的写回模块03,用于在C.在缓存数据的写回阶段,当缓存中有多条路径时,将使得下一次随机的路径访问中重叠的数据数量期望值最大的路径作为最优路径进行写回;
数据写回ORAM树的标签分配模块04,用于在D.在数据写回ORAM树的标签分配阶段,当所述数据为目标数据时,由ORAM控制器为之分配一个新的标签,当所述数据为其他数据时,保持原标签不变。
进一步地,本实施例中,所述新数据进入ORAM树的标签分配模块01,还用于,
在所述A.在新数据进入ORAM树的标签分配阶段,还执行步骤A6;其中,在所述步骤A1中,若与该新数据于同一内存行的地址中,不存在在ORAM树中未成对的内存单元,则执行步骤A6.为该新数据随机分配一个标签后插入到ORAM树中,更新位置图,并将该新数据的状态设置为未配对。
进一步地,本实施例中,所述数据写回ORAM树的标签分配模,04,还用于,
在所述D.在数据写回ORAM树的标签分配阶段,具体执行以下操作:
D1.根据当前目标数据的成对标识,判断上一次目标数据是否已配对;若是,则执行步骤D2;若否,则执行步骤D3;
D2.随机给当前目标数据一个新标签,记录当前状态为未配对,并更新位置图;
D3.将待写回的目标数据作为新数据,返回执行A1-A6操作;
D4.当目标数据和其他数据在不与自身标签冲突时,将其插入到ORAM树的路径中,并将所有数据写回内存。
进一步地,本实施例中,所述缓存数据的写回模块03,还用于,
在所述C.在缓存数据的写回阶段,具体执行以下操作:
C1.设可缓存的最大路径数为N,i为目标数据有依赖关系的路径;当i=N时,写回特定的路径;当i<N时,对N-i条路径执行步骤C2;
C2.计算N-i条路径两两之间的最小共同祖先,具体为:将N-i条路径所对应的标签两两进行位异,或根据两条路径的LCA所在层数中的层数值最大的LCA,随机写回其对应的两条路径中的任意一条。
第四方面:
本发明某一实施例还提供了一种计算机终端设备,包括:一个或多个处理器;存储器,与所述处理器耦接,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法。
处理器用于控制该计算机终端设备的整体操作,以完成上述的全自动用电量预测方法的全部或部分步骤。存储器用于存储各种类型的数据以支持在该计算机终端设备的操作,这些数据例如可以包括用于在该计算机终端设备上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-OnlyMemory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
计算机终端设备可以被一个或多个应用专用集成电路(ApplicationSpecific1ntegrated Circuit,简称AS1C)、数字信号处理器(Digital SignalProcessor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable GateArray,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行如上述任一项实施例所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法,并达到如上述方法一致的技术效果。
本发明某一实施例还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现如上述任一项实施例所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器,上述程序指令可由计算机终端设备的处理器执行以完成如上述任一项实施例所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法,并达到如上述方法一致的技术效果。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.一种针对Path ORAM的地址标签分配调度与多路径缓存写回方法,其特征在于,包括:
新数据进入ORAM树的标签分配阶段、访问路径时的部分提前与合并阶段、缓存中数据的写回阶段及数据写回ORAM树的标签分配阶段;
A.在新数据进入ORAM树的标签分配阶段,执行如下操作:
A1.将新数据的地址记为addr,若与该新数据于同一内存行的地址中,存在在ORAM树中未成对的内存单元,将该内存单元地址记为addr’,执行步骤A2;
A2.根据位置图,获得addr’地址对应单元的路径标签label’及所在层数l’;为新数据随机分配一个与label’的二进制前l’位相同的新标签label-k;
A3.根据位置图,判断label-k对应的path-k的前l’个节点中是否有空闲位置,若是,则执行步骤A4;若否,则返回执行步骤A2,并将随机分配的新标签记为label-k’;
A4.根据path-k中已配对数据的数量,判断该数量是否达到第一预设阈值k;若否,则执行步骤A5;若是,则返回执行步骤A2,并将随机分配的新标签记为label-k’;
A5.将新数据的地址addr和标签label-k的配对关系标记在位置图中,并将该数据插入到ORAM树中,更新该数据的配对状态为已配对;
B.在访问路径时的部分提前与合并阶段,执行如下操作:
B1.根据当前访问路径的周期终点标志判断是否到达周期终点;若是,执行步骤B2;若否,执行步骤B3;
B2.将访问队列中最前面的两个路径请求需要访问的路径序号依次记为i,j,将每条路径请求需要访问的内存单元数量记为L,将路径中已经配对的数据数量分别记为ri、rj,根据具体设定情况判断是否进行访问路径时的部分提前与合并操作;
B3.重置周期计数器,将周期终点标志置反,且下一次路径访问不执行提前或合并操作;
C.在缓存数据的写回阶段,当缓存中有多条路径时,将使得下一次随机的路径访问中重叠的数据数量期望值最大的路径作为最优路径进行写回;
D.在数据写回ORAM树的标签分配阶段,当所述数据为目标数据时,由ORAM控制器为之分配一个新的标签,当所述数据为其他数据时,保持原标签不变。
2.根据权利要求1所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法,其特征在于,在所述A.在新数据进入ORAM树的标签分配阶段,还包括执行步骤A6;
其中,在所述步骤A1中,若与该新数据于同一内存行的地址中,不存在在ORAM树中未成对的内存单元,则执行步骤A6.为该新数据随机分配一个标签后插入到ORAM树中,更新位置图,并将该新数据的状态设置为未配对。
3.根据权利要求1或2所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法,其特征在于,所述D.在数据写回ORAM树的标签分配阶段,具体执行以下操作:
D1.根据当前目标数据的成对标识,判断上一次目标数据是否已配对;若是,则执行步骤D2;若否,则执行步骤D3;
D2.随机给当前目标数据一个新标签,记录当前状态为未配对,并更新位置图;
D3.将待写回的目标数据作为新数据,返回执行A1-A6操作;
D4.当目标数据和其他数据在不与自身标签冲突时,将其插入到ORAM树的路径中,并将所有数据写回内存。
4.根据权利要求1所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法,其特征在于,在所述B.在访问路径时的部分提前与合并阶段中,所述根据具体设定情况进行访问路径时的部分提前与合并阶段,包括:
B21.路径i,j中的目标数据都已经配对:用路径j中已配对的数据代替路径i中未配对的数据;若L-ri>rj,将全部rj个数据前移到路径i中,路径i保留rj-(L-ri)个未配对数据,并重置周期计数器;若L-ri<rj,则在rj个数据中随机选择L-ri个代替掉路径i中的未配对部分,周期计数器自增;
B22.路径i中的目标数据已配对,路径j中的目标数据未配对,且ri+(L-rj)<L,将ri个路径i中的已配对数据、(L-rj)个路径j中的未配对数据、(rj-ri)个路径j中的已配对数据组合成一条新的路径,重置周期计数器;
B23.路径j中的目标数据已配对,路径i中的目标数据未配对,且rj+(L-ri)<L,将rj个路径j中的已配对数据、(L-ri)个路径i中的未配对数据、(ri-rj)个路径i中的已配对数据组合成一条新的路径,重置周期计数器;
B24)不符合上述三种情况中的任一种,不执行任何提前或合并操作,周期计数器自增。
5.根据权利要求1所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法,其特征在于,所述C.在缓存数据的写回阶段,具体执行以下操作:
C1.设可缓存的最大路径数为N,i为目标数据有依赖关系的路径;当i=N时,写回特定的路径;当i<N时,对N-i条路径执行步骤C2;
C2.计算N-i条路径两两之间的最小共同祖先,具体为:将N-i条路径所对应的标签两两进行位异,或根据两条路径的LCA所在层数中的层数值最大的LCA,随机写回其对应的两条路径中的任意一条。
6.根据权利要求5所述的针对Path ORAM的地址标签分配调度与多路径缓存写回方法,其特征在于,所述两条路径的LCA所在层数为为路径出现最高位数所在的层。
7.一种针对Path ORAM的地址标签分配调度与多路径缓存写回装置,其特征在于,包括:
新数据进入ORAM树的标签分配模块,用于在A.在新数据进入ORAM树的标签分配阶段,执行如下操作:
A1.将新数据的地址记为addr,若与该新数据于同一内存行的地址中,存在在ORAM树中未成对的内存单元,将该内存单元地址记为addr’,执行步骤A2;
A2.根据位置图,获得addr’地址对应单元的路径标签label’及所在层数l’;为新数据随机分配一个与label’的二进制前l’位相同的新标签label-k;
A3.根据位置图,判断label-k对应的path-k的前l’个节点中是否有空闲位置,若是,则执行步骤A4;若否,则返回执行步骤A2,并将随机分配的新标签记为label-k’;
A4.根据path-k中已配对数据的数量,判断该数量是否达到第一预设阈值k;若否,则执行步骤A5;若是,则返回执行步骤A2,并将随机分配的新标签记为label-k’;
A5.将新数据的地址addr和标签label-k的配对关系标记在位置图中,并将该数据插入到ORAM树中,更新该数据的配对状态为已配对;
访问路径时的部分提前与合并模块,用于在B.在访问路径时的部分提前与合并阶段,执行如下操作:
B1.根据当前访问路径的周期终点标志判断是否到达周期终点;若是,执行步骤B2;若否,执行步骤B3;
B2.将访问队列中最前面的两个路径请求需要访问的路径序号依次记为i,j,将每条路径请求需要访问的内存单元数量记为L,将路径中已经配对的数据数量分别记为ri、rj,根据具体设定情况判断是否进行访问路径时的部分提前与合并操作;
B3.重置周期计数器,将周期终点标志置反,且下一次路径访问不执行提前或合并操作;
缓存中数据的写回模块,用于在C.在缓存数据的写回阶段,当缓存中有多条路径时,将使得下一次随机的路径访问中重叠的数据数量期望值最大的路径作为最优路径进行写回;
数据写回ORAM树的标签分配模块,用于在D.在数据写回ORAM树的标签分配阶段,当所述数据为目标数据时,由ORAM控制器为之分配一个新的标签,当所述数据为其他数据时,保持原标签不变。
8.根据权利要求7所述的针对Path ORAM的地址标签分配调度与多路径缓存写回装置,其特征在于,所述新数据进入ORAM树的标签分配模块,还用于
在所述A.在新数据进入ORAM树的标签分配阶段,还执行步骤A6;其中,在所述步骤A1中,若与该新数据于同一内存行的地址中,不存在在ORAM树中未成对的内存单元,则执行步骤A6.为该新数据随机分配一个标签后插入到ORAM树中,更新位置图,并将该新数据的状态设置为未配对。
9.根据权利要求7或8所述的针对Path ORAM的地址标签分配调度与多路径缓存写回装置,其特征在于,所述数据写回ORAM树的标签分配模块,还用于,
在所述D.在数据写回ORAM树的标签分配阶段,具体执行以下操作:
D1.根据当前目标数据的成对标识,判断上一次目标数据是否已配对;若是,则执行步骤D2;若否,则执行步骤D3;
D2.随机给当前目标数据一个新标签,记录当前状态为未配对,并更新位置图;
D3.将待写回的目标数据作为新数据,返回执行A1-A6操作;
D4.当目标数据和其他数据在不与自身标签冲突时,将其插入到ORAM树的路径中,并将所有数据写回内存。
10.根据权利要求7所述的针对Path ORAM的地址标签分配调度与多路径缓存写回装置,其特征在于,所述缓存数据的写回模块,还用于,
在所述C.在缓存数据的写回阶段,具体执行以下操作:
C1.设可缓存的最大路径数为N,i为目标数据有依赖关系的路径;当i=N时,写回特定的路径;当i<N时,对N-i条路径执行步骤C2;
C2.计算N-i条路径两两之间的最小共同祖先,具体为:将N-i条路径所对应的标签两两进行位异,或根据两条路径的LCA所在层数中的层数值最大的LCA,随机写回其对应的两条路径中的任意一条。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011152061.1A CN112181864B (zh) | 2020-10-23 | 2020-10-23 | 针对Path ORAM的地址标签分配调度与多路径缓存写回方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011152061.1A CN112181864B (zh) | 2020-10-23 | 2020-10-23 | 针对Path ORAM的地址标签分配调度与多路径缓存写回方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112181864A CN112181864A (zh) | 2021-01-05 |
CN112181864B true CN112181864B (zh) | 2023-07-25 |
Family
ID=73922710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011152061.1A Active CN112181864B (zh) | 2020-10-23 | 2020-10-23 | 针对Path ORAM的地址标签分配调度与多路径缓存写回方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181864B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105589814A (zh) * | 2015-12-17 | 2016-05-18 | 北京大学 | 针对Path ORAM的叉型访问方法 |
CN109144894A (zh) * | 2018-08-01 | 2019-01-04 | 浙江大学 | 基于数据冗余的内存访问模式保护方法 |
CN110297787A (zh) * | 2018-03-22 | 2019-10-01 | 龙芯中科技术有限公司 | I/o设备访问内存的方法、装置及设备 |
-
2020
- 2020-10-23 CN CN202011152061.1A patent/CN112181864B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105589814A (zh) * | 2015-12-17 | 2016-05-18 | 北京大学 | 针对Path ORAM的叉型访问方法 |
CN110297787A (zh) * | 2018-03-22 | 2019-10-01 | 龙芯中科技术有限公司 | I/o设备访问内存的方法、装置及设备 |
CN109144894A (zh) * | 2018-08-01 | 2019-01-04 | 浙江大学 | 基于数据冗余的内存访问模式保护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112181864A (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
TW457427B (en) | Method and system for dynamically partitioning a shared cache | |
US7844802B2 (en) | Instructions for ordering execution in pipelined processes | |
TWI533201B (zh) | 縮減交易回復的快取控制 | |
US7873763B2 (en) | Multi-reader multi-writer circular buffer memory | |
GB2292822A (en) | Partitioned cache memory | |
CN107122130B (zh) | 一种数据重删方法及装置 | |
KR20160079007A (ko) | 복수의 스레드를 처리하는 데이터 처리 장치 및 방법 | |
US11494308B2 (en) | Methods and devices for bypassing the internal cache of an advanced DRAM memory controller | |
CN102063384A (zh) | 一种java卡利用缓存对编程只读存储器进行读写操作的方法 | |
CN106569960A (zh) | 一种混合主存的末级缓存管理方法 | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
US6493797B1 (en) | Multi-tag system and method for cache read/write | |
US7069390B2 (en) | Implementation of a pseudo-LRU algorithm in a partitioned cache | |
CN112181864B (zh) | 针对Path ORAM的地址标签分配调度与多路径缓存写回方法 | |
CN104346295A (zh) | 一种缓存刷新方法和装置 | |
US8452920B1 (en) | System and method for controlling a dynamic random access memory | |
US6643718B1 (en) | Method and apparatus for controlling order dependency of items in a multiple FIFO queue structure | |
US9620237B2 (en) | Semiconductor device and search circuit for and method of searching for erasure count in semiconductor memory | |
CN112988037A (zh) | 静态磨损均衡方法、终端和计算机可读存储介质 | |
US10783083B2 (en) | Cache management device, system and method | |
CN112579481B (zh) | 数据处理方法、数据处理装置和计算装置 | |
CN110334251B (zh) | 一种有效解决rehash冲突的元素序列生成方法 | |
CN111506521B (zh) | 一种存储器、数据请求写入方法及控制器 | |
CN117971899A (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 |