组成原理/系统结构学习001

组成原理/系统结构学习001

发布于 6月16日 编辑

存储器与CPU的连接

1.地址线的连接
2.数据线的连接
3.读/写命令线的连接
4.片选线的连接

  • 要确认CPU访问的是存储器,不是IO
  • 每一个内存芯片,都有自己的地址范围
  • 每一根地址线,都要用到,有一些地址,作为存储芯片内部地址,给它输入到存储芯片内部,
  • 有一些地址,要作为片选信号,来保证对某一个芯片的访问一定是在给定的的地址范围内访问

5.合理的选择存储芯片

  • 一般来说,保存系统程序的地方,用ROM,保存配置信息的也用ROM,不常改变
  • 用户的程序,系统程序运行的,用RAM
  • 芯片尽可能数量少,片选逻辑尽可能简单

6.其它 时序,负载 ( 不怎么关注 )
例子: 16根地址线( 寻址范围是64K ),8根数据线( CPU每次向存储器中读或者写数据,都要读或者写8位 )

通过片选线连接在一起,就可以使得位拓展

138译码器的例子

结构和功能
1.三个输入 C,B,A
2.一共有8个输出端,有一个是低电平,其他都是高电平
3.要想正常工作,三个控制端G1,G2A,G2B要有相应的信号输入才能工作
4.所有的地址线都要用
在这里插入图片描述


G2A,G2B都是低电平有效,A15是低电平.故要连接在一起

这里的MREQ一定要用到,只有G2B的低电平,这次访问的地址才在存储器中.

在这里插入图片描述

中间想是不是要写点什么
在这里插入图片描述

ROM里的数据只能进行读出,不能写入,所以数据线是单向的.编程端接地.
RAM是可以读出写入的,所以数据线是双向的.所以有WR线和它相连.
两片1K* 4位的RAM,是分别连接到D0-D3,D4-D7的.
image.png

这是一道稍作修改条件的同类题目:
image.png

后面就是分配地址线,C,B,A分别对应的是A14-A12,
把A11-A0地址给每一个芯片,前面的给片选信号来用.
G1高电平,直接接电源,或者A15取反接到G1.
G2A,G2B都是低电平,用A15就可
MREQ低电平有效,接A15或者A14
image.png

这是CPU与存储器的连接图:
image.png

片选信号很灵活.可以使用数字逻辑的知识,自己画片选.
MREQ也是要考虑的,所以不要忘记了.


存储器的校验
image.png

1.编码的最小距离

任意两组合法代码之间 二进制数 的 最少差异 编码的纠错,检错能力,与编码的最小距离有关.

		L-1 =D + C (D>=C)
		L---编码的最小距离
		D---检测错误的位数
		C---纠正错误的位数
汉明码 是一种具有一位纠错能力的编码
  • 汉明码采用奇偶校验
  • 汉明码采用分组校验
    image.png

汉明码的分组是一种非划分方式(为啥这么分,我也不知道)
这里参考这篇帖子,戳我
1|2|3|4|5|6|7
分为三组,每组有1位校验位,共包括四位数据位
image.png

第一组: [ 1,3,5,7 ]
第二组: [ 2,3,6,7 ]
第三组: [ 4,5,6,7 ]

如何分组
第一组 xxxx1 1357

*这里之前有疑问,为啥不是1,3,5,6呢?其实就是最后这个 位是1,那么必然是奇数,绝不可能是6,遂取7
第二组 xxx1x 2367

*这里的取值为啥不是2,3,5,6呢? 笨蛋!因为5对应是0101     
这样两次傻瓜般的猜想,才令人安心

第三组 xx1xx 4567
第四组 x1xxx
第五组 1xxxx
(这里第四,第五没有是因为这个例子用不到,就是表示这个含义)
如果 从右往左数,两位都为1,比如 xx1x1这种类型,说明这 表示第一组和第三组相同的那个值(见韦恩图中的交叉部分)

汉明码的组成
在这里插入图片描述
汉明码三要素:

  • 增添多少位检测位
    添加多少检测位,就是分成多少组.
    校验位有 k 位,信息位有 n 位
    2^k >= n + k + 1
  • 检测位的位置在哪
    放在 2^i (i= 0,1,2…)
  • 检测位的取值
    取值与该为所在的检测"小组"承担的就校验任务有关
    image.png

然后就是这个,第i小组,其独占2^(i-1)位

例题: 求0101按照"偶校验"配置的汉明码

