CN103019829A - 用签名实现的多核程序内存竞争记录及重演方法 - Google Patents

用签名实现的多核程序内存竞争记录及重演方法 Download PDF

Info

Publication number
CN103019829A
CN103019829A CN2012105934085A CN201210593408A CN103019829A CN 103019829 A CN103019829 A CN 103019829A CN 2012105934085 A CN2012105934085 A CN 2012105934085A CN 201210593408 A CN201210593408 A CN 201210593408A CN 103019829 A CN103019829 A CN 103019829A
Authority
CN
China
Prior art keywords
memory
record
memory contention
dependence
contention
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.)
Pending
Application number
CN2012105934085A
Other languages
English (en)
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.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
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 Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN2012105934085A priority Critical patent/CN103019829A/zh
Publication of CN103019829A publication Critical patent/CN103019829A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

用签名实现的多核程序内存竞争记录及重演方法,涉及用签名实现的多核程序内存竞争记录及重演方法。它为了解决现有基于硬件的多核程序确定性重演方法中只注重内存竞争记录的性能而忽略内存竞争重演的性能,导致重演时效率低下的问题。签名实现的多核程序内存竞争记录及重演方法为:步骤一、在多核程序原始执行阶段,开启内存竞争记录功能,每个处理器核开始内存竞争记录;步骤二、当所有的处理器核的内存竞争记录完成后,进入多核程序重演阶段,开启内存竞争重演功能。本发明应用在多核程序调试、入侵检测、容错等领域。

Description

