CPU的工作原理通俗理解

发布于:2022-11-28 ⋅ 阅读:(816) ⋅ 点赞:(0)

1、CPU工作理解

简单介绍 CPU 的工作原理_有趣的人生 一半是山川湖海 一半是初心情怀 -CSDN博客

CPU的内部架构和工作原理-wjlkoorey258-ChinaUnix博客

2、CPU指令集

通俗的说一说指令集是什么?CPU是如何工作的?_qq_40585684的博客-CSDN博客

# x86架构64位(重要)
x86是针对cpu的型号或者说架构的一种统称。64位指的是cpu一次性能从内存中取出多少位二进制指令,64bit指的是一次性能从内存中取出64位二进制指令。
cpu具有向下兼容性:64的cpu既能运行32位的程序也能运行64位的程序;换句话说,32位的程序可以在32位的cpu上运行也可以在64位的cpu上运行。;64位的程序只能在64位的cpu上运行。


# cpu指令集(了解)
# 1.1、精简指令集(了解)
  精简指令集(Reduced Instruction Set Computing,RISC):这种CPU的设计中,微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。
  SPARC架构的计算机常用于学术领域的大型工作站中,包括银行金融体系的主服务器也都有这类的计算机架构;
  PowerPC架构的应用,如Sony出产的Play Station 3(PS3)使用的就是该架构的Cell处理器。
  ARM是世界上使用范围最广的CPU了,常用的各厂商的手机、PDA、导航系统、网络设备等,几乎都用该架构的CPU。

# 1.2、复杂指令集
  复杂指令集(Complex Instruction Set Computer,CISC)与RISC不同,在CISC的微指令集中,每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因此指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。
    
# 总结:
    CPU按照指令集可以分为精简指令集CPU和复杂指令集CPU两种,区别在于前者的指令集精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。后者的指令集每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。
 

3、认识CPU的工作原理

认识CPU的工作原理_延瓒-CSDN博客_cpu的工作原理是什么

4、CPU GPU

通俗易懂的告诉你CPU和GPU的区别_苝花向暖丨楠枝向寒-CSDN博客_cpu和gpu的区别通俗点

5、通俗理解CPU与外设间的数据传送方式

通俗理解CPU与外设间的数据传送方式_芜杂.的博客-CSDN博客_cpu与外设之间的数据传送方式

CPU与外设间有三大传送方式,分别是程序控制方式、中断方式、DMA方式。前两种由软件实现,DMA由硬件实现。

6、通俗理解CPU中物理地址、逻辑地址、线性地址、虚拟地址、有效地址的区别

​​​​​​通俗理解CPU中物理地址、逻辑地址、线性地址、虚拟地址、有效地址的区别_毛毛雨下的博客-CSDN博客_线性地址

7、CPU执行程序的简单理解

CPU执行程序的简单理解_猪哥的专栏-CSDN博客_cpu是如何执行程序的

8、CPU工作机制

​​​​​​CPU工作机制_简单同学-CSDN博客_cpu处理机制

9、CPU的控制器

中央处理器CPU——控制器 - 理想主义者的长征路 - 博客园
 

10、CPU其他

CPU详解 - the3times - 博客园

内核态和用户态(重要)

代表cpu的两种工作状态
    1、内核态:运行的程序是操作系统,可以操作计算机硬件
    2、用户态:运行的程序是应用程序,不能操作计算机硬件

内核态与用户态的转换
    应用程序的运行必然涉及到计算机硬件的操作,那就必须有用户态切换到
    内核态下才能实现,所以计算机工作时在频繁发生内核态与用户态的转换
 

扇区(硬盘):
    一个扇区通过为512Bytes
    站在硬盘的解读,一次性读写数据的最小单为为扇区

    操作系统一次性读写的单位是一个block块=》8扇区的大小=4096Bytes = 4KB
 

11、CPU缓存
 

CPU缓存分为3个部分:

L1、L2、L3

L1(一般32KB,一个缓存行,cacheLine 一般是64Byte)、L2(一般256KB) 是CPU独享的,不和其他CPU的缓存数据共享

L3 (一般2MB)缓存是所有CPU共享的

与程序员相关的CPU缓存知识(上)

1.基本概念:

对于CPU来说,它是不会一个字节一个字节的加载的,因为这非常没有效率,一般来说都是要一块一块的加载的,对于这样的一块一块的数据单位,术语叫“Cache Line”,一般来说,一个主流的CPU的Cache Line 是 64 Bytes(也有的CPU用32Bytes和128Bytes),64Bytes也就是16个32位的整型,这就是CPU从内存中捞数据上来的最小数据单位。

缓存的命中: 这部分没看,没什么用

缓存同步时用到的协议:

Directory 协议

Snoopy 协议

CPU的多核心缓存间的同步的核心就是要管理好数据的状态:

简单的状态协议: MESI协议

4.超线程与多核心
超线程: 一个linux系统,一般只有一个CPU,市面上普通的电脑都只配一个CPU,多个CPU没必要。一个物理CPU,可能是多核心的CPU,一个核心CPU一般只能同时执行一个一个线程,但是CPU的利用率不是100%,因为线程执行过程,CPU不一定一直繁忙,可能会空闲; 为了解决这个 问题,就出现了超线程技术,一个核心可以跑2个线程(不是真正意义上的并发,只能比单线程提升40%的性能),是一种硬件架构设计,逻辑上的多线程;

加深理解:

单线程芯片每秒钟能够处理成千上万条指令,但是在任一时刻只能够对一条指令进行操作。而超线程技术可以使芯片同时进行多线程处理,使芯片性能得到提升。 虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能

常用查看命令:

1.查看CPU个数

cat /proc/cpuinfo |grep “physical id”|sort|uniq|wc -l

2.查看每个物理CPU含有的核心个数

cat /proc/cpuinfo |grep “cpu cores”|uniq|wc -l

3.查看每个CPU核心含有的线程数

cat /proc/cpuinfo |grep “processor”|wc -l

4.那么cpu支持的线程数为 cpu数目 * 每个cpu含有的核心数目* 每个核心含有的线程数

 

12、CPU工作流程

 

计算机五大组成部分的基本工作流程就是:输入单元=>主存储器=>CPU=>主存储器=>输出单元

而CPU会从内存中取指令->解码->执行,然后再取指->解码->执行下一条指令,周而复始,直至整个程序被执行完成。
所以总结CPU的大致工作流程就是:取指一>解码一>执行,详细见下图

 

本文含有隐藏内容,请 开通VIP 后查看