免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2629 | 回复: 5
打印 上一主题 下一主题

我也来转发个科普文章 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-08 10:12 |只看该作者 |倒序浏览
杨剑新 王 飙            
         

影响CPU性能的因素可以分为工艺因素和结构因素。半导体工艺水平决定了芯片的集成度和可达到的时钟频率,而CPU的微结构则决定了在相同集成度和时钟频率下CPU的执行效率。近来,芯片巨头们在继续挖掘传统RISC结构的指令级并行性的基础上,加大了对进程和线程级并行的开发,如CMP(Chip Multi-Processing)结构和SMT(Simultaneous Multi-Threading)结构,这些新型微处理器体系结构将使处理器性能迈向新的台阶。

工艺因素和结构因素是相互制约和影响的。工艺因素不但直接影响CPU的性能,同时也限制了微结构中一些技术的应用。而在相同的工艺水平下,采用合理的微结构,可以使CPU达到的时钟频率大幅度提升,也能更有效地利用芯片的面积。从微结构角度看,影响CPU性能的两个主要因素是单位时间执行指令的数目和访存带宽及延迟。单位时间内执行的指令越多,CPU的性能也就越高。那么,当今高性能CPU将采用什么样的微结构?其未来的发展趋势又是什么?

现有CPU的微结构

微结构中使用的“流水线”技术,原理很像生产流水线——将生产一个产品的过程分解为相对独立的多个阶段,每个阶段由专人负责。流水线技术的引入,使得CPU的IPC(每周期执行指令数)在峰值情况下可以达到1。但由于指令之间存在着资源冲突和相关性,不可能保证每一个周期都有一条指令进入流水线,所以实际的IPC肯定会小于1,对于某些指令相关性非常强的指令流,单单采用流水线技术仍然无法大幅提升CPU的性能。

为了提高CPU的峰值IPC,设计人员很自然地想到多设置几条并行的流水线,使得CPU在同一时钟周期内可以完成多条指令的处理。这种在CPU内部设置多条相互独立的标量流水线的技术被称为超标量技术。一个包含M条流水线的超标量处理器的峰值IPC为M。超标量处理器的实际IPC同样受到指令间相关性等因素的限制。指令间相关性的大小决定了程序指令可以并行地在多条流水线上执行的程度,我们用ILP(指令级并行度)来描述。因此,指令级并行度的高低直接影响超标量处理器的实际IPC。如何开发程序的指令级并行度,就成为了提升超标量处理器性能的关键之一。发掘指令级并行度,可以从编译优化和改进微结构两个方面入手。

1.提高指令级并行度

限制指令级并行度的因素主要包括资源冲突、数据相关、反相关、输出相关、控制相关等。如果不采取措施,所有存在冲突和相关性的指令都必须串行执行,才有可能保证程序的正确性,从而降低指令级并行度。

目前,提高指令级并行度的有效措施有以下几种:

● 增加硬件资源 这是消除资源冲突最直接的办法。这一方式依赖于工艺水平,如果芯片中集成不了这么多资源,就无法采用这一方式。即使增加的这些资源可以集成到芯片中,由于这些资源不可能每一拍都全部被用到,因而也会造成极大的浪费。

● 互锁机制由硬件判断一条指令所需的资源是否满足,如果满足,则将指令发向执行部件;否则指令将被锁定,直到所需的资源全部满足时才被发射。这是避免资源冲突的一种方式,它并不能提高指令集并行度,还必须有其他技术使被锁定指令之后可分配到足够资源的指令可以被超前发射。

● 指令动态调度。主要包括“记分板技术”、“Tomasulo机制”、寄存器重命名、旁路等机制。其中记分板技术允许指令在有足够资源并且没有数据相关关系时乱序执行。记分板的目标是在无结构冲突时,通过尽量提前执行指令来保持每周期一条指令的执行速度。因此,当下一条要执行的指令被锁定时,其他指令如果不与任何正在执行或已被锁定的指令相关,则这些指令仍然可以被执行。

