内存中断能提出中断嘛Cache能提出中断嘛

最近在研究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的过程感兴趣的可以参考这篇文章:

}

首先写了一个简单的测试程序:

         *對齐的时候需要填充空白即通过人为地增加对象的大小来获得较好的高速缓存性能,是一个以时间换空间的过程

/*如果内碎片的大小比slab管理对象(即slab描述符的大小+所有对象描述符的大小)大,则改成内部slab描述符*/ 


}

我要回帖

更多关于 内存中断 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信