您的位置:控制工程论坛网论坛 » 嵌入式系统 » 多重处理的设计选择:多处理器或多线程技术

马军成

马军成   |   当前状态:在线

总积分:13914  2024年可用积分:0

注册时间: 2006-12-01

最后登录时间: 2022-06-28

空间 发短消息加为好友

多重处理的设计选择:多处理器或多线程技术

马军成  发表于 2006/12/20 9:14:27      1127 查看 0 回复  [上一主题]  [下一主题]

手机阅读

多重处理的设计选择:多处理器或多线程技术

The Design Dilemma: Multiprocessing Using Multiprocessors and Multithreading

在最近的十年中,PC处理器设计的主要目的是提高处理器的速度。处理器生产厂商Intel和AMD都在致力于尽早设计完成并推出主频更快的处理器芯片。AMD首先发布了世界上第一款主频超过1GHz的处理器芯片。在那段时间内处理器厂商逐渐了解到,为了获得更高的处理器主频,硬件复杂性将会大大增加。同时,他们也意识到单纯靠提高主频的方法来获得高性能是不够的,必须寻求其它的发展途径。除了继续提高处理器效率之外,依靠线程级别的并行机制提高整体性能的方法将处理器设计引向了多处理器(MP)技术与多线程(MT)技术。
 近来,这种向多重处理发展的趋势已经影响到了从PC到嵌入式设计中的许多软件代码。通过在设计中使用多个处理器,嵌入式设计者可以使系统在有限的功耗预算之内更好的满足计算性能上的需求,多年以来嵌入式设计者一直把握着这种设计复杂度和性能优势之间的平衡。现今,影响嵌入式市场的一个重要因素是,开发应用软件同样需要了解使用多重处理技术的通用处理器架构,这样才能使处理器实现更高的性能和更低的功耗。虽然MP和MT都对软件开发者提出了多重处理的复杂性问题,但对于不同的软件来说,MP和MT在成本与复杂性方面有所不同。
 处理器技术的飞速发展给半导体设计者带来很大的压力。PC中处理器的主频相对于1年前只有100MHz的提高,这严重限制了处理性能的进一步提升。为了持续的提高处理器性能,半导体设计者必须了解处理器的体系结构,以满足用户需求的灵活性与可扩展性。处理器体系结构任何基本的改进都会影响软件技术,而且在短时间内,在当前基础上,体系结构也不可能有根本性的改变。从计算机的发展史来看,即使那些有明显计算优势的结构,因为在软件上有所限制,或是对软件依赖过于严重,因此都不会被大范围采用。任何在微处理器体系结构上向多重处理进行的转化都必须考虑到以上的情况,因此在当前软件设计的基础上,衡量多重处理与成本和不同工艺设计复杂性之间的关系,找到正确的途径,将多重处理从理论变成现实是非常必要的。

图 1 ARM11  MPCore中的功耗管理技术

此外,这种向多重处理进行的演变影响到很多嵌入式设备,在他们的应用软件或操作系统中已经出现了多重处理并发机制。这种软件并发性设计不可避免地促进了MP、MT(或者两者兼顾)硬件体系结构的发展,以提升下一代嵌入式设备的性能和效率,然而这也降低了软件的可移植性,增加了软件投资。
多处理器与多线程
MP与MT均致力于提高处理器的整体性能,两者都可以减少任何应用当前软件线程的处理时间。但这两种技术采用了不同的硬件结构来减少处理时间,因此,对于任意的特定软件代码来说,MP与MT对处理器性能的提高程度是不同的。
很多人认为MP与MT是两种可以相互比较的技术,为了实现硬件多重处理,两者对于软件复杂度的要求是一致的。这种理解无疑是错误的,通过分析通用多重处理程序接口,就能发现MP与MT在实现途径上的不同之处。因此,软件开发者首先必须清楚自己的多重处理是基于MT还是MP,或是两者的结合。
MT技术的主要工作原理是:在单处理器设计中,当工作于较高频率的处理器访问低速存储器时,系统效率会非常低,MT技术能够将这段时间加以利用,以增强处理器的整体性能。但是,MT技术带来的效果并不明显。MT技术本质上是在一个单处理器上复制尽可能少的处理逻辑,用以支持附加的硬件线程。比如,增加管理模式下的寄存器组,使操作系统可以将硬件线程当作一个虚拟处理器。这种复用其它处理器逻辑的方法增加了软件的复杂性。假设在一个单处理器系统中,有两个由操作系统管理的应用,操作系统将处理器资源分配给这两个应用,通常这两个任务每秒将进行10到100次的切换来轮流执行,这被称为上下文切换(context switch)。同时,当前正在执行的应用中包含了大量存储在寄存器或存储器中的执行状态,也需要根据应用来不断切换。在MT系统中,如果进程由于系统存储器的响应时间过长而停止,将会进行硬件线程的切换,这样的上下文切换在一秒钟之内可能会发生数百次、甚至上千次。
由于切换次数大幅增长,在操作系统和MT硬件之间需要进行详细的设计协调,以保证有足够的备份硬件使执行状态的保存和重载不会成为处理器的主要资源开销。当MT处理器使用缓存时,由于系统成本很高,因此系统往往很少将缓存资源为每个硬件线程都复制一份。这意味着,软件编程人员需要非常清楚频繁的上下文切换对于使用缓存的应用所产生的影响。在只有两个独立应用程序的系统中,使用MT技术处理两个应用与在单处理器系统中由操作系统通过时间片(time slice)来分配两个应用相比较,前者的处理速度要低于后者。为了发挥MT的优势,软件编程人员必须非常小心地处理软件线程,使缓存中的执行状态可以被多个线程共享。
MT的软件复杂性需要编程人员考虑各个线程对处理器共享资源产生的影响,同时,编程人员还需要考虑很多硬件设计上的要点。增加硬件线程会提高处理器的复杂度,对系统能够达到的最高运行频率产生影响,但不会从根本上改变处理器的微体系结构。复杂性的提高会导致系统整体功耗的增加,甚至在只运行一个应用或者线程的情况下,也会降低整体应用的性能。

