8.9 其它共享资源的优化

在多线程应用中的资源优化依赖于处理器拓扑层级内相关联的Cache拓扑以及执行资源。在第7章中讨论了处理器拓扑以及标识处理器拓扑的一种软件算法。

在带有共享总线的平台中,总线系统被处于SMT层以及在处理器拓扑中的处理器核心层的多个代理所共享。因而多线程应用程序设计应该起始于管理对多个处理器代理可用的总线带宽的方法,这些处理器代理以一种合理的方式共享同一个总线连接。这可以通过提升独立应用程序线程的数据位置性或允许两个线程利用一个共享的L2 Cache(在该平台中,共享Cache是可用的)来达成。

一般来说,优化一个多线程应用的构建块可以从一个独立的线程开始。在第3章到第9章的所讨论的准则极大地应用于多线程优化。

调整建议3:先优化单线程代码来最大化执行吞吐。

调整建议4:引入高效的线程模型,利用可用的工具(诸如Intel Threading Buiding Block,Intel Thread Checker,Intel Thread Profiler)来实现最优的关于物理处理器个数或处理器核心的处理器尺度。

8.9.1 为HT优化的扩充的机会

在Intel微架构代号名为Nehalem中的超线程技术(HT)的实现与先前HT实现的处理器有所不同。它为多线程软件提供了更广泛的机会来利用HT并实现更高的系统吞吐,涉及更广泛的应用程序问题。这章提供了一些启发式的建议并描述了某些情景,在代号名为Nehalem的Intel微架构中的HT提供了更多优化机会。

第2章涵盖了某些在超线程技术中的微架构性能增强。这些增强特性中有很多都围绕着多线程软件这个中心点,就共享可能被多于一个线程上下文所使用的公共硬件资源而言。

不同的软件算法以及负载特征可能会产生不同的性能特征,由于它们对关键架构性资源的需求,可能在几个逻辑处理器之间被共享。对于各种不同的架构上子系统的简要比较在表8-3中概述,而该子系统会在对HT进行软件调整中扮演重要角色。

表8-3:与HT实现相比较的架构性资源

微架构子系统  ||  Intel微架构代码名Nehalem  || Intel NetBurst微架构

||  06_1AH  ||  0F_02H, oF_03H, 0F_04H, 0F_06H

发布端口,执行单元:  ||  三个发布端口(0,1,5)被分派来处理ALU、SIMD、FP计算  ||  不平衡的端口,快速ALU、SIMD和FP共享同一个端口(端口1)

缓存:  ||  在ROB、RS中有更多条目,填充缓存等等,具有适度的流水线深度  ||  在缓存条目和流水线深度之间有较少的平衡

分支预测以及错误对齐的存储器访问:  ||  更健壮的在错误预测之后的带有立即改造的投机执行;高效的Cache分裂的处理  ||  更多架构性的危机导致流水线为两个线程都被清除

Cache一致性:  ||  更大且更高效  ||  更多架构上的危机需要做调配

存储器与带宽:  ||  NUMA,每个插座对DDR3有三个通道,每个插座高达32GB/s  ||  SMP,FSB或双FSB,每个FSB高达12.8GB/s

对于计算绑定的工作负载,Intel NetBurst微架构趋于偏向以相对来说高CPI(隐退连续指令的平均周期)来执行的线程上下文。在硬件层,这部分由于微架构中发布端口的不平衡,由于端口1与快速ALU、缓慢ALU(任务更重的整数操作),SIMD以及FP计算所共享。在软件层,高CPI以及可能作为提供HT利益的良性的催化而出现的某些起因可以包括:长延迟指令(端口1),一些L2命中,偶尔的分支预测失败,等等。但Intel NetBurst微架构重的流水线的长度经常强行使用额外的内部硬件限制而限制软件利用HT的能力。

在表8-3中列出的微架构增强期望为计算绑定的工作负载提供更宽广的软件优化机会。由两个计算绑定的线程而竞争同一个执行单元,可能要比起数据分解线程更关注选择一个功能分解的线程模型。代号名为Nehalem的Intel微架构将可能更有助于支持程序员选择最优的线程分解模型。

存储器密集的工作负载能展示范围广泛的性能特征,范围从完整的并行存储器交通(吃透系统存储器带宽,就好比在众所周知的Stream的例子中),受存储器延迟支配的存储器交通,或任一种类型的计算操作与存储器交通的各种混合。

在Intel NetBurst微架构中的HT实现可以对工作负载特征的后两种类型的某些提供利益。在代号名为Nehalem的Intel微架构中的HT特性能加宽后两种类型工作负载特征的操作封装来传递更高的系统吞吐,由于它支持非统一的存储器访问(NUMA)、更高效的连接协议,以及随物理处理器的个数可缩放的系统存储器带宽。

