概述:计算机组成原理是一门关于计算机如何能够将各种硬件进行设计来解决进行计算的一门科学。
计算机组成原理是建立在硬件电路之上
计算机的发展
- 计算机系统 : 由硬件与软件组成
硬件的发展
- 电子管时代
- 晶体管时代
- 集成电路时代
早期冯诺依曼
- 提出了存储程序,事先将指令与数据输入进存储器,然后按照规定的顺序执行
- 包括输入设备,输出设备,运算器,控制器,存储设备
- 早期的冯诺依曼计算机是以运算器为核心
- 指令与数据有同等的地位位于存储器,用二进制来表示
- 指令由操作码和地址码组成
缺点:以运算器为中心的结构,每次输入的数据都需要经过运算器转存到存储器
现代计算机结构
- 以储存器为中心
- CPU = 运算器 + 控制器
- 分为 主机 + I/O设备
- 主机 = CPU + 主存
各个硬件
主存储器
主存储器 = 存储体 + MAR + MAR
存储体
- 数据与指令在存储体中按照地址存储
- 分为存储单元
- 存储字长:存储单元二进制代码的长度
MAR
- 存储地址寄存器
- 位数反映了存储体的存储单元的个数
MDR
- 存储数据寄存器
- 位数 = 存储字长
运算器
- ACC :累加器:用于存放操作数或者运算结果
- MQ : 乘商寄存器,在乘除运算中用于存放操作数或者运算结果
- X : 通用操作数寄存器,用于存放操作数
- ALU:算术逻辑单元,通过电路实现算术运算
控制器
- CU : 控制单元,分析指令,给出控制信号
- IR : 指令寄存器 , 存放当前执行的指令
- PC : 程序计数器 , 存放下一条指令的地址 , 有自动加一的功能
一条指令的执行完成
- PC : 取指令
- IR : 存放要执行的指令
- CU : 分析IR中的指令,执行指令
计算机工作过程
int a = 2 , b = 3 , c = 1 , y= 0;
int main()
{
y = a * b + c;
}
编译后形成这样的机器代码在主存中
执行过程
-
初始 (PC) = 0,指向第一条指令的地址
-
(PC)->MAR , 所以(MAR) = 0,去存储体中寻找0号地址的数据
-
M(MAR) -> MDR(M表示主存储器) ,将数据存入MAR中,导致(MDR)= 000001 0000000101
-
(MDR)->IR = 000001 0000000101, 通过数据总线将指令存放到IR中 , 前6位送往CU(控制单元中)
-
OP(IR) - > CU ,CU控制单元分析得知,这是一个取数指令
-
Ad(IR)->MAR , 然后将数字的地址送往MAR(地址寄存器), (MAR) = 5
-
5 号地址正好是a = 2 ,送往(MDR)= 2
-
(MDR)->ACC = 2, MDR中的数据送往ACC(累加寄存器中)
-
接下来执行指令的操作类似,但有个别不同
-
5 号地址正好是a = 2 ,送往(MDR)= 2
-
(MDR)->ACC = 2, MDR中的数据送往ACC(累加寄存器中)
-
接下来执行指令的操作类似,但有个别不同