logo资料库

The Future of Microprocessors读后感.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
《The Future of Microprocessors》 ——读后感 驱动现代计算机的微处理器的性能已经呈幂指数增长了数年,导致其的原因 在于两方面。第一,在处理器中作为电路核心的晶体管和存储芯片已经发展的比 摩尔定律描述的发展程度要快一些,这将直接影响由这些晶体管制造的处理器的 性能。此外,实际的处理器性能增加的速度已经超过了摩尔定律可以预测的速度, 这是因为处理器设计师能够有效利用数量不断增长的晶体管到现代芯片上来从 软件方面获得更多的并行性效益。 关于持续对并行论探索的一个有趣的方面是一直追求着以一种实质上对软 件编程人员透明的方式来探索。自从微处理器于二十世纪 70 年代发明之后,他 们以最少的异常和修正实现了常规的冯诺依曼计算模型。对于一个程序员来说, 每一个计算机包括一个执行顺序指令流的单处理器和一个存储程序所有数据的 单存储片。因为对早期处理器的向后兼容的经济利益是很可观的,近十年来硬件 设计时实质上已经局限在对上述抽象模型的增进方面。在存储方面,这将会导致 配置较大缓冲存储器的处理器的出现——这是为了是被频繁访问的存储器的比 例最小——物理上与处理器非常接近的快速存储器、大寄存器存储器来容纳更多 的数据在一个十分小的快的存储编译管理区域内。 对于处理器,这导致了一系列的修正设计来达到两个至少一个的目标。一是 增加在每一个时钟周期内能够调度的指令数量,二是增加快于摩尔定律正常允许 的处理器的时钟频率。执行在等价次序的指令的流水线技术已经允许设计师增加 时钟频率——随着指令可以被切成大量的小步骤,这是用来降低需要在每个时钟 周期内交换的计算数量。曾经在二十世纪 80 年代的需要少数不多的时钟周期的 指令在现在的尖端处理器上需要 20 或更多的时钟周期。 同时,超标量处理器已经发展到了在一个周期内从执行单一的指令流到在一 个周期内执行多指令的阶段。通过指令的动态检查集从一个指令流里找到一个并 行执行能力并且执行它们,这个效用常常是较原始程序是无序的。 以上两种技术发展的都很繁荣,因为他们都使得指令运行的更快——为编程 人员维持了这个一个关键的错觉,这个错觉使得所有的指令都是按序顺序的执行 - 1 -
而不是实际的重叠和不按次序的执行。当然,这个错觉也不是绝对的。如果我们 的程序员和编译人员可以调整他们的指令目录化和数据的分布来映射更多的有 效性到底层流水技术、并行体系结构额高速缓冲存储上,性能照样可以改善。但 是最重要的一点是老代码仍然可以正确的在这样的体系结构里运行。 很不幸的是处理器设计师持续使用这些技术来增加处理器的速度变得日益 艰难起来。典型的指令流已经受限在指令的可用并行部分的数量。于是,在一个 周期内能够调度或多于四个指令的超标量处理器在大多数应用上仅能得到很少 的额外利益。图 2 显示了因特尔处理器近些年取得的指令并行性的情况。在指令 级并行理论被强烈追求先这是个和非常平的区域,然后随着并行理论被有效的利 用,便引起了曲线的急剧上升,紧接着的是由于可利用的并行理论已经被完全开 发而导致的曲线的水平。 麻烦的事情还多着呢,能够在每个周期内执行多个指令的超标量处理器核的 制造工艺变得非常昂贵,因为需要动态找到并行指令的的附加计算的复杂性与可 以同时调度的指令数目的平方近似的成正比。同样的,过去 10-20 个等级的流水 线就是非常困难的,因为每一个流水等级都变的非常短而不能执行,甚至在比如 将两个正数相加这样的简单运算都不能执行,这是因为流水线的设计会更复杂。 进一步发展,超标量调度和流水线技术都受限于这个现实——他们都需要大 量的晶体管集成到每个处理器核中的高速中央计算单元中,而事实上,几乎没有 哪个厂商可以提供那么多工程师在合理的时间内设计和制造出这样的处理器内 核。这样的趋势已经或多或少的减慢了处理器性能提高的进展并且迫使一些较小 的商家放弃高端处理器的生意,因为他们根本就没有足够的竞争力。 然而,在现阶段所有的在常规处理器内核的发展的进程都已经停止了,这是 由于一个简单的物理限制——功耗。随着近二十年来处理器已经实现流水线技术 和激增的超标量技术,典型的高端微处理器功耗已经从不足一瓦发展到了一百 瓦。即使每一代的处理器都许诺会减低功耗——因为更小的晶体管需求更小的功 耗——但是仅仅存在一个所谓的缩短来应用新的处理技术是远远不够的。然而处 理器设计师仍坚持使用更多的晶体管到他们的处理器内核里并且以越来越高的 频率使用他们来增加流水线和超标量调度的程度。其结果是功耗呈幂数增长趋 势。 - 2 -
很不幸的,冷却技术并没有很容易的呈幂数增长趋势达到相应的规模。结果, 处理器散热装置从二十世纪 80 年代时不需要散热垫发展到了 90 年代的需要中等 大小的散热垫,而今天需要大的散热垫,而且需要一个或更多的专用风扇来增加 处理器表面的空气流动。如果这样的趋势持续发展,下一代的微处理器将需要非 常奇异的散热技术,比如专用水散热技术。 这些限制的融合——适合于超标量调度的指令并行理论的限制、流水线的实 际限制、受实际散热技术局限性限制的功耗极限——将会限制未来通用处理器内 核的增长速度到基层晶体管的基本摩尔定律改善速度。这样的局限性会使得比如 英特尔和 AMD 的处理器生产商调整他们的市场关注点离开单核时钟速率。 即使较大规模的高速缓冲存储器会或多或少的继续改进性能——通过加速 对常规模型中的单存储的访问,但事实是如果没有针对处理器设计根本的改革, 在未来处理器性能的增加仍会喜剧性的减慢。处理器设计师必须找到一种新的方 法来有效的利用在高端硅片上的数量不断增加晶体管预算进而以最小化额外功 耗和设计复杂性来改善性能。微处理器市场也会按照不同的性能需求分为好几个 区域。所以从不同的性能需求的观点来审查问题是很有用的。 吞吐量性能的改善。随着网络的兴起,对于处理整个网络中迅速到达的多个 独立的请求的需求在戏剧性的增加。因为单个网络请求时完全典型的独立的任务 ——他们是网页请求、数据库访问或者文件服务——他们都是通过运用高性能常 规体系结构的微处理器的计算机来传输的。这技术是用在像谷歌那样的用来匹配 整个计算吞吐量和输入请求速率的。 随着近期请求数量的不断增加,更多的服务器被添加到搜索任务当中。用多 核处理器来代替分散的服务器已经成为了可能。大多数已经存在的多核处理器包 括两个或更多的用总线、交换机或网络连接起来的分散的处理器来共享存储和输 入输出设备。像这样的系统较于同样处理器数量的单核处理器系统在物理上更小 并且花费更少的功率。这是因为物理上较大的部件比如存储器、硬盘和电源提供 设备将被各个处理器所共享。 近期,人们一直迫切追求着获得更多的每单元数据空间的容量和每瓦功率的 性能,这是因为数据中心给服务器的容量是有限的并且他们耗用的电费是大的惊 人的。为了应对这些,服务器的生产商已经试图通过采用紧凑服务封装技术来节 - 3 -
省空间。通过对系统中的高功率负荷部件的共享也实现了减低功率的目的。然而, 在系统还能够在空气有效散热的前提下,随着系统达到的最大部件紧密度,这样 的解决方法也到达了他的实际极限。结果,这些系统的下个阶段的发展到达了一 个新的层次——单芯片多处理器。 第一个单芯片多处理器目标是能够实现两个或更多的常规超标量处理器被 一起封装到原来单核处理器那么大的壳子里。主要的动机就是减少体积——多处 理器现在的体积仅仅是以前单处理器体积那么大。所以,单位体积的性能便增加 了。由于在单核处理器那么大的壳子里的多核处理器仅用原来单核处理器的连接 部件与其余的系统交互通信,所以功耗也降低了。比如 AMD 和因特尔发布的第 一个单芯片多处理器都是共享系统接口。而还有其他的则共享片内的高速缓冲存 储器,这使得处理器通信只限定在核间级别而不需要片外访问。 更多的功耗节省将通过充分利用下面的这个事实达到。当服务器工作负荷需 要非常高的吞吐量的时候,每个请求的时延将不会是关键问题。大部分用户不会 烦恼于他们的网页多花了几秒钟去加载,但是他们会抱怨网站丢失了他们的网络 请求,因为这个网站并没有足够的吞吐能力。一个基于单芯片多处理器就可以被 设计用来应用到这种情况。 当一个两路的单芯片多处理器代替了单处理器之后,就有可能在只有原来一 般的时钟速度的前提下基本上达到面向服务的工作负荷的相同或更好的吞吐量。 因为降低了时钟速率,每一个请求都可以占据两次处理时间。然而,对于大多 数的应用,这样的减速将会更少。因为请求处理时间主要受限于内存和硬盘性能 而不是处理器的性能。然而,因为两个请求能够同时被处理,整个系统的吞吐量 将会更好,除非他们对同一个内存单元或同一个硬盘资源进行争用。 总之,即使是性能一样或者是略微的改进,这样的调整对系统级都是由利的。 较低的时钟速率允许我们以较低的电压提供功率来设计系统。这几乎是一个线性 的降低。因为功耗与电压的平方成正比。然而,达到原来的性能的功耗是非常低 了——应该是一半(二分之一电压的平方=四分之一的功耗/每个处理器。所以两 个处理器合在一起的功耗就是原来的一半了),即使是潜在功耗节省受限于静电 驱散和由基层晶体管需要的最低电压。 对于面向吞吐量的工作负荷。甚至更高的功耗性能比和性能片区域比可以通 - 4 -
过运用“延迟是不重要的”这一思想到其极致和运用几个小的核来代替大的核的 方法来达到。因为典型的服务工作负荷有少数的指令级并行和存储延迟,大多数 与超标量指令调度相关的硬件都浪费在这样的应用上。然而,一个典型的服务将 在一瞬间处理成十上百得请求,所以这就有足够的有效的工作来同时让处理器保 持繁忙。 因此,用较小的处理器来替换较大的超标量处理器——这已经在 Sun Niagara 这个项目上表明是成功的——是一个成功的策略。每一个较小的处理器较于较大 的超标量的处理器处理请求的速度较慢。但是这样的延时减缓多于同样的芯片区 域能够有更多数量上的处理器集成带来的时延弥补。 进一步运用“时延是不重要的”这个思想,运用每个核力的多线程计算来牺 牲更多的时延来换取更高的吞吐量。因为每一个核都试图花费相同的时间来等待 存储器响应,这使得给每一个核分配多个进程——每个进程一个寄存器存储器, 变得十分合理。当线程正在等待存储器响应时,处理器仍然可以执行指令。 随着高度流水存储系统使用的日益增加,较大数量的线程也允许每个处理器 并发的发送更多的请求到存储器。总之,线程将有略微较长的时延,因为这些时 间都是在占用和竞争使用处理器花费的时间。 时延性能的改善。许多重要的应用的性能不是以一些实质上不相关的任务的 高吞吐量来衡量而是以单个任务的执行时延来衡量的。大部分的桌面处理应用就 在这个范畴内。用户一般会关心他们的计算机是否响应他们的指令尽可能的快而 不是他们处理器同时处理指令的能力。一些其他计算限制应用的用户更感兴趣与 程序执行的时间而不是可并发执行的能力。 多核处理器可以加速这些类型的应用,但是这需要程序工程师来把每一个长 执行时延的线程划分成大量可以并行的较小的线程。这是因为自动并行的技术仅 仅有 FORTRAN 编程技术支持。从历史上看,处理期间的通信的缓慢一般设计到 每个处理器的速度,所以对于程序工程师来说运行在分开处理器上的线程仅需要 最小的处理期间通信才是最关键的。 因为通信的降低是非常困难的,只有少数的用户会困扰着花费时间和精力来 并行化他们的程序以获得提速,所以这些技术只在高级的研究生程度的计算机科 学课程中教授。在大多数情况下,程序工程师发现等待下一代单处理器的出现并 - 5 -
且不用劳神费力的去并行化他们的程序就能提高程序运行速度较为容易。结果, 多处理器经过了一个与单处理器竞争对抗的艰难时期——除了在非常大的系统 方面,因为在非常大的系统上多处理器的功耗性能明显比但处理器功耗性能优 越。 随着利用诸如超标量调度和流水线等技术能够达到的本质上的性能的枯竭 耗尽,我们现在来到了一个程序工程师必须转换出更多的并行程序模型来有效的 开发多处理器的时代。这是因为有三方面影响着处理器性能的增加——时钟频 率、超标量指令调度和多核处理。我们已经发展前两种技术到了他们的极限,我 们不得不针对多核处理进行研究,即使这将意味着程序工程师将被迫改变并行编 程模型来获得尽可能的最高的性能。 方便的是从多片系统到单片多处理器系统的过度极大地简化了涉及到并行 程序编制的问题。以前最小化独立进程间的通信到一个十分低的级别是很有必要 的,因为每一个通信都将耗费成百上千的处理周期。然而,对于具有共享片内高 速缓冲存储器体系结构的 CMP 来说,每一个通信事件仅会耗费较少的处理周期。 像通信延迟这样的时延将会对整个系统性能产生较小的影响。程序工程师仍然 必须分解他们的工作到并行的线程的层次,但是他们几乎不用考虑是否确保了那 些线程是高度独立的,因为此时线程间的通信已经是相对廉价的了。然而,这并 不是一个万能药,因为程序工程师必须正确的架构架线程间的同步,要么就是程 序会产生错误或发生死锁。但是,至少通信延迟对系统性能的影响已经最小化了。 并行的线程也能变得较小而且有效——执行时间成百上千个周期的线程常 被用于获得有关系统的并行性,这代替了常规并行机器中的执行需要上百万个周 期的线程。研究人员已经证实了应用的并行化利用几个方案可以变得更简单。这 些系统增加了让线程并行执行的缓冲计算单元,并且可以动态检测他们是否在并 行着运行。如果没有进程间的依赖在运行时被检测到,进程正常完成。如果依赖 性存在,这些线程的缓冲将被清楚并且这些线程将会重启,动态的在处理过程中 串行化执行。 比如像 CMPs 这样的并行机器的硬件消除了对程序工程师在并行化他们的 程序后去检测是否线程在并行执行的需要,他们仅需要选择潜在的并行线程即 可。总之,对于程序工程师来说,从常规处理器到单芯片多处理的转变较于从常 - 6 -
规系统到多片多处理器的转变更为有利于他们。因为前者剪短了单芯片多处理器 的通信延迟并且增加了相互作用的存储,这些在未来数年内可有效的商业化。结 果,这样的体系结构转变对于一般的程序工程师来说也可以研究,而不是仅限于 研究生级的计算机科学课题。 硬件的优势。除了现在和未来的软件优势,对于硬件设计师来说单芯片多核 处理器较于单核处理器有着显著的优势。CMPs 仅需要一般的合适的工程开销用 于处理器的每一代产品。每一个处理器的家族成员仅仅需要附加的内核的副本, 然后对联系处理器的计算单元做一些相对的修改以适应在每一代产品中的附加 的处理器即可——而不是完全的对于高速处理器内核逻辑的完全修改。另外,从 一代到另一代的系统电路仅需要较小的修改即可,因为从外部来看每一代的都是 一样的,甚至是随着处理器数量的增加也是这样。 那真正唯一的区别是电路需要解决随着 CMPs 规模的增大也不断增大的 I/O 带宽。对于近几代硅处理芯片来说,在工程耗费上的节省是显著的,因为每次增 加一些内核副本是相对容易的。同样的工程开销可以摊销在相关处理器的系列上 面。简单的增加处理器的数量和时钟频率可以运行本质上相同的硬件来作用在不 同的性价比的方面。 不可避免的过渡。因为这些趋势造成的结果,我们因该注意到单片多处理器 的已经在市场上有了显著的进展。吞吐量的计算是 CMPs 第一个也是最迫切影响 的领域。这要感谢有效的运用在多线程应用的大量的独立线程,这是因为他们能 改善功耗性能比,而不需要任何的软件改变。在不远的未来,CMPs 应该也对更 多的延迟关键计算领域产生影响。虽然并行大多数时延关键的软件到多路并行的 可以利用单片多核处理器来执行的进程,CMPs 较于常规的多核处理器处理的更 容易,因为他们他们减少了处理器间的通信延迟。 回顾其他的方法,到 CMPs 的过渡是不可避免的,因为过去运用不能修改的 基础冯诺依曼模型的技术用于加速体系结构的努力——比如流水线和招标量调 度——都遇到了艰难的限制。结果,微处理器工业开辟了通往多核体系结构的道 路。然而,这些体系结构的优势不会被利用直到软件工业完全开始研究并行编程 技术。目前仅被少数程序工程师掌握的多核处理器编程技术的艺术是较于单核处 理器更复杂的编程技术并且需要对新的计算原则、算法和编程工具的理解。 - 7 -
分享到:
收藏