三种缓存模式

(这是一个MIT同学整理的6.004 Computation Structure的课程的笔记,内容清晰易懂,看一遍可以简单了解计算机组成的基本内容,一共55页,计划全部译成中文。转载请注明出处。)

(笔记原文:?https://app.box.com/s/hj73i5cnek38kpy9yw22)

?

存储层次(Memory Hierarchy)

CUP和内存数据交换的效率不高,这是指令流水线式处理器的瓶颈之一。我们可以通过存储层次(Memory Hierarchy)的方式来解决这个问题。这个存储层次内有:

1、容量小的、高速的缓存

2、容量较大的、慢一点内存

3、容量很大的、但很慢的硬盘

?

所以当CPU获取一个内存地址A时,通常经过这些步骤:

1、检查缓存: 如果地址A保存在缓存里(称作Cache Hit),那么返回这个数据,否则去第2步

2、检查内存(Main Memory):如果A在主存里,那就返回A并把它放在缓存里,否则执行第3步

3、如果A不在缓存和内存里,A必然在硬盘(Disk)里。我们把A放入主存和缓存,并且返回数据。

?

为了简化这个结构,我们在这里假设A不会在硬盘里。所以如果在缓存里没有,必在主存里。

?

缓存是很小而且很快的存储单元,它保存了存储器的临时备份。在6.004课程中,你可以假设一个CPU内部的Clock速率,在这样的速率下,一次Cache Hit会在一个时间周期(Cycle)内返回Cache保存的数据。而且一次失败的Cache查找后,CPU会暂停,知道数据在内存中被找到。如果Cache Miss的概率不是很高,那么使用Cache可以显著提高内存的平均读取时间。

t = t(cache) +?miss_rate * t(memory)

?

?

本地化(Locality)

Cache很有用,因为它利用了Locality的策略:

如果你得到了A位置的数据,你很有可能不久还要使用它。每当有一次Cache Miss,这个内存地址就会进入Cache,并且替代一些Cache中的很久没用的数据。

?

?

全关联缓存(Fully Associative Cache)

?

一个缓存包括很多条线(Cache Line)。一条Cache Line包括:

1、一个有效位(Valid Bit),用来表示这条线中的数据是否有效。

2、一个可选的状态位(State Bit),用来表示这个数据是否被修改过(Dirty),是否是只读(Read-only),等等

3、一个标签,是由内存地址生成的

4、以及地址对应的数据

?

我们将会讨论3种缓存,全关联缓存是其中之一。它和其他结构的区别是,全关联缓存可以把数据放在任何地方

当一个内存地址送给一个全关联内存时,这个地址标签就和Cache中的所有有效线路(Valid Line)进行对比,如果tag相同,算作Cache Hit。这条线路的数据就被发送给CPU,否则算作一次Cache Miss。

如果Cache中所有的线路都是有效的(Cache是满的),发生了一次Cache Miss。我们就需要做一次数据替换(把得到的数据和Cache中某个数据进行替换)。替换的原则我们会在后文中提到。如果被线路有效并且被修改过(V =1,D = 1),那我们就必须把这线路中的数据写回主存。如果没被修改过,我们直接覆盖这线路。

关于全关联缓存,有一些有用的等式:

Capacity ?= # lines * ( 1 valid bit + S status bits + T tag bits + D data bits)

在 6.004课程中,有一些特别的数值: T = 30 bits, D = 32 bits

?

下面这些例子展示了三次取指操作。从一个空的全关联缓存开始。每幅图展示了Cache在图片下方注释内容被执行后的状态。

?

?

直接映射高速缓存(Direct-Mapped Cache)

直接映射高速缓存比全关联缓存便宜。因为整个缓存中只有一个标签比较器(Tag Comparator)。这和全关联缓存器中每一条线路都有一个比较器不同。

但在直接映射高速缓存中,地址冲突是存在的,这可能会影响cache的效果。

给出一个内存地址后,index会选择缓存线路。如果目标TAG和缓存中的Tag相等,就达成一次Cache Hit。这条缓存中的数据会被发送给CPU。

如果缓存中没有index对应的线路,我们需要去主存,主存中的数据替换了缓存中的index对应的线路的数据。如果线路中的数据是有效的并且被修改过(V=1, D=1)。缓存必须把那个数据写进内存再扔掉。

?

看到这里,我们肯定会思考,全关联缓存和直接映射高速缓存哪个更好,这取决于数据获取的模式(Memory Access Pattern)。不同的模式和数据替换策略(Replacement Strategy,就是发生Cache Miss后的数据替换规则)在不同的缓存结构中各有千秋。

这里是一些关于直接高速缓存的有用的等式:

Capacity = # lines * ( 1 valid bit + S status bit + T tag bits + D data bits)

# lines = 2^(# index bits)


下面这些例子展示了四次取指操作。从一个空的直接高速缓存开始。每幅图展示了Cache在图片下方注释内容被执行后的状态。



?

N路组相联高速缓存(Direct-Mapped Cache)

下次写..

时间: 2024-12-13 14:50:38

三种缓存模式的相关文章

交换机的三种转发模式

下面是交换机6大工作原理: 1.基于源MAC地址学习 2.基于目标MAC地址转发 3.同一接口可以学习到多个MAC地址 4.同一个MAC地址被多个接口学习到,选择后学习到的接口 5.收到广/组播帧, 向本VLAN的其他所有接口转发 6.对于没有目标MAC地址表项的帧,向本VLAN的其他所有接口转发 交换机的三种转发模式: 1.直通式转发: 是指交换机在收到数据帧后,不进行缓存和校验,而是直接转发到目的端口. 2.存储式转发: 交换机首先在缓冲区中存储接收到的整个数据帧,然后进行CRC校验,检查数

Vmware虚拟机三种网络模式用途

为了更深层次的对Vmware虚拟机三种网络模式的理解,http://www.3lian.com/edu/2012/03-29/24049.htm 在网上查一些资料,通过对资料的理解,将此总结如下. 1.Bridged模式 在这种模式下,虚拟网卡和物理网卡同在一个IP网段,能够互相通信,并且能够浏览外网(前提是物理网卡能够浏览外网).它用的是Vmnet 0网络,在这里Vmnet 0网络充当了虚拟交换机的用途. 2.Host Only模式 在这种模式下,虚拟网卡只能和物理网卡进行通信,不能够浏览外网

VMware虚拟机三种工作模式

工作模式 VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,就应该先了解一下这三种工作模式. bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器.在桥接模式下,你需要手工为虚拟系统配置IP地址.子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信.同时,由于这个虚拟系统是局域网中的一

后勤模块数据源的增量队列(Delta-Queue)三种更新模式(Update Mode)

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4296684.html 数据的更新(同步)有三种方式:V1.V2.V3: V1 - Synchronous update,同步更新,数据会立即更新到目的地(如应用数据表Application Tables.增强队列Delta-Queue),数

vsftpd服务程序的三种认证模式

vsftpd服务程序的三种认证模式的配置方法--匿名开放模式.本地用户模式以及虚拟用户模式.了解PAM可插拔认证模块的原理.作用以及实战配置方法,通过实战课程进一步继续学习SELinux服务的配置方法,扩展学习TFTP简单文件传输协议理论及实操课程 文件传输协议 一般来讲,人们将电脑联网的首要需求就是获取资料,而文件传输是其中非常重要的方式之一,21世纪的互联网是由几千万台个人电脑.工作站.小型机.大型机等等不同型号.架构的物理设备共同组成的,即便是个人电脑上也可能会装有诸如Linux.Wind

vmware虚拟机三种网络模式详解_转

原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 由于Linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware workstations和virtual box等.在使用虚拟机软件的时候,很多初学者都会遇到很多问题,而vmware的网络连接问题是大家

负载均衡array的三种转发模式

array负载均衡设备支持三种转发模式: 1.Reverse Proxy Mode(反向代理模式) Array APV 的反向代理模式是指负载均衡接收到用户的请求后,以代理的方式转发给内部的服务器.因此,与后台服务器建连的源地址为APV的接口地址.反向代理模式下,无需对原有网络进行额外调整,同时结合TCP连接服用技术,对应用性能进行优化,但是不好的地方就是在服务器那里看不到客户端的IP地址,无法分析数据. 2.Transparent Mode (透明模式) Array APV的透明模式是指 Ar

DGbroker三种保护模式的切换

1.三种保护模式 – Maximum protection 在Maximum protection下, 可以保证从库和主库数据完全一样,做到zero data loss.事务同时在主从两边提交完成,才算事务完成.如果从库宕机或者网络出现问题,主从库不能通讯,主库也立即宕机.在这种方式下,具有最高的保护等级.但是这种模式对主库性能影响很大,要求高速的网络连接. – Maximum availability 在Maximum availability模式下,如果和从库的连接正常,运行方式等同Maxi

虚拟机的三种网络模式

VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式.这里首先大概介绍它们什么情况下需要它们.bridged相当于创建一台独立的电脑.你可以让它跟主机通信,但是网络需要手工配置host-only是与主机隔离的,但是虚拟机之间是可以相互通信的NAT模式优点就是能够上网. 1.bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网