万博体育官网登录–ID段和WB段都要访问同一寄存器文件

当前位置:万博体育手机版 > 万博体育官网登录 > 万博体育官网登录–ID段和WB段都要访问同一寄存器文件
作者: 万博体育手机版|来源: http://www.jcsjdb.com|栏目:万博体育官网登录

文章关键词:万博体育手机版,标量流水线

  一条指令完全解释执行完毕后,才开始对下一条指令进行解释执行。 若各阶段周期均为t0,则顺序解释n条指令,需时间T=3nt0 取指令k 分析k 执行k 取指令k+1 分析k+1 执行k+1 取指令分析 执行) 取指令k分析k 执行k 取指令k+1 分析k+1 执行k+1 取指令 k+2 分析k+2 执行k+2 在两条相邻指令的解释过程中,某些不同解释阶段在时间上存在重叠部分。这样在一条指令解释执行完成之前就可 以开始下一条指令的解释工作。 T=2nt0+t0=(2n+1)t0t0 t0 t0 t0 2015-12-17 重叠方式缩短了程序的执行时间,提高了功能部件的利用率,但需增加硬件支持。 取指令k 分析k 执行k 取指令k+1 分析k+1 执行k+1 取指令k+2 分析k+2 执行k+2 二次重叠执行方式 t0 t0 t0 2015-12-17 “分析”相重叠的工作方式称为“一次重叠”。T=(n+1)t0 t0 t0 2015-12-17 采用一次重叠工作方式,完成n条指令所需的执行时间为: 当取指和分析部件的执行时间不等时,执行时间短的部件,必须等待执行时间长的部件功能的完 成,导致部件的空闲,使得完成n条指令所需的执 行时间变为: 分析k执行k 分析k+1 执行k+1 分析k+2 执行k+2 分析k+3 执行k+3 2015-12-17 通过设置先行读数栈,先行操作栈,后行写数栈等,使分析部件和执行部件能够分别连续 不断地分析和执行指令。 分析k 执行k 分析k+1 执行k+1 分析k+2 执行k+2 分析k+3 执行k+3 2015-12-17 10 执行执行 分析 先行 2015-12-17 11 先行指令栈先行读数栈 指令分析器 后行写数栈 运算控制器 运算器 通道2015-12-17 12 三个独立的控制器: 存储控制器、指令控制器、运算控制器。 四个缓冲栈: 先行指令缓冲栈、先行读数缓冲栈、先行操作 栈、后行写数栈。 2015-12-17 13 3.2.1流水方式 把一个重复的过程分为若干个子过程,每个子过程都可以有效地在其专用功能段上与其它子过程同时 执行。 例:把指令的执行过程分成取指、译码、执行、访存和写回寄存器五个子过程,并用五个子部件分别 处理这五个子过程。 译码执行 写回输入 输出 s1 s2 s3 s4 s5 IDEX ME WB2015-12-17 14 2015-12-17 15 2015-12-17 16 如果每个流水段的延迟时间(通过时间)均为Δts,锁定时间为Δtl,则每功能段的处理时间Δti为: 2015-12-1717 流水线中的段数也称为“流水深度” 每个流水段有专门的功能部件对指令进行某种加工。 各流水段所需时间应尽量相等,以减少流水线的瓶颈影响。 流水线工作阶段可分为建立(装入)、满载和排空三个阶段。 在理想情况下,当流水线充满后,每隔Δt时间 将会有一个结果流出流水线 例:将浮点加法操作分成求阶差、对阶、尾数相加、结果规格化四个子过程。 尾数相加 规格化 输入 输出 s1 s2 s3 s4 2015-12-17 19 浮点加法器流水线的时空图 空间 规格化 规格化1 规格化2 规格化3 规格化4 规格化5 尾数加 尾数加1 尾数加2 尾数加3 尾数加4 尾数加5 时间2015-12-17 20 如前面所提到的将指令执行过程分为取指、译码、执行、访存及写回五个子过程。 将系统中多个处理机串联起来,对同一数据流进行不同的处理,每个处理机完成某一专门任务。 功能:任务1 任务2 任务n 存储器 存储器 存储器 2015-12-17 21 同一流水线的各功能段可进行不同的连接,使流水线在不同时间或同一时间内完成不同的功能。 2015-12-17 22 输入输入 输入 输入 尾数加尾数加 尾数加 尾数加 规格化 规格化 规格化 规格化 尾数乘 尾数乘 尾数乘 尾数乘 累加 累加 累加 累加 输出 输出 输出 输出 定点乘浮点加 浮点点积 (a)功能段间的互连 (b)定点乘法 (c)浮点加法 (d)浮点点积 2015-12-17 23 静态流水线可以是单功能的,也可以是多功能的。当是多功能流水线时,则从一种功能方式变为另 一种功能方式时,必须先排空流水线,然后为另 一种功能设置初始条件后方可使用。 2015-12-1724 空间 浮点加法 定点乘法 输出 时间静态流水线 在同一时间内,可以将流水线中的不同功能段连接成不同的功能子集(前提条件是功能部件的使 用不发生冲突),以完成不同的运算功能。 动态流水线 空间 浮点加法 定点乘法 输入 时间动态流水线 从流水线的输入到输出,每个功能段只允许经过一次,流水线中不存在反馈回路。 流水线各功能段之间除了串行连接外,还存在反馈回路,因此从流水线的输入到输出过程中,某 些功能段将被数次通过。 非线 S1 S2 反馈回 2015-12-1729 为了防止两条或两条以上的指令对同一功能段的争用,非线性流水线需要对输入流水线的指令进 行比较复杂的控制。 2015-12-1730 输出端的任务流出与输入端的任务流入顺序完全相同。 输出端的任务流出与输入端的任务流入顺序不完全相同。 在乱序流动流水线中,当某任务阻塞时,后面的任务可绕过它继续流动。 2015-12-17 31 在PentiumCPU内部有两个ALU,分别对应两条流水线只有一条流水线),U流水线执行整数和浮点数指 令;V流水线执行整数指令,以及交换寄存器的内容。所以, Pentium能在每个时钟周期内执行两条整数运算指令,或在 每个时钟周期内执行一条浮点数运算指令。 PFD1 D2 EX WB 即:预取指令(PF)段、译码1(D1)段、译码2(D2)段、执行(EX)段和写回寄存器(WB)段。 PF D1 D2 EX WB 2015-12-17 32 PentiumCPU结构 (1)超标量流水线位数 据总线位数 据总线 控制 指令 指针 转移 BTB转移目标 缓冲 TLB 指令 CACHE 8KB 预取缓冲 指令译码 控制 ROM 控制部件 地址产生(U流水线) 地址产生(V 流水线) 整数寄存器堆 ALU(U流 水线) ALU(V流 水线 TLB 数据 CACHE 8KB 浮点部件 控制 寄存器堆 加法 除法 乘法 80 80 2015-12-17 33 设任务数为n,流水线段数为m,完成n个任务的时间为Tm,则吞吐率 2015-12-1734 设在m段流水线中,各段的延迟时间均为Δt,可以利用时空图分析该流水线完成n个任务的实际吞吐 率和流水线 输入 输出 Tm(n-1) 2015-12-1736 最大吞吐率就是流水线满载时的吞吐率,因此实际吞吐率为: 2015-12-1737 2015-12-1738 如果流水线各段的延迟时间不等,则吞吐率取决于最慢段所需的时间。 设Δt1=Δt2=Δt4=ΔtΔt3=3Δt S1S2 S3 S4 输入 输出 Δt1 Δt2 Δt3 Δt4 2015-12-17 39 S4 Tm(n-1) Δt3 2015-12-1740 2015-12-1741 将瓶颈子过程进一步细分成若干个子子过程,使每一个子子过程与其他子过程时间相等。 如将瓶颈段S3进一步分成S3a,S3b和S3c三个时间上相当于Δt的子子过程,便可消除S3瓶颈,使 最大吞吐率由1/3Δt恢复成1/Δt。 输入 2015-12-1742 S4 Tm(n-1) 2015-12-1743 在瓶颈段,并联设置多套功能段部件,使它们轮流工作。 如在瓶颈段S3并联设置3套功能部件,可使吞吐率恢复到1/Δt。 3a输入 2015-12-1744 重复设置功能段的控制复杂,需要在流水线中设置数据分配器和数据收集器。 S1S2 S3a S3c S3b S4 1011 12 1011 12 1011 12 172015-12-17 45 加速比是指采用流水方式后的工作速度与等效的顺序串行方式的工作速度之比。 对n个求解任务,若用串行方式完成工作需要时间为Tl,用m段流水线完成工作需要时间为Tm,每个 功能段的延迟时间为Δt,则流水线 由最大加速比Spmax=m可知:增加流水线的深 度m,可以提高流水线的最大加速比。 但只有在任务数n很大的情况下,才能有效地发挥流水线段流水线 由于流水线有建立和排空时间,因此各功能段的设备不可能一直处于工作状态,总有一段空闲时 间。一般用流水线各段处于工作时间的时空区与 流水线中各段总的时空区之比来衡量流水线的效 段总的时空区个任务占用的时空区 该时间片总的时间时间 某一时间片内“忙”的 2015-12-1749 S4 Tm(n-1) 2015-12-1750 2015-12-1751 效率是实际加速比和最大加速比之比。只有E=1时,才能达到Sp=m 当Δt不变时,效率与吞吐率成正比。所以为提高效率所采用的方法,对提高吞吐率也有 好处。 2015-12-17 52 例1:设有浮点加法器流水线,试分析算式Z=A+B+C+D+E+F+G+H在流水线中执行时的流 水线的性能。 尾数加规格化 输出和Δt0 Δt0 Δt0 Δt0 加数 2015-12-17 53 空间 周期 1011 12 13 14 15 规格化 时间加数 用一条4段浮点加法器流水线 例2:设有静态加、乘双功能流水线组成乘法流水线组成加法流水线, 各段的延迟时间均为Δt,流水线的输出可直接返回 输入端或暂存到相应的缓冲寄存器中。现有A、B 两个向量,每个向量有四个元素,要求在此流水 线上计算 。请适当安排操作顺序,在最 短时间内完成计算工作,并求出流水线工作时的 实际吞吐率、加速比和效率。 2015-12-1756 2015-12-17 57 从图中可见,在总共17Δt时间内榆出7个结果,因此该流水线的实际吞吐率为: E=(34Δt+53Δt)/(617Δt)=27/102=9/34=26.4%。 Sp=Tl/Tm=27Δt/17Δt=1.88。2015-12-17 58 例3:如图为一个有功能5段的非线性流水线段都必须再返回执行一次3、4段。 现假定输入8个任务,求流水线 多功能流水线在按某种功能流水时,总有一些本功能不需要的段将处于空闲状态。 静态流水线在功能切换时,要等待前一种运算全部排空,才能重新连接、切换功能,需要有排 空和建立两种不同功能流水的额外开销。 经常发生下一步要等待上一步计算结果反馈的情况,即出现数据相关问题。 流水线较适合于求解的操作相同,且输入、输出间相互独立的一大串运算。此时,流水线的吞吐 率可接近于最大吞吐率,流水线, 而加速比也可接近于流水线 如果流水线段数过多,时钟周期很小,以至于与时钟偏移和锁存器的附加开销相当,会导致在一 个时钟周期内没有足够时间用于有效工作,流水 线也就失去了作用。 假设在非流水线的机器上采用顺序执行方式完成一个任务所需要的时间为t,那么,在同等速度的 有k段流水线的机器上执行一个任务需要的时间为: (d---锁存器的延迟时间)2015-12-17 61 流水线的总价格粗略地估计为:C=a+bk,其中,a为所有流水段本身的总价格,b为每个锁存器的 价格。son把流水线的性能价格比PCR定义为: 2015-12-17 62 bk 通过对自变量k求导,得到性能价格比PCR的极值。由于大于零的极值只有一个,因此,这个极值就是最大值。 如图所示,当性能价格比PCR取得最大值时,它所对应的流水 线 式中,t为流水线的总的延迟时间。 性能价格比PCR峰值 最佳值(k 流水线 在设计一条流水线的时候,可以根据上述极限公式,在流水线的总延迟时间t一定的情 况下,通过调整流水线本身的价格a,锁存 器的延迟时间d和锁存器的价格b来选取最佳 的流水线。 目前,一般处理机中的流水线段的流水线段的流水线段以上流水线的处理机称为超流水线 处理机。 (注:早期定5段之内为普通流水) 2015-12-17 65 要使流水线具有良好的性能,必须设法使流水线能畅通流动,即必须能做到充分流水,不发生断 全局相关:控制相关,如转移指令、中断的处理B0 B1 B2 基本块内无分支,是局部相关; 块間为2路分支,是全局相关 2015-12-17 66 2015-12-17 67 译码执行 写回输入 输出 IDEX MEM WB 在RISC处理机中,指令的流水设为5段,即分为取指、译码、执行、访存及写回五个子 过程,如上图所示。 2015-12-1768 2015-12-17 69 ALU LOAD/STORE BRANCH ID译码、读寄存 EX执行 计算访存有效 地址 计算转移目标地 址,置条件码 MEM 条件成立,则转移目标地址PC WB 结果写回寄存 将读出的数据写入寄存器堆 指令流水段 不同类型的指令在各段完成的操作不一样。下表列出了有关 指令的操作。 2015-12-17 70 下面讨论经典的5段流水线 首先讨论在非流水情况下是如何实现的 2015-12-17 71 –取指令周期(IF)•IR •PC值加4。(假设每条指令占4个字节)–指令译码/读寄存器周期(ID) •译码。 •用IR中的寄存器编号去访问通用寄存器组, 读出所需的操作数。 2015-12-17 72 –执行/有效地址计算周期(EX) 不同指令所进行的操作不同: •存储器访问指令:ALU把所指定的寄存器 的内容与偏移量相加,形成用于访存的有 效地址。 •寄存器-寄存器ALU指令:ALU按照操作码 指定的操作对从通用寄存器组中读取的数 据进行运算。 2015-12-17 73 •寄存器-立即数ALU指令:ALU按照操作码指定的 操作对从通用寄存器组中读取的第一操作数和立 即数进行运算。 •分支指令:ALU把偏移量与PC值相加,形成转移目 标的地址。同时,对在前一个周期读出的操作数 进行 判断,确定分支是否成功。 –存储器访问/分支完成周期(MEM) 该周期处理的指令只有load、store和分支指令。 其他类型的指令在此周期不做任何操作。 2015-12-17 74 •load和store指令 load指令:用上一个周期计算出的有效 地址从存储器中读出相应的数据。 store指令:把指定的数据写入这个有效 地址所指出的存储器单元。 •分支指令 分支“成功”,就把转移目标地址送 入PC。分支指令执行完成。 2015-12-17 75 –写回周期(WB) ALU运算指令和load指令在这个周期把结 果数据写入通用寄存器组。 ALU运算指令:结果数据来自ALU。 load指令:结果数据来自存储器系统。 在这个实现方案中: 分支指令需要4个时钟周期(如果把分支指令 的执行提前到ID周期,则只需要2个周期)。 store指令需要4个周期。 其他指令需要5个周期才能完成。 2015-12-17 76 第一种描述(类似于时空图)2015-12-17 77 第二种描述(按时间错开的数据通路序列) 2015-12-17 78 要保证不会在同一时钟周期要求同一个功能段做两件不同的工作。 例如,不能要求ALU同时做有效地址计算和算 术运算。 –避免IF段的访存(取指令)与MEM段的访存(读 /写数据)发生冲突。 •可以采用分离的指令存储器和数据存储器; •一般采用分离的指令Cache和数据Cache。 –ID段和WB段都要访问同一寄存器文件。 ID段:读 WB段:写 (前后半拍) 2015-12-17 79 –考虑PC的问题 •流水线为了能够每个时钟周期启动一条新的 指令,就必须在每个时钟周期进行PC值的加4 操作,万博体育官网登录并保留新的PC值。这种操作必须在IF 段完成,以便为取下一条指令做好准备。 (需设置一个专门的加法器) •但分支指令也可能改变PC的值,而且是在MEM 段进行,这会导致冲突。 2015-12-17 80 3.4.1 资源相关:当有多条指令进入流水线后在同一机器周期内争用同一功能部件所发生的冲 通常,由于数据和指令存放在同一存储器中,且只有一个访问口,这样便会发生这两条指 令争用存储器资源的相关冲突。 2015-12-17 81 两条指令同时访存造成资源相关 MEM EX ID 指令i+4 WB MEM EX ID 指令i+3 WB MEM EX ID 指令i+2 WB MEM EX ID 指令i+1 WB MEM EX ID 时钟指令 冲突 译码执行 2015-12-1782 2015-12-17 83 停顿一拍流水线,通常是将后一条指令停顿一拍后再启动。 (插入“气泡”) 再重复设置—个存储器,使指令和数据分别存放在不同存储器中。 2015-12-17 84 EX ID 指令i+4 MEM EX ID 停顿指令 i+3 WB MEM EX ID 指令i+2 WB MEM EX ID 指令i+1 WB MEM EX ID 时钟指令 WBMEM 使i+3指令停顿一拍进入流水线,以解决访存相关或重复设置 一个存储器。 2015-12-17 85 时间(时钟周期) load指令i+1 指令i+2 指令i+3气泡 气泡 气泡 气泡 气泡 2015-12-17 86 3.4.2 LOADF1, ;F1(A)k+1:FADD F2, F1 ;F2(F2)+(F1) k+2:FMUL F1, F3 ;F1(F1)(F3) k+3:STORE F1, ;B(F1)写写相关 写读相关 读写相关 2015-12-17 87 (1)写读相关:指令k与指令k+1之间关于F1的相关, 又称为数据相关、先写后读相关、流相关、WR相 关、RAW相关等。 (2)读写相关:指令k+1与指令k+2之间关于F1的相关, 变量名相关、先读后写相关、反相关、RW相关、 WAR相关等。 (3)写写相关:指令k与指令k+2左边的F1之间的相关 关系称为:输出相关、万博体育官网登录写写相关、WW相关、 WAW相关或写后再写相关等。 2015-12-17 88 三种数据相关可以用下列关系式来表示: 对于写读(RAW)相关 2015-12-1789 三种数据相关的重定向(内部定向原理) 重定向之前,j只能在i之后执行。 重定向之后,可以做到: (1)写读相关,j与i可以同时执行 即专用数据通路 (2)写写相关,先后顺序无关 (3)读写相关,先后顺序无关 后两种情况又称为“变量换名技术” 2015-12-17 90 读写相关的数据重定向2015-12-17 91 变量换名技术 用来自动消除读写数据相关和写写数据相关 规则:一个变量只允许定值一次 在三种数据相关中,实际上只有写读数据相关必须 依靠硬件、或采用软硬件结合的方法来解决 解决方法:推后处理或专用数据通路 在上面的数据重定向图中,把B换成了B’,并在以后 的都引用B’读写数据相关和写写数据相关就不存 下面具体讨论三种数据相关的解决办法。2015-12-17 92 后面指令对某单元或寄存器的读出先于前面指令对同一单元或寄存器的写入。 ADDR1,R2,R3 ;R2+R3R1 SUBR4,R1,R5 ;R1-R5R4 2015-12-17 93 又如: DADD R1,R2,R3 DSUB R4,R1,R5 XOR R6,R1,R7 R10,R1,R112015-12-17 94 时间(时钟周期) IMReg DMReg IM Reg DMReg IM Reg DMIM Reg DADDR1,R2,R3 DSUB R4,R1,R5 XOR R6,R1,R7 R8,R1,R9IM Reg R10,R1,R112015-12-17 95 遇到数据相关时,就停顿后继指令的运行,直至前面指令的结果生成并写入寄存器。 时间后推法将使流水线 采用定向技术(旁路技术或相关专用通路技术) 在执行过程中建立直接的专用通道,将执行结果直接送往需要的执行部件。 2015-12-17 97 IDEX MEM WB IDEX MEM WB IDEX MEM WB IDEX MEM WB IDEX MEM WB DADD R1,R2,R3 DSUB R4,R1,R5 R8,R1,R9XOR R10,R1,R11 定向传递R1 数据相关和定向传递指令2015-12-17 98 EXMEM ID EXMEM ID EXMEM ID EXMEM ID EXMEM ID DADDR1,R2,R3 DSUB R4,R1,R5 R8,R1,R9XOR R10,R1,R11 定向传递R1 减少定向传送次数的方法在ID段读寄存器堆操作安排在后半部分,在WB段写寄存器堆 操作安排在前半部分,以减少定向传输操作。 2015-12-17 99 时间(时钟周期) IMReg DMReg IM Reg DMReg IM Reg DMIM Reg DADDR1,R2,R3 DSUB R4,R1,R5 XOR R6,R1,R7 R8,R1,R9IM Reg R10,R1,R112015-12-17 100 ALU 运算结果 写RF RF 读RF ALU 操作数寄存 专用通路(旁路)寄存器堆RF 多路开关 多路开关 ALU R4 R1 缓冲寄存器(R1,R4) 旁路 2015-12-17 101 乱序流动的流水线允许后进入流水线的指令超过先进入流水线的指令先流出流水线。 后面指令对某单元或寄存器的写入先于前面指令对同一单元或寄存器的读出。 例:MULR1,R2,R3 ;R2R3R1 SUBR2,R3,R4 ;R3-R4R2 若因乱序流动使SUB指令提前执行,写入R2,则会使MUL指令读R2时读到错误的R2的数据。

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!