文档库 最新最全的文档下载
当前位置:文档库 › 流水线指令及RISC

流水线指令及RISC

流水线指令及RISC
流水线指令及RISC

一.流水线

1. 概念:

处理器按照一系列步骤来执行每一条指令.典型的步骤如下:

1) 从存储器读取指令(fetch).

2) 译码以鉴别它是那一类指令(dec).

3) 从寄存器堆取得所需的操作数(reg).

4) 将操作数进行组合以得到结果或存储器地址(ALU).

5) 如果需要,则访问存储器以存取数据(mem).

6) 将结果写回到寄存器堆(res).

并不是所有的指令都需要每一个步骤,但是,多数指令需要其中的多数步骤.这些步

骤往往使用不同的硬件功能,例如,ALU 可能只在第四步中用到.因此,如果一条指令不是在前一条结束之前就开始,那么在每一个步骤内处理器只有少部分的硬体被使用. 有一个明显的方法可以改善硬件资源的使用率和处理器的吞吐量,这就是在当前指

令结束之前就开始执行下一条指令.该技术被称为流水线,是在通用处理器中采用并行算法且非常有效的途径.

采用上述操作顺序,处理器可以这样来组织:当一条指令刚刚执行完步骤1并转向步

骤2时,下一条指令就开始执行步骤1.图1.13说明了这个过程.从原理上来说,这样的流水线应该比没有重叠的指令执行快6倍,但实际上事情并没有这么好,下面我们将会看到原因.

1

2

3 指令

时间

图1.13 流水线的指令执行

2. 流水线中的冒险

要点:后一条指令要用到前一条指令。

在典型的计算机程序中经常会遇到这样的情形,即一条指令的结果被用做下一条指令的操作数.当这种情形发生时,图1.13所示的流水线操作就中断了,因为第一条指令的结果在第二条指令取操作数时还没有产生.第二条指令必须停止,直到结果产生为止.这是流水线的行为如图1.14所示.这是流水线的”写后读”冒险(hazard).

1.

2.

图 1.14 先写后读的流水线冒险

转移指令更会破坏流水线的行为,因为后续指令的取指步骤受到转移目标计算的影响,因而必须推迟.不幸的是,当转移指令正在被译码时,在它被确认为是转移指令

之前,后续的取指操作就发生了.这样一来,读取到的指令就不得不丢弃.如果转移目标计算是在图1.13中流水线的ALU阶段完成的,那么,在得到转移目标之前已经有3条指令按照原有的指令流读取(见图 1.15).如果有可能,最好早一些计算转移目标,尽管这可能需要专门的硬件.如果转移指令具有固定的格式,那么可以(也就是说在确认该指令是转移指令之前)在dec阶段预测计算转移目标,从而将转移的执行时间减少到单个周期.

但是要注意,由于条件转移与前一条指令的条件码结果有关,在这个流水线中还会有条件转移的冒险.

一些RISC体系结构(尽管不是ARM)规定,不管是否进行了转移,转移之后的指令都要执行.这个技术称为延迟转移.

1 (转移)

2

3

4

5(转移目标)

指令时间

图1.15 流水线的转移行为

3.流水线效率

尽管有些技术可以减少这些流水线问题的影响,但是,不能完全消除这些困难.流水线越深(就是流水线的级数越多),问题就说严重.对于相对简单的处理器,使用3~5

即流水线效果会更好.但是,超过了这个级数,收益递减的法则开始生效,增加的成本

和复杂度将超过收益.

例:ARM7 3级流水线ARM9 是5级ARM10是6-7级StrongArm是5级显然,只有当所有指令都依相似的步骤执行时,流水线才能带来好处.如果处理器的指令非常复杂,每一条指令的行为都与下一条指令不同,那么就很难用流水线实

现.1980年,因为有限的硅资源,有限的设计资源,以及设计一个复杂指令集的流水线

的高度复杂性,当时的复杂指令集微处理器没有采用流水线.

二.精简指令计算机

1.RISC体系结构

1)固定的(32位)指令长度,指令类型很少.而CISC处理器指令集的长度一般可变,

指令类型也很多.

2)Load-Store结构,数据处理指令访问寄存器,与访问存储器的指令是分开的.而

CISC处理器一般允许将存储器中的数据作为数据处理指令的操作数.

3)由32个32位寄存器构成大的寄存器堆(register bank),其中所有的寄存器都可以

用于任何用途,以使Load-Store结构有效的工作.虽然CISC寄存器集也加大了,

但是没有那么大,而且大都是不同的寄存器用于不同的用途(例如,Motorola公司

MC68000的数据寄存器和地址寄存器).

这些差别极大的简化了处理器的设计,使设计者在实现体系结构时可以采用以下这些对提高原型机性能由很大作用的,组织方面的特点.

2、RISC的组织

@流水线执行.而CISC处理器即使有,也只允许在连续指令间有极少的重叠(尽管它

们现在允许).

@单周期执行.而CISC处理执行1条指令一般需要多个时钟周期.

3、R ISC的优点.

4)管芯面积小.

简单的处理器需要的晶体管少,需要的硅片面积也小.因此,整个CPU在工艺技

术发展的较早阶段即可在一个芯片内.一旦技术发展超过这一阶段,RISC CPU

就能剩下更多的面积用于实现可以提高性能的功能部件,例如高速缓存,存储器

管理和浮点硬件等等.

5)开发时间短

简单的处理器会占用较少的设计力量,因而设计费用低.它还会更好地投放市场

时的工艺技术相适应(因为开发周期越短,越容易在开发时预测工艺技术的发

展).

6)性能高.

这个优点比较微妙.前面两条优点容易接受,但看看我们周围,高性能总要通过不

断增加复杂度来实现,说RISC有高性能的优点有些使人难以接受.

可以来这样看这个问题:较小的东西具有较高的自然频率(昆虫煽动翅膀的频率

高于小鸟,小鸟山东翅膀的频率高于大鸟等等),所以,简单的处理器应该容许较

高的时钟频率.让我们来设计一个复杂的处理器,但开始时先设计一个简单的,然

后每次增加一条复杂的指令,都会使某些高级的功能更有效率,但是,它也会降低

