内存墙,多核CPU的终结者?

原文地址:http://www.ed-china.com/ART_8800045174_400004_500008_OT_8f4eb612.HTM

多核处理器是当今计算领域的主导,而多核芯片则遍布从苹果的iPad到富士通K超级计算机的各种平台。2005年,由于功耗将单核CPU的时钟速度限制在3GHz,英特尔推出了双核的酷睿(Core 2 Duo)处理器。从那时起,多核CPU和图形处理单元(GPU)就主导了计算机架构。在每个插槽上集成更多内核便成为处理器继续拓展摩尔定律的方式。

 

在迈向多核的道路中出现了一件有趣的事情:对处理器的利用率开始降低。初看来,英特尔Sandy Bridge服务器有8个3GHz内核,Nvidia Fermi GPU有512个浮点运算引擎,似乎能线性地发挥多核的优势。

 

但超级计算领域出现了令人担忧的趋势:为大型数据应用部署数千个多核CPU和GPU插槽预示着多核有严重的问题。根据每秒百万个浮点操作(Mflops)峰值的比例,当今的超级计算机的利用率还不到10%。原因很简单:输入-输出(I/O)并没有随着多核的每秒百万条指令(MIPS)同步发展。

 

内存体系和内存墙

 

早在80年代,“内存墙”的说法就已经出现了,用于描述CPU时钟速度和芯片外内存和硬盘I/O速度差距。一个有关GPU的例子就能说明内存墙的问题。

 

2005年,当时领先的GPU有192个浮点运算内核,而今天的领先GPU则有512个浮点运算内核。这六年间,主要的GPU的I/O管道(I/O pipe)却没有变。6年前的GPU采用16显得PCI Express Gen2接口,今天的GPU也是如此。结果造成从2005年以来,GPU每个内核的I/O速率就以2.7倍速度降低。

 

片上缓存的速度是片外DRAM的10倍至100倍,这本应该解决内存墙的问题。但缓存也有自身问题,ARM架构应用处理器的L1和L2缓存占据了一半以上的硅片空间。所以缓存,而非计算部分消耗了相当比例的处理能力。

 

缓存控制算法和应用密切相关:有时缓存包含了应用所需的数据,有时不包含。与其让缓存控制算法进行有根据的猜测,决定数据的存储位置,还不如优化缓存利用率,降低缓存功耗,如果程序员可以控制缓存和片外存储数据交换的话。

 

当今的内存架构包括四类:DRAM、Flash闪存和硬盘。主流的DDR3内存运行速度为4Gb/s,flash闪存速度为500Mb/s, 硬盘仅有100Mb/s的数据传输速度。

 

如果不使用片上缓存,就面临着带宽降低、延迟增加的情况,这会进一步降低内存的有效速度。只有在应用呈现良好数据分布,或者在重用的时候才能达到超过20Gb/s的缓存带宽。如果没有数据的局部性,缓存就不会降低内存的瓶颈。

 

超级计算之前将计算密集型应用和I/O密集型应用分开,武断地划分出了“每条指令不会有多于一个的存储器操作数”(one operand per instruction)的临界值。如果一个应用中每条指令需要多于1个存储器操作,就会被视为I/O密集型,如果少于1个操作,就视其为计算密集型。

 

推出多核、单指令流多数据流(SIMD)和多媒体加速器等特性,CPU和GPU的计算能力早已超过了I/O速率。计算能力的进步让多核应用成为I/O密集型应用,使得超级计算能力的利用率低于前文所述的10%。

 

架构方案

 

计算机架构师改进了动态内存存取(DMA)技术以降低I/O瓶颈。通常通过硬件来支持DMA,让内存读取操作和CPU、GPU的操作同步进行。

 

硬件DMA技术的例子包括英特尔 的I/O加速技术(I/OAT),Nvidia的GPUdirect和ARM的AMBA DMA引擎。最近,Nvidia为其CUDA工具箱增加了CudaDMA软件,借助CudaDMA,应用线程可以从计算中独立出来进行I/O操作。类似地,超级计算应用也开始采用专门的多核处理器内核进行I/O(DMA)操作。

 

最终,企业级软件公司如Google Sawzall和ApacheHadoop都正在部署新的并行计算模式如Map/Reduce(MR)。讽刺的是Map和Reduce通过磁盘文件交换中间数据,而磁盘文件是存储速度最慢的架构。MR和Hadoop线程只在包含大量数据输入或中间输出文件的磁盘或者磁盘附近执行操作。

 

不同于建构传统包含三个分工明确但昂贵的子系统(一个存储服务器、一个计算服务器和连接二者的高速互联系统)的超级计算机,MR和Hadoop从头颠覆了传统的超级计算,而是运行在本地的分布式数据上。原因很简单:数据迁移而非计算才是超级计算最耗能的部分。

 

移动“更小的”数据集

 

为了在更接近存储输入数据集的硬盘的地方进行计算,一些研究人员(包括我)正在开拓新方法以减少用于超级计算和多核处理的数据集的量。来自气象建模、多个物理实验、基因序列和地震处理等“大型数据”通常都以数TB计,因此数据量减少2倍或者4倍对于这类数据结构来说,将带来非常显著的经济效益。

 

从医学影像、无线基础设施的数据压缩结果来看, 真实世界的X光的数据集,超声波反射和3G/4G无线信号可以在不改变最终结果的情况下被压缩。类似的技术正在用于为包括浮点值等更广泛的数据类型降低多核内存墙。

 

总之,革新的DMA技术、新的编程模式和创新的数据压缩技术可能会显著降低多核内存墙,让多核用户能够更快速地得到结果。

 

 

