CN115048047A - 一种数据处理系统和方法 - Google Patents

一种数据处理系统和方法 Download PDF

Info

Publication number
CN115048047A
CN115048047A CN202210605402.9A CN202210605402A CN115048047A CN 115048047 A CN115048047 A CN 115048047A CN 202210605402 A CN202210605402 A CN 202210605402A CN 115048047 A CN115048047 A CN 115048047A
Authority
CN
China
Prior art keywords
data
target
register
memory area
target data
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
CN202210605402.9A
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.)
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Ant Blockchain Technology Shanghai 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 Ant Blockchain Technology Shanghai Co Ltd filed Critical Ant Blockchain Technology Shanghai Co Ltd
Priority to CN202210605402.9A priority Critical patent/CN115048047A/zh
Publication of CN115048047A publication Critical patent/CN115048047A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multi Processors (AREA)

Abstract

本说明书公开了一种数据处理系统和方法,本说明书实施例中当第一设备向第二设备发送目标数据时,第一设备从位于第一设备或第二设备的共享内存中确定出目标内存区,并将目标数据写入目标内存区以及更新寄存器中存储的第一设备对应的写指针。第二设备接收目标数据时,第二设备根据访问寄存器获取到的写指针以及第二设备对应的读指针,从目标内存区中读取目标数据,并对目标数据进行处理。在此方法中,由于读写寄存器的速度比访问共享内存的速度快,因此,第一设备和第二设备读写目标数据的整个过程速度快,耗时短,从而提高第一设备与第二设备之间的通信效率。

Description

