CN118312385A - 数据竞争访问监测方法、系统、设备、介质和程序产品 - Google Patents

数据竞争访问监测方法、系统、设备、介质和程序产品 Download PDF

Info

Publication number
CN118312385A
CN118312385A CN202410481730.1A CN202410481730A CN118312385A CN 118312385 A CN118312385 A CN 118312385A CN 202410481730 A CN202410481730 A CN 202410481730A CN 118312385 A CN118312385 A CN 118312385A
Authority
CN
China
Prior art keywords
monitoring
data
area
monitor
monitored
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
CN202410481730.1A
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.)
Shanghai Bi Ren Technology Co ltd
Original Assignee
Shanghai Bi Ren Technology Co ltd
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 Shanghai Bi Ren Technology Co ltd filed Critical Shanghai Bi Ren Technology Co ltd
Priority to CN202410481730.1A priority Critical patent/CN118312385A/zh
Publication of CN118312385A publication Critical patent/CN118312385A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明涉及芯片技术领域,提供一种数据竞争访问监测方法、系统、设备、介质和程序产品,其中方法包括:通过处理模块从存储区域中确定出目标监控区域,并触发目标监控区域进入监控状态;通过监控器对目标监控区域的数据竞争访问事件进行监测,并在监测到目标监控区域发生数据竞争访问事件的情况下,发送中断信号至处理模块,或者设置状态标志;在监控状态下,通过处理模块对监控器的中断信号或状态标志进行监测,并在监测到中断信号或状态标志的情况下,获取数据竞争访问事件的信息。本发明提供的方法、系统、设备、介质和程序产品,能够精准定位目标监控区域,提高监测效率和准确性,并且实现了高效、稳定、低延迟的数据竞争访问监测。

Description

