|
|
|
|
移动端

2.3.1 面向性能的架构

《高性能并行珠玑:多核和众核编程方法》第2章从正确到正确&高效:Godunov格式的Hydro2D案例学习,本章将探讨一段科学模拟代码,这段代码是一个以气体动力学为基础的模拟程序。这份程序的输出结果正确,但(初始版本)性能欠佳。本节为大家介绍面向性能的架构。

作者:张云泉 等译来源:机械工业出版社|2017-11-14 17:35

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


2.3 现代计算机架构的特征

为了让大型程序高效运作,程序员心中必须大致明白程序是怎样运作的。这并不意味着每个程序员要成为架构师和编译器专家——一个能够表达系统重要的性能方面的工作模型就已经足够了。

2.3.1 面向性能的架构

性能和效率一直是计算机硬件制造商最关心的内容,同时在现代计算架构中存在的大量技巧就是为了直接解决性能问题。

内存子系统。近几十年,计算机内存经常被组织成多级架构,这种多级架构是一种逐渐减少容量以增加带宽和减少延时的妥协方案。除了主存之外,几乎每个现代计算机至少有两级缓存,现在三级缓存也开始变得更加普遍。内存子系统在多核和多嵌套字系统中的性能也变得更加重要。

对于越来越深的内存体系结构来说,主存带宽和计算能力间越来越大的差距是造成深度内存架构的部分原因,同时,工作集和缓存容量在性能中所扮演的角色也是无法忽视的。

虚拟内存在现代系统中也是相当普遍的,现代系统也支持不同大小的页。硬件对页的支持已经让大多数代码无须考虑TLB的容量,但是一定要注意有些特定情况。

线程级并行。在过去的十年中,几乎每个主流处理器开始增多其内核的数量,同时,多嵌套字配置使得工作站和服务器间的共享内存并行比以前更加容易实现。

通过直接增加控制无关路径和功能单元的数量,多核和多嵌套字为提高性能提供了相似的机制。硬件支持的同时多线程有时会引发混乱——那些被单核所支持的“硬件线程”使得代码在单核上比较容易使用所有资源,但是多线程的出现并没有增加单核上设施的可用性。

数据级并行。虽然和20世纪80年代流行的向量处理器有着相似之处,但是SIMD指令集通常基于全宽(full-width)功能单元并且受益于现在硬件中的很多超标量特征。SIMD通常在“包装”好的输入数据上执行,但不利于控制分歧。

指令级并行。现代硬件具有高度超标量体系结构,这种体系结构使用很多不一样的处理器,这些处理器的特征有乱序执行,多执行端口,精细的预取,预测机制,以及分支预测硬件。这种并行通常不会被程序员所看到,但是没有这些特征将会带来损失(由每周期执行的指令测量)并且可能预示着资源使用率的缺失。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

2006软考上半年试题分析与解答

本书是针对全国计算机技术与软件专业技术资格(水平)考试而编写的,书中详尽分析与解答了2006年上半年的程序员级、软件设计师级、软件评测...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