一种数据处理系统和方法
技术领域
本说明书涉及计算机技术领域,尤其涉及一种数据处理系统和方法。
背景技术
在计算机领域中,可以通过访问共享内存使计算机的主机与外部设备间进行通信。而共享内存的访问可以包括:读写共享内存。其中,外部设备可以包括:智能卡。智能卡是一种PCI设备,比如:FPGA卡。
以智能卡为例,现有技术中,针对主机和智能卡之间的同一共享内存,主机和智能卡可以分别管理同一共享内存中的部分内存。在同一共享内存位于智能卡的情况下,当主机向智能卡发送数据时,主机可以通过直接存储器器访问(Direct Memory Access,DMA)方式向主机管理的部分内存中写入数据,然后,将写入数据的内存空间的地址通过DMA方式写入共享内存中的共享请求区,并更新共享请求区的指针。智能卡根据更新后的共享请求区的指针以及共享请求区内的写入数据的内存地址,获取主机写入的数据。智能卡读取数据并处理之后,将待回收的内存地址写入共享内存中的待回收区,并更新待回收区的指针通知主机回收内存空间。在主机回收内存空间时,主机通过DMA方式从待回收区读取待回收的内存地址,并对待回收的内存地址对应的内存空间进行回收。
然而,现有技术中主机与外部设备进行通信时访问共享内存的过程复杂,数据的读写和内存空间的回收所耗费的总时间比较长,这样造成主机与外部设备之间的通信效率低。
发明内容
本说明书实施例提供一种数据处理系统和方法,以部分解决上述现有技术存在的问题。
本说明书实施例采用下述技术方案:
本说明书提供的一种数据处理系统,所述系统包括:第一设备和第二设备,所述第一设备或所述第二设备中设有共享内存,所述第一设备或所述第二设备中设有寄存器;
所述第一设备,在向所述第二设备发送目标数据时,从所述共享内存中确定出目标内存区,并将所述目标数据写入所述目标内存区,以及更新寄存器中存储的所述第一设备对应的写指针;
所述第二设备,在接收所述第一设备发送的所述目标数据时,所述第二设备访问寄存器,并根据访问寄存器获取到的所述写指针以及所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理。
可选地,在对所述目标数据进行处理之后,所述第二设备更新所述寄存器中存储的所述第二设备对应的读指针,以释放所述目标内存区。
可选地,所述寄存器至少包括:存储有第一设备对应的写指针的写指针寄存器、存储有第二设备对应的读指针的读指针寄存器;
所述第一设备,更新所述写指针寄存器中存储的所述第一设备对应的写指针;
所述第二设备,在接收所述第一设备发送的所述目标数据时,所述第二设备访问所述写指针寄存器和所述读指针寄存器,并根据访问所述写指针寄存器获取到的所述写指针以及访问所述读指针寄存器获取到的所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理。
可选地,所述共享内存至少包括:所述第一设备的写内存区、所述第一设备的读内存区、所述第二设备的写内存区、所述第二设备的读内存区,其中,所述第一设备的写内存区与所述第二设备的读内存区相同,所述第一设备的读内存区与所述第二设备的写内存区相同。
可选地,所述第二设备在读取完所述目标数据中的部分数据后,确定读取所述部分数据后的结束位置,并在确定继续读取所述目标数据时,根据所述结束位置,读取所述目标数据中的剩余数据。
可选地,所述寄存器包括:数据长度寄存器;在所述目标内存区中存储所述目标数据的数据结构中记录有所述第一设备存储的下一数据的数据长度;
当所述第一设备写入所述目标数据后所述目标内存区由空变为非空时,所述第一设备将所述目标数据的数据长度写入所述数据长度寄存器;
所述第二设备访问所述数据长度寄存器,并基于所述数据长度寄存器中所述目标数据的数据长度,从所述目标内存区中读取所述目标数据,并从所述数据结构中预读所述下一数据的数据长度,以使在所述第一设备向所述目标内存区写入所述下一数据后,根据预读的下一数据的数据长度,从所述目标内存区中读取所述下一数据。
可选地,当所述第二设备确定所述目标内存区重新为空时,所述第二设备删除所述数据长度寄存器中已存储的数据长度。
可选地,在所述第一设备向所述目标内存区写入所述目标数据之前,所述第一设备将所述目标内存区中位于目标数据体首尾的数据状态标识设置为无效值,所述目标数据体用于写入所述目标数据;
在所述第一设备将所述目标数据写入所述目标数据体的开始时,所述第一设备将位于所述目标数据体首部的数据状态标识设置为有效值,在所述第一设备将所述目标数据完全写入所述目标数据体时,所述第一设备将位于所述目标数据体尾部的数据状态标识设置为有效值。
可选地,当所述第一设备为区块链一体机中的主机时,所述第二设备为部署于所述区块链一体机上的智能卡;所述目标数据包括区块链客户端发送给所述主机的交易数据。
本说明书提供的一种数据处理方法,包括:
第一设备从位于所述第一设备或第二设备的共享内存中确定出目标内存区;
将第一设备发送给所述第二设备的目标数据写入所述目标内存区,并更新寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问寄存器获取到的所述写指针以及所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理;其中,所述寄存器位于所述第一设备或第二设备。
可选地所述寄存器至少包括:存储有第一设备对应的写指针的写指针寄存器、存储有第二设备对应的读指针的读指针寄存器;
更新寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问寄存器获取到的所述写指针以及所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理,具体包括:
更新所述写指针寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问所述写指针寄存器获取到的所述写指针以及访问所述读指针寄存器获取到的所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理。
可选地,所述寄存器包括:数据长度寄存器,所述方法还包括:
当所述第一设备写入所述目标数据后所述目标内存区由空变为非空时,所述第一设备将所述目标数据的数据长度写入所述数据长度寄存器,以使所述第二设备访问所述数据长度寄存器,并基于所述数据长度寄存器中所述目标数据的数据长度,从所述目标内存区中读取所述目标数据,并从所述目标内存区中存储所述目标数据的数据结构中预读下一数据的数据长度,以在所述第一设备向所述目标内存区写入所述下一数据后,根据预读的下一数据的数据长度,从所述目标内存区中读取所述下一数据。
可选地,在将第一设备发送给所述第二设备的目标数据写入所述目标内存区之前,所述方法还包括:
所述第一设备将所述目标内存区中位于目标数据体首尾的数据状态标识设置为无效值,所述目标数据体用于写入所述目标数据。
可选地,所述方法还包括:
在所述第一设备将所述目标数据写入所述目标数据体的开始时,所述第一设备将位于所述目标数据体首部的数据状态标识设置为有效值,在所述第一设备将所述目标数据完全写入所述目标数据体时,所述第一设备将位于所述目标数据体尾部的数据状态标识设置为有效值。
本说明书提供一种数据处理方法,所述方法包括:
第二设备访问寄存器;
根据访问寄存器获取到的第一设备对应的写指针以及所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理,其中,所述第二设备访问的寄存器位于所述第一设备或所述第二设备,所述目标内存区是由位于所述第一设备或所述第二设备的共享内存中确定出的,所述获取到的第一设备对应的写指针是第一设备将所述目标数据写入所述目标内存区之后所更新得到的。
可选地,所述方法还包括:
在所述第二设备读取并处理完所述目标数据之后,所述第二设备更新所述第二设备对应的读指针,以释放所述目标内存区。
可选地,所述寄存器至少包括:存储有第一设备对应的写指针的写指针寄存器、存储有第二设备对应的读指针的读指针寄存器;
第二设备访问寄存器,具体包括:
第二设备访问所述写指针寄存器和所述读指针寄存器;
根据访问寄存器获取到的第一设备对应的写指针以及所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理,具体包括:
根据访问所述写指针寄存器获取到的第一设备对应的写指针以及访问所述读指针寄存器获取到的所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理。
可选地,从目标内存区中读取所述第一设备发送的目标数据,具体包括:
所述第二设备在读取完所述目标数据中的部分数据后,确定读取所述部分数据后的结束位置,并在确定继续读取所述目标数据时,根据所述结束位置,读取所述目标数据中的剩余数据。
可选地,所述寄存器包括:数据长度寄存器;
从目标内存区中读取所述第一设备发送的目标数据,具体包括:
所述第二设备访问所述数据长度寄存器,并基于所述数据长度寄存器中所述目标数据的数据长度,从所述目标内存区中读取所述目标数据,并从所述目标内存区中存储所述目标数据的数据结构中预读下一数据的数据长度,以在所述第一设备向所述目标内存区写入所述下一数据后,根据预读的下一数据的数据长度,从所述目标内存区中读取所述下一数据;其中,所述数据长度寄存器中所述目标数据的数据长度是当所述第一设备写入所述目标数据后所述目标内存区由空变为非空时,所述第一设备将所述目标数据的数据长度写入所述数据长度寄存器后所得到的。
可选地,所述方法还包括:
当所述第二设备确定所述目标内存区重新为空时,所述第二设备删除所述数据长度寄存器中已存储的数据长度。
本说明书提供的一种数据处理装置,包括:
确定内存区模块,用于第一设备从位于所述第一设备或第二设备的共享内存中确定出目标内存区;
数据处理模块,用于将第一设备发送给所述第二设备的目标数据写入所述目标内存区,并更新寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问寄存器获取到的所述写指针以及所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理;其中,所述寄存器位于所述第一设备或第二设备。
本说明书提供的一种数据处理装置,包括:
访问模块,用于第二设备访问寄存器;
数据处理模块,用于根据访问寄存器获取到的第一设备对应的写指针以及所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理,其中,所述第二设备访问的寄存器位于所述第一设备或所述第二设备,所述目标内存区是由位于所述第一设备或所述第二设备的共享内存中确定出的,所述获取到的第一设备对应的写指针是第一设备将所述目标数据写入所述目标内存区之后所更新得到的。
本说明书提供的一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据处理方法。
本说明书提供的一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的数据处理方法。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
本说明书实施例中当第一设备向第二设备发送目标数据时,第一设备从位于第一设备或第二设备的共享内存中确定出目标内存区,并将目标数据写入目标内存区以及更新寄存器中存储的第一设备对应的写指针。第二设备接收目标数据时,第二设备根据访问寄存器获取到的写指针以及第二设备对应的读指针,从目标内存区中读取目标数据,并对目标数据进行处理。在此方法中,由于读写寄存器的速度比访问共享内存的速度快,因此,与现有技术相比,第一设备和第二设备读写目标数据的整个过程速度快,耗时短,从而提高第一设备与第二设备之间的通信效率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书实施例提供的数据处理系统的流程示意图;
图2为本说明书实施例提供的划分共享内存的示意图;
图3a~图3c为本说明书实施例提供的读写目标数据的示意图;
图4为本说明书实施例提供的接收设备从下一读取位置读取目标消息的示意图;
图5a~图5b为本说明书实施例提供的第一设备设置消息状态标识的示意图;
图6为本说明书实施例提供的一种数据处理方法的流程示意图;
图7为本说明书实施例提供的另一种数据处理方法的流程示意图;
图8为本说明书实施例提供的一种数据处理装置的结构示意图;
图9为本说明书实施例提供的另一种数据处理装置的结构示意图;
图10为本说明书实施例提供的电子设备的结构示意图。
具体实施方式
在一些指定场景中,计算机的主机需要借助外部设备来执行某些指定业务。这种情况下,主机需要与外部设备进行通信。其中,诸如智能卡之类的外部设备上可以运行指定功能的软件,并这些软件一般可以通过共享内存与主机进行通信。另外,共享内存可以位于主机中,也可以位于外部设备中。不管是主机还是外部设备都可以通过直接存储器访问(Direct Memory Access,DMA)方式访问不在自身内部的共享内存,当共享内存在自身内部时,不需要通过DMA方式访问。
比如:在区块链一体机中,主要由部署于区块链一体机上的智能卡负责执行隐私交易,以保证交易的保密性。其中,部署于区块一体机上的智能卡可以是现场可编程门阵列(Field Programmable Gate Array,FPGA)卡。当主机接收到区块链客户端提交的加密的交易数据时,主机通过访问位于主机或FPGA卡的共享内存,将加密的交易数据写入共享内存中,FPGA卡读取共享内存中的加密的交易数据,并根据读取到的加密的交易数据,对交易数据进行解密,得到解密后的交易信息,对交易信息进行处理,并将处理结果写入共享内存中,以向主机返回处理结果,主机根据返回的处理结果进行记账。
当交易数据为转账数据时,智能卡通过共享内存中读取到加密的交易数据之后,采用私钥对加密的交易数据进行解密,得到转账信息。然后,智能卡根据转账信息中的账户名称以及转账金额,对交易双方的账户中的余额进行同步。最后,将余额同步后的账户信息进行加密,得到账户信息密文,并将账户信息密文写入共享内存中,以使主机从共享内存中读取账户信息密文,并基于账户信息密文进行记账,以更新区块链的世界状态。
基于上述访问共享内存的场景,现有技术中,当主机与智能卡进行通信时,若共享内存位于智能卡,且共享内存其中一部分内存由主机进行管理,另一部分由智能卡进行管理,主机向智能卡发送加密的交易数据时,主机通过DMA方式将加密的交易数据写入主机管理的内存中,并通过DMA方式将写有加密的交易数据的内存地址写入共享请求区,并修改共享请求区的指针。智能卡先在共享请求区读取内存地址,再读取内存地址对应的内存空间中的加密的交易数据,最后,将读取完交易数据的内存对应的内存地址写入共享内存中的待回收区,并修改待回收区的指针。主机回收内存空间时,通过DMA方式从待回收区中读取内存地址,并通过修改待回收区的指针,对内存地址对应的内存空间进行收回。
现有技术中,主机向智能卡发送加密的交易数据,通过两次DMA方式访问共享内存,主机回收内存空间时,通过一次DMA方式访问共享内存,又因为通过DMA方式访问共享内存的速度比较慢,所以主机与智能卡之间的通信过程复杂且耗时长,从而降低了主机和智能卡之间的通信效率。
而在本说明书中主要是采用环形缓冲区的共享内存以及存储有读写指针的寄存器来实现共享内存的访问。基于上述访问共享内存的场景,若共享内存位于智能卡,当主机向智能卡发送加密的交易数据时,主机通过DMA方式将加密的交易数据写入共享内存中,并更新寄存器中主机对应的写指针。智能卡根据寄存器中主机对应的写指针以及寄存器中智能卡对应的读指针,读取并处理共享内存中的加密的交易数据,并更新寄存器中智能卡对应的读指针,以回收写入加密的交易数据的内存空间。
本说明书中主机与智能卡进行通信时只通过一次DMA方式访问共享内存,相较于现有技术而言,本说明书中采用的访问共享内存的过程更简单,而且访问寄存器的速度比通过DMA方式访问共享内存的速度快,导致本说明书中读写指针的速度比现有技术中通过DMA方式访问共享内存修改读写指针的速度快,因此,本说明书中完成一次读写数据所耗费的总时间较短,从而提高了主机与智能卡之间的通信效率。
需要说明的是,设备的不同通信机制的访问速度从快到慢依次为:设备访问本地内存的速度、设备访问寄存器的速度、设备通过DMA方式访问共享内存的速度。
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书实施例提供的数据处理系统流程示意图。
在图1中,数据处理系统可以包括第一设备和第二设备。第一设备可以是发送数据的发送设备或接收数据的接收设备。同样的,第二设备可以是发送数据的发送设备或接收数据的接收设备。其中,第一设备可以是计算机的主机,也可以是主机之外的外部设备。同样的,第二设备可以是计算机的主机,也可以是主机之外的外部设备。其中,外部设备可以是PCI设备,比如:智能卡。智能卡可以包括:FPGA卡。
另外,第一设备与第二设备可以通过共享内存进行通信,以第一设备向第二设备发送数据为例,第一设备发送数据是指第一设备向共享内存中写入数据,第二设备接收数据是指第二设备从共享内存中读取数据并处理读取的数据。
在本说明书实施例中,共享内存可以位于第一设备中,也可以位于第二设备中。共享内存可以采用环形缓冲区的数据结构来存放数据,并且可以由寄存器内的读写指针指示环形缓冲区中的读写数据时的内存地址。
同样,寄存器可以设置于第一设备中,也可以设置于第二设备中,寄存器可以是多个,且每个寄存器可以是物理寄存器,也可以是虚拟寄存器。另外,寄存器可以是第一设备和第二设备均能够访问的寄存器。
当寄存器为多个时,位于第一设备或第二设备的寄存器可以包括:写指针寄存器、读指针寄存器、数据长度寄存器。写指针寄存器可以包括:存储有第一设备对应的写指针的写指针寄存器和存储有第二设备对应的写指针的写指针寄存器。读指针寄存器可以包括:存储有第一设备对应的读指针的读指针寄存器和存储有第二设备对应的读指针的读指针寄存器。其中,写指针可以指示待写入数据的内存地址,读指针可以指示已写入数据的内存地址或指示未处理数据的内存地址。数据长度寄存器可以包括:第一设备写入数据时所对应的数据长度寄存器和第二设备写入数据时所对应的数据长度寄存器。其中,数据长度寄存器可以存储数据内容的起始位置与数据内容的结束位置之间所占用的内存大小、存储数据内容的起始位置对应的内存地址、存储数据内容结束位置对应的内存地址,其中,内存大小可以表示为字节或比特位。
为了让系统中第一设备和第二设备同时通信时可以不相互冲突,可以根据第一设备和第二设备之间的数据传输方向,将共享内存分为多个内存区。其中,共享内存的内存区至少包括:第一设备的写内存区、第一设备的读内存区、第二设备的写内存区、第二设备的读内存区,其中,第一设备的写内存区与第二设备的读内存区相同,第一设备的读内存区与第二设备的写内存区相同。也就是,基于第一设备与第二设备之间的两个数据传输方向,将共享内存可以分为两个内存区。针对每个内存区,第一设备或第二设备只能在该内存区内读数据或写数据,不能同时读写数据。另外,共享内存中的每个内存区可以采用环形缓冲区的数据结构来存放数据。
将共享内存划分为多个内存区的示意图,如图2所示。
在图2中,将共享内存分为两个内存区,分别为内存区1和内存区2。内存区1对应第一设备向第二设备发送数据的情况,内存区1是第一设备的写内存区和第二设备的读内存区;内存区2对应第二设备向第一设备发送数据的情况,内存区2是第二设备的写内存区和第一设备的读内存区。
此外,共享内存中目标内存区的环形缓冲区的数据结构至少包括:数据体。数据体可以是共享内存的目标内存区中用于存储数据的数据结构。目标内存区中包含多个数据体,每个数据体对应用于存储一个数据的内存空间。其中,数据体可以包括:数据体长度、数据体正文,数据体长度用于存储数据的数据长度,数据体正文可以用于存储数据内容。数据体所占用的内存大小可以是固定的。
另外,在共享内存中目标内存区内存储数据时,可以是连续存储数据,也可以不连续存储数据。
接下来,以第一设备向第二设备发送数据为例,对第一设备与第二设备之间的通信进行说明。
当第一设备向第二设备发送目标数据时,第一设备从共享内存中确定出目标内存区,然后,将目标数据写入目标内存区,以及更新寄存器中存储的第一设备对应的写指针。
其中,目标数据可以是第一设备与第二设备执行业务时所涉及的数据,比如区块链客户端产生的交易数据。目标内存区可以由第一设备与第二设备之间的数据传输方向确定。当第一设备为发送设备,第二设备为接收设备时,可以将第一设备对应的写内存区和第二设备对应的读内存区作为目标内存区,当第一设备为接收设备,第二设备为发送设备时,可以将第一设备对应的读内存区和第二设备对应的写内存区作为目标内存区。
在将目标数据写入目标内存区时,第一设备还可以访问寄存器中存储的第一设备对应的写指针以及第二设备对应的读指针,从目标内存区中确定出写入目标数据的内存空间,作为目标内存空间,以及确定目标内存空间中的数据体,并将目标数据写入数据体中。
为了提高第一设备写入数据的速度,第一设备可以将第一设备对应的写指针和第二设备对应的读指针进行本地缓存。这样,在将目标数据写入目标内存区时,第一设备可以根据预先缓存的第一设备对应的写指针以及预先缓存的第二设备对应的读指针,判断目标内存区中是否存在能够写入目标数据的内存空间,若存在,可以根据预先缓存的第一设备对应的写指针以及预先缓存的第二设备对应的读指针,从目标内存区中确定出写入目标数据的内存空间,作为目标内存空间,以及确定目标内存空间中的数据体,并将目标数据写入数据体中。若不存在,第一设备可以访问存储有第二设备对应的读指针的读指针寄存器,获取最新的第二设备对应的读指针。然后,根据预先缓存的第一设备对应的写指针以及最新的第二设备对应的读指针,从目标内存区中确定出写入目标数据的内存空间,作为目标内存空间,以及确定目标内存空间中的数据体,并将目标数据写入数据体中。
在更新寄存器内存储的第一设备对应的写指针时,第一设备可以根据目标数据的数据长度,确定第一设备向共享内存的目标内存区写入目标数据后第一设备对应的写指针所指示的内存地址,并将第一设备对应的写指针由当前指示的内存地址修改为第一设备写入目标数据后的内存地址。其中,数据长度可以表示数据内容的起始位置与数据内容的结束位置之间所占用的内存大小。
另外,第一设备在更新写指针寄存器中的第一设备对应的写指针之后,可以对更新后的第一设备对应的写指针进行本地缓存。同时,第一设备可以访问存储有第二设备对应的读指针的读指针寄存器,获取第二设备对应的读指针,并进行本地缓存。
第二设备接收第一设备发送的目标数据时,第二设备可以先访问寄存器,并根据访问寄存器获取到的更新后的第一设备对应的写指针以及第二设备对应的读指针,从目标内存区中读取第一设备写入的目标数据,并对读取到的目标数据进行处理。在对目标数据处理之后,第二设备可以更新第二设备对应的读指针,以释放目标内存区中写入目标数据的内存空间。其中,更新第二设备对应的读指针可以是指第二设备将第二设备对应的读指针由当前指示的内存地址修改为读取处理完目标数据后下一已写入数据的内存地址。
具体的,在第二设备接收第一设备发送的目标数据时,第二设备访问存储有第一设备对应的写指针的写指针寄存器和存储有第二设备对应的读指针的读指针寄存器,并根据访问写指针寄存器获取到的第一设备对应的写指针以及访问读指针寄存器获取到的第二设备对应的读指针,从目标内存区中读取目标数据,并对目标数据进行处理。
另外,在第二设备接收第一设备发送的目标数据时,第二设备访问存储有第一设备对应的写指针的写指针寄存器,并根据访问写指针寄存器获取到的第一设备对应的写指针以及预先缓存的第二设备对应的读指针,从目标内存区中读取目标数据。
第二设备在对读指针寄存器中的第二设备对应的读指针进行更新后,可以将更新后的第二设备对应的读指针进行缓存。同时,第二设备可以访问写指针寄存器中存储的第一设备对应的写指针,并获取第一设备对应的写指针,并进行本地缓存。
此外,在第一设备缓存第一设备对应的写指针和第二设备对应的读指针的情况下,第一设备再一次向第二设备发送下一数据时,第一设备可以根据缓存第一设备对应的写指针以及缓存的第二设备对应的读指针,确定目标内存区中可以写入下一数据的内存空间,作为下一内存空间。然后,将下一数据写入目标内存区中的下一内存空间,并更新写指针寄存器中存储的第一设备对应的写指针,并缓存更新后的第一设备对应的写指针。
在第二设备缓存第一设备对应的写指针和第二设备对应的读指针的情况下,第二设备接收下一数据时,第二设备可以根据缓存的第二设备对应的读指针以及缓存的第一设备对应的写指针,从目标内存区中的下一内存空间中读取下一数据,并更新读指针寄存器中第二设备对应的读指针,并缓存更新后的第二设备对应的读指针。
基于上述对第一设备向共享内存中的目标内存区写入目标数据和第二设备从共享内存的目标内存区中读取目标数据的描述,本说明书实施例中提供读写目标数据的示意图,如图3a~图3c所示。在图3a~图3c中,图3a表示目标内存区是一个环形缓冲区,并且目标内存区没有任何数据写入,即,第一设备对应的写指针与第二设备对应的读指针所指向的内存地址相同。图3b表示第一设备写入目标数据,图3c表示第二设备读取并处理目标数据。
在图3a中,第一设备对应的写指针与第二设备对应的读指针都指向A位置的内存地址。
在图3b中,第一设备若向目标内存区写入数据长度为30个字节的目标数据后,第一设备对应的写指针由A位置移动到B位置。第二设备对应的读指针依旧指向A位置的内存地址。其中,图3b中的阴影区域是指目标内存区中写入数据且未处理的内存空间。
在图3c中,第二设备若读取并处理目标数据后,第二设备对应的读指针由A位置移动到B位置。
在本说明书实施例中,在第二设备读取目标数据的过程中,第二设备在读取完目标数据中的部分数据后,确定读取部分数据后的结束位置,并在确定继续读取目标数据时,根据结束位置,读取目标数据中的剩余数据,而不是从读指针指示的内存地址继续读取目标数据。其中,存在第二设备读取完目标数据中的部分数据的情况有:第二设备未按照指定顺序读取目标数据、处理目标数据时需要先处理目标数据中的部分数据。另外,指定顺序可以是先进先出顺序。
具体的,可以根据结束位置,确定下一读取位置,并基于下一读取位置,读取目标数据中的剩余数据。
比如:第二设备在处理数据时,可能将目标数据中部分数据与上一数据一起进行处理,并且未缓存整个目标数据,这种情况下,第二设备需要根据目标数据中已处理的部分数据后的结束位置(即,实际结束的内存地址),确定目标数据的下一读取位置。在第二设备需要处理目标数据中剩余数据时,从下一读取位置继续读取目标数据中的剩余数据,并处理剩余数据。如图4所示。
在图4中,目标内存区是一个环形缓冲区,第二设备的读指针指向环形缓冲区中的C位置的内存地址,C位置与D位置之间写入了相对于目标数据的上一数据,D位置与E位置之间写入了目标数据,第一设备对应的写指针指向E位置的内存地址。若第二设备将D位置与E位置之间的目标数据中的部分数据(即,D位置与F位置之间的数据)与上一数据一起处理后,第二设备对应的读指针应该指向D位置,因为目标数据中还有剩余的数据未处理。另外,第二设备可以根据目标数据中已处理的数据的结束位置(即,F位置),将目标数据中未处理的数据(即,阴影区域)的起始位置作为下一读取位置,继续读取目标数据中剩余的数据。其中,图4中的阴影区域是指目标内存区中写入数据且未处理的内存空间。
在本说明书实施例中,在第一设备连续存储数据的情况下,为了提高第二设备读取目标数据的效率,第二设备可以在读取目标数据时可以获取目标数据之后的下一数据的数据长度,并缓存下一数据的数据长度。这样,当第二设备读取下一数据时,可以直接读取下一数据内容,不需要在读取下一数据时先读取下一数据长度,再读取下一数据内容。
当目标内存区在写入目标数据之前为空时,第二设备并未缓存上一次获取到的下一数据长度。这种情况,在第一设备将目标数据写入目标内存区后,目标内存区由空变为非空时,第一设备可以将目标数据的数据长度写入第一设备发送数据时所对应的数据长度寄存器中。在第二设备读取目标数据时,第二设备访问数据长度寄存器,基于数据长度寄存器中目标数据的数据长度,从目标内存区中读取目标数据。同时,第一设备在向目标内存区写入下一数据的过程中,第一设备先向目标内存区的数据结构中的下一数据体长度中写入下一数据的数据长度,再向目标内存区的数据结构中的下一数据体正文中写入下一数据。所以,在目标内存区中存储目标数据的数据结构中记录有第一设备存储的下一数据的数据长度。这样,第二设备在读取完目标数据之后,可以从目标内存区中存储目标数据的数据结构中预读下一数据的数据长度,并缓存下一数据的数据长度。在第一设备向目标内存区写入下一数据后,当第二设备读取下一数据时,可以根据预读的下一数据的数据长度,从目标内存区中直接读取下一数据内容,并缓存预读的下下个数据的数据长度,以根据预读的下下个数据的数据长度,对本地缓存的下一数据的数据长度进行更新。
另外,为了提高第二设备获取下一数据的数据长度的速度,第一设备在向目标内存区写入下一数据的数据长度的过程中,第一设备还可以将下一数据的数据长度更新至数据长度寄存器中,第二设备可以通过访问数据长度寄存器获取下一数据的数据长度。
当第二设备无法通过预读的方式获取有效的数据长度时,第二设备确定目标内存区重新为空。当第二设备确定目标内存区重新为空时,第二设备将第二设备对应的读指针更新为目标内存区中最后一个数据结束位置时的内存地址。此时,第一设备对应的写指针与第二设备对应的读指针相同。这样,第二设备通过更新第二设备对应的读指针可以间接通知第一设备目标内存区已空且可以向目标内存区重新写入数据的信息。
另外,第二设备通知第一设备向目标内存区重新写入数据的方式还可以是:当第二设备确定目标内存区重新为空时,第二设备删除据长度寄存器中已存储的数据长度,即,将数据长度寄存器中的数值设置为无效值。第二设备删除据长度寄存器中已存储的数据长度可以在更新第二设备对应的读指针之后,也可以是在更新第二设备对应的读指针之前。其中,数据长度寄存器中已存储的数据长度可能是目标数据的数据长度,也可能是目标内存区中写入的最后一个数据的数据长度。即,若第二设备实时将写入目标内存区的数据的数据长度更新至数据长度寄存器时,第二设备可以删除数据长度寄存器中最新的数据的数据长度。
第一设备可以通过访问读指针寄存器中存储的第二设备对应的读指针以及第一设备预先缓存的第一设备对应的写指针,判断目标内存区是否重新为空。若目标内存区重新为空,向数据长度寄存器中重新写入新数据的数据长度,并向目标内存区中重新写入新数据。若目标内存区不为空,不需要向数据长度寄存器中重新写入新数据的数据长度。
另外,第一设备访问(可以是轮询的方式访问)数据长度寄存器后,第一设备若监测到数据长度寄存器中存在有效的数据长度,第一设备不需要向数据长度寄存器重新写入新的数据长度;若监测到数据长度寄存器中不存在有效的数据长度,第一设备可以重新向数据长度寄存器中写入新的数据长度,并向目标内存区中重新写入新的数据。其中,数据长度寄存器中有效的数据长度可以是指具体的数据长度的数值,数据长度寄存器中无效值可以是指数据长度寄存器为空时的数据标识,比如:NULL。
此外,针对第二设备缓存的下一数据的数据长度,当第一设备将下一数据的数据长度写入目标内存区后,若无法将下一数据写入目标内存区且第二设备在预读下一数据的数据长度并缓存,第二设备可以将缓存的下一数据的数据长度删除。
在本说明书实施例中,在第一设备的写操作和第二设备的读操作同时进行,且第二设备无法通过预读的方式获取有效的数据长度的情况下,以第二设备在更新第二设备对应的读指针之后删除据长度寄存器中已存储的数据长度为例,将第一设备访问存储有第二设备对应的读指针的读指针寄存器的时机分为三种情况:
第一种情况,第二设备无法通过预读的方式获取写入目标内存区中有效的数据长度,但是第二设备未更新读指针寄存器中的第二设备对应的读指针,此时,第一设备访问读指针寄存器,根据访问读指针寄存器所获取到的第二设备对应的读指针以及第一设备预先缓存的第一设备对应的写指针,确定目标内存区未空,则第一设备不会向数据长度寄存器中重新写入新数据的数据长度。之后,第二设备删除数据寄存器中的数据长度。
第二种情况,第二设备无法通过预读的方式获取写入目标内存区中有效的数据长度,并更新读指针寄存器中的第二设备对应的读指针,此时,第一设备访问读指针寄存器,根据访问读指针寄存器所获取到的第二设备对应的读指针以及第一设备预先缓存的第一设备对应的写指针,确定目标内存区重新为空。第一设备向数据寄存器中写入新数据的数据长度。但是,之后,第二设备将第一设备写入数据寄存器中新数据的数据长度删除。
第三种情况,第二设备无法通过预读的方式获取写入目标内存区中有效的数据长度,并更新读指针寄存器中的第二设备对应的读指针,然后,将数据寄存器中的数据长度删除。此时,第一设备访问读指针寄存器,根据访问读指针寄存器所获取到的第二设备对应的读指针以及第一设备预先缓存的第一设备对应的写指针,确定目标内存区重新为空。第一设备向数据寄存器中写入新数据的数据长度。
此外,以第二设备在更新第二设备对应的读指针之前删除据长度寄存器中已存储的数据长度为例,将第一设备访问存储有第二设备对应的读指针的读指针寄存器的时机分为三种情况:
第一种情况,第二设备无法通过预读的方式获取写入目标内存区中有效的数据长度,第二设备未删除据长度寄存器中已存储的数据长度且未更新第二设备对应的读指针,此时,第一设备访问读指针寄存器,根据访问读指针寄存器所获取到的第二设备对应的读指针以及第一设备预先缓存的第一设备对应的写指针,确定目标内存区未空,则第一设备不会向数据长度寄存器中重新写入新数据的数据长度。之后,第二设备删除数据寄存器中的数据长度。
第二种情况,第二设备无法通过预读的方式获取写入目标内存区中有效的数据长度,第二设备删除据长度寄存器中已存储的数据长度,但未更新读指针寄存器中的第二设备对应的读指针,此时,第一设备访问读指针寄存器,根据访问读指针寄存器所获取到的第二设备对应的读指针以及第一设备预先缓存的第一设备对应的写指针,确定目标内存区未空。第一设备不会向数据长度寄存器中重新写入新数据的数据长度。
第三种情况,第二设备无法通过预读的方式获取写入目标内存区中有效的数据长度,第二设备删除据长度寄存器中已存储的数据长度,并更新读指针寄存器中的第二设备对应的读指针。此时,第一设备访问读指针寄存器,根据访问读指针寄存器所获取到的第二设备对应的读指针以及第一设备预先缓存的第一设备对应的写指针,确定目标内存区重新为空。第一设备向数据寄存器中写入新数据的数据长度。
不管是上述哪个例子,第一种情况和第二情况,第二设备在无法通过预读的方式获取写入目标内存区中有效的数据长度时,也无法从数据寄存器中获取新数据的数据长度;第三种情况,第二设备在无法通过预读的方式获取写入目标内存区中有效的数据长度时,可以通过访问数据寄存器,从数据寄存器中获取新数据的数据长度。
因此,针对第一种情况和第二情况,第二设备在无法通过预读的方式获取写入目标内存区中有效的数据长度时,第二设备可以通过访问存储有第一设备对应的写指针的写指针寄存器,判断第一设备是否重新向目标内存区中写入新数据。若第一设备重新向目标内存区中写入新数据,第二设备可以先从目标内存区中读取新数据的数据长度,再从目标内存区中读取新数据,读取新数据后预读新数据之后的下一数据的数据长度,并缓存。
针对第三种情况,第二设备在无法通过预读的方式获取写入目标内存区中有效的数据长度时,可以通过访问数据寄存器,从数据寄存器中获取新数据的数据长度。第二设备基于新数据的数据长度,从目标内存区中读取新数据。
在本说明书实施例中,对于写指针寄存器中第一设备对应的写指针的更新,在第一设备执行写操作时,第一设备可以根据目标数据的数据长度更新写指针寄存器中第一设备对应的写指针。由于共享内存可能位于第二设备中,且访问寄存器的速度比通过DMA方式访问共享内存的速度快,这造成第一设备更新写指针寄存器中第一设备对应的写指针速度比第一设备向目标内存区写入目标数据的速度快,可能导致第二设备读取到的目标数据不完整。因此,为了避免第二设备读取到不完整的目标数据,可以在用于写入目标数据的目标数据体的首尾设置数据状态标识,数据状态标识用于表示目标数据是否全部写入目标数据体中。若目标数据全部写入目标数据体中,位于目标数据体的首尾的数据状态标识设置均为有效值,若目标数据未全部写入目标数据体中,位于目标数据体的首尾的任一数据状态标识设置为无效值。即,只有位于目标数据体的首尾的数据状态标识均设置为有效值,目标数据才全部写入目标数据体中。因此,目标内存区中环形缓冲区的数据结构还包括:位于数据体首尾的数据状态标识。数据状态标识可以用魔数表示。魔数为A表示目标数据未写入目标数据体中,魔数为BB表示目标数据开始写入目标数据体,魔数为BE表示目标数据写入目标数据体结束,魔数为C表示目标数据体中的目标数据已读取并处理。其中,数据状态标识的有效值为BB或BE,数据状态标识的无效值为A或C。
针对第一设备,在第一设备向目标内存区写入目标数据之前,第一设备可以将目标内存区中位于目标数据体首尾的数据状态标识设置为无效值,在第一设备将目标数据写入目标数据体时,第一设备将位于目标数据体首尾的数据状态标识设置为有效值,并更新第一设备对应的写指针。
其中,第一设备将位于目标数据体首尾的数据状态标识设置为无效值时,第一设备可以在第一设备向目标内存区中写入上一数据过程中,继续将位于目标数据体首部的数据状态标识设置为无效值,比如:A。在第一设备需要向目标内存区写入目标数据时,可以将位于目标数据体首部的数据状态标识设置为无效值。
针对第一设备将目标数据体首尾的数据状态标识设置为有效值,第一设备需要向目标内存区写入目标数据时,第一设备可以向目标数据体正文中写入目标数据,然后,将位于目标数据体首尾的数据状态标识设置为有效值。或者,第一设备向目标内存区写入目标数据的过程中,在第一设备将目标数据开始写入目标数据体时,第一设备将位于目标数据体首部的数据状态标识设置为有效值,然后,向目标数据体正文中写入目标数据,最后,在第一设备将目标数据完全写入目标数据体时,第一设备将位于目标数据体尾部的数据状态标识设置为有效值。如图5a~图5b所示。
在图5a~图5b中,目标内存区中存放目标数据的数据结构可以包括:目标数据体、位于目标数据体首尾的数据状态标识,目标数据体可以包括:数据体长度、数据体正文。其中,图5a表示第一设备写入目标数据之前的数据结构,魔数为A和C;图5b表示第一设备目标数据体中写入目标数据之后的数据结构,魔数为BB和BE,另外,在读写操作可以读写固定内存大小,所以,目标数据未将数据体正文写满,由Pad表示填充字节,这样可以不需要额外记录指定内存大小中每个目标数据的数据长度。
基于上述数据处理系统,本说明书实施例中提供一种数据处理的方法,如图6所示。图6为本说明书实施例提供的一种数据处理方法的流程示意图,该方法应用于第一设备,包括:
S600:第一设备从位于所述第一设备或第二设备的共享内存中确定出目标内存区。
在本说明书实施例中,根据第一设备与第二设备之间的数据传输方向,从共享内存中确定出与数据传输方向对应的内存区,作为目标内存区。
具体的,当第一设备为发送设备,第二设备为接收设备时,可以将第一设备对应的写内存区和第二设备对应的读内存区作为目标内存区,当第一设备为接收设备,第二设备为发送设备时,可以将第一设备对应的读内存区和第二设备对应的写内存区作为目标内存区。
S602:将第一设备发送给所述第二设备的目标数据写入所述目标内存区,并更新寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问寄存器获取到的所述写指针以及所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理;其中,所述寄存器位于所述第一设备或第二设备。
在本说明书实施例中,第一设备先根据预先缓存的第一设备对应的写指针,从目标内存区中确定出写入目标数据的数据体,作为目标数据体。然后,在第一设备将目标数据开始写入目标数据体时,第一设备将位于目标数据体首部的数据状态标识设置为有效值,在第一设备将目标数据完全写入目标数据体时,第一设备将位于目标数据体尾部的数据状态标识设置为有效值,同时,更新写指针寄存器内第一设备对应的写指针,以使第二设备访问写指针寄存器和访问读指针寄存器,并根据访问写指针寄存器获取的第一设备对应的写指针以及访问读指针寄存器获取到的第二设备对应的读指针,从目标内存区中读取目标数据并处理,在对目标数据处理完后,更新读指针寄存器中存储的第二设备对应的读指针。
另外,在第一设备向目标内存区写入目标内存区后目标内存区由空变为非空时,第一设备将目标数据的数据长度更新至数据长度寄存器中,以使第二设备访问数据长度寄存器,并基于数据长度寄存器中的目标数据的数据长度,从目标内存区中读取目标数据,并从目标内存区中存储目标数据的下一数据体中预读下一数据的数据长度,以在第一设备将下一数据完全写入下一数据体中后,第二设备根据预读的下一数据的数据长度,从目标内存区中读取下一数据。
基于上述数据处理的系统,本说明书实施例中提供另一种数据处理方法,如图7所示。图7为本说明书实施例提供的另一种数据处理方法的流程示意图,该方法应用于第二设备,包括:
S700:第二设备访问寄存器。
S702:根据访问寄存器获取到的第一设备对应的写指针以及所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理,其中,所述第二设备访问的寄存器位于所述第一设备或所述第二设备,所述目标内存区是由位于所述第一设备或所述第二设备的共享内存中确定出的,所述获取到的第一设备对应的写指针是第一设备将所述目标数据写入所述目标内存区之后所更新得到的。
在本说明书实施例中,第二设备先访问写指针寄存器和读指针寄存器。根据访问写指针寄存器获取到的第一设备对应的写指针以及访问读指针寄存器获取到的第二设备对应的读指针,从目标内存区中的目标数据体中读取第一设备发送的目标数据,并更新读指针寄存器中存储的第二设备对应的读指针。其中,目标内存区是第一设备根据第一设备和第二设备之间的数据传输方向从共享内存中确定出的内存区,第一设备对应的写指针是第一设备将目标数据写入目标内存区中的目标数据体之后所更新得到的。
其中,在第二设备读取目标数据的过程中,第二设备在读取完目标数据中的部分数据后,确定读取部分数据后的结束位置,并在确定继续读取目标数据时,根据结束位置,读取目标数据中的剩余数据。
另外,第二设备访问数据长度寄存器,并基于数据长度寄存器中的目标数据的数据长度,从目标内存区中读取目标数据,并从目标内存区中存储目标数据的下一数据体中预读下一数据的数据长度,以在第一设备向目标内存区中的下一数据体中写入下一数据后,根据预读的下一数据的数据长度,从目标内存区中的下一数据体中读取下一数据。其中,数据长度寄存器中目标数据的数据长度是当第一设备写入目标数据后目标内存区由空变为非空时,第一设备将目标数据的数据长度写入数据长度寄存器后所得到的。
此外,在第二设备读取并处理目标数据体内的目标数据之后,第二设备将位于目标数据体首尾的数据状态标识设置为无效值,并更新读寄存器中存储的第二设备对应的读指针;其中,目标数据体用于写入目标数据。
需要说明的是,本申请中所有获取数据或隐私交易数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
通过上述图6和图7所示的方法可见,本说明书当第一设备向第二设备发送目标数据时,第一设备从位于第一设备或第二设备的共享内存中确定出目标内存区,并将目标数据写入目标内存区以及更新寄存器中存储的第一设备对应的写指针。第二设备接收目标数据时,第二设备根据访问寄存器获取到的写指针以及第二设备对应的读指针寄存器,从目标内存区中读取目标数据,并对目标数据进行处理。在此方法中,第一设备只访问一次共享内存就可以写入目标数据,第二设备同样只访问一次共享内存就可以读取目标数据,并且共享内存的回收是由第二设备更新第二设备对应的读指针实现的,不需要访问共享内存,另外,访问寄存器的速度比通过DMA方式访问共享内存的速度快,因此,第一设备和第二设备读写目标数据的整个过程简单、速度快,耗时短,从而提高第一设备与第二设备之间的通信效率。
以上为本说明书实施例提供的数据处理方法,基于同样的思路,本说明书还提供了相应的装置、存储介质和电子设备。
图8为本说明书实施例提供的一种数据处理装置的结构示意图,所述装置包括:
确定内存区模块801,用于第一设备从位于所述第一设备或第二设备的共享内存中确定出目标内存区;
数据处理模块802,用于将第一设备发送给所述第二设备的目标数据写入所述目标内存区,并更新寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问寄存器获取到的所述写指针以及所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理;其中,所述寄存器位于所述第一设备或第二设备。
可选地,所述寄存器至少包括:存储有第一设备对应的写指针的写指针寄存器、存储有第二设备对应的读指针的读指针寄存器;所述数据处理模块802具体用于,更新所述写指针寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问所述写指针寄存器获取到的所述写指针以及访问所述读指针寄存器获取到的所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理。
可选地,所述装置还包括:更新数据长度模块803、设置数据状态标识模块804;
所述寄存器包括:数据长度寄存器;
所述更新数据长度模块803,用于当所述第一设备写入所述目标数据后所述目标内存区由空变为非空时,所述第一设备将所述目标数据的数据长度写入所述数据长度寄存器,以使所述第二设备访问所述数据长度寄存器,并基于所述数据长度寄存器中所述目标数据的数据长度,从所述目标内存区中读取所述目标数据,并从所述目标内存区中存储所述目标数据的数据结构中预读下一数据的数据长度,以在所述第一设备向所述目标内存区写入所述下一数据后,根据预读的下一数据的数据长度,从所述目标内存区中读取所述下一数据。
所述设置数据状态标识模块804,在将第一设备发送给所述第二设备的目标数据写入所述目标内存区之前,用于所述第一设备将所述目标内存区中位于用于写入所述目标数据的目标数据体首尾的数据状态标识设置为无效值。
所述设置数据状态标识模块804,用于在所述第一设备将所述目标数据写入所述目标数据体的开始时,所述第一设备将位于所述目标数据体首部的数据状态标识设置为有效值,在所述第一设备将所述目标数据完全写入所述目标数据体时,所述第一设备将位于所述目标数据体尾部的数据状态标识设置为有效值。
图9为本说明书实施例提供的另一种数据处理的装置的结构示意图,所述装置包括:
访问模块901,用于第二设备访问寄存器;
数据处理模块902,用于根据访问寄存器获取到的第一设备对应的写指针以及所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理,其中,所述第二设备访问的寄存器位于所述第一设备或所述第二设备,所述目标内存区是由位于所述第一设备或所述第二设备的共享内存中确定出的,所述获取到的第一设备对应的写指针是第一设备将所述目标数据写入所述目标内存区之后所更新得到的。
可选地,所述寄存器至少包括:存储有第一设备对应的写指针的写指针寄存器、存储有第二设备对应的读指针的读指针寄存器;所述访问模块901具体用于,第二设备访问所述写指针寄存器和所述读指针寄存器。
可选地,所述数据处理模块902具体用于,根据访问所述写指针寄存器获取到的第一设备对应的写指针以及访问所述读指针寄存器获取到的所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理。
可选地,所述数据处理模块902具体用于,所述第二设备在读取完所述目标数据中的部分数据后,确定读取所述部分数据后的结束位置,并在确定继续读取所述目标数据时,根据所述结束位置,读取所述目标数据中的剩余数据。
可选地,所述寄存器包括:数据长度寄存器;所述数据处理模块902具体用于,所述第二设备访问所述数据长度寄存器,并基于所述数据长度寄存器中所述目标数据的数据长度,从所述目标内存区中读取所述目标数据,并从所述目标内存区中存储所述目标数据的数据结构中预读下一数据的数据长度,以在所述第一设备向所述目标内存区写入所述下一数据后,根据预读的下一数据的数据长度,从所述目标内存区中读取所述下一数据;其中,所述数据长度寄存器中所述目标数据的数据长度是当所述第一设备写入所述目标数据后所述目标内存区由空变为非空时,所述第一设备将所述目标数据的数据长度写入所述数据长度寄存器后所得到的。
可选地,数据处理模块902还用于,当所述第二设备确定所述目标内存区重新为空时,所述第二设备删除所述数据长度寄存器中已存储的数据长度。
可选地,数据处理模块902还用于,在所述第二设备读取并处理完所述目标数据之后,所述第二设备更新所述第二设备对应的读指针,以释放所述目标内存区。
本说明书还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可用于执行上述图6和图7提供的数据处理方法。
基于图6和图7提供的数据处理方法,本说明书实施例还提供了图10所示的电子设备的结构示意图。如图10,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图6和图7所述的数据处理方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现消息存储。消息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的消息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (24)

