📜  计算机组织中的缓存

📅  最后修改于: 2021-06-28 14:21:12             🧑  作者: Mango

高速缓存是一种特殊的超高速存储器。它用于加速和与高速CPU同步。高速缓存存储器比主存储器或磁盘存储器昂贵,但比CPU寄存器经济。高速缓冲存储器是一种非常快速的存储器类型,可充当RAM和CPU之间的缓冲区。它包含经常请求的数据和指令,以便在需要时可立即用于CPU。

高速缓存用于减少从主存储器访问数据的平均时间。高速缓存是一种较小,速度更快的内存,用于存储来自经常使用的主内存位置的数据副本。 CPU中有各种不同的独立高速缓存,用于存储指令和数据。

内存级别:

  • 1级或注册–
    这是一种存储数据并被接受并立即存储在CPU中的存储器。最常用的寄存器是累加器,程序计数器,地址寄存器等。
  • 2级或高速缓存–
    它是最快的存储器,具有更快的访问时间,其中数据被临时存储以加快访问速度。
  • 级别3或主内存–
    它是计算机当前可以在其上运行的内存。它体积小,一旦断电,数据将不再保留在该存储器中。
  • 级别4或辅助内存–
    它是外部存储器,其速度不及主存储器,但数据永久保留在该存储器中。

缓存性能:
当处理器需要读取或写入主存储器中的位置时,它首先检查高速缓存中是否有相应的条目。

  • 如果处理器发现内存位置在高速缓存中,则发生高速缓存命中,并且从高速缓存中读取数据
  • 如果处理器在高速缓存中找到内存位置,则发生高速缓存未命中。对于高速缓存未命中,高速缓存会分配一个新条目并从主内存中复制数据,然后从高速缓存的内容中满足请求。

高速缓存的性能通常根据称为命中率的量来衡量

Hit ratio = hit / (hit + miss) =  no. of hits/total accesses

我们可以使用更大的缓存块大小,更高的关联性,降低未命中率,减少未命中代价以及减少命中缓存的时间来提高缓存性能。

缓存映射:
有三种用于高速缓存存储器的映射类型,分别是:直接映射,关联映射和集合关联映射。这些将在下面说明。

  1. 直接映射–
    最简单的技术,称为直接映射,将主存储器的每个块仅映射到一个可能的高速缓存行。或者
    在直接映射中,将每个内存块分配给高速缓存中的特定行。如果在需要加载新块时,存储块先前占用了一行,则旧块将被废弃。地址空间分为两个部分:索引字段和标签字段。高速缓存用于存储标签字段,而其余存储在主存储器中。直接映射的性能与命中率成正比。
    i = j modulo m
    where
    i=cache line number
    j= main memory block number
    m=number of lines in the cache

    为了进行缓存访问,可以将每个主内存地址视为由三个字段组成。最低有效w位标识主存储器块内的唯一字或字节。在大多数现代机器中,地址位于字节级别。其余的s位指定主存储器的2 s块之一。高速缓存逻辑将这些s位解释为sr位(最高有效部分)和r位的行字段的标记。后一个字段标识高速缓存的m = 2 r行之一。

  2. 关联映射–
    在这种类型的映射中,关联存储器用于存储存储字的内容和地址。任何块都可以进入高速缓存的任何行。这意味着单词id位用于识别块中需要哪个单词,但标签变为所有剩余位。这使得可以将任何单词放置在缓存中的任何位置。它被认为是最快,最灵活的映射形式。

  3. 集关联映射–
    这种映射形式是直接映射的增强形式,其中消除了直接映射的弊端。集合关联解决了直接映射方法中可能发生抖动的问题。它是通过这样说的:我们将缓存中的几行组合在一起,以创建一个set ,而不是在缓存中仅保留一行可以映射到的一行。然后,内存中的一个块可以映射到特定集合的任一行。集关联映射允许高速缓存中存在的每个字在主存储器中对于相同的索引地址可以有两个或多个字。集关联缓存映射结合了直接缓存和关联缓存映射技术的最佳组合。

    在这种情况下,缓存由多个集合组成,每个集合由许多行组成。关系是

    m = v * k
    i= j mod v
    
    where
    i=cache set number
    j=main memory block number
    v=number of sets
    m=number of lines in the cache number of sets 
    k=number of lines in each set 

    高速缓存的应用–

    1. 通常,高速缓存可以在任何给定时间存储合理数量的块,但是与主存储器中的块总数相比,该数量很小。
    2. 主内存块与高速缓存中的内存块之间的对应关系由映射函数指定。

    缓存类型–

    • 主缓存–
      主缓存始终位于处理器芯片上。该高速缓存很小,其访问时间与处理器寄存器的访问时间相当。
    • 二级缓存–
      辅助高速缓存位于主高速缓存和其余内存之间。它称为2级(L2)缓存。通常,二级缓存也位于处理器芯片上。

    参考地点–
    由于高速缓存存储器的大小比主存储器小。因此,应根据引用的位置确定要检查主存储器的哪一部分优先级并加载到缓存中。

    参考地点的类型

    1. 参考的空间位置
      这表示元素有可能会出现在与参考点非常接近的位置,并且下次再次搜索时,元素会出现在与参考点更接近的位置。
    2. 参考的时间地点
      在此,将使用最近最少使用的算法。每当一个单词内发生页面错误时,不仅会在主存储器中加载单词,还会加载完整的页面错误,因为引用规则的空间局部性表明,如果您要引用任何单词,那么下一个单词将在其寄存器中被引用,这就是我们加载的原因完整页面表,因此将加载完整块。

    门实践问题–

    队列1:一台计算机具有256 KB,4路集关联的回写数据缓存,块大小为32字节。处理器将32位地址发送到缓存控制器。每个高速缓存标签目录条目除地址标签外,还包含2个有效位,1个修改位和1个替换位。地址的标签字段中的位数为

    (A) 11
    (B) 14
    (C) 16
    (D) 27 

    答案:(C)

    说明: https : //www.geeksforgeeks.org/gate-gate-cs-2012-question-54/

    队列2:考虑上一个问题中给出的数据。缓存标签目录的大小为

    (A) 160 Kbits
    (B) 136 bits
    (C) 40 Kbits
    (D) 32 bits 

    答案:(A)

    说明: https : //www.geeksforgeeks.org/gate-gate-cs-2012-question-55/

    队列3:一个8KB的直接映射回写缓存被组织为多个块,每个块的大小为32个字节。处理器生成32位地址。高速缓存控制器为每个高速缓存块维护标签信息,包括以下内容。

    1 Valid bit
    1 Modified bit 

    标识高速缓存中映射的存储块所需的最小位数。在高速缓存控制器上存储用于高速缓存的元数据(标签)所需的内存总大小是多少?

    (A) 4864 bits
    (B) 6144 bits
    (C) 6656 bits
    (D) 5376 bits 

    答案:(D)

    说明: https : //www.geeksforgeeks.org/gate-gate-cs-2011-question-43/