System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 地址转换方法、计算机设备及介质技术_技高网

地址转换方法、计算机设备及介质技术

技术编号:42990767 阅读:10 留言:0更新日期:2024-10-15 13:21
本申请涉及计算机技术领域并提供一种地址转换方法、计算机设备及介质。方法包括:接收第一设备的第一内存访问请求;检索位于逻辑侧的第一地址转换缓存以便确定第一地址转换缓存中是否存在包含了与第一输入输出虚拟地址对应的第一宿主机物理地址的第一地址转换表项;如果存在,使用第一宿主机物理地址执行第一内存访问请求,如果不存在第一地址转换表项,使用第一输入输出虚拟地址执行页表查询。如此,可以提高DMA数据传输效率,减少地址转换的不利影响,以及降低IOMMU硬件的工作负载。

【技术实现步骤摘要】

本申请涉及计算机,尤其涉及一种地址转换方法、计算机设备及介质


技术介绍

1、在异构计算、数据中心、云服务等应用中,广泛地采用直接内存访问(directmemory access,dma)来提升数据访问效率。理论上,设备的dma操作可以访问整个物理地址空间,包括访问存储了操作系统的代码段、数据段等内存区域。为了保护系统和实现地址空间上的隔离,通过输入输出内存管理单元(input/output memory management unit,iommu),实现了限制设备只能访问规定的内存区域,以及可以将多个分散的dma操作聚合成连续的dma操作。但是,通过iommu来进行地址转换,增加了dma操作的访问时间。随着数据传输规模的增加,通过dma操作来执行的一次数据传输,需要搬运的数据块的大小可能超过了数据通道的最大带宽,这样可能导致一次数据传输需要多次进行内存访问和多次进行地址转换,因此降低了传输效率。

2、为此,本申请提供了一种地址转换方法、计算机设备及介质,可以提高dma数据传输效率,减少地址转换的不利影响,以及降低iommu硬件的工作负载。


技术实现思路

1、第一方面,本申请提供了一种地址转换方法。所述地址转换方法包括:接收第一设备的第一内存访问请求,其中,所述第一内存访问请求包括第一输入输出虚拟地址,所述第一设备被部署在宿主机的逻辑侧并且通过第一端口连接所述宿主机的驱动侧,所述驱动侧加载所述第一设备是响应所述第一设备所发起的地址转换请求报文并且包括:查询位于所述驱动侧的所述第一端口相关联的第一输入输出内存管理单元是否包含与所述第一输入输出虚拟地址对应的第一宿主机物理地址,并且,如果所述第一输入输出内存管理单元包含所述第一宿主机物理地址,所述驱动侧发送包含了所述第一输入输出虚拟地址和所述第一宿主机物理地址的地址转换完成报文给所述第一设备;检索位于所述逻辑侧的第一地址转换缓存以便确定所述第一地址转换缓存中是否存在包含了与所述第一输入输出虚拟地址对应的所述第一宿主机物理地址的第一地址转换表项,其中,所述第一设备,响应于接收到所述地址转换完成报文,保存所述第一输入输出虚拟地址和所述第一宿主机物理地址到所述第一地址转换缓存中;如果所述第一地址转换缓存中存在所述第一地址转换表项,使用所述第一宿主机物理地址执行所述第一内存访问请求,如果所述第一地址转换缓存中不存在所述第一地址转换表项,使用所述第一输入输出虚拟地址执行页表查询。

2、通过本申请的第一方面,通过对设备加载过程的优化设计,一方面保留了通过iommu来限制设备的访问范围和实现宿主机上物理地址空间的隔离的功能,另一方面有效地克服了通过iommu来进行地址转换所导致的传输效率低下的问题;不依赖于设备发起的dma请求来更新存储在atc表中的表项,在设备源头可以拦截住大量的通过iommu进行页表查找的tlp请求;提高dma数据传输效率,降低系统iommu硬件的工作负载。

3、在本申请的第一方面的一种可能的实现方式中,所述第一内存访问请求是直接内存访问请求或者远程直接内存访问请求。

4、在本申请的第一方面的一种可能的实现方式中,所述第一输入输出内存管理单元用于向挂接在所述第一端口下的全部设备提供地址转换功能。

5、在本申请的第一方面的一种可能的实现方式中,所述地址转换方法还包括:如果所述第一地址转换缓存中不存在所述第一地址转换表项,使用所述第一输入输出虚拟地址执行页表查询以便确定与所述第一输入输出虚拟地址对应的所述第一宿主机物理地址,然后,使用所述第一宿主机物理地址执行所述第一内存访问请求。

6、在本申请的第一方面的一种可能的实现方式中,在所述驱动侧加载所述第一设备完成之后,所述第一地址转换缓存中的全部地址转换表项独立于来自所述第一设备的内存访问请求的执行过程。

