专利名称:一种对pci设备的总线请求进行屏蔽的方法
技术领域:
本发明涉及电数字数据处理领域的信息或其它信号在存储器、输入/输出设备或者中央处理器(CPU)之间的互连或传送,尤其涉及对互连或传送请求的处理。
PCI(Peripheral component interconnection,以下简称PCI)即外设部件互连技术中,PCI仲裁器接受同一条PCI总线上多个设备发出的总线申请信号,并根据一定算法确定将总线使用权交给某一设备使用。在某一时刻,某一或者更多的PCI设备可能要求使用总线。每一发出请求的设备将置其请求信号为有效以向仲裁器请求使用总线。此时,仲裁器须根据各个请求的优先级及当前的总线状态来决定让哪个设备获得总线。因此,每一设备都应有各自的请求信号线和允许信号线,要想得到总线的控制权,就必须发出请求。仲裁器必须保证在任何时刻只能有一个允许信号有效。
当某一PCI设备获得总线使用权并且检测到总线空闲之后,一般都会在一到两个PCI时钟周期之后驱动总线进行传输。根据PCI协议的规定,当PCI总线空闲时,如果某一PCI设备在获得总线之后的16个PCI时钟周期内还没有驱动总线,则认为此设备出错,其错误原因包括元器件失效、该设备已被破坏等等情况。在目前市场上广泛使用的的Motorola公司的MPC8240微处理器和TUNDRA公司的CA91L8260芯片中的PCI仲裁器都是默认认为该出错的PCI设备在以后的进程中再不会向PCI总线发出请求。但是在现实工作中,某些PCI设备出错的原因可能是因为临时的传输阻塞等因素,在一段时间后可能会自动恢复正常,这时它仍然有可能发出有效的使用PCI总线的请求。针对现有技术的这种不足,美国专利US5797020公开了一种通过一定的电路来对出错设备的PCI总线使用请求进行屏蔽的技术,也就是说采取了硬件屏蔽措施。虽然所述美国专利公开的技术方案在一定程度上避免了现有技术的不足,但是并没有解决根本问题,因为它只是对出错的PCI设备的PCI总线使用请求采取了强制屏蔽的措施,对出错后自动恢复正常的那些PCI设备发出的有效的PCI总线使用请求也同样进行强制屏蔽,而不是进行仲裁。要进行仲裁首先必须撤销先前对该出错设备采取的屏蔽措施,而所述美国专利公开的硬件屏蔽技术则难以解决这个问题。
本发明的目的在于避免上述现有技术的不足之处而提出一种对PCI设备的总线请求进行屏蔽的方法,使用这种方法,能够灵活且有效地对PCI设备(包括临时出错的PCI设备)的总线请求进行屏蔽,提高PCI仲裁器的科学性和合理性。
本发明的目的可以通过采用以下技术方案来实现提出一种对PCI(外设部件互连)设备的总线请求进行屏蔽的方法,这就是,在PCI设备请求使用总线时,PCI系统将作出判断,以决定是否需要对此请求进行屏蔽;此处所述的“屏蔽”是指暂时不响应某设备发出的使用总线请求;所述进行屏蔽的方法是①在有需要时屏蔽该PCI设备的总线请求;②在满足一定条件时撤销所述屏蔽。
实现本发明的一个具体技术方案包括如下步骤①采用屏蔽计数器对屏蔽信号的有效时间计时;②在给定的时间间隔末撤销该有效屏蔽信号。
实现本发明的一个具体实施例中,相关的各信号定义如下屏蔽信号hide——暂时搁置所收到的使用总线请求的指令;报错信号error——报告某设备处于故障状态的反馈信号;强制屏蔽信号force——不管该设备是否处于故障状态,均强制屏蔽其使用总线的请求;实施例包括如下步骤①判断报告设备处于故障状态的“error”信号是否有效,如果无效,则重复此判断过程;②如果“error”信号有效,则给出“hide”信号有效的指令,屏蔽计数器开始计数;③判断屏蔽计数器计数值是否达到了最大,如果屏蔽计数器计数值尚未达到最大,则重复此判断过程;④如果该计数值达到了最大,则给出“hide”信号无效的指令,对屏蔽计数器清零,并重新开始实施所述步骤①。
实现本发明的另一个实施例包括如下步骤①判断state信号所处的状态,如果state信号处于正常状态,则重复此判断过程;②如果state信号处于出错状态,则给出“hide”信号有效的指令,然后再判断state信号所处的状态;
③如果state信号处于出错状态,则继续判断state信号所处的状态;④如果state信号处于正常状态,则给出“hide”信号无效的指令,并重新开始实施所述步骤①。
实现本发明的第三个实施例包括如下步骤①判断报告设备处于故障状态的“error”信号是否有效,如果无效,则重复此判断过程;②如果“error”信号有效,则给出“hide”信号有效的指令;③判断state信号所处的状态,如果state信号处于出错状态,则重复此判断过程;④如果state信号处于正常状态,则给出“hide”信号无效的指令,并重新开始实施所述步骤①。
由上述内容可见,使用本发明提出的对PCI设备的总线请求进行屏蔽的方法,能够科学、合理地处理PCI设备的总线请求。对某一临时出错的PCI设备可以先对该设备的PCI总线请求进行屏蔽,在一定的时间后自动解除对该设备的总线请求屏蔽,对回复正常的PCI设备恢复对其PCI总线请求的仲裁。另外,使用本发明提出的对PCI设备的总线请求进行屏蔽的方法,还可以方便地任意对需要屏蔽的PCI设备进行强制屏蔽,而无论该PCI设备是否出错。本发明所述的对PCI设备的总线请求进行屏蔽的方法,也可用于其它类型总线仲裁器屏蔽其总线设备的总线请求。
下面结合附图对本发明作进一步的详细说明。
图1是本发明提出的对PCI设备的总线请求进行屏蔽的方法的步骤流程图;图2是本发明提出的另一个屏蔽方法的步骤流程图;图3是本发明提出的第三个屏蔽方法的步骤流程图;图4是实现本发明提出的第一个屏蔽方法的电路逻辑;图5是本发明的一个最佳实施例的步骤流程图;图6是本发明的另一个最佳实施例的步骤流程图;图7是本发明的第三个最佳实施例的步骤流程图;如图1所示,与本发明相关的各信号定义如下屏蔽信号hide——暂时搁置所收到的使用总线请求的指令;报错信号error——报告各设备处于故障状态的反馈信号;PCI设备状态信号state——实时表示该设备所处的状态,state信号有正常和出错两种状态。这里所述的“屏蔽”的意思就相当于一个开关,位于PCI设备与PCI仲裁器之间,PCI设备的总线请求必须通过此开关才能传送到PCI仲裁器,只有当此开关开启时,PCI仲裁器才能收到PCI设备的请求信号,否则,PCI仲裁器所收到的请求信号将是无效的。而此“开关”的闭合和开启是由屏蔽信号hide来控制,当此屏蔽信号hide有效时表示闭合此开关,反之表示开启此开关。本发明提出的对PCI设备的总线请求进行屏蔽的方法包括如下步骤①判断报告设备处于故障状态的“error”信号是否有效,如果无效,则重复此判断过程;②如果“error”信号有效,则给出“hide”信号有效的指令,屏蔽计数器开始计数;③判断屏蔽计数器计数值是否达到了最大,如果屏蔽计数器计数值尚未达到最大,则重复此判断过程;④如果该计数值达到了最大,则给出“hide”信号无效的指令,对屏蔽计数器清零,并重新开始实施所述步骤①。下面进行进一步详细论述。如图1所示,PCI设备的报错信号error相当于一个触发信号,只有当error信号有效时,才能触发下面的屏蔽过程,即实施所述步骤②。为了能够对回复正常的PCI设备恢复仲裁,需要撤销对其的屏蔽,因此设置了一个屏蔽计数器,当屏蔽计数器的计数值达到最大时,根据图1所示,即撤销对该出错PCI设备的屏蔽信号,我们把从屏蔽开始到屏蔽撤销的时间间隔称为一个屏蔽周期。error信号是PCI仲裁器发给CPU的,根据PCI协议的规定,当PCI总线空闲时,如果某一PCI设备在获得总线之后的16个PCI时钟周期内还没有驱动总线,则PCI仲裁器认为此PCI设备出错,向CPU发出报错信号error。如果某PCI设备出错,当其向PCI仲裁器发出总线使用请求一段时间后,error信号有效,根据图1所示的流程,触发屏蔽过程,当屏蔽计数器的计数值达到最大时,即撤销该屏蔽,一个屏蔽周期结束。当一个屏蔽周期结束后,如果某出错的PCI设备回复正常,则PCI仲裁器恢复对该PCI设备总线使用请求的仲裁。如果该出错PCI设备仍处于出错状态,那么,如果该设备不发出总线使用请求,则无需对其进行屏蔽,如果该设备又发出了总线使用请求,当它获得总线的使用权而又在16个PCI时钟周期内还没有驱动总线,则PCI发出的报错信号error会触发另一个屏蔽周期。如果该出错的PCI设备一直处于出错状态,则这样的过程将一直重复下去。
图2是本发明提出的另一个屏蔽方法的步骤流程图。在某些PCI环境中,各PCI设备可能都带有各自的状态寄存器,实时记录该PCI设备所处的状态。本发明的这一最佳实施例有效利用了这一条件。如图2所示,所述屏蔽方法包括如下步骤①判断state信号所处的状态,如果state信号处于正常状态,则重复此判断过程;②如果state信号处于出错状态,则给出“hide”信号有效的指令,然后再判断state信号所处的状态;③如果state信号处于出错状态,则继续判断state信号所处的状态;④如果state信号处于正常状态,则给出“hide”信号无效的指令,并重新开始实施所述步骤①。图2所示的方法简单而实用,实时检测PCI设备状态中state信号所处的状态,当某PCI设备的state信号处于出错状态时,则对该PCI设备的总线使用请求进行屏蔽,直至state信号的状态恢复正常即该PCI设备回复正常,才撤销对该设备的屏蔽。
图3是本发明提出的第三个屏蔽方法的步骤流程图。如图3所示,本发明提出的第三个屏蔽方法包括如下步骤①判断报告设备处于故障状态的“error”信号是否有效,如果无效,则重复此判断过程;②如果“error”信号有效,则给出“hide”信号有效的指令;③判断state信号所处的状态,如果state信号处于出错状态,则重复此判断过程;④如果state信号处于正常状态,则给出“hide”信号无效的指令,并重新开始实施所述步骤①。本发明提出的第三个屏蔽方法,综合利用了报错信号error和PCI设备状态信号state,利用PCI设备出错时产生的报错信号error来触发屏蔽过程,而屏蔽信号hide的撤销则是由状态信号state决定的。只有当state信号所表示的状态恢复正常时,才能撤销屏蔽信号hide,这样,同样可以实现本发明的目的,灵活且有效地对PCI设备(包括临时出错的PCI设备)的总线请求进行屏蔽,提高PCI仲裁器的科学性和合理性。
图4是实现本发明提出的第一个屏蔽方法的电路逻辑。如图4所示,该电路逻辑包括对hide信号的有效时间进行计时的屏蔽计数器;对输入信号和屏蔽计数器的状态进行判断以决定hide信号是否有效的逻辑判断模块和给出“hide”信号有效或者无效指令并对屏蔽计数器进行清零或者触发计数的输出执行模块。其中error信号为PCI设备的报错信号,来自PCI仲裁器。在输入信号中error信号和屏蔽计数器所处的状态是必需的,force信号则可以根据用户的需要和实际情况来决定是否加入输入信号中。屏蔽信号hide的状态是实时动态存储在逻辑判断模块中的,逻辑判断模块根据输入信号的不同,结合hide信号和屏蔽计数器的状态,使用本发明提出的第一个屏蔽方法来决定输出的hide信号为有效还是无效,交由输出执行模块进行输出。输出执行模块同时还负责执行对屏蔽计数器进行清零或者触发计数的操作。这里的屏蔽计数器可以是一个可编程计数器,可以根据用户的需要以及系统的参数来决定和调整屏蔽计数器的最大计数值。
在现实情况中,可能会出现需要屏蔽某PCI设备的情况,而该PCI设备并未出错,现有技术没有很好地满足这个需要。图5是本发明的一个最佳实施例的步骤流程图,这个最佳实施例能很好地解决上述问题。如图5所示,所述最佳实施例包括如下步骤a)在实施本发明提出的第一个屏蔽方法中所述步骤①之前,首先判断“force”信号是否有效,如果有效,则进一步判断“hide”信号是否有效,如果“hide”信号有效则重新判断“force”信号是否有效,如果“hide”信号无效,则再给出“hide”信号有效的指令,然后重新判断“force”信号是否有效;b)如果“force”信号无效,则也需进一步判断“hide”信号是否有效,如果“hide”信号无效,则判断报告设备处于故障状态的“error”信号是否有效,如果“hide”信号有效,则再给出“hide”信号无效的指令,然后判断报告设备处于故障状态的“error”信号是否有效;c)如果“error”信号无效,则重新判断“force”信号是否有效;d)如果“error”信号有效,则给出“hide”信号有效的指令,屏蔽计数器开始计数;判断屏蔽计数器计数值是否达到了最大,如果屏蔽计数器计数值尚未达到最大,则重复此判断过程;e)如果该计数值达到了最大,则给出“hide”信号无效的指令,对屏蔽计数器清零,并重新开始判断“force”信号是否有效。这个最佳实施例实际上是在本发明提出的第一个屏蔽方法的基础上加上了对强制屏蔽信号force信号的判断和处理。在这里,force信号的优先级是最高的,只要force信号有效,则无论该PCI设备是否出错,都无条件地对该设备的总线使用请求进行强制屏蔽,直至PCI设备无效才撤销此屏蔽。如图5所示,如果force信号无效,则该最佳实施例可按照本发明提出的第一个屏蔽方法对出错PCI设备(包括临时出错的PCI设备)的总线请求进行屏蔽,但是和图1所示的屏蔽方法相比,图5所示的最佳实施例要做一些适应性修改,即在实施所述步骤①时,如果“error”信号无效,则重新判断“force”信号是否有效;在实施所述步骤④时,如果该计数值达到了最大,则给出“hide”信号无效的指令,对屏蔽计数器清零,并重新开始判断“force”信号是否有效。由上可见,图5所示的最佳实施例,不但能够对出错PCI设备(包括临时出错的PCI设备)的总线请求进行屏蔽,还能够根据需要任意地对某PCI设备进行屏蔽,而无论该PCI设备是否出错,这就增加了PCI仲裁器的灵活性和实用性。
图6是本发明的另一个最佳实施例的步骤流程图,图7是本发明的第三个最佳实施例的步骤流程图。和图5所示的最佳实施例类似,图6和图7所示的两个最佳实施例分别是在图2和图3所示的屏蔽方法的基础上加上了对强制屏蔽信号force的判断和处理而形成的最佳实施例。当然,在实施相应的屏蔽方法的步骤①和④时也进行了一些适应性修改,以达到最佳的发明目的。
权利要求
1.一种对PCI(外设部件互连)设备的总线请求进行屏蔽的方法,这就是,在PCI设备请求使用总线时,PCI系统将作出判断,以决定是否需要对此请求进行屏蔽;此处所述的“屏蔽”是指暂时不响应某设备发出的使用总线请求;所述进行屏蔽的方法,其特征在于①在有需要时屏蔽该PCI设备的总线请求;②在满足一定条件时撤销所述屏蔽。
2.如权利要求1所述的对PCI设备的总线请求进行屏蔽的方法,其特征在于①采用屏蔽计数器对屏蔽信号的有效时间计时;②在给定的时间间隔末撤销该有效屏蔽信号。
3.如权利要求2所述的对PCI设备的总线请求进行屏蔽的方法,与此相关的各信号定义如下屏蔽信号hide——暂时搁置所收到的使用总线请求的指令;报错信号error——报告某设备处于故障状态的反馈信号;强制屏蔽信号force——不管该设备是否处于故障状态,均强制屏蔽其使用总线的请求;其特征在于还包括如下步骤①判断报告设备处于故障状态的“error”信号是否有效,如果无效,则重复此判断过程;②如果“error”信号有效,则给出“hide”信号有效的指令,屏蔽计数器开始计数;③判断屏蔽计数器计数值是否达到了最大,如果屏蔽计数器计数值尚未达到最大,则重复此判断过程;④如果该计数值达到了最大,则给出“hide”信号无效的指令,对屏蔽计数器清零,并重新开始实施所述步骤①。
4.如权利要求1所述的对PCI设备的总线请求进行屏蔽的方法,与此相关的各信号定义如下屏蔽信号hide——暂时搁置所收到的使用总线请求的指令;PCI设备状态信号state——实时表示该设备所处的状态,state信号有正常和出错两种状态;强制屏蔽信号force——不管该设备是否处于故障状态,均强制屏蔽其使用总线的请求;所述进行屏蔽的方法,其特征在于①判断state信号所处的状态,如果state信号处于正常状态,则重复此判断过程;②如果state信号处于出错状态,则给出“hide”信号有效的指令,然后再判断state信号所处的状态;③如果state信号处于出错状态,则继续判断state信号所处的状态;④如果state信号处于正常状态,则给出“hide”信号无效的指令,并重新开始实施所述步骤①。
5.如权利要求1所述的对PCI设备的总线请求进行屏蔽的方法,与此相关的各信号定义如下屏蔽信号hide——暂时搁置所收到的使用总线请求的指令;报错信号error——报告某设备处于故障状态的反馈信号;PCI设备状态信号state——实时表示该设备所处的状态,state信号有正常和出错两种状态;强制屏蔽信号force——不管该设备是否处于故障状态,均强制屏蔽其使用总线的请求;所述进行屏蔽的方法,其特征在于①判断报告设备处于故障状态的“error”信号是否有效,如果无效,则重复此判断过程;②如果“error”信号有效,则给出“hide”信号有效的指令;③判断state信号所处的状态,如果state信号处于出错状态,则重复此判断过程;④如果state信号处于正常状态,则给出“hide”信号无效的指令,并重新开始实施所述步骤①。
6.如权利要求3所述的对PCI设备的总线请求进行屏蔽的方法,其特征在于包括如下步骤a)在实施所述步骤①之前,首先判断“force”信号是否有效,如果有效,则进一步判断“hide”信号是否有效,如果“hide”信号有效则重新判断“force”信号是否有效,如果“hide”信号无效,则再给出“hide”信号有效的指令,然后重新判断“force”信号是否有效;b)如果“force”信号无效,则也需进一步判断“hide”信号是否有效,如果“hide”信号无效,则判断报告设备处于故障状态的“error”信号是否有效,如果“hide”信号有效,则再给出“hide”信号无效的指令,然后判断报告设备处于故障状态的“error”信号是否有效;c)如果“error”信号无效,则重新判断“force”信号是否有效;d)实施所述步骤②和③;e)如果该计数值达到了最大,则给出“hide”信号无效的指令,对屏蔽计数器清零,并重新开始判断“force”信号是否有效。
7.如权利要求4所述的对PCI设备的总线请求进行屏蔽的方法,其特征在于包括如下步骤a)在实施所述步骤①之前,首先判断“force”信号是否有效,如果有效,则进一步判断“hide”信号是否有效,如果“hide”信号有效则重新判断“force”信号是否有效,如果“hide”信号无效,则再给出“hide”信号有效的指令,然后重新判断“force”信号是否有效;b)如果“force”信号无效,则也需进一步判断“hide”信号是否有效,如果“hide”信号无效,则判断state信号所处的状态,如果“hide”信号有效,则再给出“hide”信号无效的指令,然后判断state信号所处的状态;c)如果state信号处于正常状态,则重新判断“force”信号是否有效;d)实施所述步骤②和③;e)如果state信号处于正常状态,则给出“hide”信号无效的指令,并重新开始判断“force”信号是否有效。
8.如权利要求5所述的对PCI设备的总线请求进行屏蔽的方法,其特征在于包括如下步骤a)在实施所述步骤①之前,首先判断“force”信号是否有效,如果有效,则进一步判断“hide”信号是否有效,如果“hide”信号有效则重新判断“force”信号是否有效,如果“hide”信号无效,则再给出“hide”信号有效的指令,然后重新判断“force”信号是否有效;b)如果“force”信号无效,则也需进一步判断“hide”信号是否有效,如果“hide”信号无效,则判断报告设备处于故障状态的“error”信号是否有效,如果“hide”信号有效,则再给出“hide”信号无效的指令,然后判断报告设备处于故障状态的“error”信号是否有效;c)如果“error”信号无效,则重新判断“force”信号是否有效;d)实施所述步骤②和③;e)如果state信号处于正常状态,则给出“hide”信号无效的指令,并重新开始判断“force”信号是否有效。
9.如权利要求2或3或6所述的对PCI设备的总线请求进行屏蔽的方法,其特征在于所述的屏蔽计数器是可编程计数器。
全文摘要
本发明公开了一种对PCI(Peripheral component interconnection)设备的总线请求进行屏蔽的方法。在PCI技术中,当PCI设备请求使用总线时,PCI系统将作出判断,以决定是否进行屏蔽,本发明提出的方法包括以下步骤①在有需要时屏蔽该PCI设备的总线请求;②在满足一定条件时撤销所述屏蔽。使用本发明提出的屏蔽方法,能够灵活有效地对PCI设备包括临时出错的PCI设备进行屏蔽并仲裁,提高PCI仲裁器的科学性和合理性。
文档编号G06F13/14GK1393787SQ0111488
公开日2003年1月29日 申请日期2001年6月29日 优先权日2001年6月29日
发明者刘华预, 符蓓, 朱子宇, 何玉樟 申请人:深圳市中兴集成电路设计有限责任公司