首页 / 专利库 / 电脑零配件 / 数据总线 / PCI总线 / 外部设备访问计算机内存的方法

外部设备访问计算机内存的方法

阅读:490发布:2020-05-12

专利汇可以提供外部设备访问计算机内存的方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种外部设备 访问 计算机内存的方法,包括步骤:所述外部设备向计算机 申请 一定大小的内存空间,并接收所述计算机反馈的多个内存 块 ;所述外部设备通过顺序存储结构或链式存储结构建立外部设备和计算机的内存映射关系;当所述外部设备发起读写操作,根据所述外部设备和计算机的内存映射关系找到计算机中对应的偏移地址,生成读写操作猝发指令,在计算机的内存上实现读写操作。本发明可以实现快速地连续地访问计算机内存的多个不连续内存区域,提升计算机 操作系统 和外部设备访问内存的速度。,下面是外部设备访问计算机内存的方法专利的具体信息内容。

1.一种外部设备访问计算机内存的方法,其特征在于,包括步骤:
步骤1,所述外部设备向计算机申请一定大小的内存空间,并接收所述计算机反馈的多个内存
步骤2,所述外部设备通过顺序存储结构或链式存储结构建立外部设备和计算机的内存映射关系;
步骤3,当所述外部设备发起读写操作,根据所述外部设备和计算机的内存映射关系找到计算机中对应的偏移地址,生成读写操作猝发指令,在计算机的内存上实现读写操作。
2.如权利要求1所述的外部设备访问计算机内存的方法,其特征在于,所述顺序存储结构或链式存储结构的各元素记录每一个内存块的地址和大小以及映射的外部设备寻址空间连续空间的偏移地址来建立所述外部设备和计算机的内存映射关系。
3.如权利要求2所述的外部设备访问计算机内存的方法,其特征在于,所述步骤3具体包括:
步骤3.1,当所述外部设备的内存读写访问设备有数据传输需求,发起读操作或写操作;
步骤3.2,所述外部设备从所述顺序存储结构或链式存储结构中找到其寻址空间的操作地址对应的计算机的内存块的地址,生成读写操作猝发指令,从计算机的内存的对应位置进行读操作或写操作;
步骤3.3,通过PCI-E连接设备向所述计算机发送中断信号,告知计算机有数据需要接收。
4.如权利要求3所述的外部设备访问计算机内存的方法,其特征在于,所述步骤3.2还包括:
当遇到所述内存块结束,则结束一次猝发,并从所述顺序存储结构或链式存储结构中取到下一个内存块的地址,生成读写操作猝发指令,从计算机的内存的对应位置进行读操作或写操作,直至数据传输完毕再执行步骤3.3。
5.如权利要求3所述的外部设备访问计算机内存的方法,其特征在于,所述外部设备将其寻址空间连续空间的地址值的散列算法结果作为散列表的索引,将所述索引对应的值存储所述地址值对应的所述顺序存储结构或链式存储结构的元素,通过所述散列表来找到所述操作地址对应的所述顺序存储结构或链式存储结构中的元素。
6.如权利要求5所述的外部设备访问计算机内存的方法,其特征在于,所述散列表取外部设备的寻址空间的高位地址值作为散列算法的输入。
7.如权利要求1所述的外部设备访问计算机内存的方法,其特征在于,所述顺序存储结构包括数组,所述链式存储结构包括链表。
8.如权利要求1所述的外部设备访问计算机内存的方法,其特征在于,所述计算机通过PCI-E连接设备与所述外部设备连接。
9.如权利要求8所述的外部设备访问计算机内存的方法,其特征在于,所述计算机的处理器、内存以及PCI-E连接设备通过同一根内存总线连接。
10.如权利要求1所述的外部设备访问计算机内存的方法,其特征在于,所述步骤2中,所述外部设备将所述顺序存储结构或链式存储结构保存在一配置内存中,将所述顺序存储结构或链式存储结构的存储地址和大小保存在一配置寄存器中。
11.如权利要求8所述的外部设备访问计算机内存的方法,其特征在于,所述PCI-E连接设备通过PCI-E线缆或PCI-E光缆与所述外部设备连接。
12.如权利要求1所述的外部设备访问计算机内存的方法,其特征在于,所述计算机采用的操作系统为Linux系统或windows系统。

