缓存块着色算法和优化的缓存块着色算法

来源:互联网 发布:淘宝店雪亮卫生纸 编辑:程序博客网 时间:2024/05/01 07:54


      今天看了一篇缓存优化相关的论文,里面介绍了缓存块着色算法和优化的缓存块着色算法,整理如下。
        如图1所示,将整个指令存储器划分为以缓存大小为单位的区间,假设缓存大小等于4 个缓存块的大小。不同区间的同种颜色的缓存块中的数据会发生缓存冲突。

         

                             图1   缓存块着色算法步骤


  根据反汇编Obj 文件,计算出程序大小,假设子函数A,B,F 的大小各占用1 个缓存块,C,D 各占用2 个缓存块,E 占用4 个缓存块。首先选取权值最大的一条边CE,但由于E 的大小与缓存大小相近,不论如何放置都会和其他子函数产生冲突,因此E最后进行放置。先选取除CE外权值最大的边AB,将AB放置到图1步骤1所示位置。紧接着,选取BC。此处要保证B和C 不发生冲突,所以,放置C时需要考虑B 在缓存中的位置,选择与B不同的缓存块存放位置进行放置。随后,选取CD,D 也需要和C 处于不同的缓存块位置。之后,将调用频率最小的F 插空放入序列中。最后,放入超过缓存大小的子函数E。
       从图1可以看出,由于子函数E体积大于缓存容量,因此不论如何放置,均会与其他子函数产生缓存冲突。
       缓存块着色算法适用于缓存大小较大、子函数均小于缓存容量的情况,但在多数低成本低性能CPU 设计中,缓存容量较小,就会出现子函数大于缓存容量的情况。针对这一情况,提出了优化的缓存块着色算法,该算法将较大的子函数进行拆分同样采用之前的程序,将较大的子函数E拆分为EA和EB ,各占用2个缓存块。经过拆分子函数E后,可使子函数E一同进入过程排序和放置的过程,放置过程如图2 所示。

            

                          图2 优化后的缓存块着色算法步骤


        对比图1和图2可以看出,图1中子函数E与C发生了缓存冲突,而它们的调用次数很高。在图2 中,A和EA发生了缓存冲突,它们的互相调用次数相对很少,显然效果好于优化前。采用优化的过程排序方法,能进一步细化子函数存储位置,相比原算法更加减少了缓存冲突。

0 0
原创粉丝点击