计算机体系结构
基础
一、Amdahl阿姆达尔定律
系统性能取决于可改进部分执行时间占总时间的比例。
Fe为可改进比例,Se部件加速比=可改进部分改进前执行时间/改进后执行时间。
设改进前执行任务的总时间为T0,改进后执行时间Tn=(1-Fe)T0+(Fe*T0)/Se
系统加速比Sn=T0/Tn
CPU所需要的时钟周期数= ∑ i = 1 n \sum_{i=1}^n ∑i=1nCPIi*ICi
吞吐量=任务数/总执行时间
MIPS=每秒执行n百万条指令数目
二、软件兼容
向上兼容是指不加修改就可以运行于比当前机器更高档的机器上;向后兼容是指不加修改就能运行于在当前机器之后投入市场的机器(新一代)。向后兼容是系列机的根本特征。
实现可移植性方法:序列机,模拟与仿真(仿真用微程序解释,模拟用机器语言解释),统一高级语言。
三、提高并行性方法
时间重叠:轮流重叠使用同一个硬件设备。
资源重复:重复设置硬件资源。
共享资源:软件方法,如多道程序,分时系统。
四、指令系统
CISC:复杂指令系统计算机 RiSC:精简指令系统计算机。
流水线技术
一、通过,满载,排空时间
通过时间:第一个任务从进入流水线到流出结果的时间
满载时间:第一个任务留出到最后一个任务流进之间的时间段
排空时间:最后一个任务流进到流出结果的时间
二、流水线
静态流水线:同一时间内,多个流水线段只执行同一个功能。静态可以是单功能流水线或者多功能流水线,但要多功能流水线中,只有等一种功能的流水线全部排空,才能开始另外一个功能的流水。
动态流水线:同一时间内,不用流水段可以执行不同的功能。动态流水线一定是多功能流水线。
线性流水线:不存在反馈回路
非线性流水线:存在反馈回路,某些功能段被数次通过。
顺序流水线和乱序流水线:任务输入顺序和输出顺序相同与否。
三、流水线瓶颈问题
某个功能段的执行时间和其它功能段不一致。如Δt1=Δt2=Δt4=Δt Δt3=3Δt
解决方案:①细分瓶颈段:将瓶颈段再细分为更小的段,使每个小段和其它功能段执行时间一致。把Δt3再分成3个时间为 Δt的动能段
②重复设置瓶颈段:并联设置多套执行瓶颈段的功能部件。可以设置三套执行Δt3的功能部件。
四、时空图
吞吐=任务数/流水线执行时间
加速比=任务串行执行时间/流水线执行时间
效率=执行任务占用的时空区面积/总时空区面积
画时空图求以上流水线指标是,要注意如果有数据相关当前任务要使用前面任务计算的结果,那么需要等待前面任务结果执行完当前任务才能进入流水。
五、指令执行五个周期
取指,译码,执行,访存,写回。
访存阶段中,load指令会访问读出执行阶段计算出来的操作数内存地址;store指令会把指定数据写入有效地址;
写回阶段,数据写回寄存器,包括ALU运算指令和load指令。
分支指令在执行阶段得出分支结果和目标地址,在访存阶段修改PC。
六、相关
数据相关:后面执行需要使用前面指令的数据。
名相关:两条指令使用相同的寄存器名或者存储单元名。可以通过寄存器换名解决。
控制相关:存在于分支指令依赖的情况。a执行完才轮到b,那么b指令不能在a指令之前。
七、冲突
结构冲突(资源冲突):多条指令同一时刻竞争同一个功能部件。比如数据和指令都存放在存储器中,那么load指令的访存读数据阶段和另外一条指令的取指阶段就会存在结构冲突。解决方法:插入气泡(跳过一个周期任务再进入流水线)
数据冲突:RAW,WAR,WAW。解决方法:①定向技术,建立专门数据通道,把计算结果运送到其它指令需要它的地方。②流水线互锁机制,当检测到数据冲突,则使流水线暂停,直至冲突消失。相当于对当前冲突任务及后面任务插入气泡。
控制冲突:由转移指令引起。解决方法:先选择一个成功率较高的分支路径。
①假设预测的分支失败:分支失败则指令照常进行;分支成功再进行改动,把分支指令之后的所有指令转化为空操作
②假设预测的分支成功:先知道成功后转移的地址,并执行转移地址指令;知道分支失败后,再进行rollback。
③延迟分支:增加延迟槽指令。不管如何延迟槽指令都按序执行。(实际上相当于插入暂停周期)
八、向量流水机
①横向加工:逐个计算结果向量中的元素。计算完第一个元素,再计算第二个。每次计算都会涉及数据相关和流水线功能切换。 如D=A×(B+C),则计算顺序 D1=A1×(B1+C1), D2=A2×(B2+C2)。不适用于向量计算
②纵向加工:向量向量之间完成一个运算后,再进行下一个运算。每次计算不涉及数据相关和功能切换。
如 D=A×(B+C),计算顺序 temp=B+C,D=A×temp
③纵横:向量元素分为若干组,组内纵向加工,组间横向加工。
增强向量处理方法:链接技术(一个流水线部件计算结果直接送入到下一个功能流水的操作数寄存器中,利用数据先写后读相关);分段开采
指令级并行
一、动态调度
tomasulo算法:记录和检测指令相关,一旦操作数已经准备好就交给后面指令执行。
记分牌法。
二、循环展开和指令调度
循环展开:循环的不同迭代之间具有并行性。循环展开后通过重命名和指令调度开发更多并行性。
调增指令执行顺序,相关指令之间间隔大一些。不同寄存器之间的操作可以放在一起执行。
要注意循环控制和操作数偏移量的修改的正确性。
存储系统
一、多级存储系统
CPU(寄存器堆)->Cache->内存->辅存
二、Cache映像规则
直接映像:内存地址=标识+Cache块号+块内偏移
全相联映像:内存地址=块标记+块内偏移
组相联映像:内存地址=组内标记+组号+块内偏移
CPU写Cache命中时:①写直达法(全写法),Cache和内存的数据同时更新②写回法,只写Cache,仅当Cache被移出淘汰后才写入内存。
三、三种Cache不命中失效
强制性失效:第一次访问Cache时失效。
容量失效:因Cache容量有限而移出Cache的块再次被访问,类似于抖动。
冲突失效:多个内存块映射到同一个Cache块,被替代的Cache块刚被移出就被再次访问。
相联度越高(每组的块数越多),则冲突失效越少。Cache容量越大,容量失效越少.
四、牺牲Cache
在Cache和下一次存储结构中设置一个牺牲Cache,存放Cache被替换出的数据块。当Cache不命中时,先去牺牲Cache中找,再失效才去内存里面找。
输入输出系统
一、三种通道类型
字节多路通道:服务于低速或者中速的外设。包含多个子通道,每个子通道连接一个设备控制器。每个设备轮流占用通道传输一个字节。A1,B1,C1,A2,B2,C2…
选择通道:服务于高速外设。一个高速设备独占整个通道,传输完所有数据才换下一个设备。A1A2A3…AnB1B2…
数组多路通道:上述两种的结合。
互联网络
一、互联函数
交换函数:某一位置为非,f(Xn-1Xn-2Xn-3Xn-4…X0)=Xn-1Xn-2Xn-3Xn-4… Xk ‾ \overline{\text{Xk}} Xk…X0
均匀洗牌函数:输入端二进制编号循环左移。f(Xn-1Xn-2Xn-3Xn-4…X0)=Xn-2Xn-3…X0Xn-1
逆混洗:循环右移
二、互联网络参数
网络规模:节点数
节点距离:两个节点相连的最小边数
网络直径:任意两个节点距离最大值
等分宽度;将网络分成相同两半所需要切割的最小边数
节点度:与节点相连的边数
问答
1.理想计算机系统机构应该在存储容量、处理速度、吞吐量之间取得平衡。
2.阵列处理机操作模型用五元组表示SIMD=(N,C,I,M,R),N表示机器处理单元数,I表示指令集
3.多处理机和并行处理机区别在于,多处理机是任务级的并行;并行处理机是实现SIMD单指令多数据的操作并行
4.Illiac IV阵列机中,处理部件PU用于数组运算;阵列控制器CU用于小型标量处理机。
5.松耦合系统又称为间接耦合系统,一般通过通道和通信线路实现互联。紧耦合一般通过总线或者高速开关实现互联。
6.超标量是指通过增加并行部件,一个周期内发送多条指令,相当于空间换时间。
超流水线是通过再细分流水线,一个周期内分时发送多条指令,相当于时间换空间。
7.分组开采中,同一个编队的向量指令不能存在功能部件使用冲突和数据相关
8.块冲突概率从高到低的映像是 直接映像->组相联映像->全相联映像
9.阵列处理机按照存储器的结构可以分为分布式存储器和集中共享式
10.延迟转移技术是一种软件方法,由编译程序重排指令序列来实现。
11.系列机是指具有相同指令结构,但是具有不同组成和实现的机器。
12.阵列处理机又叫并行处理机,属于SIMD架构,通过硬件上资源重复来实现
13.翻译程序包括编译和解释。①编译程序是指把高级语言一次性转化为目标程序,直接执行目标程序②解释程序是把一条语句翻译成机器目标代码并执行,然后再翻译下一条语句,相当于边翻译边执行。
编译和解释的对象是高级语言,汇编程序的对象是汇编语言。