1.Hamming Distance: 两个相同长度比特串对应位置的不同位的数量,一般使用 d(x,y) 来表示汉明距离。对两个比特串进行异或运算,统计结果为1的个数就是汉明距离。
 
============= 一个问题:内存独占问题 ============

做个实验,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的更多相关文章

  1. 知乎:在卡内基梅隆大学 (Carnegie Mellon University) 就读是怎样一番体验?

    转自:http://www.zhihu.com/question/24295398   知乎 Yu Zhang 知乎搜索 首页 话题 发现 消息 调查类问题名校就读体验修改 在卡内基梅隆大学 (Car ...

  2. ML Lecture 0-1: Introduction of Machine Learning

    本博客是针对李宏毅教授在Youtube上上传的课程视频<ML Lecture 0-1: Introduction of Machine Learning>的学习笔记.在Github上也po ...

  3. Computer architecture Computer organization

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCEComputer architectureNINTH EDITION C ...

  4. Jordan Lecture Note-1: Introduction

    Jordan Lecture Note-1: Introduction 第一部分要整理的是Jordan的讲义,这份讲义是我刚进实验室时我们老师给我的第一个任务,要求我把讲义上的知识扩充出去,然后每周都 ...

  5. 【CS224n-2019学习笔记】Lecture 1: Introduction and Word Vectors

    附上斯坦福cs224n-2019链接:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/ 文章目录 1.课程简单介绍 1.1 本 ...

  6. Petrozavodsk Winter-2018. Carnegie Mellon U Contest

    A. Mines 每个点能爆炸到的是个区间,线段树优化建图,并求出SCC进行缩点. 剔除所有不含任何$n$个点的SCC之后,最小代价为每个入度为$0$的SCC中最小点权之和,用set维护即可. 时间复 ...

  7. 【NLP CS224N笔记】Lecture 1 - Introduction of NLP

    I. 什么是NLP NLP全称是Natural Language Processing,即自然语言处理,这是一门计算机科学.人工智能以及语言学的交叉学科. NLP涉及的几个层次由下图所示.可以看到输入 ...

  8. 嵌入式(Embedded System)笔记 —— Cortex-M3 Introduction and Basics(下)

    随着课内的学习,我想把每节课所学记录下来,以作查阅.以饲读者.由于我所上的是英文班课程,因此我将把关键术语的英文给出,甚至有些内容直接使用英文. 本次所介绍内容仍是关于Cortex-M3的基础内容,相 ...

  9. 嵌入式(Embedded System)笔记 —— Cortex-M3 Introduction and Basics(上)

    随着课内的学习,我想把每节课所学记录下来,以作查阅.以饲读者.由于我所上的是英文班课程,因此我将把关键术语的英文给出,甚至有些内容直接使用英文. 本次所介绍内容是关于Cortex-M3的基础内容. - ...

  10. 一道背包神题-Petrozavodsk Winter-2018. Carnegie Mellon U Contest Problem I

    题目描述 有\(n\)个物品,每个物品有一个体积\(v_i\),背包容量\(s\).要求选一些物品恰好装满背包且物品个数最少,并在这样的方案中: (1)求出中位数最小的方案的中位数(\(k\)个元素的 ...

随机推荐

  1. 复习第二点-2.基于注解的helloworld

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...

  2. 题解[CF1628F]A_Random_Code_Problem

    题意 给定一个数组 \(a\),进行 \(k\) 次操作.第 \(i\) 操作等概率随机 \(a\) 中一个元素 \(a_x\),将这个元素的值加入答案,并使其减去 \(a_x\bmod i\) .问 ...

  3. [记] OpenCV4 源码编译安装 | 记录

    OpenCV4 源码编译安装 | 记录 参考资料 官方文档:https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html 环境 wsl2 ...

  4. Linux 第六节( 磁盘系统,挂载,分区,格式化)

    /dev/st0   磁带机 /dev/lp     打印机 /dev/cdrom  光驱 /dev/sd       scsi接口硬盘 sata接口硬盘  U盘(sda,sdb,sdc   分别对应 ...

  5. 软件工程日报七——checkbox的使用

    今天学了checkbox的使用 activity_main.xml文件为 <?xml version="1.0" encoding="utf-8"?> ...

  6. WPF美化常用(渐变)

    1,线性渐变色设置 2,径向渐变色设置(圆形)

  7. vue3 门户网站搭建5-图标

    奈何 element 自带的图标太少,不够用,故打算使用 vite-plugin-svg-icons 组件来封装 svg-icon . ps: ui 框架选用的 element-ui,为了能跟 vue ...

  8. React使用高阶组件与Hooks实现权限拦截教程

    导读 高阶组件就是接受一个组件作为参数并返回一个新组件(功能增强的组件)的函数.这里需要注意高阶组件是一个函数,并不是组件,这一点一定要注意,本文给大家分享React高阶组件使用小结,一起看看吧 高阶 ...

  9. go 的 wire 依赖注入

    首先安装 wire 工具 go install github.com/google/wire/cmd/wire@latest go 文件 package main import ( "fmt ...

  10. 使用 docker-compose 安装 es、kibana、mysql、redis、kafka

    由于经常的安装虚拟机,每次都要重装环境比较麻烦. 这次写了一个 docker-compose 文件,一次性搞定安装问题. 目录结果如下: --- version: "3.1" ne ...