03认识各个硬件部件[大章]

主机内部是如何协调工作的?

主存储


存储体:可以寄存0和1

MAR:存储地址寄存器[1]

MDR:存储数据寄存器[2]



MAR与MDR是如何工作的?


类比菜鸟驿站

我告诉店员取件号,然后店员就回去货架拿数据,然后把数据给柜台,然后给我

类比,我们是告诉MAR地址,然后内存交给MDR,最后我们从MDR拿走数据



存储体是怎么工作的?


数据按照地址存放在存储体中

一般存储字长的数量是8的整数倍(8bit,16bit,32bit,64bit)

其中
MAR位数反应了存储单元的个数
MDR的位数=存储字长

!!! note 注意,一个字节和一个字是不一样的
一个字节固定8bit,但是一个字不一定是16bit,需要看计算器MDR的位数

!!! note 关于B和b
1B表示1个字节\1b=1个bit,所以1B=8b

思考:运营商的100Mbps实际上只有10M+,为什么呢?

因为运营商这里用的是小b,所以我们下载的时候最大真实速度需要除以8
100Mbps实际上只有12.5MBps

运算器的基本组成


运算器:用于实现算术运算(如加减乘除),逻辑运算(如:与或非)

ACC:累加器,用于存放操作数,或运算结果。
MQ:乘商寄存器,在乘、除运算时,用于存放操作数或运算结果。
通用的操作数寄存器,用于存放操作数
X:实际中可能有多个,通用的操作数寄存器,用于存放操作数

ACC,MQ,X统统属于寄存器(不可或缺)

ALU(制造成本最高,最复杂的原件):算术逻辑单元,通过内部复杂的电路实现算术运算和逻辑运算



控制器的基本组成


CU(核心空间):控制单元,分析指令,给出控制信号

IR:指令寄存器,存放当前执行的指令

PC:程序计数器,存放下一条指令地址,
有自动加1功能

完成一条指令(从上往下执行)

其中PC和IR称为取指阶段,CU为执行阶段

最后的统合图



计算机的工作过程


前面0-4是机器指令

分析具体的案例

  1. 右边所有的机器码全部都存储在存储体中
  2. 控制器中的PC初始化为0,并且指向第一条指令的存储地址
  3. PC取出的内容,通过地址总线传递到主存储器的MAR中,令MAR=0
  4. MAR去存储体中读取地址,并且放数据到MDR,令MDR=000001 000000101
  5. MDR通过数据总线传递数据到控制器的IR中,并且赋值给IR
  6. 其中传递到IR的操作码会被传递给CU,CU分析后得知,这是"取数字"指令
  7. 于是控制器的IR传递地址码到MAR,令MAR=5,此时5号地址对应的是令a=2
  8. 于是存储体给数据给MDR,MDR被赋值为2
  9. MDR在控制单元的指挥下,MDR的数据会被传送到ACC中,ACC被赋值为2

老师的简化版

上一条指令取指之后PC自动+1,(PC)=1,执行后,(ACC)=2

第二条指令

重复之前的步骤

  1. 当我们的第二个数字到了ACC,我们的ACC就会先把前一个数字传送到(x)通用寄存器里
  2. 然后把被乘数存入(MQ),最后通过CU控制单元,我们的ALU开始工作,
  3. 计算2X3得出结果6返回给(ACC)当存储数字过大[3]

执行结束的图

第三条指令

第四条指令

第五条指令



总结

注意:现代计算机通常把MAR与MDR也集成在CPU中


  1. MAR全名:Memory Address Register ↩︎

  2. MDR全名:Memory Data Register ↩︎

  3. 如果乘积太大需要MQ辅助存储 ↩︎