萝铃的魔力圣灵的眼泪:超长指令字处理器

来源:百度文库 编辑:九乡新闻网 时间:2024/05/06 12:43:45

2.4 并行执行机制

在这一节中,我们来看处理器进行并行操作的几种方法。我们将考虑超长指令字和超标量处理、子字并行、向量处理以及线程级并行。最后对嵌入式应用中可用的并行方法进行分析作为这一节的结束。

2.4.1 超长指令字处理器

超长指令字(VLIW)体系结构起源于通用处理器,但在嵌入式系统中已经得到了广泛应用。VLIW体系结构提供了硬件开销相对较低的指令级并行。

图2-4展示了一个简化的VLIW处理器来介绍这项技术的基本原理。执行单元包括一个功能单元池,连接到一个大的寄存器堆。用现在的术语,对VLIW,我们可以说执行单元读入一个指令包——包中的每条指令可以控制机器中的一个功能单元。在一个理想的VLIW机器中,指令包中所有的指令同时被执行。在现代机器中,执行完包中所有的指令可能需要若干个周期。与超标量处理器不同,指令执行的顺序是由代码的结构和指令如何分组成包决定的。在当前指令包中所有的指令执行完之前,下一指令包中的指令不会开始执行。

  (点击查看大图)图2-4通用VLIW处理器结构

由于指令包的组织决定了指令执行的顺序,VLIW机器依靠强大的编译器来辨认并行性以及调度指令。编译器保证资源约束和相应的调度策略。作为补偿,执行单元就变得简单一些,因为不需要做资源依赖性检查。

理想的VLIW编程相对比较容易,因为它有很大的、规则的寄存器堆。寄存器堆为功能单元提供了通信机制,因而每个功能单元都可以从任意寄存器读操作数,以及把结果写入任意一个寄存器。

遗憾的是,构建大规模快速的多端口寄存器堆是困难的。所以现代很多VLIW机器使用经过划分的寄存器堆。如图2-5所示,寄存器分为两个寄存器堆,每个连接到两个功能单元。一个寄存器堆和相关的功能单元合起来称作一个簇。簇总线可以将数值在寄存器堆之间移动。寄存器堆之间的移动是通过显式的指令由程序进行控制的。所以,划分的寄存器堆使得编译器的工作更加复杂。编译器必须在寄存器堆中对数值进行划分,决定一个数值什么时候从一个寄存器复制到另一个寄存器,产生所需要的移动指令,并且调整其他操作的调度来等待这个数值的出现。然而,VLIW电路的特性通常需要设计划分的寄存器堆结构。

  (点击查看大图)图2-5VLIW机器中划分寄存器堆

VLIW机器已经运用于具有较大数据并行性的应用程序。比如,Trimedia系列处理器是针对视频系统设计的。视频算法常常同时对若干个像素进行相似的操作,这使得生成并行的算法比较容易。VLIW机器也用在信号处理和网络方面。比如,手机基带系统,需要对多个信道进行并行的信号处理。使用VLIW结构,可以在不同的数据流上对同样的指令进行操作。类似地,网络系统需要对若干数据包同时进行相同或相似的操作。

例2-3描述了一个VLIW数字信号处理器。例2-4描述了另外一个VLIW机器。

例2-3 德州仪器C6x VLIW DSP

德州仪器TI C6x是一款VLIW处理器,针对数字信号处理设计。下面是C6x芯片的框图。
 
芯片包括一个板上程序,一个数据RAM,以及标准设备和DMA。处理器内核包括两簇,配置相同。每个寄存器堆包括16个字。每个数据路径有8个功能单元:两个读单元、两个写单元、两个数据地址单元和两个寄存器堆交叉路径。

例2-4 Freescale Starcore SC140 VLIW核

Starcore体系结构是由摩托罗拉(现在的Freescale半导体)和Agere联合设计的。SC140(http://www.freescale.com)是Starcore体系结构的一个实现。SC140核可以用于芯片设计。

与C6x类似,SC140分为两簇。但是与C6x不同,SC140中的两簇具有不同的功能。一簇用于数据运算,包含4个数据ALU和1个寄存器堆。另一簇用于地址运算,包含两个地址运算单元和自己的寄存器堆。

MC8126是一款包含4个SC140内核和共享内存的芯片。