在RISC之后,出现了一些提高指令级并行性的技术,使得计算机在每个时钟周期里可以解释多条指令,这就是超标量技术和超流水线技术。
常规的标量流水线,每个时钟周期平均执行的指令的条数小于等于1,即它的指令级并行度小于等于1。
超标量
超标量技术是通过重复设置多个功能部件,并让这些功能部件同时工作来提高指令的执行速度,实际上是以增加硬件资源为代价来换取处理器性能的。使用超标量技术的处理器在一个时钟周期内可发射多条指令。
典型的标量流水线处理机把一条执行的执行过程分解为取指令、译码、执行、访存、写会等5级流水线,每一级的执行时间为一个基本时钟周期。让一条指令从译码段流动到执行段的操作通常称为发射指令。
单发射是指处理机在一个时钟周期内只从存储器取出一条指令进入指令流水线处理。它的设计目标是每个时钟周期平均执行一条指令。但是实际上由于数据相关、控制相关以及资源冲突等原因,只能接近一条指令。
所以,超标量还有另外一种说法。在一个时钟周期内能够同时发射多条指令。为了能够支持同时发射多条指令,超标量处理器必须具有至少两条及以上能够同时工作的指令流水线。具有多条能同时工作的流水线是所谓超标量的前提。
超流水线
超流水线仍然是一种流水线技术,可以认为它是将标量流水线的子过程再进一步细分,使得子过程数大于或等于8的情况。也就是说只需要增加少量硬件,通过各部分硬件的充分重叠工作来提高处理器性能。采用超流水线技术的处理器在一个时钟周期内可以分时发射多条指令。
提高流水线处理效率的另一个方法是缩短机器周期。一般是将一个机器周期划分为若干个子周期,每个子周期均发射一条新的指令,亦即每个机器周期发射多条指令,从而提高计算机的性能。这种处理方式称为超流水线处理技术。
超流水线技术对芯片的工作速度要求比较高,同时硬件系统比较复杂,需要占用较大的芯片的面积,因此超流水线结构在嵌入式RISC处理器中很少采用。
超线程
超线程是Intel公司提出的一种提高CPU性能的技术,就是将一个物理CPU当作两个逻辑CPU使用,使CPU可以同时执行多重线程,从而发挥更大的效率。超线程技术利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和应用软件,减少CPU的闲置时间,提高CPU的运行效率。
超线程技术可以使操作系统或者应用软件的多个线程,同时运行于一个超线程处理器上,其内部的两个逻辑处理器共享一组处理器执行单元,并行完成加、乘、加载等操作。这样做可以使得处理器的处理能力提高30%,因为在同一时间内,应用程序可以充分使用芯片的各个运算单元。
对于单线程芯片来说,虽然也可以每秒处理成千上万条指令,但是在某一时刻,其只能够对一条指令(单个线程)进行处理,结果必然使处理器内部的其他处理单元闲置。而超线程技术则可以使处理器在某一时刻,同步并行处理更多指令和数据。所以,超线程是一种可以将CPU内部暂时闲置的处理资源充分调动起来的技术。
超线程技术与双核心技术区别
开启了超线程技术的CPU和双核CPU在操作系统中都同样被识别为两个处理器,他们究竟是不是一样的?
可以简单理解:双核心技术为两个“物理”核,是一种“硬”的方式;超线程技术只是两个“逻辑“处理器,是一种”软“的方式。
支持超线程的CPU能同时执行两个线程,但超线程中的两个逻辑处理器并没有独立的执行单元、整数单元、寄存器甚至缓存等资源。他们在运行过程中仍需要共用执行单元、缓存和系统总线接口。在执行多线程时两个逻辑处理器均是交替工作,如果两个线程都同时需要某一个资源时,其中一个要暂停并要让出资源,要待那些资源闲置时才能继续。因此,前面说超线程技术仅可看作是对单个处理器运算资源的优化利用。
而双核心技术则是通过“硬”的物理核心实现多线程工作,每个核心拥有独立的指令集、执行单元,与超线程中所采用的模拟共享机制完全不一样。在操作系统看来,他是实实在在的双处理器,可以同时执行多项任务,能让处理器资源真正实现并行处理模式,其效率和性能提升要比超线程技术高的多,两者不可同日而语。
百度百科对超标量定义:
超标量CPU架构是指在一颗处理器内核中实行了指令级并行的一类并行计算。这种技术能够在相同的CPU主频下实现更高的CPU吞吐率。