一种基于全局锁的指令执行方法、计算设备及存储介质技术

技术编号:32186389 阅读:10 留言:0更新日期:2022-02-08 15:50
本发明专利技术公开了一种基于全局锁的指令执行方法、计算设备及存储介质。方法包括步骤:将应用在内部存储器中的存储数据的第一存储指令提交到处理器;当处理器不能正常执行第一存储指令时,根据数据存储异常消息生成第二存储指令;获取全局锁,并对执行存储指令的过程进行加锁;通过处理器执行第二存储指令在内部存储器中存储数据;当接收到在内部存储器中读取数据的第一读取指令时,获取全局锁;若全局锁被占用,不能获取全局锁时,则再次获取全局锁;若获取到全局锁,则对执行读取指令的过程进行加锁;通过处理器执行第一读取指令从内部存储器中读取数据。本发明专利技术能够使数据访存的原子性不丢失,从而避免某些特殊应用程序运行异常问题。题。题。

【技术实现步骤摘要】
一种基于全局锁的指令执行方法、计算设备及存储介质


[0001]本专利技术涉及计算机指令执行领域,特别涉及一种基于全局锁的指令执行方法、计算设备及存储介质。

技术介绍

[0002]随着计算机技术的不断发展,开发出越来越多的应用。相应的,应用的数据也越来越多,数据结构也越来越复杂。因此,系统对内存中复杂数据结构的访存性能也越来越重要,直接影响着关键应用程序的运行速度。在数据存储时,经常会出现特殊的存储情况,应用在访存这些存储的数据时,处理器不支持对数据的特殊的访存指令,会出现报错的情况,处理器无法直接处理这类访存指令操作数据。
[0003]为此,在现有技术中,为了访问这些存储数据,采用改变数据访存指令,这样应用访问这些数据的指令就变成正常指令,处理器能够执行进行数据的访存。这其中一种方案是将原本跨界的访存指令转化为两条对界的访存指令,通过执行两条对界的访存指令,即可成功存储或读取完整的数据。
[0004]但是这种方式将一次内存访问转换为了多次内存访问,因此实质上改变了应用程序的内存访问模型。对于某些特殊的应用场景,一次内存访问的原子性,被多次内存访问所破坏,如果应用程序依赖于内存访问的原子性,在这种情况下,就会因为原子性的破坏,从而导致数据出现误差或者错误,严重时可导致应用程序运行异常。
[0005]为此,需要一种新的基于全局锁的指令执行方法。

技术实现思路