用签名实现的多核程序内存竞争记录及重演方法
技术领域
本发明涉及多核程序内存竞争记录的方法,具体涉及用签名实现的多核程序内存竞争记录及重演方法。
背景技术
内存竞争的记录和重演是实现多核程序确定性重演的关键。当前多核程序确定性重演方法中只注重内存竞争记录的性能而忽略内存竞争重演的性能,导致重演时效率低下的问题。
发明内容
本发明解决了现有基于硬件的多核程序确定性重演方法中只注重内存竞争记录的性能而忽略内存竞争重演的性能,导致重演时效率低下的问题。
本发明所述的用签名实现的多核程序内存竞争记录及重演方法包括如下步骤:
步骤一、在多核程序原始执行阶段,开启内存竞争记录功能,每个处理器核开始内存竞争记录;
步骤二、当所有的处理器核的内存竞争记录完成后,进入多核程序重演阶段,开启内存竞争重演功能。
在多核程序原始执行阶段,开启内存竞争记录功能,每个处理器核开始内存竞争记录操作步骤如下:
A、请求方发出指令,若该指令是读内存操作指令,则IC的值加1,所述的IC的值为指令计数值,将所读的内存块的地址添加到所有的读签名寄存器中,同时请求方发出共享内存请求消息到每个处理器的一致性协议机构,执行步骤B;
若该指令是写内存操作指令,则将要写的内存块的地址添加到所有的写签名寄存器中,同时请求方发出共享内存请求消息到每个处理器的一致性协议机构,执行步骤B;
B、一致性机构收到共享内存请求消息后,将共享内存请求消息转发给其他处理器核,即应答方,执行步骤C;
C、应答方根据接收到的共享内存请求消息的地址到读签名寄存器或写签名寄存器中查找,判断是否有内存竞争发生,
若发生内存竞争,则将一个记录标志位和当前指令计数值连同内存块的内容一起发送给请求方,清空对应请求方的写签名寄存器和读签名寄存器;并将伪依赖关系记录到运行在该处理器核上的线程的内存竞争日志中,执行步骤D;
若没有发生内存竞争,则只将内存块的内容发送给请求方,执行步骤A;
D、请求方接收到应答消息后,检测内存竞争记录模块记录的标志位是否为真,若为真,则记录内存竞争依赖关系到内存竞争日志;否则不记录。
当所有的处理器核的内存竞争记录完成后,进入多核程序重演阶段,开启内存竞争重演功能,每个处理器核操作步骤如下:
E、处理器核开始运行时,从运行在该处理器上的线程的内存竞争日志中读取一个记录,并存储到该内存竞争记录过程中使用的寄存器中,执行步骤F;
F、处理器核检测该记录依赖关系,若该记录为伪依赖关系,则当执行完它所对应的指令后,创建唤醒消息、并通过一致性协议发送给对应的处理器,执行步骤G;
若该记录为内存竞争依赖关系,则暂不执行该指令,当接收到唤醒消息时,执行步骤H;所述的唤醒消息为内存竞争的先发生方所在的处理器核创建并发送的,
G、处理器发送完唤醒消息后,该处理器核从内存竞争日志中读取下一条记录,再执行步骤F;
H、处理器接收到合适的唤醒消息后,处理器核从内存竞争日志中读取下一条记录,执行步骤F。
本发明为基于目录的高速缓存(Cache)一致性协议的多核处理器系统,用较少的硬件资源实现了多核程序运行时内存竞争的记录以及重演时内存竞争的重放。该内存竞争记录及重演方法为每个线程记录一个内存竞争日志,在记录阶段,采用签名实现内存竞争的检测,硬件开销小;在重演阶段,能够主动创建唤醒消息,提高了重演的效率。本发明既实现了内存竞争的记录,又能实现高效的内存竞争重演的目的。
本发明应用在多核程序调试、入侵检测、容错等领域。
附图说明
图1为本发明所述用签名实现的多核程序内存竞争记录及重演方法的流程图;
图2为每个处理器核开始内存竞争记录操作的流程图;
图3为进入多核程序重演阶段,开启内存竞争重演功能每个处理器核操作的流程图;
图4为内存竞争日志样式图;
图5为内存竞争记录硬件实现结构图。
具体实施方式
具体实施方式一、结合图1具体说明本实施方式,本实施方式所述的用签名实现的多核程序内存竞争记录及重演方法包括如下步骤:
步骤一、在多核程序原始执行阶段,开启内存竞争记录功能,每个处理器核开始内存竞争记录;
步骤二、当所有的处理器核的内存竞争记录完成后,进入多核程序重演阶段,开启内存竞争重演功能。
具体实施方式二、结合图2具体说明本实施方式,本实施方式与具体实施方式一所述的用签名实现的多核程序内存竞争记录及重演方法的区别在于:步骤一所述的在多核程序原始执行阶段,开启内存竞争记录功能,每个处理器核开始内存竞争记录操作步骤如下:
A、请求方发出指令,若该指令是读内存操作指令,则IC的值加1,所述的IC的值为指令计数值,将所读的内存块的地址添加到所有的读签名寄存器中,同时请求方发出共享内存请求消息到每个处理器的一致性协议机构,执行步骤B;多核处理器都有一致性协议控制机构,用于保证所有处理器核私有L1数据Cache中保留的共享数据的副本一致,
若该指令是写内存操作指令,则将要写的内存块的地址添加到所有的写签名寄存器中,同时请求方发出共享内存请求消息到每个处理器的一致性协议机构,执行步骤B;
B、一致性机构收到共享内存请求消息后,将共享内存请求消息转发给其他处理器核,即应答方,执行步骤C;
C、应答方根据接收到的共享内存请求消息的地址到读签名寄存器或写签名寄存器中查找,判断是否有内存竞争发生,
若发生内存竞争,则将一个记录标志位和当前指令计数值连同内存块的内容一起发送给请求方,清空对应请求方的写签名寄存器和读签名寄存器;并将伪依赖关系记录到运行在该处理器核上的线程的内存竞争日志中,执行步骤D;
若没有发生内存竞争,则只将内存块的内容发送给请求方,执行步骤A;
D、请求方接收到应答消息后,检测内存竞争记录模块记录的标志位是否为真,若为真,则记录内存竞争依赖关系到内存竞争日志;否则不记录。
具体实施方式三、结合图3具体说明本实施方式本实施方式与具体实施方式一所述的用签名实现的多核程序内存竞争记录及重演方法的区别在于:步骤二所述的当所有的处理器核的内存竞争记录完成后,进入多核程序重演阶段,开启内存竞争重演功能,每个处理器核操作步骤如下:
E、处理器核开始运行时,从运行在该处理器上的线程的内存竞争日志中读取一个记录,并存储到该内存竞争记录过程中使用的寄存器中,执行步骤F;
F、处理器核检测该记录依赖关系,若该记录为伪依赖关系,则当执行完它所对应的指令后,创建唤醒消息、并通过一致性协议发送给对应的处理器,执行步骤G;
若该记录为内存竞争依赖关系,则暂不执行该指令,当接收到唤醒消息时,执行步骤H;所述的唤醒消息为内存竞争的先发生方所在的处理器核创建并发送的,
G、处理器发送完唤醒消息后,该处理器核从内存竞争日志中读取下一条记录,再执行步骤F;
H、处理器接收到合适的唤醒消息后,处理器核从内存竞争日志中读取下一条记录,执行步骤F。
相比先前的多核程序确定性重演方法,本发明有如下突出优点:
1、既支持内存竞争的记录,又支持内存竞争的重演。
2、记录伪依赖关系,能在重演时主动创建唤醒消息并发送给请求方,重演效率高。
3、使用签名实现内存竞争的检测,硬件资源消耗少。
4、无需修改原有的Cache一致性协议。
具体实施方式四、本实施方式与具体实施方式二所述的用签名实现的多核程序内存竞争记录及重演方法的区别在于,步骤C中所述的内存竞争日志由内存竞争依赖关系和伪依赖关系组成,
内存竞争依赖关系是用来在重演时指出哪条指令需要等待来自哪里的唤醒消息;伪依赖关系是用来在重演时指出哪条指令需要发送唤醒,
内存竞争依赖关系用依赖关系i:w→j:v来表示,
伪依赖关系用依赖关系i:w→0来表示,此依赖关系的后发生为0,区别于内存竞争依赖关系,从而表示此依赖关系是一个伪依赖关系。
其中,w、v表示发生冲突i:x→j:y发生时,线程i、j的当前指令计数值x和y均表示冲突发生时,冲突双方对应指令的指令计数值。
如图4所示,有两个线程i和j都对z执行写操作,发生冲突j:2→i:3,在内存竞争记录时要记录2→3作为此冲突的内存竞争依赖关系到i线程的内存竞争日志中;
记录2→0作为此冲突的伪依赖关系到j线程的内存竞争日志中。
线程i记录的2→3指出了重演时,线程i的指令3需要等待来自线程j指令2发送过来的唤醒消息;
线程j记录的2→0指出了重演时,线程j需要指令2执行完毕后发送一个唤醒消息给线程i。
唤醒消息用二元组{发出唤醒消息的线程号,发出唤醒消息对应的指令计数值}表示,简洁明了,很容易被接受唤醒消息的一方识别。如此以来,多核程序重演时,能够主动发送消息,从而提高了重演的效率。
本发明要实现内存竞争的记录及重演,需要为原有的多核处理器系统(若处理器核数目为P)中的每个处理器核增加一个内存竞争记录模块,它包含如下部件:P-1个1024bits的写签名寄存器、P-1个256bits的读签名寄存器和64bits指令计数器。支持本发明内存竞争记录及重演方法的4核(P=4)处理器硬件实现结构如图5所示。

