新的体系结构.doc
《新的体系结构.doc》由会员分享,可在线阅读,更多相关《新的体系结构.doc(16页珍藏版)》请在三一办公上搜索。
1、10第 章 新的体系结构在台式计算机的微处理器设计方面的最新进展包括将多个处理器放置到一个计算机芯片上。这些多核设计完全取代了作为台式计算机的基础的单核设计。IBM、Sun、Intel和AMD都已经将他们的芯片流水线从生产单核处理器变为生产多核处理器。这已经促使计算机供应商将他们的重心转移到销售拥有多核的台式计算机,如Dell、HP和Apple。在这个新的领域的市场份额的竞争中,每个计算机芯片生产商都在挑战着能够经济地放置到一个芯片上的内核数目的极限。所有这些竞争使得消费者拥有了比以前更多的计算能力。主要的问题在于常规的台式计算机软件没有被设计为利用新的多核架构。实际上,为了能够从新的多核体系
2、结构中得到任何真正的加速,将必须重新设计台式计算机软件。设计和实现利用多核处理器的应用软件的技术,和在单核开发中使用的技术有着根本的区别。软件设计和开发的焦点将必须从顺序编程技术转变为并行和多线程编程技术。现在,一般开发人员的工作站以及入门级的服务器都采用具有硬件级多线程、多处理和并行处理能力的多处理器。尽管顺序编程和单核应用开发仍将保留有一席之地,但是多核应用程序设计和开发的思想现在已经成为主流。本章将会带您了解多核编程,介绍的内容有: 什么是多核? 有哪些多核体系结构以及它们之间有什么区别? 作为软件的设计人员和开发人员,当从顺序编程和单核应用开发转移到多核编程时,需要知道哪些知识?1.1
3、 什么是多核多核是一种将多个处理器放置到一个计算机芯片上的架构设计。每个处理器被称作一个核。随着芯片容量的增加,在一个芯片上放置多个处理器变得可行。这些设计被称为芯片多处理器(Chip Multiprocessor,CMP),是因为它们允许单芯片进行多处理。多核是CMP或单芯片多处理器的流行的名字。单芯片多处理的概念并不是新的,早在20世纪90年代初期,芯片生产商就已经开始探索在单芯片上放置多个内核的想法。最近,CMP已经成为改进总体系统性能的首选方法。这种方法与通过增加时钟频率或处理器速度来获得总体系统性能收益是截然不同的。增加时钟频率的方法已经开始在成本效益方面达到其极限了。较高的频率要求
4、更多的能耗,使得系统制冷变得困难且代价高昂。这还会影响确定尺寸和封装(sizing and packaging)方面的考虑。所以,现在的做法是增加更多的处理器,而不是令处理器运行得更快以获得性能上的提升。由于这种方法实现简单,因此是更好的方法,所以该方法驱动了多核革命。当前,多核体系结构在增强总体系统性能方面成为了焦点。对于熟悉多处理的软件开发人员,对多核开发应当也不陌生。从逻辑的观点,对分开封装的多个处理器进行编程与对包含在单独芯片上的单个封装上的多个处理器进行编程,两者之间并没有很大的区别。当然可能会存在性能差异,因为新的CMP利用了总线体系结构以及处理器之间连接等方面的进步。在某些环境下
5、,这可能会使得原本为多个处理器编写的程序能够在CMP上更快地执行。除了潜在的性能收益,设计和实现都是非常类似的。在本书中,我们将讨论其中存在的微小差别。对于只熟悉顺序编程和单核开发的开发人员,多核方法提供了很多新的软件开发范型。1.2 多核体系结构CMP有多种形式:两个处理器(双核)、四个处理器(四核)和八个处理器(八核)结构。有些结构是多线程,有些结构不是。在新的CMP中,高速缓冲存储器(cache)和内存的处理方式有着几种变体,在不同的实现中,处理器与处理器之间的通信方法也不同。来自各大主要芯片生产商的CMP实现中,在处理I/O总线和前端总线(Front Side Bus,FSB)上均不相
6、同。如果严格地从逻辑视图上查看被设计为利用多核体系结构的应用程序时,并看不出大多数区别。图1-1示范了支持多处理的3种常见配置。图1-1 图1-1中的配置1使用超线程(hyperthreading)。与CMP类似,使用超线程的处理器允许在一个芯片上执行两个或多个线程。然而,在超线程的封装中,多个处理器指的是逻辑上的,而不是物理上的。这些封装中有着两套硬件,但是不足以构成一个单独的物理处理器。这样,超线程允许处理器在将自身呈现给操作系统时,好像是完备的多处理器,但实际上只是在一个处理器上运行多个线程。 图1-1中的配置2是经典的多处理器。在配置2中,每个处理器位于一个独立的芯片上,而且有着自己的
7、硬件。 配置3代表了当前多处理器的发展趋势,它在一个芯片上提供完整的多个处理器。如同您将在第2章所看到的,一些多核设计在核的内部支持超线程。例如,一个使用了超线程技术的双核处理器可以将自己作为四核处理器呈现给操作系统。混合型多核体系结构混合型多核体系结构(hybrid multicore architecture)在一个封装中混合了多种处理器类型和/或线程模式。这样能够通过将多种独特的性能合并到一个功能内核中,提供有效的代码优化和特化(specialization)的方法。混合型多核架构的最常见示例是IBM的Cell broadband engine(Cell)。我们将在下一章中介绍Cell的
8、体系结构。需要注意的是每种配置是作为由两个或更多个能够并发执行多个任务的一组逻辑处理器来呈现给开发人员的。对系统程序员、内核程序员和应用程序开发人员的挑战是需要了解何时以及如何利用这一点。1.3 软件开发人员眼中的多核体系结构CMP的低成本和广泛可用性,使得一般的软件开发人员能够进行各种级别的并行处理。并行处理不再是超级计算机或集群的专属领域。基本的开发工作站和入门级服务器现在都具有软件级和硬件级的并行处理能力。这意味着程序员和软件开发人员可以无需牺牲设计或性能,即可根据需要部署利用多处理和多线程的应用。然而,需要注意的是,并非每个软件应用都需要多处理或多线程。实际上,一些软件解决方案和计算机
9、算法最好使用顺序编程技术来实现。在某些情况下,在软件中引入并行编程技术的开销会使软件性能降级。并行性和多处理是需要一定成本的。如果软件中顺序地解决问题需要的工作量少于创建额外线程和进程的开销,或者少于协调并发执行的任务之间通信的工作,则应选择顺序的方法。有时可以较容易地确定何时及何地应当使用并行性,因为软件解决方案本身可能会要求支持并行性。例如在很多客户端服务器配置中,很显然是需要并行性的。可能有一个服务器,例如数据库,还有很多可以同时对数据库发起请求的客户端。在多数情况下,您不希望一个客户端被要求等待,直到另外一个客户端的请求被满足。可接受的解决方案允许软件并发地处理客户端的请求。另一方面,
10、有时候可能会在不需要并行性时面对并行性的诱惑。例如,您可能会倾向于相信在文本中进行并行关键字搜索理所当然地比顺序搜索快,但是这依赖于需要搜索的文本的规模,同时还依赖于启动多个并行搜索agent所需要的时间和开销数量。设计决策者若赞成使用并发的解决方案,则必须考虑盈亏临界点和问题规模。在多数情况下,软件设计和软件实现是分开进行的,而且很多时候是由不同的小组来执行的。但是当主要的系统需求是软件加速或性能优化时,软件设计小组必须至少清楚软件实现的选择,而软件实现选择必须知道潜在的目标平台。在本书中,目标平台是多核平台。为了充分利用多核平台,您需要理解做些什么工作才能获得CMP的性能。您需要理解CMP
11、中的哪些部分是可以控制的。您将看到可以通过编译器、操作系统调用/库、语言特性、应用程序级库来访问CMP。但首先,为了理解如何处理CMP访问,需要对处理器体系结构有基本的理解。1.3.1 基本的处理器体系结构您可以访问和影响的部件包括寄存器、主存储器、虚拟内存、指令集使用以及目标代码优化。在试图与多处理器体系结构打交道之前,理解在单处理器架构中可以影响哪些部件非常重要。图1-2给出了简化的处理器架构和内存部件的逻辑概览。图1-2处理器架构有很多变体,图1-2只是一个逻辑概览。它说明了您可以使用的主要处理器部件。尽管这个级别的细节和这些部件对特定类型的应用程序开发经常是透明的,但是它们在自底向上多
12、核编程和以加速和性能优化为主要目的的软件开发中都发挥着核心作用。与处理器的主要接口是编译器。操作系统是二级接口。注意:在本书中,我们将使用C+编译器来生成目标代码。并行编程可用于使用多种方法的所有类型的应用程序,从低级到高级,从面向对象到结构化应用程序。C+支持多范型编程方法,因为其拥有较强灵活性,所以我们会选择使用它。表1-1给出了编译器与CPU和指令集交互的类别清单。包括浮点类别、寄存器操纵类别和内存模型类别。表1-1 编译器开关选项描 述使用的示例Vectorization这个选项将激活vectorizer,它是编译器中的一个组件,自动在MMX寄存器中使用单指令多数据(Single In
13、struction Multiple Data,SIMD)指令以及所有SSE指令集-x -ax激活vectorizerAuto parallelization这个选项识别包含并行性的循环结构,然后(如果可能)安全生成并行执行的多线程等价体-parallel触发自动并行化Parallelization with OpenMP使用这个选项,编译器基于程序员在源码中加入的OpenMP指示来生成多线程代码#pragma omp parallel#pragma omp for/your codeFast这个选项用于检测不兼容的处理器,在执行中生成错误消息-O1为代码规模和代码局部性进行优化,并禁用循环展
14、开、软件流水和全局代码调度-O2默认值,将软件流水置为ONFloating point允许编译器影响对浮点指令的选择和使用的一组开关-fschedule-insns告诉编译器可以发送其他指令,直到要求一个浮点指令的结果为止-float-store告诉编译器在生成目标代码时不使用在寄存器中存放浮点变量的指令(续表) 编译器开关选项描 述使 用 实 例Loop unrolling这个选项用于激活循环展开;它只应用于编译器被确定为应当被展开的循环;如果将n省略,则由编译器决定是否进行展开-unroll激活循环展开,设置循环展开的最大次数n=0禁用循环展开,仅为64位架构下的容许值Memory ban
15、dwidth这个选项用于激活或禁用对处理器使用的内存带宽的控制;如果禁用,则带宽会在多个线程间完全共享;可以和auto parallelization选项一同使用;这个选项仅用于64位架构-opt-mem-bandwidthn=2为并行代码(如pthreads和MPI代码)激活编译器优化n=1为编译器生成的多线程代码激活编译器优化Code generation使用这个选项代码,为特定架构或处理器进行代码优化;如果有性能收益,编译器生成多条、处理器特定的代码路径;用于32位及64位架构-ax为指定处理器生成优化代码-axS使用SIMD Extensions 4(SSE4)向量编译器和媒体加速器指
16、令生成专门的代码路径Thread checking这个选项激活使用线程的应用程序或程序中的线程分析,只能和Intel的Thread Checker工具一同使用-tcheck激活使用线程的应用程序或程序的分析Thread library这个选项使得编译器包含来自Thread Library的代码;程序员需要在源代码中包含API调用-pthread针对多线程支持使用pthread库1.3.2 CPU(指令集)CPU有着它识别并执行的原生指令集(native instruction set)。C+编译器的工作是将C+程序代码转换到目标平台的原生指令集。编译器对C+进行转换并生成一个由目标处理器的原生
17、指令组成的目标文件。图1-3显示了基本编译过程的缩略图。图1-3在将C+代码转换为目标CPU本地语言的过程中,编译器可以选择如何生成目标代码。编译器可用来帮助确定寄存器如何使用或是否执行循环展开。可以通过对编译器选项的设置来决定是否生成16位、32位或64位目标代码。编译器可用于选择内存模型。编译器可以提供代码提示来声明提供多少L1(level 1) cache或L2(level 2) cache。注意在表1-1中的浮点操作类别中,该类别中的开关允许编译器影响对浮点指令的选择。例如,GNU gcc编译器有- -float-store开关。这个开关告诉编译器在生成目标代码时,不应当使用将在寄存器
18、中存储浮点变量的指令。Sun C+编译器有-fma开关,这个开关允许自动生成浮点和multi-add指令。-fma=none禁用了这些指令的生成。-fma=fused开关允许编译器通过使用浮点、fused和multiply=add指令来尝试改进代码性能。在上述两种情况下,开关都作为选项提供给编译器:gcc ffloat-store my_program.cc或CC fma=used my_program.cc其他开关影响cache使用。例如Sun C+编译器有-xcache=c,定义了被优化器使用的cache属性。GNU gcc编译器有-Funroll -loops,指定循环如何展开。GNU
19、gcc编译器的-pthread开关开启了对使用pthread的多线程的支持。编译器甚至还有选项可用来设置典型内存引用间隔,使用的是-mmemory-latency=time开关。实际上,对于图1-2中的任何部件,均有编译器选项和开关可影响它们的使用。编译器提供对处理器的访问,对为特定目标处理器或处理器系列编写多核应用程序的开发人员是有影响的。例如,UltraSparc、Opteron、Intel Core 2 Duo和Cell处理器都是常用的多核配置。这些处理器均支持高速向量操作和计算。它们支持并行计算的单指令多数据(SIMD)模型。这种支持可以通过编译器来获得,并受编译器影响。注意:第4章包
20、含了对编译器在多核开发中的作用的详细介绍。值得注意的是,使用过多这种类型的编译器选项,会导致编译器为特定处理器进行代码优化。如果设计目标之一是跨平台兼容,那么必须小心使用编译器选项。对于系统程序员、库制作人员、编译器编写人员、内核开发人员、数据库和服务器引擎开发人员,对基本处理器架构、指令集和编译器接口的基本理解是开发利用CMP的有效软件的先决条件。1.3.3 内存是关键事实上,在计算机系统中发生的所有事情都是要经过某种内存的。多数事情需要经过很多的内存级别。软件及同它关联的数据在执行之前通常存储在某些外部介质中(通常为硬盘、CD-ROM、DVD等)。例如,假定您有一个非常重要且非常长的数字列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 体系结构
链接地址:https://www.31ppt.com/p-4045584.html