CPU 的结构和功能
CPU基本介绍
中央处理器(central processing unit,简称CPU),是电子计算机的主要设备之一,电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令,对指令译码并执行指令的核心部件。
图形处理器(英语:graphics processing unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。
CPU主要功能:
- 指令控制:取指令、分析指令、执行指令
- 操作控制:以若干微操作实现指令
- 时间控制:控制操作执行时间、避免冲突
- 数据加工:对数据进行算术和逻辑运算
- 中断处理:对异常情况和特殊请求进行处理
逻辑电路原理
门电路
组合逻辑电路
- 半加器
-
全加器
-
乘法器
乘法运算最终可分解为一系列的移位、相加操作。
如对数字5进行2乘,本质上是寄存器数据向左位移一位
5
=
101
10
=
1010
5 = 101 \\ 10 = 1010
5=10110=1010
而对数字数字5进行3乘,则是寄存器数据向左位移一位,并再加5。
5
=
101
10
=
1010
15
=
10
+
5
=
1010
+
0101
=
1111
5 = 101\\10 = 1010\\15 = 10 + 5 = 1010 + 0101 = 1111
5=10110=101015=10+5=1010+0101=1111
- 触发器
触发器(FF)的作用是存储1bit数据用,4个或者8个并联来保存4位或者8位数据。这种我们称之为寄存器(Register)。
- 选择器(判断)
基于门电路、运算电路、存储、判断电路等可以进一步实现循环等功能。从而达成计算机的基本要求:图灵完备性
- 汇编语言
0100,数据读入寄存器
0001,数据与寄存器相加,结果保存到寄存器
0010,寄存器数据向左位移N位(乘2^N)
0100 0001 ;寄存器存入1
0001 0100 ;寄存器的数字加4
0010 0001 ;乘2
0001 0011 ;再加三
MOV 1 ;寄存器存入1
ADD 4 ;寄存器的数字加4
SHL 1 ;乘2
ADD 3 ;再加三
CPU工作原理
CPU设计思想
在第一个计算机诞生的时候,虽然采取了最先进的电子技术,但缺少设计思想上的指导,导致很多逻辑都是硬化在电路板上,软硬件耦合严重。这会造成一旦修改程序,就要重新组装电路板的问题,这样的编程效率很低。致使编程最开始的本质是:把线来回插
冯·诺依曼提出了一个至关重要的设计思路:计算机要有一定的逻辑结构,将软硬件分离,要求CPU顺序地从存储器中取出指令和数据,然后进行相应的计算,主要的思想:
- 二进制:程序、数据的最终形态都是二进制编码、存储在存储器中,二进制编码也是CPU能够识别、执行的编码;
- 指令、数据可存储:指令序列和数据存在主(内)存储器中,以便于CPU在工作时,能够高速地从存储器中提取指令,并加以分析和执行;
- 计算机组成:确定了计算机的五个基本组成部分:运算器、控制器、存储器、输入设备、输出设备;
冯诺依曼机结构框图:
CPU具体架构
CPU+主存框架
CPU CORE
CPU CORE是一种根据指令进行各种处理的电子电路。一般由控制器、运算器、寄存器组成。
-
控制器
控制器又称为控制单元(Control Unit,简称CU),是计算机的指挥中心,只有在它的控制下,整个CPU才能够有条不紊地工作、自动执行程序。CU包括指令寄存器、指令计数器,其中指令寄存器存放当前正在执行的指令,指令计数器总是指向下一条要执行指令的地址。
CU的工作流程为:从内存中取指令、翻译指令、分析指令。然后根据指令的含义,向有关部件发送控制命令,控制相关部件,执行指令所包含的操作。
-
运算器
运算器是一个负责算术运算和逻辑运算的模块,主要包含算术逻辑单元(Arithmetic Logic Unit,简称ALU)和浮点运算单元(Floating Point Unit,简称FPU)。大多数通用CPU是以16、32、64位数据作为运算器一次处理数据的长度(即CPU位数)。
ALU的主要功能:在控制信号的作用下,完成加、减、乘、除等算术运算,以及与、或、非、异或等逻辑运算以及移位、补位等运算。
-
寄存器
寄存器的主要功能是存储数据、地址及指令,并且能够高速、自动地完成数据的存储。寄存器是有记忆功能的器件,而且采用两种稳定状态0或1来记录数据信息,所以CPU中的程序和数据,都要转换为二进制才可以存储和操作。
地址映射
-
物理地址
物理地址缺陷:
-
用户程序可以寻址内存的任意一个字节,它们就可以很容易地破坏操作系统,从而使系统停止运行。
-
物理地址寻址方式使得操作系统中同时运行两个或以上的程序几乎是不可能的。
-
-
虚拟地址
-
内存映射单元(MMU)作为CPU和物理地址间的中转。
-
CPU中每个进程都拥有一个自己的虚拟地址空间,MMU负责将记录对应映射,将虚拟地址转化为物理地址。
-
每个进程可以有相同的虚拟地址,MMU会将其映射到不同物理地址中,这有助于防止非法访问、实现进程的独立性。
-
Cache
由于CPU与内存之间存在很大的速度差(两者相差上百倍),那么我们可以把内存中的部分代码,提前加载到访问更快的Cache里面,以减少数据读取的时间开销
存储介绍
运行过程
CPU从cache或主存中取出指令,然后放入指令寄存器,控制器对该指令进行译码。最终把指令分解成一系列的微操作,然后发出各种控制命令,执行微操作序列,从而完成一条指令的执行。指令的构造如下:
- 取址
将一条指令从cache或主存中,获取指令 到指令寄存器的过程。
- 译码
在指令译码阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,分解成一系列的微操作。
- 执行
此阶段是完成指令所规定的各种操作,实现具体指令的功能。
- 访存
根据指令需要,有可能要访问主存,读取操作数,这样就进入了访存取数的阶段。
- 写回
结果写回(Write Back,简称WB)阶段 ,一 般把执行指令阶段的运行结果数据,写回到内部寄存器中,以便被后续的指令快速地存取。
CPU中断
在正常情况下,CPU 可以顺序执行,也可以分支执行,这些总归是按照既定顺序去执行。现实中,有时需要暂时中断CPU的当前执行流,让CPU去做点其他的工作,再回头来继续原来的执行流。因此CPU硬件提供了一种中断机制,可以先让CPU停下,等异常或中断服务程序执行完后,再切回来:
-
保存PC:保存当前的 PC 的值到内存的某个位置
-
修改PC:修改PC 的值,让执行其他执行流
-
回原PC:其他执行流执行结束之后,通过将刚才保存的 PC 值恢复到PC 寄存器
现实中,有时需要暂时中断CPU的当前执行流,让CPU去做点其他的工作,再回头来继续原来的执行流。因此CPU硬件提供了一种中断机制,可以先让CPU停下,等异常或中断服务程序执行完后,再切回来: -
保存PC:保存当前的 PC 的值到内存的某个位置
-
修改PC:修改PC 的值,让执行其他执行流
-
回原PC:其他执行流执行结束之后,通过将刚才保存的 PC 值恢复到PC 寄存器
-
继续原执行流:继续中断前的执行流