本发明涉及解决
现有技术存在的以上技术问题。
根据本发明,提供一种用于处理事件的方法,包括:在被适配以处理一组以 优先级排序的事件的优先逻辑单元中接收第一事件,所述优先逻辑单元包括多个逻 辑模
块,其中包括第一优先逻辑模块和一个或多个较低优先逻辑模块,所述较低优 先逻辑模块的优先级比所述第一优先逻辑模块的优先级低;以及使用所述优先逻辑 单元产生优先级屏蔽,所述优先级屏蔽指示一组可服务事件和一组不可服务事件, 其中所述产生优先级屏蔽包括在所述第一优先逻辑模块中产生所述屏蔽的子集并 传送优先级状态位到所述一个或多个较低优先逻辑模块,所述优先级状态位可操作 用于使得所述一个或多个较低优先逻辑模块的每一个产生指示一组不可服务事件 的优先级屏蔽的对应子集。
根据本发明,还提供一种用于处理事件的装置,包括:被适配以服务事件的 执行单元;以及控制单元,包括:优先逻辑单元,用于当在所述优先逻辑单元中接 收到事件时,产生指示一组可服务事件和一组不可服务事件的优先级屏蔽,所述优 先逻辑单元包括:第一优先逻辑模块,用于产生所述优先级屏蔽的第一子集,以及 一个或多个较低优先逻辑模块,所述一个或多个较低优先逻辑模块的每一个可操作 用于产生所述优先级屏蔽的对应子集,其中,所述第一优先逻辑模块可操作用于, 当在所述第一优先逻辑模块中接收到所述事件时,传送优先级状态位到所述一个或 多个较低优先逻辑模块,所述优先级状态位可操作用于使得所述一个或多个较低优 先逻辑模块产生指示不可服务事件的优先级屏蔽的子集。
根据本发明,还提供一种用于处理事件的系统,包括:静态随机存取
存储器 设备;以及耦合到所述存储器设备的处理器,其中所述处理器包括控制单元,所述 控制单元包括:优先逻辑单元,用于,当在所述优先逻辑模块中接收到事件时,产 生指示一组可服务事件和一组不可服务事件的优先级屏蔽,所述优先逻辑单元包 括:第一优先逻辑模块,用于产生所述优先级屏蔽的第一子集,以及一个或多个较 低优先逻辑模块,所述一个或多个较低优先逻辑模块的每一个可操作用于产生所述 优先级屏蔽的对应子集,其中,所述第一优先逻辑模块可操作用于,当在所述第一 优先逻辑模块中接收到所述事件时,传送优先级状态位到所述一个或多个较低优先 逻辑模块,所述优先级状态位可操作用于使得所述一个或多个较低优先逻辑模块产 生指示不可服务事件的优先级屏蔽的子集。
根据本发明,还提供一种用于处理事件的方法,包括:产生指示一组可服务 事件和一组不可服务事件的优先级屏蔽,通过在第一优先逻辑模块内产生所述优先 级屏蔽的第一子集,并在一个或多个较低优先逻辑模块中产生所述优先级屏蔽的一 个或多个子集来实现,其中所述较低优先逻辑模块的优先级比所述第一优先逻辑模 块的优先级低;以及传送优先级状态位到所述一个或多个较低优先逻辑模块,所述 优先级状态位可操作用于使得所述一个或多个较低优先逻辑模块产生指示不可服 务事件的优先级屏蔽的子集。
从而,本发明能够提供一种优先化方案来以最有效的方式处理多个活动的服 务程序。
附图说明
图1是说明根据本发明的
实施例的可编程处理器的
框图。
图2是说明事件处理器的实施例的框图。
图3是说明优先逻辑的示例性实施例的
电路图。
图4是说明根据本发明的实施例的操作模式的
流程图。
图5是说明根据本发明的实施例的操作模式的另一流程图。
图6是说明根据本发明的实施例的用于调节状态寄存器的电路的电路图。
图7是说明根据本发明的实施例的事件向量选择线的电路框图。
图8是说明根据本发明的实施例被连接到带有模块的事件管理逻辑的寄存器 的电路框图。
图9是说明根据本发明的实施例怎样创建早期信号的电路图。
图10-13分别示出根据本发明的实施例的图8的模块的示例性逻辑。
图14是说明根据本发明的实施例的事件服务程序操作的模式的流程图。
图1是说明带有执行单元4和控制单元6的可编程处理器2的框图。控制单 元6可以带有事件处理器10。如下详细描述的事件处理器10可以减少处理事件的 计算时间。特别地,事件处理器10可以产生表示一组可服务事件和一组不可服务 事件的优先级屏蔽。如此,处理器2可以迅速地辨认并处理可服务事件。
执行单元4可以是具有用于处理指令的若干级的执行流
水线。每级都可以与 其它级迸发处理并在每个时钟周期把结果传到流水线内的下一级。每个指令的最终 结果可以以快速连续地显露在流水线的终端。
控制单元6可以控制经过执行单元4的指令和数据的流量。例如,在指令的 处理期间,控制单元6可以控制执行单元的各种元件来取出指令并对其进行解码, 执行相应的操作,并且把结果写回存储器或本地寄存器。
图2是说明事件处理器10的实施例的框图。事件处理器10可以带有被连接 到事件优先级寄存器(IPEND_R)16的优先逻辑14。事件处理器10也可以带有事件 屏蔽寄存器(IMASK)18和事件
锁存器(ILAT)20。
逻辑电路22可被连接到IMASK 18 和ILAT 20。IPEND_R 16、IMASK 18和ILAT 20都可被连接到事件管理逻辑24。 事件管理逻辑24可被连接到控制逻辑25。另外,事件管理逻辑24可被连接到状 态寄存器(IPEND)26。而且,事件管理逻辑24可被连回优先逻辑14。
每个由处理器2处理的事件可以具有一个事件优先级。寄存器16、18、20和 26都可具有相同的宽度,并且每个寄存器可以具有多个编号的位。而且,各个寄 存器16、18、20和26中相同编号的位可以与相同的事件相关联。因此,每个由处 理器2处理的事件可在每个寄存器16、18、20和26中具有相关的位。
在示例性实施例中,寄存器16、18、20和26是16位寄存器。每个寄存器都 有相应于16个事件(例如,事件0-15)之一的位。事件0-15可被区分优先次序 以便第0个事件是最高优先级事件而第15个事件是最低优先级事件。通过示例的 方式,事件0-15可被如下地区分优先次序:仿真0、复位1、不可屏蔽中断2、 异常3、全局中断允许4、硬件差错5、高优先级
定时器6以及按照普通中断的优 先级次序的普通中断7-15。
IMASK寄存器18可以是便于允许或禁用事件的事件屏蔽寄存器。因此,IMASK 18中的每个位可以表示相应的事件是否被允许。如果,例如,特定事件的IMASK 位为1,则事件被允许。如果事件未被允许,则电路决不会服务该事件。IMASK寄 存器18中的位可以通过本领域已知的任何方式来设置。这些可能包括写入内存映 像寄存器来设置IMASK或者执行软件指令来设置IMASK。如此,可以容易地允许或 禁用任意事件。
在一个特定实施例中,尽管系统中存在16个不同的优先级指令,然而IMASK 寄存器的宽度可以小于16位。例如,在该实施例中,可能不会屏蔽某些高优先级 的位(例如,0-4)。因此,IMASK寄存器可能不具有说明始终被允许的事件0-4 的位。
事件锁存器(ILAT)20中的位可以指示相应的事件何时被系统锁存(或接收)。 在事件被锁存的任意时间,ILAT中其相应的位可被设置为1。然后,当事件被系统 接受时,ILAT中相应的位可被复位为0。因此,ILAT可以指示已被接受但尚未被 服务的事件。
ILAT中的每个位可以通过硬件
请求或软件请求而被设置。一旦被设置,只要 还没接收到用于服务的相关的事件则在ILAT中保持该位。然而,一旦事件被系统 接受,则ILAT中的位可被再次复位为零。此外,在某些实施例中,可以清除ILAT 中的一个或多个位。
IPEND寄存器26可以是记住所有当前可服务事件的状态寄存器。当事件被系 统接受时(并且例如,其在ILAT中的位被复位为零),其在IPEND中的位可被设置 为1。在任意给定时间下,多个事件可能是活动的,因此可以设置IPEND的多个位。 然而,每次只有一个事件被服务。因此,IPEND中设置的最高优先位可以指示当前 被服务的是哪个事件。
IPEND_R 16可以是反映当前被系统服务的事件的优先级的优先级寄存器。同 时,IPEND_R可以提供可服务事件和不可服务事件的正在进行的标记。
在一种结构中,IPEND中设置的最高优先位对应于IPEND_R中的事件活动位。 IPEND R中的事件活动位可以与IPEND_R中所有较低优先级位一起被设置为0。优 先级高于事件活动位的所有位可被设置为1。因此,IPEND_R中的事件活动位可以 是在该寄存器中被设置为0的最高优先位。
IPEND_R可为处理器2提供一种快速并有效的方法来检测可服务事件。由于 IPEND_R中只有优先级高于事件活动位的位被设置为1,因此事件处理器10可以快 速地识别可服务事件。如果IPEND_R中事件位为1,则该事件立即可服务。
而且,IPEND的输入可以把输入提供给计算IPEND_R的值的逻辑。因此,只要 IPEND被调节(例如,当采用新的事件时),则可在相同的时钟周期中
自动调节 IPEND_R。如此,IPEND_R可用来允许事件处理器10在接收到新的事件时作出优先 级判决。
通过使用寄存器EPEND_R 16、ILAT 18和IMASK 20,事件处理器可以快速并 有效地服务一个事件。ILAT 18可以告诉事件处理器10事件已被接收但尚未被服 务。IMASK 20可以告诉处理器10是否处理器2能服务一个特定的事件。而IPEND_R 可以告诉处理器事件是否具有要被立即服务的足够高的优先级。因此,当事件位在 所有这三种寄存器中是1时,可以采用该事件。而且,对新事件将被采用的快速检 测可以允许事件管理逻辑24和控制逻辑25迅速并有效地处理对新事件的服务程序 的流程的改变。
有时因为较高优先级的事件正在被服务,因此不能立即采用一个事件。例如, 如果较高优先级的事件当前正在被服务,则较低优先级的事件的IPEND_R可以为0。 因此,该事件可能不被系统接受,于是其ILAT位可能保持其值。
然而,最终系统可以完成对较高优先级事件的服务。一旦其服务程序已完成, 则较高优先级事件位可在IPEND中被重新设置为0,并且可以调节IPEND_R。在这 一点上,如果较低优先级事件的IPEND_R位被调节为1,则它可被接受入系统。
图3是说明被用于根据事件的
指定优先级来产生优先级屏蔽的优先逻辑14的 示例性实施例的电路图。该优先级屏蔽可被写入IPEND_R并由事件处理器10使用, 以便处理器2可以迅速地辨认并处理可服务事件。
优先逻辑14可有16个输入端,每个都对应于16个事件之一。这些16个输 入端可以来自设置IPEND寄存器(未示出)的事件管理逻辑24的相应输出端。优先 逻辑也可有被连接到IPEND_R寄存器16的16个相应位的16个输出端。
每个优先逻辑14的相应输入可以来自事件管理逻辑(未示出)的相应输出端。 当IPEND中事件位被事件管理逻辑(未示出)设置为0时,优先级逻辑可以反转0 并且把1输出到事件位。当IPEND中的事件位被事件管理逻辑(未示出)设置为1 时,优先级逻辑14可反转1并把0输出到事件。另外,当IPEND中事件位被事件 管理逻辑(未示出)设置为1时,可以使优先逻辑适应于反转1并且把0传送到优先 级低于事件位的每个位。这种由优先逻辑14产生的1和0的集合可以是被写入 IPEND_R 16的优先级屏蔽。
如图3所示,优先逻辑14的一个实施例实现了优先逻辑模块40、42、44和 46。这些优先逻辑模块40、42、44和46可以集体产生优先级屏蔽。例如,如果1 被输入优先逻辑模块40、42、44或46,则模块可能为其相应的位产生优先级屏蔽 的子集。可以通过为由模块接收到的事件产生事件活动位(例如,0)、为由模块处 理的较高优先级事件产生1以及为由模块处理的较低优先级事件产生0来产生优先 级屏蔽的子集。优先级状态位也可以被传送到较低优先逻辑模块(例如,对于被较 低优先级的处理模块导致事件的输出为0)。另外,较高优先级模块可以为它们处 理的事件输出1。如此,优先逻辑模块的集合可能产生优先级屏蔽。
在特定的实施例中,优先逻辑模块40、42、44和46是各带有四个输入和四 个输出的四心线组。只要1被输入到四心线组,则所有较低优先级的四心线组的输 出可能为0。而且,如果四心线组接收到1,则该四心线组内的相应位和所有较低 优先级位的输出可能为0,而所有较高优先级位的输出可能为1。如图3所示,优 先逻辑模块40可以是具有单级与
门的四心线组,而优先逻辑模块42可以是具有两 级与门的四心线组。同样,优先逻辑模块44和优先逻辑模块46都可以是具有两级 与门的四心线组(如模块42中所示)。模块44中的第二级与门可以带有一个来自模 块42的输入。同样,模块46中的第二级与门可以带有一个来自模块44的输入。 如此,优先逻辑14可以迅速并有效地作用。根据图3可知,优先逻辑14和/或优 先逻辑模块40、42、44和46的其它实施例将是显而易见的。
图4是说明根据本发明的实施例的操作模式的流程图。当接收到事件时(60), 可以设置其在ILAT中的位(62)并且可以确定其优先级(64)。该事件直到其优先级 对应于IPEND_R寄存器中的1时才被服务(66)。如果事件的优先级对应于 IPEND_R(66)和IMASK(68)中的1,则它的位可在IPEND中被设置(70)并且在ILAT 中被清除(72)。依次设置IPEND可以调节IPEND_R寄存器(74)。在这一点上事件被 服务(76)。一旦事件已被服务(78),则其在IPEND中的位可被重新设置为0(80), 它可以再次调节IPEND_R(82)。
图5是说明根据本发明的实施例的操作模式的另一流程图。图5说明了一个 实施例怎样有效地处理嵌套的事件。当接收到优先级为X的事件X时,ILAT中的 第X位可被设置为1(92)。然而,除非且直到事件在IPEND_R(94)和IMASK(96)中 的位被设置为1时,事件处理器才服务该事件。如果ILAT、IPEND R和IMASK都有 值为1的事件位,则其ILAT位可以重新被设置为0(98)并且该事件可能被服务 (100)。在这一点上,IPEND中的事件位可被设置为1(102)。设置IPEND,从而可 调节IPEND_R(104)。一旦事件被服务(106),就可再次调节IPEND和IPEND_R (108)。
如果在事件被服务(106)之前接收第二事件(110),则在ILAT中将第二事 件的事件位设置为1(112)。如果第二事件的优先级不高于第一事件(114),(通 过检查IPEND_R被迅速确定),则第一事件可被服务(116)。如(118)处所示,可以 对第二事件重复从步骤(94)开始的过程。
如果第二事件的优先级高于第一事件(114),(同样,通过检查IPEND)_R被迅 速确定),则第二事件可以抢先于第一事件(120)。如(118)处所示,可以对第二事 件重复从步骤(94)开始的过程。随后,在第二事件被服务之后,电路可结束对第一 事件的服务(120)。
图6是说明可被实现以调节状态寄存器(IPEND)26的电路的实施例的电路图。 图5是IPEND中一个位的示例性电路系统。IPEND中的每个其它位都有与之关联的 相似电路系统。
可以对由系统采用的每个事件把IPEND 26的相应位设置为1。然而,一旦已 执行特定事件的服务程序,则为了反映该情况需要清除IPEND中的相应位。如图5 中所示,可以通过三输入与门122来检测IPEND_R寄存器中的转变。如上所述, IPEND_R中从0到1的转变可以规定IPEND中当前活动的事件位。门120的RTI输 入可以检测事件处理器的最近一次指令(例如,RTI指令)。因此,当门122既检测 到IPEND_R中的转变又检测到RTI指令时,该事件的IPEND位可以被清除。而且, 相同的信号124可以在相同的时钟周期期间被送回优先逻辑模块40、42、44和46 以调节IPEND_R 16。
图7是说明根据本发明的实施例的另一种特性的电路框图。IPEND_R、IMASK 和ILAT寄存器16、18和20都可被连接到事件管理逻辑24。事件管理逻辑可被连 接到控制逻辑25。事件管理逻辑可被适配以便其相应的输出两两
正交。换句话说, 只有来自事件管理逻辑的16个输出中的一个可在任意给定时间被设置。因此,在 给定的时刻或者不设置来自事件管理逻辑24的输出,或者设置仅仅一个输出。
根据这些正交信号,可以用事件向量选择线130来确定需要提取哪一个服务 程序。因此,当正在写入IPEND时(并且优先逻辑产生优先级屏蔽并将其写入 IPEND_R),可以用事件向量选择线来选择适当的服务程序。然后可以从ICACHE(未 示出)中提取该服务程序并且在执行流水线中执行。
图8是说明根据本发明的实施例示出被连接到事件管理逻辑24的寄存器16、 18和20的电路框图。如图所示,每个寄存器的第4位可被注入与门131。每个寄 存器16、18和20的其它位可被送入相似的与门(未示出)。如此,事件管理逻辑可 以只采用带有被写入所有三个寄存器16、18和20的1的事件。
事件管理逻辑24可以实现事件管理逻辑模块132、134、136和138,每个模 块都带有确保在任意给定时间逻辑24只有一个输出可以是有效的电路系统(分别 见图10-13)。因此,在事件向量选择线130处,信号两两正交。可以根据这些正 交信号用事件向量选择线130从事件向量表选择事件(例如,为了指定需要提取哪 个服务程序)。
图9是说明根据本发明的实施例的另一种特征的电路图。如上所述,寄存器 16、18和20的每一位都把相应的输入提供给与图8在131处示出的与门相似的与 门。图9示出所有16个与门,相应的输出端被连接到事件管理逻辑模块132、134、 136和138。然而,另外,该16个与门的输出端也可以提供输入到16线或门150。 该或门可被依次连接到控制逻辑25。如此可以创建指示事件将在下一个时钟周期 中被采用的早期信号。然后,该早期信号可被用于控制逻辑25以有效地处理流程 的改变。
图10-13分别示出可被用来在时间向量选择线130处产生正交信号的事件管 理逻辑模块138、136、134、132的示例性逻辑。图10示出模块138的示例性逻辑。 图11示出包括或非门160的模块136的示例性逻辑。或非门160的输入端也可以 是模块138的输入端。图12示出包括或非门160和或非门170的模块134的示例 性逻辑。或非门160的输入端可以与模块138的输入端相同,而或非门170的输入 端可以是模块136的输入端。图13示出包括或非门160、170和180的模块132 的示例性逻辑。同样,门160的输入端可以是模块138的输入端,门170的输入端 可以是模块136的输入端,门180的输入端也可以是模块134的输入端。根据图 10-13,用于在事件向量选择线130处产生正交信号的其它实施例将是显而易见 的。
图14是说明事件服务程序操作模式的流程图。如图所示,事件管理可以仅占 据三个时钟周期。第一个周期可能涉及锁存事件。在第一个时钟周期中,事件被接 收(190)并且它的位在ILAT中被设置(192)。
在第二个时钟周期中可以处理事件。在第二个时钟周期中,优先级检测(194) 和事件屏蔽(196)可以确定事件是否被采用(198)。如果采用,则事件位可被写入状 态寄存器(200)并且优先级寄存器可被调节(202)。另外,可以产生一个或多个信号 以便于处理流程的改变(204)。这些信号可以包括指示新事件将被采用的早期信号, 或者可被用来选择适当的服务程序的正交信号。
在第三个时钟周期中可以处理流程的改变。执行单元可被终止(206)并且新事 件地址可被赋予ICACHE(208)。另外,一个或多个异常中断指令的地址可被保存在 返回寄存器中(210)。然后可以在随后的时钟周期中在执行单元中执行适当的服务 程序。
至此已描述了本发明的各种实施例。例如,已描述了一种带有产生指示一组 可服务事件和一组不可服务事件的优先级屏蔽的事件处理器的处理器。该处理器可 以在包括通用计算系统、数字处理系统、便携式计算机、
个人数字助理(PDA’s)和 蜂窝电话的各种系统中实现。在任意这种系统中,该处理器可被耦合到存储器设备, 譬如存储
操作系统和其它软件应用程序的FLASH存储器设备或静态随机存取存储 器(SRAM)。这些和其它实施例位于所附
权利要求的范围之内。