CN116225534A - Dma数据传输控制系统 - Google Patents
Dma数据传输控制系统 Download PDFInfo
- Publication number
- CN116225534A CN116225534A CN202310521112.0A CN202310521112A CN116225534A CN 116225534 A CN116225534 A CN 116225534A CN 202310521112 A CN202310521112 A CN 202310521112A CN 116225534 A CN116225534 A CN 116225534A
- Authority
- CN
- China
- Prior art keywords
- memory
- application
- space
- target value
- dma
- 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
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 37
- 238000012546 transfer Methods 0.000 claims description 35
- 238000013507 mapping Methods 0.000 claims description 7
- 238000012163 sequencing technique Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 238000000034 method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013524 data verification Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种DMA数据传输控制系统,包括:驱动层,用于生成第一内存申请指令,并在环形缓存空间申请成功后,生成内存描述符;系统层,与驱动层连接,用于接收第一内存申请指令,并生成第二内存申请指令;中央处理器,分别与系统层、主存储器连接,用于接收并执行第二内存申请指令,以申请主存储器内的环形缓存空间;主存储器,与中央处理器连接,用于提供环形缓存空间;PCI设备,分别与中央处理器、主存储器连接,PCI设备包括块随机存储模块和DMA传输模块。本发明实施例的DMA数据传输控制系统节约了计算资源,减小了中央处理器的工作压力,数据传输也更加流畅,能够实现更快的数据传输速度,在申请较大内存时,内存块个数少,空间利用率较高。
Description
技术领域
本发明涉及数据传输技术领域,特别涉及一种DMA数据传输控制系统。
背景技术
在当前的PC(Personal Computer,个人计算机)与FPGA(Field Program GateWay,现场可编程的门阵列)的PCIe(Peripheral Component Interconnect Express,高速串行总线)数据通信中,目前有三种IP(intellectual property,知识产权)核模块,分别是PCIe Intergrated Block、AXI Bridge PCIe、DMA/Bridge PCIe。
第一种:PCIe Intergrated Block是最基础的PCIE硬核,实现的是PCIE的物理层、链路层和事务层,提供给用户的是以交互系统接口定义的TLP(Transaction LayerPacket,事务层数据)包。用户如果需要给PC发数据,则在逻辑端组好MEM_WR事务包送到AXIS接口上,同样要从PC获取数据,就要发送MEM_RD事务包,然后获取到COMPLETE事务包,再从COMPLETE事务包中提取出数据。然而,这是方式传输数据过程较为繁琐。
第二种:AXI Bridge PCIe的作用类似于一座桥,一座FPGA端直通上位机内存的桥,用户如需读写上位机内存空间,只需要操作这个IP核的S_AXI接口,就可以像读写普通AXI接口的BRAM/DDR一样读写上位机内存。对于采集卡而言,FPGA收到数据后,只需要根据上位机配下来的写内存地址寄存器,就可以将数据以 AXI Memory接口标准发往上位机,然后产生中断让CPU(Central Processing Unit,中央处理器)从相应内存地址去读取数据,这种方式IP就省去了组事务层包的烦恼,只要把数据发上去即可,组包的事IP会解决。然而,这种方式需要CPU参与数据的传输过程,增加了CPU的工作压力。
第三种:DMA/Bridge PCIe,该IP核不但能够把事务层的组包解包完成,还能把需要DMA处理的任务也完成。因此,该方式是一种效率较高的开发方法。然而,在申请传输较大内存的数据时,需要申请较多的内存块,导致产生较多的物理地址,容易出现数据传输错误的情况。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的目的在于提出一种DMA数据传输控制系统,以减小中央处理器的工作压力,提高数据传输速度。
为达到上述目的,本发明实施例提出了一种DMA数据传输控制系统,所述系统包括:驱动层、系统层、中央处理器、主存储器、PCI设备。所述驱动层,用于生成第一内存申请指令,并在环形缓存空间申请成功后,生成内存描述符;所述系统层,与所述驱动层连接,用于接收所述第一内存申请指令,并生成第二内存申请指令;所述中央处理器,分别与所述系统层、主存储器连接,用于接收并执行所述第二内存申请指令,以申请所述主存储器内的所述环形缓存空间;所述主存储器,与所述中央处理器连接,用于提供所述环形缓存空间;所述PCI设备,分别与所述中央处理器、所述主存储器连接,所述PCI设备包括块随机存储模块和DMA传输模块,所述块随机存储模块用于存储所述环形缓存空间的内存描述符,所述DMA传输模块用于根据所述内存描述符向所述环形缓存空间传输数据;其中,所述内存描述符的个数为n个,且2≤n≤50,所述内存描述符用于描述物理地址连续的内存空间的起始物理地址及存储空间大小信息,n个所述内存描述符所描述的存储空间大小之和等于所述环形缓存空间的大小。
另外,本发明实施例的DMA数据传输控制系统还可以具有如下附加技术特征:
根据本发明的一个实施例,所述环形缓存空间的大小记为第一目标值,所述中央处理器在申请所述主存储器内的所述环形缓存空间时,具体用于:以第二目标值申请物理地址连续的内存空间,其中,所述第二目标值的初始值为预设值,所述第二目标值小于所述第一目标值;当申请失败后,更新所述第二目标值,并返回所述以第二目标值申请物理地址连续的内存空间的步骤,其中,更新后的第二目标值小于更新前的第二目标值;当申请成功后,获取申请到的内存空间的物理地址,并判断累积申请到的存储空间大小是否达到所述第一目标值;若是,则确定申请完成;若否,则返回所述以第二目标值申请物理地址连续的内存空间的步骤。
根据本发明的一个实施例,所述中央处理器在更新所述第二目标值时,具体用于:计算所述第二目标值的半值;将所述半值作为更新后的第二目标值。
根据本发明的一个实施例,所述中央处理器在计算所述第二目标值的半值之后,还具体用于:计算所述第一目标值与所述累积申请到的内存空间大小之间的差值,并判断所述差值是否小于所述半值;若是,则将所述差值作为更新后的第二目标值;若否,则执行所述将所述半值作为更新后的第二目标值的步骤。
根据本发明的一个实施例,所述PCI设备、所述中央处理器、所述主存储器通过访问通道连接;其中,所述访问通道为HOST主桥,所述PCI设备通过PCI接口连接所述HOST主桥。
根据本发明的一个实施例,所述主存储器包括地址映射页表,所述地址映射页表用于记录物理地址和虚拟地址的对应信息;所述系统层包括内存申请模块,所述内存申请模块用于接收所述驱动层发送的所述第一内存申请指令,并生成基于机器语言的所述第二内存申请指令;所述中央处理器包括内存管理模块,所述内存管理模块用于执行所述第二内存申请指令并反馈申请结果给所述内存申请模块,其中,若申请成功,则所述申请结果为申请到的物理地址连续的内存空间的起始物理地址及存储空间大小信息,将所述申请到的物理地址连续的内存空间的起始物理地址依据所述地址映射页表转化为虚拟地址后再反馈给所述内存申请模块,若申请失败,则所述申请结果为空白信息,并将所述空白信息反馈给所述内存申请模块;所述驱动层还用于生成环形缓存列表,所述环形缓存列表包括申请到的物理上连续的内存空间的虚拟地址及存储空间大小信息。
根据本发明的一个实施例,所述系统还包括:应用层,与所述驱动层连接,用于接收用户指令及对所述环形缓存空间中存储的数据进行调用。
根据本发明的一个实施例,所述DMA传输模块还用于对n个所述内存描述符进行排序,且依次循环往复依据n个所述内存描述符向所述环形缓存空间传输数据;其中,所述DMA传输模块每传输固定量的数据就向所述应用层发送一次中断信息,所述应用层依据所述中断信息和所述环形缓存列表调用所述环形缓存空间中存储的数据。
根据本发明的一个实施例,所述应用层还用于下发停止DMA传输指令和退出程序指令;所述DMA传输模块还用于接收所述停止DMA传输指令,从而停止向所述环形缓存空间传输数据;所述驱动层还用于接收所述退出程序指令,从而释放申请到的所述环形缓存空间,并由所述系统层进行回收。
根据本发明的一个实施例,所述PCI设备还包括AXI Bridge PCIE IP核,所述AXIBridge PCIE IP核用于将所述DMA传输模块输出的数据打包成TLP数据包,并将所述TLP数据包发送给所述主存储器;其中,所述TLP数据包包含所述中断信息。
本发明实施例的DMA数据传输控制系统,在数据传输过程不需要驱动层、系统层、中央处理器持续地下发物理地址,节约了计算资源,减小了中央处理器的工作压力,数据传输也更加流畅,能够实现更快的数据传输速度,同时,在申请较大内存时,内存块个数少,空间利用率较高。
附图说明
图1是本发明一实施例的DMA数据传输控制系统的结构示意图;
图2是本发明一实施例的中央处理器在申请主存储器内的环形缓存空间的流程示意图;
图3是本发明一实施例的更新第二目标值的流程示意图;
图4是本发明另一实施例的更新第二目标值的流程示意图;
图5是本发明另一实施例的DMA数据传输控制系统的结构示意图;
图6是本发明又一实施例的DMA数据传输控制系统的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的DMA数据传输控制系统。
图1是本发明一实施例的DMA数据传输控制系统的结构示意图。
如图1所示,DMA数据传输控制系统10包括:驱动层101、系统层102、中央处理器103、主存储器104、PCI设备105。驱动层101,用于生成第一内存申请指令,并在环形缓存空间申请成功后,生成内存描述符;系统层102,与驱动层101连接,用于接收第一内存申请指令,并生成第二内存申请指令;中央处理器103,分别与系统层102、主存储器104连接,用于接收并执行第二内存申请指令,以申请主存储器104内的环形缓存空间;主存储器104,与中央处理器103连接,用于提供环形缓存空间;PCI设备105,分别与中央处理器103、主存储器104连接,PCI设备105包括块随机存储模块和DMA传输模块,块随机存储模块用于存储环形缓存空间的内存描述符,DMA传输模块用于根据内存描述符向环形缓存空间传输数据;其中,内存描述符的个数为n个,且2≤n≤50,内存描述符用于描述物理地址连续的内存空间的起始物理地址及存储空间大小信息,n个内存描述符所描述的存储空间大小之和等于环形缓存空间的大小。
需要说明的是,中央处理器103可直接访问主存储器104,PCI设备105可基于FPGA开发得到,系统层102可基于中央处理器103开发得到,驱动层101可基于系统层102开发得到。环形缓存空间为一个环形缓存区域,可循环写入数据。
作为一个示例,内存描述符还可包括起始物理地址对应的虚拟地址、内存空间是否为最后一个、内存空间是否有效等信息。系统层102可为Windows系统或者Linux系统。
可选地,PCI(Peripheral Component Interconnection,周边元件扩展接口)设备可为采集卡。
其中,中央处理器103、主存储器104、PCI设备105都包含在物理层中。
本发明实施例的DMA数据传输控制系统,在数据传输过程不需要驱动层、系统层、中央处理器持续地下发物理地址,节约了计算资源,减小了中央处理器的工作压力,数据传输也更加流畅,能够实现更快的数据传输速度,同时,在申请较大内存时,内存块个数少,空间利用率较高。
在本发明的一些实施例中,环形缓存空间的大小记为第一目标值,如图2所示,中央处理器103在申请主存储器104内的环形缓存空间时,具体用于:
S1,以第二目标值申请物理地址连续的内存空间,其中,第二目标值的初始值为预设值,第二目标值小于第一目标值。
具体地,可通过DDK(Device Development Kit,设备开发工具包)内核函数MmAllocateContiguousMemory,分配连续的物理内存空间。
作为一个示例,第二目标值的初始值可为环形缓存空间的存储空间大小的半值,也可以是0.1GB-2.0GB之间的任一经验值。
S2,当申请失败后,更新第二目标值,并返回以第二目标值申请物理地址连续的内存空间的步骤,其中,更新后的第二目标值小于更新前的第二目标值。
需要说明的是,若申请的第二目标值大于剩余需要申请的内存,则可能导致申请失败。
S3,当申请成功后,获取申请到的内存空间的物理地址,并判断累积申请到的存储空间大小是否达到第一目标值。
需要说明的是,每申请成功一次,就会生成一个内存描述符。
S4,若是,则确定申请完成。
S5,若否,则返回以第二目标值申请物理地址连续的内存空间的步骤。
在该实施例中,系统在申请较大内存时,不需要过多的内存块,避免了频繁的申请、回收内存导致出现内存“空洞”等问题,提高了空间利用率。同时产生的物理地址数量也能降低,能够避免较多物理地址导致的数据传输错误。
在本发明的一些实施例中,如图3所示,中央处理器103在更新第二目标值时,具体用于:
S21,计算第二目标值的半值。
S22,将半值作为更新后的第二目标值。
具体地,可将第二目标值表示为MemSize,计算第二目标值的半值作为更新后的第二目标值,可表示为MemSize1=MemSize/2。
在该实施例中,在申请失败后,更新第二目标值为半值,相比较始终通过固定大小内存申请内存空间,可减小申请的内存块数,提高空间利用率。
在本发明的一些实施例中,如图4所示,中央处理器103在计算第二目标值的半值之后,还具体用于:
S211,计算第一目标值与累积申请到的内存空间大小之间的差值,并判断差值是否小于半值。
S212,若是,则将差值作为更新后的第二目标值。
S213,若否,则执行将半值作为更新后的第二目标值的步骤。
在该实施例中,通过判断剩余申请空间与更新后的第二目标值的大小,能够避免因为更新后的第二目标值过大,导致申请内存失败,增加系统处理时间的问题。
在本发明的一些实施例中,PCI设备105、中央处理器103、主存储器104通过访问通道连接。
其中,访问通道为HOST主桥,PCI设备105通过PCI接口连接HOST主桥。
在本发明的一些实施例中,如图5所示,主存储器104包括地址映射页表,地址映射页表用于记录物理地址和虚拟地址的对应信息;系统层102包括内存申请模块,内存申请模块用于接收驱动层101发送的第一内存申请指令,并生成基于机器语言的第二内存申请指令;中央处理器103包括内存管理模块,内存管理模块用于执行第二内存申请指令并反馈申请结果给内存申请模块,其中,若申请成功,则申请结果为申请到的物理地址连续的内存空间的起始物理地址及存储空间大小信息,将申请到的物理地址连续的内存空间的起始物理地址依据地址映射页表转化为虚拟地址后再反馈给内存申请模块,若申请失败,则申请结果为空白信息,并将空白信息反馈给内存申请模块;驱动层101还用于生成环形缓存列表,环形缓存列表包括申请到的物理上连续的内存空间的虚拟地址及存储空间大小信息。
具体地,驱动层101还可用于在环形缓存空间申请完成后,生成n个内存描述符并逐层下发到块随机存储模块。
作为一个示例,在环形缓存空间申请完成后,可将申请到的内存空间对应的内存描述符中的信息保存到AssociatedIrp.SystemBuffer中。
在该实施例中,内存管理模块将申请结果发送给内存申请模块,有利于及时调整第二目标值,以加快申请内存的速度。同时,在PCI设备105与主存储器104进行数据传输时,不需要中央处理器103的参与,因此中央处理器103可以在数据传输过程中执行别的操作,DMA传输方式也可以实现更高速度的传输,在满速率状态下达到6.4GByte/s以上。
在本发明的一些实施例中,如图6所示,DMA数据传输控制系统10还包括:应用层106,与驱动层101连接,用于接收用户指令及对环形缓存空间中存储的数据进行调用。
其中,应用层106还可与系统层102连接。
具体地,应用层106根据物理地址,从主存储器104中读取数据并进行处理。PCI设备105在应用层106读取数据之后,PCI设备105根据物理地址重新传输数据到主存储器104。
在该实施例中,由于主存储器104接收了数据需要及时处理(转存或应用),通过应用层106能够在PCI设备105中的数据传入环形缓存空间后,及时调用主存储器104中的数据,便于新的数据继续传输至环形缓存空间中。能够循环利用存储空间,避免存储空间的频繁申请。
在本发明的一些实施例中,DMA传输模块还用于对n个内存描述符进行排序,且依次循环往复依据n个内存描述符向环形缓存空间传输数据;其中,DMA传输模块每传输固定量的数据就向应用层106发送一次中断信息,应用层106依据中断信息和环形缓存列表调用环形缓存空间中存储的数据。
需要说明的是,依次循环往复依据n个内存描述符向环形缓存空间传输数据即为依据第1个内存描述符向环形缓存空间传输数据,然后依据第2个内存描述符向环形缓存空间传输数据,依此类推,直至依据第n个内存描述符向环形缓存空间传输数据。然后再回过头依据第1个内存描述符向环形缓存空间传输数据,再依据第2个内存描述符向环形缓存空间传输数据,依此类推。
具体地,应用层106接收到中断信息,则确定该次DMA数据传输完成。
作为一个示例,DMA传输模块首先将中断信息交由中央处理器103进行处理,再逐层发送到应用层106。然后触发应用程序中的回调函数,确定该次DMA数据传输完成。
在该实施例中,可持续进行数据传输,不需要重复申请内存空间,能够使得数据传输更加流畅,同时节省系统资源。
在本发明的一些实施例中,应用层106还用于下发停止DMA传输指令和退出程序指令;DMA传输模块还用于接收停止DMA传输指令,从而停止向环形缓存空间传输数据;驱动层101还用于接收退出程序指令,从而释放申请到的环形缓存空间,并由系统层102进行回收。
作为一个示例,停止DMA传输后可以再次继续进行DMA传输,无需重新申请环形缓存空间。退出程序后则释放申请的环形缓存空间,并回收内存。
在该实施例中,在退出程序后,系统层102对内存空间进行及时回收,有利于在下个程序申请内存空间时,避免内存空间被占用。
在本发明的一些实施例中,PCI设备105还包括AXI Bridge PCIE IP核,AXIBridge PCIE IP核用于将DMA传输模块输出的数据打包成TLP数据包,并将TLP数据包发送给主存储器104;其中,TLP数据包包含中断信息。
作为一个示例,可通过写寄存器方式,通知PCI设备105启动DMA传输,I/O(Input/Output,输入/输出)设备开始采集,并将采集到的数据,通过内存描述符中的物理地址写入主存储器104中。每写入固定包长的数据,产生一次中断。中断以TLP包形式,通过PCI总线上传到中央处理器103。PCI设备105在写入数据时,从内存起始位置写到第一目标值大小的空间,再从头开始写入。应用层106的应用程序在处理数据时创建异步任务,根据已知的中断触发数据包长度和当前地址偏移量,通过内存描述符中的虚拟地址读取数据。读取逻辑也是从内存起始位置一直读到第一目标值大小的内存,再从头开始读取。数据处理时,要读取寄存器中的写包个数,通过写包数和读包数判断是否需要读取数据。异步任务对每一包做首位数据验证,并在数据验证通过后,继续读取下一包数据。其中,若数据出错,则输出异常日志。同时,可根据缓存总大小和单包长度,判断待取包数是否超过限制。
接下来,以系统申请2GB的存储空间,PCI设备105以该存储空间传输数据为例,进行说明本发明实施例的具体过程:
首先,系统启动应用程序,以经验最大值MemSize=1GB开始申请,驱动层101发送内存申请需求,要求物理地址连续的内存且大小为1GB。内存申请模块接收指令,从主存储器104中寻找符合要求的物理内存,若申请成功,则内存申请模块获取物理地址,并生成对应于物理地址的虚拟地址,然后将申请结果(虚拟地址)反馈给驱动层101。
然后,驱动层101每收到一个申请成功的“连续物理内存”,就累加申请成功的内存大小。并判断剩余所需内存空间K,是否小于当前申请要求1GB/2x,如果小于则直接申请K,如果大于则继续申请1GB/2x,其中,x表示申请成功的次数。
之后,2GB内存申请成功后,中央处理器103将申请成功的多个虚拟地址通过内存管理模块转换为物理地址。中央处理器103循环下发内存描述符给PCI设备105,PCI设备105将内存描述符存储在块随机存储模块中,PCI设备105按照块随机存储模块中存储的物理地址,向主存储器104指定区域传输数据。
接着,PCI设备105一边向环形缓存区域写入数据,应用层106一边依据虚拟地址(经内存管理模块转换为物理地址)从环形缓存区域读出数据,从而进行数据处理。
最后,在数据传输结束后,通过写寄存器方式,通知PCI设备105停止DMA传输,释放申请的内存,并进行回收。
需要说明的是,驱动层101与应用层106的通信可以基于DeviceIoControl来实现。
其中,BOOL DeviceIoControl(
[in]HANDLEhDevice,
[in]DWORDdwIoControlCode,
[in, optional]LPVOIDlpInBuffer,
[in]DWORDnInBufferSize,
[out, optional]LPVOIDlpOutBuffer,
[in]DWORDnOutBufferSize,
[out, optional]LPDWORDlpBytesReturned,
[in, out, optional] LPOVERLAPPED lpOverlapped)。
可通过如下函数申请连续的内存空间:
VirtualAddress=MmAllocateContiguousMemory(Len,PhyAddress)。
通过上述的函数可申请到在物理上连续的内存空间,但申请到的内存依然是虚拟地址,所以通过如下函数将该虚拟地址转换成物理地址:
PhyAddress=MmGetPhysicalAddress(VirtualAddress)。
可将转换后得到的物理地址PhyAddress写入到DMA相关的基地址中去,使得DMA能正确的工作。
应当理解,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
同时,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种DMA数据传输控制系统,其特征在于,所述系统包括:
驱动层,用于生成第一内存申请指令,并在环形缓存空间申请成功后,生成内存描述符;
系统层,与所述驱动层连接,用于接收所述第一内存申请指令,并生成第二内存申请指令;
中央处理器,分别与所述系统层、主存储器连接,用于接收并执行所述第二内存申请指令,以申请所述主存储器内的所述环形缓存空间;
主存储器,与所述中央处理器连接,用于提供所述环形缓存空间;
PCI设备,分别与所述中央处理器、所述主存储器连接,所述PCI设备包括块随机存储模块和DMA传输模块,所述块随机存储模块用于存储所述环形缓存空间的内存描述符,所述DMA传输模块用于根据所述内存描述符向所述环形缓存空间传输数据;
其中,所述内存描述符的个数为n个,且2≤n≤50,所述内存描述符用于描述物理地址连续的内存空间的起始物理地址及存储空间大小信息,n个所述内存描述符所描述的存储空间大小之和等于所述环形缓存空间的大小。
2.根据权利要求1所述的DMA数据传输控制系统,其特征在于,所述环形缓存空间的大小记为第一目标值,所述中央处理器在申请所述主存储器内的所述环形缓存空间时,具体用于:
以第二目标值申请物理地址连续的内存空间,其中,所述第二目标值的初始值为预设值,所述第二目标值小于所述第一目标值;
当申请失败后,更新所述第二目标值,并返回所述以第二目标值申请物理地址连续的内存空间的步骤,其中,更新后的第二目标值小于更新前的第二目标值;
当申请成功后,获取申请到的内存空间的物理地址,并判断累积申请到的存储空间大小是否达到所述第一目标值;
若是,则确定申请完成;
若否,则返回所述以第二目标值申请物理地址连续的内存空间的步骤。
3.根据权利要求2所述的DMA数据传输控制系统,其特征在于,所述中央处理器在更新所述第二目标值时,具体用于:
计算所述第二目标值的半值;
将所述半值作为更新后的第二目标值。
4.根据权利要求3所述的DMA数据传输控制系统,其特征在于,所述中央处理器在计算所述第二目标值的半值之后,还具体用于:
计算所述第一目标值与所述累积申请到的内存空间大小之间的差值,并判断所述差值是否小于所述半值;
若是,则将所述差值作为更新后的第二目标值;
若否,则执行所述将所述半值作为更新后的第二目标值的步骤。
5.根据权利要求1所述的DMA数据传输控制系统,其特征在于,所述PCI设备、所述中央处理器、所述主存储器通过访问通道连接;
其中,所述访问通道为HOST主桥,所述PCI设备通过PCI接口连接所述HOST主桥。
6.根据权利要求2所述的DMA数据传输控制系统,其特征在于,
所述主存储器包括地址映射页表,所述地址映射页表用于记录物理地址和虚拟地址的对应信息;
所述系统层包括内存申请模块,所述内存申请模块用于接收所述驱动层发送的所述第一内存申请指令,并生成基于机器语言的所述第二内存申请指令;
所述中央处理器包括内存管理模块,所述内存管理模块用于执行所述第二内存申请指令并反馈申请结果给所述内存申请模块,其中,若申请成功,则所述申请结果为申请到的物理地址连续的内存空间的起始物理地址及存储空间大小信息,将所述申请到的物理地址连续的内存空间的起始物理地址依据所述地址映射页表转化为虚拟地址后再反馈给所述内存申请模块,若申请失败,则所述申请结果为空白信息,并将所述空白信息反馈给所述内存申请模块;
所述驱动层还用于生成环形缓存列表,所述环形缓存列表包括申请到的物理上连续的内存空间的虚拟地址及存储空间大小信息。
7.根据权利要求6所述的DMA数据传输控制系统,其特征在于,所述系统还包括:
应用层,与所述驱动层连接,用于接收用户指令及对所述环形缓存空间中存储的数据进行调用。
8.根据权利要求7所述的DMA数据传输控制系统,其特征在于,
所述DMA传输模块还用于对n个所述内存描述符进行排序,且依次循环往复依据n个所述内存描述符向所述环形缓存空间传输数据;
其中,所述DMA传输模块每传输固定量的数据就向所述应用层发送一次中断信息,所述应用层依据所述中断信息和所述环形缓存列表调用所述环形缓存空间中存储的数据。
9.根据权利要求8所述的DMA数据传输控制系统,其特征在于,所述应用层还用于下发停止DMA传输指令和退出程序指令;
所述DMA传输模块还用于接收所述停止DMA传输指令,从而停止向所述环形缓存空间传输数据;
所述驱动层还用于接收所述退出程序指令,从而释放申请到的所述环形缓存空间,并由所述系统层进行回收。
10.根据权利要求8所述的DMA数据传输控制系统,其特征在于,所述PCI设备还包括AXIBridge PCIE IP核,所述AXI Bridge PCIE IP核用于将所述DMA传输模块输出的数据打包成TLP数据包,并将所述TLP数据包发送给所述主存储器;
其中,所述TLP数据包包含所述中断信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310521112.0A CN116225534B (zh) | 2023-05-10 | 2023-05-10 | Dma数据传输控制系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310521112.0A CN116225534B (zh) | 2023-05-10 | 2023-05-10 | Dma数据传输控制系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116225534A true CN116225534A (zh) | 2023-06-06 |
CN116225534B CN116225534B (zh) | 2023-08-01 |
Family
ID=86570062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310521112.0A Active CN116225534B (zh) | 2023-05-10 | 2023-05-10 | Dma数据传输控制系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225534B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667793A (zh) * | 2024-01-30 | 2024-03-08 | 苏州元脑智能科技有限公司 | 一种多通道描述符管理系统、方法、设备、介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008312126A (ja) * | 2007-06-18 | 2008-12-25 | Canon Inc | データ送信装置、データ受信装置、及びデータ送受信システム |
US20180212859A1 (en) * | 2017-01-25 | 2018-07-26 | Ringcentral, Inc. | Systems and methods for regulating network resources to improve data-transmission quality |
US20180267898A1 (en) * | 2015-10-08 | 2018-09-20 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Processor with selective data storage operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache |
CN113741987A (zh) * | 2021-08-24 | 2021-12-03 | 重庆金美通信有限责任公司 | 一种Linux系统下FPGA数据低延时接收方法 |
CN115437775A (zh) * | 2021-06-02 | 2022-12-06 | 深圳市万普拉斯科技有限公司 | 一种虚拟内存地址空间的分配方法、装置及电子设备 |
-
2023
- 2023-05-10 CN CN202310521112.0A patent/CN116225534B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008312126A (ja) * | 2007-06-18 | 2008-12-25 | Canon Inc | データ送信装置、データ受信装置、及びデータ送受信システム |
US20180267898A1 (en) * | 2015-10-08 | 2018-09-20 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Processor with selective data storage operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache |
US20180212859A1 (en) * | 2017-01-25 | 2018-07-26 | Ringcentral, Inc. | Systems and methods for regulating network resources to improve data-transmission quality |
CN115437775A (zh) * | 2021-06-02 | 2022-12-06 | 深圳市万普拉斯科技有限公司 | 一种虚拟内存地址空间的分配方法、装置及电子设备 |
CN113741987A (zh) * | 2021-08-24 | 2021-12-03 | 重庆金美通信有限责任公司 | 一种Linux系统下FPGA数据低延时接收方法 |
Non-Patent Citations (2)
Title |
---|
李胜蓝;姜宏旭;符炜剑;陈姣;: "基于PCIe的多路传输系统的DMA控制器设计", 计算机应用, no. 03, pages 85 - 88 * |
胡元义等: "《操作系统实践教程》", 西安电子科技大学出版社, pages: 50 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667793A (zh) * | 2024-01-30 | 2024-03-08 | 苏州元脑智能科技有限公司 | 一种多通道描述符管理系统、方法、设备、介质 |
CN117667793B (zh) * | 2024-01-30 | 2024-04-09 | 苏州元脑智能科技有限公司 | 一种多通道描述符管理系统、方法、设备、介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116225534B (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7263572B2 (en) | Bus bridge and data transfer method | |
CN114003392B (zh) | 一种数据加速计算方法及相关装置 | |
US6697885B1 (en) | Automated DMA engine for ATA control | |
CN116225534B (zh) | Dma数据传输控制系统 | |
US5892978A (en) | Combined consective byte update buffer | |
CN107967225B (zh) | 数据传输方法、装置、计算机可读存储介质和终端设备 | |
US6128674A (en) | Method of minimizing host CPU utilization in driving an adapter by residing in system memory a command/status block a soft interrupt block and a status block queue | |
CN112947857B (zh) | 一种数据搬移方法、装置、设备及计算机可读存储介质 | |
JP2008502976A (ja) | 分割トランザクションを処理するためのバス・コントローラ | |
US20060236001A1 (en) | Direct memory access controller | |
US8972624B2 (en) | USB virtualization | |
US20150268985A1 (en) | Low Latency Data Delivery | |
US11132308B2 (en) | Semiconductor device and semiconductor system | |
US8074232B2 (en) | Method for improving the communication of the human interface device | |
CN110990309B (zh) | Tte端系统适配卡pcie控制器的高效中断操作方法 | |
WO2020029619A1 (zh) | 数据处理的方法、设备和服务器 | |
US6327636B1 (en) | Ordering for pipelined read transfers | |
US8151028B2 (en) | Information processing apparatus and control method thereof | |
CN2528080Y (zh) | 支持信息信号式中断的芯片组以及控制器 | |
CN112306927B (zh) | 一种io请求的处理方法、装置及系统 | |
US6240474B1 (en) | Pipelined read transfers | |
CN117971135B (zh) | 存储设备的访问方法、装置、存储介质和电子设备 | |
CN112631975B (zh) | 基于Linux的SPI传输方法 | |
JP5656589B2 (ja) | データ転送装置、データ転送方法及びデータ転送プログラム | |
CN115729863A (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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 230088 floor 1-4, zone a, building E2, phase II, innovation industrial park, No. 2800, innovation Avenue, high tech Zone, Hefei, Anhui Province Patentee after: Guoyi Quantum Technology (Hefei) Co.,Ltd. Address before: 230088 floor 1-4, zone a, building E2, phase II, innovation industrial park, No. 2800, innovation Avenue, high tech Zone, Hefei, Anhui Province Patentee before: Guoyi Quantum (Hefei) Technology Co.,Ltd. |