“软件设计师精讲 CPU的组成(运算器与控制器)”的版本间的差异
Jihongchang(讨论 | 贡献) (→运算器) |
Jihongchang(讨论 | 贡献) (→运算器) |
||
第15行: | 第15行: | ||
[[文件:CPU结构3.png|无|缩略图|600x600像素]] | [[文件:CPU结构3.png|无|缩略图|600x600像素]] | ||
+ | 这个程序的目的是计算2+4+6,然后赋值给sum,通过sum返回。 | ||
+ | 里面的过程包含声明、定义,sum的初值等于0,计算sum的值,输出sum的值。 | ||
+ | |||
+ | 在这个过程当中,程序在计算机当中肯定是存储起来的,存储的地址依次有个相应的地址编号。 | ||
+ | |||
+ | 在运算的过程当中,先看控制器。控制器会控制计算机按照这些指令依次完成相应的功能。 | ||
+ | |||
+ | 首先,要想读取到程序,我们会将程序的起始位置读入到指令的'''<big><u>程序计数器</u>(PC)</big>'''当中,会将1001H记录进去。 | ||
+ | |||
+ | 1001H是一个地址,根据地址,可以找到指令“int sum=0”,把这个指令放到'''<big><u>指令寄存器</u>(IR)</big>'''当中去。 | ||
+ | |||
+ | 放进去之后,这个1001H就没用了,内容已经找到了。 | ||
+ | |||
+ | 所以接下来会给PC一个新的赋值:PC=PC+1,变成了1002H,这个过程就是顺序读取的过程。 | ||
+ | |||
+ | 如果涉及到条件判断跳转的话,这里可以是偏移量代替加1的过程。 | ||
+ | |||
+ | 当读到'''<big><u>指令寄存器</u>(IR)</big>'''当中,它的内容并不是“sum=0”,而是以一定的0、1二进制字符串表示,这个字符串如何体现在计算机当中的软、硬件呢? | ||
+ | |||
+ | 会通过'''<big><u>指令译码器</u>(ID)</big>'''翻译,告诉软硬件做哪些动作,这就是<u>程序计数器</u>(PC)、<u>指令寄存器</u>(IR)以及<u>指令译码器</u>(ID)的功能。 | ||
+ | |||
+ | 在这中间,还有一些控制信号、时序信号会通过时序部件传输。这里面有一个<u>'''<big>地址寄存器</big>'''</u>没有提到,它是使用的时候,用来保存内存地址的。 | ||
+ | |||
+ | 这些就是'''<big>程序控制器</big>'''。 | ||
+ | |||
+ | 除了程序控制器以外,CPU还有一部分是运算器部分。 | ||
+ | |||
+ | 运算器就是做算术逻辑运算的,就是做计算的,在进行2+4+6的运算过程的时候,是如何顺序计算的? | ||
+ | |||
+ | 首先,第一步,计算的是2+4=6,第二部计算6+6=12,在这中间的6怎么处理呢? | ||
+ | |||
+ | 在这个过程当中进行加法运算的过程是在'''<big><u>算术逻辑单元</u>(ALU)</big>'''当中进行的<big>,</big>中间的“6”是个中间数据,暂存在<u>累加寄存器</u>,也就是'''<big><u>累加器</u>(AC)</big>'''当中''','''它可以给ALU提供数据加工的材料,也可以给ALU提供工作区。 | ||
+ | |||
+ | 得出的结果12有个进位,进位标志会记录在状态条件寄存器党中,记录它的状态标识。 | ||
+ | |||
+ | 记录完之后,如果这个状态标志 | ||
=== 运算器 === | === 运算器 === |
2024年5月7日 (二) 12:12的版本
https://www.bilibili.com/video/BV13U4y1E7oA/?p=12
计算机结构
CPU结构
状态条件寄存器的归属存在争议:也可能划分到控制器中。
算术逻辑单元:做算术逻辑运算。
累加寄存器(AC):放算术逻辑单元进行数据加工的数据材料,也是为ALU提供工作区的部件。
数据缓冲寄存器:CPU和存储做交互时读写内存时做中转的部件,先中转、再运输。
这个程序的目的是计算2+4+6,然后赋值给sum,通过sum返回。
里面的过程包含声明、定义,sum的初值等于0,计算sum的值,输出sum的值。
在这个过程当中,程序在计算机当中肯定是存储起来的,存储的地址依次有个相应的地址编号。
在运算的过程当中,先看控制器。控制器会控制计算机按照这些指令依次完成相应的功能。
首先,要想读取到程序,我们会将程序的起始位置读入到指令的程序计数器(PC)当中,会将1001H记录进去。
1001H是一个地址,根据地址,可以找到指令“int sum=0”,把这个指令放到指令寄存器(IR)当中去。
放进去之后,这个1001H就没用了,内容已经找到了。
所以接下来会给PC一个新的赋值:PC=PC+1,变成了1002H,这个过程就是顺序读取的过程。
如果涉及到条件判断跳转的话,这里可以是偏移量代替加1的过程。
当读到指令寄存器(IR)当中,它的内容并不是“sum=0”,而是以一定的0、1二进制字符串表示,这个字符串如何体现在计算机当中的软、硬件呢?
会通过指令译码器(ID)翻译,告诉软硬件做哪些动作,这就是程序计数器(PC)、指令寄存器(IR)以及指令译码器(ID)的功能。
在这中间,还有一些控制信号、时序信号会通过时序部件传输。这里面有一个地址寄存器没有提到,它是使用的时候,用来保存内存地址的。
这些就是程序控制器。
除了程序控制器以外,CPU还有一部分是运算器部分。
运算器就是做算术逻辑运算的,就是做计算的,在进行2+4+6的运算过程的时候,是如何顺序计算的?
首先,第一步,计算的是2+4=6,第二部计算6+6=12,在这中间的6怎么处理呢?
在这个过程当中进行加法运算的过程是在算术逻辑单元(ALU)当中进行的,中间的“6”是个中间数据,暂存在累加寄存器,也就是累加器(AC)当中,它可以给ALU提供数据加工的材料,也可以给ALU提供工作区。
得出的结果12有个进位,进位标志会记录在状态条件寄存器党中,记录它的状态标识。
记录完之后,如果这个状态标志
运算器
算数逻辑单元ALU:数据的算数运算和逻辑运算
累加寄存器AC:通用寄存器,为ALU提供一个工作区,用在暂存数据
数据缓冲寄存器DR:写内存时,暂存指令或数据
状态条件寄存器PSW:存状态标志与控制标志
(争议:也有将其归为控制器的)
控制器
程序计数器PC:存储下一条要执行指令的地址
指令寄存器IR:存储即将执行的指令
指令译码器ID:对指令中的操作码字段进行分析解释
时序部件:提供时序控制信号