高速缓冲存储器(Cache):在多体交叉存储器中可知,I/O向主存请求的级别高于CPU访存,这就出现了CPU等待I/O访存的现象,致使CPU空等一段时间,甚至可能等待几个主存周期,从而降低了CPU的工作效率。为了避免CPU与I/O争抢访存,可在CPU与主存之间加一级缓存,这样,主存可将CPU要取的信息提前送至缓存,一旦主存在与I/O交换时,CPU可直接从缓存中读取所需信息,不必空等而影响效率。
从另一角度来看,主存速度的提高始终跟不上CPU的发展。据统计CPU的速度平均每年改进60%,而组成主存的动态RAM速度平均每年只改进7%,结果是CPU和动态RAM之间的速度间隙平均每年增大50%。因此也希望由高速缓存Cache来解决主存与CPU的不匹配问题。
Cache的出现主要解决CPU不直接访问主存, 只与高速Cache交换信息。那么,这是否可能呢通过大量典型程序的分析,发现CPU从主存取指令或取数据在一定时间内,只是对主存局部地址区域的访问。这是由于指令和数据在主存内都是连续存放的,并且有些指令和数据往往会被多次调用(如子程序循环程序和一些常数),也即指令和数据在主存的地址分布不是随机的,而是相对的簇聚,使得CPU在执行程序时,访存具有相对的局部性,这就叫程序访问的局部性原理。根据这一原理,很容易设想,只要将CPU近期要用到的程序和数据, 提前从主存送到Cache, 那么就可以做到CPU在一定时间内只访问Cache。一般Cache采用高速的SRAM制作,其价格比主存贵,但因其容量远小于主存,因此能很好地解决速度和成本的矛盾。
磁盘缓冲区:硬盘的缓冲区是硬盘与外部总线交换数据的场所。硬盘的读数据的过程是将磁信号转化为电信号后,通过缓冲区一次次地填充与清空,再填充,再清空,一步步按照PCI总线的周期送出,可见,缓冲区的作用是相当重要的。它的作用也是提高性能,但是它与缓存的不同之处在于:一、它是容量固定的硬件,而不像缓存是可以由 *** 作系统在内存中动态分配的。二、它对性能的影响大大超过磁盘缓存对性能的影响,因为如果没有缓冲区,就会要求每传一个字(通常是4字节)就需要读一次磁盘或写一次磁盘。
虚拟内存:当内存不足时把一些还没开始工作或者阻塞的进程以及相关资源从内存移到外存上(一般是磁盘),等进程被调度了再从外存把这些进程以及相关资源移到内存,外存上负责存储这些临时数据的部分就是虚拟内存。
Cache指的是缓存。
高速缓存(英语:cache,/kæʃ/ kash [2][3][4])简称缓存,原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。
提供“缓存”的目的是为了让数据访问的速度适应CPU的处理速度,其基于的原理是内存中“程序执行与数据访问的局域性行为”,即一定程序执行时间和空间内,被访问的代码集中于一部分。
为了充分发挥缓存的作用,不仅依靠“暂存刚刚访问过的数据”,还要使用硬件实现的指令预测与数据预取技术——尽可能把将要使用的数据预先从内存中取到缓存里。
扩展资料
缓存的特点
缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。L1 Cache(一级缓存)是CPU第一层高速缓存。
内置的L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。一般L1缓存的容量通常在32—256KB。
L2 Cache(二级缓存)是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速率与主频相同,而外部的二级缓存则只有主频的一半。
L2高速缓存容量也会影响CPU的性能,原则是越大越好,普通台式机CPU的L2缓存一般为128KB到2MB或者更高,笔记本、服务器和工作站上用CPU的L2高速缓存最高可达1MB-3MB。
缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速率就慢下来了,不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取。
随着时间的变化,被访问得最频繁的数据不是一成不变的,也就是说,刚才还不频繁的数据,此时已经需要被频繁的访问,刚才还是最频繁的数据,又不频繁了,所以说缓存中的数据要经常按照一定的算法来更换,这样才能保证缓存中的数据是被访问最频繁的。
参考资料来源 百度百科-cache
Cache的工作原理是基于程序访问的局部性(即把经常用到的数据放在一个高速的cache里面)。
对大量程序运行的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。因此对这些地址的访问就自然地具有时间上集中分布的倾向。
数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择可以使存储器地址相对集中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,称为程序访问的局部性。
根据程序的局部性原理,在主存和CPU通用寄存器之间设置一个高速的容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,供CPU在一段时间内使用。这个介于主存和CPU之间的高速小容量存储器称作高速缓冲存储器(Cache)。
程序的局部性原理体现在程序在执行过程中,存在时间局部性(刚访问过的指令或数据很快又要访问)和空间局部性(可能很快访问下一相邻的指令或数据),可通过一个循环for(){…}体现指令的时间局部性, 通过数组的连续访问体现数据的空间局部性。
由于高位多体交叉存储器(或称连续编址存储器)在一个存储体内地址连续,所以一个程序的指令和数据极大可能只分布在一个存储体上,这样的只能顺序读取,而无法充分利用并行存取。(即一次并行取出来的指令或数据不在一个程序的局部上,跨度很大,可能是在一个程序的首尾,或不同的程序,也就不再满足局部性原理。(事实上,这里仅作解释使用,准确而言,高位多体交叉只能顺序存取),所以无法提高CPU访问存储器的速度。
而低位多体交叉(或称交叉编址存储器)将一个程序的指令、数据分散在不同存储体上,由于可以“并行”访问(流水线式),一次取出的指令或数据在一个程序段上,则CPU执行指令时无需反复的访问存储器取指,满足程序的局部性原理。
低位多体交叉存储器有两种启动方式。
1 轮流启动(流水线式启动)
条件:每个存储体的一次存取的位数等于系统总线的数据线位数。如,模块存取一个字的存储周期为T, 总线传送周期为t, 存储器的交叉模块数为m, 为了实现流水线方式存取, 应当满足 T = m × t ,交叉存储体的个数要大于等于m才能保证启动某模块后经mt时间再次启动该模块时, 它的上次存取 *** 作已经完成。 这样, 连续读取m 个字所需的时间为T+(m-1)t
2 同时启动 (“全并行”)
条件:所有存储体一次存取的位数等于系统总线的数据线位数。如系统总线数据线64位,每体8位, 8体可同时启动。
CPU工作速度较高,但内存存取速度相对较低,则造成CPU等待,降低处理速度,浪费CPU的能力,cache用于做cpu和内存的缓存。
Cache的工作原理是基于程序访问的局部性(通俗说就是把经常用到的数据放在一个高速的cache里面)。
对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然地具有时间上集中分布的倾向。
数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,就称为程序访问的局部性。
根据程序的局部性原理,可以在主存和CPU通用寄存器之间设置一个高速的容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,供CPU在一段时间内使用。这对提高程序的运行速度有很大的作用。这个介于主存和CPU之间的高速小容量存储器称作高速缓冲存储器(Cache)。
系统正是依据此原理,不断地将与当前指令集相关联的一个不太大的后继指令集从内存读到Cache,然后再与CPU高速传送,从而达到速度匹配。
CPU对存储器进行数据请求时,通常先访问Cache。由于局部性原理不能保证所请求的数据百分之百地在Cache中,这里便存在一个命中率。即CPU在任一时刻从Cache中可靠获取数据的几率。
命中率越高,正确获取数据的可靠性就越大。一般来说,Cache的存储容量比主存的容量小得多,但不能太小,太小会使命中率太低;也没有必要过大,过大不仅会增加成本,而且当容量超过一定值后,命中率随容量的增加将不会有明显地增长。
只要Cache的空间与主存空间在一定范围内保持适当比例的映射关系,Cache的命中率还是相当高的。
一般规定Cache与内存的空间比为4:1000,即128kB Cache可映射32MB内存;256kB Cache可映射64MB内存。在这种情况下,命中率都在90%以上。至于没有命中的数据,CPU只好直接从内存获取。获取的同时,也把它拷进Cache,以备下次访问。
高速缓存cache的主要作用是为了解决CPU运算速度与内存读写速度不匹配的矛盾。
Cache工作的基本原理是利用程序访问的局部性原理,包括空间局部性和时间局部性。
计算机在运行程序时首先将程序从磁盘读取到主存,然后CPU按规则从主存中取出指令、数据并执行指令,但是直接从主存(一般用DRAM制成)中读写是很慢的,所以我们引入了cache。
在执行程序前,首先会试图把要用到的指令、数据从主存移到cache中,然后在执行程序时直接访问cache。如果指令、数据在cache中,那么我们能很快地读取出来,这称为“命中(hit)”。
如果指令、数据不在cache中,我们仍旧要从主存中拿指令、数据,这称为“不命中(miss)”。命中率对于cache而言是很重要的。
实际上cache是一个广义的概念,可以认为主存是磁盘的cache,而CPU内cache又是主存的cache,使用cache的目的就是伪造出一个容量有低层次存储器(如磁盘)那么大,而速度又有寄存器(如通用寄存器)那么快的存储器,简单来说就要让存储单元看起来又大又快。
以上就是关于计算机中存储器Cache的基本原理是什么虚拟内存的工作原理又是什么全部的内容,包括:计算机中存储器Cache的基本原理是什么虚拟内存的工作原理又是什么、什么是Cache作用是什么、计算机问题:cache是基於什麼进行工作的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)