边缘存储技术(MIT缓存管理方案新研究)(1)

边缘存储技术(MIT缓存管理方案新研究)(2)

在传统的计算机中,微处理器安装在一个小的电路板上,其底部有一个电导线。这个芯片会嵌在电脑的主板上,以使数据在处理器和电脑的主要存储库之间穿梭。

随着处理器晶体管数量的增加,处理器和主存储器之间的相对缓慢的连接已经成为提高计算机性能的主要障碍。因此,在过去的几年里,芯片制造商开始将传统上作为主存储器的动态随机存取存储器(DRAM)封装在芯片上。

这种存储器是一种高容量缓存,能够快速地存储本地常用数据。但是DRAM从根本上不同于通常用于芯片缓存的内存类型,而且现有的缓存管理计划并没有有效地使用它。

在最近的IEEE/ACM国际微结构研讨会上,来自麻省理工学院、英特尔和苏黎世ETH的研究人员提出了一种新的缓存管理方案,该方案将内包DRAM缓存的数据速率提高了33%到50%。

麻省理工学院计算机科学与人工智能实验室的博士后、及该论文的第一作者Xiangyao Yu说:“这个封装的DRAM的带宽可能比非封装的DRAM高5倍。且事实证明,以前的缓存管理计划花费了太多的流量来访问元数据或移动数据,但却不是真正想要的数据,而且它们浪费了大量的带宽。”

缓存散列

在现代计算机芯片中,当处理器需要特定的数据块时,它就会检查其本地缓存,以查看数据是否已经存在。这些缓存数据都会被标记其所来源数据的地址,即元数据。

一个典型的芯片缓存可能有足够的空间用于64000个数据项,且每个数据都会贴上元数据变迁。显然,一个处理器并不想每次都从64000个条目中搜索自己感兴趣的数据。因此,缓存系统通常使用所谓的“哈希表”来组织数据。当一个处理器使用特定的标签来寻找数据时,它首先将标签反馈给一个哈希函数,该函数以制定的方式处理,并产生一个新的数字,而这个数字正是用于指定数据表中所查找数据的位置。

哈希函数的意义在于,非常相似的输入产生截然不同的输出。这样,即使处理器严重依赖于来自狭窄地址范围的数据,比如在一个大图像的一个部分执行复杂的操作,数据也会在缓存中间隔开来,这样就不会在单个位置造成数据阻塞。

此外,哈希函数也可以为不同的输入产生相同的输出,即如果用户想处理各种可能的输入,正如缓存方案一样,那么就更有可能产生相同的输出。因此,缓存的哈希表通常会在相同的散列索引下存储两个或三个数据项,且搜索一个给定标记的两个或三个条目要比搜索64000条目便捷得多。

DRAM和SRAM

DRAM和SRAM(静态随机存储器)在标准缓存中使用的技术有哪些区别呢?SRAM对于其存储的每一个数据都会使用6个晶体管,而DRAM只使用一个,这意味着其空间效率更高。但SRAM有一些内置的处理能力,而DRAM则没有。如果处理器想要在SRAM缓存中搜索一个数据项,该处理器会将标签发送到缓存中,然后,SRAM电路本身将标签与存储在响应的散列位置的数据项标记进行对比,如果匹配,则返回相关数据。

相比之下,DRAM支撑传输请求的数据。因此,处理器将请求存储在给定的散列位置的第一个标记,如果匹配则发送第二个请求以获取相关数据。如果不匹配,它将请求第二个存储标记,如果还不匹配,将发送给第三个,知道找到它想要的数据,或者放弃,然后进入主内存。

封装的DRAM可能有很多带宽,但这个过程会占用其带宽。Xiangyao Yu及其同事通过对大多数现在芯片中内存管理系统的微小修改,从而避免了所有的元数据传输。

任何运行在计算机芯片上的程序都必须管理自己的内存使用,而且通常让程序像拥有袭击的专用内存存储一样方便。但实际上,多个程序通常同时运行在同一芯片上,他们同时将数据发送到主内存。因此,芯片中的每一个核心或处理单元通常都有一个表,将单个程序所使用的虚拟地址映射到存储在主内存中的数据的实际地址。

该新系统被称为Banshee,且在表格中的每个条目中添加了3 bits的数据。其中一个表示虚拟地址中的数据是否可以在DRAM缓存中找到,而另外两个则指示其位置相对于具有相同哈希索引的任何其他数据项。

Xiangyao Yu表示:“在条目中,你需要有物理地址,虚拟地址,以及一些其他数据。而这些加起来已经差不多100 bits了。所以三个额外的bits已经是非常小的了。”

标记缓冲区

但这种方法存在一个问题,这也是Banshee必须解决的问题。如果一个芯片的核心将一个数据项拖放到DRAM缓存中,那么其他的内核就不知道了。每次向芯片内核发送消息时,每次更新缓存都会消耗大量的时间和带宽。因此,Banshee引入了另一个称为标记缓冲区的小电路,在那里,任何给定的核心都可以记录它缓存的数据项的新位置。

任何核心的请求都通过标记缓冲区发送到DRAM缓存或主内存,这将检查所请求的标记是否已被重新映射。只有当缓冲区填满时,Banshee才会通知所有的芯片内核,它们需要更新其虚拟内存表。然后它清除缓冲区,并重新开始。

缓冲区很小,只有5千字节,因此它的增加不会占用太多芯片内存。研究人员的仿真结果显示,每次内存访问所需的额外地址查找所需的时间与Banshee所节省的带宽相比是微不足道的。

,