信息位数为 4
2 ^ k >= 5 + k   --> k = 3
所以求得三组,有2^(i-1)可得,放在1,2,4位置上,3,5,6,7放传输的代码.即放0101
汉明码排序如下:
二进制序号 | 1   2   3   4   5   6   7
    名称   |C1  C2   0   C4  1   0   1
    //说白了就是确定C1,C2,C3具体数值
 
 第一组:1,3,5,7
 第二组:2,3,6,7
 第三组:4,5,6,7
 
 对应上方的表,取出来之后, 
    第1组: C1 , 0 , 1 , 1
    第2组: C2 , 0 , 1 , 0
    第3组: C4 , 1 , 0 , 1
  采用的是偶校验,保证它1的个数是偶数个即可
  那么很明显:
  C1 = 0
  C2 = 1
  C4 = 0
  
  所以汉明码就是010 0101
汉明码的纠错过程
形成新的检测位Pi,其位数与增添的检测位有关,如增添3位(k=3),新的检测位为P4,P2,P1
其实是异或来的.

image.png


以下神奇操作,我还没怎么明白,但是知道做法:
image.png

为0是没错的,为1是有错的.
把出错的它们中的算术组成元素找到相同的,就是错的位数.
{或者,使用P4P2P1连接在一起,组成110,也是6(感觉很神奇),把第六位制反,就可以了}

???这里写一点疑问,为啥它就直接写124,然后剩下四位就是信息位???
上方

应该是因为1,2,4,8开头的数

例题: 0101101的纠错过程
	 1 3 5 7
	    0 0 1 1  --> 0
	 2 3 6 7
	    1 0 0 1  --> 0
	 4 5 6 7
	    1 1 0 1  --> 1

所以对比发现 4 有问题 把 0 0 1 倒过来 是100,也是4,那么就是第 四位改为反.即0101是正确的信息位.
???but老师说,可以不纠错第四位,因为纠错只纠信息位,那意思是第四位不是信息位???

汉明编码最小长度是3.
{为啥我也不知道}

提高访存的速度的措施

  • 采用高速器件
  • 采用层次结构 Cache-主存
  • 调整主存结构

1.单体多字系统
就是增大存储体的位数

2.多体并行系统
高位交叉
适合增加容量,但仅此而已.
image.png

低位交叉
下面这个是实现并行的.
在这里插入图片描述

地位交叉的特点:

在不改变存储周期的前提下,增加存储器的带宽.
热心UP主配的课后习题
附上B站网课链接

某机字长为32位,其存储容量是64KB
1) 若主存按字编址,它的寻址范围是多少?
2) 若主存按字节编址,是画出主存字地址和字节地址的分配情况.

这里要说的是,不论字长是多少位,1 Byte = 8 bit 是恒成立的.
Byte(字节)
说明字长多少位,就是这里说的字长 = 2B or 4B 的问题
解:
1. 字长32位,说明一个字 等于4B 
64KB / 4B = 16K

2.按字节编址 ,那么就是
 64KB / 1B = 64K

image.png

字号就是每一个字的标识符,用于表示 第一个字,第二个字.....

由于可以划分成16k个,那么就是2^14个,于是需要14位.

如图中所示,是假设高位字节地址为字地址,
那么就是可以向途中清晰看到啦,左边一串红色的,就是表示字号的.
例题:
某8位微型机地址码为18位,若使用4K 4位的RAM芯片组成的模块版*结构的存储器,试问:
1) 该机所允许的最大主存空间是多少?
2) 若每个模块板为32K * 8位,共需几个模块版?
3) 每个模块版内有几片RAM芯片?
4) 共有多少片RAM?
5) CPU如何选择各块模板?

解:
1> 2^18 * 8 =256 K
2> (2^18 8) / 32k 8 = 2^18 / 2^15 =8片
3> 32K 8 / 4K 4 =16
4> 16 * 8 =144
5>主要想要说明的

这是一个18位地址码的机器,问题就是如何分配这18位
由于微型机是8位的,那么用4K* 4位的机器,就需要位 拓展(片选线连一起,两个当一个用,这样才能变8位)

|模块板号|RAM片号|每个RAM中的片内地址|
| 3 | 3 | 12 |
|<------------共18位-------------->|

有 8 块模块板,编号0-7,可以考虑用3位表示
每块模块板里面,有16片RAM芯片,编号0-15,
每个RAM芯片里,容量是4K,即12位

这里着重说明上面3,3,12是怎么来的.

  • 第一个3是模板块号
  • 第二个3是表示在0-15的RAM片号中, 4K*4位RAM芯片两两一组,所需要的标识是0-7,故只需要三位
  • 第三个12 18-3-3 = 12 or (4k*4位的RAM芯片可以看到4k = 2^12)
    image.png

再看一个题:
(刘宏伟老师之前讲了一模一样,只是口述无ppt)
image.png

猜你喜欢

转载自blog.csdn.net/qq_43733991/article/details/106968097
今日推荐