Claims (4)

1.用签名实现的多核程序内存竞争记录及重演方法,其特征在于:它包括如下步骤:
步骤一、在多核程序原始执行阶段,开启内存竞争记录功能,每个处理器核开始内存竞争记录;
步骤二、当所有的处理器核的内存竞争记录完成后,进入多核程序重演阶段,开启内存竞争重演功能。
2.根据权利要求1所述的用签名实现的多核程序内存竞争记录及重演方法,其特征在于:步骤一所述的在多核程序原始执行阶段,开启内存竞争记录功能,每个处理器核开始内存竞争记录操作步骤如下:
A、请求方发出指令,若该指令是读内存操作指令,则IC的值加1,所述的IC的值为指令计数值,将所读的内存块的地址添加到所有的读签名寄存器中,同时请求方发出共享内存请求消息到每个处理器的一致性协议机构,执行步骤B;
若该指令是写内存操作指令,则将要写的内存块的地址添加到所有的写签名寄存器中,同时请求方发出共享内存请求消息到每个处理器的一致性协议机构,执行步骤B;
B、一致性机构收到共享内存请求消息后,将共享内存请求消息转发给其他处理器核,即应答方,执行步骤C;
C、应答方根据接收到的共享内存请求消息的地址到读签名寄存器或写签名寄存器中查找,判断是否有内存竞争发生,
若发生内存竞争,则将一个记录标志位和当前指令计数值连同内存块的内容一起发送给请求方,清空对应请求方的写签名寄存器和读签名寄存器;并将伪依赖关系记录到运行在该处理器核上的线程的内存竞争日志中,执行步骤D;
若没有发生内存竞争,则只将内存块的内容发送给请求方,执行步骤A;
D、请求方接收到应答消息后,检测内存竞争记录模块记录的标志位是否为真,若为真,则记录内存竞争依赖关系到内存竞争日志;否则不记录。
3.根据权利要求1所述的用签名实现的多核程序内存竞争记录及重演方法,其特征在于:步骤二所述的当所有的处理器核的内存竞争记录完成后,进入多核程序重演阶段,开启内存竞争重演功能,每个处理器核操作步骤如下:
E、处理器核开始运行时,从运行在该处理器上的线程的内存竞争日志中读取一个记录,并存储到该内存竞争记录过程中使用的寄存器中,执行步骤F;
F、处理器核检测该记录依赖关系,若该记录为伪依赖关系,则当执行完它所对应的指令后,创建唤醒消息、并通过一致性协议发送给对应的处理器,执行步骤G;
若该记录为内存竞争依赖关系,则暂不执行该指令,当接收到唤醒消息时,执行步骤H;所述的唤醒消息为内存竞争的先发生方所在的处理器核创建并发送的,
G、处理器发送完唤醒消息后,该处理器核从内存竞争日志中读取下一条记录,再执行步骤F;
H、处理器接收到合适的唤醒消息后,处理器核从内存竞争日志中读取下一条记录,执行步骤F。
4.根据权利要求2所述的用签名实现的多核程序内存竞争记录及重演方法,其特征在于:步骤C中所述的内存竞争日志由内存竞争依赖关系和伪依赖关系组成,
内存竞争依赖关系是用来在重演时指出哪条指令需要等待来自哪里的唤醒消息;伪依赖关系是用来在重演时指出哪条指令需要发送唤醒,
内存竞争依赖关系用依赖关系i:w→j:v来表示,
伪依赖关系用依赖关系i:w→0来表示,
其中,w、v表示发生冲突i:x→j:y发生时,线程i、j的当前指令计数值。
CN2012105934085A 2012-12-31 2012-12-31 用签名实现的多核程序内存竞争记录及重演方法 Pending CN103019829A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012105934085A CN103019829A (zh) 2012-12-31 2012-12-31 用签名实现的多核程序内存竞争记录及重演方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012105934085A CN103019829A (zh) 2012-12-31 2012-12-31 用签名实现的多核程序内存竞争记录及重演方法

