首页 > 编程知识 正文

cache计算题,计算机组成原理存储器实验

时间:2023-05-03 07:32:23 阅读:164132 作者:2299

在概述问题之前,从计算机配置原理的主存储器中的存储器分层图可以看出,在CPU (寄存器)和主存储器(DRAM )之间存在速度差异,且由于主存储器的速度较慢,在CPU进行访问时会出现CPU "空闲"

为了解决这个问题,在CPU和主内存之间加入了一级高速缓存cache(SRAM ),称为高速缓存。 Cache的速度比主存储器快,但容量小(价格高的理由)

要避免CPU“空闲”,需要缓存执行CPU所需的大部分数据和指令。 否则,就需要频繁地访问主存储器。 Cache是一种浪费,但它的缓存容量远远小于主内存。 如何确保CPU使用的数据和指令进入缓存? 它使用了计算机的重要原理之一——程序访问的局部原理。

程序访问的局部原理:

时间局部性:当前使用的指令和数据在不久的将来也会用于空间局部性。 如果当前正在使用一条指令或数据,则在不久的将来,相邻的指令或数据将根据程序局部性原理,存储在高速缓存中的应该是当前正在使用的指令或数据以及它们的相邻指令或数据。 因此,在高速缓存和主存储器之间的数据交换的单位是块,块中存储当前使用的指令和数据以及相邻的指令和数据,块的大小,即一次取出多少相邻的指令和数据可以通过实验获得

Cache的工作原理主存和缓存的地址

主存储器和Cache被分成相同大小的块,主存储器有m块,Cache有c块、MC。 此时,主存储器内的地址可以分为两部分,高位为块号码,低位为块内偏移地址,表示块的大小。 如果块内地址为5位,则块的大小为2^5=32字节。 同样,Cache的地址也分为块编号和块内地址。

但实际上Cache的地址没什么用。 这是因为主存储块和高速缓存块的大小相同,在传输过程中通过整个块进行传输。 因此,高速缓存的块内地址和主存的块内地址完全相同,且高速缓存中每个块的开头都有标记。 该标记注明当前高速缓存块来自主存的哪个块,主存块编号存在于标记中。 当CPU给出主存储器的地址时,它首先查找高速缓存中是否存在具有该地址的主存储器块。 此时,比较主存储器的块编号和高速缓存中的标志位是否相同。 如果找到了,就把主存储器地址的块内地址部分直接作为高速缓存的块内地址使用,寻找想要的数据。 因此,高速缓存地址是没有用的。

命中和未命中: CPU要读取主存储器的数据和命令时,如果需要的数据和命令已经存在于Cache中,可以直接访问Cache得到所需的数据和命令。 这种情况称为缓存命中。 主存储器和高速缓存是对应关系,处于对应关系的主存储器的块号码用未命中和标记记录。 CPU要读取主存储器的数据和指令时,如果Cache中没有必要的数据和指令,CPU必须访问主存储器才能得到期望的数据和指令。 这种情况称为高速缓存未中。 主存和缓存不支持的命中率希望CPU每次都能通过Cache获得数据和指令,也就是说每次都能命中。 这将大大减少CPU的“空闲空间”,并根据命中率评估Cache的性能。

命中率: CPU尝试访问的信息在Cache中的比率

命中率和Cache的容量与块长有关。 容量越大,同时保存的主存储器的块数越多,命中率越高如果块长越小,在CPU多次没有执行指令的过程中,块内的指令就会消失。 另外,我还要去主存储器拿。 没有充分利用程序的局部性原理。 如果块太大,则CPU只使用块中的部分数据,从而浪费缓存空间。

块的长度通常优选为4~8个字符。 实际块长度的可取值与在一个存取周期内可以从主体访问的信息的长度有关(多体交叉)。

Cache-主存系统的效率e与命中率有关,命中率越高,效率越高。

Cache的基本结构

Cache由Cache库、地址映射变换机构、Cache置换机构几个模块构成。

高速缓存(以块为单位与主存储器交换信息。 为了加速高速缓存和主存储器之间的调动,主存储器多采用多主体结构,且将从高速缓存访问的优先顺序最高的地址映射变换机构) CPU发送来的主存储器的地址变换为高速缓存地址已经分析过,因为主存储器地址和高速缓存地址的块内地址部分相同,所以地址转换主要是主存储器块号码和Cache块号码之间的转换,具体的转换规则涉及地址映射函数。 高速缓存交换机制:当高速缓存已满,无法接收来自主存储块的信息时,高速缓存中的交换机制根据一定的交换算法决定哪些块应当从高速缓存中删除并恢复为主存储,将新的主存储块取入高速缓存注意: Cache对用户是透明的,用户在编程时使用主存储地址。 用户不知道这些主存储块是否已转入Cache,将主存储块转入Cache的任务由硬件自动完成。

Cache读写操作读取操作:简单易行,顺流而下

