基于优先级的上下文抢占的制作方法_2

文档序号:9235336阅读:来源:国知局
并且管线处于可以接受高优先级上下文的状态。所示出的硬件调度器328将暂停的低优先级上下文从有效上下文330状态移至低优先级(LP)暂停的上下文334状态,并且可以开始处理高优先级上下文。硬件还可以记住低优先级上下文已经暂停,并且稍后在随后的高优先级上下文执行完成之后,并且在任何其他低优先级上下文可能被占据之前,可以重新提交以用于执行。
[0029]在不涉及任何高优先级上下文的场合由低优先级上下文抢占的情况下,一旦低优先级上下文由另一低优先级上下文抢占,软件调度器318被更新并且知道所述低优先级上下文已经被抢占并且被驱逐出管线。同样,可以将有关抢占的低优先级上下文状态的一些信息保存至存储器,例如,当抢占的低优先级上下文恢复在管线中的处理时使用的软件指令。存储器可以是主存储器、大容量存储器,或者例如可以被分配用于存储图形上下文的DDR(双数据速率)存储器。软件调度器318可以保留抢占的低优先级上下文的标识,从而低优先级上下文可以在稍后的时间点被重新提交或者被丢弃。
[0030]现转向图4,示出了提供用于低优先级上下文的高优先级上下文抢占的方法400的一个示例的流程图。方法400可以在可执行软件中被实现为:存储在存储器的机器可读存储介质或者计算机可读存储介质中的逻辑指令的集合,所述存储器例如是随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM (PROM)、固件、闪速存储器等;存储在可配置逻辑中的逻辑指令的集合,所述可配置逻辑例如是例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD);存储在使用电路技术的固定功能逻辑硬件中的逻辑指令的集合,所述固定功能逻辑硬件例如是应用专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或者晶体管-晶体管逻辑(TTL)技术、或者其任何组合。
[0031]首先转向流程图的左半边,首先考虑的是不存在要处理的高优先级上下文的情况。在最简单的情况下,计算机可能处于处理3D渲染的工作流之中。这可能意味着,例如,图像是利用成千个三角形元素生成的,所述成千个三角形元素穿过具有图2所示的各种阶段的3D图像管线,使管线充满上下文。该上下文可以是普通的、低优先级上下文工作量。在所示出的框404处开始执行,如在这种简单的情况下,在框403处可能不存在从存储器恢复的低优先级上下文状态,以及当在框406处考虑不存在抢占或者暂停时,则执行可以在框408处完成。作为好的管理和设计,在框410处可以将完成的、现已执行的上下文保存至存储器以便将来在其他地方使用。所述存储器可以是主存储器或者在GPU上的DDR存储器或者便于存储完成的上下文的任何其他存储器。同样,在410处,可以通知软件调度器:上下文已经完成,并且该过程在412处结束。
[0032]可能常见的情况是,在包括一般工作流程的上下文流中存在必须被给出第一优先级测量的一些上下文流。这样的上下文的示例各不相同。例如,在媒体上下文中,实施例可能涉及显示电影或者片段,而通用图形处理单元(GPGPU)工作量则可能正在后台工作,正在执行类似于N-体重力仿真的数学密集型计算。在该示例中,媒体将被给出比GPGPU工作量的优先级更高。在其他实施例中,情况可能相反。
[0033]虽然在本文中可能相对于高优先级上下文将给定的上下文称为“低优先级”,但是所述给定的上下文具有的优先级仍可能比在工作流中的其他上下文更高。这样的相对优先需求并非总是如此,这是因为一个上下文(例如,鼠标移动)使用的自动优先级比另一个上下文(例如,数学计算)更高。例如,在另一实施例中,可能存在在操作系统中实现以及通过软件调度器318 (图3)运行的算法,所述软件调度器318旨在给出对所有上下文的硬件存取的平衡共享,从而导致不一定遵循提供优先级比其他上下文更高的GPU上下文的范例的抢占。
[0034]然后考虑处理具有的优先级比一般工作流高的低优先级上下文的情况。在开始框434处,可以通过框432在低优先级上下文提交端口处提交低优先级上下文。如上所提到的,如此指定的上下文具有的优先级比基线工作流更高,并且它们可以具有的优先级比在过程中其他之前提交的低优先级上下文更高。由此,在框436处,该方法可以指示不是高优先级上下文的管线中的任何上下文将被抢占,所述任何上下文包括之前在过程中提交的低优先级上下文。此处的抢占意味着停止流至3D管线的工作量,并且驱逐出已经在管线中的上下文(即,允许在站处完成执行,例如如图2所示)。所述驱逐出管线的过程可能不是瞬时的一取决于管线的深度以及存储在其站的内部高速缓冲存储器中的工作的量,可以占用成千个时钟周期。例如,在图形处理中,其中,将三角形用作3D对象的渲染的原语,在管线中的每一个站可以具有包含成千个三角形的高速缓存。驱逐出管线的过程可以使工作在管线中的这些三角形上完成,从而在等待管线清除时引发大量的延迟,如框438所示出的。
[0035]一旦管线已经清除,在框440处,软件调度器可以从指示已经接受新的低优先级上下文的硬件调度器接收状态更新。在框442处,低优先级上下文开始在框402处在管线中执行的过程,其在框444处标记提交阶段结束。执行首先开始从在框403处的存储器中提取之前存储在存储器中的任何可用的状态数据,以及,在所示出的框404处,硬件可以开始执行工作量。在执行工作量时,在框406处,管线监测系统由于低优先级上下文或者高优先级上下文提交所引起的任何新的抢占或者暂停。在框406处的执行期间,可能存在另一低优先级上下文经由框451到达以抢占上下文的情况或者高优先级上下文已经触发了上下文中的暂停的情况。如果不存在进一步的抢占或者暂停,则在框412处结束之前,在框408处,上下文完成并且在框410处被保存至存储器如之前以用于任何将来的使用。
[0036]另一方面,可以在框406处检测即将到来的低优先级上下文或者高优先级上下文,在这种情况下,低优先级上下文不在框408处完成,但是也不被暂停或者被抢占。在框414处,如果不存在指示的暂停,则在框415处低优先级上下文被抢占。在框420处进行是否存在暂停的进一步测试,如果不存在,则继续抢占,以及在框422处将低优先级上下文状态保存至存储器,并且硬件调度器可以通知软件调度器:低优先级上下文已经被抢占。
[0037]在框446处针对指定的高优先级上下文的提交来提供高优先级上下文端口。在该示例中,高优先级上下文可以通过鼠标、触控板触摸以及对其而言及时执行十分重要的其他GUI命令来生成。在其他实施例中,其他操作可能会产生可以被指定为具有高优先级的其他上下文。在该实施例中,在框446处的高优先级上下文提交端口是在硬件中实现的,但是在其他实施例中它可以是在软件中实现的。
[0038]通过软件调度器或者操作系统的其他部分来检测高优先级上下文。如果检测到高优先级上下文,则在所示出的框450处,启动在管线中的任何上下文的暂停并且可以经由框451至框406发送该上下文的指示,而不是抢占任何在管线中的低优先级上下文,这会引起对驱逐出管线的较高延迟处罚。与驱逐出管线相反,允许在管线中的任何上下文在可以到达的最近逻辑点处停止,例如在完成飞行中的操作或者进行中的事务之后,停在其可能位于的站处。例如,在上下文由在管线中的每一个站处的成千个三角形的图形处理构成的情况下,可以允许完成对在站处的正在进行的任何独立的三角形的处理,但是然后针对该上下文暂停管线,以及将上下文的状态和在管线中的待办/中间数据复制到存储器/片上存储装置中。根据流程图400,上下文可以被保存至存储器的若干位置处,包括框410、框422、框426、以及框450。由暂停管线所引发的延迟可能基本上小于在驱逐出管线时所引发的延迟。
[0039]一旦在框452处暂停完成或者优先上下文已经结束执行,则在框454处,可以通知软件调度器已经接受高优先级上下文。高优先级上下文执行然后可以开始于框456处。在框460处,可以读取任何之前存储的有关可能可选地已经放置于存储器中的高优先级上下文的状态信息,以恢复该高优先级上下文状态,以及开始执行高优先级上下文。在框462处,完成执行。在框464处,可以将已经完成的高优先级上下文的状态保存至存储器以便将来使用,以及可以通知软件调度器高优先级上下文已经完成。在框466处,可以重新开始任何待办的暂停的低优先级上下文,或者,在468处可以结束整个过程。
[0040]再次转向方法400的左侧,考虑处理高优先级上下文的进一步方面。在框406处,暂停的指示(高优先级上下文的标记)到达,以及在框414处暂停的指示被确认。然后,在框424处,任何有效的低优先级上下文(此处,这可能指不是高优先级的任何上下文)均被暂停。在框426处,将暂停的低优先级上下文的状态及其已经生成的中间数据的任何保存至存储器,例如,片上存储装置。同样,通知软件调度器低优先级上下文已经被暂停。框426可以从框466接收可以重新开始在暂停的低优先级上下文上工作的指示,在这种情况下,在框430处,通知软件调度器可以重新开始在暂停的上下文上工作,这在框402处开始。
[0041]现转向图5,提供对更低优先级上下文的高优先级上下文抢占的方法的另一示例经由流程图500示出。首先考虑的是在框504处将高优先级上下文提交至高优先级端口的情况。如果在框506处考虑不存在正在进行的低优先级上下文,然后在框512处高优先级上下文被发送至管线并且被执行。如果,另一方面,在管线中已经存在低优先级上下文,则在框508处暂停该低优先级上下文,并且在框510处将其状态和未完成的工作保存至存储器(可以是专用管芯上存储装置)。此外,可以将任何完成的上下文处理存储在主图形存储器或者DDR图形存储器中。
[0042]在框512处完成高优先级上下文之后,在514处,系统对任何暂停的低优先级上下文进行轮询。如果不存在任何暂停的低优先级上下文,则在框518处系统进一步被轮询以确定是否存在待处理的任何其他低优先级上下文。如果不存在,则工作流结束。如果存在待处理的其他低优先级上下文,则其在框520处对其处理,并且然后当处理完成时,该工作
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1