论文阅读:Learning Memory Access Patterns

这篇文章如题所示,使用深度学习模型来学习程序的内存存取模式,从而准确有效的进行memory prefetching。

背景

先来看一下为什么需要memory prefetching。现代计算机冯诺依曼架构中存在的memory wall这个问题,即计算比访问内存快几个数量级,因此内存访问就会成为程序的瓶颈。为了解决这个问题,现代计算机多采用一种金字塔型的存储结构,即越上层存取速度越快,但也越小,越下层越大但也越慢。这时候把频繁访问的数据放在越上层有利于提高程序性能。但有可能数据访问上层的cache时,数据并不在cache中,这时会产生cache miss,此时就需要访问下一层的内存,而memory prefetching就是提前把程序需要的数据提前预取到cache中,从而避免程序访问时产生cache miss造成的性能损耗。

过去,硬件中大多数预测器都是基于表实现。也就是未来的事件应该与在表(实现为内存数组)中跟踪的程序内存访问历史相关联。可分为两类 stride prefetchers 和correlation prefetchers 。stride prefetcher在现代多核处理器中比较普遍,一般用来预测访问连续数组时,步长访问具有规律性,根据步长的规律性进行预取,如前面按照步长 (0, 4, 8, 12)访问,那么可以预测后面可能要访问(16, 20, 24) 。correlation prefetchers将内存访问的过去历史存储在表中,如Markov prefetchers (Joseph & Grunwald, 1997), GHB prefetchers (Nesbit & Smith, 2004), 可以比跨步预取器更擅长预测更多的不规则模式。因为存储历史数据需要较大的表存储开销,因此未在现代多核处理器中实现。

prefetching可以看作一个根据历史内存访问信息来预测未来内存访问的问题,因此论文中使用LSTM建立模型,有两个输入特征:

  1. 目前观察到的cache miss的地址
  2. 指令地址序列,也就是PCs( program counters)。
    PC可以唯一代表一个指令的,因此PC序列反映了程序控制流的模式,产生miss的地址序列则代表了下一个要预取的地址。

这里还存在一个问题,程序的地址空间达到了2^{64},非常稀疏,当成回归问题来不太适合。为了解决将地址空间视为一个大的、离散的词汇表,并执行分类。另一方面,相同程序不同运行地址会变,因此使用第N次和N+1次访问地址的变化量delta来预测更好。

模型

模型很简单,
第一个模型,Embedding LSTM

image.png

模型限制词表为50000个访问最频繁的不同的地址变化量, 在第N步, 输入为和地址变化量∆N ,二者的的词嵌入合并在一起作为LSTM的输入,模型的输出为10个最有可能的∆N 。
这个模型的限制在于较大的词表增加了模型训练的难度,并且词表的大小的限制也限制了模型的精度。

第二个模型,Clustering + LSTM

image.png

首先使用kmeans划分区域,然后在每个区域内计算地址变化量,每个区域内的地址变化量的值数量级差不多,有利于更好的规范化。图中,每个区域的PC和∆N分别喂给一个LSTM,并且这多个LSTM共享参数。

衡量指标:

Precision:如果真正的delta在前10个预测所给出的delta集合内,则模型预测被认为是正确的。
Recall:测试时所有预测值对测试时看到的所有实际值的比值。

在只使用PC作为特征和只使用delta作为特征和使用两者作为特征的对比实验中,发现delta有利于Precision,而PC序列有助于提高召回。

此外,本文使用的是一个a train-offline test-online 模型,在使用过程中可能预取器的使用会改变改变了cache miss的分布,从而降低在之前没有使用预取器的数据上训练的模型的有效性,虽然可以考虑online training缓解这个问题,但online的计算和内存使用成本较大。

启示

本质上memory trace也是一种 程序的行为,所以我们可以使用神经网络建模程序行为,使用数据的分布来学习特定的模型,而不是部署通用的数据结构或者使用启发式算法。神经网络压缩了学习到的分布的表示,将问题转换为一个计算问题,考虑到最近ML加速器的发展,将其用硬件实现很有希望。

可以使用NN代替启发式算法的一些地方:

  • 预取
  • 分支预测
  • cache替换算法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341