所有指令所用的时钟频率.我们可以度量对于典型程序总的得失.当我们这样做

的时候,会发现所有复杂的指令都使程序执行变慢了.因此,我们坚持最初的简单

处理器.

使用 3 阶段流水线的例子。

第一阶段持有从内存中取回的指令。第二阶段开始解码,而第三阶段实际执行它。故此,程序计数器总是超出当前执行的指令两个指令。(在为分支指令计算偏移量时必须计算在内)。

因为有这个流水线,在分支时丢失 2 个指令周期(因为要重新添满流水线)。所以最好利用条件执行指令来避免浪费周期。例如:

...

CMP R0,#0

BEQ over

MOV R1,#1

MOV R2,#2

over

...

可以写为更有效的:

...

CMP R0,#0

MOVNE R1,#1

MOVNE R2,#2

...

计算机系统结构考试计算题

3.12 有一指令流水线如下所示 (1) 求连续输入10条指令,该流水线的实际吞吐率和效率; (2) 该流水线的“瓶颈”在哪一段?请采取两种不同的措施消除此“瓶颈”。 对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少? 解:(1) 2200(ns)2009200)10050(50t )1n (t T max m 1 i i pipeline =?++++=?-+?=∑= )(ns 220 1 T n T P 1pipeline -== 45.45%11 5 4400T P m t T P E m 1 i i ≈=? =?? =∑= (2)瓶颈在3、4段。 ? 变成八级流水线(细分) 850(ns)509850t 1)(n t T max m 1 i i pipeline =?+?=?-+?=∑= )(ns 85 1 T n T P 1pipeline -== 58.82%17 10 8400T P m ti T P E m 1 i ≈=? =?? =∑= ? 重复设置部件 出 50ns 50ns 100ns 200ns

)(ns 85 1 T n T P 1pipeline -== 58.82%17 10885010400E ≈=??= 3.13 4段组成,3段时,一次,然4段。如果 需要的时间都是,问: (1) 当在流水线的输入端连续地每时间输入任务时,该流水线会发生 什么情况? (2) 此流水线的最大吞吐率为多少?如果每输入一个任务,连续处理 10个任务时的实际吞吐率和效率是多少? (3) 当每段时间不变时,如何提高该流水线的吞吐率?仍连续处理10个 任务时,其吞吐率提高多少? (2) t ?t ?2

指令流水线

第七章指令流水线 2. 简单回答下列问题。(参考答案略) (1)流水线方式下,一条指令的执行时间缩短了还是加长了?程序的执行时间缩短了还是加长了?为什么? (2)具有什么特征的指令集易于实现指令流水线? (3)流水线处理器中时钟周期如何确定?单条流水线处理器的CPI为多少?每个时钟周期一定有一条指令完成吗?为什么? (4)流水线处理器的控制器实现方式更类似于单周期控制器还是多周期控制器? (5)为什么要在各流水段之间加寄存器?各流水段寄存器的宽度是否都一样?为什么? (6)你能列出哪几种流水线被阻塞的情况?你知道硬件和软件是如何处理它们的吗? (7)超流水线和多发射流水线的主要区别是什么? (8)静态多发射流水线和动态多发射流水线的主要区别是什么? (9)为什么说Pentium 4是“CISC壳、RISC核”的体系结构? 3. 假定在一个五级流水线(如P.205图7.1所示)处理器中,各主要功能单元的操作时间为: 存储单元:200ps;ALU和加法器:150ps;寄存器堆读口或写口:50ps。若执行阶段EX 所用的ALU操作时间缩短20%,则能否加快流水线执行速度?如果能的话,能加快多少? 如果不能的话,为什么?若ALU操作时间增加20%,对流水线的性能有何影响?若ALU 操作时间增加40%,对流水线的性能有何影响? 参考答案: a. ALU操作时间缩短20%不能加快流水线指令速度。因为存储单元的时间为200ps,所 以流水线的时钟周期不会因为ALU操作时间的缩短而变短。 b. ALU操作时间延长20%时,变为180ps,比200ps小,对流水线性能没有影响; c. ALU操作时间延长40%时,变为210ps,比200ps大,所以,流水线的时钟周期将变 为210,其效率降低了(210-200)/200=5%。 4. 假定某计算机工程师想设计一个新CPU,一个典型程序的核心模块有一百万条指令,每条 指令执行时间为100ps。 (1)在非流水线处理器上执行该程序需要花多长时间? (2)若新CPU是一个20级流水线处理器,执行上述同样的程序,理想情况下,它比非流水线处理器快多少? (3)实际流水线并不是理想的,流水段间数据传送会有额外开销。这些开销是否会影响指令执行时间(Instruction latency)和指令吞吐率(Instruction throughput)? 参考答案: (1)非流水线处理器上执行该程序的时间为:100psx106=100μs. (2)若在一个20级流水线的处理器上执行,理想情况下,每个时钟周期为:100/20=5ps, ? 156 ?

并行计算(天津大学软件学院)

并行计算 一、并行计算概述 1.并行计算定义: 并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程。为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。并行计算的主要目的是快速解决大型且复杂的计算问题。此外还包括:利用非本地资源,节约成本―使用多个“廉价”计算资源取代大型计算机,同时克服单个计算机上存在的存储器限制。 为利用并行计算,通常计算问题表现为以下特征: (1)将工作分离成离散部分,有助于同时解决; (2)随时并及时地执行多个程序指令; (3)多计算资源下解决问题的耗时要少于单个计算资源下的耗时。 并行计算是相对于串行计算来说的,所谓并行计算分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。2.并行化方法 1)域分解 首先,确定数据如何划分到各个处理器 然后,确定每个处理器所需要做的事情 示例:求数组中的最大值 2)任务(功能)分解 首先,将任务划分到各个处理器 然后,确定各个处理器需要处理的数据 Example: Event-handler for GUI 二、并行计算硬件环境 1.并行计算机系统结构 1)Flynn分类 a. MIMD 多指令流多数据流(Multiple Instruction Stream Multiple Data Stream,简称MIMD),它使用多个控制器来异步的控制多个处理器,从而实现空间上的并行性。 对于大多数并行计算机而言,多个处理单元都是根据不同的控制流程执行不同的操作,处理不同的数据,因此,它们被称作是多指令流多数据流计算机 b. SIMD 单指令流多数据流(Single Instruction Multiple Data)能够复制多个操作数,并把它们打包在大型寄存器的一组指令集,以同步方式,在同一时间内执行同一条指令。 以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操作数;随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。这个特点使SIMD特别适合于多媒体应用等数据密集型运算。 2)并行计算及结构模型 a. SMP SMP (Symmetric Multiprocessor) 采用商品化的处理器,这些处理器通过总线或交叉开关连接到共享存储器。每个处理器可等同地访问共享存储器、I/O设备和操作系统服务。 扩展性有限。