数据竞争访问监测方法、系统、设备、介质和程序产品
技术领域
本发明涉及芯片技术领域,尤其涉及处理器数据访问监测技术领域,特别涉及一种数据竞争访问监测方法、系统、设备、介质和程序产品。
背景技术
在CPU(Central Processing Unit,中央处理器)和GPU(Graphics ProcessingUnit,图形处理器)的协同异构计算中,可能会发生数据竞争冲突访问,这是因为CPU和GPU在计算模式、内存架构和访问机制上存在本质差异,它们对同一数据资源的访问可能产生冲突,从而导致数据的不一致性和错误。
目前,在数据竞争冲突访问的监测方面,主要是针对CPU进行监测,但针对CPU的访问监测方法难以适用于GPU。此外,虽然有些方案提出通过哈希算法来监测数据的变化以实现对数据竞争冲突访问的监测,但这种方法需要将监测区域内的所有数据读取出来,然后进行计算以生成哈希值,这种读取和计算的过程会引入较大的延迟,影响监测效果。
发明内容
本发明提供一种数据竞争访问监测方法、系统、设备、介质和程序产品,用以解决数据竞争访问监测延迟大、准确度低、监测效果较差的缺陷。
本发明提供一种数据竞争访问监测方法,包括:
通过处理模块从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;
通过监控器对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块,或者设置状态标志,所述监控器设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;
在所述监控状态下,通过所述处理模块对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
根据本发明提供的一种数据竞争访问监测方法,所述获取所述数据竞争访问事件的信息,之后还包括:
在监控结束的情况下,通过所述处理模块展示所述数据竞争访问事件的信息,所述信息包括所述数据竞争访问事件的发生时间和访问者地址,所述信息是在时间轴上以可视化视图的形式进行展示的。
根据本发明提供的一种数据竞争访问监测方法,所述在所述监控状态下,通过所述处理模块对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息,包括:
在所述监控状态下,通过所述处理模块调用监测子进程,并基于所述监测子进程对所述监控器的中断信号或状态标志进行监测,所述监测子进程在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息;
所述在监控结束的情况下,通过所述处理模块展示所述数据竞争访问事件的信息,包括:
在监控结束的情况下,通过所述处理模块从所述监测子进程中获取所述数据竞争访问事件的信息并展示。
根据本发明提供的一种数据竞争访问监测方法,所述监控状态是在待监测代码执行前触发进入的,所述监控状态是在所述待监测代码执行完成后触发结束的。
根据本发明提供的一种数据竞争访问监测方法,所述从存储区域中确定出目标监控区域,包括:
获取所述存储区域的虚拟地址,并基于所述虚拟地址,确定待监控区域范围;
基于片上网络的物理地址和所述内存控制器的物理地址,确定待监控区域的起始地址;
基于所述待监控区域范围和所述待监控区域的起始地址,确定目标监控区域。
本发明还提供一种数据竞争访问监测装置,包括:
确定单元,用于通过处理模块从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;
监测单元,用于通过监控器对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块,或者设置状态标志,所述监控器设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;
获取单元,用于在所述监控状态下,通过所述处理模块对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
本发明还提供一种数据竞争访问监测系统,包括:
处理模块,用于从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;
监控器,用于对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块,或者设置状态标志,所述监控器设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;
所述处理模块还用于在所述监控状态下,对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
根据本发明提供的一种数据竞争访问监测系统,所述处理模块包括主处理单元和子处理单元;
所述主处理单元用于从存储区域中确定出目标监控区域,并调用所述子处理单元,以触发所述目标监控区域进入监控状态;
所述子处理单元用于在所述监控状态下,对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据竞争访问监测方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据竞争访问监测方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述数据竞争访问监测方法。
本发明提供的数据竞争访问监测方法、系统、设备、介质和程序产品,通过处理模块从存储区域中确定出目标监控区域,并使其进入监控状态,能够精确地聚焦于可能发生数据竞争访问的关键区域,从而避免了对整个存储区域进行无差别的监控,提高了监测效率和准确性;在监控状态下,通过处理模块对监控器的中断信号或状态标志进行监测,并在监测到中断信号或状态标志的情况下,获取数据竞争访问事件的信息,实现了高效的中断信号或状态标志的监测机制,能够实时监测数据竞争访问事件的发生。此外,通过将监控器设置在内存控制器上,可以充分利用内存控制器管理存储区域访问的职能,使得监控器能够直接获取到访问信息,便于对目标监控区域内的数据竞争访问事件进行监测,无需额外的数据传递和同步过程,降低了系统开销和延迟。
附图说明
为了更清楚地说明本发明或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的数据正常访问的场景示意图;
图2是本发明提供的数据竞争访问的场景示意图;
图3是本发明提供的处理器的结构示意图;
图4是本发明提供的数据竞争访问监测方法的流程示意图之一;
图5是本发明提供的数据竞争访问监测方法的流程示意图之二;
图6是本发明提供的数据竞争访问监测装置的结构示意图;
图7是本发明提供的数据竞争访问监测系统的结构示意图;
图8是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
CPU-GPU协同异构计算是指利用CPU和GPU的协同工作,以更高效地完成计算任务。CPU通常用于执行串行、复杂逻辑和内存访问密集型的任务,而GPU则擅长处理大规模并行计算任务,特别是在图形渲染和大规模数据处理方面。在协同异构计算中,CPU和GPU共享数据并协同处理,从而充分发挥各自的计算优势。
图1是本发明提供的数据正常访问的场景示意图,如图1所示,在CPU-GPU协同异构计算场景下,系统内存主要分布于两处,一处是位于CPU内部的主机内存,另一处则是GPU中的显存,即图1中所示的高宽带内存。在执行某个计算任务时,数据可能存储在显存中,如图1所示的编号为1的实线圆圈区域。然而,由于显存资源有限,当显存空间不足以支持当前计算需求时,需要将部分暂时不需要使用的数据从显存中迁移到主机内存中,以释放显存空间供其他任务使用,该过程可以通过图1中由实线圆圈指向虚线圆圈的箭头来表示。当其他任务完成后,可以再从主机内存中将这些数据重新加载回显存。需要说明的是,图1中的tmp是指临时变量或临时存储容器,其表示在数据从显存迁移到主机内存后至数据从主机内存重新加载回显存之前的这段时间内,显存可以临时供其他任务使用。
但是,由于CPU和GPU在计算模式、内存架构和访问机制上存在本质差异,它们对同一数据资源的访问可能产生冲突,从而导致数据的不一致性和错误。图2是本发明提供的数据竞争访问的场景示意图,如图2所示,图中的数据访问流和数据计算流均为GPU中的任务流,图中编号为①的箭头表示在t0时刻将HBM(High Bandwidth Memory,高宽带内存)中的数据拷贝到主机内存中。然而,在数据拷贝过程中的t0.4时刻,GPU中的某个计算任务(如图中编号②为的箭头或编号为③的箭头所示)或者某个CPU进程(如图中编号为④的箭头所示)在向HBM中的区域(如图中标识为1'的实线圆圈区域)写入数据,这样将产生冲突,导致数据不一致和错误。需要说明的是,图2中所示的Offload:d2h表示将原本在GPU上的任务或数据拷贝到CPU上,其中d2h是Device to Host的缩写,指将数据从GPU设备拷贝至CPU的过程。Restore:h2d表示将任务或数据从CPU的主机内存恢复到GPU设备上,h2d(或H2D)是Hostto Device的缩写,D2D是Device to Device的缩写。Wr是指Write,即写操作,Rd是指Read,即读操作。DMA(Direct Memory Access,直接内存访问)是一种内存访问技术,允许内存和外设直接存取数据,而不需要CPU的干预,图2中所示的DMA是指实现该内存访问技术的硬件模块。此外,在将数据从HBM中拷贝到主机内存后,主机内存中同样存在可能产生数据冲突的写操作(如图中标识为Offload'的虚线箭头所示),主机内存区域标识为1”即表明该写操作导致了主机内存中当前存储的数据与从HBM中拷贝出来的数据不一致。在将主机内存中存储的数据重新加载回HBM的过程中,也存在可能产生数据冲突的写操作(如图中编号为⑤的箭头所示),标识1”'即表明重新加载回来的数据与拷贝之前以及主机内存中存储的可能都不一样了,从而导致数据访问流或数据计算流在重新读取并使用HBM中存储的数据时将产生错误,影响相应任务的正常执行。
针对上述数据竞争冲突访问的问题,可以对其进行监测,以便发现潜在的数据竞争问题,并及早采取相应的措施来避免这些问题的发生,从而提高程序的质量和性能。然而,在数据竞争冲突访问的监测方面,主要是针对CPU进行监测,但其监测范围往往局限于内存中的单个字节或双字节,这种小范围的监测方式难以适应GPU处理大规模数据时的需求。GPU在处理数据时,往往涉及大量的数据区间,而针对CPU的监测技术无法有效覆盖这些区间,从而增加了数据竞争冲突的风险。
此外,虽然有些方案提出通过哈希算法来监测数据的变化以实现数据竞争冲突访问监测,但这种方法在实际应用中却存在一定的缺陷。哈希算法需要将监测区域内的所有数据读取出来,然后进行计算以生成哈希值。这种读取和计算的过程会引入较大的延迟,尤其在处理大规模数据集时,延迟问题变得更加突出。这不仅影响了计算效率,还可能导致实时性要求较高的应用无法满足性能需求。
对此,本发明提供一种数据竞争访问监测方法,通过精准定位目标监控区域、高效的中断信号监测机制以及将监控器集成在内存控制器上,可以有效解决CPU-GPU协同异构计算中数据竞争访问监测的难题,从而克服上述缺陷。
需要说明的是,本发明提供的数据竞争访问监测方法可以应用于处理器,该处理器可以是CPU,也可以是GPU,还可以是GPGPU(General-Purpose Graphics ProcessingUnit,通用图形处理器)、TPU(Tensor Processing Unit,张量处理器)等,本发明对此不作具体限定。应理解的是,GPGPU可以利用GPU来进行通用计算任务,而不仅仅是图形渲染,在CPU和GPGPU之间也存在与上述CPU-GPU协同异构类似的计算场景。
图3是本发明提供的处理器的结构示意图,如图3所示,该处理器300可以包括处理模块310、监控器320和存储区域330,其中,处理模块310用于从存储区域330中确定出目标监控区域,并触发目标监控区域进入监控状态。处理器300还包括内存控制器,内存控制器用于对存储区域330的访问进行管理,监控器320设置在内存控制器上,便于实时捕获到与目标监控区域访问相关的数据竞争事件。监控器320用于对目标监控区域的数据竞争访问事件进行监测,并在监测到目标监控区域发生数据竞争访问事件的情况下,发送中断信号至处理模块310,或者设置状态标志。处理模块310在接收到监控器320的中断信号或者查询到监控器320的状态标志位的情况下,即可获取数据竞争访问事件的信息并以可视化形式展示给用户。
可以理解的是,上述处理模块310和监控器320都可以是处理器300的硬件组成部分,其中处理模块310可以包括执行指令和数据处理所需的硬件电路和逻辑,而监控器320可以是一个专门设置在处理器300的内存控制器上的硬件组件。下面将以应用于CPU-GPU协同异构计算场景下对GPU显存区域进行数据竞争访问监测为例,对本发明提供的数据竞争访问监测方法进行介绍。
图4是本发明提供的数据竞争访问监测方法的流程示意图之一,如图4所示,该方法包括:
步骤410,通过处理模块从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;
需要说明的是,在对GPU的存储区域进行数据竞争访问监测时,此处的存储区域即是指显存(或称图形内存),显存是专门为GPU设计的,用于存储图形处理过程中所需的数据和指令。在对CPU的存储区域进行数据竞争访问监测时,此处的存储区域可以包括CPU内部的寄存器、高速缓存以及主存储器等。
具体地,在对GPU的显存区域进行数据竞争访问监测时,可以先确定显存中哪些区域是关注的重点,这些区域可能更容易发生数据竞争访问,从而确定出目标监控区域,这样可以避免对整个GPU显存进行无差别的监控,从而极大地提高监测的效率和针对性。此处,目标监控区域是指在进行数据竞争访问监测时需要特别关注并对其进行详细监控的存储区域部分。
可以理解的是,目标监控区域的确定涉及对程序的分析和理解,以识别出哪些存储区域可能由于并发访问而导致数据竞争,这可以利用特定的分析工具或技术,对程序进行静态或动态分析,从而确定出目标监控区域。目标监控区域的确定也可以由用户根据特定需求以及所运行的应用程序或任务来指定得到,处理模块通过接收相应的用户指令,即可从存储区域中确定出目标监控区域。
在确定出目标监控区域后,可以根据具体的应用场景和需求,来触发目标监控区域进入监控状态。此处,进入监控状态意味着监控器已经开始对目标监控区域进行实时、详细的监测,在监控状态下,监控器会密切关注目标监控区域的内存访问情况,包括访问频率、访问模式、是否存在数据竞争等。应理解的是,通过触发目标监控区域进入监控状态,开发人员可以根据需要灵活地进行数据竞争访问监测,提高调试效率和准确性。例如,可以在需要时启动监测,收集相关数据,并在完成分析后停止监测,由此可以节省系统资源,并避免在不需要时产生大量的监测数据。
具体而言,为了触发目标监控区域进入监控状态,可以先根据具体的需求和场景,设置监控器的参数和规则,使其能够识别并监测目标监控区域。同时,可以通过编程或配置界面,指定目标监控区域的地址范围和起始地址,从而确定要监控的显存区域。随后,在完成配置和指定目标监控区域后,可以通过发送特定的命令或调用相应的API(ApplicationProgramming Interface,应用程序编程接口)函数来启动监控器开始工作。应理解的是,监控器可以是一个硬件设备或软件组件,用于实时监视和记录特定系统或设备的状态和行为。本发明实施例中,监控器可以是设置在内存控制器上的硬件模块,其用于对目标监控区域的数据访问情况进行监测,当监测到特定事件(如数据竞争访问)时,它可以生成并发送中断信号,也可以设置状态标志位。
步骤420,通过监控器对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块,或者设置状态标志,所述监控器设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;
具体地,在监控状态下,监控器可以对目标监控区域的数据竞争访问事件进行监测,一旦监控器监测到目标监控区域发生数据竞争访问事件,其会生成中断信号并发送至处理模块,以使处理模块能监测到该中断信号并执行相应的操作。此处,中断信号即是指监控器在检测到数据竞争访问事件时发送的一种信号,当中断信号被触发时,表明目标监控区域发生了数据竞争访问事件。
此外,监控器在监测到目标监控区域发生数据竞争访问事件时,也可以执行设置状态标志的操作,这样处理模块在查询到该状态标志时也可以执行相应的操作。此处,状态标志是一种指示监控器当前工作状态或特定事件是否发生的标记,其允许处理模块根据这些状态进行相应的处理或响应。例如,当监控器监测到目标监控区域发生数据竞争访问事件时,它可以设置一个特定的状态标志,以通知处理模块该事件的发生。应理解的是,监控器内部可以设置一些寄存器或内存位置,用于存储状态标志,当监控器监测到数据竞争访问事件时,可以通过内部逻辑或电路来修改这些寄存器或内存位置的值,从而设置相应的状态标志。
可以理解的是,在多线程或多进程环境中,当两个或多个线程或进程试图同时访问和修改同一内存区域,且至少有一个是写操作时,就可能发生数据竞争。本发明实施例中,数据竞争访问事件即是指在数据竞争发生时的数据写入操作。应理解的是,在数据正常访问的情况下,进入监控状态后,在将GPU显存区域中的数据拷贝到CPU内存的过程中,是不会检测到任何写操作的。但在此过程中,如果监控器监测到目标监控区域发生了写操作,则表明该写操作是一个会导致数据竞争冲突的写操作,此时,监控器会生成相应的中断信号或者设置特定的状态标志,并通过适当的接口或通道发送给处理模块。
在监测目标监控区域的数据竞争访问时,可以将监控器设置在内存控制器上。此处,内存控制器主要负责管理对存储区域的访问,其可以协调处理器与存储区域之间的数据交互,确保数据能够以高效、有序的方式在两者之间传输。例如,在GPU架构中,内存控制器可以直接管理显存的访问,它能够实时地感知到所有的显存访问请求和数据传输活动,通过在内存控制器上设置监控器,可以捕获到所有与显存访问相关的数据竞争事件,从而实现对数据竞争访问的精确监测和分析。
步骤430,在所述监控状态下,通过所述处理模块对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
具体地,在监控状态下,处理模块可以对监控器的中断信号或状态标志进行监测,此处,为了对监控器的中断信号进行监测,可以在处理模块中设置相应的中断处理程序或回调函数,当监控器发出中断信号时,该处理程序或函数会被调用,并基于中断信号的内容执行相应的操作,例如,获取数据竞争访问事件的信息并记录。此外,处理模块也可以通过查询监控器的状态标志来实现监测,例如,处理模块可以通过某种方式或指令来检查或读取该状态标志的当前状态或值,从而实现对监控器的状态标志的监测。
处理模块在接收到监控器发送的中断信号或者查询到监控器的状态标志时,即可获取数据竞争访问事件的信息并记录。例如,当处理模块接收到监控器发送的中断信号后,将开始执行预先设定的中断处理程序,该处理程序可以读取监控器提供的关于数据竞争访问事件的相关信息,如写操作发送的时间戳、地址等,并记录这些信息,以便后续用于问题定位、性能优化以及错误修复等任务。在中断程序在执行完成后,可以重新启用监控器的中断信号,以便继续监控后续的数据竞争访问事件。
本发明实施例中,通过软硬件协同设计,确保监控器(硬件部分)与处理模块中的数据处理和分析逻辑(软件部分)能够紧密配合,监控器在内存控制器上实时监测目标监控区域的数据访问情况,而软件部分则负责处理和分析监控器发送的中断信号,从而实现了高效的资源利用,不仅可以减少不必要的计算开销,降低整体功耗和成本,而且使得监控过程更加高效和精准,减少了因监控而引入的额外延迟,提升了系统的整体性能。
本发明实施例提供的方法,通过处理模块从存储区域中确定出目标监控区域,并使其进入监控状态,能够精确地聚焦于可能发生数据竞争访问的关键区域,从而避免了对整个存储区域进行无差别的监控,提高了监测效率和准确性;在监控状态下,通过处理模块对监控器的中断信号或状态标志进行监测,并在监测到中断信号或状态标志的情况下,获取数据竞争访问事件的信息,实现了高效的中断信号或状态标志的监测机制,能够实时监测数据竞争访问事件的发生。通过将监控器设置在内存控制器上,可以充分利用内存控制器管理存储区域访问的职能,使得监控器能够直接获取到访问信息,便于对目标监控区域内的数据竞争访问事件进行监测,无需额外的数据传递和同步过程,降低了系统开销和延迟。此外,由于目标监控区域和监控策略可以根据实际应用需求进行灵活配置,使得该方法能够适应不同规模和复杂度的计算环境。
基于上述实施例,步骤430之后,该方法还包括:
步骤440,在监控结束的情况下,通过所述处理模块展示所述数据竞争访问事件的信息,所述信息包括所述数据竞争访问事件的发生时间和访问者地址,所述信息是在时间轴上以可视化视图的形式进行展示的。
具体地,数据竞争访问事件的信息可以包括事件的发生时间和访问者地址,例如,在导致数据竞争访问的事件为写操作时,上述信息可以包括写操作的发生时间和写入者地址。此处,发生时间即是指数据竞争访问事件实际发生的时间点,这个时间点可以是一个具体的时间戳,其可以帮助开发人员准确地定位到问题发生的时刻,进而分析在那一时刻系统或应用的状态,以便找到数据竞争的原因。访问者地址则是指数据竞争访问事件对应的执行者地址,其可以是执行数据写入操作(导致数据竞争)的硬件客户端的物理地址,也可以是线程或进程的地址。结合访问者地址,可以帮助开发人员识别出导致数据竞争的具体软件应用和硬件模块。
在监控结束后,处理模块可以对记录的数据竞争访问事件的信息进行分析,并通过用户界面展示给用户,帮助用户直观地了解数据访问情况和潜在的数据竞争,通过对数据竞争访问事件的分析,开发人员可以找出问题的根源,并优化系统,避免未来出现类似的问题。
进一步地,为了提高展示效果,可以通过图形界面将数据竞争访问事件的发生时间、访问者地址等相关信息以可视化的方式进行直观呈现,例如,可以在时间轴上以可视化视图的形式进行展示,即将数据竞争访问事件的相关信息以图形化的方式展示在一条时间轴上,这种方式可以直观地展示事件发生的顺序和相对时间,使得开发人员更容易理解和分析。应理解的是,展示的具体方式可以是通过使用折线图、柱状图或其他图形来表示事件的发生时间,以及使用不同的颜色或标记来表示不同的访问者地址。此外,还可以结合具体的代码片段或软件栈信息,以便开发人员更深入地了解事件发生的上下文。
本发明实施例提供的方法,通过将数据竞争访问事件的发生时间和访问者地址等信息在时间轴上以可视化视图的形式进行展示,使得开发人员可以清晰地看到哪些操作导致了数据竞争冲突,冲突发生的时间点以及涉及的硬件客户端,从而更容易地定位问题和进行调试,有助于优化并行计算任务的设计,减少数据竞争冲突的发生,提高计算效率。
基于上述实施例,步骤430具体包括:
在所述监控状态下,通过所述处理模块调用监测子进程,并基于所述监测子进程对所述监控器的中断信号或状态标志进行监测,所述监测子进程在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息;
需要说明的是,在对目标监控区域进行数据竞争访问监测时,可以通过处理模块上的主程序来执行,但考虑到主程序原本就有需要执行的用户逻辑代码,为了避免监测逻辑对其造成干扰或影响,可以设置独立的监测子进程来执行监测任务,以确保监测逻辑与主程序的执行逻辑相互隔离,从而提高系统的隔离性和独立性。
具体地,监测子进程是一个专门用于监控和检测来自监控器的中断信号的进程。当中断信号被触发时,监测子进程负责接收并处理这些中断信号,以获取相关的事件信息。应理解的是,监测子进程可以和主程序设置在同一个处理模块内,也可以将监测子进程设置在其他独立的MPU(Microprocessor Unit,微处理器)中,该MPU可以集成在处理器内,也可以独立于处理器之外,本发明实施例对此不作具体限定。
示例性地,可以将监测子进程设置在硬件上的一个单片机中,当需要对目标监控区域进行数据竞争访问事件监测时,可以在主程序中通过调用API函数来触发目标监控区域进入监控状态,即启动并开始执行监测子进程。例如,可以在主程序中通过subprocess模块启动监测子进程,并与其进行通信,主程序可以发送数据到子进程的输入流,并读取子进程的输出流。启动监测子进程时,可以进行必要的初始化操作,比如配置监控参数、启动监控线程等;随后,监测子进程可以对监控器的中断信号进行监测,当目标监控区域发生写操作(导致数据竞争)时,监控器会产生中断信号并发送到监测子进程。监测子进程在接收到监控器发送的中断信号后,即可根据该中断信号获取数据竞争访问事件的发生时间和访问者地址等信息,并记录这些信息。
此外,处理完中断事件后,监测子进程可以执行中断信号重新启用的操作,以确保监控的连续性并避免遗漏事件,从而提高系统稳定性。应理解的是,中断信号在监测子进程处理完一个数据竞争事件后被重新启用,是为了确保监测子进程能够继续接收新的中断信号,从而持续监测目标监控区域。如果不重新启用中断,监测子进程可能会在处理完一个事件后停止响应新的中断,导致后续的数据竞争访问事件无法被捕获和记录。
相应地,步骤440具体包括:
在监控结束的情况下,通过所述处理模块从所述监测子进程中获取所述数据竞争访问事件的信息并展示。
具体地,在监控结束后,处理模块中的主程序可以从监测子进程中读取其收集的数据竞争访问事件地信息并进行展示。例如,监测子进程可以将信息写入文件或数据库,主程序在监控结束后可以读取这些文件或查询数据库来获取相关信息。又例如,主程序和监测子进程之间可以使用管道或套接字进行通信,监测子进程可以通过这些通道发送数据给主程序,从而使主程序获得数据竞争访问事件的相关信息。
主程序在获取到事件信息后,可以对其进行解析和处理,以便转换成适合展示的格式。解析完数据后,主程序可以将其展示给用户,展示方式可以根据需求选择,例如,可以使用时间序列图、散点图或其他可视化手段在时间轴上展示事件信息。此外,也可以使用图形化工具或库来创建窗口,并在其中展示信息,还可以将事件信息写入日志文件,供后续分析使用,本发明实施例对具体的展示方式不作限定。
本发明实施例中,监测子进程可以专注于监测任务,它可以采用专门的算法和数据结构来高效地处理中断信号和数据竞争访问事件。如果由主程序直接进行监测判断,可能会增加主程序的复杂性和开销,从而影响其性能。此外,将监测逻辑封装在独立的监测子进程中,可以使得整个系统更加模块化,便于维护和扩展,如果需要更改或增强监测功能,只需要对监测子进程进行相应的调整即可,而不需要修改主程序。
基于上述任一实施例,所述监控状态是在待监测代码执行前触发进入的,所述监控状态是在所述待监测代码执行完成后触发结束的。
具体地,待监测代码是指需要被监控和检测的特定代码段或程序部分,这些代码可能导致数据竞争访问事件,因此需要进行监控以确保程序的正确执行和稳定性。例如,当用户需要对某段代码进行监测时,可以在该段代码执行前通过调用API函数来进入监控状态,并在代码执行完成后通过调用API函数来结束监控。
可以理解的是,在待监测代码执行前触发进入监控状态,表明当待监测代码开始执行之前,监控机制已经被激活,并且开始监测代码的执行过程。这个触发动作可能涉及启动监测子进程、配置中断信号监听器、初始化相关的监控数据结构等,以便在代码执行过程中捕获数据竞争访问事件。在待监测代码执行完成后触发结束监控,表明一旦待监测代码执行完毕,监控机制将停止其监控活动。例如,关闭中断信号监听器、停止监测子进程、清理监控过程中产生的临时数据等。结束监控可以确保监控资源得到合理的释放,避免不必要的资源浪费,同时也可以提供一个明确的监控时间段,方便后续对监控结果的分析和处理。
进一步地,在监控结束后,通过将时间轴上展示的写操作的发生时间与软件栈的运行时间进行对比,可以确定是哪个函数执行的该写操作,结合时间轴上标记的访问者地址信息,可以精确定位出是哪个函数调用了哪个硬件客户端执行的该写操作导致了数据竞争。
应理解的是,在对待监测代码进行监控的过程中,可以通过主程序执行待监测代码的业务逻辑,同时通过监测子进程对其进行监测,避免对其执行逻辑造成干扰或影响。此外,通过在内存控制器上增加监控器进行监测,与哈希算法相比几乎没有延迟,而且记录的数据量非常小,只需要记录写操作的时间和写入者地址即可,因此对正常的业务逻辑的执行不会造成任何时间上的影响。
本发明实施例中,通过在待监测代码执行前后触发监控的开始和结束,可以确保监控的精确性,避免对非关键代码进行不必要的监控,从而减少监控的复杂性和开销,同时可以限制监控的时间范围,以便更有效地利用计算资源,避免长时间的监控导致的性能下降或资源浪费。此外,由于本发明实施例提供的监测方法对业务逻辑在执行过程中的时间因素影响非常小,因此可以在不影响业务正常运行的情况下进行调试和优化,从而保证了业务的稳定性和连续性。
基于上述任一实施例,步骤410中,所述从存储区域中确定出目标监控区域,包括:
步骤411,获取所述存储区域的虚拟地址,并基于所述虚拟地址,确定待监控区域范围;
具体地,存储区域的虚拟地址是指处理器支持的内存空间中的地址,当程序代码在运行时,它按照这些虚拟地址来编程,而不必关心实际的物理内存地址是如何的。操作系统和硬件会自动管理这些虚拟地址与物理地址之间的转换。操作系统会维护一个虚拟地址到物理地址的映射表,根据程序代码的执行需求和内存布局,可以确定哪些虚拟地址范围是程序正在使用或即将使用的,从而根据需要进行监控的程序代码(即待监测代码)对应的虚拟地址范围,即可确定出待监控区域范围。此处,待监控区域范围即是指在存储区域中被选定为监控目标的那一部分虚拟地址空间。待监测代码可以根据程序的执行逻辑、数据访问模式以及可能的性能瓶颈等因素来确定。
步骤412,基于片上网络的物理地址和所述内存控制器的物理地址,确定待监控区域的起始地址;
需要说明的是,片上网络(Network On Chip,NOC)是一种用于多核处理器和片上系统中的通信基础设施。在GPU架构中,NOC通常负责在GPU的不同组件之间传输数据,包括在GPU核心和内存控制器之间。内存控制器则直接与显存交互,执行读写操作。
具体地,通过查表,可以检索获得片上网络的物理地址和内存控制器的物理地址。此处,片上网络的物理地址是指用于在NOC中唯一标识和定位各个功能模块或通信节点的地址,这些地址在硬件层面是固定的,通常由硬件设计决定。内存控制器的物理地址是指用于标识和访问内存控制器的地址。内存控制器负责协调处理器和存储区域之间的数据传输,它的物理地址也是固定的,并且与具体的硬件实现相关。
在检索得到片上网络的物理地址和内存控制器的物理地址后,即可确定待监控区域的起始地址。此处,起始地址是指待监控区域在存储区域中的起始位置。具体而言,根据监控需求,在确定待监控区域在虚拟地址地址空间中的范围后,可以将此虚拟地址范围转换为物理地址范围,并结合片上网络的物理地址和内存控制器的物理地址,即可确定得到起始地址。应理解的是,待监控区域的起始地址是一个关键的标识点,它标明了监控活动的起始位置,即从此地址开始监控存储区域内的数据竞争访问事件。
步骤413,基于所述待监控区域范围和所述待监控区域的起始地址,确定目标监控区域。
具体地,根据待监控区域范围和起始地址,可以确定目标监控区域,即将起始地址和范围结合起来,形成一个明确的监控目标。目标监控区域包括了从起始地址开始,到范围结束地址为止的所有存储区域地址。
本发明实施例提供的方法,能够灵活地调整目标监控区域的监控范围和监控粒度,从而可以适应不同的数据竞争访问监测需求,具有较好的通用性和可扩展性。
基于上述任一实施例,图5是本发明提供的数据竞争访问监测方法的流程示意图之二,如图5所示,该方法可以应用于对GPU的显存区域进行数据竞争访问监测,该方法包括:
步骤S1,确定目标监控区域:可以通过处理模块上的主程序首先分析GPU的显存区域,确定出需要进行监测的目标监控区域。
步骤S2,触发监控开始:在用户逻辑代码执行前,主程序调用特定函数,触发目标监控区域进入监控状态。此时,监控器开始监测目标监控区域的访问情况。
步骤S3,执行用户逻辑代码:在监控状态下,主程序开始执行用户逻辑代码。
步骤S4,执行监测子进程:在MPU上设置专门的监测子进程,触发监控开始后,调用监测子进程并执行。启动监测子进程时,首先进行必要的初始化操作,随后,监测子进程将持续监测目标监控区域的数据访问情况,并等待监控器发送的中断信号。应理解的是,监测子进程与主程序的用户逻辑代码是并行的。
当监控器检测到目标监控区域发生数据竞争访问事件(即数据写入操作)时,它会生成中断信号并发送给监测子进程,或者设置相应的状态标志。监测子进程接收到中断信号或者查询到状态标志后,会获取与数据竞争访问事件相关的信息并进行记录。在处理完中断事件后,监测子进程可以重新启用监控器的中断信号,以便继续监控后续的数据竞争访问。
步骤S5,触发监控结束:在用户逻辑代码执行完毕后,主程序可以调用另一个函数,触发监控状态结束。
步骤S6,收集并展示信息:主程序可以从监测子进程中获取记录的数据竞争访问事件信息,并以时间轴视图可视化的形式展示给用户,使得用户就能够直观地看到哪些软件函数调用了哪些硬件客户端在何时对目标监控区域进行了写入操作。
基于上述任一实施例,图6是本发明提供的数据竞争访问监测装置的结构示意图,如图6所示,该装置包括:
确定单元610,用于通过处理模块从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;
监测单元620,用于通过监控器对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块,或者设置状态标志,所述监控器设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;
获取单元630,用于在所述监控状态下,通过所述处理模块对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
本发明实施例提供的装置,通过处理模块从存储区域中确定出目标监控区域,并使其进入监控状态,能够精确地聚焦于可能发生数据竞争访问的关键区域,从而避免了对整个存储区域进行无差别的监控,提高了监测效率和准确性;在监控状态下,通过处理模块对监控器的中断信号或状态标志进行监测,并在监测到中断信号或状态标志的情况下,获取数据竞争访问事件的信息,实现了高效的中断信号或状态标志的监测机制,能够实时监测数据竞争访问事件的发生。此外,通过将监控器设置在内存控制器上,可以充分利用内存控制器管理存储区域访问的职能,使得监控器能够直接获取到访问信息,便于对目标监控区域内的数据竞争访问事件进行监测,无需额外的数据传递和同步过程,降低了系统开销和延迟。
基于上述任一实施例,该装置还包括展示单元,展示单元用于:
在监控结束的情况下,通过所述处理模块展示所述数据竞争访问事件的信息,所述信息包括所述数据竞争访问事件的发生时间和访问者地址,所述信息是在时间轴上以可视化视图的形式进行展示的。
基于上述任一实施例,获取单元630具体用于:
在所述监控状态下,通过所述处理模块调用监测子进程,并基于监测子进程对所述监控器的中断信号或状态标志进行监测,以使所述监测子进程在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息;
相应地,展示单元具体用于:
在监控结束的情况下,通过所述处理模块从所述监测子进程中获取所述数据竞争访问事件的信息并展示。
基于上述任一实施例,所述监控状态是在待监测代码执行前触发进入的,所述监控状态是在所述待监测代码执行完成后触发结束的。
基于上述任一实施例,确定单元610具体用于:
获取所述存储区域的虚拟地址,并基于所述虚拟地址,确定待监控区域范围;
基于片上网络的物理地址和所述内存控制器的物理地址,确定待监控区域的起始地址;
基于所述待监控区域范围和所述待监控区域的起始地址,确定目标监控区域。
基于上述任一实施例,图7是本发明提供的数据竞争访问监测系统的结构示意图,如图7所示,该系统包括:
处理模块710,用于从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;
监控器720,用于对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块710,或者设置状态标志,所述监控器720设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;
所述处理模块710还用于在所述监控状态下,对所述监控器720的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
需要说明的是,本发明实施例提供一种数据竞争访问监测系统,可以应用于在CPU-GPU协同异构计算场景下对GPU的显存区域进行数据竞争访问监测,也可以应用于对CPU的内存区域进行数据竞争访问监测,还可以应用于对GPGPU、TPU等的存储区域进行数据竞争访问监测,本发明实施例对此不作具体限定。应理解的是,上述监测系统是一个用于监测存储区域中目标监控区域的数据竞争访问事件的系统,该系统可以是一个包括处理模块、监控器、内存控制器等多个硬件组件的系统,其也可以是一个集成了处理器、数据采集模块、存储模块、报警模块等多个硬件和软件组件的复杂系统,其中处理器可以集成处理模块和监控器等,本发明实施例对此不作具体限定。
具体地,在上述监测系统中,处理模块主要负责从存储区域中确定出需要被监测的目标监控区域,并触发该目标监控区域进入监控状态。一旦目标监控区域进入监控状态,处理模块还会对监控器发送的中断信号或监控器设置的状态标志进行监测。当监测到中断信号或查询到状态标志时,处理模块会获取数据竞争访问事件的具体信息,并进行记录。此外,处理模块还可以负责数据的分析、报告的生成以及与其他系统组件的交互。应理解的是,处理模块可以是系统的主处理器,由此可以利用主处理器的强大计算能力和丰富资源来进行数据的处理和分析。
监控器可以是设置在内存控制器上的硬件模块,其用于对目标监控区域的数据访问情况进行监测,当监测到数据竞争访问事件(即导致数据竞争的写操作)时,它可以生成中断信号并发送至处理模块,也可以设置相应的状态标志供处理模块查询。此处,由于内存控制器可以直接管理存取区域的访问,通过在内存控制器上设置监控器,可以准确地捕获到所有与目标监控区域访问相关的数据竞争事件,从而实现对数据竞争访问的精确监测和分析。
可以理解的是,考虑到在GPU架构中,其显存区域可能较为庞大,同时目标监控区域的选择和确定又较为灵活,为了有效地对显存区域进行监测,提高监测的效率和准确性,可以设置多个监控器,将显存区域划分为多个子区域,每个监控器负责监控一个或多个子区域。这样可以实现监控任务的并行处理,提高监控速度,同时多个监控器还可以提供冗余和备份功能,确保在某个监控器出现故障时,其他监控器仍然能够正常工作。
示例性地,为了实现对GPU的显存区域进行数据竞争访问监测,可以先通过处理模块分析显存区域的访问模式和数据流动情况,确定出可能存在数据竞争访问的目标监控区域。当需要进行监控调试时,处理模块可以通过接收相应的指令,触发目标监控区域进入监控状态。此时,设置在内存控制器上的监控器开始工作,对目标监控区域的数据访问进行实时监测。一旦检测到数据竞争访问事件(即导致数据竞争的写操作),监控器会立即生成中断信号或者设置相应的状态标志。处理模块在监控状态下会持续监测中断信号或者查询状态标志,当接收到来自监控器的中断信号或者查询到监控器的状态标志时,处理模块会立即响应,并获取数据竞争访问事件的具体信息,如事件发生的时间、访问者地址等。此外,处理模块可以将获取到的信息记录到日志或数据库中,以便后续的分析和处理;还可以对收集到的数据进行统计分析并展示给用户,以找出可能存在的问题或性能瓶颈。
本发明实施例提供的系统,通过处理模块从存储区域中确定出目标监控区域,并使其进入监控状态,能够精确地聚焦于可能发生数据竞争访问的关键区域,从而避免了对整个存储区域进行无差别的监控,提高了监测效率和准确性;在监控状态下,通过处理模块对监控器的中断信号或状态标志进行监测,并在监测到中断信号或状态标志的情况下,获取数据竞争访问事件的信息,实现了高效的中断信号或状态标志的监测机制,能够实时监测数据竞争访问事件的发生。此外,通过将监控器设置在内存控制器上,可以充分利用内存控制器管理存储区域访问的职能,使得监控器能够直接获取到访问信息,便于对目标监控区域内的数据竞争访问事件进行监测,无需额外的数据传递和同步过程,降低了系统开销和延迟。
基于上述任一实施例,所述处理模块710还用于:
在监控结束的情况下,展示所述数据竞争访问事件的信息,所述信息包括所述数据竞争访问事件的发生时间和访问者地址,所述信息是在时间轴上以可视化视图的形式进行展示的。
需要说明的是,本发明实施例的实现方式和有益效果可参照上述方法实施例,在此不再赘述。
基于上述任一实施例,所述处理模块710包括主处理单元和子处理单元;
所述主处理单元用于从存储区域中确定出目标监控区域,并调用所述子处理单元,以触发所述目标监控区域进入监控状态;
所述子处理单元用于在所述监控状态下,对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或状态标志的情况下,获取所述数据竞争访问事件的信息。
具体地,处理模块需要执行对目标监控区域进行数据竞争访问监测的任务,除此之外,其还有正常的用户逻辑代码需要执行。为了避免监测任务对用户逻辑代码的执行造成干扰或影响,可以将处理模块分为主处理单元和子处理单元,其中主处理单元可以为系统的主处理器,用于执行用户逻辑代码;子处理单元可以为主处理器之外的其他处理器,用于执行监测任务。主处理单元和子处理单元相互独立,从而可以确保监测任务逻辑与用户逻辑代码的执行相互隔离。
本发明实施例中,通过将处理模块分为主处理单元和子处理单元,使得子处理单元可以专注于监测任务,以实现高效地处理中断信号和数据竞争访问事件,避免增加主处理单元的复杂性和开销,同时降低对主处理单元性能的影响。
基于上述任一实施例,所述主处理单元还用于在监控结束的情况下,从所述子处理单元中获取所述数据竞争访问事件的信息并展示。
需要说明的是,本发明数据竞争访问监测系统的其他实施例或具体实现方式可参照上述各方法或装置实施例,在此不再赘述。
图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行数据竞争访问监测方法,该方法包括:通过处理模块从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;通过监控器对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块,或者设置状态标志,所述监控器设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;在所述监控状态下,通过所述处理模块对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的数据竞争访问监测方法,该方法包括:通过处理模块从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;通过监控器对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块,或者设置状态标志,所述监控器设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;在所述监控状态下,通过所述处理模块对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的数据竞争访问监测方法,该方法包括:通过处理模块从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;通过监控器对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块,或者设置状态标志,所述监控器设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;在所述监控状态下,通过所述处理模块对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种数据竞争访问监测方法,其特征在于,包括:
通过处理模块从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;
通过监控器对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块,或者设置状态标志,所述监控器设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;
在所述监控状态下,通过所述处理模块对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
2.根据权利要求1所述的数据竞争访问监测方法,其特征在于,所述获取所述数据竞争访问事件的信息,之后还包括:
在监控结束的情况下,通过所述处理模块展示所述数据竞争访问事件的信息,所述信息包括所述数据竞争访问事件的发生时间和访问者地址,所述信息是在时间轴上以可视化视图的形式进行展示的。
3.根据权利要求2所述的数据竞争访问监测方法,其特征在于,所述在所述监控状态下,通过所述处理模块对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息,包括:
在所述监控状态下,通过所述处理模块调用监测子进程,并基于所述监测子进程对所述监控器的中断信号或状态标志进行监测,所述监测子进程在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息;
所述在监控结束的情况下,通过所述处理模块展示所述数据竞争访问事件的信息,包括:
在监控结束的情况下,通过所述处理模块从所述监测子进程中获取所述数据竞争访问事件的信息并展示。
4.根据权利要求1至3任一项所述的数据竞争访问监测方法,其特征在于,所述监控状态是在待监测代码执行前触发进入的,所述监控状态是在所述待监测代码执行完成后触发结束的。
5.根据权利要求1至3任一项所述的数据竞争访问监测方法,其特征在于,所述从存储区域中确定出目标监控区域,包括:
获取所述存储区域的虚拟地址,并基于所述虚拟地址,确定待监控区域范围;
基于片上网络的物理地址和所述内存控制器的物理地址,确定待监控区域的起始地址;
基于所述待监控区域范围和所述待监控区域的起始地址,确定目标监控区域。
6.一种数据竞争访问监测系统,其特征在于,包括:
处理模块,用于从存储区域中确定出目标监控区域,并触发所述目标监控区域进入监控状态;
监控器,用于对所述目标监控区域的数据竞争访问事件进行监测,并在监测到所述目标监控区域发生所述数据竞争访问事件的情况下,发送中断信号至所述处理模块,或者设置状态标志,所述监控器设置在内存控制器上,所述内存控制器用于管理对所述存储区域的访问;
所述处理模块还用于在所述监控状态下,对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
7.根据权利要求6所述的数据竞争访问监测系统,其特征在于,所述处理模块包括主处理单元和子处理单元;
所述主处理单元用于从存储区域中确定出目标监控区域,并调用所述子处理单元,以触发所述目标监控区域进入监控状态;
所述子处理单元用于在所述监控状态下,对所述监控器的中断信号或状态标志进行监测,并在监测到所述中断信号或所述状态标志的情况下,获取所述数据竞争访问事件的信息。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述数据竞争访问监测方法。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述数据竞争访问监测方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述数据竞争访问监测方法。
CN202410481730.1A 2024-04-19 2024-04-19 数据竞争访问监测方法、系统、设备、介质和程序产品 Pending CN118312385A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410481730.1A CN118312385A (zh) 2024-04-19 2024-04-19 数据竞争访问监测方法、系统、设备、介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410481730.1A CN118312385A (zh) 2024-04-19 2024-04-19 数据竞争访问监测方法、系统、设备、介质和程序产品

