您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 2009并行计算与多核程序设计13-14多核多线程研讨课
1并行计算与多核程序设计研讨课多核多线程陈天洲,施青松,胡威{tzchen,zjsqs,ehu}@zju.edu.cn2009年12月16日,玉泉校区曹西101浙江大学软硬件协同设计实验室多线程讨论话题1多核多处理器服务器上的线程,运行机制是怎么样的浙江大学软硬件协同设计实验室多处理器每个处理器是多核塔式服务器机架式服务器(1U-4U)刀片服务器bladeserver主要结构为:一大型主体机箱,内部可插上许多“刀片”,每一块刀片上就是一块系统母板类似于多个独立的服务器,可以通过本地硬盘启动自己的操作系统每一块刀片可以运行自己的系统,服务于指定的不同用户群,相互之间没有关联可以用系统软件将这些主板集合成一个服务器集群,成为集群模式所有的刀片可以连接起来提供高速的网络环境,共享资源,为相同的用户群服务在集群中插入新的刀片,就可以提高整体性能热插拔刀片服务器分类服务器刀片、网络刀片、存储刀片、管理刀片、光纤通道SAN刀片、扩展I/O刀片等等特点克服了芯片服务器集群的缺点实现了机柜优化浙江大学软硬件协同设计实验室任务分别适合怎么样的多核多处理器?单进程单线程多进程单线程单进程多线程多进程多线程哪种任务会更优?浙江大学软硬件协同设计实验室多线程讨论话题2L2cache共享与否,与程序设计的哪些部分有关系浙江大学软硬件协同设计实验室缓存的功能本身核心上线程访问变量是否hit其他核心上线程访问变量能否hit缓存大小缓存共享机制浙江大学软硬件协同设计实验室共享级别共享L1的多核,少见处理器核心可以L2共享,也可以L2独享处理器核心可以L3共享AMD4核处理器Barcelona一个4核共享的2MB的三级CacheMagny-Cours皓龙处理器两个6核拼接,12MBL3Intel六核心DunningtonXeon7400三级缓存12/16MB八核心Nehalem-EXXeon服务器处理器每个处理器核支持两路同时多线程,8处理器共享24MB三级缓存IBMpower6的L2私有化4MBP5是共享的浙江大学软硬件协同设计实验室UMACPU访问任何地址所需要的时间都是相同的,这种内存就叫UMANUMA非一致访问分布共享存储技术non-uniformmemoryarchitecture是在多处理系统中配置微处理器的簇的方法例如簇一般由四个微处理器(例如四个奔腾微处理器)组成,这四个微处理器通过一条局域总线(例如外围组件互联总线)与一个单独主板(也可能是一个卡)上的共享内存(就是L3缓存)连接单独的处理器内存看起来就像一个内存访存顺序首先察看本身的L1缓存然后是附近的稍微大些的L1然后是L2缓存芯片再然后是NUMA结构在寻找数据之前提供的L3缓存位于另一个微处理器附近的远程内存“浙江大学软硬件协同设计实验室多路Nehalem会形成一个ccNUMA架构ccNUMA:cachecoherentNon-UniformMemoryAccess多个Nehalem处理器之间使用MESIF协议来保持缓存一致性浙江大学软硬件协同设计实验室多线程讨论话题3线程迁移,软亲和与硬亲和,对多核程序有何优劣浙江大学软硬件协同设计实验室线程迁移线程从一个CPU移动到另一个上的过程称作迁移目的是负载平衡、任务并行亲和的作用程序员操控处理器核心线程的节点亲和性(Nodeaffinity)尽量在线程的本地内存上为其进行分配,并尽量让线程保持在该节点上常见于NUMA中强调低延迟访问时候缓存亲和性(CacheAffinity)让数据尽量长时间的保留在某一个CPU的缓存中,而不是来回在多个CPU的缓存里换来换去编程如何实现这几个亲和性?浙江大学软硬件协同设计实验室多线程讨论话题4线程这个级别并发,是否可更细致浙江大学软硬件协同设计实验室硬件线程Intel的HT技术SUN的SMT技术AMDBulldozer技术单核多线程技术(multi-threadingtechnology)2011年推出Bulldozer“推土机”技术,增加Bulldozer器件双核成本增加75%,双核的性能提高90%SSE5浙江大学软硬件协同设计实验室浙江大学软硬件协同设计实验室并发级别指令级(Instructionlevel)并发一条单指令中的多个部分被同时执行时,便产生了指令级的并发汇编加速流水线、微融合、宏融合例程级(Routinelevel)并发对象级(Objectlevel)并发corba应用程序级(Applicationlevel)WBS浙江大学软硬件协同设计实验室虚拟化计算元件在虚拟的基础上而不是真实的基础上运行可以扩大硬件的容量,简化软件的重新配置过程CPU虚拟化技术可以单CPU模拟多CPU并行允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响软件虚拟化硬件虚拟化浙江大学软硬件协同设计实验室事务内存来自于数据库事务的概念无锁编程(Locklessprogramming)使用原子操作(AtomicOperations)和同步路障(Memorybarrier)来完成线程间同步的功能事务内存是数据的集合通常存放在主存中,应用于程序设计可以通过事务来访问事务内存(内存事务)事务内存系统负责正确执行事务程序员只需将对事务内存的操作封装为事务,无需考虑复杂的事务同步问题浙江大学软硬件协同设计实验室事务内存分为两类延迟更新(deferred-update)一个线程对仅对对象的一个副本进行改变,如果此次执行不与其他线程发生同步冲突,则此事务成功并执行提交(Commit)动作,如果失败则执行回滚(Abort或Rollback)动作。直接更新(direct-update)直接更新则是直接对对象进行更新,并使用显式的同步语句避免其他事物在进行更新的时候修改此对象。显然在直接更新时需要系统记录此对象的原始值,以便在回滚时可以恢复两种实现方式基于软件的STM(SoftwareTransactionalMemory)1993基于硬件的HTM(HardwareTransacationalMemory)1995浙江大学软硬件协同设计实验室多线程讨论话题5几种线程同步机制分别适用于哪些场合浙江大学软硬件协同设计实验室共享变量条件变量RW锁MutexMutex是一个核心对象,可以在不同的线程之间实现“排他性占有”,甚至几十那些现成分属不同进程它是:一个核心对象。如果拥有mutex的那个线程结束,则会产生一个“abandoned”错误信息。可以使用Wait…()等待一个mutex。可以具名,因此可以被其他进程开启。只能被拥有它的那个线程释放(released)浙江大学软硬件协同设计实验室SemaphoreSemaphore被用来追踪有限的资源。它是:一个核心对象。没有拥有者。可以具名,因此可以被其他进程开启。可以被任何一个线程释放(released)。事件Eventobject通常使用于overlappedI/O,或用来设计某些自定义的同步对象。它是:一个核心对象。完全在程序掌控之下。适用于设计新的同步对象。“要求苏醒”的请求并不会被储存起来,可能会遗失掉。可以具名,因此可以被其他进程开启。临界区适用范围是单一进程的各线程之间。它是:一个局部性对象,不是一个核心对象。快速而有效率。不能够同时有一个以上的criticalsection被等待。无法侦测是否已被某个线程放弃。浙江大学软硬件协同设计实验室多线程讨论话题5多线程运行时,如何优化内存管理产生的失效浙江大学软硬件协同设计实验室什么时候访存失效?CachemissPagefault算法设计可以优化cacheStack设计可以优化page内存在哪里Stackinti;Heapnew,malloc预取机制浙江大学软硬件协同设计实验室多线程讨论话题7线程之间通讯机制有哪些,优劣如何浙江大学软硬件协同设计实验室全局变量事件消息硬件是如何实现的?浙江大学软硬件协同设计实验室多线程讨论话题8线程异常终止方法浙江大学软硬件协同设计实验室主执行线程终止了,进程也就随之终止1、在自身内部调用EndThread/Exitthread2、在线程的外部调用TerminateThread来强行终止一个线程的运行然后调用CloseHandle函数释放线程所占用的堆栈一般属于不安全:线程所占用的资源也不释放3、Return改变全局变量,使线程的执行函数返回,则该线程终止28谢谢
本文标题:2009并行计算与多核程序设计13-14多核多线程研讨课
链接地址:https://www.777doc.com/doc-3633975 .html