本发明涉及基于pci-e总线的数据传输领域,尤其涉及一种如fpga等外部设备访问计算机内存的方法。
背景技术:
当前,fpga(fieldprogrammablegatearray)等外部设备和计算机的通信主要通过usb、pcie等外设接口,一般通过计算机上的软件进行通信。以fpga为例,如果fpga需要和计算机共享内存,一般是在fpga上实现一个外围设备,作为计算机的外围设备寻址空间,以实现计算机对这些区域的访问。
这类访问可以通过cpu直接访问,也可以通过计算机上的dma访问。例如可以采用fpga中提供内存访问空间给cpu读写的方式,但是这会大大消耗计算机的cpu资源,给计算机的cpu带来很大的负担。而采用dma方式,如果是应用在linux系统,将会受限于linux内存的分配策略,只能实现有限大小的连续内存分配,因此,在计算机上分配内存给外设访问的情况下,只能实现少量内存空间。当需要更大的内存空间的时候,需要软件驱动的介入,以实现不同内存片段的地址信息传递,且速度也比较慢。
而且现有技术一般通过把fpga中的内存映射到计算机内存地址空间,这会导致计算机访问此空间的延迟很大。
技术实现要素:
本发明为了解决现有技术中只能访问有限连续内存空间的技术问题,提出了一种外部设备访问计算机内存的方法。
本发明提出的外部设备访问计算机内存的方法,包括步骤&#x