Publications (1)

Publication Number Publication Date
CN118312385A true CN118312385A (zh) 2024-07-09

Family

ID=91730780

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410481730.1A Pending CN118312385A (zh) 2024-04-19 2024-04-19 数据竞争访问监测方法、系统、设备、介质和程序产品

Country Status (1)

Country Link
CN (1) CN118312385A (zh)

Similar Documents

Publication Publication Date Title
US8051409B1 (en) Monitoring memory accesses for multiple computer processes
EP3352083B1 (en) Debugging method, multi-core processor, and debugging equipment
US9514029B2 (en) Partial recording of a computer program execution for replay
US8402443B2 (en) Method and system for automated analysis of the performance of remote method invocations in multi-tier applications using bytecode instrumentation
US10409709B2 (en) Debugging method, multi-core processor and debugging device
US20090320001A1 (en) System, method and program product for monitoring changes to data within a critical section of a threaded program
US8990551B2 (en) Analysis and visualization of cluster resource utilization
JP6363152B2 (ja) データフロー分析のための装置、方法、コンピュータプログラム及び記憶媒体
US8667472B1 (en) System and method of instrumenting code for in-production monitoring
US20120036501A1 (en) Method and System for Capturing System and User Events Using Hardware Trace Devices
US20040117796A1 (en) Method and apparatus for measuring variation in thread wait time
US20160188441A1 (en) Testing multi-threaded applications
CN117707969B (zh) 一种基于ARMv8的操作系统调测系统
CN110764962A (zh) 日志处理方法和装置
US20120159451A1 (en) Identifying threads that encounter an instruction at which another thread is halted
CN118312385A (zh) 数据竞争访问监测方法、系统、设备、介质和程序产品
US20040128654A1 (en) Method and apparatus for measuring variation in thread wait time
WO2020073200A1 (zh) 调试程序的方法和系统
Sidorov Methods and tools to increase fault tolerance of high-performance computing systems
CN113742113B (zh) 一种嵌入式系统健康管理方法、设备及储存介质
CN112416536B (zh) 提取处理器执行上下文的方法及处理器
US11475017B2 (en) Asynchronous data enrichment for an append-only data store
CN111124820A (zh) 一种实现操作系统及进程资源离线型监视和分析的方法
US10061604B2 (en) Program execution recording and playback
JP3339708B2 (ja) イベント記録方式

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