利用存储和预留指令执行高速缓存线轮询操作的方法、系统、设备和产品的制作方法

文档序号:6454212阅读:156来源:国知局
专利名称:利用存储和预留指令执行高速缓存线轮询操作的方法、系统、设备和产品的制作方法
技术领域
本发明的实施例一般地涉及数据处理系统的操作,并且更特别地 涉及一种利用存储和预留指令执行高速緩存线轮询的方法、系统、设 备和产品。
背景技术
在现代计算技术出现之初,信息处理(例如计算机)系统包括 有限数量的组件,包括单处理器、系统存储器和少量的输入/输出 (1/0)装置,例如显示装置、键盘以及与图形用户接口的创建有关的 指针控制装置(例如鼠标、轨迹球或者类似装置)。然而,随着信息处 理系统的发展,经由通信和对于系统共享资源的竟争而互相连接的系 统组件数量显著增加。因此,现代的常规信息处理系统可能包括大量 的系统组件(例如,利用SMP (对称多处理器)、ASMP (非对称多处 理器)、NUMA (非一致性存储器存取)或者类似配置的多个处理器, 协处理器,直接存储器存取控制器,以及每个都有可能包含附属的处 理器、寄存器和存储器的1/0装置。)为了在现代信息处理系统中协调系统组件的活动,已经采用了多 种技术。信息处理系统组件可以利用与中断服务例程或处理器结合的 中断来传达和/或指示一个事件的发生。同样,可利用存储器映射的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)有关緩沖器的可用 性之前,将预先确定的"占用"指示符数据值写入可高速緩沖存储区 域,通常将其称为緩沖器标记或信号(semaphored然后处理器针对 预先确定的"未占用"指示符数据值轮询緩冲器标记,以4企测相应DMA 的完成。由于数据已经在处理器的高速緩冲存储器中修改,高速緩存 线轮询不会产生任何附加的总线活动。在完成从緩冲器中取回(DMA ) 数据后,1/0装置或接收处理器将"未占用"完成数据值写入緩沖器标 记。然后,数据提供处理器可以经由标准的高速緩沖一致性协议存取 新緩冲器标记值,其间高速緩冲存储器中"占用"指示緩冲器标记数 据失效或由新完成值代替。从系统的观点来看,高速緩存线轮询是一种有效的轮询机制。然 而,为了实现高速緩存线轮询,数据提供处理器重复执行"轮询"指 令集直到DMA传送完成且緩冲器标记值更新,这样浪费了有价值的 系统资源(例如处理器周期、总线周期,电量,指令或线程分派时 隙,或类似的资源)。
发明内容在此公开了 一种用于利用存储和预留指令执行高速緩存线轮询的 方法、系统、设备和产品。根据本发明的一个实施例,第一进程初始 地请求第二进程执行一个动作。经由存储操作在可高速緩冲存储区域 设置预留。所述第一进程经由加载操作读取所述可高速緩冲存储区域 以确定所请求的动作是否已经被第二进程完成。所述第一进程的加载 操作停止,直到所述可高速緩冲存储区域上的预留丢失。在所请求的 动作被完成之后,由第二进程复位在所述可高速緩冲存储区域中的预 留。前述是一个概要并因而必然包括对细节的简化、概括和省略;所以,本领域的普通技术人员应该明白此概要仅是说明性的,并且不旨 在进行任何限制。同样,本领域的普通技术人员将明白,能以许多方 式实现在此公开的操作,包括硬件形式、软件形式或其组合形式的实 现,而且在不脱离本发明及其广泛方面的情况下,可进行这些改变和 修正。仅由权利要求限定的本发明的其他方面、发明特征以及优点在 后面阐述的非限制性详细描述中将变得显而易见。


参考附图,本发明将更容易理解,并且对本领域的普通技术人员来说,其多数特征和优点将变得显而易见,其中图1示出了包括根据本发明的一个实施例的信息处理系统的通信 网络;图2示出了根据本发明的一个实施例的信息处理系统的高级框图;图3示出了表示根据本发明的一个实施例的信息处理系统选定部 分的框图,其能够利用存储指令和预留指令以及在预留丟失时的加载 指令来执行高速緩存线轮询;图4示出了根据本发明的一个实施例的用于针对存储指令和预留
指令而管理预留的状态机的状态图;图5示出了根据本发明的一个实施例的利用存储指令和预留指令 执行高速緩存线轮询的过程的流程图;以及附图中使用相同或相似的参考符号来指示相似或同样的项目。
具体实施方式
以下内容详细描述了至少是完成这里描述的 一个或多个系统、装 置和/或过程最好的预期方式。这些描述用于说明并且不应该看作限制。在以下详细描述中,给出了许多特定细节,比如特定的方法顺序、 结构、单元和连接。然而应该明白,不需要使用这些和其他特定细节 来实现本发明的实施例。在其他情况下,省略了或者没有特别详细地描述众所周知的结构、单元或者连接,目的是避免不必要地使描述不-吝扭 疋。说明书中引用"一个实施例"、"实施例"或者"多个实施例"旨 在有关于实施例而描述的特定特征、结构或特性包括在本发明的至少 一个实施例中。在说明书中不同地方出现这样的短语不一定是指同一 实施例,也不 一定是指与其他实施例相互排斥的独立或可选实施例。 此外,描述的多种特征可能由某些实施例展示,而不由其他实施例展 示。同样,描述的多种需求可能是一些实施例所需要的,而不是另一 些实施例所需要的。本发明实施例提供了可用于执行高速緩存线轮询的存储和预留指 令,其包含于在此所述的方法、信息处理系统和机器可读介质产品中。 图1示出了包括根据本发明的一个实施例的信息处理系统的通信网 络。在本发明的一个或更多实施例中,在设置加载预留的先前设置的 加载预留已经"丟失,,或复位后,在存储和预留(STAR)指令之后执 行的常规加载(LD)指令将完成执行并返回数据,否则通常将停止。 在一个实施例中,STAR指令可以在单一的高速緩存线轮询例程循环 中使用,以^更正确地管理预留。
如图1所示,系统101包括网络104,多个信息处理系统(例如 计算机和计算装置)和它相连。在本发明的多种实施例中,网络104 可以包括局域网、全球网(例如因特网)或任何其他通信网络。在图 1所示的实施例中,连接到网络104的信息处理系统包括客户端计算 机106、服务器计算机108、个人数字助理(PDA )110、数字电视(DTV) 112并且还可以包括其他没有显示的有线或无线计算机和计算装置。 在所示的实施例中,网络104的成员信息处理系统-使用的处理部件由 通用的计算模块构成。这些处理部件优选地还都具有相同的指令集体 系结构(ISA),并根据通用的处理器指令集完成处理。在图l所示的实施例中,包含在任意特定处理部件内的计算模块 数量依赖于该处理部件要完成的信息处理需要的处理能力。例如,由 于系统101的服务器108比客户端106完成更多的数据和应用处理, 所以服务器108比客户端106包含更多的计算模块。另外,PDA 110 完成相对少量的处理。在所示的实施例中,每个计算模块包含处理控 制器和多个同样的处理单元,用以完成网络104上传输的数据和应用 的并行处理。系统101的同类配置提高了适应性、处理速度和处理效率。因为 系统101的每一成员利用一个或多个(或一些部分)同样的计算模块 完成处理,所以完成数据和应用实际处理的特定计算机或计算装置与 在常规系统中相比具有更少的相关性。而且,特定应用和数据的处理 可以在网络成员间共享。通过在全系统内唯一地标识包含由系统101 的处理数据和应用的单元,可以将处理结果传送给请求处理的计算机 或计算装置,而不管处理发生在哪里。因为完成该处理的模块具有通 用的结构和使用通用的ISA,所以避免了用于达到处理部件之间兼容 的附加软件层的计算负担。这种体系结构和编程模型提高了例如实时 执行多媒体应用所必须的处理速度。为了更好的利用由系统101提高的处理速度和效率,将该系统处 理的数据和应用打包为唯一识别的、统一格式的软件单元102。每个 软件单元102包括,或者可以包括,应用和数据。每个软件单元102 还包括一个ID (标识符),以便在网络104和系统101中全局地识别 该单元。软件单元的这种结构统一性和软件单元在整个网络上的唯一 标识有利于在网络104的任何计算机和计算装置上处理应用和数据。 例如,客户端106可以设计一个软件单元102,但是因为客户端106 的处理能力的限制,它将该软件单元传送给服务器108进行处理。因 此,软件单元可以在整个网络104内转移,以便根据网络上处理资源 的可用性来进行处理。系统101的处理部件和软件单元的同类结构也避免了目前异构网 络的许多问题。例如,避免了效率低下的编程模型,其寻求允许在使 用例如虚拟机(诸如JAVA虚拟机之类)的任何ISA上处理应用。因 此,系统101可以实现远比常M^网络更有效且效率更高的宽带处理。图2示出了根据本发明实施例的信息处理系统的高级框图。虽然 针对图2的信息处理系统示出了特定数量和排列的部件,但应该意识 到,本发明的实施例不限于具有任何特定数量、类型或者排列的组件 的数据处理系统,而且可以包括多种数据处理系统类型、体系结构和 形式要素(例如网络部件或节点、个人计算机、工作站、服务器等)。图2描述的信息处理系统是单元宽带引擎(Cell Broadband Engine: CBE )体系结构的一个例子,其中可以实现本发明的示例性 方面。如图2所示,CBE200包括一个主处理器单元(PPE) 210和多 个协处理器单元(SPE) 220-234,它们通过高速宽带内部单元互连总线 (EIB ) 286通信互连并和这里还将描述的附加系统单元通信连接。如 图所示,所示出的实施例的CBE200还包括一个或多个外部总线或装 置290,它通过总线接口控制器(BIC) 287连接到EIB 286;还包括 共享存储器289,它通过存储器接口控制器(MIC )288连接到EIB 286。CBE 200可以是一个芯片级系统,从而图2描述的每个单元可以 提供于单个孩i处理器芯片上。而且,在一个实施例中,CBE 200可以 提供为异构处理环境,其中系统中SPE220-234中每一个可以从每个 其他的SPE接收不同的指令;并且,每个SPE的指令集不同于PPE 210 的指令集,例如PPE 210可以执行基于精简指令集计算机(RISC)的
指令,而SPE 200 - 234扭j亍向量指令。在图2所示的实施例中,SPE 220 - 234通过EIB 286 4皮此相连并 连才妄到PPE210。另外,SPE 220-234的每一个通过EIB 286分别连 接到MIC 288和BIC 287。 MIC 288提供到共享存储器289的通信接 口。共享存储器289可包括任何多个系统存储器类型的存储单元(例 如随机存取存储器(RAM)、只读存储器(ROM)、闪存等)。BIC287 提供CBE 200与其他外部总线和装置290之间的通信接口 。示例性外 部装置可包括传统的I/O装置,比如键盘、显示器、打印机、指针 控制装置(例如轨迹球、鼠标、手写板等)、扬声器以及麦克风;存储 装置,比如固定的或"硬"磁媒体存储装置、光存储装置(例如CD 或者DVDROM)、固态存储装置(例如USB、安全数字SD顶卡、压 缩闪存CF顶卡、MMC等)、可移动磁介质存储装置(比如软盘和磁 带),或者其他存储装置或介质;以及有线的或无线的通信装置或媒体 (例如通过调制解调器或直接网络接口存取的通信网络)。在本发明的一个实施例中,PPE 210是双线程处理单元。该双线 程PPE 210和8个SPE 220-234的结合使CBE 200能够处理10个并行 线程以及超过228个未完成的存储器请求。在通常操作环境下,PPE 210充当8个SPE 220-234的控制器,这些SPE处理多数的计算工作 量,例如,PPE 210可用于执行一个或多个传统的操作系统,而SPE 220-234完成向量浮点编码的执行。在一个实施例中,PPE210包括主处理器单元(PPU)或核心以及 相关的一级(L1 )和二级(L2)高速緩沖存储器(未示出);并且SPE220 - 234中的每个SPE包括协处理单元(SPU )、存储器流控制单元、本 地存储器以及包括直接存储器存取(DMA)控制器、存储器管理单元 (MMU)和总线接口单元(未示出)的组合的总线接口单元。在一个 示例性实施例中,所述本地存储器包括256KB的指令和数据存储器, 其对于PPE 210是可见的并且可由软件直接寻址。PPE 210可用小程序或线程加载SPE 220-234,将SPE链接在一起 处理复杂操作中的每个步骤。例如,装有CBE200的机顶盒可加载用 于读DVD、进行视频和音频解码并显示的程序,并且数据从SPE传 到SPE直到最终显示在输出显示器上。在4GHZ,每个SPE220-234 给出理论上32GFLOPS的性能,PPE 210也有相似性能级别。在操作 中,PPE 210也可以执行指令并将从共享存储器289取回的数据通过 MIC 288处理到其本地寄存器或高速緩存。同样,外部装置290也可 例如通过BIC 287和SPE 220-234中 一个或多个DMA控制器访问共享 存储器289。图3示出了表示根据本发明实施例的信息处理系统的选定部分的 框图,其能够利用存储指令和预留指令以及在预留丢失时的加载指令 来执行高速緩存线轮询。在当前描述中,类似的参考标号用以表示图 2和图3的信息处理系统之间相应的系统单元。例如,图3所示实施 例中的PPE310对应于图2中的PPE210。图3中的信息处理系统300 包括PPE 310,其通过EIB 386分别利用MIC 388和BIC 387连接到 共享存储器389和外部装置390。在图3所示的实施例中,共享存储器389包括可高速緩冲存储区 域336,如图所示其包含指定緩沖器标记数据值的数据。PPE310包含 主处理单元(PPU) 316,如图所示其分级连接到Ll高速緩沖存储器 312和L2高速緩沖存储器314。在图3的实施例中,PPU 316包括多 个功能单元和数据存储单元。更具体地,PPU316包括加载/存储单 元318,用来执行存储器存取指令(例如,从存储器中加载和存入存 储器);和条件寄存器320,其以位或标记的形式存储数据,其指示PPU 316的当前状态,反映某些数据处理或信息处理操作的结果(例如, 数据溢出或下溢,肯定的或否定的结果,或类似情况)。Ll高速緩冲存储器312和L2高速緩沖存储器314中的每一个包 括高速緩沖存储器管理单元(CMU)(例如,Ll高速緩冲存储器312 的CMU 322和L2高速緩沖存储器314的CMU 328 )以及存储单元(例 如,L1高速緩沖存储器312的存储单元324和L2高速緩冲存储器314 的存储单元332 )。CMU 322和CMU 328均用于控制相应存储单元324 和332内的数据和/或指令的存储,例如执行高速緩存线替换算法、更
新高速緩存线状态或状态元数据等等。存储单元324和332接着用于 存储数据线或块,包括应用数据和/或指令以及伴随的元数据(例如, 高速緩冲存储器标签、状态位等)。虽然CMU 322和CMU 328描述为 它们各自高速緩沖存储器的完整单元或模块,但在本发明的可选实施 例中,CMU 322和/或CMU 328或其功能可以以另外的配置提供(例 如在L1高速緩沖存储器312和L2高速緩冲存储器314之一内,在 PPU316内,作为独立单元或模块,或者单元或模块的组合)。根据本发明的一个实施例,PPU 316可以用于通过执行存储和预 留(STAR)指令而完成高速緩存线轮询,现在将对此进行描述。在操 作中,PPU 316的加载/存储单元318可首先用于执行STAR指令,以 使得将指定"占用"緩冲器标记指示符数据值(例如0xBB )的数 据存入共享存储器389的可高速緩冲存储区域336,如虚线338所指 示的那样。在所示实施例中,所述STAR指令用来信号通知相关外部 装置390 (例如图形装置)将由该装置取回的数据已经存储于相关 緩沖器(例如共享存储器389的专用部分或者信息处理系统300内 部或外部的其他存储器)中。在本发明的其他实施例中,更多的操作 (例如异常或中断产生、信令、MMIO写操作等等)可用来通知外 部装置390数据已写成存储于可高速緩沖存储器特定区域336中的緩 冲器标记,而且可以着手从所述緩冲器取回数据。一旦PPU 316完成所述STAR,就可以利用PPE 310继续才丸4亍高 速緩存线轮询,其中可以执行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中相应预留状态位所指示的那样。在一个实施例中,在 ^r测到(例如由外部装置390)尝试、请求或完成如虚线340所示 的向可高速緩冲存储区域336的写操作后,可以由L2高速緩冲存储 器314的CMU 328使用高速緩冲存储器"监听,,操作复位预留。 一旦 外部装置390修改了存储于可高速緩冲存储区域336内的緩冲器标记 数据,就会使得预留被复位并因此"丢失",先前停止的LDRL指令 可以重新开始,导致緩冲器标记的数据值分别分级存储在Ll高速緩 沖存储器312和L2高速緩冲存储器314内的存储单元324和332中, 并最终分级存储在PPU 316内的特定寄存器中。如这里将更充分地描述的那样, 一旦LDRL操作成功完成,就可 以将取回的緩沖器标记的数据值与已知的"占用"和/或"未占用"緩沖器标记指示符数据值进行比较。所述比较可以用于判定外部装置 390是否已经完成取回(例如通过DMA传输)先前存储于相关緩冲器 中的数据,从而例如相关緩沖器可再用于到外部装置390的其他数据传输。图4示出了根据本发明的一个实施例的状态机的状态图,其用于 针对存储和预留指令来管理预留。因此所示"状态机"代表了将由信 息处理系统(例如,图3中的信息处理系统300)的一个或多个单元 完成的操作或并入到所述单元中的功能性。在一个实施例中,这样的 功能性被并入例如图3中的PPU 316的处理部件或单元,在其他的实 施例中,这样的功能性可包含在能够监视和控制相关信息处理系统的 操作的独立的或附加的系统单元中。在本发明的一个实施例中,针对 发起或支持的每个硬件线程,举例说明了图4状态图表示的功能性。如图所示,状态机400包括五个独立状态,即状态SO、状态S1、 状态S2、状态S3和状态S4。在一个实施例中,使用STAR指令来设 置緩沖器标记"占用,,指示符数据值,以便初始化要存取的緩冲器数 据的状态,并如此处所描述地,设置加载预留。在初始状态SO,状态机400收到加载指令后,记录针对緩冲器标 记的高速缓存线地址,并进入状态S1。所述加载的对象是相应于存储 緩沖器标记的高速緩存线的地址。多个加载预留可同时存在。在高速緩冲存储器状态检查的状态Sl,检查高速緩冲存储器的状 态。如果存储緩沖器标记的高速緩存线是无效的,则状态机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重新进入状态 SO。这是緩冲器标记数据没有被处理器或装置修改的情况,因为加载 预留的丢失是由其他事件(例如中断或超时)引起的。在这种情况 下,緩沖器标记包括指定"占用"指示符数据值的数据,并且然后执 行比较指令。如果中断正待处理,则接下来处理中断。当中断返回时, 如果返回的数据是"占用"指示符数据值,则将采用分支。如果采用 分支,则启动高速緩存线轮询例程的加载预留将再次开始加载预留过 程。如果存储緩冲器标记的高速緩存线包含无效数据,则生成"加载 失败(load miss )"并且通过总线从共享存储器请求緩冲器标记数据。 当緩冲器标记数据返回后,数据被转发给处理器,并且高速緩冲存储 器的状态被更新。状态机400然后进入状态S0。这个过程和高速緩冲
存储器中失败的正常加载操作相同。在这种情况下,数据被装置修改为包含"未占用,,指示符数据值(例如OxBC或者不等于0xBB的任何值)。其后,执行比较指令。如果返回的数据没有指定"占用"指示符 数据值,则不会采用分支并且高速緩存线轮询例程退出,表明外部装 置已经完成从相关緩沖器取回数据。有几种情况会引起预留丢失,包括含有预留丢失时加载指令的 地址所? 1用数据的高速緩存线的无效;同 一处理器或共享同 一 高速緩 冲存储器的另一处理器对与预留丟失时加载指令的地址相关联的数据 的修改;对已停止的先前执行预留丢失时加载指令的线程提示中断; 前述状态S3中,由同一处理器或共享高速缓冲存储器的另一处理器进 行存储器操作引起的传统高速緩存线的替换/弹出/清除;或者一个或多 个其他退出情况(例如加载指令的超时)发生。在所述实施例中,高速緩存线的无效可以由一个装置或其他处理 器读取高速緩存线以便修改其中存储的数据(RWITM)而引起,或由 一个装置或其他处理器写高速緩存线(清洗性地写)而引起。尽管这里已经将緩冲器标记或信号描述为存储于可高速緩沖存储 区域内,但在可选实施例中,存储区域不需要是可高速緩沖的。更明 确地,本发明的方法或处理可以用于位于不可高速緩冲存储区域的緩 冲器标记,只要处理器具有用于监听更新含有緩冲器标记的存储器地 址的设备的装置。通过状态S3的存在,使得緩冲器标记位于不可高速 緩冲存储区域变得明显。在状态S3中,处理器的高速緩沖存储器中的 緩沖器标记是无效的,这和存在不可高速緩冲标记是同 一状态。图5示出了根据本发明的实施例的利用存储和预留指令执行高速 緩存线轮询的过程的流程图。为了说明的目的,所述过程实施例将针 对图3的信息处理系统300的系统单元进行描述。首先在图5的所示 过程实施例中,PPU316的加载/存储单元318用数据(例如将要由 外部装置390操作或处理的数据)填充共享存储器389中的緩沖器(过 程块502)。在本发明的可选实施例中,向所述緩冲器传送数据可以利
用一个或多个SPE 220-234中提供的DMA控制器或引擎来完成。然 后,加载/存储单元318执行存储和预留指令(过程块503 )。在所示过 程实施例中,所述STAR指令的执行将指示或指定"占用"指示符数 据值的数据存储在共享存储器389的可高速緩沖存储区域336内(过 程块506)并利用预留寄存器330 "设置"预留(过程块506)。其后,可以(例如通过写MMIO寄存器、产生异常、中断、俘 获等)通知外部(例如I/O )装置390:相关数据緩冲器已准备好被存 取(未示出)。可选择地,这样的通知可以只通过如前所述地将緩冲器"占用"指示符数据值存储到高速緩冲存储区336内来完成。加载/ 存储单元318然后判定预留是否已经被复位(过程块508 )(例如通 过检查条件寄存器320中标记的一位或多位)。尽管已经用一个连续循 环来描述对何时预留被复位的判定,但是应该理解,处理器(在单线 程的单处理器或多处理器系统内)或相关线程(在多线程的处理器系 统内)不执行任何实际的指令,由此保存了有价值的处理能力和电量, 而利用常规高速緩存线轮询技术则会浪费掉这些处理能力和电量。一 旦预留被复位(例如,通过由外部装置390将"未占用"指示符数据 值存储到可高速緩沖存储区336的緩冲器标记内),就由加载/存储单 元318将存储于可高速緩冲存储区域336中的緩冲器标记数据加载到 PPU316的一个寄存器(过程块510)然后,PPU 316的定点执行单元(未显示)将已经加载可高速緩 冲存储器336的緩沖器标记数据的PPU316的寄存器的内容与特定的"占用"指示符数据值相比较(过程块512)。 PPU316的一个分支单 元(未显示)随后利用比较结果,判定寄存器内容是否与"占用"指 示符数据值相匹配(过程块514)。然后,响应于寄存器内容与已知"占 用"指示符数据值不相匹配的判定,所述过程实施例完全重新启动(过 程块502 )或者在STAR指令被执行以及预留被复位的点重新进入(过 程块503 )。尽管图5所示操作已经针对特定的系统单元进行了描述,但是用 于完成这些操作的实际单元对于本发明的过程实施例来说并不重要。
而且,在可选的实施例中,这些才喿作可由任何信息处理系统单元完成。 同样,虽然图5所示流程图显示了特定的操作次序以及特定的过程操 作粒度,但在可选的实施例中,所说明的次序可以变化(例如过程操 作可按另一种次序完成,或者基本上并行地完成),并且一个或多个过程操作可能被合并或分解。同样,在本发明一些可选的实施例中,在 必要的地方可增加额外的过程操作。本发明的实施例可包括软件、信息处理硬件和这里进一步描述的 各种处理操作。各种发明实施例的特征和过程操作可包含在可执行的指令中,这些指令包含于机器可读的介质中,例如共享存储器289、 存储装置、通信装置或介质等。机器可读介质可以包括提供(即,存 储和/或传输)机器(例如CBE200)可读形式的数据的任何机制。 例如,机器可读介质包括但不限于随机存取存储器(RAM); 只读存储器(ROM);磁存储媒体;光存储媒体;闪存装置;电的、 光的和/或声的传播信号(例如载波、红外信号、数字信号等);或 者类似介质。所述可执行的指令可用于使得该指令编程的通用或专用 处理器(比如PPU 316)完成本发明的操作、方法或过程。另外,本 发明的特征或操作可由包含用于完成这些操作的硬连线逻辑的特定硬 件组件完成,或由已编程的数据处理组件和定制硬件组件的任何组合 完成。尽管已经在全功能数据处理系统的上下文中描述了本发明,但是 本领域的普通技术人员应当理解本发明能作为各种形式的程序产品进 行分发,并且无论用于实现该分发的信号承载媒体的具体类型如何, 本发明都可以同样地应用。这样的信号承载媒体的例子包括类似软盘 和CD-ROM (光盘只读存储器)的可录媒体、类似数字和模拟通信链 路的传输类型媒体、以及将来开发的媒体存储和分发系统。同样,可 以利用用以完成确定操作或工作的软件模块实现本发明的实施例。所 述软件模块可包括脚本、批处理或其他可执行文件,并且可存储于机 器可读或计算机可读的介质上。这样,模块可存储在计算机系统的存 储器中,以将数据处理或计算机系统配置为执行软件模块的一个或多 个功能。其他新类型和各种类型的机器或计算机可读的存储介质可用 来存储在此描述的模块。尽管已经示出和描述了本发明的特定实施例,但是对于本领域的 普通技术人员来说,显然,根据这里的启示,在不脱离本发明及其广 泛含义的情况下可以进行变化和修改。因此,所附权利要求将在其范 围内涵盖落入本发明真实精神和范围内的所有这些改变和修改,并且 在充分地认定各方面的等效形式的情况下,本发明的实施例倾向于仅 受到所附权利要求的范围的限制。
权利要求
1、一种在具有多个进程的数据处理系统中执行高速缓存线轮询的方法,所述方法包括第一进程请求第二进程执行一个动作,并经由存储操作在存储区域设置预留;所述第一进程经由加载操作读取所述存储区域,以确定所请求的动作是否已经被第二进程完成;停止所述加载操作,直到所述存储区域上的所述预留丢失;以及在所述所请求的动作被完成之后,由所述第二进程复位在所述存储区域中的预留。
2、 根据权利要求1所述的方法,其中所述设置还包括在所述可 高速緩沖存储区域上设置緩冲器占用指示符。
3、 根据权利要求1或2所述的方法,其中所述停止还包括直到 所述预留已经被复位之前,阻止所述加载操作在高速緩存线轮询循环中执行。
4、 根据权利要求l、 2或3所述的方法,其中所述加载操作是条件 加载操作并可选地所述存储区域是可高速緩沖存储区域。
5、 一种用于在具有第一设备和第二设备的数据处理系统中执行高 速緩存线轮询的设备,所述设备包括用于由第一设备请求第二设备执行一个动作,并经由存储操作在存 储区域设置预留的装置;用于由所述第 一设备经由加载操作读取所述存储区域,以确定所述 所请求的动作是否已经被所述第二设备完成的装置;用于停止所述加载操作,直到所述存储区域上的所述预留丢失的装 置;以及用于在所述所请求的动作被完成之后,由所述第二设备复位在所述 存储区域中的预留的装置。
6、 根据权利要求5所述的设备,其中所述设置装置还包括在所述 存储区域上设置緩冲器占用指示符的装置。
7、 根据权利要求5或6所述的设备,其中所述停止装置还包括 用于直到所述预留已经被复位之前阻止所述加载操作在高速緩存线轮 询循环中执行的装置。
8、 根据权利要求5、 6或7所述的设备,其中所述加载操作是条件 加载操作并可选地所述存储区域是可高速緩沖存储区域。
9、 一种具有可由机器执行的多个指令的机器可读介质,其中所述 多个指令在执行时使得所述机器执行在具有多个过程的数据处理系统 中执行高速緩存线轮询的方法,所述方法包括第一进程请求第二进程执行一个动作,并经由存储操作在存储区域 设置预留;所述第 一进程经由加载操作读取所述存储区域,以确定所请求的动 作是否已经被第二进程完成;停止所述加载操作,直到所述存储区域上的所述预留丢失;以及 在所请求的动作被完成之后,由第二进程复位在所述存储区域中的预留。
10、 一种信息处理系统,包括 存储器,包括可高速緩冲存储区域;以及 耦合到所述存储器的处理单元,所述处理单元包括寄存器,存储在所述可高速緩冲存储区域上指定预留的数据;以及 加载/存储单元,包括第 一加载/存储逻辑,用于在所述可高速緩冲存储区域中存储緩冲器 标记数据值;第二加载/存储逻辑,用于在所述寄存器内存储数据,以指示响应于 在所述可高速緩沖存储区域内存储了所述緩冲器标记数据值,而在所述 可高速緩沖存储区域上设置了所述预留;以及第三加载/存储逻辑,用于基于在所述可高速緩沖存储区域上指定预 留的所述数据的状态,以停止针对所述可高速緩冲存储区域的加载操作 的执行。
全文摘要
在此公开了一种利用存储和预留指令执行高速缓存线轮询的方法、系统、设备和产品。根据本发明的一个实施例,第一进程初始地请求第二进程执行一个动作。经由存储操作在可高速缓冲存储区域设置预留。所述第一进程经由加载操作读取所述可高速缓冲存储区域,以确定所请求的动作是否已经被第二进程完成。所述第一进程的加载操作停止,直到所述可高速缓冲存储区域上的预留丢失。在所请求的动作被完成之后,由第二进程复位在所述可高速缓冲存储区域中的预留。
文档编号G06F9/46GK101401071SQ200780008993
公开日2009年4月1日 申请日期2007年2月26日 优先权日2006年3月16日
发明者C·R·约翰斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1