[0006]为此,本专利技术提供一种基于全局锁的指令执行方法,以力图解决或者至少缓解上面存在的问题。
[0007]根据本专利技术的一个方面,提供一种基于全局锁的指令执行方法,适于在计算设备中执行,计算设备包括处理器、内部存储器,并运行有一个或多个应用,内部存储器的存储区域映射为存储空间,且应用以存储空间中的存储地址来读写内部存储器中的数据,方法包括步骤:将应用在内部存储器中的存储数据的第一存储指令提交到处理器;当处理器由于第一存储指令所存储数据的存储地址不能正常执行第一存储指令时,根据处理器产生的数据存储异常消息生成第二存储指令,第二存储指令适于存储第一存储指令要存储的数据,且处理器在执行第二存储指令时不会产生数据存储异常消息;获取全局锁,并对执行存储指令的过程进行加锁;通过处理器执行第二存储指令在内部存储器中存储数据;当接收到在内部存储器中读取数据的第一读取指令时,获取全局锁;若全局锁被占用,不能获取全局锁时,则再次获取全局锁;若获取到全局锁,则对执行读取指令的过程进行加锁;通过处理器执行第一读取指令从内部存储器中读取数据。
[0008]可选地,在根据本专利技术的方法中,根据处理器产生的数据存储异常消息生成第二存储指令包括步骤:根据第一存储指令的存储地址生成前半段存储指令和后半端存储指
令,前半段存储指令和后半段存储指令,分别适于根据前半段地址和半段地址存储数据;将前半段存储指令和后半段存储指令作为第二存储指令。
[0009]可选地,在根据本专利技术的方法中,还包括步骤:若全局锁被占用,不能获取全局锁时,则再次获取全局锁;若获取到全局锁,则通过第二存储指令存储数据。
[0010]可选地,在根据本专利技术的方法中,通过存储器执行第二存储指令在内部存储器中存储数据包括步骤:根据数据生成前半段数据和后半段数据;通过处理器执行前半段存储指令,根据前半段地址存储前半段数据;通过处理器执行后半段存储指令,根据后半段地址存储后半段数据。
[0011]可选地,在根据本专利技术的方法中,还包括步骤:通过处理器在内部存储器中存储完毕数据后,释放全局锁,以便处理器其他线程获取全局锁并读取数据。
[0012]可选地,在根据本专利技术的方法中,第一读取指令包括前半段读取指令和后半段读取指令,通过所述第一读取指令读取数据包括步骤:通过处理器执行前半段读取指令,根据前半段地址读取存储的前半段数据;通过处理器执行后半段读取指令,根据后半段地址读取存储的后半段数据;将从前半段地址读取的前半段数据与从后半段地址中读取的后半段数据进行组合得到数据。
[0013]可选地,在根据本专利技术的方法中,还包括步骤:通过处理器在所述内部存储器中读取完毕数据后,释放全局锁,以便处理器其他线程获取全局锁并存储数据。
[0014]可选地,在根据本专利技术的方法中,还包括步骤:若接收到第二读取指令,将第二读取指令提交到处理器;当处理器由于第二读取指令所读取数据的地址不能正常执行第二读取指令时,根据处理器产生的数据访问异常消息生成第一读取指令,第一读取指令适于读取第二读取指令要读取的数据,且处理器在执行第一读取指令时不会产生数据读取异常消息。
[0015]可选地,在根据本专利技术的方法中,根据处理器产生的数据访问异常消息生成第一读取指令包括步骤:根据第二读取指令的存储地址生成前半段读取指令和后半段读取指令,前半段读取指令和后半段读取指令,分别适于根据前半段地址和后半段地址读取数据;将前半段读取指令和后半段读取指令作为第一读取指令。
[0016]可选地,在根据本专利技术的方法中,第一存储指令包括不对界存储指令,前半段存储指令和后半段存储指令包括对界存储指令。
[0017]可选地,在根据本专利技术的方法中,第二读取指令包括不对界读取指令,前半段读取指令和后半段读取指令包括对界读取指令。
[0018]根据本专利技术的另一方面,提供了一种计算设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序包括用于执行根据本专利技术的一种基于全局锁的指令执行方法的指令。
[0019]根据本专利技术的再一个方面,提供了一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,该指令当由计算设备执行时,使得计算设备执行根据本专利技术的一种基于全局锁的指令执行方法中的方法。
[0020]本专利技术中的基于全局锁的指令执行方法,适于在计算设备中执行,计算设备包括处理器、内部存储器,并运行有一个或多个应用,包括步骤:将应用在内部存储器中的存储
数据的第一存储指令提交到处理器,当处理器由于第一存储指令所存储数据的存储地址不能正常执行第一存储指令时,根据处理器产生的数据存储异常消息生成第二存储指令,第二存储指令适于存储第一存储指令要存储的数据,且处理器在执行第二存储指令时不会产生数据存储异常消息。为了避免在存储数据的同时,有处理器的其他核心的线程执行数据读取指令,从还未完成数据存储的位置读取到不完整的数据,使应用运行发成错误,首先需要获取全局锁,并对执行存储指令的过程进行加锁。再通过处理器执行第二存储指令在内部存储器中存储数据。当接收到在内部存储器中读取数据的第一读取指令时,获取全局锁。若全局锁被占用,不能获取全局锁时,则再次获取全局锁。全局锁被占用,不能获取全局锁,表示当前存储位置正在存储或读取数据,此时读取数据会破坏数据的完整性,读取到错误的数据,因此不能读取数据。若获取到全局锁,则对执行读取指令的过程进行加锁,通过处理器执行第一读取指令从所述内部存储器中读取数据。若获取到全局锁,则通过第一读取本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于全局锁的指令执行方法,适于在计算设备中执行,所述计算设备包括处理器、内部存储器,并运行有一个或多个应用,所述内部存储器的存储区域映射为存储空间,且所述应用以所述存储空间中的存储地址来读写所述内部存储器中的数据,所述方法包括步骤:将所述应用在所述内部存储器中的存储数据的第一存储指令提交到所述处理器;当所述处理器由于所述第一存储指令所存储数据的存储地址不能正常执行第一存储指令时,根据所述处理器产生的数据存储异常消息生成第二存储指令,所述第二存储指令适于存储所述第一存储指令要存储的数据,且所述处理器在执行所述第二存储指令时不会产生数据存储异常消息;获取全局锁,并对执行存储指令的过程进行加锁;通过所述处理器执行所述第二存储指令在所述内部存储器中存储数据;当接收到在所述内部存储器中读取数据的第一读取指令时,获取全局锁;若所述全局锁被占用,不能获取全局锁时,则再次获取全局锁;若获取到全局锁,则对执行读取指令的过程进行加锁;通过所述处理器执行所述第一读取指令从所述内部存储器中读取数据。2.如权利要求1所述的方法,其中所述根据所述处理器产生的数据存储异常消息生成第二存储指令包括步骤:根据所述第一存储指令的存储地址生成前半段存储指令和后半端存储指令,所述前半段存储指令和后半段存储指令,分别适于根据前半段地址和半段地址存储数据;将所述前半段存储指令和后半段存储指令作为第二存储指令。3.权利要求2所述的方法,其中,所述方法还包括步骤:若所述全局锁被占用,不能获取全局锁时,则再次获取全局锁;若获取到全局锁,则通过第二存储指令存储数据。4.如权利要求3所述的方法,其中,所述通过所述存储器执行所述第二存储指令在所述内部存储器中存储数据包括步骤:根据所述数据生成前半段数据和后半段数据;通过所述处理器执行所述前半段存储指令,根据所述前半段地址存储所述前半段数据;通过所述处理器执行所述后半段存储指令,根据所述后半段地址存储所述后半段数据。5.权利要求4所述的方法,其中,所述方法还包括步骤:通过所述处理器在所述内部存储器中存储完毕数据后,释放全局锁,以便处理器其他线程获取全局锁并读取数据。6.如权利要求5所述的方法,其中,所述第一读取指令包括前半段读取指...

【专利技术属性】
技术研发人员:钟俊
申请(专利权)人:武汉深之度科技有限公司
类型:发明
国别省市:

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

1