存档

2011年3月 的存档

CMP读书笔记四:降低单任务的延时(Improve Latency)

2011年3月31日 sigma 4 条评论 6,769 views

上一篇关于提高处理器吞吐量的文章讲到,CMP以及SMT技术可以大大提高处理器的吞吐量,提高处理器的并发处理器能力,从而分别提高处理器的峰值和效率。

但是,现在的很多串行程序,还不能直接从CMP以及SMT技术中获利。并且,这些程序中有很多都又对延时很敏感,比如说各类实时应用。对于这些程序,提高单个任务的性能,降低延时就很有必要。在CMP出现之前,各类的复杂的处理器结构的基本目标都是这个,包括超标量,提高主频等,其基本思想都是提高单处理器核心的性能。但是,当多核时代来临后,出现了一些新的方法,最常见的有:辅助线程(Helper thread),猜测多线程(thread-level speculation,TLS),核融合(core fusion)等技术,下面对这些技术进行简要的介绍。

辅助线程技术是通过在任务主线程外的加一个辅助线程(helper thread),辅助线程要比主线程跑地快一点,但是可以跳过一些代码,功能主要是为主线程完成一些预取操作,比如将数据从主存搬到cache上,从而降低主线程的cache miss等,提高主线程(也即任务)的执行速度。

猜测多线程技术是通过在执行过程中将一些原来的串行比较容易并行化的代码(如循环,分支,不同函数等)的动态地分配给几个线程执行,从而提高程序的执行速度,但是猜测多线程会带来额外的消耗,一是线程分配的消耗,另外就是猜测失败重新执行的消耗。一个好的猜测多线程机制必须解决以下几个问题:

  • 线程间通信:如何拆解程序,使不同线程之间的通信尽可能少,同时如何通信,使得线程间通信效率尽可能高。
  • 检测处理各种相关:为了保证程序执行的正确性,必须检测线程间的各种相关并进行处理,包括读后写(RAW),写后读(WAR),写后写(WAW)相关。不合适的线程分配会导致大量相关,从而导致线程间大量依赖导致堵塞。不明智的相关处理器机制会导致堵塞的时间很长,从而程序效率低下。
  • 猜测失败的处理:既然是猜测,难免就会失败。失败后的恢复或者重新执行的机制需要保证系统的所有相关状态要回到猜测执行之前的状态,这样才能保证安全和正确。
  • 猜测线程机制:猜测线程需要考虑各种因素:由于每个线程的buffer size有限(在每个线程提交之前,为了保证正确性,所有执行都需要buffer下来),导致每个线程的长度不能太长。必须减少线程间的真依赖,减少堵塞。多长的时间进行check,何时进行重新执行等等。

核融合是指硬件将多个核的各个功能部件,如取值,执行等融合成一个核,就像superscale那样,从而提高串行程序的执行速度。这东西貌似比较新,wikipedia都还没有相关内容,想了解的话,可以自己google scholar “Core fusion”。

最后,附上一张TLS的示意图,图来自《Chip Multiprocessor Architecture:Techniques to Improve Throughput and Latency》一书:
猜测多线程TLS示意图

CMP读书笔记三:提高吞吐量(IMPROVING THROUGHPUT)

2011年3月31日 sigma 没有评论 8,634 views

随着互联网的发展,web服务器成为了一个很大的应用。和传统的科学计算以及桌面应用不同,web服务器对延时并不是很敏感,因为网络传输延时往往大于服务器端的计算延时。相反的,对于web服务器,提高并发处理能力倒显得极端重要,因为现在的web站点动辄就是几万人,甚至上千万人在线(当然,对于这种系统,往往不是一个服务器,而是服务器分布在各地,导出都是CDN),因此,提高web服务器的处理器吞吐量就显得极端重要(记得计算所所长李国杰院士去年提过高通量计算,不知道是不是这个意思)。

提高处理器的吞吐量的基本思路很简单,那就是提高处理器的并发线程数,而提高处理器的并发线程数,方法又有两类,同步多线程(Simultaneous MultiThreading,SMT)以及多核(Multicore)。

传统的处理器核心只能并发执行一个线程,而一个线程内部往往会由于相关(数据相关,控制相关)导致流水线堵塞,从而导致处理器的部件不能充分利用(包括取值部件,功能部件等)。为了减少由于线程内的依赖所造成的堵塞,提高单个处理器核心的吞吐量,出现了在一个处理器核心同时执行几个线程的技术(因为线程间的依赖比线程内要少很多),即同步多线程技术,Intel又叫超线程技术(Hyper-Threading Technology,HT)。

同步多线程(SMT)是一种在一个CPU 的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上,同步多线程是一种将线程级并行处理(多CPU)转化为指令级并行处理(同一CPU)的方法。 同步多线程是单个物理处理器从多个硬件线程上下文同时分派指令的能力。同步多线程用于在商用环境中及为周期/指令(CPI)计数较高的工作负载创造性能优势。 同步多线程使您可在同一处理器上同时调度多个线程,从而充分利用处理器的各个部件,提高性能功耗比。下面是一副不同粒度的多线程技术的比较,同时从图中也可以基本看出同步多线程的基本原理。
同步多线程示意图

