计算机组成原理之地址映射

例1:某计算机主存容量256MB,按字编址,字长1B,块大小32B,Cache容量512KB。对如下的直接映射方式、4-路组相联映射方式、全相联映射方式的内存地址格式,求:
(1)计算A、B、C、D、E、G字段的位数;(6分)
(2)若某字的地址为(2BF3A2E)16,若采用4-路组相连映射方式,则该字对应的标记D是什么?对于包含该地址在内的组,对应的字地址范围是多少?(结果用十六进制表示。)(3分)

直接映射方式:

标记ACache行号B字地址C
4-路组相联映射方式:
标记DCache组号E字地址F
全相联映射方式:
标记G字地址H

解题:
(1)由主存容量256MB=2^28B,且按字编址,字长为1B,可得地址总位数为28位。由块大小为32B,字长1B,得字地址位数为5位。Cache容量为512KB,总共可以分为512KB/32B=16K(行),Cache行号位数为14位。若按4-路组相连进行组织,则共有16K/4=4K(组),组号位数12位。
B的位数14,C的位数5,A的位数28-5-14=9.
E的位数12,F的位数5,D的位数28-5-12=11.
H的位数5,G的位数28-5=23.
(2)(2BF3A2E)16=(0010 1011 1111 0011 1010 0010 1110) 2
若采用4-路组相连,则标记D为高11位地址(0010 1011 111)2,用十六进制表示为(15F)16。
 **由于内存和Cache映射时是以块为单位进行映射,因此在4-路组相连映射情况时,相当于将D和E固定,对F进行排列组合。**也就是说,包含该地址在内的组对应的字地址范围是:(0010 1011 1111 0011 1010 0010 0000) 2 ~ (0010 1011 1111 0011 1010 0011 1111) 2,即有(2BF3A20)16~(2BF3A3F)16

例2:将 4K×8 的 DRAM 存储芯片组装成 128M×32 的存储器,按字节从地址 0 开始编址,字长 32 位。设存储周期为 400ns,数据总线宽度为 32 位,总线传送周期为50ns,试求:
(1)若采用顺序存储方式,则地址为(1A2C0005)16的字位于哪个模块?在模块内第几个字?(从 0 开始编号;结果用十六进制表示)

解题:因按字节编址,每一 32 位字长需要 2 位来进行编码,128M 个字长需要 27 位来进行编码,因此 128M×32 位的存储器地址线为 29 位。 (易错)
用 4K×8 的 DRAM 存 储 芯 片 组 装 成 128M×32 的 存 储 器 , 总 共 需 要(128M×32)/(4K×8)=217 块存储芯片。其中,每 4 个存储芯片为一个模块来进行字长扩展,则总共有 215模块。
因采用顺序存储方式,因此 29 位地址中,高 15 位用于模块选择,接下去的 12 位为片内选择,最后 2 位是字长内不同字节选择。
对于给定的地址(1A2C0005)16=(0001 1010 0010 1100 0000 0000 0000 0101)2,最高 3 位000 位无效地址,接下来的 15 位 1 1010 0010 1100 00 为模块编号,随后的 12 位 00 0000 0000 01 为片内编号,最后 2 位 01 为字长内字节编号。因此该地址位于(68B0)16模块内的(001) 16字。

例3: 某机器字长为 32 位,按字编址,总容量为 64M×32。其中,ROM 的容量为4M×32,占用低位地址空间,由 1M×16 的 ROM 芯片构成;RAM 的容量为 60M×32,占用高位地址空间,由 4M×16 的 DRAM 芯片构成。ROM 芯片有CS̅̅̅信号控制端,DRAM
芯片有CS̅̅̅和WE ̅̅̅̅̅信号控制端,CPU 的控制信号为𝑅/𝑊̅ (读/写)。请问:
(1) 总共需要多少 ROM 芯片?ROM 的地址范围是多少(用十六进制表示)?(2 分)
(2) 总共需要多少 DRAM 芯片?RAM 的地址范围是多少(用十六进制表示)?(2 分)
(3) 若 ROM 和 RAM 采用顺序方式进行字、位扩充,请画出存储器 ROM 和 DRAM 同CPU 连接的组成逻辑框图。(6 分)
(4) 若在 CPU 和内存间引入 512K 的高速缓存 Cache,且采用 4-路组相连映射方式,块大小为 32 字节,则 Cache 可以分为多少组?若将包含内存地址(5010 CA00)16的块调入 Cache,则将映射到 Cache 的哪个组(下标从 0 开始)?

