嵌入式linux应用开发完全手册 关于pc为什么指向下两条指令的位置问题
来源:互联网 发布:如何评价列宁 知乎 编辑:程序博客网 时间:2024/04/28 15:39
流水线技术
2012-02-28 00:53:01| 分类:计算机 | 标签:|字号大中小 订阅
从本质上讲,流水线技术是一种时间并行技术。
计算机的各个部分几乎都可以采用流水线技术:
(1)指令的执行过程可以采用流水线,称为指令流水线。
(2)运算器中的操作部件,如浮点加法器、浮点乘法器等可以采用流水线,称为操作部件流水线。
(3)访问主存的部件可以采用访存部件流水线。多个计算机之间,通过存储器连接,也可以采用流水线,称为宏流水线。
1.顺序执行方式
执行n条指令所用的时间为:
如果每段时间都为t,则执行n条指令所用的时间为:T=3nt
主要优点:控制简单,节省设备
主要缺点:速度慢,功能部件的利用率低
2.一次重叠执行方式
如果两个过程的时间相等,则执行n条指令的时间为: T=(2n+1)t
主要优点:
指令的执行时间缩短
功能部件的利用率明显提高
3.二次重叠执行方式
如果三个过程的时间相等,执行n条指令的时间为:T=3t+(n-1)t=(n+2)t
在理想情况下,处理机中同时有三条指令在执行。
处理机的结构要作比较大的改变,需要采用先行控制技术。
在理想情况下,处理机中同时有三条指令在执行。
处理机的结构要作比较大的改变,需要采用先行控制技术。
流水线的基本参数——吞吐率
吞吐率(Through Put)——在单位时间内流水线所完成的任务数量或输出的结果数。
其中:n为任务数,
Tk为完成n个任务所用的时间。
各段执行时间相等,输入连续任务情况下,完成n个任务需要的总时间为:
Tk=(k+n-1)?t
其中:k 为流水线的段数,?t为时钟周期。
Tk为完成n个任务所用的时间。
各段执行时间相等,输入连续任务情况下,完成n个任务需要的总时间为:
Tk=(k+n-1)?t
其中:k 为流水线的段数,?t为时钟周期。
流水线性能分析
吞吐率(throughput rate)
单位时间内流水线所完成的任务数或输出结果的数量
吞吐率(throughput rate)
单位时间内流水线所完成的任务数或输出结果的数量
加速比(speedup ratio)
完成一批任务,使用非流水线执行时间与使用流水线执行时间之比
效率(efficiency)
(指流水线的设备利用率)从时空图看,就是n个任务占用的时空区和m个段总的时空区之比
特点:
流水线有助于提高整个程序(所有任务)的吞吐率,但并没有减少每个指令(任务)的执行时间
流水线各个功能段所需时间应尽量相等。否则,时间长的功能段将成为流水线的“瓶颈”,会造成流水线的“阻塞”(Stall)
流水线开始需要“通过时间”(Fill)和最后需要“排空时间”(Drain)。流水线只有处理连续不断的任务才能发挥其效率
流水线中存在一些冲突(冒险Hazard,相关、依赖Dependence,竞争Competition)的情况,它使得下一条指令无法在预定设计的时钟周期内执行。这些冲突将降低流水线性能
主要有三种类型的冲突(相关)
结构相关(资源冲突):当指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求
数据相关(数据冲突):在同时执行的多条指令中,一条指令依赖前一条指令的执行结果(数据)
控制相关(控制冲突):流水线遇到分支指令或其他改变PC值的指令
顺序作业
流水线有助于提高整个程序(所有任务)的吞吐率,但并没有减少每个指令(任务)的执行时间
流水线各个功能段所需时间应尽量相等。否则,时间长的功能段将成为流水线的“瓶颈”,会造成流水线的“阻塞”(Stall)
流水线开始需要“通过时间”(Fill)和最后需要“排空时间”(Drain)。流水线只有处理连续不断的任务才能发挥其效率
流水线中存在一些冲突(冒险Hazard,相关、依赖Dependence,竞争Competition)的情况,它使得下一条指令无法在预定设计的时钟周期内执行。这些冲突将降低流水线性能
主要有三种类型的冲突(相关)
结构相关(资源冲突):当指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求
数据相关(数据冲突):在同时执行的多条指令中,一条指令依赖前一条指令的执行结果(数据)
控制相关(控制冲突):流水线遇到分支指令或其他改变PC值的指令
顺序作业
流水线作业
流水线无法帮助解决单个任务的延迟, 有利于减少整个工作全部时间
多个任务同时操作需要不同的资源
可能的加速比=流水线的段数
流水线的速率受速度最慢的流水段的限制
流水线各段长度不均会降低加速比
充满流水线所需的时间和排空流水线所需的时间影响加速比
会由于依赖而造成阻塞
静态流水线与动态流水线静态流水线:同一段时间内,多功能流水线中的各个功能段只能按照一种固定的方式连接,实现一种固定的功能。只有连续出现同一种运算时,流水线的效率才能得到充分的发挥。
动态流水线:在同一段时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。
流水线的其他分类方法按照数据表示方式:
标量流水线和向量流水线
按照控制方式:同步流水线和异步流水线
顺序流水线与乱序流水线,乱序流水线又称为无序流水线、错序流水线或异步流水线等。
- 嵌入式linux应用开发完全手册 关于pc为什么指向下两条指令的位置问题
- 嵌入式Linux应用开发完全手册
- 《嵌入式Linux应用开发完全手册》---开篇
- 《嵌入式LINUX应用完全开发手册》之 MMU 实验
- 《嵌入式LINUX应用开发完全手册》-MMU
- 韦东山《嵌入式Linux应用开发完全手册》配套视频教程
- 《嵌入式linux应用开发完全手册》核心笔记(全)
- 嵌入式Linux应用开发完全手册(二)GPIO
- 嵌入式Linux应用开发完全手册(三)中断
- 嵌入式Linux应用开发完全手册(四)UART
- 嵌入式linux应用开发完全手册学习笔记二(嵌入式linux开发环境搭建)
- ARM嵌入式应用开发完全自学手册
- 嵌入式linux应用开发完全手册学习笔记一(嵌入式开发概述)
- 嵌入式Linux应用开发完全手册(一)嵌入式Linux基础知识
- 嵌入式Linux完全开发手册-------------基础知识(交叉编译工具、Makefile、常用汇编指令)
- GT2440 开发环境搭建 (配合《嵌入式linux应用开发完全手册》)
- 《嵌入式Linux应用开发完全手册》学习笔记——Ubuntu Linux 7.10 硬盘安装
- 嵌入式linux应用开发完全手册学习笔记三(windows、linux下工具使用)
- U.S. Government Closes 64 More Data Centers
- [SPOJ]算数表达式转换成逆波兰式
- Winsock网络编程接口
- 复杂的C 语言声明
- vmware workstation + xen + ubuntu 12.04(Dom 0)环境搭建
- 嵌入式linux应用开发完全手册 关于pc为什么指向下两条指令的位置问题
- JDK5.0中注释(Annotation)的用法
- 黑马程序员_java 进制转换
- 成绩处理器!!!
- SSH框架学习(一、建立web项目)
- 数组分割
- OpenGL VS2005 环境搭建
- poj 3481 sbt 版本
- Apache—DBUtils框架_ 王少飞的个人总结及案例