CN118113350A - 寄存器数据写入方法、装置、读写保护模块和电子设备 - Google Patents

寄存器数据写入方法、装置、读写保护模块和电子设备 Download PDF

Info

Publication number
CN118113350A
CN118113350A CN202410325330.1A CN202410325330A CN118113350A CN 118113350 A CN118113350 A CN 118113350A CN 202410325330 A CN202410325330 A CN 202410325330A CN 118113350 A CN118113350 A CN 118113350A
Authority
CN
China
Prior art keywords
data
write operation
address
register
write
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
CN202410325330.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.)
Hexin Technology Co ltd
Shenzhen Hexin Digital Technology Co ltd
Original Assignee
Hexin Technology Co ltd
Shenzhen Hexin Digital 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 Hexin Technology Co ltd, Shenzhen Hexin Digital Technology Co ltd filed Critical Hexin Technology Co ltd
Priority to CN202410325330.1A priority Critical patent/CN118113350A/zh
Publication of CN118113350A publication Critical patent/CN118113350A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本申请涉及一种寄存器数据写入方法、装置、读写保护模块和电子设备。所述方法包括:读写保护模块响应于处理器发起的针对寄存器的数据写入操作,获取对应的写操作位数;在写操作位数为第一写操作位数,并且数据写入操作为第一数据写入操作,获取对应的第一数据写入地址以及第一待写入数据;在写操作位数为第一写操作位数,并且数据写入操作为第二数据写入操作,获取对应的第二数据写入地址;在第二数据写入地址为与第一数据写入地址相匹配的递增地址的情况下,将第二数据写入操作对应的第二待写入数据与第一待写入数据进行合并,并根据合并后的待写入数据以及第一数据写入地址,向寄存器发起数据写入操作。采用本方法能够提高数据写入的准确性。

Description

寄存器数据写入方法、装置、读写保护模块和电子设备
技术领域
本申请涉及计算机技术领域,特别是涉及一种寄存器数据写入方法、装置、读写保护模块和电子设备。
背景技术
随着计算机技术的发展,出现了一种32位CPU访问64位寄存器的技术,该寄存器可以是通过外部CPU读写配置的 64位POWER CORE配置寄存器,该寄存器可按照64位地址数据存放,并支持32位CPU操作,其本身支持32位地址总线到64位寄存器操作的转换。
传统技术中,32位CPU访问64位寄存器方案可以是对寄存器采用直接访问的方式实现,例如可以是通过对两次连续的32位写操作进行拼接成64位写操作来实现。上述连续写操作属于强制性的,并且如果第二次写入地址如果不和第一次写入地址匹配,或者读写交织,则会导致寄存器写入失败。
并且,在出现写操作失败后,软件会继续执行,但是后续功能异常,因此目前针对32位CPU写入64位寄存器数据的方法,数据写入的准确性较低,因此软件运行的稳定性较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高寄存器数据写入准确率的寄存器数据写入方法、装置、读写保护模块、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种寄存器数据写入方法,包括:
响应于所述处理器发起的针对所述寄存器的数据写入操作,获取所述数据写入操作对应的写操作位数;
在所述写操作位数为第一写操作位数,并且所述数据写入操作为第一数据写入操作的情况下,获取所述第一数据写入操作对应的第一数据写入地址以及第一待写入数据;所述第一写操作位数为与所述寄存器的寄存器位数不相同的写操作位数;
在所述写操作位数为所述第一写操作位数,并且所述数据写入操作为第二数据写入操作的情况下,获取所述第二数据写入操作对应的第二数据写入地址;
在所述第二数据写入地址为与所述第一数据写入地址相匹配的递增地址的情况下,将所述第二数据写入操作对应的第二待写入数据与所述第一待写入数据进行合并,并根据合并后的待写入数据以及所述第一数据写入地址,向所述寄存器发起写操作位数为第二写操作位数的数据写入操作;所述第二写操作位数为与所述寄存器的寄存器位数相同的写操作位数。
在其中一个实施例中,读写保护模块中设置有状态寄存器;所述获取所述数据写入操作对应的写操作位数之后,还包括:在所述写操作位数为第一写操作位数的情况下,获取所述状态寄存器的状态值;在所述状态值为初始状态值的情况下,将所述数据写入操作作为所述第一数据写入操作;在所述状态值为目标状态值的情况下,将所述数据写入操作作为所述第二数据写入操作。
在其中一个实施例中,所述获取所述第一数据写入操作对应的第一数据写入地址以及第一待写入数据之后,还包括:将所述状态寄存器的状态值由所述初始状态值切换为所述目标状态值;所述向所述寄存器发起写操作位数为第二写操作位数的数据写入操作之后,还包括:将所述状态寄存器的状态值由所述目标状态值复位为所述初始状态值。
在其中一个实施例中,所述获取所述第二数据写入操作对应的第二数据写入地址之后,还包括:获取预先设定的递增地址偏移量;在所述第二数据写入地址为基于所述第一数据写入地址与所述递增地址偏移量得到的地址的情况下,确定所述第二数据写入地址为与所述第一数据写入地址相匹配的递增地址。
在其中一个实施例中,获取所述第二数据写入操作对应的第二数据写入地址之后,还包括:在所述第二数据写入地址不是与所述第一数据写入地址相匹配的递增地址的情况下,触发错误中断信号,并将所述第一数据写入地址以及所述第二数据写入地址进行保存;所述错误中断信号停止向所述寄存器发起写操作位数为第二写操作位数的数据写入操作,保存的所述第一数据写入地址以及第二数据写入地址用于对异常数据写入操作进行定位。
在其中一个实施例中,所述获取所述第一数据写入操作对应的第一数据写入地址,以及第一待写入数据之后,还包括:响应于所述处理器发起的针对所述寄存器的数据读取操作,将所述数据读取操作直接发送至所述寄存器。
在其中一个实施例中,所述获取所述数据写入操作对应的写操作位数之后,还包括:在所述写操作位数为所述第二写操作位数的情况下,将所述数据写入操作直接发送至所述寄存器。
第二方面,本申请还提供了一种寄存器数据写入装置,应用于连接处理器与寄存器的读写保护模块,包括:
写操作位数获取模块,用于响应于所述处理器发起的针对所述寄存器的数据写入操作,获取所述数据写入操作对应的写操作位数;
第一地址获取模块,用于在所述写操作位数为第一写操作位数,并且所述数据写入操作为第一数据写入操作的情况下,获取所述第一数据写入操作对应的第一数据写入地址以及第一待写入数据;所述第一写操作位数为与所述寄存器的寄存器位数不相同的写操作位数;
第二地址获取模块,用于在所述写操作位数为所述第一写操作位数,并且所述数据写入操作为第二数据写入操作的情况下,获取所述第二数据写入操作对应的第二数据写入地址;
写入操作合并模块,用于在所述第二数据写入地址为与所述第一数据写入地址相匹配的递增地址的情况下,将所述第二数据写入操作对应的第二待写入数据与所述第一待写入数据进行合并,并根据合并后的待写入数据以及所述第一数据写入地址,向所述寄存器发起写操作位数为第二写操作位数的数据写入操作;所述第二写操作位数为与所述寄存器的寄存器位数相同的写操作位数。
第三方面,本申请还提供了一种读写保护模块,所述读写保护模块用于实现以下步骤:
响应于所述处理器发起的针对所述寄存器的数据写入操作,获取所述数据写入操作对应的写操作位数;
在所述写操作位数为第一写操作位数,并且所述数据写入操作为第一数据写入操作的情况下,获取所述第一数据写入操作对应的第一数据写入地址以及第一待写入数据;所述第一写操作位数为与所述寄存器的寄存器位数不相同的写操作位数;
在所述写操作位数为所述第一写操作位数,并且所述数据写入操作为第二数据写入操作的情况下,获取所述第二数据写入操作对应的第二数据写入地址;
在所述第二数据写入地址为与所述第一数据写入地址相匹配的递增地址的情况下,将所述第二数据写入操作对应的第二待写入数据与所述第一待写入数据进行合并,并根据合并后的待写入数据以及所述第一数据写入地址,向所述寄存器发起写操作位数为第二写操作位数的数据写入操作;所述第二写操作位数为与所述寄存器的寄存器位数相同的写操作位数。
第四方面,本申请还提供了一种电子设备,其包含如第三方面所述的读写保护模块。
上述寄存器数据写入方法、装置、读写保护模块和电子设备,通过连接处理器与寄存器的读写保护模块响应于处理器发起的针对寄存器的数据写入操作,获取数据写入操作对应的写操作位数;在写操作位数为第一写操作位数,并且数据写入操作为第一数据写入操作的情况下,获取第一数据写入操作对应的第一数据写入地址以及第一待写入数据;第一写操作位数为与寄存器的寄存器位数不相同的写操作位数;在写操作位数为第一写操作位数,并且数据写入操作为第二数据写入操作的情况下,获取第二数据写入操作对应的第二数据写入地址;在第二数据写入地址为与第一数据写入地址相匹配的递增地址的情况下,将第二数据写入操作对应的第二待写入数据与第一待写入数据进行合并,并根据合并后的待写入数据以及第一数据写入地址,向寄存器发起写操作位数为第二写操作位数的数据写入操作;第二写操作位数为与寄存器的寄存器位数相同的写操作位数。本申请可以通过连接处理器与寄存器的读写保护模块,在接收到处理器发起的数据写入操作时,如果写操作位数是与寄存器位数不相同的第一写操作位数,并且数据写入操作是第一数据写入操作时,可以得到该第一数据写入操作对应的第一数据写入地址以及第一待写入数据,而如果写操作位数是与寄存器位数不相同的第一写操作位数,并且数据写入操作是第二数据写入操作时,则可以得到第二数据写入操作对应的第二数据写入地址。之后还可以判断第二数据写入地址是否是与第一数据写入地址相匹配的递增地址,如果是则将两次数据写入操作进行合并,发出与寄存器的寄存器位数相同的第二写操作位数的数据写入操作,通过该方式可以确保只在第二数据写入地址是与第一数据写入地址相匹配的递增地址,才向寄存器发起数据写入操作,从而可以确保两次连续的写操作写入地址的准确性,从而提高数据写入的准确性。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中寄存器数据写入方法的应用环境图;
图2为一个实施例中寄存器数据写入方法的流程示意图;
图3为一个实施例中识别第一数据写入操作与第二数据写入操作的流程示意图;
图4为一个实施例中访问64位寄存器的读写保护方法的流程示意图;
图5为一个实施例中寄存器数据写入装置的结构框图;
图6为一个实施例中读写保护模块的内部结构图;
图7为一个实施例中电子设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
传统技术中,32位CPU访问64位寄存器方案可以是对寄存器采用直接访问的方式实现,例如可以是通过对两次连续的32位写操作进行拼接成64位写操作来实现,该操作通过发起两次连续的32位写操作,且地址递增4,然后在内部拼接成一次64位操作。上述连续写操作属于强制性的,并且如果第二次写入地址如果不和第一次写入地址匹配,即第二次写入地址不是递增4,或者读写交织,则会导致寄存器写入失败。例如,对一个64位寄存器地址0xf000写入数据0x1,32位CPU的只完成一次写操作:地址为0xf000写入数据0x1,虽然数据高位是全0,但是寄存器还是会等待第二次写操作,如果错误的第二次写入地址为0xf008,甚至第二次为读操作,则会导致写操作失败。
并且,在出现写操作失败后,软件会继续执行,但是后续功能异常,因此目前针对32位CPU写入64位寄存器数据的方法,数据写入的准确性较低,因此软件运行的稳定性较低。
针对此,本申请实施例提供的寄存器数据写入方法,可以应用于如图1所示的应用环境中。其中,读写保护模块102与处理器101以及位于寄存器103进行通信,寄存器103可以设置于与处理器101不相同的处理器104中。具体来说,在处理器101发起针对寄存器103的数据写入操作时,可以先由读写保护模块102得到该数据写入操作对应的写操作位数,如果写操作位数与寄存器103的寄存器位数不同,并且该数据写入操作为第一数据写入操作时,还可以得到第一数据写入操作对应的第一数据写入地址以及第一待写入数据。之后如果处理器101再次发起针对寄存器103的数据写入操作,读写保护模块102则可以判断该数据写入操作是否为第二数据写入操作,如果是则得到第二数据写入操作对应的第二数据写入地址,并判断第二数据写入地址是否为第一数据写入地址相匹配的递增地址,如果是则将第二数据写入操作对应的第二待写入数据与第一待写入数据进行合并,并基于合并后的待写入数据以及第一数据写入地址,向寄存器发起写操作位数与寄存器位数相同的第二写操作位数的数据写入操作。其中,读写保护模块102可以是各种用于对寄存器进行读写保护的芯片电路。
在一个实施例中,如图2所示,提供了一种寄存器数据写入方法,以该方法应用于图1中的读写保护模块102为例进行说明,包括以下步骤:
步骤S201,响应于处理器101发起的针对寄存器103的数据写入操作,获取数据写入操作对应的写操作位数。
其中,数据写入操作指的是处理器101触发的用于向寄存器103写入数据的操作,该寄存器103可以是64位POWER CORE配置寄存器,而处理器101则可以是32位CPU,即32位中央处理器,写操作位数则指的是数据写入操作的操作位数,例如32位CPU发起的数据写入操作,那么写操作位数则可以是32位。具体来说,当处理器101发起的针对寄存器103的数据写入操作时,该数据写入操作则可以输入至读写保护模块102,读写保护模块102则可以对该数据写入操作进行响应,来确定该数据写入操作对应的写操作位数。
步骤S202,在写操作位数为第一写操作位数,并且数据写入操作为第一数据写入操作的情况下,获取第一数据写入操作对应的第一数据写入地址以及第一待写入数据;第一写操作位数为与寄存器的寄存器位数不相同的写操作位数。
第一写操作位数指的是与寄存器位数不相同的写操作位数,例如寄存器位数为64位的情况下,第一写操作位数则可以是32位,即32位处理器101向64位寄存器103发起数据写入操作时,该写操作位数即满足第一写操作位数。并且发起的数据写入操作的次数可以是两次,第一数据写入操作则可以是两次数据写入操作中的第一次。而第一数据写入地址则指的是第一次数据写入操作的写入地址,第一待写入数据则指的是第一次数据写入操作中需要写入的数据。
具体来说,读写保护模块102在接收到数据写入操作时,则可以先判断该数据写入操作是否是与64位寄存器103的寄存器位数不相同的32位写入操作,以及该写入操作是否是第一次的数据写入操作,如果是,读写保护模块102则可以得到该数据写入操作对应的数据写入地址以及待写入数据,作为第一数据写入地址,以及第一待写入数据。
例如,在32位处理器101需要向64位寄存器103地址0xf000写入数据0x1234567890abcdef的情况下,需要连续触发两次32位写操作,分别是地址为0xf000写入数据0x90abcdef的第一次写操作,以及地址为0xf004写入数据0x12345678的第二次写操作。那么读写保护模块102接收到地址为0xf000写入数据0x90abcdef的第一次写操作时,则可以先对该操作进行响应,并且判断该操作是否满足第一次的32位写操作,由于此时满足上述条件,读写保护模块102则可以将0xf000作为第一数据写入地址,并且将0x90abcdef作为第一待写入数据。
步骤S203,在写操作位数为第一写操作位数,并且数据写入操作为第二数据写入操作的情况下,获取第二数据写入操作对应的第二数据写入地址。
而第二数据写入操作则可以是第二次的32位写入操作,第二数据写入地址则指的是第二数据写入操作对应的数据写入地址,处理器101完成第一次32位写操作的触发后,则需要再次触发第二次的32位写操作,以满足向64位寄存器103写入数据,此时如果读写保护模块102接收到32位写入操作,则可以判断出该写入操作为第二次的32位写入操作时,还可以将该写入操作对应的数据写入地址,作为第二数据写入地址。
例如,读写保护模块102将0xf000作为第一数据写入地址,并且将0x90abcdef作为第一待写入数据之后,如果再次接收到地址为0xf004写入数据0x12345678的第二次写操作,则读写保护模块102可以对数据写入操作进行响应,并判断该数据写入操作是否为第二次的32位写操作,如果是,那么读写保护模块102则可以将0xf004作为第二数据写入地址。
步骤S204,在第二数据写入地址为与第一数据写入地址相匹配的递增地址的情况下,将第二数据写入操作对应的第二待写入数据与第一待写入数据进行合并,并根据合并后的待写入数据以及第一数据写入地址,向寄存器发起写操作位数为第二写操作位数的数据写入操作;第二写操作位数为与寄存器的寄存器位数相同的写操作位数。
递增地址则指的是预先确定出的第二次数据写入操作应满足的地址,该递增地址和第一数据写入地址相匹配,读写保护模块102在得到的第一数据写入地址后,还可以基于上述第一数据写入地址,来确定出匹配的递增地址。之后则可以判断该递增地址是否和第二数据写入地址相同,如果相同,则可以将第二数据写入操作对应的待写入数据,即第二待写入数据与第一待写入数据进行合并,并根据合并后的待写入数据以及第一数据写入地址,向寄存器发起写操作位数为与寄存器位数相同的第二写操作位数的数据写入操作。
例如,在确定出第二数据写入地址为0xf004后,读写保护模块102则可以判断该地址是否满足第一数据写入地址相匹配的递增地址,由于第一数据写入地址为0xf000,此时满足连续两次写操作之间的地址递增4,因此第二数据写入地址满足递增地址,这时读写保护模块102则可以将第二待写入数据与第一待写入数据进行合并,即合并0x12345678以及0x90abcdef,得到合并后的待写入数据为0x1234567890abcdef,并且根据上述合并后的待写入数据,以及第一数据写入地址0xf000,向寄存器103发起地址0xf000写入数据0x1234567890abcdef的64位写操作,来实现将0x1234567890abcdef写入寄存器103中的地址0xf000。通过该方式即可确保数据写入64位寄存器103的准确性。
上述寄存器数据写入方法中,通过连接处理器101与寄存器103的读写保护模块102响应于处理器101发起的针对寄存器103的数据写入操作,获取数据写入操作对应的写操作位数;在写操作位数为第一写操作位数,并且数据写入操作为第一数据写入操作的情况下,获取第一数据写入操作对应的第一数据写入地址以及第一待写入数据;第一写操作位数为与寄存器103的寄存器位数不相同的写操作位数;在写操作位数为第一写操作位数,并且数据写入操作为第二数据写入操作的情况下,获取第二数据写入操作对应的第二数据写入地址;在第二数据写入地址为与第一数据写入地址相匹配的递增地址的情况下,将第二数据写入操作对应的第二待写入数据与第一待写入数据进行合并,并根据合并后的待写入数据以及第一数据写入地址,向寄存器103发起写操作位数为第二写操作位数的数据写入操作;第二写操作位数为与寄存器103的寄存器位数相同的写操作位数。本申请可以通过连接处理器101与寄存器103的读写保护模块102,在接收到处理器101发起的数据写入操作时,如果写操作位数是与寄存器位数不相同的第一写操作位数,并且数据写入操作是第一数据写入操作时,可以得到该第一数据写入操作对应的第一数据写入地址以及第一待写入数据,而如果写操作位数是与寄存器位数不相同的第一写操作位数,并且数据写入操作是第二数据写入操作时,则可以得到第二数据写入操作对应的第二数据写入地址。之后还可以判断第二数据写入地址是否是与第一数据写入地址相匹配的递增地址,如果是则将两次数据写入操作进行合并,发出与寄存器103的寄存器位数相同的第二写操作位数的数据写入操作,通过该方式可以确保只在第二数据写入地址是与第一数据写入地址相匹配的递增地址,才向寄存器103发起数据写入操作,从而可以确保两次连续的写操作写入地址的准确性,从而提高数据写入的准确性。
在一个实施例中,读写保护模块102中设置有状态寄存器;如图3所示,步骤S201之后,还可以包括:
步骤S301,在写操作位数为第一写操作位数的情况下,获取状态寄存器的状态值;
步骤S302,在状态值为初始状态值的情况下,将数据写入操作作为第一数据写入操作。
本实施例中,读写保护模块102中可以设置有状态寄存器,该状态寄存器可以用于记录处理器101发起的数据写入操作是第一数据写入操作,还是第二数据写入操作,并且状态寄存器的状态值包括初始状态下的状态值,即初始状态值0,以及初始状态切换后的状态值,即目标状态值1。在触发的是第一写操作位数的数据写入操作时,如果状态寄存器的状态值为初始状态值,则表示该数据写入操作为第一次的数据写入操作。
具体来说,如果接收到的数据写入操作的写操作位数是第一写操作位数,即32位的情况下,读写保护模块102则可以获取当前状态寄存器的状态值,如果状态值是初始状态值,则表明该数据写入操作为第一次的数据写入操作,即该数据写入操作为第一数据写入操作,此时会将该数据写入操作的第一数据写入地址以及第一待写入数据进行保存。
步骤S303,在状态值为目标状态值的情况下,将数据写入操作作为第二数据写入操作。
同理,如果当前状态寄存器的状态值为目标状态值,则表明该数据写入操作为第二次的数据写入操作,即该数据写入操作为第二数据写入操作,此时则会执行判断该数据写入操作对应的第二数据写入地址,是否是保存的第一数据写入地址相匹配的递增地址,只有第二数据写入地址是第一数据写入地址相匹配的递增地址的情况下,才执行向寄存器103发起写操作位数为第二写操作位数的数据写入操作的过程。
本实施例中,还可以在读写保护模块102中设置状态寄存器,通过状态寄存器当前的状态值,来判定处理器101发起的数据写入操作是第一次的数据写入操作还是第二次的数据写入操作,通过该方式可以确保读写保护模块102可以准确判断数据写入操作的次数,进一步提高寄存器数据写入的准确性。
另外,步骤S202之后,还可以包括:将状态寄存器的状态值由初始状态值切换为目标状态值;步骤S204之后,还可以包括:将状态寄存器的状态值由目标状态值复位为初始状态值。
本实施例中,为了确保状态寄存器中记录的状态值的准确性,在对第一次和第二次的数据写入操作进行响应后,还需要相应对状态寄存器中记录的状态值进行相应转换,以确保记录的状态值可以准确反映数据写入操作的次数。
具体来说,读写保护模块102在完成对第一数据写入操作的响应后,即完成第一数据写入操作对应的第一数据写入地址,以及第一待写入数据的获取后,还需要将状态寄存器的状态值,由表征第一次数据写入操作的初始状态值,切换成表征第二次数据写入操作的目标状态值,来确保下次再接收到数据写入操作时,可以通过目标状态值来表征下次的数据写入操作为第二次数据写入操作。同理,在完成对第二数据写入操作的响应后,即完成向寄存器103发起写操作位数为第二写操作位数的数据写入操作之后,还需要将状态寄存器的状态值,由表征第二次数据写入操作的目标状态值,切换成表征第一次数据写入操作的初始状态值,来确保下次再接收到数据写入操作时,可以通过目标状态值来表征下次的数据写入操作为第一次数据写入操作。
例如,状态寄存器最开始的状态值为初始状态值0,在接收到处理器101发起的数据写入操作后,由于当前状态寄存器的状态值为0,属于第一次的数据写入操作,读写保护模块102则可以获取第一数据写入操作对应的第一数据写入地址以及第一待写入数据,并且将状态寄存器的状态值设置为1。之后如果再次接收到处理器101发起的数据写入操作,由于此时状态寄存器的状态值已经设置为1,表明这次发起的数据写入操作为第二次数据写入操作,此时读写保护模块102则可以判断第二次数据写入操作的数据写入地址是否是第一数据写入地址相匹配的递增地址,如果是则执行将第二待写入数据与第一待写入数据合并,并根据合并后的数据以及第一数据写入地址,向寄存器103发起写操作位数为第二写操作位数的数据写入操作,并且再次将状态寄存器的状态值清零,来保证下次接收到数据写入操作是第一次的数据写入操作。
本实施例中,在对数据写入操作进行响应后,还可以调节状态寄存器存储的状态值,来确保读写保护模块102可以准确判断下次数据写入操作属于第一数据写入操作还是第二数据写入操作,通过该方式可以进一步提高数据写入操作判别的准确性。
另外,在一个实施例中,步骤S203之后,还可以包括:获取预先设定的递增地址偏移量;在第二数据写入地址为基于第一数据写入地址与递增地址偏移量得到的地址的情况下,确定第二数据写入地址为与第一数据写入地址相匹配的递增地址。
递增地址偏移量指的是第一数据写入地址相匹配的递增地址,与第一数据写入地址之间的地址偏移量,该地址偏移量为预先设定,例如对于64位POWER CORE配置寄存器而言,两次连续的32位写操作需要满足地址递增4的条件,在这种情况下递增地址偏移量则可以是4。因此,读写保护模块102在得到第二数据写入地址后,则可以判断第二数据写入地址是否是基于第一数据写入地址与递增地址偏移量得到的地址,如果是,则确定第二数据写入地址为与第一数据写入地址相匹配的递增地址。
例如,第二数据写入地址为0xf004,同时第一数据写入地址为0xf000,如果预先设定的递增地址偏移量为4,那么表明第二数据写入地址为基于第一数据写入地址与递增地址偏移量得到的地址,此时第二数据写入地址则是与第一数据写入地址相匹配的递增地址。
本实施例中,还可以通过预先设定递增地址偏移量,由读写保护模块102根据递增地址偏移量与第一数据写入地址,来判断第二数据写入地址是否是第一数据写入地址相匹配的递增地址,通过该方式可以提高第二数据写入地址判别的效率。
另外,获取第二数据写入操作对应的第二数据写入地址之后,还包括:在第二数据写入地址不是与第一数据写入地址相匹配的递增地址的情况下,触发错误中断信号,并将第一数据写入地址以及第二数据写入地址进行保存;错误中断信号停止向寄存器发起写操作位数为第二写操作位数的数据写入操作,保存的第一数据写入地址以及第二数据写入地址用于对异常数据写入操作进行定位。
而如果第二数据写入地址不是与第一数据写入地址相匹配的递增地址,例如第一次写操作的地址为0xf000,而第二次写操作的地址则是0xf008,在这种情况下,如果想寄存器103发起数据写入操作,则会造成数据写入寄存器103的写入错误,那么在这种情况下,读写保护模块102则可以触发错误中断信号,该信号可以用于停止向寄存器103发起数据写入操作,来避免后续功能的异常。同时,还可以记录第一数据写入地址以及第二数据写入地址,用于对该异常数据写入操作进行定位,例如可以是由软件的中断程序通过查询中断状态和错误地址数据寄存器读出不正确的软件操作,来实现异常写入操作的定位。
本实施例中,如果第二数据写入地址不是与第一数据写入地址相匹配的递增地址,读写保护模块102还可以触发错误中断信号,并保存错误写入的地址,通过该方式可以确保64位寄存器数据写入的准确性,从而提高软件运行的稳定性,并且还可以实现异常写入操作的定位分析。
在一个实施例中,步骤S202之后,还可以包括:响应于处理器发起的针对寄存器的数据读取操作,将数据读取操作直接发送至寄存器103。
在读写保护模块102接收到第一次的数据写入操作之后,由于此时读写保护模块102并未向寄存器103发起数据写入操作,而只是将第一数据写入操作对应的第一数据写入地址以及第一待写入数据进行获取并存储,在这种情况下,无论是否接收到第二次的数据写入操作,读写保护模块102都可以直接将数据读取操作发送至寄存器103。也就是说即使在两次32位写入操作之间插入读操作,通过读写保护模块102也可以有效避开读写交织的情况,而不会出现数据写入错误的问题。
例如,对一个64位寄存器地址0xf000写入数据0x1,此时触发的第一次操作为写操作,可以是地址为0xf000写入数据0x1第一数据写入操作, 第二次为读操作,读地址可以是0xf008,触发的第三次操作为写操作,即地址为0xf004写入数据0x0的第二数据写入操作,对于本实施例来说,读写保护模块102可以将第一次写操作保存,即保存第一数据写入地址为0xf000,同时第一待写入数据为0x1,此时不会向寄存器103发起数据写入操作,之后接收到读操作后,则可以将第二次的读操作直接发送到寄存器103,最后等到第三次写操作时,判断第二数据写入地址符合第一数据写入地址相匹配的递增地址,因此才会发出一个64位写操作,对地址0xf000写入数据0x1。
本实施例中,读写保护模块102接收到第一次的数据写入操作之后,由于在接收到第一数据写入操作时,读写保护模块102并不会向寄存器103发起数据写入操作,而是会等待第二数据写入操作后才执行该过程,因此读写保护模块102可以直接将接收到的数据读取操作发送到寄存器103,可见在这种情况下,即使在两次写入操作之间插入读操作,也不会出现数据写入错误的问题,从而进一步提高数据写入的准确性。
在一个实施例中,步骤S201之后,还可以包括:在写操作位数为第二写操作位数的情况下,将数据写入操作直接发送至寄存器。
本实施例中,连接读写保护模块102的处理器数量可以是多个,除了可以连接32位处理器,也可以连接64位处理器,此时写操作位数可以是与寄存器位数相同的第二写操作位数,即写操作位数是64位。在这种情况下,如果处理器101发起的数据写入操作为第二写操作位数的数据写入操作,即64位写操作时,由于64位写操作不会造成64位寄存器103的写入错误,因此读写保护模块102也可以将该数据写入操作直接发送至寄存器103,而不需要先对其进行保存,并等待第二次32位写操作。
本实施例中,如果处理器101针对寄存器103发起的数据写入操作的写操作位数与寄存器103的寄存器位数相同,读写保护模块102则可以将该数据写入操作发送至寄存器103,从而提高写操作位数为第二写操作位数的数据写入操作的执行效率。
在一个实施例中,还提供了一种针对CPU访问64位寄存器的读写保护方法,可通过对32位写操作做判断并保护,保存第一次写入地址,并且与第二次写入地址进行比较,判定失败后触发硬件错误中断达到立刻停止错误操作的软件流程。具体流程可如图4所示,包括以下步骤:
(1)进入寄存器写操作会判断是否为32位的写操作,如果是32位写操作,将会暂时保存本次写操作,不发到Power Core上,如果是读操作,可以立刻直通到Power Core,这样可以有效避开读写交织的情况。同样64位操作也会直通搭配Power core。
(2)如果为32位写操作,继续判断初始值为0的状态寄存器,如果为0表示为第一次写,更新状态寄存器值为1,并且将地址数据保存到寄存器,在下一次寄存器写操作时,判断状态寄存器值,如果为1,表示为第二次写入,判断写入地址为之前保存的写入地址加4,然后通过一个64位的写操作将两次32位写操作合并发出,并将寄存器状态复位为0,完成一个从32位到64位的保护写操作。如果地址比对失败,触发一个错误中断信号,表示这次写寄存器失败,中断程序可以立刻停止软件执行,并通过查询中断状态和错误地址数据寄存器读出不正确的软件操作。
例如,对一个64位寄存器地址0xf000写入数据0x1,可能会错误将这个寄存器作为32位寄存器操作,仅有一次写操作:地址为0xf000写入数据0x1, 紧跟的第二次写操作:地址为0xf008写入数据0x0,显然地址0xf000的写入不会成功,此时硬件可以立刻触发中断并通知软件进入中断处理程序,处理异常写入。
另外,对一个64位寄存器地址0xf000写入数据0x1,第一次写操作:地址为0xf000写入数据0x1, 第二次为读操作,例如读地址为0xf008,第三次为写操作:地址为0xf004写入数据0x0,通过本实施例,则可以对第一次写操作进行保存,第二次读操作可以直通,等到第三次写判断符合64位写入,会发出一个64位操作,对地址0xf000写入数据0x1。
通过本实施例,无需修改成熟POWER CORE的内部逻辑结构,也可以有效保护64位寄存器的写操作,避免死锁或者非法操作。同时可以随时进行读操作,不会影响到写操作。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的寄存器数据写入方法的寄存器数据写入装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个寄存器数据写入装置实施例中的具体限定可以参见上文中对于寄存器数据写入方法的限定,在此不再赘述。
在一个实施例中,如图5所示,提供了一种寄存器数据写入装置,应用于连接处理器与寄存器的读写保护模块,包括:写操作位数获取模块501、第一地址获取模块502、第二地址获取模块503和写入操作合并模块504,其中:
写操作位数获取模块501,用于响应于处理器发起的针对寄存器的数据写入操作,获取数据写入操作对应的写操作位数;
第一地址获取模块502,用于在写操作位数为第一写操作位数,并且数据写入操作为第一数据写入操作的情况下,获取第一数据写入操作对应的第一数据写入地址以及第一待写入数据;第一写操作位数为与寄存器的寄存器位数不相同的写操作位数;
第二地址获取模块503,用于在写操作位数为第一写操作位数,并且数据写入操作为第二数据写入操作的情况下,获取第二数据写入操作对应的第二数据写入地址;
写入操作合并模块504,用于在第二数据写入地址为与第一数据写入地址相匹配的递增地址的情况下,将第二数据写入操作对应的第二待写入数据与第一待写入数据进行合并,并根据合并后的待写入数据以及第一数据写入地址,向寄存器发起写操作位数为第二写操作位数的数据写入操作;第二写操作位数为与寄存器的寄存器位数相同的写操作位数。
在一个实施例中,读写保护模块中设置有状态寄存器;寄存器数据写入装置,还包括:写入操作识别模块,用于在写操作位数为第一写操作位数的情况下,获取状态寄存器的状态值;在状态值为初始状态值的情况下,将数据写入操作作为第一数据写入操作;在状态值为目标状态值的情况下,将数据写入操作作为第二数据写入操作。
在一个实施例中,第一地址获取模块502,还用于将状态寄存器的状态值由初始状态值切换为目标状态值;写入操作合并模块504,还用于将状态寄存器的状态值由目标状态值复位为初始状态值。
在一个实施例中,写入操作合并模块504,还用于获取预先设定的递增地址偏移量;在第二数据写入地址为基于第一数据写入地址与递增地址偏移量得到的地址的情况下,确定第二数据写入地址为与第一数据写入地址相匹配的递增地址。
在一个实施例中,写入操作合并模块504,还用于在第二数据写入地址不是与第一数据写入地址相匹配的递增地址的情况下,触发错误中断信号,并将第一数据写入地址以及第二数据写入地址进行保存;错误中断信号停止向寄存器发起写操作位数为第二写操作位数的数据写入操作,保存的第一数据写入地址以及第二数据写入地址用于对异常数据写入操作进行定位。
在一个实施例中,寄存器数据写入装置,还包括:读取操作直通模块,用于响应于处理器发起的针对寄存器的数据读取操作,将数据读取操作直接发送至寄存器。
在一个实施例中,寄存器数据写入装置,还包括:写入操作直通模块,用于在写操作位数为第二写操作位数的情况下,将数据写入操作直接发送至寄存器。
上述寄存器数据写入装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于读写保护模块中的处理器中,也可以以软件形式存储于读写保护模块中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种读写保护模块,该读写保护模块的内部结构图可以如图6所示。该读写保护模块可以包含有地址寄存器以及状态寄存器,地址寄存器可以用于存储第一数据写入地址与第二数据写入地址,状态寄存器则用于存储可表征数据写入操作为第一数据写入操作或者第二数据写入操作的目标状态值。该读写保护模块可以用于实现一种寄存器数据写入方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的读写保护模块的限定,具体的读写保护模块可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种电子设备,如图7所示,该电子设备可以包括如上任一项实施例所述的读写保护模块。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要符合相关规定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (10)

