在处理器与外部设备之间传送指令和数据的系统和方法

文档序号:7639279阅读:204来源:国知局
专利名称:在处理器与外部设备之间传送指令和数据的系统和方法
技术领域
本发明一般地涉及改进的数据处理系统和方法。更具体地说,本发明 涉及用于在处理器与外部设备之间传送指令和数据的系统和方法。
背景技术
通常,在现有技术中,当CPU或其他处理单元(PU)在等待程序外部的某一事件时,操作系统或活动程序将运行轮询循环,它在此循环中将保持读取PU以及程序使用的事件寄存器,直到它所等待的事件发生。当程序 运行时,PU在轮询事件寄存器并且未执行有用的工作。典型的现代处理器通常使用虛拟存储器以及外部设备的存储器映射来 进行此通信。另一方面, 一些处理器(尤其是在多处理器环境中)仅具有 访问本地存储器的权限,而没有访问虚拟存储器的权限。本地存储器是有 限的,并且在典型的多处理器配置中,加载和存储操作无法访问此本地存 储器外部的存储器。因此,当等待来自外部设备的响应时,限制了针对其他PU功能使用本地存储器。如果一个PU同时等待来自若干设备的通信响应,甚至会进一步限制用于其他功能的可用存储器。存储器还可以用于跟踪入站或出站寄存器中是否存在有效数据。有效 数据是已放置在寄存器中以供接收设备使用但接收设备尚未访问的数据。 因此,从以上可知,在多数现代计算设备中,存储器资源存在许多损耗。发明内容鉴于以上所述,具有一种用于在处理器与处理器外部的其他设备(例如,其他处理器、输入/输出(I/O)设备等)之间通信的系统和方法是有利的,其中此类通信不会加重处理器的本地或虚拟存储器的负担。此外,具有一种允许在等待数据或事件时将处理器置于低功率状态的系统和方法是有利的。本发明提供了 一种用于在处理器和外部设备之间传送指令和数据的系 统和方法和/或一种用于与处理器事件i殳备通信的系统和方法。本发明的系 统和方法使用通道接口作为在处理器和存储器流控制器之间通信的主要机 制。所述通道接口提供用于例如与处理器设备、存储器流控制设备、机器 状态寄存器以及外部处理器中断设备进行通信的通道。这些通道用于降低 处理器的本地存储的负担以及使总线通信量最小化。可以将这些通道指定为阻塞或非阻塞。对于阻塞通道,当没有可从相 应寄存器读取的数据时,或没有可供写入相应寄存器的空间时,将处理器 置于低功率"停止"状态。当数据变得可用或空间被^^放时,通过跨阻塞 通道的通信自动唤醒处理器。因此,本发明的通道允许将处理器保持在低 功率状态,而不是如现有技术系统那样不断轮询或遍历事件寄存器。本发明的这些和其他特征和优点将在以下对本发明的示意性实施例的 详细说明中进行描述,或者鉴于以下详细说明,本发明的这些和其他特征 和优点将对本领域的技术人员变得显而易见。


