计算机中存储器Cache的基本原理是什么?虚拟内存的工作原理又是什么?

2024-11-14 11:06:37
推荐回答(2个)
回答1:

高速缓冲存储器(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字节)就需要读一次磁盘或写一次磁盘。

虚拟内存:当内存不足时把一些还没开始工作或者阻塞的进程以及相关资源从内存移到外存上(一般是磁盘),等进程被调度了再从外存把这些进程以及相关资源移到内存,外存上负责存储这些临时数据的部分就是虚拟内存。

回答2:

其实百科里也有~
Cache其有三部分:
Cache存储体:存放由主存调入的指令与数据块。
  地址转换部件:建立目录表以实现主存地址到缓存地址的转换。
  替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。

虚拟内存:
别称虚拟存储器(Virtual Memory)。电脑中所运行的程序均需经由内存执行,若执行的程序很大或很多,则会导致内存消耗殆尽。为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机缺乏运行程序或操作所需的随机存储器 (RAM),则 Windows 会用之进行补偿。它将计算机的RAM和硬盘上的临时空间组合。当RAM运行速率缓慢时,它便将数据从RAM移动到称为“分页文件”的空间中。将数据移入与移出分页文件可释放RAM,以便完成工作。 一般而言,计算机的RAM越多,程序运行得越快。若计算机的速率由于RAM可用空间匮乏而减缓,则可尝试借增加虚拟内存来进行补偿。但是,计算机从RAM读取数据的速率要比从硬盘读取数据的速率快,因而扩增RAM容量(可加内存条)是最佳选择。

参考:http://baike.baidu.com/view/44274.htm
http://baike.baidu.com/view/976.htm