CN113127390A - 一种多协议数据总线适配器引擎架构设计方法 - Google Patents

一种多协议数据总线适配器引擎架构设计方法 Download PDF

Info

Publication number
CN113127390A
CN113127390A CN202110523236.3A CN202110523236A CN113127390A CN 113127390 A CN113127390 A CN 113127390A CN 202110523236 A CN202110523236 A CN 202110523236A CN 113127390 A CN113127390 A CN 113127390A
Authority
CN
China
Prior art keywords
dma
memory
design
data
skb
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.)
Granted
Application number
CN202110523236.3A
Other languages
English (en)
Other versions
CN113127390B (zh
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.)
Xian Microelectronics Technology Institute
Original Assignee
Xian Microelectronics Technology Institute
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 Xian Microelectronics Technology Institute filed Critical Xian Microelectronics Technology Institute
Priority to CN202110523236.3A priority Critical patent/CN113127390B/zh
Publication of CN113127390A publication Critical patent/CN113127390A/zh
Application granted granted Critical
Publication of CN113127390B publication Critical patent/CN113127390B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/282Cycle stealing DMA
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

一种多协议数据总线适配器引擎架构设计方法,包括:多协议数据处理的兼容性设计:内存的申请与释放流程兼容性设计,内存数据封装的兼容性设计,对于SGDMA/BDMA所采用的DMA完成中断的传输流程设计;总线数据传输适配器引擎的中断设计:DMA通道资源宽裕时的中断设计,DMA通道资源紧缺时实现通道共享的软件设计,DMA通道资源紧缺时实现通道共享的硬件设计;适配层接口的实现。本发明能够统一不同协议数据传输的接口需求,对内存资源的管理进行统一,实现多协议设备功能的融合,能高效发挥底层DMA数据传输引擎的功能和性能,并实现对上层特定协议设备提供数据传输的功能性能保障。

Description

