现代cache技术的研究 课程设计报告
计算机组成原理cache课程报告

计算机组成原理课程报告学号:班级:姓名:Cache的发展历程及应用在计算机组成原理课学过Cache之后我才发现原来我对Cache了解的如此之少,以前在买电脑时经常看到一级缓存、二级缓存和三级缓存,然而当时并不懂这是什么东西,现在学过Cache 之后才知道了缓存在电脑中的地位.原来Cache在提高计算机速度方面有如此大的作用。
那么就让我们来了解一下Cache的发展历程。
经过我查资料得知,Cache一词来源于法语,其原意是“藏匿处,隐秘的地方”,而自从被应用于计算机科学之后,就已经成为了英语中的一个计算机体系结构专有名词。
Sun Microsystems 的前首席科学家Billy Joy,作为BSD unix,csh,vi,NFS,java,TCP/IP等的发明者,他曾经说过,在计算机科学领域,如果没有了cache的发明,其他的一切发明都将失去意义。
而正是他,将给予分页的虚拟内存系统引入了Unix,影响了之后所有的新操作系统开发。
Cache的出现正是为了解决CPU日益增长的核心时钟频率以及系统主内存日益落后的速度之间的矛盾①。
这就是Cache解决的主要问题。
那么,这个问题是怎样显现出来以及Cache是如何出现的呢?纵观PC系统和CPU二十年的发展,随着半导体加工工艺水平的不断提高,集成电路技术的不断进步,导致生产成本不断降低,CPU的功能不断增强,运算速度越来越快,CPU和存储器的性能都有了很大的提高。
CPU频率的提高,必然要求系统中存储器的存取速度要提高,还要求其容量要增大。
主存储器DRAM容量的提高还是比较快的,但是DRAM读取时间的提高却很慢。
从而在速度上与CPU主频的提高产生了极不相配的情况,这样会影响整个系统的性能.二十年来,CPU 设计的问题之一就是解决高速CPU和低速DRAM之间的平衡或匹配问题,以求系统性能的整体提高。
在它们之间加入高速缓冲存储器Cache,就是这个问题的解决方案之一。
Cache控制器设计

湖南师范大学职业技术学院(工学院)实验数据报告单实验课程:计算机组成原理实验题目:Cache控制器设计实验实验日期: 2012年 5 月 21 日一.实验目的(1)掌握Cache控制器的原理及其设计方法。
(2)熟悉CPLD应用设计及EDA软件的使用。
二.实验内容利用TD-CMA实验仪设计一个实现直接映射的Cache控制器三.实验原理1、采用直接映像方式的cache控制器图1直接映像方式2、采用CPU首先访问Cache,若在Cache中找不到目标地址,则从MEM单元中读入到Cache。
CHCHE系统框图图2 Cache系统框图3、按区号、块号、块内地址访问目标地址,系统默认存储每个块的首地址,若同时访问同一块中的其他地址,将出现新访问的地址覆盖与之在同一块的另一块号。
四.实验结果与分析01H 02H 03H 32H 34H 00H 10H 11H 32H 33H 10H1、第一次访问01H时指示灯不亮,说明cache未命中,按动KK按钮四次,讲00H-03H装载进入cache。
2、接下来访问20H的时候指示灯亮,说明cache命中,可以直接访问;访问03H时,指示灯亮,说明cache命中,可以直接访问;访问32H时,灯不亮,因为Cache的块内地址是2位,故初始化时只载入了00H-03H,32H须加载才能访问,按动KK按钮四次,将30H-33H 装载进入cache。
3、访问完32H后,访问34H,cache为命中,按动KK按钮将34H-37H载入cache;分析:本次实验主要是采用的地址变换是直接映象方式,主存地址中的块号与Cache地址中的对应块号是完全相同的。
主存中的块内地址与Cache地址中的块内地址也是完全相同的。
本实验实现的是32位地址的Cache存储器,具体是按区号、块号、块内地址访问目标地址,系统默认存储每个块的首地址,若同时访问同一块中的其他地址,将出现新访问的地址覆盖与之在同一块的另一块号。
Cache模拟器实验报告

