ch3-流水线-现在微处理机-中国科技大学_第1页
ch3-流水线-现在微处理机-中国科技大学_第2页
ch3-流水线-现在微处理机-中国科技大学_第3页
ch3-流水线-现在微处理机-中国科技大学_第4页
ch3-流水线-现在微处理机-中国科技大学_第5页
已阅读5页,还剩242页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

指令系统-内容提要指令集结构概述指令集结构的分类 寻址技术设计

指令集结构的功能设计 操作数的类型、表示和大小指令集格式的设计DLX指令集MIPS指令集

操作数寻址方式寄存器寻址 AddR4,R3立即数寻址 AddR4,#3直接寻址 AddR1,(1001)寄存器间接寻址 AddR4,(R1)偏移寻址 AddR4,100(R1)索引寻址 AddR3,(R1+R2)存储器间接寻址 AddR1,@(R3)自增寻址 AddR1,(R2)+自减寻址 AddR1,-(R2)缩放寻址 AddR1,100(R2)[R3]复习DLX指令集结构:指令格式LWR1,30(R2)DLX指令集结构:指令格式ADDR1,R2,R3DLX指令集结构:指令格式JnameDLX指令集结构:操作类型Regs[R10]16..3116(Mem[Regs[R8]]0)8##Mem[Regs[R8]]0000000000000000000000000000011110000101R81000010111111111111111111000010100000000000000001111111110000101R10DLX指令集结构:访存指令指令实例指令名称含义LWR1,30(R2)载入整型字Regs[R1]←32Mem[30+Regs[R2]]LWR1,1000(R0)载入整型字Regs[R1]←32Mem[1000+0]LBR1,40(R3)载入字节Regs[R1]←32(Mem[40+Regs[R3]]0)24##Mem[40+Regs[R3]]LBUR1,40(R3)载入无符号字节Regs[R1]←32024##Mem[40+Regs[R3]]LHR1,40(R3)载入整型半字Regs[R1]←32(Mem[40+Regs[R3]]0)16##Mem[40+Regs[R3]]##Mem[41+Regs[R3]]LFF0,50(R3)载入单精度浮点Regs[F0]←32Mem[50+Regs[R3]]LDF0,50(R2)载入双精度浮点Regs[F0]##Regs[F1]←64Mem[50+Regs[R2]]SW500(R4),R3储存整型字Mem[500+Regs[R4]]←32Regs[R3]SF40(R3),F0储存单精度浮点Mem[40+Regs[R3]]←32Regs[F0]SD40(R3),F0储存双精度浮点Mem[40+Regs[R3]]←32Regs[F0]Mem[44+Regs[R3]]←32Regs[F1]SH502(R2),R31储存整型半字Mem[502+Regs[R2]]←16Regs[R31]16..31SB41(R3),R2储存整型字节Mem[41+Regs[R3]]←8Regs[R2]24..31DLX指令集结构:算数逻辑指令指令实例指令名称含义AddR1,R2,R3加Regs[R1]←Regs[R2]+Regs[R3]ADDIR1,R2,#3和立即数相加Regs[R1]←Regs[R2]+3LHIR1,#42载入高位立即数Regs[R1]←42##016SLLIR1,R2,#5逻辑左移立即数形式Regs[R1]←Regs[R2]<<5SLTR1,R2,R3设置小于if(Regs[R2]<Regs[R3])Regs[R1]←1elseRegs[R1]←0DLX指令集结构:控制指令指令实例指令名称含义Jname跳转PC←name+PC+4;-225≤name≤225JALname跳转并链接Regs[R31]←PC+4;PC←name+PC+4;-225≤name≤225JRR3寄存器型跳转PC←Regs[R3];JALRR2寄存器型跳转并链接Regs[R31]←PC+4;PC←Regs[R2];BEQZR4,name“等于0”分支if(Regs[R4]==0)PC←name+PC+4;-215≤name≤215BNEZR4,name“不等于0”分支if(Regs[R4]!=0)PC←name+PC+4;-215≤name≤215练习-写出下面函数的汇编代码cswap(intv[],intk,intl) k->$5{ l->$6

inttemp; v[0]->$4

if(v[k]!=v[l]) { temp=v[k];

v[k]=v[l];

v[l]=temp; }}1.计算地址V[K],V[L]的地址2.获得V[K]和V[L]3.比较V[K]和V[L]4.交换V[K]和V[L]5.备用指令add$1,$2,$3sub$1,$2,$3LW$1,30($2)SW$3,500($4)multi$2,$5,4JRXXXbeq$s4,$s5,Lab1

k->$5l->$6v[0]->$4cswap(intv[],intk,intl) {

inttemp;

if(v[k]!=v[l]) { temp=v[k];

v[k]=v[l];

v[l]=temp; }}mult

$2,$5,4mult

$3,$6,4add$7,$2,$4add$8,$3,$4LW$9,($7)LW$10,($8)BEQ$9,$10,LabelSW$9,($8)SW$10,($7)Label:JR$31multR2,R5,4multR3,R6,4addR7,R2,R4addR8,R3,R4LWR9,(R7)LWR10,(R8)SubR11,R9,R10BEQZR11,LabelSW(R8),R9SW (R7),R10Label:JRR31MIPSDLX程序编译的过程

