贝壳电子书 > 教育出版电子书 > smt >

第5章

smt-第5章

小说: smt 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



个指针指向可用的内存。如果是C/S模式,由Server端来产生file…mapping,那么Client端使用OpenFileMapping(),然后调用MapViewOfFile()。   第二步:使用共享内存。共享内存指针的使用是一件比较麻烦的事,我们需要借助_based属性,允许指针被定义为从某一点开始起算的32位偏移值。   第三步:清理。UnmapViewOfFile()交出由MapViewOfFile()获得的指针,CloseHandle()交出file…mapping核心对象的handle。   第四步:同步处理。可以借助Mutex来进行同步处理。   3、 IPC   1)Anonymous Pipes。Anonymous Pipes只被使用于点对点通讯。当一个进程产生另一个进程时,这是最有用的一种通讯方式。   2)Named Pipes。Named Pipes可以是单向,也可以是双向,并且可以跨越网络,步局限于单机。   3)Mailslots。Mailslots为广播式通讯。Server进程可以产生Mailslots;任何Client进程可以写数据进去,但是只有Server进程可以取数据。   4)OLE Automation。OLE Automation和UDP都是更高阶的机制,允许通讯发生于不同进程间,甚至不同机器间。   5)DDE。DDE动态数据交换,使用于16位Windows,目前这一方式应尽量避免使用。'4'
'编辑本段'同步多线程的工作方式
  图中首先显示了单线程方式,其中所有物理资源都通过单个线程。POWER? 系统支持单线程和同步多线程的工作方式同步多线程。   随后,图中显示了粗粒度多线程方式,其中每次只有一个线程运行。当线程遇到长等待时间事件(如高速缓存不命中)时,硬件切换到第二个线程以使用处理资源,而不是让服务器保持空闲状态。此设计允许其他任务使用原本将空闲的处理器周期,从而提高了总系统吞吐量。为了节约资源,两个线程共享许多系统资源,如结构寄存器。因此,将程序控制从一个线程切换到另一个线程需要数个周期。   最后,图中显示了同步多线程方式,其中处理器同时从多个硬件线程检索指令。处理器将多个硬件线程中的指令调度为同时执行。借助同步多线程,系统将根据环境进行动态调节,从而允许在可能的情况下执行每个硬件线程中的指令;当一个硬件线程遇到长等待时间事件时,它还允许另一个硬件线程中的指令使用所有执行单元。   同步多线程主要在以下上下文中有用:   在单个事务速度不如所执行事务的总数重要的商用环境中。同步多线程将通过大型或经常变化的工作集(如数据库服务器和 Web 服务器)增加工作负载的吞吐量。   具有高 CPI 计数的工作负载。这些工作负载往往很少使用处理器和内存资源。高 CPI 计数通常由大型工作机的高速缓存不命中率较高而导致。较大的商用工作负载在某些程度上取决于两个硬件线程是否共享指令或数据,或取决于两个硬件线程是否完全不同。共享指令或数据的工作负载可能从同步多线程中获得较大的好处,这些指令或数据可包括在操作系统中或单个应用程序中广泛运行的指令或数据。'3'
'编辑本段'IBM Power5 中的同步多线程技术(SMT)
  内容提要Power5 芯片是IBM Power 芯片家族中的新一代高端CPU 产品,它与Power4 在二进制上兼容,但在性能和功能上比Power4 有很大的增强。本文将介绍Power5 所支持的同步多线程技术Simultaneous MultiThreading 。
应用
  在单个事务速度不如所执行事务的总数重要的商用环境中。同步多线程将通过大型或经常变化的工作集(如数据库服务器和 Web 服务器)增加工作负载的吞吐量。 具有高 CPI 计数的工作负载。这些工作负载往往很少使用处理器和内存资源。高 CPI 计数通常由大型工作机的高速缓存不命中率较高而导致。较大的商用工作负载在某些程度上取决于两个硬件线程是否共享指令或数据,或取决于两个硬件线程是否完全不同。共享指令或数据的工作负载可能从同步多线程中获得较大的好处,这些指令或数据可包括在操作系统中或单个应用程序中广泛运行的指令或数据。