Cache模拟器一、实验目标:程序运行时,都会对内存进行相关操作,所访问的内存地址可以被记录下来,形成memory trace文件。
在本实验中,你将使用benchmark 程序产生的memory trace文件来测试Cache命中率,文件可以在/classes/fa07/cse240a/proj1-traces.tar.gz上获得。
每次存储器访问都包含了三个信息:1.访问类型,’l’表示Load操作,’s’表示Store操作;2.地址。
采用32位无符号的十六进制表示;3.存储器访问指令之间的间隔指令数。
例如第5条指令和第10条指令为存储器访问指令,且中间没有其他存储器访问指令,则间隔指令数为4。
通过写一段程序,模拟Cache模拟器的执行过程。
二、实验要求:写一段程序模拟Cache模拟器的执行过程,并对5个trace文件进行测试,完成以下目标:1.请统计Load类型指令和Store类型指令在这5个trace文件中的指令比例。
2.设Cache总容量为32KB,对以下所有参数进行组合(共有72种组合),测量相应5个文件的Cache命中率。
通过对命中率的分析,可以发现什么规律。
行大小:32字节、64字节、128字节相连度:8路相联、4路相联、2路相联、1路相联替换策略:FIFO,随机替换,LRU写策略:写直达、写回3. 给出5个文件的最佳Cache命中率的参数组合。
针对不同的trace 文件,最佳配置是否相同。
4. 测量各种组合下Cache和主存之间的数据传输量。
5. 给出5个文件的最小数据传输量的参数组合。
这个组合和第3问中得到的组合是否一致。
针对不同的trace文件,最佳配置是否相同。
6. Cache缺失有三种原因:1)强制缺失;2)容量缺失;3)冲突缺失。
分析这三种缺失并说明你的分析方法。
7. 请给出5个trace文件在最优Cache命中率的情况下,这三种缺失所占的比例,并和教材图C.8给出的比例进行比较。
路预测指令cache的设计与实现的开题报告

路预测指令cache的设计与实现的开题报告一、选题背景在计算机系统中,CPU是非常关键的部件,因为它解决了指令的执行问题。
为了使CPU能够更加高效地执行指令,现代CPU使用了缓存技术。
缓存是指一种在CPU与内存之间增加的高速存储器,它可以将常用的数据和指令存储在高速存储器中以提高CPU的访问速度。
路预测指令cache是一种特殊的缓存,它用于提高指令的预测精度,从而提高CPU的执行效率。
二、研究内容本文的研究内容是路预测指令cache的设计与实现。
路预测指令cache是一种用于提高指令预测精度的cache,它使用了多条预测路,可以更准确地预测指令的执行路径。
具体地,本文将从以下几个方面进行研究:1. 路预测指令cache的基本原理和工作流程:介绍路预测指令cache的基本原理和数据结构,以及其工作流程。
2. 路预测指令cache的设计与实现:介绍路预测指令cache的设计和实现过程,包括预测路的数量、替换算法的选择、预测器的实现、预测结果的保存和传递等。
3. 路预测指令cache的性能评估:使用实验的方法对路预测指令cache的性能进行评估,测试其预测精度、访问延迟、命中率等性能指标。
三、研究意义路预测指令cache的设计与实现在理论与实践上都具有重要的意义。
从理论上,它可以为指令预测技术的研究提供新的思路,并为相关研究领域的进一步发展提供了有益的参考。
从实践上,它可以帮助CPU提高指令的执行效率,提升计算机系统的整体性能。
四、研究方法与步骤1. 调研相关文献,了解当前路预测指令cache的最新研究进展和技术发展趋势。
2. 设计路预测指令cache的数据结构,选择预测路的数量,确定替换算法等重要参数,并进行预测器的实现。
3. 对设计的路预测指令cache进行性能测试,测试评估其预测精度、访问延迟、命中率等性能指标。
4. 分析实验结果,总结路预测指令cache设计与实现的优缺点,并提出进一步的研究方向和改进建议。
2路组相连cache设计课程设计

