CN112256624B - 用于高速互连网络接口芯片的dma通信装置、芯片、设备及方法 - Google Patents
用于高速互连网络接口芯片的dma通信装置、芯片、设备及方法 Download PDFInfo
- Publication number
- CN112256624B CN112256624B CN202011209698.XA CN202011209698A CN112256624B CN 112256624 B CN112256624 B CN 112256624B CN 202011209698 A CN202011209698 A CN 202011209698A CN 112256624 B CN112256624 B CN 112256624B
- Authority
- CN
- China
- Prior art keywords
- dma
- request
- read
- read request
- 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
Images
Classifications
-
- 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
- G06F15/1735—Network adapters, e.g. SCI, Myrinet
-
- 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
-
- 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)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
Abstract
本发明公开了一种用于高速互连网络接口芯片的DMA通信装置、芯片、设备及方法,装置包括DMA写请求处理模块和DMA读请求处理模块,DMA写请求处理模块包括DMA写请求FIFO、DMA写数据FIFO、DMA写请求接收计数器、DMA写请求发送计数器和DMA写控制状态机;DMA读请求处理模块包括标签分配器、读请求仲裁逻辑、DMA读请求控制状态机、读应答仲裁逻辑和DMA读应答控制状态机。本发明能够实现高速互连网络接口芯片以DMA方式对主机端内存数据进行读写;本发明能够实现高速互连网络接口芯片多个DMA读请求源之间的DMA读操作相互独立,解决请求源之间由于竞争可能造成饿死的问题。
Description
技术领域
本发明涉及PCI-Express设备与主机端的通信实现,具体涉及一种用于高速互连网络接口芯片的DMA(Direct Memory Access)通信装置、芯片、设备及方法。
背景技术
高速互连网络接口芯片是自主设计的基于PCIE标准接口的互连通信主机接口芯片,是我国天河系列超级计算机的核心关键部件,用于实现超级计算机中的通用服务器、通用计算结点和计算结点的高速数据传输。
DMA在数据传输过程中释放了CPU(Central Processing Unit),实现了外设与主机内存之间数据的高效传输,在现代计算机系统中得以广泛应用。PCIE设备一般也采用DMA的方式与主机端内存直接进行高速数据通信。在DMA过程中,PCIE设备作为DMA的主设备,向主机端内存发起DMA读写请求;主机端作为从设备,对PCIE设备的请求进行应答。
高速互连网络接口芯片作为一种PCIE设备,其核心逻辑通过PCIE IP(Intellectual Property)向主机端发起DMA读写请求,并通过PCIE IP接收相应的请求应答,从而完成与主机的数据通信。高速互连网络接口芯片核心逻辑中有n个DMA读请求源,每个请求源均会通过PCIE IP向主机发起DMA读请求。现有高速互连网络接口芯片还有四个方面的问题需要解决:一,PCIE IP事务层的DMA请求读写端口与核心逻辑的DMA请求读写访问端口在逻辑含义和时序上并不一致,需要将两端端口进行协议解析、转化适配;二,对于同一DMA读请求源的多个读请求,PCIE IP不会按照DMA读请求发送的顺序来返回读应答,可能出现乱序返回的情形,需要对返回的读应答进行处理,保证其按序返回到请求源;三,PCIEIP同时处理的读请求个数有限,需要对n个读请求源进行合理分配调度,实现多个DMA读请求源之间相互独立,避免请求源之间由于竞争造成饿死的问题;四,DMA读写存在冲突,核心逻辑对同一地址的先写后读,必须确保写请求先于读请求发送给PCIE IP,否则会造成从主机端读回旧数据的问题。因此,需要一个用于高速互连网络接口芯片的DMA读写通信装置,从而实现高速互连网络接口芯片对主机内存数据的DMA读写操作。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种用于高速互连网络接口芯片的DMA(Direct Memory Access)通信装置、芯片、设备及方法,本发明能够将高速互连网络接口芯片核心逻辑的DMA读写请求进行解析,并生成PCIE IP事务层的DMA读写请求,从而完成高速互连网络接口芯片对主机端内存数据的DMA读写操作。
为了解决上述技术问题,本发明采用的技术方案为:
一种用于高速互连网络接口芯片的DMA通信装置,包括DMA写请求处理模块和DMA读请求处理模块,所述DMA写请求处理模块与高速互连网络接口芯片核心逻辑、DMA读请求处理模块和PCIE IP事务层相连,用于从高速互连网络接口芯片核心逻辑接收DMA写请求经解析转化后生成PCIE IP事务层的DMA写请求,所述DMA写请求处理模块包括:
DMA写请求FIFO,用于缓存DMA写请求;
DMA写数据FIFO,用于缓存DMA写数据;
DMA写请求接收计数器,用于对接收的DMA写请求计数为计数值dmaw_wtnum;
DMA写请求发送计数器,用于对发送的DMA写请求计数为计数值dmaw_rdnum;
DMA写控制状态机,用于从DMA写请求FIFO和DMA写数据FIFO中分别取出写请求和写数据并发送给PCIE IP事务层;
所述DMA写请求FIFO与高速互连网络接口芯片核心逻辑和DMA写控制状态机相连,所述DMA写数据FIFO与高速互连网络接口芯片核心逻辑和DMA写控制状态机相连,所述DMA写请求接收计数器与高速互连网络接口芯片核心逻辑和DMA读请求处理模块相连,所述DMA写请求发送计数器与DMA写控制状态机和DMA读请求处理模块相连,所述DMA写控制状态机分别与DMA写请求FIFO、DMA写数据FIFO、DMA写请求接收计数器、DMA写请求发送计数器以及PCIE IP事务层相连。
可选地,所述DMA写请求FIFO在接收到来自高速互连网络接口芯片核心逻辑写请求使能时,将写请求写入存储并返回写请求接收应答,在接收到来自DMA写控制状态机的读使能时,取出一个写请求并返回给DMA写控制状态机;所述DMA写数据FIFO在接收到来自高速互连网络接口芯片核心逻辑写数据使能时,将写数据写入存储并返回写数据接收应答,在接收到来自DMA写控制状态机的读使能时,取出一个写数据并返回给DMA写控制状态机。
可选地,所述DMA写请求接收计数器用以对来自高速互连网络接口芯片核心逻辑的写请求进行编号,其计数值记为dmaw_wtnum,当DMA写请求使能变为有效则将计数值dmaw_wtnum加1;所述DMA写请求发送计数器用以对DMA写控制状态机发送给PCIE IP事务层的DMA写请求进行编号,其计数值记为dmaw_rdnum,当DMA写控制状态机处理完成一个DMA写请求后,则将计数值dmaw_rdnum加1。
可选地,所述DMA写控制状态机具有四个状态:IDLE状态、W_REQ状态、W_DATA状态和W_DONE状态,其中IDLE状态为空闲状态,W_REQ状态为写指令状,W_DATA状态为写数据状态,W_DONE状态为写完成状态,在上电复位后DMA写控制状态机处于IDLE状态,当PCIE IP事务层的DMA写请求接收就绪且请求FIFO不为空时,发送读使能到DMA写请求FIFO并从中取出一个写请求dmaw_req,之后DMA写控制状态机转入W_REQ状态;当DMA写控制状态机处于W_REQ状态时,将从写请求dmaw_req解析出DMA写数据地址和DMA写数据长度,发送给PCIE IP事务层,同时置DMA写请求使能有效,之后DMA写控制状态机转入W_DATA状态;当DMA写控制状态机处于W_DATA状态时,发送读使能到DMA写数据FIFO,从中取出数据发送给PCIE IP事务层,并置DMA写数据使能有效,当发送数据长度等于写请求dmaw_req解析出的DMA写数据长度时,DMA写控制状态机转入W_DONE状态;当DMA写控制状态机处于W_DONE状态时,发出计数使能控制计数值dmaw_rdnum加1,并置DMA写完成有效,DMA写控制状态机转入IDLE状态。
可选地,所述DMA读请求处理模块与DMA写请求处理模块、高速互连网络接口芯片核心逻辑和PCIE IP事务层相连,从高速互连网络接口芯片核心逻辑的n个请求源接收DMA读请求,生成PCIE IP事务层的DMA读请求,以及从PCIE IP事务层接收读应答数据并返回给高速互连网络接口芯片核心逻辑对应请求源,所述DMA读请求处理模块包括:
标签分配器,用于存储当前可用的读请求标签号,用以读请求标签号的分配与回收;
读请求仲裁逻辑,用于从高速互连网络接口芯片核心逻辑接收DMA读请求,并按照轮询的方式进行仲裁分发到读请求状态机;
DMA读请求控制状态机,用于从读请求仲裁逻辑接收仲裁结果,然后取出读请求,在完成字段解析后,将DMA读事务发送到PCIE IP事务层并控制相关模块记录请求信息;
读应答仲裁逻辑,用于为任意DMA读请求源i分配一个等待应答FIFO,记为RSP_FIFO_i,用以记录DMA读请求源i已发往PCIE IP事务层但未处理读应答的请求标签号和读请求应答数据长度;
DMA读应答控制状态机,用于在接收到读应答仲裁逻辑的仲裁结果k后,从PCIE IP事务层中读出应答k的数据,并发送给相应的请求源;
所述标签分配器与DMA读请求控制状态机和DMA读应答控制状态机相连,读请求仲裁逻辑与DMA读请求控制状态机、DMA写请求处理模块和高速互连网络接口芯片核心逻辑相连,DMA读请求控制状态机与读请求仲裁逻辑、标签分配器、读应答仲裁逻辑和PCIE IP事务层相连,读应答仲裁逻辑与PCIE IP事务层、DMA读请求控制状态机和DMA读应答控制状态机相连,DMA读应答控制状态机与读应答仲裁逻辑、标签分配器和高速互连网络接口芯片核心逻辑相连。
可选地,所述标签分配器在初始状态下保存了0至m-1共m个读请求标签号,m的值由PCIE IP事务层决定,表示PCIE IP事务层可以同时处理DMA读请求的个数,每个正在处理的读请求占用一个独立的读请求标签号;当DMA读请求控制状态机处理读请求时,从标签分配器读出一个可用的读请求标签号;当DMA读应答控制状态机收到该读请求的应答后,将该读请求标签号写入标签分配器以进行回收。
可选地,所述读请求仲裁逻辑包括:
读请求队列REQ_FIFO_1~REQ_FIFO_n,任意读请求队列REQ_FIFO_i与对应的DMA读请求源i之间一一对应,DMA读请求源i对应读请求使能REQ_WEN_i和读请求REQ_i,其中1≤i≤n,n为DMA读请求源总数量,且当读请求使能REQ_WEN_i有效时,DMA读请求源i将读请求REQ_i和来自DMA写请求处理模块的计数值dmaw_wtnum拼接合并为一个数据写入对应的读请求队列REQ_FIFO_i中;
私有标签计数器1~n,分别用于记录第1~n个DMA读请求源i的实际使用标签个数rqt_tag_cnt_i,当DMA读请求控制状态机处理DMA读请求源i的请求时,实际使用标签个数rqt_tag_cnt_i值加1;当DMA读应答控制状态机回收DMA读请求源i的一个标签后,实际使用标签个数rqt_tag_cnt_i值减1,且读请求仲裁逻辑为每个DMA读请求源i设置预留标签数reserved_rd_num_i,用以保证DMA读请求源i至少有reserved_rd_num_i个标签可用,任意DMA读请求源i的占用标签数req_cnt_i取实际使用标签个数rqt_tag_cnt_i和预留标签数reserved_rd_num_i两者中的最小值;
公有标签计数器,用以记录当前所有请求源占用的标签数总和req_cnt,所述标签数总和req_cnt为各个DMA读请求源i的占用标签数req_cnt_i的总和;
读仲裁请求产生器,用于接收来自DMA写请求处理模块的计数值dmaw_rdnum,产生n位仲裁请求rqt_req,并发送给读请求仲裁逻辑,n位仲裁请求rqt_req的第i位为1则表示读请求源i的读请求可以被DMA读请求控制状态机处理,n位仲裁请求rqt_req的第i位为0则表示读请求源i没有读请求或者读请求暂时不能被DMA读请求控制状态机处理;
读请求仲裁器,用于在收到n位仲裁请求rqt_req后,按照轮询的方式产生仲裁结果j,并发送到DMA读请求控制状态机,其中1≤j≤n;
所述读应答仲裁逻辑包括:
应答数据队列RSP_FIFO_1~RSP_FIFO_n,分别用于记录第1~n个DMA读请求源的应答数据;
可用空间计数器1~可用空间计数器n,用于记录第1~n个DMA读请求源的数据接收FIFO可用空间大小;
应答仲裁请求产生器,用于根据可用空间计数器1~可用空间计数器n对应答数据队列RSP_FIFO_1~RSP_FIFO_n中的应答数据生成n个仲裁请求,并发送给读应答仲裁器;
读应答仲裁器,用于对n个仲裁请求产生仲裁结果k并发送到DMA读应答控制状态机。
可选地,所述DMA读请求控制状态机共有3个状态:IDLE状态、S_DATA状态和S_DONE状态,其中:IDLE状态为空闲状态,S_DATA状态为发送数据状态,S_DONE状态为完成状;所述DMA读请求控制状态机在上电复位后处于IDLE状态,当DMA读请求控制状态机接收到读请求仲裁逻辑发出仲裁结果j且PCIE IP事务层的DMA读请求接收ready信号有效时,根据仲裁结果向读请求仲裁逻辑中对应的读请求队列REQ_FIFO_j发出读使能,从中取出读请求,记为rdmar_fifo_data,并向标签分配器发出读使能,从中取出一个可用的读请求标签号,记为rqt_tag_dout,同时,控制读请求仲裁逻辑中的私有标签计数器j加1,而后DMA读请求控制状态机转入S_DATA状态;在DMA读请求控制状态机处于S_DATA状态时,从读请求rdmar_fifo_data中解析出DMA读请求地址和DMA读请求应答数据长度,并将读请求标签号rqt_tag_dout赋值给DMA读请求标签号,然后将读请求标签号rqt_tag_dout与读请求应答数据长度拼接后写入读应答仲裁逻辑中对应的应答数据队列RSP_FIFO_j,之后DMA读请求控制状态机转入S_DONE状态;在DMA读请求控制状态机处于S_DONE状态时,将读请求标签号、读请求地址、读请求应答数据长度发送给PCIE IP事务层,并置DMA读请求使能有效,之后DMA读请求控制状态机转入IDLE状态。
可选地,所述DMA读应答控制状态机共有三个状态:IDLE状态、READ状态和DONE状态,其中IDLE状态为空闲状态,READ状态为读状,DONE状态为完毕状态;所述DMA读应答控制状态机在上电复位后处于IDLE状态,当接收到读应答仲裁逻辑的仲裁结果k后,向读应答仲裁逻辑的应答数据队列RSP_FIFO_k发出读使能,从中取出未处理读应答的请求标签号tag_k和读请求应答数据长度length_k,之后DMA读应答控制状态机转入READ状态;在DMA读应答控制状态机处于READ状态时,将请求标签号tag_k作为应答数据请求标签号发送给PCIE IP事务层,并置DMA读数据使能有效,从PCIE IP事务层中读取读请求应答数据长度length_k的应答数据,然后置请求源k应答数据写使能有效,将应答数据发送给高速互连网络接口芯片核心逻辑,之后DMA读应答控制状态机转入DONE状态;在DMA读应答控制状态机处于DONE状态时,将请求标签号tag_k写入标签分配器,回收请求标签号tag_k,同时置应答数据接收完成有效,之后DMA读应答控制状态机转入IDLE状态。
此外,本发明还提供一种高速互连网络接口芯片,包括依次相连的PCIE IP事务层模块、DMA通信装置和核心逻辑,所述DMA通信装置为所述用于高速互连网络接口芯片的DMA通信装置。
此外,本发明还提供一种带有高速互连网络接口芯片的网络设备,所述高速互连网络接口芯片包括依次相连的PCIE IP事务层模块、DMA通信装置和核心逻辑,所述DMA通信装置为所述用于高速互连网络接口芯片的DMA通信装置。
此外,本发明还提供一种所述的用于高速互连网络接口芯片的DMA通信装置的应用方法,包括处理DMA写请求的步骤:(1)高速互连网络接口芯片核心逻辑的写请求和写数据分别存入DMA写请求FIFO和DMA写数据FIFO,将计数值dmaw_wtnum加1;(2)DMA写控制状态机从DMA写请求FIFO中取出请求,并解析出DMA写数据地址和DMA写数据长度两个字段;(3)DMA写控制状态机将写请求发送给PCIE IP事务层;(4)DMA写控制状态机从DMA写数据FIFO中取出数据,并发送给PCIE IP事务层;(5)本次写数据发送完毕后,置DMA写完成有效,将计数值dmaw_rdnum加1;(6)DMA写请求处理过程结束;
还包括发送DMA读请求的步骤:(1)当读请求仲裁逻辑接收到来自高速互连网络接口芯片核心逻辑的DMA读请求源i的DMA读请求时,将读请求和来自DMA写请求处理模块的计数值dmaw_wtnum拼接合并为一个数据写入读请求队列REQ_FIFO_i中,并返回读请求接收应答;(2)读仲裁请求产生器对所有n个请求源同时判断:条件①REQ_FIFO_i中有未读出的数据,条件②请求源i剩余预留标签或者剩余公共标签,条件③当前DMA读请求之前的DMA写请求都已经发送给PCIE IP事务层,若以上三个条件①~③全部成立,则产生DMA读请求源i的仲裁请求,并发送给读请求仲裁器;(3)读请求仲裁器按照轮询的方式产生仲裁结果j,并发送到DMA读请求控制状态机;(4)DMA读请求控制状态机从标签分配器中取出一个可用的请求标签号;(5)DMA读请求控制状态机从读请求队列REQ_FIFO_j中取出DMA读请求,并解析出读请求地址和读请求应答数据长度;(6)DMA读请求控制状态机将请求标签号和读请求应答数据长度拼接后写入读应答仲裁逻辑中对应的应答数据队列RSP_FIFO_j中;(7)DMA读请求控制状态机将读请求地址、读请求应答数据长度和请求标签号发送到PCIE IP事务层,并置DMA读请求使能有效;(8)DMA读请求发送过程结束;
还包括接收DMA读请求应答数据的步骤:(1)当读应答仲裁逻辑接收到来自PCIEIP事务层的读应答使能后,应答仲裁请求产生器对n个请求源同时进行判断:条件①PCIEIP事务层返回的读应答请求标签号与请求源i对应的应答数据队列RSP_FIFO_i顶部应答的请求标签号相匹配,条件②请求源i数据接收FIFO的可用空间大于等于应答数据队列RSP_FIFO_i顶部应答的读请求应答数据长度,当以上两个条件①~②全部成立时,产生读应答处理仲裁请求,并发送给读应答仲裁器;(2)读应答仲裁器按照轮询的方式产生仲裁结果k,并发送到DMA读应答控制状态机;(3)DMA读应答控制状态机从应答数据队列RSP_FIFO_k中取出顶部的读应答的请求标签号和读请求应答数据长度;(4)DMA读应答控制状态机将读应答的请求标签号发送给PCIE IP事务层,并置DMA读数据使能有效,根据读请求应答数据长度从PCIE IP事务层中读取应答数据;(5)DMA读应答控制状态机置请求源k应答数据写使能有效,将应答数据发送给高速互连网络接口芯片核心逻辑;(6)DMA读应答控制状态机将应答数据请求标签号写入标签分配器,回收该请求标签号,同时置应答数据接收完成有效;(7)接收DMA读请求应答数据的过程结束。
和现有技术相比,本发明具有下述优点:本发明包括DMA写请求处理模块和DMA读请求处理模块,通过DMA写请求处理模块和DMA读请求处理模块可将高速互连网络接口芯片核心逻辑的DMA读写请求进行解析,实现高速互连网络接口芯片以DMA方式对主机端内存数据进行读写;本发明能够实现高速互连网络接口芯片多个DMA读请求源之间的DMA读操作相互独立,解决请求源之间由于竞争可能造成饿死的问题。
附图说明
图1是本发明实施例的DMA通信装置的结构示意图。
图2是本发明实施例中DMA写处理模块的结构示意图。
图3是本发明实施例中DMA读处理模块的结构示意图。
具体实施方式
如图1所示,本实施例用于高速互连网络接口芯片的DMA通信装置包括DMA写请求处理模块和DMA读请求处理模块,参见图2,其中DMA写请求处理模块与高速互连网络接口芯片核心逻辑、DMA读请求处理模块和PCIE IP事务层相连,用于从高速互连网络接口芯片核心逻辑接收DMA写请求经解析转化后生成PCIE IP事务层的DMA写请求,从而完成高速互连网络接口芯片对主机端内存数据的DMA读写操作。
如图2所示,DMA写请求处理模块包括:
DMA写请求FIFO(First In First Out),用于缓存DMA写请求;
DMA写数据FIFO,用于缓存DMA写数据;
DMA写请求接收计数器,用于对接收的DMA写请求计数为计数值dmaw_wtnum;
DMA写请求发送计数器,用于对发送的DMA写请求计数为计数值dmaw_rdnum;
DMA写控制状态机,用于从DMA写请求FIFO和DMA写数据FIFO中分别取出写请求和写数据并发送给PCIE IP事务层;
DMA写请求FIFO与高速互连网络接口芯片核心逻辑和DMA写控制状态机相连,DMA写数据FIFO与高速互连网络接口芯片核心逻辑和DMA写控制状态机相连,DMA写请求接收计数器与高速互连网络接口芯片核心逻辑和DMA读请求处理模块相连,DMA写请求发送计数器与DMA写控制状态机和DMA读请求处理模块相连,DMA写控制状态机分别与DMA写请求FIFO、DMA写数据FIFO、DMA写请求接收计数器、DMA写请求发送计数器以及PCIE IP事务层相连。
本实施例中,DMA写请求FIFO在接收到来自高速互连网络接口芯片核心逻辑写请求使能时,将写请求写入存储并返回写请求接收应答,在接收到来自DMA写控制状态机的读使能时,取出一个写请求并返回给DMA写控制状态机;DMA写数据FIFO在接收到来自高速互连网络接口芯片核心逻辑写数据使能时,将写数据写入存储并返回写数据接收应答,在接收到来自DMA写控制状态机的读使能时,取出一个写数据并返回给DMA写控制状态机。
本实施例中,DMA写请求接收计数器用以对来自高速互连网络接口芯片核心逻辑的写请求进行编号,其计数值记为dmaw_wtnum,当DMA写请求使能变为有效则将计数值dmaw_wtnum加1;DMA写请求发送计数器用以对DMA写控制状态机发送给PCIE IP事务层的DMA写请求进行编号,其计数值记为dmaw_rdnum,当DMA写控制状态机处理完成一个DMA写请求后,则将计数值dmaw_rdnum加1。
本实施例中,DMA写控制状态机具有四个状态:IDLE状态、W_REQ状态、W_DATA状态和W_DONE状态,其中IDLE状态为空闲状态,W_REQ状态为写指令状,W_DATA状态为写数据状态,W_DONE状态为写完成状态,在上电复位后DMA写控制状态机处于IDLE状态,当PCIE IP事务层的DMA写请求接收就绪且请求FIFO不为空时,发送读使能到DMA写请求FIFO并从中取出一个写请求dmaw_req,之后DMA写控制状态机转入W_REQ状态;当DMA写控制状态机处于W_REQ状态时,将从写请求dmaw_req解析出DMA写数据地址和DMA写数据长度,发送给PCIE IP事务层,同时置DMA写请求使能有效,之后DMA写控制状态机转入W_DATA状态;当DMA写控制状态机处于W_DATA状态时,发送读使能到DMA写数据FIFO,从中取出数据发送给PCIE IP事务层,并置DMA写数据使能有效,当发送数据长度等于写请求dmaw_req解析出的DMA写数据长度时,DMA写控制状态机转入W_DONE状态;当DMA写控制状态机处于W_DONE状态时,发出计数使能控制计数值dmaw_rdnum加1,并置DMA写完成有效,DMA写控制状态机转入IDLE状态。
本实施例中,从高速互连网络接口芯片核心逻辑接收DMA写请求经解析转化后生成PCIE IP事务层的DMA写请求的步骤(即发送DMA写请求)包括:(1)高速互连网络接口芯片核心逻辑的写请求和写数据分别存入DMA写请求FIFO和DMA写数据FIFO,将计数值dmaw_wtnum加1;(2)DMA写控制状态机从DMA写请求FIFO中取出请求,并解析出DMA写数据地址和DMA写数据长度两个字段;(3)DMA写控制状态机将写请求发送给PCIE IP事务层;(4)DMA写控制状态机从DMA写数据FIFO中取出数据,并发送给PCIE IP事务层;(5)本次写数据发送完毕后,置DMA写完成有效,将计数值dmaw_rdnum加1;(6)DMA写请求处理过程结束。
本实施例中的DMA读请求处理模块与DMA写请求处理模块、高速互连网络接口芯片核心逻辑和PCIE IP事务层相连,从高速互连网络接口芯片核心逻辑的n个请求源接收DMA读请求,生成PCIE IP事务层的DMA读请求,以及从PCIE IP事务层接收读应答数据并返回给高速互连网络接口芯片核心逻辑对应请求源。
如图3所示,DMA读请求处理模块包括:
标签分配器,用于存储当前可用的读请求标签号,用以读请求标签号的分配与回收;
读请求仲裁逻辑,用于从高速互连网络接口芯片核心逻辑接收DMA读请求,并按照轮询的方式进行仲裁分发到读请求状态机;
DMA读请求控制状态机,用于从读请求仲裁逻辑接收仲裁结果,然后取出读请求,在完成字段解析后,将DMA读事务发送到PCIE IP事务层并控制相关模块记录请求信息;
读应答仲裁逻辑,用于为任意DMA读请求源i分配一个等待应答FIFO,记为RSP_FIFO_i,用以记录DMA读请求源i已发往PCIE IP事务层但未处理读应答的请求标签号和读请求应答数据长度;
DMA读应答控制状态机,用于在接收到读应答仲裁逻辑的仲裁结果k后,从PCIE IP事务层中读出应答k的数据,并发送给相应的请求源;
标签分配器与DMA读请求控制状态机和DMA读应答控制状态机相连,读请求仲裁逻辑与DMA读请求控制状态机、DMA写请求处理模块和高速互连网络接口芯片核心逻辑相连,DMA读请求控制状态机与读请求仲裁逻辑、标签分配器、读应答仲裁逻辑和PCIE IP事务层相连,读应答仲裁逻辑与PCIE IP事务层、DMA读请求控制状态机和DMA读应答控制状态机相连,DMA读应答控制状态机与读应答仲裁逻辑、标签分配器和高速互连网络接口芯片核心逻辑相连。
本实施例中,标签分配器在初始状态下保存了0至m-1共m个读请求标签号(tag),m的值由PCIE IP事务层决定,表示PCIE IP事务层可以同时处理DMA读请求的个数,每个正在处理的读请求占用一个独立的读请求标签号;当DMA读请求控制状态机处理读请求时,从标签分配器读出一个可用的读请求标签号;当DMA读应答控制状态机收到该读请求的应答后,将该读请求标签号写入标签分配器以进行回收。
如图3所示,本实施例中的读请求仲裁逻辑包括:
读请求队列REQ_FIFO_1~REQ_FIFO_n,任意读请求队列REQ_FIFO_i与对应的DMA读请求源i之间一一对应,DMA读请求源i对应读请求使能REQ_WEN_i和读请求REQ_i,其中1≤i≤n,n为DMA读请求源总数量,且当读请求使能REQ_WEN_i有效时,DMA读请求源i将读请求REQ_i和来自DMA写请求处理模块的计数值dmaw_wtnum拼接合并为一个数据写入对应的读请求队列REQ_FIFO_i中;
私有标签计数器(私有tag计数器)1~n,分别用于记录第1~n个DMA读请求源i的实际使用标签个数rqt_tag_cnt_i,当DMA读请求控制状态机处理DMA读请求源i的请求时,实际使用标签个数rqt_tag_cnt_i值加1;当DMA读应答控制状态机回收DMA读请求源i的一个标签后,实际使用标签个数rqt_tag_cnt_i值减1,且读请求仲裁逻辑为每个DMA读请求源i设置预留标签数reserved_rd_num_i,用以保证DMA读请求源i至少有reserved_rd_num_i个标签可用,任意DMA读请求源i的占用标签数req_cnt_i取实际使用标签个数rqt_tag_cnt_i和预留标签数reserved_rd_num_i两者中的最小值;
公有标签计数器,用以记录当前所有请求源占用的标签数总和req_cnt,标签数总和req_cnt为各个DMA读请求源i的占用标签数req_cnt_i的总和;
读仲裁请求产生器,用于接收来自DMA写请求处理模块的计数值dmaw_rdnum,产生n位仲裁请求rqt_req,并发送给读请求仲裁逻辑,n位仲裁请求rqt_req的第i位为1则表示读请求源i的读请求可以被DMA读请求控制状态机处理,n位仲裁请求rqt_req的第i位为0则表示读请求源i没有读请求或者读请求暂时不能被DMA读请求控制状态机处理;
读请求仲裁器,用于在收到n位仲裁请求rqt_req后,按照轮询的方式产生仲裁结果j,并发送到DMA读请求控制状态机,其中1≤j≤n。
为了保证芯片各请求源相互独立,避免出现某个请求源占用所有标签从而导致其他请求源的请求无法执行的情况,读请求仲裁逻辑为每个请求源预留一个标签数,记为reserved_rd_num_i,用以保证DMA读请求源i至少有reserved_rd_num_i个标签可用。DMA读请求源i占用的标签数取rqt_tag_cnt_i和reserved_rd_num_i两者的最小值,记为req_cnt_i。公有标签计数器用以记录当前所有请求源占用的标签数总和,其值记为req_cnt。读仲裁请求产生器接收来自DMA写请求处理模块dmaw_rdnum信号,产生n位仲裁请求rqt_req,并发送给读请求仲裁器,rqt_req第i位为1则表示DMA读请求源i的读请求可以被DMA读请求控制状态机处理,rqt_req第i位为0则表示DMA读请求源i没有读请求或者读请求暂时不能被DMA读请求控制状态机处理。本实施例中,n位仲裁请求rqt_req第i位为1的充分条件有三个:
1)读请求队列REQ_FIFO_i中有未读出的数据,记读请求队列REQ_FIFO_i顶部数据的dmaw_wtnum字段(计数值)为dmaw_wt_i;
2)DMA读请求源i剩余预留标签或者剩余公共标签的数量满足判断表达式:
(rqt_tag_cnt_i<reserved_rd_num_i)|(req_cnt<m);
即:实际使用标签个数rqt_tag_cnt_i小于预留标签数reserved_rd_num_i,或者标签数总和req_cnt小于预设阈值m。
3)当前DMA读请求之前的DMA写请求都已经发送给PCIE IP事务层,判断表达式为:
(((dmaw_wt_i==dmaw_rdnum)&(dmaw_rdnum>dmaw_wt_i))|((dmaw_wt_i!=dmaw_rdnum)&(dmaw_rdnum<dmaw_wt_i)))=1
其中,dmaw_wt_i为读请求队列REQ_FIFO_i顶部数据的dmaw_wtnum字段(计数值),dmaw_rdnum为来自DMA写请求处理模块的计数值。这是为了避免将先写后读的顺序错误地处理为先读后写,从而造成从主机端取回的读应答数据错误。读请求仲裁器在收到仲裁请求后,按照轮询的方式产生仲裁结果j(1≤j≤n),并发送到DMA读请求控制状态机。
如图3所示,本实施例中的读应答仲裁逻辑包括:
应答数据队列RSP_FIFO_1~RSP_FIFO_n,分别用于记录第1~n个DMA读请求源的应答数据;
可用空间计数器1~可用空间计数器n,用于记录第1~n个DMA读请求源的数据接收FIFO可用空间大小;
应答仲裁请求产生器,用于根据可用空间计数器1~可用空间计数器n对应答数据队列RSP_FIFO_1~RSP_FIFO_n中的应答数据生成n个仲裁请求,并发送给读应答仲裁器;
读应答仲裁器,用于对n个仲裁请求产生仲裁结果k并发送到DMA读应答控制状态机。
应答仲裁请求产生器接收来自PCIE IP事务层读应答使能后,产生n位读应答处理仲裁请求rsq_req,并发送给读应答仲裁器,rsp_req第i位为1则表示RSP_FIFO_i顶部应答可以被DMA读应答控制状态机处理,rsp_req第i位为0则表示RSP_FIFO_i中没有等待处理的读应答或者顶部应答不能被DMA读应答控制状态机处理。rqt_req第i位为1的充分条件有两个:1)PCIE IP事务层返回的读应答请求标签号与RSP_FIFO_i顶部应答的请求标签号相匹配,从而保证请求源内部请求顺序返回;2)请求源i数据接收FIFO的可用空间大于等于RSP_FIFO_i顶部应答的读请求应答数据长度,以确保请求源i有足够的空间来接收本次应答数据。读应答仲裁器在收到仲裁请求后,按照轮询的方式产生仲裁结果k(1≤k≤n),并发送到DMA读应答控制状态机。
本实施例中,DMA读请求控制状态机共有3个状态:IDLE状态、S_DATA状态和S_DONE状态,其中:IDLE状态为空闲状态,S_DATA状态为发送数据状态,S_DONE状态为完成状;DMA读请求控制状态机在上电复位后处于IDLE状态,当DMA读请求控制状态机接收到读请求仲裁逻辑发出仲裁结果j且PCIE IP事务层的DMA读请求接收ready信号有效时,根据仲裁结果向读请求仲裁逻辑中对应的读请求队列REQ_FIFO_j发出读使能,从中取出读请求,记为rdmar_fifo_data,并向标签分配器发出读使能,从中取出一个可用的读请求标签号,记为rqt_tag_dout,同时,控制读请求仲裁逻辑中的私有标签计数器j加1,而后DMA读请求控制状态机转入S_DATA状态;在DMA读请求控制状态机处于S_DATA状态时,从读请求rdmar_fifo_data中解析出DMA读请求地址和DMA读请求应答数据长度,并将读请求标签号rqt_tag_dout赋值给DMA读请求标签号,然后将读请求标签号rqt_tag_dout与读请求应答数据长度拼接后写入读应答仲裁逻辑中对应的应答数据队列RSP_FIFO_j,之后DMA读请求控制状态机转入S_DONE状态;在DMA读请求控制状态机处于S_DONE状态时,将读请求标签号、读请求地址、读请求应答数据长度发送给PCIE IP事务层,并置DMA读请求使能有效,之后DMA读请求控制状态机转入IDLE状态。
本实施例中,DMA读应答控制状态机共有三个状态:IDLE状态、READ状态和DONE状态,IDLE状态为空闲状态,READ状态为读状,DONE状态为完毕状态;DMA读应答控制状态机在上电复位后处于IDLE状态,当接收到读应答仲裁逻辑的仲裁结果k后,向读应答仲裁逻辑的应答数据队列RSP_FIFO_k发出读使能,从中取出未处理读应答的请求标签号tag_k和读请求应答数据长度length_k,之后DMA读应答控制状态机转入READ状态;在DMA读应答控制状态机处于READ状态时,将请求标签号tag_k作为应答数据请求标签号发送给PCIE IP事务层,并置DMA读数据使能有效,从PCIE IP事务层中读取读请求应答数据长度length_k的应答数据,然后置请求源k应答数据写使能有效,将应答数据发送给高速互连网络接口芯片核心逻辑,之后DMA读应答控制状态机转入DONE状态;在DMA读应答控制状态机处于DONE状态时,将请求标签号tag_k写入标签分配器,回收请求标签号tag_k,同时置应答数据接收完成有效,之后DMA读应答控制状态机转入IDLE状态。
此外,本实施例还提供一种高速互连网络接口芯片,包括依次相连的PCIE IP事务层模块、DMA通信装置和核心逻辑,所述DMA通信装置为所述用于高速互连网络接口芯片的DMA通信装置。
此外,本实施例还提供一种带有高速互连网络接口芯片的网络设备,所述高速互连网络接口芯片包括依次相连的PCIE IP事务层模块、DMA通信装置和核心逻辑,所述DMA通信装置为所述用于高速互连网络接口芯片的DMA通信装置。
此外,本实施例还提供一种所述的用于高速互连网络接口芯片的DMA通信装置的应用方法,包括处理DMA写请求的步骤:(1)高速互连网络接口芯片核心逻辑的写请求和写数据分别存入DMA写请求FIFO和DMA写数据FIFO,将计数值dmaw_wtnum加1;(2)DMA写控制状态机从DMA写请求FIFO中取出请求,并解析出DMA写数据地址和DMA写数据长度两个字段;(3)DMA写控制状态机将写请求发送给PCIE IP事务层;(4)DMA写控制状态机从DMA写数据FIFO中取出数据,并发送给PCIE IP事务层;(5)本次写数据发送完毕后,置DMA写完成有效,将计数值dmaw_rdnum加1;(6)DMA写请求处理过程结束;
还包括发送DMA读请求的步骤:(1)当读请求仲裁逻辑接收到来自高速互连网络接口芯片核心逻辑的DMA读请求源i的DMA读请求时,将读请求和来自DMA写请求处理模块的计数值dmaw_wtnum拼接合并为一个数据写入读请求队列REQ_FIFO_i中,并返回读请求接收应答;(2)读仲裁请求产生器对所有n个请求源同时判断:条件①REQ_FIFO_i中有未读出的数据,条件②请求源i剩余预留标签或者剩余公共标签,条件③当前DMA读请求之前的DMA写请求都已经发送给PCIE IP事务层,若以上三个条件①~③全部成立,则产生DMA读请求源i的仲裁请求,并发送给读请求仲裁器;(3)读请求仲裁器按照轮询的方式产生仲裁结果j,并发送到DMA读请求控制状态机;(4)DMA读请求控制状态机从标签分配器中取出一个可用的请求标签号;(5)DMA读请求控制状态机从读请求队列REQ_FIFO_j中取出DMA读请求,并解析出读请求地址和读请求应答数据长度;(6)DMA读请求控制状态机将请求标签号和读请求应答数据长度拼接后写入读应答仲裁逻辑中对应的应答数据队列RSP_FIFO_j中;(7)DMA读请求控制状态机将读请求地址、读请求应答数据长度和请求标签号发送到PCIE IP事务层,并置DMA读请求使能有效;(8)DMA读请求发送过程结束;
还包括接收DMA读请求应答数据的步骤:(1)当读应答仲裁逻辑接收到来自PCIEIP事务层的读应答使能后,应答仲裁请求产生器对n个请求源同时进行判断:条件①PCIEIP事务层返回的读应答请求标签号与请求源i对应的应答数据队列RSP_FIFO_i顶部应答的请求标签号相匹配,条件②请求源i数据接收FIFO的可用空间大于等于应答数据队列RSP_FIFO_i顶部应答的读请求应答数据长度,当以上两个条件①~②全部成立时,产生读应答处理仲裁请求,并发送给读应答仲裁器;(2)读应答仲裁器按照轮询的方式产生仲裁结果k,并发送到DMA读应答控制状态机;(3)DMA读应答控制状态机从应答数据队列RSP_FIFO_k中取出顶部的读应答的请求标签号和读请求应答数据长度;(4)DMA读应答控制状态机将读应答的请求标签号发送给PCIE IP事务层,并置DMA读数据使能有效,根据读请求应答数据长度从PCIE IP事务层中读取应答数据;(5)DMA读应答控制状态机置请求源k应答数据写使能有效,将应答数据发送给高速互连网络接口芯片核心逻辑;(6)DMA读应答控制状态机将应答数据请求标签号写入标签分配器,回收该请求标签号,同时置应答数据接收完成有效;(7)接收DMA读请求应答数据的过程结束。
综上所述,本实施例用于高速互连网络接口芯片的DMA通信装置能够将高速互连网络接口芯片核心逻辑的DMA读写请求进行解析,并生成PCIE IP事务层的DMA读写请求,从而完成高速互连网络接口芯片对主机端内存数据的DMA读写操作。而且,本实施例用于高速互连网络接口芯片的DMA通信装置通过将高速互连网络接口芯片核心逻辑的DMA读写请求进行解析,实现高速互连网络接口芯片以DMA方式对主机端内存数据进行读写;本实施例能够实现同一DMA读请求源的读应答按照读请求发送顺序按序返回,避免出现数据乱序的问题;本实施例能够实现高速互连网络接口芯片多个DMA读请求源之间的DMA读操作相互独立,解决请求源之间由于竞争可能造成饿死的问题;本实施例能够解决先写后读的冲突,保证DMA读写请求按序处理,避免出现读回旧数据的错误。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种用于高速互连网络接口芯片的DMA通信装置,包括DMA写请求处理模块和DMA读请求处理模块,其特征在于,所述DMA写请求处理模块与高速互连网络接口芯片核心逻辑、DMA读请求处理模块和PCIE IP事务层相连,用于从高速互连网络接口芯片核心逻辑接收DMA写请求经解析转化后生成PCIE IP事务层的DMA写请求,所述DMA写请求处理模块包括:
DMA写请求FIFO,用于缓存DMA写请求;
DMA写数据FIFO,用于缓存DMA写数据;
DMA写请求接收计数器,用于对接收的DMA写请求计数为计数值dmaw_wtnum;
DMA写请求发送计数器,用于对发送的DMA写请求计数为计数值dmaw_rdnum;
DMA写控制状态机,用于从DMA写请求FIFO和DMA写数据FIFO中分别取出写请求和写数据并发送给PCIE IP事务层;
所述DMA写请求FIFO与高速互连网络接口芯片核心逻辑和DMA写控制状态机相连,所述DMA写数据FIFO与高速互连网络接口芯片核心逻辑和DMA写控制状态机相连,所述DMA写请求接收计数器与高速互连网络接口芯片核心逻辑和DMA读请求处理模块相连,所述DMA写请求发送计数器与DMA写控制状态机和DMA读请求处理模块相连,所述DMA写控制状态机分别与DMA写请求FIFO、DMA写数据FIFO、DMA写请求接收计数器、DMA写请求发送计数器以及PCIEIP事务层相连。
2.根据权利要求1所述的用于高速互连网络接口芯片的DMA通信装置,其特征在于,所述DMA写请求FIFO在接收到来自高速互连网络接口芯片核心逻辑写请求使能时,将写请求写入存储并返回写请求接收应答,在接收到来自DMA写控制状态机的读使能时,取出一个写请求并返回给DMA写控制状态机;所述DMA写数据FIFO在接收到来自高速互连网络接口芯片核心逻辑写数据使能时,将写数据写入存储并返回写数据接收应答,在接收到来自DMA写控制状态机的读使能时,取出一个写数据并返回给DMA写控制状态机;所述DMA写请求接收计数器用以对来自高速互连网络接口芯片核心逻辑的写请求进行编号,其计数值记为dmaw_wtnum,当DMA写请求使能变为有效则将计数值dmaw_wtnum加1;所述DMA写请求发送计数器用以对DMA写控制状态机发送给PCIE IP事务层的DMA写请求进行编号,其计数值记为dmaw_rdnum,当DMA写控制状态机处理完成一个DMA写请求后,则将计数值dmaw_rdnum加1。
3.根据权利要求2所述的用于高速互连网络接口芯片的DMA通信装置,其特征在于,所述DMA写控制状态机具有四个状态:IDLE状态、W_REQ状态、W_DATA状态和W_DONE状态,其中IDLE状态为空闲状态,W_REQ状态为写指令状,W_DATA状态为写数据状态,W_DONE状态为写完成状态,在上电复位后DMA写控制状态机处于IDLE状态,当PCIE IP事务层的DMA写请求接收就绪且请求FIFO不为空时,发送读使能到DMA写请求FIFO并从中取出一个写请求dmaw_req,之后DMA写控制状态机转入W_REQ状态;当DMA写控制状态机处于W_REQ状态时,将从写请求dmaw_req解析出DMA写数据地址和DMA写数据长度,发送给PCIE IP事务层,同时置DMA写请求使能有效,之后DMA写控制状态机转入W_DATA状态;当DMA写控制状态机处于W_DATA状态时,发送读使能到DMA写数据FIFO,从中取出数据发送给PCIE IP事务层,并置DMA写数据使能有效,当发送数据长度等于写请求dmaw_req解析出的DMA写数据长度时,DMA写控制状态机转入W_DONE状态;当DMA写控制状态机处于W_DONE状态时,发出计数使能控制计数值dmaw_rdnum加1,并置DMA写完成有效,DMA写控制状态机转入IDLE状态。
4.根据权利要求3所述的用于高速互连网络接口芯片的DMA通信装置,其特征在于,所述DMA读请求处理模块与DMA写请求处理模块、高速互连网络接口芯片核心逻辑和PCIE IP事务层相连,从高速互连网络接口芯片核心逻辑的n个请求源接收DMA读请求,生成PCIE IP事务层的DMA读请求,以及从PCIE IP事务层接收读应答数据并返回给高速互连网络接口芯片核心逻辑对应请求源,所述DMA读请求处理模块包括:
标签分配器,用于存储当前可用的读请求标签号,用以读请求标签号的分配与回收;
读请求仲裁逻辑,用于从高速互连网络接口芯片核心逻辑接收DMA读请求,并按照轮询的方式进行仲裁分发到读请求状态机;
DMA读请求控制状态机,用于从读请求仲裁逻辑接收仲裁结果,然后取出读请求,在完成字段解析后,将DMA读事务发送到PCIE IP事务层并控制相关模块记录请求信息;
读应答仲裁逻辑,用于为任意DMA读请求源i分配一个等待应答FIFO,记为RSP_FIFO_i,用以记录DMA读请求源i已发往PCIE IP事务层但未处理读应答的请求标签号和读请求应答数据长度;
DMA读应答控制状态机,用于在接收到读应答仲裁逻辑的仲裁结果k后,从PCIE IP事务层中读出应答k的数据,并发送给相应的请求源;
所述标签分配器与DMA读请求控制状态机和DMA读应答控制状态机相连,读请求仲裁逻辑与DMA读请求控制状态机、DMA写请求处理模块和高速互连网络接口芯片核心逻辑相连,DMA读请求控制状态机与读请求仲裁逻辑、标签分配器、读应答仲裁逻辑和PCIE IP事务层相连,读应答仲裁逻辑与PCIE IP事务层、DMA读请求控制状态机和DMA读应答控制状态机相连,DMA读应答控制状态机与读应答仲裁逻辑、标签分配器和高速互连网络接口芯片核心逻辑相连。
5.根据权利要求4所述的用于高速互连网络接口芯片的DMA通信装置,其特征在于,所述标签分配器在初始状态下保存了0至m-1共m个读请求标签号,m的值由PCIE IP事务层决定,表示PCIE IP事务层可以同时处理DMA读请求的个数,每个正在处理的读请求占用一个独立的读请求标签号;当DMA读请求控制状态机处理读请求时,从标签分配器读出一个可用的读请求标签号;当DMA读应答控制状态机收到该读请求的应答后,将该读请求标签号写入标签分配器以进行回收。
6.根据权利要求5所述的用于高速互连网络接口芯片的DMA通信装置,其特征在于,所述读请求仲裁逻辑包括:
读请求队列REQ_FIFO_1~REQ_FIFO_n,任意读请求队列REQ_FIFO_i与对应的DMA读请求源i之间一一对应,DMA读请求源i对应读请求使能REQ_WEN_i和读请求REQ_i,其中1≤i≤n,n为DMA读请求源总数量,且当读请求使能REQ_WEN_i有效时,DMA读请求源i将读请求REQ_i和来自DMA写请求处理模块的计数值dmaw_wtnum拼接合并为一个数据写入对应的读请求队列REQ_FIFO_i中;
私有标签计数器1~n,分别用于记录第1~n个DMA读请求源i的实际使用标签个数rqt_tag_cnt_i,当DMA读请求控制状态机处理DMA读请求源i的请求时,实际使用标签个数rqt_tag_cnt_i值加1;当DMA读应答控制状态机回收DMA读请求源i的一个标签后,实际使用标签个数rqt_tag_cnt_i值减1,且读请求仲裁逻辑为每个DMA读请求源i设置预留标签数reserved_rd_num_i,用以保证DMA读请求源i至少有reserved_rd_num_i个标签可用,任意DMA读请求源i的占用标签数req_cnt_i取实际使用标签个数rqt_tag_cnt_i和预留标签数reserved_rd_num_i两者中的最小值;
公有标签计数器,用以记录当前所有请求源占用的标签数总和req_cnt,所述标签数总和req_cnt为各个DMA读请求源i的占用标签数req_cnt_i的总和;
读仲裁请求产生器,用于接收来自DMA写请求处理模块的计数值dmaw_rdnum,产生n位仲裁请求rqt_req,并发送给读请求仲裁逻辑,n位仲裁请求rqt_req的第i位为1则表示读请求源i的读请求可以被DMA读请求控制状态机处理,n位仲裁请求rqt_req的第i位为0则表示读请求源i没有读请求或者读请求暂时不能被DMA读请求控制状态机处理;
读请求仲裁器,用于在收到n位仲裁请求rqt_req后,按照轮询的方式产生仲裁结果j,并发送到DMA读请求控制状态机,其中1≤j≤n;
所述读应答仲裁逻辑包括:
应答数据队列RSP_FIFO_1~RSP_FIFO_n,分别用于记录第1~n个DMA读请求源的应答数据;
可用空间计数器1~可用空间计数器n,用于记录第1~n个DMA读请求源的数据接收FIFO可用空间大小;
应答仲裁请求产生器,用于根据可用空间计数器1~可用空间计数器n对应答数据队列RSP_FIFO_1~RSP_FIFO_n中的应答数据生成n个仲裁请求,并发送给读应答仲裁器;
读应答仲裁器,用于对n个仲裁请求产生仲裁结果k并发送到DMA读应答控制状态机。
7.根据权利要求6所述的用于高速互连网络接口芯片的DMA通信装置,其特征在于,所述DMA读请求控制状态机共有3个状态:IDLE状态、S_DATA状态和S_DONE状态,其中:IDLE状态为空闲状态,S_DATA状态为发送数据状态,S_DONE状态为完成状;所述DMA读请求控制状态机在上电复位后处于IDLE状态,当DMA读请求控制状态机接收到读请求仲裁逻辑发出仲裁结果j且PCIE IP事务层的DMA读请求接收ready信号有效时,根据仲裁结果向读请求仲裁逻辑中对应的读请求队列REQ_FIFO_j发出读使能,从中取出读请求,记为rdmar_fifo_data,并向标签分配器发出读使能,从中取出一个可用的读请求标签号,记为rqt_tag_dout,同时,控制读请求仲裁逻辑中的私有标签计数器j加1,而后DMA读请求控制状态机转入S_DATA状态;在DMA读请求控制状态机处于S_DATA状态时,从读请求rdmar_fifo_data中解析出DMA读请求地址和DMA读请求应答数据长度,并将读请求标签号rqt_tag_dout赋值给DMA读请求标签号,然后将读请求标签号rqt_tag_dout与读请求应答数据长度拼接后写入读应答仲裁逻辑中对应的应答数据队列RSP_FIFO_j,之后DMA读请求控制状态机转入S_DONE状态;在DMA读请求控制状态机处于S_DONE状态时,将读请求标签号、读请求地址、读请求应答数据长度发送给PCIE IP事务层,并置DMA读请求使能有效,之后DMA读请求控制状态机转入IDLE状态;所述DMA读应答控制状态机共有三个状态:IDLE状态、READ状态和DONE状态,其中IDLE状态为空闲状态,READ状态为读状,DONE状态为完毕状态;所述DMA读应答控制状态机在上电复位后处于IDLE状态,当接收到读应答仲裁逻辑的仲裁结果k后,向读应答仲裁逻辑的应答数据队列RSP_FIFO_k发出读使能,从中取出未处理读应答的请求标签号tag_k和读请求应答数据长度length_k,之后DMA读应答控制状态机转入READ状态;在DMA读应答控制状态机处于READ状态时,将请求标签号tag_k作为应答数据请求标签号发送给PCIE IP事务层,并置DMA读数据使能有效,从PCIE IP事务层中读取读请求应答数据长度length_k的应答数据,然后置请求源k应答数据写使能有效,将应答数据发送给高速互连网络接口芯片核心逻辑,之后DMA读应答控制状态机转入DONE状态;在DMA读应答控制状态机处于DONE状态时,将请求标签号tag_k写入标签分配器,回收请求标签号tag_k,同时置应答数据接收完成有效,之后DMA读应答控制状态机转入IDLE状态。
8.一种高速互连网络接口芯片,包括依次相连的PCIE IP事务层模块、DMA通信装置和核心逻辑,其特征在于,所述DMA通信装置为权利要求1~7中任意一项所述用于高速互连网络接口芯片的DMA通信装置。
9.一种带有高速互连网络接口芯片的网络设备,所述高速互连网络接口芯片包括依次相连的PCIE IP事务层模块、DMA通信装置和核心逻辑,其特征在于,所述DMA通信装置为权利要求1~7中任意一项所述用于高速互连网络接口芯片的DMA通信装置。
10.一种权利要求1~7中任意一项所述的用于高速互连网络接口芯片的DMA通信装置的应用方法,其特征在于,包括处理DMA写请求的步骤:(1)高速互连网络接口芯片核心逻辑的写请求和写数据分别存入DMA写请求FIFO和DMA写数据FIFO,将计数值dmaw_wtnum加1;(2)DMA写控制状态机从DMA写请求FIFO中取出请求,并解析出DMA写数据地址和DMA写数据长度两个字段;(3)DMA写控制状态机将写请求发送给PCIE IP事务层;(4)DMA写控制状态机从DMA写数据FIFO中取出数据,并发送给PCIE IP事务层;(5)本次写数据发送完毕后,置DMA写完成有效,将计数值dmaw_rdnum加1;(6)DMA写请求处理过程结束;
还包括发送DMA读请求的步骤:(1)当读请求仲裁逻辑接收到来自高速互连网络接口芯片核心逻辑的DMA读请求源i的DMA读请求时,将读请求和来自DMA写请求处理模块的计数值dmaw_wtnum拼接合并为一个数据写入读请求队列REQ_FIFO_i中,并返回读请求接收应答;(2)读仲裁请求产生器对所有n个请求源同时判断:条件①REQ_FIFO_i中有未读出的数据,条件②请求源i剩余预留标签或者剩余公共标签,条件③当前DMA读请求之前的DMA写请求都已经发送给PCIE IP事务层,若以上三个条件①~③全部成立,则产生DMA读请求源i的仲裁请求,并发送给读请求仲裁器;(3)读请求仲裁器按照轮询的方式产生仲裁结果j,并发送到DMA读请求控制状态机;(4)DMA读请求控制状态机从标签分配器中取出一个可用的请求标签号;(5)DMA读请求控制状态机从读请求队列REQ_FIFO_j中取出DMA读请求,并解析出读请求地址和读请求应答数据长度;(6)DMA读请求控制状态机将请求标签号和读请求应答数据长度拼接后写入读应答仲裁逻辑中对应的应答数据队列RSP_FIFO_j中;(7)DMA读请求控制状态机将读请求地址、读请求应答数据长度和请求标签号发送到PCIE IP事务层,并置DMA读请求使能有效;(8)DMA读请求发送过程结束;
还包括接收DMA读请求应答数据的步骤:(1)当读应答仲裁逻辑接收到来自PCIE IP事务层的读应答使能后,应答仲裁请求产生器对n个请求源同时进行判断:条件①PCIE IP事务层返回的读应答请求标签号与请求源i对应的应答数据队列RSP_FIFO_i顶部应答的请求标签号相匹配,条件②请求源i数据接收FIFO的可用空间大于等于应答数据队列RSP_FIFO_i顶部应答的读请求应答数据长度,当以上两个条件①~②全部成立时,产生读应答处理仲裁请求,并发送给读应答仲裁器;(2)读应答仲裁器按照轮询的方式产生仲裁结果k,并发送到DMA读应答控制状态机;(3)DMA读应答控制状态机从应答数据队列RSP_FIFO_k中取出顶部的读应答的请求标签号和读请求应答数据长度;(4)DMA读应答控制状态机将读应答的请求标签号发送给PCIE IP事务层,并置DMA读数据使能有效,根据读请求应答数据长度从PCIE IP事务层中读取应答数据;(5)DMA读应答控制状态机置请求源k应答数据写使能有效,将应答数据发送给高速互连网络接口芯片核心逻辑;(6)DMA读应答控制状态机将应答数据请求标签号写入标签分配器,回收该请求标签号,同时置应答数据接收完成有效;(7)接收DMA读请求应答数据的过程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011209698.XA CN112256624B (zh) | 2020-11-03 | 2020-11-03 | 用于高速互连网络接口芯片的dma通信装置、芯片、设备及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011209698.XA CN112256624B (zh) | 2020-11-03 | 2020-11-03 | 用于高速互连网络接口芯片的dma通信装置、芯片、设备及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112256624A CN112256624A (zh) | 2021-01-22 |
CN112256624B true CN112256624B (zh) | 2022-09-13 |
Family
ID=74268602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011209698.XA Active CN112256624B (zh) | 2020-11-03 | 2020-11-03 | 用于高速互连网络接口芯片的dma通信装置、芯片、设备及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112256624B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742267B (zh) * | 2021-09-07 | 2023-10-27 | 中国科学院计算技术研究所 | 一种用于rdma通信设备的dma通信系统及方法 |
CN113867796B (zh) * | 2021-12-02 | 2022-02-22 | 南湖实验室 | 利用多状态机提高读性能的协议转换桥及实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510182A (zh) * | 2009-04-03 | 2009-08-19 | 北京中星微电子有限公司 | 低速dma接口的片上系统和内存访问方法 |
CN111666235A (zh) * | 2020-05-26 | 2020-09-15 | 中国人民解放军国防科技大学 | 用于高速互连网络接口芯片的pio通信装置,芯片,设备及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7398335B2 (en) * | 2004-11-22 | 2008-07-08 | Qlogic, Corporation | Method and system for DMA optimization in host bus adapters |
US8281049B2 (en) * | 2008-12-19 | 2012-10-02 | Cisco Technology, Inc. | Host-daughtercard configuration with double data rate bus |
-
2020
- 2020-11-03 CN CN202011209698.XA patent/CN112256624B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510182A (zh) * | 2009-04-03 | 2009-08-19 | 北京中星微电子有限公司 | 低速dma接口的片上系统和内存访问方法 |
CN111666235A (zh) * | 2020-05-26 | 2020-09-15 | 中国人民解放军国防科技大学 | 用于高速互连网络接口芯片的pio通信装置,芯片,设备及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112256624A (zh) | 2021-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7822908B2 (en) | Discovery of a bridge device in a SAS communication system | |
US7234004B2 (en) | Method, apparatus and program product for low latency I/O adapter queuing in a computer system | |
CN112256624B (zh) | 用于高速互连网络接口芯片的dma通信装置、芯片、设备及方法 | |
CN1658180A (zh) | 总线系统及其方法 | |
US9596186B2 (en) | Multiple processes sharing a single infiniband connection | |
CN101135993A (zh) | 一种嵌入式系统芯片及数据读写处理方法 | |
CN102103565B (zh) | 先进高性能系统总线连接装置及连接方法 | |
CN112948318A (zh) | 一种Linux操作系统下基于RDMA的数据传输方法及装置 | |
CN107153511A (zh) | 存储节点、混合存储器控制器及控制混合存储器组的方法 | |
CN101937406A (zh) | 一种VxWorks操作系统中实现驱动1394设备的方法和系统 | |
CN102918515A (zh) | 将数据存储在存储器控制器中的多个缓冲器的任何中 | |
CN106484549A (zh) | 一种交互方法、NVMe设备、HOST及物理机系统 | |
CN112181887B (zh) | 数据传输方法及装置 | |
US8090893B2 (en) | Input output control apparatus with a plurality of ports and single protocol processing circuit | |
CN111258932A (zh) | 加速ufs协议处理的方法与存储控制器 | |
US11550504B2 (en) | System including an application processor and a data storage device providing data | |
CN117472815A (zh) | 一种axi协议下的存储模块转换接口及其转换方法 | |
CN113485643B (zh) | 用于数据存取的方法及数据写入的控制器 | |
US20010013080A1 (en) | Multiprocessor system and transaction control method for the same | |
CN105681222A (zh) | 一种数据接收缓存方法、装置及通信系统 | |
CN112328519B (zh) | 一种pcie设备、基于sr-iov的数据包有序传输方法和系统 | |
CN115827524A (zh) | 一种数据传输方法以及装置 | |
US20050120169A1 (en) | Storage device control apparatus and a method of controlling the same | |
CN109145397A (zh) | 一种支持并行流水访问的外存仲裁结构 | |
US7861026B2 (en) | Signal relay device and method for accessing an external memory via the signal relay device |
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 |