一种多协议数据总线适配器引擎架构设计方法
技术领域
本发明属于总线数据通信领域,具体涉及一种多协议数据总线适配器引擎架构设计方法。
背景技术
多协议总线适配器管理软件适用于多功能、多协议设备共享相同DMA资源的情况。具有支持以太网数据传输,支持FC、SRIO等用户态异步内存数据传输等特点。目前,国产化领域在设计设备控制器驱动时,大都单独进行设计,并且将DMA功能封装在设备驱动当中,在大型装备、设备的设计中,经常有多协议设备共享总线的数据传输需求,然而这些设备几乎都会用到DMA进行高带宽的数据传输,如果针对每个设备进行驱动设计和DMA数据传输设计,将会提高设计成本,延长设计周期。但是,如果通过多协议总线适配层的设计,可以最大化提高多协议设备数据传输的功能设计效率和性能指标,简化设计成本。
发明内容
本发明的目的在于针对上述现有技术中多协议设备共享总线的数据传输设计成本高、周期长的问题,提供一种多协议数据总线适配器引擎架构设计方法,统一不同协议数据传输的接口需求,对内存资源的管理进行统一,实现多协议设备功能的融合,能高效发挥底层DMA数据传输引擎的功能和性能,并实现对上层特定协议设备提供数据传输的功能性能保障。
为了实现上述目的,本发明有如下的技术方案:
一种多协议数据总线适配器引擎架构设计方法,包括以下步骤:
-多协议数据处理的兼容性设计;
内存的申请与释放流程兼容性设计;
内存数据封装的兼容性设计;
对于SGDMA/BDMA所采用的DMA完成中断的传输流程设计;
-总线数据传输适配器引擎的中断设计;
DMA通道资源宽裕时的中断设计;
DMA通道资源紧缺时实现通道共享的软件设计;
DMA通道资源紧缺时实现通道共享的硬件设计;
-适配层接口的实现。
作为本发明设计方法的一种优选方案,所述多协议数据处理的兼容性设计包括通过内存管理的差异性分别设计接口,skb收发资源的申请和释放机制、FC和SRIO设备使用异步数据传输接口;所述的通过内存管理的差异性分别设计接口包括网络协议栈的流式DMA传输机制及用skb结构体承载内存数据的特征,用户态异步DMA传输机制及直接使用page结构体承载内存数据的特征。
作为本发明设计方法的一种优选方案,所述内存的申请与释放流程兼容性设计包括流式DMA内存资源管理设计和异步DMA内存资源管理设计;其中,流式DMA内存资源管理设计包括发送流程和接收流程;
流式DMA内存资源管理设计的发送流程如下:
用户产生并发送数据;
协议栈申请skb资源,并封装用户数据;
设备驱动发送skb;
发送完成后释放skb资源;
流式DMA内存资源管理设计的接收流程如下:
设备驱动为设备接收的数据申请skb资源;
接收完成将skb上传协议栈;
协议栈接收skb,并在提取用户数据后释放skb资源;
用户阻塞并接收数据。
异步DMA内存资源管理设计包括发送流程和接收流程;
异步DMA内存资源管理设计的发送流程如下:
用户产生数据并申请内存;
设备发送数据,发送完成后异步告知用户;
用户释放内存;
异步DMA内存资源管理设计的发送流程如下:
用户为数据接收准备内存并阻塞;
设备利用用户提供的内存接收数据,接收完成后异步告知用户,解除阻塞;
用户接收数据并释放内存。
作为本发明设计方法的一种优选方案,所述内存数据封装的兼容性设计包括使用skb结构体承载DMA内存数据的设计以及使用page结构体承载DMA内存数据的设计;所述使用skb结构体承载DMA内存数据的设计以及使用page结构体承载DMA内存数据的设计均包括发送流程和接收流程;
使用skb结构体承载DMA内存数据的设计发送流程如下:
skb通过协议栈接口传送到设备驱动的发送接口,待发送数据在DMA通道空闲时执行硬件DMA操作将数据发送出去,用户通过DMA完成中断或者FIFO空闲状态下获取本次发送完成的状态,待发送完成后由驱动释放skb内存资源和DMA映射资源;
使用skb结构体承载DMA内存数据的设计接收流程如下:
用户预先申请skb内存资源和DMA映射资源,当接收中断到来后触发ISR进行接收数据处理,将接收完成的数据上传协议栈;为下一次接收补充skb内存资源和DMA映射资源;
使用page结构体承载DMA内存数据的设计发送流程如下:
用户申请发送内存并触发发送流程,待发送数据在DMA通道空闲时执行硬件DMA操作将数据发送出去,用户通过DMA完成中断或者FIFO空闲状态获取本次发送完成的状态;
使用page结构体承载DMA内存数据的设计接收流程如下:
用户申请接收内存并触发接收流程,将接收内存互斥信号量获取,等待接收中断到来后触发ISR进行接收数据处理,处理完成后释放内存互斥信号量,用户阻塞状态结束。
作为本发明设计方法的一种优选方案,所述对于SGDMA/BDMA所采用的DMA完成中断的传输流程设计包括:
在ISR中,申请和映射下一次用于传输的内存资源及DMA资源,释放并解映射本次的内存资源和DMA映射资源;其余的工作在中断后半段里面进行处理。
作为本发明设计方法的一种优选方案,所述DMA通道资源宽裕时的中断设计包括采用DMA完成中断设计或使用设备中断;
采用DMA完成中断时,对于发送方向的ISR及其中断后半段中实现发送资源的释放,对于接收方向的ISR及其中断后半段中实现skb的上传,新skb内存资源的补充,包括内存申请与DMA映射;采用设备中断时,对于发送方向无需设计,直接在发送流程中进行资源的释放,对于接收方向需要实现硬件DMA的传输流程、上传skb、补充新skb。
作为本发明设计方法的一种优选方案,所述DMA通道资源紧缺时实现通道共享的软件设计包括对需要共享的DMA设计互斥锁,在设备进行数据传输之前先获取互斥锁,抢到互斥锁的设备再利用DMA通道进行数据传输,传输完成后对互斥锁进行释放;如果没有抢到互斥锁,则在中断后半段中进行等待,在设备进行完成一次数据传输后均释放互斥锁,每个设备获取互斥锁的概率相同。
作为本发明设计方法的一种优选方案,所述DMA通道资源紧缺时实现通道共享的硬件设计包括通过分时复用的方式对DMA通道进行共享,使用DMA完成中断设计或使用设备中断;硬件采用分时复用设计时,对虚拟的DMA通道进行区分,在IP设计时对各个设备分配各自的DMA寄存器资源。
作为本发明设计方法的一种优选方案,所述适配层接口的实现包括:对DMA通道进行注册,不同DMA底层设备抽象出共同的函数接口,注册时由不同设备属性特征的函数接口来实现不同设备对DMA通道使用的不同需求。
相较于现有技术,本发明有如下的有益效果:基于统一的DMA接口层,实现了不同的设备功能,极大程度重用DMA接口的设计,并实现了对不同设备的兼容;对使用流式DMA和一致性DMA的不同网络设备的接口进行了兼容,实现DMA资源释放和申请操作在不同设备上的兼容。对DMA完成中断和设备中断的使用进行了兼容,实现单通道DMA使用设备中断,多通道使用DMA完成中断,极大程度利用软件资源实现了对DMA资源的重用和虚拟化;通过DMA通道的时分复用模式,实现了在DMA通道紧张的情况下进行双工模式传输和多设备传输的功能;由于设计的透明性,对上层驱动软件的设计可以复用多通道设计。
附图说明
图1本发明实施例的千兆网络控制器结构框图;
图2本发明实施例流式DMA内存的申请与释放流程图;
图3本发明实施例异步DMA内存的申请与释放流程图;
图4本发明实施例DMA通道不共享时的发送与接收流程图;
图5本发明DMA通道共享时的发送流程图;
图6本发明DMA通道共享时的接收流程图。
具体实施方式
本发明提出一种多协议数据总线适配器引擎架构设计方法,用于通过结合自身的协议数据管理特征和底层DMA引擎传输功能来实现特定协议数据的高速总线传输。
多协议数据总线适配器具体功能包括:以太网协议数据(套接字数据)的发送、以太网数据的接收、用户协议数据(FC、SRIO等)的异步发送、用户协议数据的异步接收。
在物理结构上,多协议控制器管理引擎主要由以下几个模块构成:1.以太网接收模块;2.以太网发送模块;3.异步数据接收模块;4.异步数据发送模块;5.虚拟通道管理模块。
为实现以上功能,需要在DMA引擎层对多协议数据总线适配层提供的总线数据通道基础上进行协议数据管理的开发,并对DMA通道合理利用和控制。在Linux内核架构中需要设计符合以太网设备接口的管理引擎和符合字符设备接口及异步DMA传输接口的异步用户数据传输管理引擎。本发明多协议数据总线适配器引擎架构设计方法主要包括以下内容:
(1)多协议数据处理的兼容性设计;
FC、SRIO/NET:通过内存管理的差异性分别设计接口,skb收发资源的申请和释放机制、FC和SRIO设备使用异步数据传输接口;所述的通过内存管理的差异性分别设计接口包括网络协议栈的流式DMA传输机制以及用skb结构体承载内存数据的特征,用户态异步DMA传输机制以及直接使用page结构体承载内存数据的特征。
内存的申请与释放流程兼容性设计;
1.流式DMA的内存资源管理设计;
流式DMA一般用于网络数据传输中,由于内存的申请与释放在不同一位置(驱动/协议栈),不同主体(用户/协议栈),不同时间进行。DMA内存资源的申请、释放、再补充的设计需要在每一次的发送或者接收流程的开始或者结束进行。具体流程见图2。
2.异步DMA内存资源管理的设计,具体流程见图3;
异步DMA主要用于用户和驱动进行数据交互,和流式DMA最大的区别为:(1)无需协议栈的参与;(2)内存的申请和释放均由用户执行;(3)内存一次申请,可多次使用,最终在设备关闭时释放。不需要内存数据的逐层传递,只需要内存数据的读写。
内存数据封装的兼容性设计;
1.使用skb结构体承载DMA内存数据的设计;
发送流程:skb通过协议栈接口传送到设备驱动的发送接口,待发送数据在DMA通道空闲时会执行硬件DMA操作将数据发送出去,用户通过DMA完成中断或者FIFO空闲状态获取本次发送完成的状态,待发送完成后由驱动释放skb内存资源和DMA映射资源。
接收流程:用户预先申请skb内存资源和DMA映射资源,当接收中断到来后触发ISR进行接收数据处理,将接收完成的数据上传协议栈;为下一次接收补充skb内存资源和DMA映射资源;驱动的一次接收流程完成。
2.使用page结构体承载DMA内存数据的设计;
发送流程:用户申请发送内存并触发发送流程,待发送数据在DMA通道空闲时会执行硬件DMA操作将数据发送出去,用户通过DMA完成中断或者FIFO空闲状态获取本次发送完成的状态。
接收流程:用户申请接收内存并触发接收流程,将接收内存互斥信号量获取(互斥信号量减一,由于互斥信号量在初始化时已经执行减一操作,用户再次获取时回进入阻塞状态),等待接收中断到来后触发ISR进行接收数据处理,处理完成后释放内存互斥信号量,用户阻塞状态结束,一次数据接收完成。
3.对于SGDMA/BDMA所采用的DMA完成中断的传输流程设计;
若采用DMA完成中断进行接收和发送流程设计,会简化接收和发送的流程,并且接收和发送的流程在很大程度上可以合并起来。在ISR中,申请和映射下一次用于传输的内存资源及DMA资源,释放并解映射本次的内存资源和DMA映射资源。其余的工作可以放到BH(中断后半段)里面进行处理。ISR(包括BH)中具体的工作见表1。
表1
Figure BDA0003064786050000081
(2)总线数据传输适配器引擎的中断设计:选择DMA完成中断/设备中断,DMA通道共享方案参见表2,通过将源物理地址寄存器及目的物理地址寄存器器结合使用实现。
表2
Figure BDA0003064786050000082
1.当DMA通道资源宽裕时,采用DMA完成中断设计方案比较简洁,也可以使用设备中断。采用DMA完成中断时,对于发送方向的ISR及其BH中实现发送资源的释放,对于接收方向的ISR及其BH中实现skb的上传,新skb内存资源的补充(内存申请,DMA映射);采用设备中断时,对于发送方向无需设计(直接在发送流程中进行资源的释放),对于接收方向需要实现硬件DMA的传输流程、上传skb、补充新skb。
2.DMA通道资源紧张的情况下,DMA通道需要共享。如果采用DMA完成中断,在DMA完成中断产生时,说明DMA一次传输已经完成,对于接收方向需要提前填写目的物理地址信息,对于发送需要提前填写源物理地址信息,等待DMA完成并产生DMA完成中断。所以接收和发送在采用纯软件的解决方案中不能采用DMA完成中断方式进行通道共享,只能采用设备中断进行共享。软件设计时,对需要共享的DMA设计互斥锁,在设备进行数据传输之前需要先获取互斥锁,抢到互斥锁的设备才可以利用DMA通道进行数据传输,传输完成后对互斥锁进行释放;如果没有抢到互斥锁,则需要短暂的等待(在BH中进行),在设备进行一次数据传输后均需要释放互斥锁,所以每个设备获取互斥锁的概率相同,如图4所示。
3.但是,如果硬件设计通过分时复用的方式对DMA通道进行共享,那么软件的设计可以和DMA通道资源不共享时保持一致,因为在软件层面看来,DMA是多通道的(存在多个DMA通道控制资源)。在此情况下,既可以使用DMA完成中断进行设计,也可以使用设备中断进行设计。硬件采用分时复用设计时,需要对虚拟的DMA通道进行区分,在IP设计时需要对各个设备分配各自的DMA寄存器资源如图5、图6所示。
(3)适配层接口的实现(通过各设备注册DMA通道实现);
通过DMA引擎层,以及上层设备适配器层的模块化,层次化设计实现。通过DMA通道注册的方式对DMA通道进行注册,通过将不同DMA底层设备抽象出共同的函数接口,注册时,实现不同设备属性特征的函数接口来实现不同设备对DMA通道使用的不同需求。
本发明提出的多协议数据总线适配器引擎架构设计方法,符合Linux内核接口规范,采用多种兼容性方案,实现了多协议设备功能的融合,包括数据通道中断设计在资源共享时的兼容、硬件实现DMA资源共享以达到软件设计的重用、将套接字协议栈模式的内存资源管理和用户态异步模式的内存资源管理进行接口统一。本发明能高效发挥底层DMA数据传输引擎的功能和性能,并实现对上层特定协议设备提供数据传输的功能性能保障。本发明基于自主研发的IP核进行设计开发,目前已经实现完全自主可控。
现有的国产数据传输设备,如网络控制器,FC控制器等,其DMA传输部分均为其特定设备所具有,不具备通用性特征,在硬件设计和软件设计上存在极大的重复设计,不符合软硬件架构设计和开发重用性要求。现有的多设备DMA资源分别开发,并且使用各自的DMA通道进行数据的传输。在DMA资源紧缺的环境下,如果要实现数据通道共享的设计,需要将多个设备驱动设计成一个整体,不符合软件设计的模块间松耦合性特征。在设备共享DMA通道时,主要是由特定设备在一个时段独占DMA通道,在另一个时段,需要手动切换到另一个设备,才可以让另一个设备使用该DMA通道,在设计和使用上无法做到透明化的通道共享。本发明在多设备总线适配器中创新地使用分时复用技术,将DMA通道在硬件层面设计为虚拟多通道,在软件层面不作任何改动,即可实现对于软件看来是多通道的DMA虚拟通道。在硬件不提供分时复用的情况下,如果需要共享DMA通道,在DMA中断设计上需要采用设备中断取代DMA完成中断。本发明创新地将DMA完成中断和DMA设备中断在通道共享的情景和通道独享的情况下进行了兼容设计。
实施例
参见图1,图2,以网络引擎的设计为例介绍多协议引擎-网络引擎的使用。
用户使用方法:
初始化:用户注册DMA通道(init()函数,包括DMA收通道资源,DMA发送通道资源);
发送:用户层负责申请内存SKB并调用发送接口,用户态发送接口调用内核发送接口,内核负责SKB通过注册的DMA发送通道发送出去。发送完成后释放SKB,本次发送完成。
接收:以太网控制器触发接收中断,DMA硬件缓冲区到数,内核驱动的ISR(中断处理例程)负责申请接收数据的内存SKB、将数据封装好后提交协议栈继续上传,以太网控制器引擎不负责接收数据内存的释放。
FC引擎的设计,参见图3:
用户使用方法:
初始化:用户注册DMA通道(init()函数,包括DMA收通道资源,DMA发送通道资源);
发送:用户层负责申请内存并调用发送接口,用户态发送接口调用内核发送接口,内核负责将内存数据通过注册的DMA发送通道发送出去。发送完成后释放内存,本次发送完成。
接收:FC控制器触发接收中断,DMA硬件缓冲区到数,内核驱动的ISR(中断处理例程)负责申请接收数据的内存,将数据封装好后异步提交,用户异步读取数据后将内存释放。
根据上述方案,采用C语言对控制器驱动进行编写、编译,并完成控制器驱动的调试。测试结果表明本发明具有很好的可实施性,且性能满足预期。
本发明能够统一不同协议数据传输的接口需求,对内存资源的管理进行统一,最大程度发挥DMA引擎管理软件的功能和性能优势。本发明使用C语言进行编程设计,在龙芯3A3000+7A1000计算平台上通过原型验证测试,并成功应用于海军某显控台装备。