2路组相连cache设计课程设计一、课程目标知识目标:1. 学生能理解2路组相连Cache的基本概念、原理与结构。
2. 学生能掌握Cache的映射方式、替换策略,以及2路组相连Cache的具体实现方法。
3. 学生能运用所学知识分析2路组相连Cache的性能指标,如命中率、缺失率等。
技能目标:1. 学生具备运用硬件描述语言(如Verilog、VHDL等)设计2路组相连Cache的能力。
2. 学生能够使用相关工具(如ModelSim等)对2路组相连Cache进行仿真与调试。
3. 学生能够通过实验和数据分析,评估2路组相连Cache的性能,并提出优化方案。
情感态度价值观目标:1. 培养学生对计算机组成原理中存储系统知识的学习兴趣,激发其探索精神。
2. 培养学生具备团队协作精神,提高沟通与表达能力。
3. 培养学生关注技术发展,认识到存储技术在现代计算机系统中的重要性。
课程性质:本课程为计算机组成原理的实践课程,以理论为基础,侧重于培养学生的实际操作能力和创新思维。
学生特点:学生已具备一定的数字电路基础和计算机组成原理知识,具有一定的编程和仿真经验。
教学要求:结合学生特点,通过本课程的学习,使学生能够掌握2路组相连Cache的设计与实现,提高其解决实际工程问题的能力。
教学过程中注重理论与实践相结合,强调学生动手能力的培养。
通过课程目标分解,确保学生在知识、技能和情感态度价值观方面的全面发展。
二、教学内容1. 2路组相连Cache的基本原理与结构- Cache的基本概念及其在计算机存储体系中的作用- 2路组相连Cache的映射方式、组相联结构特点2. Cache的替换策略与设计方法- 随机替换、先进先出(FIFO)和最近最少使用(LRU)等替换策略- 2路组相连Cache的具体设计方法与实现步骤3. 硬件描述语言及仿真工具的使用- 硬件描述语言(如Verilog、VHDL)的基本语法- ModelSim等仿真工具的使用方法4. 2路组相连Cache的设计与实现- 依据教学大纲,按照指定的进度完成Cache的设计与仿真- 评估Cache性能,分析命中率、缺失率等指标5. 优化方案探讨- 针对现有2路组相连Cache设计,提出可能的优化措施- 分析优化方案对Cache性能的影响教学内容根据课程目标进行选择和组织,保证科学性和系统性。
计组实验报告

计组实验报告【实验名称】:基于MIPS的Cache设计与实现【实验目的】:通过设计、模拟和测试基于MIPS的Cache,理解和掌握Cache的基本原理和实现方法,加深对计算机组成原理的理解和应用。
【实验设备】:Xilinx ISE Design Suite 14.7、Verilog HDL仿真工具、Mars模拟器。
【实验原理】Cache是计算机系统中重要的存储器层次结构,它可以提高访问速度,降低访问延迟。
Cache是一种由高速存储器和控制电路组成的存储器,它的作用是缓存主存中最近使用过的指令和数据,当下一次需要使用这些指令和数据时,可以直接从Cache中获取,而不需要访问主存,从而提高访问速度。
计算机系统中的Cache存储器既可以用硬件实现,也可以用软件实现。
MIPS Cache包括指令Cache和数据Cache两个部分。
指令Cache用于存储CPU需要的指令,而数据Cache用于存储CPU需要的数据。
Cache中的每一个存储块叫做一个Cache 行,每一个Cache行包括若干字块,每一个字块包括若干字节。
Cache行的大小一般是2^n 个字节。
Cache使用一种叫做Cache命中的技术,通过判断当前CPU需要的数据是否在Cache中来确定是否需要访问主存。
如果当前CPU需要的数据在Cache中,则称为Cache命中,可以直接从Cache中获取数据;如果当前CPU需要的数据不在Cache中,则称为Cache未命中,需要从主存中获取数据。
Cache有三种常见的替换算法:随机替换算法、先进先出(FIFO)替换算法和最近最少使用(LRU)替换算法。
随机替换算法是最简单的方法,它实现起来比较简单,但是效率不高。
FIFO替换算法是一种比较简单的替换算法,它在实现的时候需要维护一个队列来保证替换最早进入Cache的数据,但是这种算法无法适应程序的访存局部性。
LRU替换算法是一种比较复杂的替换算法,它需要维护一个使用时间序列来记录各数据块被使用的时间,当需要替换时,选择使用时间最旧的数据块替换掉。
cache实验报告