● 转移预测与推测执行技术 当执行到转移指令时,只有等到它执行完毕后才能准确得知后继指令的地址。如果不采取措施,在等待转移指令执行结果的这段时间里,后继指令将无法执行,造成指令流水线的闲置。

目前一般使用转移预测方式来解决这一问题。转移预测就是利用各种信息尽可能早地预测转移指令执行的结果,根据预测结果定位取指令的位置,这样避免了在转移指令执行成功时重新取指令的开销。转移预测性能完全依赖于预测的准确率,只有保证一定的准确率才能使流水线大部分时间处于充满状态,提高处理器性能。

在转移地址计算出来之前,根据预测的转移目标地址取指、发射并执行的技术称为推测执行。推测执行技术的关键在于一旦发现转移预测失败,系统映像必须恢复到推测执行前的情况。

2.缩短和隐藏访存延迟

访存延迟是影响CPU性能的主要原因之一。随着CPU技术的发展,访存延迟对性能改善的影响日益严重。处理器性能以每年60%的速度递增,而存储器延迟每年只以7%的比例递减。对于超标量RISC处理器,运算速度非常高,与存储器之间的速度差距也更大,访存“瓶颈” 对其性能的限制也更加严重。

由于从存储器中读取数据或向存储器写数据的延迟很长,因此,在功能部件与主存之间设置了多级访问延迟较短的存储器,构成层次式的存储结构。缩短访存延迟的方法包括增加通用寄存器个数和增加高速缓冲存储器(Cache)。

通过层次式的存储结构可以适当缩短访存延迟,但相对于多数非访存指令的指令速度,访存指令的延迟还是太长。因此,必须通过隐藏延迟的方式,进一步减少访存延迟对性能的影响。

通过乱序执行可以隐藏访存延迟。当一条指令由于等待访存结果而无法完成时,运行后继的不存在冲突和相关性的指令超前执行。为了使程序执行可串行化,即与串行执行的结果相同,一般采用顺序取指、乱序发射、乱序执行、顺序写回的结构。

现有技术的不足

以上介绍的技术在当今的高性能CPU中得到广泛的应用,对性能的提高起到了相当大的推动作用,但仍然存在许多不足。主要包括:

● 通过动态调度来提高指令级并行度的方式,大大增加了硬件的复杂度。在超标量处理机中,硬件复杂度与同时发射指令数的平方成正比。

● 对于一般性作业,现在的转移预测技术的正确率平均可以达到85%~95%。但随着处理器一个时钟周期内发射指令条数和指令流水线级数的增加,处理器中处于 In-Flight状态的指令数目也迅速增加。一旦预测失败,作废的指令条数将增加,预测失败所带来的后果也更加严重。当预测的正确率达到95%以后,想要提高1~2个百分点,将变得异常困难,何况某些作业中的转移方向根本无法准确预测。

● 由于指令流本身的限制,硬件不可能总能找到足够的不存在冲突和相关性的指令来实现动态调度,以减小冲突和访存延迟对性能的影响。

● 现在普遍采用的技术,对访存延迟的缩减幅度仍然不能令人满意。访存延迟仍旧是CPU性能的重要瓶颈。

未来处理器的微结构

半导体工艺水平限制了处理器微结构技术的应用,而半导体工艺水平的提高也必将带到处理器微结构的变革。处理器各种微结构被提出,其中一些技术已经被应用于商用高性能处理器中,一些技术还在开发或完善之中。

1.多路超标量结构

多路超标量结构是由密西根大学提出的,它采用16/32路超标量结构。其关键特性包括:

● 为了使IPC接近16/32,处理器设置了2000条指令的超大指令窗口,以便从中选择足够多的不相关指令来实现动态调度。

● 同时集成了24~48个高度优化的流水功能部件,以减少产生功能部件冲突的可能,使更多的指令可以并行执行。

