基于行为模型的多线程体系结构的制作方法

文档序号:6503900阅读:141来源:国知局
专利名称:基于行为模型的多线程体系结构的制作方法
技术领域
本发明涉及用于多线程处理的技术和体系结构,尤其涉及用于多线程处理的 使用信号量的技术和体系结构。
北旦 冃豕
"信号量"(也称为"临界段"或"互斥信号")是一种允许其中多个进程 竞争共享资源(例如,存储器、文件)的操作的协调或同步的硬件和软件构造。一 般而言,信号量是储存在操作系统的指令位置中进程可检查和改变的值。基于信号 量的值,进程可访问共享资源,或等待一段时间并再次检査信号量。
常规计算机系统中的信号量通常使用对原子"测试与置位"或相似类型的指 令(例如,锁定、位测试、位测试与置位、位测试与复位)的硬件支持而被实现为 软件例程。使用该信号量实现,可通过共享(例如,全局)数据以及一个或多个信 号量来建立生产者一消费者通信关系。信号量允许由试图修改数据的多个进程中选 中的一个来修改共享数据,这提供了数据一致性。
该信号量构造是"被动的",因为线程必须执行轮询操作来获取信号量。轮 询需求消耗了以别的方式可用于其它目的的处理器和系统资源。因此,〗专统的信号 量会导致效率低下。
附图简述
在附图的各图中作为示例而非局限示出了本发明,附图中,相同的参考标号 引用相同的元素。