GCCEmbeddedSystemLabFall2012程序编译的过程很多人认为GCC只是一个C编译器,

其实GCC=GNUCompilerCollection目前,GCC可以支持多种高级语言,如C、C++ADAObjectCJAVAFortranPASCALGCC下的工具cpp—预处理器

GNUC编译器在编译前自动使用cpp对用户程序进行预处理gcc—符合ISO等标准的C编译器g++—基本符合ISO标准的C++编译器gcj—GCC的java前端gnat—GCC的GNUADA95前端GNUTools—gccgcc是一个强大的工具集合,它包含了预处理器、编译器、汇编器、链接器等组件。它会在需要的时候调用其他组件。

输入文件的类型和传递给gcc的参数决定了gcc调用具体的哪些组件。对于开发者,它提供的足够多的参数,可以让开发者全面控制代码的生成,这对嵌入式系统级的软件开发非常重要

gcc--helpLinuxgcc使用举例(1)源程序gcc使用举例(2)编译和运行编译运行gcc的编译过程一般情况下,c程序的编译过程为1、预处理2、编译成汇编代码3、汇编成目标代码4、链接1、预处理预处理:使用-E参数

输出文件的后缀为“.cpp”

gcc–E–ogcctest.cpp

gcctest.c使用wc命令比较预处理后的文件与源文件,可以看到两个文件的差异行数单词数字节数预处理预处理文件汇编代码

1)使用-x参数说明根据指定的步骤进行工作,cpp-output指明从预处理得到的文件开始编译

2)使用-S说明生成汇编代码后停止工作gcc-xcpp-output-S-ogcctest.s

gcctest.cpp也可以直接编译到汇编代码

gcc-Sgcctest.c2、编译成汇编代码预处理文件汇编代码3、编译成目标代码汇编代码目标代码

gcc–xassembler–cgcctest.s直接编译成目标代码

gcc–cgcctest.c使用汇编器生成目标代码as–ogcctest.o

gcctest.s汇编代码目标代码直接编译成目标代码使用汇编器testsse.oUltraEditObjdump4、编译成执行代码目标代码执行代码

gcc–ogcctest

gcctest.o直接生成执行代码

gcc–ogcctest

gcctest.c目标代码执行代码直接生成执行代码testsse.oV.S.testssegcc的高级选项-Wall:打开所有的警告信息根据警告信息检查源程序Main函数的返回值为int在函数的末尾应当返回一个值修改源程序优化编译优化编译选项有:-O0

缺省情况,不优化-O1-O2-O3等等不同程度的优化gcc的优化编译举例(1)

考虑如下的源代码不同的优化编译选项gcc的优化编译举例(2)

使用time命令统计程序的运行GNUtoolsGNUtools和其他一些优秀的开源软件可以完全覆盖上述类型的软件开发工具。为了更好的开发嵌入式系统,需要熟悉如下一些软件GCCBinutils—辅助GCC的主要软件Gdbmakecvs二、GNUbinutilsbinutils是一组二进制工具程序集,是辅助GCC的主要软件,它主要包括addr2line

把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。ar

建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。as

是GNU汇编器,主要用来编译GNUC编译器gcc输出的汇编文件,他将汇编代码转换成二进制代码,并存放到一个object文件中,该目标文件将由连接器ld连接C++filt解码C++符号名,连接器使用它来过滤C++和Java符号,防止重载函数冲突。gprof

显示程序调用段的各种数据。ld

是连接器,它把一些目标和归档文件结合在一起,重定位数据,并链接符号引用,最终形成一个可执行文件。通常,建立一个新编译程序的最后一步就是调用ld。nm

列出目标文件中的符号。objcopy把一种目标文件中的内容复制到另一种类型的目标文件中.objdump

显示一个或者更多目标文件的信息。使用选项来控制其显示的信息。它所显示的信息通常只有编写编译工具的人才感兴趣。ranlib

产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。readelf

显示elf格式可执行文件的信息。size

列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。strings

打印某个文件的可打印字符串,这些字符串最少4个字符长,也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其它类型的文件它打印整个文件的可打印字符,这个程序对于了解非文本文件的内容很有帮助。strip

丢弃目标文件中的全部或者特定符号。

libiberty

包含许多GNU程序都会用到的函数,这些程序有:getopt,obstack,strerror,strtol

和strtoul.libbfd

二进制文件描述库.libopcodes

用来处理opcodes的库,在生成一些应用程序的时候也会用到它,比如objdump.Opcodes是文本格式可读的处理器操作指令.三、其他GNU工具Gdb—调试器GNUmake--软件工程工具diff,patch--补丁工具CVS--版本控制系统参考《Linux操作系统分析》课程中的GNUToolsCh3流水线技术EmbeddedSystemLabFall20123.1流水线基本概念3.2DLX基本流水线3.3流水线中的相关3.4实例分析:MIPSR4000本章内容流水线基本概念流水线分类DLX的一种简单实现第一节3.1.1流水线基本概念1.产品生产流水线(1)一个问题

假设某产品的生产需要4道工序,该产品生产车间以前只有1个工人,1套生产该产品的机器。该工人工作8小时,可以生产120件(即每4分钟生产1件)。 要将该产品日产量提高到480件,如何能实现目标?

