冯·诺依曼计算机的特点
- 五大部件组成 运算器 控制器 存储器 输入\出设备
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心
记: 冯·诺依曼计算机以运算器为中心,运算器会成为瓶颈
现代计算机硬件框图
存储器的基本组成
存储体 - 存储单元 - 存储元件(0/1)
存储单元
存放一串二进制代码
存储字
存储单元中二进制代码的组合
存储字长
存储单元中二进制代码的
*每个存储单元赋予一个地址
存储器地址寄存器 MAR 反映存储单元的个数
存储器数据寄存器 MDR 反应存储字长
运算器基本组成及操作过程
基本组成
算术逻辑单元 ALU
累加寄存器 ACC (Accumulator)
乘商寄存器 MQ (Multiplier-Quotient Register)
操作数寄存器 X
不同运算,各个计算器所放操作数类别
ACC | MQ | X | |
---|---|---|---|
加法 | 被加数和 | 加数 | |
减法 | 被减数差 | 减数 | |
乘法 | 乘积高位 | 乘数 & 乘积地位 | 被乘数 |
除法 | 被除数余数 | 商 | 除数 |
操作过程
加法操作的过程
[ ] 表示 地址里所存的内容
指令 加法 (状态码) M(地址码 存放所加数据)
初态 ACC 被加数
[M] → \rightarrow → X
[ACC] +[X] → \rightarrow → ACC
减法操作的过程
指令 减法 (状态码) M(地址码 存放所加数据)
初态 ACC 被减数
[M] → \rightarrow → X
[ACC] - [X] → \rightarrow → ACC
乘法操作的过程
指令 乘 M
初态 ACC 被乘数
[M] → \rightarrow → MQ
[ACC] → \rightarrow → X
0 → \rightarrow → ACC // 乘法通过累加和移位方式实现,需要寄存器保存累加数据所以清零
[X] x [MQ] → \rightarrow → ACC // MQ (ACC高位 ,MQ 低位,//表示链接关系)
记:
先后关系 先把 [ACC] --> X 后 才能 实现乘法 [X] x [MQ] --> ACC // MQ
可以互换的操作 [M] --> MQ 与 [ACC] --> X
控制器控制操作的先后
除法操作的过程
指令 除 M
初态 ACC 被除数
[M] → \rightarrow → X
[ACC] ÷ [X] → \rightarrow → MQ
余数在 ACC 中
控制器的基本组成
控制器的基本组成
操作控制器 CU (Control Unit)
程序计数器 PC(Program Counter) 指定下一条执行程序在主存中的地址 具有计数功能(PC) + 1 → \rightarrow → PC
指令寄存器 IR(Instruction Register) 存放当前欲执行的指令
整个控制器的运行逻辑是先按照程序计数器
所指出的指令地址,从内存中取出一条指令到指令寄存器IR
,然后指令译码器ID
对指令进行分析,之后操作控制器
根据指令的功能向有关部件发出控制命令,执行控制指令的操作。完成操作之后,程序计数器加1
,再重复执行上述操作。
完成一条指令步骤
主机完成一条指令的过程
以取数指令为例
过程
- PC 把欲取指令的地址 发送给MAR — 取指令
- MAR 把欲取指令的地址 发送给 存储体
- 在控制单元CU控制下在存储体指定的存储单元下取这条指令送到 MDR 中
- 在控制单元CU控制下把 MDR 中的地址放入IR
- IR中存放的指令操作码部分发送到 CU,CU 对指令进行分析发出相应的控制信号完成相应的指令操作 — 分析指令
- CU控制 把IR中地址码部分送入到MAR — 执行指令
- MAR再送到存储体 , 告诉存储体要储存的数据的地址是多少
- 在控制单元CU控制下在存储体指定的存储单元下取这条指令送到 MDR 中
- 送到 ACC
以存数指令为例
过程
- PC 把欲取指令的地址 发送给MAR
- MAR 把欲取指令的地址 发送给 存储体
- 在控制单元CU控制下在存储体指定的存储单元下取这条指令送到MDR中
- 在控制单元CU控制下把 MDR 中的地址放入IR中 – 取指令
- IR中存放的指令操作码部分发送到 CU,CU 对指令进行分析发出相应的控制信号完成相应的指令操作
- CU控制 把IR中地址码部分送入到MAR
- MAR再送到存储体 , 告诉存储体要储存的数据的地址是多少
- ACC 中 的数据存到存储体中 7 中的那个地址之中
计算 a x 2 + b x + c ax^2+bx+c ax2+bx+c 程序的运行过程
- 将程序通过输入设备送至计算机
- 程序首地址 —> pc
- 启动程序运行
- 执行相关指令
- 取指令 PC --> MAR --> M(存储体里的地址) --> MDR --> IR , (PC)+1 --> PC
- 分析指令 OP(IR) --> CU
OP()操作码 Ad() 地址码 - 执行指令 Ad(IR) --> MAR --> M --> MDR --> ACC
MAR MDR 接口寄存器
- …
- 打印结果
- 停机