● 超大指令窗口和多条并行流水线使得处理器内部的In-Flight指令数目急剧增加,一旦转移预测失败,“惩罚”将非常严重。因此,多路超标量处理器采用混合预测器结构。混合预测器由若干个预测器组成,每一个负责不同的分支类型。另外,处理器还配置了Trace Cache。Trace Cache通过使用下一指令块的起始地址来操作,这类似于指令Cache,但与指令Cache不同的是,连续取和执行的指令在Trace Cache中存储时物理上也是连续的。如果转移预测失败或Trace Cache不命中,那么为了不影响指令的供应,还采用了乱序取指的技术。

● 为了缩短访存延迟,在片内集成了大容量的Cache,使用了芯片内近一半的晶体管。同时支持推测执行数据装入指令Load,既允许Load在操作数的地址被计算出来之前执行,又通过有效的数据旁路、数据预测减少访存次数。

2.超推测结构

超推测结构是由卡内基-梅隆大学提出的。这一方法的基础是:在实际程序中,指令的执行会产生许多高度可预测的结果值。指令源操作数的值常常可以被成功预测,指令的执行并不需要等待从相关指令产生的值,因此,一个超推测处理器可以消除指令串行化的约束,使得程序性能突破数据相关的限制。

超推测处理器在流水线的每一段主动地进行推测,以增强超标量发射性能。它通过推测来减少数据相关性和分支转移的危害。

传统的超标量处理器使用强相关模式(strong-dependence model)来执行程序,这意味着所有的指令被调整为一个顺序的序列。在这种模式中,两条指令的关系只有相关或不相关,当有疑问时,总是假设存在相关。这种传统的模式过分严格地限制了有效的并行。

而应用到超推测处理器中的弱相关模式(weak-dependence model)规定,只要能在影响机器永久状态之前能从错误推测中恢复回来,那么相关在指令执行时可被暂时忽略。弱相关模式的优点是机器可主动预测,且可暂时忽略相关。只要大部分推测是正确的,那么超推测机器就可以有效超越传统强相关模式的性能限制。

3. Trace处理器结构

Trace处理器的焦点是Trace Cache。Trace 是可以从任何点开始的动态指令流的一个指令序列,它可以覆盖几个基本块。一个Trace里指令数目是由Trace Cache的行尺寸决定的。覆盖的基本块数目叫做分支预测器吞吐率。原则上说,一个Trace可以由起始地址和分支输出序列完全决定,分支输出决定了接下来的路径。

Trace Cache是一种特殊的指令Cache,与存储静态序列指令的普通指令Cache不同,它捕获并存储动态指令序列。Trace Cache的每一行存储一个动态代码序列,它可能包含一个或多个发生的分支。动态指令序列在程序执行时被建立。Trace结构不延长流水线。在普通指令 Cache中,由于指令序列中存在分支和跳转指令,使在动态执行轨迹上的指令是不连续存放的,而在Trace Cache中执行轨迹上指令序列是连续存储的。

一个Trace处理器被分割成多个独立的PE(处理单元)。代码由硬件捕获和存储成Trace。一个PE执行当前的Trace,其他的PE推测执行其他Trace。

4.同时多线程结构(SMT)

在超标量处理器中,由于指令流本身的限制,硬件不可能总能找到足够的不存在冲突和相关性的指令来实现动态调度,以减小冲突和访存延迟对性能的影响。如果软件可以从一个作业中抽取可并行执行的部分组成不同的线程,或从不同的进程甚至是不同的作业中抽取线程,那么这些线程之间肯定不存在相关性。这一特性决定了多个线程的指令流可以并发执行。相对于细粒度的指令级并行,多线程技术侧重于发掘粗粒度的线程级并行。

同时多线程技术是超标量技术与多线程技术的完美结合。它允许指令发射部件每一时钟周期都可以从多个线程中选择多条不相关的指令,发射到相应的功能部件中去执行。同时多线程处理器对线程的调度与传统意义上由操作系统负责的线程调度是有区别的。它完全由处理器硬件负责线程间的切换。由于采用了大量的硬件支持,线程的切换甚至可以在一个时钟周期内完成。