写入操作:注意主存和Cache的一致性问题,写入Cache块中的信息必须与被映射的主存块中的信息完全一致。

写入直行法:写入操作时数据写入Cache,写入主存储器。 写入的时间是访问主存的时间,Cache块结束时,不需要对主存执行写入操作,更新策略是在写入操作时不写入主存而只向Cache写入数据,Cache数据被置换时写入主存写入时间是访问Cache的时间,速度很快,但是在并行计算机中,多个CPU拥有多个Cache,从而存在多个相同的主存储块

Cache中不一致的问题 Cache的改进 增加Cache的级数,片内缓存为第一级,片外缓存为第二级,现代计算机一般都有三级Cache统一缓存和分离缓存
统一缓存是指指令和数据都存放在同一缓存内的Cache;分离缓存是指指令和数据分别存放在两个缓存中,一个叫指令Cache,一个叫数据Cache

统一缓存还是分离缓存的选用主要考虑一下两个因素:

主存结构。如果计算机的主存是统一的(指令、数据存放在同一主存内),相应的Cache就是统一缓存,否则就,Cache就是分离缓存机器对指令执行的控制方式。采用超前控制或者流水线控制方式时,一般都采用分离缓存

超前控制:在当前指令的执行过程尚未结束时,就提前将下一条准备执行的指令取出,即超前取指或叫指令预取。
流水线控制:实质上是多条指令同时执行,又可视为指令流水。

Cache-主存的地址映射

所谓的地址映射就是主存中的任意一块,如果要加载到Cache中,可以放到Cache中的哪些块。根据映射方式的不同,可分为直接映射(固定的映射关系)、全相联映射(灵活性很大的映射关系)和组相联映射(前两种映射的折衷)。

直接映射

主存当中任意一个给定的块只能映射到指定的Cache块当中。

映射关系式i = j mod C,或者i = j mod 2^C,其中i为缓存块号,j为主存块号,C为缓存块数,映射结果表明每个缓存块对应若干个主存块。实际上就是将主存划分为若干个区,每个区的大小与Cache的大小一致,每个区内的主存块与Cache内的块是一一对应的。

这种方式的优点是实现简单,前面我们知道主存地址可以分为块号地址和块内地址,根据直接映射,主存的块号地址又可以被分为两个部分,低位是Cache字块地址,高位是主存的字块标记,被记录在建立了对应关系的缓存块的“标记”位中。当Cache接到CPU送来的主存地址后,只需要根据中间的Cache字块地址找到对应的Cache字块,然后根据“标记”是否与主存地址中的主存字块标记相符来判断缓存是否命中。

直接映射的缺点是不够灵活,每个主存块只能固定的对应某个Cache块,即使Cache中还空着很多位置也不能占用,使缓存的空间得不到充分利用,而且如果程序恰好要重复访问对应同一Cache块的不同主存块,就要不停的进行替换,降低了命中率。

全相联映射

全相联映射允许主存中的每一字块映射到Cache中的任意一块位置上。这种方式可以从已被占满的Cache块中替换出任一旧字块。

全相联方式的优点是灵活,命中率高,缩小了块冲突率。与直接映射相比,每次访问Cache时,要将主存字块标记与所有Cache的“标记”位进行比对,速度比较慢,而且比对的位数由直接映射的t位增加到了t+c位,使得“Cache”的位数增多。

组相联映射

组相联映射是对直接映射和全相联映射的一种折衷。把Cache分为Q组,每组有R块,按公式i = j mod Q将主存映射到一个缓存组中,其中i为缓存的组号,j为主存的块号,即某一湻村块按模Q将其映射到缓存的第i组内。

假设将Cache分为16个组,则主存的第0,16,32,…字块可映射到Cache第0组2个字块中的任一字块,主存的第15,31,47,…字块可映射到Cache第15组2个字块中的任一字块。显然,主存的第j块会映射到Cache的第i组,两者之间一一对应,属于直接映射,另外,主存的第j块可以映射到Cache第i组内的任意一块,又体现了全相联映射i当Cache每组内只有1个字块时,就是直接映射方式,当Cache只有1个组时,就是全相联映射方式。

替换算法

当新的主存块要加载到Cache当中,而Cache的可用空间又被占满时,就需要替换算法。常用的两者算法是:先进先出算法和近期最少使用算法。

先进先出(FIFO)算法
FIFO的原则是将最先调入Cache的字块替换出来,不需要计算字块的使用情况,所以容易实现,开销小,但缺点是可能会把经常使用的程序块替换出去近期最少使用(LRU)算法
LRU是将近期最少使用的块替换出来。它需要随时记录Cache中各块的使用情况,以便确定哪个字块时近期最少使用的字块。LRU比较充分的应用了程序的局部性原理,LRU的平均命中率要比FIFO高,尤其是组相联映射时更能提高LRU的命中率。

本片文章就分享到这了,有任何问题可以在下方评论。
更多关于内容可以移步我的博客,热爱生活,分享知识。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。