并行与分布式系统架构解析
立即解锁
发布时间: 2025-08-25 01:06:47 阅读量: 2 订阅数: 9 


并行与分布式处理手册核心内容解析
### 并行与分布式系统架构解析
在计算机系统的发展进程中,并行与分布式系统架构的优化一直是提升性能的关键所在。下面我们将深入探讨相关的技术细节和优化策略。
#### 1. 路径选择与并行执行
在路径树中,当确定某条路径是正确的之后,路径树上层的其他路径有更高的概率是有用的。不过,执行这些路径需要额外的硬件来记录树结构和选择路径等,这可能会因成本过高而得不偿失。目前,有多项研究正在针对此课题展开。
#### 2. 克服依赖关系
##### 2.1 克服反依赖和输出依赖:重命名
反依赖和输出依赖源于编程模型对寄存器的有限使用,这是为了兼容旧指令集。克服这些依赖可以提高并行性。
- **编译器移动指令**:编译器尝试将指令从其依赖的指令处移开,但由于编译器仅了解包含分支的静态程序,且移动指令跨越分支较为困难,通常只能在两个分支之间移动指令,而程序中分支频繁,这极大地限制了指令的位移。
- **动态重命名**:通过动态重命名结果存储位置来解决依赖问题。物理位置数量多于编程模型中的寄存器数量。当指令被调度且其结果存储位置已被占用时,将结果映射到另一个物理位置;后续指令的操作数若涉及相同寄存器,也重命名为相应物理位置;指令退休时,将结果从物理位置复制到原始寄存器。
- **实现方式**:
- 使用补充寄存器和映射表,映射表指示逻辑寄存器和补充寄存器之间的关联。
- 使用重排序缓冲区的条目作为存储位置。重排序缓冲区包含所有已调度但未退休的指令,不存在物理寄存器不足的限制。其条目会记录逻辑寄存器编号,以便在指令退休时将结果复制到相应物理寄存器。使用重排序缓冲区时,可关联映射表或在重排序缓冲区中进行关联搜索以找到最后一个在要重命名寄存器中产生结果的指令。当遇到错误预测分支需要清除后续指令时,可通过每次分支调度时创建检查点(将映射表复制到影子结构)来恢复映射表状态,避免在重排序缓冲区结果字段进行关联搜索。
| 实现方式 | 优点 | 缺点 |
| ---- | ---- | ---- |
| 补充寄存器和映射表 | 管理相对清晰 | 需要额外的映射表维护 |
| 重排序缓冲区 | 无物理寄存器不足问题 | 关联搜索可能复杂 |
##### 2.2 克服真依赖:值预测和指令重用
真依赖和控制依赖是编程模型的本质依赖。控制依赖可通过预测分支行为、推测执行预测分支后的指令并在预测错误时恢复正常状态来克服。
- **值预测**:对指令结果进行预测,使依赖该指令结果的指令能与之并行执行。研究表明,静态指令重新执行时,有 50% 的概率产生相同结果,超过 60% 的概率产生在之前四次执行中已出现过的结果。基于值预测表的实验显示,指令能提前执行,可使指令并行执行速度至少提高 10%。
- **指令重用**:若指令的操作数与上次执行时相同,则无需再次执行该指令。不同的实现方式已被提出。
- **限制错误预测惩罚**:错误预测的指令及其依赖指令需重新执行。为避免像分支预测那样清除所有后续指令而抵消收益,应实现恢复机制,仅取消依赖错误预测指令的执行,同时限制错误预测的惩罚。可将指令保留在发行缓冲区,若依赖错误预测指令则允许重新执行,处理器需记录指令间的依赖关系。
##### 2.3 内存依赖
内存依赖与寄存器依赖有所不同。指令解码后,其寄存器信息已知,但内存位置的地址需要计算,因此在调度阶段无法像寄存器依赖那样确定内存操作之间的依赖关系。
- **内存延迟**:DRAM 的延迟远高于处理器的周期时间,且差距逐年增大。为此,通常会添加多级缓存(一般为两级或三级),这导致加载和存储操作的延迟因访问内存层次的不同而变化,在主存级别可能高达几十个周期。
- **存储操作**:存储操作在推测执行时不应将数据存入内存,或
0
0
复制全文
相关推荐










