大纲
1.数据的表示
二进制转十进制
其他进制转十进制
十进制转二进制
进制的相互转换
- 二进制转8进制,右往左,3位为一段,不够左边补0
- 二进制转16进制,右往左,4位为一段,不够左边补0
8转16,或者16转8
- 直接先转为2进制,再二进制通过3位或者4位转为16或者8
原码反码补码移码
在计算机中参与运算的数有两大类:无符号数和有符号数。无符号数,即没有符号的数,在寄存器中的每一位均可用来存放数值;而有符号数,则需要留出位置来存放符号。以机器字长为8位为例,无符号数表示的范围是0~255,有符号数表示的范围是-128~+127。
先明白以下的几个概念:
- 机器字长:存放数值的寄存器的位数,如8位,16位。
- 真值:带有“+”或“-”符号的数称为真值。
- 机器数:把符号“数字化”的数称为机器数。
将日常十进制的数据转为计算机使用的数据的编码
- 先将十进制转为二进制
- 在看用多少字节存储数据,如果是一个字节就8位,不够就左边补0,补够8位
- 最高位,最前面那个0是正,1是负
移码作为浮点运算中的阶码
原码是正的,反码加补码不变
原码是负的
- 反码的符号位不变,其他位取反
- 补码的符号位不变,其他位取反,然后加1 (即在反码的基础上加1)
移码就是在补码的基础上符号位取反,移码一般用作阶码
(就像数轴,因为0是正的,1是负的
在数轴上显示,负的在正的前面,很奇怪,所以移码就符号位取反
1为正,0为负,数轴看起来正数在负数前面,就正常了一点
下面是数值的表示范围
例如一个字节就8个bit,就是8个位,最高能表示多少
例如n=8,
则原码和反码都是-127 到 +127
补码确是-128 到 +127(比反码源码范围大一个)
因为原码补码有+0,-0所以
负0通过补码算法处理后自然而然地被利用起来,用来表示-128.
计算机中为什么要用补码存储数据?
因为根据规则,原码和补码不能表示 -0,而移码可以表示到-128,所以就用-128,来表示-0,所以
用补码存-0
计算机在做同号相减或异号相加时,若都为原码,计算非常复杂,符号位不能简单加减,需要根据两者的绝对值而定,若为补码,则不需要考虑这些因素,符号位可以直接作加减操作。
因此一个字节的有符号整数范围为-128到127。
总结
- 原码+反码:8位原码和反码能够表示数的范围是-127~127;
- 补码:8位补码能够表示数的范围是 -128~127。
- (在补码中用(-128)代替了(-0),所以补码的表示范围为:(-128~0~127)共256个)
浮点数运算
对阶
格式化
2.计算机结构
这里的主机不是我们平时生活主机箱的东西,我们主机比日常生活的要少很多
显卡声卡属于外设
考试考主机的主成部分是cpu和主存储器(硬盘加内存),cpu又包括运算器和控制器
运算器
算术逻辑单元(ALU) 是能实现多组算术运算和逻辑运算的组合逻辑电路
数据缓冲寄存器(DR)用来暂时存放由内存储器读出的一条指令或一个数据字;反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在数据缓冲寄存器中
累积寄存器(AC),不仅仅只是加法而已,减法也有
状态条件寄存器(psw)经常考,这个是用保存运算中出现的状态,例如
- 进位标志(C)
- 运算结果溢出标志(V)
- 运算结果为零标志(Z)
- 运算结果为负标志(N)
- 中断标志
控制器
程序计数器(PC)是用于存程放下一条指令所在单元的地址的地方
指令寄存器(IR)用于暂存当前正在执行的指令
指令译码器,指令由操作码和地址码组成,操作码表示要执行的操作性质,即执行什么操作,或做什么;地址码是操作码执行时的操作对象的地址。
时序部件
3.FLYnn分类法
FLYnn分类法是计算机系统结构的分类方法之一,按照指令流和数据流来进行分类
单指令单数据流
- 386,468,奔腾都是单处理器系统
- 双核,四核,八核,已经不属于单处理器系统
- 现在pc已经不是单处理器系统,单片机见的比较多
单指令多数据流
多指令单数据流
- 指令流对应控制器
- 数据流对应处理器和主存模块
- 多指令单数据流的处理器只有一个
s 是simple的意思 单
m 是more的意思 多
i 是命令的意思
d 数据
4.CISC和RISC
这个主要考选择题
5.流水线(重点)
5.1流水线的概念
5.2.流水线的计算
我们正常先用理论公式算
(2+2+1)+(100-1)*2 = 203
如果选择题没有这个答案,就用实际公式来计算
(3+100-1)*2 = 204
- K:是分了多少段(这里分了3段,取指,分析,执行) 所以 3
- n: 是多少条流水线 100条流水线 就100
- 三角t:就是分了的段数,最长的一条,例如下面最长时间是 2ns ,所以周期就是 2ns,花的时间最长的就是周期
5.3流水线吞吐率计算
5.4流水线的加速比
这里是使用上面例子来说明
不使用流水线 (2+2+1)*100 = 500
5.5 流水线的效率
这个见图知意,就是求出面积,求黑色格子占用了多少的百分比
分母
- 长:完成这几个数据所要花的时间(用计算流水线的时间可以算)
(1+1+1+3)+(4-1)*3 = 6+9 = 15
分子(就是算格子,看图的黑格子)
(1+1+1+3)*4 = 24
则就是 24/60 = 40%
6.存储系统
6.1层次化存储结构
- 寄存器容量小,但是速度非常快
- 缓存不是必须的,cpu,可以跟内存直接数据交换,但是速度慢
- 按内容存取比按地址存取快的多
- 加入了缓存是可以提高运行速率,是一种性价比方案,成本不多,但是大大提高效率
快很多的原因是局部性原理
6.2 Cache(缓存)
- 命中率,寄存器,要读取数据,可以直接在缓存中就拿到,而不用再到内存,这就叫命中
- 未命中率,没在缓存命中,去内存中拿
按照下面的公式,平均周期
1*95%(命中率)+1000ns*(1-95%)(未命中率)= 50.95ns
6.3局部性原理
- 时间局部性:就是刚刚访问的指令,又再次访问,例如循环中间的循环体
- 空间局部性:就是访问完这个,接着访问临近的单为,例如数组,都是相连的,要给数组初始化为0
先初始化第一个,接着初始化第二个
- 工作集理论:就是将频繁访问的打包起来,放进cache,短时间内不被替换,从而提高效率
6.4 主存
6.4.1 主存的分类
6.4.2 主存的编制
主存的编制考的比较多 1个字节 = 8bit(位)
8*4
按照字节编制,就是1B
一般考察的题目如上图
- 地址单元和存储单元所得是同一个东西,就是指有多少个存储地址的意思,例如上面的8*4位
一共是8个地址,即是8个地址单元和存储单元
- k个地址单元的意思,k就是1024,也就是2的10次方,就是除以2的10次方,例如1万有多少千类似
- 编址意思就是这个地址存多少字(bit),例如图上的8*4,每个地址存4个bit
题目的方式就是
- 先一共多少地址位,接着乘以每个地址存多少个bit,求大长方形的面积
- 接着根据说一共多少个小长方形,组成一个大长方形,给你小长方形的个数,还有长度(地址数),叫你
求小长方形的宽度(每个地址存多少)
一般题目是16进制的计算我们是先高位减去低位,再加1
但实际我们先高位加1再减去低位的
题目中的后面的H不用理它,16进制里面最大是F,没有H
所以直接C7FFF+1=C8000,接着再减去低位的AC000等于1C000(16进制转10进制 1*16^2次方依次)
记得16进制借位是借16的
多少k,就除以2的10次方
再按照大长方形由多少个小长方形来计算即可 面积是一样的,即是对等关系
上面答案是4bit
6.5 磁盘结构与参数(重点)
很久之前的软盘,和现在的机械硬盘都是磁盘,固态硬盘ssd不是磁盘
磁盘运作原理
磁盘用一个盘片,上面涂上特殊的材质保存数据,盘面存储数据,读取数据要用特殊的设备也就是磁头
数据存储在磁道上,磁头找相应的数据先定位到磁道的相应位置,这找的时间有点长,称为
(寻道时间)
物理块就是扇区
题目的意思就是 (最长时间)
- 按照顺序来就是先记录R0再到R1....,以此按照排序类推
- 题目的使用单缓冲区的意思就是,将数据线记录到缓冲区中,单的意思是,不处理完,下一个就没有办法放进缓冲区,这里就是缓冲区处理花了3秒,就是处理要花三秒,才能将新东西放进缓冲区
- 所以看下图,R0处理完已经到了R2的开始位置,所以不是R1,要按照顺序,所以就要转一圈回到R1的开始位置,所以再次回到R1的开始位置一共花了(3+3+(33-3))=36,才能回到R1的开始位置
- 所以以此类推R0到R9就一共花了36*10
- 当处理完R9时,此时磁头已经到达了R10的初始位置,也就是说处理R10,
只需要3(转的时间)+3(缓冲区处理时间 = 6秒)
最短时间
就是说我们可以对哪个扇区放R0或者R1都行,只要按照顺序,先R0到R1,顺序记录就行
所以合理的排序如下面,处理完R0,立即可以处理R1,非常理想
所以总时间就是 (3+3) *11 = 66
6.6.DMA控制方式(IO)
主存和外设(io设备)直接成块传送
7.总线系统
一般考选择题,考概念
- 内部总线,是芯片旁边的,芯片级别的总线
- 系统总线,pci,vga,插件级别的总线,
- 外部总线,是和外部的接触的总线
数据总线
- 常说系统32位的,就是数据总线32位,就是说一个字 32个bit位,总线的宽度就是32bit,一个周期传输的数据量就是32bit位
地址总线
- 地址总线32位的,说明所代表的地址空间是2的32次方,4G的宽度,32位的操作系统,能管理的内存
- 就只有4g,当用作别的地址空间是,会更小一点,所以当我们用到的内存超过4g,就要用64位的系统了,否则管理不了这么多内存空间
控制总线
8.系统可靠性设计和分析
8.1串联系统和并联系统的可靠性
串联系统
失效率的公式是当系统多,失效率低,用这个才有效,这个是个近似的公式,,不然累加超过1就是不对的
并联系统
可靠度:用每个的失效相乘,在用1减去,就得出
失效度:先求出可靠度,再用1减去可靠,得失效,下面失效公式复杂,不建议用
下面0.9是分别每条线可靠是0.9
8.2模冗余系统与混合系统 (重点)
这个就是,将所有子系统的结果统计在一起,少数服从多数(进行表决),虽然,少数错的,
但是不影响系统给出正确答案
这个计算题现在考的不多
这种窜链,并连的,先算并联的,再算窜连的(这个经常考)
9.差错控制-校验码
9.1.校验码的概念
因为系统应该不会多个出错
- 码距:即最多变化了多少个位,才转为另外一个码,就叫最小码距
上面这个最小码距不需要的不等式不需要掌握,下面的才需要掌握
9.2 循环校验码-CRC
这个检验码只是进行验错,不纠错
模2除法,来进行异或,1和0是1,11和00是0,就是做除法不计算进位的
就是从左往右,取被除数的前几位,跟除数同位的做异或
异或的最前面的最后一个为0的不算在下一个取被除数的前几位范围内
结果前面是0的不要
做这种题步骤如下:
- 将生成多项式,转为2进制形式,如下图说明第几位是1,生成的二进制形式为除数
- 就在被余数(报文)后面(生成多项式的个数-1)个0,如下面补5-1=4个零
- 接着将这两个进行模2除法,接着将的出来的余数,替换刚刚补位的四个零,即是crc校验码
- 接收方可以将收到的校验码,用多项式生成的二进制形式进行模2除法,得到结果余数是0,就没问题
9.3海明校验码
海明校验码可以检错,还可以纠错
这个考察的比较高
校验码的位置在2的n次方位,例如1,2,4,8位,校验位是定死的
- 如果信息位只有一个,则位数最少是3位,因为前面两位已经被占用
- 如果信息位有5个,则位数最少是9位
求信息码的海明校验码的校验位公式
- 2的r次方 = x+ r +1 x是信息位数,r是校验码个数,如下图检验码位数3
做这个题我们
- 将信息吗所在位数,全部转为2进制的表现形式,2的次方数,代表的是校验码所在的位数
- 接着看全部的信息码,共同影响了第几个校验码,列出公式
- 然后将影响了相同校验码的信息码进行异或等于相应的校验码,列出公式即可求解
简单说就是看信息码影响了哪几个位置的检验码
做这个题就是看位数是第几,然后用2的多少次方相加得到这个第几位数,则分别影响这个数的就是这几个校验码
看清楚题目的信息位的下标从0开始开始1开始,例如D0还是D1
图上的校验哪个出错的写法是根据上面的求校验码的来的,结果是0是对的,结果是1就是有问题
若对方收到的码是这个我们,可以快速将收到的校验码和之前生成的校验码进行异或
如图
001
101
得出
100,则知道了是第一位信息码出错,纠正直接取反即可
反正就两种方法验证在哪里出错
一种:上图哪个
一种:拿到传过来的校验码进行异或得出结果
10.病毒
01.计算机组成和体系结构
原文:https://www.cnblogs.com/superComputer/p/14166484.html