买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明公布】基于存储器的旗语_英特尔公司_201380058342.2 

申请/专利权人:英特尔公司

申请日:2013-10-28

公开(公告)日:2015-08-05

公开(公告)号:CN104823155A

主分类号:G06F9/38(2006.01)I

分类号:G06F9/38(2006.01)I

优先权:["2012.12.07 US 13/707,930"]

专利状态码:有效-授权

法律状态:2018.08.07#授权;2015.09.02#实质审查的生效;2015.08.05#公开

摘要:描述可用于在不同的处理引擎之间同步操作的基于存储器的旗语。在一个示例中,各操作包括在生产者引擎处执行上下文该执行包括更新存储器寄存器,以及把已经更新了存储器寄存器的信号从生产者引擎发送给消费者引擎,该信号包括标识要由消费者引擎执行以便更新寄存器的上下文的上下文ID。

主权项:一种用于在生产者引擎和消费者引擎之间同步上下文的方法,所述方法包括:在生产者引擎处执行上下文,所述执行包括更新存储器寄存器;以及把已更新所述存储器寄存器的信号从所述生产者引擎发送给消费者引擎,所述信号包括用于标识要由所述消费者引擎执行以便更新所述寄存器的上下文的上下文ID。

全文数据:基于存储器的旗语[0001]领域[0002]本公开内容涉及在不同的处理引擎之间同步操作的领域,且尤其涉及使用旗语semaphore和存储器寄存器的信令。[0003]背景[0004]开发了允许在GPU图形处理单元)中执行通用操作的计算技术。GPU具有为图形处理优化的大量简单并行处理管线。通过把要求许多相似的或相同的并行计算的通用操作移植到GPU,可以比在CPU中央处理单元上更快地执行这些操作,同时减少了对CPU的处理需求。这可以在提尚性能的同时减少功耗。[0005]GPU具有为执行不同的功能而优化的若干不同处理引擎。这些引擎可以包括:blitter位图映射)引擎、渲染引擎、视频解码引擎、视频编码引擎和视频增强引擎,以及其他。每一引擎处理在由分离的调度处理器调度的上下文内的命令。调度处理器把各上下文指派给每一引擎,并且管理与每一上下文相关联的命令流的执行。[0006]然而,GPU的处理引擎、命令缓冲器和命令流化器必须协调中间值和命令在不同的引擎之间的传输。当一个引擎正在产生将在由另一引擎执行的命令中使用的值时,必须使用某种机制来确保该值已经准备好可供消费者使用。在各引擎之间的协调可以消耗显著资源,那么这些资源就不能用来执行命令。[0007]附图简述[0008]作为示例而非限制在附图的各图中阐释本发明的各实施例,附图中,相同标号表示相似的元素。[0009]图1是根据本发明的一种实施例带有命令流化器和信号的图形处理单元的一部分的框图。[0010]图2A是根据本发明的一种实施例使用断言允许位执行批缓冲器的处理流程图。[0011]图2B是根据本发明的一种实施例刷新断言寄存器中的值的处理流程图。[0012]图3是根据本发明的一种实施例带有断言允许位寄存器的运算逻辑单元的硬件逻辑图。[0013]图4是适于与本发明的一种实施例一起使用的图形处理单元的一部分的框图。[00M]图5是适于与本发明的一种实施例一起使用的计算机系统的框图。[0015]详细描述[0016]本发明涉及例如在图形渲染电路中使用基于存储器的信令来在存储器访问的生产者消费者模型的引擎之间同步。可以在软件调度模式中使用基于存储器的旗语,代替基于寄存器的旗语,用于在多个引擎和宿主CPU中央处理单元上运行的多个上下文之间通信。多个引擎可以包括:blitter引擎、植染引擎、视频解码引擎、视频编码引擎和视频增强引擎,以及其他。[0017]旗语可以用来在数据消费者和数据生产者之间传输不同类型的信息。旗语可以包含地址、参数和值。旗语命令可以被用来使用旗语。在生产者消费者模型中,旗语数据可以被存储在存储器中。为了减少存储器访问延迟时间,可以使用智能方式来确定何时及如何从存储器采样旗语数据。[0018]通过包括旗语故障时的上下文切换策略,可以增强旗语的使用。也可以向软件提供可编程性接口。除了软件辅助之外,可以向调度器软件提供硬件辅助,以便做出对由于旗语故障而被切换掉的上下文的有效重新调度的判决。[0019]当在旗语等待不成功之际切换掉上下文时,可以在PPHWSPperprocesshardwarestatuspage,每进程硬件状态页面或类似的存储器空间中更新旗语等待命令。PPHWSP是图形存储器中被指派给具体上下文的暂存空间。每一上下文可以具有其自己的PPHWSP,或者,暂存空间可以由多于一个的上下文共享。这种暂存空间可以用作在硬件和软件之间的通信装置,且可以被硬件和软件用作临时存储。在重新调度由于旗语等待而被切换掉的上下文之前,调度器可以读取PPHWSP,以便在把等待条件提交给硬件之前重新评估等待条件。这允许调度器改善硬件利用率且在重新提交期间避免不必要的上下文切换。[0020]如下面更详细地描述的,存储器位置中的数据可以被用作用于在上下文之间通信以便同步的邮箱。在此提及的同步可以涉及第二上下文等待第一上下文以便在第二上下文开始执行之前清除第一上下文的依赖性。例如在典型的生产者消费者模型中,在消费者开始进行之前,消费者等待生产者发送完成信号。使用例如下面所描述的MI_SEMAPH0RE_SIGNALMI_旗语_信号)命令和MI_SEMAPHORE_WAITMI_旗语_等待命令,可以实现这种同步。[0021]下面的示例使用上下文来管理对硬件资源的操作。可以给每一上下文指派唯一ID标识),贯穿上下文的寿命,通过该唯一ID标识上下文。也把上下文指派给该上下文将在其上运行的引擎,该引擎是上下文将使用的硬件资源。指派可以基于上下文开始时的工作量类型或基于上下文的任何唯一要求。可以固定上下文ID和指派,以使得在首次指派它之后两者都不改变。[0022]图1是图形处理单元GPU10的通用框图。在这一示例中,GPU包括五个引擎,即渲染引擎16、blitter引擎18、视频编码引擎20、视频解码引擎22和视频增强引擎24。每一引擎被连接到其自己的命令流化器commandstreamer:CS13、17、19、21、23。各引擎也可以拥有到存储器和其他资源未示出)的其他连接。每一命令流化器20包括等待模块14、信号接口15和存储器接口。存储器接口连接到内部或外部共享存储器,例如图5的存储器525。在这些命令流化器之间进行用于旗语信令的通信。命令流化器都耦合到消息信道12,且消息信道耦合到调度器控制器SHM11。调度器控制器在此备选地称为调度器、控制器、微处理器和SMM。取决于特定实现,调度器控制器可以采用这些形式或其他形式中的任何一种。[0023]正如所示出的,从生产者在所阐释的示例中是blitter引擎通过其blitterCS17把旗语信号32发送给消费者引擎在所阐释的示例中是渲染引擎)。这样的信号可以是从任何引擎到任何引擎,但在这一示例中被示出为来自blitter引擎。由消息信道12在各命令流之间运载信号。消费者引擎16通过其命令流化器用信号确认30来应答。[0024]然后,渲染引擎把旗语信号中的上下文ID与其当前上下文中的上下文ID进行比较。如果匹配,那么调用等待引擎14,且如果等待引擎正在等待旗语等待,那么在等待之后,等待引擎将重新采样由生产者提供的数据并且重新评估条件。[0025]在SigMatchFwd信号匹配转发框15和等待反馈单元文件WAITfub14之间提供被称为“上下文匹配”的通信信道34。当从生产者CS在这里是blitter引擎接收到信号时,消费者CS在这里是渲染引擎把所接收的上下文ID与当前上下文id进行匹配,并把该信号转发15给等待反馈单元文件14。如果等待反馈单元文件是保持在等待命令状态时,则它在该等待周期之后通过存储器接口再次获取存储器值以便进行另一次评估。[0026]等待反馈单元文件14、17、19、21、23是下面更详细地描述的执行MI_SEAMPH0RE_WAIT命令的逻辑。它读取存储器内容且评估条件。然后,基于轮询模式或信号模式,等待反馈单元文件重新采样命令中的存储器位置,直到满足该条件。图5示出存储器位置可存取的存储器接口515。[0027]在上下文ID不匹配时,把旗语转发信号28发送给SHIM,SHM用旗语转发确认来应答。这允许把各资源分配给渲染引擎。这允许调度器注意从命令调度器接收的上下文ID是否匹配由于旗语等待已经退役的现有上下文。然后,命令调度器将把退役上下文移动到准备好以供在下次机会时重新提交。[0028]在上下文ID不匹配时,然后,把旗语转发信号发送给SHIMAHM用旗语转发确认应答。这允许把各资源分配给渲染引擎。在本描述中,可互换地使用生产者和源,且可互换地使用消费者和目标。在两个术语之间存在任何差异的范围内,本文的描述同等地适用于两者。[0029]图2A是示出在源引擎102、目标引擎104和微控制器106处执行的操作的处理流程图。在作为生产者的示例的源引擎中,该处理在112处以使用旗语信令的信号处理开始。在114,源引擎等待信用量可供其上下文使用。在信用量变得可用时,源引擎将接收上下文ID和引擎分配。然后,在116处把这些发送给目标引擎104。然后,在11,源引擎使得其信用量计数递减,已经在116处把信用量用于上下文,且在120处源引擎旗语信号处理结束。[0030]如上所述,通过声明已经更新了存储器中其旗语中的一个,旗语信令允许生产者上下文告知消费者上下文。这可以通过在更新存储器中的旗语的指令后的生产者的上下文命令序列当中编程MI_SEMAPHORE_SIGNAL命令来完成,下面更详细地描述MI_SEMAPH0RE_SIGNAL命令。MI_SEMAPHORE_SIGNAL命令携带消费者上下文ID和将在其上执行该上下文的引擎的指派的细节。[0031]作为生产者,一旦执行MI_SEMAPHORE_SIGNAL命令,在上下文内操作的任何引擎就将向消费者产生信号消息。生产者向该命令中提到的引擎产生信号消息。该信号将包含消费者的上下文ID。这对应于在116处的处理流,其中把旗语目标上下文ID发送给目标引擎。[0032]作为消费者,在接收信号消息时,任何引擎处理各消息并确认信令引擎。把在旗语信号消息中接收到的消费者上下文ID与引擎当前执行的进程的上下文ID进行比较。基于这一比较,进行匹配和失配判决。如果不存在在引擎上运行的活动上下文,那么,这可以被看作是失配。[0033]在图2A中,目标旗语信号处理的进程在目标引擎104处开始122。在124,目标引擎做出比较以便判断运行的上下文ID是否匹配在来自源引擎的旗语信号中所接收到的上下文ID。如果存在匹配,那么在136,把信号发送给在158处的旗语等待逻辑。取决于实现,这种信号可以包括或者不包括目标旗语地址。例如,该地址可以被用来优化冗余存储器读取。在等待逻辑指示等待已经完成之后,然后,目标引擎执行上下文中的下一指令。备选地,如果上下文不是正在等待旗语等待,旗语等待反馈单元文件可以丢弃该旗语信号。在旗语等待反馈单元文件正在等待旗语等待的情况中,然后,传入信号将触发旗语等待反馈单元文件,以便重新采样存储器位置并评估等待条件。[0034]如果上下文ID不匹配,那么,将转发该信号。在旗语信号中所接收的消费者上下文ID不匹配正在运行的上下文的ID时,然后,把所接收的上下文ID传递给调度器106。调度器处理该数据并据此重新调度所报告的上下文。在126处指出这一点,其中目标引擎30等待信用量可用。信用量被用来确保各资源可用于处理旗语信令后面的操作。在信用量可用时,然后,在128处把带有不匹配的上下文ID的消息发送给调度器106。[0035]然后,在130处递减该信用量以便支持该操作,且在132处把确认发送回给源引擎。一旦发送确认,在134处,在目标引擎处的旗语信号处理结束。然后,在目标引擎处执行上下文,并且把任何结果放置在存储器中。系统中可以存在多个多引擎。结果,可以存在使用旗语信令相互收发消息的多个生产者和消费者。在图2A的处理流程中,借助于用于在各引擎之间的消息收发的基于信用量的流机制来管理这一点。[0036]微控制器106使用信用量系统来管理资源分配。在一个示例中,微处理器是在微控制器和其他引擎之间的接口。这种硬件组件允许在其他引擎和微控制器之间通信,且反之亦然。在一些实现中,它是指SMM106。它处理各上下文ID且应答各请求。如图2B中所示出,在128处,它接收带有上下文ID的对信用量的请求。它管理寄存器138中的信用量,寄存器138可以是微处理器的一部分或者独立于微处理器,以便提供信用量126或接收信用量130。尽管在使用信用量管理进程的上下文示出了所阐释的实施例,但可以把其他形式的资源分配用作备选。[0037]图2B的处理流程图中所示出的旗语等待允许任何所已指派的引擎执行在命令流执行期间的精确时刻暂停的上下文。防止该引擎从命令流中的精确位置向前发展,直到在预先指派的存储器位置中更新了期望的值。在所描述的示例中,通过把MI_SEMAPHORE_WAIT放置在所执行的命令流中来实现这一点。MI_SEMAPHORE_WAIT携带旗语存储器地址、内联旗语数据和比较操作符。一旦执行命令流中的MI_SEMAPHORE_WAIT,该引擎就从由该命令指示的旗语存储器地址提取数据,并且然后把该数据与内联旗语数据进行比较。[0038]参见图2B,在142处,等待处理开始,并且在144处,该引擎从旗语地址提取数据以供与内联数据比较。在146处比较该数据,并且,如果该数据匹配,那么,在148,等待进程结束。[0039]如果在146通过了比较,那么,引擎移动到等待命令后面的下一指令。另一方面,如果比较失败,那么目标引擎30判断如何进一步进行。在图2B的示例中,它首先在150判断等待进程是否处于execlist执行列表模式。如果是,那么,在152,判断上下文切换是否被禁止。[0040]在基于execlist的调度,目标上下文ID字段包含对应于该命令正在发信的目标引擎的上下文的上下文ID。在信号模式中等待MI_SEMPHORE_WAIT命令的目标引擎将从存储器再次提取数据,或者比较其上下文ID是否与这一所发送的信号上下文ID相同。[0041]当在150启用execlist且在152不启用禁止上下文切换时,在154,目标引擎切换掉上下文,且告知调度器处理器或SHIM106上下文切换的原因是旗语等待故障。在引起上下文切换的旗语等待的时候,CS在上下文镜像中插入MI_SEMAPHORE_WAIT细节,以使得调度器可以在重新调度上下文之前重新评估条件。[0042]在另一种操作模式中,如果在152禁止了上下文切换,代替在旗语故障时切换交换上下文,等待引擎等待旗语条件得到满足。为了向前推进,等待引擎重新获取存储器中的旗语数据,直到来自旗语命令的条件得到满足。MI_SEMAPHORE_WAIT中的模式位声明何时需要从存储器重新获取旗语数据。[0043]图2B示出基于轮询的机制,该机制在框156开始。等待引擎周期性地在存储器中在166获取旗语数据并在168评估该比较。这继续进行,直到条件得到满足。可以在164配置采样旗语数据的周期。[0044]图2B也在158示出基于信号的机制。在等待引擎接收到旗语信号时,等待引擎获取存储器中的旗语数据。在136,在运行上下文ID匹配信号上下文ID时,这可以来自例如目标引擎104。在旗语故障的时候,离开146的“否N0”路径,在147处产生旗语等待中断,表示引擎已经遭遇旗语故障,并且如果需要的话可以取消旗语等待,且旗语等待可以抢占上下文的执行。换句话说,不考虑该模式,在旗语失败的第一时间把中断发送给调度器。[0045]另一调度模式是环形缓冲器模式。在环形缓冲器调度模式中,目标引擎的上下文ID字段不具有任何相关性。等待该信号模式中的MI_SEMAPHORE_WAIT的目标引擎将从存储器提取数据以便在接收到与它接收的上下文ID无关的信号时比较。在环形缓冲器模式中,MI_SEMAPHORE_WAIT和MI_SEMPHORE_SIGAL命令均以与execlist模式中相同的方式执行,并且类似地影响目标引擎。然而,旗语等待的故障在execlist模式中可以引起上下文切换,然而它在环形缓冲器模式中将不能引起上下文切换。[0046]返回到轮询模式,可能不存在对MI_SEMAPHORE_SIGNAL或类似命令的支持。在图2B中,如果在150等待引擎不是处于execlist模式,那么,在156判断等待引擎是否处于轮询模式。如果是,那么,硬件周期性地采样存储器并和重新评估旗语条件。[0047]这被示出为例如在162开始轮询定时器,并且在164监视定时器状态。在定时器期满时,在160,等待引擎检查待决execlist。如果找到了该列表,那么,在148结束等待。如果没有找到,那么,在166停止轮询定时器。此时,由于不存在待决execlist,在168,等待引擎从由旗语命令提供的地址提取数据并将其与内联数据进行比较。如果在168存在匹配,那么,在170复位空闲状态和轮询定时器,且在148结束等待。另一方面,如果不存在匹配,那么,在162,轮询模式返回到开始轮询定时器。开始另一定时器循环,且轮询模式再次循环。[0048]在基于信号的模式中,在图2A的136,把重新评估旗语等待提示发送给等待逻辑。在158接收到提示时,从来自提示和待决execlist的匹配检查上下文ID。如果存在待决等待过程且如果在160不存在待决execlist,那么,在166从存储器重新获取旗语并重新评估。在168旗语通过时,在148终止等待过程。在168旗语故障时,该过程回到156以便等待下一信号提不158。[0049]上面所使用的MI_SEMAPHORE_SIGNAL命令可以被定义为一个命令,该命令向目标引擎发信,且向使用目标上下文ID的目标引擎的上下文中的一个声明存储器旗语更新出现。在各实施例中,MI_SEMPHORE_SIGAL命令和额外的MI_SEMAPHORE_WAIT可以一起代替邮箱和基于寄存器的旗语信令。可以在MI_SEMAPHORE_SIGNAL命令之前编程MI_AT0MICMIJI子)(未标出命令以便更新存储器中的旗语数据。[0050]在一些情况中,基于例如命令中各比特所包含的信息,可以作为管线化PIPE_CONTROL管j空制)刷新命令而执行MI_SEMAPHORE_SIGNAL命令,且旗语信号用作后期同步操作。刷新完成仅保证在这一命令之前的工作负载被推送到窗口器windower单元且完成在这一命令之前发出的任何未完成的刷新。该信号可以被保存为后期同步操作。命令流化器可以在这种情况中继续执行其他命令。可以在在完成所发出的刷新命令之后的某个时间执行被保存为后期同步操作原子操作。[0051]在这种后期同步操作模式中,原子旗语信号操作将与环形缓冲器或批缓冲器中所编程的其余MI命令成乱序。然而,原子旗语信号操作将相对于由于任何PIPE_C0NTR0L命令而得到的后期同步操作是有序的。在表1中示出用于MI_SEMAPHORE_SIGNAL命令的示例结构。可以用其他字段替代各字段中的任何一个或多个。各字段的次序可以改变,并且可以使用带有更多或更少比特的更多或更少字段。[0052][0054]表IMI_SEMAPHORE_SIGNAL[0055]MI_SEMAPHORE_WAIT可以采取各种不同的形式,这取决于与它一起使用的具体系统和标准。在一个示例中,这种命令支持如图2B中所示出的基于存储器的旗语等待。基于存储器的旗语可以用于在生产者和消费者上下文之间的同步。生产者和消费者上下文可以运行在图形处理系统中的不同引擎或相同引擎上。在一种实施例中,在两个上下文上均启用execlist时,两个上下文可以运行在相同引擎上。借助于在这里描述的命令,生产者上下文实现信号且消费者上下文实现等待。[0056]在解析此命令时,命令流化器从此命令中提到的旗语地址提取数据并将其与内联旗语数据Dword比较。如果比较通过,那么,命令流化器移动到下一命令。在遭遇旗语故障时,命令流化器总是向调度器产生中断。[0057]在启用execlists时,如果比较失败,那么,命令流化器切换掉上下文。通过例如在GFXJt式寄存器中设置“禁止同步上下文切换”,可以禁止上下文切换。[0058]在设置了“禁止同步上下文切换”的调度或execlist的环形缓冲器模式中,如果比较失败,那么,命令流化器基于等待模式评估比较操作,直到比较操作为真或者直到软件取消等待。[0059]表2中示出用于MI_SEMAPHORE_WAIT的示例结构。可以用其他领域替代各字段中的任何一个或多个。各字段的次序可以改变,并且可以使用带有更多或更少比特的更多或更少字段。在比较操作中,SAD对应于旗语地址数据且SDD对应于旗语数据Dword。[0060][0061][0062]表2MI_SEMAPHORE_WAIT[0063]图3是根据以上所描述的各实施例在生产者和消费者引擎之间同步上下文的方法的备选处理流程图。在311,生产者引擎执行上下文。上下文具有命令流,且生产者执行该流中的命令。一旦旗语信号命令到达,在313处,生产者就把旗语信号发送给消费者引擎。使用命令流中的多个旗语命令,生产者可以把多个旗语信号发送给一个或多个消费者。旗语信号的内容可以由命令提供,或者可以以其他方式获得。命令可以包括信号影响的上下文的标识、消费者或目标引擎的标识和各种其他处理细节和选项。[0064]旗语信号可以仅包括上下文标识符,或者它可以包括其他信息,例如,生产者已经使用例如存储器地址更新的受影响的存储器寄存器,以及响应于接收旗语信号而采取的动作。在生产者引擎更新存储器寄存器之后或者在它已经产生消费者引擎需要的某种其他结果之后,可以发送旗语信号。[0065]在一个示例中,旗语信号包括内联数据和比较操作。比较操作可以是大于、小于、等于或各种更复杂的函数中的任何。针对在经更新的存储器地址处的数据,该比较被应用到信号中的内联数据。这允许消费者引擎判断是否已经更新了经更新的存储器地址中的数据。[0066]在315,消费者引擎接收旗语信号,且在317,它向生产者引擎确认信号。已经接收到信号之后,然后,消费者引擎可以处理信号的命令。首先,在319,消费者引擎判断旗语信号的上下文ID是否匹配在消费者引擎处当前处理的上下文的上下文ID。如果是,那么在321,消费者应用比较操作。如果比较操作合格,那么在311,消费者引擎继续执行当前上下文。旗语信号相当于数据准备好供消费者引擎用于执行上下文的命令的检查。[0067]如果比较操作不合格,那么,消费者可以等待生产者更新寄存器。生产者可以在旗语信号中指示是否等待来控制这一点。如果在323在旗语信号中允许轮询或以某种其他方式允许轮询,那么在325,消费者引擎将等待。等待可以是简单定时器或更复杂的操作,如图2B中所示出的。在另一实施例中,等待要求消费者引擎等待来自生产者的旗语信号。如果在321在等待之后数据满足比较,那么在331,消费者继续执行上下文。[0068]如果在321比较为否定,且在323不允许轮询,或者如果在19旗语信号的上下文ID不匹配当前的上下文,那么,消费者将结束当前上下文并去往它从命令流化器接收的下一个。为此,在327它告知调度器不存在匹配。调度器将重新调度带有相同或不同的消费者引擎上下文。[0069]图4是适于与本发明一起使用的图形处理单元的通用硬件图。GPU201包括命令流化器211,命令流化器211包含ALU101。来自命令流化器的数据被应用到媒体管线213。命令流化器也耦合到3D固定功能管线215。命令流化器通过在管线之间切换管理3D和媒体管线的使用,并且把命令流转发给活动管线。3D管线提供专用图元处理功能,而媒体管线执行更一般的功能性。对于3D渲染,由顶点缓冲器217馈送3D管线,而由单独一组存储器对象219给媒体管线提供输入。把来自3D和媒体管线的中间结果以及来自命令流化器的命令馈送到图形子系统221,图形子系统221直接耦合到管线和命令流化器。[0070]图形子系统221包含耦合到图形处理核阵列225的统一返回缓冲器223。这在上面被称为生产者引擎和消费者引擎。统一返回缓冲器包含由各种函数共享的存储器,以便允许各线程返回稍后将由其他函数或线程使用的数据。核阵列225处理来自管线流化器的值以便最终产生目的地表面227。核阵列拥有对采样器函数229、数学函数231、线程间通信233、色彩计算器235和缓存最终所渲染的表面的渲染高速缓存237的访问权。一组源表面239被应用到图形子系统221,并且在所有这些函数229、231、235、237、239被各核阵列应用之后,产生一组目的地表面227。对于通用计算的目的,命令流化器211和ALU被用来运行仅对仅ALU进行或者也经过核阵列225的操作,这取决于特定实现。[0071]参见图5,图形核201被示出为更大的计算机系统501的一部分。计算机系统具有通过DMI直接媒体接口)507耦合到输入输出控制器中枢(ICH505的CPU503XPU具有用于通用计算的一个或多个核509,这些核心耦合到图形核201且共享末级高速缓存51UCPU包括系统代理513,例如存储器接口515、显示接口517和PCIe接口519。在所阐释的示例中,PCIe接口用于PCI快速express显卡且可以耦合到图形适配器521,图形适配器521可以耦合到显示器未示出)。第二或替代显示器523可以耦合到系统代理的显示模块。这一显示器将由图形核201驱动。存储器接口515耦合到系统存储器525。[0072]输入输出控制器中枢505包括到大容量存储531、外部外围设备533和诸如键盘和鼠标之类的用户输入输出设备535的连接。输入输出控制器中枢也可以包括显示接口537和其他附加接口。显示接口537处于视频处理子系统539内。子系统可选地通过显示器链路541耦合到CPU的图形核。[0073]各种多样的附加和备选的设备可以耦合到图5中所示出的计算机系统501。备选地,本发明的各实施例可以适用于与所示出的那些不同的架构和系统。附加的组件可以被合并到所示出的现有单元,并且,可以使用更多或更少的硬件组件来提供所描述的功能。可以从完整系统中删除所描述的函数中的一种或多种。[0074]尽管图形核201被示出为与也包括通用处理核509和其他组件的CPU集成,但图形核可以被构建为带有到LLC和通用核的通信接口的分立组件。备选地,可以在密封在相同或不同的封装中的独立管芯上构建例如在图4中所示出的图形核及其相关的组件。也可以在相同或不同的封装中的相同或不同的管芯上构建诸如存储器525、ICH505和系统代理513之类的其他组件。[0075]本发明的各实施例在生产者引擎和消费者引擎中提供使用信令同步共享存储器中的数据的机制。在所描述的示例中,使用MI_SEMAPHORE_SIGNAL命令和MI_旗语等待命令来完成这一点,然而,本发明不限于此。这在命令流化器中提供一种借助于被编程到由核阵列中的核执行的命令流中的命令执行运算和逻辑操作的信令和命令机制硬件结构)。[0076]各种各样的附加的和替代的设备可以被耦合到图5中所示出的计算机系统501。备选地,本发明的各实施例可以适用于与所示出的那些不同的架构和系统。附加的组件可以被合并到所示出的现有单元,并且,可以使用更多或更少的硬件组件来提供所描述的功能。可以从完整系统中删除所描述的函数中的一种或多种。[0077]应明白,以上所描述的示例配备更少或更多的系统对于某些实现来说是优选的。因此,示例性系统和电路的配置可以因实现而不同,这取决于众多因素,例如价格约束、性能要求、技术改进或其他环境。[0078]各实施例可以被实现为以下中的任何或组合:使用主板互连的一个或多个微芯片或集成电路、硬布线逻辑、由存储器设备存储且由微处理器执行的软件、固件、专用集成电路ASIC和或现场可编程门阵列FPGA。作为示例,术语“逻辑”可以包括软件或硬件和或软件和硬件组合。[0079]对“一种实施例”、“一个实施例”、“示例实施例”、“各种实施例”等等的引用表示所描述的本发明的(多个实施例可以包括具体的特征、结构或特性,但并不是每一实施例必定包括这些具体的特征、结构或特性。进一步,一些实施例可以具有针对其他实施例所描述的特征中的一些、全部或者没有这些特征。[0080]在本描述和权利要求中,可以使用术语“耦合”及其派生词。“耦合”被用来表示两个或更多个元素共同操作或相互交互,但在它们之间可以有或者没有中间物理或电气组件。[0081]如权利要求中所使用的,除非另外指出,使用顺序形容词“第一”、“第二”、“第三”等等来描述普通元素,仅仅表示所提及的类似元素的不同实例,且不旨在暗示所描述的元素必须遵守给定序列,无论是时间上、空间上、排名上还是以任何其他方式。[0082]附图和前述描述给出了实施例的示例。本领域中的技术人员将明白,所描述的元素中的一个或多个可以很好地组合成单个功能元素。备选地,某些元素可以被拆分成多个功能元素。来自一种实施例的元素可以被添加到另一实施例。例如,在此描述的进程的顺序可以改变且不限于在此描述的方式。此外,不需要以所示出的次序实现任何流程图的动作;也不必定需要执行所有动作。而且,不依赖于其他动作的那些动作可以与其他动作并行执行。各实施例的范围决不受到这些特定示例的限制。无论是否在说明书中明确给出,诸如结构、尺寸、和材料的使用中的差异之类的众多变化也是可能的。各实施例的范围至少如同下列的权利要求所定义的那样宽广。[0083]下列的示例涉及进一步的实施例。各示例中的细节可以用于在一个或多个实施例中的任何地方。在一种实施例中,在生产者引擎和消费者引擎之间同步上下文的方法包括在生产者引擎处执行上下文该执行包括更新存储器寄存器)以及把已经更新了消费者引擎的信号从生产者引擎发送到存储器寄存器,该信号包括用于标识要由消费者引擎执行以便更新寄存器的上下文的上下文ID。[0084]进一步的实施例包括上面的方法,其中,该信号包括用于标识经更新的存储器寄存器内联数据的存储器寄存器地址。[0085]进一步的实施例包括上面的方法,这些方法也包括产生要从生产者引擎发送给消费者引擎的信号,该消息标识消费者引擎和由消费者引擎把信号应用到其的上下文ID。[0086]进一步的实施例包括上面的方法,这些方法也包括在调度器处产生上下文ID并把上下文ID指派给消费者引擎,上下文ID包括标识消费者引擎的引擎ID。[0087]进一步的实施例包括上面的方法,这些方法也包括在消费者引擎处接收信号并由消费者引擎向生产者引擎确认信号。[0088]进一步的实施例包括上面的方法,这些方法也包括判断信号的上下文ID是否匹配当前在消费者引擎处处理的上下文的上下文ID。[0089]进一步的实施例包括上面的方法,这些方法也包括如果信号消息的上下文ID不匹配当前由消费者引擎处理的上下文,则把信号转发给调度器。[0090]进一步的实施例包括上面的方法,这些方法也包括如果信号消息的上下文ID不匹配当前由消费者引擎处理的上下文,则在调度器处重新调度由信号消息的上下文ID标识的上下文。[0091]进一步的实施例包括上面的方法,这些方法也包括如果信号消息的上下文ID匹配当前由消费者引擎处理的上下文,则在消费者引擎处等待。进一步,各实施例包括上面的方法中的任何,其中,等待包括等待定时器。[0092]进一步的实施例包括上面的方法,这些方法也包括如果信号消息的上下文ID匹配当前由消费者引擎处理的上下文,则从存储器寄存器提取数据以供用于在消费者引擎处执行上下文。[0093]在一种实施例中,一种机器可读介质具有指令,这些指令在由机器执行时,引起机器执行包括在生产者引擎处执行上下文的操作该执行包括更新存储器寄存器),并且把已经更新了存储器寄存器的信号从生产者引擎发送给消费者引擎,信号包括标识要由消费者引擎执行以便更新寄存器的上下文的上下文ID。[0094]进一步的实施例包括上面的指令,这些指令也包括要从生产者引擎发送给消费者引擎的信号,该消息标识消费者引擎和由消费者引擎把信号应用到其的上下文ID。[0095]进一步的实施例包括上面的指令,这些指令也包括在调度器处产生上下文ID并把上下文ID指派给消费者引擎,上下文ID包括用于标识消费者引擎的引擎ID。[0096]在一种实施例中,一种装置包括生产者引擎和消费者引擎,生产者引擎用于执行上下文,该执行包括更新存储器寄存器并把已经更新了存储器寄存器的信号发送给消费者引擎,该信号包括标识要由消费者引擎执行以便更新寄存器的上下文的上下文ID,消费者引擎接收信号并向生产者引擎确认该信号。[0097]进一步的实施例包括上面的装置,其中,消费者引擎进一步判断信号的上下文ID是否匹配当前在消费者引擎处处理的上下文的上下文ID。[0098]进一步的实施例包括上面的装置,其中,如果信号消息的上下文ID匹配当前由消费者引擎处理的上下文,则消费者引擎就进一步从存储器寄存器提取数据以供用于在消费者引擎处执行上下文。[0099]在一种实施例中,一种用于在生产者引擎和消费者引擎之间同步上下文的方法包括执行上下文的命令流,该命令流具有等待命令,等待命令具有旗语存储器地址、内联旗语数据和比较操作符,通过从旗语存储器地址提取数据并将其与内联旗语数据进行比较来执行等待命令,且如果比较操作符的比较得到满足则执行命令流中的下一指令。[0100]进一步的实施例包括上面的方法,这些方法也包括如果比较得不到满足则等待并且重复提取数据并比较。[0101]进一步的实施例包括上面的方法中的任何,其中,等待包括等待定时器。[0102]进一步的实施例包括上面的方法中的任何,其中,等待包括等待从生产者引擎接收旗语信号。[0103]进一步的实施例包括上面的方法,这些方法也包括如果比较得不到满足就切换掉上下文。[0104]进一步的实施例包括上面的方法,这些方法也包括如果比较得不到满足就告知调度器。[0105]进一步的实施例包括上面的方法,这些方法也包括更新上下文调度器中的等待命令。[0106]进一步的实施例包括上面的方法,这些方法也包括在切换消费者引擎的上下文之前在调度器处重新评估等待条件。[0107]在一种实施例中,一种具机器可读介质有指令,这些指令在由机器执行时,引起机器执行包括执行上下文的命令流的操作,该命令流具有等待命令,该等待命令具有旗语存储器地址、内联旗语数据和比较操作符,通过从旗语存储器地址提取数据并将其与内联旗语数据进行比较来执行等待命令,并且如果比较操作符的比较得到满足就执行命令流中的下一指令。[0108]进一步的实施例包括上面的指令,这些指令也包括如果比较得不到满足就告知调度器。[0109]进一步的实施例包括上面的指令,这些指令也包括在上下文调度器中更新等待命令。[0110]在一种实施例中,一种装置包括具有地址的存储器、具有用于上下文的命令流的命令流化器以及用于执行上下文的命令流的消费者引擎,该命令流具有等待命令,该等待命令具有到存储器的旗语存储器地址、内联旗语数据和比较操作符,消费者引擎还通过从存储器在旗语存储器地址处提取数据并把所提取的数据与内联旗语数据进行比较来执行等待命令,如果比较操作符的比较得到满足,则消费者引擎还执行命令流中的下一指令。[0111]进一步的实施例包括上面的装置中的任何,这些装置也包括调度器,调度器连接到消费者引擎,以便如果比较得不到满足就更新等待命令。在进一步的实施例中,调度器还在切换消费者引擎的上下文之前重新评估等待条件。

