CN116756070B - PCIe互联系统、数据处理方法、设备、存储介质及产品 - Google Patents
PCIe互联系统、数据处理方法、设备、存储介质及产品 Download PDFInfo
- Publication number
- CN116756070B CN116756070B CN202311020806.2A CN202311020806A CN116756070B CN 116756070 B CN116756070 B CN 116756070B CN 202311020806 A CN202311020806 A CN 202311020806A CN 116756070 B CN116756070 B CN 116756070B
- Authority
- CN
- China
- Prior art keywords
- valid
- queue
- queue pair
- value
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000004891 communication Methods 0.000 claims abstract description 31
- 230000004044 response Effects 0.000 claims description 71
- 238000000034 method Methods 0.000 claims description 61
- 230000015654 memory Effects 0.000 claims description 23
- 230000008569 process Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 19
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 9
- 230000000694 effects Effects 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000004065 semiconductor Substances 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种PCIe互联系统、数据处理方法、设备、存储介质及产品,可以应用于通信技术领域。PCIe互联系统包括RC端和EP端,该RC端和EP端之间采用PCIe通信,该RC端的DDR空间中存储队列对的Context信息,EP端的BAR空间中设置包括:触发寄存器,用于存储命令队列对的ID值,地址寄存器,用于存储命令队列对的Context信息的地址值,极大程度上节省了PCIe BAR空间上的资源,避免通信的通路个数受PCIe资源的限制。
Description
技术领域
本发明涉及通信领域,尤其涉及一种PCIe互联系统、数据处理方法、设备、存储介质及产品。
背景技术
高速串行计算机扩展总线标准(PCIe,peripheral component interconnectexpress)是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。
现有的很多高速PCIe设备,都是采用队列的方式进行通信管理的。相关技术中队列的Context信息都存储在基地址寄存器(bar,Base Address Register)上,这种Context信息存储方式占用了大量的BAR空间,而PCIe的BAR空间是非常有限的,将队列的Context信息都放到BAR空间上,通信的通路个数就要受PCIe资源的限制,导致工作队列个数受影响。
发明内容
鉴于上述问题,本发明提供了PCIe互联系统、数据处理方法、设备、存储介质及产品。
根据本发明的第一个方面,提供了一种PCIe互联系统,所述PCIe互联系统包括根复合体RC端和端点EP端,所述RC端和EP端之间采用PCIe通信,所述RC端的双倍速率同步动态随机存储DDR空间中存储队列对的上下文Context信息;
所述EP端的BAR空间中设置包括:
触发寄存器,用于存储所述命令队列对的ID值;
地址寄存器,用于存储所述命令队列对的Context信息的地址值。
根据本发明一实施例,所述队列对包括命令队列对和/或数据队列对,所述EP端的BAR空间中设置包括:
触发寄存器,用于存储所述命令队列对的ID值;
地址寄存器,用于存储所述命令队列对的Context信息的地址值。
根据本发明一实施例,所述RC端用于:
在存在队列对被更新的情况下,将所述队列对的ID值写入所述触发寄存器。
根据本发明一实施例,所述EP端用于:
在监测到所述触发寄存器中被写入队列对的ID值的情况下,从所述触发寄存器中读取所述队列对的ID值;
查找并执行与所述队列对的ID值所对应的队列对。
根据本发明一实施例,所述队列对中的数据包的字段包括valid位字段,所述valid位的状态包括无效状态和有效状态,所述有效状态表示所在数据包有效,所述无效状态表示所在数据包未生效。
根据本发明一实施例,在所述数据包为请求包的情况下,所述RC端用于:
在请求包队列中所有请求包均已进行入队和出队处理的情况下,将所述请求包队列中所有请求包的valid位的状态改为无效状态,所述valid位的值不变。
根据本发明一实施例,在所述数据包为响应包的情况下,所述EP端用于:
在响应包队列中所有响应包均已进行入队和出队处理的情况下,将所述响应包队列中所有响应包的valid位的状态改为无效状态,所述valid位的值不变。
本发明的第二方面提供了一种应用于RC端的数据处理方法,所述RC端和EP端之间采用PCIe通信,所述方法包括:
在所述RC端的DDR空间中存储队列对的Context信息;
所述EP端的BAR空间中设置包括:
触发寄存器,用于存储所述命令队列对的ID值;
地址寄存器,用于存储所述命令队列对的Context信息的地址值。
根据本发明一实施例,所述队列对包括命令队列对和数据队列对,所述方法还包括:
在存在队列对被更新的情况下,将所述队列对的ID值写入触发寄存器。
根据本发明一实施例,所述队列对中的数据包的字段包括valid位字段,所述valid位的状态包括无效状态和有效状态,所述有效状态表示所在数据包有效,所述有效状态表示所在数据包未生效;
在所述数据包为请求包的情况下,所述方法还包括:
在请求包队列中所有请求包均已进行入队和出队处理的情况下,将所述请求包队列中所有请求包的valid位的状态改为无效状态,所述valid位的值不变。
本发明的第三方面提供了一种应用于EP端的数据处理方法,RC端和所述EP端之间采用PCIe通信,在所述RC端的DDR空间中存储队列对的Context信息,所述队列对包括命令队列对和数据队列对,所述方法包括:
在所述EP端的BAR空间中设置触发寄存器和地址寄存器,所述触发寄存器用于存储所述命令队列对的ID值,所述地址寄存器用于存储所述命令队列对的Context信息的地址值。
根据本发明一实施例,所述方法还包括:
在监测到所述触发寄存器中被写入队列对的ID值的情况下,从所述触发寄存器中读取所述队列对的ID值;
查找并执行与所述队列对的ID值所对应的队列对。
根据本发明一实施例,所述队列对中的数据包的字段包括valid位字段,所述valid位的状态包括无效状态和有效状态,所述有效状态表示所在数据包有效,所述有效状态表示所在数据包未生效;
在所述数据包为响应包的情况下,所述方法还包括:
在响应包队列中所有响应包均已进行入队和出队处理的情况下,将所述响应包队列中所有响应包的valid位的状态改为无效状态,所述valid位的值不变。
本发明的第四方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述方法。
本发明的第五方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述方法。
本发明的第六方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法。
根据本发明提供的PCIe互联系统、数据处理方法、设备、存储介质及产品,通过在RC端的DDR空间中存储队列对的Context信息,极大程度上节省了PCIe BAR空间上的资源,避免通信的通路个数受PCIe资源的限制,不影响工作队列的个数。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了一种PCIe互联系统的通信结构图。
图2示意性示出了根据本发明实施例的PCIe互联系统的通信结构图。
图3示意性示出了根据本发明实施例的创建和销毁一个DATA QP的命令请求队列结点的示意图。
图4示意性示出了根据本发明实施例的创建和销毁一个DATA QP的命令响应队列结点的示意图。
图5示意性示出了根据本发明实施例的执行一个命令请求队列的结点的示意图。
图6示意性示出了根据本发明实施例的一个数据请求队列的结点的示意图。
图7示意性示出了根据本发明实施例的一个数据响应队列的结点的示意图。
图8示意性示出了根据本发明实施例的RC端触发结点处理的流程图。
图9示意性示出了根据本发明实施例的EP端触发结点处理的流程图。
图10示意性示出了根据本发明实施例的处理request队列结点的valid字段的流程图。
图11示意性示出了根据本发明实施例的初始状态时Request Queue的示意图。
图12示意性示出了根据本发明实施例的处理状态时Request Queue的示意图。
图13示意性示出了根据本发明实施例的完成状态时Request Queue的示意图。
图14示意性示出了根据本发明实施例的第二趟处理开始时Request Queue的示意图。
图15示意性示出了根据本发明实施例的response队列循环处理时valid位的示意图。
图16示意性示出了根据本发明实施例的应用于RC端的数据处理方法的流程示意图。
图17示意性示出了根据本发明实施例的应用于EP端的数据处理方法的流程示意图。
图18示意性示出了根据本发明实施例的适于实现数据处理方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本发明实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
在本发明的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、发明和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本发明的技术方案中,对数据的获取、收集、存储、使用、加工、传输、提供、发明和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
高速串行计算机扩展总线(PCIe,peripheral component interconnectexpress):是为了连接处理器系统中的外部设备,使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备。这两个设备分别为根复合体(RC,root complex)设备和端点(EP,endpoint)设备。
RC端:PCIe根设备,用于将处理器和内存子系统连接到由一个或多个交换设备组成的PCIe交换结构。RC端代表处理器生成事务请求,通过本地总线相互连接。RC端功能可以以分立设备实现,也可以在处理器中集成。一个RC端可能包含多个PCIe端口,且可将多个交换设备连接到RC端或级联的端口。
EP端:PCIe目标设备,实际使用时,EP端在PCI地址空间里申请一段空间来用,所申请的空间基址和大小保存在BAR寄存器里。BAR里的只是PCI域的地址空间,需要映射到内存地址空间(RC端的DDR空间)里之后,RC端才能使用。
将PCIe互联系统中的队列对(QP,Queue Pair)分为两类:命令队列对(CMD QP,command QP)和数据队列对DATA QP,如表1所示。
CMD QP:用于对系统中的DATA QP进行创建、维护、管理、销毁等操作。CMD QP包括两个队列cmd request queue和cmd response queue。
cmd request queue:用于存储RC端发往EP端的命令请求的结点。如上所述,请求的命令,可以是对DATA QP的创建、维护、管理和销毁等操作。
cmd response queue:用于存储EP端返回RC端的命令执行结果的结点。其内容主要是对应request命令的完成状态,如是,命令执行成功、失败等信息。
DATA QP :用于PCIe设备对数据处理业务。DATA QP包括两个队列data requestqueue和data response queue。
data request queue:用于存储 RC端发往EP端的命令请求的数据包。如上所述,请求的命令,依赖于具体的PCIe硬件设备实现。如对于网卡,报文的内容可以是接收、发送数据包。对于密码卡,报文的内容可以是对数据包的加密、解密等。
data response queue:用于存储 EP端返回RC端的命令执行结果的结点。其内容主要是对应request命令的完成状态,如是,命令执行成功、失败等信息,以及处理后的数据存储位置、回调函数地址等。
图1示意性示出了一种PCIe互联系统的通信结构图。
如图1所示,很多PCIe设备都是采用队列的方式进行通信管理的。如:PCIe网卡、PCIe密码卡等。这些PCIe设备通常使用ring结构对请求包和响应包进行管理,其结构如图1所示,将系统中的一个CMD QP和多个DATA QP队列对的Context信息,如head、tail等寄存器,都存储在BAR空间的寄存器上。只有队列的具体内容存储在RC端的DDR空间。
上述将队列对的Context信息都存储在BAR寄存器上。至少有以下缺点:
1.占用了大量的BAR空间:PCIe的BAR空间是非常有限的,将队列的Context信息都放到BAR空间上,通信的通路个数就要受PCIe资源的限制,导致PCIe设备的工作队列个数受影响。
2.需要轮询的寄存器多:多队列通信中,设备需要不断轮询队列状态,并根据状态的变化进行响应。如,某request队列,有请求命令包需要,轮询程序就会根据情况,将该命令包取出,进行处理。但是,由于将与队列的Context信息的相关寄存器都存放到BAR空间,所以,需要对所有的寄存器状态不断轮询,并根据结果进行综合比较,才能得到要处理的动作。这种轮询机制涉及的寄存器太多,较低效。
3.没有valid字段或valid字段维护繁琐:PCIe通信队列中的结点,由于是软、硬件多个程序共同读写的,设置valid字段可以确保数据准备完好。现有的PCIe通信队列中,要么是没有提供valid字段,要么是维护繁琐。因为,现有的维护valid字段的方法,需要多次软件操作,占用较多的CPU时间,影响系统工作效率。
图2示意性示出了根据本发明实施例的PCIe互联系统的通信结构图。
如图2所示,将队列对的Context信息存储到RC端的DDR空间上,本发明所揭露的这种方式占用PCIe资源少,通信的通路个数可以不受PCIe的BAR空间的大小限制,极大程度上节省了PCIe BAR空间上的资源。
上述队列对包括CMD QP和DATA QP,CMD QP包括两个队列cmd request queue和cmd response queue。DATA QP包括两个队列data request queue和data responsequeue。其中,cmd request queue中包括cmd请求包,cmd response queue中包括cmd响应包,data request queue中包括data请求包,data response queue中包括data响应包。
如图3所示,展示的是创建和销毁一个DATA QP的命令请求队列结点(又称结点)。可以看出,cmd request queue的结点,至少包括以下主要字段:
opcode(operation code,操作码):用以表示具体的操作类型。可以是“create qp(创建数据队列对)”、“destroy qp(销毁数据队列对)”等;
user private data(用户数据私有字段):用以传递用户的私有数据信息。这部分的内容,会从请求包中,原样拷贝到响应包。可以用到标识对应的request和响应包是否配对。也有一些处理后需要使用的数据,如回调函数指针等;
data qp ctx ptr(操作对象指针):用以表示操作对象DATA QP的Context内容指针;
valid bit(有效标志位):一个用来确认队列结点是否生效的一个标识位。有效时,表示该队列结点各字段已经被赋值完成;无效时,表示该队列结点各字段未被赋值完成;
其他字段:请求包还会存在一些其他的相关字段。
如图4所示,展示的是创建和销毁一个DATA QP的命令响应队列结点。可以看出,cmd response queue的结点,至少包括以下主要字段:
操作说明:用以表示具体的操作类型。可以是“create qp state(创建数据队列对状态)”、“destroy qp state(销毁数据队列对状态)”等;
error code(错误编码):用以标识命令执行后的错误编码,没有错误可以设置为0;
user private data(用户数据私有字段):用以传递用户的私有数据信息。这部分的内容,是从请求包中,原样拷贝到响应包。可以用到标识对应的request和响应包是否配对。也有一些处理后需要使用的数据,如回调函数指针等;
data qp ctx ptr(操作对象指针):用以表示操作对象DATA QP的Context内容指针;
valid bit(有效标志位):一个用来确认队列结点元素是否生效的一个标识位。有效时,表示该队列元素各字段已经被赋值完成;无效时,表示该队列元素各字段未被赋值完成;
其他字段:响应包还会存在一些其他的相关字段。
如图5所示,展示了一个命令请求队列的一个结点的执行过程,命令码为“createqp opcode”,即“创建一个数据队列对”。该命令执行后,首先,RC端会申请创造一个Context,用于存放一个新创建的DATA Queue Pair相关信息。然后,创建DATA Queue Pair,分配内存,清空、初始化数据字段(主要是valid bit)。最后,EP端会创建一个CMD的响应包,将相关字段填写完成后,放到CMD Response Queue的队尾。
如图6所示,展示的是数据请求队列中的结点。可以看出,Data request queue的结点,至少包括以下主要字段:
opcode(operation code,操作码):用以表示此次对数据进行的具体的操作类型。举例说明,对于网卡,可以是“发送数据包”等;对于密码卡,可以是对应的“对称加密”、“非对称加密”等;
data ptr(待操作数据的DDR内存地址):驱动程序在调用硬件操作前,会在RC端的DDR存储区域分配一段存放待处理的Data数据的内存空间。然后,将相关的要处理的数据放入其中,使用data ptr字段指向该数据地址;
valid bit(有效标志位):一个用来确认队列结点元素是否生效的一个标识位。有效时,表示该队列元素各字段已经被赋值完成;无效时,表示该队列元素各字段未被赋值完成;
其他字段:请求包还会存在一些其他的相关字段。
如图7所示,展示了数据响应队列中的结点。可以看出,Data response queue的结点,至少包括以下主要字段:
state(响应状态):用以表示此次对数据操作执行的结果。举例说明,对于网卡,可以是“发送数据包是否成功”等;对于密码卡,可以是对应的“对称加密是否成功”等;
data ptr(处理完成的数据的DDR内存地址):驱动程序在调用硬件操作前,会在RC端的DDR存储区域分配一段存放处理完成的Data数据的内存空间。使用response data ptr字段,指向该数据地址。然后,硬件会将相关的处理完成的数据放入其中;
valid bit(有效标志位):一个用来确认队列结点元素是否生效的一个标识位。有效时,表示该队列元素各字段已经被赋值完成;无效时,表示该队列元素各字段未被赋值完成;
其他字段:响应包还会存在一些其他的相关字段。
图8示意性示出了根据本发明实施例的RC端触发结点处理的流程图。图9示意性示出了根据本发明实施例的EP端触发结点处理的流程图。
在本发明一实施例中,EP端的BAR空间中设置包括:触发寄存器,用于存储该命令队列对的ID值;地址寄存器,用于存储该命令队列对的Context信息的地址值。
触发寄存器可以是一个32位的寄存器。地址寄存器存储系统中惟一的CMD QP的Context信息的地址值。通过该地址值,可以找到CMD QP的Context信息的地址,从而可以方便的读取CMD QP中的命令并执行。
如图8所示,在有结点需被处理,也即在存在队列对被更新的情况下,RC端将该队列对的ID值写入该触发寄存器。通过在BAR空间上引入一个触发寄存器,来实现RC端通知EP端,提供单次结点处理的触发。
可以理解的,在RC端将该队列对的ID值写入该触发寄存器之后,RC端继续处理其他事务。
如图9所示,在监测到该触发寄存器中被写入队列对的ID值的情况下,EP端从该触发寄存器中读取该队列对的ID值,查找并执行与该队列对的ID值所对应的队列对。
根据本发明实施例,通过在BAR空间上引入一个触发寄存器,来实现RC端通知EP端,触发方式简单,无需走PCIe通道流量,不必占用通信信道,避免影响正常的数据通信性能,减少EP端和RC端两侧交互需维护的数据量,也即减少轮询的数据字段,从而提升轮询速度。
图10示意性示出了根据本发明实施例的处理request队列结点的valid字段的流程图。
队列对中的结点的字段包括valid位字段,该valid位的状态包括无效状态和有效状态,该有效状态表示所在结点有效也即结点的各字段被赋值完成,该无效状态表示所在结点未生效也即结点的各字段未被赋值完成。
valid字段是一个用来确认队列结点元素生效的一个标识位。valid字段值为0表示该结点的各字段无效,即未被赋值完成。valid字段值为1表示该结点的各字段已经赋值完成,可以被EP端处理使用。
相关技术中,对于CMD QP和DATA QP的请求包由RC端产生、EP端读取使用,由RC端创建请求包。相关技术中,该请求包需要以下操作来实现维护和使用:
1.初始时全清零:当一个QP初始时,被创建,会先将其存储空间内的结点的valid字段全部设置为0,表示未被有效赋值;
2.RC端赋值后置位:RC端创建结点入队(逻辑上入队,物理上仍复用以前的结点存储空间)。该结点入队后,且各字段赋值完成,然后需要再将其valid字段设置为有效,如1。以通知EP端可以使用;
3.EP端用完清零:EP端轮询,Request队列出队,EP端取出该命令结点。执行完成后,需要由EP端将valid字段重新设置为无效,如0。
如图10所示,在本发明中,对于CMD QP和DATA QP的请求包中的valid字段,由EP端读取使用,RC端进行赋值。在一实施例中,在该数据包为请求包的情况下,该RC端用于在请求包队列中所有请求包均已进行入队和出队处理的情况下,将该请求包队列中所有请求包的valid位的状态改为无效状态,其中,在该请求包已进行入队和出队处理的情况下,将该请求包的valid位的状态设置为有效状态。
具体的,在初始状态,即队列刚创建好时,将队列所有结点ITEM的valid字段设置无效,在处理状态中,将队列中经过入队出队处理的结点的valid字段设置有效,在完成处理状态,将队列中所有结点的valid字段改为无效。
可以理解的,队列虽然从逻辑上是环形存储的,即队尾和队首相连。但是,在物理结构上,队列是顺序存储的。因此,流程图中的size表示队列中物理存储元素的个数。Head==0,表示队列的物理存储结点被顺序处理了一趟,又从第1个数据包开始存储。
以下结合图11-图14具体实施例对本发明数据包为请求包时valid位的维护进行示意性说明。
如图11所示,在初始状态,刚刚创造好CMD/DATA Request Queue时,将队列所有的结点ITEM的valid字段设置为0。此时,使用0表示valid标志位无效,即,所有的结点的字段未被赋予有效值。
如图12所示,在处理状态中,在第一趟执行处理过程中,可以发现队列中有四种类型的结点:
1.已经经过入队出队结点:图12队列中的结点ITEM-1、ITEM-2,它们的valid值被修改成1,且不用被RC端清0。
2.队列中已经赋值完成的结点:图12队列中的结点ITEM-3,它在队列中,且数据赋值已经完成,表示可以交由EP端处理,它的valid值为1。
3.队列中未完成赋值的结点:如队列中的结点ITEM-4,此结点处于队尾。由于刚进队列,相关字段还未赋值完全,所以valid值为0。
4.还未入队结点:队列中的ITEM-5到ITEM-size,这些结点还未被处理,仍然保持初始valid值为0。
如图13所示,在完成处理状态,经过处理的结点,valid字段为1。且EP端处理完成后valid值不被置回0。
第一趟执行处理完成(即Head==size,表示队列对中所有的物理结点都经过了一次入队和出队)后,valid位全部被置为1,此时,将判定有效值OK,则RC端将所有请求包的valid位的状态由有效状态改为无效状态,valid位的值不变,即此时valid为1表示结点未生效,valid为0表示该结点有效。如图14所示,在第二趟处理开始,valid为1表示结点未生效,valid为0表示该结点有效。
以上,相关技术中,需要RC端接收到EP端的消息后,占用主线程,或者另外开一个线程,才能改变valid值。无论哪种实现方式,都会增加RC端设计复杂度。而根据本发明上述实施例,无需EP端处理完结点后通知RC端改变valid值,去通过改变valid值改变valid位状态,而是通过根据入队、出队情况,在所有结点均已进行入队和出队处理的情况下,翻转一次valid值的具体含义也即状态,即可实现EP端操作完成后RC端对valid值的维护。降低了RC端的开销和对CPU的占用。
图15示意性示出了根据本发明实施例的response队列循环处理时valid位的示意图。
队列对中的结点的字段包括valid位字段,该valid位的状态包括无效状态和有效状态,该有效状态表示所在结点有效也即结点的各字段被赋值完成,该无效状态表示所在结点未生效也即结点的各字段未被赋值完成。
valid字段是一个用来确认队列结点元素生效的一个标识位。valid字段值为0表示该结点的各字段无效,即未被赋值完成。valid字段值为1表示该结点的各字段已经赋值完成,可以被RC端处理使用。
相关技术中,CMD QP和DATA QP的响应包由EP端产生、RC端读取使用。由EP端创建响应包。相关技术中,该响应包需要的操作如下:
1.初始时全清零:当一个QP初始时,被创建,会先将其存储空间内的结点的valid字段全部设置为0,表示未被有效赋值。
2.EP端赋值后置位:EP端创建结点入队(逻辑上入队,物理上仍复用以前的结点存储空间)。该结点入队后,且各字段赋值完成,然后需要再将其valid字段设置为有效,如1。以通知EP端可以使用。
3.RC端用完清零:RC端轮询,Response队列出队,RC端取出该命令结点。使用完成后,需要由RC端将valid字段重新设置为无效,如0。
如图15所示,在本发明中,对于CMD QP和DATA QP的响应包中的valid字段,由RC端读取使用,EP端进行赋值。在一实施例中,在该数据包为响应包的情况下,该EP端用于在响应包队列中所有响应包均已进行入队和出队处理的情况下,将该响应包队列中所有响应包的valid位的状态改为无效状态,该valid位的值不变。其中,在该响应包已进行入队和出队处理的情况下,将该响应包的valid位的状态设置为有效状态。
可理解的,请求包由RC端产生、EP端读取使用;而响应包由EP端产生、RC端读取使用。因此,对于响应包的valid字段的维护,具体可参见图10-14所示,仅将图10-14中RC端和EP端的位置互换即可。
需要注意的是,请求包对valid字段处理的一些RC端实现的软件算法,到了在响应包中,变成使用EP端实现;反之,处理请求包valid字段处理一些硬件算法,到了在响应包中,变成由RC端实现。
基于上述PCIe互联系统,本发明还提供了一种数据处理方法。以下将结合图16对该装置进行详细描述。
图16示意性示出了根据本发明实施例的应用于RC端的数据处理方法的流程示意图。该RC端和EP端之间采用PCIe通信,该方法包括:操作S1610, 在该RC端的DDR空间中存储队列对的Context信息。
在本发明一实施例中,该队列对包括命令队列对和数据队列对,该方法还包括:在存在队列对被更新的情况下,将该队列对的ID值写入触发寄存器,其中,该EP端的BAR空间中设置包括:该触发寄存器,用于存储该命令队列对的ID值;地址寄存器,用于存储该命令队列对的Context信息的地址值。
在本发明一实施例中,该队列对中的数据包的字段包括valid位字段,该valid位的状态包括无效状态和有效状态,该有效状态表示所在数据包有效,该有效状态表示所在数据包未生效;在该数据包为请求包的情况下,该方法还包括:在请求包队列中所有请求包均已进行入队和出队处理的情况下,将该请求包队列中所有请求包的valid位的状态改为无效状态,该valid位的值不变。
图17示意性示出了根据本发明实施例的应用于EP端的数据处理方法的流程示意图。RC端和该EP端之间采用PCIe通信,在该RC端的DDR空间中存储队列对的Context信息,该队列对包括命令队列对和数据队列对,该方法包括:操作S1710,在该EP端的BAR空间中设置触发寄存器和地址寄存器,该触发寄存器用于存储该命令队列对的ID值,该地址寄存器用于存储该命令队列对的Context信息的地址值。
在本发明一实施例中,该方法还包括:在监测到该触发寄存器中被写入队列对的ID值的情况下,从该触发寄存器中读取该队列对的ID值;查找并执行与该队列对的ID值所对应的队列对。
在本发明一实施例中,该队列对中的数据包的字段包括valid位字段,该valid位的状态包括无效状态和有效状态,该有效状态表示所在数据包有效,该有效状态表示所在数据包未生效;在该数据包为响应包的情况下,该方法还包括:在响应包队列中所有响应包均已进行入队和出队处理的情况下,将该响应包队列中所有响应包的valid位的状态改为无效状态,该valid位的值不变。
图18示意性示出了根据本发明实施例的适于实现上述数据处理方法的电子设备的方框图。
如图18所示,根据本发明实施例的电子设备1800包括处理器1801,其可以根据存储在只读存储器(ROM)1802中的程序或者从存储部分1808加载到随机访问存储器(RAM)1803中的程序而执行各种适当的动作和处理。处理器1801例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器1801还可以包括用于缓存用途的板载存储器。处理器1801可以包括用于执行根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1803中,存储有电子设备1800操作所需的各种程序和数据。处理器 1801、ROM 1802以及RAM 1803通过总线1804彼此相连。处理器1801通过执行ROM 1802和/或RAM1803中的程序来执行根据本发明实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1802和RAM 1803以外的一个或多个存储器中。处理器1801也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本发明实施例的方法流程的各种操作。
根据本发明的实施例,电子设备1800还可以包括输入/输出(I/O)接口1805,输入/输出(I/O)接口1805也连接至总线1804。电子设备1800还可以包括连接至I/O接口1805的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1807;包括硬盘等的存储部分1808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1809。通信部分1809经由诸如因特网的网络执行通信处理。驱动器1810也根据需要连接至I/O接口1805。可拆卸介质1811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1810上,以便于从其上读出的计算机程序根据需要被安装入存储部分1808。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的方法。
根据本发明的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本发明的实施例,计算机可读存储介质可以包括上文描述的ROM 1802和/或RAM 1803和/或ROM 1802和RAM 1803以外的一个或多个存储器。
本发明的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本发明实施例所提供的方法。
在该计算机程序被处理器1801执行时执行本发明实施例的系统/装置中限定的上述功能。根据本发明的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1809被下载和安装,和/或从可拆卸介质1811被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分1809从网络上被下载和安装,和/或从可拆卸介质1811被安装。在该计算机程序被处理器1801执行时,执行本发明实施例的系统中限定的上述功能。根据本发明的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本发明的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本发明的各个实施例中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
以上对本发明的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。不脱离本发明的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本发明的范围之内。
Claims (16)
1.一种PCIe互联系统,其特征在于,所述PCIe互联系统包括根复合体RC端和端点EP端,所述RC端和EP端之间采用PCIe通信,所述RC端的双倍速率同步动态随机存储DDR空间中存储队列对的上下文Context信息;
所述EP端的BAR空间中设置包括:
触发寄存器,用于存储命令队列对的ID值;
地址寄存器,用于存储所述命令队列对的Context信息的地址值。
2.根据权利要求1所述的PCIe互联系统,其特征在于,所述队列对包括命令队列对和/或数据队列对。
3.根据权利要求2所述的PCIe互联系统,其特征在于,所述RC端用于:
在存在队列对被更新的情况下,将所述队列对的ID值写入所述触发寄存器。
4.根据权利要求2或3所述的PCIe互联系统,其特征在于,所述EP端用于:
在监测到所述触发寄存器中被写入队列对的ID值的情况下,从所述触发寄存器中读取所述队列对的ID值;
查找并执行与所述队列对的ID值所对应的队列对。
5.根据权利要求1所述的PCIe互联系统,其特征在于,所述队列对中的数据包的字段包括valid位字段,所述valid位的状态包括无效状态和有效状态,所述有效状态表示所在数据包有效,所述无效状态表示所在数据包未生效。
6.根据权利要求1或5所述的PCIe互联系统,其特征在于,在数据包为请求包的情况下,所述RC端用于:
在请求包队列中所有请求包均已进行入队和出队处理的情况下,将所述请求包队列中所有请求包的valid位的状态改为无效状态,所述valid位的值不变。
7.根据权利要求1或5所述的PCIe互联系统,其特征在于,在数据包为响应包的情况下,所述EP端用于:
在响应包队列中所有响应包均已进行入队和出队处理的情况下,将所述响应包队列中所有响应包的valid位的状态改为无效状态,所述valid位的值不变。
8.一种应用于RC端的数据处理方法,其特征在于,所述RC端和EP端之间采用PCIe通信,所述方法包括:
在所述RC端的DDR空间中存储队列对的Context信息;
所述EP端的BAR空间中设置包括:
触发寄存器,用于存储命令队列对的ID值;
地址寄存器,用于存储所述命令队列对的Context信息的地址值。
9.根据权利要求8所述的数据处理方法,其特征在于,所述队列对包括命令队列对和数据队列对,所述方法还包括:
在存在队列对被更新的情况下,将所述队列对的ID值写入触发寄存器。
10.根据权利要求8或9所述的数据处理方法,其特征在于,所述队列对中的数据包的字段包括valid位字段,所述valid位的状态包括无效状态和有效状态,所述有效状态表示所在数据包有效,所述有效状态表示所在数据包未生效;
在所述数据包为请求包的情况下,所述方法还包括:
在请求包队列中所有请求包均已进行入队和出队处理的情况下,将所述请求包队列中所有请求包的valid位的状态改为无效状态,所述valid位的值不变。
11. 一种应用于EP端的数据处理方法,其特征在于,RC端和所述EP端之间采用PCIe通信,在所述RC端的DDR空间中存储队列对的Context信息,所述队列对包括命令队列对和数据队列对, 所述方法包括:
在所述EP端的BAR空间中设置触发寄存器和地址寄存器,所述触发寄存器用于存储所述命令队列对的ID值,所述地址寄存器用于存储所述命令队列对的Context信息的地址值。
12.根据权利要求11所述的数据处理方法,其特征在于,所述方法还包括:
在监测到所述触发寄存器中被写入队列对的ID值的情况下,从所述触发寄存器中读取所述队列对的ID值;
查找并执行与所述队列对的ID值所对应的队列对。
13.根据权利要求11或12所述的数据处理方法,其特征在于,所述队列对中的数据包的字段包括valid位字段,所述valid位的状态包括无效状态和有效状态,所述有效状态表示所在数据包有效,所述有效状态表示所在数据包未生效;
在所述数据包为响应包的情况下,所述方法还包括:
在响应包队列中所有响应包均已进行入队和出队处理的情况下,将所述响应包队列中所有响应包的valid位的状态改为无效状态,所述valid位的值不变。
14. 一种电子设备,其特征在于,包括:
一个或多个处理器;以及
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求8~10中任一项所述的方法,或者,执行根据权利要求11~13中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求8~10中任一项所述的方法,或者,执行根据权利要求11~13中任一项所述的方法。
16.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行根据权利要求8~10中任一项所述的方法,或者,执行根据权利要求11~13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311020806.2A CN116756070B (zh) | 2023-08-15 | 2023-08-15 | PCIe互联系统、数据处理方法、设备、存储介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311020806.2A CN116756070B (zh) | 2023-08-15 | 2023-08-15 | PCIe互联系统、数据处理方法、设备、存储介质及产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116756070A CN116756070A (zh) | 2023-09-15 |
CN116756070B true CN116756070B (zh) | 2023-10-27 |
Family
ID=87951760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311020806.2A Active CN116756070B (zh) | 2023-08-15 | 2023-08-15 | PCIe互联系统、数据处理方法、设备、存储介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116756070B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891763B (zh) * | 2024-01-17 | 2024-10-01 | 无锡众星微系统技术有限公司 | 一种多用户驱动与PCIe设备的信息交互方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107861888A (zh) * | 2017-11-08 | 2018-03-30 | 郑州云海信息技术有限公司 | Fpga卡用ddr的方法、系统、装置及可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652370B2 (en) * | 2013-12-05 | 2017-05-16 | National Instruments Corporation | Address range decomposition |
US10585819B2 (en) * | 2018-03-05 | 2020-03-10 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
WO2020055921A1 (en) * | 2018-09-10 | 2020-03-19 | GigaIO Networks, Inc. | Methods and apparatus for high-speed data bus connection and fabric management |
-
2023
- 2023-08-15 CN CN202311020806.2A patent/CN116756070B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107861888A (zh) * | 2017-11-08 | 2018-03-30 | 郑州云海信息技术有限公司 | Fpga卡用ddr的方法、系统、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116756070A (zh) | 2023-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4128956B2 (ja) | デュアル・インライン・メモリモジュール・フォーマットにおいて一連のマルチアダプティブプロセッサを採用したクラスタ型コンピュータ用スイッチ/ネットワークアダプタポート | |
US9806904B2 (en) | Ring controller for PCIe message handling | |
US8516177B2 (en) | Avoiding non-posted request deadlocks in devices by holding the sending of requests | |
CN110083461B (zh) | 一种基于fpga的多任务处理系统及方法 | |
US9244881B2 (en) | Facilitating, at least in part, by circuitry, accessing of at least one controller command interface | |
CN116756070B (zh) | PCIe互联系统、数据处理方法、设备、存储介质及产品 | |
WO2018034681A1 (en) | Apparatuses, methods, and systems for access synchronization in a shared memory | |
CN103827842B (zh) | 向控制器存储器空间写入消息 | |
US10346311B2 (en) | Configurable hardware queue management and address translation | |
JP2004537106A (ja) | 単一のオペレーティングシステムイメージ下で動作する再構成可能なプロセッサを用いるウェブサーバのためのシステムおよび方法 | |
CN105630731A (zh) | 一种多cpu环境下网卡数据处理方法和装置 | |
US8996774B2 (en) | Performing emulated message signaled interrupt handling | |
CN110825436B (zh) | 应用于人工智能芯片的计算方法和人工智能芯片 | |
US20180349300A1 (en) | Hardware queue manager with water marking | |
US10101963B2 (en) | Sending and receiving data between processing units | |
CN112650558A (zh) | 数据处理方法、装置、可读介质和电子设备 | |
CN109446130B (zh) | 一种i/o设备状态信息的获取方法及系统 | |
CN110677699A (zh) | 视频流和/或图片流数据的共享方法、装置及电子设备 | |
US9053092B2 (en) | System authorizing direct data transfers between memories of several components of that system | |
EP2887224B1 (en) | Latency agnostic transaction buffer for request-grant protocols | |
US7302548B1 (en) | System and method for communicating in a multi-processor environment | |
US20200201806A1 (en) | Apparatus and Method for Reducing Latency of Input/Output Transactions in an Information Handling System using No-Response Commands | |
US10210106B2 (en) | Configurable hardware queue management | |
CN207424866U (zh) | 一种基于异构多核处理器的内核之间的数据通讯系统 | |
US20150169325A1 (en) | Providing, at least in part, at least one indication that at least one portion of data is available for processing |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |