十六进制符号 0X 或 H,可表示为0x18F 或 18FH
m进制转n进制:先将m进制转化为十进制数,再将十进制数转化为n进制数(2进制可直接转8进制(3位)和16进制(4位))
注意:小数部分转换不考
机器数:使用二进制计数制,小数点则隐含,不占位置。机器数有无符号 和 有符号之分。
真值:机器数对应的实际数值
正整数:原码=补码=反码
负整数:
例1:1
原码:0 000 0001(最高位为符号位,正数为0,负数为1)
反码:0 000 0001
补码:0 000 0001
移码:1 000 0001(不分正负,在补码基础上符号位取反)
例2:-1
原码:1 000 0001(最高位为符号位,负数为1)
反码:1 111 1110(符号位不变,其他按位取反)
补码:1 111 1111(补码=反码+1)
移码:0 111 1111
浮点数:表示方法为 N=F*2^E, 其中E称为阶码,F称为尾数;
阶符:阶码的符号,0表示正数,1表示负数
阶码:带符号的纯整数,确定数值范围
尾符:尾数的符号,0表示正数,1表示负数
尾数:带符号的纯小数,确定数值精度
浮点数表示
十进制 85.125 = 0.85125*10^2
二进制 101.011 = 0.101011*2^3
转自:https://www.cnblogs.com/VersionP1/p/7779251.html
校验码作用:
加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码。
码距:
在两个编码中,从A码到B码转换所需要改变的位数称为码距。一般来说,码距越大,越利于纠错和检错。
为一个字节补充一个二进制位(校验位0或1)的方式,使字节自身的 8 位和该校验位含有 1 值的位数一定为奇数或偶数。
奇校验只能发现奇数个错误位,偶校验只能发现偶数个错误位,奇偶校验码只能查错不能纠错。
举例:
原始数据:0010 1100
奇校验:0010 11000 //校验位为0,3个1 奇数个1
// 如果错误是偶数个1,可以检验;反之不能
偶校验:0010 11001 //校验位为1,4个1 偶数个1
// 如果错误是奇数个1,可以检验;反之不能
信息位为m的原始数据,需要加入k位的校验码,它满足m+k<=2^k-1;
举例: 计算原始信息位为101101100的海明校验码?
先用m+k+1<2^k计算出校验位:9+k+1 <2^k→k=4,即校验位为4位。
因为海明校验码是放在2的幂次位上,所以插在位置1,2,4,8中。
原始信息的数据如下图所示,标出需要用到的校验码
然后将校验码校验的位置记录下来:
校验码1(位置1):3,5,7,9,11,13
校验码2(位置2):3,6,7,10,11
校验码3(位置4):5,6,7,12,13
校验码4(位置8):9,10,11,12,13
然后做异或运算(相同时为0,不同时为1)
校验码1(位置1):1 xor 0 xor 1 xor 0 xor 1 xor 0 = 1
校验码2(位置2):1 xor 1 xor 1 xor 1 xor 1 = 1
校验码3(位置4):0 xor 1 xor 1 xor 0 xor 0 = 0
校验码4(位置8):0 xor 1 xor 1 xor 0 xor 0 = 0
原理:
CRC检验原理实际上就是在一个**p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;**附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。
CRC码的特点:
求校验码
CRC码并非是校验码,但需要通过CRC码来获得校验码。
具体校验码的话要先让原编码加上CRC码位数个0(即CRC码有的多少位,就要加上多少位0在原编码的后面)然后用新原编码除CRC码,得到的余数就是校验码
例子: 原编码:1001001011的校验码?
则CRC码可以为10011,也可以为11001等
但是:10010这种不可以【收尾为1】,1001101011也不行【位数要少于原编码】
给定条件:
原编码=1010001101
CRC码设为:110101
校验码有5位,因此 - 新原编码:101000110100000
然后用新原编码除以CRC码: 校验码就是01110
计算机的硬件基本系统由五大部分组成:运算器、控制器、存储器、输入设备、输出设备。
存储器分为 内部存储器(内存) 和 外部存储器(硬盘、光盘)
输入设备和输出设备统称为外部设备(外设)
主机:中央处理单元(CPU,运算器+控制器)+主存储器
中央处理单元组成:由运算器、控制器、寄存器组和内部总线组成。
中央处理单元功能:实现程序控制、操作控制、时间控制、数据处理功能。
运算器组成:
运算器功能:
执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等。
控制器组成:
控制器功能:
控制整个CPU的工作,最为重要,包括程序控制,时序控制等。
计算机指令的组成:
一条指令由操作码和操作数两部分组成,操作码决定要完成的操作(加减乘除),操作书指参加运算的数据及其所在的单元地址。
在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中。
计算机指令的执行过程:
取指令 – 分析指令 – 执行指令三个步骤 。
首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR,而后由指令译码器进行分析,分析指令操作码,最后执行指令,取出指令执行所需的源操作数。
指令寻址方式
顺序寻址方式:当执行一段程序时,是一条指令接着一条指令地顺序执行。
跳跃寻址方式:指下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出。程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。
指令操作数寻址方式
- 立即寻址方式: 指令的地址码字段指出的不是地址,而是操作数本身。
- 直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址。
- 间接寻址方式:指令地址码字段所指向的存储单元存储的是操作数的地址。
- 寄存器寻址方式:指令中的地址码是寄存器的编号。
CPU = ALU(算数逻辑单元) ➕ CU(控制单元)
举个例子加强理解:
CPU => 工厂核心的车间
运算器 => 普工(只负责运算)
寄存器 => 工具人(传递和搬运数据)
控制器 => 车间主管(管理调剂所有普工和工具人)
cache => 小板车,多个车间之间共享数据
CPU的基本工作是执行存储的指令序列,即程序。程序的执行过程实际上是不断地取出指令、分析指令、执行指令的过程。
转自:https://blog.csdn.net/flysh13/article/details/124060791
基于 指令流和数据流 对计算机进行分类
CISC 复杂指令系统,兼容性强,指令繁多,长度可变,由微程序实现。
RISC 精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器,硬件布线逻辑控制)
C(Complex)R(Reduce)
流水线的目的是为了提高计算机的运算速度,利用并行技术来进行执行指令。
流水线的相关计算
https://blog.csdn.net/qq_44762290/article/details/119730632
洗衣机的例子生动形象!
流水线周期: 指令分成不同执行段,其中执行时间最长的段为流水线周期。
流水线执行时间: 1条指令总执行时间+(总指令条数-1)X 流水线周期
流水线吞吐率: 总指令条数/ 流水线执行时间
流水线加速比:不使用流水线总执行时间 / 使用流水线总执行时间
RISC中的流水线技术:
超流水线:时间换空间
超标量流水线技术:空间换时间
超长指令字VLIW:同时执行多条指令,发挥软件作用
计算机采用分级存储体系的主要目的是为了解决存储容量,成本和速度之间的主要矛盾问题。
两级存储映像为:Cache-主存,主存-辅存(虚拟存储体系)
**总的来说,在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,**包括下面两个方面:
时间局部性原理【循环】-如果一个数据项正在被访问,那么在近期它可能被再次访问,即在相邻的时间里会访问同一个数据项。
空间局部性原理【数组】- 在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能时相近的,即相邻的空间地址会被被连续访问。
用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对程序员来说是透明的。
Cache由控制部分和存储部分组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换。
地址映射:
在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读写信息,这就需要将主存地址转换为Cache存储器地址,这种地址的转换称为地址映射,由硬件自动完成映射,分为下列三种方式:
直接映射:将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中块的对应关系是固定的,也即二者块号相同才能命中。地址变换简单但不灵活,容易造成资源浪费。
全相联映像:同样都是等分成块并编号。**主存中任意一块都与Cache中任意一块对应。**因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cahce任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映像方式。像一个list一样,每次循环遍历,满了就淘汰旧的
组组相连映像: 前面两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,即主存中组号与Cahce中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两组内的所有块可以任意掉换。
Cache命中率
当CPU所访问的数据在Cache中时,称为命中,直接从Cache中读取数据,否则没有命中,需要从主存中读取所需的数据。
主存编址
例题:
地址编号从 80000H 到 BFFFFH 且按字节编址的内存容量为 (?)KB??
若用14k*4bit的存储器芯片构成该内存,共需 (?) 片??
重点须知:
K = 1024 k = 1000
1B = 1024 bit
内存单元个数 : BFFFFH - 80000H +1 = 40000H (个)
内存单元总大小:40000H * 1 = 40000H (B) -- 按字节编制,每个内存单元大小为一个字节
内存容量即为 40000H(B)=256(KB)
16K*4bit = 8(KB)
芯片个数:256/8=32(个)
**虚拟存储器技术是将很大的数据分成许多较小的块,全部存储在外存中。运行时,将用到的数据调入主存中,马上要用到的数据置于缓存中,这样一边运行一边进行所需数据块的调入/调出。对于应用程序员来说,有比实际主存空间大得多的虚拟主存空间。基本层次为主存 – 缓存 – 外存 **
**程序控制(查询)方式:**CPU主动查询外设是否完成数据传输,效率极低
**程序中断方式:**外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高
DMA方式(直接主存存取):CPU只需要完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通路,效率很高!
**通道:**也是一种处理机,内部具有独立的处理系统,使数据传输独立于CPU
从广义上来讲:任何链接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线
系统总线:是板级总线,用于计算机内部各部分之间的连接,具体分为数据总线(并行数据传输位数),地址总线(系统可管理的内存空间的大小),控制总线(传送控制命令)。代表由ISA总线,EISA总线,PCI总线。
外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线-低速,长距离),SCSI(并行总线),USB(通用串行总线,即插即用,支持热插拔)
系统可靠性可以用平均故障间隔时间MTBF来衡量,公式为 MTBF/(1+MTBF)
平均无故障时间 MTTF=1/失效率
平均故障修复时间 MTTR=1/修复率
平均故障间隔时间 MTBF=MTTF + MTTR
系统可用性 =MTTF /(MTTF+MTTR)* 100%
串联,并联,混合模式
串联系统,一个设备部可靠,整个系统崩溃:
R = R1 X R2 X R3 …Rn
并联系统,所有设备都不可靠,整个系统才崩溃:
R =1- (1 -R1) X(1- R2) X(1- R3) …X(1-Rn)
CPU工作原理:https://blog.csdn.net/Lucky_mzc/article/details/124235722
指令流水线详解:https://blog.csdn.net/qq_44762290/article/details/119730632
Cache3种地址映射:https://blog.csdn.net/qq_54494937/article/details/120843738