解题:(1)ROM 芯片数:4M×32/(1M×16)=8(片)由于总存储容量是 64M×32 位,按字编址,且字长为 32 位,因此地址线数量是 26 位。且ROM 占低位地址,因此最低的 4M 字是 ROM 的范围,具体而言地址范围是(000 0000)16 –(03F FFFF) 16。 (1 分)
(2)DRAM 芯片数:60M×32/(4M×16)=30(片) (1 分)
根据题意,DRAM 占高位地址内存空间,即高 60M 均属于 DRAM 的。具体而言,地址范围是(040 0000)16 – (3FF FFFF) 16。 (1 分)
(3)ROM 和 DRAM 芯片,都是两片经由位数扩充组成一组,ROM 共 4 组,DRAM 共15 组。按 32 位字长进行编制,因此实际的地址位数为 26 位。对于 ROM 而言,片内是 20位,片选是高 2 位;对于 RAM 而言,片内是 22 位,片选是 4 位。由于 ROM 和 RAM 的片内地址线和片选线数量均不一致,因此只能向 ROM 看齐。具体而言,26 位地址线中的高 6 位用于片选译码,译出 64 种片选信号,其中对应000000–000011 的属于 ROM 的 4 组片选信号,剩余的 000100–111111 共 60 种情况用于 RAM 的片选。然而 RAM 实际上只有15 组,且 RAM 的片内地址线应该为 22 位,因此每连续的 4 种情况对应 RAM 的一组。例如 000100~000111 对应用于 RAM 的组 0,其它依次类推。
(4))因采用 4-路组相连,因此每个组大小为 4×32=128B。这样 512KB 的 Cache 总共可以分成512KB/128B=4K=4096组
对于给定的 DRAM 地址(110 CA00)16,共 28 位,其中最高 2 位超出地址线数量 26,因此这最高 2 位没有作用;接下来的 26 位为有效地址。由于内存按 32 位字长进行编址,因此块内实际有 8 个字,因此块内编号需要 3 位;由于 Cache 有 4096 组,因此组号为 12
位;剩下的 tag 为 26-3-12=11 位。按此格式,可知包含(110 CA00)16 的块映射到的组号为(1001 0100 0000)2=(940)16
在这里插入图片描述

例4:设某机器字长32位(即数据线、地址线位数均为32位),按字编址。在该机器上运行如下的C语言程序:
int a[16], k, sum=0;
for (k=0; k<16; k++) sum += a[k];
设整型数据在内存中占4个字节(即一个字长),内存足够大,数组元素放在内存中的连续单元,k和sum已经放在寄存器中。假设主存和Cache的块大小为4字长,数组元素a[0]-a[3]存放在主存的B0块中,数组a的其它元素依次存放;计算机的Cache有8行,行号为L0-L7;内存数据块映射到Cache时采用直接映射方法。试回答下列问题:
(1) 采用直接映射时,内存地址格式如何?简述理由;(3分)
(2) 数组元素a[5]放在Cache的哪一行中?简述理由;(2分)
(3) 就该程序而言,Cache的命中率是多少?简述理由。

解题:(1)由于每块有 4 个字,因此块内地址 2 位。Cache 总共有 8 行,因此采用直接映射方式时,用于 Cache 行号的地址为 3 位,剩余的 32-2-3=27 位为标记位。因此,内存地址格式如下:
标记(27 位) Cache 行号(3 位) 块内编址(2 位)
(2)a[5]属于内存数据块 B1,通过 1%8=1 方式映射到 Cache 的 L1 行。
(3)当对 a[0]进行累加时,a[0]在内存中,因此需要访问内存来获得 a[0]。内存在将 a[0]传送给 CPU 的同时,根据局部性原理将 a[0]-a[3]同时传送给 Cache。因此,在累加 a[1]-a[3]时,这 3 个元素均可以在 Cache 中找到。对于其它数据块,有类似的情况,即某块的第 0
个元素需要访问内存,该块内的其余元素可以在 Cache 中获得。因此,执行此段 C 语言程序,共访问内存 4 次,访问 Cache 12 次,则 Cache 的命中率为:12/(12+4)=75%

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/74502.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

