收藏 分销(赏)

高等计算机系统结构.pptx

上传人:w****g 文档编号:8545649 上传时间:2025-02-17 格式:PPTX 页数:44 大小:197.85KB 下载积分:12 金币
下载 相关 举报
高等计算机系统结构.pptx_第1页
第1页 / 共44页
高等计算机系统结构.pptx_第2页
第2页 / 共44页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,高等计算机系统结构,第一章 高等计算机的核心技术,并行处理,第二章 加速比性能模型与可扩展性分析,第三章 互连与通信,第四章 划分与调度,第五章 并行存储器系统,第六章,Cache Coherence,第七章,Memory Consistency,第八章 指令级并行处理,第八章 指令级并行处理,8.1,指令级并行概述,8.1.1,指令级并行处理,8.1.2,减少每条指令执行的平均周期数,8.1.3,改进,CPI,的途径,8.2,多发射结构,8.3,指令级并行的编译技术,8.1,指令级并行概述,8.1.1,指令级并行处理,过去,25,年,微机性能差不多每年以,50%,的速度提高:,(,1,),由于电路速度的改进,占年增长率一半不到。,(,2,),8,位,16,位,32,位,64,位,,CISC,RISC,;,(,3,),片上,cache,,,FLP H/W,,图形加速,H/W,;,(,4,),采用流水技术,(,5,),电路的集成度也以每年,40%,的比例增长,10,年来,:,微处理器的周期从,100200ns,少于,4ns,,大约降低了,25,倍;,DRAM,的访问时间从,150 180ns,60 80ns,,大约,3,倍,需要用,cache,来弥补。,指令级并行处理,(,ILPP,,,Instruction Level Parallel Processing,)是实行低层机器操作的并行执行,如存、取、整数加和浮点乘等。,通常的并行处理是指各有一大段代码在不同的处理机上运行,有些问题要得到较好的加速效果,必须重写程序,工作量大,代价昂贵,但它们能直接在,ILP,机上运行。,因此,,ILP,与传统并行处理可互补。,8.1.2,减少每条指令执行的平均周期数,RISC,比,CISC,机器的,CPI,(,Cycles per Instruction,,,平均周期数,)要小。,CISC,一般用微码技术,一条指令往往要用好几个周期才能实现,复杂指令所需的周期数则更多,,CISC,机器,CPI,一般为,4-6,;,RISC,一般指令一个周期完成,所以,CPI=1,,但,LOAD,、,STORE,等指令要长些,所以,RISC,机器的,CPI,约大于,1,。,RISC,技术未来发展的方向是进一步减少,CPI,;,CISC,机器也在减少,CPI,;,一些新型的微处理器的,CPI,(不论是,RISC,还是,CISC,),都在逐渐趋向于,2,和,1,之间。,例,:,Intel,的,5MHz,的,80286,(,1986,),,CPI=5,10MHz,的,68010,(,1983,),,CPI=12,22MHz,的,68030,(,1988,),,CPI=5,SUN SPARC,(,1987,),,CPI=1-2,8.1.3,改进,CPI,的途径,给定的工作频率下,要进一步减小,CPI,,必须进一步提高,RISC,内部的并行性。,(,1,)哈佛结构,:即设计分开的指令,cache,和数据,cache,,可以并行工作。,(,2,)多端口的寄存器堆,。如果一个寄存器堆有两个源操作数端口和一个目的操作数端口,那么两个源操作数可以同时取出,还可以写入或取出另一条指令的目的操作数。,(,3,)流水线的级分得更细。,(,4,)编译优化技术。,充分利用硬件资源、优化分配寄存器。,(,5,)超标量(,super scalar,)结构。,即设置多个执行部件。,(,6,)超流水线(,superpipeline,)结构。,(,7,),VLIW,(,Very Long Instruction Word,),第八章 指令级并行处理,8.1,指令级并行概述,8.2,多发射结构,8.2.1,流水线结构,8.2.2,超标量机的典型结构,8.2.3 VLIW,机的结构框图,8.3,指令级并行的编译技术,8.2,多发射结构,单发射结构,:每个周期只发射一条指令;,多发射结构,:在流水线结构基础上,每个周期可以发射多条指令。比如:,超标量,超流水线,VLIW,数据流,8.2.1,流水线结构,1.,一般流水线结构,IPC,(,Instruction Per Cycle,),=1,,,但由于,数据相关,、,转移相关,和,资源相关,使得,IPC1,。,IF,ID,EX,WR,IF,ID,EX,WR,IF,ID,EX,WR,n,n+1,n+2,2.,超标量结构,主要特点,:,(1),配置多个处理部件,采用多条流水线并行处理;,(2),能同时对若干条指令进行译码,将可并行执行的指令送往不同的执行部件,从而达到每个周期启动多条指令的目的。,(3),在程序运行期间由硬件完成指令调度。,下图中,一个周期内同时发出三条指令,有多个执行部件,三条指令发到三个独立的执行部件去分别执行。,IF,ID,EX,WR,IF,ID,EX,WR,IF,ID,EX,WR,每拍启动,3,条指令,要求并行度,=3,3.,超流水线结构,下图中,一个流水段(一个周期)分成三个子段,每个子段取出的仍只有一条指令,但总体来看,一个周期内取出了三条指令,执行部件可以一套,每个部件在一个子段时间内完成。,IF,ID,EX,WR,IF,ID,EX,WR,IF,ID,EX,WR,每,1/3,个周期启动一条指令,要求并行度,=3,IF,ID,EX,WR,IF,ID,EX,WR,超标量和超流水线的比较,超标量,:工作部件多,晶体管数目也多,,每个部件的工作速度相对的可以低一些。以空间换取时间。,超流水线,:工作部件少,晶体管数目少了,每一个部件必须在一个子周期内执行,工作速度较高。以时间换取了空间。,大部分新一代的,RISC,都属于超标量结构,比如:,i860,,,i960,,,Motorola 88110,,,IBM Power 6000,,,SUN/TI,的,Super SPARC,。,MIPS,的,R4000,属于超流水线结构。,4.,超,流水线超标量,RISC,如,DEC,的,Alpha,和,Intel Pentium,。,IF,ID,EX,WR,每拍启动,9,条指令,要求并行度,=9,IF,ID,EX,WR,IF,ID,EX,WR,5.VLIW,(,超长指令字),1983,年,,Yale,大学,Fisher,教授首先提出。,一条长指令来实现多个操作的并行执行,以减少对存储器的访问,这种长指令往往达上百位,甚至上千位。,如下面的图。每拍启动一条长指令,执行,3,个操作,相当于,3,条指令,要求并行度为,3,。,IF,ID,EX,WR,每拍启动,1,条指令,要求并行度,=3,IF,ID,EX,WR,IF,ID,EX,WR,EX,EX,EX,EX,EX,EX,主要特点,:,单一的控制流。只有一个控制器,每个周期启动一条长指令。,超长指令字被分成多个控制字段,每个字段直接独立的控制每个功能部件。,含有大量的数据通路和功能部件,由于编译器在编译时间已经考虑可能出现的数据相关和资源相关,故控制硬件比较简单。,在编译阶段完成超长指令中多个可并行执行操作的调度(超长指令字的生成是由编译器完成)。,区分一条指令和一个操作:,一个操作是指一个计算单位,如加、取、转移等。这在顺序结构中就是一条指令。而一条,VLIW,指令是包含一组同时发出的操作。编译器的任务就是要确定哪些操作可以组合在一条指令中。组合在一条,VLIW,指令中的所有操作是同时开始执行的。,8.2.2,超标量的典型结构,主,存,D-cache,存储器操作部件,ALU,1,2,条指令并行,取出并同时译码,I-cache,2,指,令,调,度,转移控制部件,状态,记录部件,RF,寄存器,堆,指令的执行部件:,存储器操作部件:执行,Load,、,Store,指令,ALU,:整数运算,转移控制部件:执行转移指令,状态记录部件(调度部件):,进行流水动态调度。依靠硬件在程序运行过程中对可能出现的相关情况加以检测,从而保证流水线中的各个功能部件能最大限度的重叠工作。,它对流水线中的各个功能部件的工作状态、进入流水线中的各条指令的工作状态、它们所使用的源寄存器和目的寄存器情况等进行集中的统一记录和调度。,在译码阶段,状态记录部件根据所记录的状态决定是否将译码后的指令发送给有关功能部件进行处理。,状态记录部件主要检查:,该指令要使用的功能部件是否已被流水线中的其它指令占用(资源冲突);,该指令的源操作数寄存器是否为其它指令的目的寄存器,或者它所要写入的目的寄存器又正好是前面其它指令所要读出的操作数,或是要写入的目的寄存器。即检查是否存在,RAW,、,WAR,、,WAW,的数据相关。,RAW,(,Read After Write,):,指令,j,试图在指令,i,写入寄存器前就读出该寄存器的内容;,WAR,(,Write After Read,):,指令,j,试图在指令,i,读出寄存器前就写入该寄存器的内容;,WAW,(,Write After Write,):,指令,j,试图在指令,i,写入寄存器前就写入该寄存器的内容;,8.2.3 VLIW,机的结构框图,主,存,VLIW,中的操作字段:,RF,(寄存器堆),LD/ST1,LD/ST2,FADD,FMUL,LD/ST1,LD/ST2,FADD,FMUL,存,/,取,1,存,/,取,2,浮点加,浮点乘,例:,要执行以下赋值语句。,C=A+B,K=I+J,L=M-K,Q=C,K,假设,LOAD,/,STORE,,,FADD,一个周期完成,,FMUL,二个周期完成。,若按串行操作进行,则其所用的指令序列如下图所示。共需,14,个周期。,源代码,源代码,所需周期,C=A+B,LOAD A,LOAD B,C=A+B,STORE C,1,1,1,1,K=I+J,LOAD I,LOAD J,K=I+J,STORE K,1,1,1,1,L=M-K,LOAD M,L=M-K,STORE L,1,1,1,Q=C*K,Q=C*K,STORE Q,2,1,共需,14,个周期,压缩技术,表调度法:,LOAD A,LOAD B,LOAD I,LOAD J,C=A+B,LOAD M,STORE C,K=I+J,STORE K,L=M-K,Q=C*K,STORE L,STORE Q,只需要,6,个周期。,超标量结构、超流水线结构一般采用指令窗方法,把一段指令(长度为窗口的大小,例为,8,)取到窗口中,判断这段指令能否并行执行。,第八章 指令级并行处理,8.1,指令级并行概述,8.2,多发射结构,8.3,指令级并行的编译技术,8.3.1,软件流水方法,8.3.2,循环体展开,8.3,指令级并行的编译技术,8.3.1,软件流水方法,例,1,:在一台,2,发射处理机上执行下列程序。,DoI=1,,,N,A(I)=A(I)*B+C,End do,假定存储器访问,Read,(,读,),Write,(,写,),用一个周期。,每一个算术操作,Mul,、,Add,需二个周期,执行一次迭代需要,6,个周期。如下:,周期,指令,注释,1,READ,/,取,AI/,2,MUL,/,乘,B/,3,4,ADD,/,加,C/,5,6,WRITE,/,存,AI/,完成,N,次迭代需要,6N,个周期。,采用流水方法(做,4,次迭代情况)的情形如下:,周期,迭代,1,1,2,3,4,read,2,mul,3,read,4,mul,5,add,read,6,mul,7,add,read,8,write,mul,9,add,10,write,11,add,12,write,13,14,write,每次迭代通过流水线需要,8,个周期,但,4,次迭代只需要,14,个时钟周期。与非流水线执行相比,加速比可达到:,用流水线执行,N,次迭代需要,2N+6,个周期,加速比为:,8.3.2,循环体展开,例,1,:一个循环体,对存储器中的一个指定向量(双精度)加上一个标量值:,Loop,:,LDF0,0(R1)/M(R1)+0,F0,读向量元素,/,ADDD F4,F0,F2 /(F0)+(F2)F4/,SD0(R1),F4 /(F4)M(R1)+0,存向量元素,/,SUBR1,R1,#8 /(R1)-8R1,将指针减去,8,个字节,/,BNEZ R1,Loop /,若,(R1)0,则跳转,/,假设,FP ALU,使用另一个,FP ALU,指令操作结果需要等待,3,个周期,,STORE,指令欲使用由,FP ALU,指令产生的结果需要等待,2,个周期,,FP ALU,指令使用,LOAD,的结果等待,1,个周期。,则上面过程的实际执行情况如下:,Loop,:,LDF0,0(R1),STALL /,停顿,/,ADDD F4,F0,F2,STALL,STALL,SD0(R1),F4,SUBR1,R1,#8,BNEZ R1,Loop,STALL,执行一遍循环体需要,9,个时钟周期。,Loop,:,LDF0,0(R1),STALL,ADDD F4,F0,F2,SUBR1,R1,#8,BNEZ R1,Loop,SD8(R1),F4,对上述循环体进行调度,使其变成如下:,由于,SUB,和,SD,交换了先后顺序,因此,SD,指令中的,R1,的偏移量需由原来的,0,变为,8,。,周期,Loop,:,LDF0,0(R1),2,ADDD F4,F0,F2,3,SD0(R1),F4,1,LDF6,-8(R1),2,ADDD F8,F6,F2,3,SD-8(R1),F8,1,LDF10,-16(R1),2,ADDD F12,F10,F2,3,SD-16(R1),F1,1,将循环体展开,3,次后再进行调度:,周期,LDF14,-24(R1),2,ADDD F16,F14,F2,3,SD-24(R1),F16,1,SUBR1,R1,#32,1,BNEZ R1,Loop,2,循环展开,3,次,总计,27,个周期。对展开后的代码进行调度,如下:,Loop,:,LDF0,0(R1),LDF6,-8(R1),LDF10,-16(R1),LDF14,-24(R1),ADDD F4,F0,F2,ADDD F8,F6,F2,ADDD F12,F10,F2,ADDD F16,F14,F2,SD0(R1),F4,SD-8(R1),F8,SD-16(R1),F1,SUBR1,R1,#32,BNEZ R1,Loop,SD-24(R1),F16,调度后的代码每个循环只要,14,个周期即可。,循环体展开法通过增加源程序代码长度来获得较好的调度效果。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服