第05章 流水线课后习题

第5章课后习题 1.填空题 (1) 衡量流水线性能的主要指标有 (2) 指令乱序流动可能造成 (3) 解决数据相关主要有 (4) 超标量处理机开发的是 行性。 (1). 吞吐率、加速比、效率 (2). 先写后读、先读后写、写写 (3). 推后分析、设置专用路径 (4). 空间、时间 2.假设一条指令的执行过程分为"取指令"、"分析"和"执行"三段,每一段的时间分别为△t、2△t和3△t。在下列各种情况下,分别写出连续执行n条指令所需要的时间表达式。 (1) 顺序执行方式。 (2) 仅"取指令"和"执行"重叠。 (3) "取指令"、"分析"和"执行"重叠。 第2题 (1) 顺序执行时每条指令用时=△t+2△t+3△t=6△t, 因此n条指令所需要的时间=6n*△t (2) 第一条指令完成需要时间=△t+2△t+3△t=6△t,根据题义,下一条指令的"取指令"与上一条指令"执行"的最后一个△t重叠。因此,自从第一条指令完成后,每隔4△t完成一条指令。所以余下的n-1条指令用时(n-1)*4△t. 所以,n条指令所需要的时间=6△t+(n-1)*4△t=2(2n+1)△t。 (3) 第一条指令完成需要时间=△t+2△t+3△t=6△t,由于一条指令的"取指令"和"分析"阶段和下一条指令的"执行"阶段重叠,因此,此后每3△t 完成一条指令,余下的n-1条指令用时(n-1)*3△t. 因此n条指令所需要的时间=6△t+(n-1)*3△t=3(n+1)△t

3.用一条5个功能段的浮点加法器流水线计算F=。每个功能段的延迟时间均相等,流水线的输出端与输入端之间有直接数据通路,而且设置有足够的缓冲寄存器。要求用尽可能短的时间完成计算,画出流水线时空图,计算流水线的实际吞吐率、加速比和效率。 第3题 假设每个功能段的延迟时间为△t。 F==[(A1+1A2)+6(A3+2A4)+8(A5+3A6)]+9[(A7+4A8)+7(A9+5A10)] 由上面的时空图可以看出,在20△t时间内共完成9个加法操作。因此: 吞吐率为:TP= 9/20=0.45 加速比为:Sp= 9*5/20=2.5 效率为:E= 45/(20*5)=45% 4.设有一个15000条指令的程序在一台时钟速率为25MHz的线性流水线处理机上执行。假设该指令流水线有5段,并且每个时钟周期发射一条指令。忽略由于转移指令和无序执行造成的损失。 (1) 用该流水线执行这一程序,并用流过延迟与其相等的一个等效非流水线处理机执行同一程序,将两者加以比较,并计算其加速比。 (2) 该流水线处理机的效率是多少? (3) 计算该流水线的吞吐率。 第4题 (1) 等效的非流水处理机执行一条指令需要的时间是5个时钟周期。依照加速比定义, (2) 效率E为

并行计算-习题及答案-第12章 并行程序设计基础

