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 IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
2021-04-15 大二下学期团队项目(讨论)