G.1 引言
第 4 章介绍了向量体系结构,并在向量体系结构的背景下,说明了多媒体 SIMD 扩展与 GPU 的定位。
本附录更深入地讨论向量体系结构,包括更精确的性能模型,以及以往向量体系结构的具体设计。图 G.1 列出若干典型向量处理器的特征,包括寄存器的大小和数量、功能单元的数量和类型、加载—存储单元数,以及通道数。
| 处理器(年份) | 向量时钟频率(MHz) | 向量寄存器数 | 每寄存器元素数(64 位元素) | 向量运算单元 | 向量加载—存储单元 | 通道数 |
|---|---|---|---|---|---|---|
| Cray-1(1976) | 80 | 8 | 64 | 6 个:浮点加法、浮点乘法、浮点倒数、整数加法、逻辑、移位 | 1 | 1 |
| Cray X-MP(1983) Cray Y-MP(1988) | 118 166 | 8 | 64 | 8 个:浮点加法、浮点乘法、浮点倒数、整数加法、2 个逻辑单元、移位、置位计数/奇偶校验 | 2 个加载 1 个存储 | 1 |
| Cray-2(1985) | 244 | 8 | 64 | 5 个:浮点加法、浮点乘法、浮点倒数/平方根、整数加法/移位/置位计数、逻辑 | 1 | 1 |
| Fujitsu VP100/VP200(1982) | 133 | 8–256 | 32–1024 | 3 个:浮点或整数加法/逻辑、乘法、除法 | 2 | 1(VP100) 2(VP200) |
| Hitachi S810/S820(1983) | 71 | 32 | 256 | 4 个:浮点乘加、浮点乘法或除法后加减、2 个整数加法/逻辑单元 | 3 个加载 1 个存储 | 1(S810) 2(S820) |
| Convex C-1(1985) | 10 | 8 | 128 | 2 个:浮点或整数乘法/除法、加法/逻辑 | 1 | 1(64 位) 2(32 位) |
| NEC SX/2(1985) | 167 | 8+32 | 256 | 4 个:浮点乘法/除法、浮点加法、整数加法/逻辑、移位 | 1 | 4 |
| Cray C90(1991) Cray T90(1995) | 240 460 | 8 | 128 | 8 个:浮点加法、浮点乘法、浮点倒数、整数加法、2 个逻辑单元、移位、置位计数/奇偶校验 | 2 个加载 1 个存储 | 2 |
| NEC SX/5(1998) | 312 | 8+64 | 512 | 4 个:浮点或整数加法/移位、乘法、除法、逻辑 | 1 | 16 |
| Fujitsu VPP5000(1999) | 300 | 8–256 | 128–4096 | 3 个:浮点或整数乘法、加法/逻辑、除法 | 1 个加载 1 个存储 | 16 |
| Cray SV1(1998) SV1ex(2001) | 300 500 | 8 | 64(MSP) | 8 个:浮点加法、浮点乘法、浮点倒数、整数加法、2 个逻辑单元、移位、置位计数/奇偶校验 | 1 个加载—存储 1 个加载 | 2 8(MSP) |
| VMIPS(2001) | 500 | 8 | 64 | 5 个:浮点乘法、浮点除法、浮点加法、整数加法/移位、逻辑 | 1 个加载—存储 | 1 |
| NEC SX/6(2001) | 500 | 8+64 | 256 | 4 个:浮点或整数加法/移位、乘法、除法、逻辑 | 1 | 8 |
| NEC SX/8(2004) | 2000 | 8+64 | 256 | 4 个:浮点或整数加法/移位、乘法、除法、逻辑 | 1 | 4 |
| Cray X1(2002) Cray X1E(2005) | 800 1130 | 32 | 64 256(MSP) | 3 个:浮点或整数的加法/逻辑、乘法/移位、除法/平方根/逻辑 | 1 个加载 1 个存储 | 2 8(MSP) |
如果某台机器是多处理器系统,表中条目表示其中一个处理器的特征。若干机器的向量单元与标量单元时钟频率不同,表中给出向量单元的频率。Fujitsu 机器的向量寄存器可配置:8K 个 64 位条目可在寄存器数量与每寄存器大小之间进行反向调整。例如,VP200 可以配置为 8 个各含 1K 元素的寄存器,也可以配置为 256 个各含 32 元素的寄存器。NEC 机器有 8 个连接运算单元的前台向量寄存器,另外有 32–64 个后台向量寄存器,连接存储系统与前台向量寄存器。
表中的置位计数(population count)指统计二进制表示中值为 1 的位数。加法流水线执行加法和减法。Hitachi S810/S820 的乘法/除法—加法单元,先执行浮点乘法或除法,再执行加法或减法;乘加单元则先乘、后加或减。注意,大多数处理器使用向量浮点乘除单元执行向量整数乘除;其中一些处理器还让浮点标量运算和浮点向量运算共用功能单元。每个向量加载—存储单元,都表示能够与向量寄存器进行一次独立、可与其他传送重叠的输入或输出。
通道数就是每个功能单元内的并行流水线数,见 G.4 节。例如,NEC SX/5 的乘法功能单元每周期可完成 16 次乘法。若干机器可以把一条 64 位通道拆为两条 32 位通道,以提高只需较低精度的应用的性能。Cray SV1 和 Cray X1 可以将 4 个各有 2 条通道的 CPU 编组,共同作为一个有 8 条通道的大 CPU 工作;Cray 将其称为 Multi-Streaming Processor(MSP)。