Claims (9)

1.一种多协议数据总线适配器引擎架构设计方法,其特征在于,包括以下步骤:
-多协议数据处理的兼容性设计;
内存的申请与释放流程兼容性设计;
内存数据封装的兼容性设计;
对于SGDMA/BDMA所采用的DMA完成中断的传输流程设计;
-总线数据传输适配器引擎的中断设计;
DMA通道资源宽裕时的中断设计;
DMA通道资源紧缺时实现通道共享的软件设计;
DMA通道资源紧缺时实现通道共享的硬件设计;
-适配层接口的实现。
2.根据权利要求1所述的多协议数据总线适配器引擎架构设计方法,其特征在于:所述多协议数据处理的兼容性设计包括通过内存管理的差异性分别设计接口,skb收发资源的申请和释放机制、FC和SRIO设备使用异步数据传输接口;所述的通过内存管理的差异性分别设计接口包括网络协议栈的流式DMA传输机制及用skb结构体承载内存数据的特征,用户态异步DMA传输机制及直接使用page结构体承载内存数据的特征。
3.根据权利要求1所述的多协议数据总线适配器引擎架构设计方法,其特征在于:所述内存的申请与释放流程兼容性设计包括流式DMA内存资源管理设计和异步DMA内存资源管理设计;其中,流式DMA内存资源管理设计包括发送流程和接收流程;
流式DMA内存资源管理设计的发送流程如下:
用户产生并发送数据;
协议栈申请skb资源,并封装用户数据;
设备驱动发送skb;
发送完成后释放skb资源;
流式DMA内存资源管理设计的接收流程如下:
设备驱动为设备接收的数据申请skb资源;
接收完成将skb上传协议栈;
协议栈接收skb,并在提取用户数据后释放skb资源;
用户阻塞并接收数据。
异步DMA内存资源管理设计包括发送流程和接收流程;
异步DMA内存资源管理设计的发送流程如下:
用户产生数据并申请内存;
设备发送数据,发送完成后异步告知用户;
用户释放内存;
异步DMA内存资源管理设计的发送流程如下:
用户为数据接收准备内存并阻塞;
设备利用用户提供的内存接收数据,接收完成后异步告知用户,解除阻塞;
用户接收数据并释放内存。
4.根据权利要求1所述的多协议数据总线适配器引擎架构设计方法,其特征在于:所述内存数据封装的兼容性设计包括使用skb结构体承载DMA内存数据的设计以及使用page结构体承载DMA内存数据的设计;所述使用skb结构体承载DMA内存数据的设计以及使用page结构体承载DMA内存数据的设计均包括发送流程和接收流程;
使用skb结构体承载DMA内存数据的设计发送流程如下:
skb通过协议栈接口传送到设备驱动的发送接口,待发送数据在DMA通道空闲时执行硬件DMA操作将数据发送出去,用户通过DMA完成中断或者FIFO空闲状态下获取本次发送完成的状态,待发送完成后由驱动释放skb内存资源和DMA映射资源;
使用skb结构体承载DMA内存数据的设计接收流程如下:
用户预先申请skb内存资源和DMA映射资源,当接收中断到来后触发ISR进行接收数据处理,将接收完成的数据上传协议栈;为下一次接收补充skb内存资源和DMA映射资源;
使用page结构体承载DMA内存数据的设计发送流程如下:
用户申请发送内存并触发发送流程,待发送数据在DMA通道空闲时执行硬件DMA操作将数据发送出去,用户通过DMA完成中断或者FIFO空闲状态获取本次发送完成的状态;
使用page结构体承载DMA内存数据的设计接收流程如下:
用户申请接收内存并触发接收流程,将接收内存互斥信号量获取,等待接收中断到来后触发ISR进行接收数据处理,处理完成后释放内存互斥信号量,用户阻塞状态结束。
5.根据权利要求1所述的多协议数据总线适配器引擎架构设计方法,其特征在于,所述对于SGDMA/BDMA所采用的DMA完成中断的传输流程设计包括:
在ISR中,申请和映射下一次用于传输的内存资源及DMA资源,释放并解映射本次的内存资源和DMA映射资源;其余的工作在中断后半段里面进行处理。
6.根据权利要求1所述的多协议数据总线适配器引擎架构设计方法,其特征在于,所述DMA通道资源宽裕时的中断设计包括采用DMA完成中断设计或使用设备中断;
采用DMA完成中断时,对于发送方向的ISR及其中断后半段中实现发送资源的释放,对于接收方向的ISR及其中断后半段中实现skb的上传,新skb内存资源的补充,包括内存申请与DMA映射;采用设备中断时,对于发送方向无需设计,直接在发送流程中进行资源的释放,对于接收方向需要实现硬件DMA的传输流程、上传skb、补充新skb。
7.根据权利要求1所述的多协议数据总线适配器引擎架构设计方法,其特征在于,所述DMA通道资源紧缺时实现通道共享的软件设计包括对需要共享的DMA设计互斥锁,在设备进行数据传输之前先获取互斥锁,抢到互斥锁的设备再利用DMA通道进行数据传输,传输完成后对互斥锁进行释放;如果没有抢到互斥锁,则在中断后半段中进行等待,在设备进行完成一次数据传输后均释放互斥锁,每个设备获取互斥锁的概率相同。
8.根据权利要求1所述的多协议数据总线适配器引擎架构设计方法,其特征在于,所述DMA通道资源紧缺时实现通道共享的硬件设计包括通过分时复用的方式对DMA通道进行共享,使用DMA完成中断设计或使用设备中断;硬件采用分时复用设计时,对虚拟的DMA通道进行区分,在IP设计时对各个设备分配各自的DMA寄存器资源。
9.根据权利要求1所述的多协议数据总线适配器引擎架构设计方法,其特征在于,所述适配层接口的实现包括:对DMA通道进行注册,不同DMA底层设备抽象出共同的函数接口,注册时由不同设备属性特征的函数接口来实现不同设备对DMA通道使用的不同需求。
CN202110523236.3A 2021-05-13 2021-05-13 一种多协议数据总线适配器引擎架构设计方法 Active CN113127390B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110523236.3A CN113127390B (zh) 2021-05-13 2021-05-13 一种多协议数据总线适配器引擎架构设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110523236.3A CN113127390B (zh) 2021-05-13 2021-05-13 一种多协议数据总线适配器引擎架构设计方法

