Lecture 1. Introduction and Basics - Carnegie Mellon - Computer Architecture 2015 - Onur Mutlu
做个实验,core0运行matlab,core1运行gcc,统计它们的运行时长
matlab的运行时长是只运行matlab时的1.07倍
gcc的运行时长是只运行gcc时的3.04倍
为什么呢?

在matlab和gcc的内存访问请求发送到 DRAM Controller 时,由于Matlab的内存访问请求具有高度 locality,因此内存控制器会优先处理Matlab的内存访问请求(性能优化)

如图是一种很经典的内存访问优化方法,使用 Row Buffer 读取 DRAM,一次读取一行。
当下一个内存访问请求到来时,如果属于同一行内存,直接从 Row buffer 拿出去
如果不是属于同一行内存,那么Row buffer 就要重新从 DRAM 读取内容
在外面,DRAM controller,或者别的什么东西,会对内存访问请求进行排序,来优化内存访问速度。
因此,可以料想,gcc的内存访问请求被DRAM controller往后排序了,因此gcc会慢得多
但这种性能优化策略也会带来问题:如下

这是内存独占。

由于STREAM程序的row buffer locality远比RANDOM程序要好,因此DRAM controller总是优先处理STREAM的内存访问请求,因此STREAM某种程度上成为了RANDOM的DDOS攻击
当然了,这种情形有一个前提:Memory Request Buffer 要足够大
======== 另一个问题:DRAM的Refresh Overhead =============






DRAM的刷新时间被设置成了64ms,但DRAM中并不是每一行Cell都无法保存超过64ms的数据。
仅仅只有一少部分Cell保存数据的时长在64-128ms
另外很少一部分Cell保存数据的时长在128-256ms
大部分Cell保存数据的时长是大于256ms的。
为了保守起见(毕竟在生产时,并非每个DRAM Cell都是一样的),我们才把Refresh gap定为 64ms

如果我们能把 memory row retention time 暴露给上层,那么是不是就可以仅对一部分memory row进行64ms 的refresh,而对其它的memory row进行间隔更长的refresh了?
这里有三个问题:
1. 这些信息暴露给谁?
2. 暴露多少信息
3. 如何确定每一行memory row的 retention time? (毫无疑问,这是最难的部分)

如图,是三星公司的一个工作。
分为三步骤:
1. 计算每一行内存的retention time(最难的部分)
2. 根据 retention time 给每一行内春的行号分配桶 (使用 Bloom Filters)
3. Memory Controller,根据不同的桶,给不同的桶的内存行用不同的刷新频率来刷新
结果:性能提升、功耗降低
似乎是一篇很棒的paper?不过我暂时不打算去读

两个很好用的建议?

============== 第三个问题:Row hammer ==============


Rowhammer对2012-2013的内存最有效,而对2014以后的内存就没什么作用了