很多厂商,包括IBM,Sun,Intel的处理器都应用了同步多线程技术,MIPS昨天也发布了代号为神童(Prodigy)的64位同步多线程处理器

另外一方面,多核也是提高并发线程数的好方法,但是多核会增加大量的面积及功耗,从而大大降低性能功耗比,而性能功耗比对于24小时在线的web服务器是至关重要的,因此,不能简单的在超标量核心上堆积现有的复杂的超标量(Superscale)处理器核心。

考虑到web应用对延时不敏感的特点,可以将每个处理器核心设计的尽量简单(但可以保持其同步多线程的能力),从而提高处理器核心数目同时,对面积和功耗并不会提高,同时可以大大的提高处理器处理并发线程数(等于处理器核心数X每个核心的多线程数)的能力,提高处理器的吞吐量,并且提高性能功耗比。下面这幅图比较了超标量的多核处理器和简单的多核处理器的吞吐量和功耗的比较,可以看到,简单的核心优势极其明显。
标量的多核处理器和简单的多核处理器的吞吐量和功耗的比较

在设计web服务器处理器方面,Sun做到了极致,其Niagara系列处理器绝对是这个领域的巅峰之作(可惜一心做技术的sun却被一心赚钱的oracle收购了!)。

CMP读书笔记二:CMP简要介绍

2011年3月31日 sigma 2 条评论 8,584 views

注:上个学期就下过决心要把《Chip Multiprocessor Architecture Techniques to Improve Throughput and Latency》看完,并且写了一篇关于CMP的读书笔记,《CMP的提出》,之后,虽然看了下,但一直不想写,今天突然感觉应该把看的东西简要写写,算是总结,故有此文。为了使得这几篇文章脉络稍微清晰点,在这里先对片上多核处理器进行简要的介绍。

片上多核处理器(Chip Multicore Processor,CMP)就是将多个处理器核心集成到一个处理器芯片中,从而提高单个处理器的处理能力。

按照集成的处理器核心的数目,片上多核处理器可以分为多核处理器和众核(Manycore)处理器。

按照计算内核对等与否,片上多核处理器处理器又可以分为同构多核处理器和异构多核处理器。同构多核处理器的各个核心的结构相同,地位对等,现在主流的处理器厂商,如Intel,AMD所推出的处理器一般都是属于这类。异构多核处理器的各个核心的结构不同,功能也不同,地位也不同,分为主处理器和协处理器,IBM,索尼,东芝联手推出的Cell处理器就是一个典型的代表,Cell由一个Power主处理器单元(Power Processor Element ,PPE)和8个协同处理单元(Synergistic Processing Elements,SPE)组成,8个SPE结构不同的,不同的SPE可以快速的完成不同的类型的运算。

片上多核处理器的出现使得在一个处理器上并发地执行多个线程成为可能,大大的增加了处理器的吞吐量(throughput),一些吞吐量的应用,如web应用,可以充分的并且很简单地利用片上多核处理器代理的优势,详见关于提高处理器吞吐量的文章。但是,对于另外一些对延时敏感,需要高性能的应用,就不是那么容易直接利用多核带来的性能提升。

这些程序分为两类,一类是原来单核心处理器上的串行程序,这些程序不可以直接通过多线程手段在多核处理器上获得更高的性能,为了利用多核所能带来的性能提高,有两种方法可以提高这类程序的性能:第一种是通过增加一个辅助线程(helper thread),辅助线程要比主线程跑地快一点,但是可以跳过一些代码,功能主要是为主线程完成一些预取操作,比如将数据从主存搬到cache上;第二种是通过猜测多线程(thread-level speculation,TLS)来提高串行程序的性能,猜测多线程通过在执行过程中将一些原来的串行比较容易并行化的代码(如循环)的动态地分配给几个线程执行,从而提高程序的执行速度,但是猜测多线程会带来额外的消耗,一是线程分配的消耗,另外就是猜测失败重新执行的消耗。这部分内容详见以后会写的关于降低处理器单任务延时的文章。

第二类程序就是一些本来就是针对多核处理器设计的多线程程序,对于这类程序,可以直接将不同的线程映射到不同的处理器核心,但是,该类程序会因为不同的线程间的数据依赖以及共享资源的竞争导致不能取得理想的加速比。

该书电子pdf版:

Chip Multiprocessor Architecture Techniques to Improve Throughput and Latency

六西格玛(Six Sigma)管理简介

2011年3月30日 sigma 没有评论 7,619 views

六西格玛是一种能够严格、集中和高效地改善企业流程管理质量的实施原则和技术。它包含了众多管理前沿的先锋成果,以”零缺陷”的完美商业追求,带动质量成本的大幅度降低,最终实现财务成效的显著提升与企业竞争力的重大突破。

6Sigma的概念最早由摩托罗拉提出,推行六西格玛之后的摩托罗拉,产生巨大的蜕变,在品质方面超越当时的日本。但是,让六西格玛在短短几年内,成为许多世界级企业争相投入,作为降低成本、提高竞争力最大妙方的最大功臣,则是美国通用公司的杰克·韦尔奇。

