CN105159654B - 基于多线程并行的完整性度量散列算法优化方法 - Google Patents

基于多线程并行的完整性度量散列算法优化方法 Download PDF

Info

Publication number
CN105159654B
CN105159654B CN201510518223.1A CN201510518223A CN105159654B CN 105159654 B CN105159654 B CN 105159654B CN 201510518223 A CN201510518223 A CN 201510518223A CN 105159654 B CN105159654 B CN 105159654B
Authority
CN
China
Prior art keywords
threads
data
read
buffering area
update
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
Application number
CN201510518223.1A
Other languages
English (en)
Other versions
CN105159654A (zh
Inventor
单征
赵荣彩
庞建明
李男
范超
蔡洪波
赵炳麟
王银浩
龚雪容
蔡国明
薛飞
闫丽景
贾珣
徐晓燕
王洋
陈鹏
魏亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PLA Information Engineering University
Original Assignee
PLA Information Engineering University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by PLA Information Engineering University filed Critical PLA Information Engineering University
Priority to CN201510518223.1A priority Critical patent/CN105159654B/zh
Publication of CN105159654A publication Critical patent/CN105159654A/zh
Application granted granted Critical
Publication of CN105159654B publication Critical patent/CN105159654B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及一种基于多线程并行的完整性度量散列算法优化方法,具体为:1:将完整性度量散列算法划分为Read线程和Update线程;初始化计数信号用于线程间的同步;2:Read线程以数据预取的方式将均匀分块的待度量数据存入缓冲区数组,Update线程则是对写入缓冲区数组的数据进行顺序运算处理;3:在Read线程向缓冲区写入数据时,之前设置的计数信号不断累加,当缓冲区满时停止写入并等待Read线程操作;同时,Update线程对写入缓冲区的数据顺序处理,当缓冲区空时停止,等待Read线程,Read线程和Update线程根据计数信号之间的关系实现同步;本发明降低了度量时间,提高了度量效率。

Description

基于多线程并行的完整性度量散列算法优化方法
(一)、技术领域:
本发明涉及一种完整性度量散列算法优化方法,特别是涉及一种基于多线程并行的完整性度量散列算法优化方法。
(二)、背景技术:
目前,可信计算技术不断发展,完整性度量技术逐渐走向实用,但现有软件可信度量在效率、开销上还存在问题,度量工具的推广与应用仍受到其自身性能瓶颈的制约。对现有度量方法分析可知,影响度量性能的关键是度量算法的实现,在度量过程中多采用散列算法作为度量算法。
并行计算(Parallel Computting)是计算机科学中的重要研究内容,它是在串行计算(Sequential Computing)的基础上演变而来的。并行计算为解决单处理机性能瓶颈提供了一种较好的方法。
利用并行计算求解计算问题,通常基于以下考虑:将计算任务分解成多个子任务,有助于同时解决;在同一时间,由不同的执行部件同时执行多个子任务;多计算资源下解决问题的耗时要少于单个计算资源下的耗时。随着多核技术的发展,多核结构产品逐渐成为市场主流,在同一处理器中集成两个或多个完整的计算内核称为多核处理器,多核处理器的多个计算内核可以并行的执行指令,提高了并行计算的能力。利用多核技术,实现了线程级并行(thread level parallelism,TLP)、存储级并行(memory level parallelism,MLP)及数据级并行(data level parallelism,DLP)。
1)线程级并行
线程(thread)是在操作系统调度过程中比进程(process)更小的可调度执行单元。传统的进程只包含一个执行序列,从头到尾都是一个顺序执行的逻辑路径,所以,也可以称为是单线程的。线程可以理解为一种轻量级进程,是程序执行流的最小单元。在应用程序中使用多线程技术,每个线程都执行一个独立的逻辑路径,可以将冗长的或非常耗时的任务分解开来。
线程间是相互独立又相互依赖的。使用多线程编程模型编程就是把进程的任务划分为执行的线程,每个线程为一个顺序执行的单控制流,而所有线程都是并发、并行且是异步执行的。
多线程具有以下优点:
(1)线程创建代价小;
(2)同一进程的不同线程共享同一地址空间;
(3)多线程可以充分利用多核处理器;
(4)线程之间的切换比进程之间的切换代价小;
(5)响应速度快。
但是多线程在带来方便的同时也存在一定的弊端:
(1)线程间的同步所导致的计算负荷以及调度开销;
(2)多线程编程规则复杂,需避免死锁、竞争和优先级倒置;
(3)多线程程序难于调试。
在单处理器系统上,在一个时间段内多线程都处于启动运行到运行完毕之间的状态,且各线程都在同一个处理机上运行,但在任一时间点只有一条线程在处理机上运行即并发。
在多核处理器系统上,在同一时间点多线程分别在不同处理核心上执行,真正意义上实现了并行即线程级并行。
线程级并行是多核处理器上最重要的并行方式,是提升并行算法性能的关键。线程级并行可以分为任务划分和数据划分两种方式。其中,任务划分指的是每个核心处理一个子任务;数据划分指的是每个线程负责处理一个分块数据。
2)存储级并行
存储器访问能力与处理部件计算能力不平衡,造成处理器处于“饥饿”状态。如图1所示,处理器速度每年提高近60%,而存储器访问速度每年仅提高9%,两者的性能差距每年增长50%,致使处理器性能和数据访问带宽及延迟之间的差距越来越大,这就是存储墙(Memory Wall)问题。
针对存储墙问题,应采取合适的手段提高系统存储的效率。对于程序执行而言可将其分为两个阶段,即计算阶段和访存阶段,使计算和访存可以在一个CPU周期内同时执行而不必互相等待。数据预取(data pre-fetching)利用计算阶段的时钟周期,在真正的内存访问之前,把数据从内存加载到cache中,使访存阶段和之后的计算阶段同时执行。数据预取的优化方法又称为存储级并行,利用这种方法有效的降低了内存访问延迟,间接提高系统存储的效率,为解决存储墙问题提供了一种重要的手段。
(三)、发明内容:
本发明要解决的技术问题是:提供一种基于多线程并行的完整性度量散列算法优化方法,该方法降低了度量时间,提高了度量效率。
本发明的技术方案:一种基于多线程并行的完整性度量散列算法优化方法,含有如下步骤:
步骤1:将完整性度量散列算法划分为两个线程并行执行,分别为Read线程和Update线程,Read线程执行算法访存阶段,Update线程执行算法计算阶段;根据同一进程多线程共享同一地址空间的特点设置固定大小的缓冲区数组作为两线程的共享空间,同时初始化计数信号用于线程间的同步;
步骤2:创建Read线程和Update线程,Read线程以数据预取(data pre-fetching)的方式将均匀分块的待度量数据存入缓冲区数组,Update线程则是对写入缓冲区数组的数据进行顺序运算处理;
步骤3:在Read线程向缓冲区写入数据时,之前设置的计数信号不断累加,当缓冲区满时停止写入并等待Read线程操作;同时,Update线程对写入缓冲区的数据顺序处理,当缓冲区空时停止,等待Read线程,Read线程和Update线程根据计数信号之间的关系实现同步。
完整性度量散列算法分为两个过程:预处理过程和散列值计算过程;预处理过程又由三部分组成:消息填充、分割已填充消息(将填充后的消息等分为512位处理块)、为散列值计算设置初始值;
消息填充具体为:假设原始消息长度为L位,首先在消息最后加一位“1”,接着在这位“1”后面补k个“0”,使得L+1+k(即补位后的消息长度)满足对512取模余数为448之后将原始的L位消息长度以二进制数据的方式写入最后的64位;经消息填充后,再将数据均匀分块;然后设置正确的初始化散列值,该初始化散列值因算法不同而存在一定差异;
散列值计算过程是完整性度量散列算法的核心,散列值计算过程生成目标消息的散列值;
完整性度量散列算法简化如下:
假设输入的待度量数据为Archive,算法输出为度量数据散列值Hash;算法首先通过数据分块将经过消息填充后的待度量数据Archive均匀切块,每块大小为m字节;然后算法将等分块的数据依次读入大小为m字节的缓冲区byte[m],以初始化散列值Init_hash为计算基对缓冲区中的数据运算处理生成该数据块的散列值;之后,该数据块的散列值作为下次循环运算的初始化散列值,直到对整个填充后的待度量数据处理完毕,最后一次循环得到的Init_hash即是待度量数据的散列值Hash。
流水并行是指将不同的任务分配给不同的线程,线程间流水执行来获得并行性,任务间的依赖通过某种方式的同步得到维持。同一线程两次同步间的计算工作量大小称为流水计算粒度,即流水粒度;流水粒度的大小与同步开销在执行总开销中所占的比例有直接关系,影响着流水并行的性能。根据流水粒度的大小,流水并行可分为细粒度流水和粗粒度流水。细粒度流水时,线程两次同步之间的计算量较小,下一线程能够较快获得所需数据进行计算,能有效减少线程的空闲等待时间。但因为粒度较小,会引起较多次同步,导致较高的同步开销和较低的流水并行性能。粗粒度流水增大了同步之间的计算量和同步数据量,因此减少了同步次数,同步代价相对较小,但后续的计算结点在开始计算之前需要等待更长的时间,降低了并行性。
流水并行要获得良好的性能,既需要保持并行线程之间的负载平衡,又需要控制同步开销在执行总开销中所占的比例,这要求其在流水并行时选择恰当的计算划分方式和线程同步方式,以及合适的分块大小。
为平衡并行性和同步开销两者之间的关系,使得流水并行获得趋近于最优的并行性能,选择合适的流水粒度及合理的同步方式。
通过引入线程级并行及存储级并行技术对完整性度量散列算法进行并行处理。首先根据算法的特点可以使用线程级并行对完整性度量散列算法进行任务划分,再针对度量数据均匀分块实现流水执行,并通过存储级并行实现访存隐藏。
本发明的有益效果:
本发明通过对现有度量散列算法的实现过程进行分析,引入线程级并行技术及存储级并行技术来实现度量散列算法的并行优化,降低了度量时间,提高了度量效率。
(四)、附图说明:
图1为处理器与存储器之间的性能差示意图;
图2为完整性度量散列算法描述图;
图3为基于多线程并行的完整性度量散列算法优化方法流程图;
图4为并行算法描述图;
图5为算法串行比较图。
(五)、具体实施方式:
基于多线程并行的完整性度量散列算法优化方法含有如下步骤(见图3):
步骤1:将完整性度量散列算法划分为两个线程并行执行,分别为Read线程和Update线程,Read线程执行算法访存阶段,Update线程执行算法计算阶段;根据同一进程多线程共享同一地址空间的特点设置固定大小的缓冲区数组作为两线程的共享空间,同时初始化计数信号用于线程间的同步;
步骤2:创建Read线程和Update线程,Read线程以数据预取(data pre-fetching)的方式将均匀分块的待度量数据存入缓冲区数组,Update线程则是对写入缓冲区数组的数据进行顺序运算处理;
步骤3:在Read线程向缓冲区写入数据时,之前设置的计数信号不断累加,当缓冲区满时停止写入并等待Read线程操作;同时,Update线程对写入缓冲区的数据顺序处理,当缓冲区空时停止,等待Read线程,Read线程和Update线程根据计数信号之间的关系实现同步。
完整性度量散列算法分为两个过程:预处理过程和散列值计算过程;预处理过程又由三部分组成:消息填充、分割已填充消息(将填充后的消息等分为512位处理块)、为散列值计算设置初始值;
消息填充具体为:假设原始消息长度为L位,首先在消息最后加一位“1”,接着在这位“1”后面补k个“0”,使得L+1+k(即补位后的消息长度)满足对512取模余数为448之后将原始的L位消息长度以二进制数据的方式写入最后的64位;经消息填充后,再将数据均匀分块;然后设置正确的初始化散列值,该初始化散列值因算法不同而存在一定差异;
散列值计算过程是完整性度量散列算法的核心,散列值计算过程生成目标消息的散列值;
完整性度量散列算法简化如下(如图2所示):
假设输入的待度量数据为Archive,算法输出为度量数据散列值Hash;算法首先通过数据分块将经过消息填充后的待度量数据Archive均匀切块,每块大小为m字节;然后算法将等分块的数据依次读入大小为m字节的缓冲区byte[m],以初始化散列值Init_hash为计算基对缓冲区中的数据运算处理生成该数据块的散列值;之后,该数据块的散列值作为下次循环运算的初始化散列值,直到对整个填充后的待度量数据处理完毕,最后一次循环得到的Init_hash即是待度量数据的散列值Hash。
流水并行是指将不同的任务分配给不同的线程,线程间流水执行来获得并行性,任务间的依赖通过某种方式的同步得到维持。同一线程两次同步间的计算工作量大小称为流水计算粒度,即流水粒度;流水粒度的大小与同步开销在执行总开销中所占的比例有直接关系,影响着流水并行的性能。根据流水粒度的大小,流水并行可分为细粒度流水和粗粒度流水。细粒度流水时,线程两次同步之间的计算量较小,下一线程能够较快获得所需数据进行计算,能有效减少线程的空闲等待时间。但因为粒度较小,会引起较多次同步,导致较高的同步开销和较低的流水并行性能。粗粒度流水增大了同步之间的计算量和同步数据量,因此减少了同步次数,同步代价相对较小,但后续的计算结点在开始计算之前需要等待更长的时间,降低了并行性。
流水并行要获得良好的性能,既需要保持并行线程之间的负载平衡,又需要控制同步开销在执行总开销中所占的比例,这要求其在流水并行时选择恰当的计算划分方式和线程同步方式,以及合适的分块大小。
为平衡并行性和同步开销两者之间的关系,使得流水并行获得趋近于最优的并行性能,选择合适的流水粒度及合理的同步方式。
通过引入线程级并行及存储级并行技术对完整性度量散列算法进行并行处理。首先根据算法的特点可以使用线程级并行对完整性度量散列算法进行任务划分,再针对度量数据均匀分块实现流水执行,并通过存储级并行实现访存隐藏。
如图4所示,设置一个长度为n、大小为n×m字节的共享缓冲区,其中,n和m均可自由配置,通过调整m来调整流水粒度的大小;Read线程中通过判断Read的计数信号nread是否比Update线程计数信号nupdate大1决定是否继续执行Read线程,通过设置计数信号防止缓冲区中数据还未被update函数处理就有新的数据由Read线程读入,之后,Read线程将待度量数据均匀分块由read函数写入共享缓冲区,计数信号nread加1。Update线程通过判断计数信号nupdate是否等于Read线程计数信号nread决定是否继续执行Update线程,防止Update线程执行时缓冲区没有数据,之后Update线程读取共享缓冲区中存储的待度量数据并对数据执行函数update处理,计数信号nupdate加1;Read线程和Update线程通过判断计数信号的关系实现同步,在每个线程使用私有计数器可有效地减少线程访问临界区的次数;同时避免使用锁机制可能引起的死锁的发生,而利用usleep(1)函数也有效减少了同步开销。通过这种同步方式实现两线程的并行执行,隐藏了访存操作并最终得到度量结果。
下面证明基于多线程并行的完整性度量散列算法优化方法的正确性,即并行变换后的算法与原串行算法等价:
定义1流依赖已知语句S和T:若存在变量x同时使得x∈OUT(S),x∈IN(T),且T使用由S计算出的x的值,则称T流依赖于S,记为SδfT。
定义2重排序变换:重排序变换是一种只改变了代码的执行顺序,不增加或者取消任何语句的执行的程序变换方式。
定义3维持依赖的重排序变换:维持程序中某一依赖的源点和汇点相对执行顺序的重排序变换成为维持依赖的重排序变换。
定理1依赖的基本定理:维持程序中每个依赖的任何重排序变换,将维持该程序的含义,即变换后的程序与变换前的程序等价。
证明要证明并行算法与原算法等价,即证明并行处理后,算法中对每个依赖的重排序变换都是维持依赖的重排序变换,并行处理的变换必须满足一下两个条件:
1)变换均为重排序变换;
2)变换后程序的每个依赖都得到维持。
由图5可知,算法并行后,只改变了算法执行顺序,没有增加或取消任何执行,即变换均为重排序变换,满足条件1)。
由原串行算法分析可知,ri与ri+1之间存在数据依赖的流依赖记为riδfri+1,ri与ui之间也存在流依赖记为riδfui
由图5观察分析,并行算法没有改变ri与ri+1之间的流依赖,ri与ui之间的数据流依赖通过同步方式也得到了保证,因此算法的每个依赖都得到了维持,满足条件2)。
综上所述,并行算法与原串行算法等价,即算法正确性得证。

