天天看点

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

本节书摘来自异步社区《思科ucs服务器统一计算》一书中的第2章,第2.1节,作者【美】silvano gai,tommi salli, roger andersson,更多章节内容可以访问云栖社区“异步社区”公众号查看

思科ucs服务器统一计算

从性能角度来看,处理器、内存和i/o是服务器中最重要的三个子系统。在某个给定的时间点,其中一个常常会成为瓶颈。我们经常会听说应用程序受cpu限制、受内存限制或受i/o限制。

在本章中,我们将详细介绍这三个子系统,具体参照根据ia-32(intel架构,32位)构建的服务器,ia-32通常称为x86架构。具体地讲,我们将介绍与ia-32架构兼容的最新一代intel处理器,也就是intel微架构(以前的代号为nehalem)1。

nehalem微架构(参见本章的“intel微架构”部分)及其变体westmere微架构,包括了思科ucs使用的三个处理器系列:nehalem-ep、nehalem-ex和westmere-ep。表2-1总结了这三个处理器的主要特征。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

1作者对编辑本章所采用的信息和材料向intel公司表示感谢。大多数图片承蒙intel公司提供。

现代处理器或中央处理器(central processing unit,cpu)都采用了最新的硅技术,一个晶片(包含一个处理器的半导体材料块)上有数百万个晶体管和数兆内存。

多个晶片焊接到一起就形成了一个硅片(硅晶圆),每个晶片都是独立切块、测试和用陶瓷封装的。这个过程包括安装晶片、将晶片衬垫连接到陶瓷封装的插脚上,然后密封晶片。至此,封装好的处理器就可以上市并在服务器上安装它们了。图2-1显示了封装好的intel xeon 5500处理器。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

处理器是使用称为“插槽”的装配/互联结构安装到主板上的。图2-2显示了用于intel处理器的插槽。用户可根据自己的需要,安装不同时钟频率和功耗的处理器到服务器主板。

服务器主板上插槽的数量决定了可安装的处理器数量。最初,服务器都只有一个插槽,但最近,为了提高服务器的性能,市场上已经出现了包含2个、4个和8个插槽的服务器。

在处理器架构的演变过程中,在很长一段时间里,性能的改善都与提高时钟频率紧密相关。时钟频率越高,完成一次计算需要的时间就越短,因此性能就越高。

随着时钟频率接近几个ghz,处理器的物理材料明显限制了时钟频率的进一步提高,因此必须找出提高性能的替代方法。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

晶体管尺寸不断缩小(nehalem使用45nm技术,westmere使用32nm技术),可以在单块晶片上集成数百万个晶体管。利用这个优势,可在一块晶片上多次复制基本的cpu(核心)。

现在市场上多核处理器(参见图2-3)已经随处可见,每个处理器(即插槽)包含多个cpu核心(通常是2、4、6或8个),每个核心都与一级缓存(l1)关联。缓存是用于减少访问主内存平均时间的小型快速内存。通常,所有的核心会共享一个较大的二级(l2)或三级缓存(l3)、总线接口和外部晶片连接。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

在现代服务器中,核心的数量等于插槽数量与每个插槽核心数量的乘积。例如,基于intel xeon处理器5500系列(nehalem-ep)的服务器通常使用两个插槽,每个插槽四个核心,总共八个核心。对于intel xeon7500系列(nehalem-ex),服务器通常包含8个插槽,每个插槽8个核心,总共可容纳64个核心。

图2-4显示了更详细的双核处理器视图。cpu的主要组件(指令提取、解码和执行)都被复制,但访问系统总线是公用的。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

为了更好地理解多核架构的含义,我们先看一下程序是如何执行的。服务器会运行一个内核(比如linux、windows)和多个进程。每个进程可进一步细分为“线程”。线程是分配给核心的最小工作单元,一个线程需要在一个核心上执行,不能进一步分割到多个核心上执行(参见图2-5)。

进程可以是单线程也可以是多线程的。单线程进程同一时间只能在一个核心上执行,其性能取决于核心本身。多线程进程同一时间可在多个核心上执行,因此它的性能就超越了单一核心上的性能表现。

由于许多应用程序都是单线程的,因此在多进程环境中多插槽、多核心架构通常会带来方便。在虚拟化环境中,这个道理一样正确,hypervisor允许在一台物理服务器上整合多个逻辑服务器,创建一个多进程和多线程的环境。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

虽然线程不能再拆分到两个核心上运行,但有些现代处理器允许同一时间在同一核心上运行两个线程。每个核心有多个可并行工作的执行单元,很难看到单个线程能让所有资源繁忙起来。

图2-6展示了intel超线程技术的工作方式。同一时间在同一核心上执行两个线程,它们使用不同的资源,因此提高了吞吐量。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

在存在多插槽和多核心的情况下,理解如何访问内存以及两个不同核心之间是如何通信的非常重要。

