CN100422940C - 在数据处理系统中仲裁线程访问共享资源的系统和方法 - Google Patents
在数据处理系统中仲裁线程访问共享资源的系统和方法 Download PDFInfo
- Publication number
- CN100422940C CN100422940C CNB2006101429804A CN200610142980A CN100422940C CN 100422940 C CN100422940 C CN 100422940C CN B2006101429804 A CNB2006101429804 A CN B2006101429804A CN 200610142980 A CN200610142980 A CN 200610142980A CN 100422940 C CN100422940 C CN 100422940C
- Authority
- CN
- China
- Prior art keywords
- thread
- processing unit
- response
- threads
- shared resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims abstract description 87
- 238000000034 method Methods 0.000 title claims description 38
- 230000004044 response Effects 0.000 claims abstract description 37
- 230000005059 dormancy Effects 0.000 claims 3
- 230000008569 process Effects 0.000 description 19
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000012163 sequencing technique Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 101100015675 Mus musculus Gpr15 gene Proteins 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
在数据处理系统中仲裁线程访问共享资源的系统和方法。对第一组线程进行监控,该组线程代表将被一组处理单元中的至少一个处理单元执行的一组任务。响应于检测出由第一组线程中的一个线程发出的、用于访问被该组线程中的第二线程锁定的共享资源的请求,该第一线程尝试访问与该共享资源相关联的列表。该列表通过共享资源的访问优先级,对该组线程中的至少一个线程进行排序。响应于确定出列表被该组线程中的第三线程锁定,将该第一线程置于在固定时间段之后被重新唤醒的休眠状态。响应于确定出该组处理单元中的至少一个已进入空闲状态,在固定时间段期满之前将第一线程从休眠状态唤醒。另外,响应于将第一线程从休眠状态唤醒,将第一线程分配给该组处理单元中的至少一个,并且第一线程重试对于访问该列表的尝试。
Description
技术领域
本发明总体上涉及数据处理系统领域。具体地,本发明涉及在数据处理系统中共享资源的领域。
背景技术
如今数据处理系统的最大挑战之一是对共享资源的有效同步和仲裁。现代数据处理系统一般包括多个频繁地共享资源的处理单元,诸如系统存储器和高速缓存。
一般,利用多处理器结构的程序被称为“并行程序”。“任务”是由并行程序执行的、任意定义的一件工作。“进程”(在此与“线程”可替换使用)是执行任务的抽象实体。并行程序包括有多个执行该程序中的任务的协同进程。通过以软件、硬件或其组合实现的某种分配机制来将任务分配给进程或线程。其中进程执行分配给它们的任务的方法是自始至终通过物理处理单元来执行的。在数据处理系统中进程可能需要彼此同步以执行分配给它们的任务并共享资源(诸如存储器)。
共享资源具有的问题是通常第一线程可能需要存储在如下存储器位置中的数据,该存储器位置被系统中的第二线程锁定。正如在现有技术中所熟知的,在这样的情形下,第一线程将会连续尝试访问被锁定的存储器位置直到成功。然而,对不可访问的存储器位置的连续重试访问浪费了处理单元资源,而该资源本可通过执行有用的工作而被更好地利用。因此,有必要对现代数据处理系统中的这种状况的处理进行改进,其中在这些状况期间由于共享资源的暂时不可用而导致处理单元不能够继续进行有用工作。
发明内容
本发明包括一种在数据处理系统中对共享资源的访问进行仲裁的系统和方法。对第一组线程进行监控,该第一组线程代表将被一组处理单元中的至少一个处理单元执行的一组任务。响应于检测出由第一组线程中的一个线程发出的、用于访问被该组线程中的第二线程锁定的共享资源的请求,该第一线程尝试访问与该共享资源相关联的列表。该列表通过共享资源的访问优先级,对该组线程中的至少一个线程进行排序。响应于确定出列表被该组线程中的第三线程锁定,将该第一线程置于要在固定时间段之后被重新唤醒的休眠状态。响应于确定出该组处理单元中的至少一个已进入空闲状态,在固定时间段期满之前将第一线程从休眠状态唤醒。另外,响应于将第一线程从休眠状态唤醒,将第一线程分配给该组处理单元中的至少一个,并且第一线程重试其对于访问列表的尝试。
为了实现本发明,提供了一种方法,包括:对多个线程进行监控,所述线程代表了将被多个处理单元中的至少一个处理单元执行的多个任务;响应于检测到由所述多个线程中的第一线程发出的、用于访问被所述多个线程中的第二线程锁定的共享资源的请求,尝试访问与所述共享资源相关联的列表,其中所述列表根据对所述共享资源的访问优先级对所述多个线程中的至少一个线程进行排序;响应于确定出所述列表被所述多个线程中的第三线程锁定,将所述第一线程置于休眠状态;响应于确定出所述多个处理单元中的至少一个已进入空闲状态,将所述第一线程从休眠状态唤醒;并且响应于所述的将所述第一线程从所述休眠状态唤醒,将所述第一线程分配给所述多个处理单元中的所述至少一个,并且重试所述尝试访问与所述共享资源相关联的列表。
为了实现本发明,提供了一种数据处理系统,包括:多个处理单元,执行代表多个任务的多个线程;共享资源,被耦合到所述多个处理单元;以及列表单元,与所述共享资源相关联,用于根据对所述共享资源的访问优先级对所述多个线程中的至少一个线程进行排序;其中,所述多个处理单元中的每一个处理单元包括:对多个线程进行监控的装置,这些线程代表将被多个处理单元中的至少一个处理单元执行的多个任务;响应于检测到由所述多个线程中的第一线程发出的、用于访问被所述多个线程中的第二线程锁定的共享资源的请求,尝试访问与所述共享资源相关联的列表单元的装置;响应于确定出所述列表单元被所述多个线程中的第三线程锁定,将第一线程置于休眠状态的装置;响应于确定出所述多个处理单元中的至少一个已进入空闲状态,将所述第一线程从休眠状态唤醒的装置;以及响应于所述的将所述第一线程从所述休眠状态唤醒,将所述第一线程分配给所述多个处理单元中的所述至少一个,并且重试所述尝试访问与所述共享资源相关联的列表单元的装置。
本发明的上述特征,以及另外的目的、特征以及优点将通过以下的详细说明而变得明了。
附图说明
在所附权利要求中阐述本发明的新颖性特征。而在结合附图阅读以下对例示性实施例的详细说明时,本发明本身、及其使用的优选方式、进一步的目的和优点将被最好地理解,其中:
图1是例示了可以实现本发明优选实施例的示例性数据处理系统的方框图;
图2是示出了可以实现本发明优选实施例的示例性数据处理单元的方框图;
图3是例示了根据本发明优选实施例的对由多线程访问共享资源进行处理的示例性方法的高级逻辑流程图;
图4A是图1的示例性数据处理系统100的简化框图,其示出了根据本发明的优选实施例、一对线程竞争事务锁;
图4B是图1的示例性数据处理系统100的简化框图,其例示了根据本发明的优选实施例、一对线程竞争列表锁;
具体实施方式
正如所描述的,示例性的数据处理系统100包括经由系统总线106与系统存储器104耦合的处理单元102。优选地,系统存储器104可被实现为一组动态随机存取存储器(DRAM)模块。一般,系统存储器104包括用于运行一组应用程序的数据以及指令。夹层(mezzanine)总线108用作系统总线106与外设总线114之间的媒介。本领域的技术人员将理解,外设总线114可被实现为周边器件互连(PCI)、加速图形端口(AGP)、或者任何其它的外设总线。耦合到外设总线114的有被数据处理系统100用作大容量存储设备的硬盘驱动器110。耦合到外设总线114的还有一组外设112a-n。
本领域的技术人员将理解,数据处理系统100可以包括在图1中未具体例示出的很多附加部件。因为这些附加部件不是理解本发明所必需的,所以未在图1中例示出或在此进一步讨论。然而,还应该理解,由本发明提供的、用于改进对共享资源的处理的增强数据处理系统100可应用于任何系统架构的数据处理系统,决不限于一般的多处理器架构或图1例示的对称多处理(SMP)架构。
现在参照图2,例示了根据本发明的处理单元102的示例性实施例的详细框图。如图所示,处理单元102包含指令管线,该指令管线包括指令排序单元(ISU)200和多个执行单元208、212、214、218和220。ISU 200利用通过指令存储器管理单元(IMMU)204执行的有效到真实地址翻译(effective-to-real address translation ERAT)而获得的真实地址,来从L1I高速缓存206取出处理用指令。当然,如果所请求的指令的高速缓存线并不驻留在L1I高速缓存206中,那么ISU 200就经由I高速缓存重载总线207从L2高速缓存234请求指令的相关高速缓存线,其中I高速缓存重载总线207还耦合到硬件预取引擎232。L2高速缓存234还包括数据阵列235和高速缓存控制器236。
在取出指令并进行预处理(如果有的话)之后,ISU 200基于指令类型,经由指令总线209可能不按顺序地将指令分配给执行单元208、212、214、218和220。即,状况寄存器修改指令和分支指令被分别分配给状况寄存器单元(CRU)208和分支执行单元(BEU)212,固定点和负载/存储指令被分别分配给固定点单元(FXU)214和负载存储单元(LSU)218,浮点指令被分配给浮点单元(FPU)220。
ISU 200使用的指令集合包括但并不限于根据本发明优选实施例的用于针对共享资源对同步锁进行仲裁和控制的指令。可利用数据处理系统100将该指令集合存储在计算机可读介质中。这些计算机可读介质包括但并不限于系统存储器104、高速缓存206和234、HDD 110,并且可以被实现为只读、随机存取、光学、或磁介质中的任意类型。
在可能的排队和缓存之后,由执行单元208、212、214、218和220适时地执行ISU 200所分派的指令。在此将指令“执行”定义为如下进程,通过该进程,处理单元的逻辑电路检查指令操作码(opcode)以及相关联的操作数(若有的话),并且作为响应,在数据处理系统中(例如,在系统存储器位置之间、寄存器或缓存器与存储器之间等)移动数据或指令,或对该数据执行逻辑或数学运算。对于存储器存取(例如负载类型或存储器类型)指令,执行一般包括根据指令操作数来计算目标有效地址(EA)。
在执行单元208、212、214、218和220之一中执行期间,指令可以从与该执行单元耦合的寄存器组中的一个或多个结构化的和/或重命名寄存器接收输入操作数(如果有的话)。类似地由执行单元208、212、214、218和220将指令执行的数据结果(如果有的话)写到寄存器组中的指令指定的位置。
例如,FXU 214从通用寄存器组(GPRF)216接收输入操作数并将目的操作数(即数据结果)存储到通用寄存器组(GPRF)216,FPU 220从浮点寄存器组(FPRF)222接收输入操作数并将目的操作数存储到浮点寄存器组(FPRF)222,LSU 218从GPRF 216接收输入操作数,并使数据在L1D高速缓存230(经由互连线217)与GPRF216和FPRF 222两者之间被传送。类似地,当执行状况寄存器修改(condition-register-modifying)指令或取决于状况寄存器(condition-register-dependent)的指令时,CRU 208和BEU 212访问控制寄存器组(CRF)210,在优选实施例中控制寄存器组(CRF)210包括状况寄存器、链路寄存器、计数寄存器、及各个寄存器的重命名寄存器。BEU 212访问状况寄存器、链路寄存器和计数寄存器的值,以解析有状况的分支,从而获取路径地址,BEU 212将该路径地址提供给指令排序单元200,以发起沿指示路径的指令取出。在执行单元完成指令执行之后,执行单元通知指令排序单元200,该指令排序单元200按照程序顺序和数据结果(如果有的话)的提交(commitment),将指令的完成调度到处理单元202的结构化状态,
仍参照图2,本发明的优选实施例优选地包括数据存储器管理单元(DMMU)224。DMMU 224对程序启动的负载中的有效地址(EA)进行翻译,并将从LSU 218接收的操作指令存储到用于访问易失性存储器分层结构的物理地址(PA)中,该易失性存储器分层结构包括L1D高速缓存230、L2高速缓存234和系统存储器104。DMMU 224包括翻译后援缓存器(translation lookaside buffer TLB)226和TLB预取引擎228。
TLB 226对页表项(PTE)的子集的副本进行缓存,页表项用于将被在处理单元102中的软件执行所使用的有效地址(EA)翻译成物理地址(PA)。如在此所使用的,有效地址(EA)被定义为用于识别存储器存储位置或映射到虚拟地址空间的其他资源的地址。另一方面,在此将物理地址(PA)定义为物理地址空间中的地址,该地址识别真实的存储器存储位置或其它真实资源。
图3是示出了根据本发明的优选实施例在数据处理系统中仲裁共享资源的示例方法的高级流程图。本领域的技术人员将理解,仲裁共享资源的本方法可通过以下任意方法来实现,这些方法包括但并不限于软件(例如软件同步算法)、硬件(例如具有优先级电路的共享锁线路,该优先级电路在有多个请求者时对哪个处理单元获得下一个锁线路进行仲裁),以及软件和硬件的任意组合。
如前面所讨论的,“进程”或“线程”是在程序环境中执行任务的实体。其中进程执行它们的分配任务的方法是始终经由物理处理单元来执行的,诸如处理单元102。为了防止数据损坏,可由一个以上线程写入(改变)的任何存储器位置必须由第一线程在访问期间锁定,这些存储器位置是诸如系统存储器104、高速缓存206和236等中的位置。如果第二线程请求访问由第一线程访问的相同存储器位置,那么第二线程必须等待,直到第一线程完成其操作为止。
图4A和4B是示例性数据处理系统100的简化框图,其示出了本发明的优选实施例如何仲裁共享资源。如图所示,分别从处理单元102a、102b和102c执行一组线程410、412和414。另外示出了系统存储器位置400、事务锁402、列表406、休眠定时器407、列表锁408以及线程416、418和414,所有这些都在等待访问系统存储器位置400。为了节约在处理单元102上的处理时间,期望只有当处理单元102没有另外的有用工作要执行(例如处理单元进入空闲状态)时,这些处理单元处理来自线程的锁获得重试请求。因为诸如线程410、412和414的线程是用于处理给定任务的虚拟实体,所以数据处理系统100中的任何处理单元102都可以执行线程。
本发明的优选实施例提供了一种执行线程的系统和方法,这些线程发出对于没有其它有用工作要执行的处理单元102的列表锁408的重试请求。如果线程超过了列表锁重试请求的预定次数,则假设该列表锁近期不可用,并将该线程置于休眠模式。当:(1)在预定时间段之后休眠定时器407期满,并且该线程被重新分配给处理单元102以执行时;或(2)处理单元102进入空闲状态并且不在执行有用工作时,将该线程从休眠模式中恢复。
如图4A所示,线程410要求访问系统存储器位置400,所以线程410请求获得用于系统存储器位置400的事务锁402(图3的步骤300和302)。正如所描述的,线程412已获得了系统存储器位置400的事务锁402,将线程410锁在外面。如果线程410能够访问对于系统存储器位置400的事务锁402(例如,如果线程412没有访问事务锁402),则线程410将仅继续处理它的分配任务(步骤304)。
现在参照图4B,因为线程410不能获得系统存储器位置400上的事务锁402,所以线程410请求访问列表锁408(步骤306)。在本发明的优选实施例中,列表406包括有等待访问系统存储器位置400的线程列表。为了将线程添加到列表406,必须获得列表锁408,以防止其它线程访问列表406。通常,如果多个线程尝试访问同一存储器位置时,则为了添加到列表406而存在对于访问列表锁408的竞争。另外,在本发明的优选实施例中,列表锁408在用户空间中是全局使能的锁(例如,可由用户应用访问,而操作系统的内核和较低级没有特权)。另外,当将线程置于休眠模式时,在处理单元102进入空闲状态,或者可认为正好对空闲具有优先级时,将该线程唤醒并设置在处理单元102的局部运行队列上。
如图4B所例示的,列表锁408当前被从处理单元102c发布的线程414保持。线程410将重试列表锁请求(步骤314)。如果列表锁请求被重试了超过预定次数(步骤316),则处理单元102a将线程410设置为休眠模式(步骤318),并为线程410启动休眠定时器407。本领域的技术人员将理解,尽管在图4A和图4B中将休眠定时器407例示为如在系统存储器104中的位置,但是还可以按照其它方式来实现休眠定时器407,这些方式包括但不限于经由其它计算机可读介质中存储的软件、经由硬件电路、或硬件和软件的任意组合。如果列表锁请求被重试了未超过预定次数,则过程返回到步骤314,并以反复的方式继续。
如果休眠定时器期满(步骤320),过程返回到步骤314,其例示了在线程410被重新分配给处理单元102(步骤323)之后,线程410重试列表锁请求。然而,如果休眠定时器尚未期满,则过程继续到步骤322,该步骤示出了对处理单元102是否变得空闲进行确定,将处理单元102变得空闲定义为不在执行有用工作的处理单元102。如果处理单元102尚未变得空闲,则过程返回到步骤320。然而,如果处理单元102已变得空闲,则线程410被分配给空闲的处理单元102,过程返回到步骤314,并以反复的方式继续。
返回步骤306,如果线程410获得关于列表406的列表锁408,则过程继续到步骤308,该步骤例示了线程410被设置为休眠模式。过程继续到步骤310,该步骤示出了线程410被设置在列表406上,列表406包括有正在等待访问系统存储器位置400的线程416、418和414的条目。过程继续到步骤312,其例示了对处理单元102是否变得空闲作出确定。如果处理单元102尚未变得空闲,则过程在步骤312处反复。如果处理单元102已经变得空闲,则将线程410分配给空闲的处理单元102(步骤313),并且过程返回到步骤302,该步骤例示了线程410发送请求以获得关于系统存储器位置400的事务锁402。
正如所公开的,本发明包括一种在数据处理系统中对访问共享资源进行仲裁的系统和方法。对第一组线程进行监控,该组线程代表将被一组处理单元中的至少一个处理单元执行的一组任务。响应于检测到由第一组线程中的一个线程发出的、用于访问被该组线程中的第二线程锁定的共享资源的请求,该第一线程尝试访问与该共享资源相关联的列表。该列表通过对所述共享资源的访问优先级,对该组线程中的至少一个线程进行排序。响应于确定出所述列表被该组线程中的第三线程锁定,将所述第一线程置于休眠状态。响应于确定出该组处理单元中的至少一个已进入空闲状态,将所述第一线程从休眠状态唤醒。另外,响应于将所述第一线程从所述休眠状态唤醒,将所述第一线程分配给该组处理单元中的至少一个,并且第一线程重试它的对访问所述列表的尝试。
另外,应该理解,另选地,可以在存储有程序产品的计算机可读介质中实现本发明的至少一些方面。可经由各种信号承载介质将限定本发明功能的程序转送到数据存储系统或计算机系统,该信号承载介质包括但不限于不可写存储介质(例如CD-ROM),可写存储介质(例如,软盘、硬盘驱动器、读/写CD-ROM、光学介质),以及通信介质,诸如包括以太网在内的计算机和电话网络。应该理解,因此在这样的信号承载介质中,当对用于指示本发明方法功能的计算机可读指令进行承载和编码时,表示本发明的另选实施例。此外,应该理解,可通过如下一种系统来实现本发明,该系统具有以本文描述的硬件、软件或者硬件和软件的组合、及其等同物的形式存在的装置。
尽管参照附图来具体地示出并描述了本发明,但是本领域的技术人员应该理解,在不脱离本发明的精神和范围的情况下,可以在形式和细节上作出各种变化。
Claims (10)
1. 一种方法,包括:
对多个线程进行监控,所述线程代表了将被多个处理单元中的至少一个处理单元执行的多个任务;
响应于检测到由所述多个线程中的第一线程发出的、用于访问被所述多个线程中的第二线程锁定的共享资源的请求,尝试访问与所述共享资源相关联的列表,其中所述列表根据对所述共享资源的访问优先级对所述多个线程中的至少一个线程进行排序;
响应于确定出所述列表被所述多个线程中的第三线程锁定,将所述第一线程置于休眠状态;
响应于确定出所述多个处理单元中的至少一个已进入空闲状态,将所述第一线程从休眠状态唤醒;以及
响应于所述的将所述第一线程从所述休眠状态唤醒,将所述第一线程分配给所述多个处理单元中的所述至少一个,并且重试所述尝试访问与所述共享资源相关联的列表。
2. 根据权利要求1所述的方法,还包括:
响应于确定出所述列表被所述多个线程中的所述第三线程锁定,以预定尝试次数重试所述尝试访问与所述共享资源相关联的列表。
3. 根据权利要求1所述的方法,其中所述将所述第一线程从休眠状态唤醒还包括:
响应于确定出在预定时间段期满之前所述多个处理单元中的至少一个已进入空闲状态,将所述第一线程从定时休眠状态唤醒,其中所述定时休眠状态使所述第一线程在所述预定时间段期满之后可被唤醒。
4. 根据权利要求1所述的方法,还包括:
响应于所述第一线程成功地访问所述列表,将所述第一线程置于所述休眠状态。
5. 根据权利要求4所述的方法,还包括:
响应于确定出所述多个处理单元中的至少一个已进入空闲状态,尝试访问所述共享资源。
6. 一种数据处理系统,包括:
多个处理单元,执行代表多个任务的多个线程;
共享资源,被耦合到所述多个处理单元;以及
列表单元,与所述共享资源相关联,用于根据对所述共享资源的访问优先级对所述多个线程中的至少一个线程进行排序;
其中,所述多个处理单元中的每一个处理单元包括:
对多个线程进行监控的装置,这些线程代表将被多个处理单元中的至少一个处理单元执行的多个任务;
响应于检测到由所述多个线程中的第一线程发出的、用于访问被所述多个线程中的第二线程锁定的共享资源的请求,尝试访问与所述共享资源相关联的列表单元的装置;
响应于确定出所述列表单元被所述多个线程中的第三线程锁定,将第一线程置于休眠状态的装置;
响应于确定出所述多个处理单元中的至少一个已进入空闲状态,将所述第一线程从休眠状态唤醒的装置;以及
响应于所述的将所述第一线程从所述休眠状态唤醒,将所述第一线程分配给所述多个处理单元中的所述至少一个,并且重试所述尝试访问与所述共享资源相关联的列表单元的装置。
7. 根据权利要求6所述的数据处理系统,其中所述每一个处理单元还包括:
响应于确定出所述列表单元被所述多个线程中的所述第三线程锁定,以预定尝试次数重试所述尝试访问与所述共享资源相关联的列表单元的装置。
8. 根据权利要求6所述的数据处理系统,其中所述每一个处理单元还包括:
响应于确定出在预定时间段期满之前所述多个处理单元中的至少一个进入已空闲状态,将所述第一线程从所述休眠状态唤醒的装置,其中定时休眠状态使所述第一线程在所述预定时间段期满之后可被唤醒。
9. 根据权利要求6所述的数据处理系统,其中所述每一个处理单元还包括:
响应于所述第一线程成功地访问所述列表单元,将所述第一线程置于所述休眠状态的装置。
10. 根据权利要求9所述的数据处理系统,其中所述每一个处理单元还包括:
响应于确定出所述多个处理单元中的至少一个已进入空闲状态,尝试访问所述共享资源的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/260,611 | 2005-10-27 | ||
US11/260,611 US8566827B2 (en) | 2005-10-27 | 2005-10-27 | System and method of arbitrating access of threads to shared resources within a data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1959644A CN1959644A (zh) | 2007-05-09 |
CN100422940C true CN100422940C (zh) | 2008-10-01 |
Family
ID=37998127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101429804A Expired - Fee Related CN100422940C (zh) | 2005-10-27 | 2006-10-26 | 在数据处理系统中仲裁线程访问共享资源的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8566827B2 (zh) |
CN (1) | CN100422940C (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136725A1 (en) * | 2005-12-12 | 2007-06-14 | International Business Machines Corporation | System and method for optimized preemption and reservation of software locks |
US7769958B2 (en) * | 2007-06-22 | 2010-08-03 | Mips Technologies, Inc. | Avoiding livelock using intervention messages in multiple core processors |
US8584138B2 (en) * | 2007-07-30 | 2013-11-12 | Hewlett-Packard Development Company, L.P. | Direct switching of software threads by selectively bypassing run queue based on selection criteria |
US8407425B2 (en) * | 2007-12-28 | 2013-03-26 | Intel Corporation | Obscuring memory access patterns in conjunction with deadlock detection or avoidance |
CN101751293B (zh) * | 2008-12-16 | 2013-10-30 | 智邦科技股份有限公司 | 程序的线程群组管理方法 |
US8156275B2 (en) * | 2009-05-13 | 2012-04-10 | Apple Inc. | Power managed lock optimization |
CN101923493A (zh) * | 2010-09-21 | 2010-12-22 | 深圳市华力特电气股份有限公司 | 一种任务调度方法及任务调度设备 |
US9317329B2 (en) * | 2010-11-15 | 2016-04-19 | Qualcomm Incorporated | Arbitrating resource acquisition for applications of a multi-processor mobile communications device |
US9128786B2 (en) * | 2011-11-22 | 2015-09-08 | Futurewei Technologies, Inc. | System and method for implementing shared locks between kernel and user space for synchronize access without using a system call to the kernel |
CN102566979B (zh) * | 2011-12-02 | 2014-12-03 | 华为技术有限公司 | 实现自适应锁的方法和装置以及多核处理器系统 |
CN103546433B (zh) * | 2012-07-12 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 信息同步系统和方法 |
CN102831024B (zh) * | 2012-08-03 | 2014-12-17 | 中国人民解放军国防科学技术大学 | 一种基于随机扰动的防饿死访存请求唤醒方法 |
CN103324269B (zh) * | 2013-06-13 | 2016-01-27 | 中国科学院计算技术研究所 | 一种降低多线程程序功耗的方法及系统 |
CN103336571B (zh) * | 2013-06-13 | 2016-02-03 | 中国科学院计算技术研究所 | 一种降低多线程程序功耗的方法及系统 |
US9558035B2 (en) * | 2013-12-18 | 2017-01-31 | Oracle International Corporation | System and method for supporting adaptive busy wait in a computing environment |
US9632569B2 (en) * | 2014-08-05 | 2017-04-25 | Qualcomm Incorporated | Directed event signaling for multiprocessor systems |
GB2529899B (en) * | 2014-09-08 | 2021-06-23 | Advanced Risc Mach Ltd | Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads |
US9424103B2 (en) | 2014-09-30 | 2016-08-23 | Hong Kong Applied Science and Technology Research Institute Company Limited | Adaptive lock for a computing system having multiple runtime environments and multiple processing units |
CN104636957B (zh) * | 2015-02-04 | 2018-07-24 | 上海瀚之友信息技术服务有限公司 | 一种处理高并发数据请求的系统和方法 |
KR102402780B1 (ko) * | 2015-06-04 | 2022-05-27 | 삼성전자 주식회사 | 메모리 관리 방법 및 장치 |
US10776156B2 (en) * | 2016-09-30 | 2020-09-15 | Intel Corporation | Thread priority mechanism |
US10496577B2 (en) * | 2017-02-09 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Distribution of master device tasks among bus queues |
CN107729221B (zh) * | 2017-09-29 | 2020-12-11 | 深圳科立讯通信有限公司 | 线程间消息监控方法、装置、计算机设备和存储介质 |
CN108509260B (zh) * | 2018-01-31 | 2021-08-13 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
US11720404B2 (en) * | 2020-07-16 | 2023-08-08 | Samsung Electronics Co., Ltd. | Systems and methods for arbitrating access to a shared resource |
CN112114974A (zh) * | 2020-10-15 | 2020-12-22 | 杭州迪普信息技术有限公司 | 一种共享资源获取方法、装置及计算机设备 |
CN112559160B (zh) * | 2021-02-19 | 2021-06-04 | 智道网联科技(北京)有限公司 | 地图引擎多线程的控制方法及装置 |
CN113010552B (zh) * | 2021-03-02 | 2024-01-30 | 腾讯科技(深圳)有限公司 | 数据处理方法、系统、计算机可读介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1250532A (zh) * | 1997-01-09 | 2000-04-12 | 奥潘弗雷姆有限公司 | 数据共享方法和计算机体系结构 |
CN1072415C (zh) * | 1994-04-22 | 2001-10-03 | 汤姆森消费电子有限公司 | 动态分配稀少资源的系统 |
JP2002323985A (ja) * | 2001-04-25 | 2002-11-08 | Nec Aerospace Syst Ltd | マルチスレッド処理方法及びそれを用いるマルチスレッド処理装置並びにそのプログラム |
US20030005195A1 (en) * | 2001-06-27 | 2003-01-02 | International Business Machines Corporation | Semaphore management subsystem for use with multi-thread processor systems |
US20030061394A1 (en) * | 2001-09-21 | 2003-03-27 | Buch Deep K. | High performance synchronization of accesses by threads to shared resources |
US20030236816A1 (en) * | 2002-06-20 | 2003-12-25 | Lakshminarayanan Venkatasubramanian | Spin-yielding in multi-threaded systems |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU731871B2 (en) * | 1996-11-04 | 2001-04-05 | Sun Microsystems, Inc. | Method and apparatus for thread synchronization in object-based systems |
US6714958B1 (en) * | 1999-07-28 | 2004-03-30 | International Business Machines Corporation | Detecting and causing latent deadlocks in multi-threaded programs |
US7228549B2 (en) * | 1999-12-02 | 2007-06-05 | Ants Software, Inc. | Method and system for enhanced concurrency in a computing environment |
US6735769B1 (en) | 2000-07-13 | 2004-05-11 | International Business Machines Corporation | Apparatus and method for initial load balancing in a multiple run queue system |
US6910212B2 (en) | 2000-12-04 | 2005-06-21 | International Business Machines Corporation | System and method for improved complex storage locks |
US6845504B2 (en) | 2001-02-08 | 2005-01-18 | International Business Machines Corporation | Method and system for managing lock contention in a computer system |
US20020184290A1 (en) | 2001-05-31 | 2002-12-05 | International Business Machines Corporation | Run queue optimization with hardware multithreading for affinity |
US7246353B2 (en) * | 2002-06-12 | 2007-07-17 | Microsoft Corporation | Method and system for managing the execution of threads and the processing of data |
-
2005
- 2005-10-27 US US11/260,611 patent/US8566827B2/en not_active Expired - Fee Related
-
2006
- 2006-10-26 CN CNB2006101429804A patent/CN100422940C/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1072415C (zh) * | 1994-04-22 | 2001-10-03 | 汤姆森消费电子有限公司 | 动态分配稀少资源的系统 |
CN1250532A (zh) * | 1997-01-09 | 2000-04-12 | 奥潘弗雷姆有限公司 | 数据共享方法和计算机体系结构 |
JP2002323985A (ja) * | 2001-04-25 | 2002-11-08 | Nec Aerospace Syst Ltd | マルチスレッド処理方法及びそれを用いるマルチスレッド処理装置並びにそのプログラム |
US20030005195A1 (en) * | 2001-06-27 | 2003-01-02 | International Business Machines Corporation | Semaphore management subsystem for use with multi-thread processor systems |
US20030061394A1 (en) * | 2001-09-21 | 2003-03-27 | Buch Deep K. | High performance synchronization of accesses by threads to shared resources |
US20030236816A1 (en) * | 2002-06-20 | 2003-12-25 | Lakshminarayanan Venkatasubramanian | Spin-yielding in multi-threaded systems |
Also Published As
Publication number | Publication date |
---|---|
US20070101333A1 (en) | 2007-05-03 |
CN1959644A (zh) | 2007-05-09 |
US8566827B2 (en) | 2013-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100422940C (zh) | 在数据处理系统中仲裁线程访问共享资源的系统和方法 | |
TWI397813B (zh) | 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 | |
US6502170B2 (en) | Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes | |
US8370584B2 (en) | Predictive ownership control of shared memory computing system data | |
US8881153B2 (en) | Speculative thread execution with hardware transactional memory | |
US8689221B2 (en) | Speculative thread execution and asynchronous conflict events | |
CN108268385B (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
US20110167222A1 (en) | Unbounded transactional memory system and method | |
US9361233B2 (en) | Method and apparatus for shared line unified cache | |
EP3588288B1 (en) | A multithreaded processor core with hardware-assisted task scheduling | |
CN108369553B (zh) | 用于范围保护的系统、方法和装置 | |
US9875108B2 (en) | Shared memory interleavings for instruction atomicity violations | |
US20120304185A1 (en) | Information processing system, exclusive control method and exclusive control program | |
Atoofian | Approximate cache in GPGPUs | |
Kunz et al. | Evaluation of a hardware transactional memory model in an NoC-based embedded MPSoC | |
Quislant et al. | Leveraging irrevocability to deal with signature saturation in hardware transactional memory | |
US10051087B2 (en) | Dynamic cache-efficient event suppression for network function virtualization | |
US20230186003A1 (en) | Digital design simulation accelerator | |
Sanchez | Design and implementation of signatures for transactional memory systems | |
Titos-Gil et al. | Efficient eager management of conflicts for scalable hardware transactional memory | |
Castro et al. | Replacing associative load queues: a timing-centric approach | |
Quislant-del-Barrio et al. | Leveraging Irrevocability to Deal with Signature Saturation in Hardware Transactional Memory | |
JPS6265157A (ja) | 疎結合マルチプロセッサ装置 | |
Lee et al. | Seung Hun Kim, Student Member, IEEE, Sang Hyong Lee, Minje Jun, Member, IEEE, Byunghoon Lee, Won Woo Ro, Member, IEEE, Eui-Young Chung, Member, IEEE, and Jean-Luc Gaudiot, Fellow, IEEE | |
Confidential | PROJECT NUMBER: 249013 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081001 |
|
CF01 | Termination of patent right due to non-payment of annual fee |