处理作业至辅助处理器的直接环3提交的制作方法

文档序号:6485450阅读:150来源:国知局
处理作业至辅助处理器的直接环3提交的制作方法
【专利摘要】避免每当应用想要使用辅助处理器时都转变到环0,从而节省中央处理器操作周期并提高效率。取而代之的是,最初每一应用被注册和设置成在环3中使用辅助处理器资源。
【专利说明】处理作业至辅助处理器的直接环3提交
【背景技术】
[0001]本发明一般涉及计算机,尤其涉及包括辅助处理器的计算机系统。
[0002]如本文所使用的,辅助处理器是除了中央处理单元之外的结合中央处理单元使用但作为外围设备附连到系统的任何东西。辅助处理器的示例包括图形处理器、网络接口卡和适配器以及通用串行总线适配器,此处仅列举几个示例。
[0003]通常,只有环O软件驱动程序才能够通过对设备上的存储器映射寄存器进行编程来将任务提交给辅助处理器。因此,当在系统上运行的应用想要将一任务分配给辅助处理器时,它必须发起从环3到环O的切换并且然后再切换回来。这些环O到环3的转变在处理器周期方面是昂贵的。
[0004]附图简述
[0005]参照以下附图描述一些实施例:
[0006]图1是本发明一个实施例的示意图;
[0007]图2是来自本发明一个实施例的系统流程图;
[0008]图3是根据本发明一个实施例的用于环O驱动程序的流程图;
[0009]图4是根据本发明一个实施例的用于门铃块寄存器的流程图;
[0010]图5是根据本发明一个实施例的用于辅助处理器调度核的流程图;以及
[0011]图6是一个实施例中的用于应用的流程图。
[0012]详细描述
[0013]根据一些实施例,避免每当应用想要使用辅助处理器时都转变到环0,从而节省中央处理器操作周期并提高效率。取而代之的是,最初每一应用被注册和设置成在环3中使用辅助处理器资源。
[0014]图1示出了根据本发明的一个实施例来适配的典型的计算机系统架构。系统10包括中央处理单元(CPU) 12。虽然示出了单个中央处理单元,但也可使用多核处理单元。该中央处理单元耦合到系统代理或芯片组14。环O驱动程序24在中央处理单元12上执行。
[0015]系统代理或芯片组连接到系统存储器20,该系统存储器通常是动态随机存取存储器(DRAM)。可能希望使用辅助处理器资源的应用22可被至少临时地存储在系统存储器20中。系统存储器20可包括可通过不允许访问整个可寻址虚拟空间的孔径30来寻址的虚拟地址空间20。虚拟地址空间20中还可包含命令缓冲区36。
[0016]虚拟空间可包括包含门铃页34的写回空间32。门铃页34可被寻址以指示应用何时想要使用辅助处理器资源。该页可由硬件监视,并且在某样东西由环3应用写入到该页时,辅助处理器资源变得对已经预注册为在不(再次)转变到环O的情况下使用该资源的应用程序可用。环O驱动程序也可使用相同的机制来使用辅助处理器资源。
[0017]也耦合到系统代理或芯片组14的是辅助处理器16。辅助处理器同样是作为外围设备连接到包括中央处理单元的系统的任何其它处理器。例如,常用的辅助处理器的示例包括图形处理单元、网络接口卡和适配器以及通用串行总线卡和适配器,此处仅列举一些示例。辅助处理器可包括可被调用以执行特定任务的多个引擎。辅助处理器引擎的示例包括渲染引擎、视频解码引擎、视频编码引擎、复制引擎等
[0018]辅助处理器16包括门铃块寄存器26。门铃块寄存器监视虚拟存储器20中的门铃页34以确定该页何时已被写入。当该页已被写入时,门铃块寄存器认为该门铃已经“响起”并且这意味着应用程序希望使用辅助处理器资源。在作为图形处理单元的辅助处理器16的情况下,辅助处理器资源的示例是特定图形处理引擎18。
[0019]当检测到门铃页写入时,门铃块寄存器26经由具有门铃向量的中断来发信号通知调度核28。调度核28负责调度辅助处理器16的操作。调度核28然后调度由引擎18中的应用22需要的作业。
[0020]由此,在一些实施例中,涉及两个阶段。在第一阶段,在环O中,应用程序有效地向系统代理或芯片组14注册以设置之后可以在环3中访问的机制。之后,该应用可以在不需要从环3转变到环O并再次转变回来的情况下使用辅助处理器的资源。在一些实施例中,这可节省处理周期并提高效率。辅助处理器可提供这样的门铃寄存器的多个实例以允许多个应用向其提交任务。
[0021]最初,应用通过执行开放式辅助处理器调用来表达其使用辅助处理器资源的意图。在一些实施例中,该开放式处理器调用可由环3中的应用发出并且经由用户模式驱动程序传送到环3驱动程序24以及运行时驱动程序。
[0022]环O驱动程序24在进程地址空间中创建上下文标识符。该标识符然后被提供回到应用22。在一些实施例中,进程地址空间是标识什么进程当前正被操作的现有空间。
[0023]然后,环O驱动程序从预先分配的页的集合中挑出一页以供分配给应用。在一个实施例中,256个页是可用的。在某些情况下,这些页可以在虚拟地址空间20中通过孔径30来访问。
[0024]辅助处理器页然后被映射到进程地址空间。这意味着页34被映射到进程地址空间。被称为门铃页的该页的地址由环O驱动程序24提供给辅助处理器16中的门铃块寄存器26。这将门铃块寄存器26设置成监视页34。然后当应用向该页的门铃行写入时,门铃块寄存器26监视被触发。当由于对页34的写入而导致第一次门铃响起时,寄存器26向调度核28发送门铃响起消息。门铃块寄存器存储已响起的门铃的向量。
[0025]在一个实施例中,每一个门铃块都具有对应于虚拟存储器空间20中的256个预先分配的页的256个向量。如果任何门铃已响起(因为任何页被写入),则门铃块寄存器将指示已经发生某件事且调度核需要查明发生了什么的中断生成到调度核28中。
[0026]调度核然后读取256个门铃向量以查看哪一个门铃已经响起。在一些实施例中,门铃块寄存器26获取在上一个消息和当前门铃状态检查之间响起的所有门铃的快照。一旦读取完成,门铃块寄存器就能够清除任何门铃向量并等待下一次响起。
[0027]调度核然后检查所有门铃标识符。接着,调度核使用如上所述地获取的页地址来获取队列内容。调度核用应用已经请求的新作业来更新引擎运行列表。
[0028]结果,在初始设置阶段后,应用能够使得在无需再次切换到环O的情况下处置引擎18中的工作负载。可处置关于应用的任何数量的后续作业,但应用仅仅必须访问环O —次。
[0029]一般而言,应用通过将其自身注册为可能需要使用辅助处理器的应用来发起本文描述的操作。实际上,应用指示它将在未来提交工作并且它需要标识符和门铃页来指示可能在未来使用的任何引擎。应用设置所有必需的结构以由其自己使用引擎。在一些实施例中,环O驱动程序24只需应用的地址空间和命令缓冲区36。
[0030]所有必需的信息然后由环O驱动程序转移到系统代理或芯片组14中。环O驱动程序注册并且然后让调度核知道存在已经通过向其分配标识符来注册的应用。环O驱动程序还能够通过向调度核提供这种表来提供门铃到命令队列映射。驱动程序24然后让开,并且之后只要应用向中央处理单元提交工作,中央处理单元就向(命令缓冲区所处的)预先分配的位置写入并且向门铃写入。然后,中央处理单元工作完成并且辅助处理器可着手执行该作业。
[0031]参考图2,总序列被分成在左侧的由中央处理单元和/或芯片组完成的部分以及在右侧的由辅助处理器资源完成的部分。流程开始于应用22对环O驱动程序做出调用以指示它具有需要在辅助处理器中完成的作业,如框40所示。具体而言,该应用请求工作,如框44所示。然后,流程去往辅助处理器门铃块寄存器26,该门铃块寄存器在预先分配的页中检测针对该应用的任何响起的门铃,如框46所示。
[0032]块寄存器26告知调度核工作已经到达,如框48所示。调度核28然后检查页并标识需要做该工作的引擎,如框50所示。接着,调度核28将该作业传递给引擎18以执行该工作,如框52所示。当然,这假定该应用已经注册。
[0033]图3示出了用于环O驱动程序24的序列。一般而言,该序列是由软件或固件实现的,但该序列也可由硬件实现。在软件和固件实施例中,它可通过计算机执行的指令来实现,该计算机执行的指令被存储在诸如磁存储、半导体存储或光存储之类的非瞬态计算机可读介质上。
[0034]环O驱动程序24序列开始于从应用接收调用,如框54所示。在框56中,创建上下文标识符(或进程标识符)。然后选择门铃页,如框58所示。在框60中,将该页映射到进程地址空间。
[0035]之后,将页地址写入到门铃块寄存器,如框62所示。向应用通知门铃页地址,如框64所示。
[0036]门铃块寄存器26的操作序列在图4中指示。该序列可用软件、固件和/或硬件来实现。在软件和固件实施例中,它可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学存储、磁存储或半导体存储之类的非瞬态计算机可读介质上。
[0037]在一些实施例中,该序列开始于检测门铃响起,如菱形框66所示。然后将门铃响起消息发送到调度核,如框68所示。寄存器存储响起门铃的向量,如框70所示,以使得该信息对调度核可用。
[0038]移至图5所示的根据一个实施例的调度核28的操作,该序列可以用软件、固件和/或硬件来实现。在软件和固件实施例中,它可通过计算机执行的指令来实现,该计算机执行的指令被存储在诸如磁存储、半导体存储或光存储之类的非瞬态计算机可读介质上。
[0039]在一个实施例中,该序列开始于读取门铃状态向量以确定哪些门铃已经响起,如框72所示。然后使用页地址来获取排队的内容,如框74所示。最后,作为应用请求的对象的引擎更新其响起列表以调度作业。
[0040]最后,转向图6,例如由中央处理单元12实现的序列可以用硬件、软件和/或固件来实现。在软件和固件实施例中,它可通过计算机执行的指令来实现,该计算机执行的指令被存储在诸如磁存储、半导体存储或光存储之类的非瞬态计算机可读介质上。
[0041]在一个实施例中,该序列开始于初始化,如框78所示。然后请求门铃分配,如框80所示。获取门铃的页地址,如框82所示。接着创建工作负载,如框84所示。最后,门铃响起,如在图1中被标记为门铃写入的箭头所示。
[0042]门铃可按不同方式实现。在一个实施例中,门铃可以在写回空间中实现。环O驱动程序和应用针对将在写回空间中使用的存储器页达成一致。对写回空间的使用可以是有利的,因为相比于包括不可高速缓存的空间或写入组合空间的其它可高速缓存的存储器位置,一些操作系统优选使用写回空间。
[0043]应用然后通过用户模式驱动程序来操作,该用户模式驱动程序附连到应用,经过一链向下最终到达环O驱动程序。写回空间是系统存储器位置。当应用要求一页时,该应用实际上要求写回页并且操作系统授予该页。然后,环O驱动程序挑选要监视的高速缓存行口令以确定铃铛何时响起。环O驱动程序还将正被监视的特定高速缓存行告知寄存器26以及应用。
[0044]寄存器块26监视所选高速缓存行以确定是否存在对该高速缓存行的写入。对于每一门铃页,环O驱动程序分配具有写回属性的后备页。当写回页被用作门铃页时,硬件只监视门铃页的片段,并且在一些实施例中,相比于整页,该片段是四千字节片段。
[0045]在一个实施例中,对要监视的高速缓存行(64字节)的选择是由环O驱动程序来完成的。环O驱动程序可使用一算法来选择不同页中的不同位置,以使得高速缓存中的道不变成被过度订阅。六十四个字节是一高速缓存行且其告知应用那一行将被监视。在一些实施例中,所选页必须是固定页且高速缓存行基于用于防止过度订阅的算法来选择。
[0046]在其它实施例中,门铃可以在辅助处理器的虚拟地址空间孔径窗口中选择。此处,环O驱动程序能够将给定范围(或4个子范围)指定为门铃范围。门铃范围一般落在辅助处理器的孔径内。然后,系统代理或芯片组监视对构成门铃范围的每一页的第一高速缓存行的写入。在一些实施例中,环O驱动程序能够选择性地允许使用存储器映射输入/输出(MMIO)寄存器来监视256个可用门铃中的每一个。
[0047]对于每一门铃页,环O驱动程序分配具有不可高速缓存属性的后备页。在一些实施例中,每一门铃页都可以是固定的。第一高速缓存行是系统代理监视的门铃地址。它包含工作队列尾指针。页无法进行写入组合,因为这可导致第一高速缓存行写入由于重新排序而在队列内容更新之前发生。第二高速缓存行包含该队列的头指针。其余高速缓存行可包含指向批量缓冲区的指针形式的工作负载。
[0048]本文中所描述的各种技术可在各种硬件架构中实现。例如,图形功能可被集成在芯片组中。替代地,可使用分立的图形处理器。作为又一实施例,图形功能可由包括多核处理器的通用处理器实现。
[0049]在本说明书通篇中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明包含的至少一个实现中。因此,短语“一个实施例”或“在一实施例中”的出现不一定指代同一实施例。此外,特定特征、结构或特性可按照与所说明的特定实施例不同的其他适当形式来创立,而且所有此类形式可涵盖在本申请的权利要求中。
[0050]虽然已经针对有限个实施例描述了本发明,但本领域技术人员将会理解从中得出的多种修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修改和变化。
【权利要求】
1.一种方法,包括: 使得应用能够只使用从环3到环O的一次转变来重复使用辅助处理器资源。
2.如权利要求1所述的方法,其特征在于,包括使得所述应用能够注册成使用辅助处理器资源。
3.如权利要求2所述的方法,其特征在于,包括使用环3到环O转变来注册所述应用并且然后使得所述应用能够之后在没有另一次环3到环O转变的情况下使用所述资源。
4.如权利要求2所述的方法,其特征在于,包括在虚拟存储器中建立区域以指示应用何时想要使用所述资源。
5.如权利要求4所述的方法,其特征在于,包括使得所述辅助处理器能够检测对所述区域的写入。
6.如权利要求5所述的方法,其特征在于,包括使得所述辅助处理器能够响应于检测到所述写入而调度作业。
7.如权利要求2所述的方法,其特征在于,包括提供环O驱动程序以设置标识所述应用的标识符。
8.如权利要求4所述的方法,其特征在于,包括使用进程地址空间来将所述辅助处理器映射到所述区域。
9.如权利要求4所述 的方法,其特征在于,包括将所述区域建立为写回页。
10.如权利要求9所述的方法,其特征在于,包括分配所述页的行并且在所述行中监视写入,所述写入包括对辅助处理器资源的请求。
11.一种存储指令的非瞬态计算机可读介质,所述指令使处理器能: 使得应用能够只使用从环3到环O的一次转变来重复使用辅助处理器资源。
12.如权利要求11所述的介质,其特征在于,还存储指令,用于使得所述应用能够注册成使用辅助处理器资源。
13.如权利要求11所述的介质,其特征在于,还存储用于以下操作的指令:使用环3到环O转变来注册所述应用并且然后使得所述应用能够之后在没有另一次环3到环O转变的情况下使用所述资源。
14.如权利要求12所述的介质,其特征在于,还存储指令,用于在虚拟存储器中建立区域以指示应用何时想要使用所述资源。
15.如权利要求14所述的介质,其特征在于,还存储指令,用于使得所述辅助处理器能够检测对所述区域的写入。
16.如权利要求15所述的介质,其特征在于,还存储指令,用于使得所述辅助处理器能够响应于检测到所述写入而调度作业。
17.如权利要求12所述的介质,其特征在于,还存储指令,用于提供环O驱动程序以设置标识所述应用的标识符。
18.如权利要求14所述的介质,其特征在于,还存储指令,用于使用进程地址空间来将所述辅助处理器映射到所述区域。
19.如权利要求14所述的介质,其特征在于,还存储指令,用于将所述区域建立为写回页。
20.如权利要求19所述的介质,其特征在于,还存储指令,用于分配所述页的行并且在所述行中监视写入,所述写入包括对辅助处理器资源的请求。
21.一种装置,包括: 具有资源的辅助处理器,以及 耦合到所述处理器的中央处理单元,所述单元使得应用能够只使用从环3到环O的一次转变来重复使用辅助处理器资源。
22.如权利要求21所述的装置,其特征在于,所述单元使得所述应用能够注册成使用所述辅助处理器资源。
23.如权利要求21所述的装置,其特征在于,所述单元使用环3到环O转变来注册所述应用并且然后使得所述应用能够之后在没有另一次环3到环O转变的情况下使用所述资源。
24.如权利要求22所述的装置,其特征在于,所述单元在虚拟存储器中建立区域以指示应用何时想要使用所述资源。
25.如权利要求24所述的装置,其特征在于,所述辅助处理器检测对所述区域的写入。
26.如权利要求25所述的装置,其特征在于,所述辅助处理器响应于检测到所述写入而调度作业。
27.如权利要求22所述的装置,其特征在于,包括由所述单元执行的环O驱动程序以设置标识所述应用的标识符。
28.如权利要求24所述的装置,其特征在于,所述辅助处理器使用进程地址空间来映射到所述区域。
29.如权利要求24所述的装置,其特征在于,所述单元将所述区域建立为写回页。
30.如权利要求29所述的装置,其特征在于,所述单元分配所述页的行并且在所述行中监视写入,所述写入包括对辅助处理器资源的请求。
【文档编号】G06F15/76GK104025032SQ201180076161
【公开日】2014年9月3日 申请日期:2011年12月30日 优先权日:2011年12月30日
【发明者】A·考克, A·纳瓦勒, B·韦布, M·拉马多斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1