您好、欢迎来到现金彩票网!
当前位置:双彩网 > 先行指令站 >

在一个5段的流水线T才能完成一个任务

发布时间:2019-06-27 02:44 来源:未知 编辑:admin

  在一个5段的流水线t才能完成一个任务,各段执行时间均为t,任务处理过程对各段使用时间的 预约表如下: 画出流水线的状态图,并由状态图得出流水线的最优调度策略和最大吞吐率。 按最优调度策略输入6个任务,求流水线的实际吞吐率、加速比和效率。 5.3相关性分析技术 5.3.1 数据相关 5.3.2 控制相关 5.3.3 条件分支对流水线.3.6 提前形成条件码 5.3.7 精确断点与不精确断点 5.3.1 数据相关 数据相关:在执行本条指令的过程中,如果用到的指令、操作 数、变址量等是前面指令的执行结果,这种相关称为数据 相关。 控制相关:由条件分支指令、转子程序指令、中断等引起的相 解决数据相关的方法有两种:推后处理 设置专用路径。 1.指令相关 发生指令相关的情况: STORER1, n+1 n+1: 满足关系:结果地址(n)=指令地址(n+1) 当第n条指令还没有把执行结果写到主存之前,取出 的第n+1条指令显然是错误的。 在k个流水段的流水线处理机中,第n条指令要修改从 指令中的任意一条指令,都可能造成程序执行结果发生错误。 在采用先行控制方式的处理机中,如果执行部件正在 执行第n条指令,与下述情况之一发生相关,都可 能造成程序执行结果发生错误。 存放在先行操作栈中的指令 正在指令分析器中分析的指令 已经预取到先行指令缓冲栈中的指令 指令执行结果还在后行缓冲栈中的指令 更严重的是:有些分支指令,可能已经在指令分析器 中执行完成。 解决指令相关的根本办法是: 在程序执行过程中不允许修改指令。 现代程序设计方法要求程序具有再入性,可以被递归 调用等,也要求不修改指令。 在IBM370系列机中,用“执行指令”来解决:在程序 执行过程中既能够修改指令,程序又具有再入性。 “执行指令”执行由第二地址((X )决定的主存数据区中的指令。 1112 15 16 19 20 31 EX(执行) 2.主存操作数相关发生主存操作数相关的指令序列: n:OP (n+1)解决办法: 运算结果写到通用寄存器,而不写到主存 对于访问主存储器的请求,写结果的优先级高于读操 作数。 分析 分析k+1 分析 k+1(推后) 执行 k+1 时间 单元请求存储控制器的排队器先响应写主存请求 结果写主存 A1 单元的请求 通用寄存器数据相关发生寄存器数据相关的可能性很大,影响面也很 数据相关。发生R 数据相关。解决通用寄存器数据相关的方法: 方法一:把读操作数、写运算结果与指令执行合在一 个节拍。 从数据从通用寄存器读出,在运算器中完成运算, 结果写回通用寄存器的整个回路中,只有通用寄存 器是时序逻辑。在通用寄存器到运算器之间建立直 接数据通路,即不设置缓冲寄存器或锁存器,则不 会发生通用寄存器数据相关。 这种情况下,实际上不需要分析周期,在一个节拍 中就可以完成从通用寄存器中通过两个多路选择器 分别读操作数到通用寄存器。 方法二:建立相关专用通路(ByPass) 由于发生寄存器数据相关的情况很普遍,一般计算机 系统都采用专用数据通路。 把读通用寄存器、执行操作和写结果分为3个周期, 或2个周期。 采用专用数据通路能够缩短1至2个周期。 通用寄存器堆 多路选择器 多路选择器 运算器 一种典型的运算器结构 通用寄存器堆 相关专用通路 运算器设置专用数据通路解决通用寄存器数据相关 变址相关:在采用变址寻址方式的处理机中,由于变 址量放在寄存器中,因此,可能发生与通用寄存器 数据相关类似变址相关 LOAD操作的执行时间可能比较长n:LOAD (n+1),则发生LOAD数据相关。 解决方法:方法一:由编译器在LOAD之后插入不发生数据相 关的指令,由于LOAD的执行时间不确定,不能 根本解决问题 方法二:由硬件自动插入空操作,直到LOAD操作 完成 在单条流水线处理机中,也可以停止节拍发生器, 直到数据从存储器中读出为止。 IDEX WR K+1: IDEX WR IF:取指令,ID 指令译码,EX:执行,WR:写回结果 LOAD写R1完成 ADD读R1开始 5.3.2 控制相关 因程序的执行方向可能被改变而引起的相关,也称为 全局相关。 主要包括:无条件转移、一般条件转移、复合条件转 移、中断等。 无条件转移在流水线处理机中,无条件转移指令不进入执行流水 段,一般在指令译码阶段就实际执行完成。 如果在处理机中设置有指令先行缓冲栈,则要全部或 部分作废先行指令缓冲栈中的指令。 如果转移目标指令L不在先行指令缓冲栈中,则要将先行指令 缓冲栈中的所有指令全部作废,并等待取出转移目标指令L。 如果转移目标指令L在先行指令缓冲栈中,只要作废先行指令 缓冲栈中的部分指令。 无条件转移指令一般对指令执行部件的工作不会造成影响。 为进一步减少无条件转移指令造成的影响,在先行指令缓冲栈 的入口处增设一个专门处理无条件转移指令的指令分析器 P270 分析 分析k+1 指令 在先行指令缓冲栈中:分析 分析L+1 执行 L+1 无条件转移指令的执行时序 2.一般条件转移 ;置条件码CCk+1:JMP(CC) 当条件码是上一条指令产生时,相关最严重P271 分析 转移不成功分析 k+1 分析 k+2 执行 K+2 成功,L 在缓冲栈 分析 k+1 分析 成功,L不在缓冲栈 分析 k+1 取指令 产生转移条件CC 根据转移条件 CC 判断转移是否成功 无论转移是否成功,第k+1条转移指令都在指令分析阶 段就已经执行完成。 无论转移不成功或不成功,指令分析器要停顿一段时间, 等待条件码产生。 如果转移成功:指令L已经在先行指令缓冲栈,指令 分析器接着“分析L”,如果指令L不在先行指令缓 冲栈,指令分析器要等待一个周期。 转移不成功,对程序执行影响不大, 当转移成功时,不仅指令执行过程变成完全串行,而 且要作废先行指令缓冲栈中的大量指令。 在采用流水线方式的处理机中,要通过软件与硬件的 多种手段来近可能地降低转移成功的概率,减少转 移成功造成的影响。 3.复合条件转移 k:OP 如果转移不成功:不造成任何影响,就象普通的运算型指令一样 如果转移成功:造成的影响比一般条件转移指令还要 大得多。全部或部分作废先行指令缓冲栈、先行操 作栈、先行读数栈和指令分析器中的指令。 必须采取策略,减小转移成功造成的影响。 执行 转移不成功分析 k+1 执行 k+1 分析 成功,L在先行指令缓冲栈中 分析 成功,L不在先行指令缓冲栈中 取指令 5.3.3条件分支对流水线的影响 处理好条件转移和中断的关键问题有两个: 要确保流水线能够正常工作 减少因“断流”引起的吞吐率和效率的下降 1.条件分支的处理方法 条件转移指令对流水线的影响很大,必须采取措施来 减少这种影响。可能的措施有: (1)延迟转移技术和指令取消技术 只能用于单流水线处理机中,且流水线的级数不能太 据统计,编译器调度一条指令成功的概率在90%以上,而调度两条指令成功的概率只有40%左右。 当没有合适的指令可调度时,编译器只能插入空操作。 (2)动态分支预测技术 根据近期转移是否成功的记录来预测下一次转移的方 所有的动态转移预测方法都能够随程序的执行过程动态地改变转移的预测方向。 (3)静态分支预测技术 转移预测的方向是确定的,或者预测转移不成功,或 者预测转移成功, 在程序实际执行过程中,转移预测的方向不能改变。 静态转移预测可以只用软件实现,也可用硬件来实现, 还可以在转移的两个方向上都预取指令。 TI公司的SuperSPARC处理机采用了静态转移预测技术, 而且设置有转移目标缓冲栈,在两个方向上都预取 指令。 2.条件分支在流水线中的执行过程 因为第i条指令所需要的条件码由第i-1条指令给出; 在一条由k个功能段的流水线条指令要等 到第i+k-2条指令进入流水线时才能形成条件码。 转移不成功,猜测正确,流水线的吞吐率和效率没有 降低, 转移成功,猜测错误,要先作废流水线指令;然后再从分支点开 始执行第P、p+1、……指令。一条k段流水线 个功能段是浪费的。 时间 i+1i+2 i+k-3i+k-2 输出 输入 i-1 p+k-4p+k-3 输出 形成条件 码的指令 条件转 移指令 形成转移条件 转移不成 条件分支指令在流水线中的执行过程当分支的执行方向猜测错误时,可能造成程序执行结 果发生错误。 例如,若第i+1条指令是:(R1)+(R2)R1,寄存 器R1中内容就被破坏,整个程序执行的结果是错误 目前的处理机有两种做法:一种方法是只进行指令译码和准备好运算所需要的操 作数,在转移条件没有形成之前不执行运算; 另一种方法是一直执行到运算完成,但不送回运算结 条件分支对流水线假设条件转移指令在一般程序中所占的比例为p,转 移成功的概率为q。 n条指令的总的执行时间是: K-IF=(n+k-1)t npq(k-1)t有条件转移影响的流水线吞吐率为: 有条件转移影响的流水线最大吞吐率为: TP 流水线吞吐率下降的百分比为:在典型程序中,转移指令占的比例为p=20%,转移成功的概 率为q=60%。 对于一条8功能段的指令流水线,由于条件转移指令的影响,流 水线的最大吞吐率要下降: 如果指令流水线,由于条件转移指令的影响, 流水线的最大吞吐率将下 降一半以下: pqTP TP TP MAXMAX 5.3.4静态分支预测技术 静态分支预测: 在程序执行过程中转移预测方向不能改变 动态分支预测: 在程序执行过程中能够改变转移预测方向 本节讲静态预测技术,下节讲动态预测技术 1.软件“猜测法” 目标:通过编译器尽量降低转移成功的概率。 例如:对于循环程序,普通编译器生成的目标代码,转移成功 的概率很高,不成功的只有一次。这种编译结果对流水线循环体 软件“猜测法”:通过编译器降低转移成功的概率 2.硬件“猜测法” 方法:通过改变硬件结构来降低转移指令对流水线的 影响 在先行指令缓冲栈的入口处设置一个简单的指令分析 器,当检测到转移指令时,就把转移目标地址L送入 先行程序计数器PC 中的内容到另一寄存器中。 转移成功,猜测正确。对转移指令对流水线不造成影 和PC。软硬件共同配合,都往同一个方向去猜测。 3.两个先行指令缓冲栈 向前条件转移,转移成功与不成功各50% 在先行指令缓冲栈中增加一个先行目标缓冲栈 按照转移成功的方向预取指令到先行目标缓冲栈中。 先行指令缓冲栈仍然按照转移不成功的方向继续预取指 PC执行转移 PCTR 装入AIB, 等待条件码CC AIB成功 CC不成功 IB 两个先行指令缓冲栈的条件转移指令执行流程 5.3.5 动态分支预测技术 动态转移预测技术的两个关键问题: 如何记录转移历史信息 如何根据记录的转移历史信息预测转移方向 记录转移历史信息的方法有三种: (1)最近一次或几次转移是否成功的信息记录在转移 指令中 (2)用一个高速缓冲栈保存条件转移指令的转移目标 地址 (3)用Cache保存转移目标地址之后的n条指令 在指令Cache中记录转移历史信息在指令Cache中专门设置一个字段,称为“转移历史 在执行转移指令时,把转移成功或不成功的信息记录在这个表中。 当下次再执行到这条指令时,转移预测逻辑根据“转 移历史表”中记录的信息预测转移成功或不成功。 只记录最近一次转移是否成功的历史信息 如果“转移历史表”中记录的内容是“T”,则预测转 移成功,如果记录的是“N”,则按照转移不成功的 方向继续取指令。 并用实际转移是否成功的信息来修改“转移历史表”。 记录最近两次转移是否成功的历史信息图中采用偏向成功的预测策略:只有历史上最近两次 执行这条转移指令时转移都没有成功,本次才预测 转移不成功 也可以采用其他预测策略 TT:最近两次转移都成功 NT:最近一次转移成功,前一次转移不成功 TN:最近一次转移不成功,前一次转移成功 NN:最近两次转移都不成功 t:本次预测转移成功 n:本次预测转移不成功 T:本次实际转移成功 N:本次实际转移不成功 TT “转移历史表”的修改规则和转移预测规则可以有多种多样, 记录转移预测是否成功的信息。 用最近预测是否成功的信息作为是否转移的依据 当“转移历史表”是空白时,可以有两种做法: 在“转移历史表”中预置转移历史信息。 根据指令本身的偏移字段的符号来预测转移的方向 如果偏移字段为负,则预测转移成功,否则预测转 移不成功 主要优点: 不必专门设置转移缓冲栈, 所记录的转移历史信息比较少。 例如: DEC公司的Alpha 21064处理机就采用了这种转移预测 方法, 在它的一级指令Cache中有一个专门的“转移历史表” 字段。 2.设置转移目标地址缓冲栈 用高速缓冲栈保存最近k条转移指令的“转移历史表” 和转移目标地址 当前指令地址与转移目标缓冲栈中的所有转移指令地 址进行比较;如果发现有相等的,则根据所记录的 历史信息预测本次转移方向。 根据某种规则修改“转移历史表”。 k-1转移指令地址 转移历史表 转移目标地址 k-1,n-1 转移指令地址 转移历史表 转移目标地址之后的 条指令3.设置转移目标指令缓冲栈 把上面方法中的“转移目标地址”字段改为存放转移 目标地址之后的n条指令。 预测转移方向的规则和修改“转移历史表”的规则与 上面的方法相同。 5.3.6 提前形成条件码 必要性:对提高流水线的性能非常有效 可能性:可在运算开始或中间产生条件码 对于乘除法,两个源操作数的符号相同结果为正,符号 相反结果为负 对于乘法,有一个操作数为0,则乘积为0 被除数为0,商为0;除数为0,除法结果溢出 同号加或异号减,结果符号与第一操作数相同 异号加或同号减,结果的符号与绝对值大的操作数相同 溢出及是否为0可以通过一个比较器提前产生 只要在一个时钟周期之内产生条件码,流水线就不会 “断流”。 如Amdahl470V/6在运算部件的入口处设置有一个LOCK部 件,提前形成条件码 把产生条件码与使用条件码的指令分开 LOAD R1,NUM ;循环次数初值装入R1 LOOP:…… ;循体开始 DECR1 ;循环次数减“1” BNE LOOP ;测试循环是否则结束 HALT ;程序结束 NUM: 可以编译成如下程序:LOAD R1,NUM ;循环次数装入R1中 LOOP:LDEC R1 ;一条专用的 ;循环次数减1指令 LBNELOOP ;一条专用的测试循环 ;是否结束的指令 HALT ;程序结束 NUM: ;循环次数指令LDEC和LBNE使用专用的条件码寄存器 5.3.7 精确断点与不精确断点 对于输入输出设备的中断服务,实际上不需要有精确 断点。 比较简单的处理方法是:让已经进入流水线的所有指 令都执行完成,断点就是最后进入流水线的那条指 令的地址。 对于程序性错误和机器故障等引起的中断,它们出现 的概率很低,处理原则:不在于缩短时间,关键是 要正确保存现场和正确恢复断点。 不精确断点(Imprecise),流水线可以不断流 需要的硬件比较少,控制逻辑比较简单 中断响应时间加长 采用不精确断点法可能会发生如下两个问题: (1)程序的调试困难 调试程序时要设置断点,程序员通过查看断点处的中间执行结 果判断程序是否正确。但由于不精确断点,程序不能准确中 断,因此,难于调试。 早期的流水线处理机,多采用不精确断点法 近期的流水线处理机一般都采用精确断点法 申请中断 输入 输出PC: i+5 i+4 i+3 i+2 i+1 i-1i-2 不精确断点 精确断点 (2)程序执行的结果可能出错,例如: i:FADD R1, R2 ;(R1)+(R2)R1 i+1:FMUL R3, R1 ;(R3)(R1)R3 当第i条指令执行到S 段时发现浮点加法结果溢出,于是发出中断服务申请。由于采用不精确断点法, 已经进入流水线条指令将执行完成;因为 第i+1条指令使用了不正确的R1,所以浮点乘法的 执行结果是不正确的。 采用精确断(Precise)点法,要设置一定数量的后援 寄存器,把整个流水线中所有指令的执行结果和现 场都保存下来。 5.4 动态调度技术 5.4.1 顺序流动与乱序流动 5.4.2 乱序流动中的数据相关 5.4.3 数据重定向方法 5.4.4 Tomasulo动态调度算法 实现方法: 由硬件动态调整指令执行顺序,以减少数据相关造 成的影响。 主要优点: 能够处理在编译时无法确定的相关,并简化编译器设 在其他流水线机器上编译的目标代码也能够高效运行用静态调度法生成的代码也能在动态调度法的机器中 运行 主要缺点:指令级并行度低,因为只能在比较小的范 围内寻找并行性 5.4.1 顺序流动与乱序流动 1.顺序流动方式:任务按顺序流入流水线,也按顺序 流出流水线 把如下一段程序输入到这条流水线:…… k+4:…… k+5:…… 输出寄存器 R0 指令k+2无法继续执行,要在功能段S 中等待。后续的指令k+4、k+5、……等也不能进入流水线。 功能段S 将逐渐空闲。缺点:吞吐率和效率降低 优点:流水线的控制逻辑比较简单 流水线“断流”,有些功能段“空闲” 时钟周期 i+4k+4 k+3 k+2 空闲 空闲 空闲 i+3k+3 k+2 空闲 空闲 空闲 k+1 i+2k+3 k+2 空闲 空闲 k+1 i+1k+3 k+2 空闲 k+1 k+3k+2 k+1 k-1k-2 正常流动 k+5 k+4 k+3 k+2 k+1 功能段功能段 顺序流动方式2.乱序(Out order)流动方式:指令流出流水线的顺序与流入流水线的顺序不同。又称为错序流动方式、无序流动方式、 异步流动方式等。 时钟周期 i+5k+8 (k+7) k+6 k+2 K+5 k+4 k+3 i+4k+7 (k+6) k+2 k+5 K+4 k+3 k+1 i+3k+6 k+5 (k+2) k+4 k+3 k+1 i+2k+5 k+4 (k+2) k+3 k+1 i-+1k+4 k+3 (k+2) k+1 K-1k-2 k+3(k+2) k+1 k-1k-1 k-3 正常流动 k+5 k+4 k+3 k+2 k+1 功能段功能段 乱序流动方式5.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)读写相关(1)写读相关:指令k与指令k+1之间关于F1的相关,又称 为数据相关、先写后读相关、流相关、WR相关、 RAW相关等。 (2)读写相关:指令k+1与指令k+2之间关于F1的相关, 变量名相关、先读后写相关、反相关、RW相关、 WAR相关等。 (3)写写相关:指令k与指令k+2左边的F1之间的相关 关系称为:输出相关、写写相关、WW相关、 WAW相关或写后再写相关等。 有时把相关称为“冒险”(hazard)、“竟争” (competition)等。 在程序执行过程中,只有避免相关,执行结果才是正 三种数据相关可以用下列关系式来表示:对于写读相关 5.4.3数据重定向方法 1.三种数据相关的重定向 重定向之前,j只能在i之后执行。 重定向之后,可以做到: (1)写读相关,j与i可以同时执行 即专用数据通路 (2)写写相关,先后顺序无关 (3)读写相关,先后顺序无关 后两种情况又称为“变量换名技术” 读写相关的数据重定向2.变量换名技术 用来自动消除读写数据相关和写写数据相关 规则:一个变量只允许定值一次 在三种数据相关中,实际上只有写读数据相关必须依 靠硬件、或采用软硬件结合的方法来解决 解决方法:推后处理或专用数据通路 在上面的数据重定向图中,把B换成了B’,并在以后 的都引用B’读写数据相关和写写数据相关就不存在 一个实际例子:Loop: LD F0, 0(R1) ADD F0, F2 SD 0(R1), F0 LD F0, -8(R1) ADD F0, F2 SD -8(R1), F0 LD F0, -16(R1) ADD F0, F2 SD -16(R1), F0 LD F0, -24(R1) ADD F0, F2 SD -24(R1), F0 SUBI R1, R1, #32 BNEZ R1, Loop Loop: LD F0, 0(R1) LD F4, -8(R1) LD F6, -16(R1) LD F8, -24(R1) ADD F0,F2 ADD F4,F2 ADD F6,F2 ADD F8,F2 SD 0(R1), F0 SD -8(R1), F4 SUBI R1, R1, #32 SD -16(R1), F6 BNEZ R1, Loop SD -24(R1), F8 3.一个简单的程序: LOADF1, k+1:FADDF1, F2 k+2:FMUL F1, F3 k+3:STORE F1, k+1FADD k+1 F2 k+1F1 k+3 k+2 k+2FMUL k+2 F3 K,k+1FADD k+1 F2 F1 k+1 k+2 k+2 k+2,k+3FMUL k+2 F3 专门设置:AFADD、FMULB、FADDFMUL三条专用 路径。 撤消:F1FADD、F1FMUL、FADDF1 5.4.4Tomasulo动态调度算法 实用的动态调度算法主要有两种: (1)集中控制:CDC计分牌(scorebord)算法, 最先在CDC 6600大型机中采用。 (2)分散控制:Tomasulo算法, 公共数据总线法,令 牌法等。最早在大型机IBM 360/91的浮点处理部件 中被采用。 以上面的一段程序为例说明Tomasulo算法 LOADF1, k+1:FADDF1, F2 k+2:FMUL F1, F3 k+3:STORE F1, 存储器总线指令分析部件 CDB 先行读数站控制 先行操作站 F7 (FLB)(FLOS) F6 (FLR) F3FLB1 F2 F1 10/8控制 后行写数站F0 A312 控制M2 控制A2 11 M1 10(F3) A1 10 (FLB1) (F2) 乘/除法器 加法器 级流水线 处理机的浮点执行部件 控制总线 FLB 总线 单发射与多发射 5.5.3 多流水线 超标量处理机性能 三种主流处理机: 超标量处理机 超流水线处理机 超标量超流水线处理机 以一台 段流水线的普通标量处理机为基准超标量处理机、超流水线处理机和超标量超流水线处理机的主要性能: 机器类型 段流水线标量处理机 超流水线处理机(m,n)度超标量 超流水线处理机 机器流水线周期 指令级并行度ILP 5.5.1基本结构 普通标量流水线处理机: 一条指令流水线,一个多功能操作部件, 每个时钟周期平均执行指令的条数小于1。 多操作部件标量处理机: 一条指令流水线,多个独立的操作部件, 指令级并行度小于1。 超标量处理机典型结构: 多条并行工作的指令流水线,多个独立的操作部件, 指令级并行度(ILP)大于1。 整数 部件 整数 部件 部件浮点 部件乘法 部件 除法 部件 图形 部件 图形 部件 内部总线 读数/存数 部件 通用寄 扩展寄存器堆 目标 指令 Cache 指令分配/ 转移部件 数据 Cache(8KB) 指令 Cache(8KB) 32 位地址总线 位数据总线 系统总线 的结构 Motorola公司的MC88110 有10个操作部件 两个寄存器堆: 整数部件通用寄存器堆,32个32位寄存器 浮点部件扩展寄存器堆,32个80位寄存器 缓冲深度为4的先行读数栈 缓冲深度为3的后行写数栈 两个独立的高速Cache中,各为8KB,采用两路组相联 方式 转移目标指令Cache,用于存放另一条分支上的指令 5.5.2 单发射与多发射 1.单发射处理机: 每个周期只取一条指令、只译码一条指令,只执行一 条指令,只写回一个运算结果。 取指令部件和指令译码部件各设置一套; 只设置一个多功能操作部件或设置多个独立的操作部 操作部件中可以采用流水线结构,也可以不采用流水线结构。 目标是每个时钟周期平均执行一条指令,ILP的期望 2.多发射处理机:每个周期同时取多条指令、同时译码多条指令,同时 执行多条指令,同时写回多个运算结果。 多个取指令部件,多个指令译码部件和多个写结果部 设置多个指令执行部件,有些指令执行部件采用流水线结构。 目标是每个时钟周期平均执行多条指令,ILP的期望 值大于1。 单发射处理机的指令流水线时空图 IDEX WR 时钟周期 IDEX WR IDEX WR 指令 多发射处理机的指令流水线时空图 IDEX WR 时钟周期 IDEX WR IDEX WR IDEX WR IDEX WR IDEX WR IDEX WR IDEX WR IDEX WR 指令 单发射处理机的指令流水线 取指令 指令译码 执行指令 EX 写回结果 FA1 FA2 FA3 浮点加法部件 来自指令 Cache IDMD1 MD2 MD3 WR 通用寄存器 后行写数栈 乘除法部件 AL 定点算术逻辑部件 LS 同时发射两条指令的多发射处理机的指令流水线取指令 指令译码 执行指令 写回结果 FA1 FA2 FA3 浮点加法部件 来自指令 Cache IF1 ID1 MD1 MD2 MD3 WR1 通用寄存器 后行写数栈 乘除法部件 来自指令 Cache IF2 ID2 AL WR2 通用寄存器 后行写数栈 定点算术逻辑部件 LS 3.超标量处理机:有两条或两条以上能同时工作的指令流水线 先行指令窗口:能够从指令Cache中预取多条指令, 能够对窗口内的指令进行数据相关性分析和功能部 件冲突检测。 例如:Intel公司的i860、i960、Pentium,Motolora 公司的MC88110,IBM公司的Power 6000,TI公司生产 SuperSPARC等 操作部件的个数一般多于每个周期发射的指令条数。 通常为4 个至16个操作部件。 超标量处理机的指令级并行度:1<ILP<m 有先行指令窗口的超标量处理机的流水线结构 取指令 指令译码 执行指令 写回结果 FA1 FA2 FA3 浮点加法部件 指令 Cache IF1 ID1 MD1 MD2 MD3 WR1 通用寄存器 后行写数栈 乘除法部件 指令 Cache IF2 ID2 AL WR2 通用寄存器 后行写数栈 定点算术逻辑部件 IF3 ID3 LS 先行指令窗口 5.5.3多流水线调度 顺序发射(in-order issue)与乱序发射(out-order issue): 指令发射顺序是按照程序中指令排列顺序进行的称 为顺序发射 顺序完成(in-order completion)与乱序完成(out-order completion):指令完成顺序是按照程序中指令排列 顺序进行的称为顺序完成 多流水线的调度主要有三种方法: 顺序发射顺序完成 顺序发射乱序完成 乱序发射乱序完成 以如下6条指令组成的程序为例,说明这三种调度方 :LOADR1, :FADDR2, R1 ;R2(R2)+(R1) :FMULR3, R4 ;R3(R3)(R4) :FADDR4, R5 ;R4(R4)+(R5) :DECR6 ;R6(R6)-1 :FMULR6, R7 ;R6(R6)+(R7) 6条指令中有4个数据相关,包括2个写读相关,1个读 写相关和1个写写相关。 1.顺序发射顺序完成 共用10个时钟周期完成 还有8个空闲的时钟周期 顺序发射顺序完成的指令流水线 FA2 WR2 IF1ID1 MD1 MD2 MD3 WR1 IF2ID2 FA1 FA2 FA3 WR2 IF1ID1 AL WR1 IF2ID2 MD1 MD2 MD3 WR2 指令 IF:取指令,ID:指令译码,LS 取数存数,FA:浮点加减法运算, MD:乘除法运算,AL:定点算术逻辑运算 WR:写回运算结果

  在K个流水段的流水线处理机中,第N条指令要修改从第N+1到第N+ K 指令中的任意一条指令,都可能造成程序执行结果发生错误在采用先行控制方式的处理机中,如果执行

http://deafbook.net/xianxingzhilingzhan/203.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有