在所附权利要求中说明了被认为是本发明特性的新颖特征。但是,当 结合附图阅读时,通过参考以下对示例性实施例的详细说明,可以最佳地理解发明本身及其优选使用方式、进一步的目的和优点,这些附图是图1是才艮据本发明的示意性实施例的宽带处理器体系结构(BPA)的示 意性方块图;图2是才艮据本发明的示意性实施例的典型MFC 200的示意性方块图; 图3A是示出了根据本发明的示意性实施例的MFC命令的参数助记符的 示意图;图3B是示出了根据本发明的示意性实施例的DMA列表命令的详细信息的示意图;图4是示出了根据美国专利申请公开No. 2004/0264445中所述机制的 关于单对通道的通道电路的SPU发出和控制逻辑以及数据流的布置的示意 图;图5提供了示出根据本发明的示意性实施例的通道接口的示意性操作 的流禾呈图;图6A是示出了本发明的一个实施例使用通道的方式的示意图; 图6B和6C示出了根据本发明的一个示意性实施例的列出SPU通道图 的示意图;图7A是示出了根据本发明的一个示意性实施例的MFC命令操作码通道 的详细信息的示意图;图7B是示出了根据本发明的一个示意性实施例的MFC类ID通道的详 细信息的示意图;图7C示出了才艮据本发明的一个示意性实施例的用于8路、成组相联 (set associative)高速緩存的典型RMT表项;图7D是示出了根据本发明的一个示意性实施例的MFC命令标记标识通 道的详细信息的示意图;图7E是示出了根据本发明的一个示意性实施例的MFC传输大小或列表 大小通道的详细信息的示意图;图7F是示出了根据本发明的一个示意性实施例的MFC本地存储地址通 道的详细信息的示意图;图7G是示出了根据本发明的一个示意性实施例的MFC有效低地址或列 表地址通道的详细信息的示意图;图7H是示出了根据本发明的一个示意性实施例的MFC有效高地址通道的详细信息的示意图;图8是示出了根据本发明的一个示意性实施例的用于写入MFC命令参 数的示意性操作的流程图;图9A是示出了根据本发明的一个示意性实施例的MFC写入标记组查询掩码通道的详细信息的示意图;图9B是示出了根据本发明的一个示意性实施例的MFC读取标记组查询 掩码通道的详细信息的示意图;图9C是示出了根据本发明的一个示意性实施例的MFC写入标记状态更新请求通道的详细信息的示意图;图9D是示出了根据本发明的一个示意性实施例的MFC读取标记组状态 通道的详细信息的示意图;图9E是示出了根据本发明的一个示意性实施例的MFC读取列表停止和 通知标记状态通道的详细信息的示意图;图9F是示出了根据本发明的一个示意性实施例的MFC写入列表停止和 通知标记确认通道的详细信息的示意图;图9G是示出了根据本发明的一个示意性实施例的MFC读取原子命令状 态通道的详细信息的示意图;图IO是示出了根据本发明的示意性实施例的用于轮询一个MFC命令的 完成或一组MFC命令的完成的示意性操作的流程图;图11是示出了根据本发明的示意性实施例的用于等待标记组更新或 等待事件(一个或多个标记组完成)的示意性操作的流程图;图12是示出了根据本发明的示意性实施例的用于使用SPU事件设^ft 为备选方案以等待或轮询条件标记事件的示意性操作的流程图;图13是示出了根据本发明的示意性实施例的用于轮询以判定MFC DMA 列表命令是否已到达设置了停止和通知标志的列表元素的示意性操作的流程图;图14是示出了根据本发明的一个示意性实施例的用于等待MFC DMA 列表命令到达设置了停止和通知标志的列表元素的示意性操作的流程图;图15是示出了根据本发明的示意性实施例的用于使用SPU事件设^ft 为备选方案以等待或轮询列表停止和通知标记组状态的示意性操作的流程图;图16是示出了根据本发明的一个示意性实施例的MFC写入多源同步请求通道的详细信息的示意图;图17A是示出了根据本发明的一个示意性实施例的SPU写入出站邮箱 通道的详细信息的示意图;图17B是示出了根据本发明的一个示意性实施例的SPU写入出站中断 邮箱通道的详细信息的示意图;图17C是示出了根据本发明的一个示意性实施例的SPU读取入站邮箱 通道的详细信息的示意图;图18是示出了根据本发明的一个示意性实施例的SPU信号通知通道的 详细信息的示意图;图19A是示出了根据本发明的一个示意性实施例的SPU写入递减器通 道的详细信息的示意图;图19B是示出了根据本发明的一个示意性实施例的SPU读取递减器通 道的详细信息的示意图;图20A是示出了根据本发明的一个示意性实施例的SPU读^L器状态 通道的详细信息的示意图;图20B是示出了根据本发明的一个示意性实施例的SPU写入状态保存和恢复通道的详细信息的示意图;图20C是示出了根据本发明的一个示意性实施例的SPU读取状态保存和恢复通道的详细信息的示意图;图21是示出了根据本发明的一个示意性实施例的SPU事件设备的逻辑 表示的示意性方块图;图22A是示出了根据本发明的一个示意性实施例的SPU读取事件状态 通道的详细信息的示意图;图22B是示出了根据本发明的一个示意性实施例的SPU写入事件掩码 通道的详细信息的示意图;图22C是示出了根据本发明的一个示意性实施例的SPU读取事件掩码 通道的详细信息的示意图;图22D是示出了根据本发明的一个示意性实施例的SPU写入事件确认通道的详细信息的示意图;图2 3是示出了根据本发明的 一个实施例的用于处理MFC DMA列表命令 停止和通知事件的示意性操作的流程图;图24是示出了根据本发明的一个实施例的用于处理MFC SPU命令队列可用事件的示意性操作的流程图;图25是示出了根据本发明的一个实施例的用于处理SPU入站邮箱可用事件的示意性操作的流程图;图2 6是示出了才艮据本发明的 一个实施例的用于处理SPU递减器事件的示意性操作的流程图;图27是示出了根据本发明的一个实施例的用于处理SPU出站中断邮箱可用事件的示意性操作的流程图;图28是示出了根据本发明的一个实施例的用于处理SPU出站邮箱可用 事件的示意性操作的流程图;图29是示出了根据本发明的一个实施例的用于处理SPU信号通知2 可用事件的示意性操作的流程图;图30是示出了根据本发明的一个实施例的用于处理SPU信号通知1 可用事件的示意性操作的流程图;图31是示出了根据本发明的一个示意性实施例的用于处理锁定线保 留丢失事件的示意性操作的流程图;图32是示出了根据本发明的一个示意性实施例的用于处理特权关注 事件的示意性操作的流程图;图33是示出了根据本发明的一个实施例的用于处理多源同步事件的 示意性操作的流禾呈图。
具体实施方式
图1是其中可以实现本发明的各方面的数据处理系统的示意性方块 图。图1所示的示意性数据处理系统是异构宽带处理器体系结构(例如, 可从国际商业机器公司获得的CELL宽带引擎处理器)的实施方式的实例。虽然宽带处理器体系结构(BPA)将用于本发明的优选实施例的描述,但是 如本领域的技术人员在阅读以下说明时将容易地理解的,本发明并不限于此。如图l所示,BPA 100包括power处理器元件(PPE) 110的异构布置, 所述power处理器元件具有处理器(PPU) 116及其Ll和L2高速緩存112 和114,以及多个协处理器元件(SPE) 120-134,每个协处理器元件都具 有其自己的处理器单元(SPU) 140-154、存储器流控制(MFC) 155-162、 本地存储器或存储(LS) 163-170,以及总线接口单元(BIU单元)180-194 (其可以例如是组合直接存储器访问(DMA)、存储器管理单元(MMU)和 总线接口单元)。还提供了高宽带内部元件互连总线(EIB) 196、总线接 口控制器(BIC) 197和存储器接口控制器(MIC) 198。宽带引擎100可以 是片上系统,以便可以在单个微处理器芯片上提供图1中示出的每个元件。BPA 100可以是片上系统,以便可以在单个微处理器芯片上提供图1 中示出的每个元件。此外,BPA 100是每个SPU可在其中接收来自系统中 的每个其他SPU的不同指令的异构处理环境。此外,用于SPU的指令集不 同于PPU的指令集,例如,PPU可以执行基于精简指令集计算机(RISC) 的指令,而SPU执行矢量化指令。SPE 120-134通过EIB 196相互连接并连接到L2高速緩存114。此外, SPE 120-134通过EIB 196连接到MIC 198和BIC 197。 MIC 198提供到共 享存储器199的通信接口。 BIC 197在BPA 100与其他外部总线和i殳备之 间提供通信接口。PPE 110是双线程PPE 110。此双线程PPE 110和八个SPE 120-134 的组合使得BPA 100能够处理10个同时发生的线程以;S^过128个未完成 的存储器请求。PPE 110用作其他八个处理大多数计算工作负荷的SPE 120-134的控制器。例如,PPE 110可以用于运行常规的操作系统,而SPE 120-134执行矢量化浮点代码执行。SPE 120-134包括协处理单元(SPU) 140-154、存储器流控制单元 155-162、本地存储器或存储163-174以及接口单元180-194。在一个示意性实施例中,本地存储器或存储163-174包括一个对PPE 110可见并可由 软件直接寻址的256 KB指令和数据存储器。PPE IIO可以使用小程序或线程加载SPE 120-134,从而将SPE链接在 一起以处理复杂操作中的每个步骤。例如,集成了 BPA IOO的机顶盒可以 加载程序以便读取DVD、进行视频和音频解码以及显示,并且数据将从SPE 传递到SPE,直到它最终在输出显示器上显示。存储器流控制单元(MFC) 155-162用作SPU到系统的其余部分以及其 他元件的接口。 MFC 155-162提供了主存储和本地存储163-174之间的数 据传输、保护和同步的主要机制。对于处理器中的每个SPU,逻辑上都存 在一个MFC。某些实施方式可以在多个SPU之间共享单个MFC的资源。在 这种情况下,为此MFC定义的所有设备和命令都必须显示为与每个SPU的 软件的无关。共享MFC的效果限于与实施方式相关的^殳备和命令。存储器流控制(MFC)单元图2是根据本发明的示意性实施例的典型存储器流控制(MFC)单元 200的示意性方块图。在此示意性实施例中,MFC 200具有两个到SPU的接 口 210和212、两个到总线接口单元(BIU) 220的接口 214和216,以及 两个到可选SL1高速緩存230的接口 222和224。 SPU接口 210和212是 SPU通道接口 210和SPU本地存储接口 212。 SPU通道接口 210允许SPU访 问MFC设备以^iL出MFC命令。SPU本地存储接口 212由MFC 200使用以 访问SPU中的本地存储。 一个到BIU 220的接口 214允许存储器映射的I/O (腿IO)访问MFC设备。此接口 214还允许其他处理器发出MFC命令。使 用画IO发出的命令被称为MFC代理命令。到SL1高速緩存的接口 222和224主要用于数据传输。 一个接口 222 由MFC 200使用以访问主存储中的地址转换表,另一个接口 224用于在主 存储和本地存储之间传输数据。如图2所示,典型MFC中的主单元包括存储器映射的输入/输出(醒10) 接口 240、 MFC寄存器250和DMA控制器260。醒IO接口 240将SPU的MFC设备映射到系统的实地址空间。这允许从系统中的任何处理器或任何设备访问MFC设备。此外,腿I0接口 240可以配置为将SPU的本地存储映射到 实地址空间。这允许从系统中的任何处理器或任何设备直接访问本地存储, 从而能够进行本地存储到本地存储传输,并使1/0设备能够直接访问SPU 的本地存储域。MFC寄存器单元250包含多数MFC设备。某些设备包含在直接存储器 访问控制器(DMAC) 260中。以下是MFC 200内的设备的列表。用户模式 环境设备(即,可从非特权应用访问的环境设备)包括(1)邮箱设备、(2 ) SPU信号通知设备、(3 )代理标记组完成设备、(4 ) MFC多源同步 设备、(5 ) SPU控制和状态设备,以及(6 ) SPU隔离设备。特权模式环境 设备,即仅可由特权软件(例如操作系统)访问的设备,包括(l)MFC 状态寄存器l、 (2) MFC逻辑分区ID寄存器、(3) MFC存储描述寄存器、(4) MFC数据地址寄存器、(5) MFC数据存储中断状态寄存器、(6 ) MFC 地址比较控制寄存器、(7 ) MFC本地存储地址比较设备、(8)MFC命令错 误寄存器、(9 ) MFC数据存储中断指针寄存器、(10 ) MFC控制寄存器、(11) MFC原子刷新(flush)寄存器、U2) SPU出站中断邮箱寄存器、(13 ) SPU特权设备、(14 ) SPU特权控制寄存器、(15 ) SPU本地存储限 制寄存器、(16 ) SPU配置寄存器,以及(l7 ) SPE上下文保存和恢复。下面将更详细地描述对本发明的机制尤为重要的设备,即邮箱设备、 SPU信号通知设备、代理标记组完成设备、MFC多源同步设备、SPU通道访 问设备、SPU事件设备以及中断设备。通常,MFC 200内的DMAC 260负责数据的同步和传输。DMAC 260可以 在SPU的本地存储和主存储区域之间移动数据。可选地,数据可以緩存在 SL1高速緩存中。SPE和PPE通过借助命令队列270和280之一将DMA命令请求排队到 MFC来指示MFC 200执行这些DMA操作。由SPE发出的命令被排队到MFC SPU 命令队列280。由PPE发出的命令被排队到MFC代理命令队列270。 MFC使 用存储器l访问4呆护检查。MFC命令提供了使得在SPU中执行的代码能够访问主存储以及维护与 系统中的其他处理器和设备的同步的主要方法。还提供了命令以管理可选 的高速緩存。MFC命令可以由在SPU上运行的代码发出,或者由在其他处 理器或设备(例如PPE)上运行的代码发出。在关联的SPU上运行的代码 执行一系列通道指令以发出MFC命令。在其他处理器或设备上运行的代码 执行一系列存储器映射的I/O (謹IO)传输以向SPE发出MFC命令。所发 出的命令被排队到命令队列270和280之一。通常,可以使用醒IO寄存器或通过由关联SPU执行的通道指令对命令 进行排队。醒IO方法旨在由PPE使用以便代表SPE控制主存储与关联的本 地存储之间的数据传输。传输数据的MFC命令被称为MFC DMA命令。MFC DMA 命令的数据传输方向始终以SPE为参照。因此,将数据传入SPE (从主存 储到本地存储)的命令被视为get命令,而将数据传出SPE (从本地存储 到主存储)的命令被视为put命令。MFC命令使用多个影响命令操作的参数。图3A是示出了根据本发明的 示意性实施例的用于MFC命令的参数助记符的示意图。所有命令并不使用 所有参数。例如,EAH参数是可选的。当未在命令中指定可选参数时,硬 件将可选参数设置为"0"。MFC命令可以分为三类定义的命令、非法命令和保留的命令。通过 检查操作码以及扩展操作码(如果存在)来确定命令的分类。如果命令操 作码或操作码和扩展操作码的组合不是定义的或保留的命令的操作码或操 作码和扩展操作码的组合,则命令是非法的。定义的命令属于三种类别之一数据传输命令、SL1高速緩存管理命 令和同步命令。数据传输命令进一步分为定义数据移动方向(即到达或来自本地存储)的子类别。Put命令是将数据从本地存储移动到主存储的数 据传输命令。Get命令是将数据从主存储移动到本地存储的数据传输命令。 应用可以将数据传输命令放置在MFC代理命令队列27 0中。除非另行说明, 否则这些命令可以按任何顺序(异步)执行。"非法"类命令指不在定义的类或保留的类中的命令。"保留"类命 令旨在用于与实施方式相关的用途。SL1存储控制命令是用于控制有关SL1高速緩存的操作的命令。这些 存储控制命令例如包括用于通知SLl高速緩存可能要发出特定类型的数据 传输命令(例如get或put命令)的"提示,,命令、地址范围操作命令和 刷新命令。MFC同步命令用于控制相对于其他MFC、处理器和其他设备来执行存储 访问的顺序。MFC同步命令包括用于强制按顺序执行的命令、用于相对于 DMA命令队列中位于屏障命令之前的所有命令来排序所有后续命令的屏障 命令,以及用于在目标信号通知寄存器中逻辑地设置信号位的发送信号命 令等。MFC命令可以是单个DMA命令或者可以是DMA列表命令。图3B中示出 了根据本发明的示意性实施例的DMA列表命令的详细信息。DMA列表命令 使用存储在本地存储中的有效地址和传输大小对的列表或列表元素作为 DMA传输的参数。这些参数用于MFC代理命令队列不支持的SPU启动的DMA 列表命令。每个列表元素的第 一个字包含传输大小以及停止和通知标志。 第二个字包含有效地址的低32位。虽然为列表中的每个传输元素指定了开 始有效地址,但是主要列表命令中仅指定了传输中涉及的本地存储地址(术 语"主要"指由图3A中所示的参数指定的列表命令)。本地存储地址根据列表中的每个元素传输的数据量在内部递增。但是, 由于对齐限制,如果本地存储地址没有在列表元素传输的16字节边界上开 始,则硬件自动将本地存储地址递增到下一个16字节边界。仅当使用小于 16字节的传输大小时才会发生此情况。传输大小小于16字节的列表元素 在由有效地址的4个最低位定义的当前四倍长字(16字节)内使用本地存 储偏移。在列表元素中指定的有效地址是相对于由基本DMA列表命令中指定的 有效地址的高32位定义的4GB区域的。虽然DMA列表开始地址是相对于单 个4GB区域的,但是列表元素内的传输可以跨4GB边界。设置"S,,(停止和通知)位会使DMA操作在当前列表元素已被处理之 后挂起此列表的执行,并针对SPU设置停止和通知事件状态。在MFC从SPU 程序接收到停止和通知确认之前,已停止的列表不会重新开始执行。使用 关联的命令标记组标识符将停止和通知事件发布到SPU程序。当同一标记 组中存在多个具有停止和通知元素的DMA列表命令时,软件将确保使用标 记特定的屏障或全局屏障来强制有序执行DMA列表命令以免产生不定性。将保证DMA列表命令内的所有DMA列表元素都按顺序启动和发出。DMA 列表命令内的所有元素都具有固有的本地排序。单个DMA列表命令可以包 含最多2048个元素,占用16 KB的本地存储。通道接口在BPA中,通道用作协处理单元(SPU)和存储器流控制(MFC)单元 之间的主要接口。 SPU通道访问设备用于配置、保存和恢复SPU通道。SPU 指令集体系结构(ISA )提供一组通道指令以便通过通道接口 (或SPU通道) 与外部设备通信。表1列出了这些指令通道指令指令助记符操作描述读取通道rdch导致存储在已寻址通道 中的数据的读取被加载 到选定的通用寄存器 (GPR)中写入通道wrch导致从选定的GPR读取 数据并将其存储在已寻 址通道中读取通道计数rchciit导致与已寻址通道关联 的计数被存储在选定的 GPR中表1 -通道指令在体系结构上,SPU通道可以配置为具有只读或只写的访问类型。通道不能配置为读取和写入。除了访问类型之外,每个通道可以配置为非阻塞或阻塞。配置为阻塞的通道使SPU在读取通道计数为"0"的通道或写入满通道(即,通道计数为"0"的通道)时停止。"读取"通*示只有读取通道指令(rdch)可以被发出到此通道并始终返回数据。"写入"通道 表示只有写入通道指令(wrch)可以被发出到此通道且通道始终接受数据。"读取阻塞"通道表示只有读取通道指令(rdch)可以械发出到此通 道。仅当通道计数不为零时,发送到读取阻塞通道的读取通道指令(rdch ) 才会完成。通道计数为"0"表示通道为空。对计数为"0"的读取阻塞通 道执行通道读取(rdch)会导致SPU停止,直到通道中的数据可用。"写入阻塞"通道表示只有写入通道指令(wrch)可以4皮发出到此通 道。仅当通道计数不为零时,发送到写入阻塞通道的写入通道指令(wrch) 才会完成。通道计数为"0"表示通道是满的。对计数为"0"的写入阻塞 通道执行写入通道指令(wrch)会导致SPU停止,直到已寻址的通道中的 表项变得可用。应当指出,发出不适用于通道配置的通道指令会导致无效的通道指令 中断。例如,向配置为写入或写入阻塞通道的通道发出读取通道指令(rdch) 会导致无效的通道指令中断。每个通道都具有相应的计数(即,深度),所述计数表示可以针对此 通道发出的未完成操作的数量。通道深度(即,未完成传输的最大数量) 与实施方式相关。当在SPU中建立新的上下文时,或者继续现有上下文时, 软件必须初始化通道计数。在标题为"External Message Passing Method and Apparatus"(申 请曰为2003年6月26日,在此引入作为参考)的共同未决和共同受让的 美国专利申请公开No. 2004/0264445中说明了通道和通道接口的操作。图 4是示出了才艮据美国专利申请^^开No. 2004/0264445中所述机制的关于单 对通道的通道电路的SPU发出和控制逻辑以及数据流的布置的示意图。现 在将参考图4中示出的各个方块来描述通道接口的操作。如图4所示,方块430表示SPU的外部设备指令发出和控制逻辑。方块432表示到达和来自SPU的数据流。如所公知的,处理器可以同时与许 多不同的外部设备通信。在现在的处理器中,通过通道寄存器完成通信。 每个通道仅在一个方向上工作,并且根据SPU可以对通道执行的操作而称 为读取通道或写入通道。方块434表示由方块435表示的单个外部设备的 一组通道的通道逻辑。如将在以下更详细讨论的,此外部设备435可以是 MFC (例如MFC 200 )、机器状态寄存器或任何其他类型的外部设备。具体 地说,在通道接口的此一般描述之后,将在其后描述使用通道接口与MFC、 机器状态寄存器、事件设备、邮箱设备以及信号通知设备进行通信。在方块434内,示出了读取通道计数器436、读取寄存器438、写入通 道计数器440、写入寄存器442、 MUX (多路复用器)444和MUX 446。通道 指令在总线448上从SPU发出和控制逻辑430传递到读取计数器和写入计 数器436和440以及传递到MUX 444和446的门输入。这些指令还在通道 输出线450上提供给相应的外部设备(例如435 )。数据输入线452将数 据从外部设备435提供给读取寄存器438。通道计数输入信号在通道输入 线454上从外部设备435提供给计数器436,表示数据已输入到寄存器并 运行以便以单位值或单个位来改变计数器436中的计数。在数据输出线456上提供要从写入寄存器442输出到外部设备435的 数据。当外部设备435已完成满意的数据接收并运行以便以单位值或单个 位来改变计数器440中的计数时,通道确认信号在通道确认线458上从外 部设备435返回写入通道计数器440。在本发明的优选实施例中,总线448 上的信号将递减相应读取计数器或写入计数器的计数,而线454或458上 的信号将递增相应读取计数器或写入计数器的计数。如所示出的,计数器436和440的计数在通道停止线460上通过MUX 4 4 4提供给SPU发出和控制逻辑4 3 0 。通道写入数据在通道写入数据线4 6 2 上从SPU数据流方块432提供给写入寄存器442。来自方块436、 438和440 的输出在总线464上返回数据流方块432。非通道指令通过总线466在方 块430和432之间传送。图5提供了示出根据本发明的示意性实施例的通道接口的示意性操作的流程图。将理解的是,图5中的流程图以及此后描述的后续图中的流程 图的每个方块以及方块组合可以通过计算机程序指令实现。可以向处理器 或其他可编程数据处理装置提供这些计算机程序指令以产生机器,以使在 所述处理器或其他可编程数据处理装置上执行的指令创建用于实现一个或 多个流程图方块中指定的功能的装置。这些计算机程序指令还可以存储在 引导处理器或其他可编程数据处理装置以特定方式运行的计算机可读存储 器或存储介质中,以使存储在计算机可读存储器或存储介质中的指令生成 包括实现一个或多个流程图方块中指定的功能的指令装置的制品。相应地,流程图的方块支持用于执行指定功能的装置组合、用于执行 指定功能的步骤组合,以及用于执行指定功能的程序指令装置。还将理解 的是,流程图的每个方块以及流程图中的方块组合可以通过执行指定功能 或步骤的基于专用硬件的计算机系统来实现,或者通过专用硬件和计算机 指令的组合来实现。如图5所示,通道读取或写入指令的发出将导致判定指定的通道是否 为已经实现如上所述的控制机制的通道(步骤576 )。如果否,则判定是 否启用了通道错误逻辑(步骤578 )。如果启用,则处理器将停止(步骤 580 )。如果未启用,则判定命令是读取命令还是写入命令(步骤582 )。如果未实现的命令是写入命令,则不会针对此命令进一步执行任何操 作(步骤584 )。另一方面,如果未实现的命令是读取命令,则向数据处 理器数据流返回零(步骤586 )。在这两种情况下,过程都将返回到等待 下一个读取或写入指令的状态。在示出的优选实施例中,所有有效的读取 指令都必须返回值。如在此定义的,到未实现的通道的通道读取指令将返 回均为零的值。要指出的是,对于特定实施方式,并非必须定义所有通道。每个通道 将具有唯一的数字标识符。在优选实施例中,此通道标识符的范围为O到 127。但是,因为不需要定义所有通道,所以可能不会使用所有标识符。因 此,如果有一个到未定义通道的指令,则过程将沿上面引用的未实现路径 继续。在某些实施方式中,可能需要将到未实现通道的通道读取或写入命令视为非法操作。进一步的操作可能是强制处理器停止,如上述步骤580 中所示。返回图5,如果在步骤576中判定已经实现指定的通道,则进行检查 以查看指定的通道是否为阻塞通道(步骤588 )。如果否,则递减此通道 的计数,但不允许小于零(步骤590 )。如果判定通道为阻塞通道,则进 行检查以确定此通道的计数是否大于零(步骤592 )。如果是,则过程返 回步骤590。如果计数已经为零,如在步骤592中判定的那样,则SPU停止,直到 外部设备提供与此通道相关的输入并且因此从零更改计数(步骤594和 595 )。因此,将定期处理步骤594和595的循环,直到此通道的计氣l生 更改。 一旦计数更改,过程将从步骤595继续到步骤590。此后,将判定通道是主动的还是被动的(步骤596 )。如果通道是被 动的,则进行检查以查看命令是写入指令还是读取指令(步骤598 )。如 果命令是写入指令,则将数据存储在本地以供外部读取(步骤600 )。如 果命令是读取指令,则通过图4的SPU数据流432将数据返回SPU (步骤 602 )。应当指出的是,在,皮动通道的情况下,SPU依赖于外部过程来完成操 作。作为一个实例,读取通道可以依赖于外部设备来加载数据。另一方面, 在主动通道中,SPU主动地完成执行读取或写入操作的操作。连接的硬件 针对主动读取通道中的数据发出外部请求是此类型操作的一个实例。当在步骤596中判定通道是主动通道时,将进行检查以查看命令是读 取命令还是写入命令(步骤604 )。如果命令是写入命令,则将写入数据 向外输出到SPU或内部寄存器(步骤606 )。如果命令是读取命令,则将 读取请求发送到相应的外部设备(步骤608 )。将等待请求数据的输入(步骤610)。将定期地判定是否已接收到读 取数据(步骤612 )。如果否,则过程返回步骤610,直到进行下次检查时。 当接收到数据时,过程完成(步骤602 )。根据上述内容,使用特定的通道读取或写入指令(其中在指令中指定了通道号)访问每个通道将是显而易见的。每个通道都具有为其指定的计 数。此计数4吏用读取通道计数指令(其中在指令中指定了感兴趣的通道) 来读取。通道命令不是推测性的,并且不能在外部接口处被乱序处理。通道体系结构不要求SPU外部的设备按顺序处理通道命令,但是可能会根据处理器和外部设备实施方式而执行此操作。此计数寄存器中的值将跟踪对 此寄存器的访问次数与已针对此寄存器发生的外部确认次数。在操作中,经由通过外部接口(多个)的访问更改通道计数的方式是 基于实施方式的。在优选实施例中,对于每个到达或来自寄存器的成功数据传输,计数以1为单位递增。对于每个通道,SPU访问可以被定义为读 取或写入通道。进而,在优选实施例中,当通道^L定义或实现为"阻塞" 通道时,使用"0"计数停止进一步的操作。当通道寄存器定义为具有为"1" 的队列深度时,"0"计数可以用于指示此通道中的数据无效。通道还可以 定义为停止在读取或写入通道命令时的SPU操作(在此命令时,如果计数 为"0"),直到计数不再为"0"。在优选实施例中,对于每个SPU启动的读取或写入通道命令,计数器值递减,对于每个外部启动的读取或写入(带有或不带有数据)访问,计 数器值递增。换言之,计数器保持输入与输出的指示。因此,对于写入,为"0"的值或计数指示没有更多的外部写入槽可用。另一方面,对于读取, 为"0"的计数值指示没有有效的数据。当计数为零时,如果发出其他SPU 读取或写入通道命令,并且通道定义为非阻塞,则计数将保持为"0"并且寄存器中的数据将丢失。如优选实施例中实现的,此寄存器中的先前最新 数据将丢失。如果对于此通道寄存器实施方式的位数,计数处于最大值, 并且发生其他将导致计数超范围递增的事务,则计数将停留在此最大值。 初始化计数值的方法与实施方式相关,并且一种方法是通过外部接口 进行初始化。此计数可用于写入队列的流控制。可以将计数预先设置为外 部队列的深度。计数寄存器中的零值表示此外部队列中没有更多的空间。对于为'T,的外部队列深度,计数应预先^L置为'T,。当SPU写入此通 道时,计数将转到"0"。当外部设备从此通道中读取时,计数将递增到"1",由此指示通道已准备好其他写入操作。如上所述,对于通道寄存器的读取,这允许计数指示有效数据。如果计数寄存器预先设置为"o",这指示数据无效。当外部设备向此通道写入 时,计数将递增到'T,,指示数据对于SPU读取有效。当SPU从此通道中 读取时,计数将递减回"0",指示可以发生其他外部写入。在本发明的优选实施例中,计算机代码通道计数读取指令被发送到计 数器以确定读取和写入通道的计数。当外部设备为智能设备(例如多处理 器环境中的其他SPU或计算设备)时,外部设备还可以将通道计数读取指 令发送到计数器以确定计数。通过此方式,外部设备可以确定通道何时在含读取通道的处理器。使用本发明,读取和写入通道可以为非累积或累积的。累积通道是累 积多个写入的通道。即,将入站数据逻辑地添加到已包含在寄存器或其他 存储装置中的数据,直到读取该通道。读取该通道时,通常将累积寄存器 重置为"0",并且通道将再次开始累积。此操作可以用于读取或写入通道。进而,累积通道可以为阻塞或非阻塞的。通常,累积通道将仅具有为 "1"的计数深度,而非累积通道可用于对向此通道执行的每个写入计数。概括地说,通道接口使用已定义的通道来释放存储器,但仍提供有关 寄存器中的数据何时有效(换言之,先前尚未,皮读取)的易于访问的信息。 通过向计数机制发送通道计数读取指令来获取此信息。当智能外部设备连 接到给定通道时,外部设备可以使用类似指令向给定通道发送数据或从给 定通道接收数据。当指定的通道定义为非阻塞通道时,通道接口还可通过 使用通道计数读取指令进一步防止意外覆盖寄存器中的数据。及由此类外部设备提供的设备传送指令和数据。例如,本发明提供了用于 使用SPU的通道接口与MFC、机器状态寄存器和中断设备传送指令和数据 的机制。此外,通道接口用于与BPA的事件设备、邮箱设备、多源同步设 备、代理标记组完成设备、信号通知设备等传送指令和数据。图6A是示出了本发明的一个实施例使用通道的方式的示意图。如图 6A所示,通道接口 620提供多个通道,SPU 622可以通过这些通道与MFC 624、机器状态寄存器634和中断设备636通信。每个通道可以包括类似于 上面图4中所述元素的元素,并且其操作类似于图5A和5B中所述的操作。 在本发明的一个示意性实施例中,通道接口 620可以对应于由图4中的方 块434表示的所有通道对的聚合。SPU 622可以对应于图4中的方块430 和432的组合,例如,图6中的其他所有方块对应于图4中的方块435。如图6A所示,通道631、 633和635提供与SPU 622关联的通信路径, SPU事件设备630和递减器632可以通过此路径与MFC 通信。SPU事件 设备630提供用于处理在BPA内生成的事件的机制。通道633提供用于标 识感兴趣事件以及获取有关这些感兴趣事件的信息的机制,如将在以下更 详细讨论的。递减器632提供了 SPU上运行的软件可以借助其测量时间进 度或被通知经过的给定测量时间的机制。递减器632可以通过通道631设 置其值以及读取状态。SPU (发出和控制逻辑、处理器数据流)622提供用于与外部设备通信 的指令、数据和设备。例如,SPU 622提供了 SPU通道访问设备,此设备 是初始化、保存和恢复SPU通道的特权设备。所述设备包括三个醒IO寄存 器SPU通道索引寄存器、SPU通道计数寄存器和SPU通道数据寄存器。SPU 通道索引寄存器是指向其计数和数据分别由SPU通道计数寄存器和SPU通 道数据寄存器访问的通道的指针。SPU通道索引寄存器选择使用SPU通道 计数寄存器或SPU通道数据寄存器访问的SPU通道。SPU通道数据寄存器 用于读取或初始化由SPU通道索引寄存器选择的SPU通道数据。除了用于与SPU 622的设备通信的通道631、 633和635之外,通道 637提供了与机器状态寄存器634关联的通信路径。机器状态寄存器634 包含当前机器隔离状态和中断状态。隔离状态指示是否已将SPU隔离。BPA 的隔离设^f吏得特权软件和应用能够将代码映像隔离和加载到一个或多个 SPU中。SPU隔离设备确保加栽到关联的SPU本地存储的代码映像尚未被任 何装置改变。当支持嵌套的中断时,与中断状态相关的机器状态寄存器用于保存和恢复中断状态信息。此外,通道639提供与中断设备636关联的通信路径。中断设备636 用于将中断和中断状态信息路由到PPE或外部设备、将提供给PPE的中断 按照优先顺序排序,并生成处理器间中断。此外,通道641提供与邮箱设备638关联的通信路径。邮箱设备638 用于将信息发送到外部设备(例如其他SPU、 PPE等)或用于从其接收信息。通道643提供与SPU信号通知设备640关联的通信路径。SPU信号通 知设备640用于将信号(例如緩冲区完成标志)从系统中的其他处理器和 设备发送到SPU。通道645提供与代理标记组完成设备642关联的通信路径。代理标记 组完成设备642是用于确定何时完成一组类似标记指令的处理的设备。通道647提供与MFC多源同步设备644关联的通信路径。MFC多源同 步设备644实现跨本地存储和主存储地址域的累积排序。由多个源(即, 两个或更多个处理器或单元)相对于其他处理器或单元执行的存储访问的 排序被称为累积排序。图6B和6C示出了根据本发明的一个示意性实施例的列出SPU通道图 的示意图。如图6所示,SPU通道接口支持各种类型的用于传送指令和数 据的通道。这些通道包括SPU事件通道650、 SPU信号通知通道652、 SPU 递减器通道654、 MFC多源同步通道656、 SPU保留通道658、掩码读取通 道660、 SPU状态管理通道662、 MFC命令参数通道664、 MFC标记状态通道 666以及SPU邮箱通道668。这些"通道"本质上是存储器映射的寄存器以 及用于写入这些寄存器的相应电路。因此,术语"通道"在此还可以用于 指存储与指定的"通道"对应的数据值的一个或多个寄存器。将在以下描 述这些通道中的每个通道的操作。在PPE、 SPU和MFC中提供了各种用于使 用这些通道的设备。将在以下详细描述这些类型的通道中的每种通道,从 用于与MFC通信的这些通道开始。MFC命令参数通道MFC命令参数通道664是用于将数据写入MFC SPU命令队列的MFC命 令参数寄存器的通道(参见以上的图2和表1) 。 MFC命令参数通道664 是非阻塞的并且没有与其关联的通道计数。因此,执行发送到这些通道中 的任何通道的读取通道计数(rchcnt)指令将返回计数'T,。MFC命令参数通道664包括MFC本地存储地址通道、MFC有效高地址通 道、MFC有效低地址或列表地址通道、MFC传输大小或列表大小通道、MFC 命令标记标识通道、MFC命令操作码通道以及MFC类ID通道。将在以下详 细描述这些通道中的每个通道。MFC命令操作码通道图7A中提供了根据本发明的一个示意性实施例的MFC命令操作码通道 的详细信息。MFC命令操作码通道根据操作码标识要执行的操作。将相对 于指令流异步地检查此操作码的有效性。如果MFC命令或任何命令参数无 效,则MFC命令队列处理将挂起并生成无效的MFC命令中断。使用单个通道指令将MFC命令和类ID参数写入MFC SPU命令队列。如 图7A所示,在优选实施例中,MFC命令操作码参数是32位字的低16位。 此字段的高8位被保留,低8位标识了 MFC命令操作码。MFC类ID通道MFC类ID通道用于指定每个MFC命令的替换类ID和传输类ID,如图 7B所示。SPU和软件使用这些ID来提高系统的整体性能。具体地说,替换 类ID (RclassID)与替换管理表(RMT) —起使用以控制高速緩存替换。 可以例如从PPE操作的加栽和存储地址来生成替换类ID (PPE包括地址范 围设备,此设备提供了 一种将用于PPE加载和存储以及指令取回的有效地 址或实地址映射到高速緩存替换管理设备的类ID的方法)。RclassID用于生成用于控制替换策略的特权软件管理的表(即替换管 理表(RMT))的索引。RMT的格式与实施方式相关。RMT包括数量与实施 方式相关的表项,这些表项应包含成组启用位、有效位以及其他控制信息。可选地, 一种实施方式还可以提供高速緩存旁路位和算法位。RMT表中的 表项数以及每个表项的大小与实施方式相关。图7C示出了用于8路、成组相联高速緩存的典型RMT表项。RMT表位 于系统的实地址空间中。特权软件应将这些RMT表映射为特权页。 一种实 施方式应为每个主要的高速緩存结构提供RMT。返回图7B,传输类ID(TclassID)用于标识对具有不同特征的存储的 访问。TclassID旨在用于允许实施方式根据存储位置的特征来优化对应于 MFC命令的传输。TclassID的设置和使用与实施方式相关。RclassID和TclassID (此后称为"类ID参数")的内容不是永久性 的,并且必须针对每个MFC命令入队序列写入。无论与从PPE还是从SPU 命令队列的SPU侧发出的命令一起使用,类ID参数都执行相同的功能。类 ID参数用于控制与SPE关联的资源,并且对与其他SPE或PPE关联的资源 没有任何影响。不会验证类ID参数的有效性。所支持的类ID参数的数量 与实施方式相关。MFC命令标记标识通道MFC命令标记标识通道用于为每个命令或一组命令指定标识符。图7D 示出了 MFC命令标记标识通道的详细信息。例如,标识标记是x' 0'与x 'IF'之间的任何值。标识标记在硬件中具有纯本地范围。因此,可以在 不同的SPE或PPE中使用同 一标记。可以4吏用同 一标识来标记任何数量的MFC命令。使用同一标识标记的 MFC命令被称为标记组。标记与写入特定队列的命令关联。提供给MFCSPU 命令队列的标记独立于提供给MFC代理命令队列的标记。MFC命令标记标 识参数的内容不是永久性的,并且必须针对每个MFC命令入队序列写入。 将相对于指令流异步地检查此参数的有效性。如果高位(例如位Q到10) 没有设置为0,则MFC命令队列处理被挂起并将生成中断。MFC传输大小或列表大小通道MFC传输大小或列表大小通道用于指定MFC传输的大小或MFC DMA传 输列表(即一系列DMA传输命令的列表)的大小。图7E中提供了 MFC传输 大小或列表大小通道的详细信息。在示意性实施例中,传输大小可以具有 值l、 2、 4、 8、 16或16字节的倍数,最大值为16KB。 MFCDMA传输列表 大小可以具有值8或8的倍数,最大值为16 KB。 MFC传输大小或列表大小 通道的内容不是永久性的,并且必须针对每个MFC命令入队序列写入。将 相对于指令流异步地检查此参数的有效性。如果大小无效,则MFC命令队 列处理被挂起并将生成MFC DMA对齐中断。MFC本地存储地址通道MFC本地存储地址通道用于提供与要排队的MFC命令关联的SPU本地 存储地址。MFC本地存储地址用作MFC传输的源或目的地,如MFC命令中 所定义的。图7F中提供了 MFC本地存储地址通道的详细信息。MFC本地存储地址通道的内容不是永久性的,并且必须针对每个MFC 命令入队序列写入。将相对于指令流异步地检查MFC本地存储地址参数的 有效性。如果地址未对齐,则MFC命令队列处理被挂起并将生成MFC DMA 对齐异常。例如,为了^皮看作对齐,本地存储地址的4个最低位必须与有 效地址的最低的4个位相匹配。MFC有效低地址或列表地址通道MFC有效低地址或列表地址通道用于为MFC命令或指向MFC DMA列表 命令的列表元素的本地存储指针指定有效低地址。如果在MFC状态寄存器 中启用转换,则PPE的地址转换设备将有效地址转换为实地址。图7G提供 了 MFC有效低地址或列表地址通道的详细信息。MFC有效低地址或列表地址通道的内容不是永久性的,并且必须针对 每个MFC命令入队序列写入。对于小于16字节的传输大小,此参数的位 28到31必须根据传输大小提供自然对齐。对于等于或大于16字节的传输 大小,位28到31必须为"0"。如果禁用转换,此参数必须在主存储域的实地址空间限制内。对于MFC列表命令,列表地址的位29到31必须为"0"。 如果没有满足这些条件中的任一条件,则参数无效并被视为未对齐。将相对于指令流异步地检查MFC有效低地址或列表地址参数的有效 性。如果地址无效,例如由于段错误、映射错误、保护违反或因为地址未 对齐,则MFC命令队列处理被挂起并将生成中断。可以生成的中断的类型 包括MFC数据段中断、MFC数据存储中断和DMA对齐中断。MFC有效高地址通道MFC有效高地址通道用于指定MFC命令的有效地址。如果在MFC状态 寄存器中启用转换,则地址转换设备将有效地址转换为实地址。图7H示出 了 MFC有效高地址通道的详细信息。MFC有效高地址通道的内容不是永久性的,并且必须针对每个MFC命 令入队序列写入。如果没有写入高32位,则硬件设置EAH,高地址位被设 置为Q,即地址位于Q和4GB之间。将相对于指令流异步地检查此参数的 有效性。如果地址无效,例如由于段错误、映射错误或保护违反,则MFC 命令队列处理被挂起并将生成中断。可以生成的中断的类型包括MFC数据 段中断和MFC数据存储中断。应当指出,将在传输过程中检查有效地址的 有效性。可以在遇到无效地址并生成异常之前执行部分传输。使用上述MFC命令参数通道从SPU排队MFC命令时,必须首先将MFC 命令参数写入MFC命令参数通道。这可以按任何顺序执行,但MFC命令操 作码和类ID参数必须最后写入。因此,为了写入MFC命令参数,将执行图 8中示出的操作。如图8所示,所述操作包括将本地存储地址参数写入MFC本地存储地 址通道(步骤810)。将有效高地址参数写入MFC有效高地址通道(步骤 820 )。将有效低地址或列表地址参数写入MFC有效低或列表地址通道(步 骤830 )。将MFC传输或列表大小参数写入MFC传输大小或列表大小通道 (步骤840 )。将MFC命令标记参数写入MFC命令标记标识符通道(步骤 850 )。在将上述所有参数都写入其各自的通道之后,将MFC命令操作码和类ID参数写入MFC操作码和MFC类ID通道(步骤860 ),然后操作结束。 应当理解,步骤810-850可以按任何顺序执行,步骤860在其他参数写入 其各自的通道之后执行。MFC命令参数保留在MFC命令参数通道中,直到MFC处理了 MFC命令 操作码和类ID参数的写入。到MFC命令操作码通道和MFC类ID通道的写 入通道(wrch)指令导致将MFC命令参数通道中保存的参数发送到MFC命 令队列。在将MFC命令本身发出到MFC命令队列之前,可以按任何顺序写 入MFC命令参数。将在入队操作中使用最后写入MFC命令参数通道的参数 的值。在将MFC命令排队之后,MFC参数的值变得无效,并且必须为下一个 MFC命令排队请求重新指定值。未指定所有所需的MFC参数(即,除了可 选EAH之外的所有参数)会导致MFC命令队列的操作不正确。硬件将MFC命令操作码通道和MFC类ID通道的最大计数配置为硬件所 支持的MFC队列命令数。软件必须将MFC命令操作码通道的通道计数初始MFC代理命令队列槽的数量。还必须在SPE抢占式上下文切换时保存和恢 复MFC命令操作码通道的通道计数。MFC标i己组状态通道如上所述,每个命令都可以使用标识符(例如5位标识符,称为MFC 命令标记)进行标记。可以为多个MFC命令使用同一标识符。将具有同一 标识符的一组命令定义为标记组。软件可以使用MFC命令标记来检查或等 待每个标记组的所有排队的命令的完成。此外,软件使用MFC命令标记来 检查或等待MFC DMA列表命令到达设置了停止和通知标志的元素,以及确 认列表元素以重新开始MFC DMA列表命令。首先将描述MFC标记组状态通道,然后将提供用于确定标记组状态以 及确定MFC DMA列表命令完成的过程的描述。MFC标记组状态通道包括MFC写入标记组查询掩码通道、MFC读取标记组查询掩码通道、MFC写入标记状态更新请求通道、MFC读取标记组状态通 道、MFC读取列表停止和通知标记状态通道、MFC写入列表停止和通知标记 确认通道,以及MFC读取原子命令状态通道。将在以下详细描述这些通道 中的每个通道。MFC写入标记組查询掩码通道MFC写入标记组查询掩码通道用于选择要包括在查询或等待操作中的 标记组。图9A中示出了 MFC写入标记组查询掩码通道的详细信息。此通道提供的数据由MFC保留,直到被向此通道发出的后续写入通道 (wrch)指令所更改。因此,无需为每个状态查询或等待重新指定数据。 如果软件在MFC标记状态更新请求未决时修改了此掩码,则结果的含义将 不确定。应始终在修改此掩码之前取消未决的MFC标记状态更新请求。可 以通过向MFC写入标记状态更新请求通道写入值"0"(即,立即更新)来 取消MFC标记状态更新请求。可以通过读取(rdch) MFC读取标记组查询 掩码通道来访问此通道的当前内容。此通道为非阻塞的并且没有关联的计 数。如果向此通道发送读取通道计数(rchcnt)指令,则计数将始终返回 为T 。MFC读取标记组查询掩码通道MFC读取标记组查询掩码通道用于读取代理标记组查询掩码寄存器的 当前值。图9B中提供了 MFC读取标记组查询掩码通道的详细信息。读取此 通道将始终返回最后写入MFC写入标记组查询掩码通道的数据。此通道可 以用于避免代理标记组查询掩码的软件影子复制以及进行SPE上下文保存 和恢复操作。此通道为非阻塞的并且没有关联的计数。因此,如果向此通 il^送读取通道计数(rchcnt)指令,则计数将始终返回为'T,。MFC写入标i己状态更新请求通道MFC写入标记状态更新请求通道控制何时在MFC读取标记组状态通道中更新MFC标记组状态。图9C中示出了 MFC写入标记状态更新请求通道的详细信息。MFC写入标记状态更新请求通道可以指定立即更新状态或在出现条件 时更新状态,例如,当任何启用的MFC标记组完成具有"没有未完成的操 作,,状态时更新,或仅当所有启用的MFC标记组都具有"没有未完成的操 作"状态时才进行更新。到此通道的写入通道(wrch)指令必须在来自MFC 读取标记组状态通道的读取通道(rdch)发生之前发生。MFC写入标记状态更新请求应在设置标记组掩码之后以及在针对感兴 趣的标记组发出命令之后执行。如果针对标记组的命令在发出MFC写入标 记状态更新请求之前完成,由此满足更新状态条件,则无需等待即可返回 状态。如果没有首先通过写入MFC写入标记状态更新请求通道来请求状态 更新就从读取MFC读取标记组状态通道,则会导致软件引起的死锁。可以通过向MFC写入标记状态更新请求通道发出立即更新状态请求, 读取与MFC写入标记状态更新请求通道关联的计数直到返回值"1",然后 从读取MFC读取标记组状态通道以确定并丢弃不需要的结果,来取消先前的MFC标记状态更新请求。两个不带有中间状态读取请求的条件更新请求会导致返回不可预测的标记状态。为了避免不可预测的结果,软件将针对标记状态更新的请求与 对标记状态的读取配对,除非通过立即更新请求执行请求取消。特权软件将此通道的计数初始化为"1"。当向此通道发出写入通道 (wrch)指令时,此通道的计数被设置为"0"。当MFC接收到标记状态更 新请求时,计数净皮设置为"1"。此通道启用了写入阻塞且最大计数为'T,。MFC读取标i己组状态通道MFC读取标记组状态通道包含来自上一个标记组状态更新请求的标记 组的状态。图9D中提供了 MFC读取标记组状态通道的详细信息。只有在标记组状态更新时启用的标记组的状态有效。与在标记组状态 更新时禁用的标记组对应的位位置^f皮i殳置为"0"。必须在从MFC写入标记状态更新请求通道读取之前请求此通道。未执 行此操作会导致软件引起的死锁条件。这被视为编程错误,并且需要特权 软件删除死锁条件。如果状态尚不可用,则发送到MFC读取标记组状态通道的读取通道计 数(rchcnt)指令将返回"0",或者如果状态可用,则返回T 。此指 令可用于避免在读取MFC读取标记组状态通道时停止SPU。软件将此通道 的计数初始化为值"0"。此通道启用了读取阻塞,并且最大计数为"1"。MFC读取列表停止和通知标记状态通道图9E中提供了 MFC读取列表^f亭止和通知标记状态通道的详细信息。如 上所述,MFC列表命令的列表元素包含停止和通知标志。如果在列表元素 上设置此标记,则MFC将停止执行MFC列表命令(即DMA列表命令),并 设置与此通道中的MFC列表命令的标记组对应的位。还将与此通道关联的 计数设置为"1" 。 MFC列表命令保持停止,直到通过向MFC写入列表停止 和通知标记确认通道写入标记值进行确认。如果希望在DMA列表执行已到达特定点时通知程序,则MFC列表停止 和通知设备纟艮有用。当应用希望动态更改已停止列表元素之后的列表元素 (传输大小或有效地址)时,此设备也很有用。还可以通过将列表元素的 传输大小设置为"0"来跳过这些元素。不允许硬件预取停止和通知元素之 后的列表元素。特权软件应将MFC读取列表停止和通知标记状态通道的计数初始化为标记组具有已停止的命令。向此通道发出读取通道(rdch)指令会将所有 位重置为O并将对应于此通道的计数i殳置为"0"。因此,如果在没有包含 设置为'T,的停止和通知标志的未完成列表元素并且没有已停止命令的情 况下发出读取通道(rdch)指令,则会导致软件引起的死锁。当没有标记组停止时在此通道上发出读取通道(rdch)指令会导致SPU 执行停止,直到遇到设置了停止和通知标志的列表元素。软件还可以读取(rchcnt)与此通道关联的计数以便与SPU事件设备一起使用,从而确定 何时遇到设置了停止和通知标志的MFC列表元素。如果自上次读取此通道 以来没有新的已停止MFC列表命令,则发送到MFC读取列表停止和通知标 记状态通道的读取通道计数(rchcnt)指令将返回"0"。此通道为读取阻 塞的,并且最大计数为"1"。MFC写入列表停止和通知标记确^人通道图9F中示出了 MFC写入列表停止和通知标记确认通道的详细信息。MFC 写入列表停止和通知标记确认通道用于确认包含在设置了停止和通知标志 的列表元素上停止的MFC列表命令的标记组。通过将MFC标记组写入此通 道来确i人标记组。在写入之后,将重新启动与写入此通道的值相匹配的标 记组的所有已停止MFC列表命令。如果希望在DMA列表执行已到达特定点时通知程序,则MFC列表停止 和通知设备很有用。当应用希望动态更改已停止列表元素之后的列表元素 (传输大小或有效地址)时,此设备也4艮有用。还可以通过将列表元素的 传输大小设置为0来跳过这些元素。不允许硬件预取停止和通知元素之后 的列表元素。未定义确认当前由于停止和通知条件而未停止的标记组。这样做会导 致MFC读取列表停止和通知标记状态通道中的状态无效。为保持一致性, 将此条件视为无操作(no-op)。此通道为非阻塞通道,并且没有关联的计数。每当向此通道发送读取 通道计数(rchcnt)指令时,计数都始终返回为"1"。MFC读取原子命令状态通道图9G中提供了 MFC读取原子命令状态通道的详细信息。MFC读取原子 命令状态通道包含上一个已完成的立即MFC原子更新命令的状态。原子命 令是无需等待MFC SPU队列中的其他命令而执行以及独立于MFC SPU队列 中的其他命令而执行的命令。MFC支持四个原子命令getllar(获取锁定线并保留)、putllc (有条件地放置锁定线)、putlluc (无条件地放置锁 定线),以及putqlluc (无条件地放置排队锁定线)。这些命令执行与可 緩存存储指令类似的功能,通常由软件使用以释放"锁定"。putlluc和 putqlluc命令之间的差别在于putqlluc命令带有标记并且在MFC SPU命 令队列中排在其他MFC命令之后,而putlluc命令则被立即执行。由于putqlluc命令带有标记并具有隐含的标记特定的屏障,因此相对 于已在MFC SPU命令队列内的同一标记组中的所有其他命令进行排序。 getllar、 putl lc和putl luc命令没有标记;因此它们被立即执行。尽管 get 1 lar 、 put 1 lc和putl luc命令被立即执行,但是这些命令仍需要MFC SPU 命令队列中的可用槽。应假设与MFC SPU命令队列中的其他命令没有顺序 关系。在发出每个getllar、 putl lc或putlluc命令之后,软件必须从MFC 读取原子命令状态通道发出读取以^i命令的完成。在发出立即原子命令 之前向此通道发出通道读取(rdch)指令会导致软件引起的死锁。软件可以读取与此通道关联的通道计数(rchcnt )以判定立即原子MFC 命令是否已完成。如果返回值"0",则立即原子MFC命令尚未完成。如果 返回值"1",则立即原子MFC命令已经完成,并且可通过读取(rdch)此 通道来获取状态。应始终在立即原子MFC命令之后从MFC读取原子命令状态通道读取 (rdch)。无需中间读取而从MFC读取原子命令状态通道执行多个原子MFC 命令会导致不正确的状态。特权软件将此通道的计数初始化为"0"。此通道为读取阻塞通道,并 且最大计数为"1"。读取时会清除此通道的内容。后续的立即MFC原子更 新命令的完成会覆盖较早MFC命令的状态。上述MFC标记组状态通道用于促进确定标记组状态以及确定MFC DMA 列表命令完成。支持三个用于确定标记组状态的基本过程轮询MFC读取 标记组状态通道、等待标记组更新,或等待事件并在标记组状态更新事件 时中断。对于轮询一个MFC命令的完成或一组MFC命令的完成,图10中示如图10所示,将清除任何未决的标记状态更新请求(步骤1010)。 这例如可以通过以下操作完成向MFC写入标记状态更新请求通道写入 "0",读取与MFC写入标记状态更新请求通道关联的通道计数直到返回值 "1",以及读取MFC读取标记组状态通道并丟弃标记状态数据。然后,通过向MFC写入标记组查询掩码通道写入适当掩码数据来启用 感兴趣的标记组(步骤1020 )。随后,例如通过向MFC写入标记状态更新 请求通道写入值"0"来请求立即标记状态更新(步骤1030 )。然后,执行MFC读取标记组状态通道的读取(步骤1040 )。返回的数 据是每个应用了标记组掩码的标记组的当前状态。判定是否存在其他感兴 趣的标记组(步骤1050 )。如果是,则操作返回步骤1030。否则,操作结 束。对于等待标记组更新,或等待事件(一个或多个标记组完成),图11 中示出了基本过程。如所示出的,操作以清除任何未决的标记状态更新请 求来开始(步骤1110)。这例如可以通过以下操作完成向MFC写入标记 状态更新请求通道写入"0",读取与MFC写入标记状态更新请求通道关联 的通道计数直到返回值"1",以及读取MFC读取标记组状态通道并丟弃标 记状态数据。通过向MFC写入标记状态更新请求通道写入值"01"或"10"来请求 条件标记状态更新(步骤1120)。值"01"指定任何已启用标记组的完成 将导致标记组更新。值"10"指定所有已启用标记组都必须完成以导致SPU 标i己组状态更新。此后,读取MFC读取标记组状态通道以等待在步骤1120中指定的特定 标记事件(步骤1130 )。此读取将停止SPU的执行,直到满足在步骤1120 中指定的条件。备选地,可以执行与MFC读取标记组状态通道关联的计数 的读取以轮询或等待特定的标记事件(步骤1132 )。判定返回的计数是否具有值'T,(步骤1140)。如果否,则操作返 回步骤1132。如果计数为"1",则读取MFC读取标记组状态通道以判定 哪个或哪些标记组完成(步骤1150)。然后操作结束。等待或轮询条件标记事件的备选方案是使用SPU事件设备。通常,当应用等待多个事件中的一个事件发生或者可以在等待命令完成时执行其他操作时,将4吏用此过程。所述过程如图12所示。如图12所示,将清除任何未决的标记状态更新请求(步骤1210)。 如上所述,这例如可以通过以下操作完成向MFC写入标记状态更新请求 通道写入"0",读取与MFC写入标记状态更新请求通道关联的通道计数直 到返回值"1",以及读取MFC读取标记组状态通道并丢弃标记状态数据。选择一个或多个标记组(步骤1220 )。通过向SPU写入事件确认通道 写入(wrch)值'T,来清除任何未决的标记状态更新事件(步骤1230 )。 通过向SPU写入事件掩码通道写入"1"来取消MFC标记组状态更新事件的 掩码(步骤1240 )。然后,读取SPU读取事件状态通道以等待发生已启用 的事件(步骤1250 )。此读取将停止SPU的执行,直到发生已启用的事件。 备选地,可以读取与SPU读取事件状态通道关联的计数以轮询或等待特定 的标记事件,直到计数返回为"1"。读取SPU读取事件状态通道并判定是否发生已启用的事件(步骤 1260 )。如果否,则操作返回步骤1250。如果发生已启用的事件,则读取 MFC读取标记組状态通道以判定哪个或哪些标记组导致此事件(步骤 1270 )。然后操作结束。支持三个用于判定MFC DMA列表命令是否已到达设置了停止和通知标 志的列表元素的基本过程轮询MFC读取列表停止和通知标记状态通道、 等待MFC DMA列表命令停止和通知事件,以及在MFC DMA列表命令停止和 通知事件时中断。对于轮询以判定MFC DMA列表命令是否已到达设置了停 止和通知标志的列表元素,图13中示出了基本过程。如图13所示,操作开始,将发出具有设置了停止和通知标志的列表元 素的MFC DMA列表命令(步骤1310 )。读取(rchcnt)与MFC读取列表停 止和通知标记状态通道关联的计数直到返回值"1"(步骤1320 )。如果 返回值'T,(步骤1330 ),则读取(rdch) MFC读取列表停止和通知标记 状态通道(步骤1340 )。返回的数据是自上次读取此通道以来每个已到达设置了停止和通知标志的列表元素的标记组的当前状态。判定一个或多个感兴趣的标记組是否已到达i殳置了停止和通知标志的列表元素(步骤1350 )。如果否,则操作返回步骤1340,直到一个或多个 感兴趣的标记组已到达设置了停止和通知标志的列表元素。如果一个或多个感兴趣的标记组已到达设置了停止和通知标志的列表 元素,则向MFC写入列表停止和通知标记确认通道写入(wrch)与已停止 的标记组对应的标记组号以重新开始MFC DMA列表命令(步骤1360 )。然 后操作结束。图14中示出了用于等待MFCDMA列表命令到达设置了停止和通知标志 的列表元素的基本过程。如所示出的,操作开始,将发出具有设置了停止 和通知标志的列表元素的MFC DMA列表命令(步骤1410 )。执行MFC读取 列表停止和通知标记状态通道的读取(rdch)(步骤1420 )。返回的数据 是自上次读取此通道以来每个已到达设置了停止和通知标志的列表元素的 标记组的当前状态。此读取将停止SPU,直到MFC DMA列表命令已到达设 置了停止和通知标志的列表元素。判定一个或多个感兴趣的标记组是否已到达i殳置了停止和通知标志的 列表元素(步骤1430 )。将在返回数据中设置相应位。由于针对每个读取 重置位,因此软件必须在等待多个标记组停止时执行标记组的累积。如果否,操作将返回步骤1420,直到一个或多个感兴趣的标记组已到 达设置了停止和通知标志的列表元素。否则,将向MFC写入列表停止和通 知标记确i人通道写入(wrch)与已停止的标记组对应的标记组号以重新启 动MFC DMA列表命令(步骤l440 )。等待或轮询列表停止和通知标记组状态的备选方案是使用SPU事件设 备。通常,当MFC DMA列表命令执行时SPU程序可以执行其他操作时,使 用此过程。所述过程例如在图15中示出。如图15所示,过程开始,将清除任何未决的MFCDMA列表命令停止和 通知事件(步骤1510)。这例如可以通过向SPU写入事件确认通道写入 (wrch)值"1"完成。通过向SPU写入事件掩码通道的Sn位写入"1"来启用MFC DMA列表命令停止和通知事件(1520 )。发出具有设置了停止和 通知标志的列表元素的MFC DMA列表命令(步骤1530 )。可以从SPU读取事件状态通道进行读取(rdch)以等待发生已启用的 事件(步骤1540 )。此读取将停止SPU的执行直到发生已启用的事件。备 选地,可以读取(rchcnt)与SPU读取事件状态通道关联的计数以轮询特 定的标记事件,直到计数返回为"1"。判定是否已发生已启用的事件(步骤1550 )。如果否,则操作返回步 骤1540。如果发生已启用的事件,则判定是否已发生DMA列表停止和通知 事件(步骤1560 )。如果尚未发生DMA列表停止和通知事件,则操作返回 步骤1540。如果发生DMA列表停止和通知事件,则执行从MFC读取列表停止和通 知标记状态通道读取(rdch)以判定哪个或哪些标记组导致此事件(步骤 1570 )。然后,向MFC写入列表停止和通知标记确认通道写入(wrch)与 已停止的标记组对应的标记组号以重新开始MFC DMA列表命令(步骤 1580)。MFC写入多源同步请求通道图16中提供了 MFC写入多源同步请求通道的详细信息。MFC写入多源 同步请求通道是MFC多源同步设备的一部分并导致MFC开始跟踪发送到关 联MFC的未完成传输。MFC多源同步i殳备包括MFC多源同步寄存器(它允 许处理器或设备从主存储地址域控制同步),以及MFC写入多源同步请求 通道(MFC—WrMSSyncReq)(它允许SPU从本地存储地址域控制同步)。可以通过向MFC写入多源同步请求通道进行写入来请求同步。当请求 的同步完成时,通道计数,皮设置回"1"并且忽略写入此通道的数据。再次 向此通道写入会导致SPU停止,直到由第一次写入跟踪的未完成传输完成。要使用MFC写入多源同步请求通道,程序将向MFC写入多源同步请求 通道进行写入,然后等待MFC写入多源同步请求通道变得可用,即当通道 计数设置回'T,时。软件将此通道的计数初始化为值"1"。此通道启用了写入阻塞,并且最大计数为"1"。 邮箱设备除了用于与MFC通信的通道之外,本发明的通道接口进一步提供了用 于与SPU中提供的邮箱设备通信的通道。MFC在SPU与其他处理器及设备 之间提供了一组邮箱队列。每个邮箱队列都具有指定的SPU通道以及相应 的薩I0寄存器。SPU软件通过使用SPU通道指令来访问邮箱队列。其他处 理器和设备通过使用个醒IO寄存器之一来访问邮箱队列。除了队列之外, MFC还提供了队列状态、邮箱中断,以及邮箱的SPU事件通知。MMI0寄存 器、通道、状态、中断、邮箱队列以及事件统称为"邮箱设备"。如上所 述,图2中的MFC寄存器单元240中提供了邮箱设备。MFC提供了两个邮箱队列用于将信息从SPU发送到其他处理器或其他 设备SPU出站邮箱队列和SPU出站中断邮箱队列。这些邮箱队列旨在将 短消息发送到PPE (例如,返回代码或状态)。通过读糾目应的醒IO寄存 器,任何处理器或设备都可使用由SPU使用写入通道(wrch)指令写入这 些队列之一的数据。发送到SPU写入出站中断邮箱通道的写入通道(wrch)指令还可导致 将中断发送到系统中的处理器或其他设备。从这些队列(SPU出站邮箱或 SPU出站中断邮箱寄存器)中的任一队列进行的醒10读取可以设置SPU事 件,而SPU事件又导致SPU中断。为外部处理器或其他设备提供了 一个邮箱队列以将信息发送到SPU, 即SPU入站邮箱队列。此邮箱队列旨在由PPE写入。但是,其他处理器、 SPU或其他设备也可以使用此邮箱队列。通过读取SPU读取入站邮箱通道, SPU可使用由处理器或其他设务使用MMIO写入向此队列写入的数据。向SPU 入站邮箱寄存器进行的醒IO写入可以设置SPU事件,而SPU事件又导致 SPU中断。SPU出站邮箱寄存器用于从相应的SPU出站邮箱队列读取32位数据。 SPU出站邮箱寄存器具有相应的SPU写入出站邮箱通道,以便将数据写入SPU出站邮箱队列。发送到SPU出站邮箱队列的写入通道(wrch)指令将 指令中指定的32位数据加载到SPU出站邮箱队列,以供其他处理器或其他 设备读取。如果SPU出站邮箱队列已满,则SPU将在发送到此队列的写入 通道(wrch)指令上停止,直到从此邮箱寄存器发生匪10读取。对此寄存器进行的醒IO读取返回的信息始终采用SPU写入信息的顺 序。没有定义从空SPU出站邮箱队列进行读取而返回的信息。SPU出站邮 箱队列中的表项数(或队列深度)与实施方式相关。对SPU邮箱状态寄存器进行的醒IO读取将返回邮箱队列的状态。SPU 出站邮箱队列中的有效队列表项数在SPU邮箱状态寄存器的 SPU-Out—Mbox_Count字段中给出。对SPU出站邮箱寄存器进行的醒IO读 取将设置未决SPU出站邮箱可用事件。如果邮箱队列中剩余的数据量低于 与实施方式相关的阈值并且启用此条件(即,将SPU-WrEventMask[Le]设 置为"1"),则会更新SPU读取事件状态通道(即,将SPU—RdEventStat [Le] 设置为'T,),并将其通道计数设置为"1"。这将导致SPU出站中断邮 箱可用事件。SPU入站邮箱寄存器用于将32位数据写入相应的SPU入站邮箱队列。 SPU入站邮箱队列具有相应的SPU读取入站邮箱通道,用于从队列读取数 据。SPU读取入站邮箱通道的读取通道(rdch)指令将32位数据从SPU入 站邮箱队列加载到由读取通道(rdch)指令指定的SPU寄存器。SPU不能 从空邮箱进行读取。如果SPU入站邮箱队列为空,则SPU将在到达此通道 的读取通道(rdch)指令上停止,直到将数据写入邮箱。到达此通道的读 取通道(rdch)指令返回的信息始终采用PPE或其他处理器和设备写入信 息的顺序。队列中的表项数(或队列深度)与实施方式相关。对SPU邮箱状态寄 存器进行的應IO读取将返回邮箱队列的状态。SPU邮箱队列中的可用队列 位置数在SPU邮箱状态寄存器(即SPU-Mbox—Stat [SPU-In—Mbox-Count]) 的SPU—In—Mbox—Count字段中给出。在写入SPU—In-Mbox之前,软件将检查SPU邮箱状态寄存器以避免SPU邮箱溢出。对SPU入站邮箱寄存器进行的醒IO写入将设置未决SPU邮箱事 件。如果启用(即,SPU-WrEventMask[Mbox]- T ),则会更新SPU读取 事件状态通道,并将其通道计数设置为'T,,这将导致SPU入站邮箱可用事件。SPU邮箱状态寄存器包含相应SPE中的SPU和PPE之间的邮箱队列的 当前状态。读取此寄存器对邮箱队列的状态没有任何影响。SPU邮箱通道如上所述,MFC提供的邮箱设备包括多个SPU邮箱通道,其中包括SPU 写入出站邮箱通道、SPU写入出站中断邮箱通道,以及SPU读取入站邮箱 通道。这些SPU邮箱通道^L定义为阻塞通道,即它们将在通道满时(写入 阻塞)或数据不可用时(读取阻塞)停止SPU。当应用没有其他要执行的 操作时,通道的阻塞方法非常有利于节约功率。实际上,处理器可以置于 低功率状态,直到释放空间或数据变得可用。虽然这些通道为阻塞通道,并且因此获得了节约功率的利益,但是访 问这些通道可能会导致SPU无限期停止。软件可以通过使用此后讨论的SPU 事件设备,或通过读取与邮箱通道关联的通道计数来避免停止SPU。SPU写入出站邮箱通道图17A提供了根据本发明的示意性实施例的SPU写入出站邮箱通道的 详细信息。发送到此通道的写入通道指令(wrch)将数据写入SPU写入出 站邮箱队列。SPU写入此通道的数据可用于SPU出站邮箱寄存器的腿10读 取。到达此通道的写入通道(wrch)还导致关联的通道计数递减'T,。向 已满的SPU写入出站邮箱队列进行写入会导致SPU执行停止,直到读取SPU 出站邮箱寄存器,从而在SPU写入出站邮箱队列中释放位置。为避免停止条件,在发出通道写入之前,可以读取与此通道关联的通 道计数以确保SPU写入出站邮箱队列中存在槽。备选地,可以使用SPU出 站邮箱可用事件来发信号通知SPU写入出站邮箱队列(如果确定此队列已满)中的槽的可用性。当SPU写入出站邮箱队列已满时,读取与此通道关联的通道计数将返 回值"0"。非零值指示了 SPU写入出站邮箱队列中的可用32位字数。特权软件将SPU写入出站邮箱通道的计数初始化为SPU写入出站邮箱 队列的深度。此通道为写入阻塞通道。此通道的最大计数与实施方式相关, 并且应为SPU写入出站邮箱队列的深度(即,可用槽数)。SPU写入出站中断邮箱通道图17B提供了根据本发明的一个示意性实施例的SPU写入出站中断邮 箱通道的详细信息。到达此通道的写入通道(wrch)指令将数据写入SPU 写入出站中断邮箱队列。SPU写入此通道的数据可用于SPU出站中断邮箱 寄存器的醒10读取。到达此SPU写入出站邮箱通道的写入通道(wrch)指令还导致关联的 计数递减"1"。向已满的SPU写入出站中断邮箱队列进行写入会导致SPU 执行停止,直到读取SPU出站中断邮箱寄存器,从而在SPU写入出站中断 邮箱队列中释放位置。为避免停止条件,在发出通道写入之前,可以读取与此通道关联的通 道计数以确保SPU写入出站中断邮箱队列中存在槽。备选地,可以使用SPU 出站中断邮箱可用事件来发信号通知SPU写入出站中断邮箱队列(如果此 队列先前已满)中的槽的可用性。到达SPU写入出站中断邮箱通道的写入 通道(wrch)指令还导致将中断发送到处理器或其他设备。中断和先前发 出的MFC命令没有顺序关系。当SPU写入出站中断邮箱队列已满时,读取与此通道关联的计数将返 回值"0"。非零计数值具有此队列中的可用32位字数。特权软件将此通道的计数初始化为SPU写入出站中断邮箱队列的深 度。此通道为写入阻塞通道。此通道的最大计数与实施方式相关,并且应 为SPU写入出站中断邮箱队列的深度(即,可用槽数)。SPU读取入站邮箱通道图17C提供了根据本发明的一个示意性实施例的SPU读取入站邮箱通 道的详细信息。从此通道读取将返回SPU读取入站邮箱队列中的下一个数 据。向SPU入站邮箱寄存器发出写入的处理器或设备将数据放置在SPU读取入站邮箱队列中。从SPU读取入站邮箱通道读取会导致关联的计数递减"1"。读取空邮 箱会导致SPU执行停止,直到写入SPU入站邮箱寄存器,从而将数据项放 置在SPU读取入站邮箱队列中。为避免停止M,在发出通道读取之前,据。备选地,可以使用SPU入站邮箱可用事件来发信号通知SPU读取入站邮箱队列中的数据的可用性。如果邮箱为空,则读取通道计数(rchcnt )会返回值"0"。如果rchcnt 的结果为非零,则邮箱包含信息,此信息已经由PPE写入,但尚未由SPU读取。特权软件将SPU读取入站邮箱通道的通道计数初始化为"0"。最大计 数与实施方式相关。此通道为读取阻塞通道。SPU信号通知设备MFC提供了 SPU信号通知设备,用于将信号(例如緩冲区完成标志) 从系统中的其他处理器和设备发送到SPU。例如,可以在图2的MFC寄存 器单元250中提供此信号通知设备。BPA提供了两个独立的信号通知i殳备SPU信号通知1和SPU信号通知 2。每个设备都包括一个寄存器和一个通道SPU信号通知1寄存器和SPU 信号通知1通道;以及SPU信号通知2寄存器和SPU信号通知2通道。SPU使用一组发送信号命令以及与将信号发送到其的SPU关联的信号 通知寄存器的有效地址来发出信号。不支持发送信号命令的PPE和其他设 备通过向与将信号发送到其的SPU关联的SPU信号通知寄存器执行MMIO 写入来模拟发送信号命令。设备编程为覆写模式(用于一对一信令环境中)或者逻辑'或,模式(用于多对一信令环境中)。在SPU配置寄存器中设置每个通道的模式。执行发送信号命令或醒io (以编程为覆写模式的信令寄存器为目标)会将关联通道的内容设置为信令操作的数据。它还将相应的通道计数设置 为"r,。在逻辑'或,模式中,将信令操作的数据与通道的当前内斜目'或,, 并将相应的计数i殳置为值"r'。此外,当执行隔离的加载时,将信号通知寄存器用作映像的有效地址。在这些情况下,SPU信号通知1寄存器包含64位有效地址的高32位,而 SPU信号通知2寄存器包含最低的32位。在设置有效地址之前,软件必须 将SPU信号通知设备置于覆写模式,以便隔离的加载请求正确操作。SPU信令通道SPU信令通道是SPU信号通知设备的PPE部分。它们用于从系统中的 其他处理器和其他设备读取信号。信令通道被配置为读取阻塞通道,并且 最大计数为'T,。当向这些通道之一发送读取通道(rdch)指令并且关联 的通道计数为"1"时,会将通道的当前内容和关联的计数重置为"0"。 当向这些通道之一发送读取通道(rdch)指令,并且通道计数为"0"时, SPU将停止,直到处理器或设备向关联的寄存器执行醒IO写入。SPU信号通知通道图18提供了根据本发明的示意性实施例的SPU信号通知通道的详细信 息。信号通知通道可以是SPU信号通知1或2通道。发送到SPU信号通知 通道的读取通道(rdch)指令将返回信号控制字1的32位值,并自动重置 读取时设置的任何位。如果没有信号未决,则从此通道进行读取将停止 SPU,直到发出信号。如果没有信号未决,则发送到此通道的读取通道计数 (rchcnt)指令将返回"0"。如果未读取的信号未决,则它将返回T 。特权软件将此通道的计数初始化为值"0"。此通道启用了读取阻塞,并且最大计数为"1"。SPU递减器每个SPU都包含一个32位递减器。如果在MFC控制寄存器中启用,则 会向此寄存器写入设置为"0"的MFC—CNTL[Dh]。当向SPU写入递减器通 道发出写入通道(wrch)指令时,将启动SPU递减器。通过执行此后所述 的程序序列,或者当向MFC控制寄存器写入设置为"1"的MFC-CNTL[Dh] 时,将停止递减器。在MFC控制寄存器中提供了递减器的当前运行状态(即, MFC-CNTL [Ds])。无需使递减器事件未决以便停止递减器。指定了两个通道用于管理递减器 一个用于设置递减器值, 一个用于 读取递减器的当前内容。当最高位(位0)从"0"更改为"1"时,将发 生递减器事件。SPU写入递减器通道图19A提供了根据本发明的一个示意性实施例的SPU写入递减器通道 的详细信息。SPU写入递减器通道用于将32位值加载到递减器。加载到递 减器的值将确定写入通道(wrch)指令与递减器事件之间的经过的时间。 当递减器的最高位(msb)从"0"更改为"1"时,〗更会发生事件。如果加 载到递减器的值导致msb从"0"更改为'T,,则立即发信号通知事件。 将递减器设置为值"0"将在单个递减器间隔之后导致事件。为了正确保存和恢复递减器的状态,必须在更改递减器值之前停止递 减器。以下序列示出了设置新的递减器值的过程1. 写入SPU写入事件掩码通道以禁用递减器事件。2. 写入SPU写入事件确认通道以确认任何未决的事件并停止递减器。 递减器停止,因为已在步骤l中禁用递减器事件。3. 写入SPU写入递减器通道以设置新的递减器计数值。(注递减器 启动,因为步骤2已停止递减器。)4. 写入SPU写入事件掩码通道以启用递减器事件。5.等待计时器到期。此通道为非阻塞通道,并且没有关联的计数。每当向此通道发送读取 通道计数(rchcnt)指令时,计数将始终返回为"1"。SPU读取递减器通道图19B提供了根据本发明的一个示意性实施例的SPU读取递减器通道 的详细信息。SPU读取递减器通道用于读取32位递减器的当前值。读取递 减器计数对递减器的准确性没有任何影响。对递减器的相继读取将返回相 同的值。此通道为非阻塞通道,并且没有关联的计数。每当向此通道发送读取 通道计数(rchcnt)指令时,计数将始终返回为'T,。SPU状态管理通道除了上述通道之外,还提供了 SPU状态管理通道。这些SPU状态管理 通道包括SPU读取机器状态通道和两个中断相关状态通道。中断相关状态 通道包括SPU写入状态保存和恢复通道以及SPU读取状态保存和恢复通道。SPU读取机器状态通道图20A提供了根据本发明的一个示意性实施例的SPU读取^几器状态通 道的详细信息。SPU读取机器状态通道包含当前SPU机器状态信息。此通 道包含两个状态位隔离状态和SPU中断状态。此隔离状态反映SPU的当 前运行状态,即隔离或非隔离。SPU中断启用状态反映SPU中断启用的当前状态。如果启用,则当存 在任何已启用的SPU事件时将生成SPU中断。此通道为非阻塞通道,并且没有关联的计数。每当向此通道发送读取 通道计数(rchcnt)指令时,计数将始终返回为"1"。SPU写入状态保存和恢复通道图20B提供了根据本发明的一个示意性实施例的SPU写入状态保存和 恢复通道的详细信息。向此通道进行写入会更新SPU中的状态保存和恢复 寄存器0 (SRRO)的内容。当支持嵌套的中断时,向此通道进行写入通常用于恢复中断状态信息。当启用SPU中断时,不应向此通道进行写入。这样做会导致SRRO的内容不确定。必须在写入此通道之后并在执行依赖于SRRO内容的指令之前发 出通道形式的同步指令。此通道为非阻塞通道,并且没有关联的计数。每当向此通道发送读取 通道计数(rchcnt)指令时,计数将始终返回为"1"。SPU读取状态保存和恢复通道图20C提供了 SPU读取状态保存和恢复通道的详细信息。对此通道进 行读取会返回SPU中的状态保存和恢复寄存器0 (SRRO)的内容。当支持 嵌套的中断时,对此通道进行读取通常用于保存中断状态信息。此通道为非阻塞通道,并且没有关联的计数。每当向此通道发送读取 通道计数(rchcnt)指令时,计数将始终返回为"1"。SPU事件设备图21是示出了 SPU事件设备的逻辑表示的示意性方块图。如图21所 示,边沿触发的事件将SPU未决事件寄存器2110中的相应位设置为"1"。 通过使用通道指令向SPU写入事件确认通道2120中的相应位写入"1", 来确认或重置SPU未决事件寄存器2110中的事件。SPU未决事件寄存器(Pend—Event )2110是内部寄存器。可以使用SPU 通道访问设备来读取SPU未决事件寄存器2110。使用通道读取(rdch)指令读取SPU读取事件状态通道2130将返回与 SPU写入事件掩码通道2140中的值进行逻辑'与,的SPU未决事件寄存器 的值。此功能仅向SPU程序提供已启用事件的状态,而SPU未决事件寄存 器2110允许特权软件查看所有已发生的事件。SPE上下文保存和恢复操作需要访问所有事件。当向SPU写入事件掩码通道2140写入新值,或者当在SPU未决事件寄 存器2110中记录了新事件时,SPU读取事件状态通道2130的内容将更改。 SPU读取事件状态通道2130中的任何位从"0"更改为'T,都会使SPU读 取事件状态通道计数递增"1"。如果向SPU写入事件确认通道212G发送 写入之后仍在SPU读取事件状态通道2130中设置事件,则计数也会递增。 当使用通道读取(rdch)指令读取SPU读取事件状态通道2130时,计数将 递减"1"。计数在值"1"时饱和,并且不会递减到低于值"0"。当SPU 读取事件状态通道计数为非零时,会将中断条件(如果启用)发送到SPU。SPU事件通道SPU程序可以使用多个SPU事件通道来监视事件。这些SPU事件通道 包括SPU读取事件状态通道、SPU写入事件掩码通道、SPU读取事件掩码通 道,以及SPU写入事件确认通道。SPU读取事件状态通道包含SPU写入事 件掩码通道中启用的所有事件的状态。SPU写入事件确认通道用于重置事 件的状态,此状态通常是SPU程序已处理或记录的事件的指示。如果没有 任何已启用的事件,则从SPU读取事件状态通道进行读取将停止SPU程序。当各个事件具有类似的用于停止SPU程序的方法时,如果尚未发生事 件,则SPU事件设备为软件提供了用于查找多个事件以及导致SPU程序中断的方法。SPU读取事件状态通道图22A提供了根据本发明的一个示意性实施例的SPU读取事件状态通 道的详细信息。SPU读取事件状态通道包含读取此通道时SPU写入事件掩 码通道启用的所有事件的当前状态。如果SPU写入事件掩码通道指定某个 事件不是查询的一部分,则在报告的状态中此事件的对应位置为"0"。从通道计数为"0"的SPU读取事件状态通道进^f^取会导致SPU停止,从而提供"等待事件"功能。从通道计数为"r的此通道进行读取会返回任何已启用的未决事件的状态,并将通道计数设置为"o"。针对以下条件将通道计数i殳置为"r :.发生事件并且SPU写入事件掩码通道中的相应掩码为'T,;.向SPU写入事件掩码通道中与SPU未决事件寄存器中的"1"对应的位位置写入"1"; 向SPU写入事件确认通道写入之后已启用的事件未决;以及 .特权软件使用SPU通道访问设备将通道计数设置为"1"。 如果尚未发生任何已启用的事件,则SPU读取事件状态通道的读取通 道计数(rchcnt)指令将返回零。当从SPU读取事件状态通道读取事件状 态时,读取通道计数(rchcnt)指令可用于避免停止SPU。特权软件必须将SPU读取事件状态通道的计数值初始化为"0"。将 使用SPU通道访问设备中的SPU通道计数寄存器来初始化通道计数。如果 启用SPU中断(SPU-RdMachStat[IE]设置为T ),则非零的SPU读取事 件状态通道计数会导致向SPU发出中断。应当指出,软件可以在两种情况下导致幻像事件1. 如果在事件使SPU读取事件状态通道计数递增之后并在从SPU读取 事件状态通道读取事件状态之前,软件对事件进行确认或掩码。在此 情况下,读取SPU读取事件状态通道将返回指示事件不再存在或已禁 用的数据。2. 如果在读取SPU读取事件状态通道之前并在确认事件之前,软件重 置已启用事件的中断条件(例如从邮箱进行读取)。在此情况下,即 使生成事件的条件不再存在,读取事件状态寄存器仍将返回指示事件 仍然未决的数据。在此情况下,仍然必须确认事件。 为避免生成幻像事件,应按以下方式处理事件.读取SPU读取事件状态通道。.对于所有要处理的事件,通过向SPU写入事件确认通道写入相应位 来确认事件。.处理事件(例如,读取邮箱、重置或停止计时器,或读取信号通知寄存器)。SPU写入事件掩码通道图22B提供了根据本发明的一个示意性实施例的SPU写入事件掩码通 道的详细信息。SPU写入事件掩码通道选择哪些未决事件将影响SPU读取 事件状态通道的状态。此通道的内容被保留,直到发生后续通道写入或SPU 通道访问。可以通过读取SPU读取事件掩码通道访问此通道的当前内容。无论SPU事件掩码设置为何都将在SPU未决事件寄存器中记录所有事 件。事件保持未决,直到被到达SPU写入事件确认通道的写入通道(wrch) 指令清除或者特权软件使用SPU通道访问设备向SPU未决事件寄存器加载 新值。未决事件将被清除,即使其已被禁用。已禁用并随后清除的未决事件不会反映在SPU读取事件状态通道中。 启用未决事件会导致更新SPU读取事件状态通道和SPU中断(如果启用)。此通道为非阻塞通道并且没有关联的计数。此通道的读取通道计数 (rchcnt)指令将始终返回'T,。图22C提供了根据本发明的一个示意性实施例的SPU读取事件掩码通 道的详细信息。SPU读取事件掩码通道用于读取事件状态掩码的当前值。 读取此通道将始终返回由SPU写入事件掩码通道写入的最后数据。此通道 可用于避免事件状态掩码的软件影子复制以及进行SPE上下文保存和恢复 操作。此通道为非阻塞通道,并且没有关联的计数。每当向此通il^送读 取通道计数(rchcnt)指令时,计数将始终返回为"1"。SPU写入事件确认通道图22D提供了根据本发明的一个示意性实施例的SPU写入事件确认通 道的详细信息。向设置了特定事件位的SPU写入事件确认通道进行写入将 确认软件是否处理相应事件。已确认的事件被重置和重新取样。已报告但未确认的事件将继续被报告,直到被确认或直到由特权软件使用SPU通道访问设备清除。不会在SPU读取事件状态通道中报告已禁用的事件,但是事件会保持 未决,直到通过向SPU写入事件确认通道中的相应位写入'T,来清除这些 事件。确认已禁用的事件会清除此事件,即使尚未报告此事件也会如此。 在事件发生之前清除事件会导致软件引起的死锁。此通道为非阻塞通道,并且没有关联的计数。每当向此通道发送读取 通道计数(rchcnt)指令时,计数将始终返回为"1"。SPU事件硬件通过检测相应的通道计数、递减器计数或SPU通道访问操作来确 定事件。上述的BPA支持许多不同类型的事件。例如,当MFC读取标记组 状态通道的计数从Q更改为非零值时,将设置MFC标记组状态更新事件。 当MFC读取列表停止和通知标记状态通道的计数从0更改为非零值时,将 设置MFC DMA列表命令停止和通知事件。当排队的MFC命令操作码寄存器 的计数从0 (已满)更改为非零值(未满)时,将设置MFC SPU命令队列 可用事件。当SPU读取入站邮箱通道的计数从0更改为非零值时,将设置 SPU入站邮箱可用事件。同样,当递减器计数的最高位从0更改为1时,将设置SPU递减器事 件。如果加载到递减器的值导致最高位从0更改为1,则立即发信号通知 事件。将递减器值设置为O会在单个递减器间隔之后导致事件。此外,当SPU写入出站中断邮箱通道计数从O更改为非零值时,将设 置SPU出站邮箱可用事件。当相应SPU信号通知通道的计数从0更改为非 零值时,将设置SPU信号通知1或2可用事件。当原子保留丢失时,将设 置锁定线保留事件(参见以下的"锁定线保留丢失事件,, 一节)。当向SPU 特权控制寄存器进行写入且关注事件请求位被设置为1时,将设置特权关 注事件(参见以下的"特权关注事件,, 一节)。当MFC写入多源同步请求 通道计数从值0更改为值1时,将设置多源同步事件。现在将更详细地描述这些事件。MFC标记组状态更新事件MFC标记组状态更新事件用于通知SPU程序一个或多个标记组已完成, 以及MFC读取标记组状态通道已更新并可被读取而不会停止SPU (参见以 上的"MFC标记组状态通道" 一节)。当MFC读取标记组状态通道的通道 计数从"0"更改为'T,时,将发生事件。事件的发生会将Pend—Event [Tg] 设置为T 。如果启用事件(即,将SPU-RdEventStat[Tg]设置为T ), 则将SPU事件状态通道的计数设置为"1"。当向SPU未决事件寄存器发出通道写入(wrch),或者当特权软件使 用SPU通道访问设备更新SPU未决事件寄存器且相应位设置为"0"时,会 将Pend—Event [Tg]位设置为"0"。在针对一个或多个标记组发出任何命 令之前必须清除此事件。MFC DMA列表命令停止和通知事件MFC DMA列表命令停止和通知事件用于通知SPU程序MFC DMA列表命 令内的某个列表元素已完成,以及MFC读取列表停止和通知标记状态通道 已更新并可净皮读取而不会停止SPU。当MFC读取列表停止和通知标记状态 通道的通道计数从"0"更改为'T,时,会发生此事件。当设置了停止和通知标志的列表元素的所有传输,以及MFC DMA列表 命令中的所有先前列表元素的传输都已相对于关联的SPE完成时,会将计 数设置为"1"。当发生此事件时,它将Pend-Event[Sn]设置为"1"。如 果启用事件(即,将PU-RdEventStat[Sn]设置为"1"),则会将SPU读 取事件状态通道的计数设置为"1"。当向标记位设置为'T,的SPU写入 事件确认通道发出通道写入(wrch) (SPU—WrEventAck[Sn]),或者当特 权软件使用相应位设置为"0"的SPU通道访问设备更新SPU未决事件寄存 器时,会将Pend-Event[Sn]位设置为"0"。图23中示出了用于处理MFCDMA列表命令停止和通知事件的过程。如图23所示,过程开始,将对SPU读取事件掩码通道执行读取通道(rdch) 指令并将数据保存在"掩码"中(步骤2310 )。通过向SPU-WrEventMask [Sn] 设置为"0"的SPU写入事件掩码通道发出写入通道指令来对事件进行掩码 (步骤2320 )。通过向SPU-WrEventAck[Sn]设置为1的SPU写入事件确认 通道执行写入通道(wrch)指令来确认事件(步骤2330 )。然后,向MFC读取列表停止和通知标记状态通道MFC—StallStat [gn] 发送读取通道(rdch)指令(步骤2340 )。返回的信息用于判定哪个或哪 些标记组具有处于停止和通知状态的DMA列表元素(步骤2350 )。然后, 针对每个具有已停止DMA列表元素的标记组执行应用特定的操作(步骤 2360)。通过向列表停止和通知标记确认通道MFC一StallAck[MFC标记](其中 提供的MFC标记是要重新开始的标记组的编码标记ID)发出写入通道 (wrch)指令来确认和重新开始每个已停止的DMA列表命令(步骤2370 )。 然后退出DMA列表停止和通知处理机(步骤2380 )。应当指出,如果应用 软件没有确认MFC—StallStat[gn]通道中指示的所有已停止标记组,则不 会针对未确认的标记组发生第二个停止和通知事件。通过向具有SPU—WrEvent Mask[掩码]的SPU写入事件掩码通iOL出写 入通道(wrch)指令来恢复"掩码"(步骤2390 )。然后退出通用事件处 理机(步骤2395 )。应当指出,当DMA列表包含多个设置了停止和通知标志的列表元素, 以及/或者当标记组具有多个排队有设置了停止和通知标志的元素的DMA 列表命令时,应用软件将在为标记组排队DMA列表命令之前将标记组特定 的停止计数器初始化为0。此外,当为具有停止和通知元素的标记组排队 多个DMA列表命令时,将借助标记特定的防护、屏障或命令屏障强制实施 排序。每次指示标记组的停止和通知状态时,都应递增相应的计数器。然 后,应用软件可以使用此计数器来确定将在列表中的哪个点发生停止。应用软件使用停止和通知来更新由于动态更改条件而停止的列表元素 之后的列表元素地址和传输大小。可以通过将其传输大小设置为O来跳过已停止列表元素之后的列表元素。但是,不能更改排队的DMA列表命令中 的列表元素数。MFC SPU命令队列可用事件MFC SPU命令队列可用事件用于通知SPU程序MFC SPU命令队列中的 某个表项可用以及可以写入MFC命令操作码通道而不会停止SPU。当MFC 命令操作码通道的通道计数从"0"(已满)更改为非零(未满)值时,会发生此事件。当MFC SPU命令队列中的一个或多个MFC DMA命令完成时,会将计数 设置为T 。当发生此事件时,它将Pend一Event[Qv]设置为T 。如果 启用事件(即,SPU—RdEventMask [Qv]为T ),则会将SPU—R犯ventStat [Qv] 设置为'T,并将SPU读取事件状态通道的计数设置为"1"。当向SPU写 入事件确认通ii^出通道写入(wrch)(即,将SPU—WrEventAck[Qv]设置 为"1"),或者当特权软件使用相应位设置为"0"的SPU通道访问设备 来更新SPU未决事件寄存器时,会将Pend—Event [Qv]位设置为"0"。图24中示出了用于处理MFC SPU命令队列可用事件的过程。如图24 所示,过程开始,将对SPU读取事件掩码通il^送读取通道(rdch)指令 并将数据保存在"掩码,,中(步骤2410)。通过向SPU-WrEventMask[Qv] 设置为"0"的SPU写入事件掩码通道发出写入通道指令来对事件进行掩码 (步骤2420 )。通过向PU—WrEventAck[Qv]设置为T的SPU写入事件确 认通道执行写入通道(wrch)指令来确认事件(步骤2430 )。通过向MFC命令操作码通道(MFC—CMD)发出读取通道计数(rchcnt) 指令来获取通道计数(步骤2440 )。判定通道计数是否为"0"(步骤2450 )。 如果否,则将DMA命令入队到MFC命令队列中(步骤2460 )。然后,判定 队列中是否剩下其他命令(步骤2470 )。如果是,则过程返回步骤2430。 如果没有剩下的其他命令,或如果通道计数为"0",则退出SPU命令队列 处理机(步骤2480 )。然后,通过向SPU写入事件掩码通道发出写入通道 (wrch)指令来恢复掩码(步骤2490 )。然后退出通用事件处理机(步骤SPU入站邮箱可用事件SPU入站邮箱可用事件用于通知SPU程序PPE或其他i殳备已写入空SPU 邮箱以及可读取SPU读取入站邮箱通道(参见124页)而不停止SPU。如 果启用此事件(即,SPU—RdEventStat[Mb]为T ),则会将SPU读取事 件状态通道的计数"i殳置为'T'。当SPU读取入站邮箱通道的通道计数从"0"(空)更改为非零(非空) 值时,会发生此事件。事件的发生会将Pend—Event [Mb]设置为"1"。当 向SPU写入事件确认通道发出通道写入(wrchX即,将SPU—WrEventAck[Mb] 设置为'T,),或者当特权软件使用相应位设置为"0"的SPU通道访问 设备来更新SPU未决事件寄存器时,会将Pend-Event[Mb]位设置为"0"。图25中示出了用于处理SPU入站邮箱可用事件的过程。如图25所示, 过程开始,将对SPU读取事件掩码通道发送读取通道(rdch)指令并将数 据保存在"掩码,,中(步骤2510)。然后,通过向SPU—WrEvent [Masking] 设置为"0"的SPU写入事件掩码通道发出写入通道指令来对事件进行掩码 (步骤2520 )。通过向SPU—WrEventAck[Sn]设置为T的SPU写入事件 确认通道执行写入通道(wrch)指令来确认事件(步骤2530 )。通过向SPU读取入站邮箱通道发出读取通道计数(rchcnt)指令来获 取通道计数(步骤2540 )。判定通道计数是否为"0"(步骤2550 )。如 果否,则通过向SPU读取入站邮箱通道(SPU-RdlnMbox)发出读取通道 (rdch)指令来读取下一个邮箱数据表项(步骤2560 )。然后过程返回步 骤2530。如果通道计数为"0",则退出SPU入站邮箱处理机(步骤2570 )。 通过向具有SPU-WrEventMask[掩码]的SPU写入事件掩码通道发出写入通 道(wrch)指令来恢复"掩码,,(步骤2580 )。然后退出通用事件处理机 (步骤2590 )。SPU递减器事件SPU递减器事件用于通知SPU程序递减器已到达"0"。如果启用事件 (即,将SPU-RdEventStat[Tm]设置为T )并将SPU读取事件状态通道 的计数设置为"1",则当递减器的最高位从"0"更改为'T,(负数)值 时将发生此事件。此事件的发生会将Pend-Event[Tm]设置为'T,。当向 SPU写入事件确认通道发出通道写入(wrch)(将SPU—WrEventAck[Tm〗设 置为"1"),或者当特权软件使用相应位设置为"0"的SPU通道访问设 备来更新SPU未决事件寄存器时,会将Pend-Event[Tm]位设置为"0"。图26中示出了用于处理SPU递减器事件的过程。如图26所示,过程 开始,将对SPU读取事件掩码通道执行读取通道(rdch)指令并将数据保 存在"掩码"中(步骤2610)。通过向SPU—WrEventMask[Tm]设置为"0" 的SPU写入事件掩码通il^出写入通道(wrch )指令来对事件进行掩码(步 骤2620 )。通过向SPU写入事件确认通道发出写入通道(wrch)指令(将 SPU—WrEventAck[Tm]设置为'T,)来确认事件(步骤2630 )。通过向SPU读取递减器通道发出读取通道(rdch)指令来读取递减器 值(步骤2640 )。如果此值为负数,则它可以用于确定自所需间隔起所经 历的额外时间。判定是否需要新的计时器事件(步骤2650 )。如果需要新 的计时器事件,则向SPU写入递减器通道写入(wrch)新的递减器值(步 骤2660 )。此后,或者如果不需要新的计时器事件,则退出SPU递减器事 件处理机(步骤2670 )。通过向具有SPU—WrEventMask[掩码]的SPU写入 事件掩码通道发出写入通道(wrch)指令来恢复"掩码"(步骤2680 )。 然后退出通用事件处理机(步骤2690 )。SPU出站中断邮箱可用事件SPU出站中断邮箱可用事件用于通知SPU程序PPE或其他设备已读取 满的SPU出站中断邮箱寄存器以及可写入SPU写入出站中断邮箱通道而不 停止SPU。如果启用此事件(即,SPU—RdEventStat[Me]设置为T )并 将SPU读取事件状态通道的计数设置为"1",则当SPU写入出站中断邮箱通道的通道计数从"0"(已满)更改为非零(未满)值时将发生此事件。 此事件将Pend—Event[Me]设置为"1"。当向Me位设置为"1"的SPU写 入事件确认通道发出通道写入(wrch)(即,将SPU—WrEventAck[Me]设置 为1),或者当特权软件使用相应位设置为"0"的SPU通道访问设备来更 新SPU未决事件寄存器时,会将Pend-Event[Me]位设置为"0"。图27中示出了用于处理SPU出站中断邮箱可用事件的过程。如图27 所示,过程开始,将对SPU读取事件掩码通it^送读取通道(rdch)指令 并将数据保存在"掩码,,中(步骤2710)。通过向SPU—WrEventMask[Me〗 设置为"0"的SPU写入事件掩码通道发出写入通道(wrch)指令来对事件 进行掩码(步骤2720 )。通过向SPU—WrEventAck [Me]设置为1的SPU写入 事件确认通道执行写入通道(wrch)指令来确认事件(步骤2730 )。通过向SPU写入出站中断邮箱通il^出读取通道计数(rchcnt)指令 来获取通道计数(步骤2740 )。判定通道计数是否为"0"(步骤2750 )。 如果通道计数不为"0",则通过向SPU写入出站中断邮箱通道发出写入通 道(wrch)指令来写入新的邮箱数据表项(步骤2760 )。如果通道计数为 "0",则再次读取通道计数(步骤2740 )。此后,将退出SPU出站中断 邮箱可用处理机(步骤2770 )。通过向具有SPU-WrEventMask[掩码]的SPU 写入事件掩码通it^出写入通道(wrch)指令来恢复"掩码"(步骤2780 )。 然后退出通用事件处理机(步骤2790 )。SPU出站邮箱可用事件SPU出站邮箱可用事件用于通知SPU程序处理器或其他设备已读取满 的SPU出站邮箱寄存器以及可写入SPU写入出站邮箱通道而不会停止SPU。 当SPU写入出站邮箱通道的通道计数从"0"(已满)更改为非零(未满) 值时,会发生此事件。事件的发生将Pend-Event[Le]设置为"1"。如果 启用事件(即,将SPU-RdEventStat[Le]设置为T ),则会将SPU读取 事件状态通道的计数设置为'T,。当向Le位设置为"1"的SPU写入事件 确认通道发出通道写入(wrch)(参见144页)(即,将SPU-WrEventAck[Le]设置为1),或者当特权软件使用相应位设置为"0"的SPU通道访问设备 更新SPU未决事件寄存器时,会将Pend一Event[Le]位设置为"0"。图28中示出了用于处理SPU出站邮箱可用事件的过程。如图28所示, 过程开始,将对SPU读取事件掩码通道发送读取通道(rdch)指令并将数 据保存在"掩码"中(步骤2810)。通过向SPU—WrEventMask [Le]设置为"0"的SPU写入事件掩码通道发出写入通道指令来对事件进行掩码(步骤 2820 )。通过向SPU—WrEventAck[Le]设置为T的SPU写入事件确认通 道执行写入通道(wrch)指令来确认事件(步骤2830 )。通过向SPU写入出站邮箱通it^出读取通道计数(rchcnt)指令来获 取通道计数(步骤2840 )。然后,判定通道计数是否为"0"(步骤2850)。 如果通道计数不为"0",则通过向SPU写入出站邮箱通道发出写入通道(wrch)指令来写入新的邮箱数据表项(步骤2860 )。如果通道计数为"0", 则再次读取通道计数(步骤2840 )。此后,将退出SPU出站邮箱处理机(步 骤2870 )。通过向具有SPU-WrEventMask [掩码]的SPU写入事件掩码通道 发出写入通道(wrch)指令来恢复"掩码"(步骤2880 )。然后退出通用 事件处理机(步骤2890 )。SPU信号通知2可用事件SPU信号通知2可用事件用于通知SPU程序其他处理器或i殳备已写入 空SPU信号通知2寄存器,以及可读取SPU信号通知2通道而不会停止SPU。 当SPU信号通知2通道的通道计数从"0"(空)更改为"1"(有效)值 时,会发生此事件。如果启用事件(即,SPU—RdEventStat[S2]为T ) 并将SPU读取事件状态通道的计数设置为'T,,则此事件将Pend—Event [S2] 设置为"1"。当向S2位设置为'T,的SPU写入事件确认通道发出通道写 入(wrch) (SPU一WrEventAck[S2]),或者当特权软件使用相应位设置为 "0"的SPU通道访问设备来更新SPU未决事件寄存器时,会将 Pend—Event [S2]位设置为"0"。图29中示出了用于处理SPU信号通知2可用事件的过程。如图29所示,过程开始,将对SPU读取事件掩码通道发送读取通道(rdch)指令并 将数据保存在"掩码"中(步骤2910)。通过向SPU-WrEventMask [S2]设 置为"0"的SPU写入事件掩码通道发出写入通道指令来对事件进行掩码(步 骤2920 )。通过向SPU-WrEventAck[S2]设置为T的SPU写入事件确认 通道执行写入通道(wrch)指令来确认事件(步骤2930 )。通过向SPU信号通知2通道发出读取通道计数(rchcnt)指令来获取 通道计数(步骤2940 )。判定通道计数是否为"0"(步骤2950 )。如果 通道计数不为"0",则通过向SPU信号通知2通道发出读取通道指令来读 取信号数据(步骤2960 )。此后,或者如果通道计数为"0",则退出信 号通知2处理机(步骤2970 )。通过向具有SPU-WrEventMask [掩码]的SPU 写入事件掩码通道发出写入通道(wrch )指令来恢复"掩码"(步骤2980 )。 然后退出通用事件处理机(步骤2990 )。SPU信号通知1可用事件SPU信号通知1可用事件用于通知SPU程序其他处理器或设备已写入 空SPU信号通知1寄存器,以及可读取SPU信号通知1通道而不会停止SPU。 当SPU信号通知1通道的通道计数从"0"(空)更改为"1"(有效)值 时,会发生此事件。如果启用事件(即,SPU—RdEventStat[Sl]为T ) 并将SPU读取事件状态通道的计数设置为"1",则此事件会将 Pend-Event[Sl]设置为'T,。当向S1位设置为T的SPU写入事件确认 通道发出通道写入(wrch) (SPU-WrEventAck[Sl]),或者当特权软件使 用相应位设置为"0"的SPU通道访问设备来更新SPU未决事件寄存器时, 会将Pend—Event [Sl]位设置为"0"。图30中示出了用于处理SPU信号通知1可用事件的过程。如图30所 示,过程开始,将对SPU读取事件掩码通道发送读取通道(rdch)指令并 将数据保存在"掩码,,中(步骤3010)。通过向SPU-WrEventMask [Sl]设 置为"0,,的SPU写入事件掩码通道发出写入通道指令来对事件进行掩码(步 骤302Q)。通过向SPU-WrEventAck[Sl]设置为T的SPU写入事件确认通道执行写入通道(wrch)指令来确认事件(步骤3030 )。通过向SPU信号通知1通道发出读取通道计数(rchcnt)指令来获取 通道计数(步骤3040 )。判定通道计数是否为"0"(步骤3050 )。如果通道计数不为"0",则通过向SPU信号通知1通道发出读取通道 指令来读取信号数据(步骤3060 )。此后,或者如果通道计数为"0", 则退出信号通知1处理机(步骤3070 )。通过向具有SPU一WrEventMask[掩 码]的SPU写入事件掩码通道发出写入通道(wrch)指令来恢复"掩码"(步 骤3080 )。然后退出通用事件处理机(步骤3090 )。锁定线保留丢失事件锁定线保留丢失事件用于通知SPU程序已导致高速緩存线上的保留丢 失的总线操作。SPU程序通过发出获取锁定线并保留(getllar)命令来获 取保留。当其他处理器或设备修改具有保留的高速緩存线时,保留会丢失。如果特权软件写入MFC原子刷新寄存器中的刷新位(将 MFC—Atomic-Flush[F]设置为'T,),保留也会丢失。当保留丢失时会发 生事件。此事件的发生将Pend-Event[Lr]设置为'T,。如果启用事件(即, 将SPU-RdEventStat[Lr]设置为T ),则将SPU读取事件状态通道的计 数设置为'T'。当向Lr位设置为"1"的SPU写入事件确认通il^出通道 写入(wrch) (SPU—WrEventAck[Lr]),或者当特权软件使用相应位设置 为"0"的SPU通道访问设备来更新SPU未决事件寄存器时,会将 Pend—Event [Lr]位设置为"0"。图31中示出了用于处理锁定线保留丢失事件的过程。如图31所示, 操作开始,将对SPU读取事件掩码通道发出读取通道(rdch)指令并将数 据保存在"掩码,,中(步骤3110)。通过向SPU-WrEventMask[Lr]设置为 "0"的SPU写入事件掩码通道发出写入通道(wrch)指令来对事件进行掩 码(步骤3120)。通过向SPU—WrEventAck[Lr]设置为T的SPU写入事 件确认通道执行写入通道(wrch)指令来确认事件(步骤3130)。执行应用特定的功能以响应系统修改锁定线区域中的数据(步骤查存储器中的软件结构以判定锁定线是否仍被监视 开始。如果它仍在"等待",则下一步通常包括向被修改的同一锁定线区 域发出ge 111 a r命令以获取新数据并对此数据执行操作。然后,退出锁定线保留丢失事件处理机(步骤3150)。通过向具有 SPU—WrEventMask [掩码]的SPU写入事件掩码通ii^C出写入通道(wrch)指 令来恢复"掩码"(步骤3160)。然后退出通用事件处理才几(步骤3170) 并且过程结束。特权关注事件特权关注事件用于通知SPU程序特权软件正在从SPU程序请求关注。 特权软件通过向SPU特权控制寄存器的关注事件所需位写入'T,(即,将 SPU—PrivCntl[A]设置为"1")来请求关注。如果启用事件(即, SPU-RdEventStat [A]为"l")并将SPU读取事件状态通道的计数设置为"1", 则此事件将Pend-Event[A]设置为'T,。当向设置了 A位的SPU写入事件 确认通道发出通道写入(wrch)(即,SPU—WrEventAck[A]为"1"),或 者当特权软件使用相应位设置为"0"的SPU通道访问设备更新SPU未决事 件寄存器时,会将Pend—Event[A]位设置为"0"。图32中示出了用于处理特权关注事件的过程。如图32所示,过程开 始,将对SPU读取事件掩码通道发出读取通道(rdch)指令并将数据保存 在"掩码,,中(步骤3210)。通过向SPU—WrEventMask[A]设置为"0"的 SPU写入事件掩码通道发出写入通道指令来对事件进行掩码(步骤3220 )。 通过向SPU—WrEventAck[A]设置为'T,的SPU写入事件确认通道执行写入 通道(wrch)指令来确认事件(步骤3230 )。执行应用特定的功能以响应特权关注事件(步骤3240 )。这可以例如 用于发信号通知正在请求使用SPU,或者某种其他操作。应发出对特权关 注事件的应用或操作系统特定的响应,例如停止和发信号通知、SPU入站 邮箱写入、SPU出站中断邮箱写入,或更新系统或1/0存储器空间中的状 态。退出特权关注事件处理机(步骤3250 )。通过向具有SPU-WrEvent Mask [掩码]的SPU写入事件掩码通道发出写入通道(wrch )指令来恢复"掩 码"(步骤3260 )。然后退出通用事件处理机(步骤3270 )。多源同步事件多源同步事件用于通知SPU程序多源同步请求已经完成。通过向MFC 写入多源同步请求通道(MFC—WrMSSyncReq)进行写入(wrch)来请求多源 同步。当MFC写入多源同步请求通道(MFC-WrMSSyncReq)的通道计数从"O" 更改为T时,会发生此事件。如果启用事件(即,SPU-RdEventStat[Ms〗 为"1")并将SPU读取事件状态通道的计数设置为"1",则此事件将 Pend—Event[Ms]设置为"1"。当向设置了 Ms位的SPU写入事件确认通道 发出通道写入(wrch)(即,将SPlLWrEventAck[Ms]i殳置为"1"),或 者当特权软件使用相应位设置为"0"的SPU通道访问设备更新SPU未决事 件寄存器时,会将Pend-Event[Ms]位设置为"0"。必须在发出多源同步 请求之前清除多源同步事件。图33中示出了用于处理多源同步事件的过程。如图33所示,过程开 始,将对SPU读取事件掩码通道发送读取通道(rdch)指令并将数据保存 在"掩码,,中(步骤3310)。通过向SPU—WrEventMask[Tm]设置为"0"的 SPU写入事件掩码通it^出写入通道指令来对事件进行掩码(步骤3320 )。 通过向SPU—WrEvenUck[Ms]设置为'T,的SPU写入事件确认通道执行写 入通道(wrch)指令来确认事件(步骤3330 )。执行应用特定的功能以响应未决多源同步操作的完成(步骤3340 )。 例如,这将通常是特定緩冲区中的数据已经完全更新,或者緩冲区域不再 处于使用中的指示。退出多源同步事件处理机(步骤3350 )。通过向具有 SPU—WrEventMask [掩码]的SPU写入事件掩码通ii^出写入通道(wrch)指 令来恢复"掩码,,(步骤3360 )。然后退出通用事件处理机(步骤3370 )。概括地说,本发明提供了一种用于促进处理器与外部设备之间的通信 的机制,所述机制降低了本地存储的负担,并允许处理器在等待数据、释放空间或事件发生时保持在低功率状态。本发明的机制提供了多个通道, 用于与处理器、存储器流控制器、机器状态寄存器的设备以及外部处理器 中断设备进行通信。这些通道可用于提供指令、指令参数、处理器间信息、 信号通知、机器隔离信息、机器中断状态信息、生成事件,以及执行事件处理。重要的是指出,虽然在完整功能的数据处理系统的上下文中说明了本 发明,但是本领域的技术人员将理解,可以以指令的计算机可读介质的形 式和各种形式来发布本发明的诸过程,并且本发明均可等同地适用而与实 际用于执行发布的信号承载介质的特定类型无关。计算机可读介质的实例包括可记录型介质,诸如软盘、硬盘驱动器、RAM、 CD-ROM、 DVD -ROM以及传输型介质,诸如数字和模拟通信链路、使用诸如例如射频和 光波传输之类的传输形式的有线或无线通信链路。所述计算机可读介质可 以采取编码格式的形式,可以对其解码以1更在特定的数据处理系统中实际 使用。出于示例和i兌明目的给出了对本发明的描述,并且所述描述并非旨在 是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说, 许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解 释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本 领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。
权利要求
1.一种在数据处理系统中用于在处理器与存储器流控制MFC单元之间传送指令和数据的方法,所述方法包括在所述处理器与MFC单元之间建立一个或多个通道以便在所述处理器与所述MFC单元之间传输数据;通过所述一个或多个通道在所述MFC单元中接收数据;在与所述一个或多个通道关联的一个或多个寄存器中存储所述数据;以及根据存储在所述一个或多个寄存器中的数据来处理命令队列中的一个或多个命令。
2. 根据权利要求1的方法,其中所述一个或多个通道包括用于与 MFC代理标记组完成设备通信的一个或多个MFC标记组状态通道,所述数 据为MFC标记组数据,以及所述一个或多个寄存器为MFC标记寄存器。
3. 根据权利要求2的方法,其中所述一个或多个MFC标记组状态通 道包括MFC写入标记组查询掩码通道,并且其中所述MFC标记组数据包括 通过所述MFC写入标记组查询掩码通道接收的标识符,所述标识符标识了 关联的查询MFC命令的标记组。
4. 根据权利要求2的方法,其中所述一个或多个MFC标记组状态通 道包括MFC读取标记組查询掩码通道,并且其中发送到所述MFC读取标记 组查询掩码通道的读取通道指令用于读取代理标记组查询掩码寄存器中存 储的当前值,所述当前值是最后写入MFC写入标记组查询掩码通道的数据。
5. 根据权利要求2的方法,其中所述一个或多个MFC标记组通道包 括MFC写入标记状态更新请求通道,并且其中发送到所述MFC写入标记状 态更新请求通道的写入通道指令将更新MFC标记组状态值。
6. 根据权利要求5的方法,其中发送到所述MFC写入标记状态更新 请求通道的所述写入通道指令指定将立即执行所述更新或在发生条件时执 行所述更新。
7. 根据权利要求6的方法,其中所述条件是任何已启用的MFC标记 组完成具有"没有未完成的操作"状态或所有已启用的MFC标记组具有"没 有未完成的操作"状态中的一项。
8. 根据权利要求2的方法,其中所述一个或多个MFC标记组状态通 道包括MFC读取标记组状态通道,并且其中发送到所述MFC读取标记组状 态通道的读取通道指令将返回已启用的标记组的当前状态。
9. 根据权利要求2的方法,其中所述一个或多个MFC标记组状态通 道包括MFC读取列表停止和通知标记状态通道,并且其中发送到所述MFC 读取列表停止和通知标记状态通道的读取通道指令标识了哪些标记组具有 已停止的命令。
10. 根据权利要求2的方法,其中所述一个或多个MFC标记组状态通 道包括MFC写入列表停止和通知标记确认通道,并且其中发送到所述MFC 写入列表停止和通知标记确认通道的写入通道指令确i人标记组包含已停止 的命令。
11. 根据权利要求2的方法,其中所述一个或多个MFC标记组状态通 道包括MFC读取原子命令状态通道,并且其中发送到所述MFC读取原子命 令状态通道的读取通道指令将返回最后完成的立即MFC原子更新命令的状态。
12. 根据权利要求2的方法,还包括使用所述一个或多个MFC标记 组状态通道来确定标记组的状态。
13. 根据权利要求12的方法,其中使用所述一个或多个MFC标记组状态通道包括通过将标识感兴趣的标记组的标记组掩码数据写入MFC写入标记组查 询掩码通道来启用所述感兴趣的标记组;通过将值写入MFC写入标记状态更新请求通道来请求立即标记状态更 新;以及将读取通道指令发送到MFC读取标记组状态通道以便应用所述标记组 掩码数据和获取所述感兴趣的标记组的当前状态。
14. 根据权利要求12的方法,其中使用所述一个或多个MFC标记组 状态通道包括通过将值写入MFC写入标记状态更新请求通道来请求有条件的标记状 态更新;以及读取MFC读取标记组状态通道以判定是否已发生状态更新以及标识已 完成其处理的标记组。
15. 根据权利要求12的方法,其中使用所述一个或多个MFC标记组 状态通道包括通过将标识感兴趣的标记组的标记组掩码数据写入MFC写入标记组查 询掩码通道来选择所述感兴趣的标记组;通过将值写入处理器写入事件掩码通道来启用MFC标记组状态更新事件;将读取通道指令发送到处理器读取事件状态通道;根据将所述读取通道指令发送到所述处理器读取事件状态通道的结果 来判定是否已发生所述MFC标记组状态更新事件;以及读取MFC读取标记组状态通道以标识如果所述MFC标记组状态更新事 件已发生,则哪个标记组导致了所述事件。
16. 根据权利要求2的方法,还包括使用所述一个或多个MFC标记组状态通道来判定MFC直接存储器访问 DMA列表命令是否已到达"i殳置了停止和通知标志的列表元素。
17. 根据权利要求16的方法,其中使用所述一个或多个MFC标记组 通道包括读取MFC读取列表停止和通知标记状态通道以标识设置了停止和通知标志的每个标记组的当前状态;判定感兴趣的标记组是否已到达设置了停止和通知标志的列表元素; 如果所述感兴趣的标记组已到达设置了停止和通知标志的列表元素,将写入通道指令发送到具有与所述感兴趣的标记组对应的标记组标识符的MFC写入列表停止和通知标记确认通道。
18. 根据权利要求16的方法,其中使用所述一个或多个MFC标记组 通道包括清除任何未决的MFC直接存储器访问DMA列表命令停止和通知事件; 读取处理器读取事件状态通道;根据读取所述处理器读取事件状态通道的结果来判定是否已发生已启用的事件;如果发生已启用的事件,则判定所述已启用的事件是否为DMA列表停止和通知事件;如果所述已启用的事件是DMA列表停止和通知事件,则将读取通道指 令发送到MFC读取列表停止和通知标记状态通道,以标识哪个标记组导致 了所述DMA列表停止和通知事件;以及将写入通道指令发送到具有与导致所述DMA列表停止和通知事件的标 记组对应的标记组标识符的MFC写入列表停止和通知标记确认通道。
19. 根据权利要求l的方法,其中所述一个或多个通道包括一个或多 个用于与所述处理器中提供的邮箱设备通信的邮箱通道,其中所述邮箱设 备包括一组邮箱队列,其中所述邮箱队列組中的每个邮箱队列都具有关联 的邮箱通道和存储器映射的输入/输出薩IO寄存器。
20. 根据权利要求19的方法,其中所述处理器使用处理器通道指令 来访问与所述邮箱队列关联的邮箱通道,并且其中外部设务使用与所述邮 箱通道关联的固IO寄存器来访问与所述邮箱队列关联的邮箱通道。
21. 根据权利要求19的方法,其中所述邮箱队列组包括用于将指令 或数据从所述处理器发送到外部设备的处理器出站邮箱队列和处理器出站 中断邮箱队列。
22. 根据权利要求21的方法,其中所述一个或多个邮箱通道包括用 于将数据写入所述处理器出站邮箱队列的处理器写入出站邮箱通道,其中 将写入通道指令发送到所述处理器出站邮箱通道将在所述写入通道指令中 指定的数据载入所述处理器出站邮箱队列以供外部设备读取。
23. 根据权利要求22的方法,其中如果所述处理器出站邮箱队列已 满,则处理器在所述写入通道指令上停止,直到执行与所述处理器写入出站邮箱通道关联的腿IO寄存器的MMIO读取。
24. 根据权利要求19的方法,其中所述邮箱队列组包括用于为所述 处理器从外部设备接收指令或数据的处理器入站邮箱队列,并且其中所述 处理器入站邮箱队列具有用于从所述处理器入站邮箱队列读取数据的关联 的处理器读取入站邮箱通道,其中发送到所述处理器读取入站邮箱通道的 读取通道指令将数据从所述处理器入站邮箱队列载入所述读取通道指令所 指定的寄存器。
25. 根据权利要求24的方法,其中如果所述处理器入站邮箱队列为 空,则处理器在所述读取通道指令上停止,直到数据^皮写入所述邮箱。
26. 根据权利要求19的方法,其中所述邮箱设备进一步包括存储所 述邮箱队列的状态的处理器邮箱状态寄存器,并且其中所述邮箱队列的状 态包括所述邮箱队列中的多个有效队列表项。
27. 根据权利要求1的方法r其中所述一个或多个通道包括一个或多 个用于与信号通知设备通信的信号通知通道,其中所述信号通知设备包括 与所述一个或多个信号通知通道中的每个通道关联的信号通知寄存器。
28. 根据权利要求27的方法,其中所述处理器通过使用一组发送信 号命令连同与要将信号发送到其的外部设备关联的信号通知寄存器的有效 地址,经由所述一个或多个信号通知通道将信号发送到外部设备。
29. 根据权利要求27的方法,其中所述信号通知设备被编程为工作 在其中将覆写信号通知寄存器的当前内容的覆写模式。
30. 根据权利要求27的方法,其中所述信号通知设备被编程为工作 在逻辑'或,模式,在所述逻辑'或,模式中,将信号通知寄存器的当前 内容与传输到所述信号通知设备的数据进行逻辑'或,并将结果存储在所 述信号通知寄存器中。
31. 根据权利要求27的方法,其中所述一个或多个信号通知通道是 读取阻塞通道。
32. 才艮据权利要求l的方法,其中所述一个或多个通道包括一个或多 个用于与所述处理器中提供的递减器通信的递减器通道。
33. 根据权利要求32的方法,其中所述一个或多个递减器通道包括 处理器写入递减器通道,并且其中发出到所述处理器写入递减器通道的写 入通道指令标识了所述递减器的值,并且其中所述值指示了所述写入通道 指令与生成递减器事件之间经过的时间。
34. 根据权利要求32的方法,还包括使用所述一个或多个递减器通道来设置递减器值。
35. 根据权利要求34的方法,其中设置递减器值包括将写入通道指令发送到处理器写入事件掩码通道以禁用递减器事件; 将写入通道指令发送到处理器写入事件确认通道以确认任何未决的事 件以及停止所述递减器;将写入通道指令发送到处理器写入递减器通道以设置新的递减器值;以及将写入通道指令发送到处理器写入事件掩码通道以启用递减器事件。
36. 根据权利要求33的方法,其中所述一个或多个递减器通道包括 用于读取所述递减器的当前值的读取递减器通道。
37. 根据权利要求1的方法,其中所述一个或多个通道包括一个或多 个用于与^i器状态寄存器通信的状态管理通道。
38. 根据权利要求37的方法,其中所述一个或多个状态管理通道包 括处理器读取^L器状态通道,并且其中所述处理器读取才几器状态通道用于 标识隔离状态和处理器中断状态。
39. 根据权利要求37的方法,其中所述一个或多个状态管理通道包 括写入状态保存和恢复通道,所述写入状态保存和恢复通道具有关联的状 态保存和恢复寄存器,并且其中发出到所述写入状态保存和恢复通道的写 入通道指令将恢复中断状态。
40. 根据权利要求37的方法,其中所述一个或多个状态管理通道包 括读取状态保存和恢复通道,所述读取状态保存和恢复通道具有关联的状 态保存和恢复寄存器,并且其中发出到所述读取状态保存和恢复通道的读 取通道指令将中断状态保存到所述状态保存和恢复寄存器。
41. 一种在数据处理系统中用于传送与处理器中的事件关联的指令 和数据的方法,所述方法包括使用所述处理器的事件设备建立一个或多个用于传送事件数据的通道;通过所述一个或多个通道在所述事件设备中接收数据;在与所述一个或多个通道关联的 一个或多个寄存器中存储所述数据;以及根据所述一个或多个寄存器中存储的所述数据来处理一个或多个事件。
42. 根据权利要求41的方法,其中所述事件设备包括未决事件寄存 器,并且其中边沿触发的事件将在与所述边沿触发的事件对应的未决事件 寄存器中设置位。
43. 根据权利要求42的方法,其中通过将值写入到写入事件确认通 道中的相应位来确认所述未决事件寄存器中的事件。
44. 根据权利要求42的方法,其中将读取通道指令发出到读取事件 状态通道会返回与写入事件掩码通道中的值进行逻辑'与,的所述未决事 件寄存器的值,从而仅提供所述写入事件掩码通道中标识的已启用事件的 事件状态信息。
45. 根据权利要求44的方法,其中在将新值写入到所述写入事件掩 码通道时或在所述未决事件寄存器中记录新事件时,将更改所述读取事件 状态通道的内容。
46. 根据权利要求44的方法,其中更改所述读取事件状态通道中的 位将使读取事件状态通道计数递增1,并且其中在将写入通道指令发送到 写入事件确认通道之后在所述读取事件状态通道中设置事件时,所述读取 事件状态通道计数将递增1。
47. 根据权利要求46的方法,其中当使用通道读取指令读取所述读 取事件状态通道时,所述读取事件状态通道计数将递减1。
48. 根据权利要求46的方法,其中当所述读取事件状态通道计数不是o时,将中断发送到所述处理器。
49. 根据权利要求41的方法,其中所述一个或多个通道包括处理器 读取事件状态通道,并且其中所述处理器读取事件状态通道包含由处理器写入事件掩码通道启用的所有事件的当前状态。
50. 根据权利要求49的方法,其中如果与所述处理器读取事件状态 通道关联的通道计数为0,将读取通道指令发送到所述处理器读取事件状 态通道会停止所述处理器。
51. 根据权利要求49的方法,其中如果发生事件并且所述事件在处 理器写入事件掩码通道中的相应位为1,则与所述处理器读取事件状态通道关联的通道计数被设置为1。
52. 才艮据权利要求49的方法,其中如果将1写入处理器写入事件掩 码通道中与处理器未决事件寄存器中的l对应的位位置,则与所述处理器 读取事件状态通道关联的通道计数被设置为1。
53. 4艮据权利要求49的方法,其中如果在将写入通道指令发送到处 理器写入事件确^人通道之后已启用的事件未决,则与所述处理器读取事件状态通道关联的通道计数被设置为1。
54. 根据权利要求49的方法,其中如果特权软件使用处理器通道访 问设备将与所述处理器读取事件状态通道关联的通道计数设置为1,则所 述通道计数净皮i殳置为1。
55. 根据权利要求49的方法,其中处理一个或多个事件包括 将读取通道指令发出到所述处理器读取事件状态通道以标识已发生的事件;发出写入通道指令以便针对要处理的所有事件在处理器写入事件确认 通道中写入相应的位;以及 处理所述事件。
56. 才艮据权利要求41的方法,其中所述一个或多个通道包括处理器 写入事件掩码通道,并且其中所述处理器写入事件掩码通道包含处理器事 件掩码,所述处理器事件掩码标识了影响处理器读取事件状态通道的状态的事件。
57. 才艮据权利要求56的方法,其中发出到所述处理器写入事件掩码 通道的写入通道指令将启用所述处理器事件掩码中的相应事件并更新处理 器读取事件状态通道的状态。
58. 根据权利要求41的方法,其中所述一个或多个通道包括用于读 取事件状态掩码的当前值的处理器读取事件掩码通道。
59. 根据权利要求58的方法,其中发出到所述处理器读取事件掩码 通道的读取通道指令将返回最后写入处理器写入事件掩码通道的数据。
60. 根据权利要求41的方法,其中所述一个或多个通道包括用于确 认已发生的事件的处理器写入事件确认通道。
61. 根据权利要求60的方法,其中将写入通道指令发出到设置了特 定事件位的处理器写入事件确认通道将确认由软件处理相应的事件。
62. 根据权利要求41的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件包括通过检测与所述一个或多个通道关联的通道计数、检测与所述处理器 的递减器关联的递减器计数,或检测处理器通道访问操作中的至少一项来 标识事件。
63. 根据权利要求62的方法,其中在MFC读取标记组状态通道的通 道计数从0更改为非0值时,将设置存储器流控制器MFC标记组状态更新 事件,并且其中所述MFC标记组状态更新事件通知在所述处理器上运行的 程序标记组已完成处理并且MFC读取标记组状态通道已更新,从而可以读 取所述MFC读取标记组状态通道而不停止所述处理器。
64. 根据权利要求62的方法,其中在MFC读取列表停止和通知标记 状态通道的通道计数从0更改为非0值时,将设置存储器流控制器MFC直 接存储器访问DMA列表命令停止和通知事件,并且其中所述MFC DMA列表 命令停止和通知事件通知在所述处理器上运行的程序MFC DMA列表命令内 的列表元素已完成处理,并且MFC读取列表停止和通知标记状态通道而不停止所述处理器。
65. 根据权利要求62的方法,其中在排队的MFC命令操作码寄存器 的通道计数从0更改为非0值时,将设置存储器流控制器MFC处理器命令 队列可用事件,并且其中所述MFC处理器命令队列可用事件通知在所述处 理器上运行的程序MFC处理器命令队列中的表项可用,并且发送到所述MFC 命令操作码通道的写入通道指令不会停止所述处理器。
66. 根据权利要求62的方法,其中在处理器读取入站邮箱通道的通 道计数从0更改为非O值时,将设置处理器入站邮箱可用事件,并且其中 所述处理器入站邮箱可用事件通知在所述处理器上运行的程序外部设备已 写入空的处理器邮箱寄存器,并且发出到处理器读取入站邮箱通道的读取 通道指令不会停止所述处理器。
67. 根据权利要求62的方法,其中在所述递减器计数的最高位从0 更改为1时,将设置处理器递减器事件,并且其中所述处理器递减器事件 通知在所述处理器上运行的程序所述递减器已到达0值。
68. 根据权利要求62的方法,其中在处理器写入出站中断邮箱通道 计数从O更改为非O值时,将设置处理器出站中断邮箱可用事件,并且其 中所述处理器出站中断邮箱事件通知在所述处理器上运行的程序外部设备 已读取满的处理器出站中断邮箱寄存器,并且发送到处理器写入出站中断 邮箱通道的写入通道指令不会停止所述处理器。
69. 根据权利要求62的方法,其中在相应处理器信号通知通道的通 道计数从O更改为非O值时,将设置处理器信号通知可用事件,并且其中 所述处理器信号通知可用事件通知在所述处理器上运行的程序外部设备已 写入空的处理器信号通知寄存器,并且发出到处理器信号通知通道的读取 通道指令不会停止所述处理器。
70. 根据权利要求62的方法,其中在原子保留丟失时将设置锁定线 保留事件,并且其中所述锁定线保留事件通知在所述处理器上运行的程序 总线操作已导致高速緩存线上的保留丟失。
71. 根据权利要求62的方法,其中在写入处理器特权控制寄存器且关注事件请求位设置为1时将设置特权关注事件,并且其中所述特权关注 事件通知在所述处理器上运行的程序特4又软件正在请求来自在所述处理器 上运行的程序的关注。
72. 根据权利要求62的方法,其中在MFC写入多源同步请求通道计 数从0值更改为非0值时,将设置多源同步事件,并且其中所述多源同步 事件通知在所述处理器上运行的程序多源同步请求的处理已完成。
73. 根据权利要求64的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件进一步包括将读取通道指令发出到处理器读取事件掩码通道;将所述读取通道指令的返回结果存储为掩码数据;将写入通道指令发出到处理器写入事件掩码通道以启用所述MFC DMA 列表命令停止和通知事件;将写入通道指令发出到处理器写入事件确认通道以确认所述MFC DMA 列表命令停止和通知事件;将读取通道指令发出到MFC读取列表停止和通知标记状态通道以标识 哪个标记组具有DMA列表命令的处于停止和通知状态的DMA列表元素; 针对具有已停止的DMA列表元素的每个标记组执行应用特定的操作;以及将写入通道指令发出到具有标记组标识符的列表停止和通知标记确认 通道以由此确认和重新开始已停止的DMA列表命令。
74. 才艮据权利要求65的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件进一步包括将读取通道指令发出到处理器读取事件掩码通道;将所述读取通道指令的返回结果存储为掩码数据;将写入通道指令发出到处理器写入事件掩码通道以启用所述MFC处理 器命令队列可用事件;将写入通道指令发出到处理器写入事件确认通道以确认所迷MFC处理 器命令队列可用事件;将读取通道计数指令发出到所述MFC命令操作码通道以获取与所述 MFC命令操作码通道关联的通道计数; 判定所述通道计数是否为0;以及如果所述通道计数不为0,则将DMA命令排队到所述MFC命令队列。
75. 根据权利要求66的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件进一步包括将读取通道指令发出到处理器读取事件掩码通道; 将所述读取通道指令的返回结果存储为掩码数据; 将写入通道指令发出到处理器写入事件掩码通道以启用所述处理器入站邮箱事件;将写入通道指令发出到处理器写入事件确认通道以确认所述处理器入 站邮箱事件;将读取通道计数指令发出到所述处理器读取入站邮箱通道以获取与所 述处理器读取入站邮箱通道关联的通道计数;判定所述通道计数是否为0;以及如果所述通道计数不为0,则将读取通道指令发出到所述处理器读取 入站邮箱通道以读取下一个邮箱数据表项。
76. 根据权利要求67的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件进一步包括将读取通道指令发出到处理器读取事件掩码通道; 将所述读取通道指令的返回结果存储为掩码数据; 将写入通道指令发出到处理器写入事件掩码通道以启用所述处理器递 减器事件;将写入通道指令发出到处理器写入事件确认通道以确认所述处理器递 减器事件;将读取通道指令发出到处理器读取递减器通道以获取当前递减器值; 判定是否要生成新的计时器事件;以及如果要生成新的计时器事件,则将写入通道指令发出到具有新的递减器值的处理器写入递减器通道。
77. 根据权利要求68的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件进一步包括将读取通道指令发出到处理器读取事件掩码通道; 将所述读取通道指令的返回结果存储为掩码数据; 将写入通道指令发出到处理器写入事件掩码通道以启用所述处理器出 站中断邮箱事件;将写入通道指令发出到处理器写入事件确认通道以确认所述处理器出 站中断邮箱事件;将读取通道计数指令发出到处理器写入出站中断邮箱通道以获取与所 述处理器写入出站中断邮箱通道关联的通道计数; 判定所述通道计数是否为0;以及如果所述通道计数不为0,则将写入通道指令发出到具有新的邮箱数 据表项的处理器写入出站中断邮箱通道。
78. 根据权利要求62的方法,其中在处理器写入出站邮箱通道计数 从0更改为非0值时,将设置处理器出站邮箱可用事件,并且其中所述处 理器出站邮箱事件通知在所述处理器上运行的程序外部设备已读取满的处 理器出站邮箱寄存器,并且发送到处理器写入出站邮箱通道的写入通道指 令不会停止所述处理器。
79. 根据权利要求78的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件进一步包括将读取通道指令发出到处理器读取事件掩码通道; 将所述读取通道指令的返回结果存储为掩码数据; 将写入通道指令发出到处理器写入事件掩码通道以启用所述处理器出 站邮箱事件;将写入通道指令发出到处理器写入事件确认通道以确认所述处理器出 站邮箱事件;将读取通道计数指令发出到处理器写入出站邮箱通道以获取与所述处理器写入出站邮箱通道关联的通道计数; 判定所述通道计数是否为0;以及如果所述通道计数不为0,则将写入通道指令发出到具有新的邮箱数 据表项的处理器写入出站邮箱通道。
80.根据权利要求69的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件进一步包括将读取通道指令发出到处理器读取事件掩码通道;将所述读取通道指令的返回结果存储为掩码数据;将写入通道指令发出到处理器写入事件掩码通道以启用所述处理器信 号通知可用事件;将写入通道指令发出到处理器写入事件确认通道以确认所述处理器信 号通知可用事件;将读取通道计数指令发出到处理器信号通知通道以获取与所述处理器 信号通知通道关联的通道计数;判定所述通道计数是否为0;以及如果所述通道计数不为0,则将读取通道指令发出到所述处理器信号 通知通道以从所述处理器信号通知通道读取信号数据。
81,根据权利要求70的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件进一步包括将读取通道指令发出到处理器读取事件掩码通道;将所述读取通道指令的返回结果存储为掩码数据;将写入通道指令发出到处理器写入事件掩码通道以启用所述锁定线保 留事件;将写入通道指令发出到处理器写入事件确认通道以确认所述锁定线保 留事件;以及执行应用特定的功能以响应锁定线区域中的数据的系统修改。
82.根据权利要求71的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件进一步包括将读取通道指令发出到处理器读取事件掩码通道; 将所述读取通道指令的返回结果存储为掩码数据; 将写入通道指令发出到处理器写入事件掩码通道以启用所述特权关注 事件;将写入通道指令发出到处理器写入事件确认通道以确认所述特权关注事件;以及执行应用特定的功能以响应所述特权关注事件。
83. 根据权利要求72的方法,其中根据所述一个或多个寄存器中存 储的数据来处理一个或多个事件进一步包括将读取通道指令发出到处理器读取事件掩码通道; 将所述读取通道指令的返回结果存储为掩码数据; 将写入通道指令发出到处理器写入事件掩码通道以启用所述多源同步事件;将写入通道指令发出到处理器写入事件确认通道以确认所述多源同步事件;以及执行应用特定的功能以响应所述多源同步事件。
84. —种包括具有计算机可读程序的计算机可用介质的计算机程序 产品,其中当所述计算机可读程序在计算设备上执行时,将导致所述计算 设备执行根据权利要求1至83中的任一权利要求的步骤。
85. —种装置,所述装置包括 处理器;以及与所述处理器相连的存储器,其中所述存储器包括指令,当所述指令 由处理器执行时,将导致所述处理器执行根据权利要求1至83中的任一权 利要求的步骤。
全文摘要
本发明提供了一种用于在处理器和外部设备之间传送指令和数据的系统和方法。所述系统和方法使用通道接口作为在处理器和存储器流控制器之间通信的主要机制。所述通道接口提供用于例如与处理器设备、存储器流控制设备、机器状态寄存器以及外部处理器中断设备进行通信的通道。可以将这些通道指定为阻塞或非阻塞。对于阻塞通道,当没有可从相应寄存器读取的数据时,或没有可供写入相应寄存器的空间时,将处理器置于低功率“停止”状态。当数据变得可用或空间被释放时,通过跨阻塞通道的通信自动唤醒所述处理器。因此,本发明的通道允许将处理器保持在低功率状态。
文档编号H04Q3/545GK101243421SQ200680030145
公开日2008年8月13日 申请日期2006年8月16日 优先权日2005年8月19日
发明者C·R·约翰斯, J·S·利伯蒂, M·N·戴, T·Q·特吕翁, T·斯旺森 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1