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

联网输入/输出存储器管理单元的制作方法

2022-03-31 11:21:07 来源:中国专利 TAG:

联网输入/输出存储器管理单元


背景技术:

1.用于常规的图形处理系统的平台包括中央处理单元(cpu)、图形处理单元(gpu)、一个或多个系统存储器(诸如动态随机存取存储器,dram),以及支持这些实体之间的通信的总线。在一些情况下,该平台被实现为片上系统(soc)。cpu通过向gpu发出绘制调用来发起图形处理。响应于接收到绘制调用,gpu使用由一系列可编程着色器和固定功能硬件块形成的流水线来渲染图像以供显示。常规的图形处理系统中的系统存储器被划分为对在图形处理系统上执行的主机操作系统(os)可见的第一部分和专用于gpu(例如,以提供帧缓冲器)的第二部分。第二部分(有时称为划出区或gpu划出区)对主机操作系统不可见。由图形装置驱动器管理的gpu虚拟管理器(vm)将存储器访问请求中的虚拟地址转换成系统存储器中的物理地址,诸如系统存储器的gpu划出区中的物理地址。在一些情况下,gpu vm使用缓存来自页表的频繁请求的地址转换的对应的转换旁视缓冲器(tlb)执行地址转换。


技术实现要素:

2.根据一个方面,一种设备包括联网输入/输出存储器管理单元(iommu),所述联网iommu包括多个iommu。所述联网iommu被配置为:接收存储器访问请求,所述存储器访问请求包括由第一地址转换层生成的域物理地址;以及使用所述多个iommu中基于生成所述存储器访问请求的装置的类型而选择的一个iommu来选择性地将所述域物理地址转换成系统存储器中的物理地址。
3.在一些实施方案中,所述装置是图形处理单元(gpu)或者多个外围装置中的一者,并且其中所述多个iommu包括:主iommu,所述主iommu被配置为从所述第一地址转换层接收所述存储器访问请求;以及辅iommu,所述辅iommu连接到所述主iommu并且接近与所述装置相关联的电路设置。在一些方面,所述主iommu响应于从所述gpu接收到所述存储器访问请求而执行所述域物理地址的地址转换,而所述辅iommu响应于从所述外围装置接收到所述存储器访问请求而执行所述地址转换。
4.另外,所述主iommu可通过使用与所述主iommu相关联的第一转换旁视缓冲器(tlb)和第一组页表执行页表走步来执行从所述gpu接收到的所述域物理地址的所述地址转换。在一些方面,所述主iommu响应于从所述外围装置接收到所述存储器访问请求而向所述辅iommu提供所述请求,并且所述辅iommu通过使用与所述辅iommu相关联的第二tlb和第二组页表执行所述页表走步来执行从所述主iommu接收到的所述存储器访问请求中的虚拟地址的所述地址转换。
5.在一些实施方案中,基于所述外围装置的延时要求来确定所述第二iommu相对于与所述外围装置相关联的所述电路的位置。在此类实施方案中,所述设备还可包括多个辅iommu,所述多个辅iommu连接到所述主iommu,其中所述多个辅iommu接近与多个外围装置相关联的电路部署,所述多个辅iommu中的每一者被配置为执行从与所述多个外围装置中的对应一者相关联的所述电路接收到的存储器访问请求中的域物理地址的地址转换。所述多个辅iommu可集成到与所述多个外围装置相关联的所述电路中。
6.所述设备还可包括命令队列,所述命令队列被配置为从所述第一地址转换层接收所述存储器访问请求并且基于生成所述存储器访问请求的所述装置的所述类型来选择性地向所述主iommu或所述辅iommu提供所述存储器访问请求。
7.根据另一方面,一种方法包括:在包括多个输入/输出存储器管理单元(iommu)的联网iommu处接收存储器访问请求,所述存储器访问请求包括由第一地址转换层生成的域物理地址;基于生成所述存储器访问请求的装置的类型来选择所述多个iommu中的一者;以及使用所述多个iommu中的选定的一者来选择性地将所述域物理地址转换成系统存储器中的物理地址。在一些实施方案中,所述装置是图形处理单元(gpu)或者多个外围装置中的一者,并且接收所述存储器访问请求包括在所述多个iommu中的主iommu处从所述第一地址转换层请求接收所述存储器访问。在此类情况下,选择所述多个iommu中的所述一者可包括:响应于所述装置是所述gpu而选择所述主iommu;以及响应于所述装置是所述多个外围装置中的所述一者而选择辅iommu,其中所述辅iommu连接到所述主iommu并且接近与所述多个外围装置中的所述一者相关联的电路设置。所述方法还可包括:响应于从所述gpu接收到所述存储器访问请求而在所述主iommu处执行所述域物理地址的地址转换,其中在所述主iommu处执行所述域物理地址的所述地址转换包括使用与所述主iommu相关联的第一转换旁视缓冲器(tlb)和第一组页表执行页表走步。在一些实施方案中,所述方法还包括响应于从所述外围装置接收到所述存储器访问请求而在所述辅iommu处执行所述地址转换。所述方法还可包括响应于从所述外围装置接收到所述存储器访问请求而将所述请求从所述主iommu提供到所述辅iommu,其中在所述辅iommu处执行虚拟地址的所述地址转换包括使用与所述辅iommu相关联的第二tlb和第二组页表执行所述页表走步。
8.在一些实施方案中,所述方法还包括:在命令队列处从所述第一地址转换层接收存储器访问请求;以及基于生成所述存储器访问请求的所述装置的所述类型来选择性地将所述存储器访问请求从所述命令队列提供到所述主iommu或所述辅iommu。
9.根据又一方面,一种被配置为连接到图形处理单元(gpu)、至少一个外围装置和存储器的联网输入/输出存储器管理单元(iommu)包括:命令队列,所述命令队列被配置为从第一地址转换层接收存储器访问请求,其中所述存储器访问请求包括由所述第一地址转换层生成的域物理地址;主iommu,所述主iommu被配置为响应于从所述gpu接收到所述存储器访问请求而将所述域物理地址转换成所述存储器中的物理地址;以及至少一个辅iommu,所述至少一个辅iommu被配置为响应于从所述至少一个外围装置接收到所述存储器访问请求而将所述域物理地址转换成所述存储器中的所述物理地址。在一些实施方案中,所述主iommu通过使用与所述主iommu相关联的第一转换旁视缓冲器(tlb)和第一组页表执行页表走步来执行从所述gpu接收到的所述域物理地址的所述地址转换,并且所述至少一个辅iommu通过使用与所述辅iommu相关联的第二tlb和第二组页表执行所述页表走步来执行所述存储器访问请求中的虚拟地址的所述地址转换。可基于所述至少一个外围装置的延时要求来确定所述至少一个第二iommu相对于所述至少一个外围装置的至少一个位置。
附图说明
10.通过参考附图,更好地理解本公开,并且本公开的众多的特征和优点对本领域技术人员来说变得显而易见。在不同的附图中使用相同的附图标记指示类似或相同的项。
11.图1是根据一些实施方案的处理系统的框图。
12.图2是在存储器中实现常规的gpu划出区的处理系统的一部分的框图。
13.图3是根据一些实施方案的结合将存储器动态分配给gpu来实现gpu划出区的处理系统的一部分的框图。
14.图4是示出根据一些实施方案的存储器访问请求中的装置生成的地址的转换的框图。
15.图5是根据一些实施方案的实现联网iommu的处理系统的一部分的框图。
16.图6是根据一些实施方案的实现片上系统(soc)装置转换块的处理系统的使用模型的框图。
17.图7是根据一些实施方案的选择性地执行地址转换和主iommu或辅iommu的方法的流程图。
具体实施方式
18.由操作系统(诸如microsoft)的供应商推动的安全基础架构和要求的变化预计会影响处理系统的存储器访问性能。例如,可减少gpu划出区的大小以增加可用于从存储器的os控制部分动态分配给gpu的存储器量。又例如,基于虚拟化的安全性(vbs)通过在系统存储器中创建安全分区来提供针对内核模式恶意软件的存储器保护,该安全分区使用由装置驱动器管理的第一地址转换层访问,例如使用页表和转换旁视缓冲器(tlb)以缓存来自页表的频繁请求的地址转换。页表和tlb与gpu虚拟管理器(vm)相关联。用于访问安全分区的第二地址转换层由管理程序或安全os控制。第一地址转换层是连续的且高性能的。第二地址转换层处理物理存储器管理挑战,诸如存储器碎片和访问安全。因此,第二地址转换层典型地确定整体地址转换性能。第二地址转换层在系统范围的输入/输出存储器管理单元(iommu)中实现,该iommu支持地址转换和对来自包括gpu和一个或多个外围装置在内的装置的直接存储器访问(dma)传输的系统存储器访问保护。
19.响应于从gpu接收到存储器访问请求,第一地址转换层将存储器访问请求中的装置生成的地址转换成域物理地址。在iommu中实现的第二地址转换层将域物理地址转换成系统存储器中的系统物理地址。例如,iommu将域上下文和一组不同的页表分配给处理系统中的每个装置。当装置尝试读取或写入系统存储器时,iommu会拦截访问并确定装置已被分配的域上下文。如读、写、执行等附加权限被编码到用于执行第二层转换的页表和tlb中的条目中。因此,iommu使用与域相关联的tlb条目或与装置相关联的页表来确定是否准许访问以及在系统存储器中要访问的位置。例如,响应于确定来自装置的存储器访问请求被准许,iommu从由第一地址转换层生成的域物理地址生成系统存储器中的物理地址。
20.通过iommu汇集来自外围装置和gpu的所有存储器访问请求会导致若干问题。例如,iommu为具有严格的延时要求的实时相关装置客户端块(诸如视频解码器、视频编码器和显示器帧缓冲器扫描输出电路)提供服务。在单个iommu处对来自多个实体的存储器访问请求执行页表走步会引入处理延迟,从而增加延时。此外,单个iommu无法定位在所有外围装置和gpu附近,因此一些实体与iommu之间的往返时间进一步增加iommu处的处理延时。因此,中央iommu无法为靠近单个iommu且在硬访问期限内(例如,具有低延时)的所有存储器请求提供服务。可接近不同的装置或gpu部署不同且全异的iommu的系统。然而,为装置特定
的iommu提供编程支持要求系统软件中的不同的编程模型,从而使主机os和使用iommu作为以软件为目标的系统装置的其他系统软件架构复杂化。
21.图1至图7公开了处理系统的实施方案,该处理系统包括图形处理单元(gpu)和联网输入/输出存储器管理单元(iommu),该联网iommu使用将联网iommu结构视为单个装置的架构编程模型来满足外围装置的存储器访问延时要求。联网iommu接收存储器访问请求,该存储器访问请求包括由装置驱动器管理的第一地址转换层(例如,gpu vm和相关联的tlb)从装置生成的地址生成的域物理地址。联网iommu使用形成联网iommu的多个iommu中的一者来选择性地将域物理地址转换成系统存储器中的物理地址。在一些实施方案中,联网iommu包括第一iommu,该第一iommu经由处理系统中的电路(诸如显示器电路或相机电路)从gpu和外围装置接收存储器访问请求。联网iommu还包括连接到主iommu的一个或多个辅iommu,该主iommu与操作系统(os)或管理程序(hv)软件介接。联网iommu在主从网络、星形网络或其他类型的网络中实现主iommu和辅iommu,使得主iommu充当联网iommu的前端。辅iommu中的每一者接近与一个或多个外围装置相关联的对应的电路设置(或集成在其内)。例如,用于显示器和相机的辅iommu接近显示器电路和相机电路设置。辅iommu的位置至少部分地由一个或多个外围装置的延时要求确定。
22.响应于从第一转换层接收到包括域物理地址的存储器访问请求,主iommu基于提供存储器访问请求的装置的类型来选择性地执行域物理地址的地址转换或绕过地址转换。在一些实施方案中,主iommu通过使用与主iommu相关联的第一组页表和第一转换旁视缓冲器(tlb)执行页表走步来执行与来自gpu的存储器访问请求相关联的域物理地址的地址转换。主iommu绕过从外围装置接收到的存储器访问请求中的域物理地址的地址转换。相反,主iommu将存储器访问请求提供给与提供存储器访问请求的外围装置相关联的辅iommu。辅iommu通过使用与第二iommu关联的第二组页表和第二tlb执行页表走步来执行域物理地址的地址转换。主iommu的一些实施方案包括接收与主iommu和辅iommu相关联的命令的命令队列(或与命令队列相关联)。命令队列允许系统软件发起页表走步和装置重新扫描,这些在主iommu中处理或选择性地转发到辅iommu中的一者,如上文所讨论。命令队列还支持系统软件与外围装置的重新扫描和同步,以确保软件不会修改当前正在运行的表数据。
23.图1是根据一些实施方案的处理系统100的框图。处理系统100包括或有权访问存储器105或使用非暂时性计算机可读介质(诸如动态随机存取存储器(dram))来实现的其他存储部件。然而,存储器105的一些实施方案使用包括静态随机存取存储器(sram)、非易失性ram等的其他类型的存储器来实现。处理系统100还包括总线110,以支持在处理系统100中实现的实体(诸如,存储器105)之间的通信。处理系统100的一些实施方案包括为了清楚起见而未在图1中示出的其他总线、桥、开关、路由器等。
24.处理系统100包括渲染图像以用于在显示器120上呈现的图形处理单元(gpu)115。例如,gpu 115渲染对象以产生提供给显示器120的像素值,所述显示器使用像素值来显示表示渲染的对象的图像。gpu 105的一些实施方案包括同时或并行执行指令的多个处理元件(为了清楚起见,图1中未示出)。处理元件被称为计算单元、处理器核心或使用其他术语进行指称。gpu 115的一些实施方案用于通用计算。在所示的实施方案中,gpu 115通过总线110与存储器105通信。然而,gpu 115的一些实施方案通过直接连接或经由其他总线、桥、开关、路由器等与存储器105通信。gpu 115执行存储在存储器105中的指令并且gpu 115将信
息(诸如执行的指令的结果)存储在存储器105中。例如,存储器105存储表示将由gpu 115执行的程序代码的指令的副本125。
25.gpu 115的一些实施方案使用gpu vm 116和一个或多个对应的tlb 117(为了清楚起见,图1中仅示出一个tlb 117)来执行虚拟到物理地址转换。例如,在一些情况下,gpu vm 116和tlb 117被实现为第一地址转换层的一部分,该第一地址转换层从包括在gpu 115处接收到或由gpu 115生成的存储器访问请求中的虚拟地址生成域物理地址。尽管gpu vm 116和tlb 117在图1中被描绘为gpu 115的整体部分,但是gpu vm 116或tlb 117的一些实施方案在gpu 115的外部实现。
26.处理系统100还包括实现多个处理元件131、132、133(在本文中统称为“处理元件131至133”)的中央处理单元(cpu)130。处理元件131至133同时或并行地执行指令。cpu 130连接到总线110并且经由总线110与gpu 115和存储器105通信。cpu 130执行存储在存储器105中的指令,诸如程序代码135,并且cpu 130将信息(诸如执行的指令的结果)存储在存储器105中。cpu 130还能够通过向gpu 115发出绘制调用来发起图形处理。
27.输入/输出(i/o)引擎140处理与显示器120以及处理系统100的其他元件(诸如键盘、鼠标、打印机、外部磁盘等)相关联的输入或输出操作。在所示的实施方案中,i/o引擎140还处理与相机145相关联的输入和输出操作。i/o引擎140耦合到总线110,使得i/o引擎140能够与存储器105、gpu 115或cpu 130通信。在所示的实施方案中,i/o引擎140读取存储在外部存储部件150上的信息,该外部存储部件使用非暂时性计算机可读介质(诸如光盘(cd)、数字视频光盘(dvd)等)来实现。i/o引擎140还将信息(诸如由gpu 115或cpu 130处理的结果)写入到外部存储部件150。
28.处理系统100包括联网i/o存储器管理单元(iommu)155,该联网iommu包括一组iommu,以用于处理来自装置(诸如gpu 115以及包括显示器120、相机145和外部存储部件150在内的外围装置)的存储器访问请求。存储器访问请求包括装置生成的地址,诸如用于指示系统存储器105中的位置的虚拟地址。联网iommu 155的一些实施方案接收存储器访问请求,该存储器访问请求包括由第一地址转换层生成的域物理地址,该第一地址转换层由驱动器(诸如由gpu 115实现的图形驱动器)管理。例如,第一地址转换层可包括gpu vm 116和tlb 117。联网iommu 155使用一组iommu中的基于生成存储器访问请求的装置的类型而选择的一者来选择性地将域物理地址转换成系统存储器105中的物理地址。类型包括用于gpu 115的第一类型以及用于诸如显示器120、相机145和外部存储部件150的外围装置的第二类型。
29.在所示的实施方案中,联网iommu 135包括从第一地址转换层接收存储器访问请求的主iommu 160以及辅iommu 165、170,所述辅iommu连接到主iommu 160并接近与诸如显示器120、相机145和外部存储部件150的外围装置相关联的电路(为了清楚起见,图1中未示出)设置。主iommu 160和辅iommu 165、170被部署为主从网络、星形网络或允许存储器访问请求最初由主iommu 160接收并然后(在必要时)选择性地分发到辅iommu 165、170的其他类型的网络。主iommu 160的一些实施方案负责将tlb击落或其他软件命令传递到辅iommu 165、170。
30.联网iommu 135使用存储在页表180中的地址转换来执行地址转换。在处理系统100中的装置上执行的每个进程具有对应的页表。进程的页表180将进程正在使用的装置生
成的(例如,虚拟)地址转换成系统存储器105中的物理地址。主iommu 160和辅iommu 165、170独立地执行页表180的表走步以确定存储器访问请求中的地址的转换。联网iommu 135经常使用的转换存储在用于缓存经常请求的地址转换的tlb 185中。单独的tlb 185与主iommu 160和辅iommu 165、170相关联。包括经常使用的地址转换的条目从页表180写入到用于主iommu 160和辅iommu 165、170的tlb 185中。主iommu 160和辅iommu 165、170因此能够独立地访问来自tlb 185的地址转换,而没有在页表180中搜索转换的开销。根据tlb替换策略,从tlb 185中逐出条目以便为新条目腾出空间。tlb 185在图1中被描绘为联网iommu 135的整体部分。然而,在其他实施方案中,tlb 185在可由联网iommu 135访问的单独实体中实现。在一些实施方案中,tlb 117和tlb 185在单个架构中实现,但并非所有实施方案都要求这样。
31.图2是在存储器中实现常规的gpu划出区的处理系统的一部分200的框图。部分200包括gpu 205和系统存储器210。在所示的实施方案中,系统存储器210被划分为主机分区215和gpu分区220,这也被称为gpu划出区。例如,如果系统存储器210包括总共8gb或更多,则gpu分区220包括高达2gb的专用帧缓冲器。gpu分区220被保留以供gpu 220独占访问。gpu分区220对在处理系统上执行的os不可见。因此,当处理系统在运行非图形中心或不消耗gpu 220的大量资源的应用程序时,gpu分区220可能未被充分利用。如本文所讨论,gpu分区220不能被分配给其他应用程序,因为gpu分区220对os不可见。
32.图3是根据一些实施方案的结合将存储器动态分配给gpu实现gpu划出区的处理系统的一部分300的框图。部分300包括gpu 305和系统存储器310。在所示的实施方案中,系统存储器310被划分为主机分区315和gpu分区320。gpu分区320的大小被限制为预定(相对小的)大小。在一些实施方案中,gpu分区320包括系统存储器310的3%或更少,例如,对于8gb系统存储器310为256mb。处理系统通过动态地分配主机分区315的部分321、322、323(这里称为“部分321至323”)来补偿gpu分区320的小大小。
33.处理系统的部分300包括联网iommu 325以将存储器访问请求中的装置生成的地址转换成gpu分区320或部分321至323中的物理地址。例如,gpu vm和相关联的tlb可将存储器访问请求中的虚拟存储器地址转换成域物理地址并将包括域物理地址的存储器访问请求提供给联网iommu 325。在一些实施方案中,响应于将部分321至323分配给在gpu 305上执行的进程来定义页表。例如,在gpu 305上执行的进程使用的虚拟地址被映射到分配给该进程的部分321中的物理地址。映射存储在与进程相关联的页表的条目中。联网iommu 325包括一组iommu,并且联网iommu 325使用一组iommu中的基于生成存储器访问请求的装置的类型而选择的一者来选择性地将域物理地址转换成系统存储器310中的物理地址。例如,一组iommu中的主iommu响应于从gpu 305接收到存储器访问请求而将域物理地址转换成系统存储器310中的物理地址。又例如,主iommu绕过转换并且响应于从外围装置(诸如显示器或相机)接收到存储器访问请求而将存储器访问请求提供给辅iommu来进行转换。
34.图4是示出根据一些实施方案的存储器访问请求中的装置生成的地址的转换400的框图。在图1所示的处理系统100和图3所示的处理系统的部分300的一些实施方案中执行转换400。在所示的实施方案中,装置405发出存储器访问请求,诸如将信息写入系统存储器410的请求或从系统存储器410读取信息的请求。装置405代表图1所示的gpu 115或图1所示的外围装置(诸如显示器120、相机145或外部存储介质150)的一些实施方案。
35.存储器访问请求包括装置生成的地址,诸如由在装置405上执行或与该装置相关联的应用程序使用的虚拟地址。在所示的实施方案中,基于虚拟化的安全性(vbs)使用包括由os或装置驱动器420管理的第一级转换415和由管理程序430管理的第二层转换425的两级转换过程来提供存储器保护(例如,针对内核模式恶意软件)。第一级转换415将存储器访问请求中的装置生成的地址(诸如虚拟地址)转换成域物理地址(诸如gpu物理地址)。在一些实施方案中,第一级转换415由gpu vm和相关联的tlb执行,如本文所讨论。域物理地址被传递到第二级转换425,该第二级转换将域物理地址转换成指示系统存储器410内的位置的物理地址。如本文所讨论,第二级转换425还验证装置405被授权访问系统存储器410的由物理地址指示的区域,例如,使用被编码到用于执行第二层转换425的相关联的页表和转换旁视缓冲器(tlb)中的条目中的权限信息来验证。
36.图5是根据一些实施方案的实现联网iommu 505的处理系统的一部分500的框图。部分500代表图1所示的处理系统100的一些实施方案的一部分,并且联网iommu 505代表图1所示的网络iommu 135和图3所示的联网iommu 325的一些实施方案。
37.联网iommu 505经由主iommu 515的统一软件接口510来接收存储器访问请求。在所示的实施方案中,存储器访问请求由软件(诸如在处理系统中实现的iommu驱动器520)提供。iommu驱动器520从第一地址转换层(例如,包括gpu vm和相关联的tlb的地址转换层(为了清楚起见,图5中未示出))接收存储器访问请求。第一地址转换层将装置生成的地址(诸如虚拟存储器地址)转换成域物理地址并将包括域物理地址的存储器访问请求提供给联网iommu 505。软件使用装置生成的地址(例如,虚拟地址)来指示系统存储器525内的位置。
38.主iommu 515和统一软件接口510支持由系统软件(诸如iommu驱动器520)以单个装置为目标的架构编程模型。因此,编程模型不要求专门的控制机制和软件来操作全异的iommu硬件单元以进行实时和常规的直接存储器访问(dma)处理。然而,一些装置客户端块要求iommu服务满足最坏情况延时要求,例如,对于视频解码器的代码、显示器帧缓冲器扫描输出等的最坏情况延时要求。单个主iommu 515并不总是能够满足延时要求。
39.至少部分地为了解决装置客户端块的最坏情况延时要求,联网iommu 505包括接近外围装置的对应的装置客户端块部署的一个或多个辅iommu 535、536。在所示的实施方案中,外围装置电路包括支持与显示器(诸如图1所示的显示器120)的通信的显示器电路540,以及支持与相机(诸如图1所示的相机145)的通信的相机电路541。辅iommu 535、536集成在对应的电路540、541中。然而,在一些实施方案中,辅iommu 535、536接近对应的电路540、541部署在基于对应的电路540、541的延时要求而确定的(物理或逻辑)距离处。较低的延时要求意味着辅iommu 535、536被部署为(物理地或逻辑地)更靠近对应的电路540、541。主iommu 515和辅iommu 535、536以主从关系、星形网络或允许主iommu 515充当单个装置以经由统一软件接口510接收存储器访问请求的其他配置来实现。
40.在操作中,主iommu 515对来自第一类型的装置的存储器访问请求(例如,来自gpu的请求)执行地址转换,并且绕过对来自第二类型的装置的存储器访问请求(例如,来自外围装置的请求)执行地址转换。主iommu 515将来自第二类型的装置的存储器访问请求转发到对应的辅iommu 535、536。例如,主iommu 515将与显示器相关联的存储器访问请求转发到辅iommu 535并将与相机相关联的存储器访问请求转发到辅iommu 536。因此,iommu驱动器520经由接口510发出访问系统存储器525的单个命令(例如,单个存储器访问请求)。然
后,由主iommu 515或专用辅iommu 535、536中的一者选择性地处理单个命令。因此,iommu驱动器520实现访问策略,而不需要单独地或独立地对专用iommu 515、535、536寻址。
41.响应于从适当类型的装置接收到存储器访问请求,主iommu 515或辅iommu 535、536访问对应的tlb 545、546、547(在本文中统称为“tlb 545至547”)中的条目,以尝试定位存储器访问请求中包括的地址的转换。tlb 545至547中的条目对指示请求装置是否被准许访问系统存储器525的信息进行编码。如果地址在对应的tlb 545至547中命中并且装置具有适当的权限,则存储器访问请求被转发到系统存储器525。如果地址在对应的tlb 545至547中未命中,则存储器访问请求被转发到对应的页表550、551、552,该对应的页表返回地址的适当转换。tlb 545至547中的条目基于tlb 545至547实现的替换策略进行更新。如果装置没有适当的权限,则拒绝存储器访问请求。
42.联网iommu 505的一些实施方案包括命令队列530,该命令队列从iommu驱动器520接收存储器访问请求并在访问请求被发出到主iommu 515之前存储这些访问请求。命令队列530允许系统软件发起页表和装置重新扫描,该页表和装置重新扫描被转发到主iommu 515或辅iommu 535、536,这因此能够将相关数据缓存在对应的tlb 545至547中。命令队列530的一些实施方案还允许系统软件与硬件单元的重新扫描和同步,以确保软件不会修改正在运行的表数据。
43.图6是根据一些实施方案的实现片上系统(soc)装置转换块605的处理系统的使用模型600的框图。方法600在图1所示的处理系统100、图3所示的处理系统的部分300和图5所示的处理系统的部分500的一些实施方案中实现。
44.soc装置转换块605包括主iommu 610,该主iommu从包括gpu中的图形流水线(gfx)615和诸如显示器620、相机625等外围装置在内的装置接收存储器访问请求。在一些实施方案中,从第一地址转换层(例如,使用gpu vm和tlb实现的地址转换层)接收到存储器访问请求,并且存储器访问请求包括由第一地址转换层生成的域物理地址。存储器访问请求用于访问系统存储器,诸如dram 630。如本文所讨论,主iommu 610基于发出请求的装置的类型来选择性地对包括在存储器访问请求中的地址执行地址转换。来自主iommu 610未转换的装置类型的存储器访问请求被转发到分布式远程iommu网络635,该分布式远程iommu网络包括与显示器620、相机625和其他外围装置相关联的一个或多个iommu。分布式远程iommu网络635的一些实施方案使用图5所示的辅iommu 535、536来实现。soc装置转换块605还包括转换高速缓存640,以用于转换与由gfx 615生成的请求相关联的地址。虚拟到物理管理器645用于支持外围装置,诸如显示器620、相机625和任何其他外围装置。
45.在操作中,内核模式驱动程序或存储器管理器650提供信令655以配置地址转换表,诸如用于例如使用由gpu vm和相关联的tlb执行的第一地址转换层将虚拟地址转换为gpu物理地址(或域物理地址)的页表。存储器管理器650还向虚拟到物理管理器645提供虚拟地址656(诸如gpu虚拟地址)。管理程序或管理程序抽象层(hal)660管理存储在dram 630中的系统物理页表和访问权限。hal 660还配置soc装置转换层605中的主iommu 610。gfx 615尝试使用转换高速缓存640来转换虚拟地址。如果尝试在转换高速缓存640中命中,则将返回的地址转换用于进一步处理。如果尝试在转换高速缓存640中未命中,则将请求转发到主iommu 610,该主iommu处理后续地址转换,如本文所讨论。主iommu 610和分布式远程iommu网络635也能够访问dram 630以执行页表走步,如本文所讨论。
46.图7是根据一些实施方案的选择性地执行地址转换和主iommu或辅iommu的方法700的流程图。方法700在联网iommu(诸如图1所示的联网iommu 135、图3所示的联网iommu 325、图4所示的第二级转换425、图5所示的联网iommu 505和图6所示的soc装置转换块605的一些实施方案)中实现。
47.在框705处,联网iommu从特定类型的装置接收存储器访问请求。装置类型的示例包括图形处理器类型、外围装置类型等。在一些实施方案中,从第一地址转换层(例如,使用gpu vm和tlb实现的地址转换层)接收到存储器访问请求,并且存储器访问请求包括由第一地址转换层生成的域物理地址。
48.在判定框710处,联网iommu例如基于请求中包括的信息来确定发出存储器访问请求的装置的类型。如果发出存储器访问请求的装置的类型是外围装置,则方法700流向框715。如果发出存储器访问请求的装置的类型是gpu装置,则方法700流向框720。
49.在框715处,联网iommu中的主iommu绕过来自外围装置类型的存储器访问请求的地址转换。方法700然后流向框725并且主iommu将存储器访问请求转发到与请求装置相关联的辅iommu。例如,响应于存储器访问请求来自显示器,主iommu将存储器访问请求转发到集成在显示器电路中的辅iommu。在框730处,辅iommu然后执行地址转换。
50.在框720处,联网iommu中的主iommu为来自gpu的存储器访问请求执行所请求的地址转换。
51.计算机可读存储介质包括在使用期间可由计算机系统访问以将指令和/或数据提供到计算机系统的任何非暂时性存储介质或非暂时性存储介质的组合。此类存储介质包括但不限于光学介质(例如,压缩光盘(cd)、数字通用光盘(dvd)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(ram)或高速缓存)、非易失性存储器(例如,只读存储器(rom)或闪存存储器)或基于微机电系统(mems)的存储介质。计算机可读存储介质可嵌入在计算系统中(例如,系统ram或rom)、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(usb)的闪存存储器),或者经由有线或无线网络耦合到计算机系统(例如,网络可存取存储(nas))。
52.在一些实施方案中,上文描述的技术的某些方面由执行软件的处理系统的一个或多个处理器实现。软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。软件包括在由一个或多个处理器执行时操纵一个或多个处理器来执行上文所描述的技术的一个或多个方面的指令和某些数据。非暂时性计算机可读存储介质包括例如磁盘或光盘存储装置、固态存储装置(诸如闪存存储器)、高速缓存、随机存取存储器(ram)或一个或多个其他非易失性存储器装置等。存储在非暂时性计算机可读存储介质上的可执行指令呈源代码、汇编语言代码、对象代码或由一个或多个处理器解译或可以其他方式执行的其他指令格式。
53.应当注意,并不要求上文在一般描述中描述的所有的活动或元件,可能不要求具体的活动或装置的一部分,并且除了所描述的之外,可能执行一个或多个另外的活动,或者可能包括一个或多个另外的元件。另外,列出活动的次序不一定是执行活动的次序。另外,已经参考具体的实施方案描述了概念。然而,本领域普通技术人员应当了解,在不脱离如所附权利要求中所阐述的本公开的范围的情况下,可作出各种修改和改变。因此,本说明书和
附图将被视为说明性而非限制性的,并且所有此类修改都意图被包括在本公开的范围内。
54.上文已经关于具体的实施方案描述了各益处、其他优点以及问题的解决方案。然而,所述益处、优点、问题的解决方案以及可致使任何益处、优点或者问题的解决方案出现或变得更突出的任何特征都不应当被解释为是任何或所有权利要求的关键、必需或必要特征。此外,上文公开的特定的实施方案只是说明性的,因为所公开的主题可按对受益于本文教义的本领域技术人员显而易见的不同但等效的方式来修改和实践。除了如所附权利要求中所描述的之外,并不意在限制本文示出的构造或设计的细节。因此,明显的是,可更改或修改上文公开的特定的实施方案,并且所有此类变化形式都被认为是在所公开的主题的范围内。因此,本文寻求的保护正如在所附权利要求中阐述的那般。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献