05 - 研究 .git 目录

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. HEAD2. config3. refs4. objects 1. HEAD 2. config 3. refs 4. objects Git对象一共有三种&#xff1a;数据对象 blob、树对象 tree以及提交对象 commit&#xff0c;这些对象都被保…

详谈数据库InnoDB引擎与MyISAM引擎

目录 1. 简单了解什么是存储引擎? 2. InnoDB 引擎概述 3. MyISAM 引擎概述 4. InnoDB 与 MyISAM 的一些区别 1. 简单了解什么是存储引擎? 相信很多人在听到存储引擎这个名字的时候可能会有些疑惑&#xff0c;听着名字就觉得有些难&#xff0c;导致很多人没有兴趣了解它&a…

使用基于jvm-sandbox的对三层嵌套类型的改造

使用基于jvm-sandbox的对三层嵌套类型的改造 问题背景 先简单介绍下基于jvm-sandbox的imock工具&#xff0c;是Java方法级别的mock&#xff0c;操作就是监听指定方法&#xff0c;返回指定的mock内容。 jvm-sandbox 利用字节码操作和自定义类加载器的技术&#xff0c;将原始方法…

el-table实现静态和动态合并单元格 以及内容显示的问题

实现效果图 <el-tablev-loading"loading":data"tableData"style"width: 100%":row-class-name"tableRowClassName"size"small"><el-table-column fixed label"序号" width"50"><el-tab…

文本分类实战-NLP

数据集及任务分析 项目主题&#xff1a;新闻的主题分类&#xff0c;10分类任务 一般对于NLP项目来说的话需要进行数据预处理的&#xff0c;但是由于本项目的数据是经过处理过的&#xff0c;所以就不需要进行数据预处理了&#xff0c;但是数据预处理对NLP项目是重中之重的。 TH…

【Linux】高级IO

目录 IO的基本概念 钓鱼五人组 五种IO模型 高级IO重要概念 同步通信 VS 异步通信 阻塞 VS 非阻塞 其他高级IO 阻塞IO 非阻塞IO IO的基本概念 什么是IO&#xff1f; I/O&#xff08;input/output&#xff09;也就是输入和输出&#xff0c;在著名的冯诺依曼体系结构当中…

Python-OpenCV中的图像处理-视频分析

Python-OpenCV中的图像处理-视频分析 视频分析Meanshift算法Camshift算法光流 视频分析 学习使用 Meanshift 和 Camshift 算法在视频中找到并跟踪目标对象: Meanshift算法 Meanshift 算法的基本原理是和很简单的。假设我们有一堆点&#xff08;比如直方 图反向投影得到的点&…

低代码开发工具:JVS轻应用之间如何实现数据的调用?

在低代码开发平台中&#xff0c;如何实现应用之间的数据共享呢&#xff1f;最标准的方式是通过接口&#xff0c;本文介绍JVS轻应用如何实现将数据通过API输出、轻应用如何实现体内API数据的获取&#xff1f;实现方式如下图所示&#xff0c;不管是数据提供方&#xff0c;还是数据…

接口测试常用代理工具

些代理工具可以帮助我们构造各种测试场景、以及更好的完成测试工作。下面的介绍以 Charles 为主。 Charles Charles 是一款代理服务器&#xff0c;可以截取请求和响应达到分析抓包的目的&#xff0c;且支持多平台&#xff0c;能够在 Windows&#xff0c;Mac&#xff0c;Linux…

Spring Boot 集成 XXL-JOB 任务调度平台

