1.2.2各个硬件的工作原理
主存储器用来存放数据的叫做存储体
里面还有MAR和MDR
MAR:存储地址寄存器
MDR:存储数据寄存器
存储体,数据在存储体内按地址存储
一整个存储体被分成一个一个的存储单元,每个存储单元存储了一串二进制代码。
存储字:就是每个存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位数
存储元:即存储二进制的电子元件(电容),每个存储元1bit
MAR的位数反映了存储单元的个数
MDR位数=存储字长
ex:MAR4位 代表总共有2^4个存储单元
MDR16位 代表每个存储单元可以存放16bit,1个字(word)=16bit
易混淆:1个字节(Byte)=8bit
1个字有可能是16bit 也有可能是8bit 也有可能是32bit 或者64bit具体看计算机硬件
1B = 1个字节
运算器的基本组成:
算数运算(加减乘除)逻辑运算(与或非)
ACC:累加器,用于存放操作数或者运算结果
MQ:乘商寄存器,在乘,除运算时,用于存放操作数或者运算结果。
X:通用的操作数寄存器,用于存放操作数
ALU:算数逻辑单元,通过内部复杂的电路实现算数运算,逻辑运算。
控制器的基本组成:
CU:控制单元,分析指令,给出控制信号
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,有自动加一功能
Control Unit
Instruction Register
Program Counter
完成一条指令 取指令PC-分析指令IR-执行指令CU
计算机的工作过程
int a=2,b=3,c=1,y=0;
void main(){
y = a*b+c;
}
主存 指令 注释
地址 操作码 地址码
0 000001 0000000101 取a至ACC
1 000100 0000000110 乘b得ab,存于ACC
2 000011 0000000111 加c的ab+c,存于ACC
3 000010 0000001000 将ab+c,存于主存单元
4 000110 0000000000 停机
5 0000000000000010 原始数据a=2
6 0000000000000011 原始数据b=3
7 0000000000000001 原始数据c=1
8 0000000000000000 原始数据y=0
存储字长16bit
初始:(pc)=0,指向第一条指令的存储地址
1.(pc)-MAR,导致(MAR)=0
3.M(MAR)-MDR,导致(MAR)=000001 0000000101
4.(MDR)-IR,导致(IR)=000001 0000000101
5.OP(IR)-CU,指令的操作码送给CU,CU分析之后得知,这是“取数”指令
6.Ad(IR)-MAR,指令的地址码送给MAR,(MAR)=5
8.M(MAR)-MDR,导致(MDR)= 0000000000000010
9.(MDR)-ACC,(ACC)=0000000000000010
取指令结束后pc自动加一
cpu区分指令和数据的依据:指令周期的不同阶段
现代MAR和MDR被合在CPU里面
