Cache与主存的映射方式
Cache行中的信息是主存中的某个块的副本,地址映射就是把主存地址空间映射到Cache地址空间,即把存放在主存中的信息按照某种方式装入Cache中。
Cache要为每一块加一个标记,指明它是主存中的那一块
为了说明Cache中的信息是否有效,Cache行需要一个有效位
1.直接映射
主存中的每一行之装入到Cache中的唯一位置,如果发生块冲突,原来的块将会被无条件的换出,无需使用替换算法
直接映射的关系可以定义为:
Cache行号=主存块号 mod Cache总行数
直接映射地址结构:
CPU的访存过程:
1)首先根据访存地址中间的c位,找到对应的Cache行。
2)与对应Cache行中的标记和主存地址的高t位标记进行比较
3)若相等,且有效位为1,则访问Cache命中,测试在根据主存地址中低位的块内地址,在对应的Cache行中存取信息。
若不相等,或有效位为0,则不命中,此时CPU从主存中读出该地址所在的一块信息送到对应的Cache行中,将有效为置1,并将标记设置为地址中的高t位,同时将该地址中的内容送到CPU。
2.全相联映射:
主存中的每一块都可以装入Cache中的任何位置,每行的标记用于指出该行取主存的那一块,所以CPU访问时需要与所有的Cache行的标记进行比较。
地址结构:
3.组相联映射:
将Cache分成Q个大小相等的组,每个主存块可以装入固定组中的任意一行,即组间采用直接映射,而组内采用全相联映射的方式。假设每组有r个Cache行,则称之为r路组相连。
组相联映射的关系可以定义为:
Cache组号 = 主存块号 mod Cache组数(Q)
组相联映射的地址结构:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步