某些Cache层级的Cache层可以被多个逻辑处理器所共享。使用Cache层级对于软件是一个重要方法来提升存储器交通的高效性,并避免饱和系统存储器带宽。引入Cache分块技术的多线程应用可以希望对一个目标Cache层进行划分来利用超线程技术。可替换地,共享同一个L1和L2的两个逻辑处理器,或共享L3的逻辑处理器可能希望根据它们相对的拓扑关系来共享资源。对处理器拓扑枚举以及Cache拓扑枚举,伴有参考代码的白皮书已经被发行了(见第1章结尾处的参考)。

Intel64及IA-32架构优化指南第8章多核与超线程技术——8.9 其它共享资源的优化的更多相关文章

  1. 【转】Spark性能优化指南——基础篇

    http://mp.weixin.qq.com/s?__biz=MjM5NDMwNjMzNA==&mid=2651805828&idx=1&sn=2f413828d1fdc6a ...

  2. 【转载】 Spark性能优化指南——基础篇

    转自:http://tech.meituan.com/spark-tuning-basic.html?from=timeline 前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能 ...

  3. Spark性能优化指南——基础篇(转载)

    前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...

  4. Spark性能优化指南——基础篇

    本文转自:http://tech.meituan.com/spark-tuning-basic.html 感谢原作者 前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一 ...

  5. Spark性能优化指南——基础篇转

    前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...

  6. Spark性能优化指南--基础篇

    前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能复用同一个RDD 原则三:对多次使用的RDD进行持久化 原则四:尽量避免使用shuffle类算子 原则五:使用map-side预聚 ...

  7. Spark性能优化指南——基础篇(转)

    [转]Spark性能优化指南——基础篇 http://mp.weixin.qq.com/s?__biz=MjM5NDMwNjMzNA==&mid=2651805828&idx=1&am ...

  8. Mina架构与优化指南

    MINA架构 这里,我借用了一张Trustin Lee在Asia 2006的ppt里面的图片来介绍MINA的架构. Remote Peer就是客户端,而下方的框是MINA的主要结构,各个框之间的箭头代 ...

  9. 站点部署,IIS配置优化指南[转]

    站点部署,IIS配置优化指南 目录 一.       设置应用程序池默认设置 二.       常规设置 三.       优化回收策略 四.       性能 五.       IIS初始化(预加载 ...

随机推荐

  1. SpringMVC【一、概述】

    今天是端午前最后一天上班,今天开始加上端午3天学习SpringMVC~! 参考资料: http://blog.csdn.net/swingpyzf/article/details/8885459 概述 ...

  2. 安全开发Java动态代理

    关于安全开发的一些思考 之前面试某宝的时候,某人问过我,如果解决开发不懂安全的问题,就比如说SSRF,XEE这样的漏洞,如果一旦发生,应该如果立刻去响应,并帮助开发人员修复漏洞,难道写一个jar包?然 ...

  3. Hadoop_30_MapReduce_多job串联

    一个稍复杂点的处理逻辑往往需要多个mapreduce程序串联处理,多job的串联可以借助mapreduce框架的JobControl实现 示例代码:  每个job装配完成才可以进行下面代码: Cont ...

  4. Webpack v4.8.3 快速入门指南

    一.进入 https://webpack.docschina.org/ 官方文档,点击 "文档" 进入 文档页面,文档中包含  “概念,配置,API,指南,LOADERS,插件&q ...

  5. redis主从+哨兵 安装配置二

    实验环境: 192.168.2.201 centos7 master sentinel 192.168.2.202 centos7 slave   sentinel 192.168.2.203 cen ...

  6. mali gpu debugger

    https://community.arm.com/developer/tools-software/graphics/b/blog/posts/accelerating-mali-gpu-analy ...

  7. 17-SQLServer使用证书认证的方式搭建数据库镜像

    一.注意点 1.数据库的模式要是完整模式. 2.要对数据库完整备份和事务日志备份,分别还原到镜像库上,使用NORECOVERY模式. 3.镜像数据库是不允许删除和操作,即便查看属性也不行. 4.先删除 ...

  8. mysqldump表损坏问题

    遇到的问题:mysqldump: Error 1194: Table 'user' is marked as crashed and should be repaired when dumping t ...

  9. 【bzoj2141】排队 [国家集训队2011]排队(树套树)

    题目描述 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家乐和和. 红星幼儿园的小朋友们排起了长长地队伍,准备吃果果.不过因为小朋友们的身高有所区别 ...

  10. 1、Mat类的属性、方法

    Mat类分有两个部分:矩阵头和指向矩阵数据部分的指针 Mat类的属性: rows  矩阵的行数 cols   矩阵的列数 dims  矩阵的维度,例如5*6矩阵是二维矩阵,则dims=2,三维矩阵di ...