Claims (3)

1.一种基于多线程并行的完整性度量散列算法优化方法,其特征是:含有如下步骤:
步骤1:将完整性度量散列算法划分为两个线程并行执行,分别为Read线程和Update线程,Read线程执行算法访存阶段,Update线程执行算法计算阶段;根据同一进程多线程共享同一地址空间的特点设置固定大小的缓冲区数组作为两线程的共享空间,同时初始化计数信号用于线程间的同步;
步骤2:创建Read线程和Update线程,Read线程以数据预取的方式将均匀分块的待度量数据存入缓冲区数组,Update线程则是对写入缓冲区数组的数据进行顺序运算处理;
步骤3:在Read线程向缓冲区写入数据时,之前设置的计数信号不断累加,当缓冲区满时停止写入并等待Read线程操作;同时,Update线程对写入缓冲区的数据顺序处理,当缓冲区空时停止,等待Read线程,Read线程和Update线程根据计数信号之间的关系实现同步。
2.根据权利要求1所述的基于多线程并行的完整性度量散列算法优化方法,其特征是:所述完整性度量散列算法分为两个过程:预处理过程和散列值计算过程;预处理过程又由三部分组成:消息填充、分割已填充消息、为散列值计算设置初始值;散列值计算过程生成目标消息的散列值。
3.根据权利要求1所述的基于多线程并行的完整性度量散列算法优化方法,其特征是:为平衡并行性和同步开销两者之间的关系,首先使用线程级并行对完整性度量散列算法进行任务划分,再针对度量数据均匀分块实现流水执行,并通过存储级并行实现访存隐藏。
CN201510518223.1A 2015-08-21 2015-08-21 基于多线程并行的完整性度量散列算法优化方法 Active CN105159654B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510518223.1A CN105159654B (zh) 2015-08-21 2015-08-21 基于多线程并行的完整性度量散列算法优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510518223.1A CN105159654B (zh) 2015-08-21 2015-08-21 基于多线程并行的完整性度量散列算法优化方法

