CPU工作原理

目录

一.计算机发展史

1.计算机历史

2.计算机之父——冯诺依曼

二.计算机的工作原理

1.基本原理

2.数据的存储

3.演示一个8位加法器的过程

4.CPU的工作原理

 4.1,CPU的组成部分及其功能

 4.2算术逻辑单元ALU(Arithmetic & Logic Unit)

 4.3 程序 

 4.4 控制单元CU(Control Unit

 4.5指令(Instruction)

5.CPU的工作流程 

  5.1CPU的工作主要分为三个步骤:

 5.2 正常模式下的CPU流程周期是

 5.3分支语句(if,else,while,for,break,continue)

 5.4CPU的中断模式


一.计算机发展史

1.计算机历史

计算机的发展历史悠久,最早可追溯到1946年在费城公诸于世的第一代电子管计算机——ENIAC(The Electronic Numerical Integrator And Computer),它通过不同部分之间的重新接线编程,还拥有并行计算能力,但功能受限制,速度也慢。ENIAC的问世标志现代计算机的诞生,是计算机发展史上的里程碑。在随后的发展中,可大致将计算机的使用分为四个阶段。

  • 第一阶段:一个国家使用一台计算,
  • 第二阶段:一个商业组织共同使用一个,多个计算机。
  • 第三阶段:PC(Personal Computer) 以家庭开始使用计算机。
  • 第四阶段:以个人开始使用计算机。

2.计算机之父——冯诺依曼

约翰·冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利数学家计算机科学家物理学家,是20世纪最重要的数学家之一。冯诺依曼对于后世影响最大最伟大的成就就是发明了冯诺依曼机,对于现代计算机来说大都采用的是冯诺依曼体系

冯诺依曼体系结构有以下特点:

  1. 计算机处理的数据和指令一律用二进制数表示;
  2. 指令和数据不加区别混合存储在同一个存储器中;
  3. 顺序执行程序的每一条指令;
  4. 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

冯诺依曼体系结构的计算机必须具有如下功能:

  • 把需要的程序和数据送至计算机中;
  • 必须具有长期记忆程序、数据、中间结果及最终运算结果的能力;
  • 能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力;
  • 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作;
  • 能够按照要求将处理结果输出给用户。

二.计算机的工作原理

1.基本原理

  对于我们现代计算机来说,最关键的2个部件就是CPU和内存。内存存储了要执行的程序指令,而CPU就是用来执行这些指令。CPU首先要知道这些指定存放在存储器的那个区域,然后才能执行,并且把执行的结果写入到执行区域。

2.数据的存储

 在计算机中,数类型的数据一般是由01编码所存储的,但是广义上的数据并不单单只是数据类型的数,还有更多非数据类型的数据,例如声音,图片,字符串等,这些数据的存储就需要将其转换成数据类型的via编码来进行存储。

3.演示一个8位加法器的过程

   一个加法器表现在逻辑概念就是一个电子开关。

 根据一个电子开关这个电子元件,就可以相互拼接,构成与门,或门,非门,异或门。

非门 

 与门

或门 

 异或门

 利用与或非 + 异或门构建8(bit)位加法器

         1)首先构建一个半加器和全加器

二进制相加如图

根据一个二进制相加原理来构造一个半加器和全加器

 

此时由两个半加器就构成了一个全加器。

       2)拥有了半加器和全加器之后,就可以构建一个8bit位的加法器(8位加法器 = 7*全加器 + 1*半加器)

4.CPU的工作原理

4.1,CPU的组成部分及其功能

  •        逻辑算术运算符:完成 或,与,非,加,减,乘,除,取余运算。
  •        控制器:分析指令并发出相应的控制信号
  •        寄存器:临时存储数据的存储单元(每个都能保存一个整形数据,但是个数不止一个)。
  •        现代的CPU为了提高性能,还增加了缓存器(CPU内缓存)level1,level2,level3(L1/L2/L3)缓存。

  4.2算术逻辑单元ALU(Arithmetic & Logic Unit)

   CPU是计算机的核心,而ALU是CPU的核心

  • 从算数的角度来说,可以实现加法,减法,乘法,除法,取余;
  • 逻辑角度,可以实现与,或,非。

 如图示ALU 的示意图,其中ALU有三个输入: 

  • A: 要参与运算的第一个数
  • B:要参与运算的第二个数
  • C:本次运算是什么,指编码后的简单指令(opcode)   

4.3 程序 

所有程序的执行,本质上都是计算 + 读取 + 存入 

  • 读取:内存->寄存器
  • 存入:寄存器->内存

4.4 控制单元CU(Control Unit)

CU的主要任务就是控制ALU去进行何种计算

在CU中,还存在两个非常重要的寄存器 PC寄存器和IR寄存器 

  • PC:下一条要执行的指令在内存中的地址
  • IR:下一条要执行的指令

 4.5指令(Instruction)

所谓指令,即指导 CPU 进行工作的命令,主要有操作码 + 被操作数(例如:opcde+a+b)组成。其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄 存器编号等。指令也是一种特殊的数据,也是以整形的形式保存在内存中。

5.CPU的工作流程 

  5.1CPU的工作主要分为三个步骤:

  1. 取码阶段:CU根据寄存器的值,去内存的相应位置,把数据(指令)读取到IR寄存器中,正常情况下,PC寄存器中的值自动+1
  2. 解码阶段:CU按照预先设定的指令集解读 指令数据(opcode+操作数)    例如:0010 1110  人为规定 0010是opcode,查询指令表后,直到0010代表的意思:从后面地址指定内存处,将数据读取到A寄存器     地址ob1110-> 14
  3. 执行阶段:LOAD指令应该由CU执行,所以按照规定执行指令

5.2 正常模式下的CPU流程周期是

 总结:

  • 由于硬件中PC在自动加+1,所以我们代码变成的指令才能顺序的执行下去
  • 代码中的一条语句,很可能是需要很多条指令才能完成的,因此语句是一组指令的封装抽象,变量是一段内存空间的封装抽象
  • PC寄存器中的值在这个指令周期中很关键,可以控制执行哪里的指令。   

5.3分支语句(if,else,while,for,break,continue)

CPU中往往会提供一些指令,这些指令可以去修改PC的值

例如 :

if(a > b){                                        把a的值加载到寄存器中; 

......甲                                                 把b的值加载到寄存器中;

}else{                                        计算a - b 的值,如果>0,pc值变成甲相关的,<0,pc值改变

.....乙

}

5.4CPU的中断模式

在正常模式下,CPU可以顺序执行,可以分支执行,但总归按照既定的顺序执行,但是在现实中,很多时候需要暂时中断CPU当前的执行流,先让CPU执行其他的执行流或者其他工作,之后再回来再继续执行。

其中中断的操作是CPU硬件中提供了一种中断机制,让CPU停下,其执行步骤是

  • 保存当前的PC的值到内存的某个位置
  • 修改PC的值,让它执行其他执行流
  • 其他执行流结束后,通过刚才保存的PC值恢复到PC寄存器
  • 继续执行原来的执行流

中断机制经常用作:

  • IO设备的处理 : 当有外部数据到达Input设备时,触发某个中断,让当前正在执行的执行流暂停,切换到 Input 驱动对应的执行流,把 Input 设备中读取到的数据放在内存的某个位置,恢复之前的执行流
  • 操作系统中的用来作进度调程(线程调度)


版权声明:本文为qq_53223625原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。