CA11 线程级并行
CA11 线程级并行
性能
Cache 性能
- 单处理器 Cache 未命中流量
- 失效操作和后续 Cache 未命中流量
一致性未命中:由处理器间通信引起的未命中
- 真实共享不命中:通过 Cache 一致性机制由数据通信引起的未命中
- 处理器第一次对共享 Cache 块写操作引起的不命中
- 另一个处理器对该 Cache 块中被修改数据字读操作未命中引起的
- 虚假共享不命中:使用每个缓存块单个有效位的失效一致性算法引起的未命中
目录协议
为了保证缓存数据的一致性,监听协议在每次缓存中不命中时均要求所有缓存之间进行通信
- 基本优势:成本低廉
- 致命弱点:可扩展性差
目录协议
- 目录保存每个缓存数据块的状态
- 目录内容
- 哪个缓存拥有数据块副本
- 数据块是否处于脏状态
在共享L3缓存中实现
- 每个数据块中保存比特矢量,矢量长度位处理器核数目
- 每个比特矢量表示私有L2中是否包含L3数据块的副本
- 无法扩展到L3之外
分布式目录
特点
- 内存和目录共同分布存储,以便不同的一致性请求转到不同的目录
- 在每个结点上添加目录以实现缓存一致性
同步
同步机制一般是由用户级软件程序构建的,而这些软件程序是以硬件提供的同步指令为基础的
需要一组具有原子读和修改内存内容的硬件原语。
- primitive 原语是构建各种用户级同步操作的基本构建
- 通常由系统程序员来编写
原子交换
- 内存位置的数值和寄存器中数值进行交换。
- 锁
- 交换应该是原子的
- 两个同时的交换将由写串行机制排序
测试且设置 test-and-set
- 如果测试通过,则置位
读取且递增 fetch-and-increment
单条不可中断指令完成内存读和写操作
基本构件
指令对
保留加载/条件存储
- 连接加载和加锁加载
- 保留加载指令 将rs1指定内存地址的内容加载到rd中,且在该内存位置设置保留地
- 条件存储指令 将rs2中数值存储到由rs1指定的内存位置
- 如果保留地内容被写入相同地址位置的其它指令破坏,则条件存储指令失效,在rs2中写入非0数值,如果成功写入0.
- 如果交换两条指令上下文内容,则条件存储指令永远失效
自旋锁
内存一致性模型
期末考试题型
选择题 6 * 5’ 类似于课堂测验
简答题 几句话回答 4 * 5’
计算题 关于指令并行性(tomasulo算法)10’
指令时空图 10’
线程级并行性 15’
存储层次(未命中) 15’
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
GiscusGitalk