Publications (2)

Publication Number Publication Date
CN105159654A CN105159654A (zh) 2015-12-16
CN105159654B true CN105159654B (zh) 2018-06-12

Family

ID=54800522

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510518223.1A Active CN105159654B (zh) 2015-08-21 2015-08-21 基于多线程并行的完整性度量散列算法优化方法

Country Status (1)

Country Link
CN (1) CN105159654B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107666387A (zh) * 2016-07-27 2018-02-06 北京计算机技术及应用研究所 低功耗并行哈希计算电路
CN108599922B (zh) * 2018-04-26 2021-03-30 成都盛拓源科技有限公司 新型含密钥消息完整性认证码的生成方法
CN108959128B (zh) * 2018-06-04 2023-03-31 浙江大学 Crypt-SHA512加密算法的加速装置与方法
CN109669724B (zh) * 2018-11-26 2021-04-06 许昌许继软件技术有限公司 一种基于Linux系统的多命令并发式代理服务方法及系统
JP2021039658A (ja) * 2019-09-05 2021-03-11 富士通株式会社 Ac並列化回路、ac並列化方法及び並列情報処理装置
CN111176797B (zh) * 2019-12-18 2023-10-27 北京百度网讯科技有限公司 数据并发的处理方法、装置、电子设备及可读存储介质
CN113282802B (zh) * 2021-06-17 2022-06-24 浙江毫微米科技有限公司 工作量证明算法优化方法、装置、计算机设备和存储介质
CN114125299B (zh) * 2021-11-26 2023-10-10 凌云光技术股份有限公司 一种工业相机及其控制方法
CN114710421B (zh) * 2022-04-14 2022-10-25 合肥卓讯云网科技有限公司 一种基于数据预取的网络连接状态维护装置和方法
CN114721727B (zh) * 2022-06-10 2022-09-13 成都登临科技有限公司 一种处理器、电子设备及多线程共享的指令预取方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104536724A (zh) * 2014-12-25 2015-04-22 华中科技大学 一种多核环境下哈希表并发访问性能优化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7137120B2 (en) * 2001-12-17 2006-11-14 International Business Machines Corporation Dynamic diagnostic program for determining thread wait time

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104536724A (zh) * 2014-12-25 2015-04-22 华中科技大学 一种多核环境下哈希表并发访问性能优化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于共享Cache多核处理器的Hash连接优化;邓亚丹等;《软件学报》;20100630;第21卷(第6期);第1220-1232页 *
多核架构下的数据处理算法优化策略综述;陈伟等;《计算机科学与探索》;20111231(第12期);第1057-1071页 *