1.一种寄存器数据写入方法,其特征在于,应用于连接处理器与寄存器的读写保护模块,所述方法包括:
响应于所述处理器发起的针对所述寄存器的数据写入操作,获取所述数据写入操作对应的写操作位数;
在所述写操作位数为第一写操作位数,并且所述数据写入操作为第一数据写入操作的情况下,获取所述第一数据写入操作对应的第一数据写入地址以及第一待写入数据;所述第一写操作位数为与所述寄存器的寄存器位数不相同的写操作位数;
在所述写操作位数为所述第一写操作位数,并且所述数据写入操作为第二数据写入操作的情况下,获取所述第二数据写入操作对应的第二数据写入地址;
在所述第二数据写入地址为与所述第一数据写入地址相匹配的递增地址的情况下,将所述第二数据写入操作对应的第二待写入数据与所述第一待写入数据进行合并,并根据合并后的待写入数据以及所述第一数据写入地址,向所述寄存器发起写操作位数为第二写操作位数的数据写入操作;所述第二写操作位数为与所述寄存器的寄存器位数相同的写操作位数。
2.根据权利要求1所述的方法,其特征在于,所述读写保护模块中设置有状态寄存器;
所述获取所述数据写入操作对应的写操作位数之后,还包括:
在所述写操作位数为第一写操作位数的情况下,获取所述状态寄存器的状态值;
在所述状态值为初始状态值的情况下,将所述数据写入操作作为所述第一数据写入操作;
在所述状态值为目标状态值的情况下,将所述数据写入操作作为所述第二数据写入操作。
3.根据权利要求2所述的方法,其特征在于,所述获取所述第一数据写入操作对应的第一数据写入地址以及第一待写入数据之后,还包括:
将所述状态寄存器的状态值由所述初始状态值切换为所述目标状态值;
所述向所述寄存器发起写操作位数为第二写操作位数的数据写入操作之后,还包括:
将所述状态寄存器的状态值由所述目标状态值复位为所述初始状态值。
4.根据权利要求1所述的方法,其特征在于,所述获取所述第二数据写入操作对应的第二数据写入地址之后,还包括:
获取预先设定的递增地址偏移量;
在所述第二数据写入地址为基于所述第一数据写入地址与所述递增地址偏移量得到的地址的情况下,确定所述第二数据写入地址为与所述第一数据写入地址相匹配的递增地址。
5.根据权利要求4所述的方法,其特征在于,获取所述第二数据写入操作对应的第二数据写入地址之后,还包括:
在所述第二数据写入地址不是与所述第一数据写入地址相匹配的递增地址的情况下,触发错误中断信号,并将所述第一数据写入地址以及所述第二数据写入地址进行保存;所述错误中断信号停止向所述寄存器发起写操作位数为第二写操作位数的数据写入操作,保存的所述第一数据写入地址以及第二数据写入地址用于对异常数据写入操作进行定位。
6.根据权利要求1所述的方法,其特征在于,所述获取所述第一数据写入操作对应的第一数据写入地址,以及第一待写入数据之后,还包括:
响应于所述处理器发起的针对所述寄存器的数据读取操作,将所述数据读取操作直接发送至所述寄存器。
7.根据权利要求1所述的方法,其特征在于,所述获取所述数据写入操作对应的写操作位数之后,还包括:
在所述写操作位数为所述第二写操作位数的情况下,将所述数据写入操作直接发送至所述寄存器。
8.一种寄存器数据写入装置,其特征在于,应用于连接处理器与寄存器的读写保护模块,所述装置包括:
写操作位数获取模块,用于响应于所述处理器发起的针对所述寄存器的数据写入操作,获取所述数据写入操作对应的写操作位数;
第一地址获取模块,用于在所述写操作位数为第一写操作位数,并且所述数据写入操作为第一数据写入操作的情况下,获取所述第一数据写入操作对应的第一数据写入地址以及第一待写入数据;所述第一写操作位数为与所述寄存器的寄存器位数不相同的写操作位数;
第二地址获取模块,用于在所述写操作位数为所述第一写操作位数,并且所述数据写入操作为第二数据写入操作的情况下,获取所述第二数据写入操作对应的第二数据写入地址;
写入操作合并模块,用于在所述第二数据写入地址为与所述第一数据写入地址相匹配的递增地址的情况下,将所述第二数据写入操作对应的第二待写入数据与所述第一待写入数据进行合并,并根据合并后的待写入数据以及所述第一数据写入地址,向所述寄存器发起写操作位数为第二写操作位数的数据写入操作;所述第二写操作位数为与所述寄存器的寄存器位数相同的写操作位数。
9.一种读写保护模块,其特征在于,所述读写保护模块用于实现权利要求1至7中任一项所述的方法的步骤。
10.一种电子设备,其特征在于,所述电子设备包括如权利要求9所述的读写保护模块。
CN202410325330.1A 2024-03-20 2024-03-20 寄存器数据写入方法、装置、读写保护模块和电子设备 Pending CN118113350A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410325330.1A CN118113350A (zh) 2024-03-20 2024-03-20 寄存器数据写入方法、装置、读写保护模块和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410325330.1A CN118113350A (zh) 2024-03-20 2024-03-20 寄存器数据写入方法、装置、读写保护模块和电子设备

