超线程和多核心
在购买CPU的时候,我们往往会发现CPU的参数列表中核心数和线程数不一致,且大多数情况下线程数是核心数的两倍。这是为什么呢?这就涉及到超线程和多核心的概念。
超线程CPU简介

上图是最简单的双线程CPU的一个例子。图中有两个程序计数器(PC0和PC1)及两个寄存器堆(Register File0和Register File1),它能同时执行两个线程,相当于有两个逻辑意义上的CPU(逻辑CPU)。三个功能部件(两个ALU和一个FPU)被两个逻辑CPU共享。当两个线程同时要求使用FPU时,其中一个的要求得到满足,而另一个则需要等待。
多核心CPU简介
随着半导体工艺技术的提高,在一个芯片内能集成越来越多的晶体管,并且CPU的时钟频率也越来越快。但是时钟频率不可能无限地提高(受光速影响,电子信号传播速度约为光速三分之二),而且随着频率的增加,功率和散热问题也越来越严重(据测算,主频每增加1Ghz,功耗将上升25W,而在芯片功耗超过150W后,现有的风冷散热系统将无法满足散热的需要)。所以单核处理器性能似乎达到了瓶颈,人们开始把视线放到了多核处理器上。
多核CPU就是在基板上集成多个单核CPU。
如果核的数量不是很多,一般都采用共享总线的结构。一般来说,每个核都有各自的第一级Cache和第二级Cache,共享第三级Cache,与外部的总线接口一般都只有一个。
多核CPU的Cache一致性问题

多处理器调度方法
非对称多处理
一个处理器负责所有调度决定、I/O处理以及其他系统活动,其他的处理器只执行用户代码。非对称多处理很简单,因为只有一个处理器访问系统数据结构,减少了数据共享的需要。
对称多处理(SMP)
每个处理器自我调度。所有进程可能处于一个共同的就绪队列中,或者每个处理器都有自己的就绪进程队列。每个处理器的调度程序都检查共同就绪队列,以便选择执行一个进程。
处理器亲和性
如果一个原本在某个处理器上执行的进程转移到了另一个处理器上执行,则第一个处理器的缓存失效,而第二个处理器的缓冲需要重新填充。进程从一个处理器转移到另一个处理器上执行的代价很大,因此大多数SMP系统试图避免将进程从一个处理器转移到另一个处理器上。这就是处理器亲和性。
处理器的亲和性有两种:软亲和性和硬亲和性。软亲和性是指操作系统试图将进程保持在同一个处理器上,但不是强制的。硬亲和性则强制进程只允许在某个处理器上。
多处理器负载均衡
多处理的负载均衡是为了充分利用每个处理器的计算资源,而不至于出现一个处理器高负载,而其它处理器空闲等待的场景。对于大多数支持SMP的现代操作系统,每个处理器都有一个就绪进程队列。负载均衡通常有两种方法:推迁移和拉迁移。
推迁移
周期性地检查每个处理器的负载,如果发现不平衡,则通过将进程从超载处理器推到低负载的处理器上。
拉迁移
空闲处理器从高负载处理器上拉取一个进程执行。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/33240.html