7、在本申请的第一方面的一种可能的实现方式中,所述第一地址转换缓存中的全部地址转换表项独立于来自所述第一设备的内存访问请求的执行结果,包括:在来自所述第一设备的内存访问请求的执行过程中,所述第一地址转换缓存中的全部地址转换表项保持不变。

8、在本申请的第一方面的一种可能的实现方式中,所述第一输入输出内存管理单元,响应于接收到来自所述第一设备的与所述第一内存访问请求对应的第一数据请求处理层协议报文,检测所述第一数据请求处理层协议报文的报文头中的地址类型域,以便确定所述第一数据请求处理层协议报文携带所述第一宿主机物理地址或者所述第一输入输出虚拟地址,然后,如果所述第一数据请求处理层协议报文携带所述第一宿主机物理地址,所述第一输入输出内存管理单元使用所述第一宿主机物理地址执行所述第一内存访问请求,如果所述第一数据请求处理层协议报文携带所述第一输入输出虚拟地址,所述第一输入输出内存管理单元使用所述第一输入输出虚拟地址执行页表查询。

9、在本申请的第一方面的一种可能的实现方式中,如果所述第一地址转换缓存中存在所述第一地址转换表项,响应于所述第一设备的卸载,删除所述第一地址转换缓存中的所述第一地址转换表项。

10、在本申请的第一方面的一种可能的实现方式中,挂接在所述第一端口下的全部设备包括所述第一设备和不同于所述第一设备的第二设备,所述第二设备的第二内存访问请求包括第二输入输出虚拟地址,其中,所述驱动侧加载所述第二设备是响应所述第二设备所发起的地址转换请求报文并且包括:查询所述第一输入输出内存管理单元是否包含与所述第二输入输出虚拟地址对应的第二宿主机物理地址,并且,如果所述第一输入输出内存管理单元包含所述第二宿主机物理地址,所述驱动侧发送包含了所述第二输入输出虚拟地址和所述第二宿主机物理地址的地址转换完成报文给所述第二设备,用于所述第二设备保存所述第二输入输出虚拟地址和所述第二宿主机物理地址到位于所述逻辑侧的不同于所述第一地址转换缓存的第二地址转换缓存中。

11、在本申请的第一方面的一种可能的实现方式中,所述第一地址转换缓存中的多个地址转换表项被分配给所述第一设备用于执行所述第一设备的全部内存访问请求,所述多个地址转换表项是基于所述第一设备的队列资源和所述第一设备的设备优先级确定的,所述第一设备的设备优先级是基于所述第一设备是否是远程直接内存访问设备以及所述第一设备的用户定制需求确定的。

12、在本申请的第一方面的一种可能的实现方式中,所述第一地址转换缓存用于提供位于所述逻辑侧的地址转换资源给所述第一设备,并且,所述第一输入输出内存管理单元用于提供位于所述驱动侧的地址转换资源给所述第一设备。

13、第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。

14、第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行本文档来自技高网...

【技术保护点】

1.一种地址转换方法,其特征在于,所述地址转换方法包括:

2.根据权利要求1所述的地址转换方法,其特征在于,所述第一内存访问请求是直接内存访问请求或者远程直接内存访问请求。

3.根据权利要求1所述的地址转换方法,其特征在于,所述第一输入输出内存管理单元用于向挂接在所述第一端口下的全部设备提供地址转换功能。

4.根据权利要求1所述的地址转换方法,其特征在于,所述地址转换方法还包括:如果所述第一地址转换缓存中不存在所述第一地址转换表项,使用所述第一输入输出虚拟地址执行页表查询以便确定与所述第一输入输出虚拟地址对应的所述第一宿主机物理地址,然后,使用所述第一宿主机物理地址执行所述第一内存访问请求。

5.根据权利要求1所述的地址转换方法,其特征在于,在所述驱动侧加载所述第一设备完成之后,所述第一地址转换缓存中的全部地址转换表项独立于来自所述第一设备的内存访问请求的执行过程。

6.根据权利要求5所述的地址转换方法,其特征在于,所述第一地址转换缓存中的全部地址转换表项独立于来自所述第一设备的内存访问请求的执行结果,包括:在来自所述第一设备的内存访问请求的执行过程中,所述第一地址转换缓存中的全部地址转换表项保持不变。

7.根据权利要求1所述的地址转换方法,其特征在于,所述第一输入输出内存管理单元,响应于接收到来自所述第一设备的与所述第一内存访问请求对应的第一数据请求处理层协议报文,检测所述第一数据请求处理层协议报文的报文头中的地址类型域,以便确定所述第一数据请求处理层协议报文携带所述第一宿主机物理地址或者所述第一输入输出虚拟地址,然后,如果所述第一数据请求处理层协议报文携带所述第一宿主机物理地址,所述第一输入输出内存管理单元使用所述第一宿主机物理地址执行所述第一内存访问请求,如果所述第一数据请求处理层协议报文携带所述第一输入输出虚拟地址,所述第一输入输出内存管理单元使用所述第一输入输出虚拟地址执行页表查询。

8.根据权利要求1所述的地址转换方法,其特征在于,如果所述第一地址转换缓存中存在所述第一地址转换表项,响应于所述第一设备的卸载,删除所述第一地址转换缓存中的所述第一地址转换表项。

9.根据权利要求1所述的地址转换方法,其特征在于,挂接在所述第一端口下的全部设备包括所述第一设备和不同于所述第一设备的第二设备,所述第二设备的第二内存访问请求包括第二输入输出虚拟地址,其中,所述驱动侧加载所述第二设备是响应所述第二设备所发起的地址转换请求报文并且包括:查询所述第一输入输出内存管理单元是否包含与所述第二输入输出虚拟地址对应的第二宿主机物理地址,并且,如果所述第一输入输出内存管理单元包含所述第二宿主机物理地址,所述驱动侧发送包含了所述第二输入输出虚拟地址和所述第二宿主机物理地址的地址转换完成报文给所述第二设备,用于所述第二设备保存所述第二输入输出虚拟地址和所述第二宿主机物理地址到位于所述逻辑侧的不同于所述第一地址转换缓存的第二地址转换缓存中。

10.根据权利要求1所述的地址转换方法,其特征在于,所述第一地址转换缓存中的多个地址转换表项被分配给所述第一设备用于执行所述第一设备的全部内存访问请求,所述多个地址转换表项是基于所述第一设备的队列资源和所述第一设备的设备优先级确定的,所述第一设备的设备优先级是基于所述第一设备是否是远程直接内存访问设备以及所述第一设备的用户定制需求确定的。

11.根据权利要求1所述的地址转换方法,其特征在于,所述第一地址转换缓存用于提供位于所述逻辑侧的地址转换资源给所述第一设备,并且,所述第一输入输出内存管理单元用于提供位于所述驱动侧的地址转换资源给所述第一设备。

12.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至11中任一项所述的方法。

13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至11中任一项所述的方法。

...

【技术特征摘要】

1.一种地址转换方法,其特征在于,所述地址转换方法包括:

2.根据权利要求1所述的地址转换方法,其特征在于,所述第一内存访问请求是直接内存访问请求或者远程直接内存访问请求。

3.根据权利要求1所述的地址转换方法,其特征在于,所述第一输入输出内存管理单元用于向挂接在所述第一端口下的全部设备提供地址转换功能。

4.根据权利要求1所述的地址转换方法,其特征在于,所述地址转换方法还包括:如果所述第一地址转换缓存中不存在所述第一地址转换表项,使用所述第一输入输出虚拟地址执行页表查询以便确定与所述第一输入输出虚拟地址对应的所述第一宿主机物理地址,然后,使用所述第一宿主机物理地址执行所述第一内存访问请求。

5.根据权利要求1所述的地址转换方法,其特征在于,在所述驱动侧加载所述第一设备完成之后,所述第一地址转换缓存中的全部地址转换表项独立于来自所述第一设备的内存访问请求的执行过程。

6.根据权利要求5所述的地址转换方法,其特征在于,所述第一地址转换缓存中的全部地址转换表项独立于来自所述第一设备的内存访问请求的执行结果,包括:在来自所述第一设备的内存访问请求的执行过程中,所述第一地址转换缓存中的全部地址转换表项保持不变。

7.根据权利要求1所述的地址转换方法,其特征在于,所述第一输入输出内存管理单元,响应于接收到来自所述第一设备的与所述第一内存访问请求对应的第一数据请求处理层协议报文,检测所述第一数据请求处理层协议报文的报文头中的地址类型域,以便确定所述第一数据请求处理层协议报文携带所述第一宿主机物理地址或者所述第一输入输出虚拟地址,然后,如果所述第一数据请求处理层协议报文携带所述第一宿主机物理地址,所述第一输入输出内存管理单元使用所述第一宿主机物理地址执行所述第一内存访问请求,如果所述第一数据请求处理层协议报文携带所述第一输入输出虚拟地址,所述第一输入输出内存管理单元使用所述第一输入输出虚拟地址执行页表查询。

8.根据权利要求1所述的地址转换方法,其特征在于,如果所述第一地址...

【专利技术属性】
技术研发人员:胡培培
申请(专利权)人:珠海星云智联科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1