三种可能的解决方向(so..l.解决方案并没有公布?)
Lecture 1. Introduction and Basics - Carnegie Mellon - Computer Architecture 2015 - Onur Mutlu的更多相关文章
- 知乎:在卡内基梅隆大学 (Carnegie Mellon University) 就读是怎样一番体验?
转自:http://www.zhihu.com/question/24295398 知乎 Yu Zhang 知乎搜索 首页 话题 发现 消息 调查类问题名校就读体验修改 在卡内基梅隆大学 (Car ...
- ML Lecture 0-1: Introduction of Machine Learning
本博客是针对李宏毅教授在Youtube上上传的课程视频<ML Lecture 0-1: Introduction of Machine Learning>的学习笔记.在Github上也po ...
- Computer architecture Computer organization
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCEComputer architectureNINTH EDITION C ...
- Jordan Lecture Note-1: Introduction
Jordan Lecture Note-1: Introduction 第一部分要整理的是Jordan的讲义,这份讲义是我刚进实验室时我们老师给我的第一个任务,要求我把讲义上的知识扩充出去,然后每周都 ...
- 【CS224n-2019学习笔记】Lecture 1: Introduction and Word Vectors
附上斯坦福cs224n-2019链接:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/ 文章目录 1.课程简单介绍 1.1 本 ...
- Petrozavodsk Winter-2018. Carnegie Mellon U Contest
A. Mines 每个点能爆炸到的是个区间,线段树优化建图,并求出SCC进行缩点. 剔除所有不含任何$n$个点的SCC之后,最小代价为每个入度为$0$的SCC中最小点权之和,用set维护即可. 时间复 ...
- 【NLP CS224N笔记】Lecture 1 - Introduction of NLP
I. 什么是NLP NLP全称是Natural Language Processing,即自然语言处理,这是一门计算机科学.人工智能以及语言学的交叉学科. NLP涉及的几个层次由下图所示.可以看到输入 ...
- 嵌入式(Embedded System)笔记 —— Cortex-M3 Introduction and Basics(下)
随着课内的学习,我想把每节课所学记录下来,以作查阅.以饲读者.由于我所上的是英文班课程,因此我将把关键术语的英文给出,甚至有些内容直接使用英文. 本次所介绍内容仍是关于Cortex-M3的基础内容,相 ...
- 嵌入式(Embedded System)笔记 —— Cortex-M3 Introduction and Basics(上)
随着课内的学习,我想把每节课所学记录下来,以作查阅.以饲读者.由于我所上的是英文班课程,因此我将把关键术语的英文给出,甚至有些内容直接使用英文. 本次所介绍内容是关于Cortex-M3的基础内容. - ...
- 一道背包神题-Petrozavodsk Winter-2018. Carnegie Mellon U Contest Problem I
题目描述 有\(n\)个物品,每个物品有一个体积\(v_i\),背包容量\(s\).要求选一些物品恰好装满背包且物品个数最少,并在这样的方案中: (1)求出中位数最小的方案的中位数(\(k\)个元素的 ...
随机推荐
- PHP面向对象(二)
构造函数 PHP 5 允行开发者在一个类中定义一个方法作为构造函数.具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作. 代码如下: <?php//类的 ...
- linux 替换csv的换行符(Linux 替换^M字符 方法)
sed -i 's/^M//g' a.csv 注意:这里的"^M"要使用"CTRL-V CTRL-M"生成,而不是直接键入"^M". 实验: ...
- java开发细节
Java开发细节 Java源文件以.java 为扩展名.源文件的基本组成部分为类(class),如本类中的Hello类 Java应用程序的执行入口是main()方法.它有固定的书写格式: public ...
- Minio--docker部署
拉取镜像 docker pull minio/minio 启动容器 创建文件夹 bin data config 启动脚本 docker run -p 9000:9000 -p 9001:9001 \ ...
- 免费语音转文字----使用Adobe Premiere Pro
软件版本:Adobe Premiere Pro 2023 打开Adobe Premiere Pro,新建项目: 将要转为文字的录音拖入轨道: 序列→自动转录序列: 选择想要的设置,转录 ...
- mac 暗黑破坏神2
https://590m.com/f/28636472-500475496-61a14b (访问密码:7410) 此版本可以更改人员属性参数,过程有点复杂,如需了解,请留言+v沟通吧... 编辑 ...
- 题解[LuoguP6222]「P6156简单题」加强版
题解[LuoguP6222]「P6156简单题」加强版 加强版很好地体现了这个题的真正价值.(当然是指卡常 本题解给出了本题更详尽的推倒导和思考过程,思路与 CYJian 的类似,具体式子的个别地方换 ...
- hyper给linux扩容空间
1.hyper操作 (1)关机后,在设置中,查看硬盘驱动器中的虚拟磁盘及编号, (2)编辑磁盘->查找磁盘中选中刚才的编号磁盘 (3)操作时扩容(大小填的不是增量 ,是扩容以后的空间) 2.li ...
- C#中定时任务被阻塞问题
目录 解决一个C#中定时任务被阻塞问题 1.摘要 2.C#中定时任务的最简方法 3.定时任务阻塞现象 4.阻塞现象原因分析 5.问题解决 1.摘要 本文会介绍一个C#中最简单定时任务的使用方法,以及会 ...
- 01_Node的版本管理
Node的版本管理工具 常见的node的版本管理工具有两种N.NVM 但是他们有一个致命的问题就是不支持Windwos 但是NVM延申了一个nvm-windows的版本,他就可以很好的支持window ...