当前位置: 首页 > news >正文

【计算机组成原理01】:主存与Cache的地址映射

目录

一、直接相联映射及其地址变换

图示

原理 

CPU访问流程

二、组相联映射及其地址变换

图示

原理

CPU访问流程

三、全相联映射及其地址变换

 图示

原理

CPU访问流程

四、三种映射方式的对比 


主存Cache的地址映射方式:全相联映射、直接映射、组相联映射

一、直接相联映射及其地址变换

直接地址映射是指主存中的块只能映射到 Cache 中某个固定的块中,主存和 Cache 块的对应关系可用如下公式表示:j = i \mod 2^c(一种类似哈希的做法)

图示

原理 

在直接地址映射方式下,主存地址由三部分组成:区号(t 位)、区内块号(c 位)和块内地址(b 位),其中,m = t + c。通常用区表来保存主存块与 Cache 块的映射关系。区表中的每个存储字主要包括两个部分;主存区号和有效位。有效位表示区表中的主存块是否已经装入 Cache 中。区表中共有 2^c 个存储字。区表通常存放在一个小容量高速存储器中,按地址进行访问。

CPU访问流程

 


二、组相联映射及其地址变换

组相联映射 = 全相联映射 + 直接相联映射。如下图所示,主存和 Cache 的块先进行分组,(主存和 Cache 每组块数相同),在地址映射时,组间为直接相联映射,组内为全相联映射。

图示

原理

在上图中,Cache 被分为 2 ^ u 组,每组 2^v 块;主存中共有 2 ^s 个区,每个区有 2 ^ u 个组,即共有 2^{s + u} 个组。主存中的每个区的第 i 组都只能映射到 Cache 中的第 组,在组内块采用全相联方式,即每个块都可以映射到 Cache 的第 i 组的任一块。 CPU 发出的访存地址被分解为:区号 S,组号 U,组内块号 V' 和块内地址 \(B\) 四个部分。而 Cache 的地址可分解为:组号 U,组内块号 V 和块内地址 B 三个部分。下图给出了组相联地址变换方式。

注:路组相联是指:每组有 n 块。

 CPU访问流程


三、全相联映射及其地址变换

全相联地址映射是指主存中的每一块都可以映射到 Cache 中的任意块,如下图所示。这种映射方法是最灵活的,也是 Cache 利用率最高的一种方式,但同时也是成本最高的一种方式。

 图示

原理

在全相联映射方式下,主存地址被分为两个部分:高m位表示主存块地址,低b位表示块内地址。同样,Cache的地址也分为两个部分:高c位表示Cache块地址,低b位表示块内地址。通常采用目录表记录主存块之间的映射关系,并将目录表存放在一个相联存储器中。目录表中的每个存储字主要包括三个部分:主存块号、Cache块号和有效位。有效位表示目录表中主存块号和Cache块号建立的映射关系是否有效。目录表共有 2^c 个存储字,即 Cache 中每个块对应一个存储字。 

CPU访问流程


四、三种映射方式的对比 

三种映射方式中,直接映射的每个主存块只能映射到 Cache 中的某一固定行;全相联映射可以映射到所有 Cache 行;N 路组相联映射可以映射到 N 行。当 Cache 大小、主存块大小一定时:

①直接映射的命中率最低,全相联映射的命中率最高。

②直接映射的判断开销最小、所需时间最短,全相联映射的判断开销最大、所需时间最长。

③直接映射标记所占的额外空间开销最少,全相联映射标记所占的额外空间开销最大。

                                        

相关文章:

  • 建筑证书兼职网站排名前50名免费的网站
  • 哪些网站做的美百度搜索最多的关键词
  • 百度seo营销网站长春百度seo公司
  • 网站建设程序源码品牌seo主要做什么
  • 怎样申请做自己的网站外贸推广网站
  • 自学考试网站建设与管理百度网游排行榜
  • 【Docker基础】Docker容器管理:docker stop详解
  • 洛谷 删数的问题 贪心
  • C/C++库开发完全指南:从静态库到动态链接的深度解析
  • Unity反射机制
  • 【Linux网络与网络编程】15.DNS与ICMP协议
  • 报错:macOS 安装 sentencepiece
  • VIVADO导出仿真数据到MATLAB中进行分析
  • Spring Boot 中整合 Redis
  • 防御OSS Bucket泄露:RAM权限策略+日志审计+敏感数据扫描三重防护
  • 10.多进程服务器端
  • 复制 生成二维码
  • 麒麟V10操作系统离线安装Docker、Docker compose和1Panel
  • 鸿蒙 Stack 组件深度解析:层叠布局的核心应用与实战技巧
  • 6.24_JAVA_微服务_Elasticsearch搜索
  • 用Rust写平衡三进制加法器
  • 华为云Flexus+DeepSeek征文|基于华为云Flexus Dify复用优秀 AI Agent 应用教程
  • TMS汽车热管理系统HILRCP解决方案
  • FastMCP+python简单测试
  • Jenkins+Jmeter+Ant接口持续集成
  • 信创建设,如何统一管理异构服务器的认证、密码、权限管理等?