代码改变世界

超标量、超级流水线、超长指令字、向量机

2016-11-06 19:04  工匠小建  阅读(1969)  评论(0编辑  收藏  举报
 

记得本科学计算机系统结构时,在了解了流水线这一用于提高cpu处理速度的方法后,
书中还介绍了一些其他的结构,这些结构一般用于较高性能的计算机中
(呵呵,嵌入式系统中我还没看到,连multi issue的cpu都不多),包括:
超标量(Super Scalar)、超级流水线(Super Pipeline)、超长指令字(VLIW)、
和向量机。这些概念我总混淆,现在随着理解的深入,已经完全知道了它们各自的
特点,写点简要的介绍,贴在这里。

1、超标量(Super Scalar)
    将一条指令分成若干个周期处理以达到多条指令重叠处理,从而提高cpu部件利用
率的技术叫做标量流水技术.
    超级标量是指cpu内一般能有多条流水线,这些流水线能够并行处理.在单流水线结构
中,指令虽然能够重叠执行,但仍然是顺序的,每个周期只能发射(issue)或退休(retire)
一条指令.超级标量结构的cpu支持指令级并行,每个周期可以发射多条指令(2-4条居多).
这样,可以使得cpu的IPC(Instruction Per Clock) > 1, 从而提高cpu处理速度.
    超级标量机能同时对若干条指令进行译码,将可以并行执行的指令送往不同的执行
部件,在程序运行期间,由硬件(通常是状态记录部件和调度部件)来完成指令调度.
    超级标量机主要是借助硬件资源重复(例如有两套译码器和ALU等)来实现空间的并行
操作.
    我们熟知的pentium系列(可能是p-II开始),还有SUN SPARC系列的较高级型号,以及
MIPS若干型号等都采用了超级标量技术.

2、超级流水线(Super Pipeline)
    超级流水线又叫做深度流水线,它是提高cpu速度通常采取的一种技术。CPU处理指令
是通过Clock来驱动的,每个clock完成一级流水线操作。每个周期所做的操作越少,那么
需要的时间久越短,时间越短,频率就可以提得越高。所以超级流水线就是将cpu处理
指令是得操作进一步细分,增加流水线级数来提高频率。频率高了,当流水线开足马力
运行时平均每个周期完成一条指令(单发射情况下),这样cpu处理得速度久提高了。
当然,这是理想情况下,一般是流水线级数越多,重叠执行的执行就越多,那么发生
竞争冲突得可能性就越大,对流水线性能有一定影响。
    现在很多cpu都是将超标量和超级流水线技术一起使用,例如pentium IV,流水线达
到20级,频率最快已经超过3GHZ.我们教科书上用于教学的经典MIPS只有5级流水。

3、超长指令字(VLIW:Very Long Instruction Word)
    超常指令字是由美国Yale大学教授Fisher提出的。它有点类似于超级标量,是一条
指令来实现多个操作的并行执行,之所以放到一条指令是为了减少内存访问。通常
一条指令多达上百位,有若干操作数,每条指令可以做不同的几种运算。那些指令可以
并行执行是由编译器来选择的。通常VLIW机只有一个控制器,每个周期启动一条长指令,
长指令被分为几个字段,每个字段控制相应的部件。由于编译器需要考虑数据相关性,
避免冲突,并且尽可能利用并行,完成指令调度,所以硬件结构较简单。
    VLIW机器较少,可能不太容易实现,我们平时很少接触VLIW机器(也许是我孤陋寡
闻),我知道业界比较有名的VLIW公司之一是Transmeta,在加州硅谷Santa Clara(呵呵
我心目中硅谷圣地之一,还有San Jose, Palo Alto,都是it英雄辈出的地方)。它做的
机器采用X86指令集,VLIW实现,具体资料可以去访问公司的网站。

4、向量机(Vector Machine)
    我们平时接触的计算机都是标量机,向量机都是大型计算机,一般用于军事工业,气
象预报,以及其他大型科学计算领域,这也说明了向量机都很贵。国产的银河计算机就是
向量机。
    普通的计算机所做的计算,例如加减乘除,只能对一组数据进行操作,
被称为标量运算。向量运算一般是若干同类型标量运算的循环。
向量运算通常是对多组数据成批进行同样运算,所得结果也是一组数据。
    很多做科学计算的大(巨)型机都是向量机,例如国产银河。这个好像我们平时不太
接触的到。

5、SIMD技术
   刚刚看到网上一段介绍SIMD的文字,贴在这里:
   单指令多数据(Single Instruction Multiple Data)
   简称SIMD。SIMD结构的CPU有多个执行部件,但都在同一个指令部件的控制下。
SIMD在性能上有什么优势呢?以加法指令为例,单指令单数据(SISD)的CPU对加法指令
译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操
作数;随后才能进行求和运算。
   而在SIMD型CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进
行运算。这个特点使得SIMD特别适合于多媒体应用等数据密集型运算。AMD公司的3D NOW!
技术其实质就是SIMD,这使K6-2处理器在音频解码、视频回放、3D游戏等应用中显示出优
异性能。