1.一种数据处理系统,所述系统包括:第一设备和第二设备,所述第一设备或所述第二设备中设有共享内存,所述第一设备或所述第二设备中设有寄存器;
所述第一设备,在向所述第二设备发送目标数据时,从所述共享内存中确定出目标内存区,并将所述目标数据写入所述目标内存区,以及更新寄存器中存储的所述第一设备对应的写指针;
所述第二设备,在接收所述第一设备发送的所述目标数据时,所述第二设备访问寄存器,并根据访问寄存器获取到的所述写指针以及所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理。
2.如权利要求1所述的系统,在对所述目标数据进行处理之后,所述第二设备更新所述寄存器中存储的所述第二设备对应的读指针,以释放所述目标内存区。
3.如权利要求1所述的系统,所述寄存器至少包括:存储有第一设备对应的写指针的写指针寄存器、存储有第二设备对应的读指针的读指针寄存器;
所述第一设备,更新所述写指针寄存器中存储的所述第一设备对应的写指针;
所述第二设备,在接收所述第一设备发送的所述目标数据时,所述第二设备访问所述写指针寄存器和所述读指针寄存器,并根据访问所述写指针寄存器获取到的所述写指针以及访问所述读指针寄存器获取到的所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理。
4.如权利要求1所述的系统,所述共享内存至少包括:所述第一设备的写内存区、所述第一设备的读内存区、所述第二设备的写内存区、所述第二设备的读内存区,其中,所述第一设备的写内存区与所述第二设备的读内存区相同,所述第一设备的读内存区与所述第二设备的写内存区相同。
5.如权利要求1所述的系统,所述第二设备在读取完所述目标数据中的部分数据后,确定读取所述部分数据后的结束位置,并在确定继续读取所述目标数据时,根据所述结束位置,读取所述目标数据中的剩余数据。
6.如权利要求1所述的系统,所述寄存器包括:数据长度寄存器;在所述目标内存区中存储所述目标数据的数据结构中记录有所述第一设备存储的下一数据的数据长度;
当所述第一设备写入所述目标数据后所述目标内存区由空变为非空时,所述第一设备将所述目标数据的数据长度写入所述数据长度寄存器;
所述第二设备访问所述数据长度寄存器,并基于所述数据长度寄存器中所述目标数据的数据长度,从所述目标内存区中读取所述目标数据,并从所述数据结构中预读所述下一数据的数据长度,以在所述第一设备向所述目标内存区写入所述下一数据后,根据预读的下一数据的数据长度,从所述目标内存区中读取所述下一数据。
7.如权利要求6所述的系统,当所述第二设备确定所述目标内存区重新为空时,所述第二设备删除所述数据长度寄存器中已存储的数据长度。
8.如权利要求1所述的系统,在所述第一设备向所述目标内存区写入所述目标数据之前,所述第一设备将所述目标内存区中位于目标数据体首尾的数据状态标识设置为无效值,所述目标数据体用于写入所述目标数据;
在所述第一设备将所述目标数据开始写入所述目标数据体时,所述第一设备将位于所述目标数据体首部的数据状态标识设置为有效值,在所述第一设备将所述目标数据完全写入所述目标数据体时,所述第一设备将位于所述目标数据体尾部的数据状态标识设置为有效值。
9.如权利要求1~8任一所述的系统,当所述第一设备为区块链一体机中的主机时,所述第二设备为部署于所述区块链一体机上的智能卡;所述目标数据包括区块链客户端发送给所述主机的交易数据。
10.一种数据处理方法,所述方法包括:
第一设备从位于所述第一设备或第二设备的共享内存中确定出目标内存区;
将第一设备发送给所述第二设备的目标数据写入所述目标内存区,并更新寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问寄存器获取到的所述写指针以及所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理;其中,所述寄存器位于所述第一设备或第二设备。
11.如权利要求10所述的方法,所述寄存器至少包括:存储有第一设备对应的写指针的写指针寄存器、存储有第二设备对应的读指针的读指针寄存器;
更新寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问寄存器获取到的所述写指针以及所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理,具体包括:
更新所述写指针寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问所述写指针寄存器获取到的所述写指针以及访问所述读指针寄存器获取到的所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理。
12.如权利要求10所述的方法,所述寄存器包括:数据长度寄存器,所述方法还包括:
当所述第一设备写入所述目标数据所述目标内存区由空变为非空时,所述第一设备将所述目标数据的数据长度写入所述数据长度寄存器,以使所述第二设备访问所述数据长度寄存器,并基于所述数据长度寄存器中所述目标数据的数据长度,从所述目标内存区中读取所述目标数据,并从所述目标内存区中存储所述目标数据的数据结构中预读下一数据的数据长度,以在所述第一设备向所述目标内存区写入所述下一数据后,根据预读的下一数据的数据长度,从所述目标内存区中读取所述下一数据。
13.如权利要求10所述的方法,在将第一设备发送给所述第二设备的目标数据写入所述目标内存区之前,所述方法还包括:
所述第一设备将所述目标内存区中位于目标数据体首尾的数据状态标识设置为无效值,所述目标数据体用于写入所述目标数据。
14.如权利要求13所述的方法,所述方法还包括:
在所述第一设备将所述目标数据开始写入所述目标数据体时,所述第一设备将位于所述目标数据体首部的数据状态标识设置为有效值,在所述第一设备将所述目标数据完全写入所述目标数据体时,所述第一设备将位于所述目标数据体尾部的数据状态标识设置为有效值。
15.一种数据处理方法,所述方法包括:
第二设备访问寄存器;
根据访问寄存器获取到的第一设备对应的写指针以及所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理,其中,所述第二设备访问的寄存器位于所述第一设备或所述第二设备,所述目标内存区是由位于所述第一设备或所述第二设备的共享内存中确定出的,所述获取到的第一设备对应的写指针是第一设备将所述目标数据写入所述目标内存区之后所更新得到的。
16.如权利要求15所述的方法,所述方法还包括:
在所述第二设备读取并处理完所述目标数据之后,所述第二设备更新所述第二设备对应的读指针,以释放所述目标内存区。
17.如权利要求15所述的方法,所述寄存器至少包括:存储有第一设备对应的写指针的写指针寄存器、存储有第二设备对应的读指针的读指针寄存器;
第二设备访问寄存器,具体包括:
第二设备访问所述写指针寄存器和所述读指针寄存器;
根据访问寄存器获取到的第一设备对应的写指针以及所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理,具体包括:
根据访问所述写指针寄存器获取到的第一设备对应的写指针以及访问所述读指针寄存器获取到的所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理。
18.如权利要求15所述的方法,从目标内存区中读取所述第一设备发送的目标数据,具体包括:
所述第二设备在读取完所述目标数据中的部分数据后,确定读取所述部分数据后的结束位置,并在确定继续读取所述目标数据时,根据所述结束位置,读取所述目标数据中的剩余数据。
19.如权利要求15所述的方法,所述寄存器包括:数据长度寄存器;
从目标内存区中读取所述第一设备发送的目标数据,具体包括:
所述第二设备访问所述数据长度寄存器,并基于所述数据长度寄存器中所述目标数据的数据长度,从所述目标内存区中读取所述目标数据,并从所述目标内存区中存储所述目标数据的数据结构中预读下一数据的数据长度,以在所述第一设备向所述目标内存区写入所述下一数据后,根据预读的下一数据的数据长度,从所述目标内存区中读取所述下一数据;其中,所述数据长度寄存器中所述目标数据的数据长度是当所述第一设备写入所述目标数据后所述目标内存区由空变为非空时,所述第一设备将所述目标数据的数据长度写入所述数据长度寄存器后所得到的。
20.如权利要求19所述的方法,所述方法还包括:
当所述第二设备确定所述目标内存区重新为空时,所述第二设备删除所述数据长度寄存器中已存储的数据长度。
21.一种数据处理装置,包括:
确定内存区模块,用于第一设备从位于所述第一设备或第二设备的共享内存中确定出目标内存区;
数据处理模块,用于将第一设备发送给所述第二设备的目标数据写入所述目标内存区,并更新寄存器中所述第一设备对应的写指针,以使所述第二设备根据访问寄存器获取到的所述写指针以及所述第二设备对应的读指针,从所述目标内存区中读取所述目标数据,并对所述目标数据进行处理;其中,所述寄存器位于所述第一设备或第二设备。
22.一种数据处理装置,包括:
访问模块,用于第二设备访问寄存器;
数据处理模块,用于根据访问寄存器获取到的第一设备对应的写指针以及所述第二设备对应的读指针,从目标内存区中读取所述第一设备发送的目标数据,并对所述目标数据进行处理,其中,所述第二设备访问的寄存器位于所述第一设备或所述第二设备,所述目标内存区是由位于所述第一设备或所述第二设备的共享内存中确定出的,所述获取到的第一设备对应的写指针是第一设备将所述目标数据写入所述目标内存区之后所更新得到的。
23.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求10-20任一项所述的方法。
24.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求10-20任一项所述的方法。
CN202210605402.9A 2022-05-30 2022-05-30 一种数据处理系统和方法 Pending CN115048047A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210605402.9A CN115048047A (zh) 2022-05-30 2022-05-30 一种数据处理系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210605402.9A CN115048047A (zh) 2022-05-30 2022-05-30 一种数据处理系统和方法