cache实验报告Cache实验报告一、引言计算机系统中的缓存(Cache)是一种用于提高数据访问速度的技术。
通过在CPU与主存之间插入一个高速缓存存储器,可以减少CPU等待主存数据的时间,从而提高系统的整体性能。
本实验旨在通过实际操作,深入了解并掌握Cache的工作原理。
二、实验目的1. 了解Cache的基本概念和工作原理;2. 学习Cache的组织结构和映射方式;3. 掌握Cache的读写操作流程;4. 分析Cache的命中率和访问延迟。
三、实验环境本实验使用Intel Core i7处理器和8GB内存的计算机。
四、实验步骤1. 确定实验所需的Cache参数,包括Cache大小、Cache块大小和关联度等;2. 设计并编写测试程序,用于模拟不同的内存访问模式;3. 运行测试程序,并记录Cache的读写命中次数和访问延迟;4. 分析实验结果,计算Cache的命中率和平均访问延迟。
五、实验结果与分析1. Cache命中率根据实验数据统计,我们可以计算出Cache的命中率。
命中率是指在所有内存访问中,Cache能够直接从Cache中读取数据的比例。
通过调整Cache的大小和关联度等参数,可以观察到命中率的变化。
实验结果表明,增加Cache的大小和提高关联度可以显著提高命中率。
2. 访问延迟访问延迟是指从CPU发出内存读写请求到实际完成读写操作所需的时间。
通过实验测量,我们可以得到不同访问模式下的平均访问延迟。
实验结果显示,随着Cache大小的增加,访问延迟逐渐减少。
这是因为Cache能够更快地响应CPU的读写请求,减少了CPU等待主存数据的时间。
3. 性能优化通过实验结果的分析,我们可以发现一些性能优化的方法。
首先,合理设置Cache的大小和关联度,可以提高命中率和降低访问延迟。
其次,采用合适的替换算法(如LRU)可以减少缓存失效的次数,提高Cache的效率。
此外,程序的空间局部性和时间局部性对Cache的性能也有重要影响,优化算法和数据结构可以提高程序的局部性,从而提高Cache的命中率。
cache性能分析及优化实验报告

