可供选择的体系结构
RISC设备
Reduced Instruction Set Computer,精简指令集计算机:提供可支持所有基本操作的最小指令集
计算机性能计算公式:
缩短时钟周期:RISC、CISC性能都提升
减少程序中指令数:CISC提升
最小化每条指令的时钟周期数:RISC提升
RISC | CISC |
---|---|
多个寄存器组 | 一个寄存器组 |
每条指令最多3个寄存器操作数 | 每条指令可以1或2个寄存器操作数 |
寄存器窗口传参 | 内存栈传参 |
硬连线电路实现 | 微代码控制 |
单周期指令 | 多周期指令 |
流水线程度高 | 流水线程度低 |
简单指令且指令数少 | 复杂指令 |
定长指令 | 变长指令 |
编译器设计复杂 | 微代码设计复杂 |
仅load和store指令可以访存 | 许多指令都可以访存 |
较少的寻址方式 | 许多寻址方式 |
Flynn's Taxonomy费林分类法
根据处理器数量和数据流数量进行分类
- SISD:单指令流单数据流,经典单处理器系统
- SIMD:单指令流多数据流,包含阵列处理器、向量处理器和脉动阵列
- MIMD:多指令流多数据流,并行架构
- MISD:多指令流单数据流
分类法的不足:
- 很少有符合MISD架构特性的应用
- Flynn假设所有的并行性都是同构的,但多处理器可能是同构也可能是异构的
- MIMD分类没有考虑多个处理器间如何互连以及如何使用主存
Symmetric multiprocessor(SMP,对称多处理器)和Massively parallel processor(MPP,大规模并行处理器)均属于MIMD
SMP共享存储器,MPP不共享
SMP -> fewer processors + shared memory + communication via memory
MPP -> many processors + distributed memory + communication via network
分布式计算是另一种MIMD体系结构
- 工作站网络(NOW,network of workstations):一组并行工作的分布式工作站的集合
- 工作站集群(COW,collection of workstations):与NOW相比需要一个公司或组织负责管理
- 专用集群并行计算机(DCPC,dedicated cluster parallel computer):一组专门用于某个特定并行计算任务的工作站集合
费林分类法新加了个SPMD(单程序多数据) 体系结构:多个处理器,每个处理器运行相同的程序,有自己的数据集和程序存储器;虽然每个处理器加载相同的程序,但运行的指令可能不同
最终体系结构的分类如下
并行和多处理器体系结构
超流水线(superpipelining):流水线中某些阶段的执行时间小于时钟周期的一半时引入,一个频率为外部时钟频率的两倍的内部时钟加入到处理器中,这样就可以在一个外部时钟周期内完成两个任务
矢量计算机(vector computers):一次对整个矢量或者矩阵操作(超级计算机),高度流水线
可以根据指令如何获取操作数分为寄存器-寄存器向量处理器(源操作数和目的操作数都保存在寄存器中)和存储器-存储器向量处理器(允许将操作数从存储器中取出直接送到算术单元)
共享存储器的MIMD机器根据如何同步访存操作可分为:
- 均匀存储器访问(UMA,uniform memory access)
- 非均匀存储器访问(NUMA,nonuniform memory access)
NUMA机器容易出现缓存一致性问题(cache coherence problem):主存数据变了而缓存影响未变,解决方法:增加监听高速缓存控制器(snoopy cache controllers)——CC-NUMA,高速缓存一致的NUMA
更改同时更新:写直通高速缓存更新协议(write-through cache update protocol)
- 写直通更新策略:广播新值并更新
- 写直通无效(invalidate)策略:广播删除旧值
数据变化时仅改变缓存中的值,主存中的副本知道其所对应的缓存块被替换并写回主存时才改变:写回协议(write-back protocol)
分布式计算:另一种形式的多处理器,主要指松耦合的多计算机系统(very loosely-coupled processing units);包含了云计算(cloud computing)
其他并行处理方法
数据流计算(dataflow computing)
Von Neumannn计算机采用顺序控制流,程序计数器决定下一条要执行的指令
但在数据流计算中,程序的控制流直接与数据绑定,指令的实际顺序与他们最终的执行顺序无关,数据持续流出,可以在同一时刻被多条指令所用
神经网络(neural network)
可以处理不精确、具有随机性的信息、允许自适应
最简单的神经网络处理元件是感知器(perceptron),是可训练的神经元:阈值(threshold)和输入权值(input weight)可以调整
脉动阵列(systolic array)
SIMD计算机的变种,可以维持很高的吞吐量,一般用来计算重复性任务
量子计算(quantum computing)
计算机都是基于晶体管(transistor-based)技术
量子计算使用量子位(quantum bits)来同时表示多种状态