3.计算机基础之简述CPU

CPU

中央处理器(CPU,central processing unit)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元

CPU指令集

我们以人作为比喻,我们需要往前走的时候,手和脚会不自觉的进行协同前进,但是,我们并不会主观计算到,某个肌肉具体是怎么收缩运动的,如何进行协同,都是我们的大脑自动进行运算的

在现代CPU中同样集成了类似的功能,程序员编程的目的是为了控制计算机硬件工作,程序员的代码都会转换成cpu的指令集才能去控制其他硬件,所以程序员是通过直接控制cpu来达到间接控制其他硬件的目的

程序----->CPU内部指令----->计算机硬件的操作

CPU分类

CPU的分类通常就是按照指令集进行分类的,通常分为两种,精简指令集和复杂指令集

精简指令集

精简指令集(Reduced Instruction Set Computing,RISC):这种CPU的设计中,微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。常见的RISC指令集CPU主要例如Sun公司的SPARC系列、IBM公司的Power Architecture(包括PowerPC)系列、与ARM系列等。

复杂指令集

复杂指令集(Complex Instruction Set Computer,CISC)与RISC不同,在CISC的微指令集中,每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因此指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。

比较

CPU按照指令集可以分为精简指令集CPU和复杂指令集CPU两种,区别在于前者的指令集精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。后者的指令集每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。

x86架构64位

X86

x86是针对cpu的型号或者说架构的一种统称,详细地讲,最早的那颗Intel发明出来的CPU代号称为8086,后来在8086的基础上又开发出了80285、80386…,因此这种架构的CPU就被统称为x86架构了。

由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个人计算机上面,因此,个人计算机常被称为x86架构的计算机!

程序员开发出的软件最终都要翻译成cpu的指令集才能运行,因此软件的版本必须与cpu的架构契合,举个例子,我们在MySQL官网下载软件MySQL时名字为:

Windows(x86,32-bit),ZIP Archive (mysql-5.7.20-win32.zip)

我们发现名字中有x86,这其实就是告诉我们:该软件应该运行在x86架构的计算机上。

64位/32位

回看程序运行过程,CPU会从内存中读取指令,然后进行运算,而cpu的位数就指的是cpu一次性能从内存中取出多少位二进制指令,64bit指的是一次性能从内存中取出64位二进制指令

在2003年以前由Intel所开发的x86架构CPU由8位升级到16、32位,后来AMD依此架构修改新一代的CPU为64位,到现在,个人计算机CPU通常都是x86_64的架构。

64位/32位的概念通常指的是数据总线的大小,具体的运算结果64位CPU和算术逻辑单元架构是以寄存器、内存总线或者数据总线的大小为基准

cpu具有向下兼容性

指的是64位的cpu既可以运行64位的软件,也可以运行32位的软件,而32位的cpu只能运行32位的软件。这其实很好理解,如果把cpu的位数当成是车道的宽,而内存中软件的指令当做是待通行的车辆,宽64的车道每次肯定既可以通行64辆车,也可以通行32辆车,而宽32的车道每次却只能通行32辆车

寄存器

硬盘的速度远远小于CPU,所以为了方便CPU高速取数据,所以就有了内存

但内存的速度也小于CPU,CPU是通过高低电频逐步进行的数据运算,如果每个都需要单独从CPU逐个读取,CPU就会花费大量时间等待内存读取,会拖累CPU的运算速度,所以就有了寄存器。

寄存器通常在CPU内部,制作材料通常与CPU相同,尽可能的保证与CPU的频率相同,在运算时,可以将重复性高重要的数据放到寄存器,CPU可以从寄存器里直接快速加载,从而提升预算效率

CPU工作流程

image-20200813124702014

CPU的核心工作在于进行运算和判断,CPU首先会从内存代码段中读取指令放于指令寄存器,让控制单元进行控制,当运算到需要加载数据的时候,从内存数据段读取数据,然后放于存储单元,运算单元从存储单元读取数据进行运算和暂存,运算完成后,在将数据送回内存数据段

内核态和用户态

计算机最核心的就是CPU,而CPU最核心的就是内部的指令集,CPU主要做两件事,一是运算,二是控制,所以CPU内部指令集也应该分为运算指令集控制指令集

我们写的程序是直接控制CPU,CPU转换成指令集在控制其他硬件

程序又分为系统程序和应用程序,系统程序可以控制硬件,而应用程序不能直接控制硬件

image-20200813131732435

CPU有两种工作状态

内核态:系统的操作内核

CPU所有的指令集都开放

用户态:用户应用程序

只开放运算相关指令集

CPU由于会同时运行“操作系统“和“应用程序“,且应用程序需要调用操作系统操作硬件,所以内核态和用户态会频繁切换

多线程和多核芯片

我们把CPU进行一个比喻,一核代表工厂,一线程代表工厂里的流水线,原本一个工厂里面只有一条流水线,现在放进去了两条流水线,就叫一核二线程,但是工厂里不光只有流水线,还有原料运算等其他部分的存在,所以并不能等同于两个工厂的效率

2核4线程:
	2核代表有两个cpu,4线程指的是每个cpu都有两个线程=》假4核
4核8线程
	4核代表有4个cpu,8线程指的是每个cpu都有两个线程=》假8核

moore定律指出,芯片中的晶体管数量每18个月翻一倍,随着晶体管数量的增多,更强大的功能称为了可能,如

第一步增强:在cpu芯片中加入更大的缓存,一级缓存L1,用和cpu相同的材质制成,cpu访问它没有时延

第二步增强:一个cpu中的处理逻辑增多,intel公司首次提出,称为多线程(multithreading)或超线程(hyperthreading),对用户来说一个有两个线程的cpu就相当于两个cpu,我们后面要学习的进程和线程的知识就起源于这里,进程是资源单位而线程才是cpu的执行单位。

多线程运行cpu保持两个不同的线程状态,可以在纳秒级的时间内来回切换,速度快到你看到的结果是并发的,伪并行的,然而多线程不提供真正的并行处理,一个cpu同一时刻只能处理一个进程(一个进程中至少一个线程)

第三步增强:除了多线程,还出现了傲寒2个或者4个完整处理器的cpu芯片,如下图。要使用这类多核芯片肯定需要有多处理操作系统

并行的,然而多线程不提供真正的并行处理,一个cpu同一时刻只能处理一个进程(一个进程中至少一个线程)

第三步增强:除了多线程,还出现了傲寒2个或者4个完整处理器的cpu芯片,如下图。要使用这类多核芯片肯定需要有多处理操作系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值