引言———计算机的最底层是一些硬件设施(计组),在硬件之上我们会加一些操作系统,在操作系统上会安装一些软件。计算机组成原理与系统结构这一门课就是了解计算机硬件在底层是怎么相互协作的。
一.计算机系统的概述
计算机系统:由硬件(计算机实体,主机外设)加软件(具有特殊功能的程序)构成。
软件:
系统软件(如操作系统,服务程序,语言处理程序等):用来管理整个计算机系统。
应用软件():按任务需要编制成的各种程序。
硬件的发展
第一台电子数字计算机:ENIAC(1946)
第一代:电子管时代 1946~1957
逻辑元件:电子管
特点:体积超大,耗电量超大,使用机器编程语言(纸袋机)
第二代:晶体管时代 1958~1964
逻辑元件:晶体管
特点:体积,功耗降低,出现面向过程的程序设计语言(FORTRAN),有了操作系统雏形
第三代:中小规模集成电路时代 1964~1971
逻辑元件:中小规模集成电路
特点:计算机主要运用与科学计算等专业用途,高级语言迅速发展,有了分时操作系统
第四代:大规模,超大规模集成电路时代
逻辑元件:大规模,超大规模集成电路
特点:开始出现“微处理器”,“微型计算机”个人计算机PC萌芽,操作系统:Windows,Linux,Mac OS...
软件的发展
机器语言,汇编语言
编程语言直接决定了软件世界是否丰富
计算机硬件的基本组成结构
早期冯诺依曼结构
存储程序 将指令以二进制代码的形式事先输入计算机的主存储器(内存)按程序规定顺序执行其他指令。
结构特点
- 计算机由五大部件组成
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心(输入/输出设备之间是数据传送通过运算器完成)
现代计算机:以存储器为中心(提高效率)
CPU 包含了运算器和控制器
主机 CPU和主存储器
简化图
主机
主存储器
存储体:数据在存储体内按地址存储
MAR和MDR可以进行读写操作
运算器
运算器:用于实现算术运算(加减乘除),逻辑运算(与或非)
ACC: 累加器,用于存放操作数位,或者运算结果
MQ: 乘商寄存器,在乘除运算时,用于存放操作数位或运算结果
X:通用的操作数寄存器,用于存放操作数
ALU:算术逻辑单元,通过内部复杂的电路实现算术运算,逻辑运算。
控制器
CU:控制单元,分析指令,给出控制信号
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,有自动加1的功能
计算机系统的层次结构
下层是上层的基础,上层是下层的扩展
计算机的性能指标
存储器的性能指标
MAR的位数反应存储单元数量
MDR的
总容量=存储单元个数*存储字长
CPU的性能指标
CPU主频:CPU内数字脉冲信号振荡的频率
CPU主频(时钟频率)=1/CPU时钟周期
CPI(Clock cycle Per Instruction):执行一条指令所需的时钟周期数
执行一条指令的耗时=CPI*CPU时钟周期
CPU执行时间(整个程序耗时)=CPU时钟周期数/主频=(指令条数*CPI)/主频
IPS(Instructions Per Second):每秒执行多少条指令
IPS=主频/平均CPI
FLOPS(Floating-point Operations Per Scend):每秒执行多少次浮点运算
系统整体的性能指标
数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过总线传输数据)
吞吐量:指系统在单位时间内处理请求的数量(主要取决于主存的存取周期)
响应时间:指从用户像计算机发送一个请求,到系统对该请求做出响应并获取结果的等待时间。
基准程序(动态测试):用来测量计算机处理速度的一种实用程序,以便进行比较
二.数据的表示和运算
进位计数制
r进制
基数:每个数码所用到的不同符号的个数。
转十进制:
二进制与八进制相互转化:
二进制与十六进制相互转化:
十进制转化为任意进制
整数部分:除基取余法
小数部分:乘基取整法(有的十进制小数无法用二进制精确表示)
或者拼凑法
BCD码
BCD(Binary-Coded Decimal):用二进制编码的十进制
8421码(有权)
如果两个数相加在非法区间内(不是0~10)那就加6(0110)向前进一位
余3码:8421+(0011)二进制
2421码:改变权值定义
字符与字符串
ASCLL码
英文:
中文:
GB2312-80
字符串
按字节编址,“\0“作为字符串结尾标志
奇偶校验码
特点:有检错能力(码距等于1没有纠错能力,检错能力)
局限性:如果有有数个位发生跳动则无法检测出来
海明校验码
特点:有纠错能力
设计思路:将信息分组进行偶校验
需要的校验位:
3.求校验位的值:将D1234的值所对应的H用二进制表示,然后从后到前为1的D进行异或运算。
检查并纠错:
缺点:无法区分一个比特位的错误还是两个比特位错误。(此时使用全校验位)
循环冗余校验码(CRC码)
(模2减和模2加一样是异或运算)
一般不用这个纠错
定点数表示
定点数:小数点的位置固定(常规计数)
浮点数:小数点的位置固定不动(科学计数法)
符号位:0表示整数,1表示负数
反码:源码符号位为0则相同,否则取反
补码:源码符号位为0则相同,否则反码末尾加1;
移码:补码的基础上将符号位取反
算数移位
补码的移位
移位表格
逻辑移位:
左移,右移都补0,移出的位舍弃。
循环移位:
1,不带进位位:用移出的位补上空缺
2,带进位位:移出的位放到进位位,原进位位不上空缺。
加减运算&溢出判断
原码的加法运算(分四种情况)
原码的减法运算:将减数的符号取反,转变为加法运算。
补码的加减运算(普遍使用)
用补码相加减然后再转换为原码
(有溢出情况)
溢出判断
溢出的逻辑表达:异或(若异或为1则有溢出,异或为0则无溢出)
法三:双符号位