第十二章 并行程序设计基础 习题例题: 1、假定有n 个进程P(0),P(1),…,P(n -1),数组元素][i a 开始时被分配给进程P(i )。试写出求归约和]1[]1[]0[-+++n a a a 的代码段,并以8=n 示例之。 2、假定某公司在银行中有三个账户X 、Y 和Z ,它们可以由公司的任何雇员随意访问。雇员们对银行的存、取和转帐等事务处理的代码段可描述如下: /*从账户X 支取¥100元*/ atomic { if (balance[X] > 100) balance[X] = balance[X]-100; } /*从账户Y 存入¥100元*/ atomic {balance[Y] = balance[Y]-100;} /*从账户X 中转¥100元到帐号Z*/ atomic { if (balance[X] > 100){ balance[X] = balance[X]-100; balance[Z] = balance[Z]+100; } } 其中,atomic {}为子原子操作。试解释为什么雇员们在任何时候(同时)支、取、转帐时,这些事务操作总是安全有效的。 3、考虑如下使用lock 和unlock 的并行代码: parfor (i = 0;i < n ;i++){ noncritical section lock(S); critical section unlock(S); }

假定非临界区操作取T ncs时间,临界区操作取T cs时间,加锁取t lock时间,而去锁时间可忽略。则相应的串行程序需n( T ncs + T cs )时间。试问: ①总的并行执行时间是多少? ②使用n个处理器时加速多大? ③你能忽略开销吗? 4、计算两整数数组之内积的串行代码如下: Sum = 0; for(i = 0;i < N;i++) Sum = Sum + A[i]*B[i]; 试用①相并行;②分治并行;③流水线并行;④主-从行并行;⑤工作池并行等五种并行编程风范,写出如上计算内积的并行代码段。 5、图12.15示出了点到点和各种集合通信操作。试根据该图解式点倒点、播送、散步、收集、全交换、移位、归约与前缀和等通信操作的含义。 图12.15点到点和集合通信操作

并行计算期末试题-理工

并行计算期末试题 适用专业:理工类 考试说明: 1、将试卷答案以学号命名为word文件,如115042101.doc,上传到 ftp://172.17.124.203/upload。 2、第一、二大题,直接将答案写在题后;第三、四题要求将程序补充、编写完 整并将运行结果截图插在题目后面。 一、简述题(每小题4分,共20分)。 1、简述openmp编译制导指令master,single,critical,atomic的功能。 1.master制导语句指定代码段只能被主线程执行 2.single编译制导语句指定内部代码只能由线程组中的一个线程执行。线程组中没有执行single语句的线程会一直等待代码块的结束,使用nowait子句除外。 3.critical制导语句表明域中的代码一次只能由一个线程执行,其他线程被阻塞在临界区 4.atomic制导语句指定特定的存储单元将被原子更新 2、简述openmp编译制导子句shared,private的功能?简述openmp编译制导指令threadprivate的功能。 1.private子句表示它列出的变量对于每个线程是局部的。 2.shared子句表示它所列出的变量被线程组中所有的线程共享,所有线程都能对它进行读写访问。 3.threadprivate语句使一个全局文件作用域的变量在并行域内变成每个线程私有,每个线程对该变量复制一份私有拷贝并在多个并行域中保持。 3、简述openmp函数omp_set_num_threads,omp_get_num_threads, omp_get_thread_num的功能;环境变量OMP_NUM_THREADS的功能。 omp_set_num_threads

计算机系统结构实验一流水线指令调度

计算机专业类课程 实 验 报 告 课程名称:计算机系统结构 学院:计算机科学与工程 专业:计算机科学与技术 学生姓名:林怡 学号:2012060020023 指导教师:叶娅兰 日期:2015年 5月 5日 电子科技大学计算机学院实验中心

电 子 科 技 大 学 实 验 报 告 实验一 一、实验名称:流水线指令调度 二、实验学时:4 三、实验内容和目的: 实验目的: 1. 通过本实验,理解指令调度的方法。 2.掌握使用VC 开发平台模拟处理机内部指令流调度的编程策略。 实验内容: (一)给定要执行的任务和执行该任务的流水线结构 流水线的调度方式能够提高任务的并行度,但是针对不同的任务,由于相关的存在,其并行度的提高是不一致的。在开始程序设计前,我们首先要给定所要完成的任务: 这里我们使用最简单的累加操作∑=n 1i Ai 。 n 的数值可以变化,通过变换n 的值用同一程 序进行多次模拟。 给定流水线: 流水线分四个步骤,每个步骤的执行时间均为一个单位时间。 (二)对任务进行分解 任务分解的目的是为了减少相关。例如n =4时,任务分解为 A1+A2、A3+A4、 A1+A2+A3+A4 三个加法操作。 如果n 的大小是未知的,任务该怎样分解呢?换而言之,在程序模拟中,有没有一种通行的分解处理方式,可以实现对任意数目的源数据的累加的分解? (三)任务分解程序模拟的思路 首先,Ai 是对称的,Ai 和Aj 都是一个源操作,任意更换其相对位置,计算的累加和的结果是不变的。每次的加法操作能执行的必要条件是存在两个源数据,因此我 1 2 3 4 X Y

们可以把所有的源数据放入一个队列中,只要该队列中有两个源,那么就执行加法,加法计算的结果是下一次计算的源数据,我们把它再放回源数据队列,直到对列中只剩一个数据、同时加法流水线中没有执行加法操作时,整个累加过程完成。 (四)加法流水线的设计 加法流水线分为四个步骤,每个步骤时间花费是一个单位时间。模拟程序的目的是为了计算总的执行时间,因此对于每个步骤执行的功能并不需要关心。 为此设计一个总步数为4步的加法器,接收两个输入数据,经过4个时间片,输出加法的结果。时间片可以用定时器来模拟。 (五)程序设计 程序应包括一个队列,一个加法类,一个定时器,一个输出对话框。 队列用于存放源数据,一开始将n个源数据A1-An放入。 启动定时器,每一个时间片从队列中取出两个源数据,送入加法器(可以通过调用加法器中接口函数,把源数据作为参数传入)。 构造加法器类,可以考虑用一个长度对4的执行队列来模拟4个步骤,每个时间片将队列的数据依次下压一格,队列尾的数据进行加法计算并将结果压入源数据队列。 用一个记数值表示时间开销,每个时间片对该记数值加1。 当源队列只剩一个数据且加法器的执行队列为空时,整个程序结束,记数器的值就是任务执行的总体时间花费。 (五)多次模拟 可以通过循环的方式对n从4-20进行循环,将每次模拟运行的时间开销值在对话框中显示出来。如果可能将结果打印。 四、实验原理: 程序设计及数据结构: 实验程序共有6个类,分别是: ①PipeAdditionTest 公共类,测试程序,每一个n的循环,将计时器清零并初始化长度为n的源操作数队列,当源操作数队列有多余一个操作数或者加法器的执行队列不为空的时候持续调用加法器类执行加法操作,在程序结束时输出n以及计时器timercounter的值; ②OperaQueue 操作数队列类,包括一个操作数队列数据结构、队列初始化函数OperaQueue(int queueLength)、从队列中取一个源操作数函数getOperationNum()和将加法器计算的结果压入队尾的函数pushOperationNum(int op); 电子科技大学计算机学院实验中心

流水线指令及RISC

一.流水线 1. 概念: 处理器按照一系列步骤来执行每一条指令.典型的步骤如下: 1) 从存储器读取指令(fetch). 2) 译码以鉴别它是那一类指令(dec). 3) 从寄存器堆取得所需的操作数(reg). 4) 将操作数进行组合以得到结果或存储器地址(ALU). 5) 如果需要,则访问存储器以存取数据(mem). 6) 将结果写回到寄存器堆(res). 并不是所有的指令都需要每一个步骤,但是,多数指令需要其中的多数步骤.这些步 骤往往使用不同的硬件功能,例如,ALU 可能只在第四步中用到.因此,如果一条指令不是在前一条结束之前就开始,那么在每一个步骤内处理器只有少部分的硬体被使用. 有一个明显的方法可以改善硬件资源的使用率和处理器的吞吐量,这就是在当前指 令结束之前就开始执行下一条指令.该技术被称为流水线,是在通用处理器中采用并行算法且非常有效的途径. 采用上述操作顺序,处理器可以这样来组织:当一条指令刚刚执行完步骤1并转向步 骤2时,下一条指令就开始执行步骤1.图1.13说明了这个过程.从原理上来说,这样的流水线应该比没有重叠的指令执行快6倍,但实际上事情并没有这么好,下面我们将会看到原因. 1 2 3 指令 时间 图1.13 流水线的指令执行 2. 流水线中的冒险 要点:后一条指令要用到前一条指令。 在典型的计算机程序中经常会遇到这样的情形,即一条指令的结果被用做下一条指令的操作数.当这种情形发生时,图1.13所示的流水线操作就中断了,因为第一条指令的结果在第二条指令取操作数时还没有产生.第二条指令必须停止,直到结果产生为止.这是流水线的行为如图1.14所示.这是流水线的”写后读”冒险(hazard). 1. 2. 图 1.14 先写后读的流水线冒险 转移指令更会破坏流水线的行为,因为后续指令的取指步骤受到转移目标计算的影响,因而必须推迟.不幸的是,当转移指令正在被译码时,在它被确认为是转移指令