图1是大量的多线程处理器体系结构的一个实施例的框图。
图2是线程调度和信号量初始化操作的协调的一个实施例的流程图。 图3a-3d是其中可使用信号量来同步线程执行的从属关系的概念图示。
详细描述 —
在以下描述中,为解释起见,陈述了众多具体细节以提供对本发明的全面理 解。然而,本领域的技术人员可以清楚,本发明可不采用这些具体细节来实施。在 其它情况下,以框图形式示出了结构和设备以避免模糊本发明。
对主动信号量的示例使用的综述
此处所描述的是其中多个并行指令线程(后文称为"线程")使用"主动" 信号量来协调对共享资源的访问的体系结构和相关联的方法。该信号量被称为主动 的是因为信号量实体向执行和/或控制电路发送消息以使线程状态改变。例如,线 程可由线程调度器响应于未决从属关系而置于睡眠(或不活动)模式,这可由信号 量来指示。对应于该从属关系的线程状态变量用于指示该线程处于睡眠模式中。
当解决了从属关系时,向控制电路(例如,线程调度器)传递一消息,以使 该从属关系变量被清除。响应于所清除的从属关系变量,该线程被置于活动(或唤 醒)状态中。执行可在活动状态的线程上继续。
继续上述示例,如果线程试图获取信号量却无法获得,则该线程被置于不活 动状态。由于线程是不活动的,因此它无法轮询该信号量以确定由该信号量指示的 从属关系何时被解决,这是现有技术中所需要的。该线程保留在不活动状态,直到 接收(例如,从信号量实体)到指示从属关系被解决的消息。响应于该消息,线程 被置于活动状态中,这允许执行继续。
图1是大量多线程处理器体系结构的一个实施例的框图。如此处所使用的, 标签"大量多线程"体系结构指的是包括可支持多线程执行的多个处理器的体系结 构。在一个实施例中,每一处理器可支持一个或多个线程。单个处理器上的多线程 通过允许在其它线程处于非活动状态的同时执行活动线程来实现高执行效率。在信 号量上待决的非活动状态中的线程不会消耗/浪费处理器资源。尽管描述是针对大 量多线程体系结构的,但是信号量构造和相关联的方法适用于任何多线程体系结 构,而无论支持的线程数是多少。 —
大量多线程系统100包括储存要在执行期间由一个或多个处理核心使用的数
据和指令的存储器分层结构iio。存储器分层结构uo可以包括本领域中已知的任
何方式的动态随机存取存储器(DRAM)、 一级或多级指令高速缓存、 一级或多级 数据高速缓存、以及一级或多级共享指令和数据高速缓存。线程分派器120与存储 器分层结构110耦合,它接收诸如与新线程相关^^的指令指针以及数据和/或数据 指针等信息。线程分派器120也经由消息总线125与处理核心耦合。在一个实施例
中,线程分派器120负责管理处理核心的线程资源。在接收新待决线程之后,线程 分派器120选择具有执行该待决线程的资源的一个处理核心,并将该线程分派到所 选择的处理核心。在处理核心上完成现有线程之后,通知线程分派器120,从而使 得该处理核心上的线程资源可用于将来的待决线程。
系统100被示出为具有多个处理器核心(130、 131、 139、 150、 151和159),
其每一个包括具有相关联的控制电路的执行电路。处理器核心可以是相同的,或者 处理器核心可具有不同的功能。任何数量的处理器核心可被包括在系统100内。在
一个实施例中,处理器核心按行来配置,每一行具有一个行控制器。例如,行控制
器140可经由行控制总线145与处理器核心130、 131和139耦合。类似地,行控 制器160可经由行控制总线165与处理器核心150、 151和159耦合。
处理器核心也经由消息总线125与信号量实体170耦合。信号量实体170包 括提供此处所描述的信号量功能的存储器和控制逻辑。在一个实施例中,信号量实 体170通过如以下更详细描述地发送和接收消息来与处理器核心交互。
线程分派器120也经由消息总线125与信号量实体170耦合。在一个实施例 中,线程分派器通过如以下更详细描述地发送和接收消息来代表线程与信号量实体 170交互。
每一处理核心中的控制电路可包含管理在同一处理核心上执行的多个线程的 状态的线程调度电路,并还可包含执行活动指令线程的指令调度电路。在指令执行 期间, 一个或多个处理核心将试图访问共享的系统资源。为获得对共享系统资源的 控制,线程通过对应的执行核心必须获得对应于要访问的共享系统资源的信号量的 控制。
在一个实施例中,为获得对信号量的控制,请求处理核心通过消息总线125 向信号量实体170发送信号量请求消息。在发送信号量请求消息之后,请求线程被 置于其中执行和相关联的操作(例如,对信号量的轮询)暂停的非活动状态。
响应于接收信号量请求消息,信号量实体170确定是否要向请求线程授予对 信号量的控制。当授予信号量肘,信号量实体170向请求线程发送信号量确认消息。 响应于信号量确认消息,请求线程被恢复到其中使用所请求的资源的执行继续的活 动状态。当线程完成了对共享资源的使用,该线程向信号量实体170发送释放信号 量消息。响应于释放信号量消息,信号量实体170释放信号量,并允许其它线程获 得对系统资源的访问。 —
在一个实施例中,信号量由处理核心所执行的指令(信号量指令)以及通过
例如消息总线125在处理核心和信号量实体之间传递的消息(信号量消息)来支持。 在替换实施例中,可支持不同的和/或另外的消息或指令。
基于链表的信号量实体
在一个实施例中,传统的每一信号量队列由具有用于对每一信号量形成链表 的条目的缓冲池来替换。由此,每一信号量可以是指向从缓冲池中的条目形成的链 表的头指针。链表可以是双向链表或单向链表。
在一个实施例中,信号量表对每一支持的信号量包括一个指针。在一个实施 例中,信号量表中的指针是指示要用于对应的信号量的链表的头。自由池指针指示
缓冲池的头,且未使用信号量条目包括空(NULL)指针。
在一个实施例中,每一信号量条目包括释放状态字段、确认抑制字段、线程 标识符字段、前一指针和下一指针-。在替换实施例中,可使用其它和/或不同的字 段,例如可省略前一指针。在一个实施例中,每一信号量还可包括指示对应于信号 量的链表是否为空的单个位(或其它指示符)。
信号量消息
对线程或代表线程的线程分派器使用获取信号量消息(ACQ一MSG)来向信号 量实体作出对信号量拥有权的请求。在一个实施例中,ACQ一MSG包含信号量标识 符字段、线程标识符字段、"自动释放"字段和"确认抑制"(aek-suppression) 字段。自动释放字段用于仅有头从属关系的线程。S卩,该线程从属于先前的线程, 但是没有后续的线程从属于该线程。确认抑制字段用于仅有尾从属关系的线程。即, 该线程不从属于任何先前的线程,但是该线程的确仅有从属于它的后续线程。 ACQ一MSG可由线程分派器或与线程关联的其它控制电路发出。
在一个实施例中,在接收到ACQ—MSG之后,信号量实体通过从自由池中移 除头条目,并将其添加到所选信号量的尾部,来使对于请求线程的信号量实体入队 到目标信号量(由信号量标识符字段指定)的链表中。信号量条目的字段基于 ACQ一MSG中的信息来更新线程标识符字段、释放状态字段和确认抑制字段由 ACQ-MSG消息中的请求者线程标识符、自动释放字段和确认抑制字段替换。如果 信号量链表在ACQ—MSG之前不为空,则信号量实体不发送任何消息。否则,如 果信号量链表在接收到ACQ—MSG之前为空,则采取以下动作之一。
如果复位确认抑制字段,则在消息总线125上从信号量实体向请求线程发送
具有线程标识符的ACK_MSG。如果置位确认抑制字段,则不从信号量实体发送 ACK—MSG消息。如果复位自动释放字段,则在信号量链表中维持刚入队的信号量 条目。因此,信号量链表不为空,且信号量当前由线程拥有。如果置位启动释放字 段,则从信—号量链表中移餘刚入队的信号量实体,且因此信号量链表为空。
对线程使用释放信号量消息(REL_MSG)以向信号量实体作出释放信号量的 拥有权的请求。在一个实施例中,REL—MSG包括信号量标识符字段和线程标识符 字段。在一个实施例中,REL—MSG只能由与持有该信号量的拥有权的线程相关联 的控制电路发出,即,信号量标识符在信号量链表的顶部。在接收到REL_MSG 之后,信号量实体从信号量链表的头部移除该条目。
在另一实施例中,REL一MSG可由与共享该信号量的任何线程相关联的控制电 路发出。在接收到REL_MSG之后,信号量实体复位对于信号量链表中的对应条 目释放状态字段,而无论条目在链表中的位置如何。如果信号量条目在链表的头部, 则从该信号量链表的头部移除该条目。然后,下一条目成为链表的头部。如果下一 条目不为空,则检査该条目。如果链表的新头部置位了释放状态字段,则再次从信 号量链表的头部移除它。
在一个实施例中,这一递归过程继续,直到链表头部为空(信号量队列为空) 或链表头部的释放状态字段未被复位(等待从对应于该条目的线程释放信号量)。 如果链表头部不为空,且未置位确认抑制字段,则ACK—MSG由信号量实体发送 给由该条目的线程标识符字段标识的线程。如果链表头部不为空,且确认抑制字段 被置位,则不发送ACK—MSG。
信号量确认消息(ACK一MSG)由信号量实体生成,以通知线程获取了所请求 的信号量。在一个实施例中,ACK一MSG包括信号量标识符字段和线程标识符字段。 ACK—MSG仅由信号量实体发出,且由执行线程标识符字段中所标识的线程的处理 核心接收。
在接收到ACK一MSG之后,接收处理核心复位由线程标识符字段标识的线程 的等待信号量状态字段。如果线程处于非活动状态,则线程状态改为活动状态。
信号量指令
获取信号量(ACS)指令使得ACQJV1SG消息被发送到具有所请求的信号量 的信号量标识符、请求线程的线程标识符且复位自动释放字段的信号量实体。线程 被置于置位等待信号量字段状态的非活动状态。ACS指令与(跟随其后的)释放
信号量(RLS)指令(下文描述)成对。ACS-RLS指令对例如可用于临界段应用。 获取具有启动释放的信号量(ASR)指令使得ACQ一MSG被发送给具有所请 求的信号量的信号量标识符、请求线程的线程标识符并置位自动释放字段的t^号量 实体。-该线程被置于置〗立等待信号量状态字段的非活动状态中。在一个实施例中, ASR指令不能与RLS指令成对。在一个实施例中,ASR指令可用于仅有头部从属 关系的线程。
等待信号量(WTS)指令使得检査等待信号量线程状态字段。如果该状态字 段被置位,则该线程被置于非活动状态。如果状态字段未被置位,则该线程保留在 活动状态中。不响应于WTS指令向信号量实体发送任何消息。对WTS指令的使 用意味着先前在线程分派时刻由线程分派器使用ACQ—MSG代表线程获取信号量。 如果在先前由线程分派器发出的ACQ_MSG中置位确认抑制字段,则不使用WTS 指令。 -
释放信号量(RSL)指令使得向具有正被释放的信号量的信号量标识符以及释 放线程的线程标识符的信号量实体发送REL—MSG。释放线程保留在活动状态中。 如果先前对释放线程发出了 ACS指令,则仅发出一个RLS指令。如果先前对释放 线程发出了ASR指令,则不发出RLS指令。如果对释放线程发出了 WTS指令, 则WTS指令后可以跟随或不跟随RLS指令,取决于由线程分派器发送的 ACQ一MSG的自动释放字段。如果自动释放字段复位,则不应发出RLS指令。如 果置位了自动释放字段,则RLS指令应当跟随WTS指令。
主动信号量的示例获取
由于指令线程是由处理核心执行的,因此当资源可用时执行指令。当需要具 有信号量的资源,例如共享存储器位置时,可能需要对该信号量的拥有权来访问该 资源。由此,在需要信号量之前,对指令线程的执行是以本领域中的任何己知方式 来实现的,。
在一个实施例中,当需要信号量时,执行获取信号量(ACS)指^N ACS指 令可由执行请求该信号量的指令线程的处理核心来执行。作为ACS指令执行的一 部分或响应于此指令的执行,由执行该线程的处理核心通过消息总线向信号量实体 发送获取信号量消息(ACQ—MSG)。用于ACQ_MSG的一种格式如上所述。也 可使用其它格式。
作为ACS指令执行的一部分或响应于此指令的执行,请求信号量的线程被置
于置位等待信号量状态字段的非活动状态。通过将线程置于非活动状态,不执行线 程中的指令,这包括万一信号量请求被拒绝,则轮询所请求的信号量。通过将线程 置于非活动状态,等待信号量的线程不消耗处理器资源和系统带宽。对于支持多线
程的处理核心,处理器资源和系统带宽可由其它活动线程使用。
信号量实体接收ACQ—MSG,并将请求者信息条目置于目标信号量的链表中。
如果信号量不被另一线程拥有或控制,则信号量条目被置于信号量链表的头部,因 为没有其它条目。如果信号量被另一线程拥有或控制,则信号量实体被置于信号量 链表的尾部。在一个实施例中,链表的尾部是通过从头条目开始到尾条目遍历缓冲 池中的链表条目来标识的,且新条目成为新尾条目。在另一实施例中,链表的尾部 直接由储存在信号量表中的链表的尾指针来标识。
当线程完成了对对应于信号量的资源的使用时,持有该信号量的线程释放对 该信号量的控制,这将在下文中详细描述。当释放信号量时,移除信号量链表头部 处对应的信号量,且链表中的下一信号量条目成为链表头部。
当信号量条目成为信号量链表头部时,其状态字段由信号量实体检査。如果 复位确认抑制字段,则从信号量实体向与该信号量条目相关联的线程发送确认消息
(ACK—MSG) 。 ACK一MSG的一种格式在下文中描述。也可使用其它格式。 ACK—MSG向接收实体(例如,线程)指示已向接收实体授予对对应的信号量的控 制。
响应于ACK—MSG,激活对应的线程。当被激活时,重新开始对线程中的指 令的处理,且可访问对应于该信号量的共享资源。当线程完成对共享资源的访问时, 释放该信号量,这将在下文中详细描述。
主动信号量的示例释放
在一个实施例中,当执行释放信号量(RLS)指令时,释放信号量。RLS指 令可由执行请求该信号量的指令线程的处理核心来执行。作为RLS指令执行的一 部分或响应于此指令的执行,向信号量实体发送释放信号量消息(REL_MSG)。 REL—MSG的一种格式如上所述。也可使用其它格式。
响应于REL—MSG,信号量实体将REL—MSG的线程标识符字段与信号量链表 进行匹配。信号量实体检查对应的信号量条目是否在链表的头部。如果对应的信号 量条目在链表的头部,则信号量实体从链表头部移除该线程条目。链表中的后一条 目成为头条目。然后可将信号量授予对应于新头条目的线程。如果对应的信号量条
目不在f连表的头部,则信号量实体置位该信号量条目的释放状态字段。 行为模型
基于所使用的链表的结构,信号量可被分类为联合信号量或有序信号量。基
于从信号量实体进行的ACK_MSG的发送,信号量可被分类为主动信号量或抢先
信号量。由此,可支持四种类型的信号量。 联合信号量的一个实施例的综述
联合信号量允许并发线程以任何顺序访问信号量。在一个实施例中,信号量 由线程分派器在与空链表的会话开始处(或指示空链表的单个位)初始化。不从线 程分配器向信号量实体发送任何其它消息。信号量链表是由执行多个指令线程的执 行电路在运行中构建的。
在一个实施例中,线程通过执行ACS或ASR指令作出对联合信号量的请求。 线程通过执行RLS指令释放联合信号量。在一个实施例中,新ACQ—MSG将导致 对应于请求线程的条目被置于信号量链表的尾部。这提供了先到先服务(FSFS)
信S量模型。
有序信号量的一个实施例的综述
有序信号量允许并发线程以预定顺序访问信号量。该顺序是由线程分配器在 分派时预定的。顺序可以是从属于应用程序的。当线程分派本质上是顺次时,线程 分派器可代表每一分派的线程向信号量实体发送ACQ_MSG消息以依照该顺序来 构建信号量链表。
进入临界段的线程可使用WTS指令来等待信号量的拥有权。当线程已被置于 信号量链表中时,不使用ACS和ASR指令。在一个实施例中,信号量实体可依照 链表顺序提供对信号量的控制。在信号量上等待的线程将按照链表顺序接收 ACQ—MSG 。
主动信号量的一个实施例的综述
如上所述,对于主动信号量,ACQ_MSG用于使得线程从非活动状态转移到 活动状态。信号量实体从执行线程的执行电路接收一个或多个ACQ—MSG。信号量 实体仅向对应于信号量链表头部处的线程的执行电路发送ACK一MSG。在移除信号
量链表的头部之后,信号量实体检查链表的新头部的状态,并可向对应于信号量链
表的新头部的线程的执行电路发送后续的ACK—MSG。活动信号量也可以是联合信
抢先信号量的一个实施例^r综述
抢先信号量向信号量链表的头部处的线程发送一个且仅一个ACK—MSG,而 无论该线程是否处于非活动状态。这适用于使用具有先前由线程分配器发送了 ACQ一MSG的有序信号量的线程,使得仅一个ACK—MSG被发送到线程。使用有 序信号量的线程可包含WTS和/或RLS指令。
对于抢先信号量,ACK一MSG由信号量实体自动发送给信号量链表的头部处 的线程。在一个实施例中,存在"风险条件"的可能性,如果来自线程的条目的定 时由线程分派器以及该线程对执行电路可见的时间入队到信号量链表中,则该"风 险条件"可能存在。由于两个动作都是由线程分派器启动的,但是是通过不同的数 据路径发生的,因此必须考虑这些事件的定时。
如果线程执行在信号量配置之前开始,则如果线程中有WTS指令,则没有风 险条件。由于等待信号量线程状态变量是由线程分派器设置的,因此即使在线程被 入队到信号量链表之前到达了线程的WTS指令,也不会发生风险条件。WTS指令 使得线程进入非活动状态,而不向信号量实体发送消息。当信号量实体向线程发送 ACK—MSG时,执行电路使得线程再次变为活动。
如果信号量由线程分配器配置为置位确认抑制字段,则会导致风险条件。在 这一情况下,线程将不被置于非活动状态中。相反,如果在为线程配置信号量之前 线程到达RLS指令且向信号量实体发送了 REL_MSG,则信号量实体可能不处于 处理REL_MSG的条件中。为避免这一风险条件,线程执行和信号量实体可确保 REL—MSG不传送由线程分派器发出的ACQ_MSG。
由此,在一个实施例中,为避免风险条件,如果复位确认抑制,则线程分派 器在完成信号量配置之前完成线程配置。如果置位确认抑制字段,线程分派器在完 成线程配置之前完成信号量配置。由于线程分派器串行地分派准备好的线程,因此 顺次操作可确保必要的排序。
当在信号量配置之前完成线程配置时,线程分派器可分派线程,并等待指示 在发送引起信号量配置的消息之前要完成线程配置的信号。当在线程配置之前完成 信号量配置时,线程分派器可发送启动信号量配置的消息,并等待指示在分派线程 之前要完成信号量配置的信号。由于串行配置会不必要地限制来自分派器的吞吐 量,因此可将配置操作管线化。
图2是线程分派和信号量初始化操作的协调的一个实施例的》充程图-。在一个 实施例中,线程分派器确定是否对要发送的信号量消息置位确认抑制字段(210)。 在替换实施例中,其它系统组件可确定是否置位了或将要置位确认抑制字段。
如果置位了确认抑制字段(210),则线程分派器向信号量实体发送信号量请 求消息(例如,ACQ—MSG) (220)。信号量实体处理该请求消息,并在处理了 请求消息之后(例如,对请求线程将链表条目入队)向线程分派器发送"信号量配 置完成"信号。"信号量配置完成"信号可釆用任何形式,例如单行可用于发送一 位信号,或者可通过消息总线发送消息。
线程分派器等待来自信号量实体的"信号量配置完成"信号(230)。在等待 "信号量配置完成"信号时,线程分派器可例如分派其它线程或执行不引起分配线 程的操作。在接收到"信号量配置完成"消息之后,线程分派器向执行电路分派线 程(240)。线程然后由执行电路执行(250)。
如果复位确认抑制字段(210),则线程分派器向执行电路分派线程(215)。 在向执行电路分派了线程之后,线程分派器等待来自执行电路的"线程配置完成" 信号(225)。在一个实施例中,当执行电路被设置成开始线程的执行时,执行电 路向线程分派器发送"线程配置完成"信号。"线程配置完成"信号可采用任何形 式,例如,单行可用于发送一位信号,或者可通过消息总线发送消息。然后由执行 电路执行线程(250)。
当等待"线程配置完成"信号时,线程分派器可例如分派其它线程或执行不 引起发送信号量请求消息的操作。在接收到"线程配置完成"消息之后,线程分派 器向信号量实体发送信号量请求消息235。这可在开始了线程执行之后发生,或与 线程执行的开始同时发生。
— 图2的示例提供了具有抢先信号量的线程执行和信号量配置的协调的顺次示 例。如上所述,关于图2所描述的操作也可以用管线化的方式来执行。
线程同步
图3a-3d是其中信号量可用于同步线程执行的从属关系的概念图示。图3a示 出了 1:1:1-(一对一)从属关系。图3a的从属关系可以是强顺次顺序从属关系或联 合从属关系。对于强顺次顺序从属关系,可使用单个抢先的有序信号量。在一个实
施例中,在从线程分派器发送到信号量实体来请求信号量的ACQ一MSG中,确认 抑制字段和自动释放字段都被复位。指令线程包括获得和释放信号量的WTS-RLS 指令对。
对于联合从属关系,可使用单个主动的联合信号量。在一个实施例中,在从 执行线程的执行电路发送到信号量实体以请求信号量的ACQ—MSG中-,确认抑制 字段和自动释放字段都被复位。指令线程包括获得和释放信号量的ACS-RLS对。
图3b示出了 1:N (—对多)从属关系,其中一个线程具有对N个其它线程的 头从属关系,其中N个其它线程不彼此从属。此处,N是正整数,它可以是l或 大于l。对于1:N从属关系,可使用单个抢先的有序信号量。在一个实施例中,对 于N个独立的线程,由线程分派器代表N个线程发送ACQ_MSG。在从线程分派 器发送到信号量实体以请求信号量的ACQ—MSG中,置位确认抑制字段,但复位 自动释放字段。对于对其它N个线程具有头从属关系的单个线程,也由线程分派 器发送ACQ—MSG。在请求信号量的ACQ_MSG中,复位确认抑制字段,并置位 自动释放字段。N个指令线程仅包括释放信号量的一个RLS指令。单个指令线程 包括获得和释放信号量的WTS-RLS指令对。
图3c示出了N:l (多对一)从属关系,其中N个线程对单个线程具有头从属 关系,但是这N个线程不彼此从属。对于N:1从属关系,可使用单个抢先的有序 信号量。在一个实施例中,线程分派器负责代表N个从属的线程和一个被从属的 线程发送ACQ—MSG。在一个实施例中,对于单个被从属的线程,在请求信号量的 ACQ—MSG中,置位确认抑制字段,并复位自动释放字段。对于N个从属的线程, 在请求信号量的ACQ一MSG中,复位确认抑制字段,并置位自动释放字段。单个 被从属的指令线程仅包括释放信号量的一个RLS指令。N个从属的指令线程包括 获得和释放信号量的WTS-RLS指令对。
图3d示出了N:M (多对多)从属关系,其中N个从属的线程对M个被从属 的4戋程有头从属关系。在这一情况下,N个从属的线程不彼此从属,且M个被从 属的线程不彼此从属。N:M从属关系情况与上述1:1:1、 1:N和N:l情况相比是更 一般的情况。对于N:M从属关系,可使用单个抢先的有序信号量。在一个实施例 中,线程分派器负责代表N个从属的线程和M个被从属的线程发送ACQ_MSG。 在一个实施例中,对于M个被从属的线程,在请求信号量的ACQ—MSG中,置位 确认抑制字段,并复位自动释放字段。对于N个从属的线程,在请求信号量的 ACQ_MSG中,复位确认抑制字段,并置位自动释放字段。M个被从属的指令线
程仅包括释放信号量的一个RLS指令。N个从属的指令线程包括获得和释放信号
量的WTS-RLS指令对。
图3a-3d的从属关系可用于支持更复杂的从属关系。例如,对于N:1:N从属关 系,可使用两个抢先的有序信号量。N:l从属关系线程如上对于图3c所描述的那 样处理,而1:N从属关系如上对于图3b所描述的那样处理。
结论
说明书中对于"一个实施例"或"实施例"的引用意味着此处关于该实施例 所描述的具体特征、结构或特性被包括在本发明的至少一个实施例中。短语"在一 个实施例中"在说明书各处的出现不必都引用同一实施例。
在以上说明书中,参考其具体实施例描述了本发明。然而,很明显,可对本 发明进行各种修改和改变而不脱离本发明的较宽泛精神和范围。因此,说明书和附 图在说明性而非限制性的意义上考虑。
权利要求
1.一种方法,包括确定对应于一信号量的变量的状态;如果所述变量处于第一状态,则在分派指令线程用于执行之前,为所述指令线程生成一信号量条目;以及如果所述变量处于第二状态,则在为指令线程生成信号量条目之前,分派所述指令线程用于执行。
2. 如权利要求1所述的方法,其特征在于,还包括如果所述变量处于第三状 态,则分派所述指令线程用于执行,并在所述线程执行期间为所述线程生成信号量 条目。
3. 如权利要求l所述的方法,其特征在于,所述对应于信号量的变量指示信 号量实体是否自动向对应于所述指令线程的执行电路发送指示对所述信号量的控 制的消息。
4. 如权利要求l所述的方法,其特征在于,如果所述变量处于第一状态,则 在分派指令线程之前为所述指令线程生成信号量条目包括向信号量实体发送请求由所述指令线程对所述信号量的控制的消息;以及 响应于接收指示所述信号量实体已处理了所述消息的信号,向执行电路分派 所述指令线程。
5. 如权利要求4所述的方法,其特征在于,所述向信号量实体发送消息并分派指令线程被管线化。
6. 如权利要求4所述的方法,其特征在于,所述消息包括信号量标识符字段、 线程标识符字段以及对应于所述变量的字段。
7. 如权利要求1所述的方法,其特征在于,如果所述变量处于第二状态,则在为指令线程生成信号量条目之前分派所述指令线程用于执行包括向执行电路分派所述指令线程;以及响应于指示已开始对所述指令线程的执行的信号,向信号量实体发送请求由 所述指令线程对所述信号量的控制的消息。
8. 如权利要求7所述的方法,其特征在于,所述向信号量实体分派指令线程 并发送消息被管线化。
9. 如权利要求7所述的方法,其特征在于,所述消息包括信号量标识符字段、 线程标识符字段以及对应于所述变量的字段,
10. 如权利要求2所述的方法,其特征在于,如果所述变量处于第三状态,则分派所述指令线程用于执行并在所述线程执行期间为所述线程生成信号量条目包括向执行电路分派所述指令线程;以及响应于一组指令的执行,向信号量实体发送请求由所述指令线程对所述信号 量的控制的消息。
11. 如权利要求10所述的方法,其特征在于,所述一组指令包括获取信号量指令。
12. 如权利要求10所述的方法,其特征在于,所述一组指令包括带自动释放 的获取信号量指令。
13. —种设备,包括用于确定对应于信号量的变量的状态的装置;用于如果所述变量处于第一状态,则在分派指令线程用于执行之前,为所述 指令线程生成信号量条目的装置;以及用于如果所述变量处于第二状态,则在为指令线程生成信号量条目之前分派 所述指令线程用于执行的装置;以及如果所述变量处于第三状态,则分派所述指令线程用于执行,且在所述线程 执行期间为所述线程生成信号量条目。
14. 如权利要求13所述的设备,其特征在于,还包括用于如果所述变量处于 第三状态,则分派所述指令线程用于执行,且在所述线程执行期间为所述线程生成 信号量条目的装置。
15.如权利要求13所述的设备,其特征在于,用于如果所述变量处于第一状 态,则在分派指令线程之前为所述指令线程生成信号量条目的装置还包括用于向信号量实体发送请求由所述指令线程对所述信号量的控制的消息的装 置;以及用于响应于接收到指示所述信号量实体已处理所述消息的信号向执行电路分 派所述指令线程的装置。
16.如权利要求B所述的设备,其特征在于,用于如果所述变量处于第二状 态,则在为指令线程生成信号量条目之前分派所述指令线程用于执行的装置还包括用于向执行电路分派所述指令线程的装置;以及用于响应于指示对所述指令线程的执行已经开始的信号向信号量实体发送请 求虫所述指令线程对所述信号量的控制的消息的装置。
17. 如权利要求14所述的设备,其特征在于,用于如果所述变量处于第三状 态,则分派所述指令线程用于执行,并在所述线程执行期间为所述线程生成信号量 条目的装置包括用于向执行电路分派指令线程的装置;以及用于响应于一组指令的执行向信号量实体发送请求由所述指令线程对所述信 号量的控制的消息的装置。
18. —种设备,包括信号量实体,用于维护信号量的条目,所述条目指示请求对所述信号量的控 制的一个或多个指令线程;执行电路,用于执行一个或多个指令线程;以及与所述信号量实体和执行电路耦合的线程分派器,所述线程分派器用于确定 对应于所述信号量的变量的状态;如果所述变量处于第一状态,则在向执行电路分 派指令线程用于执行之前向所述信号量实体生成导致为所述指令线程生成信号量 条目的消息;以及如果所述变量处于第二状态,则在向所述信号量实体生成导致为 指令线程生成信号量条目的消息之前向所述执行电路分派所述指令线程用于执行。
19. 如权利要求18所述的设备,其特征在于,所述线程分派器还用于如果所 述变量处于第三状态,则分派指令线程用于执行而不为所述线程生成信号量条目。
20. 如权利要求18所述的设备,其特征在于,所述信号量实体维持一个或多 个信号量。
21. 如权利要求18所述的设备,其特征在于,所述消息包括信号量标识符字 段、线程标识符字段、以及对应于所述变量的字段。
22. 如权利要求18所述的设备,其特征在于,所述对应于信号量的变量指示 信号量实体是否自动向对应于所述指令线程的执行电路发送指示对所述信号量的 控制的消息。
23. 如权利要求18所述的设备,其特征在于,如果所述变量处于第一状态, 则在向所述执行电路分派指令线程用于执行之前向所述信号量实体生成导致为所 述指令线程生成信号量条目的消息包括向信号量实体发送请求由所述指令线程对所述信号量的控制的消息,以及响应于接收指示所述信号量实体已处理了所述消息 的信号向所述执行电路分派所述指令线程。
24. 如权利要求23所述的设备,其特征在于,所述向信号量实体发送消息以及分派所述指令线程的操作被管线化。
25. 如权利要求18所述的设备,其特征在于,如果所述变量处于第二状态, 则在向所述信号量实体生成导致为指令线程生成信号量条目的消息之前向所述执 行电路分派所述指令线程用于执行还包括响应于指示所述指令线程的执行已开始 的信号,向执行电路分派所述指令线程,并向信号量实体发送请求由所述指令线程 对所述信号量的控制的消息。
26. 如权利要求25所述的设备,其特征在于,所述向信号量实体发送消息以 及分派指令线程的操作被管道化。
27. 如权利要求19所述的设备,其特征在于,所述执行电路响应于一组指令 的执行向信号量实体生成请求由所述指令线程对所述信号量的控制的消息。
28. —种系统,包括 存储器控制器;维持信号量的条目的信号量实体,所述条目指示请求对所述信号量的控制的 一个或多个指令线程;执行一个或多个指令线程的执行电路;以及与所述信号量实体、所述执行电路以及所述存储器控制器耦合的线程分派器, 用于确定对应于所述信号量的变量的状态;如果所述变量处于第一状态,则在向所 述执行电路分派指令线程用于执行之前向所述信号量实体生成导致为所述指令线 程生成信号量条目的消息;如果所述变量处于第二状态,则在向所述信号量实体生 成导致为所述指令线程生成信号量条目的消息之前向所述执行电路分派所述指令 线程用于执行;以及如果所述变量处于第三状态,则分派所述指令线程用于执行而 不为所述线程生成信号量条目。
29. 如权利要求28所述的系统,其特征在于,所述线程分派器还用于如果所 述变量处于第三状态,则分派所述指令线程用于执行而不为所述线程生成信号量条 目。
30. 如权利要求28所述的系统,其特征在于,所述消息包括信号量标识符字 段、线程标识符字段、以及对应于所述变量的字段。
31. 如权利要求28所述的系统,其特征在于,所述对应于信号量的变量指示信号量实体是否自动向对应于所述指令线程的执行电路发送指示对所述信号量的 控制的消息。
32.如权利要求28所述的系统,其特征在于,如果所述变量处于第一状态,则在向所述执行电路分派指令线程用—于执行之前向信号量实体生成导致为所述指 令线程生成信号量条目的消息包括响应于接收指示所述信号量实体已处理了所述 消息的信号,向信号量实体发送请求由所述指令线程对所述信号量的控制的消息, 并向所述执行电路分派所述指令线程。
33. 如权利要求28所述的系统,其特征在于,如果所述变量处于第二状态, 则在向所述信号量实体生成导致为所述指令线程生成信号量条目的消息之前向所 述执行电路分派所述指令线程用于执行包括响应于指示所述指令线程的执行已开 始的信号向信号量实体发送请求由所述指令线程对所述信号量的控制的消息。
34. 如权利要求28所述的系统,其特征在于,所述向信号量实体发送消息以 及分派指令线程的操作被管线化。
全文摘要
多个并行的被动指令线程使用“主动”和“抢先”信号量协调对共享资源的访问。主动信号量向执行和/或控制电路发送使得线程状态改变的消息、线程可由线程调度器响应于未决的从属关系而置于非活动状态,这可由一信号量来指示。对应于从属关系的线程状态变量用于指示该线程处于非活动模式。当解决了该从属关系时,向控制电路传送导致清除从属关系变量的消息。响应于清除从属关系的变量,线程被置于活动状态。执行可在活动状态中的线程上进行。抢先信号量以类似的方式操作,不同之处在于信号量是由线程分派器在线程被分派到执行电路用于执行之前或之后配置的。
文档编号G06F9/46GK101189579SQ200480039052
公开日2008年5月28日 申请日期2004年12月23日 优先权日2003年12月31日
发明者T·A·皮亚扎, 宏 江 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1