说 明
  同步多线程示意图传统的CPU 在某一时间只能处理一个指令序列,通常我们把它称为一个线程。在线程处理的过程中CPU 的处理单元需要不断调入指令与数据进行处理。随着CPU 技术的发展,CPU 的主频与性能不断提高,需要调入指令和数据的速度不断提高。但不幸的是内存技术的发展并没有跟上CPU 发展的速度,内存通常无法提供足够的指令和数据给CPU 进行处理。   为了解决这个问题,业界通常采用多级缓存的方式。CPU 处理单元中的寄存器是最快的,通常一个CPU 中有一、两百个寄存器,它可以在一个时钟周期内提供指令和数据。其次是一级缓存,他的大小通常为几十KB ,它需要几个时钟周期的访问时间。再下面是二级缓存,他的大小通常为几MB ,它需要十几个时钟周期的访问时间。然后是内存,从内存中取得数据需要几十个个时钟周期。而最慢的是硬盘,通常需要几千甚至几万个时钟周期的访问时间。   当CPU 需要处理下一条指令时,他通常按照寄存器、一级缓存、二级缓存、内存、硬盘这一顺序去查找。但如果在内存中仍然找不到需要的指令或数据时。系统会进行Context Switch ,终止此线程在CPU 上的运行,使其处于等待状态,而让其他的线程运行,当此线程需要的数据被调入内存后,此线程处于就绪状态,可以被调度到CPU 上运行。线程间的Context Switch 需要几十个时钟周期。   由此可见当CPU 需要从内存中取数据时,处理单元需要空转几十个时钟周期,有关统计显示当前CPU 处理单元的平均利用率不足25% 。为了提高CPU 处理单元的利用率,设计者采用了线程级的并行技术,即在CPU 的核心中执行一个以上的指令序列。对于操作系统来说,一个物理的处理器相当于两个逻辑的处理器,当前有三种不同的方式,实现多线程技术。   粗粒度的多线程,在任一时刻只有一个线程执行,当线程遇到一个长延迟事件时,如二级缓存不命中,则系统调度另一个线程执行,而不是让系统资源空转等待此线程。这一机制可以提高整个系统的利用率。这两个线程共享许多系统资源,如CPU 的寄存器和缓存等,因此这两个线程的切换比Context Switch 要快得多,只需要几个时钟周期。IBM 在使用PowerPC RS64 IV 处理器的pSeries 680 和pSeries 660…6M1 上使用过这种粗粒度的多线程技术。   另一种与粗粒度的多线程技术相对的是细粒度多线程技术,采用这种多线程的系统循环的执行两个线程的指令,这就需要在处理器的设计上增加许多冗余的部件。如果一个线程遇到个长延迟事件时,对应这一线程执行的时钟周期仍然没有被利用。   第三种多线程技术是同步多线程技术(SMT) ,与其他的多线程技术一样,同步多线程能够从多个线程中取出指令来运行,它能够同时执行不同线程的指令。通过同步多线程技术,系统能够动态调整系统环境,如有可能同时执行不同线程的指令。当一个线程遇到长延迟事件时,允许另一个线程使用所用的处理单元。   Power5 处理器的设计采用两路的同步多线程设计,虽然更多路的同步多线程也是可能的,但模拟现实,其所增加的系统的复杂性是不经济的。另外一个需要注意的问题是,同步多线程技术可能会由于缓存争用而降低整个系统的性能。
'编辑本段'Intel超线程技术有多少种?
  基于NetBurst架构的超线程:OOOE + SMT   基于Itanium架构的超线程:IOE + CMT   基于Atom架构的超线程:IOE + SMT   基于Nehalem架构的超线程:OOOE + SMT   SMT(Simultaneous Multi…Threading,同步多线程)实乃是一个专有名词,是一种类技术的名称,不仅仅Nehalem有采用,Pentium 4也有采用,还有很多其他商用处理器也有采用。正确的情况应该是,Nehalem的HT技术和Pentium 4的HT技术一样,都是属于SMT技术。   实际上,超线程技术在Intel的很多处理器里面都有使用,除了Pentium 4(NetBurst架构)、Core i7(Nehalem架构)之外,Itanium 2(Mondecito)和Atom(Silverthorne)处理器里面都有,然而它们携带的HT技术却不属于SMT!   在整理Intel的多种HT超线程技术之前,我们先来回顾一下MultiThreading多线程技术的分类,MultiThreading多线程就是在一个单个的处理核心内同时运行多个工作线程的技术,和CMP(Chip MultiProcessing,芯片多处理)不同,后者是通过集成多个处理内核的方式来让系统的处理能力提升——也就是现在常见的多核技术。现在主流的处理器都使用了CMP技术。   然而CMP技术大规模增加了相应的电路,从而增加了成本,MT(MultiThreading)技术却不是多线程架构异同这样,它只需要增加规模很少的部分线路(通常,约2%)就可以提升处理器的总体处理器能力,从而可以很简单地提升相关应用的性能。   MultiThreading(或作Multi…Threading)来源于可以追溯到上个世纪90年代开始的一个叫做ILP(Instruction Level Parallelism,指令级并行化)的思想,这个思想产生了一个叫做Throughput puting(吞吐量计算)的名词,用来提升如在线交易这样的并行计算的性能。Throughput puting的两种主要方式就是MultiProcessing和MultiThreading。   一开始,为了开发ILP,在过去的几十年中利用了超标量(Superscalar,同时具备多个执行器)、乱序执行(Out…Of…Order Execute,允许无数据关联性的指令同时运行)、动态分支预测、VLIW(Very Long Instruction Word,超长指令集 ) 等技术(前三种可在经典的Pentium Pro架构上看到,最后一个就是Itanium的特色技术)。然而,超标量使设计的复杂性急剧增加,同时,指令之间的数据和控制相关,可以开发的ILP 也有限,以及一些其它因素,使得经典的超标量结构处理器难以进一步提高处理器性能。   而且从应用的角度看,如在线事务处理OLTP、决策支持系统DSS、Web服务等这样的应用的特点是具有丰富的线程级并行性(Thread Level Parallelism)而缺乏ILP,因此也就促使了MultiProcessing和MultiThreading的出现。   MultiThreading多线程技术的思想有些类似于早期的分时共享计算系统,执行多个线程的处理器在遇到某个线程由于Cache Miss或者分支预测失败而停顿的时候,可以切换到另一个线程来执行。目前主流的MultiThreading具有着三种形式,差别在于线程间共享的资源以及线程切换的机制:   其中CMT和FMT都是在单个执行单元下的技术,不同的线程在指令级别上并不是真正的“并行”,而SMT则具有多个执行单元,同一时间内可以同时执行多个指令,因此前两者有时先归类为TMT(Temporal MultiThreading,时间多线程),以和SMT相区分。   首先介绍CMT——Coarse…Grained Mu

返回目录 上一页 下一页 回到顶部 2 2

你可能喜欢的