自动化生产流水线节拍、设备利用率计算

自动化生产流水线节 拍、设备利用率计算-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

自动化生产流水线节拍 流水线的负荷系数又称编程效率,其值越大,表明流水线的生产效率越高。 流水线上总负荷系数可按下列公式计算: η=T/(N×Pt) 其中η为负荷系数 Pt为生产节拍=计划期有效工作时间/计划期产品产量 =标准总加工时间/作业员人数 =有限机种的标准总加工时间/有限机种台数 N为工位数 T为所有工位完成一个节拍所用时间之合 一般以工作地(机器)作计算单元的,流水线的负荷系数不应低于;以操作工人作计算单位的,其流水线的负荷系数应在-以上。 举个例子 某一新开设的丁恤衫制衣厂,生产目标为每日1000件T恤杉、每日工作8h。生产工序和每个工序的日产量如表所示 工序名称 8H产量 1装袋 320 2缝肩 1000 3缝领 500 4缝袖 950 5上袖 400 6上领 480 7车边 1050 8开门 900 9钉纽 950 ①计算这条生产线的生产节拍Pt Pt=H/Q=8×60/1000=/件 ②计算每个工序所需的标准作业时间,结果如表5-8 ③计算每个工位所需的工位数,结果列于表5-8 例如,第一个工序的作业时间 第一个工序理论上所需的工位数= 15/=个 工序名称作业之间计算工位数实际工位 1 3 2 1 1 3 2 2 4 1 5 3 6 2 7 1 8 1 9 1 合计 15 ④计算出理论上该生产线所需的最小工作位数,即