(2)两种解决方案

方案一:增加3名工人、3套设备。 方案二:产品生产采用流水线方式,分为4道工序;增加3名工人,每人负责一道工序。(3)两种方案的工作过程对比

两种方案中,单件产品的生产时间均不变。 但在稳定情况下, 方案一:每4分钟,4件产品同时进入流水线,4件成品同时离开流水线,需要增加3套设备。 方案二:每分钟,1件产品进入流水线,1件成品离开流水线,不需要增加任何设备。(4)方案二的主要特点 每件产品还是要经过4道工序处理,单件产品的加工时间并没有改变,但它将不同产品的不同步骤重叠在一起,使得每件产品的产出时间从表面上看是从原来的4分钟缩减到1分钟,提高了产品的产出率。2.洗衣店流水线——洗衣店XA,B,C,D

towash,dry,andfold;Washertakes30minutesDryertakes30minutesFoldertakes30minutesABCD(1)串行工作的洗衣店洗衣店用6小时完成了4个任务(洗衣店吞吐率0.67t/h);4个同学各等待了1.5小时;Washer使用2小时(0.33);Dryer使用2小时(0.33);Folder使用2小时(0.33);ABCD3030303030303030303030306PM7891011Midnight任务顺序(2)流水工作的洗衣店X洗衣店用3小时完成了4个任务(1.33t/h);4个同学各等待了1.5小时;Washer使用2小时(0.66);Dryer使用2小时(0.66);Folder使用2小时(0.66);ABCD6PM78910Midnight任务顺序3030303030302.洗衣店流水线——洗衣店YA,B,C,D

towash,dry,andfold;Washertakes30minutesDryertakes40minutesFoldertakes20minutesABCD(3)串行工作的洗衣店Y洗衣店用6小时完成了4个任务(0.67t/h);4个同学各等待了1.5小时;Washer使用2小时(0.33);Dryer使用2小时40分(0.44);Folder使用1小时20分(0.22);ABCD3040203040203040203040206PM7891011Midnight任务顺序(4)流水工作的洗衣店Y洗衣店用3.5小时完成了4个任务(1.14t/h);4个同学各等待了1.5小时;Washer使用2小时(0.57);Dryer使用2小时40分(0.76);Folder使用1小时20分(0.38);ABCD6PM7891011Midnight任务顺序304040404020流水线不能缩短单个任务的响应时间,但可以提高吞吐率;流水线速度限制于最慢流水站的速度;流水线中多个任务是并行处理的;最大加速比=流水站数流水站速度不匹配流水线“填充”和“排空”时间304040404020(5)洗衣店的结论20世纪最大的发明之一流水线流水线之前,汽车工业完全是手工作坊型的.每装配一辆汽车要728个人工小时,当时汽车的年产量大约12辆.这一速度远不能满足巨大的消费市场的需求.所以使得汽车成为富人的象征. 1913年,福特提出在汽车组装中的流水线,汽车底盘在传送带上前行.前行中,逐步装上发动机,操控系统,车厢,方向盘,仪表,车灯,车窗玻璃、车轮,一辆完整的车组装成了.第一条流水线使每辆T型汽车的组装时间由原来的12小时28分钟缩短至10秒钟,生产效率提高了4488倍!科学的管理科学管理之父弗雷德里克·温斯洛·泰勒搬运生铁块试验&铁锹试验?3.计算机中的流水线指令流水线功能部件流水线(浮点)Godson3~9Pentium4~31 ARM7~3 MIPS/ARM9/PowerPC405~54.流水技术

将一重复的时序过程分解为若干子过程,每个子过程都可有效地在其专用功能段上与其它子过程同时执行,这种技术称为流水技术。5.时-空图

从时间和空间两个方面描述流水线的工作过程,横坐标表示时间,纵坐标表示各流水段。6.流水线的特点

流水过程由多个相关的子过程组成,这些子过程称为流水线的“级”或“段”。段的数目称为流水线的“深度”。 每个子过程由专用的功能段实现,各功能段的时间应基本相等,通常为1个时钟周期(1拍)。 流水线需要经过一定的填充时间才能稳定。 流水技术适合于大量重复的时序过程。1.单功能流水线和多功能流水线按流水线所完成的功能分类单功能流水线,是指只能完成一种固定功能的流水线。

多功能流水线,是指各段可以进行不同的连接,从而完成不同的功能。 例如:TIASC的多功能流水线3.1.2流水线的分类2.静态流水线和动态流水线按同一时间内流水段的连接方式划分静态流水线,是指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。 动态流水线,是指在同一时间内,当某些段正在实现某种运算时,另一些段却在实现另一种运算。

动态流水线

动态流水线一定是多功能流水线3.部件级、处理机级及处理机间流水线

按流水的级别划分部件级流水线,又叫运算操作流水线,是把处理机的算术逻辑部件分段,使得各种数据类型的操作能够进行流水。处理机级流水线,又叫指令流水线,是把解释指令的过程按照流水方式处理。处理机间流水线,又叫宏流水线,是由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。

4.标量流水处理机和向量流水处理机按照数据表示来进行分类标量流水处理机,是指处理机不具有向量数据表示,仅对标量数据进行流水处理。 例如IBM360/91,Amdahl470V/6等