权利要求:1.一种用于在生产者引擎和消费者引擎之间同步上下文的方法,所述方法包括:在生产者引擎处执行上下文,所述执行包括更新存储器寄存器;把已更新所述存储器寄存器的信号从所述生产者引擎发送给消费者引擎,所述信号包括用于标识要由所述消费者引擎执行以便更新所述寄存器的上下文的上下文ID;判断所述信号的所述上下文ID是否匹配当前在所述消费者引擎处处理的上下文的上下文ID;以及如果所述信号消息的所述上下文ID匹配当前由所述消费者引擎处理的所述上下文,则在所述消费者引擎处等待。2.如权利要求1所述的方法,其特征在于,所述信号包括用于标识所述经更新的存储器寄存器内联数据的存储器寄存器地址。3.如权利要求1所述的方法,其特征在于,进一步包括产生要从生产者引擎发送给消费者引擎的所述信号,所述消息标识所述消费者引擎和由所述消费者引擎把所述信号应用到其的上下文ID。4.如权利要求3所述的方法,其特征在于,进一步包括在调度器处产生所述上下文ID并把所述上下文ID指派给所述消费者引擎,所述上下文ID包括用于标识所述消费者引擎的引擎ID。5.如权利要求1所述的方法,其特征在于,进一步包括在所述消费者引擎处接收所述信号和由所述消费者引擎向所述生产者引擎确认所述信号。6.如权利要求1所述的方法,其特征在于,进一步包括如果所述信号消息的所述上下文ID不匹配当前由所述消费者引擎处理的所述上下文,则把所述信号转发给调度器。7.如权利要求6所述的方法,其特征在于,进一步包括如果所述信号消息的所述上下文ID不匹配当前由所述消费者引擎处理的所述上下文,则在所述调度器处重新调度由所述信号消息的所述上下文ID标识的所述上下文。8.如权利要求1所述的方法,其特征在于,等待包括等待定时器。9.如权利要求1所述的方法,其特征在于,进一步包括如果所述信号消息的所述上下文ID匹配当前由所述消费者引擎处理的所述上下文,则从所述存储器寄存器提取数据以供用于在所述消费者引擎处执行所述上下文。10.—种用于在不同的处理引擎之间同步操作的装置,包括:存储器;处理器,其中所述处理器用于:在生产者引擎处执行上下文,所述执行包括更新存储器寄存器;把已更新所述存储器寄存器的信号从所述生产者引擎发送给消费者引擎,所述信号包括用于标识要由所述消费者引擎执行以便更新所述寄存器的上下文的上下文ID;判断所述信号的所述上下文ID是否匹配当前在所述消费者引擎处处理的上下文的上下文ID;以及如果所述信号消息的所述上下文ID匹配当前由所述消费者引擎处理的所述上下文,则在所述消费者引擎处等待。11.如权利要求10所述的装置,其特征在于,所述处理器进一步用于产生要从生产者引擎发送给消费者引擎的所述信号,所述消息标识所述消费者引擎和由所述消费者引擎把所述信号应用到其的上下文ID。12.如权利要求11所述的装置,其特征在于,所述处理器进一步用于在调度器处产生所述上下文ID并把所述上下文ID指派给所述消费者引擎,所述上下文ID包括用于标识所述消费者引擎的引擎ID。13.—种用于在不同的处理引擎之间同步操作的装置,包括:生产者引擎,用于执行上下文并向存储器寄存器发送已更新消费者引擎的发送信号,所述执行上下文包括更新所述存储器寄存器,所述信号包括标识要由所述消费者引擎执行以便更新所述寄存器的上下文的上下文ID;以及消费者引擎,用于接收所述信号且向所述生产者引擎确认所述信号,用于判断所述信号的所述上下文ID是否匹配当前在所述消费者引擎处处理的上下文的上下文ID,以及用于在所述信号消息的所述上下文ID匹配当前由所述消费者引擎处理的所述上下文的情况下,进行等待。14.如权利要求13所述的装置,其特征在于,如果所述信号消息的所述上下文ID匹配当前由所述消费者引擎处理的所述上下文,则所述消费者引擎还从存储器寄存器提取数据以供用于在所述消费者引擎处执行所述上下文。15.—种用于在生产者引擎和消费者引擎之间同步上下文的方法,所述方法包括:在所述消费者引擎处从所述生产者引擎接收具有上下文ID的信号命令;在所述消费者引擎处执行对应于所述上下文ID的上下文的命令流,所述命令流具有等待命令,所述等待命令具有旗语存储器地址、内联旗语数据和比较操作符;向所述生产者引擎确认所述等待命令;在所述消费者引擎处,通过从所述旗语存储器地址提取数据并通过使用所述比较操作符将所提取的数据与所述内联旗语数据进行比较,来执行所述等待命令;如果与所述比较操作符的比较得到满足,则执行所述上下文的所述命令流中的下一指令。16.如权利要求15所述的方法,其特征在于,进一步包括如果所述比较得不到满足,则等待定时器期满并且在等待之后重复提取数据并比较。17.如权利要求16所述的方法,其特征在于,等待包括以下中的至少一者:等待定时器;以及等待从生产者引擎接收旗语信号。18.如权利要求15所述的方法,其特征在于,进一步包括如果比较得不到满足就从所述上下文切换出去。19.如权利要求15所述的方法,其特征在于,进一步包括如果所述比较得不到满足就告知调度器。20.如权利要求19所述的方法,其特征在于,进一步包括更新上下文调度器中的所述等待命令。21.如权利要求20所述的方法,其特征在于,进一步包括在切换所述消费者引擎的所述上下文之前在调度器处重新评估等待条件。22.—种用于在不同的处理引擎之间同步操作的装置,包括:存储器;处理器,其中所述处理器用于:在消费者引擎处从生产者引擎接收具有上下文ID的信号命令;在所述消费者引擎处执行对应于所述上下文ID的上下文的命令流,所述命令流具有等待命令,所述等待命令具有旗语存储器地址、内联旗语数据和比较操作符;向所述生产者引擎确认所述等待命令;在所述消费者引擎处,通过从所述旗语存储器地址提取数据并通过使用所述比较操作符将所提取的数据与所述内联旗语数据进行比较,来执行所述等待命令;以及如果与所述比较操作符的所述比较得到满足,则执行所述上下文的所述命令流中的下一指令。23.如权利要求22所述的装置,其特征在于,所述处理器进一步用于如果比较得不到满足就告知调度器。24.如权利要求23所述的装置,其特征在于,所述处理器进一步用于更新上下文调度器中的所述等待命令。25.—种用于在不同的处理引擎之间同步操作的装置,包括:存储器,其具有地址;命令流化器,其具有用于上下文的命令流;以及消费者引擎,其用于从生产者引擎接收具有上下文ID的信号命令以执行对应于所述上下文ID的所述上下文的所述命令流,所述命令流具有等待命令,所述等待命令具有到所述存储器的旗语存储器地址、内联旗语数据和比较操作符,所述消费者引擎还用于向所述生产者引擎确认所述等待命令以通过从所述存储器在所述旗语存储器地址处提取数据并把所述已提取数据与所述内联旗语数据进行比较来执行所述等待命令,如果所述比较操作符的比较得到满足,则所述消费者引擎还执行所述命令流中的下一指令。26.如权利要求25所述的装置,其特征在于,进一步包括调度器,所述调度器连接到所述消费者引擎,以便如果所述比较得不到满足就更新所述等待命令。27.如权利要求26所述的装置,其特征在于,所述调度器还在切换所述消费者引擎的所述上下文之前重新评估等待条件。28.—种或多种其上存储有指令的计算机可读介质,所述指令当由计算机处理器执行时使所述处理器执行如权利要求1至9中任一项所述的方法。29.—种用于在生产者引擎和消费者引擎之间同步上下文的设备,包括用于执行如权利要求1至9中任一项所述的方法的装置。

百度查询: 英特尔公司 基于存储器的旗语

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。