引言:
对应着处理器从单核到多处理器及多核,操作系统的发展历程中,从进程演化到线程、多线程。于是,我们会想到这些问题:
1、为什么微处理要从单核转向多核?
功耗问题限制了单核处理器不断提高性能的发展途径:
作为计算机核心,影响计算机性能高低的核心部件就是处理器。反映在指令上就是处理器执行指令的效率。
处理器性能 = 主频 x IPC
可以看出,衡量处理器性能的主要指标是每个时钟周期内可以执行的指令数(IPC)和处理器的主频。
因此,提高处理器性能就是两个途径:
提高主频和提高每个时钟周期内执行的指令数(IPC)。
1)处理器微架构的变化可以改变IPC,效率更高的微架构可以提高IPC从而提高处理器的性能。但是,对于同一代的架构,改良架构来提高IPC的幅度是非常有限的,所以在单核处理器时代通过提高处理器的主频来提高性能就成了唯一的手段。
2)然而,给处理器提高主频不是没有止境的,从下面的推导中可以看出,处理器的功耗和处理器内部的电流、电压的平方和主频成正比,而主频和电压成正比。
处理器功耗 正比于 电流 x 电压 x 电压 x 主频
主频 正比于 电压
处理器功耗 正比于 主频的三次方
3)如果通过提高主频来提高处理器的性能,就会使处理器的功耗以三次方而非线性(一次方)的速度急剧上升,很快就会触及frequency wall。过快的能耗上升,需要寻找提高处理器性能的因子,提高IPC。
提高IPC可以通过提高指令执行的并行度来实现,而提高并行度有两种途径:一是提高处理器微架构的并行度;二是采用多核架构。
在采用同样的微架构的情况下,为了达到处理器IPC的目的,我们可以采用多核的方法,同时有效地控制功耗的急剧上升。
处理器功耗 正比于 电流x 电压 x 电压 x 主频
IPC 正比于 电流
处理器功耗 正比于 IPC
由单核处理器增加到双核处理器,如果主频不变的话,IPC理论上可以提高一倍,功耗理论上也就最多提高一倍,因为功耗的增加是线性的。而实际情况是,双核处理器性能达到单核处理器同等性能的时候,前者的主频可以更低,因此功耗的下降也是三次方下降的。反映到产品中就是双核处理器的起跳主频可以比单核处理器更低,性能更好。
由此可见,将来处理器发展的趋势是:为了达到更高的性能,在采用相同微架构的情况下,可以增加处理器的内核数量同时维持较低的主频。这样设计的效果是,更多的并行提高IPC,较低的主频有效地控制了功耗的上升。
2、为什么提出线程?
其目的有二:
2)减小上下文切换的开销:同一进程的线程共享资源、状态记录等;实现同类任务的内存块共享,对逻辑内存重用,而进程间只能实现对物理内存的分时共享。
3、线程模型
针对上述两大目的,相应的提出了两大线程模型:用户级线程和核心级线程;分类的标准在于线程的调度者在核内还是核外。
其中,核内的可以实现并发;核外的使得上下文切换开销更小。
2、单纯的用户线程的调度全部在核外实现,只需完成线程运行栈的切换,但由于核心信号都以进程为单位,无法定位到线程,因此不能用于多处理器系统。
于是,现在的大多操作系统不是采用单一的线程模型,而是将两个模型结合起来,譬如Solaris和Linux]都是采用这样的混合模型:
2、支持线程库,一个核心线程成为多个用户线程的调度者,进而减小了上下文开销。每个用户线程可以独立于该进程的其他线程进行调度执行。