作为IBM RISC架构的一种,POWER架构也被公认为第二代精简指令集计算机的代表。
Power架构简介POWER是Power Optimization With Enhanced RISC的首字母缩写。作为IBM RISC架构的一种,POWER架构也被公认为第二代精简指令集计算机的代表。POWER系列微处理器在许多IBM服务器、超级电脑、小型电脑及工作站中被广泛选为主处理器使用。为了市场发展的需求,IBM公司联合Apple和Motorola两大巨头合力研发了基于POWER架构的新一代的PowerPC构架。PowerPC在低功耗和处理性能上都非常出色,同时它又具有与POWER架构软件完全兼容等特点,在嵌入式系统领域和IBM的超级计算机中都被广泛使用。 POWER 架构的历史和发展
POWER架构首次大批量出现于1990年,IBM公司为满足客户对工作站以及可以支持UNIX操作系统的中型系统的需求发布了RS/6000系列产品(现称eServer™ pSeries®)),这一系列产品主要由POWER架构实现。从第一代POWER构架至今,POWER已发布了5代:POWER1,POWER2,POWER3和目前具有单芯片巅峰性能的POWER4以及具有支持多芯片系统特点的POWER5系列。
POWER1:发布于1990年, 800,000门/芯片。与一般RISC芯片不同的是,POWER1是划分功能的,具有支持指令平行和浮点操作。最早的POWER1构架在一块主板上集成多块处理器芯片,然后发展到RSC(RISC Single Chip)集成成一块具有100万门以上的处理器芯片。POWER1是火星探险计划(Mars Pathfinder Mission)的核心处理器,同时也是PowerPC的前身。
POWER2:发布于1993年,使用至1998年, 15,000,000门/芯片。这系列POWER机构中添加了第二组浮点运算单元和更多的高速缓存(cache)。正是由8块这款处理器组成的超芯片PSSC为32个节点的超级计算机IBM DEEP BLUE®提供了强大的运算和处理能力,在1997年的人机大战中击败了国际象棋世界冠军Garry Kasparov。POWER3:发布于1998年,15,000,000门/芯片。第一代64位对称多处理器(SMP)。其指令集于所有的POWER构架指令集均兼容。主要应用于科学和工程计算,例如空间科学计算、灾害性天气预报等。在架构上,POWER3提供了一个数据预取引擎,非阻塞的交叉存取数据高速缓存和两个浮点执行单元。POWER3-II使用了铜互连工艺,在价格不变的情况下将性能提高了一倍。POWER4: 发布于2001年,174,000,000门/芯片。每秒运算次数达十亿次,采用180纳米铜互连和SOI(Silicon-on-Insulator)工艺。POWER4是目前市场上最强大的单处理器芯片。在构架方面,每个处理器有2个64位1GHz+的PowerPC核,是第一个支持服务器处理的单穴多核设计芯片。每个处理器可以同时处理200条指令;同时POWER4与所有前代的POWER系列芯片兼容。
POWER5:发布于2004年10月。统一了POWER和PowerPC构架。 主要的特点在于对通信加速,多进程芯片处理和同步多线程(SMT)的支持。IBM内部测试表明基于POWER5的eServer系统性能比基于第一代POWER4服务器性能优越4倍。
POWER 架构总揽
POWER架构具有大部分RISC架构所具有的特点:统一定长的指令集(4字节),可使用简单的机制解码;所有存储器访问操作由load和store两条指令完成;提供一组支持定点运算和存储器方存地址运算的通用寄存器(GPRs);一组单独的支持浮点运算的浮点寄存器(FPRs);所有运算的原操作数和运算结果都取自同一组寄存器,即定点运算结果存放于定点寄存器中、浮点运算结果放于浮点寄存器中;绝大多数指令都只完成一种简单的操作。
然而,POWER架构又是目前一种非常特别的RISC处理器架构。POWER架构基于功能划分(functionally partitioned),将程序流控制、定点运算和浮点运算分开。这种功能分开的架构为实现超标量设计提供了可能,因为在超标量设计中各功能部件将同时执行若干条相互独立的指令,这样定点运算和浮点运算就可以分开并行执行。
POWER架构在某种意义上脱离了传统RISC架构特点。传统RISC设计的主要目标是使硬件的实现足够简单从而使主频大大提高;而POWER架构的设计者的目标是尽力缩短完成一个任务所需的总时间。完成任务的总时间定义为3个值的积,它们分别是:路径总长度,完成一条指令的周期数和每个周期所需的时间。经分析,在大多数程序中,load和store指令占20%~30%,而且许多程序的对数组进行操作,其地址具有很强的相关性。基于这些程序固有的特点,POWER的设计者改变了大部分的load和store指令,使得load和store的操作不仅对存储器进行读写而且会将更新后的访存地址记录在基址寄存器(base address register)中,这样就可以减少相关地址访存时额外的计算工作,这样就缩短了访存的整体延时。另外,发现大量浮点数运算是基于乘加操作的,因此增加单独的指令来独立完成这个操作而不是使用一组指令组合的方式,从而大大提高了浮点运算的整体速度。
基于市场角度的考虑使PowerPC登上舞台
从技术角度看,速度和功耗是衡量处理器优劣的最关键的因素;然而从市场角度而言,用户关心的不仅仅是性能,用户购买一个系统目的是为了提高员工的生产效率和减少生产或商业成本。为了满足这些要求,处理器生产商需要提供可以完成各种任务的系统架构和应用软件,这样用户可以根据其对性能、价格、雇员技能、应用程序正和要求以及其他需求来选择不同的系统架构。
上世纪90年代初期,市场上有5种RISC架构的处理器,但似乎不是每一种处理器都能在工作站市场获得成功。如果应用程序的市场被这5种不同的处理器平分,那么软件开发商们将不会再对新的程序研发投入大量的热情,应为每一种处理器所占的份额都太小了。另一方面,人们越来越发现多处理器系统优越的性价比使其越来越有竞争力而且多处理器系统最终的处理性能也比单芯片系统更好。基于这样的市场判断,在1991年,Apple,Motorola和IBM三家公司的处理器构架工程师、编译器专家、操作系统开发人员、处理器设计者和系统构架设计者聚集在一起合作成立了研发小组,致力于研发一款基于POWER架构的新的通用芯片架构。
PowerPC 架构
热烈欢迎PowerPC的登场。
由于商业产品开发时间的紧迫性,联合研发小组决定在POWER构架的基础上来设计新的系统。在对应用程序和操作系统进行了需求分析、考虑了经典指令的混合使用并多应用程序及操作系统的功能进行跟踪后,设计人员对新构架的设计达成共识,新构架必须具有以下这些特点:
¨ 具有较广泛的应用领域,可以应用于底端控制器,也可作为高性能处理器。
¨ 硬件设计足够简单使处理器可以运行在较高的主频下。
¨ 减少超标量应用实现的难度。
¨ 具有多处理器的特点。
¨ 定义成为一个32位架构的超集--64位架构系统,同时必须可兼容32位程序。
由此诞生的PowerPC架构相比于POWER架构有了许多的改进点:
PowerPC的架构包括了大部分的POWER指令,几乎所有未被采用的POWER中的指令都是使用频率较低且可以通过编译器由其他指令来替代。具有PowerPC中未被采用的指令的程序在PowerPC架构上执行的时候,那些未采用的指令会触发非法指令类型的程序中断。除了删除了POWER中的一些指令之外,PowerPC移出或放松了一些不重要的限制,添加新的指令和特性来完善其架构。
构架设计组发现POWER的架构限制太严格,不够精简。例如:POWER含有一个MQ寄存器,这个寄存器是隐式使用的且在构架中只有一套,这样就对超标量的实现带来了困难。在实现超标量运算时,MQ寄存器会对指令进行重分配,它识别所有使用MQ寄存器的指令,然后使用特殊的机制来实现重命名。PowerPC架构删除了MQ寄存器,同时又可删除15条相关的精度扩展移位指令,2条除法指令和1条扩展精度的乘法指令。又如:一些POWER构架的指令会使将来的处理器设计变得更加复杂:有3条POWER定点旋转插入指令要求3个源操作数,每增加一个源操作数将要求另外增加一个寄存器组的端口,同时大大提高超标量设计时重命名的复杂度;有2条计算绝对值的指令,在数学计算后和写回寄存器组前需要经过一组选择逻辑,选择逻辑的存在延长了指令完成的周期数,PowerPC的构架中都删除了这些不经济的指令,还包括POWER架构中最复杂的load字符串和字比较指令等。
PowerPC对存储器管理的机制允许其删除POWER架构中的以写关于高速缓存处理的指令。同时对于数据库加锁和追踪指令也被删除了,因为这些指令使存储器管理的复杂度急剧地增加而其却不能提供大部分应用程序所需的保护粒度。
2.PowerPC架构更加灵活。
PowerPC相比POWER架构减少了许多相关的限制。例如:在许多POWER指令中有一个Rc位,这一位控制条件寄存器是否记录这次操作的结果,当Rc值为1时,指令忽略条件寄存器记录的结构同时指令也可以正确执行(如load和store指令)。在PowerPC构架中,将这些会产生无定义状态寄存器值的指令定义为无效形式指令,所有这样的指令对状态寄存器值的改变都是无定义的,这样就省去了对Rc这一位必须设置的限制。
3.PowerPC时序定义更合理
POWER构架很难产生非整数倍于系统时钟的时序信号。PowerPC允许更灵活的时序设置,针对不同的应用,PowerPC应用程序可以通过系统调用设置一个合理的时序使得整个系统可以运行在一个更合理的功耗和性能的状态下。
正是这些在硬件和软件方面的改变使得PowerPC架构比POWER架构更加灵活,从而使得相关应用变得不再复杂而且更加高效,尤其是在超标量的应用方面。那些需要低成本的具有良好的单精度浮点操作的处理器以及运用于对称对处理系统的处理器都可以采用PowerPC来架构。
PowerPC架构整体描述
让我们对PowerPC有一个完整的了解。
PowerPC架构增加了一组完整的单精度浮点运算指令和2条将浮点数转换为整型数的指令。由于大部分指令提供了由单精度浮点数实现双精度运算的版本,增加新指令对硬件的复杂度的要求就降低了。PowerPC构架还添加了定点除法和乘法指令来支持普通的和扩展精度的计算,再加上两条减法指令—进位减法和位扩展减法,组成了完整的PowerPC定点运算集。
除了指令集上的改变之外,PowerPC最大的变化在于存储器模型和存储管理的定义的改变。在Power架构中,处理器不保持I/O访问和指令预取数据的一致性,需要通过软件来实现这几步中数据的一致性。在将存储器中的一段内容拷贝到磁盘上之前,软件必须保证任何存储器位置上的内容如果在高速缓存中有修改过的拷贝必须将修改的内容写回到主存中;在读磁盘之前,软件还要保证数据高速缓存中不含有存储器任何部分的拷贝同时在重新执行一段程序之前要使指令高速缓存中的内容失效。POWER系列处理器总是通过高速缓存来访问主存,唯一不通过高速缓存的访存是对标记为“T=1 space”的那段独立空间的访问,这段空间主要被可变程的I/O接口访问。PowerPC的构架在存储器模型上提供了更大的灵活性。每个虚存页带有相关的属性使得软件可以依照这些属性来控制系统对存储器访问的模式。这个模型允许对存储器进行任意地访问除非该虚存页的属性表明这个页包含I/O或者具有挥发特性。其他属性还包括这个虚存页时可以缓存的,还是必须缓存的或者必须以写直达的方式进行缓存,这样I/O口就可以影射到主存空间。这些特性还包括由处理器增强支持的数据存储一致性从而减轻了软件对数据一致性保证的负担。与POWER架构一样的是PowerPC仍然通过软件来实现指令存储空间和数据存储空间的一致性。任何修改和产生指令的程序必须保证高速缓存中包含这些新指令的拷贝必须与相应主存空间中一致才可以执行这些指令。由于PowerPC架构删除了Power架构中对高速缓存处理的指令,对指令空间一致性的维护要交由软件来实现,构架工程师们另外新添了5条高速缓存处理指令来提高存取器的工作性能。
在支持多线程和多处理器方面,Power架构没有提供对存储器的原子操作,而PowerPC添加了2条新的指令来实现对存储器某个位置的读和修改的操作,而这两个操作被封装成一个原子操作。一个load字并储备的指令(lwarx)先将目标存储器中的内容拷贝到一个寄存器中,这个内容可以做为一个锁变量,然后处理器再在目标存储器的相应位置上创建一个保留位。当条件store字指令被执行时,处理器尝试着去储存这个字,如果这个锁变量在存入寄存器后未被改变则将这个变量写回存储器;否则则不执行store的操作。所有这些操作的状态都会被记录,软件可以通过记录的结果来重复地执行未被执行的指令。
这些新指令的定义并不影响PowerPC对POWER架构软件的兼容性。构架工程师定义PowerPC以字对齐的方式进行访问,如果一条指令对非对齐的地址进行访问,这种访问将没有意义,这样的硬件实现方式比较简单,可以避免硬件多程序错误的检查。
另外,PowerPC架构支持大数端和小数端两种存储器访问模式,使用哪一种模式可以通过软件进行配置,因此PowerPC可以支持执行各种数端的应用程序。