Publications (1)

Publication Number Publication Date
CN118113350A true CN118113350A (zh) 2024-05-31

Family

ID=91213898

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410325330.1A Pending CN118113350A (zh) 2024-03-20 2024-03-20 寄存器数据写入方法、装置、读写保护模块和电子设备

Country Status (1)

Country Link
CN (1) CN118113350A (zh)

Similar Documents

Publication Publication Date Title
US10824499B2 (en) Memory system architectures using a separate system control path or channel for processing error information
KR20070047336A (ko) 전력 손실 회복 메커니즘용 방법, 장치 및 시스템
CN110727597B (zh) 一种基于日志排查无效代码补全用例的方法
US7783918B2 (en) Data protection method of storage device
US20240143188A1 (en) Data processing method and apparatus, device, and readable storage medium
US8566689B2 (en) Data integrity units in nonvolatile memory
CN114327258B (zh) 一种固态硬盘处理方法、系统、设备及计算机存储介质
CN116974813B (zh) 寄存器数据管理方法、装置、寄存器模块、计算机设备
US9304854B2 (en) Semiconductor device and operating method thereof
CN118113350A (zh) 寄存器数据写入方法、装置、读写保护模块和电子设备
US11755514B2 (en) Transaction identification
CN109710445B (zh) 内存校正方法和电子设备
US10922023B2 (en) Method for accessing code SRAM and electronic device
US20230315302A1 (en) Complete And Fast Protection Against CID Conflict
WO2018040804A1 (zh) 一种存储器块处理方法、装置和计算机存储介质
WO2024087469A1 (zh) 存储器测试方法、测试电路及存储器
KR20170114991A (ko) 비휘발성 메모리를 이용한 로깅 방법
CN112181712B (zh) 一种提高处理器核可靠性的方法及装置
US20240184454A1 (en) Storage device and operating method of the same
CN110018968B (zh) 一种数据读取方法、电子设备及计算机存储介质
US10733046B2 (en) Transaction metadata
CN118116449A (zh) 芯片测试方法、装置、系统和计算机可读存储介质
CN117711475A (zh) 存储单元的故障检测电路及方法、功能芯片
CN116361233A (zh) 一种微控制器
CN116483634A (zh) 防止测试工序遗漏的内存条测试方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination