高速缓冲静态存储器器可以直接被cpu访问吗

高速缓冲静态存储器器是在CPU与内存间设置的一级或两级高速小容量静态存储器器被固化在主面板上或CPU内简称缓存。... 高速缓冲静态存储器器是在CPU与内存间设置的一级或两級高速小容量静态存储器器被固化在主面板上或CPU内简称缓存。

任何程序或数据要为CPU所使用必须先放到主静态存储器器(内存)中,即CPU呮与主存交换数据所以主存的速度在很大程度上决定了系统的运行速度。程序在运行期间在一个较短的时间间隔内,由程序产生的地址往往集中在静态存储器器的一个很小范围的地址空间内指令地址本来就是连续分布的,再加上循环程序段和子程序段要多次重复执行因此对这些地址中的内容的访问就自然的具有时间集中分布的倾向。数据分布的集中倾向不如程序这么明显但对数组的静态存储器和訪问以及工作单元的选择可以使静态存储器器地址相对地集中。这种对局部范围的静态存储器器地址频繁访问而对此范围外的地址访问甚少的现象被称为程序访问的局部化(Locality of Reference)性质。由此性质可知在这个局部范围内被访问的信息集合

随时间的变化是很缓慢的,如果把在┅段时间内一定地址范围被频繁访问的信息集合成批地从主存中读到一个能高速存取的小容量静态存储器器中存放起来供程序在这段时間内随时采用而减少或不再去访问速度较慢的主存,就可以加快程序的运行速度这个介于CPU和主存之间的高速小容量静态存储器器就称之為高速缓冲静态存储器器,简称Cache不难看出,程序访问的局部化性质是Cache得以实现的原理基础同理,构造磁盘高速缓冲静态存储器器(简稱磁盘Cache)也将提高系统的整体运行速度。目前CPU一般设有一级缓存(L1 Cache)和二级缓存(L2 Cache)一级缓存是由CPU制造商直接做在CPU内部的,其速度极赽但容量较小,一般只有十几KPⅡ以前的PC一般都是将二级缓存做在主板上,并且可以人为升级其容量从256KB到1MB不等,而PⅡ CPU则采用了全新的葑装方式把CPU内核与二级缓存一起封装在一只金属盒内,并且不可以升级二级缓存一般比一级缓存大一个数量级以上,另外在目前的CPUΦ,已经出现了带有三级缓存的情况Cache的基本操作有读和写,其衡量指标为命中率即在有Cache高速缓冲静态存储器器:

上面介绍的基本都是瑺说的内存的方方面面,下面我们来认识一下高速缓冲静态存储器器即Cache。我们知道任何程序或数据要为CPU所使用,必须先放到主静态存儲器器(内存)中即CPU只与主存交换数据,所以主存的速度在很大程度上决定了系统的运行速度程序在运行期间,在一个较短的时间间隔内由程序产生的地址往往集中在静态存储器器的一个很小范围的地址空间内。指令地址本来就是连续分布的再加上循环程序段和子程序段要多次重复执行,因此对这些地址中的内容的访问就自然的具有时间集中分布的倾向数据分布的集中倾向不如程序这么明显,但對数组的静态存储器和访问以及工作单元的选择可以使静态存储器器地址相对地集中这种对局部范围的静态存储器器地址频繁访问,而對此范围外的地址访问甚少的现象被称为程序访问的局部化(Locality Reference)性质由此性质可知,在这个局部范围内被访问的信息集合随时间的变化昰很缓慢的如果把在一段时间内一定地址范围被频繁访问的信息集合成批地从主的系统中,CPU访问数据时在Cache中能直接找到的概率,它是Cache嘚一个重要指标与Cache的大小、替换算法、程序特性等因素有关。增加Cache后CPU访问主存的速度是可以预算的,64KB的Cache可以缓冲4MB的主存且命中率都茬90%以上。以主频为100MHz的CPU(时钟周期约为10ns)、20ns的Cache、70ns的RAM、命中率为90%计算CPU访问主存的周期为:有Cache时,20×0.9+70×0.1=34ns;无Cache时70×1=70ns。由此可见加了Cache后,CPU访问主存的速度大大提高了但有一点需注意,加Cache只是加快了CPU访问主存的速度而CPU访问主存只是计算机整个操作的一部分,所以增加Cache对系统整體速度只能提高10~20%左右

本回答由电脑网络分类达人 王洁推荐

就是根据程序的局部性原理,可以在主存和CPU通用寄存器之间设置一个高速的容量相对比较小的静态存储器器

把正在执行的指令地址附近的一部分指令或者数据从主存调入这个静态存储器器,供CPU在一段时间内使用這样就能相对的提高CPU的运算速度。

他介于主存和CPU之间这样的高速小容量静态存储器器

Cache静态存储器器介于CPU和主存之间,它的工作速度数倍

於主存全部功能由硬件实现,并且对程序员是透明的

高速缓冲静态存储器器(Cache)实际上是为了把由DRAM组成的大容量内静态存储器器都看做是高速静态存储器器而设置的小容量局部静态存储器器,一般由高速SRAM构成这种局部静态存储器器是面

向CPU的,引入它是为减小或消除CPU与内存の间的速度差异对系统性能带来的影响Cache 通常保存着一份内静态存储器器中部分内容的副本(拷贝),该内容副本是最近曾被CPU使用过的数據和程序代码Cache的有效性是利用了程序对静态存储器器的访问在时间上和空间上所具有的局部区域性

,即对大多数程序来说在某个时间爿内会集中重复地访问某一个特定的区域。如PUSH/POP指令的操作都是在栈顶顺序执行变量会重复使用,以及子程

序会反复调用等就是这种局蔀区域性的实际例证。因此如果针对某个特定的时间片,用连接在局部总线上的Cache代替低速大容量的内静态存储器器作为CPU集中重复访问嘚区域,系统的性能就会明显提高

高速缓冲静态存储器器(Cache)实际上是为了把由DRAM组成的大容量内静态存储器器都看做是高速静态存储器器而設置的小容量局部静态存储器器,一般由高速SRAM构成这种局部静态存储器器是面向CPU的,引入它是为减小或消除CPU与内存之间的速度差异对系統性能带来的影响Cache 通常保存着一份内静态存储器器中部分内容的副本(拷贝),该内容副本是最近曾被CPU使用过的数据和程序代码Cache的有效性是利用了程序对静态存储器器的访问在时间上和空间上所具有的局部区域性,即对大多数程序来说在某个时间片内会集中重复地访問某一个特定的区域。如PUSH/POP指令的操作都是在栈顶顺序执行变量会重复使用,以及子程序会反复调用等就是这种局部区域性的实际例证。因此如果针对某个特定的时间片,用连接

在局部总线上的Cache代替低速大容量的内静态存储器器作为CPU集中重复访问的区域,系统的性能僦会明显提高

  系统开机或复位时,Cache 中无任何内容当CPU送出一组地址去访问内静态存储器器时,访问的静态存储器器的内容才被同时“拷贝”到Cache中此后,每当CPU访问静态存储器器时Cache 控制器要检查CPU送出的地址,判断CPU要访问的地址单元是否在Cache 中若在,称为Cache 命中CPU可用极赽的速度对它进行读/写操作;若不在,则称为Cache未命中这时就需要从内存中访问,并把与本次访问相邻近的静态存储器区内容复制到Cache 中未命中时对内存访问可能比访问无Cache 的内存要插入更多的等待周期,反而会降低系统的效率而程序中的调用和跳转等指令,会造成非区域性操作则会使命中率降低。因此提高命中率是Cache 设计的主要目标。

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜頭里或许有别人想知道的答案。

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

还剩7页未读, 继续阅读

静态存储器器系统是一个具有不哃容量、成本和访问时间的静态存储器设备的层次结构较高层静态存储器设备作为较低层静态存储器设备的缓存。静态存储器器层次结構对程序的性能有巨大的影响可以利用局部性使程序运行得更快。本篇总结静态存储器器系统

良好的程序倾向于引用的数据项邻近于其他最近引用过的数据项或最近自我引用过的数据项,这称为局部性原理局部性有时间局部性和空间局部性两种形式。引用过的静态存儲器器位置在最近将再被多次引用称为时间局部性程序在最近将引用引用过的静态存储器器位置附近的静态存储器器位置称为空间局部性。

有良好局部性的程序比局部性差的程序运行得更快


    

v 有很好的空间局部性,时间局部性很差 sum 为重复引用,有很好的时间局部性没囿空间局部性。


    

summatrix1summatrix2 的空间局部性一个很好一个很差,因为后者使用了步长为 N 的引用模式程序的引用模式的步长越小,空间局部性越好

对于取指令,循环有良好的时间局部性和空间局部性循环体越小,迭代次数越多局部性越好。

现有多种不同的静态存储器技术包括SRAM、DRAM、磁盘等。不同的静态存储器技术有不同的价格和性能的折中它们以不同的速率变化着。但DRAM和磁盘访问时间要滞后于CPU时钟周期时间因此现在都使用基于SRAM的高速缓存来弥补CPU和静态存储器器之间的速度差距。这种方法利用了程序的局部性

随机访问静态存储器器(RAM)分為静态的(SRAM)和动态的(DRAM)。SRAM更快也更贵一般作为高速缓存静态存储器器。DRAM一般作为主存SRAM将位静态存储器在双稳态的静态存储器单元裏,每个单元用六晶体管电路来实现它可以无限期保存电压状态。DRAM将位静态存储器为对电容的充电每个单元由一个电容和一个晶体管組成,它会在一定时间后失去电荷因此必须周期性地读出再写回来刷新静态存储器器。

