1、计算机基本硬件系统组成:运算器、控制器、存储器、输入设备、输出设备
运算器、控制器组成中央处理单元(cpu)
存储器是计算机的记忆设备,分为内存存储器和外部存储器,前者速度快容量小,后者相反
输入设备和输出设备称为外部设备,输入设备用于输入原始数据和各种指令,输出设备用于输出计算结果
2、cpu功能
程序控制:通过执行指令来控制程序操作顺序
操作控制:将操作信号传递给外部设备
时间控制:严格控制指令执行时间以及所需时间段和时间顺序
数据处理:处理算术、逻辑的运算
注:cpu还需要对内部中断、异常作出响应,并作出相应处理
寄存器也属于存储器(容量更小,速度更快)
3、cpu组成
cpu组成由运算器、控制器、寄存器组和内部总线等部件组成
运算器:处理算术、逻辑运算
运算器包括:
算术逻辑单元ALU(实现对算术、逻辑的运算)
累加寄存器AC(原数据和运算结果存放区)
数据缓冲寄存器DR(暂时存放内存中的指令或者数据)
状态条件寄存器PSW(保存指令运行结果的条件码内容)
控制器:控制整个cpu进行工作
控制器包括:
指令寄存器IR(暂存cpu执行指令)
程序计数器PC(存放下一条执行指令所在的地址)
地址寄存器AR(保存当前cpu所访问的内存地址)
指令译码器ID(分析指令操作码)
4、数据表示
进制的表示:十六进制(0x150、150H),二进制(0b150,150)
源码:
反码:
补码:
移码:用作浮点运算的阶码,无论正数、负数都是该原码的补码的首位数取反得到移码。-45对应的移码为01010011
浮点数:
5、校检码
码距:在两个编码中,从A码改变到B码所需要改变的位数,称为码距,如A(11)->B(00),码距为2
奇偶校验码:在编码后加一位,使得编码中1的个数达到奇(偶)数个。
奇校检码:编码中含有奇数个1,发送给接收方,接收方接收后,计算是否有奇数个1,如果有则校验正确,否则错误
偶校检码:同理
原理(奇):1010 -> 10101 -发送> 计算1的个数为奇数 -> 无误
奇偶校验码只能检一位错,并且不能纠错
CRC校检码(Cyclic Redundancy Check)(又称循环冗余校验码):通过确定一组算法规则进行运算,最终在原数据尾部添加校验码,发送给接收方,接收方通过相同的规则进行校验。
步骤:
1、确定原数据,如1101
2、确定规则 Q(x),如 x^3 + x + 1
3、求Q(x)的阶,如2中Q(x)的阶为3
4、确定被除数,在原数据后补n个0,n为Q(x)的阶数,即被除数为1101000
5、确定除数,依次判断Q(x)的0次幂项、1次幂项、2次幂项...t次幂项(t为Q的最高次幂)是否存在,存在为
1,不存在为0(Q中0次幂项有,即1;1次幂项有,即1;2次幂项没有,即0;3次幂项有,即1),通过Q(x)
确定除数为1011
6、通过模二除法算出4、5的余数,最终得到1
7、余数补充,因为Q的最高阶是3,所以6中的余数应该写成 001 (填充到n位)
8、补充原数据,将余数补充到原数据中,即 1101001
注意:CRC能检错,但是不能纠错
海明码校验:海明码跟前面的校验码不同之处在于,前面的校验码是添加在原数据尾部,而海明码是在数据中穿插校验码,具有检错和纠错能力。海明码是在 2^0 , 2^1 , 2^2 , ... , 2^n 位置中插入校验码,在其他位置中插入原数据内容
步骤:(以0110为例)
1、列表格,3行n列,第一行索引值,第二行原数据存放区,第三行校验码存放区
2、存放原数据,在第二行中非 2^0,2^1,2^2,...,2^n 位置存放原数据
3、计算校验码,如2^2位置存放校验码,可以知道 2^0,2^1,2^2,...,2^n 中5、6、7位置都包含2^2,所以这三个位置的原码进行异或运算即可。
注意:海明码能检错和纠错
附图:(图为偶校验,如果为奇校验的话,校验码应该算出来后取反,0取1,1取0)
6、体系结构分类
按处理机数量分类:单处理系统、并行处理系统、分布式处理系统
Flynn分类法:分类有指令流和数据流两个因素。指令流由控制部分处理,数据流由处理器处理,主存模块用来存储指令流或者数据流的。
Flynn分类:
单指令单数据(SISD):一个控制部分,一个处理器,一个主存模块
单指令多数据(SIMD):一个控制部分,多个处理器,多个主存模块
多指令单数据(MISD):多个控制部分,一个处理器,多个主存模块(不实际)
多指令多数据(MIMD):多个控制部分,多个处理器,多个注册模块
7、指令系统
指令组成:操作码、操作数(地址码)
操作码:需要执行的操作
操作数:执行操作所需要的数据或数据所存在的地址
指令执行过程:取指令-分析指令-执行指令
指令寻址方式:顺序寻址方式、跳跃寻址方式
顺序寻址:是指一条指令接着一条指令顺序执行
跳跃寻址:是指新的地址码由当前指令给出,跳跃后在新的指令开始顺序执行(顺序执行期间,程序计数器会改变,以便记录)
指令操作数的寻址方式:立即寻址方式、直接寻址方式、间接寻址方式
立即寻址方式:指令的地址码存的是数据本身
直接寻址方式:指令的地址码存的是数据在存储单元中的地址
间接寻址方式:指令的地址码存的是数据在存储单元中的地址所在的地址
指令体系分类:复杂指令系统(CISC)、精简指令系统(RISC)
复杂指令系统(CISC):兼容性强、指令多、长度可变;
精简指令系统(RISC):指令少、使用频率接近、主要依靠硬件实现
指令流水线原理:将指令分为不同段,每一段由不同部分去处理
如果不使用指令流水线,则每次执行指令都是 取指令-分析指令-执行指令 ,之后再执行下一条指令的 取指令-分析指令-执行指令;
指令流水线,可以将执行的步骤拆分多段出来,每个部分去处理每段步骤,如果该部分处理完上一条指令的步骤段,就会继续执行下一个步骤段
RISC中的流水线技术:超流水线技术、超标量技术、超长指令字技术
超流水线技术:以时间换空间
超标量技术:以空间换时间(硬件)
超长指令字技术:以空间换时间(软件)
流水线时间计算:
流水线周期:指令分为不同执行段,执行时间最长的为流水线周期
流水线执行时间:1条指令(多个执行段)总共执行时间 + (总指令条数 - 1)* 流水线周期
流水线吞吐率计算:单位时间内执行的指令条数,即 指令条数 / 流水线执行时间
流水线加速比计算:不使用流水线执行时间 / 使用流水线执行时间 ,结果越大,加速比越高