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’