Publications (2)

Publication Number Publication Date
CN113127390A true CN113127390A (zh) 2021-07-16
CN113127390B CN113127390B (zh) 2023-03-14

Family

ID=76781752

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110523236.3A Active CN113127390B (zh) 2021-05-13 2021-05-13 一种多协议数据总线适配器引擎架构设计方法

Country Status (1)

Country Link
CN (1) CN113127390B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1137646A (zh) * 1995-06-05 1996-12-11 北京航空航天大学 结点互连适配器
US6101553A (en) * 1996-02-08 2000-08-08 Madge Networks Limited Communication network end station and adaptor card therefor eliminating on-board storage of operating control code in adaptor card
CN101151851A (zh) * 2005-04-01 2008-03-26 国际商业机器公司 用于服务器环境中的联网卸载的主机以太网适配器
JP2010063110A (ja) * 2002-06-06 2010-03-18 Nvidia Corp Iscsiおよびipsecプロトコルをサポートするギガビットイーサネットアダプタ
CN101923470A (zh) * 2010-08-20 2010-12-22 华南理工大学 一种支持UPnP和IGRS双协议的DMA-SDK实现方法
US20110058573A1 (en) * 2009-09-04 2011-03-10 Brocade Communication Systems, Inc. User selectable multiple protocol network interface device
CN104378161A (zh) * 2014-10-22 2015-02-25 华中科技大学 一种基于AXI4总线架构的FCoE协议加速引擎IP核
CN106657365A (zh) * 2016-12-30 2017-05-10 清华大学 一种基于rdma的高并发数据传输方法
CN112115090A (zh) * 2019-06-20 2020-12-22 英特尔公司 用于事务的多协议支持

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1137646A (zh) * 1995-06-05 1996-12-11 北京航空航天大学 结点互连适配器
US6101553A (en) * 1996-02-08 2000-08-08 Madge Networks Limited Communication network end station and adaptor card therefor eliminating on-board storage of operating control code in adaptor card
JP2010063110A (ja) * 2002-06-06 2010-03-18 Nvidia Corp Iscsiおよびipsecプロトコルをサポートするギガビットイーサネットアダプタ
CN101151851A (zh) * 2005-04-01 2008-03-26 国际商业机器公司 用于服务器环境中的联网卸载的主机以太网适配器
US20110058573A1 (en) * 2009-09-04 2011-03-10 Brocade Communication Systems, Inc. User selectable multiple protocol network interface device
CN101923470A (zh) * 2010-08-20 2010-12-22 华南理工大学 一种支持UPnP和IGRS双协议的DMA-SDK实现方法
CN104378161A (zh) * 2014-10-22 2015-02-25 华中科技大学 一种基于AXI4总线架构的FCoE协议加速引擎IP核
CN106657365A (zh) * 2016-12-30 2017-05-10 清华大学 一种基于rdma的高并发数据传输方法
CN112115090A (zh) * 2019-06-20 2020-12-22 英特尔公司 用于事务的多协议支持

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
赵备等: "基于FPGA的光纤通道协议引擎的设计与实现", 《浙江大学学报(工学版)》 *

