并行实时处理系统中总线仲裁问题的研究及实现
时间:12-04
来源:互联网
点击:
1、引言
目前,DSP(数字信号处理器)在信号处理领域,尤其是在雷达信号和图象信号处理方面正在被广泛的使用,许多信号处理板都采用DSP为核心处理芯片,然而,随着对于信号处理板的处理能力要求越来越高,例如,对于高帧数、大尺寸的图象序列的实时处理,往往要求每秒几十亿次的运算能力,目前单片DSP的运算能力不可能满足其要求,通常需要信号处理板在设计时采用多DSP并行处理结构,以满足系统对运算量的要求。在这种多DSP并行处理结构下,多个DSP之间通常通过共享总线来实现相互间或和外部设备的数据和控制/状态字传递,这时,系统需要建立一种总线仲裁机制,来保证多个DSP在使用总线时不会发生冲突和竞争,尤其是在实时处理环境下,更有必要保证总线控制权在各个DSP之间可靠的转移,为处理器间实时数据交换提供保证。如果数据传输一旦发生故障,将会导致系统运行迟滞或瘫痪。因此,总线仲裁机制设计的合理与否,会直接影响到系统运行效率和可靠性。所以在系统设计中,要充分考虑到总线操作问题,这是一个十分重要的环节。
2、多DSP并行处理系统结构介绍
系统结构如图1所示:
该系统是一种分布式多指令,多数据(MIMD)处理系统。其中功能模块包括:多个DSP构成的处理器模块、共享存储器模块、输入/输出设备、主机。这些模块都通过共享总线相连接。其中每个DSP中又包括运算单元、片内存储器、片内输入/输出单元、仲裁逻辑单元以及总线接口。由于每个DSP中有容量较大的局部存储器,所以各DSP的指令和数据基本上从各自的局部存储器里存取,这样就会大大减轻共享总线的负荷。
系统工作的方式为主从协同方式,即系统启动后,主处理器优先权最大,由它控制总线,负责整个系统的初始化、数据程序配置、与主机通信等,并参与运算工作。各个从片的优先权要比主片小,通常只参与运算工作。
如果在将DSP之间通过其他外部端口如链路口相互链接,那么将使整个系统体现出一种柔性结构,即处理系统结构和工作方式可以通过软件设置来实现变更而无需更改硬件设计。
例如,通过软件设置,可以定义各个DSP间相互工作协调方式,如并行与串行的转换;可以方便的分配各个DSP的工作量,并可以实现主从处理器间的调换,根据需要将从处理器升级为主处理器,负责整个系统的调配。在系统侦测到某个DSP发生故障时,可以通过软件设置,隔离有故障的处理器,从而实现系统的带故障运行,提高了整个系统的可靠性。这些操作都将涉及到对系统共享总线的操作,其中会遇到的问题将在下面进行描述。
3、总线操作问题的分析和解决思路
3.1总线操作问题的描述
在上面图1所示的系统中,多片DSP工作时,通常需要进行处理器间数据,状态/控制字的相互传递,以及和主机交换数据,向共享存储器存取数据,从输入设备输入数据,向输出设备发送数据等操作,这些操作将不可避免地会使用到总线。尤其在实时环境下,当这些操作被要求在某个有限的时段内必须完成。这中情况下的的总线操作就遇到了如下的问题:
(1)多个占用总线的操作同时发生时,如果调配不当,常常会发生总线冲突,如何避免总线冲突?
(2)当一个操作占用总线时间过长,其操作的总线请求得不到响应,往往导致总线死锁情况的发生,应采用什么措施来解决总线死锁问题?
(3)当某个紧急情况发生,需要立刻占用总线,但当前的操作还未释放总线,如何使这个紧急的操作在最短时间内获得总线的控制权?
上述问题在系统板上运行时的具体表现就是程序运行的不稳定,时常意外死机。要解决以上问题,就必须在系统中建立一个可靠的总线仲裁机制,合理的调度各种总线操作,使其不发生冲突,快速、正确的完成各自的工作。接下来就对多处理器系统中总线仲裁机制进行一下分析。
3.2多处理器总线仲裁机制的分析
总线仲裁机制通常包括总线仲裁策略和总线仲裁方式两方面内容。仲裁机制的合理、灵活和快捷,以及可实现性和可扩展性是评价一个总线仲裁机制的准则。
多处理器系统中总线仲裁方式通常有集中式仲裁和分布式仲裁两种方式。所谓集中式仲裁,是指总线仲裁部件的功能由一个独立于各个模块的附加部件集中完成,而如果总线仲裁功能由不断改变的的总线当前控制者来完成和需要各个模块共同完成,则称之为分布式仲裁。
集中式仲裁方式结构如图2所示
每个模块都有独立的请求线和识别线与公共的仲裁部件连接。仲裁部件根据相应的总线仲裁策略来选定下一个总线控制者。集中式仲裁的优点在于,这种仲裁方式电路实现较为简单,仲裁器件延时小,具有高速的特点。但是由于整个结构中只采用一个仲裁部件,集中式仲裁方式容错能力较差,一旦仲裁部件发生故障,整个总线仲裁模块将不能工作,而且一旦设计完成,它将不能再添加新的总线申请者,可扩展能力差,而这两点正是系统性能的瓶颈。
分布式仲裁方式结构如图3所示,每个模块都具有一相对独立的仲裁部件,但每个模块的仲裁部件只输出识别线送本模块。所有仲裁部件电路基本相同,分布式仲裁方式所需电路比集中式仲裁方式要较为复杂,而且仲裁速度没有集中式仲裁速度快,但它具有下列明显的优点:
(1)只需要较少的物理连线来执行仲裁算法。
(2)当其中一个仲裁部件发生故障时,不影响其他仲裁部件的工作,增加了系统的可靠性。
(3)仲裁器的状态可以在总线上监视到,这将有助于系统故障的诊断。
总线仲裁策略中,最常用的是基于基于优先权的仲裁策略。所谓基于优先权的策略是指系统给每一个总线申请者指定一个优先级编号,当多个总线申请同时发生时,总线仲裁逻辑 将按照总线申请者优先级编号来分配总线的使用权。实际中常用的有固定优先级策略和循环优先级策略。
固定优先级策略是将多个仲裁申请者的优先级按一定顺序固定下来,总线仲裁逻辑按照该这个固定的优先级顺序来分配某一时刻的总线使用权。这种策略适合于多个处理器任务的复杂度和重要度不同,需要保证有重要任务的处理器优先占用总线的情况。循环优先级策略是指当占有总线的模块一旦释放总线,其优先级将自动变为最低,而优先级紧排其后的总线申请者将获取总线控制权,并且它们的优先级依次上升,在长时间段中,这样可以保证多个总线申请者的对总线申请的公平性。这种策略适用于多个处理器的工作任务相同,任务的重要程度也相似的情况。这两种仲裁策略都会遇到如下的问题:
(1)当高优先级的处理器占用总线时间过长导致总线无法释放时,其他优先级低的处理器将无法获得总线控制权。
(2)当优先级低的处理器出现紧急情况需要进行总线操作时,将无法及时占用总线。
3.3针对本系统的总线仲裁机制的解决方案
对于本文的多DSP并行处理系统(见图1),由于DSP中内置有独立的仲裁逻辑部件,再加上系统上各个功能模块都通过总线相连接,因此在总线操作上非常适合采用上面提到的分布式仲裁方式,而且电路实现上也较为简便,几乎不需要增加额外的器件。
在仲裁策略的选择上,由于系统在工作时,必须指定一片处理器作为主处理器,由它来完成系统初始化,数据向从片分发与回收,与外部主机,设备通信等繁杂的任务,所以需要它在总线操作上优先级始终保持最高。而其它从处理器由于任务基本相同,且相对单一,所以从处理器的优先级可以被设定为比主处理器较低一级,并采用循环优先级策略,以保证其总线申请的公平性。这样就构成了基于分布式并行仲裁方式下的优先级分层仲裁策略,优先级层可以根据具体的任务的重要程度分为多个层次。如图4所示:
解决总线长时间占用导致总线死锁的问题,可以采用设置总线占用时限的方式来解决。当某一处理器(包括主处理器在内)如果占用总线时间过长,而其它处理器又发出了总线请求,此时总线仲裁逻辑将读取此时总线占用的时间,如果超过设定的时限,则将总线控制权自动从当前占用总线的处理器移交给其它申请总线的处理器中优先级最高的那片。从而避免了总线死锁的问题。
解决低优先级处理器紧急请求占用总线的问题,可以通过处理器的中断广播来方式来实现。在当某一优先级低的处理器,如某一从片需要紧急占用总线,那么它向其他所有处理器发出占用总线的中断请求,当其他从片收到该中断请求后,将开始检查自己是否占用总线,如果没有占用总线,则继续执行自己的任务,如果占用总线,则将总线控制权移交给提出申请的从处理器。当该从片完成自己的紧急任务后,将再次发出一个中断信号,并将总线控制权归还给原来的控制总线的处理器,重新获得总线控制权的处理器将继续执行原来未完成的任务。
这样,上节所提到的两个问题都得到了解决,满足了实时环境下共享总线的多DSP系统的总线仲裁要求,并保证了总线仲裁的性能和可靠性。
4、具体设计实现
本文中的多DSP分布式实时并行处理系统采用AD公司的ADSP21160芯片作为其中心处理模块。该芯片性能描述如下:
主频: 100M Hz 双运算单元。
数据总线64位,地址总线32位。(包括内部总线和外部总线)
内置双端口SRAM,存储空间4Mbit,分为两个内存模块。
外部端口包括2个串口,6个链路口,64位宽的外部口,一共14个DMA通道。
三套内部总线(PM DM总线和I/O总线)
最多支持6片处理器直接通过总线紧耦合互联,由于其自身提供了较为必要的仲裁逻辑电路,所以几乎不需要外加仲裁电路,这为设计带来了很大的便利。
4.1 系统总线仲裁设计中的硬件部分
多DSP总线连接结构如图6所示:
为保证低优先级的处理器发出紧急总线请求时,可以及时得到响应,这里通过中断的方式来响应该请求,当前控制总线的处理器一旦接到该中断请求时,将转入预先设计的中断服务子程序中,中断子程序完成的工作有:保护好当前的工作状态,交出总线控制权,等待紧急总线操作的结束,重新获取总线控制权,恢复原来的工作状态。这里要指出的是,必须将工作状态保存完好,并在操作结束后正确的恢复回去,否则将会引起总线仲裁的混乱,导致系统死机。
下面通过一个实际的多DSP共享总线操作例子来描述软件工作的具体流程:
在本例中,主片将数据分为n份,除自己保留一份外,将其余n-1份分发给从片,然后开始进行相应的算法处理,在处理完成后,从片将同时向主片回写数据,由于程序运行过程有严格的时间限制,所以要求数据能被快速正确的传送,并且不能发生总线冲突。程序流程如下:
采用基于分布式并行的优先级分层仲裁机制,可以满足在实时环境中多DSP共享总线结构的并行处理系统的总线仲裁要求,保证了系统总线仲裁的可靠性。
由于系统的各个DSP的总线仲裁器独立同构,即使某个处理器的总裁模块发生故障,通过适当的软件设置,将不会影响其他模块的仲裁工作,同时能满足系统正常工作状态和带故障工作状态下的不同要求,提高了整个系统的可靠性。
上面的硬件、软件设计方案和流程具有通用性,对于其他共享总线的多处理器系统也基本适用,但具体的实现方案需要参考不同芯片自身的设计手册来进行设计实现。
目前,DSP(数字信号处理器)在信号处理领域,尤其是在雷达信号和图象信号处理方面正在被广泛的使用,许多信号处理板都采用DSP为核心处理芯片,然而,随着对于信号处理板的处理能力要求越来越高,例如,对于高帧数、大尺寸的图象序列的实时处理,往往要求每秒几十亿次的运算能力,目前单片DSP的运算能力不可能满足其要求,通常需要信号处理板在设计时采用多DSP并行处理结构,以满足系统对运算量的要求。在这种多DSP并行处理结构下,多个DSP之间通常通过共享总线来实现相互间或和外部设备的数据和控制/状态字传递,这时,系统需要建立一种总线仲裁机制,来保证多个DSP在使用总线时不会发生冲突和竞争,尤其是在实时处理环境下,更有必要保证总线控制权在各个DSP之间可靠的转移,为处理器间实时数据交换提供保证。如果数据传输一旦发生故障,将会导致系统运行迟滞或瘫痪。因此,总线仲裁机制设计的合理与否,会直接影响到系统运行效率和可靠性。所以在系统设计中,要充分考虑到总线操作问题,这是一个十分重要的环节。
2、多DSP并行处理系统结构介绍
系统结构如图1所示:
该系统是一种分布式多指令,多数据(MIMD)处理系统。其中功能模块包括:多个DSP构成的处理器模块、共享存储器模块、输入/输出设备、主机。这些模块都通过共享总线相连接。其中每个DSP中又包括运算单元、片内存储器、片内输入/输出单元、仲裁逻辑单元以及总线接口。由于每个DSP中有容量较大的局部存储器,所以各DSP的指令和数据基本上从各自的局部存储器里存取,这样就会大大减轻共享总线的负荷。
系统工作的方式为主从协同方式,即系统启动后,主处理器优先权最大,由它控制总线,负责整个系统的初始化、数据程序配置、与主机通信等,并参与运算工作。各个从片的优先权要比主片小,通常只参与运算工作。
如果在将DSP之间通过其他外部端口如链路口相互链接,那么将使整个系统体现出一种柔性结构,即处理系统结构和工作方式可以通过软件设置来实现变更而无需更改硬件设计。
例如,通过软件设置,可以定义各个DSP间相互工作协调方式,如并行与串行的转换;可以方便的分配各个DSP的工作量,并可以实现主从处理器间的调换,根据需要将从处理器升级为主处理器,负责整个系统的调配。在系统侦测到某个DSP发生故障时,可以通过软件设置,隔离有故障的处理器,从而实现系统的带故障运行,提高了整个系统的可靠性。这些操作都将涉及到对系统共享总线的操作,其中会遇到的问题将在下面进行描述。
3、总线操作问题的分析和解决思路
3.1总线操作问题的描述
在上面图1所示的系统中,多片DSP工作时,通常需要进行处理器间数据,状态/控制字的相互传递,以及和主机交换数据,向共享存储器存取数据,从输入设备输入数据,向输出设备发送数据等操作,这些操作将不可避免地会使用到总线。尤其在实时环境下,当这些操作被要求在某个有限的时段内必须完成。这中情况下的的总线操作就遇到了如下的问题:
(1)多个占用总线的操作同时发生时,如果调配不当,常常会发生总线冲突,如何避免总线冲突?
(2)当一个操作占用总线时间过长,其操作的总线请求得不到响应,往往导致总线死锁情况的发生,应采用什么措施来解决总线死锁问题?
(3)当某个紧急情况发生,需要立刻占用总线,但当前的操作还未释放总线,如何使这个紧急的操作在最短时间内获得总线的控制权?
上述问题在系统板上运行时的具体表现就是程序运行的不稳定,时常意外死机。要解决以上问题,就必须在系统中建立一个可靠的总线仲裁机制,合理的调度各种总线操作,使其不发生冲突,快速、正确的完成各自的工作。接下来就对多处理器系统中总线仲裁机制进行一下分析。
3.2多处理器总线仲裁机制的分析
总线仲裁机制通常包括总线仲裁策略和总线仲裁方式两方面内容。仲裁机制的合理、灵活和快捷,以及可实现性和可扩展性是评价一个总线仲裁机制的准则。
多处理器系统中总线仲裁方式通常有集中式仲裁和分布式仲裁两种方式。所谓集中式仲裁,是指总线仲裁部件的功能由一个独立于各个模块的附加部件集中完成,而如果总线仲裁功能由不断改变的的总线当前控制者来完成和需要各个模块共同完成,则称之为分布式仲裁。
集中式仲裁方式结构如图2所示
每个模块都有独立的请求线和识别线与公共的仲裁部件连接。仲裁部件根据相应的总线仲裁策略来选定下一个总线控制者。集中式仲裁的优点在于,这种仲裁方式电路实现较为简单,仲裁器件延时小,具有高速的特点。但是由于整个结构中只采用一个仲裁部件,集中式仲裁方式容错能力较差,一旦仲裁部件发生故障,整个总线仲裁模块将不能工作,而且一旦设计完成,它将不能再添加新的总线申请者,可扩展能力差,而这两点正是系统性能的瓶颈。
分布式仲裁方式结构如图3所示,每个模块都具有一相对独立的仲裁部件,但每个模块的仲裁部件只输出识别线送本模块。所有仲裁部件电路基本相同,分布式仲裁方式所需电路比集中式仲裁方式要较为复杂,而且仲裁速度没有集中式仲裁速度快,但它具有下列明显的优点:
(1)只需要较少的物理连线来执行仲裁算法。
(2)当其中一个仲裁部件发生故障时,不影响其他仲裁部件的工作,增加了系统的可靠性。
(3)仲裁器的状态可以在总线上监视到,这将有助于系统故障的诊断。
总线仲裁策略中,最常用的是基于基于优先权的仲裁策略。所谓基于优先权的策略是指系统给每一个总线申请者指定一个优先级编号,当多个总线申请同时发生时,总线仲裁逻辑 将按照总线申请者优先级编号来分配总线的使用权。实际中常用的有固定优先级策略和循环优先级策略。
固定优先级策略是将多个仲裁申请者的优先级按一定顺序固定下来,总线仲裁逻辑按照该这个固定的优先级顺序来分配某一时刻的总线使用权。这种策略适合于多个处理器任务的复杂度和重要度不同,需要保证有重要任务的处理器优先占用总线的情况。循环优先级策略是指当占有总线的模块一旦释放总线,其优先级将自动变为最低,而优先级紧排其后的总线申请者将获取总线控制权,并且它们的优先级依次上升,在长时间段中,这样可以保证多个总线申请者的对总线申请的公平性。这种策略适用于多个处理器的工作任务相同,任务的重要程度也相似的情况。这两种仲裁策略都会遇到如下的问题:
(1)当高优先级的处理器占用总线时间过长导致总线无法释放时,其他优先级低的处理器将无法获得总线控制权。
(2)当优先级低的处理器出现紧急情况需要进行总线操作时,将无法及时占用总线。
3.3针对本系统的总线仲裁机制的解决方案
对于本文的多DSP并行处理系统(见图1),由于DSP中内置有独立的仲裁逻辑部件,再加上系统上各个功能模块都通过总线相连接,因此在总线操作上非常适合采用上面提到的分布式仲裁方式,而且电路实现上也较为简便,几乎不需要增加额外的器件。
在仲裁策略的选择上,由于系统在工作时,必须指定一片处理器作为主处理器,由它来完成系统初始化,数据向从片分发与回收,与外部主机,设备通信等繁杂的任务,所以需要它在总线操作上优先级始终保持最高。而其它从处理器由于任务基本相同,且相对单一,所以从处理器的优先级可以被设定为比主处理器较低一级,并采用循环优先级策略,以保证其总线申请的公平性。这样就构成了基于分布式并行仲裁方式下的优先级分层仲裁策略,优先级层可以根据具体的任务的重要程度分为多个层次。如图4所示:
解决总线长时间占用导致总线死锁的问题,可以采用设置总线占用时限的方式来解决。当某一处理器(包括主处理器在内)如果占用总线时间过长,而其它处理器又发出了总线请求,此时总线仲裁逻辑将读取此时总线占用的时间,如果超过设定的时限,则将总线控制权自动从当前占用总线的处理器移交给其它申请总线的处理器中优先级最高的那片。从而避免了总线死锁的问题。
解决低优先级处理器紧急请求占用总线的问题,可以通过处理器的中断广播来方式来实现。在当某一优先级低的处理器,如某一从片需要紧急占用总线,那么它向其他所有处理器发出占用总线的中断请求,当其他从片收到该中断请求后,将开始检查自己是否占用总线,如果没有占用总线,则继续执行自己的任务,如果占用总线,则将总线控制权移交给提出申请的从处理器。当该从片完成自己的紧急任务后,将再次发出一个中断信号,并将总线控制权归还给原来的控制总线的处理器,重新获得总线控制权的处理器将继续执行原来未完成的任务。
这样,上节所提到的两个问题都得到了解决,满足了实时环境下共享总线的多DSP系统的总线仲裁要求,并保证了总线仲裁的性能和可靠性。
4、具体设计实现
本文中的多DSP分布式实时并行处理系统采用AD公司的ADSP21160芯片作为其中心处理模块。该芯片性能描述如下:
主频: 100M Hz 双运算单元。
数据总线64位,地址总线32位。(包括内部总线和外部总线)
内置双端口SRAM,存储空间4Mbit,分为两个内存模块。
外部端口包括2个串口,6个链路口,64位宽的外部口,一共14个DMA通道。
三套内部总线(PM DM总线和I/O总线)
最多支持6片处理器直接通过总线紧耦合互联,由于其自身提供了较为必要的仲裁逻辑电路,所以几乎不需要外加仲裁电路,这为设计带来了很大的便利。
4.1 系统总线仲裁设计中的硬件部分
多DSP总线连接结构如图6所示:
为保证低优先级的处理器发出紧急总线请求时,可以及时得到响应,这里通过中断的方式来响应该请求,当前控制总线的处理器一旦接到该中断请求时,将转入预先设计的中断服务子程序中,中断子程序完成的工作有:保护好当前的工作状态,交出总线控制权,等待紧急总线操作的结束,重新获取总线控制权,恢复原来的工作状态。这里要指出的是,必须将工作状态保存完好,并在操作结束后正确的恢复回去,否则将会引起总线仲裁的混乱,导致系统死机。
下面通过一个实际的多DSP共享总线操作例子来描述软件工作的具体流程:
在本例中,主片将数据分为n份,除自己保留一份外,将其余n-1份分发给从片,然后开始进行相应的算法处理,在处理完成后,从片将同时向主片回写数据,由于程序运行过程有严格的时间限制,所以要求数据能被快速正确的传送,并且不能发生总线冲突。程序流程如下:
采用基于分布式并行的优先级分层仲裁机制,可以满足在实时环境中多DSP共享总线结构的并行处理系统的总线仲裁要求,保证了系统总线仲裁的可靠性。
由于系统的各个DSP的总线仲裁器独立同构,即使某个处理器的总裁模块发生故障,通过适当的软件设置,将不会影响其他模块的仲裁工作,同时能满足系统正常工作状态和带故障工作状态下的不同要求,提高了整个系统的可靠性。
上面的硬件、软件设计方案和流程具有通用性,对于其他共享总线的多处理器系统也基本适用,但具体的实现方案需要参考不同芯片自身的设计手册来进行设计实现。
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)