📜  计算机组织中的高速缓存

📅  最后修改于: 2021-09-27 15:42:03             🧑  作者: Mango

Cache Memory是一种特殊的超高速内存。它用于加速和与高速 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) 缓存。通常,2 级缓存也安装在处理器芯片上。

    参考地点 –
    由于与主存储器相比,高速缓存的大小较小。所以检查主存的哪一部分应该被优先考虑并加载到缓存中是根据引用的位置决定的。

    参考地点的类型

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

    GATE 练习题 –

    Que-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 

    答案:(一)

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

    Que-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/