分类: 嵌入式
2012-02-15 23:18:08
记得本科学计算机系统结构时,在了解了流水线这一用于提高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)
我们平时接触的计算机都是标量机,向量机都是大型计算机,一般用于军事工业,气
象预报,以及其他大型科学计算领域,这也说明了向量机都很贵。国产的银河计算机就是
向量机。
普通的计算机所做的计算,例如加减乘除,只能对一组数据进行操作,
被称为标量运算。向量运算一般是若干同类型标量运算的循环。
向量运算通常是对多组数据成批进行同样运算,所得结果也是一组数据。
很多做科学计算的大(巨)型机都是向量机,例如国产银河。这个好像我们平时不太
接触的到。