爱问知识人 爱问教育 医院库

高速缓冲存储器的定义和原理

首页 失眠的定义

高速缓冲存储器的定义和原理

高速缓冲存储器的定义和原理

提交回答
好评回答
  • 2008-07-07 13:54:34
      高速缓冲存储器的定义:
      高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。 Cache的功能是用来存放那些近期需要运行的指令与数据。目的是提高CPU对存储器的访问速度。
      为此需要解决2个技术问题:一是主存地址与缓存地址的映象及转换; 二是按一定原则对Cache的内容进行替换。 工作原理: 1.Cache的引入 请注意下面两种情况: ①大容量主存一般采用DRAM,相对SRAM速度慢,而SRAM速度快,但价格高。
       ②程序和数据具有局限性,即在一个较短的时间内,程序或数据往往集中在很小的存储器地址范围内。 因此,在主存和CPU之间可设置一个速度很快而容量相对较小的存储器,如图3.35所示。在其中存放CPU当前正在使用以及一个较短的时间内将要使用的程序和数据,这样,可大大加快CPU访问存储器的速度,提高机器的运行效率。
       2.Cache的基本原理 Cache与主存都分成块(常常将Cache块说成Cache行),每块由多个字节组成,大小相等。在一个时间段内,Cache的某块中放着主存某块的全部信息,即Cache的某一块是主存某块的副本(或叫映像),如图3.36所示。
       Cache除数据部分外,还应记录放在某块中的信息是主存中哪一块的副本。因此,还应有第二个组成部分,即标记(tag)——记录主存块的块地址信息。 采用Cache后,进行访问存储器操作时,不是先访问主存,而是先访问Cache。
      所以存在访问Cache时对主存地址的理解问题(指物理地址)。由于Cache数据块和主存块大小相同,因此主存地址的低地址部分(块内地址)可作为Cache数据块的块内地址。 对主存地址的高地址部分(主存块号)的理解与主存块和Cache块之间的映像关系 (mapping)有关。
      这里考虑一种最简单的情况——直接映像,例如(见图3.37),将主存空间分成4 096块,块编号应是地址码的高12位,写成十六进制为000H~FFFH。按同样大小,将Cache分成16块,块编号为OH~FH。映像关系约定见表3.7。这就是说块编号十六进制的第三位相同的主存块(共256块)只能和该位数码所指定的Cache块建立映像关系。
      根据这种约定,某一主存块和Cache建立起映像关系时,该Cache块的标记部分只需记住主存块的高2位十六进制数。例如,第010H号主存块当前和Cache第0块建立起映像关系,则Cache第0块的标记部分只需记住01H。由此可见,当用主存地址访问Cache时,主存的块号可分解成Cache标记和Cache块号两部分。
      因此,主存地址被理解成图3.38所示的形式。 下面结合该映像关系的例子和图3.39来说明Cache的工作原理。设当前010号主存块在Cache中,即它和Cache的第0块建立起映像关系。现要对两个主存地址单元进行读操作,第一个地址的高3位(十六进制)为0lOH,第二个地址的高3位(十六进制)为020H。
       CPU进行读操作时,首先用主存地址的中间部分——Cache块号找到Cache中的一块(对此例,为第0块),读出此块的标记(对此例,现在为01H),然后拿它与主存地址的高位部分——标记进行比较。对于第一个主存地址,比较的结果是相等的。
      这表明主存地址规定的块在Cache中(有副本),这种情况称为命中。此时用主存地址的低位部分——块内地址从Cache块号所选择的块中读取所需的数据。对于第二个主存地址,比较的结果不相等。 这表明主存地址所规定的块不在Cache中,称为未命中,这时需要访问主存,并且将含有该地址单元的主存块的信息全部装入Cache的第0块,并修改第0块Cache标记,使其值为02H。
       通过上面的例子,可以这样来描述(2ache最基本的工作原理:在存储系统中设置了Cache的情况下,CPU进行存储器访问时,首先访问Cache标记,判是否命中,如果命中,就访问Cache(数据部分),否则访问主存。 将访问的数据在Cache中的次数(即命中的次数)与总的访问次数之比称为命中率。
      影响命中率的因素主要有三个:Cache的容量、Cache块的划分以及Cache块与主存块之间的映像关系。一般来说,Cache的容量大一些,会提高命中率,但达到一定程度时,命中率的提高并不明显。目前,一般为256 KB或512 KB,命中率可达98%左右。
       下面还是通过例子来说明引入Cache块的好处。已知Cache的存取周期为50 ns,主存的存取周期为250 ns。设命中率为98%,即100次访问存储器的操作有98次在Cache中,只有2次需要访问主存,则这100次访问存储器操作的平均存取周期为(50 ns×98+250 ns×2)÷100=54 ns。
      由此可见,由于引入了Cache,使得CPU访问存储器的平均存取周期由不采用Cache时的250 ns降到了54 ns。也就是说,以较小的硬件代价使Cache/主存储器系统的平均访问时间大大缩短,从而大大提高了整个微机系统的性能。 需要指出,Cache的功能全部由硬件实现,涉及Cache的所有操作对程序员都是透明的。
       3.Cache的读/写操作 CPU进行存储器读操作时,根据主存地址可分成命中和未命中两种情况。对于前者,从Cache中可直接读到所需的数据;对于后者,需访问主存,并将访问单元所在的整个块从内存中全部调入Cache,接着要修改Cache标记。
      若Cache已满,需按一定的替换算法,替换掉一个旧块。 CPU进行存储器写操作时,也可分成两种情况。一是所要写入的存储单元根本不在Cache中,这时写操作直接对主存进行操作(与Cache无关);二是所要写入的存储单元在Cache中。
      对于第二种情况需做一些讨论。Cache中的块是主存相应块的副本,程序执行过程中如果遇到对某块的单元进行写操作时,显然应保证相应的Cache块与主存块的一致。 这里有两种处理方式。一是暂时只向Cache写入,并用标志注明,直到这个块被从Cache,中替换出来时,才一次写入主存,称之为回写式;二是每次写入Cache的同时也写入主存,称之为通写式。
      两种方式各有优缺点。回写式占用总线时间少,写速度快,但不能随时保证Cache与主存保持一致,如果此期间发生DMA操作,则可能出错(DMA操作将在第四章介绍,暂时可将其理解为在输入/输出设备与存储器之间直接进行数据传送,这种操作不需要CPU参与。
      所以,可能出现CPU和DMA控制器同时访问同一主存块的情况);通写式可使Cache块和主存块始终保持一致,但占用总线时间长,总线冲突较多。 参考 。

    大***

    2008-07-07 13:54:34

其他答案

    2008-07-07 17:14:46
  •   高速缓冲存储器(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 设计的主要目标。 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,以备下次访问。 。

    c***

    2008-07-07 17:14:46

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):