6sigma管理即要求企业在整个流程中(而不仅限于产品质量),每百万个机会中的缺陷率少于3.4,这对企业来说是一个很高的目标。

随着将近二十年来的应用发展,六西格玛已由原先摩托罗拉创建成型的质量管理战略上升到了一整套系统的使公司达到世界级的质量和竞争力的管理策略和技术手段。其实理解6Sigma不需要很深的统计学技术或背景,事实上,“6Sigma是什么”能以各种不同的方式回答。如果概括地回答的话,可以说6Sigma管理是:“寻求同时增加顾客满意和企业经济增长的经营战略途径。”即:

  • 在提高顾客满意程度的同时降低经营成本和周期的过程革新方法;
  • 通过提高组织核心过程的运行质量,进而提升企业赢利能力的管理方式;
  • 在新经济环境下企业获得竞争力和持续发展能力的经营策略。

在这里我们将简洁、条理地定义6Sigma为:

    1、衡量企业产品质量、整体运作流程质量及整体竞争力水平的方法; 
    2、改进企业产品质量、整体运作流程质量及提升核心竞争力的方法; 
    3、真正实现卓越业绩和持续领先的管理哲学和方法论。 
    6sigma管理的核心理念实际上不仅是一个质量上的标准,它更代表着一种全新的管理理念,即要企业改变过去那种“我一直都这样做,而且做得很好”的思想,因为尽管过去确实已经做得很好,但是离6sigma管理的目标还差得很远
    以上内容来自关于6sigma管理的含义。更多关于六西格玛的信息请看百度百科六西格玛词条。

Sigma(西格玛)的一些含义

2011年3月29日 sigma 2 条评论 7,894 views

我的博客域名是Sigma.me,之前在About一文中就提到有空会写些东西来解释一下Sigma的各种含义。现在我将在此文中进行一一解释。

  1. Sigma最初的希腊字母∑的英文拼写,汉语一般音译为:西格玛,是第十八个希腊字母(大写Σ,小写σ)。在所有的数学希腊字母中,这算是一个很常见的字符,大写Σ一般表示求和的意思。小写σ的意义在不同场合不一样,比如说在统计学中,西格玛σ一般代表标准差 (standard deviation),它表示是各数据偏离平均数的距离的平均数,它是离均差平方和平均后的方根,用σ表示。标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。σ可以对工程中的变异进行量度,因此在工程管理中有一个叫six sigma(六西格玛)的概念。
  2. Sigma Corporation(适马股份有限公司):是1961年建成的生产135相机交换镜头的专业厂家,这比已经小有名气的专业生产镜头厂家腾龙、图丽股份有限公司晚11年之久,时值日本的相机制造业正处于战后以来蓬勃发展、赶超西德的阶段,因此135相机需要各式的大量的交换镜头。但是当时的三大相机名厂尼康、佳能、潘太克斯各自都有相当庞大的优质镜头系列为自己的相机配套,加之上述的两个出了名的生产镜头专业股份有限公司各自生产的镜头。对适马公司就形成了一个“高压”,适马公司的杰出的创办人,优秀的光学技术专家、精通生产与销售的企业管理总裁Michihiro Yamaki先生(由于他在光学镜头制造业上的成就、贡献及名望,后来还担任了日本摄影器材商会“JPEA”主席职务。仅此一点,可见适马公司在摄影镜头的研制与开发上举足轻重之地位),深知在逆境中如何求生存。公司成立伊始,就以高科技为目标、博采众家之长但又不步他人后尘的创新精神为宗旨,以物超所值的产品赢得了市场上的信誉(以上内容来源于中关村在线)。
  3. Sigma-Aldrich(西格玛试剂公司):Sigma-Aldrich公司是一家在生命科学领域有着领导地位且拥有高科技产品的公司。其生物化学,有机化学产品在基因组研究,生物技术,药物研发,疾病诊断及高科技化工生产方面广泛应用。客户群广泛分布于生物技术公司,高校,政府机构,医院及工厂。数以百万计的科学家和技术人员使用Sigma-Aldrich的产品。Sigma-Aldrich公司已在36个国家建立直销公司,在全世界有7900多雇员提供优质的服务。
  4. 西格玛大厦:前微软亚洲研究院(MSRA)和微软亚洲工程院所在地,据说该栋楼取名叫Sigma大厦的原因是:Sigma表示数学中的求和,而团队合作精神是微软企业文化的核心,所以可以sigma大厦理解为“集大成”。不过貌似现在微软已经搬到了位于北京中关村核心商务区中关村广场新修建的微软大厦。我的博客的副标题,work hard,play hard其实就是来自位于西格玛大厦微软亚洲研究院的一句话“work hard,play harder”。
  5. Sigma乐队:华研新推出的唱跳组合,由周定纬、李杰宇、林维哲组成。

最后附上一张sigma三种写法的图:

无觅相关文章插件,快速提升流量