操作系统课程
计算机组成
- ALU:计算单元(运算器)
- PC:pc寄存器存执行指令
- Registers:寄存器存数据
- MMU:控制器
程序的构成:指令+数据
总线:一个程序读入内存,全是由0和1构成,从内存读取到cpu计算,需要通过总线。一段01数据段是指令还是数据是通过来源总线区分的。总线分为三类。
- 地址总线:地址控制器。寄存器存储的下一步的地址。从地址线读取过来的是地址。地址线是寻址的线。
- 数据总线:数据线读取过来的就是数据,
- 控制总线:从控制线读取过来的是指令。控制器。
多核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性能分析
对于一个程序设置多少个线程合适?(理论值)
即:线程池设置多少核心线程数合适
- 是处理器的核数目
- 是期望的cpu利用率
- 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的流水线设计。