图2-7显示了过去许多intel处理器使用的架构,被称为前端总线(front-side bus,fsb)。在fsb架构中,所有流量都是通过一个单一的、共享的双向总线发送的。在现代处理器中,64位宽的总线以4倍的总线时钟速度运行。在某些产品中,fsb信息传输速率已经达到1.6gt/s(12.8gb/s)。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

fsb将所有处理器连接到芯片组的叫做北桥(也称为mch,内存控制器中枢)。北桥连接所有处理器共享访问的内存。

这种架构的优点是,每个处理器都可以访问系统中其他所有处理器可以访问的所有内存。每个处理器都实现了缓存一致性算法,从而使其内部缓存与外部内存,以及其他所有处理器的缓存保持同步。

但以这种方式设计的平台要争夺共享的总线资源。随着总线上信号传输速度的加快,要连接新设备就变得越来越困难了。此外,随着处理器和芯片组性能的提升,fsb上的流量也会随之上升。由于总线是共享资源,因此这会导致fsb变得拥挤不堪,成为瓶颈。

为了进一步提高带宽,单一共享总线演变成了双独立总线(dual independent bus,dib)架构,如图2-8所示,可用带宽基本上提高了一倍。

但在双独立总线架构中,缓存一致性流量必须广播到两条总线上,从而减少了总有效带宽。为了缓解这个问题,在芯片组中引入了“探听过滤器(snoop filter)”来减少带宽负载。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

如果缓存未被命中,最初的处理器会向fsb发出一个探听命令。探听过滤器拦截探听,确定是否需要将其传递给其他fsb。如果同一fsb上的其他处理器能满足读取请求,就会取消探听过滤器访问。如果同一fsb上其他处理器不满足读取请求,探听过滤器就会确定下一步的行动。如果读取请求忽略了探听过滤器,则会直接从内存返回数据。如果探听过滤器表示请求的目标缓存行在其他fsb上存在,它将向其他部分反映探听情况。如果其他部分仍然具有缓存行,就会将请求路由到该fsb。如果其他部分不再有目标缓存行,数据还是直接从内存返回。因为协议不支持写请求,所以必须始终将写请求传送到上述具有缓存行副本的所有fsb上。

在双独立总线之后又出现了如图2-9所示的专用高速互联(dedicated high-speed interconnect,dhsi)。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

基于dhsi的平台使用4个独立的fsb,每个处理器各使用一个fsb。引入探听过滤器实现了更好的带宽扩展。

fsb本身没有多大变化,只是现在变成点对点的配置了。

使用这种方法设计的平台仍然需要应对快速fsb上电子信号传输的挑战,dhsi也增加了芯片组上的针脚数量,需要扩展pcb路线,才能为所有fsb建立好连接。

随着intel酷睿i7处理器的引入,许多intel产品已经采用了一种新的系统架构。这就是著名的intel quickpath互联(intel quickpath interconnect,qpi)。这个架构使用了多个高速单向链接,将处理器和芯片组互联。使用这种架构,使我们认识到了:

多插槽和多核心共用的内存控制器是一个瓶颈;

引入多个分布式内存控制器将最符合多核处理器的内存需求;

在大多数情况下,在处理器中集成内存控制器有助于提升性能;

提供有效的方法来处理多插槽系统的一致性问题,对大规模系统至关重要。

图2-10显示了一个多核处理器,集成了内存控制器和多个链接到其他系统资源的intel qpi的功能示意图。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

在这个架构中,插槽中的所有核心共享一个可能具有多个内存接口(也就是内存总线)的集成内存控制器(integrated memory controller,imc)。

imc可能具有不同的外部连接。

ddr 3内存通道:在这种情况下,ddr 3 dimm(参见下一节)直接连接到插槽,如图2-12所示。nehalem-ep(xeon 5500)和westmere-ep(xeon 5600)使用了这种架构。

高速串行内存通道:如图2-11所示。在这种情况下,外部芯片(可扩展内存缓存,scalable memory buffer)创建ddr 3内存通道,ddr 3 dimm通过这些通道连接。nehalem-ex(xeon 7500)使用了这种架构。

《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变

不同插槽中的imc和核心使用intel qpi相互通信。

实现了intel qpi的处理器也可以完全访问其他处理器的内存,同时还保持缓存的一致性。这个架构也称为“缓存一致性非统一内存架构(non-uniform memory architecture,numa)”——也就是,内存互联系统保证内存和所有可能缓存的副本始终保持一致。

intel qpi是一个点对点的互联和消息传递方案,它使用点对点的差动电流信号传输模式。在当前的实现中,每个链接由每个方向最高速度可达25.6 gb/s或6.4 gt/s的20条线路组成(参见本章的“平台架构”部分)。

intel qpi使用点对点的链接,因此在插槽中需要一个内部交叉路由器(参见图2-10),以提供全局内存访问。这种路由直通能力使得不需要完整的连接拓扑结构就可以构建系统。

图2-12显示了四插槽的intel nehalem-ex配置,每个处理器有4个qpi,并与其他3个处理器和boxboro-ex芯片组互联(还有smb组件,但是没有显示)。

继续阅读