向量流水处理机,是指处理机具有向量数据表示,并通过向量指令对向量的各元素进行处理。 例如TIASC、CRAY-1等5.线性流水线和非线性流水线按照是否有反馈回路来进行分类线性流水线是指流水线的各段串行连接,没有反馈回路。非线性流水线是指流水线中除有串行连接的通路外,还有反馈回路。 存在流水线调度问题。6.顺序流动流水线和乱序流动流水线按照输出端任务流出顺序与输入端任务流入顺序是否相同划分乱序流动流水线也可称为无序流水线、错序流水线复习程序的编译->执行过程1、预处理2、编译成汇编代码3、汇编成目标代码4、链接深入理解计算机系统-第一章计算机系统漫游Makefile依赖关系一个“复杂”的例子Makefile定义多个文件在GCC参数较多(灵活)时、文件较多时极为有效源代码优化不同的优化编译选项自动优化策略考虑如下源代码iajia如何计算哪个更好?一层循环时,共100W条指令50Waddl+25Wcmp+25WJLE二层循环时内层循环共100W条指令50Waddl+25Wcmp+25WJLE外层循环共2500条指令addl+cmp+JLE+movl+JMP与指令CPI有关复习程序的编译->执行过程1、预处理2、编译成汇编代码3、汇编成目标代码4、链接深入理解计算机系统-第一章计算机系统漫游Makefile定义多个文件复习DLX指令集结构:指令格式LWR1,30(R2)DLX指令集结构:指令格式ADDR1,R2,R3DLX指令集结构:指令格式JnameDLX的数据通路这是一种非流水方式将指令执行划分为5个阶段取指令周期指令译码/读寄存器周期执行/有效地址计算周期存储器访问/分支完成周期写回周期3.2.1DLX的一种简单实现1.取指令周期(IR)

操作为: 根据PC值从存储器中取出指令,并将指令送入指令寄存器IR;PC值增加4,指向顺序的下一条指令,并将下一条指令的地址放入临时寄存器NPC中。

IR←Mem[PC] NPC←PC+4图示2.指令译码/读寄存器周期(ID)

操作为: 进行指令译码,读IR寄存器(指令寄存器),按照相应寄存器号读寄存器文件,并将读出结果放入两个临时寄存器A和B中。同时对IR寄存器中内容的低16位进行符号扩展,然后将符号扩展之后的32位立即值保存在临时寄存器Imm中。

