在计算机系统中延迟命令发出的方法和系统技术方案

技术编号:2919047 阅读:311 留言:0更新日期:2012-04-11 18:40
公开一种在具有多个外围处理器的计算机系统中延迟命令发出的方法,所述多个外围处理器用嵌入多线程中央处理器中的外围设备驱动程序进行操作。在外围设备驱动程序发出第一命令与第一事件标记之后,外围设备驱动程序在发出第一命令之后,生成用于第一外围处理器的第二命令。如果第一和第二命令需要被同步,则存储第二命令,等待返回第一事件标记,并且当返回第一事件标记时,发出第二命令。

【技术实现步骤摘要】

本专利技术总的涉及计算机的中央处理单元(CPU)与外围处理单元之间的同步,具体涉及命令发出的定时。
技术介绍
在现代计算机系统中,每个外围功能模块(如音频或视频)具有它自己的专用处理子系统,并且这些子系统的操作典型地要求计算机的中央处理单元(CPU)的直接控制。此外,子系统的部件之间的通信与同步典型地是通过硬件连接实现的。例如,在具有两个或更多图形处理单元(GPU)的高级图形处理子系统中,CPU不得不频繁地评估GPU的状态,并且只有当前一或当前命令结束时,才能发出下一提供的(rendering)命令。在其他情况下,当CPU在使用多线程技术为GPU进行某些计算时,GPU在执行需要来自CPU的结果的命令之前,可能不得不等待CPU完成计算。当一个GPU向另一GPU请求数据时,必须在CPU的控制下通过直接硬件连接或总线进行传输,于是CPU在执行后继命令之前,不得不等待数据传输完成。不管是CPU等待GPU还是反过来,等待时间都是一种浪费,并且降低了计算机的整体性能。因此,期望计算机系统能够尽可能地将硬等待与CPU的操作分开。
技术实现思路
考虑到上述情况,本专利技术提供一种方法和系统来移除CPU的一些等待时间、以及外围处理单元的一些空闲时间。换句话说,它增加处理器之间的并行度。公开一种在具有多个外围处理器的计算机系统中使用延迟命令发出的方法和系统,所述多个外围处理器与嵌入一个或多个中央处理器中的外围设备驱动程序进行操作。在外围设备驱动程序发出具有第一事件标记的第一命令之后,外围设备驱动程序在发出第一命令之后,生成用于第一外围处理器的第二命令。如果第一和第二命令需要被同步,则存储第二命令,等待返回第一事件标记,并且当返回第一事件标记时,发出第二命令。然而,当下面结合附图阅读特定实施例的描述时,本专利技术操作的结构和方法、以及其额外目的和优点将会得到最好地理解。附图说明图1是传统计算机系统的部分的框图。图2是根据本专利技术一个实施例的计算机系统的部分的框图。图3示出根据本专利技术一个实施例的命令和事件标记流。图4A是示出根据本专利技术一个实施例的命令块生成和同步机制的流程图。图4B、4C是示出根据本专利技术一个实施例的每个命令块执行中的三个不同的驱动子程序的流程图。图5A和5B是示出根据本专利技术一个实施例的延时命令发出的省时效果的命令时序图。具体实施例方式图1示出传统计算机系统100的部分。在该系统中,外围设备驱动程序110仅仅是程序,功能在本质上类似使用说明,其为操作系统提供关于如何控制和与外围子系统140的专用处理器120和130通信的信息的指令。驱动程序110没有任何由一个或多个中央处理器(CPU)150替代执行的控制功能。通过硬件连接160或者通过总线170,进行专用处理器120与130之间的通信。作为本专利技术的实施例,图2示出多处理器计算机系统200的部分,它具有嵌入一个或多个中央处理器220中的驱动程序210。这里,“嵌入”的意思是驱动程序实际上运行在CPU中,并且使用了一些CPU处理能力,从而驱动程序可以产生存储在缓存中的命令,当需要与其他命令同步时分配事件标记,发出命令并且监视事件标记的返回,而完全没有CPU硬等待。这样的驱动程序实现不需要大规模的硬件支持,因此它也是节省成本的。计算机系统200还采用命令缓存器230,后者存储驱动程序210发送的即时命令。命令缓存器230可以仅仅是主存储器290中的存储空间,或者是位于任何地方的另一存储器,并且可以由驱动程序210动态地分配。利用中央处理器220的处理能力,驱动程序210指挥将命令缓存到命令缓存器230中和以后从命令缓存器230中发出命令,以及指挥专用处理器240和250与中央处理器220之间的同步。专用处理器可以是专用于图形操作的处理器,称为图形处理单元(CPU)。图3是示出根据本专利技术一个实施例的CPU、缓存器与专用处理器之间的命令流的图。为了说明的目的,提供了更多关于命令缓存的细节。嵌入的驱动程序320连同事件标记一起生成命令,然后将其有选择地发送到命令缓存器330和340。专用处理器1350的命令和事件标记被送到命令缓存器1330,而专用处理器2360的命令和事件标记被送到命令缓存2340,从而可以独立和同时发出不同专用处理器的命令。当当前命令需要与另一命令执行同步时,驱动程序320伴随着当前命令生成事件标记。处理器,不管是外围专用处理器350和360、还是中央处理器300,都执行它们相应的命令,并且在执行完成后返回事件标记(如果有的话)。它们之间存在通过通信建立的多种控制机制。例如,中央处理器300可以在其操作中控制这两个缓存器。图4A展示了图形驱动程序320如何与GPU和CPU同步命令发出的详细流程图。这里,驱动程序320在步骤410A到470A中连续生成命令块而没有在CPU侧的任何延迟。这些命令中的一些在被送到GPU执行之前,要被存储在命令缓存器中。例如,命令块410A具有到第一GPU的、请求返回事件标记的命令。第一GPU将在命令块410A完成后返回事件标记。在检测到事件标记后,驱动程序320于是可以从命令缓存器中发出需要与命令块410A同步的另一命令。这样,消除了CPU对同步事件的硬等待。术语“延迟命令发出”泛指该命令缓存过程。图4A还示出需要与另一CPU线程同步的命令块440A以及需要与第二GPU同步的命令块470A。在这两种情况中,驱动程序320的存储命令、检查事件标记和发出命令的操作与上面第一GPU情况中的相同。在每个命令块中,驱动程序320执行特定子程序,如生成新命令和相关事件标记(如果需要的话),检查返回的事件标记,缓存新命令,以及发出缓存的命令,或者如果没有待决的事件标记的话直接发出新命令。这些子程序可以以各种顺序执行。图4B、4C和4D是执行这些子程序的三个例子。参照图3和图4B,驱动程序320首先在步骤410B中生成当前命令,然后在步骤420B中检查任何返回的事件标记。如果存在返回的事件标记,并且如果相关的命令在缓存器中,则驱动程序320将缓存的命令与其自己的事件标记(如果有的话)一同发出,如步骤430B和440B中所示。这里,“相关”的意思是指在缓存的命令与向缓存器返回事件标记的前一命令之间存在同步需要。如果相关命令不在缓存器中,则驱动程序320在步骤450B中检查当前命令是否与返回的事件标记相关。如果是的话,则它发出当前命令(步骤470B),否则,它缓存当前命令(步骤480B)。另一方面,如果缓存器中不存在返回的事件标记,则驱动程序320在步骤460B中检查任何待决事件标记。在存在当前命令发出将依赖或相关的待决事件标记的情况下,则驱动程序320缓存当前命令(步骤480B)。在不存在待决相关事件标记的情况下,驱动程序320直接发出当前命令。要注意,在所有命令缓存或发出的情况中,相关的事件标记(如果存在的话)也连同命令一起被缓存或发出。图4C示出根据本专利技术另一实施例的另一子程序,其中驱动程序320首先在步骤410C中检查任何返回的事件标记。如果存在返回的事件标记,并且如果相关的命令在缓存器中,则驱动程序320发出缓存的命令(步骤430C)。如果不存在返回的事件标记(步骤410C),或者缓存器中不存在相关命令(步骤420C),则驱动程序32本文档来自技高网...

【技术保护点】
一种在具有一个或多个专用处理器的计算机系统中延迟命令发出的方法,所述一个或多个专用处理器用运行在一个或多个中央处理器上的设备驱动程序进行操作,该方法包括:外围设备驱动程序发出第一命令与第一事件标记;外围设备驱动程序在发出第一 命令之后,生成用于第一外围处理器的第二命令;存储第二命令,等待返回第一事件标记;以及当返回第一事件标记时,发出第二命令。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:张国峰
申请(专利权)人:威盛电子股份有限公司
类型:发明
国别省市:71[中国|台湾]

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

1