Publications (1)

Publication Number Publication Date
CN103019829A true CN103019829A (zh) 2013-04-03

Family

ID=47968460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012105934085A Pending CN103019829A (zh) 2012-12-31 2012-12-31 用签名实现的多核程序内存竞争记录及重演方法

Country Status (1)

Country Link
CN (1) CN103019829A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105991346A (zh) * 2015-04-28 2016-10-05 杭州迪普科技有限公司 会话日志的处理方法及装置
CN107193661A (zh) * 2017-05-15 2017-09-22 哈尔滨工业大学(威海) 面向多核处理器确定性重演的优化分段式内存竞争记录系统及其方法
CN108196963A (zh) * 2017-12-29 2018-06-22 中国电力科学研究院有限公司 基于自适应释放的确定性重放方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1197955A (zh) * 1997-04-17 1998-11-04 阿尔卡塔尔-阿尔斯托姆通用电气公司 管理共享内存的方法
US20120059997A1 (en) * 2010-09-02 2012-03-08 Cho Dae-Hyun Apparatus and method for detecting data race

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1197955A (zh) * 1997-04-17 1998-11-04 阿尔卡塔尔-阿尔斯托姆通用电气公司 管理共享内存的方法
US20120059997A1 (en) * 2010-09-02 2012-03-08 Cho Dae-Hyun Apparatus and method for detecting data race

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ZHU SUXIA等: "An Efficient Point-to-Point Deterministic Record-Replay", 《2012 13TH INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTED COMPUTING, APPLICATIONS AND TECHNOLOGIES》 *
李青山等: "西安电子科技大学学报", 《西安电子科技大学学报 *
王邵刚等: "HybridTCache:一种基于专用事务Cache的软硬件协同事务内存系统", 《计算机学报》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105991346A (zh) * 2015-04-28 2016-10-05 杭州迪普科技有限公司 会话日志的处理方法及装置
CN107193661A (zh) * 2017-05-15 2017-09-22 哈尔滨工业大学(威海) 面向多核处理器确定性重演的优化分段式内存竞争记录系统及其方法
CN107193661B (zh) * 2017-05-15 2020-08-21 哈尔滨工业大学(威海) 面向多核处理器确定性重演的优化分段式内存竞争记录系统及其方法
CN108196963A (zh) * 2017-12-29 2018-06-22 中国电力科学研究院有限公司 基于自适应释放的确定性重放方法
CN108196963B (zh) * 2017-12-29 2021-11-16 中国电力科学研究院有限公司 基于自适应释放的确定性重放方法

