[发明专利]一种基于异构平台的多种并行错误检测系统有效
申请号: | 201510468604.3 | 申请日: | 2015-08-04 |
公开(公告)号: | CN105117369B | 公开(公告)日: | 2017-11-10 |
发明(设计)人: | 张为华;余时强 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F15/163 | 分类号: | G06F15/163;G06F15/167 |
代理公司: | 上海正旦专利代理有限公司31200 | 代理人: | 陆飞,盛志范 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 平台 多种 并行 错误 检测 体系 架构 | ||
技术领域
本发明属于并行处理器技术领域,具体涉及一种基于异构平台(通用处理器和图形处理器混合架构)处理能力的多种并行错误检测系统。
背景技术
随着计算机科技的发展,多核处理器愈发普遍。日常生活中,台式机、笔记本电脑、平板电脑,甚至是手机,都已经配备了多核处理器。单一芯片上处理器核数的增多,带来了潜在的计算能力。为了充分利用多核设备上的计算资源,并行程序得到了普遍的应用。然而,受困于并行程序错误,编写正确的并行程序并非易事。一方面,程序员习惯于串行化的思考方式,导致了编写并行程序时容易产生错误;另一方面,并行程序的不确定性导致了调试过程中的并行程序空间难以重现,增加了调试的难度。难以调试的并行程序错误对软件的可靠性构成了严重的威胁,甚至造成了许多严重的事故和巨大的财产损失。例如,2003年美国东北地区的大面积停电事故,影响了超过5000万人。又如,2012年脸谱公司的IPO故障事故,造成了数亿美元的经济损失。
此外,并行错误的多样性加剧了检测的复杂性。目前主流的并行错误有数据竞争、原子性违背和顺序违背等多种类型。而且,较之串行错误,由于并行程序的不确定性,往往使得错误场景难以重现,导致了并行错误更加难以定位与检测。为了检测并行错误,学术界与工业界提出了许多解决方案与工具,它们可以被分为两类:软件检测工具与硬件检测架构。软件检测工具一般通过程序插桩来获取程序运行时状态,而后对该状态进行检测分析。这类工具往往不得不承受插桩带来的巨大性能负载。为了提高性能,一些研究使用了采样技术,即仅仅检测整个程序的一部分,但这种方式通常会损失检测精度。另一方面,硬件架构通过特定硬件收集程序运行状态,从而避免了插桩带来的性能负载。然而,硬件架构往往仅针对于某种特定类型的并行错误,从而限制了它们的灵活性与通用性。之前的工作指出,同一个并行程序中往往会隐藏着多于一种的并行错误,即便如MySQL这类成熟的商用软件也无法幸免。当程序员进行调试的时候,他们往往并不清楚代码中到底包含的是哪一种并行错误,一种种尝试不同类型的错误检测工具显得非常笨重而不灵活。因此,目前该领域急切需要一种能够同时检测多种并行错误的硬件架构。
如今,通用处理器与图形处理器结合的体系架构愈发流行,这为并行错误检测提供了崭新的机会。一方面,通用图形处理器包含了大量的通用计算单元。而且,在程序员进行调试时,这些计算单元往往是空闲的。另一方面,并行错误虽然表现形式不同,但本质上都是由于共享资源的使用不合理引起的。因此,检测所需的程序状态的关注点都在于访存记录(特别是共享的访存记录),使得检测流程在前端收集方面存在一定的相似性。再者,检测流程的后端,即并行错误的检测算法,拥有良好的计算并行度与数据并行度。因此,错误检测算法较为适合部署到通用图形处理器上进行,以利用通用图形处理器上丰富的并行计算资源。而且,通用图形处理器具有可编程性,也可以较为灵活地适用于不同类型的错误检测算法。因此,本发明致力于利用异构平台处理器,来设计一种针对多种并行错误检测的体系架构。
发明内容
本发明的目的在于对目前主流的多种并行错误提供一种基于中央处理器-通用图形处理器的检测系统。
本发明提出的基于中央处理器-通用图形处理器的多种并行错误检测系统,是对当前主流的异构平台体系架构的一种扩展,使之能够支持多种并行错误的检测。具体是在当前主流的异构平台体系架构基础上添加两个简易硬件模块(如图1所示):访存收集模块和访存预处理模块,从而建立整个并行错误检测的体系;其中,所述访存收集模块在检测流程的上游,位于每个处理器内,负责访存收集;所述访存预处理模块接收访存收集模块收集的访存信息,经预处理后将它们记录成为历史信息,然后发送至通用图形处理器进行错误检测;通用图形处理器在检测流程下游,接收访存预处理模块发送来的访存信息并进行相应算法的检测。
本发明中,访存收集模块位于每个中央处理器核内,如图2所示。它从重排序缓冲区中收集标识的操作或是访存指令。每条指令都会通过旁路发送到访存收集模块。访存收集模块判断该指令是否是标识的操作或者访存指令,如果是,则将它保存至访存收集模块的访存收集缓冲区。每条收集的访存包含以下三个部分:(1)访存的程序计数器;(2)访存地址;(3)访存类型,如读取,存储或者是顺序违背中的操作类型(文件打开,关闭,读取等等)。当访存收集模块的收集缓冲区满,访存收集模块便将收集缓冲区内的访存通过片上网络发送至访存预处理模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510468604.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种文本信息的显示方法及终端
- 下一篇:连接AC-耦合系统和DC-耦合系统