第一章量化设计与分析基础1.计算机性能提升表现在哪些方面:半导体技术不断提高,如特征尺寸和时钟频率;计算机体系结构不断改进,如高级语言编译器、标准化的操作系统和指令更为简单的RISC 体系结构。
2.并行分类:1)应用程序的并行分类:数据级并行(DLP):同时操作多数据任务级并行(TLP):创建了一些能够独立处理但大量采用并行方式执行的工作任务2)硬件的体系结构:指令级并行(ILP):在编译器帮助下。
利用流水线的思想开发数据级并行,利用推理执行的思想以中等水平开发数据集并行。
向量体系结构和图像处理单元(GPUs):将单条指令并行应用于一个数据集,来达到数据集并行线程级并行:在紧耦合硬件模型中开发数据集并行或任务及并行,这种模型允许在线程之间进行交互。
请求级并行:在程序员或操作系统制定的大量去耦合任务之间开发并行3.Flynn’s分类是如何分类的?Flynn’s分类主要分为四类:1)单指令流、单数据流(SISD):一条指令处理一个数据,可以利用指令级并行(ILP)2)单指令流、多数据流(SIMD):将大量重复设置的处理单元按一定方式互连成阵列,在单一控制部件CU(Contrul Unit)控制下对各自所分配的不同数据并行执行同一指令规定的操作,主要应用于向量体系结构、多媒体扩展指令和图像处理单元(Graphics processor units) 3)多指令流、单数据流(MISD):用多个指令作用于单个数据流,没有商业实现4)多指令流多数据流(MIMD):每个处理器都提取自己的指令,对自己的数据进行操作,主要用于开发线程级并行TLP(紧耦合MIMD)和请求级并行RLP(松耦合MIMD)4.什么是“真正”的计算机体系结构?1)满足目标和功能需求的组成和硬件;2)限制条件下最大化性能:成本、功耗、可用性;3)包括指令集体系结构(ISA),微体系结构,硬件5.计算题:可靠性的计算平均无故障时间:Mean time to failure (MTTF),MTTF是故障率的倒数。
平均修复时间:Mean time to repair (MTTR)平均故障间隔时间:Mean time between failures (MTBF) = MTTF + MTTR可用性:Availability = MTTF / MTBF例:设磁盘子系统的组件及MTTF如下:10个磁盘,1000000小时MTTF;1个ATA控制器,500000小时MTTF;1个电源,200000小时MTTF;1个风扇,200000小时MTTF;1根ATA电缆,1000000小时MTTF;采用简化假设,寿命符合指数分布,各故障相互独立,试计算整个系统的MTTF.解答:系统故障率=10*1/1000000+1/500000+1/200000+1/200000+1/1000000=23000FIT(每10亿小时)MTTF=1/故障率=43500小时第二章存储器层次结构设计1.层次化存储寄存器→多级CACHE→内存→磁盘2.命中时间:命中时访问需要的时间,包括判断是否命中的时间;缺失代价:从内存中替代块的时间;3.块放置策略有全相联映射和组相联映射两种策略全相联映射:一个块可以放在CACHE中的任何位置;需要检索CACHE中的所有项:并行比较器组相联映射:每个块有n个位置可放的cache称为n路组相联cache;存储器中的一个块对应到cache中唯一的组,但是可以放在组内的任意位置上4.1)命中方法的两种方式有写直达法和写回法写直达法:保持CACHE和主存的一致;写回法:修改过的块被替换时才写入主存;2)不命中(写缺失)的两种方式有写分配和写不分配写分配:分配CACHE中的块,并写入CACHE;写不分配:不分配,直接写主存。
5.缺失率是什么?导致缺失的原因是什么?缺失率是指CACHE访问不命中的比率。
导致缺失的原因有强制缺失、容量缺失和冲突缺失强制缺失:第一次访问相应cache块,cache中肯定没有改cache块容量缺失:cache块被移除后又被访问冲突缺失:重复访问的多个地址映射在CACHE的同一位置6.性能的定量计算:程序执行时间=CPU执行程序的时间+等待存储访问的时间基于CPI的计算:存储器阻塞时钟周期=(存储器总访问次数/指令数)*缺失率*缺失代价平均访问时间(AMAT)=命中时间+缺失率*缺失代价举例1:假设指令cache的缺失率为2%,数据cache的缺失率为4%,处理器的CPI为2(没有存储器阻塞),且每次缺失的代价为100个时钟周期,那么配置一个从不发生缺失的理想的cache,处理器的速度快多少?假定全部LOAD和STORE的频率为36%.解:指令缺失时钟周期:1*2%100=2.0I数据缺失:136%*4%*100=1.44I总存储器阻塞:2.0 I + 1.44 I = 3.44 I总CPU : 2 + 3.44 = 5.44配置理想cache: 5.44 / 2 = 2.72 倍举例2:处理器时钟周期的时间1ns,缺失代价是20个时钟周期,缺失率为每条指令0.05次缺失,cache的访问时间(包括命中判断)为1个时钟周期。
假设读操作和写操作的缺失代价相同并且忽略其它写阻塞。
请计算AMAT.解:每条指令的平均存储器访问时间为:AMAT = 命中时间+缺失率缺失代价=1+0.0520=2个时钟周期举例3:假定处理器基本的CPI为1.0,时钟频率为4GHz。
假定主存访问时间为100ns,其中包括缺失处理时间。
设一级cache中每条指令缺失率为2%。
如果增加一个二级cache,命中或缺失访问的时间都是5ns,而且容量大到必须使访问主存的缺失率减少到0.5%,这时的处理器速率能提高多少?解:主存的缺失代价:100ns/(0.25ns/时钟周期)=400个时钟周期只有一级cache时:总的CPI=1.0+2%*400=9对于两级cache:二级cache的缺失代价:5ns/(0.25ns/时钟周期)=20个时钟周期总的CPI=1+2%*20+0.5%*400=3.4有二级cache的处理器性能是没有二级cache性能的9.0/3.4=2.6倍6.层次化存储优化方法有6种基本的CACHE优化方法:1)更大的cache块:强制缺失减少;容量和冲突缺失增加,缺失代价增加;2)更大的CACHE容量:缺失率降低;命中时间,功耗增加;3)更高的相联度:冲突缺失减少;命中时间增加,功耗增加;4)更多级CACHE:内存访问时间减少;5)读缺失优先级更高:缺失代价降低;6)缓存索引期间避免地址转换:减少命中时间;第三章指令级并行1.开发指令级并行的目标:最小化CPI(执行指令平均时钟周期数)流水线CPI =理想流水线CPI +结构冒险停顿+数据冒险停顿+控制冒险停顿2.Load指令的5个阶段或5级流水线的分法?5个阶段的具体内容?Load指令的5个阶段:Ifetch (取指)、Reg/Dec (取数和译码)、Exec (执行) 、Mem (读存储器) 和Wr(写寄存器)Ifetch (取指) : 从指令存储器取指令并计算PC+4(指令存储器、Addr)Reg/Dec (取数和译码) : 寄存器取数,同时对指令进行译码(寄存器堆读口、指令译码器) Exec (执行) : 计算内存单元地址(扩展器、ALU)Mem (读存储器) : 从数据存储器中(数据存储器)Wr(写寄存器): 将数据写到寄存器中(寄存器堆写口)3.用什么解决数据冒险?方法1:硬件阻塞(stall)方法2:软件插入“NOP”指令方法3:编译优化:调整指令顺序方法4:合理实现寄存器堆的读/写操作即前半时钟周期写,后半时钟周期读,若同一个时钟内前面指令写入的数据正好是后面指令所读数据,则不会发生数据冒险方法5:转发(Forwarding或Bypassing 旁路)技术,若相关数据是ALU结果,可通过转发解决;若相关数据是上条指令DM读出内容,不能通过转发解决,随后指令需被阻塞一个时钟或加NOP指令。
称为Load-use数据冒险!4.如何解决控制冒险?方法1:硬件上阻塞(stall)分支指令后三条指令的执行使后面三条指令清0或其操作信号清0,以插入三条NOP指令方法2:软件上插入三条“NOP”指令(以上两种方法的效率太低,需结合分支预测进行)方法3:分支预测(Predict)简单(静态)预测:总是预测条件不满足(not taken),即:继续执行分支指令的后续指令。
可加启发式规则:在特定情况下总是预测满足(taken),其他情况总是预测不满足。
如:循环顶(底)部分支总是预测为不满足(满足)。
能达65%-85%的预测准确率动态预测:根据程序执行的历史情况,进行动态预测调整,能达90%的预测准确率注:采用分支预测方式时,流水线控制必须确保错误预测指令的执行结果不能生效,而且要能从正确的分支地址处重新启动流水线工作方法4:延迟分支(Delayed branch)(通过编译程序优化指令顺序!)把分支指令前面与分支指令无关的指令调到分支指令后面执行,也称延迟转移5.动态预测基本方法采用一位预测位:总是按上次实际发生的情况来预测下次,其特点:1)1表示最近一次发生过转移(taken),0表示未发生(not taken)2)预测时,若为1,则预测下次taken,若为0,则预测下次not taken3)实际执行时,若预测错,则该位取反,否则,该位不变4)可用一个简单的预测状态图表示5)缺点:当连续两次的分支情况发生改变时,预测错误采用二位预测位1)用2位组合四种情况来表示预测和实际转移情况2)按照预测状态图进行预测和调整3)在连续两次分支发生不同时,只会有一次预测错误两位预测状态图基本思想:只有两次预测错误才改变预测方向00状态时预测发生(强转移),实际不发生时,转到状态01(弱转移),下次仍预测为发生,如果再次预测错误(实际不发生),才使下次预测调整为不发生11。
第四章数据级并行1.SIMD 并行的3种实现方法:向量体系结构、SIMD 扩展和图形处理单元(GPUs)向量体系结构的基本思想:读存储器中散布的数据集至“vector registers”;寄存器操作;分散结果存储至存储器;SIMD 扩展的基本思想:固定了操作中操作数的数目:向量体系结构采用向量长度寄存器;SIMD扩展没有复杂的寻址模式:步幅和集中-分散寻址模式;没有遮罩寄存器。
图形处理单元(GPUs)的基本思想:异构执行模型是CPU 为主机, GPU 为加速器;开发类C 的编程语言;统一所有的GPU并行为CUDA 线程;编程模型“SIMT”。
2.GPU 架构的3种方法各有什么异同点?相同点:NVIDIA GPU 架构与向量机类似,擅长数据级并行;集中-分散;遮罩寄存器;大的寄存器组。