关于DRAM、SRAM、cache、cpu、寄存器、主存之间的联系与区别

最近在研究openblas里面用到的gemm矩阵加速思想,涉及到很多cache缓存的问题,便有了这篇文章作为记录

先一句话说明数据流的流通路径:计算机的计算数据需要从磁盘调度到内存,然后再调度到L2 Cache,再到L1 Cache,最后进CPU寄存器进行计算。

一、DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器)

    DRAM只能将数据保持很短的时间。为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新(预充电)一次,如果存储单元没有被刷新,存储的信息就会丢失(关机就会丢失数据)。主要用于系统内存。

    SRAM是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据,速度快,但是集成度低。主要用于CPU与主存之间的高速缓存。

二、高速缓冲存储器(Cache)

    Cache通常使用昂贵但较快速的SRAM技术(通常认为cache是静态随机存储器)。在计算机存储系统的层次结构中,介于cpu和主存储器之间的高速小容量存储器(主存属于DRAM,比如pc上面的内存条,相对SRAM慢一些)。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。高速缓冲存储器最重要的技术指标是它的命中率。Cache作为主存局部区域的副本,用来存放当前活跃的程序和数据,它利用程序运行的局部性,把局部范围的数据从主存复制到Cache中,使CPU直接高速从Cache中读取程序和数据,从而解决CPU速度和主存速度不匹配的问题。

三、Cache替换算法

    CPU在Cache中找到有用的数据被称为命中,当Cache中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。当出现未命中而高速存储器对应列中没有空的位置时,便淘汰该列中的某一组以腾出位置存放新调入的组,这称为替换。为了保证CPU访问时有较高的命中率,Cache中的内容应该按一定的算法替换。常用的替换算法有:最近最少使用法(LRU)、先进先出法(FIFO)和随机法(RAND)等。

目前提出的算法可以分为以下三类(第一类是重点要掌握的):

(1)传统替换算法及其直接演化,其代表算法有:①LRU(Least Recently Used)算法:将最近最少使用的内容替换出Cache;②LFU(Lease Frequently Used)算法:将访问次数最少的内容替换出Cache;③如果Cache中所有内容都是同一天被缓存的,则将最大的文档替换出Cache,否则按LRU算法进行替换。④FIFO(First In First Out):遵循先入先出原则,若当前Cache被填满,则替换最早进入Cache的那个。

(2)基于缓存内容关键特征的替换算法,其代表算法有:①Size替换算法:将最大的内容替换出Cache②LRU— MIN替换算法:该算法力图使被替换的文档个数最少。设待缓存文档的大小为S,对Cache中缓存的大小至少是S的文档,根据LRU算法进行替换;如果没有大小至少为S的对象,则从大小至少为S/2的文档中按照LRU算法进行替换;③LRU—Threshold替换算法:和LRU算法一致,只是大小超过一定阈值的文档不能被缓存;④Lowest Lacency First替换算法:将访问延迟最小的文档替换出Cache。

(3)基于代价的替换算法,该类算法使用一个代价函数对Cache中的对象进行评估,最后根据代价值的大小决定替换对象。其代表算法有:①Hybrid算法:算法对Cache中的每一个对象赋予一个效用函数,将效用最小的对象替换出Cache;②Lowest Relative Value算法:将效用值最低的对象替换出Cache;③Least Normalized Cost Replacement(LCNR)算法:该算法使用一个关于文档访问频次、传输时间和大小的推理函数来确定替换文档;④Bolot等人 提出了一种基于文档传输时间代价、大小、和上次访问时间的权重推理函数来确定文档替换;⑤Size—Adjust LRU(SLRU)算法:对缓存的对象按代价与大小的比率进行排序,并选取比率最小的对象进行替换。

如果对主存访问cache的过程感兴趣的可以参考这篇文章:https://blog.csdn.net/williamgavin/article/details/78600230

  • 22
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SRAM和DRAM是两种不同的存储器技术,它们在内部结构、存取速度和应用场景等方面存在区别联系。 首先,SRAM和DRAM在内部结构上有所不同。SRAM使用触发器来存储数据,每个存储元需要6个晶体管来存储1 bit数据,因此SRAM的集成度较低,占用面积较大。而DRAM则将行地址和列地址分为长度相等的两段,然后分两次发送,可以进行地址线复用,减少了地址线的使用。 其次,SRAM和DRAM在存取速度上也存在差异。由于SRAM的内部结构较为简单,存取速度较快。而DRAM的存取速度相对较慢,因为它需要将行地址和列地址分别发送,而且还存在地址线复用的过程。 此外,SRAM和DRAM在应用场景上也有所不同。SRAM通常用于高速缓存存储器(Cache),它利用昂贵但较快速的SRAM技术,作为CPU主存储器之间的一级存储器,用来存放当前活跃的程序和数据。而DRAM主要用于主存储器,它相对SRAM来说速度较慢,但容量较大,适合存储大量的数据。 综上所述,SRAM和DRAM在内部结构、存取速度和应用场景等方面存在区别联系。SRAM使用触发器存储数据,速度快但集成度低,主要用于高速缓存存储器;而DRAM将地址分为两段发送,速度相对较慢但容量较大,主要用于主存储器。 #### 引用[.reference_title] - *1* *2* [DRAM和SRAM区别](https://blog.csdn.net/SummerXRT/article/details/119223261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [关于DRAM、SRAMcachecpu寄存器主存之间联系区别](https://blog.csdn.net/qq_20880415/article/details/100526245)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值