将缓存数据率提升50%,MIT、Intel的研究人员还让宽带利用率提高5倍 | 黑科技

该研究团队对现代芯片中发现的内存管理系统略有修改,从而避免元数据繁杂传输过程。

传统的计算机上,微处理芯片是封装在主板上的,其底部装有杜邦线,数据通过线路在微处理器和主存之间传输。

后来,随着晶体管数的增加,微处理器和主存之间的传输速度成为提升计算机性能的主要障碍,因此,近年来,芯片制造商已经开始将动态随机存取存储器(DRAM)作为主存储器的存储器类型。

虽然DRAM可以实现高容量缓存且可以快速得将常用数据存储到本地,但是DRAM与通常用于片上高速缓存的内存类型截然不同,现有的缓存管理方案不能有效的使用它,即DRAM中有部分内存资源是被浪费的。

在刚刚结束的IEEE/ACM International Symposium on Microarchitecture会议上,MIT、Intel和ETH Zurich的研究人员们共同给出了新的高速缓存管理方案,该方案可以将原有计算机主板上的DRAM的高速缓存数据速率提高33%至50%。

下面我们先了解下数据缓存的过程。

元数据与高速缓存

在现代计算机芯片中,当处理器需要特定的数据块时,它将检查其本地缓存以查看数据是否已经存在。其中,在主存储器中的高速缓存数据的地址的“标记”标签是元数据。

元数据主要是描述数据属性的信息,用来支持和指示存储位置、历史数据、资源查找和文件记录等功能。

一般情况下,典型的片上高速缓存有足够的空间用于存储64000个具有64000个标签的数据,而在运行过程中,为了提高效率,处理器不需要搜索所有64000个条目,缓存系统通常使用称为“哈希表”的东西组织数据。当处理器使用特定标签寻找数据时,首先它将标签哈希函数,然后处理器用约定的哈希函数方式处理数据以产生新的数字,该数字表示数据表中的插槽,同时处理器根据新数字查找感兴趣项目的位置。

类似于现有的缓存方案,哈希函数可以为不同的输入产生相同的输出,因此,缓存的散列表通常会在相同的哈希索引下存储两个或三个数据项。虽然经过哈希函数处理的搜索依然很繁琐,然而,搜索给定标签的两个或三个项目比搜索64,000要好得多。

那么在选定的缓存方案下,内存的选择和处理依然会对速率产生明显的影响。

存储器:DRAM和SRAM

DRAM和SRAM之间的区别在于标准缓存中使用的技术存在差异,对于存储的每一位数据,SRAM都使用六个晶体管,DRAM只使用一个,这意味着它更节省空间;但是SRAM有一些内置的处理能力,而DRAM没有。

如当处理器想要搜索数据项的SRAM高速缓存,则会将该标签发送到高速缓存,随后SRAM电路本身会将标签与存储在相应散列位置的项目进行比较,匹配则返回相关联的数据。相比之下,DRAM不能做任何事,只能传送所请求的数据。在DRAM中,处理器首先会要求存储在给定散列位置的第一个标签,如果匹配,则发送关联数据的第二个请求;如果不匹配,它将请求第二个存储的标签,以此类推,直到它找到想要或放弃的数据并转到主内存。

综合优劣,封装中的DRAM具有大带宽的优势,但是传统缓存处理过程会浪费它的带宽。

针对这一问题,该研究团队对现代芯片中发现的内存管理系统略有修改,从而避免元数据繁杂传输过程。

基于DRAM处理方案的改变

我们希望在计算机芯片上运行的任何程序都管理自己的内存使用,程序调用和管理内存的行为就好像它在管理自己的专用内存存储一样。不过事实上,多个程序通常是同时在同一个芯片上运行,并且它们是同时将数据发送到主内存。因此,芯片中的每个核心或处理单元通常会将各个程序使用的虚拟地址映射到存储在主存储器中数据的实际地址表。

于是研究人员利用这一点,在表中的每个条目添加三位数据,其中一位用于指示是否可以在DRAM高速缓存中找到该虚拟地址处的数据,另外两个表示相对于具有相同散列索引的任何其他数据项的位置。

对此,于向耀(音译)解释道:“在这个条目中,物理地址、虚拟地址和其他数据加起来已经占用差不多100位,所以三个额外的位是一个非常小的开销。”

但这种方法有一个问题,如果一个芯片的核心将数据项拉入DRAM高速缓存,其他内核是不会知道的,所以每次更新缓存时,芯片向所有芯片的内核发送消息会消耗大量的时间和带宽。因此,研究团队引入了另一个小电路,称为标签缓冲区,在这个缓冲区中,任何给定的核心都可以记录其缓存的数据项的新位置。

缓冲区很小,只有5千字节,所以它的添加缓冲区是不会占用太多片上存储资源的,并且实验数据显示,与研究人员提供的带宽节省相比,每个存储器访问一次额外地址查找所需的时间是微不足道的。

总结

对于这一改进方案和设计,于向耀(音译)表示:“以前的方案花费太多的流量访问元数据或者只是在内置和非封装DRAM之间移动数据,而不是真正访问数据,并且浪费了大量的带宽,而这个新方案的带宽利用率是原有方案的五倍。”

原文发布于微信公众号 - 镁客网(im2maker)

原文发表时间:2017-10-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java架构师

Hadoop学习19--推测式执行

  所谓推测式执行,就是计算框架判断,如果有一个task执行的过慢,则会启动备份任务,最终使用原任务+备份任务中执行较快task的结果。产生原因一般是程序bug...

30290
来自专栏IMWeb前端团队

聊聊http/2

本文作者:IMWeb 九月 原文出处:IMWeb社区 未经同意,禁止转载 随着web的发展,http/1.x 已经很难满足现在的需求,Google 因...

23270
来自专栏王清培的专栏

.NET应用架构设计—表模块模式与事务脚本模式的代码编写

阅读目录: 1.背景介绍 2.简单介绍表模块模式、事务脚本模式 3.正确的编写表模块模式、事务脚本模式的代码 4.总结 1.背景介绍 要想正确的设计系统架...

217100
来自专栏喵了个咪的博客空间

phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)

#phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这...

37450
来自专栏IMWeb前端团队

babel

原文http://jiangyuan.me/blog/2016/08/13/babel/

25590
来自专栏信安之路

端口扫描那些事

在渗透测试中端口扫描是非常重要的一环,不管是在外围对企业边界信息收集的过程还是在内网渗透中对内网的信息收集。如何判断主机或服务器端口的开放情况就显得尤为重要,下...

30400
来自专栏跟着阿笨一起玩NET

使用WCF实现SOA面向服务编程—— 架构设计

SOA本身就是一种面向企业级服务的系统架构,简单来说,SOA就是一种进行系统开发的新的体系架构,在基于SOA架构的系统中,具体应用程序的功 能是由 一些松耦合并...

8810
来自专栏程序人生

系统开发之设计模式

上周五同事分享了design patterns in networks,里面很多patterns都是做路由器防火墙这样的转发设备之所以高效的精髓所在。「程序人生...

35550
来自专栏搜云库

《深入理解Java虚拟机》(一)Java虚拟机发展史

Java虚拟机发展史 注:本文大部分摘自《深入理解Java虚拟机(第二版)》 作为一名Java开发人员,不能局限于Java语言规范,更需要对Java虚拟机规范有...

253100
来自专栏花叔的专栏

实践并解读最新的小程序码生成方式

花叔一看到这个新特性时就开始着手研究这特性怎么应用,经过一轮测试,终于有点成绩,来看看花叔的研究成果,希望对大家有用。

44460

扫码关注云+社区

领取腾讯云代金券