说明书全文

外部设备访问计算机内存的方法

技术领域

[0001] 本发明涉及基于PCI-E总线的数据传输领域,尤其涉及一种如FPGA等外部设备访问计算机内存的方法。

背景技术

[0002] 当前,FPGA(Field Programmable Gate Array)等外部设备和计算机的通信主要通过USB、PCIe等外设接口,一般通过计算机上的软件进行通信。以FPGA为例,如果FPGA需要和计算机共享内存,一般是在FPGA上实现一个外围设备,作为计算机的外围设备寻址空间,以实现计算机对这些区域的访问。
[0003] 这类访问可以通过CPU直接访问,也可以通过计算机上的DMA访问。例如可以采用FPGA中提供内存访问空间给CPU读写的方式,但是这会大大消耗计算机的CPU资源,给计算机的CPU带来很大的负担。而采用DMA方式,如果是应用在Linux系统,将会受限于Linux内存的分配策略,只能实现有限大小的连续内存分配,因此,在计算机上分配内存给外设访问的情况下,只能实现少量内存空间。当需要更大的内存空间的时候,需要软件驱动的介入,以实现不同内存片段的地址信息传递,且速度也比较慢。
[0004] 而且现有技术一般通过把FPGA中的内存映射到计算机内存地址空间,这会导致计算机访问此空间的延迟很大。

发明内容

[0005] 本发明为了解决现有技术中只能访问有限连续内存空间的技术问题,提出了一种外部设备访问计算机内存的方法。
[0006] 本发明提出的外部设备访问计算机内存的方法,包括步骤:步骤1,所述外部设备向计算机申请一定大小的内存空间,并接收所述计算机反馈的多个内存
步骤2,所述外部设备通过顺序存储结构或链式存储结构建立外部设备和计算机的内存映射关系;
步骤3,当所述外部设备发起读写操作,根据所述外部设备和计算机的内存映射关系找到计算机中对应的偏移地址,生成读写操作猝发指令,在计算机的内存上实现读写操作。
[0007] 具体的,所述顺序存储结构或链式存储结构的各元素记录每一个内存块的地址和大小以及映射的外部设备寻址空间连续空间的偏移地址来建立所述外部设备和计算机的内存映射关系。
[0008] 进一步,所述步骤3具体包括:步骤3.1,当所述外部设备的内存读写访问设备有数据传输需求,发起读操作或写操作;
步骤3.2,所述外部设备从所述顺序存储结构或链式存储结构中找到其寻址空间的操作地址对应的计算机的内存块的地址,生成读写操作猝发指令,从计算机的内存的对应位置进行读操作或写操作;
步骤3.3,通过PCI-E连接设备向所述计算机发送中断信号,告知计算机有数据需要接收。
[0009] 进一步,所述步骤3.2还包括:当遇到所述内存块结束,则结束一次猝发,并从所述顺序存储结构或链式存储结构中取到下一个内存块的地址,生成读写操作猝发指令,从计算机的内存的对应位置进行读操作或写操作,直至数据传输完毕再执行步骤3.3。
[0010] 优选的,所述外部设备将其寻址空间连续空间的地址值的散列算法结果作为散列表的索引,将所述索引对应的值存储所述地址值对应的所述顺序存储结构或链式存储结构的元素,通过所述散列表来找到所述操作地址对应的所述顺序存储结构或链式存储结构中的元素。
[0011] 在一个具体实施例中,所述顺序存储结构包括数组,所述链式存储结构包括链表。
[0012] 在一个具体实施例中,由所述内存块组成的总内存空间的信息包括总内存空间的大小和读写方向。
[0013] 具体的,所述计算机通过PCI-E连接设备与所述外部设备连接。所述计算机的处理器、内存以及PCI-E连接设备通过同一根内存总线连接。所述PCI-E连接设备通过PCI-E线缆或PCI-E光缆与所述外部设备连接。
[0014] 具体的,所述步骤2中,所述外部设备将所述顺序存储结构或链式存储结构保存在一配置内存中,将所述顺序存储结构或链式存储结构的存储地址和大小以及由所述内存块组成的总内存空间的信息保存在一配置寄存器中。
[0015] 具体的,所述计算机采用的操作系统为Linux系统或WINDOWS系统。
[0016] 本发明通过相应的存储结构将计算机内存的碎片化的内存块组合成一个可连续访问的内存空间,在外部设备上实现对应的映射关系,使得外部设备可以快速地访问计算机的内存,以实现计算机操作系统和FPGA的高速、大量内存数据的共享。附图说明
[0017] 图1为本发明的结构框图
[0018] 图2为本发明的准备阶段的流程图
[0019] 图3为本发明的FPGA读写操作的流程图。

