1. 认识CPU
CPU(Central Processing Unit,简称CPU)本质上是用于科学计算的数字电路,它是特定的专用数字电路,除此之外GPU用于视频图像处理专用的数字电路,以及DSP用于信号处理的专用数字电路。
CPU是对数据进行科学运算的基本电路,科学计算以加减乘除为基本运算,电路核心为这4种对应运算电路,也包括逻辑运算,概括起来可以直观点说所谓的科学运算,即数学和逻辑运算,换句话说它是数据的数学和逻辑运算的数字电路。
从以上图可以看出,数据处理电路从运行存储器中将数据读出来进行运算,计算完成之后又将结果写会运行存储。
1.1 CPU分类
对于科学运算数字电路,有各种电路设计,不管什么样的电路设计,CPU从工作复杂度上来说,分类2类,分别为精简指令集,复杂指令集。
Cisc (复杂指令集) :理论上指令可以无限扩展,它的设计理念是每增加一种操作单独设计对应的指令,同时译码电路设计带来挑战,内部结构复杂,支持各种操作,只要用于PC系统,比如intel,adm。
Risc (精简指令集) :理论上指令支持有限扩展,它的设计理念在规定的有限范围内进行指令扩展设计,译码电路简单,运行效率高,内部结构简单,目前主要用于嵌入式CPU。
以上除了本质上区别,他们的指令设计,一般情况下,Cics为变长指令集,RISC为定长指令集。
Risc的设计将会是以后的发展趋势,并且将越来越开源,比如RISC_V
1.2 RISC cpu
RSIC cpu结构设计灵活,运行效率高,内部结构相对于CICS简单,一般采用定长指令,译码相对电路简单。
优点:
1.指令集简洁,因此设计灵活
2.内部电路相对简单,运行效率高。
3.定长指令,所有指令长度一样,容易译码。
4.接口用于嵌入式设备,又可用在用于PC等复杂的电路系统中,通用性较强
缺点:
指令有限扩展,但是能满足我们所有的操作需求。
1.3 关于指令
CPU运算过程不是单一的,它可以执行很多种运算过程,每个运算过程是按照我们的需要进行运算,因此,它是一个典型的包括人机交互的数字电路设计。
人机交互是通过设计一串二进制,并且给这串二进制数赋予特定的功能,CPU解析该二进制数,并执行相关操作,而这个二进制就是指令。
在计算机系统中,指令都是由操作码和操作地址构成。
指令 = 操作码 + 操作地址
操作码 : 指明让CPU直行何种操作
操作地址 : CPU在执行运算操作的时候,如果需要操作存储器,这个地址就是操作地址。
1.0地址指令
例如:
NOP :空操作,在不需要操作存储器的时候使用
2.1地址指令
LDA X05 :表示从0x05地址空间读取数据保存内部累加器
3.2地址指令
例如:
Sub 0x06 0x05: 把0x06存储器空间的数据与累加器,结果写入0x05空间的存储器
4.3地址指令
Sub 0x06 rs ,0x07 :把0x06存储器空间的数据与rs寄存器数据详减,结果写入0x05空间的存储器
5.4地址指令
例如:
Cmpsum 0x06 0x07 rs 0x08:如果存储器0x06空间的数据大于0,则0x07空间的数据与RS寄存器数据相减,结果写入0x08存储空间
地址越多对应的操作也更为复杂,一条多地址指令可以由多条低地址指令功能组合在一起完成该操作。
在计算中,所有操作指令的集合叫做指令集,指令集决定了CPU所能够操作的功能,换句话说指令集指令越多完成的功能越多,实际中根据需要选择指令集,不同的指令集是不兼容的,操作系统或者软件必须兼容指令集才能正常运行。
1.4 关于cpu总线
CPU作为数字电路,在店里系统中需要与其他电路交互,交互是由接口总线负责,在计算机组成上,它的总线由地址总线,数据总线,控制总线构成。
1.5 关于CPU的内部组成
按照计算机系统的规定,CPU内部是由组件构成,所谓组件就是具有独立功能的电路,具体表示如下:
CPU 组成 = 基本组件 + 扩展组件
基本组件:是构成CPU 的基础,包括指令寄存器,累加器,ALU,程序计数器,时序控制
扩展组件:是按照需要功能扩展
1.指令寄存器
用来存放当前用于执行的指令,指令从存储器中读出,存放在指令寄存器中
2.程序计数器
用来计算存放指令的存储器地址,分为2种情况
顺序:正常情况下指令是顺序执行的,因此地址加1
跳转:当我们需要从新的指令地址空间执行指令,则需要跳转
3.ALU
是CPU的核心组件,完成数据的逻辑数学运算。具体需要按照当前的指令完成不同的运算。
4.累加器
用来保存当前ALU计算结果,除了累加器,如果需要功能扩展,则可能定义通用寄存器,以及标志寄存器.
5.时序控制
控制取指令,分析执行指令。