计算机的算术运算
子字并行 (大致浏览)pdf 170页左右
浮点加法不满足结合律:
适用于整型数据类型的并行执行策略并不适用于浮点数据类型 ,原因如上↑
处理器
流水线
流水线是一种能使多条指令重叠执行的实现技术
流水线技术通过提高指令吞吐率来提高性能,而不是减少单个指令的执行时间
前递或旁路
指令间的并行性
流水线技术挖掘了指令间潜在的并行性,这种并行性被称为指令级并行
提高指令级并行度主要有两种方法:
增加流水线的级数
增加流水线内部的功能部件数量,这样可以每周期发出多条指令,这种技术被称为多发射
实现多发射处理器主要有两种方式:
指令发射与否的判断是在编译时完成的,称为静态多发射
如果指令发射与否的判断是在动态执行过程中由硬件完成的,称为动态多发射
寄存器重命名,寄存器重命名的目标是,除了数据相关,消除指令间存在的其他数据相关。例如,ld x30,0(x20) ,add x31, x31,x21, sd x31, 8(x20) ,这样的指令,除了都是用x31,这些指令实际上是相互独立的。这种情况称为反相关,或名字相关
反相关:也成为名字相关,由于名字复用被迫导致的顺序排列。这并不是一种指令间真是的数据相关
动态多发射处理器
动态多发射器也称为超标量处理器
动态调度流水线:由硬件选择后续执行的指令,并对指令进行重排来避免流水线的停顿。在这样的处理器中,流水线被分为三个主要部分:取指,发射单元,多功能部件,以及提交单元
加速:指令级并行和矩阵乘法
层次化存储
时间局部性 如果某个数据项被访问,那么在不久的将来它可能再次被访问
空间局部性 如果某个数据项被访问,与它地址相邻的数据项可能很快也会被访问
靠近处理器那一层中的数据是那些较远层次中数据的子集,所有的数据都被存在最远的那一层
在相邻两层之间进行信息交换的最小单元称为块 或 行
处理写操作
写穿透或写直达:一种写策略。写操作总是同时更新cache和下一级存储,保证两者之间的数据一致
写返回:一种写策略。处理写操作时,只更新cache中对应数据块的数值。当该数据块被替换时,再将更新后的数据块写入下一级存储
cache 的性能评估和改进
直接映射:一个数据块在cache 中只有一个对应位置
全相联:数据块可以存放在 cache 中的任意位置,在全相联cache中查找给定的数据块,所有的表项必须进行对比。
组相联:每个数据块在cache 中存放的位置数量具有固定值(至少为2),每个数据块有 n 个位置可放的组相联 cache 称为 n 路组相联 cache。在一个n路组相联cache中,包含有若干组,每一组包含有n个数据块。
在 cache 中查找数据块
可靠的存储器层次
增加可靠性的最好办法是冗余
失效的定义:
提高MTTF的三种方法: