博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
存储器题目解析(持续更新中....)
阅读量:3888 次
发布时间:2019-05-23

本文共 6224 字,大约阅读时间需要 20 分钟。

4.2.1

.主存中存储单元地址的分配:

存储字长:存储器中一个存储单元(存储地址)所存储的二进制代码的位数,即存储器中的MDR的位数。

(word) : 若干个字节组成一一个”字” ( word)。一个”字”可以存放-条计算
机指令或一一个数据。
存储芯片的容量: 地址线和数据线的位数来表示

  • 题目一机器字长32位,地址线24位,按字节寻址范围为:16M

    答:1字节 = 8位二进制数;
    机器存储字长32位 =32/8 =4字节;
    24位地址线有224字节种地址===》224字节
    1kb = 1024b = 210b
    1M = 1024kb = (1024*1024)字节 = (210 * 210)字节 = 220b
    所以224b=220b * 24=1M * 24=16M

  • 题目二机器字长32位,地址线24位,按字寻址范围为:4M

    答:1字节 = 8位二进制数 ;
    机器存储字长32位 =32/8 =4字节;
    所以一个字对应4个字节
    24位地址线有224字节种地址===》224字节
    1kb = 1024b = 210b
    1M = 1024kb = (1024*1024)字节 = (210 * 210)字节 = 220b
    所以224b=220b * 24=1M * 24=16M
    因为一个字对应4个字节
    16/4=4MV

  • 题目三机器字长16位,地址线24位,按字节寻址范围为:16M

    答:1字节 = 8位二进制数;
    机器存储字长16位 =16/8= 2字节;
    24位地址线有224字节种地址===》224字节
    1kb = 1024b = 210b
    1M = 1024kb = (1024*1024)字节 = (210 * 210)字节 = 220b
    所以224b=220b * 24=1M * 24=16M

  • 题目四机器字长16位,地址线24位,按字寻址范围为:8M

    答:1字节 = 8位二进制数;
    机器存储字长16位 =16/8= 2字节;
    所以一个字对应2个字节
    24位地址线有224字节种地址===》224字节
    1kb = 1024b = 210b
    1M = 1024kb = (1024*1024)字节 = (210 * 210)字节 = 220b
    所以224b=220b * 24=1M * 24=16M
    因为一个字对应2个字节
    16/2=8MV

  • 题目五:某电脑主存的存储容量为256MB,则按字节寻址的地址线位数对应:28位

    256MB= 1MB *256=1MB * 28
    1MB=220字节
    256MB = 220 * 28=228B
    所以对应的地址线位数:28位

  • 题目六计算存储芯片容量,地址线为10根,数据线4根,则芯片容量为:4k位

    答:210个存储单元,1k=210B,每个存储单元包含4位数据,
    芯片容量=210x4 = 1K * 4位 =4K位

  • 题目七计算存储芯片容量,地址线为14根,数据线1根,则芯片容量为:16k位

    答:214个存储单元,1k = 210B,每个存储单元包含1位数据,
    芯片容量=214x1 = 16K * 1位 =16K位

  • 题目八: 某计算机字长是32位,它的存储容量是64KB,按字编址,它的寻址范围是( 16kb

    答:机器字长32位,8位2进制数表示一个字节,机器字长4字节,寻址范围64/4=16kb

  • 题目九: 2片1K x 4位 存储芯片怎么组成1k x 8位的存储芯片?

    答:利用位扩展,1K x4位的存储芯片有地址线:10根,数据线:4根
    将芯片1的数据线作为高四位D7 - D4,另一片的数据线作为低四位D3-D0

  • 题目十:2片1K x 8位 存储芯片怎么组2k x 8位的存储芯片?

    答:利用字扩展,
    1K x 8位的芯片,有10根地址线,8根数据线;
    2K x 8位的芯片,有11根地址线,8根数据线;
    A0-A9作为地址线,A10用作片选线,因为片选的输入端必须低电平有效
    当A10为低电平时,片选信号CS0 有效,选中芯片1;
    当A10为高电平时,片选信号经过反向后,信号cs1有效,选中芯片2

  • 题目十一: 8片1K x 4位 存储芯片怎么组成4k x 8位的存储芯片?

    答:利用字,位同时扩展
    两片1K x 4位的芯片构成一组1K x 8位的存储器(位扩展
    4组1K x 8位的存储器便构成4K x 8位的存储器
    4K x 8位的存储器:有12根地址线 ,8根数据线
    A0 -A9:地址线
    A10 - A11:经过片选译码器 得到4个片选信号cs0 cs1 cs2 cs3 cs4
    4个片选信号分别选择其中一组 1K x 8位的信号

  • 题目十二:在这里插入图片描述

    1.主存地址空间分配:
    6000H - 67FFH为系统程序区
    6800H ~ 6BFFH为用户程序区
    2.说明各选几片芯片
    3.画出存储芯片的片选逻辑图
    答:1.先将16进制地址码 转换为 2 进制地址码,确定其总容量
    6000转为二进制:(利用8,2,4,1转换)
    6 : 0+4+2+0 -->0110
    0 : 0+ 0 +0 + 0–>0000
    6000 = 0110 0000 0000 0000
    67FFH转为:
    7 :0+4+2+1 -->0111
    F : =15=8+4+2+1=1111
    67FF = 0110 0111 1111 1111
    同理:
    6800 = 0110 1000 0000 0000
    6BFF = 0110 1011 1111 1111
    因为有16根地址线,所以排列为:A0 ~ A15

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1
0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1

一:

系统程序区:A0~ A10 编码从全0 ->全1,一共11根线
z11=2k,8根数据线,所以系统程序区总容量为2K x 8位
用户程序区:A0~ A9编码从全0 ->全1,一共10根线
z10=1k,8根数据线,所以系统程序区总容量为1K x 8位
二:
系统程序区:总容量为2K x 8位,因为ROM芯片存放系统程序,所以选择1片 2K x 8位的ROM
用户程序区:总容量为1K x 8位,用户程序,需要可读写,因为RAM芯片存放系统程序,所以选择2片 1K x 4位的RAM芯片
三:
分配地址线:
A10 ~ A0 接2K x 8位ROM的 地址线
A9 ~ A0接1K x 4位的RAM的地址线
A11 ~ A15 :总共5根线作为片选线
使用74138译码器:
A13 连接 C
A12 连接 B
A11 连接 A
此时CBA有两种情况,对应Y4 Y5
(74138工作原理 二进制转为十进制)
- 100 (转为十进制)=4
- 101 (转为十进制)=5
74138译码器:
G1 高电平
G2a 和G2b为低电平才能正常工作
A15始终为“0”,为低电平----对应G2a
A14始终为“1”,为高电平对应G1
访存控制信号MREQ(低电平有效):对应G2b
在这里插入图片描述

  • 题目十三
    CPU以及芯片同题目十二,画出CPU与存储器的连接图;(要求:系统程序区大小为:最小8k;与其相邻的16k为用户程序区;最大4k地址空间为系统程序工作区)

答:

因为有16根地址线,所以排列为:A0 ~ A15
根据地址范围写出二进制地址码:
最小8K x 8位的系统程序区:地址码从全 0 开始,8K说明地址线有13根
A0 ~ A12的地址码从全0 变为 全1 ;

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1

相邻的16k x 8为用户程序区: 用两片 8k x 8位的RAM芯片 组成16K x 8位的芯片

RAM1地址为:

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

RAM2地址为:

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1

最大4k x 8位系统程序工作:

有12根地址线,A0-A11

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

分配地址线:

A12 ~ A0 接1片8K x 8位ROM的 地址线和2片8K x 8位RAM的 地址线
A11 ~ A0接4K x 8位的RAM的地址线
A11 ~ A15 :总共5根线作为片选线
使用74138译码器:
A15 连接 C
A14 连接 B
A13 连接 A
此时CBA有4种情况,对应Y0 Y1 Y2 Y7
(74138工作原理 二进制转为十进制)
- 000 (转为十进制)=0
- 001 (转为十进制)=1
- 010 (转为十进制)=2
- 111 (转为十进制)=7
74138译码器:
G1 高电平
G2a 和G2b为低电平才能正常工作
高电平对应G1
访存控制信号MREQ(低电平有效):对应G2b G2A
在这里插入图片描述

  • 题目十四:按照配偶原则配置0011的汉明码
    答:因为二进制码为4位
    所以n=4;
    2k>= n + k +1
    所以检测位K = 3,代码分成三组
    位置安排如下
    在这里插入图片描述
    c1检测位检测的小组包含:1 3 5 7 9 11…
    c2检测位检测的小组包含:2 3 6 7 10 14 15…
    c4检测位检测的小组包含:4 5 6 7 12 13 14 15…
    因为是配偶原则:
    c1=1
    c2=0
    c4=0
    所以汉明码为:1000011
  • 题目十五:按照配偶原则接收到的汉明码为0100111,试问欲传送的信息是什么
    答:由于被传送的信息必须是正确的信息,因此不能简单的从接收到的7位汉明码中去掉C1 C2 C4三位检测位,应该先判断是否出错,过程如下:
    P1 = ①位+③位+⑤位+⑦位=0 无错
    P2=②位+③位+⑥位+⑦位 = 1 有错
    P4=④位+⑤位+⑥位+⑦位 =1 有错
    所以:P4P2P1 = 110转为十进制为 6
    所以第六位出错,纠正为:0100101
    想要传送的信息为:0101
  • 题目十六:写出按偶校验 配置的汉明码0101101的纠错过程
    答:P1 = ①位+③位+⑤位+⑦位=1 无错
    P2=②位+③位+⑥位+⑦位 = 0 有错
    P4=④位+⑤位+⑥位+⑦位 =0 有错
    所以:P4P2P1 = 100转为十进制为 4
    所以第4位出错,因为第四位为校验码 ,可以不纠正
  • 题目十七: 设有四个模块组成的四体存储器结构,每个体的存储字长为32位,存储周期为200ns.假设数据总线宽度为32位,总线传输周期为50ns,试求顺序存储和交叉存储的存储器带宽。
    答:

存储器模块数为:n,存取周期为:T 总线传输周期:t 已知低位交叉的存储器,连续读取n个字所需要的时间t1为: T +(n-1)t

已知高位交叉的存储器,连续读取n个字所需要的时间t2为: nT

顺序存储和交叉存储连续读出4个字的信息量为324=128位,

顺序存储存储器连续读出4个字的时间为:200ns4=800ns
交叉存储存储器连续读出4个字的时间为:200ns+50ns*(4-1)=350ns
顺序存储器的带宽为:128bit/800ns=16 * 107bps
交叉存储器的带宽为:128bit/350ns=37 * 107bps

  • 题目十八: 1、一个采用直接映射方式的16KB缓存,假设块长为8个32位的字,则地址为FDA459H的主存单元映射到缓存的第 290 (十进制表示)块内。

FDA459H=1111 1101 1010 0100 0101 1001

有题目知16kb缓存(214 =16k)缓存地址有14位
又因为主存字块标记为主存地址长度与cache地址长度之差,即 主存字块标记24-14=10位
求缓存字块地址和字块内地址?
缓存字块地址位数:因为缓存大小为16k,存储字长32位,一个字节有8位2进制数,所有4个字节。所以缓存中总共有16KB/4B=212个字
因为每个字块8个字,所以有212/ 8=29块 ,所以缓存字块地址为9位。
字块内地址:(3位表示8个字,2位表示每字32位)所以字块内地址5位

  • 题目十九某计算机字长为32位,按字节编址,采用小端(Little Endian)方式存储数据。假定有一个double型变量,其机器数表示为1122 3344 5566 7788H,存放在0000 8040H开始的连续存储单元中,则存储单元0000 8046H中存放的是 (A )

    A 22H B 33H C 77H D 66H
    在这里插入图片描述

  • 题目二十设某机主存容量为16MB,缓存的容量为16KB。每字块有8个字,每个字32位。设计一个四路组相连映射(即缓存每组内共有4个字块)的缓存组织,要求:

    (1)画出主存地址字段中各段的位数。
    主存容量为16MB =224b 即主存地址字段为24位
    字块内地址:(3位表示8个字,2位表示每字32位)所以字块内地址5位
    缓存字块地址位数:因为缓存大小为16k,存储字长32位,一个字节有8位2进制数,所有4个字节。所以缓存中总共有16KB/4B=212个字
    因为每个字块8个字,所以有212/ 8=29块 ,
    四路组相连:2r=4 r=2
    所以缓存字块地址为9-2=7位。
    又因为主存字块标记为主存地址长度与cache地址长度之差,即主存字块标记24-7-5=12位

(2)设缓存初态为空,CPU依次从主存第0、1、2、…、99号单元读出100个字(主存一次读出一个字),并重复此次序读8次,问命中率是多少?

字块中共8个字,初态为空,访问0时未命中,访问1-7单元时均命中,同理8,16,。。。。,96均未命中,一共13次未命中。1008-13/1008=98.375%

(3)若缓存的速度是主存速度的6倍,试问有缓存和无缓存相比,速度提高多少倍?

6t 800 / t(800-13)+6t13
主存存取周期6t 缓存存取周期t
不用缓存需要的时间为 6t800
用缓存需要的时间为 6t
13 + t*(1000-13)
速度提高多少倍:6t800 /6t13 + t*(1000-13) - 1 =4.5

转载地址:http://mothn.baihongyu.com/

你可能感兴趣的文章
[小技巧] Vim 如果去除 “existing swap file” 警告
查看>>
如何在linux下检测内存泄漏
查看>>
十年生聚,Vim 8.0 发布了!
查看>>
【演歌】加賀の女 歌词翻译
查看>>
東京音頭 (东京音头) 歌词翻译
查看>>
Windows 7 下登录界面里 Ctrl + Alt + Del 无法使用
查看>>
惠山赏菊 & 梅园赏桂
查看>>
[小技巧] cat /proc/modules 显示的地址为 0
查看>>
[游戏] chrome 的小彩蛋
查看>>
napi
查看>>
_GNU_SOURCE和__USE_GNU的差别
查看>>
Linux 有了 “DTrace”
查看>>
Linux 系统中僵尸进程
查看>>
一个 2 年 Android 开发者的 18 条忠告
查看>>
标志性文本编辑器 Vim 迎来其 25 周年纪念日
查看>>
[小技巧] chrome 的 vim 插件
查看>>
在 Linux 中查看你的时区
查看>>
[小技巧] [trac] Fix AttributeError: 'NullTranslations' object has no attribute 'add'
查看>>
[小技巧] Mac OS X上键盘的键位重映射
查看>>
Java对Oracle中Clob类型数据的读取和写入
查看>>