CN116610623A - 一种数据读取方法、装置、电子设备及存储介质 - Google Patents
一种数据读取方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116610623A CN116610623A CN202310635630.5A CN202310635630A CN116610623A CN 116610623 A CN116610623 A CN 116610623A CN 202310635630 A CN202310635630 A CN 202310635630A CN 116610623 A CN116610623 A CN 116610623A
- Authority
- CN
- China
- Prior art keywords
- data
- address range
- target
- check
- preset
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000012545 processing Methods 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012795 verification Methods 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 4
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000006837 decompression Effects 0.000 description 3
- 208000033748 Device issues Diseases 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013478 data encryption standard Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据读取方法、装置、电子设备及存储介质,所述方法应用于主机设备的CPU,所述主机设备外接有PCIe设备,所述方法包括:查询描述符的状态,所述描述符记录有用于表征所述PCIe设备是否完成向所述CPU发送目标数据的操作的状态信息,所述目标数据及用于将所述状态信息更新为已完成状态的消息基于宽松排序规则进行发送;在所述状态信息更新为已完成状态的情况下,获取校验地址范围中的数据的刷新状态,所述校验地址范围用于表征所述目标数据的目标存储地址范围的末尾的预设位数的地址范围;在所述数据已刷新的情况下,读取所述目标地址存储范围,并将读取到的数据作为所述目标数据。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据读取方法、装置、电子设备及存储介质。
背景技术
PCIe(Peripheral Component Interconnect Express)是一种高速串行总线标准,PCIe设备通常包含一个或多个PCIe接口,用于连接计算机系统中的各种外部设备,如显卡、网卡、存储控制器等。目前大多数高性能的硬件加速设备都是PCIe设备,能够根据主机设备的要求进行数据处理。
相关技术中,由PCIe设备发送出去的数据会在事务层被封装为一个或多个TLP(Transa Layer Packet,事务层包),然后通过PCIe总线的各个层次发送出去。多数PCIe设备默认使用宽松排序规则,即不要求总线上的TLP严格按照先后顺序进行传输,从而提高PCIe总线的数据传输效率。
通常,PCIe设备在发送数据之后会再发送一个消息,用于更新由主机设备的CPU预先设置的描述符的状态,通知主机设备的CPU数据发送已完成。然而,宽松排序规则下会存在TLP乱序的情况,导致同样通过TLP传输的描述符更新消息可能会比封装了目标数据的TLP提早到达。在主机设备的CPU根据描述符状态认定数据传输已完成的情况下,会从缓冲区读取数据,但实际上此时读取到的数据可能是有误的,因此,需要一种能够保证数据准确性的数据读取方法。
发明内容
有鉴于此,本申请提供一种数据读取方法、装置、电子设备及存储介质,以解决相关技术中存在的缺陷,本申请技术方案如下:
根据本申请第一方面的实施例,提供一种数据读取方法,应用于主机设备的CPU,所述主机设备外接有PCIe设备,所述方法包括:
查询描述符的状态,所述描述符记录有用于表征所述PCIe设备是否完成向所述CPU发送目标数据的操作的状态信息,所述目标数据及用于将所述状态信息更新为已完成状态的消息基于宽松排序规则进行发送;
在所述状态信息更新为已完成状态的情况下,获取校验地址范围中的数据的刷新状态,所述校验地址范围用于表征所述目标数据的目标存储地址范围的末尾的预设位数的地址范围;
在所述数据已刷新的情况下,读取所述目标地址存储范围,并将读取到的数据作为所述目标数据。
根据本申请第二方面的实施例,提供一种数据读取装置,应用于主机设备的CPU,所述主机设备外接有PCIe设备,包括:
查询单元,用于查询描述符的状态,所述描述符记录有用于表征所述PCIe设备是否完成向所述CPU发送目标数据的操作的状态信息,所述目标数据及用于将所述状态信息更新为已完成状态的消息基于宽松排序规则进行发送;
刷新检测单元,用于在所述状态信息更新为已完成状态的情况下,获取校验地址范围中的数据的刷新状态,所述校验地址范围用于表征所述目标数据的目标存储地址范围的末尾的预设位数的地址范围;
读取单元,用于在所述数据已刷新的情况下,读取所述目标地址存储范围,并将读取到的数据作为所述目标数据。
根据本申请第三方面的实施例,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的数据读取方法。
根据本申请第四方面的实施例,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的数据读取方法的步骤。
在本申请提供的技术方案中,PCIe设备在完成向主机设备的CPU发送目标数据之后会发送一个用于更新描述符状态的消息,表示PCIe设备已完成数据发送的操作。在主机设备的CPU查询到描述符被更新为已完成状态时,会将目标数据的目标存储地址范围的末尾的预设位数的地址范围作为校验地址范围,进一步确认校验地址范围中的数据刷新状态,从而准确地判断数据传输是否真正完成。若校验地址范围中的数据已刷新,则表明PCIe设备发送的目标数据已全部写入目标存储地址范围,此时主机设备的CPU读取目标存储地址范围得到数据即为正确的目标数据。应用本申请的技术方案,可以在PCIe设备使用宽松排序规则的情况下,使主机设备的CPU读取到完整的目标数据,保证了数据的准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请实施例。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请一示例性实施例示出的一种PCIe总线传输TLP的示意图;
图2是本申请一示例性实施例示出的一种数据读取方法的流程图;
图3是本申请一示例性实施例示出的一种校验数据写入方法的示意图;
图4是本申请一示例性实施例示出的一种校验数据写入方法的示意图;
图5是本申请一示例性实施例示出的一种校验数据写入方法的示意图;
图6是本申请一示例性实施例示出的一种数据读取装置的示意图;
图7是本申请一示例性实施例示出的一种电子设备的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
PCIe(Peripheral Component Interconnect Express)是一种高速串行总线标准,PCIe设备通常包含一个或多个PCIe接口,用于连接计算机系统中的各种外部设备,如显卡、网卡、存储控制器等。目前大多数高性能的硬件加速设备都是PCIe设备,能够根据主机设备的要求进行数据处理,如加解密处理、压缩解压缩处理、视频编解码处理等。
相关技术中,PCIe设备在进行数据处理之后会将目标数据发送至主机设备的CPU,准备发送出去的数据会在事务层被封装为一个或多个TLP(Transa Layer Packet,事务层包),然后通过PCIe总线的各个层次发送出去。目前多数PCIe设备默认使用宽松排序规则,相对于严格排序规则下要求TLP必须按照先后顺序进行传输而言,宽松排序规则下允许传输路径上的Switch对一些事务进行重新排序,即总线上的TLP不需要严格按照先后顺序进行传输,在一定规则下,后面的TLP可以超越前面的TLP,提前到达主机设备的CPU,以此提高PCIe总线的传输效率。
通常,PCIe设备在发送完目标数据之后会再发送一个消息,用于更新由主机设备的CPU预先设置的描述符的状态,通知主机设备的CPU数据发送已完成。然而,宽松排序规则下存在TLP乱序的情况,导致同样通过TLP传输的描述符更新消息可能会比数据传输的TLP先到达。
例如图1所示,PCIe设备将目标数据封装为两个TLP,为Data0、Data1,并按照先后顺序发出,此时PCIe设备已完成目标数据的发送操作,于是将用于更新描述符状态的消息Msg也封装至TLP之后发出。可见,PCIe设备是按照Data0、Data1、Msg的先后顺序发出了三个TLP。但是在使用宽松排序规则下,传输路径上的Switch可以将TLP重新排序,此时各个TLP的顺序与PCIe设备发出时的顺序不同,用于更新描述符状态的消息Msg可能位于封装目标数据的TLP之前,如图1所示,到达主机设备的缓冲区时,三个TLP顺序变为Data0、Msg、Data1。可以理解的是,除图1示出的将目标数据封装至多个TLP进行发送之外,PCIe设备也可以将目标数据封装至一个TLP内进行发送,例如把完整的目标数据封装至Data0。此时传输路径上的Switch将PCIe设备发出的TLP重新排序后,同样可能出现用于更新描述符状态的消息Msg位于Data0之前的情况。由于在封装了Msg的TLP到达之后,描述符状态被Msg更新至已完成状态,此时主机设备的CPU会认为数据传输已完成,进而从缓冲区读取数据。但实际上,封装了目标数据的Data1的TLP还没有到达缓冲区,此时读取到的数据并不是完整的目标数据,而是错误数据。
为了解决上述问题,本申请提出一种数据读取方法,方法、装置、电子设备及存储介质,在主机设备的CPU查询到描述符被更新为已完成状态时,会通过校验地址范围中的数据的刷新状态,进一步确认数据传输是否真正完成,并在确认数据传输完成之后取出目标数据。应用本申请的技术方案,可以在PCIe设备使用宽松排序规则的情况下,使主机设备的CPU读取到完整的目标数据,保证了数据的准确性。接下来对本申请实施例进行详细说明。
图2是本申请一示例性实施例示出的一种数据读取方法的流程图,该方法应用于主机设备的CPU,所述主机设备外接有PCIe设备,该方法包括:
S101,查询描述符的状态,所述描述符记录有用于表征所述PCIe设备是否完成向所述CPU发送目标数据的操作的状态信息,所述目标数据及用于将所述状态信息更新为已完成状态的消息基于宽松排序规则进行发送。
在一示例性实施例中,PCIe设备在进行数据处理之后会将目标数据发送至主机设备的CPU,并在完成数据发送后,再发送一条消息去更新描述符的状态,表明PCIe设备已经完成了目标数据的发送的操作。此处描述符可以预先设置,其中记录有用于表征所述PCIe设备是否完成向所述CPU发送目标数据的操作的状态信息,在PCIe设备发送的上述消息达到之后,该状态信息会更新为已完成状态。此外,描述符还可以记录数据地址、数据长度、数据处理算法等其他数据信息。
在另一示例性实施例中,在主机设备需要PCIe设备做数据处理的情况下,可以由主机设备的CPU向PCIe设备发送原始数据,具体可以将原始数据写入主机设备中的输入缓冲区,以供PCIe设备读取原始数据。CPU将原始数据写入输入缓冲区之后,会将数据地址、数据长度、数据处理算法等信息写入描述符,然后更新描述符队列的寄存器,通知PCIe设备根据该描述符中的信息处理原始数据。PCIe设备对原始数据处理之后生成目标数据,并将目标数据写入输出缓冲区,以供CPU读取。此处,输入缓冲区和输出缓冲区可以设置在主机设备内存空间中,分别用来缓存输入和输出的数据。主机设备的CPU和PCIe设备可以对输入缓冲区和输出缓冲区中的数据进行读写,以对原始数据和目标数据的进行数据操作。
在一示例性实施例中,PCIe设备可以进行多种数据处理操作,例如加解密、压缩解压缩、视频编解码等等。以加解密处理为例,CPU可以将未加密的明文数据写入输入缓冲区,并将写入的明文数据的目标存储地址、明文数据长度、具体加密算法写入描述符。其中,具体加密算法可以根据需求选择对称加密算法或者非对称加密算法。在选择对称加密算法的情况下,可以使用AES(Advanced Encryption Standard)、3DES(Triple Data EncryptionStandard)等算法,在选择非对称加密算法的情况下,可以使用RSA、DSA(DigitalSignature Algorithm)等算法。PCIe设备根据描述符中记录的信息,去输入缓冲区中对应的地址范围读取CPU写入的明文数据,并使用CPU要求的加密算法对读取到的明文数据进行加密,生成对应的密文数据。之后PCIe设备将生成的密文数据写入输出缓冲区,以使CPU能够从输出缓冲区中读取。可以理解的是,CPU同样可以将密文数据写入输入缓冲区,PCIe设备可以使用CPU告知的解密算法对密文数据进行解密,得到对应的明文数据。
在一示例性实施例中,PCIe设备将目标数据写入输出缓冲区的过程实际上属于数据传输的过程,并且PCIe设备在发送完封装了目标数据的TLP之后,会向CPU发送一条消息,表明PCIe设备已经完成了目标数据的发送的操作。该消息会更新CPU在写入原始数据时所设置的描述符中的状态信息,例如将标识传输数据的标志位从0更新为1,表示数据传输状态为已完成状态。在上述数据传输的过程中,PCIe设备使用宽松排序规则,目标数据被封装成一个或者多个TLP之后发送;在PCIe设备完成数据发送操作后,将用于更新描述符的状态信息的消息同样封装至TLP之后发送。可以理解的是,目标数据以及更新描述符的状态信息的消息可以通过多种协议进行封装,本领域技术人员可以根据需求进行选择,本申请对此不作限制。
S102,在所述状态信息更新为已完成状态的情况下,获取校验地址范围中的数据的刷新状态,所述校验地址范围用于表征所述目标数据的目标存储地址范围的末尾的预设位数的地址范围。
在一示例性实施例中,CPU在查询到描述符记录的状态信息已经更新为已完成状态时,会进一步确认数据传输是否真正完成。具体而言,由于PCIe设备是根据主机设备的CPU写入描述符中的信息进行数据处理的,因此CPU能够得知PCIe设备所使用的数据处理算法以及处理后生成的目标数据的长度。在数据传输完整的情况下,目标数据在输出缓冲区中的目标存储地址范围中的数据一定会被目标数据覆写,因此,CPU可以将目标数据的目标存储地址范围的末尾的预设位数的地址范围作为校验地址范围,并检测校验地址范围中的数据刷新状态。例如,PCIe处理后生成的目标数据长度为32位,CPU将校验数据的位数设置为8,此时,目标数据在输出缓冲区中的目标存储地址为起始存储地址至此后第32位(以起始存储地址为第1位计算)的地址范围,校验地址范围为目标存储地址中最后8位的地址范围。技术人员可以综合考虑封装目标数据时数据包的大小情况以及每次数据传输时所用到的原始数据、目标数据的实际情况,进行预设位数的设置,本申请对此不作限制。
在一示例性实施例中,可以设置刷新标志位,用于标识校验地址范围中的数据是否刷新。例如在此次数据处理开始之前,将刷新标志位设置为0,若校验地址范围中的数据发生了变化,则将刷新标志位设置为1。技术人员可以根据实际情况对刷新标志位进行设置,本申请对此不作限制。
在一示例性实施例中,还可以通过确定所述校验地址范围中的数据与预设校验数据是否相同,来获取校验地址范围中的数据的刷新状态。预设校验数据可以由CPU在PCIe设备将目标数据发送至CPU之前写入校验地址范围,以使CPU能够确定从校验地址范围中读取的数据与预设数据是否相同。
具体的,可以将预设位数的预设数据作为预设校验数据。例如,CPU可以预先将预定义的预设位数的字符串作为校验数据写入校验地址范围,在描述符记录的状态信息已经更新为已完成状态的情况下,CPU读取校验地址范围中的数据,通过比较读取到的数据与预先写入的字符串是否相同,来确定校验地址范围中的数据是否刷新。
具体的,还可以将CPU发送至PCIe设备的原始数据的末尾的预设位作为预设校验数据。此处,原始数据的末尾的预设位指原始数据尾部预设位数的数据,该数据与经PCIe设备处理后得到的目标数据的末尾的预设位不同。在PCIe设备常用的数据处理方法中,其原始数据与目标数据在相同地址段内数据通常不同。例如,在加解密、压缩解压缩处理中,明文的第8位至第12位的数据与密文的第8位至第12位的数据一定不同,压缩前数据的第8位至第12位的数据与压缩后数据的第8位至第12位的数据一定不同。CPU可以将原始数据的末尾的预设位写入输出缓冲区中的校验地址范围,在描述符记录的状态信息已经更新为已完成状态的情况下,CPU读取校验地址范围中的数据,通过比较读取到的数据与原始数据的末尾的预设位是否相同,来确定校验地址范围中的数据是否刷新。
在一示例性实施例中,若校验地址范围中的数据未刷新,则表明输出缓冲区在此次数据传输中接收到的数据的长度不足,即目标数据还没有完整地写入输出缓冲区;若校验地址范围中的数据已刷新,表明输出缓冲区在此次数据传输中接收到的数据的长度已经达到目标数据的最大长度,即目标数据已经完整地写入输出缓冲区。
S103,在所述数据已刷新的情况下,读取所述目标地址存储范围,并将读取到的数据作为所述目标数据。
在一示例性实施例中,如果校验地址范围中的数据已刷新,表明此次数据传输已完成,此时主机设备的CPU再去读取目标地址存储范围,得到的数据即为正确的目标数据。
在另一示例性实施例中,如果校验地址范围中的数据未刷新,CPU会持续获取校验地址范围中的数据的刷新状态,并在确定校验地址范围中的数据已刷新的情况下,再去读取数据。如前所述,如果校验地址范围中的数据未刷新,则表明此次数据传输还未完成,在确认校验地址范围中的数据已刷新的情况下读取数据,能够保证读取到完整的目标数据,保证了数据的准确性。
通过本申请实施例中的数据获取方法,可以通过获取校验地址范围中的数据的刷新状态,进一步准确地确定传输是否真正完成,并且通过应用本申请实施例中预设校验数据的设置方法,可以准确地判断校验地址范围中的数据的刷新状态,以使主机设备的CPU能够切实地在数据传输完成之后再取出目标数据目标数据,保证了数据读取的准确性。
在上述数据读取方法的基础上,本申请还提供了将原始数据的末尾的预设位作为预设校验数据的具体实施方法。
在一示例性实施例中,在所述原始数据与所述目标数据的长度一致的情况下,将所述原始数据的末尾的预设位写入所述校验地址范围。参见图3,图中len_s表示由CPU发送的原始数据的数据长度,len_d表示由PCIe设备对原始数据进行处理后得到的目标数据的数据长度。在len_s等于len_d的情况下,CPU将原始数据写入输入缓冲区,记录原始数据的数据长度len_s,并将原始数据的末尾的预设位数的字节作为预设校验数据,写入输出缓冲区的校验地址范围。在假设预设位数为8位时,即将(原始数据的存储起始地址+len_s-8)起始的8个字节写入(目标数据的存储起始地址+len_s-8)起始的地址范围。之后CPU会将数据地址、数据长度、数据处理算法等信息写入描述符,然后更新描述符队列的寄存器,通知PCIe设备根据该描述符中的信息处理原始数据。
在一示例性实施例中,在所述原始数据与所述目标数据的长度不一致的情况下,比较所述原始数据与所述目标数据的长度。
具体的,若所述原始数据的长度小于所述目标数据的长度,则将所述原始数据的末尾的预设位写入所述校验地址范围。此处可参见图4,在假设预设位数为8位时,即将(原始数据的存储起始地址+len_s-8)起始的8个字节作为预设校验数据,写入(目标数据的存储起始地址+len_d-8)起始的地址范围中。
具体的,若所述原始数据的长度大于所述目标数据的长度,则截取所述原始数据中采集地址范围的数据,写入所述校验地址范围。参见图5,采集地址范围的起始地址为原始数据的目标存储地址的起始地址加上目标数据长度,再减去预设位数后得出的地址;采集地址范围的结束地址为原始数据的目标存储地址的起始地址加上目标数据长度后得出的地址。在假设预设位数为8位时,CPU将原始数据写入输入缓冲区后,将(原始数据的存储起始地址+len_d-8)作为采集地址范围,并将采集地址范围中的8个字节作为预设校验数据,写入(目标数据的存储起始地址+len_d-8)起始的地址范围中。
在上述实施例的预设校验数据的设置方式中,由于原始数据与目标数据在相同地址段内数据通常不同,因此截取目标数据的尾部的对应的原始数据作为校验数据,能够避免在某些巧合情况下,预设校验数据与目标数据一致的问题,从而保证预设校验数据为有效校验数据。
通过本申请实施例中的数据获取方法,主机设备的CPU在查询到描述符被更新为已完成状态时,会根据校验地址范围中的数据的刷新状态,进一步确认数据传输是否真正完成,进而使得CPU能够切实地在数据传输完成之后再取出目标数据目标数据,保证了数据读取的准确性。
基于本申请提供的数据读取方法,本申请还提供了一种数据读取装置,应用于主机设备的CPU,所述主机设备外接有PCIe设备,参见图6,包括:
查询单元61,被配置为查询描述符的状态,所述描述符记录有用于表征所述PCIe设备是否完成向所述CPU发送目标数据的操作的状态信息,所述目标数据及用于将所述状态信息更新为已完成状态的消息基于宽松排序规则进行发送;
刷新检测单元62,被配置为在所述状态信息更新为已完成状态的情况下,获取校验地址范围中的数据的刷新状态,所述校验地址范围用于表征所述目标数据的目标存储地址范围的末尾的预设位数的地址范围;
读取单元63,被配置为在所述数据已刷新的情况下,读取所述目标地址存储范围,并将读取到的数据作为所述目标数据。
可选的,所述获取校验地址范围中的数据的刷新状态,包括:
刷新检测第一子单元,被配置为确定所述校验地址范围中的数据与预设校验数据是否相同,所述预设校验数据由所述CPU在所述PCIe设备将所述目标数据发送至所述CPU之前写入所述校验地址范围;
若所述预设校验数据与所述校验地址范围中的数据不同,则确定所述数据已刷新;
若所述预设校验数据与所述校验地址范围中的数据相同,则确定所述数据未刷新。
可选的,所述预设校验数据包括:
预设位数的预设数据;
或者,原始数据的末尾的预设位,所述目标数据由所述原始数据经预设处理后生成,且所述原始数据的末尾的预设位与所述目标数据的末尾的预设位不同。
可选的,在所述预设校验数据为所述原始数据的末尾的预设位的情况下,所述预设校验数据由所述CPU在所述PCIe设备将所述目标数据发送至所述CPU之前写入所述校验地址范围,包括:
在所述原始数据与所述目标数据的长度一致的情况下,将所述原始数据的末尾的预设位写入所述校验地址范围。
可选的,在所述预设校验数据为所述原始数据的末尾的预设位的情况下,所述预设校验数据由所述CPU在所述PCIe设备将所述目标数据发送至所述CPU之前写入所述校验地址范围,包括:
在所述原始数据与所述目标数据的长度不一致的情况下,比较所述原始数据与所述目标数据的长度;
若所述原始数据的长度小于所述目标数据的长度,则将所述原始数据的末尾的预设位写入所述校验地址范围;
若所述原始数据的长度大于所述目标数据的长度,则截取所述原始数据中采集地址范围的数据,写入所述校验地址范围;
所述采集地址范围的起始地址为所述原始数据的目标存储地址的起始地址加上所述目标数据长度,再减去预设位数后得出的地址;
所述采集地址范围的结束地址为所述原始数据的目标存储地址的起始地址加上所述目标数据长度后得出的地址。
可选的,所述数据读取装置,还包括:
数据发送单元,被配置为向所述PCIe设备发送原始数据;
所述目标数据由所述PCIe设备对所述原始数据进行预设处理后生成。
可选的,所述数据读取装置,还包括:
刷新检测第二子单元,在所述数据未刷新的情况下,持续获取所述校验地址范围中的数据的刷新状态。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上任一实施例所述的数据读取方法。
参考图7,在硬件层面,该电子设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他业务所需要的硬件。处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行,在逻辑层面上形成对数据读取装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
相应的,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上任一实施例所述的控制方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
以上所述仅是本申请实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请实施例的保护范围。
Claims (10)
1.一种数据读取方法,其特征在于,应用于主机设备的CPU,所述主机设备外接有PCIe设备,所述方法包括:
查询描述符的状态,所述描述符记录有用于表征所述PCIe设备是否完成向所述CPU发送目标数据的操作的状态信息,所述目标数据及用于将所述状态信息更新为已完成状态的消息基于宽松排序规则进行发送;
在所述状态信息更新为已完成状态的情况下,获取校验地址范围中的数据的刷新状态,所述校验地址范围用于表征所述目标数据的目标存储地址范围的末尾的预设位数的地址范围;
在所述数据已刷新的情况下,读取所述目标地址存储范围,并将读取到的数据作为所述目标数据。
2.根据权利要求1所述的方法,其特征在于,所述获取校验地址范围中的数据的刷新状态,包括:
确定所述校验地址范围中的数据与预设校验数据是否相同,所述预设校验数据由所述CPU在所述PCIe设备将所述目标数据发送至所述CPU之前写入所述校验地址范围;
若所述预设校验数据与所述校验地址范围中的数据不同,则确定所述数据已刷新;
若所述预设校验数据与所述校验地址范围中的数据相同,则确定所述数据未刷新。
3.根据权利要求2所述的方法,其特征在于,所述预设校验数据包括:
预设位数的预设数据;
或者,原始数据的末尾的预设位,所述目标数据由所述原始数据经预设处理后生成,且所述原始数据的末尾的预设位与所述目标数据的末尾的预设位不同。
4.根据权利要求3所述的方法,其特征在于,在所述预设校验数据为所述原始数据的末尾的预设位的情况下,所述预设校验数据由所述CPU在所述PCIe设备将所述目标数据发送至所述CPU之前写入所述校验地址范围,包括:
在所述原始数据与所述目标数据的长度一致的情况下,将所述原始数据的末尾的预设位写入所述校验地址范围。
5.根据权利要求3所述的方法,其特征在于,在所述预设校验数据为所述原始数据的末尾的预设位的情况下,所述预设校验数据由所述CPU在所述PCIe设备将所述目标数据发送至所述CPU之前写入所述校验地址范围,包括:
在所述原始数据与所述目标数据的长度不一致的情况下,比较所述原始数据与所述目标数据的长度;
若所述原始数据的长度小于所述目标数据的长度,则将所述原始数据的末尾的预设位写入所述校验地址范围;
若所述原始数据的长度大于所述目标数据的长度,则截取所述原始数据中采集地址范围的数据,写入所述校验地址范围;
所述采集地址范围的起始地址为所述原始数据的目标存储地址的起始地址加上所述目标数据长度,再减去预设位数后得出的地址;
所述采集地址范围的结束地址为所述原始数据的目标存储地址的起始地址加上所述目标数据长度后得出的地址。
6.根据权利要求1所述的方法,其特征在于,还包括:
向所述PCIe设备发送原始数据;
所述目标数据由所述PCIe设备对所述原始数据进行预设处理后生成。
7.根据权利要求1所述的方法,其特征在于,还包括:
在所述数据未刷新的情况下,持续获取所述校验地址范围中的数据的刷新状态。
8.一种数据读取装置,其特征在于,应用于主机设备的CPU,所述主机设备外接有PCIe设备,包括:
查询单元,用于查询描述符的状态,所述描述符记录有用于表征所述PCIe设备是否完成向所述CPU发送目标数据的操作的状态信息,所述目标数据及用于将所述状态信息更新为已完成状态的消息基于宽松排序规则进行发送;
刷新检测单元,用于在所述状态信息更新为已完成状态的情况下,获取校验地址范围中的数据的刷新状态,所述校验地址范围用于表征所述目标数据的目标存储地址范围的末尾的预设位数的地址范围;
读取单元,用于在所述数据已刷新的情况下,读取所述目标地址存储范围,并将读取到的数据作为所述目标数据。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的数据读取方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的数据读取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310635630.5A CN116610623A (zh) | 2023-05-31 | 2023-05-31 | 一种数据读取方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310635630.5A CN116610623A (zh) | 2023-05-31 | 2023-05-31 | 一种数据读取方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116610623A true CN116610623A (zh) | 2023-08-18 |
Family
ID=87676291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310635630.5A Pending CN116610623A (zh) | 2023-05-31 | 2023-05-31 | 一种数据读取方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116610623A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117834570A (zh) * | 2024-03-04 | 2024-04-05 | 山东云海国创云计算装备产业创新中心有限公司 | 传输系统的数据包处理方法、装置、电子设备及存储介质 |
-
2023
- 2023-05-31 CN CN202310635630.5A patent/CN116610623A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117834570A (zh) * | 2024-03-04 | 2024-04-05 | 山东云海国创云计算装备产业创新中心有限公司 | 传输系统的数据包处理方法、装置、电子设备及存储介质 |
CN117834570B (zh) * | 2024-03-04 | 2024-06-07 | 山东云海国创云计算装备产业创新中心有限公司 | 传输系统的数据包处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11138143B2 (en) | Techniques for command validation for access to a storage device by a remote client | |
CN111930676B (zh) | 多处理器间的通信方法、装置、系统及存储介质 | |
EP3614253B1 (en) | Data processing method and storage system | |
US20120005488A1 (en) | Encryption processor of memory card and method for writing and reading data using the same | |
EP4220415A2 (en) | Method and apparatus for compressing addresses | |
EP3159803B1 (en) | Data storage method and network interface card | |
EP3995961B1 (en) | Storage system and operating method thereof | |
WO2019057005A1 (zh) | 数据校验的方法、装置以及网卡 | |
CN116610623A (zh) | 一种数据读取方法、装置、电子设备及存储介质 | |
CN110688333A (zh) | 一种基于pcie的dma数据传输系统及方法 | |
US10585699B2 (en) | Methods and apparatus for verifying completion of groups of data transactions between processors | |
JP2008524754A (ja) | イン−ストリームデータの暗号化/復号およびエラー訂正の機能を有するメモリシステム | |
CN112765055B (zh) | 存储设备的控制部件 | |
JP5732806B2 (ja) | データ転送装置及びデータ転送方法 | |
JP2010211322A (ja) | ネットワークプロセッサ、受信コントローラ、及びデータ受信処理方法 | |
US8959303B2 (en) | Information processor and multi-core system | |
US20060277326A1 (en) | Data transfer system and method | |
CN112035866B (zh) | 一种数据加密方法、装置、设备和计算机可读存储介质 | |
JP2015216450A (ja) | 情報処理装置、情報処理システム及び中継プログラム | |
US8140792B2 (en) | Indirectly-accessed, hardware-affine channel storage in transaction-oriented DMA-intensive environments | |
US9058295B2 (en) | Encrypt data of storage device | |
CN109729117B (zh) | 一种报文处理的方法、芯片系统以及计算机存储介质 | |
JP7363344B2 (ja) | メモリ制御装置、および制御方法 | |
US11360911B2 (en) | Dummy data removal in an authenticated encryption with associated data cryptographic scheme | |
WO2023185230A1 (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 |