Also Published As

Publication number Publication date
CN105159654A (zh) 2015-12-16

Similar Documents

Publication Publication Date Title
CN105159654B (zh) 基于多线程并行的完整性度量散列算法优化方法
Nugteren et al. A detailed GPU cache model based on reuse distance theory
TWI628594B (zh) 用戶等級分叉及會合處理器、方法、系統及指令
Tang et al. Controlled kernel launch for dynamic parallelism in GPUs
Zhong et al. Data partitioning on heterogeneous multicore and multi-GPU systems using functional performance models of data-parallel applications
US9953003B2 (en) Systems and methods for in-line stream processing of distributed dataflow based computations
US9927859B2 (en) Internal communication interconnect scalability
Koch et al. Could we use a million cores to solve an integer program?
CN106055311A (zh) 基于流水线多线程的MapReduce任务并行化方法
Gedik et al. CellJoin: a parallel stream join operator for the cell processor
TW201435734A (zh) 條件阻擋以及急性阻擋的硬體排程之系統及方法
Khairy et al. A survey of architectural approaches for improving GPGPU performance, programmability and heterogeneity
US20240086359A1 (en) Dynamic allocation of arithmetic logic units for vectorized operations
Xie et al. Elan: Towards generic and efficient elastic training for deep learning
Helal et al. Adaptive task aggregation for high-performance sparse solvers on GPUs
Aldinucci et al. On designing multicore-aware simulators for biological systems
Berezovskyi et al. Faster makespan estimation for GPU threads on a single streaming multiprocessor
Cieslewicz et al. Parallel buffers for chip multiprocessors
Belviranli et al. A paradigm shift in GP-GPU computing: task based execution of applications with dynamic data dependencies
Carle et al. Reconciling performance and predictability on a many-core through off-line mapping
US20140223419A1 (en) Compiler, object code generation method, information processing apparatus, and information processing method
Liu et al. Ad-heap: An efficient heap data structure for asymmetric multicore processors
Kreiliger et al. Experiments for predictable execution of GPU kernels
Das Algorithmic Foundation of Parallel Paging and Scheduling under Memory Constraints
Jóhannsson GPU-based Markov decision process solver

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