一、下载xxl-job并使用。 二、将xxl-job集成到springboot里 一、 下载xxl-job并使用。 这一步没完成的请参考这个博客&#xff1a;http://t.csdn.cn/lsp4r 二、将xxl-job集成到springboot里 1、引入依赖 <dependency><groupId>org.springframework.boot</group…

Stable Diffusion +EbSynth应用实践和经验分享

Ebsynth应用 1.安装ffmpeg 2.安装pip install transparent-background,下载模型https://www.mediafire.com/file/gjvux7ys4to9b4v/latest.pth/file 放到C:\Users\自己的用户名.transparent-background\加一个ckpt_base.pth文件 3.秋叶安装ebsynth插件,重启webui 填写项目基本…

CSDN编程题-每日一练(2023-08-14)

CSDN编程题-每日一练&#xff08;2023-08-14&#xff09; 一、题目名称&#xff1a;小股炒股二、题目名称&#xff1a;王子闯闸门三、题目名称&#xff1a;圆小艺 一、题目名称&#xff1a;小股炒股 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述&#xff1a; …

开学季电容笔怎么选?iPad第三方电容笔了解下

不少的学生党开学必备清单里都少不了电容笔&#xff0c;可见其的重要性。自从苹果发布了ipad的原装电容笔以来&#xff0c;这款电容笔在目前市面上就一直很受欢迎&#xff0c;不过由于Apple Pencil的售价实在是太贵了&#xff0c;使得大部分人都买不起。于是&#xff0c;市面上…

Android中tools属性的使用

参考&#xff1a; 1.Android:Tools命名空间原来是有大用处的 2.Android中tools属性的使用 3.工具属性参考文档 4. 命名空间介绍 5. 注解 6. lint 7. 资源压缩shrink-resources 目录 一、概述二、引入tools命名空间三、tools 命名空间的作用有哪些&#xff1f;四、tools 命名空间…

面试热题(数组中的第K个最大元素)

给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 输入: [3,2,1,5,6,4] 和 k 2 输出: 5提到数组中最大元素&#xff0c;我们往往想到就是先给数组…

【Linux初阶】system V消息队列 + system V信号量

文章目录 一、system V消息队列&#xff08;了解&#xff09;二、system V信号量&#xff08;了解&#xff09;1.信号量是什么2.临界资源和临界区3.互斥4.为什么要信号量 三、IPC资源的组织方式结语 一、system V消息队列&#xff08;了解&#xff09; 消息队列提供了一个从一…

聊聊JDK1.0到JDK20的那些事儿 | 京东云技术团队

1.前言 最近小组在开展读书角活动&#xff0c;我们小组选的是《深入理解JVM虚拟机》&#xff0c;相信这本书对于各位程序猿们都不陌生&#xff0c;我也是之前在学校准备面试期间大致读过一遍&#xff0c;emm时隔多日&#xff0c;对里面的知识也就模糊了。这次开始的时候从前面…

在Java中对XML的简单应用

XML 数据传输格式1 XML 概述1.1 什么是 XML1.2 XML 与 HTML 的主要差异1.3 XML 不是对 HTML 的替代 2 XML 语法2.1 基本语法2.2 快速入门2.3 组成部分2.3.1 文档声明格式属性 2.3.2 指令&#xff08;了解&#xff09;&#xff1a;结合CSS2.3.3 元素2.3.4 属性**XML 元素 vs. 属…

nginx keepalived 本地二进制部署

文章目录 安装 nginx安装 keepalived卸载 nginx卸载 keepalived 安装 nginx wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -xf nginx-1.24.0.tar.gz cd nginx-1.24.0/ ./configure --with-stream --prefix/usr/local/nginx make && make install修改nginx…

使用 VScode 开发 ROS 的Python程序(简例)

一、任务介绍 本篇作为ROS学习的第二篇&#xff0c;是关于如何在Ubuntu18.04中使用VSCode编写一个Python程序&#xff0c;输出“Hello&#xff01;”的内容介绍。 首先我们来了解下ROS的文件系统&#xff0c;ROS文件系统级指的是在硬盘上ROS源代码的组织形式&#xff0c;其结构…
最新文章