作者:Al Wegener,Samplify System CTO兼创始人,拥有巴克内尔大学EE学士学位和斯坦福大学计算机硕士学位。

转载于:https://www.cnblogs.com/yazhouren/archive/2012/08/21/2649243.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BZOJ 1791 岛屿(环套树+单调队列DP)

题目实际上是求环套树森林中每个环套树的直径。 对于环套树的直径,可以先找到这个环套树上面的环。然后把环上的每一点都到达的外向树上的最远距离作为这个点的权值。 那么直径一定就是从环上的某个点开始,某个点结束的。 把环拆成链,定义dp[…

什么是SAS

什么是SAS?简单的说,SAS是一种磁盘连接技术。它综合了现有并行SCSI和串行连接技术(光纤通道、SSA、IEEE1394及InfiniBand等)的优势,以串行通讯为协议基础架构,采用SCSI-3扩展指令集并兼容SATA设备&#xff…

C语言编程规范--常用缩写词

常用缩写词 缩 写 全 称 a addr address admin / adm administrator app application arg argument asm assemble asyn asynchronization avg average b bg background bk back bmp bitmap brk break btn button buf buffer c calc calculate ch…

netty系列之:JVM中的Reference count原来netty中也有

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 目录* 简介 ByteBuf和ReferenceCountedByteBuf的基本使用ByteBuf的回收ByteBuf的衍生方法ChannelHandler中的引用计数内存泄…

hdu区域赛在线热身赛 暨 第十二场组队赛

题目编号:hdu 4257~4266 (对应比赛题号1001~1010) 这是我们第十二场组队赛,在今天中午进行。 比赛刚开始,依然是由我的队友读题。还没看几题,就发现了好多题judge时长高达20秒,这真的有点给我们心理造成压力。不过&…

powerdesign相关

1.安装程序和汉化放百度云了 2.打印错误处理 http://jingyan.baidu.com/article/c45ad29cd84e4b051753e2c3.html 3.导出sql http://jingyan.baidu.com/article/7082dc1c48960ee40a89bd38.html 4.name和comment同步 http://blog.csdn.net/steveguoshao/article/details/16940347…

游戏名词

BUFF,DEBUFF: 增益状态,包括自己或者队友施加的,例如骑士的祝福,牧师的耐力精神,小德的爪子DEBUFF就是减益状态,例如你PK的时候法师的寒冰箭减速,盗贼的毒药,SS的腐蚀等等NPC: NPC就…

C语言编程规范--代码注释

目录 1、什么是Doxygen?. 3 2、撰写正确格式的批注... 4 2.1常用指令介绍... 4 2.2简述与详述的方式... 6 2.3文件头注释... 6 2.4版权注释... 6 2.5模块定义(单独显示一页)... 7 2.6分组定义(在一页内分组显示)... 8 2.7变量、宏…

Spring系列15:Environment抽象

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 本文内容 Environment抽象的2个重要概念Profile 的使用PropertySource 的使用 Environment抽象的2个重要概念 Environme…

U-Mail邮件服务系统任意文件上传+执行漏洞(runtime缺陷与验证绕过)

http://www.wooyun.org/bugs/wooyun-2010-061859转载于:https://www.cnblogs.com/hookjoy/p/4068326.html

Source Insight使用技巧

一、Source Insight实用技巧: Source Insight(下文的SI指的也是它)就是这样的一个东西:   Windows下开发人员的至爱,功能强大,界面友好。支持语法高亮、符号跳转,还支持函数调用关系图显示。这是一个专业的编程环境&…

剑指offer-翻转单词顺序列

剑指offer-翻转单词顺序列 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a …

私有化轻量级持续集成部署方案--05-持续部署服务-Drone(上)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 持续部署概述 持续部署是能…

PS图像菜单下计算命令

PS图像菜单下计算命令通过通道的混合模式得到的选区非常精细,从而调色的时候过度非常好。功能十分强大。 下面用计算命令中的"相加"和"减去"模式做实例解析,这里通道混合模式和图层混合模式原理是一样的。 原图: 实例目…

LINQ系列:LINQ to XML操作

LINQ to XML操作XML文件的方法,如创建XML文件、添加新的元素到XML文件中、修改XML文件中的元素、删除XML文件中的元素等。 1. 创建XML文件 string xmlFilePath Server.MapPath("Data/Product.xml");XDocument doc new XDocument (new XDeclaration(&quo…

C语言编程规范

C语言编程规范 范 围: 本规范适用于公司内使用C语言编码的所有软件。本规范自发布之日起生效,以后新编写的和修改的 代码应遵守本规范。 简 介: 本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效 率、可移…

Ubuntu开发之旅一---安装初步

由于有一台小黑,老机器了,闲置时间不长不短,偶尔拿来用下,总感觉windows跑起来太费力,鉴于有过一段时间的Linux开发经验(大概四个月左右),故抽空安装了一个ubuntu,原因有…

win10 VScode配置GCC(MinGW)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 前提 安装 Visual Studio Code安装 C/C 扩展 for VS Code 也可以在vscode的extension界面搜索’c’查找插件安装 3. 获取最…

复制构造函数的用法及出现迷途指针问题

复制构造函数利用下面这行语句来复制一个对象: A (A &a) 从上面这句话可以看出,所有的复制构造函数均只有一个参数,及对同一个类的对象的引用 比如说我们有一个类A,定义如下: ?12345678910class A{public:A(int i…

Linux下压缩某个文件夹(文件夹打包)

为什么80%的码农都做不了架构师?>>> tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.tar.gz的文件。 zip 压缩方法: 压缩当前的文件夹 zi…