Similar Documents

Publication Publication Date Title
CN102163072B (zh) 用于节能的基于软件的线程重映射
CN1866230B (zh) 一种存储器仲裁器、处理器系统及存储器仲裁方法
WO2012093488A1 (ja) スケジューリング方法、およびマルチコアプロセッサシステム
US20130007488A1 (en) Power management of a storage device including multiple processing cores
CN103020003A (zh) 面向多核程序确定性重演的内存竞争记录装置及其控制方法
CN114580344B (zh) 测试激励生成方法、验证方法、验证系统及相关设备
CN104541244A (zh) 用于进行重放执行的方法和系统
CN103279428B (zh) 一种显式的面向流应用的多核Cache一致性主动管理方法
CN102810050A (zh) 日志数据写入方法和日志系统
WO2020177549A1 (zh) 数据的读写方法和装置
JP2014106973A (ja) パフォーマンス測定ユニット
CN111966511B (zh) 消息队列数据读写处理方法及装置
CN101639763A (zh) 一种io调度方法及调度装置
CN101763433A (zh) 一种数据存储系统及方法
CN103019829A (zh) 用签名实现的多核程序内存竞争记录及重演方法
CN113900968B (zh) 多副本非原子写的存储序同步操作实现方法与实现装置
US10198784B2 (en) Capturing commands in a multi-engine graphics processing unit
US20120059997A1 (en) Apparatus and method for detecting data race
JP2015506519A (ja) ユーザ生成によるデータセンターの省電力
CN102929935A (zh) 一种基于事务的大容量数据读写方法
US8656120B2 (en) Device, method and computer-readable medium relocating remote procedure call data in heterogeneous multiprocessor system on chip
CN102567081B (zh) 基于多进程的全局设置方法及系统
CN109791469B (zh) 设置高速缓冲存储器的时钟速度/电压的装置及方法
WO2016106738A1 (zh) 事务冲突检测方法、装置及计算机系统
CN104298620A (zh) 一种耐擦写低能耗的外接计算机加速设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130403