计算机组成原理(一)
计算机内部是通过电信号传递数据
电信号:分为高电平和低电平,分别代表1/0
- 数字、文字、图像如何用二进制表示?
- CPU如何对二进制数进行加减乘除?
- 如何存储这些二进制数的?
- 如何从内存中取出想要的数据?
- CPU如何识别和执行我们写的程序?
这些问题我们在下面会得到解释,请往下看
计算机系统的概述
计算机系统=硬件+软件
软件分为系统软件和应用软件
系统软件:用来管理整个计算机系统。eg:操作系统
应用软件:按任务需求编制成的各种程序.eg:抖音,王者荣耀
硬件的发展:
第一代计算机:
逻辑元件是电子管,因此被称为电子管时代
体积超大、耗电量超大
第二代计算机:
逻辑元件:晶体管,被称为晶体管时代
体积和功耗降低了,出现了面对过程的编程语言
并且fortran的操作系统
第三代计算机:
逻辑元件:中小规模集成电路,因此被称为中小规模集成电路时代
第四代:
超大规模集成电路时代
机械字长:
计算机一次整数运算所能处理的二进制位数
计算机硬件的基础组成
存储系统:
将指令以二进制代码的形式事先输入计算机的主存储器。
然后将其在存储器中的首地址执行程序的第一条指令,以后就按照该程序的规定顺序执行其他指令,直到程序执行结束。
冯诺依曼机结构:
黑色的线是数据线
蓝色的线是控制器接受和指挥各个部件的控制线or反馈线
CPU=运算器+控制器
现代计算机以存储器为中心
存储器分为主存储器和辅助存储器
冯.诺依曼计算机的特点:
- 1.计算机由五大部件组成,
- 2.指令和数据以同等地位存于存储器,可按地址寻访
- 3.指令和数据用二进制表示
- 4.指令由操作码和地址码组成
- 5.存储程序
- 6.以运算器为中心
CPU+主存储器=主机
辅助存储器、输入输出设备为I/O设备
而I/O设备+主机=硬件
认识各个硬件部件
主存储器:
主存储器:存储体+MAR(地址寄存器)+MDR(数据寄存器)
数据在存储体内按地址存储
存储体分为一个一个存储单元
存储单元:每个存储单元存放一串二进制代码
存储字(word):存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位数,,一般是8个bit的整数倍
数据在存储体内按地址存储
MAR:反映存储单元的个数
MDR:存储字长
MAR=4位(4个比特位),对应2的四次方个存储单元(因为四个比特位,对应4的全排列种可能)
MDR=16位,一个字(存储字长)=16bit
运算器:
运算器:用来实现算术运算、逻辑运算
ACC:累加器,用于存放操作数or运算结果
MQ:乘商寄存器,在乘、除运算时,用来存放操作数or运算结果
X:通用的操作数寄存器,用于存放操作数
ALU:算术逻辑单元,通过内部复杂的登录实现算术运算、逻辑运算
ACC、MQ都可以用来存放操作数or运算结果
但X只能用来存放操作数
控制器:
CU:控制单元,分析指令,给出控制信号
IR:指令寄存器,存放当前的指令
PC:程序计数器,存放下一条指令的地址,有自动加1功能
完成一条指令的顺序:
PC——IR——CU
计算机的工作过程:
- 下列这个代码在计算机的工作过程是怎么样的呢?
#include<iostream> int main() { int a = 2, b = 3, c = 1, y = 0; y = a * b + c; return 0; }
代码(高级语言)先编译装入主存储器
MAR带个(),寄存器打个括号,指的是寄存器里面的内容
M代表主存储器
第一过程:
PC先指向主存储器地址为0的地址,PC通过控制线路传给MAR,MAR指向主存地址为0的地址
存储体将MAR的地址取来,再将主存地址为0的内容反馈给MDR。MDR=000001 0000000101
将MDR的内容(操作码+地址码)传给IR(指令寄存器)
IR将其中的操作码000001传给CU(控制单元,给出控制信号),CU分析后,得知是"“取数”"指令
IR的地址码0000000101传给MAR,导致MAR=5
主存储器中的MAR地址的数据传给MDR,MDR=0000000000000010=2
MDR将数据传给ACC,并存放在ACC中,导致ACC=0000000000000010=2
第二过程:
PC+1,PC=1后,ACC此时为2
PC通过数据线传给MAR,MAR=1
存储体通过MAR传来的地址传其数据给MDR=000100 000000110
MDR传给IR,IR=000100 000000110
IR将其操作码000100传给CU,CU分析后得知这是乘法指令
IR的地址码000000110传给MAR,MAR=6
MAR将其地址传给存储体,存储体传给MDR,MDR=0000000000000011=3
MDR将其数据传给MQ,MQ=0000000000000011=3
ACC=2,将ACC的数值传给X,X=2
MQ*X的数值传给ACC寄存起来,再通过ALU实现乘法运算,导致ACC=6(如果乘积太大,就需要MQ辅助存储)
PC+1=2
PC+1=3
PC=4
计算机系统的层次结构