A←Regs[IR6..10] B←Regs[IR11..15] Imm←((IR16)16##IR16..31) DLX的固定字段译码技术:图示3.执行/有效地址计算周期(EX)

存储器访问:

LWR1,100(R2)

ALUoutput←A+Imm

SW100(R2),R1

寄存器-寄存器ALU:

ADDR1,R2,R3

ALUoutput←AopB

寄存器-立即值ALU:

ADDIR1,R2,#3

ALUoutput←AopImm

分支操作: BEQZR1,#800

ALUoutput←NPC+Imm

Cond←(Aop0)4.访存/分支操作完成周期(MEM)

操作为:访存操作:Load: LMD←LMDMEM[ALUoutput]Store: Mem[ALUoutput]←B分支操作: if(Cond)

PC←ALUoutput else PC←NPC5.写回周期(WB)

操作为:寄存器-寄存器型ALU指令: Reg[IR16..20]←ALUoutput寄存器-立即值型ALU指令: Reg[IR11..15]←ALUoutputLoad指令:

Reg[IR11..15]←LMD 6.性能分析在该数据通路上,分支指令需要4个时钟周期,其它指令需要5个时钟周期,假设分支指令占总指令数的12%,问CPI=?CPI=4×12%+5×(1-12%)=4.88结论:就性能和硬件开销而言,上述实现不是一种 优化实现!7.改进方法在Mem周期完成ALU指令 假设ALU指令数占指令总数的44%,则在时钟周期时间不变的同时,CPI可以降低至4.4如要进一步降低CPI,可能会增加时钟周期时间 采用单周期实现,可以将CPI降低为1,但时钟周期时间却会增加为原来的5倍流水技术第二节基本DLX流水线和性能分析基本DLX流水线的操作基于DLX的性能分析1.一种简单的DLX流水线

将DLX中的数据通路流水化,使得数据通路中的每一个周期就成为流水线的一段每个时钟周期启动一条指令

——得到了一条简单的DLX流水线。

简单DLX流水线的流水过程:时-空图按时间错开的数据通路3.2.2基本的DLX流水线3.实现流水技术应解决的一些问题 (1)应保证流水线各段不会在同一时钟周期内使用相同的寄存器通路资源。例如,不能要求一个ALU既做有效地址计算,又做减法操作IF与Mem两个阶段都要访问存储器,怎样避免访存冲突?ID和WB两个阶段都要访问寄存器,是否存在冲突?怎样避免?

(2)PC计算问题 为了能够在每个时钟周期启动一条新的指令,流水线必须在IF段获得下一条指令的地址,并将其保存在PC中。 但是,分支指令会改变PC的值,而且只有在Mem段结束时,这个新值才会被写入PC,出现矛盾。

解决方法:

改变数据通路,在IF段完成PC计算,则需要分支指令计算地址操作已经完成

(3)合理划分流水段,每段内的操作都必须在一个时钟周期内完成。 (4)流水线寄存器设计为防止寄存器中的值在为流水线中某条指令所用时被流水线中其它的指令所重写,可在流水线各段之间设置流水线寄存器文件,也称锁存器。流水线寄存器文件的命名段A与B之间的流水线寄存器文件称为A/B流水线寄存器的作用流水线寄存器文件的构成3.DLX流水线的操作 在任一时刻,流水中的指令仅在流水线中的某一段内执行操作。

DLX流水线中每一段的操作4.DLX流水线中多路选择器的控制

主要是确定如何控制四个多路选择器:IF段的MUX由EX/MEM.Cond域的值控制EX段ALU输入端的两个MUX由ID/EX.IR所指出的指令类型控制WB段的MUX由当前指令类型(Load/ALU)MEM/WB.IR控制

三项性能指标:吞吐率、加速比和效率1.吞吐率 是衡量流水线速度的重要指标吞吐率是指单位时间内流水线所完成的任务数或输出结果的数量。最大吞吐率TPmax是指流水线在达到稳定状态后所得到的吞吐率。设流水线由m段组成,完成n个任务的吞吐率称为实际吞吐率,记作TP。3.2.2流水线性能分析(1)最大吞吐率假设流水线各段的时间相等,均为△t0,则:TPmax=1/△t0假设流水线各段时间不等,第i段时间为△ti

,则:TPmax=1/max{△ti}最大吞吐率取决于流水线中最慢一段所需的时间,该段成为流水线的瓶颈消除瓶颈的方法细分瓶颈段重复设置瓶颈段 (时空图)(2)实际吞吐率若各段时间相等(假设均为△t0),则完成时间T流水

=m△t0+(n-1)△t0

(说明)时空图TP=───=──────────T流水nm·△t0+(n-1)△t0n(1+)△t0

=────────=─────m-11TPmaxn1+nm-1实际吞吐率若各段时间不等(假设第i段为△ti),则完成时间

时空图T=∑△ti+(n-1)△tj

这里,△tj=max{△ti

}i=1mTP=──────────∑△ti+(n-1)△tjmi=1n实际吞吐率2.加速比加速比是指流水线速度与等功能的非流水线速度之比。根据定义可知,加速比S=T非流水/T流水若流水线为m段,每段时间均为△t0,则T非流水

=nm△t0,T流水

=m△t0

+(n-1)△t0 S=

──────

=───────mnm+n-1mn1+

m-13.效率效率指流水线的设备利用率。由于流水线有通过时间和排空时间,所以流水线的各段并非一直满负荷工作,E<1若各段时间相等,则各段效率也相等 即e1=e2=e3=…=n△t0/T流水(解释)整个流水线效率E

=───=──────=─────n△t0T流水nm+n-11n1+

m-1当n>>m时,E≈13.效率从时-空图上看,效率就是n个任务所占的时空区与m个段总的时空区之比E=(Σei)/m=Σ(Tei/T流水)/m=ΣTei/(T流水×m)根据这个定义,可以计算流水线各段时间不等时的流水线效率

n个任务占用的时空区

E=━━━━━━━━━━━

m个段总的时空区4.吞吐率、加速比和效率的关系

TP=n/T流水 S=T非流水/T流水最大加速比mE=n△t0/T流水=mn△t0/(T流水m)=S/m

效率是实际加速比S与最大加速比m之比。E=n△t0/T流水=(n/T流水)·△t0=TP△t0

当△t0不变时,流水线的效率与吞吐率呈正比。为提高效率而采取的措施,也有助于提高吞吐率。例

在静态流水线上计算,问吞吐率、加速比、效率各是多少?(m=4)解: (1)确定适合流水处理的计算过程

(2)画时-空图

(3)性能计算 吞吐率TP=7/20·△t0

加速比S=34·△t0/20·△t0=1.7

效率E=(4×4+3×6)/(8×20)=0.215.流水线性能分析实例

上述方案性能不高!静态多功能流水线在对某种功能进行处理时,总有某些段处于空闲状态功能切换增加了前一种功能的排空时间和后一种功能的通过时间需要把输出回传到输入(相关) 能否通过动态流水线改进其性能?举例I举例II 这样行不行?

正确方案例3.3在DLX的非流水实现和基本流水线中,5个功能单元的执行时间:10/8/10/10/7ns。流水线额外开销为1ns,求相对于非流水指令实现而言,基本DLX流水线的最大加速比是多少?解: T非流水

=10+8+10+10+7=45ns T流水

=10+1=11ns

加速比S=45/11≈4.16.有关流水线性能的若干问题流水线并不能减少(而且一般是增加)单条指令的执行时间,但能够提高吞吐率增加流水线的深度可以提高流水线性能指令之间存在的相关,限制了流水线的性能1.什么是相关?流水线中的相关是指相邻或相近的两条指令因存在某种关联,后一条指令不能在既定的时钟周期开始执行。消除相关的基本方法——暂停暂停流水线中某条指令及其后面所有指令的执行,该指令之前的所有指令继续执行。3.3流水线中的相关2.三种不同类型的相关结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突时将产生“结构相关”。数据相关:因一条指令需要用到前面指令的结果,而无法与产生结果的指令重叠执行时,就发生了数据相关。控制相关:当流水线遇到分支指令和其它会改变PC值的指令时就发生控制相关。导致结构相关的常见原因:功能部件没有充分流水重复设置的资源数量不足实例:当数据和指令存在同一存储器中时,访存指令会引起存储器访问冲突。解决方法:I.插入暂停周期(时空图)II.将指令存储器和数据存储器分离3.3.1结构相关1.数据相关简介

实例: ADD R1,R2,R3 SUB R4,R1,R5 AND R6,R1,R7 OR R8,R1,R9 XOR R10,R1,R11

产生原因:当指令在流水线中重叠执行时,流水线有可能改变指令读/写操作数的顺序,使之不同于它们在非流水实现时的顺序,这将导致数据相关。3.3.2数据相关2.数据相关的分类

两条指令i和j,都会访问同一寄存器R,假设i先进入流水线,则它们对R有四种不同的访问顺序:

(1)写后读(RAW)——i写j读如果j在i完成写之前从R中读出数据,将得到错误的结果!最常见的数据相关,严重制约了CPU的性能,是程序最重要的特征之一!2.数据相关的分类

(2)写后写(WAW)——i写j写如果j在i之前完成写操作,R中将保存错误的结果!

DLX流水线不会出现这种相关!当流水线中有多个段可以写回,而且当流水线暂停某条指令的执行时,其后的指令可以继续前进时,可能引起这种类型的相关。

举例2.数据相关的分类

(3)读后写(WAR)——i读j写如果j先将数据写入R,i将读出错误的结果!

DLX流水线不会出现这种类型的相关!当有些指令在流水段后半部分读源操作数,另一些指令在流水线前半部分写结果,可能引起这种类型的相关。

(4)读后读(RAR)——i读j读不引起数据相关!小结两条指令i和j3.通过定向技术减少数据相关带来的暂停

定向(forwarding),也称为旁路/直通(bypassing)

工作过程 主要思路:将计算结果从其产生的地方直接送到真正需要它的地方,就可以避免暂停。寄存器文件EX/MEM中的ALU运算结果总是回送到ALU的输入寄存器寄存器文件MEM/WB中的ALU运算结果总是回送到ALU的输入寄存器从定向通路得到输入数据的ALU操作不必从源寄存器中读取操作数4.需要暂停的数据相关并非所有数据相关都可以通过定向技术解决。例: LW R1,0(R2)SUB R4,R1,R5AND R6,R1,R7OR R8,R1,R9增加流水线“流水线互锁”部件,当互锁硬件发现这种相关后,暂停流水线,直到相关消除。这种情况下,暂停的时钟周期数称为“载入延迟”。

例1

5.DLX流水线中数据相关的检测检测数据相关ID段可以检测所有数据相关在使用一个操作数的时钟周期的开始(EX和MEM段的开始)检测相关,并确定必需的定向流水线相关硬件可以检测到的各种相关情况(尽早检测相关、指导决策)例:Load互锁的检测与实现在ID段检测是否需要启动Load互锁,必须进行三种比较对DLX流水线控制的实现5.对DLX流水线控制的实现定向逻辑的实现所有的定向都是从ALU/DM的输出到ALU、DM或0检测单元的输入 (图示)形成了一个旁路网络6.对数据相关的编译调度方法流水线中常常会遇到多种类型的暂停 例如,计算表达式A=B+C时会出现暂停编译器可以通过重新排列代码的顺序来消除这种暂停,这种技术就是“流水线调度”或“指令调度”例请为下列表达式生成没有暂停的DLX指令序列

a=b–c;

d=e–f;

假设载入延迟为1个时钟周期。题解1.分支指令的实现一旦分支转移成功,正确的地址要在Mem段的末尾才会被写入PC一旦ID段检测到分支指令,就暂停执行其后的指令,直到分支指令达到Mem段,确定新的PC为止分支转移成功将导致DLX流水线暂停3个周期3.3.3控制相关2.减少分支开销的途径两个基本途径:在流水线中尽早判断分支转移是否成功转移成功时,尽早计算出转移目标地址经改进,DLX流水线可以将分支开销减少1拍将“=0?”测试提前到ID段在ID段增加一个加法器,计算分支目标地址表列出了改进后流水线的分支操作再改进,DLX流水线可以将分支开销再减少1拍将分支判断结果和目标地址提前到ID/EX站前3.程序中分支指令的行为特点

各种能改变PC值的指令的执行频度条件分支:整数程序:14-15%浮点程序:3-12%

其中,向前分支与向后分支的比:3:1无条件分支:≤4%(绝大多数)4.减少流水线分支损失的方法(1)冻结或排空流水线思路:在流水线中停住或删除分支后的指令,直到知道转移目标地址优点:简单(2)预测分支转移失败思路:流水线继续照常流动,如果分支转移成功,将分支指令后的指令转换为空操作,并从分支目标处开始取指令执行;否则照常执行DLX流水线的处理过程4.减少流水线分支损失的方法(3)预测分支转移成功思路:始终假设分支成功,直接从分支目标处取指令执行对DLX流水线没有任何好处!(4)延迟分支(delayedbranch)思路:分支开销为n的分支指令后紧跟有n个延迟槽,流水线遇到分支指令时,按正常方式处理,顺带执行延迟槽中的指令,从而减少分支开销。

延迟分支及指令的执行顺序4.减少流水线分支损失的方法具有一个分支延迟槽的DLX流水线的执行过程什么样的指令能否放入分支延迟槽?三种调度方法:从前调度;从目标处调度;从失败处调度三种方法的要求与效果,存在限制因素编译器预测分支是否成功的能力放入延迟槽中的指令5.各种分支处理方法的性能(1)假设理想CPI=1,则加速比S=D/(1+C)=D/(1+f×p分支)

这里,D为流水线的深度,p分支为分支开销,C为分支引起的流水线暂停时钟周期数(每条指令的平均值),f为分支的出现频度。(2)表3.7列出了流水线中各种处理方法的开销公司的领导者脚踩两只船,既无后顾之忧,便打算放手一搏。……整个公司都像没头苍蝇一样到处乱撞。先是倒卖电子表、旱冰鞋,还有运动裤衩和电冰箱,然后又筹划着倒卖彩色电视机。那时候彩色电视机是紧俏商品,人人想要。国家规定了出厂价格,可是你若拿到市场上去,就是给每台加上1000元,也能转瞬卖出。所以,当他们知道江西省妇联的一个女人手里有大批彩电的时候,都相信赚钱的机会终于到来。20世纪80年代中期商业的信誉已经出了问题,有个挺流行的说法就是“骗子比彩电还多”,柳传志知道这是夸张之辞,但多留一个心眼总是没错,于是嘱咐属下一定要亲眼看到电视才能汇款。那一天手下人兴致勃勃地告诉他,说自己亲眼见到大批彩电,一点不假。却不料他们还是遇到了骗子:彩电的确有,只等他们的钱汇过去,立即无影无踪。--凌志军《联想风云》

1985年12月,也即公司成立一年之后,他还一一历数公司一年来的业绩 —KT8920大型计算机。本由计算所单独承担,计算所将其中存储器、扩存、应用软件的部分转交公司,又以公司名义对外签订25个合同,获得利润60万元。

—中国科学院购买500台IBM的计算机,把其中验收、维修和培训的环节交给公司,公司得以收取服务费70万元。

—为IBM北京中心代理若干项目,获毛利7万美元。

—最后也是最重要的一件事,副研究员倪光南兼任公司总工程师,并把计算所的研究成果“汉字系统”带到公司。BeforeComputerwasBornIBM于1911年6月15日在宾厄姆顿西几英里处的纽约恩迪科特作为CTR公司注册AT&T1877HP1939Lenovo1985DELL1987公司合并成CTR制造各种产品,包括员工计时系统、磅秤、自动切肉机,而且最重要的是发展计算机、穿孔卡片设备.一段时间CTR集中精力专做穿孔卡片,不再参与其他活动.第二世界大战期间,IBM生产了M1卡宾枪和勃朗宁自动步枪

在曼哈顿计划中发展原子弹头广泛使用IBM穿孔卡片机做计算

IBMCPU:PowerPCPowerOS:OS/2DB:DB/2Software:Lotus

WebSphereIODRationalTivoli硬盘技术,扫描隧道显微镜(STM),铜布线技术,原子蚀刻技术PWC定向路径确定数据相关根据指令序列关系获得段间寄存器文件确定源和目标寄存器确定定向路径需要掌握每个指令在每个阶段的输入和输出寄存器控制相关冻结或排空流水线(2)预测分支转移失败(3)预测分支转移成功(4)延迟分支(delayedbranch) 从前调度、从目标处调度、从失败处调度1.指令集:64位MIPS指令集(实际的64-bit机器)2.MIPSR4000流水线结构较深的流水线(superpipelining)访存操作流水化主频100MHz~200MHz主要应用领域Nintendo(Xbox,WII,PS3)HighendColorlaserPrintersNetworkRouters(Cisco)3.4.1MIPSR4000的整型流水线MIPSR4000的8级整数流水线IF–取指阶段的前半部分;选择PC值,初始化指令cache的访问IS–取指阶段的后半部分,主要完成访问指令cache的操作RF–指令译码,寄存器读取,相关检测以及指令cache命中检测EX–执行,包括:计算有效地址,进行ALU操作,计算分支目标地址和检测分支条件MIPSR4000的8级整数流水线DF–取数据,访问数据cache的前半部分DS–访问数据cache的后半部分TC–tag检测,确定数据cache是否命中WB–Load操作和R-R操作的结果写回4.指令序列在流水线中的重叠执行过程定向+插入暂停周期5.指令序列在流水线中的执行时空图6.R4000流水线的定向路径远多于DLX流水线

ALU输入端的定向源有4个:EX/DF,DF/DS,DS/TC,TC/WB7.分支处理在EX段完成分支条件的计算,基本分支延迟为3个时钟周期分支处理策略单周期延迟分支从失败处调度时-空图包括浮点除法器、浮点乘法器和浮点加法器各1个分为8段(表3.9)双精度浮点操作指令延迟、初始化间隔和流水段的使用情况(

表3.10)3.4.2MIPSR4000的浮点流水线浮点流水线例子浮点流水线例子浮点流水线例子1.引起流水线暂停的四个主要原因载入暂停分支暂停浮点结果暂停浮点结构性暂停2.暂停对MIPSR4000流水线CPI的影响表3.113.4.3MIPSR4000流水线性能分析总结流水线基本概念能够流水的前提条件流水线的评价指标DLX基本流水线五个阶段,各阶段的功能不同数据通路的作用段间寄存器的设置和作用总结流水线中的相关结构相关数据相关控制相关如何构造,如何避免实例分析:MIPSR4000特点一些结论流水线提高的是指令带宽(吞吐率),而不是单条指令的执行速度相关限制了流水线性能的发挥结构相关:需要更多的硬件资源数据相关:需要定向,编译器调度控制相关:尽早检测条件,计算目标地址,延迟转移,预测浮点运算使得流水线控制更加复杂编译器可降低数据相关和控制相关的开销Load延迟槽Branch延迟槽课堂练习TP=n/T流水S=T非流水/T流水

E=n△t0/T流水(1)在如图所示的流水线上实现m=4(2)若分别采用静态和动态的方法,画出流水线时空图(3)在两种情况下分别求吞吐率、加速比和效率。例

在静态流水线上计算,问吞吐率、加速比、效率各是多少?(m=4)解: (1)确定适合流水处理的计算过程

(2)画时-空图

(3)性能计算 吞吐率TP=7/20·△t0

加速比S=34·△t0/20·△t0=1.7

效率E=(4×4+3×6)/(8×20)=0.215.流水线性能分析实例静态动态作业如果采用DLX流水线计算(m=4)写出汇编代码分析流水线中的Load互锁,计算执行周期数及CPI.调度代码,消除流水线的Load等待,写出汇编代码,计算优化后的CPI,消除互锁前后的加速比。AcknowledgementsTheseslidescontainmaterialdevelopedandcopyrightby:Prof.ZhiyingWang(NUDT)Dr.Xianglan

Chen(USTC)Prof.XuehaiZhou(USTC)Prof.Krste

Asanovic(MIT/UCB)NUDTmaterialComputerArchitectureUCBmaterialderivedfromcourseCS152

“Themorewestudy,themorewediscoverourignorance."byPercyByssheShelleySUNUltraSPARCIIICu(框图)

HPPA-8700(版图布局)IntelItanium2(结构框图)IntelItanium2(版图布局)DECAlpha21364(版图布局)流水线时空图TIASC的多功能流水线动、静态流水线时空图JPEG编码的例子一种简单的DLX流水线指令编号时钟周期123456789指令iIFIDEXMEMWB指令i+1IFIDEXMEMWB指令i+2IFIDEXMEMWB指令i+3IFIDEXMEMWB指令i+4IFIDEXMEMWB流水段表3.1DLX流水线的每个流水段的操作任何指令类型ALU指令Load/Store指令分支指令IFIDEXIF/ID.IR←

Mem[PC]IF/ID.NPC,PC←(ifEX/MEM.cond{EX/MEM.ALUOutput}else{PC+4});ID/EX.A←Regs[IF/ID.IR6...10];ID/EX.B←Regs[IF/ID.IR11...15];ID/EX.NPC←IF/ID.NPC;ID/EX.IR←IF/ID.IR;ID/EX.Imm

←(IR16)16##IR16...31;EX/MEM.IR←ID/EX.IR;EX/MEM.ALUOutput←

ID/EX.AopID/EX.B

EX/MEM.ALUOutput←

ID/EX.AopID/EX.Imm;

EX/MEM.cond←0;EX/MEM.IR←ID/EX.IR;EX/MEM.B←ID/EX.BEX/MEM.ALUOutput←

ID/EX.A+ID/EX.Imm;EX/MEM.cond←0;EX/MEM.ALUOutput←

ID/EX.NPC+ID/EX.Imm;

EX/MEM.cond←(ID/EX.Aop0);流水段 DLX流水线的每个流水段的操作(续)任何指令类型ALU指令Load/Store指令分支指令MEMWBMEM/WB.IR←EX/MEM.IR;MEM/WB.ALUOutput←

EX/MEM.ALUOutput;MEM/WB.IR←EX/MEM.IR;MEM/WB.LMD←

Mem[EX/MEM.ALUOutput];

Mem[EX/MEM.ALUOutput]←EX/MEM.B;Regs[MEM/WB.IR16...20]

←MEM/WB.ALUOutput;

Regs[MEM/WB.IR11...15]

←MEM/WB.ALUOutput;Regs[MEM/WB.IR11...15]

←MEM/WB.LMD;ADDR1,R2,R3IFIDEX

ME

WBSUBR5,R1,R7IFIDEXMEWBXORR6,R1,R7IFIDEXMEWBORR7,R1,R7IFIDEXMEWBLWR1,45(R2)IFIDEXME

WBSUBR8,R6,R7

IFIDEXMEWB

ADDR5,R1,R7IFIDEXMEWBADDR1,R2,R3IFIDEXME

WBSUBR8,R6,R7

IFIDEXMEWB

LWR5,45(R1)IFIDEXMEWBLWR1,30(R2)IFIDEXME

WBSUBR8,R6,R7

IFIDEXMEWB

LWR5,45(R1)IFIDEXMEWBADDR1,R2,R3IFIDEX

ME

WBSWR5,30(R1)IFIDEXMEWB

SWR6,45(R1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论