Publications (1)

Publication Number Publication Date
CN115048047A true CN115048047A (zh) 2022-09-13

Family

ID=83160268

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210605402.9A Pending CN115048047A (zh) 2022-05-30 2022-05-30 一种数据处理系统和方法

Country Status (1)

Country Link
CN (1) CN115048047A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117312200A (zh) * 2023-11-27 2023-12-29 沐曦集成电路(南京)有限公司 基于环形缓冲区的多通道数据dma系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117312200A (zh) * 2023-11-27 2023-12-29 沐曦集成电路(南京)有限公司 基于环形缓冲区的多通道数据dma系统
CN117312200B (zh) * 2023-11-27 2024-02-02 沐曦集成电路(南京)有限公司 基于环形缓冲区的多通道数据dma系统

Similar Documents

Publication Publication Date Title
US10423541B1 (en) Using encryption within a computing system
US7707337B2 (en) Object-based storage device with low process load and control method thereof
US8321635B2 (en) Synchronizing commands for preventing data corruption
US11132145B2 (en) Techniques for reducing write amplification on solid state storage devices (SSDs)
US9959046B2 (en) Multi-streaming mechanism to optimize journal based data storage systems on SSD
EP1094392A1 (en) Method and apparatus for interfacing with a secondary storage system
CN106357703B (zh) 集群切换方法与设备
CN109542636B (zh) 一种数据更新的方法及装置
EP4310691A1 (en) Blockchain-based data processing method, apparatus, and device, and storage medium
CN112256460A (zh) 进程间通信方法、装置、电子设备及计算机可读存储介质
CN115048047A (zh) 一种数据处理系统和方法
WO2014100954A1 (zh) 数据控制方法及系统
CN112925606A (zh) 一种内存管理方法、装置及设备
US9645946B2 (en) Encryption for solid state drives (SSDs)
US10372608B2 (en) Split head invalidation for consumer batching in pointer rings
KR101842764B1 (ko) 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법
CN111198843B (zh) 一种基于应用处理器片上总线控制的文件系统写加速方法
CN116243871A (zh) 数据存储系统、数据存储方法及电子设备
CN116166570A (zh) 一种垃圾回收方法及装置
JP2002024085A (ja) ディスクキャッシュシステム、及びその制御方法
CN114610660A (zh) 控制接口数据的方法、装置及系统
TW202230140A (zh) 管理記憶體的方法及非暫時性電腦可讀媒體
US11269549B2 (en) Storage device and command processing method
GB2502858A (en) A method of copying data from a first memory location and storing it in a cache line associated with a different memory location
CN112882831A (zh) 一种数据处理方法及装置

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