由于同时多线程处理器选择不相关指令,实现动态调度的范围远比普通的超标量处理器宽,因此SMT的实际IPC可以更接近峰值,这使得SMT成为未来几年内,最为业界看好的微处理器结构。

5.单芯片多处理器结构(CMP)

CMP和SMT一样,致力于发掘作业的粗粒度并行性。CMP可以看做是随着大规模集成电路技术的发展,在芯片容量足够大时,就可以将大规模并行处理机结构中的SMP(对称多处理机)或DSM(分布共享处理机)节点集成到同一芯片内,各个处理器并行执行不同的线程或进程。在基于SMP结构的单芯片多处理机中,处理器之间通过片外Cache或者片外的共享存储器来进行通信。而基于DSM结构的单芯片多处理机中,处理器间通过连接分布式存储器的片内高速交叉开关网络进行通信。由于SMP和DSM技术已经成熟,CMP结构设计比较容易,只是后端设计和芯片制造工艺的要求较高而已。正因为这样,CMP成为最先被应用于商用CPU的“未来”高性能处理器结构。

6. PIM结构

随着工艺的发展,处理器速度和DRAM访问延迟之间的差距不断增大。今天,处理器性能每年以60%的速度降低,而存储器延迟只以每年7%的速度降低,这使得数据在处理器和主存之间传输需要几十个时钟周期。超标量超流水线处理器的设计正日趋复杂,而这种复杂性很大程度上是为了隐藏存储器访问延迟。为了摆脱这一趋势,研究人员提出了PIM(Processor-In-Memory)结构。

PIM,将一个或多个处理器与大容量、高带宽的片上DRAM存储体集成在一起,从而大大缩短了访存延迟,提高了数据带宽。PIM的处理器本身可以是一个简单的或普通的超标量标准处理器,可能也包括一个向量部件。

7.可重构多处理器结构

计算机设计者一直都面临着一个永恒的挑战——如何在速度和通用性之间找到合适的平衡点。CPU设计也不例外,一款高性能通用CPU不可能对所有的课题都保持同样的高性能,而针对特殊应用领域开发的专用CPU在处理该领域以外的课题时,性能可能会急剧下降。为此,“可重构多处理器结构”被提了出来。

和PIM结构中将处理器和存储器集成在一起的思想不同,可重构多处理器结构将大量的可重配置的处理单元集成在同一芯片内。根据应用的不同,对处理器阵列进行重新配置,以达到很高的性能。

综观CPU的发展历史,不难发现,这是一个继承与发展并存的“进化过程”。这一过程还将继续下去,因为人们对CPU性能的要求是无止境的。

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52
2 [报告]
发表于 2008-01-08 10:59 |只看该作者
学习……谢谢WHEEL大哥,你有时间去LINUX手机版看看吧,我再跟你联系。

论坛徽章:
0
3 [报告]
发表于 2008-01-08 13:14 |只看该作者
汗,wheel也掺和这个。
我刚认识到如果phone的屏幕能有7寸,在厕所里蹲着看代码是一件很惬意的事情
BTW:发现LS的兄弟,wheel到哪里你就到哪里

论坛徽章:
0
4 [报告]
发表于 2008-01-09 10:04 |只看该作者
我在IT新闻就没看到过 shdnzwy  阿。。7寸?我的手机就3.5寸,小阿。。

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52
5 [报告]
发表于 2008-01-09 22:43 |只看该作者
原帖由 prolj 于 2008-1-8 13:14 发表
汗,wheel也掺和这个。
我刚认识到如果phone的屏幕能有7寸,在厕所里蹲着看代码是一件很惬意的事情
BTW:发现LS的兄弟,wheel到哪里你就到哪里



不是吧,我只是常去手机版块,还逛下其它的,刚好WHEEL大哥也常去手机版,所以……

论坛徽章:
0
6 [报告]
发表于 2008-01-22 08:48 |只看该作者
:wink: :wink: :wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP