一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用于图像处理器的访存处理方法及设备与流程

2022-12-10 20:31:37 来源:中国专利 TAG:


1.本技术涉及图像处理领域,尤其涉及一种用于图像处理器的访存处理方法及设备。


背景技术:

2.图像处理器(graphics processing unit,gpu),是一种专门在个人电脑、工作站、游戏机和一些移动设备上图像运算工作的微处理,主要用于对系统输入的视频信息进行构建和渲染,用来存储将要显示的图形信息以及保存图形运算的中间数据。近年来,随着对图像处理的需求和要求不断提高,如何有效提高图像处理器的性能成为了一个亟待解决的问题。
3.在主流的处理器设计中,如中央处理器(central processing unit,cpu)),通常需要配备多个内存管理单元(memory management unit,mmu)来实现内存的访问管理,一个cpu核需要绑定一个mmu,用于处理该cpu核的访存请求,对于挂在高速串行计算机扩展总线(pci-express(peripheral component interconnect express,pcie)的外部设备(如直接内存访问单元dma),则还需要共用一个或多核的输入输出mmu(input/output memory management unit,iommu)实现访存。然而,对于gpu而言,通常需要同时支持gpu的不同内部单元(如gpu核、gpu dma等)的访存需求,且需要至少能够同时访问cpu的内存以及gpu的内存,主流的处理器访存方式设计较为复杂,难以满足gpu的访存需求。


技术实现要素:

4.本技术实施例提供了一种用于图像处理器的访存处理方及设备,可支持访问图像处理器内部及外部的内存,有效提高了图像处理器的访存处理效率。
5.第一方面,本技术提供一种用于图像处理器的访存处理方法,该方法包括:图像处理器内部单元发起虚拟访存请求,根据该虚拟访存请求生成统一虚拟地址,将该统一虚拟地址进行地址翻译处理,得到统一物理地址,并根据该统一物理地址生成物理访存请求;根据该物理访存请求进行总线路由选择,将该物理访存请求分发到目标总线,该目标总线包括图像处理器本地总线和/或外部总线。
6.可见,实施本技术提供的访存处理方法,可以通过将图像处理器内部单元的虚访存请求进行统一处理,得到统一虚拟地址,翻译处理得到物理地址,再生成物理访存请求,该物理访存请求可指向图像处理器本地总线和/或外部总线,图像处理器内部单元便可实现既可访问图像处理器本地总线,也可访问外部总线,有效提高了访存处理的效率。
7.作为一种可行的实施方式,该图像处理器内部单元包括图像处理器核心单元和/或图像处理器直接内存访问单元;该外部总线,包括虚拟图像处理器对应的总线和/或主中央处理器对应的总线。
8.作为一种可行的实施方式,该虚拟访存请求携带该图像处理器内部单元指向信息及访存虚拟地址信息;该根据该虚拟访存请求生成统一虚拟地址,包括:提取该虚拟访存请
求中的该图像处理器内部单元指向信息;根据该图像处理器内部单元指向信息得到统一标识;根据该统一标识及该访存虚拟地址信息生成统一虚拟地址。
9.作为一种可行的实施方式,该虚拟访存请求包括第一访存请求及第二访存请求;该根据该虚拟访存请求生成统一虚拟地址,包括:提取第一访存请求中携带的访存虚拟地址信息;提取第二访存请求中携带的图像处理器内部单元指向信息,并得到统一标识;根据该统一标识及该访存虚拟地址信息生成统一虚拟地址。
10.作为一种可行的实施方式,该根据该统一虚拟地址进行地址翻译处理,得到统一物理地址,并根据该统一物理地址生成物理访存请求,包括;提取该统一虚拟地址中的统一标识进行翻译查找缓冲,并判断该统一虚拟地址是否存在;若存在,则根据该统一虚拟地址得到统一物理地址,并根据该统一物理地址生成物理访存请求;若不存在,则按照该统一标识的优先级,将该统一虚拟地址翻译为统一物理地址,并根据该统一物理地址生成物理访存请求。
11.作为一种可行的实施方式,该物理访存请求包含该统一物理地址,该统一物理地址携带统一总线路由标识信息,该统一总线路由标识信息位于该统一物理地址页表项的保留位或偏移位。
12.作为一种可行的实施方式,所述根据所述物理访存请求进行总线路由选择,将所述物理访存请求分发到目标总线,包括:提取统一物理地址中的统一总线路由标识信息;若所述统一总线路由标识信息指向图像处理器本地总线,则将所述物理访存请求分发到所述图像处理器本地总线;若所述统一总线路由标识信息指向外部总线,则将所述物理访存请求通过总线路由单元分发到对应外部总线。
13.第二方面,提供了一种图像处理器访存处理装置,该图像处理器访存处理装置具有实现上述第一方面或第一方面可能的实现方式的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。该模块可以是软件和/或硬件。基于同一发明构思,由于该图像处理器访存处理装置解决问题的原理以及有益效果可以参见上述第一方面和第一方面的各可能的方法实施方式,因此该图像处理器访存处理装置的实施可以参见上述第一方面和第一方面的各可能的方法实施方式,重复之处不再赘述。
14.第三方面,提供了一种电子设备,该电子设备包括:存储器,用于存储一个或多个程序;处理器,用于调用存储在该存储器中的程序以实现上述第一方面的方法设计中的方案,该电子设备解决问题的实施方式以及有益效果可以参见上述第一方面和第一方面的各可能的方法的实施方式以及有益效果,重复之处不再赘述。
15.第四方面,提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法和第一方面的各可能的实现方式以及有益效果,重复之处不再赘述。
附图说明
16.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的
附图。
17.图1是本技术实施例提供的一种图像处理器访存装置的架构示意图;图2是本技术实施例提供的另一种图像处理器访存装置的架构示意图;图3是本技术实施例提供的一种统一虚拟地址的结构示意图;图4是本技术实施例提供的一种统一标识的应用示例图;图5是本技术实施例提供的一种统一物理地址的结构示意图;图6是本技术实施例提供的一种统一总线路由标识的示例图;图7是本技术实施例提供的一种统一总线路由标识的位置示意图;图8是本技术实施例提供的一种统一物理地址生成的流程示意图;图9是本技术实施例提供的另一种统一总线路由标识的位置示意图;图10是本技术实施例提供的一种用于图像处理器的访存处理方法的流程示意图;图11是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
18.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行相应地描述。
19.本技术实施例提供了一种用于图像处理器(以下称为“gpu”)的访存处理方法及设备。其中,该访存处理方法通过将gpu的内部单元发起的虚拟访存请求进行统一处理,按照虚拟地址和物理地址的对应关系生成物理访存请求,通过总线路由选择指向cpu本地总线和/或外部总线,可以使gpu内部单元既可访问cpu本地总线,也可访问外部总线。同时,可以同时支持gpu不同内部单元的访存请求,有效提高了访存处理的效率。
20.为了更详细的描述本技术,下面首先介绍本技术涉及到的一种gpu访存装置。请参阅图1,为本技术实施例提供的一种gpu访存装置的架构示意图。图1所示的gpu访存装置可以包括统一虚拟地址单元10、统一内存管理单元11、统一总线路由单元12、gpu内部单元13。其中,统一虚拟地址单元10,主要用于接收gpu内部单元13,如gpu核以及gpu dma的虚拟访存需求,为统一内存管理单元11提供输入;统一内存管理单元11,主要用于处理统一虚拟地址单元10发过来的虚拟访存需求,进行相应的地址翻译,并代理gpu核或者其他内部单元,发起物理访存请求;统一总线路由单元12,主要用于针对统一内存管理单元11的物理访存请求,进行总线路由选择以及访存请求派发,该模块可以支持gpu内部总线访存需求和跨pcie域的主cpu或者虚拟化guest的访存需求。
21.在一种可行的实施方式中,可通过上述装置实现如下访存处理:步骤1):gpu内部单元13(如gpu核、gpu设备比如dma)发起虚拟访存请求,并将该虚拟访存请求发送至统一虚拟地址单元10;步骤2):统一虚拟地址单元10根据该虚拟访存请求生成统一虚拟地址,并将该统一虚拟地址发给统一内存管理单元11;步骤3):统一内存管理单元11接收该统一虚拟地址单元10的统一虚拟地址,根据一定的仲裁算法执行地址翻译,输出统一的物理地址,并发起基于物理地址的物理访存请求给统一总线路由单元12;步骤4):统一总线路由单元12根据一定的算法将来自统一内存管理单元11的物理
访存请求分发到不同的总线(如gpu本地总线、虚拟cpu对应的总线、主cpu对应的总线等);步骤5):不同的总线完成访存请求,必要的返回给统一总线路由单元12,然后沿着相反的方向,逐级原路返回,并将数据提交给发起虚拟访存请求的gpu内部单元13。
22.在一种可行的实施方式中,统一虚拟地址构成可如图3所示,主要可由页内偏移(page offset)部分、虚拟页号(virtual page number)部分、统一标识(unified id)部分组成。
23.其中,页内偏移部分主要位宽与一页的大小有关,一般而言,典型的4k页面对应的是12位。图3中的vpn[0] vpn[1]

vpn[x]为虚拟页号部分,vpn[x]表示页表的第x级,例如如果为两级页表,则x等于2,具体是几级页表,本技术不做任何限制。
[0024]
可选的,页表的级数与不同域的地址空间和/或总线寻址范围相关,如与主cpu的可访问的地址空间、gpu本地的地址空间相关等。
[0025]
统一标识主要作用是对不同的gpu内部单元13(如gpu的核或者dma之类的外设)提供统一的内存访问,还可对gpu访问主cpu、虚拟 cpu支持。可选的,统一标识可以为虚拟地址内存标识(virtual memory address identifie,vmid),在一个操作系统中,由于可能有多套图形栈应用(如xserver和wayland),需要不同的地址空间区分,对这些不同的图形栈应用可以用vmid进行区分,vmid可以是cpu侧携带下来。
[0026]
请参阅图4,为本技术提供的一种统一标识的应用示例。图4所示的统一标识为3位,可以实现对不同虚拟访存请求的单元进行区分(如统一标识为000,可以代表虚拟访存请求的来源为gpu核0,统一标识为110,可以代表虚拟访存请求的来源为虚拟cpu vmid),也就是能够同时对不同的访存单元做统一的支持,不同的虚拟访存请求单元通过统一虚拟地址部分的统一标识部分实现对统一内存管理单元11的支持,也就是说,通过一个总的或者说单一的统一内存管理单元11,即可实现当前技术中需要同时设置内存管理单元mmu和输入输出内存管理单元iommu的功能。需要说明的是,图4所示的统一标识的位数仅为一种示例,本技术对统一标识的具体位数不做任何限制。
[0027]
在一些可行的实施例中,步骤2)中,统一虚拟地址单元10根据该虚拟访存请求生成统一虚拟地址,可以采取扩充地址线的方法,具体可以为:提取虚拟访存请求中携带的gpu内部单元13指向信息,根据该gpu内部单元13指向信息得到统一标识,识别虚拟访存请求中的访存虚拟地址信息,根据统一标识及访存虚拟地址得到统一虚拟地址。
[0028]
以3位的统一标识为例(注意这里的3位只是一个例子,在其他实施例中可以根据需求调整位数),此处假设gpu核发起虚拟内存请求。在前期设计中,可以考虑将gpu核的35位的地址线的高几位,比如最高3位在gpu核的设计中与统一标识绑定,如对于gpu核0,统一虚拟地址单元10在将虚拟内存请求发给统一内存管理单元之前,将gpu核的32位访存虚拟地址扩充为35位统一虚拟地址,高三位自动补成000(即高三位地址线访存虚拟地址硬化为000,也可通过配置灵活调整),对于gpu核1来说,高三为自动补成001(高三位地址线访存虚拟地址可以硬化为001,也可以通过配置灵活调整)。
[0029]
需要说明的是,现有技术主流的cpu寄存器和地址总线的宽度是32位或者64位,现代cpu基本上为64位,但对于gpu来说,核心众多,考虑搭配gpu的面积,选择32位寄存器宽度是较为理想的选择,但现代gpu的图形用双倍数据传输率(graphics double data rate,gddr)显卡大小基本上都超过4g,也就是说32位地址线是不够的,因此可以选择用32位的寄
存器宽度,大于32位的地址总线,如35位的地址总线(这里指的是虚拟地址总线)。
[0030]
在其他的一些可行的实施例中,步骤2)中,统一虚拟地址单元10可以考虑两次请求的方法,具体可以为:统一虚拟地址单元10提取第一访存请求中携带的访存虚拟地址信息,提取第二访存请求中携带的gpu内部单元13指向信息,并得到统一标识,根据该统一标识及所述访存虚拟地址信息生成统一虚拟地址。
[0031]
同样以3位的统一标识为例,假设gpu核发起虚拟内存请求。第一次,发送32位地址请求到统一虚拟地址单元10,第二次紧接着发送额外的3位地址请求(第二次也可以考虑发送32位地址,但仅包含额外的3位信息),然后由统一虚拟地址单元10根据第一次发送的32位地址请求得到访存虚拟地址,根据第二次发送的3位地址得到统一标识,合并统一标识以及访存虚拟地址,得到统一虚拟地址,合并的方式以及如何约定前后两次请求的顺序可以有一定算法,本技术对此不做任何限制。
[0032]
需要说明的是,如果使用的是32位编译器的话,将产生32位的寄存器以及地址的指令,对于本身就是32位宽度的寄存器来说没有影响,但是对于生成的32位宽度的地址来说,则还有额外的统一标识需要处理,如构造35位的统一虚拟地址。
[0033]
举例来说,如果虚拟访存请求来自于gpu dma,为了可配置,可以提供寄存器接口给其他单元,寄存器接口主要涉及三个寄存器:目的地址寄存器,用于存放目的地的统一虚拟地址,统一虚拟地址的统一标识由其他单元配置该寄存器时提供;源址寄存器,用于存放发送地的统一虚拟地址,统一地址的统一标识由其单元配置该寄存器时提供。搬移数据长度寄存器。其中,其他渲染单元针对标识进行处理:如向量处理器访问虚拟 cpu或主cpu内存数据,由于知道vmid,在向统一内存管理单元发起访存请求时,可以直接将vmid构造到统一虚拟地址的统一标识里。
[0034]
如上表的例子,本技术可以靠统一标识实现对不同访存请求的单元区分,也就是能够同时对不同的访存单元做统一的支持,不同的访存单元通过统一的虚拟地址中的统一标识分实现对统一内存管理单元的支持,也就是说,通过一个统一内存管理单元,即可同时支持现有cpu中需要两种不同单元的mmu和iommu的支持。
[0035]
在一些可行的实施方式中,请参阅图2,统一内存管理单元11具体可以包括内存管理子单元111,内存翻译子单元112,输入输出派发子单元113。
[0036]
内存管理子单元111可以实现如下功能:1)接收统一虚拟地址单元10的统一虚拟地址;2)提供统一的翻译查找缓冲(translationlookaside buffer,tlb)功能,即,可根据统一虚拟地址进行设计,比如将统一标识作为tlb的标签之一。相比当前使用多套mmu和iommu来说,统一tlb复用效能更高;3)提供访存请求仲裁功能(arbitrator):由于并发访问的访存请求可能比实际内存管理子单元更多,可以通过访存请求仲裁功能,使用一定优先级算法进行仲裁,如根据统一标识作为优先级的因素之一;4)访存请求分发功能。
[0037]
在一些可行的实施方式中,该内存管理子单元111可以为mmu管理器(mmu manager)。
[0038]
内存翻译子单元112可以为一个或者多个,多个内存翻译子单元可以支持多种混合、并发的虚拟访存请求,出于性能原因,具体内存翻译子单元的数量可根据设计的系统能力来确定。
[0039]
在一种可选的实施方式中,内存翻译子单元112可以提供内存管理单元旁路功能
(mmu bypass),该功能就是不翻译,即输入的统一虚拟地址,输出的物理地址和输入不变。可选的,内存翻译子单元112可以为mmu簇(mmu cluster)。
[0040]
输入输出派发子单元113,用于根据内存翻译子单元112的翻译结果(即统一物理地址)来发起物理访存请求。可选的,输入输出派发子单元113可以为输入输出派发器(io dispatcher)。
[0041]
在一些可选的实施方式中,统一内存管理单元11通过内存管理子单元111,内存翻译子单元112,输入输出派发子单元113可以实现如下处理:1)内存管理子单元111接收统一虚拟地址模块10的统一虚拟地址;2)内存管理子单元111通过虚拟地址缓冲表查找该统一虚拟地址是否存在,若存在,则直接进入步骤6),将对应的统一物理地址发送给输入输出派发子单元113发起物理地址访存请求;若不存在,则将对应的统一物理地址发送给内存翻译子单元112,进入步骤3);3)内存翻译子单元112将统一虚拟地址进行访存请求仲裁,经过一定优先级算法,选择相应的内存管理子单元111进行处理,将虚拟访存请求发给内存管理子单元111;4)内存翻译子单元112进行地址翻译工作,将统一虚拟地址翻译成统一物理地址;5)内存翻译子单元112将统一物理地址发送给输入输出派发子单元113;6)输入输出派发子单元113基于统一物理地址构造物理访存请求,并发给统一总线路由单元12。
[0042]
在一些可行的实施方式中,统一总线路由单元12,主要用于接收来自统一内存管理单元翻译出的统一物理地址,并使用类似于统一虚拟地址的机制,根据统一物理地址来将物理访存请求路由到不同的总线系统。
[0043]
在一些可行的实施方式中,请参阅图5,为本技术提供的一种统一物理地址示意图。该统一物理地址可以由gpu核、主cpu、虚拟cpu等单元通过页表项设置的。该统一物理地址主要包括页保留部分、统一总线路由标识(unified bus router identifier,unified brid)部分,物理页号部分、页偏移部分,其中,统一总线路由标识主要用来路由到不同的总线系统,可根据需要路由到总线系统的数量设置相应的位数。
[0044]
在一些可行的实施方式中,请参阅图6,为一种统一总线路由标识的示例图。可以看到,如果为00,则由统一总线路由单元将物理访存请求路由到gpu本地总线上,实现gpu本地ddr内存访问;如果为01,则总线路由模块将物理访存请求通过pcie总线路由到主cpu;如果为10或者11,则总线路由模块则将物理访存请求通过pcie总线路由到虚拟 cpu。需要说明的是,本技术不限于如上示例,可以扩展支持访存请求路由到更多总线域。
[0045]
可选的,对于主cpu或者虚拟cpu,统一总线路由标识可以借用pcie的物理功能(pf),或者虚拟功能标识 (virtual function identification, vfid)或者路由标识(router identifier,rid)等。统一总线路由标识的位数以及值的设置可以根据实际需求设计。
[0046]
在一些可行的实施方式中,如图7所示,页表项的偏移位(page offset)可以用来做统一总线路由标识。
[0047]
在一些可行的实施方式中,当统一总线路由标识放在该偏移位中时,可以将统一总线路由单元内置于统一内存管理单元中,比如内置在统一内存管理单元的输入输出派发子单元中,统一总线路由单元根据统一总线路由标识来将物理访存请求直接分发到不同的
总线域中。
[0048]
在一些可行的实施例中,统一总线路由标识可以放在页保留位中,如图9所示。
[0049]
在一些可行的实施例中,统一内存管理单元可以将统一虚拟地址通过查表翻译成统一物理地址,中间可能涉及到多级页表或者页目录表的查询,虚拟地址中的每一级可以以统一标识或者vpn[

]作为索引,查找对应的页表项,进而找到对应的下一级页目录表和/或页表的物理地址,通过最后一级的页表所对应页表项的物理地址与虚拟地址page offset对应的偏移相加得到统一物理地址,统一物理地址的ppn不同项对应于上面页目录表/页表项内容,表示下一级页目录表/页表项的基址。
[0050]
举例来说,请参阅图8,为本技术提供的一种统一物理地址生成的流程示意图。统一内存管理单元可以通过级级查表的方式将统一虚拟地址翻译成统一物理地址,第一级页表的基址可以来源于根寄存器的物理地址(该根寄存器的物理地址为预设的地址,非查表得到),统一内存管理单元根据统一标识和第一级页表,查找得到物理地址1,然后将物理地址1作为第二级页表项的基址,根据vpn[x]查找到第二级页表项,进而得到物理地址2,类似的,通过级级查表的方式得到vpn[0]对应的物理地址3,通过将物理地址3和统一虚拟地址中的页偏移位相加,得到统一物理地址。可选的,每一级页目录表或者页表都可以为图8所示的格式,具体查找后的统一物理地址是页对齐的,即页偏移部分的空白位填充成零。
[0051]
可选的,统一总线路由标识可以通过查表得到,可以提前设置路由策略,根据当前内存实际情况等因素设置物理地址与路由线路的对应关系,当统一内存管理单元通过查表得到最后一级物理地址时,可以同步得到该最后一级物理地址对应的路由线路,也即,可以查找到与该路由线路对应的统一总线路由标识,统一总线路由标识可以放在统一物理地址的页保留位或者页偏移位。
[0052]
可以看到,整个统一内存管理单元在进行地址翻译过程的中,物理页表项对应的page offset部分,包含统一总线路由标识可以不参加地址翻译,参与地址翻译的有效部分可以来自于物理页表项的vpn[

]部分,构成最终输出的对应统一虚拟地址的统一物理地址的页偏移部分可以来源于统一虚拟地址的页偏移部分。
[0053]
基于上述gpu访存装置,下面介绍本技术的方法实施例。请参阅图10,为本技术提供的一种用于图像处理器的访存处理方法,该方法可包括:s1101、发起虚拟访存请求。
[0054]
其中,该虚拟访存请求由图像处理器内部单元发起。
[0055]
在一些可行的实施方式中,该图像处理器内部单元包括图像处理器核心单元和/或图像处理器直接内存访问单元。举例来说,该图像处理器核心单元,可以为gpu核,图像处理器直接内存访问单元,可以为gpu dma。
[0056]
在一些可行的实施方式中,虚拟访存请求可以携带该图像处理器内部单元指向信息及访存虚拟地址信息。其中,该图像处理器内部单元指向信息是用于指向该虚拟访存请求由哪一个图像处理器内部单元发出。
[0057]
s1102、根据该虚拟访存请求生成统一虚拟地址。
[0058]
在一些可行的实施方式中,图像处理器可以通过配置统一虚拟地址单元实现s1102所示的步骤。
[0059]
需要说明的是,该统一虚拟地址携带统一标识,该统一标识用于为不同的图像处
理器内部单元提供统一的内存访问,以便不同的图像处理器内部单元既可以访问gpu本地内存,也可访问cpu内存。
[0060]
在一些可行的实施方式中,该统一标识可以为虚拟地址内存标识(virtual memory address identifie,vmid),在一个操作系统中,由于可能有多套图形栈应用(如xserver wayland),需要不同的地址空间区分,对这些不同的图形栈应用可以用vmid进行区分,vmid可以是cpu侧携带下来。
[0061]
在一些可行的实施方式中,根据该虚拟访存请求生成统一虚拟地址,可包括:提取该虚拟访存请求中的图像处理器内部单元指向信息;根据该图像处理器内部单元指向信息得到统一标识;根据该统一标识及该访存虚拟地址信息生成统一虚拟地址。
[0062]
上述方式为扩充地址线的方法,举例来说,假设统一标识为3位,虚拟内存请求由gpu核发起,在处理器/gpu/dma等芯片设计中,可以考虑将gpu核的35位的地址线的高几位,比如最高3位在gpu核的设计中与统一标识绑定,如对于gpu核0,可以提取该虚拟访存请求中的图像处理器内部单元指向信息,得到访存发起方为gpu核0,将gpu核0的32位访存虚拟地址由gpu核0自动扩充为35位统一虚拟地址。
[0063]
在一些可行的实施方式中,虚拟访存请求包括第一访存请求及第二访存请求;该根据该虚拟访存请求生成统一虚拟地址,可包括:提取第一访存请求中携带的访存虚拟地址信息;提取第二访存请求中携带的图像处理器内部单元指向信息,并得到统一标识;根据该统一标识及该访存虚拟地址信息生成统一虚拟地址。
[0064]
上述方式为两次请求法,举例来说,同样以3bit的统一标识为例,假设gpu核发起虚拟内存请求。访存请求中可以包括两次请求,第一次,为32位地址的第一访存请求,第二次为额外的3位地址的第二访存请求(第二次也可以考虑为32位的第二访存请求,但仅包含额外的3位信息),然后根据32位地址的第一访存请求得到访存虚拟地址信息,根据3位地址的第二访存请求得到是由哪一个图像处理器内部单元发起访存请求,根据图像处理器内部单元与统一标识的对应关系得到统一标识,合并统一标识以及访存虚拟地址,得到统一虚拟地址。合并的方式以及如何约定前后两次请求的顺序可以有一定算法,本技术对此不做任何限制。
[0065]
需要说明的是,如果使用的是32位编译器的话,将产生32位的寄存器以及地址的指令,对于本身就是32位宽度的寄存器来说没有影响,但是对于生成的32位宽度的地址来说,则还有额外的统一标识需要处理,如构造35位的统一虚拟地址。
[0066]
在一些可行的实施方式中,如果虚拟访存请求来自于gpu dma,为了可配置,可以提供寄存器接口给其他单元,寄存器接口主要涉及三个寄存器:目的地址寄存器,用于存放目的地的统一虚拟地址,统一虚拟地址的统一标识由其他单元配置改寄存器时提供;源址寄存器,用于存放发送地的统一虚拟地址,统一地址的统一标识由其单元配置该寄存器时提供。搬移数据长度寄存器。其中,其他渲染单元针对标识进行处理:如向量处理器访问虚拟 cpu或主cpu内存数据,由于知道vmid,在向统一内存管理单元发起访存请求时,可以直接将vmid构造到统一虚拟地址的统一标识里。
[0067]
s1103、根据该统一虚拟地址进行地址翻译处理,得到统一物理地址,并根据该统一物理地址生成物理访存请求。
[0068]
在一些可行的实施方式中,图像处理器可以通过配置统一内存管理单元实现如
s1103所示的步骤。可选的,统一内存管理单元可以包括:内存管理子单元、内存翻译单元、输入输出派发单元。
[0069]
在一些可行的实施方式中,根据该统一虚拟地址进行地址翻译处理,得到统一物理地址,并根据该统一物理地址生成物理访存请求,包括:提取该统一虚拟地址中的统一标识进行翻译查找缓冲,并判断该统一虚拟地址是否存在;若存在,则根据该统一虚拟地址得到统一物理地址,并根据该统一物理地址生成物理访存请求;若不存在,则按照该统一标识的优先级,将该统一虚拟地址翻译为统一物理地址,并根据该统一物理地址生成物理访存请求。
[0070]
可选的,图像处理器可以通过内设统一翻译查找缓冲(统一tlb)子模块进行翻译查找缓冲处理。举例来说,通过统一翻译查找缓冲子模块查找该虚拟访存请求的统一虚拟地址是否存在。若存在,则可以直接根据统一虚拟地址得到统一物理地址,并基于该统一物理地址构造物理访存请求;若不存在,则可以按照统一标识的优先级,选择优先级高的统一虚拟地址进行地址翻译处理,将统一虚拟地址翻译成统一物理地址,并基于该统一物理地址构造物理访存请求。同时,可以将翻译后的统一物理地址和统一虚拟地址的对应关系添加到翻译查找缓冲子模块中,以便下一次对同样统一虚拟地址的访问可以直接能从统一翻译查找缓冲子模块查到该统一虚拟地址是否存在。
[0071]
s1104、根据该物理访存请求进行总线路由选择,将该物理访存请求分发到目标总线。
[0072]
其中,该目标总线包括图像处理器本地总线和/或外部总线。
[0073]
在一些可行的实施方式中,该外部总线,包括虚拟中央处理器对应的总线和/或主中央处理器对应的总线。
[0074]
在一些可行的实施方式中,物理访存请求包含统一物理地址,该统一物理地址携带统一总线路由标识信息,该统一总线路由标识信息位于该统一物理地址页表项的保留位或偏移位。
[0075]
在一些可行的实施方式中,统一物理地址可以如图5、图7所示。
[0076]
举例来说,统一物理地址可以由gpu核、主cpu、虚拟 cpu等单元通过页表项设置的。其中,统一总线路由标识(unified bus router identifier:unified brid)信息,主要用来路由到不同的总线系统。
[0077]
在一些可行的实施方式中,统一虚拟地址可以通过查表翻译成统一物理地址,中间涉及到x级页表或者页目录表查询,虚拟地址中的每一级以unified id统一标识或者vpn[

]作为索引,查找对应的页表项,进而找到对应的下一级页目录表或者页表的物理地址,通过最后一级的页表所对应页表项的物理地址与虚拟地址页偏移部分(或者页保留部分)对应的偏移相加得最后输出的统一物理地址。
[0078]
可选的,每一级页目录表或者页表项都可以为相同格式,查找后的统一物理地址是页对齐的。
[0079]
在一些可行的实施方式中,该根据该物理访存请求进行总线路由选择,将该物理访存请求分发到目标总线,包括:提取统一物理地址中的统一总线路由标识信息;若该统一总线路由标识信息指向图像处理器本地总线,则将该物理访存请求分发到该图像处理器本地总线;若该统一总线路由标识信息指向外部总线,则将该物理访存请求通过总线路由单
元分发到对应外部总线。
[0080]
举例来说,请参阅图6,统一总线路由标识与目标总线具有对应关系。如果统一总线路由标识为00,通过对应关系可以知道该统一总线路由标识信息指向图像处理器本地总线,则可以将物理访存请求路由到本地总图像处理器本地总线上,实现图像处理器本地双倍速率同步动态随机存储器(ddr)内存访问。如果为01,通过对应关系可以知道该统一总线路由标识信息指向主cpu,则可以将物理访存请求通过pcie总线路由到主cpu对应的总线;如果为10或者11,通过对应关系可以知道该统一总线路由标识信息指向虚拟cpu,则可以将物理访存请求通过pcie总线路由到虚拟cpu。
[0081]
可选的,对于主cpu或者虚拟cpu,统一总线路由标识信息可以借用pcie的pf或者vfid或者rid(router identifier)。统一总线路由标识信息的位数以及值的设置可以根据实际需求设计。
[0082]
可见,实施本技术提供的访存处理方法,可以通过将gpu内部单元的虚访存请求进行统一处理,得到统一虚拟地址,翻译处理得到统一物理地址,再生成物理访存请求,该物理访存请求可指向gpu本地总线和/或外部总线,gpu内部单元便可实现既可访问cpu本地总线,也可访问外部总线,有效提高了访存处理的效率。
[0083]
下面介绍本技术的装置实施例,为本技术提供的一种图像处理器访存装置如图1所示。如图1所示的图像处理器访存装置可包括:图像处理器内部单元13,用于发起虚拟访存请求。
[0084]
统一虚拟地址单元10,用于根据该虚拟访存请求生成统一虚拟地址。
[0085]
统一内存管理单元11,用于根据该统一虚拟地址进行地址翻译处理,得到统一物理地址,并根据该统一物理地址生成物理访存请求。
[0086]
统一总线路由选择单元12,用于根据该物理访存请求进行总线路由选择,将该物理访存请求分发到目标总线。
[0087]
在一些可行的实施方式中,该图像处理器内部单元包括图像处理器核心单元和/或图像处理器直接内存访问单元或者其他单元,具体单元的功能和数量不做限制,只要有访存需求就可以。该外部总线,包括虚拟中央处理器对应的总线和/或主中央处理器对应的总线。
[0088]
在一些可行的实施方式中,该虚拟访存请求携带该图像处理器内部单元指向信息及访存虚拟地址信息;该统一虚拟地址单元10,具体用于:提取该虚拟访存请求中的图像处理器内部单元指向信息;根据该图像处理器内部单元指向信息得到统一标识;根据该统一标识及该访存虚拟地址信息生成统一虚拟地址。
[0089]
在一些可行的实施方式中,该虚拟访存请求包括第一访存请求及第二访存请求。该统一虚拟地址单元10,具体用于:提取第一访存请求中携带的访存虚拟地址信息;提取第二访存请求中携带的图像处理器内部单元指向信息,并得到统一标识;根据该统一标识及该访存虚拟地址信息生成统一虚拟地址。
[0090]
在一些可行的实施方式中,该统一内存管理单元11,具体用于提取该统一虚拟地址中的统一标识进行翻译查找缓冲,并判断该统一虚拟地址是否存在;若存在,则根据该统一虚拟地址得到统一物理地址,并根据该统一物理地址生成物理访存请求;若不存在,则按照该统一标识的优先级,将该统一虚拟地址翻译为统一物理地址,并根据该统一物理地址
生成物理访存请求。
[0091]
同时将翻译后的统一物理地址和统一虚拟地址的对应关系添加到翻译查找缓冲子模块中(统一tlb),以便下一次对同样统一虚拟地址的访问直接能从统一翻译查找缓冲子模块查到该虚拟地址存在。
[0092]
在一些可行的实施方式中,该物理访存请求包含该统一物理地址,该统一物理地址携带统一总线路由标识信息,该统一总线路由标识信息位于该统一物理地址页表项的保留位或偏移位。其中,页表项的高位和页偏移的低位都可以作为页表项的保留位。
[0093]
在一些可行的实施方式中,该统一总线路由选择单元12,具体用于:提取统一物理地址中的统一总线路由标识信息;若该统一总线路由标识信息指向图像处理器本地总线,则将该物理访存请求分发到该图像处理器本地总线;若该统一总线路由标识信息指向外部总线,则将该物理访存请求通过总线路由单元分发到对应外部总线。
[0094]
可见,实施本技术提供的访存处理装置,可以通过统一内存管理单元将gpu内部单元的虚访存请求进行统一处理,得到统一虚拟地址,由统一内存管理单元翻译处理得到统一物理地址,生成物理访存请求,统一总线路由选择单元将物理访存请求指向gpu本地总线和/或外部总线,gpu内部单元便可实现既可访问cpu本地总线,也可访问外部总线,有效提高了访存处理的效率。
[0095]
请参阅图11,为本技术提供的一种电子设备的结构示意图。本实施例中所描述的电子设备,包括:图像处理器1101、中央处理器1102、输出接口1103、输入接口1104、存储器1105,以及电源等部件。本领域技术人员可以理解,图11中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
[0096]
需要说明的是,本技术所指的图像处理器仅为一种处理器形式,并不作为对本技术的专利,在其他可行的实施方式中,如中央处理器、数字信号处理芯片dsp、现场可编辑逻辑门阵列fpga芯片等具有如本技术所示的访存需求,本技术也可同样适用。
[0097]
下面结合图11对电子设备的各个构成部件进行具体的介绍:存储器1105可用于存储软件程序以及模块,处理器1101通过运行存储在存储器1105的软件程序以及模块,从而执行电子设备的各种功能应用以及数据处理。存储器1105可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如汇聚处理功能)等;存储数据区可存储根据电子设备的使用所创建的数据(比如文本数据、音频数据、影像数据等)等。此外,存储器1105可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0098]
输入接口1104可用于接收变量数据,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。
[0099]
电子设备还可包括至少一种输出接口1103,用于向外输出数据。
[0100]
图像处理器1101是电子设备的图像处理控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器1105内的软件程序和/或模块,以及调用存储在存储器1105内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进
行整体监控。可选的,图像处理器1101可包括一个或多个处理单元。在一些可行的实施方式中,图像处理器1101可以有自己的ddr内存和非易失存储器(比如flash),图像处理器的程序一部分放在自己的存储器里,一部分放在主(host)存储器里。
[0101]
需要说明的是,本技术的存储设备1105可以是ddr, ddr可以看做是内置在gpu中的存储器,也可以是虚拟cpu的存储器,本技术还可支持类似于ddr的支持这种寻址方式的存储器,比如其他pcie设备里的内存或者寄存器,支持(芯片内执行)xip模式的flash等等。
[0102]
电子设备还包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理系统与处理器1101逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
[0103]
尽管未示出,电子设备还可以包括显示模块、蓝牙模块等,在此不再赘述。
[0104]
具体的,上述图像处理器1101可以调用上述存储器1105存储的程序指令,实现如本发明实施例所示的方法。
[0105]
具体的,上述图像处理器1101调用存储在上述存储器1102存储的程序指令执行以下步骤:发起虚拟访存请求;根据该虚拟访存请求生成统一虚拟地址;根据该统一虚拟地址进行地址翻译处理,得到统一物理地址,并根据该统一物理地址生成物理访存请求;根据该物理访存请求进行总线路由选择,将该物理访存请求分发到目标总线。
[0106]
在一些可行的实施方式中,该图像处理器内部单元包括图像处理器核心单元和/或图像处理器直接内存访问单元。该外部总线,包括虚拟中央处理器对应的总线和/或主中央处理器对应的总线。
[0107]
在一些可行的实施方式中,该虚拟访存请求携带该图像处理器内部单元指向信息及访存虚拟地址信息;该图像处理器1101,具体用于:提取该虚拟访存请求中的图像处理器内部单元指向信息;根据该图像处理器内部单元指向信息得到统一标识;根据该统一标识及该访存虚拟地址信息生成统一虚拟地址。
[0108]
在一些可行的实施方式中,该虚拟访存请求包括第一访存请求及第二访存请求。该图像处理器1101,具体用于:提取第一访存请求中携带的访存虚拟地址信息;提取第二访存请求中携带的图像处理器内部单元指向信息,并得到统一标识;根据该统一标识及该访存虚拟地址信息生成统一虚拟地址。
[0109]
在一些可行的实施方式中,该图像处理器1101,具体用于提取该统一虚拟地址中的统一标识进行翻译查找缓冲,并判断该统一虚拟地址是否存在;若存在,则根据该统一虚拟地址得到统一物理地址,并根据该统一物理地址生成物理访存请求;若不存在,则按照该统一标识的优先级,将该统一虚拟地址翻译为统一物理地址,并根据该统一物理地址生成物理访存请求。
[0110]
在一些可行的实施方式中,该物理访存请求包含该统一物理地址,该统一物理地址携带统一总线路由标识信息,该统一总线路由标识信息位于该统一物理地址页表项的保留位或起始位。
[0111]
在一些可行的实施方式中,该图像处理器1101,具体用于:提取统一物理地址中的
统一总线路由标识信息;若该统一总线路由标识信息指向图像处理器本地总线,则将该物理访存请求分发到该图像处理器本地总线;若该统一总线路由标识信息指向外部总线,则将该物理访存请求通过总线路由单元分发到对应外部总线。
[0112]
本技术实施例中处理器执行的方法均从图像处理器的角度来描述,可以理解的是,本技术实施例中图像处理器要执行上述方法需要其他硬件结构的配合。本技术实施例对具体的实现过程不作详细描述和限制。
[0113]
在本技术的另一实施例中提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,可以实现:发起虚拟访存请求;根据该虚拟访存请求生成统一虚拟地址;根据该统一虚拟地址进行地址翻译处理,得到统一物理地址,并根据该统一物理地址生成物理访存请求;根据该物理访存请求进行总线路由选择,将该物理访存请求分发到目标总线。
[0114]
需要说明的是,该计算机可读存储介质被处理器执行的具体过程可参见方法实施例中所描述的方法,在此不再赘述。
[0115]
在本技术的又一实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行方法实施例中所描述的方法,在此不再赘述。
[0116]
所述计算机可读存储介质可以是前述任一实施例所述的电子设备的内部存储单元,例如电子设备的硬盘或内存。所述计算机可读存储介质也可以是所述电子设备的外部存储设备,例如所述电子设备上配备的插接式硬盘,智能存储卡(smart media card, smc),安全数字(secure digital, sd)卡,闪存卡(flash card)等。进一步地,所述计算机可读存储介质还可以既包括所述电子设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述电子设备所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。需要说明的是,本技术的存储设备可以是ddr,也可以是虚拟cpu的存储器, ddr可以看做是内置在gpu中的存储器,本技术还可支持类似于ddr的支持这种寻址方式的存储器,比如其他pcie设备里的内存或者寄存器,支持(芯片内执行)xip模式的flash等等。
[0117]
基于同一发明构思,本技术实施例中提供的电子设备解决问题的原理与本技术方法实施例相似,因此该电子设备的实施可以参见方法的实施,为简洁描述,在这里不再赘述。
[0118]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献