图 2 MP与MT对二级存储器访问次数的影响

考虑到实现MT所需的成本以及其有限的性能提升,因此,当前越来越多的处理器生产厂家开始致力于双核或者多核处理器方案。
MP是一种通过复制大部分的处理器设计以从多任务软件执行中获得最高性能的技术。MP技术的一个目标是在不增加软件复杂性的情况下,管理共享的处理器资源。事实上,仍旧以上面提到的两个独立应用的情况为例,使用两个独立的处理器与使用一个具有2倍主频的单处理器相比,前者获得的性能是后者的两倍多。所有的操作系统上下文切换以及两个应用之间的缓存冲突都得到了解决,每一个应用都可以连续的、独立的全速运行。
由于MP技术会使硅片面积增大一倍,因此有人认为MT是一种更加有效的多重处理方式。但是,在使用最新的芯片制造工艺和缓存工作组的基础上,MP可以在相同的硅片面积上实现与MT相同的性能,而且不会造成任何MT技术下的软件问题。
多重处理的进一步考虑方向就是功耗问题。MT是一个更加复杂的单处理器,所有的功耗管理,如时钟门控、待机模式以及电压和频率缩放技术都受到单处理器技术的限制。然而在MP设计中,每一个处理器都可以使用单处理器技术,并能够在工作负荷很低的情况下,完全关闭不需要的处理器以节省功耗。这使得MP能够始终提供所需的性能、并且其功耗与工作负荷进接相关。ARM11 MPCore中的这一特性如图1所示。
从根本上来说,MT是一种当处理器主频与内存速度之间的差距不成比例地增加时,能够减少性能浪费的技术。在这种情况下,MT只是一种可以隐藏性能实际状况的权宜之计,其能力有限。某PC处理器设计者表示,不管有没有MT技术,处理器主频的提高都受到了功耗的严重制约。目前设计者面临的挑战是,与使用多处理器相比,当具有更高主频的单处理器需要对软件成本加以限制时,MT是否能提供足够的性能提升。
如果软件本身就有并行性,由于MP体系结构的可扩展性,一个更加有效的方法是直接将软件从单处理器移植到MP上。在MP设计中,已经考虑了处理器间通信的影响以及共享数据在分布式MP缓存间的定位,因此,在多处理器上执行多线程软件,几乎没有附加的软件成本。同样的,MP设计可以充分利用高效单处理器设计的优势,以获得比MT更高的性能和更低的功耗。比如,在系统中分别使用MT与MP技术扩展线程数量,它们对二级存储器访问次数的影响如图2所示,从图中可看出MP技术具有明显优势。

可扩展性设计
 MP技术本质上使用了分而治之的方法,即模块化的设计原则,单(或多)处理器由很多能够运行独立并行线程的处理单元组成。这样降低了整体设计的复杂性,与MT技术相比更加安全,系统设计者可以在需要的时候简单方便地添加处理器。由于设计简单,MP与MT相比更容易扩展。增加MT处理器主频的设计成本常常限制了它的可扩展性。
 另外一种方案是在一个设计中同时采用MP和MT,但这会极大地增加软件复杂性。在这种设计中需要运行独立的应用任务时,MT的软件管理和处理器公共资源的共享,与MP的最高效率之间会产生根本冲突。
 当嵌入式系统设计者评估高性能处理器的执行效率时,必须考虑到所有相关的成本问题,包括硬件体系结构和软件复杂性。ARM11的MPCore通过将多处理器设计成一个可配制的宏模块,进一步降低了成本,并可支持标准的操作系统。这些标准操作系统能够完全利用MP的优势,并且无需考虑数据私有性等复杂情况。
MT处理器的主要应用领域为数据吞吐,在这些应用中任何常见的不确定事件都可以被MT处理器控制,从而将所有共享资源的副作用降到最低。这些应用常常被分割开来,如通用一级缓存,会产生一个软件流水线,每个MT线程负责处理缓存中的一段数据。MT处理器引起上下文切换的规则与应用相关,当运行不同的应用时,有时需要修改操作系统的调度器,或者在更坏的情况下,需要对硬件进行重新设计。
结语
 通常,用户的需求决定了系统的设计方式,并且,由于客户对于性能的需求是持续增加的,因此设计者绝对不能忽视系统的可扩展性。当开发任何新的架构时,系统设计者必须仔细考虑系统将来的可扩展性。MP是一种可扩展的技术,对于软件开发人员来说,它可以被看作一个传统的单处理器,给设计者一定程度的灵活性。

 

1楼 0 0 回复