Also Published As

Publication number Publication date
CN113127390B (zh) 2023-03-14

Similar Documents

Publication Publication Date Title
CN111107586B (zh) 一种bbu前传数据的处理方法及系统
CN107278362B (zh) 云计算系统中报文处理的方法、主机和系统
US9100349B2 (en) User selectable multiple protocol network interface device
CN114553635B (zh) Dpu网络设备中的数据处理方法、数据交互方法及产品
EP3206339A1 (en) Network card configuration method and resource management center
CN113296884B (zh) 虚拟化方法、装置、电子设备、介质及资源虚拟化系统
CN113127391B (zh) 一种多设备兼容的dma数据传输引擎设计方法
CN103530245B (zh) 一种基于fpga的srio互联交换装置
CN109739786A (zh) 一种dma控制器和异构加速系统
CN115664892B (zh) 虚拟监控器下Linux虚拟网卡的实现方法
CN113691397B (zh) 工业控制数据传输用低延时5g无线透明传输方法
CN1279790A (zh) 快速16位分离事务i/o总线
US6101533A (en) Multiple interface data communication system and method utilizing multiple connection library interfaces with buffer and lock pool sharing
CN116886751B (zh) 一种异构设备的高速通信方法、装置和异构通信系统
CN110618956B (zh) 一种bmc云平台资源池化方法与系统
CN110188059A (zh) 数据有效位统一配置的流控式fifo缓存结构及方法
CN110995668B (zh) 应用于arinc653操作系统分区间的fc网络通信装置及方法
US6081834A (en) Network data path interface method and system for enhanced data transmission
US6085246A (en) Multiple interface data communication system and method utilizing multiple connection library interfaces with buffer and lock pool sharing
CN113127390B (zh) 一种多协议数据总线适配器引擎架构设计方法
CN115622896A (zh) 一种axi4高速总线及多队列仿真验证方法及仿真验证装置
KR100881416B1 (ko) 시스템 온칩(soc)을 위한 마이크로 콘트롤 아키텍쳐
CN101069166A (zh) 具有接口模块的通信组件装置和接口模块
US6178180B1 (en) Communications adapter for processing ATM and ISDN data
CN114553980B (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
GR01 Patent grant
GR01 Patent grant