当前位置: 首页 > 专利查询>复旦大学专利>正文

一种基于异构平台的多种并行错误检测系统技术方案

技术编号:12426074 阅读:135 留言:0更新日期:2015-12-03 11:27
本发明专利技术属于并行处理器技术领域,具体涉及一种基于异构处理平台的多种并行错误检测系统。本发明专利技术主要利用异构平台上通用图形处理器强大的并行计算能力与可编程性,来同时检测主流的多种并行错误,包括数据竞争,原子性违背和顺序违背。设计复杂度方面,本发明专利技术只需要较平滑的硬件复杂度,并且不需要改变片上关键路径(如高速缓存或者缓存一致性)的逻辑,只添加访存收集模块和访存预处理模块,分别来收集可能导致并行错误的访存指令和提供错误检测的相关信息,错误检测的算法则利用通用图形处理器来实现高度并行。本发明专利技术提供的硬件架构能够在程序运行过程中发现并行错误,并且只带来很小的运行开销。

【技术实现步骤摘要】

本专利技术属于并行处理器
,具体涉及一种基于异构平台(通用处理器和图形处理器混合架构)处理能力的多种并行错误检测体系架构。
技术介绍
随着计算机科技的发展,多核处理器愈发普遍。日常生活中,台式机、笔记本电脑、平板电脑,甚至是手机,都已经配备了多核处理器。单一芯片上处理器核数的增多,带来了潜在的计算能力。为了充分利用多核设备上的计算资源,并行程序得到了普遍的应用。然而,受困于并行程序错误,编写正确的并行程序并非易事。一方面,程序员习惯于串行化的思考方式,导致了编写并行程序时容易产生错误;另一方面,并行程序的不确定性导致了调试过程中的并行程序空间难以重现,增加了调试的难度。难以调试的并行程序错误对软件的可靠性构成了严重的威胁,甚至造成了许多严重的事故和巨大的财产损失。例如,2003年美国东北地区的大面积停电事故,影响了超过5000万人。又如,2012年脸谱公司的IPO故障事故,造成了数亿美元的经济损失。此外,并行错误的多样性加剧了检测的复杂性。目前主流的并行错误有数据竞争、原子性违背和顺序违背等多种类型。而且,较之串行错误,由于并行程序的不确定性,往往使得错误场景难以重现,导致了并行错误更加难以定位与检测。为了检测并行错误,学术界与工业界提出了许多解决方案与工具,它们可以被分为两类:软件检测工具与硬件检测架构。软件检测工具一般通过程序插粧来获取程序运行时状态,而后对该状态进行检测分析。这类工具往往不得不承受插粧带来的巨大性能负载。为了提高性能,一些研究使用了采样技术,即仅仅检测整个程序的一部分,但这种方式通常会损失检测精度。另一方面,硬件架构通过特定硬件收集程序运行状态,从而避免了插粧带来的性能负载。然而,硬件架构往往仅针对于某种特定类型的并行错误,从而限制了它们的灵活性与通用性。之前的工作指出,同一个并行程序中往往会隐藏着多于一种的并行错误,即便如MySQL这类成熟的商用软件也无法幸免。当程序员进行调试的时候,他们往往并不清楚代码中到底包含的是哪一种并行错误,一种种尝试不同类型的错误检测工具显得非常笨重而不灵活。因此,目前该领域急切需要一种能够同时检测多种并行错误的硬件架构。如今,通用处理器与图形处理器结合的体系架构愈发流行,这为并行错误检测提供了崭新的机会。一方面,通用图形处理器包含了大量的通用计算单元。而且,在程序员进行调试时,这些计算单元往往是空闲的。另一方面,并行错误虽然表现形式不同,但本质上都是由于共享资源的使用不合理引起的。因此,检测所需的程序状态的关注点都在于访存记录(特别是共享的访存记录),使得检测流程在前端收集方面存在一定的相似性。再者,检测流程的后端,即并行错误的检测算法,拥有良好的计算并行度与数据并行度。因此,错误检测算法较为适合部署到通用图形处理器上进行,以利用通用图形处理器上丰富的并行计算资源。而且,通用图形处理器具有可编程性,也可以较为灵活地适用于不同类型的错误检测算法。因此,本专利技术致力于利用异构平台处理器,来设计一种针对多种并行错误检测的体系架构。
技术实现思路
本专利技术的目的在于对目前主流的多种并行错误提供一种基于中央处理器-通用图形处理器的检测体系架构。本专利技术提出的基于中央处理器-通用图形处理器的多种并行错误检测体系架构,是对当前主流的异构平台体系架构的一种扩展,使之能够支持多种并行错误的检测。具体是在当前主流的异构平台体系架构基础上添加两个简易硬件模块(如图1所示):访存收集模块和访存预处理模块,从而建立整个并行错误检测的体系;其中,所述访存收集模块在检测流程的上游,位于每个处理器内,负责访存收集;所述访存预处理模块接收访存收集模块收集的访存信息,经预处理后将它们记录成为历史信息,然后发送至通用图形处理器进行错误检测;通用图形处理器在检测流程下游,接收访存预处理模块发送来的访存信息并进行相应算法的检测。本专利技术中,访存收集模块位于每个中央处理器核内,如图2所示。它从重排序缓冲区中收集标识的操作或是访存指令。每条指令都会通过旁路发送到访存收集模块。访存收集模块判断该指令是否是标识的操作或者访存指令,如果是,则将它保存至访存收集模块的访存收集缓冲区。每条收集的访存包含以下三个部分:(1)访存的程序计数器;(2)访存地址;(3)访存类型,如读取,存储或者是顺序违背中的操作类型(文件打开,关闭,读取等等)。当访存收集模块的收集缓冲区满,访存收集模块便将收集缓冲区内的访存通过片上网络发送至访存预处理模块。本专利技术中,访存预处理模块位于片上,中央处理器与通用图形处理器之间,与片上总线互联,如图3所示。由于检测数据竞争和顺序违背所使用的happens-before算法需要访存的时间戳信息、检测原子性违背的ColorSafe算法需要颜色签名赋值信息;同时,这些检测算法都需要维护历史访存,以供检测时比较分析。因此,访存预处理模块的主要作用在于为错误检测生成必要的信息。首先,汇总访存收集模块收集的访存;而后,进行必要的预处理(如时间戳赋值,颜色签名赋值等,历史信息维护);最后,将访存发送至通用图形处理器进行检测。由于通用图形处理器在检测时需要访问位于访存预处理模块的历史信息,较之分布式的访存预处理模块设计,集中式的访存预处理模块设计更利于通用图形处理器读取时的带宽与速度优化。因此,本专利技术采用了集中式的访存预处理模块设计。本专利技术中,所述通用图形处理器上的并行错误检测:当访存由访存预处理模块发送至通用图形处理器后,通用图形处理器将根据所需要检测的错误类型,应用相应的检测算法进行检测。每条待检测访存都被发送至通用图形处理器端,通用图形处理器端将待检测访存的地址与历史信息中其它核(线程)的访存进行比较,以此确定是否存在并行错误。由于检测过程有着良好的并行度,不论是哪种错误的检测,本专利技术都可以将每条访存的检测处理器运行检测过程中不需要额外的同步操作,可以最大程度地并行化。本专利技术在上述基本体系架构设计之外,为了进一步提高本专利技术的性能,本专利技术还引入了三种优化策略。一、地址过滤,过滤不可能引发并行错误的私有地址,旨在提高处理效率;二、避免共享内存被替换(即避免历史记录中的共享访存被替换),旨在提高检测精确度;三、判断并标识“最后写”访存,利用happens-before算法的传递性性质,减少检测负载,旨在提尚处理效率。所述地址过滤,是使用计数布隆过滤器,通过该计数布隆过滤器,在访存被发送到通用图形处理器前,本专利技术首先将它与其它核(线程)的布隆过滤器进行比较,判断该访存是否在其它核(线程)中出现。如果是,则该访存是共享访存,需要进行后续的比较处理;否贝1J,该访存是私有访存,不会引发数据竞争。由于大部分的访存都是私有的,所以都会被过滤掉。因此,通过该过滤器,通用图形处理器上大部分的计算负载可以被避免。所述避免共享内存被替换,其措施是在历史访存缓冲区中为每个记录添加了一个共享标识位(因为并行错误仅关注共享访存),以此表明该访存记录是否是共享的。当历史缓冲区发生替换时,优先替换非共享的访存记录。凭借该策略,本专利技术可以保留更多有用的共享访存记录。所述“最后写”策略,一方面,对于同一线程的所有访存,后续的访存必然发生在先前访存之后,因此,对于同一地址,本专利技术使用后续访存替换先前访存;另一方面,本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/CN105117369.html" title="一种基于异构平台的多种并行错误检测系统原文来自X技术">基于异构平台的多种并行错误检测系统</a>

【技术保护点】
一种基于异构平台的多种并行错误检测体系架构,其特征在于:是在当前主流的异构平台体系架构基础上添加两个简易硬件模块:访存收集模块和访存预处理模块,从而建立整个并行错误检测的体系;其中,所述访存收集模块在检测流程的上游,位于每个处理器内,负责访存收集;所述访存预处理模块接收访存收集模块收集的访存信息,经预处理后将它们记录成为历史信息,然后发送至通用图形处理器进行错误检测;通用图形处理器在检测流程下游,接收访存预处理模块发送来的访存信息并进行相应算法的检测。

【技术特征摘要】

【专利技术属性】
技术研发人员:张为华余时强
申请(专利权)人:复旦大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1