CN101401071B - 利用存储和预留指令执行高速缓存线轮询操作的方法、系统、设备和产品 - Google Patents
利用存储和预留指令执行高速缓存线轮询操作的方法、系统、设备和产品 Download PDFInfo
- Publication number
- CN101401071B CN101401071B CN2007800089935A CN200780008993A CN101401071B CN 101401071 B CN101401071 B CN 101401071B CN 2007800089935 A CN2007800089935 A CN 2007800089935A CN 200780008993 A CN200780008993 A CN 200780008993A CN 101401071 B CN101401071 B CN 101401071B
- Authority
- CN
- China
- Prior art keywords
- reservation
- data
- storage area
- storage
- load operation
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000004519 manufacturing process Methods 0.000 title abstract 2
- 230000008569 process Effects 0.000 claims abstract description 42
- 230000009471 action Effects 0.000 claims abstract description 14
- 238000003860 storage Methods 0.000 claims description 68
- 238000012545 processing Methods 0.000 description 33
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 8
- 230000000875 corresponding effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000010365 information processing Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000005055 memory storage Effects 0.000 description 5
- 238000011112 process operation Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
Images
Classifications
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在此公开了一种利用存储和预留指令执行高速缓存线轮询的方法、系统、设备和产品。根据本发明的一个实施例,第一进程初始地请求第二进程执行一个动作。经由存储操作在可高速缓冲存储区域设置预留。所述第一进程经由加载操作读取所述可高速缓冲存储区域,以确定所请求的动作是否已经被第二进程完成。所述第一进程的加载操作停止,直到所述可高速缓冲存储区域上的预留丢失。在所请求的动作被完成之后,由第二进程复位在所述可高速缓冲存储区域中的预留。
Description
技术领域
本发明的实施例一般地涉及数据处理系统的操作,并且更特别地涉及一种利用存储和预留指令执行高速缓存线轮询的方法、系统、设备和产品。
背景技术
在现代计算技术出现之初,信息处理(例如:计算机)系统包括有限数量的组件,包括:单处理器、系统存储器和少量的输入/输出(I/O)装置,例如显示装置、键盘以及与图形用户接口的创建有关的指针控制装置(例如鼠标、轨迹球或者类似装置)。然而,随着信息处理系统的发展,经由通信和对于系统共享资源的竞争而互相连接的系统组件数量显著增加。因此,现代的常规信息处理系统可能包括大量的系统组件(例如,利用SMP(对称多处理器)、ASMP(非对称多处理器)、NUMA(非一致性存储器存取)或者类似配置的多个处理器,协处理器,直接存储器存取控制器,以及每个都有可能包含附属的处理器、寄存器和存储器的I/O装置。)
为了在现代信息处理系统中协调系统组件的活动,已经采用了多种技术。信息处理系统组件可以利用与中断服务例程或处理器结合的中断来传达和/或指示一个事件的发生。同样,可利用存储器映射的I/O和端口或“端口映射”的I/O在系统组件(例如处理器和I/O装置)之间提供通信。
在用于执行输入/输出(I/O)操作目的的单元间的数据传送中,信息处理系统的单元之间的活动的协调是特别重要的。例如,在信息处理系统处理器向缓冲器中存放了旨在由I/O装置或者多处理器系统中的另一处理器进行处理的数据之后,数据提供处理器通常将通知I/O装置或数据接收处理器到缓存器的数据传送已完成。在常规信息处理系统中,通常通过向I/O装置或数据接收处理器中的存储器映射输入/输出(MIMO)寄存器写入特定数据值来完成这样的通知。检测到对关联MIMO寄存器的写操作之后,I/O装置或数据接收处理器可以经由直接存储器存取(DMA)从缓冲器中取回数据。
在一些常规信息处理系统中,可以经由MMIO寄存器轮询或经由中断来检测数据的DMA取回的完成。然而因为对于相对小的缓冲器来说中断开销通常太大,以及MMIO寄存器轮询低效地使用总线带宽(否则该总线带宽将可以用于DMA传送,从而提高整个系统的吞吐量),所以MMIO寄存器轮询和中断都不是检测DMA完成的有效机制。
在另一种被称为“高速缓存线轮询”的用于检测DMA完成的常规技术中,在通知I/O装置(例如:经由MMIO)有关缓冲器的可用性之前,将预先确定的“占用”指示符数据值写入可高速缓冲存储区域,通常将其称为缓冲器标记或信号(semaphore)。然后处理器针对预先确定的“未占用”指示符数据值轮询缓冲器标记,以检测相应DMA的完成。由于数据已经在处理器的高速缓冲存储器中修改,高速缓存线轮询不会产生任何附加的总线活动。在完成从缓冲器中取回(DMA)数据后,I/O装置或接收处理器将“未占用”完成数据值写入缓冲器标记。然后,数据提供处理器可以经由标准的高速缓冲一致性协议存取新缓冲器标记值,其间高速缓冲存储器中“占用”指示缓冲器标记数据失效或由新完成值代替。
从系统的观点来看,高速缓存线轮询是一种有效的轮询机制。然而,为了实现高速缓存线轮询,数据提供处理器重复执行“轮询”指令集直到DMA传送完成且缓冲器标记值更新,这样浪费了有价值的系统资源(例如:处理器周期、总线周期,电量,指令或线程分派时隙,或类似的资源)。
发明内容
在此公开了一种用于利用存储和预留指令执行高速缓存线轮询的方法、系统、设备和产品。根据本发明的一个实施例,第一进程初始地请求第二进程执行一个动作。经由存储操作在可高速缓冲存储区域设置预留。所述第一进程经由加载操作读取所述可高速缓冲存储区域以确定所请求的动作是否已经被第二进程完成。所述第一进程的加载操作停止,直到所述可高速缓冲存储区域上的预留丢失。在所请求的动作被完成之后,由第二进程复位在所述可高速缓冲存储区域中的预留。
前述是一个概要并因而必然包括对细节的简化、概括和省略;所以,本领域的普通技术人员应该明白此概要仅是说明性的,并且不旨在进行任何限制。同样,本领域的普通技术人员将明白,能以许多方式实现在此公开的操作,包括硬件形式、软件形式或其组合形式的实现,而且在不脱离本发明及其广泛方面的情况下,可进行这些改变和修正。仅由权利要求限定的本发明的其他方面、发明特征以及优点在后面阐述的非限制性详细描述中将变得显而易见。
附图说明
参考附图,本发明将更容易理解,并且对本领域的普通技术人员来说,其多数特征和优点将变得显而易见,其中:
图1示出了包括根据本发明的一个实施例的信息处理系统的通信网络;
图2示出了根据本发明的一个实施例的信息处理系统的高级框图;
图3示出了表示根据本发明的一个实施例的信息处理系统选定部分的框图,其能够利用存储指令和预留指令以及在预留丢失时的加载指令来执行高速缓存线轮询;
图4示出了根据本发明的一个实施例的用于针对存储指令和预留指令而管理预留的状态机的状态图;
图5示出了根据本发明的一个实施例的利用存储指令和预留指令执行高速缓存线轮询的过程的流程图;以及
附图中使用相同或相似的参考符号来指示相似或同样的项目。
具体实施方式
以下内容详细描述了至少是完成这里描述的一个或多个系统、装置和/或过程最好的预期方式。这些描述用于说明并且不应该看作限制。
在以下详细描述中,给出了许多特定细节,比如特定的方法顺序、结构、单元和连接。然而应该明白,不需要使用这些和其他特定细节来实现本发明的实施例。在其他情况下,省略了或者没有特别详细地描述众所周知的结构、单元或者连接,目的是避免不必要地使描述不清楚。
说明书中引用“一个实施例”、“实施例”或者“多个实施例”旨在有关于实施例而描述的特定特征、结构或特性包括在本发明的至少一个实施例中。在说明书中不同地方出现这样的短语不一定是指同一实施例,也不一定是指与其他实施例相互排斥的独立或可选实施例。此外,描述的多种特征可能由某些实施例展示,而不由其他实施例展示。同样,描述的多种需求可能是一些实施例所需要的,而不是另一些实施例所需要的。
本发明实施例提供了可用于执行高速缓存线轮询的存储和预留指令,其包含于在此所述的方法、信息处理系统和机器可读介质产品中。图1示出了包括根据本发明的一个实施例的信息处理系统的通信网络。在本发明的一个或更多实施例中,在设置加载预留的先前设置的加载预留已经“丢失”或复位后,在存储和预留(STAR)指令之后执行的常规加载(LD)指令将完成执行并返回数据,否则通常将停止。在一个实施例中,STAR指令可以在单一的高速缓存线轮询例程循环中使用,以便正确地管理预留。
如图1所示,系统101包括网络104,多个信息处理系统(例如计算机和计算装置)和它相连。在本发明的多种实施例中,网络104可以包括局域网、全球网(例如因特网)或任何其他通信网络。在图1所示的实施例中,连接到网络104的信息处理系统包括客户端计算机106、服务器计算机108、个人数字助理(PDA)110、数字电视(DTV)112并且还可以包括其他没有显示的有线或无线计算机和计算装置。在所示的实施例中,网络104的成员信息处理系统使用的处理部件由通用的计算模块构成。这些处理部件优选地还都具有相同的指令集体系结构(ISA),并根据通用的处理器指令集完成处理。
在图1所示的实施例中,包含在任意特定处理部件内的计算模块数量依赖于该处理部件要完成的信息处理需要的处理能力。例如,由于系统101的服务器108比客户端106完成更多的数据和应用处理,所以服务器108比客户端106包含更多的计算模块。另外,PDA110完成相对少量的处理。在所示的实施例中,每个计算模块包含处理控制器和多个同样的处理单元,用以完成网络104上传输的数据和应用的并行处理。
系统101的同类配置提高了适应性、处理速度和处理效率。因为系统101的每一成员利用一个或多个(或一些部分)同样的计算模块完成处理,所以完成数据和应用实际处理的特定计算机或计算装置与在常规系统中相比具有更少的相关性。而且,特定应用和数据的处理可以在网络成员间共享。通过在全系统内唯一地标识包含由系统101的处理数据和应用的单元,可以将处理结果传送给请求处理的计算机或计算装置,而不管处理发生在哪里。因为完成该处理的模块具有通用的结构和使用通用的ISA,所以避免了用于达到处理部件之间兼容的附加软件层的计算负担。这种体系结构和编程模型提高了例如实时执行多媒体应用所必须的处理速度。
为了更好的利用由系统101提高的处理速度和效率,将该系统处理的数据和应用打包为唯一识别的、统一格式的软件单元102。每个软件单元102包括,或者可以包括,应用和数据。每个软件单元102还包括一个ID(标识符),以便在网络104和系统101中全局地识别该单元。软件单元的这种结构统一性和软件单元在整个网络上的唯一标识有利于在网络104的任何计算机和计算装置上处理应用和数据。例如,客户端106可以设计一个软件单元102,但是因为客户端106的处理能力的限制,它将该软件单元传送给服务器108进行处理。因此,软件单元可以在整个网络104内转移,以便根据网络上处理资源的可用性来进行处理。
系统101的处理部件和软件单元的同类结构也避免了目前异构网络的许多问题。例如,避免了效率低下的编程模型,其寻求允许在使用例如虚拟机(诸如JAVA虚拟机之类)的任何ISA上处理应用。因此,系统101可以实现远比常规网络更有效且效率更高的宽带处理。
图2示出了根据本发明实施例的信息处理系统的高级框图。虽然针对图2的信息处理系统示出了特定数量和排列的部件,但应该意识到,本发明的实施例不限于具有任何特定数量、类型或者排列的组件的数据处理系统,而且可以包括多种数据处理系统类型、体系结构和形式要素(例如网络部件或节点、个人计算机、工作站、服务器等)。
图2描述的信息处理系统是单元宽带引擎(Cell BroadbandEngine:CBE)体系结构的一个例子,其中可以实现本发明的示例性方面。如图2所示,CBE200包括一个主处理器单元(PPE)210和多个协处理器单元(SPE)220-234,它们通过高速宽带内部单元互连总线(EIB)286通信互连并和这里还将描述的附加系统单元通信连接。如图所示,所示出的实施例的CBE200还包括一个或多个外部总线或装置290,它通过总线接口控制器(BIC)287连接到EIB286;还包括共享存储器289,它通过存储器接口控制器(MIC)288连接到EIB286。
CBE200可以是一个芯片级系统,从而图2描述的每个单元可以提供于单个微处理器芯片上。而且,在一个实施例中,CBE200可以提供为异构处理环境,其中系统中SPE220-234中每一个可以从每个其他的SPE接收不同的指令;并且,每个SPE的指令集不同于PPE210的指令集,例如PPE210可以执行基于精简指令集计算机(RISC)的指令,而SPE200-234执行向量指令。
在图2所示的实施例中,SPE220-234通过EIB286彼此相连并连接到PPE210。另外,SPE220-234的每一个通过EIB286分别连接到MIC288和BIC287。MIC288提供到共享存储器289的通信接口。共享存储器289可包括任何多个系统存储器类型的存储单元(例如随机存取存储器(RAM)、只读存储器(ROM)、闪存等)。BIC287提供CBE200与其他外部总线和装置290之间的通信接口。示例性外部装置可包括:传统的I/O装置,比如键盘、显示器、打印机、指针控制装置(例如轨迹球、鼠标、手写板等)、扬声器以及麦克风;存储装置,比如固定的或“硬”磁媒体存储装置、光存储装置(例如CD或者DVD ROM)、固态存储装置(例如USB、安全数字SDTM卡、压缩闪存CFTM卡、MMC等)、可移动磁介质存储装置(比如软盘和磁带),或者其他存储装置或介质;以及有线的或无线的通信装置或媒体(例如通过调制解调器或直接网络接口存取的通信网络)。
在本发明的一个实施例中,PPE210是双线程处理单元。该双线程PPE210和8个SPE220-234的结合使CBE200能够处理10个并行线程以及超过228个未完成的存储器请求。在通常操作环境下,PPE210充当8个SPE220-234的控制器,这些SPE处理多数的计算工作量,例如,PPE210可用于执行一个或多个传统的操作系统,而SPE220-234完成向量浮点编码的执行。
在一个实施例中,PPE210包括主处理器单元(PPU)或核心以及相关的一级(L1)和二级(L2)高速缓冲存储器(未示出);并且SPE220-234中的每个SPE包括协处理单元(SPU)、存储器流控制单元、本地存储器以及包括直接存储器存取(DMA)控制器、存储器管理单元(MMU)和总线接口单元(未示出)的组合的总线接口单元。在一个示例性实施例中,所述本地存储器包括256KB的指令和数据存储器,其对于PPE210是可见的并且可由软件直接寻址。
PPE210可用小程序或线程加载SPE220-234,将SPE链接在一起处理复杂操作中的每个步骤。例如,装有CBE200的机顶盒可加载用于读DVD、进行视频和音频解码并显示的程序,并且数据从SPE传到SPE直到最终显示在输出显示器上。在4GHZ,每个SPE220-234给出理论上32GFLOPS的性能,PPE210也有相似性能级别。在操作中,PPE210也可以执行指令并将从共享存储器289取回的数据通过MIC288处理到其本地寄存器或高速缓存。同样,外部装置290也可例如通过BIC287和SPE220-234中一个或多个DMA控制器访问共享存储器289。
图3示出了表示根据本发明实施例的信息处理系统的选定部分的框图,其能够利用存储指令和预留指令以及在预留丢失时的加载指令来执行高速缓存线轮询。在当前描述中,类似的参考标号用以表示图2和图3的信息处理系统之间相应的系统单元。例如,图3所示实施例中的PPE310对应于图2中的PPE210。图3中的信息处理系统300包括PPE310,其通过EIB386分别利用MIC388和BIC387连接到共享存储器389和外部装置390。
在图3所示的实施例中,共享存储器389包括可高速缓冲存储区域336,如图所示其包含指定缓冲器标记数据值的数据。PPE310包含主处理单元(PPU)316,如图所示其分级连接到L1高速缓冲存储器312和L2高速缓冲存储器314。在图3的实施例中,PPU316包括多个功能单元和数据存储单元。更具体地,PPU316包括:加载/存储单元318,用来执行存储器存取指令(例如,从存储器中加载和存入存储器);和条件寄存器320,其以位或标记的形式存储数据,其指示PPU316的当前状态,反映某些数据处理或信息处理操作的结果(例如,数据溢出或下溢,肯定的或否定的结果,或类似情况)。
L1高速缓冲存储器312和L2高速缓冲存储器314中的每一个包括高速缓冲存储器管理单元(CMU)(例如,L1高速缓冲存储器312的CMU322和L2高速缓冲存储器314的CMU328)以及存储单元(例如,L1高速缓冲存储器312的存储单元324和L2高速缓冲存储器314的存储单元332)。CMU322和CMU328均用于控制相应存储单元324和332内的数据和/或指令的存储,例如执行高速缓存线替换算法、更新高速缓存线状态或状态元数据等等。存储单元324和332接着用于存储数据线或块,包括应用数据和/或指令以及伴随的元数据(例如,高速缓冲存储器标签、状态位等)。虽然CMU322和CMU328描述为它们各自高速缓冲存储器的完整单元或模块,但在本发明的可选实施例中,CMU322和/或CMU328或其功能可以以另外的配置提供(例如:在L1高速缓冲存储器312和L2高速缓冲存储器314之一内,在PPU316内,作为独立单元或模块,或者单元或模块的组合)。
根据本发明的一个实施例,PPU316可以用于通过执行存储和预留(STAR)指令而完成高速缓存线轮询,现在将对此进行描述。在操作中,PPU316的加载/存储单元318可首先用于执行STAR指令,以使得将指定“占用”缓冲器标记指示符数据值(例如:0xBB)的数据存入共享存储器389的可高速缓冲存储区域336,如虚线338所指示的那样。在所示实施例中,所述STAR指令用来信号通知相关外部装置390(例如:图形装置):将由该装置取回的数据已经存储于相关缓冲器(例如:共享存储器389的专用部分或者信息处理系统300内部或外部的其他存储器)中。在本发明的其他实施例中,更多的操作(例如:异常或中断产生、信令、MMIO写操作等等)可用来通知外部装置390数据已写成存储于可高速缓冲存储器特定区域336中的缓冲器标记,而且可以着手从所述缓冲器取回数据。
一旦PPU316完成所述STAR,就可以利用PPE310继续执行高速缓存线轮询,其中可以执行LDRL指令以使得将存储于共享存储器389的可高速缓冲存储区域336的数据存入PPU316的一个寄存器(例如:通用寄存器)中(未显示)。如这里进一步描述地,所述STAR指令使得通过在L2高速缓冲存储器314内的预留寄存器330内存储特定数据值而设定预留。在一个实施例中,通过在预留寄存器330的预留位以及与预留相关的相应存储区域(例如:与共享存储器389的可高速缓冲存储区域336相关的特定存储器位置或区域)的存储器地址中存储逻辑“1”来设置预留。在所述实施例中,预留寄存器330中预留的设置和复位使得条件寄存器320内相应预留状态位被设置或复位。尽管预留寄存器330在L2高速缓冲存储器314的CMU328中示出,但在本发明另外的实施例中,这样的预留寄存器或数据也可存储于信息处理系统300的其他位置(例如:在L1高速缓冲存储器312、PU316、独立的总线/EIB接口单元等内)。
在已经设置预留后,所述LDRL指令停止运行(例如临时挂起而不执行或发行/完成),直到在多个信息处理系统事件中的一个或多个事件发生后,预留被清除或“复位”,正如这里将更充分地描述并由条件寄存器320中相应预留状态位所指示的那样。在一个实施例中,在检测到(例如:由外部装置390)尝试、请求或完成如虚线340所示的向可高速缓冲存储区域336的写操作后,可以由L2高速缓冲存储器314的CMU328使用高速缓冲存储器“监听”操作复位预留。一旦外部装置390修改了存储于可高速缓冲存储区域336内的缓冲器标记数据,就会使得预留被复位并因此“丢失”,先前停止的LDRL指令可以重新开始,导致缓冲器标记的数据值分别分级存储在L1高速缓冲存储器312和L2高速缓冲存储器314内的存储单元324和332中,并最终分级存储在PPU316内的特定寄存器中。
如这里将更充分地描述的那样,一旦LDRL操作成功完成,就可以将取回的缓冲器标记的数据值与已知的“占用”和/或“未占用”缓冲器标记指示符数据值进行比较。所述比较可以用于判定外部装置390是否已经完成取回(例如通过DMA传输)先前存储于相关缓冲器中的数据,从而例如相关缓冲器可再用于到外部装置390的其他数据传输。
图4示出了根据本发明的一个实施例的状态机的状态图,其用于针对存储和预留指令来管理预留。因此所示“状态机”代表了将由信息处理系统(例如,图3中的信息处理系统300)的一个或多个单元完成的操作或并入到所述单元中的功能性。在一个实施例中,这样的功能性被并入例如图3中的PPU316的处理部件或单元,在其他的实施例中,这样的功能性可包含在能够监视和控制相关信息处理系统的操作的独立的或附加的系统单元中。在本发明的一个实施例中,针对发起或支持的每个硬件线程,举例说明了图4状态图表示的功能性。
如图所示,状态机400包括五个独立状态,即状态S0、状态S1、状态S2、状态S3和状态S4。在一个实施例中,使用STAR指令来设置缓冲器标记“占用”指示符数据值,以便初始化要存取的缓冲器数据的状态,并如此处所描述地,设置加载预留。
在初始状态S0,状态机400收到加载指令后,记录针对缓冲器标记的高速缓存线地址,并进入状态S1。所述加载的对象是相应于存储缓冲器标记的高速缓存线的地址。多个加载预留可同时存在。
在高速缓冲存储器状态检查的状态S1,检查高速缓冲存储器的状态。如果存储缓冲器标记的高速缓存线是无效的,则状态机400进入状态S4。如果存储缓冲器标记的高速缓存线被修改或共享,则状态机400进入状态S2。
在等待预留丢失的状态S2,当存在加载预留用于加载操作时,状态机400保持空闲。当加载预留丢失后,状态机400进入状态S4。
高速缓冲存储器具有一种机制可以检测是否另一处理器正在存取其高速缓存线中的一个。这种机制通常称为监听器。同样的处理可以由状态机400用来判定高速缓存线是否被其他处理器或装置修改。另外,状态机400监视同一处理器上的其他线程或共享高速缓冲存储器的其他处理器对缓冲器标记的存储指令。
如果状态S2的唯一退出是由于存储缓冲器标记的高速缓存线被修改,那么处理器可能死锁(也就是不再进行任何操作)。在本发明的一个或更多可选实施例中,增加了其他的退出条件以使得即使加载预留没有丢失时状态机400也可以进入状态S4,以避免可能死锁的情况。例如,可以使用中断来启动或导致状态S2到状态S4的转换。在所述实施例中,如果中断指向停止的处理器或处理器线程,则状态机400将退出到状态S4,以使得中断被处理。如果中断不被处理,则处理器或其他装置就不更新缓冲器标记。
在另一示例性实施例中,可以使用超时来引起状态S2到状态S4的转换。为了避免在不可接受的长时间段内等待发生在状态S2和状态S4之间的转换,可以使用软件来触发针对高速缓存线轮询周期的超时。利用超时选项,状态机400经过特定时间量后将退出到状态S4。在本发明的可选实施例中,可以事先设置超时值或者将超时值设置为预留丢失时加载指令的参数。
在图4所示的状态图中,如果存储缓冲器标记的高速缓存线由于其他加载指令或需要同一高速缓存线的存储指令而被清除(castout),则可以进入等待预留丢失(缓冲器标记不在处理器的高速缓冲存储器内)状态S3。除缓冲器标记没有存储于处理器的高速缓冲存储器中之外,状态S3和先前描述的状态S2基本上相同。状态S3存在和状态S2相同的退出条件,然而在状态S3中,在处理器的高速缓冲存储器中,将存储缓冲器标记的高速缓存线标示为不再有效(即被修改或共享)。在高速缓存线清除操作可能引起预留被复位的实施例中,可以移除状态S3。在另一实施例中,如果高速缓冲存储器从系统总线预载数据(例如:高速缓冲存储器注入),则可能发生从状态S3返回状态S2的转换。
在数据转发状态S4,检查存储缓冲器标记的高速缓存线以判定存储缓冲器标记的高速缓存线是否包含有效数据(即共享的、修改的等等)。如果包含,则将数据转发给处理器并且状态机400重新进入状态S0。这是缓冲器标记数据没有被处理器或装置修改的情况,因为加载预留的丢失是由其他事件(例如:中断或超时)引起的。在这种情况下,缓冲器标记包括指定“占用”指示符数据值的数据,并且然后执行比较指令。如果中断正待处理,则接下来处理中断。当中断返回时,如果返回的数据是“占用”指示符数据值,则将采用分支。如果采用分支,则启动高速缓存线轮询例程的加载预留将再次开始加载预留过程。
如果存储缓冲器标记的高速缓存线包含无效数据,则生成“加载失败(load miss)”并且通过总线从共享存储器请求缓冲器标记数据。当缓冲器标记数据返回后,数据被转发给处理器,并且高速缓冲存储器的状态被更新。状态机400然后进入状态S0。这个过程和高速缓冲存储器中失败的正常加载操作相同。在这种情况下,数据被装置修改为包含“未占用”指示符数据值(例如:0xBC或者不等于0xBB的任何值)。
其后,执行比较指令。如果返回的数据没有指定“占用”指示符数据值,则不会采用分支并且高速缓存线轮询例程退出,表明外部装置已经完成从相关缓冲器取回数据。
有几种情况会引起预留丢失,包括:含有预留丢失时加载指令的地址所引用数据的高速缓存线的无效;同一处理器或共享同一高速缓冲存储器的另一处理器对与预留丢失时加载指令的地址相关联的数据的修改;对已停止的先前执行预留丢失时加载指令的线程提示中断;前述状态S3中,由同一处理器或共享高速缓冲存储器的另一处理器进行存储器操作引起的传统高速缓存线的替换/弹出/清除;或者一个或多个其他退出情况(例如:加载指令的超时)发生。
在所述实施例中,高速缓存线的无效可以由一个装置或其他处理器读取高速缓存线以便修改其中存储的数据(RWITM)而引起,或由一个装置或其他处理器写高速缓存线(清洗性地写)而引起。
尽管这里已经将缓冲器标记或信号描述为存储于可高速缓冲存储区域内,但在可选实施例中,存储区域不需要是可高速缓冲的。更明确地,本发明的方法或处理可以用于位于不可高速缓冲存储区域的缓冲器标记,只要处理器具有用于监听更新含有缓冲器标记的存储器地址的设备的装置。通过状态S3的存在,使得缓冲器标记位于不可高速缓冲存储区域变得明显。在状态S3中,处理器的高速缓冲存储器中的缓冲器标记是无效的,这和存在不可高速缓冲标记是同一状态。
图5示出了根据本发明的实施例的利用存储和预留指令执行高速缓存线轮询的过程的流程图。为了说明的目的,所述过程实施例将针对图3的信息处理系统300的系统单元进行描述。首先在图5的所示过程实施例中,PPU316的加载/存储单元318用数据(例如:将要由外部装置390操作或处理的数据)填充共享存储器389中的缓冲器(过程块502)。在本发明的可选实施例中,向所述缓冲器传送数据可以利用一个或多个SPE220-234中提供的DMA控制器或引擎来完成。然后,加载/存储单元318执行存储和预留指令(过程块503)。在所示过程实施例中,所述STAR指令的执行将指示或指定“占用”指示符数据值的数据存储在共享存储器389的可高速缓冲存储区域336内(过程块506)并利用预留寄存器330“设置”预留(过程块506)。
其后,可以(例如:通过写MMIO寄存器、产生异常、中断、俘获等)通知外部(例如I/O)装置390:相关数据缓冲器已准备好被存取(未示出)。可选择地,这样的通知可以只通过如前所述地将缓冲器“占用”指示符数据值存储到高速缓冲存储区336内来完成。加载/存储单元318然后判定预留是否已经被复位(过程块508)(例如:通过检查条件寄存器320中标记的一位或多位)。尽管已经用一个连续循环来描述对何时预留被复位的判定,但是应该理解,处理器(在单线程的单处理器或多处理器系统内)或相关线程(在多线程的处理器系统内)不执行任何实际的指令,由此保存了有价值的处理能力和电量,而利用常规高速缓存线轮询技术则会浪费掉这些处理能力和电量。一旦预留被复位(例如,通过由外部装置390将“未占用”指示符数据值存储到可高速缓冲存储区336的缓冲器标记内),就由加载/存储单元318将存储于可高速缓冲存储区域336中的缓冲器标记数据加载到PPU316的一个寄存器(过程块510)
然后,PPU316的定点执行单元(未显示)将已经加载可高速缓冲存储器336的缓冲器标记数据的PPU316的寄存器的内容与特定的“占用”指示符数据值相比较(过程块512)。PPU316的一个分支单元(未显示)随后利用比较结果,判定寄存器内容是否与“占用”指示符数据值相匹配(过程块514)。然后,响应于寄存器内容与已知“占用”指示符数据值不相匹配的判定,所述过程实施例完全重新启动(过程块502)或者在STAR指令被执行以及预留被复位的点重新进入(过程块503)。
尽管图5所示操作已经针对特定的系统单元进行了描述,但是用于完成这些操作的实际单元对于本发明的过程实施例来说并不重要。而且,在可选的实施例中,这些操作可由任何信息处理系统单元完成。同样,虽然图5所示流程图显示了特定的操作次序以及特定的过程操作粒度,但在可选的实施例中,所说明的次序可以变化(例如过程操作可按另一种次序完成,或者基本上并行地完成),并且一个或多个过程操作可能被合并或分解。同样,在本发明一些可选的实施例中,在必要的地方可增加额外的过程操作。
本发明的实施例可包括软件、信息处理硬件和这里进一步描述的各种处理操作。各种发明实施例的特征和过程操作可包含在可执行的指令中,这些指令包含于机器可读的介质中,例如共享存储器289、存储装置、通信装置或介质等。机器可读介质可以包括提供(即,存储和/或传输)机器(例如:CBE200)可读形式的数据的任何机制。
例如,机器可读介质包括但不限于:随机存取存储器(RAM);只读存储器(ROM);磁存储媒体;光存储媒体;闪存装置;电的、光的和/或声的传播信号(例如:载波、红外信号、数字信号等);或者类似介质。所述可执行的指令可用于使得该指令编程的通用或专用处理器(比如PPU316)完成本发明的操作、方法或过程。另外,本发明的特征或操作可由包含用于完成这些操作的硬连线逻辑的特定硬件组件完成,或由已编程的数据处理组件和定制硬件组件的任何组合完成。
尽管已经在全功能数据处理系统的上下文中描述了本发明,但是本领域的普通技术人员应当理解本发明能作为各种形式的程序产品进行分发,并且无论用于实现该分发的信号承载媒体的具体类型如何,本发明都可以同样地应用。这样的信号承载媒体的例子包括类似软盘和CD-ROM(光盘只读存储器)的可录媒体、类似数字和模拟通信链路的传输类型媒体、以及将来开发的媒体存储和分发系统。同样,可以利用用以完成确定操作或工作的软件模块实现本发明的实施例。所述软件模块可包括脚本、批处理或其他可执行文件,并且可存储于机器可读或计算机可读的介质上。这样,模块可存储在计算机系统的存储器中,以将数据处理或计算机系统配置为执行软件模块的一个或多个功能。其他新类型和各种类型的机器或计算机可读的存储介质可用来存储在此描述的模块。
尽管已经示出和描述了本发明的特定实施例,但是对于本领域的普通技术人员来说,显然,根据这里的启示,在不脱离本发明及其广泛含义的情况下可以进行变化和修改。因此,所附权利要求将在其范围内涵盖落入本发明真实精神和范围内的所有这些改变和修改,并且在充分地认定各方面的等效形式的情况下,本发明的实施例倾向于仅受到所附权利要求的范围的限制。
Claims (8)
1.一种在具有多个进程的数据处理系统中执行高速缓存线轮询的方法,所述方法包括:
第一进程请求第二进程执行一个动作,并经由存储操作在存储区域设置预留;
所述第一进程经由加载操作读取所述存储区域,以确定所请求的动作是否已经被第二进程完成;
停止所述加载操作,直到所述存储区域上的所述预留丢失;以及
在所述所请求的动作被完成之后,由所述第二进程复位在所述存储区域中的预留。
2.根据权利要求1所述的方法,其中所述设置还包括:在可高速缓冲存储区域上设置缓冲器占用指示符。
3.根据权利要求1或2所述的方法,其中所述停止还包括:直到所述预留已经被复位之前,阻止所述加载操作在高速缓存线轮询循环中执行。
4.根据权利要求1或2所述的方法,其中所述加载操作是条件加载操作并可选地所述存储区域是可高速缓冲存储区域。
5.一种在具有多个进程的数据处理系统中执行高速缓存线轮询的设备,所述设备包括:
用于第一进程请求第二进程执行一个动作、并经由存储操作在存储区域设置预留的装置;
用于所述第一进程经由加载操作读取所述存储区域、以确定所请求的动作是否已经被第二进程完成的装置;
用于停止所述加载操作、直到所述存储区域上的所述预留丢失的装置;以及
用于在所述所请求的动作被完成之后、由所述第二进程复位在所述存储区域中的预留的装置。
6.根据权利要求5所述的设备,其中所述用于第一进程请求第二进程执行一个动作、并经由存储操作在存储区域设置预留的装置还包括:用于在可高速缓冲存储区域上设置缓冲器占用指示符的装置。
7.根据权利要求5或6所述的设备,其中所述停止所述加载操作、直到所述存储区域上的所述预留丢失的装置还包括:用于直到所述预留已经被复位之前阻止所述加载操作在高速缓存线轮询循环中执行的装置。
8.根据权利要求5或6所述的设备,其中所述加载操作是条件加载操作并可选地所述存储区域是可高速缓冲存储区域。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/377,505 US9390015B2 (en) | 2006-03-16 | 2006-03-16 | Method for performing cacheline polling utilizing a store and reserve instruction |
US11/377,505 | 2006-03-16 | ||
PCT/EP2007/051810 WO2007104638A2 (en) | 2006-03-16 | 2007-02-26 | Method, system, apparatus, and article of manufacture for performing cacheline polling utilizing a store and reserve instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101401071A CN101401071A (zh) | 2009-04-01 |
CN101401071B true CN101401071B (zh) | 2012-06-20 |
Family
ID=38509831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800089935A Active CN101401071B (zh) | 2006-03-16 | 2007-02-26 | 利用存储和预留指令执行高速缓存线轮询操作的方法、系统、设备和产品 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9390015B2 (zh) |
EP (1) | EP1994469B1 (zh) |
JP (1) | JP4566264B2 (zh) |
CN (1) | CN101401071B (zh) |
WO (1) | WO2007104638A2 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8219763B2 (en) * | 2006-03-16 | 2012-07-10 | International Business Machines Corporation | Structure for performing cacheline polling utilizing a store and reserve instruction |
US9983874B2 (en) * | 2006-03-16 | 2018-05-29 | International Business Machines Corporation | Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling |
CN101510177B (zh) * | 2009-03-06 | 2012-04-18 | 成都市华为赛门铁克科技有限公司 | 一种存储方法和存储系统 |
CN102739788B (zh) * | 2012-06-25 | 2015-08-19 | 广州复旦奥特科技股份有限公司 | 一种基于eib协议的现场设备通信方法 |
KR101700545B1 (ko) * | 2012-10-22 | 2017-01-26 | 인텔 코포레이션 | 고성능 인터커넥트 코히어런스 프로토콜 |
US9733977B2 (en) * | 2013-05-31 | 2017-08-15 | Nec Corporation | Distributed processing system, distributed processing device, distributed processing method, and distributed processing program |
EP2840503A1 (de) * | 2013-08-22 | 2015-02-25 | Continental Automotive GmbH | Verfahren zum Betreiben eines Pufferspeichers einer Datenverarbeitungsanlage und Datenverarbeitungsanlage |
CN103760855B (zh) * | 2014-01-09 | 2017-01-18 | 厦门立林科技有限公司 | 自组式模块化家居控制系统 |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
US11086672B2 (en) | 2019-05-07 | 2021-08-10 | International Business Machines Corporation | Low latency management of processor core wait state |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5611074A (en) * | 1994-12-14 | 1997-03-11 | International Business Machines Corporation | Efficient polling technique using cache coherent protocol |
US5734898A (en) * | 1994-06-24 | 1998-03-31 | International Business Machines Corporation | Client-server computer system and method for updating the client, server, and objects |
CN1360696A (zh) * | 1999-12-30 | 2002-07-24 | 皇家菲利浦电子有限公司 | 多任务处理软件体系结构 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4380798A (en) * | 1980-09-15 | 1983-04-19 | Motorola, Inc. | Semaphore register including ownership bits |
US5669002A (en) * | 1990-06-28 | 1997-09-16 | Digital Equipment Corp. | Multi-processor resource locking mechanism with a lock register corresponding to each resource stored in common memory |
US5574922A (en) * | 1994-06-17 | 1996-11-12 | Apple Computer, Inc. | Processor with sequences of processor instructions for locked memory updates |
JPH10149285A (ja) * | 1996-11-18 | 1998-06-02 | Hitachi Ltd | 命令実行制御方法および情報処理装置 |
US6141734A (en) * | 1998-02-03 | 2000-10-31 | Compaq Computer Corporation | Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol |
US20030115476A1 (en) * | 2001-10-31 | 2003-06-19 | Mckee Bret | Hardware-enforced control of access to memory within a computer using hardware-enforced semaphores and other similar, hardware-enforced serialization and sequencing mechanisms |
US6904504B2 (en) * | 2001-11-14 | 2005-06-07 | Intel Corporation | Method and apparatus for software selection of protected register settings |
US7080209B2 (en) * | 2002-12-24 | 2006-07-18 | Intel Corporation | Method and apparatus for processing a load-lock instruction using a relaxed lock protocol |
US20050120185A1 (en) * | 2003-12-01 | 2005-06-02 | Sony Computer Entertainment Inc. | Methods and apparatus for efficient multi-tasking |
US7516306B2 (en) * | 2004-10-05 | 2009-04-07 | International Business Machines Corporation | Computer program instruction architecture, system and process using partial ordering for adaptive response to memory latencies |
US7581067B2 (en) * | 2006-03-16 | 2009-08-25 | International Business Machines Corporation | Load when reservation lost instruction for performing cacheline polling |
US8219763B2 (en) | 2006-03-16 | 2012-07-10 | International Business Machines Corporation | Structure for performing cacheline polling utilizing a store and reserve instruction |
US8117389B2 (en) | 2006-03-16 | 2012-02-14 | International Business Machines Corporation | Design structure for performing cacheline polling utilizing store with reserve and load when reservation lost instructions |
US7600076B2 (en) * | 2006-03-16 | 2009-10-06 | International Business Machines Corporation | Method, system, apparatus, and article of manufacture for performing cacheline polling utilizing store with reserve and load when reservation lost instructions |
-
2006
- 2006-03-16 US US11/377,505 patent/US9390015B2/en active Active
-
2007
- 2007-02-26 CN CN2007800089935A patent/CN101401071B/zh active Active
- 2007-02-26 JP JP2008558761A patent/JP4566264B2/ja active Active
- 2007-02-26 WO PCT/EP2007/051810 patent/WO2007104638A2/en active Application Filing
- 2007-02-26 EP EP07726510.6A patent/EP1994469B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5734898A (en) * | 1994-06-24 | 1998-03-31 | International Business Machines Corporation | Client-server computer system and method for updating the client, server, and objects |
US5611074A (en) * | 1994-12-14 | 1997-03-11 | International Business Machines Corporation | Efficient polling technique using cache coherent protocol |
CN1360696A (zh) * | 1999-12-30 | 2002-07-24 | 皇家菲利浦电子有限公司 | 多任务处理软件体系结构 |
Also Published As
Publication number | Publication date |
---|---|
JP2009529740A (ja) | 2009-08-20 |
WO2007104638A3 (en) | 2007-12-13 |
CN101401071A (zh) | 2009-04-01 |
US9390015B2 (en) | 2016-07-12 |
EP1994469A2 (en) | 2008-11-26 |
JP4566264B2 (ja) | 2010-10-20 |
EP1994469B1 (en) | 2016-06-08 |
US20070220212A1 (en) | 2007-09-20 |
WO2007104638A2 (en) | 2007-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101038567B (zh) | 执行高速缓存线轮询操作的方法、系统和设备 | |
CN101401071B (zh) | 利用存储和预留指令执行高速缓存线轮询操作的方法、系统、设备和产品 | |
CN110865968B (zh) | 多核处理装置及其内核之间数据传输方法 | |
JP3632635B2 (ja) | マルチスレッド実行方法及び並列プロセッサシステム | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
EP2542973B1 (en) | Gpu support for garbage collection | |
US8117389B2 (en) | Design structure for performing cacheline polling utilizing store with reserve and load when reservation lost instructions | |
US8190825B2 (en) | Arithmetic processing apparatus and method of controlling the same | |
US20170185515A1 (en) | Cpu remote snoop filtering mechanism for field programmable gate array | |
US7581067B2 (en) | Load when reservation lost instruction for performing cacheline polling | |
US6711651B1 (en) | Method and apparatus for history-based movement of shared-data in coherent cache memories of a multiprocessor system using push prefetching | |
US9009420B2 (en) | Structure for performing cacheline polling utilizing a store and reserve instruction | |
Ballapuram et al. | Exploiting access semantics and program behavior to reduce snoop power in chip multiprocessors | |
TWI469047B (zh) | 使用儲存預先擷取來消減久存潛時之方法和裝置 | |
US9983874B2 (en) | Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling | |
JP6227151B2 (ja) | アドレスへの書き込みに対する監視命令を実行するスケーラブル機構 | |
US20240111679A1 (en) | Hardware processor having multiple memory prefetchers and multiple prefetch filters | |
Li et al. | HVSM: An approach to exploiting the locality of the multi-node heterogeneous multicore system | |
JP2011141743A (ja) | マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法 |
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 |