《2022年提高多核处理器线程执行效率的技术文件 .pdf》由会员分享,可在线阅读,更多相关《2022年提高多核处理器线程执行效率的技术文件 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、29高性能计算技术提高多核处理器线程执行效率的技术编译:董立平周丽江南计算技术研究所无锡摘 要:随着多核技术在新一代高性能微处理器中的普遍应用,微处理器设计已进入多核时代。本文着重从实现技术的角度,介绍了一些提高多核处理器线程执行效率,及消除多核处理器各种延迟的技术和产品,为切实提高多核处理器的执行效率和处理性能,提供了有效的技术途径和可供借鉴的设计方法。关键词:多核技术,高性能微处理器,线程,执行效率,延迟引言并行程序的设计水平是提高多核处理器执行效率的前提,然而在并行程序设计中仍有许多有待解决的难题,例如可并行执行任务的发现、任务的线程化、同步协议的定义与安装、竞争与死锁的处理、并行处理的
2、实现和容错及确保运算的正确性等。在目前这种软件制作方法对机器性能影响巨大的时代,无论是处理器厂商还是操作系统研发者都在致力为软件开发人员提供技术支持和相应产品,旨在降低并行化程序的设计难度,同时提高所开发程序在多内核上的执行效率。提高多核处理器线程执行效率的技术随着集成电路技术物理极限的日益临近,多核化正在成为高性能微处理器发展的重要方向。然而怎样才能提高多核处理器的线程执行效率,是亟待解决的一个重大课题。为此,一些国外公司开发了一系列相关技术,下面将简要介绍其中一些关键技术。加载与对应的操作系统实现从单核处理器向多核处理器过渡的第一步就是要将现有软件移植到多核处理器中运行。首先,就是要采用与
3、相对应的操作系统,利用其并行功能使软件人员生成的进程及线程,能够根据多个内核的忙闲情况进行动态分配,用以实现多个应用软件和多线程的并行执行。以往,与对应的操作系统几乎都是面向服务器和个人计算机的,直到最近,才推出了以嵌入式机器为主要对象的版实时操作系统。这些版实时操作系统与以及等现有与对应的操作系统,在线程的调度功能上有着很大的差别。例如等配有专门的线程调度程序,可将每个线程优先分配给特定的内核,即所谓的“亲和性”方法。为了提高缓存的命中率,优先分配给特定的内核,如果该内核不空再分配给别的内核。与之相反,加拿大软件系统公司的“”等,则配备了在进程和线程分配时限定内核的功能,即让以独占形态进行处
4、理的,面向单核的应用软件可原封不动地在多核型处理器上执行,以简化现有软件向多核移植的程序。例如可按下述方法将线程分配给多个核心:首先确认是否限制可分配新线程的核,如果可分配的核有空则将线程分配给它;如果它正在执行别的线程,则比较正在执行线程与处于等待状态线程的优先级,若正在执行线程的优先级低,则切换线程。分配核的限制,可在用于描述操作系统启动顺序的脚本上指定详细过程。所谓限定分配核功能就是指,将要求实时性的应用软件分配给一个核心,而后再将其它应用软件的线程动态地分配给剩下的、且处于空闲状态的核的机制。其主要作用是确保实时性,即通过这一机制在不中断其它任务执行的情况下,确保要求实时性的任务执行。
5、线程轨迹可视化当将传统软件向在多核型处理器上工作的,与名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -30高性能计算发展与应用年第三期总第二十四期对应的操作系统移植时,程序的调试是一个最大的难题。与能很好把握单一动作的单核不同,多核在发生问题时,必须在确认多个内核究竟发生了什么的同时探明原因。为此,一些实时操作系统厂商,纷纷开始提供用于多核处理器运行状况分析的工具。例 如,软 件 系 统 公 司 提 供 的 开 发 环境“”等,就实现了哪个线程正被分配给核心、哪个线程生成哪个线程,以及线程间发生了怎样的通信等的可视化。其目的在于使检测线程间的竞争及死锁,以及伴随线程等待
6、而产生的等待时间延长等,严重阻碍性能提高的重要因素的发现变得更加容易。微处理器厂商也已经开始提供具备同样功能的工具,例如,美国公司的“”、公司的“”等,这些产品都具备实时显示线程运行状态的功能,同时还可用不同颜色显示共享变量的排他控制,及线程间发生等待时的等待时间。简化并行化标识完成现有软件向多核型处理器移植作业后,接下来就要致力于可使处理性能提高的软件并行化工作。当发现某任务负载过大将成为处理瓶颈时,可采用使该任务在多个核上并行执行的多线程技术,并通过这一技术实现软件处理时间随内核数量增加而缩短的目的。最常用的多线程化方法就是,在语言中使用时,可通过管理线程用来标识线程的生成和同步等,也可在
7、程序设计语言级使用与线程管理标注对应的语言。但在软件开发者必须在源代码中标明所有线程的生成和同步,及线程间的排他控制等信息的多线程程序设计中,可能会因熟练程度不够,而导致工作量增加的问题。目前,人们开始利用称为“”的来使多线程化变得易行。与基于和的多线程化相比,的优势在于其需在源码中标明的线程管理指示要少得多,仅需在多线程分割部分之前用“”插入标示开始的指示即可。采用所谓“”型并行化技术,即在主线程执行过程中,可将负荷过重的部分分割成多个线程执行,等执行完这些线程再继续执行主线程。至于需要将哪部分分成多线程,则由软件开发者自行指定。将软件开发者指定的线程数最大化,通过编译器进行线程分割,但是,
8、与对应的编译器却无法通过调整线程数及其粒度,来谋求处理性能的提高及整合。因此,线程间共享变量的排他控制和主线程分割后线程中变量的共享等若干问题的解决必须由软件开发者明确指定。配备并行化库在以并行化为前提进行新的软件开发时,使用第三方提供的完全并行化软件库是一种很好的方法。例如,美国公司就为“”处理器提供了完全并行化的科学计算库“()”,并且还为其配备了高速傅立叶变换功能。通过从“”的通用核上的软件中调出的库,可以将信号处理机从任务中分离出来,但是,其前提是它只能在用于向局部存储器传送指令和数据的固件上执行。面向“”的软件开发还准备提供基于并行处理模型的通用并行处理模板,具体而言,就是“”硬件提
9、供的、功能抽象化的基本层和能够提供各种函数功能的主干层。我们将这种使用了主干的并行化程序设计雏形称之为并行模板。除此之外,公司于年月开始面向不能使用与对应编译器的执行环境,及常用语言分类库的情况提供“()”。是一种,面向循环和分类处理,及散列表和数组处理的语言分类库,由于其排他控制和线程间同步所需指令是事先插入的,因此软件开发者用不着在线程管理上浪费时间。面向多核时代消除各种延迟因素的技术随着核数的不断增加,面向多核型处理器的软件开发也变得越来越困难。这主要是因为,需要使用多个核就必须细化线程的粒度,尽量割分出更多的线程。然而,伴随着众多线程的生成和同步,及线程间的排他控制等必然会增加很多开销
10、,从而使开发者陷入两难的窘境。为了有效化解上述难题,人们开始尝试研究相关技术。如将共享变量的排他控制从防患未然型变为事后处理型以缩短等待时间;投机执行线程以提高内核的利用效率,及使处理器具备与操作系统无关的线程调度功能等。从防患未然到事后处理由 于 多 核 处 理 器 的 广 泛 使 用,一 种 能 有效 化 解 并 行 程 序 设 计 中 许 多 问 题 的 重 要 技 术 “”引起研究者的普遍关注。“”对同步协议的定义、竞争的解除、死锁的回避和可扩展性的提取等都十分有效。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 4 页 -31高性能计算技术在实际进行多线程程序设计时,要
11、设定比实际需要更大的临界区,并锁定所有只使用部分数据的数组。在真正需要的部分不进行排他控制,是因为它不仅会增加软件开发者的工作量,同时进行排他控制本身会使延迟时间大大增加。当两个线程有可能分别选择同一数组的不同数据进行处理时,为了防止可能发生的竞争唯有锁定所有数组。作为一种补偿在某线程锁定的领域,发生来自其它线程访问的频度会随着线程数的增加而提高。其结果是在锁定释放之前,将暂停发生竞争线程的执行,从而使开销大幅增加。然而,能从根本上解决这一问题的,不是传统的防患未然型的排他控制,而是只有当变量发生竞争时才进行处理的事后处理型排他控制技术“”。软件开发者只需指定用于监视竞争发生的部分,而无需就排
12、他控制本身进行详细指定,从而减轻了开发者的负担,同时提高了处理性能。收集共享变量的使用情况公司对“”的研究表示出了极大的兴趣,试制了组装有编译器和中间件的“”。作为检测共享变量竞争的算法,当先发生读出时,采用将后发生的写入信息记入缓存,待执行写入的线程结束时,其结果即反映在主存中;而当先发生写入时,则选择暂停读出线程的操作,待写入线程结束后再恢复读线程的方法,以缩短线程等待的时间。公司的“”是为用开发的应用软件开发的,其编译器“”将用于监视共享变量读出和写入的扩展指令植入了线程中。由执行编译器生成的目标码的虚拟机“”的扩展部分“”,根据编译器植入的扩展指令调度线程,并负责收集线程处理共享变量的
13、履历等,并指示保留读出或写入哪些线程、哪些共享变量的履历,及发生竞争时暂停、恢复线程的时机。当用粗粒度设定基于的竞争监视部分时,可得到与人工详细设定线程间排他控制相近的处理性能;而当在核上运行散列表处理程序时,则可得到比采用同粒度排他控制高近倍的处理性能。投机执行线程公司为了提高多核处理器的运算性能,开发出了基于编译器的自动并行化和投机执行并行化线程的技术,即将有可能包含依赖关系的线程,投机地与其它线程并行执行,一旦检测出问题就停止或重新启动该线程执行的方法。将该技术称为“”,它由自动并行化编译器和控制线程投机执行的微处理器硬件扩充部分构成,它是将能充分发挥指令级并行性的超标量和技术引入线程级
14、的产物。公司曾做过这样的试验,用由个内核构成的微处理器进行模拟时,可得到人工并行化倍的处理性能,而用实现并行化或投机执行则可得到倍的处理性能。要想使用就要将软件开发者为单核开发的程序,输入专用的自动并行化编译器,再由这个编译器试验运行生成的目标码。此时可以执行履历为基础,把握该程序的动作,分成多个线程,并在每个线程中植入生成下一个线程的“”指令。具体就是:认真分析可能成为长时间等待其它线程开始重要原因的顺序处理部分,尽可能将可并行执行的处理分成多个线程,并针对软件开发者原本多线程化的部分,改善线程转移和排队的位置。在 微 处 理 器 中 追 加 用 于 执 行 编 译 器 插 入的“”指令的扩
15、展指令部分,当该扩展指令部分执行“”指令时,相邻内核可执行新线程。当有个内核时,可按“内核”的顺序生成线程。之所以采用这种结构,是因为它更容易检测出意想不到的竞争。通过竞争检测重新执行线程因为软件执行条件和内核的空闲状况是随时变化的,所以线程间的定时不一定与用编译程序试验执行时完全一致。此时可能会检测到,在用编译器分析时未发现的竞争,因此要使用“内核本应比内核先执行”的关系。如果在后段线程处理的数据中,检测出有从前段线程重写的数据,就要改为执行后段线程,因此必须在每个内核中保留用于记录读出或写入数据履历的缓冲存储器。对在信息处理和多媒体处理等应用软件中的使用效果进行了测试,结果表明用核微处理器
16、执行的性能是用单核执行的到倍。用专用电路分配线程一旦生成多线程,操作系统提供的线程调度就有可能成为全系统处理性能的瓶颈。为了解决这一问题,出现了直接由处理器硬件向内核分配线程的概念。美国公司在其计划于年末推出的量产化核中就采用了该技术。同时,在其下一代产品核处理器的体系结构“”中,也 集 成 了 具 有 线 程 分 配 功 能 的 专 用 电 路“”。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 4 页 -32高性能计算发展与应用年第三期总第二十四期由用于存储内核工作状况,及正在执行线程的优先等级等信息的存储器,和基于上述信息进行线程调度的专用电路组成。一旦从某个内核接收到生成
17、线程的委托时,即将其追加到等待执行线程的队列中,并分配给空闲的核或正在执行优先度较低线程的核。该通过与可以倍于核工作频率的速率工作的网络结合,可大大缩短将新线程分配给核的时间,大约在个周期以下,只相当于线程调度程序的约。结束语目前,高性能微处理器正逐步进入多核时代,怎样才能充分发挥多核的并行处理优势,越来越受到人们的普遍关注。本文介绍的提高多核处理器线程执行效率,及消除多核处理器各种延迟的技术,就是提高多核处理器性能最有效的途径之一,相信这一技术在未来的岁月中将更加成熟,并被更多的产品和用户所接受。参考文献:,:,:要闻集锦据网站年月日消息报道,近日,透露了一款开发中的用以帮助应用开发人员在多
18、核与众核平台上编写并行程序的工具套件“”(并行工作室)。这款工具套件包含种软件,不仅能够为和程序员提供合适的工具,还在这款软件工具套件中集成了所需的专业知识。中包含的款软件分别是、和。款软件的功用涵盖了应用开发的整个周期,包括计划、编写代码、调试和优化。是一项很有意义的技术,决定用它来解决没有或仅有很少并行编程知识的程序员所面临的经验缺乏的问题。并非一种自动并行化工具,它的作用只是帮助程序员在已有的代码中加入并行性。它可以利用为其编译器和其它产品开发的静态和动态代码分析功能,帮助程序员分析代码中存在的影响并行性的问题,并就这些问题给出解决建议。是程序员用来编写代码的环境,它直接基于已有的代码开发工具。是调试行为的焦点,它的基础是线程检查器。独特的优势在于可以找出尚未显现出来的。是基于的一种原型性能调试工具设计的。这款工具在发布后广受程序开发人员的好评,很快就成为网站上下载量最大的软件之一。此外,最吸引用户的地方还在于,它完全可以独立工作,并能很好地支持来自于微软、和其它公司的编译器和工具。这样,程序员们就可以自由地在以前的工具和之间任意切换,按需使用各个部件。将在年上半年向开发人员发布这款软件工具套件的测试版。开发用于并行编程的软件工具套件(李苏)名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 4 页 -