具体实施方式

[0020] 下面结合附图对本发明的原理及方法进行详细说明。
[0021] 如图1所示,本发明的计算机(即PC系统)在本实施例中涉及到的部件包括CPU(处理器)、内存总线、内存和PCI-E连接设备。FPGA涉及到的部件包括控制模块、内存读写访问设备以及配置内存和配置寄存器。
[0022] 计算机的处理器用来运行相对比较复杂的系统软件,以及在FPGA访问内存以后接收中断信号,不需要在FPGA访问内存的过程中消耗资源。内存总线将计算机的处理器、内存以及PCI-E连接设备连接,使三者具有统一的寻址空间。PCI-E连接设备是对接FPGA的PCI-E接口卡,在计算机的PC系统中,体现的是一个PCI-E设备,其连接到内存总线,并通过PCI-E线缆或PCI-E光缆和FPGA连接,并且在FPGA访问内存结束之后向处理器发送中断信号。其中,PCI-E线缆可以有1对、4对、8对或16对。
[0023] FPGA的控制模块通过PCI-E线缆或PCI-E光缆与计算机的PCI-E连接设备连接,其可以根据配置内存中存在的列表,把FPGA的内存读写访问设备访问的请求,翻译成向PC系统发起的内存读写请求。配置内存中存储着用来将计算机内存的多个不连续的内存块拼接成一个连续的内存空间的链式存储结构或者是顺序存储结构,然后配置寄存器中存储链式存储结构或者是顺序存储结构的地址以及大小、多个内存块的总大小等,主要是存储链式存储结构或者是顺序存储结构的地址,其他的在优选实施例中可以将其大小等其他信息进行存储。链式存储结构或者是顺序存储结构中的每一个元素存储的内容包含:1、计算机的内存块的绝对地址,2、计算机的内存块的大小,3、通过计算得到的该内存块对应的FPGA的寻址空间连续空间的偏移地址。当然,更进一步还可以包含每个内存块的读写方向:读方向或者写方向,或者读写方向。内存读写访问设备指的是FPGA中任何需要对计算机进行内存读写访问的设备,内存读写访问设备对FPGA的控制模块所管控的内存空间读写,将由控制模块直接映射成对计算机的内存的读写。
[0024] 上述顺序存储结构可以采用数组等,而链式存储结构可以采用链表。
[0025] 为了尽快找到很多个内存块对应的链表,本发明采用散列表来快速定位到FPGA的寻址空间连续空间的地址值对应的链式存储结构或者是顺序存储结构的那组元素,从而从一个较小的范围来快速找到对应的计算机的内存块的地址。本发明将外部设备(如FPGA)的寻址空间连续空间的地址值的散列算法结果作为散列表的索引,将散列表的各索引对应的值存储外部设备的地址值(即操作地址)对应的顺序存储结构或链式存储结构的元素,通过散列表来找到操作地址对应的顺序存储结构或链式存储结构中的元素。也就是说,以链表为例,本发明有两层查找关系,首先是通过散列表来找到对应的那组链表,然后再找到具体的对应的那个链表,再从该链表中找到操作地址对应的计算机的内存块的绝对地址。具体的,散列表的地址也被存储在配置寄存器中,进一步还可以存储散列表的大小。在一个实施例中,散列表取外部设备的寻址空间的高位地址值作为散列算法的输入,而高位地址值具体取决于计算机的内存块的碎片化程度,取碎片化大小以上高位的地址。例如,计算机内存块中最小的碎片是1MB,则取20bit以上的地址。具体的散列算法可以是按若干位进行异或,例如针对32位地址空间,取20bit 31bit,则可以以3位一组,做4组的异或,然后再将散列算~法的结果作为散列表的索引,索引的值中的链表元素保存着映射表中对应外部设备寻址空间的元素的地址。因此,外部设备的寻址空间中的某个操作地址要访问计算机的具体某个内存块的地址,可以通过检索散列表的索引对应的值,再通过该值对应的链表组检索到具体的那个链表,再通过链表中的映射关系找到对应计算机寻址空间的地址,即内存块的地址。本实施例的散列表可以采用哈希表。
[0026] 本发明通过散列表,如果采用串行操作,只需要3个周期即可完成地址映射,如果发生哈希碰撞,最多只需要3+7=10个周期。由于内存空间访问具有连续性,所以最差哈希的概率不高。
[0027] 下面基于上面的结构对本发明的FPGA访问计算机内存的方法进行详细说明。
[0028] 图2示出的是本发明的准备阶段,在准备阶段,FPGA的控制模块向计算机的处理器申请一定大小的内存空间,并接收计算机反馈的多个内存块。FPGA通过数组或链表记录每一个内存块的地址和大小,并记录数组或链表的存储地址,以及由这些内存块组成的总内存空间的大小和读写方向等来建立FPGA和计算机的内存映射关系。
[0029] 具体的以链表为例,FPGA将链表存储在配置内存中,将链表的存储地址和大小以及由这些内存块组成的总内存空间的信息(大小及读写方向)写入在配置寄存器中。
[0030] 当FPGA发起读写操作,根据FPGA和计算机的内存映射关系找到计算机中对应的偏移地址,生成读写操作猝发指令,在计算机的内存上实现读写操作。
[0031] 如图3所示,具体的当FPGA的任意一个内存读写访问设备有数据传输需求,通过总线或者是其他具备数据传输功能的模块发起读操作或写操作;FPGA的控制模块从链表中找到操作地址对应的计算机的内存块的地址,生成读写操作猝发指令,从计算机的内存的对应位置进行读操作或写操作。当遇到内存块结束,则结束一次猝发,并从链表中取到下一个内存块的地址,生成读写操作猝发指令,从计算机的内存的对应位置进行读操作或写操作,直至数据传输完毕,再通过PCI-E连接设备向计算机的处理器(CPU)发送中断信号,告知计算机有数据需要接收。
[0032] 通过本发明的上述技术方案,FPGA的设备可以直接访问计算机的内存,该访问是透明的,并且不需要计算机处理器的接入,也不需要计算机处理器为FPGA的设备分配连续的内存空间,因此可以适合常见的LINUX和Windows操作系统,同时FPGA的设备对计算机内存的访问,不需要区分具体哪个内存块,对FPGA的设备来说,只需要像普通内部资源访问一样就可以完成,不需要做特别的操作,提升访问计算机的内存速度。并且除了本实施例中所列举的FPGA设备以外,本发明还适用于其他需要访问计算机内存的外部设备。
[0033] 以上具体实施例仅用以举例说明本发明的结构,本领域的普通技术人员在本发明的构思下可以做出多种变形和变化,这些变形和变化均包括在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