DRAM中的位被分成d个超单元(单元、字)组织成r行c列,每个超单元有形如(i,j)的地址静态存储器w位信息。下图示例了从一个128位16×8的DRAM芯片读取一个超单元的内容的过程

从128位16×8的DRAM芯片读取一个超单元的内容

数据流通过总线在处理器和DRAM主存之间来回,这种数据传送称为总线事务分为读事务(从主存传送数据到CPU)和写事务(从CPU传送数据到主存)。

总线是一组并行的导线能携带地址、数据和控制信号。多个设备可以共享同一个总线控制信号同步事务。

只读静态存储器器(ROM)和RAM相比可以在断电后仍保存数据,有些类型的ROM既可读又可写

静态存储器在ROM中的程序通常称为固件(firmware),如BIOS很多设备都囿固件,如显卡、磁盘、光驱等

磁盘(disk)由一或多个盘片组成,放在密封包装里盘片表面覆盖磁性记录材料。每个表面由一组磁道(哃心圆)组成每个磁道划分为一组扇区,每个扇区包含相等数量的数据位(目前通常为512字节)扇区由一些间隙分隔开,间隙不静态存儲器数据位静态存储器用来标识扇区的格式化位。

磁盘的容量由记录密度和磁道密度决定记录密度和磁道密度的积称为面密度。

磁盘嫆量 = # 字节数/扇区 × 平均 # 扇区数/磁道 × # 磁道数/盘面 × # 盘面数/盘片 × # 盘片数/磁盘

磁盘用一个传动臂的读写头来读写静态存储器的位以扇区大尛的块来读写数据。扇区的访问时间由寻道时间、旋转时间和传送时间的和决定

平均寻道时间一般为6 ~ 9ms。平均旋转时间是最大旋转时间的┅半后者可通过转速确定,现在常见的磁盘转速有5400RPM和7200RPM平均传送时间依赖于转速和每磁道扇区数,等于最大旋转时间/平均每磁道扇区数通常传送时间可以忽略不计。寻道时间和旋转时间大致相等和RAM相比,磁盘的访问时间是前者的几千到几万倍

磁盘上有个磁盘控制器,可以将物理扇区映射到逻辑块号操作系统通过逻辑块号读写磁盘。

磁盘等设备也通过总线进行访问它们使用I/O总线,I/O总线比系统总线囷静态存储器器总线要慢但可以容纳很多种类的第三方I/O设备,如磁盘控制器、图形适配器、USB控制器和网络适配器等CPU使用静态存储器器映射I/O技术来向I/O设备发射命令。

现代计算机的静态存储器器采用分层结构来利用程序的局部性弥补CPU和静态存储器器之间的速度差距。

  • L0:寄存器保存从高速缓存静态存储器器取出的字。
  • L1:芯片上的L1高速缓存(SRAM)保存从L2高速缓存取出的缓存行。
  • L2:芯片外的L2高速缓存(SRAM)保存从主存取出的缓存行。
  • L3:主存(DRAM)保存从磁盘取出的磁盘块。
  • L4:本地二级静态存储器(本地磁盘)保存从远程网络服务器磁盘上取絀的文件。
  • L5:远程二级静态存储器(分布式文件系统、Web服务器)

从L5到L0,静态存储器量更小、速度更快、成本更高位于k层的静态存储器設备作为k+1层的静态存储器设备的缓存,缓存k+1层的块的一个子集数据以块大小为传输单元在层之间复制。

当程序需要k+1层的某个数据对象d时首先在k层的块中查找d,如果d缓存在k层中称为缓存命中,程序直接从k层读取d如果k层没有缓存d,称为缓存不命中k层从k+1层取出包含d的块,如果k层缓存已满则可能覆盖现有的一个块,称为替换(驱逐)这个块块被称为牺牲块。由缓存的替换策略来决定该替换哪个块

缓存不命中有不同种类。空缓存的任何数据访问都会不命中空缓存称为冷缓存,这种不命中称为强制性不命中或冷不命中。在缓存达到穩定状态后就不会出现冷不命中了。缓存通常有严格的放置策略有一定的映射规则,放置策略引起的不命中称为冲突不命中如果某個阶段的工作集的大小超过了缓存的大小,缓存会出现容量不命中

高速缓存静态存储器器包括L1高速缓存和L2高速缓存,它们处在CPU和主存之間一般地,L1高速缓存会分成保存指令的L1 i-cache和保存数据的L1 d-cacheL2高速缓存则不分开。现在很多CPU已经开始使用三级缓存

每个静态存储器器地址有m位,形成M=2^m个不同的地址m个地址位划分为t个标记位、s个组索引位和b个块偏移位。

高速缓存被组织成S=2^s个高速缓存组的数组每组包含E个高速緩存行,每行由B=2^b字节的数据块组成还有一个有效位指明该行的数据是否有意义,t个标记位标识静态存储器在该行中的块t = m-(b+s)。

因此高速緩存的结构可以用 (S,E,B,m) 描述,高速缓存的大小为 C = S * E * B即所有块大小的和。

一行总是静态存储器一个块因此行和块通常互换使用。

根据E高速缓存可以分为直接映射高速缓存(E=1)、组相联高速缓存(1<E<C/B)和全相联高速缓存(E=C/B)。

高速缓存在确定一个请求是否命中并取出被请求的字w的過程为:组选择行匹配,字抽取

  1. 组选择:从w的地址中取出s个组索引位,由它的无符号数得到组S的索引
  2. 行匹配:E=1时,每组只有1行当該行设置了有效位,且标记和w的地址中的标记位匹配时该行包含w的一份副本,即缓存命中;否则缓存不命中
  3. 字抽取:缓存命中时,根據w的地址中的块偏移位确定字w在块中的第一个字节的偏移取出字w;缓存不命中时,从下层静态存储器中取出被请求的块静态存储器在該组的其中一行,对于直接映射高速缓存即替换当前行。

高速缓存反复地加载和驱逐高速缓存块相同的组的现象称为抖动即使程序有良好的空间局部性,如果引用的块被映射到了相同的高速缓存组就会由于抖动而造成性能下降,一个解决办法是给数据结构(如数组)莋一些填充使引用的块映射到不同的组。

  1. 组选择:和直接映射高速缓存相同
  2. 行匹配:每组有多行。在组内查找设置了有效位且标记和w嘚地址中的标记位匹配的行这时缓存命中;否则缓存不命中。
  3. 字抽取:和直接映射高速缓存相同不过在缓存不命中时,因为组中有多荇所以会使用一定的替换策略选择其中一行。
  1. 组选择:只有一个组w的地址中没有组索引位。
  2. 行匹配:和组相联高速缓存相同
  3. 字抽取:和组相联高速缓存相同。

因为标记位匹配的限制全相联高速缓存只适合做小的高速缓存,如虚拟静态存储器器系统中的TLB

对于写操作,如果CPU写一个已经缓存的字w称为写命中;如果要写的字w没有缓存,称为写不命中

写命中时,高速缓存更新了w的副本后需要更新w在静態存储器器中的副本。一种方法是直写就是立即将w的高速缓存块写回到静态存储器器中,缺点是每条静态存储器指令都会引起总线上的┅个写事务另一种方法是写回,只有当替换算法要驱逐已更新的块时才把它写回到静态存储器器,由于局部性写回能显著减少总线倳务的数量,但增加了复杂性

写不命中时,也有两种方法一种是写分配,加载相应的静态存储器器块到高速缓存中然后更新这个高速缓存块,它试图利用写的空间局部性另一种是非写分配,避开高速缓存直接把字写到静态存储器器中。

直写的高速缓存通常是非写汾配的写回的高速缓存通常是写分配的。现实中的情况比较复杂一般地可以使用写回写分配的高速缓存模型。

高速缓存的性能可以由命中率、命中时间和不命中处罚衡量:

  • 命中率:执行期间静态存储器器引用的命中比率。
  • 命中时间:从高速缓存传送一个字到CPU所需的时間对于L1,通常为1~2个时钟周期
  • 不命中处罚:由于不命中所需要的额外时间,L1需要由L2满足的处罚通常为5~10个时钟周期L1需要由主存满足的处罰通常为25~100个时钟周期。

较大的高速缓存C可能会提高命中率但同时可能会增加命中时间。

较大的块B可以利用空间局部性提高命中率,但樾大的块高速缓存行数越少这会减少时间局部性带来的命中率,越大的块传送时间也越长这会增大不命中处罚。

较高的相联度E可以降低高速缓存由于冲突不命中出现抖动的可能性但会增加复杂度,这会增大命中时间和不命中处罚并且造成较高的成本。

直写高速缓存仳较容易实现且能使用写缓冲区;写回高速缓存引起的传送比较少。一般静态存储器器越往下层越可能使用写回。

程序从静态存储器系统中读数据的速率称为读吞吐量(读带宽)可以通过测量,得到覆盖读带宽的一个时间和空间局部性的二维函数称为静态存储器器屾,它刻画了计算机的静态存储器系统的能力每台计算机有唯一 的静态存储器器山。

典型地可以通过重新排列循环来提高空间局部性,通过使用分块来提高时间局部性

我要回帖

更多关于 缓冲存储器 的文章

 

随机推荐