CPU深度解析

操作系统课程

 计算机组成 

  1. ALU:计算单元(运算器)
  2. PC:pc寄存器存执行指令
  3. Registers:寄存器存数据
  4. MMU:控制器

程序的构成:指令+数据

总线:一个程序读入内存,全是由0和1构成,从内存读取到cpu计算,需要通过总线。一段01数据段是指令还是数据是通过来源总线区分的。总线分为三类。

  1. 地址总线:地址控制器。寄存器存储的下一步的地址。从地址线读取过来的是地址。地址线是寻址的线。
  2. 数据总线:数据线读取过来的就是数据,
  3. 控制总线:从控制线读取过来的是指令。控制器。

多核CPU

cpu的时钟周期

cpu的一个时钟周期内包括上面这四步。取指->译码->执行->回写 !cpu能每秒执行多少次这样的指令周期就是cpu的频率!例如:cpu的频率是3.9GHz就表示cpu每秒能执行39亿次这样的指令周期 。即cpu的运行是一个频繁的从内存中读写数据和指令的过程。有些数据和指令甚至需要反复的读写。但是cpu和内存的读写速度和处理能力是不同的。这就出现了三级缓存的设计。

cpu三级缓存设计

三级缓存共享

缓存通常位于cpu内部,相比于内存需要通过总线连接与cpu进行交互,缓存可以降低传输延迟。

L1、L2级缓存一般是单核独享的,L3级缓存一般多核共享。独享的缓存效率高但浪费资源。共享的节约资源但效率低。

CPU超线程技术

超线程:即虽然一个核上只有一个计算单元ALU但有两套pc程序计数器、数据寄存器。即一个ALU对应多个PC|Resgisters寄存器。即在一个核里面可以装两个(多个)线程的数据进来。通过计算单元来回切换计算。这个时候两个线程就不需要来回的进行上下午切换了。

学习分享:服务器内存带宽知识讲解_哔哩哔哩_bilibili

进程、线程的区别

进程:进程是静态的概念,程序进入内存,分配对应资源,内存空间,进程进入内存,同时产生一个主线程。即进程是分配资源的基本单位。

线程:线程是动态的概念,是可执行的计算任务。线程共享进程内存空间。对于cpu来说,同一个ALU(计算单元)只能执行一个线程任务。

多线程

操作系统的cpu多线程分时系统,线程的切换需要保存现存,保存上下文。

cpu性能分析

对于一个程序设置多少个线程合适?(理论值)

即:线程池设置多少核心线程数合适

N_{threads}=N_{CPU}*U_{CPU}*(1+W/C)

  1.  N_{cpu}是处理器的核数目
  2. U_{cpu}是期望的cpu利用率
  3. W/C是等待时间(即cpu空闲时间)与计算时间的比例

工作线程数是不是设置的越大越好?

线程数越多单个线程获取到的时间片越少,线程上下文切换越频繁。大量的计算资源都消耗在线程上下午切换上。

单核cpu设定多线程是否有意义?

假设:有一颗cpu(单核)

如果有一个线程有50%的时间在做计算,还有50%的时间在做wait等待网络输入。则在一个cpu的情况下,有一个线程的时候cpu只有50%的时间被利用上。有两个线程的话cpu可以有100%的时间利用率。

【深缓中字】您可能浪费了大部分的CPU性能_哔哩哔哩_bilibili

cpu的乱序执行

是由于cpu和内存的速度相差特别大导致的。假设cpu严格顺序执行,如果连续的三条指令,第一条指令执行完后需要从内存获取数据,那么cpu需要等99个时间周期来等待内存数据读取(这里假设:cpu的速度是内存的100倍)。那么cpu就会有99个时钟周期属于空闲期。

发出等待的过程之中先执行后面的指令。即cpu的流水线设计。

CPU乱序执行的概念_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值