陆续补充ing
往期回顾:
Part 1(chapter 1 - chapter 5):https://blog.youkuaiyun.com/zongza/article/details/83780572
Part 2(chapter 5 - chapter 10):https://blog.youkuaiyun.com/zongza/article/details/83933327
Part 3(概念专辑):https://blog.youkuaiyun.com/zongza/article/details/84100133
Part 4(习题专辑):https://blog.youkuaiyun.com/zongza/article/details/84111578
资料下载:
计算机体系结构-量化研究方法-Hennessy&Patterson著(英文版):https://download.youkuaiyun.com/download/zongza/10787837
计算机体系结构-量化研究方法-Hennessy&Patterson著(中文版):https://download.youkuaiyun.com/download/zongza/10787840
计算机系统结构教程-第二版-张晨曦著:https://download.youkuaiyun.com/download/zongza/10787843
计算机体系结构教程-学习指导与题解:https://download.youkuaiyun.com/download/zongza/10793886
常见的计算机类型:
- ILLIAC IV:第一台阵列处理机(多核的SIMD),第一台全面使用大规模集成电路作为逻辑元件和存储器的计算机,它的出现标志着计算机的发展已到了第四代。
- CRAY 1 :向量计算机(并行+流水线)
课外扩展:
- AI芯片:AI芯片是指集成了CPU GPU ISP DSP 和NPU等多种通用/专用硬件处理单元的芯片,它不仅可以胜任普通计算任务,还可以加速图像和神经网络的计算处理。(专门用于处理人工智能应用中的大量计算任务的模块(其他非计算任务仍由CPU负责)。当前,AI芯片主要分为 GPU 、FPGA 、ASIC。)
- GPU工作模式:1-GPU内部没有指令集,对GPU的调度都是由运行在CPU中的GPU驱动程序来完成的。GPU相当于一片并行矢量计算器。2-所有指令层级的任务一律由CPU完成;硬件层面上的调度,数据的处理(调用和存储显存),在GPU内完成。
- GPU和CPU的区别与联系:(联系:有总线和外界相连,有自己的缓存和数字逻辑运算部件)(区别:CPU需要很强的通用性设计[ 控制器,缓冲器 ]来处理复杂任务,GPU则拥有更多的ALU(Arithmetic Logic Unit,逻辑运算单元)用于对每个数据进行独立的并行计算,而非数据高速缓存和流控制,这样的结构适合处理密集型数据。)
- RISC V工作原理:RISCV包含一个非常小的基础指令集和一系列可选的扩展指令集,精简的指令集具有模块化和可定制的特点,使得这套ISA能适应几乎所有架构,硬件实现代价低。
- 举例说明集中ILP的超级计算机:超标量,VLIW,超流水线,超标量超流水线
- MIPS: 无内锁的流水线RISC架构计算机,尽量使用软件方法来避免流水线中的数据冲突。
- 计算机体系结构带来的价值:设计角度:别的领域可以借鉴并行思想,局部性原理,阿姆达尔定律等。 从分析角度:可以借鉴性能分析,成本,可靠性可用性和功耗等。
- 超级计算机:能够处理一般个人电脑无法处理的大资料和高速运算的电脑,组成和个人电脑差不多,但是具有高速度和大容量的特点。
常见缩写:
- RISC:精简指令集计算机
- CISC:复杂指令集计算机
- ISA: 指令集架构
- MIMD:多指令流多数据流计算机(如 集群,MPP)
- SIMD:单指令流多数据流计算机(如:向量计算机)
- RAID: 廉价磁盘冗余阵列
- Cache:高速缓冲存储器
- VILW:超长指令字
- MIPS:每秒百万条指令
- ROB:再定序缓冲 reorder buffer
- BHT:分支历史表 branch history table
- CDB:公共数据总线
- SMP:对称式(集中式)共享存储器多处理机
- MPP:大规模并行处理
- SMT:同时多线程
- LRU:最近最少被访问
- TLB:地址变换后备缓冲
一些概念的补充
Ch4 - 流水线
- 延迟分支:使用编译器进行静态指令调度,基本思想是“延长”分支指令的执行时间,无论分支是否成功,都会执行延迟槽中的指令,以掩盖需要插入的停顿
- 定向技术:流水线寄存器中的结果可以直接送给后面的指令,减少停顿
- 流水线技术:见part1
- 相关:指令之间的依赖关系
- 冲突:由于相关的存在,指令流中下一条指令不能在指定的时钟周期开始执行
- 换名技术:两条指令没有数据流动但是使用了相同的寄存器名
简述流水线技术特点。
见part1
简述通过编译器减少分支延迟的三种方法?共同特点?
分支成功:一旦计算出转移地址就运行该处指令
分支失败:直接运行分支失败后的指令
延迟分支:“延长”分支指令执行时间,运行延迟槽中的指令以掩盖停顿
特点:静态调度,在程序运行过程中不会改变
简述延迟分支方法中的3中调度策略的优缺点。
从前调度:最常用
从失败处调度:要保证成功时之前执行的结果不会产生不好的影响
从目标出调度:要保证失败时~
Ch5-指令级并行
- 指令级并行: 当两条指令之间没有相关,便可以在流水线中重叠执行,这种潜在的并行性就是指令级并行
- 指令的动态调度:如何调度:在保持数据流和异常行为的情况下,通过硬件对指令执行顺序进行重新安排,目的是提高流水线的利用率且减少停顿现象。调度时间是在程序执行过程中进行的。
- 指令的静态调度:如何调度:依靠编译器对代码进行静态调度,目的是减少相关和冲突。调度时间是在编译期间进行的。
- 动态分支预测技术:由硬件动态地进行分支处理。在程序运行时,根据分支指令过去的表现来预测其将来的行为。 如果分支行为发生了变化,预测结果也跟着改变。
- 静态分支预测技术:由编译器进行处理,要么预测成功,要么预测不成功,指令执行时预测结果不变。
- BHT:分支历史表,用来记录相关分支指令最近一次或几次的执行情况是成功还是失败,并据此进行预测。
- 分支目标缓冲:是一种动态分支预测技术。 将执行过的成功分支指令的地址以及预测的分支目标地址记录在一张硬件表在每次取指令的同时,用该指令的地址与表中所有项目的相应字段进行比较,以便尽早知道分支是否成功,尽早知道分支目标地址,达到减少分支开销的目的。
- 前瞻执行:解决控制相关的方法,它对分支指令的结果进行猜测,然后按这个猜测结果继续取指、流出和执行后续的指令。只是指令执行的结果不是写回到寄存器或存储器,而是放到一个称为 ROB 的缓冲器中。等到相应的指令得到“确认”(即确实是应该执行的) 后,才将结果写入寄存器或存储器。
- 超标量:一种多指令流出技术。它在每个时钟周期流出的指令条数不固定,依代码的具体情况而定,但有个上限。
- 超长指令字:一种多指令流出技术。VLIW 处理机在每个时钟周期流出的指令条数是固定的,这些指令构成一条长指令或者一个指令包, 在这个指令包中,指令之间的并行性是通过指令显式地表示出来的。
- 循环展开:是一种增加指令间并行性最简单和最常用的方法。它将循环展开若干遍后, 通过重命名和指令调度来开发更多的并行性。
- 保留站:tomasulo算法中用来存储指令和操作数的虚拟寄存器,可以实现分布式控制和缓存
- 基本块:除了入口和出口没有其他分支的指令序列
为了保证程序执行的正确性,必须保持哪两个关键属性?简述含义。
数据流(data flow)+ 异常行为(exception behavior)
数据流:保护数据在指令之间的流动过程
异常行为:指令执行顺序的改变不应产生新的异常行为
记分牌算法中,记录的信息由那三部分组成?
寄存器结果状态,指令状态,功能部件状态
简述tomasulo算法的思想.
- 将保留站作为虚拟寄存器存储 指令和操作数,实现分布式控制和缓存
- 记录和检测指令相关,功能单元直接从保留站获得操作数(不再从寄存器读),操作数一旦就绪就立即执行,减少RAW(因为读操作的源已被定向(预约)到写的指令,只有操作数就绪时读才执行);
- 通过寄存器换名来消除WAR冲突和WAW冲突。寄存器换名是通过保留站和流出逻辑来共同完成的。(之后的写操作对保留站中的指令不再有影响,因为已换名,也就是指令中寄存器号换成了产生这个操作数的保留站标识,操作数可从CDB得到,不用再从寄存器读)
采用动态分支预测技术的目的是什么?在所采用的方法中,需要解决那些问题?
目的:
- 预测分支是否成功
- 尽快找到分支目标地址(避免控制相关造成流水线停顿)
问题:
- 如何记录分支历史信息
- 如何根据这些信息进行预测
给出采用使用分支目标缓冲器BTB吼,在流水线的三个阶段(IF,ID,EX)所进行的相关操作.
基于硬件的前瞻执行是把那三种思想结合在了一起?
- 用动态分支预测选择后续指令
- 对基本块组合采用动态调度
- 在控制相关消除之前采用前瞻执行+undo
举例说明为何前瞻执行能带来一定的性能提升?有哪些方法可以处理前瞻指令引起的一场?
方法:
开发ILP的方法:
- 循环展开
- 动态分支预测
- 动态调度
- 超标量和超长指令字
Ch6- ILP的限制与SMT
- 细粒度多线程技术:是一种实现多线程的技术。 它在每条指令之间都能进行线程的切换,从而使得多个线程可以交替执行。通常以时间片轮转的方法实现这样的交替执行,在轮转的过程中跳过处于停顿的线程。
- 粗粒度多线程技术:是一种实现多线程的技术。只有线程发生较长时间的停顿时(L2 cache miss)才切换到其他线程。
- 同时多线程:是一种在多流出、动态调度的处理器上同时开发线程级并行和指令级并行的技术, 它是多线程技术的一种改进。
Ch7-存储系统
- 全相联映射:主存中块可以映射到cache中任意位置
- 直接映射:~固定位置
- 组相联映射:固定组,组内任意位置
- 命中时间:访问cache命中时所需要的时间(不是命中后的访问时间!!!)
- 替换算法:主存的块比cache多,所以新调入cache的块位置可能已被占用,发生冲突,需要进行替换
- LRU:选择最近最少被使用的块作为被替换的块
- 写直达:写操作的时候,不仅写cache,也修改主存中对应的块
- 写回:写操作的时候只写cache,当cache中的块被替换的时候才写主存中的块
- 按写分配:写miss 的时候,先调入cache再在cache中写
- 不按写分配:写miss的时候,直接在主存中写
- TLB:一个全相连的cache,用作地址变换后备缓冲,减少地址变换时间
简述cache-主存 和主存-辅存两个层析的区别。
一般只要答出来目的,软or硬的实现即可
替换算法有几种?各自的优缺点?
随机(易于实现),LRU(考虑到了局部性原理,实现复杂),FIFO(易于实现)
通过编译器对程序优化来改进cache性能的方法有几种?简述其思想。
(1) 数组合并。通过提高空间局部性来减少失效次数。有些程序同时用相同的索引来访问若干个数组的同一维,这些访问可能会相互干扰,导致冲突失效,可以将这些相互独立的数组合并成一个复合数组,使得一个 Cache 块中能包含全部所需元素。
(2)内外循环交换。循环嵌套时,程序没有按数据在存储器中的顺序访问。只要简单地交换内外循环,就能使程序按数据在存储器中的存储顺序进行访问。
(3)循环融合。有些程序含有几部分独立的程序段,它们用相同的循环访问同样的数组,对相同的数据作不同的运算。通过将它们融合成一个单一循环,能使读入 Cache 的数据被替换出去之前得到反复的使用。
(4)分块。通过改进时间局部性来减少失效。分块不是对数组的整行或整列进行访问,而是对子矩阵或块进行操作。
组相联的不命中率比相同容量直接映像cache不命中率低,由此能否得出结论,采用组相联一定能带来性能上的提升?为什么?
不一定。因为组相联命中率的提高是以增加命中时间为代价的,组相联需要增加多路选择开关
什么是写缓存?为什么会有写缓存?
见Part2部分https://blog.youkuaiyun.com/zongza/article/details/83933327#t28
引起Cache与主存内容不一致的原因是什么?为了保持Cache的一致性,在单计算机系统中一般采取哪些措施?
答:不一致的原因:
(1) 由于CPU写Cache,没有立即写主存
(2) 由于I/O处理机或I/O设备写主存
采取措施:
(1)全写法,亦称写直达法(WT法—Write through)
方法:在对Cache进行写操作的同时,也对主存该内容进行写入。
(2)写回法(WB法—Write back)
方法:在CPU执行写操作时,只写入Cache,不写入主存。
Ch8-IO系统
- 可靠性:由平均无故障时间决定MTTF,系统从初始状态开始一直提供服务的能力
- 可用性:用MTTF/(MTTF+MTTR)决定,系统正常服务时间在两次正常服务间隔中占比
- 可信性:不可度量,多大程度上认为服务是可靠的
- RAID:廉价磁盘冗余阵列,将多个小的廉价的磁盘进行有机组合,获得与大容量磁盘相当的性能和容量
RAID有哪些分级?
0:数据分块,文件按照条带分布式存储
1:镜像磁盘,冗余盘是数据盘的完全备份
3:位交叉奇偶校验,冗余盘存储奇偶校验信息,数据以位或字节交叉方式存储
4:块交叉奇偶校验,冗余盘存储奇偶校验信息,数据以块交叉方式存储
5:块交叉分布式奇偶检验,无专用冗余盘,冗余信息均匀分布在所有磁盘上,数据以块交叉方式存储
6:P+Q块交叉分布式双奇偶校验,比5多了一倍冗余信息
在有cache的计算机系统中,进行IO操作时,会产生哪些数据不一致问题?如何克服?
问题1:IO系统从存储器中读的值可能是旧值(新值在cache中还没写回)| |可以用写直达cache解决+不按写分配
问题2:IO系统向存储器中写的值会导致cache中的值变成旧值 | |让操作系统检测要写的块是否在cache中或者用写回法+按写分配
Ch9-多核计算机
- 集中式共享多处理机: 各个处理器共享一个集中式的物理存储器,它相对于各个处理器的关系是对称的
- 分布式共享多处理机:每台处理器都有自己的本地存储器,不同处理器通过互联网络相互访问
- 多cache一致性:共享数据进入cache后,多个处理器中都有其副本,如果只修改其中一个cache,会造成其他cache中数据不一致
- 同时多线程:在多流出,动态调度的处理及上同时实现指令级并行和线程级并行
- 细粒度多线程:见part2
- 粗粒度多线程:见part2
- MPP:大规模并行处理
- 向量处理机:在流水线处理机中设置了向量数据表示和向量指令,以充分发挥流水线的效率
- 分段开采技术:向量长度超过了向量寄存器的长度,必须把向量分成长度固定的段,然后循环分段处理.
共享存储器通信和消息传递通信机制各有那些主要优点?
有哪些方法来提高向量处理机的性能?
- 设置多个功能部件使他们并行工作
- 采用链接技术,加快一串向量指令的执行
- 采用循环开采技术,加快循环的处理
- 采用多处理机系统,进一步提高性能