主存储器构成:存储体、MAR(存放地址)、MDR(存放数据)
存储体由一个个存储单元构成,每个地址对应一个存储单元
存储单元:存放一串二进制代码
存储字:存储单元中存储的二进制代码组合
存储字长:存储单位中二进制代码位数(bit位数)
存储元:构成存储单位,一个存储元存储1bit
存储体:数据在存储体中按地址存储
MAR(二进制表示):位数表示存储单元的个数,若有四位数,则有2**4个存储单元
MDR:位数=存储字长=二进制代码位数,若MDR=16,则一个字=16bit
运算器构成:ACC、MQ、ALU、X
ACC:累加器,存放操作数或运算结果
MQ:乘除运算中存放操作数或结果
X:存放操作数(被=-x%数)
ALU(核心):算数逻辑单位,通过内部电路对操作数进行逻辑运算、算术运算
控制器:CU、IR、PC
CU(核心):控制单位,分析指令给出控制信号
IR:指令寄存器,存放执行的指令
PC:程序计数器,存放下一条指令地址,会自动+1
完成一条指令步骤:
计算机工作过程
假设执行一条简单指令
int y = 0;
int a = 2, b = 3, c = 1;
y = a *b + c;
工作过程:首先PC会指向第一条指令的存储地址并传输给MAR,MAR的值(MAR)则为该指令在主存里的地址,通过MAR传输给存储体读取相应地址对应的指令并输出给MDR,此时(MDR)= 指令(操作码+地址码),随后MAR将指令传输给IR进行指令存放,随后IR将指令的操作码传给CU进行分析,而CU分析操作码以后则根据不同指令做出不同控制行为:
1.若是取数指令,则PC指向的存储地址加一,将指令的地址码传递给MAR,随后(MAR)会传入存储体,取出对应数据并输出到MDR,使得(MDR)= 要取出的数据,MDR将数据传输至ACC存储;
2.若是加减法指令,则PC指向的存储地址加一,将指令的地址码传递给MAR,随后(MAR)会传入存储体,取出对应数据并输出到MDR,使得(MDR)= 要取出的数据,随后(MDR)传输至X中,CU控制ALU对ACC与X中存储的数据进行加减法,将最后得到的数据存储在ACC中;
3.若是乘除法指令,则PC指向的存储地址加一,将指令的地址码传递给MAR,随后(MAR)会传入存储体,取出对应数据并输出到MDR,使得(MDR)= 要取出的数据,随后(MDR)会传输到MQ中,(ACC)会传输到X中,通过ALU对X和XQ中的数据进行乘除法运算,并将所得结果放置在ACC中存储。另:若乘法结果过大,则需要XQ辅助存储。
4.若是存数指令,则PC指向的存储地址加一,将指令地址值传递给MAR,随后(MAR)传入存储体,ACC存储的值传递给MDR,随后(MDR)与(MAR)传入存储体,此时MAR对应的地址就存储了MDR对应的值。