CN1262942C - 利用无数据事务获得全局促进工具的方法、设备和系统 - Google Patents
利用无数据事务获得全局促进工具的方法、设备和系统 Download PDFInfo
- Publication number
- CN1262942C CN1262942C CN03159463.8A CN03159463A CN1262942C CN 1262942 C CN1262942 C CN 1262942C CN 03159463 A CN03159463 A CN 03159463A CN 1262942 C CN1262942 C CN 1262942C
- Authority
- CN
- China
- Prior art keywords
- response
- processor
- promotion
- lock
- register
- 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
- 238000000034 method Methods 0.000 title claims description 60
- 230000001737 promoting effect Effects 0.000 title description 12
- 230000004044 response Effects 0.000 claims abstract description 90
- 238000009826 distribution Methods 0.000 claims description 11
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 34
- 230000008569 process Effects 0.000 description 35
- 238000003860 storage Methods 0.000 description 18
- 238000003491 array Methods 0.000 description 16
- 230000004224 protection Effects 0.000 description 13
- 238000012856 packing Methods 0.000 description 12
- 238000013519 translation Methods 0.000 description 10
- 239000008187 granular material Substances 0.000 description 9
- 238000007726 management method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000004321 preservation Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000002950 deficient Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000007599 discharging Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000012636 effector Substances 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000003292 glue Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012358 sourcing Methods 0.000 description 1
- 230000003068 static effect Effects 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
Abstract
利用无数据事务获得全局促进工具的方法、设备和系统。数据处理系统包括全局促进工具和通过互连耦接的若干处理器。响应若干处理器中第一处理器执行的获得指令,第一处理器在互连上传送唯地址操作,从而至少排除若干处理器中的一个第二处理器,获得全局促进工具内的促进位字段。响应对唯地址操作的组合响应的接收,第一处理器参考所述组合响应,确定促进位字段的获得是否成功,组合响应代表若干处理器中的其它处理器对唯地址操作的集体响应。
Description
技术领域
本发明涉及数据处理,更具体地说,涉及在数据处理系统内分配和访问资源。在至少一个实施例中,本发明还特别涉及在数据处理系统中,有效分配和访问促进工具(promotion facility),例如锁(lock)的方法和系统。
背景技术
在共享存储器多处理器(MP)数据处理系统中,系统中的多个处理器中的每一个都可访问并修改保存在共享存储器中的数据。为了在多个存储器之间使对存储器的特定区组(granule)(例如,高速缓存界线(cache line))的访问同步,编程模型通常要求处理器在修改区组之前,获得与该区组相关的锁,并在所述修改之后释放所述锁。
在多处理器计算机系统中,多个处理器可独立尝试获得相同的锁。在争取锁的某一处理器成功获得所述锁的情况下,通过系统总线从系统存储器或者另一处理器的高速缓冲存储器体系传送包含所述锁的高速缓存界线,并载入该处理器的高速缓冲存储器体系(hierarchy)。从而,常规数据处理系统中锁的获得和释放可表征为各个处理器的数据高速缓冲存储器之间专有高速缓存界线的移动。
通常利用称为“装入预约”(load-reserve)和“有条件保存”(store-conditional)指令的特殊存储器存取指令简化锁的获得和释放。在支持装入预约和有条件保存指令的共享存储器MP数据处理系统中,系统内的每个处理器配有预约寄存器(reservationregister)。当处理器对某一存储器区组执行装入预约时,处理器把该存储器区组的一些或全部内容载入该处理器的内部寄存器之一中,并把存储器区组的地址载入该处理器的预约寄存器中。从而认为请求方处理器预约了该存储器区组。该处理器随后可利用有条件保存指令,对预约的存储器区组进行原子更新(atomic update)。
当处理器对其预约的存储器区组进行有条件存储(store-conditional)时,处理器把指定寄存器的内容保存到该存储器区组中,随后清除预约。如果处理器不具有对存储器区组的预约,那么有条件保存指令失败,不进行存储器更新。一般来说,如果远程处理器请求独占访问存储器区组,以便修改该存储器区组(使共享总线上的所有处理器能够看到该请求),或者预约处理器执行有条件保存指令,那么处理器的预约被清除。如果每个处理器只许可一个预约,那么如果处理器对另一存储器区组执行装入预约,该处理器的当前预约也将被清除。
利用装入预约(lwarx)和有条件保存(stwcx)指令获得和释放锁的典型指令序列如下:
A load X !读锁(lock)的值
cmpi !比较,以确定锁是否可用
bc A !如果锁不可用,返回
B lwarx X !尝试获得锁的预约
cmpi !确定是否获得锁的预约
bc A !如果未获得预约,返回
C stwcx X !试图把锁设置成“已锁”状态
bc A !如果有条件保存失败,那么返回
… !处理由锁使对它的访问同步的共享数据
store X !通过重置为“未锁”状态,释放锁
如上所示,典型的指令序列包括至少两个独立的分支“循环”:一个以通过成功执行装入预约指令,处理器获得有效的锁预约为条件(用标为“B”),另一个以在处理器具有有效预约的同时,通过执行有条件保存指令,处理器成功地把锁更新为“已锁”状态为条件(标为“C”)。锁的获得序列可以可选地包括第三分支循环(标为“A”识别),其中在试图预约锁之前,处理器确定锁是否可用。
不仅因为其长度,而且因为预约的有条件性,这种常规的锁的获得指令导致较高的开销。即,如果第二处理器先获得该锁的所有权,那么第一处理器在成功获得该锁(通过执行有条件保存指令)之前,会失去对该锁的预约。从而,如果对锁有激烈的竞争,那么在通过执行有条件保存指令成功获得锁之前,处理器可能预约该锁并多次失去预约。
至少一个处理器制造商已试图通过实现“强制”解决方案解决该问题,在“强制”解决方案中,准许执行装入预约指令的处理器独占访问互连。即,当该处理器持有该预约时,只允许执行装入预约指令的处理器控制互连上的操作,所有其它处理器被封锁,不仅不能访问特定的数据区组,而且不能启动互连上的任何操作。从而,尽管持有预约,被封锁在互连之外的处理器会因缺乏数据而停止。显然,这种解决方案不能很好地缩放(scale),尤其是对于运行对锁有激烈的竞争的代码的系统来说,更是如此。
发明内容
本发明认识到如上所述的常规的获得和释放锁的方法虽然在使多个处理器对共享数据的访问同步方面有效,但是存在若干附随缺陷。首先,采用装入预约和有条件保存指令的常规的锁的获得和释放序列需要在每个处理器内包括专用预约寄存器和预约管理电路,不合需要地增大了处理器大小和复杂性。
其次,如上所述,由于预约的有条件性,因此典型的锁的获得和释放序列固有地存在效率低的缺陷。如果对锁有激烈的竞争,那么在允许任何处理器获得一个锁,把该锁更新为“已锁状态”和处理由锁保护的数据之前,多个处理器可能多次获得和失去对该锁的预约。从而,整体系统性能下降。
第三,上述的锁的获得和释放方法不能很好地缩放。例如,在常规的锁的获得指令序列中,获得锁定而引起的开销随着数据处理系统的规模而增大。从而,虽然在具有许多处理器的大规模数据处理系统中,最好采用细粒度锁(fine grain lock)(即大量的分别保护相当小的数据区组的锁)以增强并行性,但是,随着系统规模的增大,不断升高的锁的获得开销会迫使采用更粗颗粒的锁,以便降低锁的获得开销所占用的处理时间的百分比。这种设计上的折衷(虽然认为是必要的)显著减少了可在多个处理器间有效分布的有用功的量。
第四,由于锁变量通常被看作是可高速缓存的操作数数据,锁的获得序列内的每个装入型和保存型操作触发数据高速缓存目录窥探(directory snoop),系统总线上的相关性消息通信和由数据处理系统实现的高速缓存相关性协议指示的其它常规操作。本发明认识到耗费有限的系统资源比如数据高速缓存窥探队列、总线带宽等的这些以数据为中心的高速缓存相关性操作是不必要的,因为在对受锁保护的数据区组进行处理的过程中,锁本身的数据值并不需要或者无用。
鉴于在数据处理系统中获得并释放锁的常规技术,更一般地说,组件间协调和访问存储映像资源的技术的上述及其它缺陷,本发明尤其引入了分配和访问存储映像资源比如全局促进工具的新方法和设备,所述全局促进工具最好被用作锁定工具(但是并不局限于此)。
根据本发明,一个多处理器处理系统包括与互连以及与存储器耦接的若干处理器,所述存储器包括至少包含一个促进位字段的促进工具。所述若干处理器中的第一处理器执行装入型指令,以便获得全局促进工具内的排除所述若干处理器内的至少一个第二处理器的一个促进位字段。响应装入型指令的执行,第一处理器的寄存器接收寄存器位字段,所述寄存器位字段指出是否通过执行装入型指令获得了促进位字段。当第一处理器持有排除第二处理器的促进位时,允许第二处理器在互连上启动一个请求。
在下述详细说明中,本发明的所有目的、特征和优点将变得显而易见。
附图说明
附加权利要求中陈述了本发明特有的新特征。但是,结合附图,参考例证实施例的下述详细说明,能够更好地理解发明本身,以及发明的优选应用模式、其它目的和优点,其中:
图1描述了根据本发明一个实施例的多处理器数据处理系统的例证实施例;
图2A和2B是根据本发明的处理器核心的两个备选实施例的详细方框图;
图3是根据本发明的促进高速缓存的实施例的详细方框图;
图4是根据本发明的锁的获得和释放过程的高级逻辑方框图;
图5是图解说明根据本发明,系统互连上用于获得锁的仅读取地址的事务的时序图;
图6是根据本发明的多处理器数据处理系统的例证软件结构的软件层图;
图7描述了可借助软件分配存储映像资源比如全局促进工具的方法的高级逻辑图;
图8图解说明了可绕过存取保护和地址转换,从而加速对特定存储映像资源比如全局促进工具的访问的方法。
具体实施方式
如上所述,本发明认识到与常规的锁的获得和释放方法相关的缺点至少可部分归因于作为操作数数据的锁的结构定义。即,通常利用装入预约和有条件保存原子数据存取基元(primitive)访问锁的值,在数据保有(使用)期间在系统互连上传送锁的值,保存在处理器高速缓存体系的操作数数据高速缓存内,并利用数据高速缓存相关性机制,和其它操作数数据一起被管理。
为了减小或消除伴随常规的锁的获得和释放方法的问题,本发明引入一种新的信息,这里称为“促进信息”(promotioninformation)。即,不是使在多处理器系统的组件之间传递的全体可寻址信息分成“指令”和“操作数数据”,本发明引入另外一种信息类别:“促进信息”,所述“促进信息”包括锁。这种促进信息确定授权或许可数据处理系统的哪些组件(例如处理器、控制器、适配器等)执行与促进信息相关的特定活动。显然,为了独立于操作数数据(以及指令)管理“促进信息”,进行了软件和硬件结构增强,极大地简化和提高了锁的获得和释放过程的性能。
现在参考附图,尤其是参考图1,图1中图解说明了根据本发明的一个实施例,支持锁和其它促进信息的改进的管理的多处理器(MP)数据处理系统的高级方框图。如图所示,数据处理系统8包括由系统互连12耦接以便通信的多个(例如64个)处理单元10。每个处理单元10是包括接口逻辑电路23和一个或多个处理器核心14的单一集成电路。除了寄存器、指令流逻辑电路和用于执行程序指令的执行单元之外,每个处理器核心14包括相关的1级(L1)指令和数据高速缓存16和18,所述1级指令和数据高速缓存临时分别缓存可能被相关处理器核心14访问的指令和操作数数据。
如图1中所示,数据处理系统8的存储器体系还包括一个或多个系统存储器26,以及一个或多个低层的高速缓冲存储器,例如单片2级(L2)高速缓存22,所述系统存储器26构成存储器体系中易失性数据存储器的最下层,所述高速缓存22用于使指令和操作数数据从系统存储器26上升到处理器核心14。本领域的技术人员会明白,存储器体系中每个后续的较低层一般能够比较高层保存更多的数据,但是访问等待时间更长。
如图所示,通过存储器控制器24与互连12连接的系统存储器26可保存操作数数据34和一个或多个操作系统28及一个或多个应用程序30的多个部分。另外,系统存储器26可包括由操作系统28分配(例如在引导时)分配的一个全局促进工具32(globalpromotion facility)。虽然图解表示成在系统存储器内的工具,不过本领域的技术人员会认识到也可在系统或总线控制器、总线桥、响应逻辑单元或者数据处理系统8的其它组件内实现全局促进工具32。
全局促进工具32包括许多(例如1024)个单独的促进位36,所述促进位可用于简化例如关于中断、锁定、任务调度、事件检测、错误条件、许可等的组件间协调。虽然不局限于这种应用,一些或全部促进位36可分配为锁,可由操作系统28或应用程序30使其与将使多处理器核心14的访问与其同步的操作数数据34的相应数据区组相联系。例如,为“1”的促进位值指示锁被占用,相关数据区组被锁定成由不持有该锁的处理器核心14访问。相反,为“0”的促进位值表示该锁自由,相关的数据区组未被锁定。存储器控制器24最好被编程为在读访问时,设置促进位36(例如设置为“1”),在写访问时,重置促进位(例如重置为“0”)。
为了降低对全局促进工具32的访问等待时间,每个处理器核心14可以可选地配备一个促进高速缓冲存储器(promotion cache)20,促进高速缓冲存储器20本地高速缓存相关处理器核心14访问的一个或多个促进位(promotion bit)36,下面进一步说明。每个促进高速缓冲存储器20可被实现成直接映射(direct mapped)或成组相联高速缓存(set associative cache),不过最好实现成完全相联高速缓存,以使促进高速缓冲存储器20能够支持更多或更少的促进位36(由操作系统28确定),而不需要任何硬件修改。
可包括一个或多个总线、交换结构(switch fabric)或者其它互连结构的系统互连12用作与系统互连12耦接的装置(例如处理单元10、存储器控制器24等)之间的通信管道。系统互连12上的典型事务从请求开始,所述请求可包括表示事务类型的事务字段,表示事务的源和/或预期接收者的一个或多个标记,以及地址和/或数据。与系统互连12相连的每个装置最好窥探系统互连12上的所有有关事务,并且如果合适,以窥探响应应答所述请求。如下进一步讨论的那样,这种窥探响应由响应逻辑单元40接收和编辑,响应逻辑单元40提供指出每个窥探器响应所述请求要采取哪些操作(如果有的话)的集合组合响应。这些操作可包括在系统互连12上获得(sourcing)数据,保存请求方窥探器(requesting snooper)提供的数据,使存储的数据无效等。虽然被分别图解表示,应明白响应逻辑单元40也可包含在特定装置(例如存储器控制器24)之内,或者分布在各种装置(例如处理单元10)之间,从而不同的装置(例如每个事务的控制者)编辑窥探响应,产生关于不同事务的组合响应。
本领域的技术人员会认识到,数据处理系统8可包括许多另外的未图解说明的组件,例如I/O适配器、互连桥接器(interconnectbridge)、非易失性存储器、连接网络或附加装置的端口等。由于这些另外的组件不是理解本发明所必需的,因此在图1中没有图解说明,这里没有进一步讨论。但是,另外要明白本发明提供的增强适用于任意结构的MP数据处理系统,决不局限于图1中图解说明的一般MP结构。
现在参见图2A,图中描述了根据本发明的处理器核心14的第一实施例的更详细方框图。如图所示,处理器核心14具有指令控制器50,指令控制器50利用通过指令存储器管理单元(IMMU)52执行的有效地址-真实地址转换(ERAT)获得的真实地址,从L1I-高速缓存16取回处理指令。当然,如果指令的被请求高速缓存界线(cache line)不驻留于L1 I-高速缓存16中,那么ISU 50通过I-高速缓存再装入总线54,向L2高速缓存22请求指令的相关高速缓存界线。
在取回指令,并进行预处理(如果有的话)之后,根据指令类型,指令被发送给执行单元60-68(可能是无序地)。即,条件寄存器修改(condition-register-modifying)指令和转移指令被分别发送给条件寄存器单元(CRU)60和分支执行单元(BEU)62,定点和装入/保存指令被分别发送给定点单元(FXU)64和装入-保存单元(LSU)66,浮点指令被分送给浮点单元(FPU)68。在可能的排队和缓冲之后,执行单元60-68抓住机会执行发送的指令。
在执行单元60-68之一内的执行过程中,指令可从与执行单元耦接的寄存器文件70-74内的一个或多个设计和/或重命名寄存器(architected and/or rename registers)接收输入操作数(如果有的话)。指令执行的数据结果(即目的操作数)(如果有的话)被执行单元60-68类似地写入寄存器文件70-74中。例如,FXU 64从通用寄存器文件(GPRF)72接收输入操作数,并把目的操作数保存在GPRF 72中,FPU 68从浮点寄存器文件(FPRF)74接收输入操作数,并把目的操作数保存在FPRF 74中,LSU 66从GPRF 72接收输入操作数,并使数据在L1 D-高速缓存18和GPRF 72及FPRF 74之间被传送。类似地,当执行条件寄存器修改指令或者条件寄存器相关(condition-register-dependent)指令时,CRU 90和BEU 92访问控制寄存器文件(CRF)70,在优选实施例中,CRF 70包含条件寄存器、链接寄存器、计数寄存器和各自的重命名寄存器。BEU 92获取条件寄存器、链接寄存器和计数寄存器的值,决定条件分支,从而获得路径地址,BEU 62把所述路径地址提供给指令控制器50,启动沿着指示路径的指令取回。在执行单元完成指令的执行之后,执行单元通知指令控制器50,指令控制器50按照程序顺序安排指令的完成。
在图2A中概括描述的处理器结构中,可采用不同的执行单元(从而不同的指令序列)访问促进高速缓存20,获得和释放锁,并完成其它组件间协调功能。例如,图2A图解说明了一种实现方式,其中LSU 66响应专用或通用装入和保存指令,访问促进位36(在可选促进高速缓存20内或者来自全局促进工具32)的实现。图2B描述备选的第二实施例,其中BEU 62响应特殊转移指令,在可选的促进高速缓存20或者在全局促进工具32内设置一个促进位36(例如获得锁),LSU 66响应保存指令,重置促进位36(例如释放锁)。在本发明范围内的这些及其它设计选项中,根据本领域的技术人员已知的实现特定细节(例如门数(gate count)、布局和路由效率,指令集结构等),优选不同的设计。
现在参考图3,图中图解说明了根据本发明一个实施例的处理器核心14的促进高速缓存20的更详细的方框图。如图所示,促进高速缓存20包括包含一个或多个项目92的完全相联高速缓存阵列90。高速缓存阵列90内的每个项目92包括一个有效位字段100、一个位ID字段102,和指示相关处理器核心14目前是否持有在位ID字段102内标识的促进位36(例如锁)的位值字段104。例如,为“1”的位值表示相关处理器核心14持有该锁,为“0”的位值表示该锁是自由的。
与每个项目92相关的是包括比较器106、与门108和缓冲器110的存取电路。比较器106比较从相关处理器核心14或系统互连12接收的输入位ID和保存在相关项目92内的位ID,并输出表示输入位ID和保存的位ID是否匹配的1位命中/失败指示信号。与门108利用有效字段100的状态限定(qualify)该命中/失败信号,如果限定后的信号指示命中,那么缓冲器110输出包含在位值字段104中的位值。所有与门108输出的限定命中/失败信号被或门112作为输入接收,或门112输出一个1位的集体命中/失败指示116。命中/失败指示116和输出位值114(如果有的话)被高速缓存控制器94接收。
高速缓存控制器94包括管理对高速缓存阵列90的访问、高速缓存阵列90的更新和相关性的一组逻辑单元。在图解表示的实施例中,高速缓存控制器94包括相关性逻辑单元96、寄存器更新逻辑单元97、替换逻辑单元98和可选的促进了解工具99。
相关性逻辑单元96保持促进高速缓存20和系统存储器26内的全局促进工具32的内容之间的相关性。相关性逻辑单元96的各种实现都是可能的,其中根据所需的复杂性、性能、被频繁竞争的锁的数目等,不同的系统优选其中不同的实现。
一般来说,相关性逻辑单元96通过响应本地处理器核心14和远程处理器核心14的请求管理有效位字段100和/或位值字段104的状态,来保持相关性。在其中不实现任何附加相关性字段118的例证实现中,相关性逻辑单元96每次只允许一个促进高速缓存20具有包含来自全局促进工具32的特定促进位36的有效项目92。表I提供根据该例证实现的相关性的逻辑单元96的操作的总结。
表I
输入 | 窥探响应 | 动作 |
当锁被占用时,本地处理器核心的装入请求在高速缓存阵列中命中 | - | 重试处理器核心 |
当锁自由时,本地处理器核心的装入请求在高速缓存阵列中命中 | - | 将位值字段设置为指示锁的获得 |
本地处理器核心的装入请求在高速缓存阵列中失败 | - | 在互连上发出只读取地址请求,请求锁;响应指示获得的锁的CR,分配项目,并将位值字段设置为指示锁的获得 |
当锁被占用时,本地处理器核心的保存请求在高速缓存阵列中命中 | - | 重置位值字段,指示锁的释放 |
在无远程处理器核心的窥探请求的情况下,自高速缓存阵列的项目的解除分配 | - | 通过在互连上发出以解除分配位的位ID为目标的只写入地址的操作,重置全局促进工具内的促进位 |
远程处理器核心的请求失败 | 空 | 无 |
当锁被占用时,远程处理器核心的请求在高速缓存阵列中命中 | 重试 | 无 |
当锁自由时,远程处理器核心的请求在高速缓存阵列中命中 | 干预 | 重置与发生命中的项目相关的有效位字段 |
应注意在表I中总结的实现I(以及其它实现)中,把促进位36的状态写回全局促进工具32以便把锁的释放通知给全局促进工具32,该写回可以可选地从释放时候起被延迟,直到所有促进高速缓存20解除促进位36的分配为止。在全局促进工具32未与促进高速缓存20同步的期间(例如全局促进工具32指出处理器核心14已获得一个锁,而事实上在促进高速缓存20内,该锁定被指示为是自由的),存储器控制器24将用表示锁被占用的窥探响应,应答以该锁为目标的读取请求。另一方面,处理器核心14将提供空窥探响应或者干预窥探响应(即,没有处理器核心14提供重试窥探响应)。响应这些窥探响应,响应逻辑单元40将提供组合响应,所述组合响应指示锁定获得请求被给予请求的处理器核心14。
在相关性逻辑单元96的其它实施例中,每个促进高速缓存可许可促进位36在多个处理器核心14的促进高速缓存20内被同时缓存。这种实施例可降低平均锁获得开销,尤其是对于竞争激烈的锁更是如此,但是伴随而来的是增大高速缓存复杂性。例如,除了(或者代替)有效位字段100,促进高速缓存20的每个项目92还配有相关性字段118,以便跟踪在该项目92中存储的促进位36的相关性状态,相关性逻辑单元99另外还实现相关性协议,例如众所周知的修改、独占、共享、无效(MESI)高速缓存相关性协议或者该协议的变形。
高速缓存控制器94还包括响应对促进高速缓存20的访问,更新处理器核心14内的一个或多个选定寄存器的寄存器更新逻辑单元97。例如,寄存器更新逻辑单元97可响应以全局促进工具32为目标的锁获得或释放指令,用锁值(例如0或1)更新GPRF 72内的通用寄存器。或者,或者另外,如图2B中在附图标记56处所示,寄存器更新逻辑单元97可响应以全局促进工具32为目标的锁获得和释放指令,更新CRF 70内的一个或多个寄存器(例如连接寄存器、条件寄存器、或者专用锁定寄存器)。
高速缓存控制器94还包括响应在促进高速缓存20中失败的存取请求,替换高速缓存阵列90的选定项目92的替换逻辑单元98。替换逻辑单元98可实现常规的高速缓存替换算法,例如最近最少使用(LRU)或最近最多使用(MRU)算法,或者,可根据可动态确定(例如由操作系统28)或者在启动时静态确定的个体优先权或组优先权,替换促进位36。在该第二种实现中,最好防止优先权较高的锁被优先权较低的锁替换,从而进一步改善锁的获得效率。在替换逻辑单元98管理每组锁共享相同优先级的各个优先权组中的锁的实现中,借助分组,高速缓存阵列90被有效分成多个独立的高速缓存(例如至少一个较高优先权的高速缓存和至少一个较低优先权的高速缓存)。利用这种划分,替换逻辑单元98可选择共享相同优先级的锁,以便按照访问顺序(例如LRU或者MRU)替换。
可选的促进了解工具99进一步增强处理促进位的释放和/或高速缓存解除分配(牺牲)的方法。具体地说,促进了解工具99可根据在互连12上窥探到的仅对地址的请求,跟踪每个其它处理单元10或者其它组件(在图3中表示为p0-Pn)最近最常请求的(或者根据CR值,最近最常未成功请求的)特定促进位36(如果有的话)。或者,或者另外,促进了解工具可提供为每个促进位36指示关于该促进位36具有最陈旧的待处理(即未满足的)或最高优先权请求的处理单元10(或者其它组件)的表格。如果需要,通过记录仅仅在相关促进高速缓存20内存储或者被相关处理器核心14持有的促进位36的最陈旧的未被满足请求方(或者优先权最高的请求方)的处理单元10(或其它组件),可限制促进了解工具99保存的和关于促进位36的窥探请求相关的信息的数量。
如果替换逻辑单元98选择某一促进位,以便按照处理单元10的请求从促进了解工具99指示的高速缓存阵列中解除分配,那么高速缓存控制器94可通过在互连12上传送主动提供的地址推送操作(address-only push operation),在不接收另一请求的情况下,把该促进位推送给所指示的处理单元10。如果促进了解工具99指出多个处理单元10同时需要解除分配后的该促进位36(对于竞争激烈的锁来说,情况通常就是这样),替换逻辑单元98最好把解除分配的促进位36推送给具有关于该促进位36的最早的待处理(或最高优先权)请求的处理单元10。或者,如果促进了解工具99指出另一处理单元10(或其它组件)已请求该促进位36,或者具有关于该促进位36的未满足的待处理请求,那么可响应促进位36的释放,而不是等待自促进高速缓存20的解除分配,由高速缓存控制器94发出推送操作。如果由于某些原因,推送操作失败(例如目标处理单元10不具有任何可用的窥探队列),那么存储器控制器24最好更新全局促进工具32,指出解除分配后的该促进位36可用,并假定解除分配后的该促进位36的“所有权”。
当窥探唯地址促进推送操作(address-only promotion pushoperation)和唯地址促进请求操作(address-only promotion requestoperation)时,每个高速缓存中的高速缓存控制器94可清除其促进了解工具99中和推送操作的目标处理单元10对应的项目。另外,如果处理单元10不再希望获得先前请求的促进位36(例如处理单元10不成功地请求了该促进位36预定次数,并且随后转换了进程),那么处理单元10可在互连12上传送请求其它处理单元10从它们的促进了解工具99中清除相应的项目的唯地址操作(address-onlyoperation)。响应对特定处理器关于不同促进位36的请求的窥探,促进了解工具99内特定处理单元10的项目也被更新为新的数值。
应注意促进了解工具99的实现不需要促进高速缓存20的实现,并且可在不具有促进高速缓存20的处理单元10内实现。此外,甚至在采用数据高速缓存线作为锁的其它传统数据处理系统中,也可采用根据本发明的促进了解工具99。此外,应认识到根据互连布局、协议和其它因素,促进请求的通信和管理的精度水平会在各种实现之间发生变化。
现在参见图4,图中描述了根据本发明,处理器核心14获得与共享数据区组相关的锁,之后释放该锁的方法的高级逻辑流程图。如图所示,该过程开始于方框130,之后前进到方框132,方框132描述了执行锁获得指令,从而获得关于特定数据区组的锁的处理器核心14。
例如,在第一实施例中,执行的获得锁的指令可以是以全局促进工具32的基地址为目标的通用或特殊装入指令,装入指令以操作数识别用于该锁的特定促进位36。在第一实施例中,锁获得和释放指令序列可表示成如下所示:
A load(bit ID) !试图获得关于该数据区组的锁
cmpi !确定是否获得锁(位值=0?)
bc A !如果未获得锁定,返回
… !如果获得锁定,处理共享区组
store(bit ID) !把位值重置为0,以便释放该锁
在图2A中图解说明的处理器核心实施例中,指令控制器50把用于获得锁的装入指令分派给LSU 66以便执行。LSU 66通过计算全局促进工具32的有效或真实地址,执行装入指令。如果需要的话,该请求地址随后被DMMU 80转换成真实地址,并基于该转换(例如,借助在块地址表(BAT)中进行表格查询),被提供给促进高速缓存20,而不是L1数据高速缓存18(如果实现有促进高速缓存20)。
在第二实施例中,通过把利用操作数标识用于锁的特定促进位36的特殊转移指令用作锁获得指令,可进一步缩短用于获得锁的指令序列。在第二实施例中,可如下表示锁获得和释放序列:
A bc bit ID,A !试图获得数据区组的锁;如果未
获得锁,返回
… !如果获得锁,处理共享区组
store(bit ID) !把位值重置为0,释放锁
在图2B图解说明的处理器核心实施例中,指令控制器50把用于获得锁的条件转移指令分派给BEU 62以便执行。BEU 62通过向促进高速缓存20发出指定该位ID的存取请求,执行该转移指令。
如图4的方框134中所示,响应存取请求,高速缓存控制器94通过参考高速缓存阵列90提供的命中/失败指示116和输出位值114,确定用于该锁的促进位36是否被存储在促进高速缓存20内。如果是,寄存器更新逻辑单元97利用该锁的位值更新处理器核心14内的一个寄存器(例如GPRF 72内的通用寄存器或者CRF 70内的选定寄存器)。随后在方框140通过查询GPRF72或CRF 70内的寄存器的位值,确定该锁是否自由。如果不自由,那么过程返回已说明的方框132。但是,如果成功获得锁,那么过程从方框140前进到下面说明的方框150及后续方框。
返回方框134,如果处理器核心的存取请求在促进高速缓存20中失败(或者如果没有实现促进高速缓存20),那么过程前进到方框136,方框136描述处理器核心14(在包括促进高速缓存20的实施例中,是高速缓存控制器94)(通过接口逻辑单元23)在互连12上发出以锁为目标的唯地址读取请求(如图5中在附图标记160处表示的那样)。响应对唯地址读取请求的窥探,与互连12耦接的装置(例如处理单元10、存储器控制器24等)提供图5的附图标记162总体表示的窥探响应。如上所述,响应逻辑单元40编辑这些窥探响应62,产生代表提供窥探响应的窥探装置的集体响应的单一组合响应(CR)164。组合响应164被至少提供给发出以锁为目标的读取请求的处理单元,如图4的方框138所示,并且最好被提供给窥探该事务的所有主体。
如图5中所示,和常规的锁获得方法相反,唯地址读取请求160在系统互连12上不具有任何提供锁值的相关数据占有期(associateddata tenure)。相反,组合响应164向请求方处理器核心14指出是否成功获得锁。例如,在上述实施例中,重试(Retry)组合响应一般指出该锁目前被另一处理器核心14占用,其它任意组合响应指出该锁对请求方处理器核心14可用。就确定组合响应来说,促进“所有权”的最高点(即如果促进位被存储,则为促进高速缓存20,否则为全局促进工具36)最好总是能够把促进位给予请求者,而不考虑各个窥探器的重试(Retry)响应。如上所述,高速缓存控制器94响应指示锁的获得的组合响应,分配高速缓存阵列90内的一个项目92。
在组合响应未指示成功获得锁的情况下,过程从方框138经方框142返回方框132。但是,在成功获得锁的情况下,过程前进到方框144,方框144图解说明了如果需要,从促进高速缓存20解除所选定的牺牲促进位的分配的情况。如上所述,解除分配的促进位36可返回给全局促进工具32或者直接被推送给另一处理单元10(或者其它组件)。
在方框144之后,过程前进到方框150,方框150图解说明例如通过FXU 64和FPU 68执行指令,处理器核心14处理(例如修改)与锁相关的共享数据。和上面所述的封锁到不持有预约的处理器的系统互连的现有系统相反,数据处理系统8的处理器核心14可控制系统互连12上的请求,并且当处理器核心持有该锁时,能够获得关于其它数据区组的锁。
在完成对与该锁相关的共享数据区组的处理之后,处理器核心14执行锁释放指令(例如保存指令),释放该锁,如方框152所示。之后,持有该锁的处理器核心14(或者稍后获得该锁的另一处理器核心14)最终在互连12上发出更新全局促进工具32的写入请求,指示该锁的释放。之后,该过程在方框156终止。
对于某些应用来说,对前述的锁获得方法和设备的进一步改进会是有利的。首先,可能希望集合多个促进位36(例如锁),以便响应对所有促进位36的单一锁获得指令或者获得尝试的失败,由一个处理器核心14原子地获得所有促进位36。
集合促进位36的数种实施例是可能的。例如,如果在锁获得序列中采用装入预约和有条件保存指令,那么可利用多个操作数实现有条件保存指令,从而只有当处理器核心持有由有条件保存指令的多个操作数指定的所有锁的有效预约时,有条件保存指令才能成功完成(即更新锁值)。从而,上面陈述的常规锁获得序列可重写为:
A load X !读取锁值
cmpi !比较,以确定锁是否可用
bc A !如果锁不可用,那么返回
B lwarx X !试图获得关于锁的预约
cmpi !确定是否获得锁的预约
bc A !如果没有获得预约,返回
C load Y !读取锁值
cmpi !比较,以确定锁是否可用
bc C !如果锁不可用,那么返回
D lwarx Y !试图获得锁的预约
cmpi !确定是否获得锁的预约
bc C !
E load Z !读取锁值
cmpi !比较,以确定锁是否可用
bc E !如果锁不可用,那么返回
F lwarx Z !试图获得锁的预约
cmpi !确定是否获得锁的预约
bc E !
G stwcx X,Y,Z !试图把所有锁一致设置成“已锁”状态
bc A !如果有条件保存失败,那么返回
… !处理借助锁X、Y和Z使对其访问同步的
共享数据
store X !通过重置为“未锁”状态,释放锁
store Y !通过重置为“未锁”状态,释放锁
store Z !通过重置为“未锁”状态,释放锁
类似地,可利用指示必须一致获得多个锁的多个操作数(或者位掩码)实现处理器核心14执行的获得锁的装入或分支锁获得指令和/或用于传送锁请求的互连操作。为了限制操作数字段的大小,在一些实施例中最好简单指定由软件分组的一组促进位36(例如组1,所述组1由软件指定为包括促进位3、27、532和1000)。如果所有指定的促进位都是自由的,那么所有指定的促进位36由处理器核心14获得,并被置为“1”;否则,对于所有指定的促进位36,获得锁的尝试失败。
当然,按照这种方式捆绑或集合促进位36降低了锁获得请求的成功率,因为所有锁必须同时可用。但是,对于许多种工作负荷来说,通过捆绑锁定,仍然提高了性能,因为在需要执行特定活动的一组锁中的所有锁变成可用之前,该组锁内的各个锁并不被单独持有。
以软件管理的资源的形式实现全局促进工具32有利于获得寻址灵活性和安全性。软件还可分割全局促进工具32或者定义处理器核心14和促进位36之间的结合性(affinity),从而只有特定的处理器核心14才能获得某些促进位36。参考图6-8能够更好地理解这些概念。
现在参见图6,图中图解说明了图1的数据处理系统8的例证软件结构的软件层框图。如图所示,软件结构在其最低层具有操作系统监控程序(或管理程序)170,操作系统监控程序(或管理程序)170在同时在数据处理系统8内执行的一个或多个操作系统28间分配资源。分配给操作系统28的每个实例的资源称为分区(partition)。从而,例如,监控程序170可把两个处理单元10分配给操作系统28a的分区,把四个处理单元10分配给操作系统28b的分区,把某些范围的真实和有效地址空间分配给每个分区。如下参考图7说明的那样,全局促进工具32内的促进位36包含在监控程序170分配给每个分区的资源之内。
在监控程序170之上运行的是操作系统28和应用程序172。本领域的技术人员会明白,每个操作系统28把资源从监控程序170分配给它的资源库分配给不同的操作系统进程和应用程序172,独立控制分配给其分区的硬件的操作,并提供各种应用程序编程接口(API),通过应用程序编程接口,可通过其应用程序172访问操作系统服务。可被编程执行各种各样的计算、控制、通信、数据管理和呈现功能中的任意一种功能的应用程序172包含许多用户级进程174。
现在参见图7,图中描述了分配存储映像资源,例如全局促进工具32内的促进位36的方法的高级逻辑流程图。图7中描述的过程(由每个操作系统28独自执行)采取(但是不要求)图6中图解说明的例证软件结构。
如图所示,在数据处理系统8的启动之后,该过程开始于方框180,之后前进到方框182,方框182图解说明了向监控程序170请求锁的分配的操作系统28。所述请求可指定,例如请求的锁数目。如方框184所示,响应所述请求(以及来自其它操作系统28的请求),监控程序170把一批锁(即特定促进位36)从全局促进工具32分配给操作系统28。监控程序170可把所有促进位36分配为锁,或者如上所述,可把一些促进位36分配为锁,并为将其它促进位36保留给其它类型的组件间协调。
该过程从方框184前进到方框186和188,方框186和188图解说明了从其锁库分配锁的操作系统28。根据本发明的优选实施例,操作系统28至少可从其锁库分配两种锁:旁路锁和受保护锁。这里,旁路锁被定义为在不实现存取保护的情况下,可被进程访问的锁,从而绕过通常由地址转换工具执行的存取保护。相反,受保护锁这里被定义为只有结合存取保护,才能被进程访问的锁。
如方框186中所示,操作系统28把旁路锁从其锁库分配给操作系统(例如内核)进程,并且可选地分配给应用程序172。操作系统28分配给应用程序172的旁路锁最好分别被分配给每个应用程序的单一进程(例如应用程序根进程(root process)),以便促进良性(well-behaved)应用程序。操作系统28还把受保护锁从其锁库分配给应用程序172,最好以分配给应用程序172的每页非真实(例如虚拟)地址空间固定数目的受保护锁的形式,分配给应用程序172。每个虚拟存储页的锁的数目可由操作系统28或者由处理器核心14内的模式位42(参见图1)确定,以便允许硬件优化锁分配。本领域的技术人员会认识到,对于将在每页分配的多个锁来说,当访问不同的锁定时,最好避免不必要地滚动(rolling)翻译后援缓冲器(TLB)。在旁路锁和受保护锁的分配之后,在方框190终止图7中图解说明的过程。
现在参见图8,图中图解说明了图2A和2B的DMMU 80的更详细方框图,图8描述了当绕过访问保护时,加速对存储映像资源,例如全局促进工具32的存取请求的方式。如图所示,DMMU 80包括与地址转换工具耦接的旁路逻辑单元212,所述地址转换工具包括翻译后援缓冲器(TLB)214和块地址表(BAT)216。本领域的技术人员众所周知,TLB214是最近访问的页框表(PFT)项目的高速缓存,访问所述页框表项目,以便把虚拟地址空间的均匀(uniform)页面内的非真实(例如有效或虚拟)地址转换成真实地址。BAT 26类似地通过访问缓存的表项目,把非真实地址转换成真实地址,但是被用于转换落入虚拟地址空间的非均匀(而不是均匀(uniform))块内的非真实地址。TLB 214和BAT 216都借助PFT项目内的存取保护位(对于基于PowerPC的处理器通常称为WIMG位),提供存取保护。
如图8中所示,DMMU 80从LSU(和/或图2B的实施例中的BEU 62)接收访问存储映像资源的请求地址200。请求地址200包括包含页字段208的低位部分和包含管理程序字段202、OS字段204和进程字段206的高位部分。管理程序字段202、OS字段204和进程字段206一般由管理程序170、操作系统28和进程(例如应用程序进程174)根据分配给每个软件,并由各个软件控制的真实和/或虚拟地址空间来确定。在OS字段204内设置旁路字段210,当请求地址200指定分配给任意应用程序或操作系统进程的旁路锁时,旁路字段210可被已被分配旁路锁的所述进程设置成旁路状态(例如“1”)。
响应请求地址200的接收,旁路逻辑单元212通过参考旁路字段210,确定是否应允许访问请求绕过TLB 214和BAT 216提供的存取保护。如果是,那么请求地址200可作为真实地址218直接传送给存储映像资源(例如促进高速缓存20或者系统存储器26),以便启动访问。从而,具有设置成旁路状态的旁路字段210的请求地址200绕过地址转换和存取保护,使相关访问请求的访问等待时间至少减少一个(一般多个)处理器周期。在请求地址200的旁路字段210不被设置成旁路状态的情况下,表示需要地址转换和存取保护,通过参考TLB 214或BAT 216转换包括管理程序字段202、OS字段204和进程字段206的请求地址200的高位部分,从而获得真实地址218的高位部分。与地址转换同时,TLB 214或BAT 216实现存取保护,确保允许发出访问请求的进程访问所请求的锁。之后,DMMU80传送真实地址218,启动对存储映像资源的访问。
虽然具体参考锁,更一般地说,参考存储映像全局促进工具说明了图7-8,但是应认识到参考图7和8描述的技术一般可应用于加速对任何存储映像工具的访问,不论所述存储映像工具是否驻留在存储设备中。
虽然参考优选实施例图示并描述了本发明,但是本领域的技术人员会明白,在不脱离本发明的精神和范围的情况下,可在形式和细节方面做出各种变化。例如,虽然已参考其中促进位被用作锁的特定实施例说明了本发明,但是本发明显然并不局限于这种实施例,相反可广泛应用于多处理器数据处理系统中的组件间协调。另外,虽然在一些情况下,本发明的描述假定必须独占持有某些促进位(例如某些锁),但是应理解,促进(promotion)的概念包括多个组件同时持有特定促进位,于是能够执行与该促进位相关的操作的能力。此外,所选定的促进位的独占性可局限在一组特定的处理单元中,或者局限在若干层次总线中的一条特定总线上。
此外,虽然已参考执行控制本发明的功能的软件的计算机系统,说明了本发明的各个方面,但是本发明显然也可实现成供数据处理系统之用的程序产品。定义本发明的功能的程序可通过各种信号承载媒介传送给数据处理系统,所述信号承载媒介包括(但不限于)不可重写存储媒介(例如CD-ROM)、可重写存储媒介(例如软盘或硬盘驱动器)和诸如数字和模块网络之类的通信媒介。于是应明白,当携带或者对控制本发明的功能的计算机可读指令编码时,这样的信号承载媒介构成本发明的备选实施例。
Claims (22)
1、数据处理系统内的数据处理方法,所述数据处理系统具有全局促进工具和通过互连耦接的若干处理器,所述方法包括:
响应所述若干处理器内第一处理器执行的获得指令,在至少排除所述若干处理器内的第二处理器的同时,在互连上传送唯地址操作,从而获得全局促进工具内的促进位字段;和
响应对所述唯地址操作的组合响应的接收,所述第一处理器通过参考所述组合响应,确定所述促进位字段的获得是否成功,所述组合响应代表所述若干处理器中的其它处理器对所述唯地址操作的集体响应。
2、按照权利要求1所述的方法,其中所述处理器包括包含寄存器位的寄存器,所述方法还包括:
响应所述组合响应,把所述处理器内的所述寄存器位设置成表示所述促进位字段的获得是否成功的状态;和
响应寄存器位的状态在多个执行路径中进行选择。
3、按照权利要求2所述的方法,其中所述设置包括设置控制寄存器位。
4、按照权利要求1所述的方法,其中传送唯地址操作包括传送唯地址读取操作。
5、按照权利要求1所述的方法,还包括:
所述若干处理器内的处理器提供对所述唯地址操作的若干窥探响应;和
编辑所述若干窥探响应,获得所述组合响应。
6、按照权利要求1所述的方法,还包括响应对所述促进位字段的获得是否成功的判断,分配所述第一处理器的高速缓存中的一个高速缓存项目。
7、按照权利要求1所述的方法,还包括:
响应第一处理器执行的释放指令,在互连上传送唯地址操作,释放全局促进工具内的促进位字段。
8、按照权利要求1所述的方法,还包括响应所述唯地址操作,自动修改全局促进工具内所述促进位字段的状态。
9、具有全局促进工具和通过互连耦接的若干处理器的数据处理系统的处理器,所述处理器包括:
指令控制器;
执行获得指令的执行单元;
在排除若干处理器中的至少一个另外的处理器的同时,在互连上传送唯地址操作,以获得全局促进工具内的促进位字段的装置;和
响应对所述唯地址操作的组合响应的接收,通过参考所述组合响应,确定所述促进位字段的获得是否成功的装置,所述组合响应代表所述若干处理器中的其它处理器对所述唯地址操作的集体响应。
10、按照权利要求9所述的处理器,还包括:
包含响应于所述组合响应被设置成表示所述促进位字段的获得是否成功的状态的寄存器位的寄存器;和
与寄存器和指令控制器耦接的分支电路,其中分支电路响应寄存器位的状态在多个执行路径中进行选择。
11、按照权利要求10所述的处理器,其中所述寄存器包括控制寄存器。
12、按照权利要求9所述的处理器,其中所述唯地址操作包括唯地址读取操作。
13、按照权利要求9所述的处理器,还包括响应对所述促进位的获得是否成功的判断,为所述促进位字段分配一个项目的高速缓存。
14、按照权利要求9所述的处理器,还包括:
响应释放指令的执行,在互连上传送唯地址操作,以便释放全局促进工具内的促进位字段的装置。
15、一种数据处理系统,包括:
包含促进位字段的全局促进工具;和
与所述全局促进工具耦接,并与互连耦接的若干处理器,其中所述若干处理器包括一个第二处理器和一个第一处理器,所述第一处理器包括:
指令控制器;
执行获得指令的执行单元;
在至少排除第二处理器的同时,在互连上传送唯地址操作,以获得全局促进工具内的促进位字段的装置;和
响应对所述唯地址操作的组合响应的接收,参考所述组合响应,确定所述促进位字段的获得是否成功的装置,所述组合响应代表所述若干处理器中的其它处理器对所述唯地址操作的集体响应。
16、按照权利要求15所述的数据处理系统,其中所述第一处理器还包括:
包含响应于所述组合响应被设置成指示所述促进位字段的获得是否成功的状态的寄存器位的寄存器;和
与寄存器和指令控制器耦接的分支电路,其中分支电路响应寄存器位的状态在多个执行路径中进行选择。
17、按照权利要求16所述的数据处理系统,其中所述寄存器包括控制寄存器。
18、按照权利要求15所述的数据处理系统,其中所述唯地址操作包括唯地址读取操作。
19、按照权利要求15所述的数据处理系统,其中:
所述若干处理器中的每一个包括提供对所述唯地址操作的若干窥探响应的装置;和
所述数据处理系统包括编辑所述若干处理器的窥探响应,获得所述组合响应的响应逻辑单元。
20、按照权利要求15所述的数据处理系统,还包括与所述第一处理器相关,响应对所述促进位字段的获得成功的判断,为所述促进位字段分配一个项目的高速缓存。
21、按照权利要求15所述的数据处理系统,所述第一处理器还包括:
响应释放指令的执行,在互连上传送唯地址操作,以释放全局促进工具内的促进位字段的装置。
22、按照权利要求15所述的数据处理系统,还包括响应所述唯地址操作,自动修改全局促进工具内的促进位字段的状态的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/268,727 | 2002-10-10 | ||
US10/268,727 US6829698B2 (en) | 2002-10-10 | 2002-10-10 | Method, apparatus and system for acquiring a global promotion facility utilizing a data-less transaction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1497468A CN1497468A (zh) | 2004-05-19 |
CN1262942C true CN1262942C (zh) | 2006-07-05 |
Family
ID=32068632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN03159463.8A Expired - Fee Related CN1262942C (zh) | 2002-10-10 | 2003-09-25 | 利用无数据事务获得全局促进工具的方法、设备和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6829698B2 (zh) |
CN (1) | CN1262942C (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7565509B2 (en) * | 2002-04-17 | 2009-07-21 | Microsoft Corporation | Using limits on address translation to control access to an addressable entity |
US7334102B1 (en) * | 2003-05-09 | 2008-02-19 | Advanced Micro Devices, Inc. | Apparatus and method for balanced spinlock support in NUMA systems |
CA2435148A1 (en) * | 2003-07-15 | 2005-01-15 | Robert J. Blainey | System and method for lock caching for compound atomic operations on shared memory |
US7356653B2 (en) * | 2005-06-03 | 2008-04-08 | International Business Machines Corporation | Reader-initiated shared memory synchronization |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US9213665B2 (en) * | 2008-10-28 | 2015-12-15 | Freescale Semiconductor, Inc. | Data processor for processing a decorated storage notify |
US8627471B2 (en) * | 2008-10-28 | 2014-01-07 | Freescale Semiconductor, Inc. | Permissions checking for data processing instructions |
JP5321203B2 (ja) * | 2009-03-31 | 2013-10-23 | 富士通株式会社 | システム制御装置、情報処理システムおよびアクセス処理方法 |
US8266498B2 (en) * | 2009-03-31 | 2012-09-11 | Freescale Semiconductor, Inc. | Implementation of multiple error detection schemes for a cache |
CN102103523A (zh) * | 2009-12-22 | 2011-06-22 | 国际商业机器公司 | 锁分配控制的方法和装置 |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US9274793B2 (en) | 2011-03-25 | 2016-03-01 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9442772B2 (en) * | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
WO2012162188A2 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
US20150039859A1 (en) | 2011-11-22 | 2015-02-05 | Soft Machines, Inc. | Microprocessor accelerated code optimizer |
IN2014CN03678A (zh) | 2011-11-22 | 2015-09-25 | Soft Machines Inc | |
US8863141B2 (en) | 2011-12-14 | 2014-10-14 | International Business Machines Corporation | Estimating migration costs for migrating logical partitions within a virtualized computing environment based on a migration cost history |
US8694995B2 (en) * | 2011-12-14 | 2014-04-08 | International Business Machines Corporation | Application initiated negotiations for resources meeting a performance parameter in a virtualized computing environment |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
KR20150130510A (ko) | 2013-03-15 | 2015-11-23 | 소프트 머신즈, 인크. | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
KR102063656B1 (ko) | 2013-03-15 | 2020-01-09 | 소프트 머신즈, 인크. | 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법 |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9478274B1 (en) | 2014-05-28 | 2016-10-25 | Emc Corporation | Methods and apparatus for multiple memory maps and multiple page caches in tiered memory |
US9535844B1 (en) * | 2014-06-30 | 2017-01-03 | EMC IP Holding Company LLC | Prioritization for cache systems |
US10235054B1 (en) | 2014-12-09 | 2019-03-19 | EMC IP Holding Company LLC | System and method utilizing a cache free list and first and second page caches managed as a single cache in an exclusive manner |
FR3103586B1 (fr) * | 2019-11-22 | 2023-04-14 | St Microelectronics Alps Sas | Procédé de gestion du fonctionnement d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant |
FR3103584B1 (fr) * | 2019-11-22 | 2023-05-05 | St Microelectronics Alps Sas | Procédé de gestion du débogage d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4825358A (en) * | 1985-04-10 | 1989-04-25 | Microsoft Corporation | Method and operating system for executing programs in a multi-mode microprocessor |
US5347636A (en) * | 1985-11-08 | 1994-09-13 | Nec Corporation | Data processor which efficiently accesses main memory and input/output devices |
US5050072A (en) * | 1988-06-17 | 1991-09-17 | Modular Computer Systems, Inc. | Semaphore memory to reduce common bus contention to global memory with localized semaphores in a multiprocessor system |
US4919128A (en) * | 1988-08-26 | 1990-04-24 | University Technologies International Inc. | Nasal adaptor device and seal |
US5428793A (en) * | 1989-11-13 | 1995-06-27 | Hewlett-Packard Company | Method and apparatus for compiling computer programs with interproceduural register allocation |
EP0513519A1 (en) * | 1991-05-15 | 1992-11-19 | International Business Machines Corporation | Memory system for multiprocessor systems |
US5237694A (en) * | 1991-05-30 | 1993-08-17 | Advanced Micro Devices, Inc. | Processing system and method including lock buffer for controlling exclusive critical problem accesses by each processor |
US5408629A (en) * | 1992-08-13 | 1995-04-18 | Unisys Corporation | Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system |
US5619671A (en) * | 1993-04-19 | 1997-04-08 | International Business Machines Corporation | Method and apparatus for providing token controlled access to protected pages of memory |
US5983329A (en) * | 1996-05-03 | 1999-11-09 | Sun Microsystems, Inc. | Caching virtual memory locks |
US5937185A (en) * | 1996-09-11 | 1999-08-10 | Creative Technology, Inc. | Method and system for device virtualization based on an interrupt request in a DOS-based environment |
US5826084A (en) * | 1997-03-25 | 1998-10-20 | Texas Instruments Incorporated | Microprocessor with circuits, systems, and methods for selectively bypassing external interrupts past the monitor program during virtual program operation |
US6557091B2 (en) * | 1997-08-22 | 2003-04-29 | Koninklijke Philips Electronics N.V. | Data processor with localized memory reclamation |
US6148300A (en) * | 1998-06-19 | 2000-11-14 | Sun Microsystems, Inc. | Hybrid queue and backoff computer resource lock featuring different spin speeds corresponding to multiple-states |
US6480918B1 (en) * | 1998-12-22 | 2002-11-12 | International Business Machines Corporation | Lingering locks with fairness control for multi-node computer systems |
US6442664B1 (en) * | 1999-06-01 | 2002-08-27 | International Business Machines Corporation | Computer memory address translation system |
US6412043B1 (en) * | 1999-10-01 | 2002-06-25 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
EP1182562B1 (en) * | 2000-08-21 | 2011-05-11 | Texas Instruments France | Smartcache with interruptible block prefetch |
US6801986B2 (en) * | 2001-08-20 | 2004-10-05 | Hewlett-Packard Development Company, L.P. | Livelock prevention by delaying surrender of ownership upon intervening ownership request during load locked / store conditional atomic memory operation |
US7428732B2 (en) * | 2001-12-05 | 2008-09-23 | Intel Corporation | Method and apparatus for controlling access to shared resources in an environment with multiple logical processors |
US6839816B2 (en) * | 2002-02-26 | 2005-01-04 | International Business Machines Corporation | Shared cache line update mechanism |
US6922745B2 (en) * | 2002-05-02 | 2005-07-26 | Intel Corporation | Method and apparatus for handling locks |
-
2002
- 2002-10-10 US US10/268,727 patent/US6829698B2/en not_active Expired - Fee Related
-
2003
- 2003-09-25 CN CN03159463.8A patent/CN1262942C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1497468A (zh) | 2004-05-19 |
US20040073759A1 (en) | 2004-04-15 |
US6829698B2 (en) | 2004-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1262942C (zh) | 利用无数据事务获得全局促进工具的方法、设备和系统 | |
CN1272714C (zh) | 数据处理系统内分配和访问存储映像工具的方法、设备和系统 | |
CN1315060C (zh) | 储存存储器型式数据的转译旁视缓冲器 | |
US7827374B2 (en) | Relocating page tables | |
US7490214B2 (en) | Relocating data from a source page to a target page by marking transaction table entries valid or invalid based on mappings to virtual pages in kernel virtual memory address space | |
US7213248B2 (en) | High speed promotion mechanism suitable for lock acquisition in a multiprocessor data processing system | |
CN1306420C (zh) | 利用永久历史页表数据预取数据到高速缓存的装置和方法 | |
CN1248118C (zh) | 以推测方式使高速缓存中的缓存行失效的方法及系统 | |
CN100573477C (zh) | 管理锁定的高速缓冲存储器中的组替换的系统和方法 | |
US11200168B2 (en) | Caching data from remote memories | |
CN1266589C (zh) | 多重高速缓冲存储器线写回和作废技术 | |
CN101042680A (zh) | 更新无效一致状态的方法、数据处理系统和高速缓存系统 | |
CN1685320A (zh) | 具有储存远程快取存在信息的处理器高速缓存的计算机系统 | |
CN103959257A (zh) | 用于持久性指针管理的软件转换后备缓冲器 | |
JPH07311711A (ja) | データ処理装置とその動作方法及びメモリ・キャッシュ動作方法 | |
US6920514B2 (en) | Method, apparatus and system that cache promotion information within a processor separate from instructions and data | |
US7721047B2 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
CN1254753C (zh) | 通过执行转移指令访问全局促进工具的方法、设备和系统 | |
CN1869957A (zh) | 数据处理系统中的数据处理方法和装置 | |
CN1869956A (zh) | 数据处理系统中的数据处理的方法和装置 | |
CN1258152C (zh) | 管理释放的促进位的方法 | |
CN1829961A (zh) | 无共享数据库系统中的所有权再分配 | |
CN113138851B (zh) | 一种数据管理方法、相关装置及系统 | |
US6842847B2 (en) | Method, apparatus and system for acquiring a plurality of global promotion facilities through execution of an instruction | |
US7383390B1 (en) | Resource-limited directories with fine-grained eviction |
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: 20060705 Termination date: 20200925 |
|
CF01 | Termination of patent right due to non-payment of annual fee |