Nmin=[T/Pt]+1=[]+1=15个 ⑤计算该生产线平衡后的平均负荷率 η=T/(N×Pt)×100%=(15× ×100%=& 依照工序流程安排生产线,首先要按照每个工序的难易程度,计算出各工序所需的工作位数目,务必使各工序每小时的总产量大致相同,才能得到一条子衡的生产线,例1中该生产线平衡后实际的节拍应为(瓶颈工作地节拍),平衡后的工序负荷率为%。 流程的“节拍”(Cycle time)是指连续完成相同的两个产品(或两次服务,或两批产品)之间的间隔时间。换句话说,即指完成一个产品所需的平均时间。节拍通常只是用于定义一个流程中某一具体工序或环节的单位产出时间。如果产品必须是成批制作的,则节拍指两批产品之间的间隔时间。在流程设计中,如果预先给定了一个流程每天(或其它单位时间段)必须的产出,首先需要考虑的是流程的节拍。在机械加工生产线的设计中,节拍是设计的一个很重要的因素。生产节拍的平衡很重要。生产节拍的公式为t=60Tβ/N 式中t为生产节拍,T为一年基本工时,一般规定,按一班制工时为2360h/年,按两班制工时为4650h/年;β为复杂系数,一般取为;N为生产线加工工件的年生产纲领。机械加工生产线的主要分类有:单一产品固定节拍生产线、单一产品非固定节拍生产线、成组产品可调节生产线、柔性制造生产线。

流水线设计步骤

1.计算流水线的节拍 流水线、自动化流水线的节拍就是顺序生产两件相同制品之间的时间间隔。 它表明了流水线生产率的高低,是流水线最重要的工作参数。其计算公式如下:r=F/N 其中:r—流水线的节拍(分/件),F—计划期内有效工作时间(分),N—计划期的产品产量(件).这里:F=F0K,F0—计划期内制度工作时间(分),K—时间利用系数。 确定系数K时要考虑这样几个因素:设备修理、调整、更换模具的时间,工人休息的时间。一般K取0.9—0.96,两班工作时间K取0.95,则F为:F=FOK=306×2×8×0.95 ×60=279072(分) 计划期的产品产量N.除应根据生产大纲规定的出产量计算外,还应考虑生产中不可避免的废品和备品的数量。 当生产线、生产线制造上加工的零件小,节拍只有几秒或几十秒时,零件就要采用成批运输,此时顺序生产两批同样制品之间的时间间隔称为节奏,它等于节拍与运输批量的乘积。流水线采取按批运输制品时,如果批量较大,虽然可以简化运输工作,但流水线的在制品占用量却要随之增大。所以对劳动量大、制件重量大、价值高的产品应采用较小的运输批量;反之,则应扩大运输的批量。 进行工序同期化,计算工作地(设备)需要量 流水线的节拍确定以后,要根据节拍来调节工艺过程,使各道工序的时间与流水线的节拍相等或成整数倍比例关系,这个工作称为工序同期化。工序同期化是组织流水线的必要条件,也是提高设备负荷和劳动生产率、缩短生产周期的重要方法。 进行工序同期化的措施有: ①提高设备的生产效率。可以通过改装设备、改变设备型号、同时加工几 个制件来提高生产效率; ②改进工艺装备。采用快速安装卡具、模具,减少装夹零件的辅助时间; ③改进工作地布置与操作方法,减少辅助作业时间; ④提高工人的工作熟练程度和效率; ⑤详细地进行工序的合并与分解。首先将工序分成几部分,然后根据节拍 重新组合工序,以达到同期化的要求,这是装配工序同期化的主要方法。 工序同期化以后,可以根据新确定的工序时间来计算各道工序的设备需要量,它可以用下式计算: m(i)=t(i)/r 式中:mi—第i道工序所需工作地数(设备台数),ti—第i道工序的单件时间定额(分)包括工人在传送带上取放制品的时间。一般来说,计算出的设备数不是整数,所取的设备数为大于计算数的邻近整数。若某设备的负荷较大,就应转移部分工序到其它设备上或增加工作时间来减少设备的负荷。

北邮实验二 指令流水线相关性分析

北京邮电大学 计算机学院 《计算机系统结构》课程实验 2015年4月

实验二指令流水线相关性分析 一、实验类别:验证实验 二、实验目的:通过使用WINDLX模拟器,对程序中的三种相关现 象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。 三、实验学时:4 四、实验组人数:1/1 五、实验设备环境:WinDLX模拟器可以装入DLX汇编语言程序, 然后单步、设置断点或者连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。模拟器还提供了对流水线操作的统计功能。该模拟器对理解流水线和RISC处理器的特点很有帮助。 六、实验原理:指令流水线中主要有结构相关、数据相关、控制相 关。相关影响流水线性能。 七、教学要点与学习难点:三种相关及其解决办法 八、实验内容和要求:使用WinDLX模拟器,对求阶乘程序Fact.s 做分析 九、实验步骤: (1)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。 (2)考察增加浮点运算部件对性能的影响。 (3)考察增加forward部件对性能的影响。 (4)观察转移指令在转移成功和转移不成功时候的流水线开销注意:除(2)以外,浮点加、乘、除部件都只有一个;本问题中所有浮点运算部件的延时都请设定为4个周期。

十、实验过程: 同实验一、选择File/Load Code or Data,窗口中会列出目录中所有汇编程序。按如下步骤操作,可将这两个文件装入主存。 ?点击fact.s ? 点击select 按钮?点击input.s ? 点击select按钮?点击load按钮 以下3个相关的观察实验(floating为1,4) 数据相关及指令组合: 在第27个周期里,Clock Cycle Diagram窗口的时空图和Pipeline窗口中的流图第一次出现了橘黄色的R-Stall。点击Pipeline的橘黄色框,出现的Information about seqi r5,r3,0xa中有图: lbu r3,0x0(r2)要在WB周期写回r3中的数据,而下一条指令seqi r5,r3,0xa 要在intEX周期中读取r3中的数据。发生了写读相关。所以为了避免冲突,seqi r5,r3,0xa的intEX指令延迟了一个周期进行。 相关指令组合 控制相关及指令组合: 在第四时钟周期,第一条命令正处于MEM段,第二条命令处于intEX段,第四条命令处于IF段,而第三条命令处于"aborted"。

指令流水线技术研究

指令流水线技术研究 摘要:流水线技术是当前指令集处理器设计中广泛采用的技术。首先介绍了有关流水线的基础知识,包括概念、特点、分类及其主要性能指标。然后提出了三条流水线理想假设,并由此得出了指令流水线设计的三大挑战,从而指出了在指令流水线设计时应重点解决的三大问题和设计方法。最后是对该技术的总结与展望。 关键字:指令流水线;概念;性能指标;理想假设;处理器设计; 前言 流水线技术是提高系统吞吐率的一项强大的实现技术,并且不需要大量重复设置硬件。20世界60年代早期的一些高端机器中第一次采用了流水线技术。第一个采用指令流水线的机器是IBM7030(又称作Stretch计算机)。后来的CDC 6600同时采用了流水线和多功能部件。 到了20世纪80年代,流水线技术成为RISC处理器设计方法中最基本的技术之一。RISC设计方法的大部分技术都直接或者间接以提高流水线性能为目标。从此以后,流水线技术也被有效地应用到CISC处理器的设计中。Intel i486是IA32体系结构中的第一个流水线实现。Digital的VAX和Motorola的M68K的流水线版本在商业上也取得了成功。 流水线技术是当前指令集处理器设计中广泛采用的技术。在这里我们将重点放在(标量)流水线处理器的设计。流水线处理器设计中的许多方法和技术,例如用于检测和化解相关的流水线互锁机制,都是标量处理器设计的基本方法。 1 流水线基础 加快机器语言的解释过程提高机器的运算速度是设计计算机的基本任务之一。这可以通过两个途径来实现。一个途径是提高器件的速度,采用更好的算法,增加指令内各微操作的并行程度,减少解释过程所需要的拍数等多项措施来加快机器指令的解释。另一个途径则是采用重叠和流水方法,同时解释两条、多条以至整段程序,从而加快整个机器语言程序的解释。流水线技术是目前广泛应用于

北邮大三计算机体系结构实验二指令流水线相关性分析

实验二指令流水线相关性分析 1、实验目的 通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。 2、实验原理 指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。  3、 实验步骤 (1) 观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。 数据相关指令: lbu r3,0x0(r2) seqi r5,r3,0xa 不采用定向技术

lbu r3,0x0(r2)要在WB周期写回r3中的数据,而下一条指令seqi r5,r3,0xa 要在intEX周期中读取r3中的数据。发生了写读相关。所以为了避免冲突,seqi r5,r3,0xa的intEX指令延迟了一个周期进行。 控制相关指令: addi r1, r0 , 0x1000 jal InputUnsigned movi2fp f10,r1 sw SaveR2[r0],r2 跳转指令,从执行的Fact.s中的movi2fp指令跳至Input.s中的Unsigned标号处。开始输入处理 结构相关指令:

add r1,r1, r3 addi r2, r2, 0x1 addi r2, r2, 0x1 该指令与它前面的一条指令 add r1,r1, r3发生了结构相关。由于上一条指令由于数据相关需要停4个周期,在ID段后停滞,不能进入intEX段,故addi r2,r2,0x1 就不能进入ID段,译码部分已经被占用。故发生了结构相关。 (2) 考察增加浮点运算部件对性能的影响。 1个浮点运算单元 3个浮点运算单元

指令流水线的计算

若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间分别是t取指=2ns ,t 分析=2ns,t 执行=1ns。则100 条指令全部执行完毕需 (4) ns。 (4)A.163 B.183 C.193 D.203 答案:D 本类题有两类: 第一类是各指令段,有同步时间,即有指令流操作周期.当某指令段执行完毕后,必须等到下一个操作周期来临时,才能执行下一条指令的相同段.第一题与2005年的题就是这样.其计算公式是: (指令所分段数-1)*指令流操作周期 +指令数*指令流操作周期. 第二类是各指令段,没有同步时间,每段执行完毕,不需要等待,直接执行下一条执令相同的段.2006的题就是这个.其计算方法是 第一条指令执行时间+(指令数-1)*各指令段执行时间中最大的执行时间 ========================================================== 本题为第二类:(2+2+1)+(100-1)*2=203 指令流水线的计算 1.现有四级指令流水线,分别完成取指、取作的时间依次为数、运算、传送结果四步操作。若完成上述操9ns、10ns、6ns、8ns。则流水线的操作周期应设计为(1)n s。(1)A.6B.8C.9D.10 试题解析:取最大的那个微指令时间作为流水线操作周期。答案:D 2.若每一条指令都可以分解为取指、分析和执行三步。已知取指时间t取指=4△t,分析时间t分析=3△t,执行时间t执行=5△t。如果按串行方式执行完100条指令需要(2)△t。如果按照流水方式执行,执行完100条指令需要(3)△t。 (2)A.1190B.1195C.1200D.1205(3)A.504B.507C.508D.510 试题解析:串行执行时,总执行时间=100×(t取指+ t分析+ t执行) =100×12△t=1200△t。 连续两条指令的执行时间差为t执行= 5△t,因此100条指令的总执行时间=(t取指+ t分析+ t执行)+99×t执行= 507△t。 答案:(2)C(3)B

自动化生产流水线节拍、设备利用率计算

自动化生产流水线节拍 流水线的负荷系数又称编程效率,其值越大,表明流水线的生产效率越高。 流水线上总负荷系数可按下列公式计算: η=T/(N×Pt) 其中η为负荷系数 Pt为生产节拍=计划期有效工作时间/计划期产品产量 =标准总加工时间/作业员人数 =有限机种的标准总加工时间/有限机种台数 N为工位数 T为所有工位完成一个节拍所用时间之合 一般以工作地(机器)作计算单元的,流水线的负荷系数不应低于0.75;以操作工人作计算单位的,其流水线的负荷系数应在0.85-0.9以上。 举个例子 某一新开设的丁恤衫制衣厂,生产目标为每日1000件T恤杉、每日工作8h。生产工序和每个工序的日产量如表所示 工序名称8H产量 1装袋320 2缝肩1000 3缝领500 4缝袖950 5上袖400 6上领480 7车边1050 8开门900 9钉纽950 ①计算这条生产线的生产节拍Pt Pt=H/Q=8×60/1000=0.48min/件 ②计算每个工序所需的标准作业时间,结果如表5-8 ③计算每个工位所需的工位数,结果列于表5-8 例如,第一个工序的作业时间 第一个工序理论上所需的工位数= 15/0.48=3.1个 工序名称作业之间计算工位数实际工位 1 1.5 3.1 3 2 0.48 1 1 3 0.96 2 2 4 0.51 1.1 1 5 1.2 2.5 3 6 1.0 2.1 2 7 0.46 0.95 1 8 0.53 1.1 1 9 0.51 1.05 1 合计7.15 14.90 15 ④计算出理论上该生产线所需的最小工作位数,即

Nmin=[T/Pt]+1=[7.15/0.48]+1=15个 ⑤计算该生产线平衡后的平均负荷率 η=T/(N×Pt)×100%=7.15/(15×0.53) ×100%=89.9& 依照工序流程安排生产线,首先要按照每个工序的难易程度,计算出各工序所需的工作位数目,务必使各工序每小时的总产量大致相同,才能得到一条子衡的生产线,例1中该生产线平衡后实际的节拍应为0.53min(瓶颈工作地节拍),平衡后的工序负荷率为89.9%。 流程的“节拍”(Cycle time)是指连续完成相同的两个产品(或两次服务,或两批产品)之间的间隔时间。换句话说,即指完成一个产品所需的平均时间。节拍通常只是用于定义一个流程中某一具体工序或环节的单位产出时间。如果产品必须是成批制作的,则节拍指两批产品之间的间隔时间。在流程设计中,如果预先给定了一个流程每天(或其它单位时间段)必须的产出,首先需要考虑的是流程的节拍。在机械加工生产线的设计中,节拍是设计的一个很重要的因素。生产节拍的平衡很重要。生产节拍的公式为 t=60Tβ/N 式中t为生产节拍,T 为一年基本工时,一般规定,按一班制工时为2360h/年,按两班制工时为4650h/年;β为复杂系数,一般取为0.65-0.85;N为生产线加工工件的年生产纲领。机械加工生产线的主要分类有:单一产品固定节拍生产线、单一产品非固定节拍生产线、成组产品可调节生产线、柔性制造生产线。

关于ARM指令流水线知识

关于ARM指令流水线知识 (周方辉) 2012/10/22 目录 1 参考文献 (2) 1.1 内部参考文献 (2) 1.2 外部参考文献 (2) 2 名词解释 (2) 3 指令执行三步骤 (2) 4 指令流水线(ARM指令) (3) 4.1 三级指令流水线 (3) 4.2 五级指令流水线 (5) 4.3 六级指令流水线 (6) 4.4 其它级指令流水线 (6)

1参考文献 1.1内部参考文献 内部参考文献指的是周方辉自生的百度博文中的文件。 无内部参考文献。 1.2外部参考文献 外部参考文献指的是相对于上述内部参考文献以外的文件。 无外部参考文献 2名词解释 CPI:指令周期数,一段时间内走过的指令时钟数除以被执行的指令条数,CPI>=1。 F:Fetch的缩写,取指令的意思,用在分析指令流水线中。 D:Decode,解指令码,用在分析指令流水线中。 E:Execute,执行指令,用在分析指令流水线中。 M:Memory,内存操作。 W:W riteback回写。 S:Stall,拖延clock。 L:Linkret,连接返回。 A:Adjust,调整流水线。 DI:Decode IRQ解析中断指令。 EI:Execute IRQ执行中断指令。 I:Interlock,内部锁状态。 3指令执行三步骤 一般计算机指令码与数据码没有区别,存在内存中,都属于二进制数字信息。指令码和数据码的区别是一般用PC指针从内存中读取的数据为指令码,否则就当数据码处理。 到目前为止,一般计算机执行指令是用CPU部件来执行的,通常分成: 1、获取指令,通过PC指针,从内存中获取指令码; 2、解析指令,使用CPU内部的指令解码器对指令码进行解析,从而得知指令功能。

1、设一条流水线的执行过程分成取指令、分析指令和执行指令三个阶段

1、设一条流水线的执行过程分成取指令、分析指令和执行指令三个阶段,每个阶段所需的时间分别为t、t和2t,分别求出下列各种情况下,连续执行N条指令所需的时间。 (1)顺序执行方式; (2)只有取指令和执行指令重叠执行; (3)取指令、分析指令和执行指令重叠执行; 2、有一条流水线如下所示 (1)求连续输入10 条指令,该流水线的实际吞吐率和效率; (2)该流水线的瓶颈在哪一段?请采取2种不同的措施消除此“瓶颈”。对于你所给出的新流水线,计算连续输入10 条指令时,其实际吞吐率和效率; 3、在改进的DLX 流水线上运行如下代码序列: LOOP: LW R1, 0(R2) ADDI R1, R1, # 1 SW 0(R2), R1 ADDI R2, R2, # 4 SUB R4, R3, R2 BNEZ R4, LOOP 其中,R3 的初始值是R2+396。假设:在整个代码序列的运行过程中,所有的存储器访问都是命中的,并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存器“定向”。问: (1)在没有任何其它定向(或旁路)硬件的支持下,请画出该指令序列执行的流水线时空图。假设采用排空流水线的策略处理分支指令,且所有的存储器访问都可以命中Cache,那么执行上述循环需要多少个时钟周期? (2)假设该DLX 流水线有正常的定向路径,请画出该指令序列执行的流水线时空图。假设采用预测分支失败的策略处理分支指令,且所有的存储器访问都可

以命中Cache,那么执行上述循环需要多少个时钟周期? (3)假设该DLX 流水线有正常的定向路径,请对该循环中的指令进行调度。注意可以重新组织指令的顺序,也可以修改指令的操作数,但是不能增加指令的条数。请画出该指令序列执行的流水线时空图,并计算执行上述循环需要的时钟周期数? 4.根据需要展开下面的循环并且进行指令调度,直到没有任何延迟。指令的延迟如表: Code: Loop: LD F0,0(R1) MULTD F0,F0,F2 LD F4,0(R2) ADDD F0,F0,F4 SD 0(R2),F0 SUBI R1,R1,8 SUBI R2,R2,8 BNEQZ R1,LOOP 5.列举下面循环中的所有相关,包括输出相关,反相关,真相关和循环相关。

arm五级流水线

ARM流水线关键技术分析与代码优化 时间:2009-03-30 10:15:21 来源:单片机与嵌入式系统作者:大连理工大学邱铁西方迟宗正 引言 流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一。ARM7处理器核使用了典型三级流水线的冯·诺伊曼结构,ARM9系列则采用了基于五级流水线的哈佛结构。通过增加流水线级数简化了流水线各级的逻辑,进一步提高了处理器的性能。 ARM7的三级流水线在执行单元完成了大量的工作,包括与操作数相关的寄存器和存储器读写操作、ALU操作以及相关器件之间的数据传输。执行单元的工作往往占用多个时钟周期,从而成为系统性能的瓶颈。ARM9采用了更为高效的五级流水线设计,增加了2个功能部件分别访问存储器并写回结果,且将读寄存器的操作转移到译码部件上,使流水线各部件在功能上更平衡;同时其哈佛架构避免了数据访问和取指的总线冲突。 然而不论是三级流水线还是五级流水线,当出现多周期指令、跳转分支指令和中断发生的时候,流水线都会发生阻塞,而且相邻指令之间也可能因为寄存器冲突导致流水线阻塞,降低流水线的效率。本文在对流水线原理及运行情况详细分析的基础上,研究通过调整指令执行序列来提高流水线运行性能的方法。 1 ARM7/ARM9流水线技术 1.1 ARM7流水线技术 ARM7系列处理器中每条指令分取指、译码、执行三个阶段,分别在不同的功能部件上依次独立完成。取指部件完成从存储器装载一条指令,通过译码部件产生下一周期数据路径需要的控制信号,完成寄存器的解码,再送到执行单元完成寄存器的读取、ALU运算及运算结果的写回,需要访问存储器的指令完成存储器的访问。流水线上虽然一条指令仍需3个时钟周期来完成,但通过多个部件并行,使得处理器的吞吐率约为每个周期一条指令,提高了流式指令的处理速度,从而可达到O.9 MIPS/MHz的指令执行速度。 在三级流水线下,通过R15访问PC(程序计数器)时会出现取指位置和执行位置不同的现象。这须结合流水线的执行情况考虑,取指部件根据PC取指,取指完成后PC+4送到PC,并把取到的指令传递给译码部件,然后取指部件根据新的PC取指。因为每条指令4字节,故PC值等于当前程序执行位置+8。 1.2 ARM9流水线技术 ARM9系列处理器的流水线分为取指、译码、执行、访存、回写。取指部件完成从指令存储器取指;译码部件读取寄存器操作数,与三级流水线中不占有数据路径区别很大;执行部件产生ALU运算结果或产生存储器地址(对于存储器访问指令来讲);访存部件访问数据存储器;回写部件完成执行结果写回寄存器。把三级流水线中的执行单元进一步细化,减少了在每个时钟周期内必须完成的工作量,进而允许使用较高的时钟频率,且具有分开的指令和数据存储器,减少了冲突的发生,每条指令的平均周期数明显减少。 2 三级流水线运行情况分析 三级流水线在处理简单的寄存器操作指令时,吞吐率为平均每个时钟周期一条指令;但是在存在存储器访问指令、跳转指令的情况下会出现流水线阻断情况,导致流水线的性能下降。图1给出了流水线的最佳运行情况,图中的MOV、ADD、SUB指令为单周期指令。从T1开始,用3个时钟周期执行了3条指令,指令平均周期数(CPI)等于1个时钟周期。

相关文档
相关文档 最新文档