前置知识
- MAR(存储器地址寄存器):存放想要访问的存储单元的地址,与PC长度相同
- MDR(存储器数据寄存器):存放从存储单元中取出,或者准备向存储单元存入的内容(指令或数据),位数和存储字长相同。
- 存储体:由许多存储单元构成,存储体存放了指令和数据。存储单元包含若干存储元件(存储一位二进制代码)
- 存储字:存储体当中存储单元所存储的一串代码,长度一般为8bit的偶数倍。这段代码的位数成为存储字长
- 指令字长:一个指令中包含二进制代码的位数,一般取存储字长整数倍。
- 机器字长:计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。我们常说的64,32位计算机就是指的机器字长。
- IR(指令寄存器):存放当前指令,内容来自MDR
- PC(程序计数器):存放下一条要执行指令的地址,具有自动加一功能(不是加数字1,而是根据指令长度,计算下一条指令地址)
1.计算机硬件工作过程
计算机收到机器语言程序以后
- 把程序和数据装入主存储器
- 从程序的起始地址运行程序
- 按照程序的首地址(保存在PC)从存储器取出第一条指令,经译码等步骤控制计算机各功能部件协同运行,完成这条指令的功能,并计算下一条指令地址(由PC自动计算)
- 继续读第二条指令,重复上述过程,直到程序结束
以取数据为例,分析过程
- 根据PC取指令到IR: PC->MAR->M->MDR->IR。 首先,把PC的内容(地址)送到MAR,MAR把地址(本质是高低电平)送到地址线,控制器发出读信号到读/写信号线,这样控制器就去主存读MAR所指地方的内容,取出来以后送到MDR(指令),然后MDR再送到IR
- 分析指令:OP(IR)-> CU,即把IR所存放指令的前半部分,操作码送到控制单元CU,控制器生成相应的控制信号到控制线,这里是读信号
- 执行指令:Ad(IR)->MAR->M->MDR->ACC。把IR中指令的后半段,地址码送到MAR,MAR把内容送到地址线,控制器发送读信号,去主存读取该地址所存放的数据,即操作数,通过数据线送到MDR(数据),再送到ACC
- 计算下一条指令地址,(PC)+1 ->PC