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
用缓存需要的时间为 6t13 + t*(1000-13)
速度提高多少倍:6t800 /6t13 + t*(1000-13) - 1 =4.5