免费智能真题库 > 历年试卷 > 网络工程师 > 2019年下半年 网络工程师 上午试卷 综合知识
  第1题      
  知识点:   Cache   CPU   高速缓存   高速缓存(Cache)
  关键词:   Cache   CPU   多级高速缓存   高速缓存        章/节:   计算机硬件知识       

 
CPU内外常设置多级高速缓存Cache),其主要目的是( )。
 
 
  A.  扩大主存的存储容量
 
  B.  提高CPU访问主存数据或指令的效率
 
  C.  扩大存储系统的容量
 
  D.  提高CPU访问外存储器的速度
 
 
 

  相关试题:存储器          更多>  
 
  第49题    2024年上半年  
   40%
硬盘属于(49)。
  第4题    2009年下半年  
   30%
以下关于Cache的叙述中,正确的是(4)。
  第2题    2012年上半年  
   31%
内存单元按字节编址,地址0000A000H〜0000BFFFH共有(2)个存储单元。
   知识点讲解    
   · Cache    · CPU    · 高速缓存    · 高速缓存(Cache)
 
       Cache
        Cache即高速缓冲存储器,是为了解决CPU和主存之间速度匹配问题而设置的。它是介于CPU和主存之间的小容量存储器,存取速度比主存快。其改善系统性能的依据是程序的局部性原理。
        .Cache主要由两部分组成,即控制部分和存储器部分。
        .Cache存储器部分用来存放主存的部分副本。
        .控制部分的功能是判断CPU要访问的信息是否在Cache存储器中,若在即为命中,若不在则没有命中。
 
       CPU
        CPU即中央处理器,它是计算机系统的核心部分。刚才所列的系统性能评价指标都是围绕CPU的。当然,这些指标的评价结果是建立在CPU与其他系统部件(如内存)的协同工作的基础上的。单就CPU而言,考察它在系统中的工作性能要关注CPU利用率、队列长度、每秒中断次数,等。
 
       高速缓存
        高速缓存(Cache)由快速半导体存储器构成,用来存放当前最活跃的程序和数据,其内容是主存局部域的副本,对程序员来说是透明的。
               高速缓存的组成
               Cache存储器中控制部分的功能是判断CPU要访问的信息是否在Cache存储器中,若在即为命中,若不在则没有命中。命中时直接对Cache存储器寻址;未命中时,要按照替换原则决定主存的一块信息放到Cache存储器的哪一块里。
               现代CPU中Cache分为了多个层级,如下图所示。
               
               三级Cache示意图
               在多级Cache的计算机中,Cache分为一级(L1 Cache)、二级(L2Cache)、三级(L3 Cache)等,CPU访存时首先查找L1 Cache,如果不命中,则访问L2Cache,直到所有级别的Cache都不命中,才访问主存。通常要求L1 Cache的速度足够快,以赶上CPU的主频。如果Cache为两级,则L1 Cache的容量一般都比较小,为几千字节到几十千字节;L2 Cache则具有较高的容量,一般为几百字节到几兆字节,以使高速缓存具有足够高的命中率。
               高速缓存中的地址映像方法
               在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换成Cache存储器的地址,这种地址的转换称为地址映像。Cache的地址映像有如下3种方法。
               (1)直接映像。直接映像是指主存的块与Cache块的对应关系是固定的,如下图所示。
               
               直接映像示意图
               在这种映像方式下,由于主存中的块只能存放在Cache存储器的相同块号中,因此,只要主存地址中的主存区号与Cache中记录的主存区号相同,则表明访问Cache命中。一旦命中,由主存地址中的区内块号立即可得到要访问的Cache存储器中的块,而块内地址就是主存地址中给出的低位地址。
               直接映像方式的优点是地址变换很简单,缺点是灵活性差。例如,不同区号中块号相同的块无法同时调入Cache存储器,即使Cache存储器中有空闲的块也不能利用。
               (2)全相联映像。全相联映像如下图所示。同样,主存与Cache存储器均分成大小相同的块。这种映像方式允许主存的任一块可以调入Cache存储器的任何一个块的空间中。
               
               全相联映像示意图
               例如,主存为64MB,Cache为32KB,块的大小为4KB(块内地址需要12位),因此主存分为16384块,块号从0~16383,表示块号需要14位,Cache分为8块,块号为0~7,表示块号需3位。存放主存块号的相联存储器需要有Cache块个数相同数目的单元(该例中为8),相联存储器中每个单元记录所存储的主存块的块号,该例中相联存储器每个单元应为14位,共8个单元。
               在地址变换时,利用主存地址高位表示的主存块号与Cache中相联存储器所有单元中记录的主存块号进行比较,若相同即为命中。这时相联存储器单元的编号就对应要访问Cache的块号,从而在相应的Cache块中根据块内地址(上例中块内地址是12位,Cache与主存的块内地址是相同的)访问到相应的存储单元。
               全相联映像的主要优点是主存的块调入Cache的位置不受限制,十分灵活。其主要缺点是无法从主存块号中直接获得Cache的块号,变换比较复杂,速度比较慢。
               (3)组相联映像。这种方式是前面两种方式的折中。具体方法是将Cache中的块再分成组。例如,假定Cache有16块,再将每两块分为1组,则Cache就分为8组。主存同样分区,每区16块,再将每两块分为1组,则每区就分为8组。
               组相联映像就是规定组采用直接映像方式而块采用全相联映像方式。也就是说,主存任何区的0组只能存到Cache的0组中,1组只能存到Cache的1组中,以此类推。组内的块则采用全相联映像方式,即一组内的块可以任意存放。也就是说,主存一组中的任一块可以存入Cache相应组的任一块中。
               在这种方式下,通过直接映像方式来决定组号,在一组内再用全相联映像方式来决定Cache中的块号。由主存地址高位决定的主存区号与Cache中区号比较可决定是否命中。主存后面的地址即为组号。
               替换算法
               替换算法的目标就是使Cache获得尽可能高的命中率。常用算法有如下几种。
               (1)随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
               (2)先进先出算法。就是将最先进入Cache的信息块替换出去。
               (3)近期最少使用算法。这种方法是将近期最少使用的Cache中的信息块替换出去。
               (4)优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。
               Cache性能分析
               Cache的性能是计算机系统性能的重要方面。命中率是Cache的一个重要指标,但不是最主要的指标。Cache设计的目标是在成本允许的条件下达到较高的命中率,使存储系统具有最短的平均访问时间。设Hc为Cache的命中率,tc为Cache的存取时间,tm为主存的访问时间,则Cache存储器的等效加权平均访问时间ta为:
               ta=Hctc+(1-Hc)tm=tc+(1-Hc)(tm-tc
               这里假设Cache访问和主存访问是同时启动的,其中,tc为Cache命中时的访问时间,(tm-tc)为失效访问时间。如果在Cache不命中时才启动主存,则
               ta=tc+(1-Hc)tm
               Cache的命中率与Cache容量的关系如下图所示。Cache容量越大,则命中率越高,随着Cache容量的增加,其失效率接近0%(命中率逐渐接近100%)。但是,增加Cache容量意味着增加Cache的成本和增加Cache的命中时间。
               
               Cache容量与命中率的关系
               在指令流水线中,Cache访问作为流水线中的一个操作阶段,Cache失效将影响指令的流水。因此,降低Cache的失效率是提高Cache性能的一项重要措施。当Cache容量比较小时,容量因素在Cache失效中占有比较大的比例。降低Cache失效率的方法主要有选择恰当的块容量、提高Cache的容量和提高Cache的相联度等。
 
       高速缓存(Cache)
        Cache是一种比常见内存(RAM)更快的存储器,在存储位置上位于处理器和外部内存之间,一般称之为高速缓冲存储器。众所周知,程序由代码和数据组成,在一般情况下由于容量限制代码和数据需要存放在内存中,当处理器要执行程序时就需要不断地访问内存,出于技术和成本问题,内存的读取速度通常比CPU的速度慢很多,因此这会严重制约系统的实际性能。
        在实际程序运行过程中,处理器对内存的访问并不是完全随机的,在某个时间段内,CPU总是访问当前内存地址的相邻地址,也就是说程序对内存的访问符合局部性原理。基于程序局部性原理,通过在CPU和外部存储设备之间设计高速缓冲器(Cache),让其进行外部存储设备的局部存储,从而可以提升CPU对外部存储设备的访问效率。Cache的主要功能是对外部存储设备(一般指内存)的缓冲,在一般的Cache设计中,Cache把整个内存分成大小相同的块,块的大小因不同Cache芯片的实现而不同。因此,Cache内部的地址是由块号和块内偏移组成。下图给出了Cache的逻辑工作示意图,其实现过程如下。
        
        Cache工作机制示意图
        (1)Cache收到CPU访问内存的地址。
        (2)Cache将CPU访问内存的地址分解为块号和块内偏移。
        (3)利用(2)中分解的块号查找Cache内部的Cache块。
        (4)如果用(2)中的块号找到一个Cache块,即表示命中,然后用(2)中分解的块内偏移去索引该块中的数据:如果当前是读内存,即可立即将Cache中缓存的数据返回给CPU;如果是写操作,根据Cache的类型不同,动作会不同。
        (5)如果(3)中没有找到对应的Cache块,即表示未命中。
        (6)如果Cache未命中,Cache首先查找Cache内部有没有空闲块。
        (7)如果(6)中Cache找到一个空闲块,就在该块中装入CPU访问内存地址对应的内存块,同时,如果是读内存操作就把这个地址对应的数据返回给CPU。如果是写内存操作,根据Cache的类型不同,动作也会不同。
        (8)如果在(6)过程中没有找到一个空闲块,需要使用Cache管理中的块替换策略,找出Cache中可替换出去的块。如果CPU是读内存操作,那么根据替换块的块号和状态,Cache会决定是否把这个块回写到内存中(或者直接废除),最后在该替换出去的块中装入CPU访问内存地址对应的内存块,同时把这个地址对应的数据返回给CPU。如果CPU是写内存操作,根据Cache的类型不同,Cache的动作也会不同。
        根据程序访问的局部性原理可知,CPU在某一特定的时间段内会对Cache保持很高的命中率。因此,在该时间段内,CPU就可以直接从Cache中获取指令或数据,从而提升系统的性能。根据Cache的工作机制,可以把Cache分为多种类型,典型的包括回写式Cache和写通式Cache。
   题号导航      2019年下半年 网络工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第1题    在手机中做本题