实验报告实验名称:计算机原理cache性能分析及优化实验学员:张英杰学号: 201008040092 培养类型: 4+1军人年级:任职培训队专业:计算机科学与技术所属学院:计算机学院指导教员:唐玉华职称:研究员实验室:校计算机中心四号院机房实验日期: 2010.12.1—2010.12.19国防科学技术大学训练部制《实验报告》填写说明1.学员完成人才培养方案和课程标准要所要求的每个实验后,均须提交实验报告。
2.实验报告封面必须打印,报告内容可以手写或打印。
3.实验报告内容编排及打印应符合以下要求:(1)采用A4(21cm×29.7cm)白色复印纸,单面黑字打印。
上下左右各侧的页边距均为3cm;缺省文档网格:字号为小4号,中文为宋体,英文和阿拉伯数字为Times New Roman,每页30行,每行36字;页脚距边界为2.5cm,页码置于页脚、居中,采用小5号阿拉伯数字从1开始连续编排,封面不编页码。
(2)报告正文最多可设四级标题,字体均为黑体,第一级标题字号为4号,其余各级标题为小4号;标题序号第一级用“一、”、“二、”……,第二级用“(一)”、“(二)” ……,第三级用“1.”、“2.”……,第四级用“(1)”、“(2)” ……,分别按序连续编排。
(3)正文插图、表格中的文字字号均为5号。
一实验概述(一)实验目的1.掌握Cache的基本概念、基本组织结构2.掌握影响Cache性能的三个指标3.了解相联度对Cache的影响4.了解块大小对Cache的影响5.了解替换算法对Cache的影响6.了解Cache失效的分类及组成情况7.了解一些基本的Cache性能优化方法(选做)(二)实验步骤1.运行模拟器SimpleScalar2.在基本配置情况下运行矩阵乘计算程序统计Cache失效次数,并统计三种不同类型的失效3.改变Cache容量,统计各种失效的次数,并进行分析4.改变Cache的相联度,统计各种失效的次数,并进行分析5.改变Cache块大小,统计各种失效的次数,并进行分析6.改变Cache的替换策略,统计各种失效次数,并分析7.对给出的矩阵乘计算程序进行适当改写以优化cache性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机组成与体系结构课程设计报告题目:现代计算机cache技术的研究学生姓名:谱学号: 10204102班级:10204102指导教师:谌洪茂2013 年1月6日摘要随着集成电路制造技术的持续发展,芯片的集成度和工作速度不断增加,功耗密度显著增大,功耗已经成为计算机系统设计中与性能同等重要的首要设计约束。
在现代计算机系统中,处理器速度远远高于存储器速度,Cache作为处理器与主存之间的重要桥梁,在计算机系统的性能优化中发挥着重要作用,但Cache也占据着处理器的大部分能耗。
处理器及其Cache存储器是整个计算机系统能耗的主要来源,降低其能耗对于优化计算机系统,特别是嵌入式系统,有着重要的意义。
本文主要研究体系结构级的低能耗技术,利用优化Cache结构和动态电压缩放两种技术来实现处理器及其Cache的低能耗。
本文首先详细地分析了低能耗Cache技术的研究现状,将该技术总结为基于模块分割的方法、基于路预测的方法、添加一级小Cache的方法、优化标识比较的方法和动态可重构Cache的方法等五大类,并在此基础上,提出了带有效位预判的部分标识比较Cache、带有效位判别的分离比较Cache、基于程序段的可重构Cache等三种Cache结构。
然后从不同的实现层面分析比较了现有的电压缩放技术及其缩放算法,提出了一种基于程序段的动态电压缩放算法。
最后结合可重构Cache和动态电压缩放技术,提出了一种基于程序段的可重构Cache及处理器电压自适应算法。
本文通过仿真实验证明了上述几种方法的有效性。
本文所取得的研究成果主要有: 1.一种带有效位预判的部分标识比较Cache(PTC-V Cache)。
组相联Cache实现了高命中率,但同时也带来了更多的能耗。
本文针对组相联Cache,提出了一种带有效位预判的部分标识比较Cache,它能够有效地节省Cache中信号放大器和位线的能耗。
结果表明,PTC-V Cache平均能够节省指令Cache中约55%的能耗。
2.一种带有效位判别的分离比较Cache(SC-V Cache)。
该Cache基于路暂停Cache结构,在此基础上,设计了有效位判断和分离标识比较器。
它能缩短标识比较的时间,并且减少对无效数据块读取的能耗,以确保同时获得高性能和低能耗。
该方案很大程度上节省了路暂停Cache的平均能耗,尤其对于大容量Cache。
3.一种基于程序段的可重构Cache自适应算法PBSTA。
该算法使用建立在指令工作集签名基础上的程序段监测状态机来判断程序段是否发生变化,并做出容量调整决定;在程序段内,该算法使用容量调整状态机来指导Cache进行容量调整。
与先前的算法相比,该算法不仅有效地降低了Cache存储系统的能耗,而且减少了不必要的重构所带来的性能损失。
4.一种基于程序段的动态电压缩放算法PBVSA。
该算法使用程序段监测状态机来判断程序段是否发生变化,并做出CPU电压和频率调整决定,在程序段内,该算法通过计算该程序段的频率缩放因子β(片外工作时间与片上工作时间的比例关系)来设定CPU的电压和频率。
结果表明,该算法在保证系统性能的前提下,有效地降低了处理器的能耗。
5.一种基于程序段的可重构Cache 与处理器电压自适应算法CVPBSTA。
该算法结合PBSTA算法与PBVSA算法的特点,使用程序段监测状态机来判断程序段是否发生变化,并做出Cache容量及CPU电压和频率的调整决定。
在程序段内,该算法采用了与PBSTA相似的Cache容量调整策略和与PBVSA相似的CPU电压和频率调整策略,先后对Cache容量及CPU电压和频率进行调整。
结果表明,该算法在保证性能的前提下,更大程度上地节省了系统的能耗。
目录摘要 (2)一.Cache低功耗相关研究 (3)二.可重构Cache的体系结 (4)1.可重构Cache系统设计 (4)2.动态重构算法 (4)3. 可重构Cache中问题 (5)三.高缓速存Cache技术 (6)1.cache的访问速度 (6)2.通常采用三种技术 (6)3.替换关系 (7)4写策略 (7)四、OSCache的特点和主要特征 (8)1.OSCache有以下特点 (8)2.主要特性 (8)五、OSCache的基本用法 (9)1.Cache-OSCache提供的缓存标签 (9)2.Cache标签实例分析 (10)六.Cache设计中的六大基本问题 (11)1.映射方式 (11)2.映射机构 (12)3.替换策略 (12)4.存储器的写策略 (13)5.Cache的性能分析 (14)6.Cache失效原因的分析 (15)七、总结 (15)·一.Cache低功耗相关研究Cache平均访问功耗是Cache性能表现的一个重要因素。
Cache平均访问功耗由Cache 命中时的访问功耗、失效时的访问功耗和失效率三者决定。
失效时的访问功耗又包括两部分:一部分是Cache失效时Cache电路的功耗,另一部分则是下一级存储系统的访问功耗。
因此降低Cache功耗可以从三个方面考虑:一是降低Cache的失效率,二是降低Cache访问能量,三是降低主存访问能量。
为了达到低功耗的目的,对Cache结构做了一些改进:Phase—lookup Cache 结构,应用两级查询的机制,即先访问tag array,只有命中的那一路data才会在第二相去访问,这样就降低了组相联Cache中数据array部分的功耗,但增加了Cache访问的时间;Way predictive组相联Cache结构,在默认情况下只访问一个tag array和一个data array,只有在默认访问失效时才会去访问其他的tag和data array,这种方法也以增加Cache访问时间的代价来换取低功耗;伪组相联Cache结构,是具有多个命中时间的Cache结构,Cache中的每一路可以被顺序读取,从而可以比传统的同时读取结构节省一部分功耗;另外还有基于压缩方法方面的研究,针对高频值的局部性,在读写Cache的过程中,对高频出现的数据值进行压缩存储,用较少存储空间保存编码后的数据,在一定程度上减少了Cache的访问功耗。
低功耗可重构的Cache研究在最近几年得到关注,通过改变Cache的结构参数,不管是用硬件实现还是用软件实现,针对不同的程序来配置优化的Cache结构,尽可能地关闭不使用的Cache,兼顾了系统的性能和功耗。
Cache的结构参数很多,主要的参数有容量大小、相联度、块大小、替换算法、写回策略等。
一般而言,系统中的Cache替换算法和写策略是固定的,如果改变也可以在软件层面上实现。
所以主要关注Cache的硬件结构是否可重构,仅研究其中几个参数(如Cache容量、块大小和相联度)对访问功耗的影响。
在设计芯片之前可以使用CAD 工具来确定对命中时间和功耗的影响。
CACTI程序是一个可以评估CMOS微处理器各种Cache结构访问时间和功耗的CAD工具。
对于一个给定的最小特征值,可以改变Cache容量、相联度和读/写端口的数目,以估计各种情况的Cache命中时间和功耗。
可重构Cache结构需要综合考虑Cache的命中率、平均访问时间和访问能量等性能,合理选择Cache的配置参数。
二.可重构Cache的体系结构要实现可重构Cache,首先Cache的结构要支持运行过程中的动态划分,其次要有检测 Cache命中率的硬件或者软件机制,并且有相应的动态配置算法。
1.可重构Cache系统设计文献提出了一种可重构的数据Cache结构。
该Cache的数据区被平均分为4个子分区 (subarray),每个子分区又分为4组。
在Cache访问时,只有一个子分区打开,其他子分区的线路不被激活,从而节省了功耗。
图1给出了整个 Cache 体系结构及功能模块。
与传统Cache结构相比,图1中增加了Cache配置动态选择器(Cache Configuration Dynamic Selector, CCDS),CCDS用来更新内部状态机,并决定合适的Cache配置。
通过配置CCDS,可以使整个子阵列无效,或者使有效子阵列中的某些路无效。
对于无效的子阵列或者路,局部自选线(Local Word Line)、预充电(Precharge)和读出放大器(Sense Amplifier)都无激励。
通过这些改进使得传统的固定划分的Cache具备了动态配置能力。
改进后的Cache外在表现为一个虚拟的两级Cache:Ll/L2。
这种分级方式同传统的 L1/L2两级Cache结构不同,L1 Cache由激活的不同子分区以及子分区内不同的路数构成,未激活的部分为L2,在L1未命中时激活以进行访问,L1和L2在物理实现上表现为同一级。
Cache的地址划分仍为三部分:标志位、索引位和块内地址。
图2给出了Cache的地址划分情况,可分为块地址(Block Address)和块内偏移(Block offset)。
块地址可以进一步分为标志字段(Tag)和索引字段(Index)。
其中Tag的后两位SS用来做子分区的选择位。
访问Cache 时,首先访问L1,当L1命中时就直接返回,只有在L1访问失效时才会将所有数据区打开。
对不同的应用程序,L1和L2大小的划分不同,其访闽时间和运行功耗也会有较大差异。
2.动态重构算法在程序运行过程中,通过软件监测自动选择优化的Cache结构。
一般采用启发式算法,即根据程序过去执行的状况预测未来的运行情况,并为其配置相应的优化结构。
重构流程是:在程序运行的时候,CPU按固定的时间间隔检查一系列的硬件计数器;这些计数器记录上一时间段内的Cache缺失率和分支跳转的发生频率,如果改变的程度超过设定阈值则进入重构过程,否则程序继续运行。
图3是可重构算法的状态图。
RESET为程序开始运行时的初始状态;UNSTABLE 为非稳定状态,该状态下进行结构的搜索与重构;STABLE为选择好优化的Cache 结构进入稳定运行的状态;TRANSl,TRANS2为状态相互切换时的中间状态。
图4是在UNSTABLE状态下的搜索流程。
首先根据统计将各种配置的Cache结构按照失效率进行排序。
进入重构搜索状态后,如果引起重构的原因是失效率的上升,则沿着排序表开始,朝失效率降低的方向依次搜索新的Cache结构。
如果引起重构的原因是程序分支频率的改变,则需要搜索所有的Cache 结构。
3. 可重构Cache中问题(1)数据重名问题Cache中的数据重名问题是指主存中同一地址的数据同时出现在Cache中两个不同的位置。
实地址Cache中本来不存在数字重名问题,但引入可重构概念的同时,也带来了数据重名问题。
解决这一问题的简单办法是在Cache重构的时候让Cache中的内容全部无效,需要写回的内容都进行写回。