当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于串行互斥体的方法与装置制造方法及图纸

技术编号:2870862 阅读:182 留言:0更新日期:2012-04-11 18:40
一种方法,其特征在于包括:    将互斥锁与共享数据项相关联;及    向按顺序对共享数据相执行代码操作的多个处理代理提供互斥锁的所有权。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

技术介绍
许多应用程序采用共享公用存储器中的数据或使用公用存储器进行通讯的多个执行线程,为保证数据的一致性,应用程序需要采用一定类型的机制。有一种机制提供互斥,就是说,它使用“互斥锁”来确保只有一个执行线程能够进入临界区在其中对共享数据进行操作。如果两个以上的执行线程共享一个数据区的话,多个线程可能试图同时获得互斥锁的所有权,在这种情况下,线程获得互斥锁所有权的顺序无法保证。当一个或多个处理器上的多线程共享数据时,使用互斥锁(mutal exclusionlock)(“互斥体”)来一次只向一个线程提供共享数据的所有权。互斥体(mutex)的使用使得持有互斥体的线程在维护记录内一致性的同时,对共享记录的内容进行一次或多次修改,或者是一次读-改-写操作对记录内容进行更新。一般而言,互斥体被实现为存储器中的一个存储单元(a location inmemory),它被用来既表示试图占有也表示已经拥有另一个被互斥体保护的区域的所有权。有许多技术,使用软件的或软件与硬件相结合的,来实现获得(进入)和释放(退出)互斥体的动作。进入共享数据在其中被修改的代码关键区域的线程之前被加上mutex_enter()操作,之后被加上mutex_exit()操作。实现mutex_enter()和mutex_exit()操作的技术是人们所熟知的。在一些应用中,由于串行化方式的限制,使用这种竞争性互斥锁来控制对共享数据的存取是不充分的。因此,还需使用其它实施排序的技术。例如,在一些网络化应用程序中,顺序是通过要求所有的在特定的一对端点间传输的信元或数据包被同一个进程或线程来处理来维护的,或通过使用硬件流水线操作来维护。前者将任意一对端点间的吞吐量限制在单线程的性能内,因而,并行性只能在不相关的端点的流量中取得,当严格的顺序被维护在任意的点到点之间。后者能取得较高的吞吐量,但在灵活性和性能上受到限制,比如要将任务分割成多少个固定的流水线阶段,以及阶段间的通讯的简化程度。还有些网络应用程序通过使用与每个信元或数据包相关联的序号来维护次序,但有些网络协议不支持序号的使用。 附图说明图1是一种通讯系统框图,它使用一个拥有多线程微引擎的处理器来支持多线程的执行。图2是处理器高层处理流程的描述。图3是处理器接收单元的方框图。图4是一种范例性的接收数据路径的描述。图5是图1的处理器中的线程使用的一种串行互斥体(s-mutex)机制的概念上的描述。图6是协作线程使用串行化互斥锁来存取共享数据项的代码的例子。图7是协作线程使用串行化互斥锁存取共享数据项的串行化方式的说明。图8是串行互斥锁的串行化所有权传递方面的一个范例性“令牌传递”实现的说明。图9是串行互斥锁所有权传递机制的一个可供选择的方法。图10是一种说明使用四个串行互斥锁的范例性流程图。详细说明参考图1,通讯系统10包括处理器12,其连接到一个或多个输入/输出装置,例如网络装置14和16,以及存储器系统18。处理器12是多线程处理器,因而对能分解为并行子任务或功能的任务尤其有用。如图所示的一个实施例中,处理器12包括多个微引擎20,每个带有多个能在一个任务中同时激活并独立工作的由硬件控制的程序线程22。每个微引擎20与临近的微引擎相连接并能与之通讯。处理器12还包括通用处理器(GPP)24,它帮助装载用于微引擎20的微代码控制,并且完成其它诸如处理协议和异常的通用计算机类型的功能,它还为微引擎无法处理的高层处理任务提供支持。通用处理器24有操作系统,通过它通用处理器能调用功能在微引擎20上进行操作。通用处理器24能使用任何被支持的操作系统,最好是实时操作系统。微引擎20分别以共享资源操作,包括存储器系统18、总线接口26′、一个和多个媒体块26和28。总线接口26′为外部总线30,例如PCI总线,提供接口。媒体块26、28分别控制和把处理器12接口到网络装置14、16。存储器系统18包括使用DRAM控制器36存取的动态随机存取存储器(DRAM)34、使用SRAM控制器40存取的静态随机存储器(SRAM)38。存储器系统18还包括诸如PROM之类的非易失性存储器42和相应的接口44,以支持引导操作。DRAM 34和DRAM控制器36通常用于存储大容量数据,例如网络数据包的有效载荷。DRAM控制器36包括用于存取位于DRAM 34中缓冲存储器46的DRAM接口45。缓冲存储器保存数据包的数据,有效载荷或完整的数据包。SRAM 38和SRAM控制器40用在低延时、快速存取任务的网络实现中,例如,存取查找表、处理器24使用的时间紧急的数据和指令,等等。SRAM 38保存DRAM缓冲区的自由链表(缓冲存储器46中可用的缓冲区的指针列表)48、描述符50、描述符自由链表52和传递信息用的通信环54,例如在处理器资源如微引擎线程22、GPP 24和媒体块之间传递描述符指针。SRAM控制器40包括用于存取存储在SRAM 38中的数据的SRAM接口56,还包括支持DRAM缓冲区分配的用于申请资源的控制逻辑50,该DRAM缓冲区由自由链表48表示。SRAM控制器40还包括环转换单元60,它和环预取器62一起被资源用来存取环54。微引擎20和通用处理器24能执行到DRAM控制器36或SRAM控制器40的内存访问指令(memory reference instructions)。装置14和16可以是可发送和/或接收网络流量数据的任何网络装置,如成帧/媒体存取控制装置,例如,用于连接到10/100BaseT以太网、千兆以太网、ATM或其它类型网络的装置,或连接到交换结构的装置。因此,媒体块26、28支持一种或一种以上的接口,例如用于在PHY装置与更高协议层(例如链路层)之间包和信元传送的接口,或在流量管理和异步传输模式(ATM)、网际协议(IP)、以太网和类似的数据通讯应用的交换结构之间的接口。媒体块26、28分别包括一个分离的接收(RX)单元64和发送(TX)单元66,分别可配置为特定的处理器12所支持的接口。处理器12也为其它装置提供服务,诸如可连接到由总线接口26′控制的总线30上的主机和/或总线外设(未示出),或者可连接到由协处理器接口70控制的协处理器总线68上的协处理器(亦未示出)。一般的,作为网络处理器,处理器12能和任何类型的接收/发送大量数据的通讯装置或接口相连接。如将被描述的,起到网络处理器作用的处理器12能接收从像网络装置14那样的网络装置来的数据包单元,并以并行的方式处理这些数据包单元。数据包单元可能包括完整的网络数据包(例如,以太网数据包)或这种数据包的一部分,例如信元或数据包片断。处理器12的每个功能单元20、24、26′、36、40、44和70连接到第一总线结构72。功能单元20、26、28、36、40连接到第二总线结构74。存储器总线78、80分别将存储器控制器36和40连接到存储器系统18的各个存储器单元DRAM 34和SRAM 38。存储器总线82将PROM接口44连接到存储器系统18的PROM 42。媒体块26、28通过分离的输入/输出总线84a和84b分别将它们连接到各自的网络装置14和16。尽管没有详细显示出来,但每个微引擎20包括写发送寄存器文件和读发送寄存器文本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:L·B·休斯顿C·E·那拉德
申请(专利权)人:英特尔公司
类型:发明
国别省市:

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

1