计算机的算术运算
子字并行 (大致浏览)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的三种方法:
纠正1位错,检测2位错的汉明编码
虚拟机
支持虚拟机的软件称为虚拟机监视器或管理程序,底层硬件平台被称为主机,它的资源被客户端虚拟机共享。
虚拟机监视器为客户端软件提供软件接口,隔离每个客户端的状态,并且必须保护自己免受客户端软件(包括客户端操作系统)的侵害。
定性的需求:
- 除了与性能的行为或由于多个VM共享所导致的固定资源的限制外,客户端软件应该像在本地硬件上一样在虚拟机上运行
- 客户端软件不能直接改变实际系统资源的分配
为了“虚拟化”处理器,VMM必须空值几乎所有事情:特权态的访问,I/O,例外和中断
虚拟存储
主存可以为通常由磁盘实现的辅助存储充当cache,这种技术被称为虚拟存储
在虚拟存储中,地址被划分为虚拟页号和页内偏移
由于我们无法提前获知存储器中的某一页什么时候将被替换出去,因此操作系统通常会在创建进程时为所有页面在闪存或磁盘上创建空间。这个空间区被称为交换区(为进程的全部虚拟地址空间所预留的磁盘空间),那时,它也会创建一个数据结构来记录每个虚拟页在磁盘上的存储位置
加快地址转换:TLB
块表(TLB,用于记录最近使用地址的映射信息的cache,从而避免每次都要访问页表)
虚拟存储中的保护
虚拟存储最重要的功能就是允许多个进程共享一个主存,同时为这些进程和操作系统提供内存保护。保护机制必须明确:金国多个进程共享相同的主存,但无论有意或无意,一个恶意进程不能写另一个用户进程或操作系统的地址空间
上下文切换:为允许另一个不同的进程使用处理器,改变处理器内部的状态,并保存当前进程返回时需要的状态
处理TLB失效和缺页失效
TLB失效表明两种可能之一:
- 页在内存中,只需要创建缺少的TLB表项
- 页不在内存中,需要讲控制转移给操作系统来处理缺页失效
处理TLB失效或缺页失效需要使用例外机制来终端活跃进程,将控制转移到操作系统,然后再恢复执行被中断的进程
一旦操作系统知道引起缺页失效的虚拟地址,它必须完成以下三个步骤:
总结
虚拟存储是在主存和辅助存储之间进行数据缓存管理的一级存储层次。虚拟存储允许单个程序将其地址空间扩展到超出主存的限制。虚拟存储支持以受保护的方式在多个同时活跃的进程之间共享内存
存储层次结构的一般框架
块可以被放在何处
如何找到块
在存储层次结构中,直接映射,组相联或全相联映射的选择取绝于失效代价于相联度实现代价之间的权衡,包括时间和额外硬件开销
当cache发生失效时替换哪一块
- 随机:随机选择候选块,可能使用一些硬件辅助实现
- 最近最少使用(LRU):被替换的块是最久没有被使用过的块
写操作如何实现:
- 写穿透:信息将写入cache中的块和存储层次结构中较低的块(对cache而言是主存)
- 写返回:信息仅写入cache中的块。修改后的块只有在它被替换时才会写入层次结构中的较低层
写返回的优点:
- 处理器可以按cache而不是内存能接收到的速率写单个的字
- 块内的多次写操作只需对存储层次结构中的较低层进行一次写操作
- 当写回块时,由于写一整个块,系统可以有效的利用高带宽传输
写穿透的优点:
3C:一种理解存储层次结构的直观模型
使用有限状态自动机控制简单的cache
有限状态自动机:一个包含了一组输入/输出,状态转换函数(将当前状态和输入映射为新状态)和一个输出函数(将当前状态和输入映射为断言输出)的顺序逻辑函数
下一个状态函数:一个组合函数,给定一个输入和当前状态,可以得出有限状态自动机的下一个状态