文档库 最新最全的文档下载
当前位置:文档库 › 关于ARM指令流水线知识

关于ARM指令流水线知识

关于ARM指令流水线知识
关于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内部的指令解码器对指令码进行解析,从而得知指令功能。

3、执行指令,按照解码器得知的功能,CPU调用相应部件来执行该条指令。

三个步骤完成,我们可以抽象理解成,每条指令都通过:取指令模块——>解析指令模块——>执行指令模块,这三个模块。如下图所示:

这三个步骤的协调工作是依靠指令时钟来推动完成的,,指令时钟并不等于CPU的时钟,一个指令时钟可能有几个CPU时钟组成,这看具体的CPU而定。

每个步骤至少需要一个指令时钟来完成。如执行指令这模块,可能要完成内存访问,即数据向内存回写等,就需要多个指令时钟了。

如何让最少的指令时钟执行更多的指令,成为CPU对指令执行速度的标志之一,我们使用CPI值来指示这一特征。

CPI是指在一定的时间范围内,指令时钟除以被执行了的指令条数。CPI值总是大于1,越接近1,表明CPU执行指令越块。

为此,诞生了指令流水线感念。

4指令流水线(ARM指令)

我们为了提升CPU的指令执行速度,就希望取值、解码和执行3个模块同时都处于工作状态,例如,当我们第一条指令在执行时,第二条指令处于解码阶段,二第三条指令已被读到CPU中;当我们执行第二条指令时,第三条指令处于解码阶段,而第四条指令已被读到CPU中。这样对指令的执行就处于流水线操作状态。这就是指令流水线的概念。

4.1三级指令流水线

ARM公司的ARM7核使用三级流水线。

1、Fetch:只负责通过PC从内存中读取指令码数据。

2、Decode:要完成Thumb和ARM指令的识别、功能和参与寄存器的设别。

3、Execute:调用寄存器、ALU(及Shift)运算单元,和内存及寄存器的回写功能来完

成操作。

三级指令执行流水线,正好将三个模块充分使用。我们举例说明其工作机制:

假设我们有下面这几条指令被执行(仅仅给出指令功能码):

从上述图表看出,从第5个指令时钟开始,CPU指令执行的各个模块都处于工作状态,每一个指令时钟都有一条指令被执行完成。

从第1个指令时钟开始到第10个指令时钟,一共11个指令时钟,这期间共有6条指令被执行,CPI值达1.8(11/6=1.8333);假设,我们从第5个指令时钟开始算,到第10个指令时钟,共花费6个指令时钟,一共执行6条指令,这时,我们的CPI=1(6/6=1),这是理想状态下的CPU最快执行指标。

上述三级流水线仅仅理想状态下,如果我们有内存访问指令如LDR Rd,[Rn],CPI就不能达到1了,因为内存访问需要消耗指令时钟。例如,我们将上述的第3条指令ORR改成LDR类(或者STR类)指令,其指令流水线如下:

在第3条LDE指令的执行阶段多插入连个指令周期来完成M和W动作(从内存中取出数据放入寄存器中)。这样一来,从第5个指令时钟到第12个指令时钟,共花费8个,而执行了6条指令,CPI=1.3(8、6=1.3333),降慢了CPU对指令执行速度。

不仅如此,遇到分支跳转指令,原先已经取得的指令和解码的指令都将废弃,从分支的新的指令地址开始从新装配流水线,CPI值也会上升。遇到中断类的是他就更加严重,中断的识别,跳转等都需要消耗大量指令时钟,CPI值上升得更加快。

4.2五级指令流水线

ARM的五级指令流水线是在执行阶段中,添加两级,用来专门执行M和W之类功能,ARM9就使用了5级流水线。

也就是当我们执行STR(或者LDR,内存与寄存器访问)之类指令时,将内存访问和寄存器回写功能交付给Memory Acess和Register Write流水线来完成,它们的指令时钟将于后续指令的取指、解码和执行的指令时钟共用,从而它们不单独消指令时钟。这样就保证了指令执行又处于CPI=1状态。

不过,这种方式也有缺陷。当相邻两条指令同时出现相同的寄存器时,并且前一条指令是带有内存操作的,例如:

LDR R4,[R2] 将R2指定的内存中的数据加载到R4中

SUB R3,R4,R5 将R4-R5值保存到R3中。

因为LDR对R4的操作依赖于第4和第5条流水线,而这两条流水线执行,又是与后面SUB

指令共用指令时钟,也就是两条指令将会同时访问R4寄存器,将产生冲突。这时,系统将插入一个interlock互锁指令时钟来完成,也就是,依旧采用添加指令时钟(提升CPI值)方式解决。当然用户也可调整一下程序顺序,或在其之间插入一条其它指令来缓和该问题,当然纸条指令必须是必要的,否则还不如不加。

这种想象经常发生在LDM和STM等与内存访问密切相关的指令中。

4.3六级指令流水线

引起CPI值上升的还有另外一个重要的原因就是跳转分支指令。ARM10采用六级流水线,其在五级流水线基础上,在FETCH中添加了分支预取流水线。

如果取值得到一条是分支指令,则启动分支预取流水线,预测程序会往哪里跳转,事先将要跳转的指令加载到流水上,减少,一跳转就抛弃原先取出来的指令和解码好的指令。

分支预取流水线也不独立占用三级流水线的指令时钟。

4.4其它级指令流水线

ARM公司指令流水线已经发展到10多级,不管如何,三级指令流水线是一种标准,CPI=1是追求的目标。

所以在程序代码中计算一些中断返回,或函数调用返回时,都是采用三级流水线计算,即:当前执行的指令是PC-8取出的指令,而下条(第二条)要执行的指令是PC-4,当前的PC取出的指令将是第三条要执行的指令。如果Thumb指令集下,分别为PC-4(当前)、PC-2(第二条)和PC(第三条)指令。

寻址方式及指令系统习题与解答

寻址方式及指令系统习题与解答 计算机科学与工程学院黄洪波2012年3月 一、单项选择题 1.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址为()。 A.5000H B.5008H C.23008H D.32008H 2.设DS=1000H,ES=2000H,BX=3000H,指令ADD AL,[BX]的源操作数的物理址为()。 A.13000H B.23000H C.33000H D.3000H 3.设DS=2000H,ES=3000H,SI=200H,指令MOV ES:[SI],AL的目的操作数的物理地址为()。 A.20200H B.30200H C.50200H D.200H 4.指令MOV MEM[BX],AX中的MEM是()。 A.原码B.反码C.补码D.移码 5.用来作为寄存器间接寻址的寄存器有()个。 A.8 B.6 C.5 D.4 6.指令MOV [BX+SI],AL中的目的操作数使用()段寄存器。 A.CS B.DS C.SS D.ES 7.指令MOV BX,[BP+5]中的源操作数使用()段寄存器。 A.CS B.DS C.SS D.ES 8.段内间接寻址只改变()中的内容。 A.CS B.IP C.CS和IP D.PSW 9.段间间接寻址只改变()中的内容。 A.CS B.IP C.CS和IP D.PSW 10.下述指令中不改变PSW的指令是()。 A.MOV AX,BX B.AND AL,0FH C.SHR BX,CL D.ADD AL,BL 11.下述指令中不影响CF的指令是()。 A.SHL AL,1 B.INC CX C.ADD [BX],AL D.SUB AX,BX 12.两个整数补码9CH和7AH相加运算后,会产生()。 A.无溢出且无进位B.无溢出但有进位

第六章_寻址方式和指令系统

1

第 6章 寻址方式和汇编指令 第6章
6.1、寻址方式 6.2、汇编语言指令集 6.3、汇编源程序

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
▲ 汇编指令是可执行指令,每条指令对应一条机器 码,用以控制处理器中的执行部件进行各种操 作。 ▲ TMS320F281X系列的汇编指令有150多条。 ▲ 它们支持各种信号处理运算,同时也提供了应用 中所需要的多级处理和过程控制功能。 ▲ 寻址方式是指寻找指令中操作数地址的方式。

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
TMS320C28x指令集采用7种存储器寻址方式: ▲ 直接寻址方式 ▲ 堆栈寻址方式 ▲ 间接寻址方式 ▲ 寄存器寻址方式 ▲ 数据/程序/IO空间立即寻址方式 ▲ 程序空间间接寻址 ▲ 字节寻址方式

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
F2812 的大多数指令利用操作码中的8位字段来选择寻 址方式和对寻址方式进行修改.在 F2812 指令系统中,这个8 位字段用于以下寻址方式: (1)loc16 。 为16位数据访问选择直接/堆栈/间接/寄存器寻址方
式。
(2)loc32 。 为32位数据访问选择直接/堆栈/间接/寄存器寻址方
式。
以上7种寻址方式都与“loc16/loc32”组合起来使用。

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
寻址方式选择位
由 于 F2812 提 供 了 多 种 寻 址 方 式 , 因 此 用 寻 址 方 式 选 择 位 ( AMODE )来选择8位字段( loc16/loc32 )的解码。该 位属于状态寄存器ST1。寻址方式可以大致归类如下: ▲ AMODE=0——该方式是复位后的默认方式,也是F2812的C/C++编译
器使用的方式。这种方式与C2xLP CPU的寻址方式不完全兼容。数据页指针 偏移量是6位(在C2xLP CPU中是7位),并且不支持所有的间接寻址方式。
▲ AMODE=1——该方式包括的寻址方式完全与C2xLP 器件的寻址方式
兼容。数据页指针的偏移量是7位并支持所有C2xLP 支持的间接寻址方式。
对与loc16或者loc32字段,其可用的寻址方式总结如P375所示

寻址方式和指令系统

《微机原理》复习思考题第3章 8086的寻址方式和指令系统 3.1 8086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快? 3.2 直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段 寄存器指出段地址,指令中应如何表示? 3.3 在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么,段地址如何确定? 3.4 用寄存器间接寻址方式时,BX,BP,SI,DI分别针对什么情况来使用?这四个寄存器组合 间接寻址时,地址是怎样计算的?举例进行说明。 3.5 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的具体操作: MOV BYTE PTR [BP], 2000 MOV WORD PTR [BX], 2000 3.6 使用堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内容操作数时分别要注 意什么问题? 3.7 下面这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。 XCHG CS, AX MOV [BX], [1000] XCHG BX, IP PUSH CS POP CS IN BX, DX MOV BYTE[BX], 1000 MOV CS, [1000] 3.8 8086系统中,当对SS和SP寄存器的值进行修改时,有什么特殊规定?这样做的原因是什么?[解答] 凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行之后,又自动恢复对SS寄存器赋值前的中断开放情况。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。 3.9 以下是格雷码的编码表 0——0000 1——0001 2——0011 3——0010 4——0110 5——0111 6——0101 7——0100 8——1100 9——1101 请用换码指令和其他指令设计一个程序段,实现格雷码往ASCII的转换。 3.10 用加法指令设计一个简单程序,实现两个16位十进制数的加法,结果放在被加数单元。 3.11 为什么用增量指令或减量指令设计程序时,在这类指令后面不用进位标志CF作为判断依 据?

第三章流水线

第三章流水线、组成技术和柔性制造系统 学习目的:了解流水线的分类、组成技术的背景、柔性制造技术的概念。掌握流水线生产的特点、流水线组成的几个主要问题、自动线组织的优点、成组技术的定义、成组技术的主要内容。熟练掌握流水线的节拍和工序同期化、柔性制造系统的组成。 第一节流水线生产 一、流水线概述 再按对象专业化形式组织生产单位的基础上进一步提高,就可组成流水线生产。所谓流水线生产是指劳动对象按规定的工艺路线、生产速度、连续不断地通过各个工作地,顺序进行加工,并出产产品(零件)的一种生产组织形式。流水线的生产示意图如图3-1所示。 历史上的流水线对生产管理发展起过很大的作用。 图3-1 流水线生产示意图 (一)流水线生产的主要特点 (1)工作的专业化程度高,每一工作地只固定完成一道或少数几道工序。 (2)工作地按工艺顺序排列,劳动对象在工序间作单向移动。 (3)节奏性强,按规定的节拍生产产品。所谓节拍,是指流水线上前后两件产品之间间隔。节拍是流水线生产的一个重要参数,是流水线生产企业的指挥棒,企业的一切生产活动都围绕着节拍来组织。某压缩机制造企业,其装配流水线的节拍为13秒,这意味着全厂的生产活动的节奏,均以此为指标,即它所有的零部件生产都必须以此为节奏,甚至包括原料的采购等。 (4)流水线上各工序之间生产能力是平衡的,成比例的。 (二)组织流水线生产的条件 (1)产品结构和工艺相对稳定。 (2)制品要有足够大的产量,以保证流水线各项工作有充分的负荷。 (3)制品加工个工序能细分和合并,能达到工序同期化。工序同期化是指流水线上各工序的时间定额与其生产节拍相等或成倍数关系。 (三)流水线的分类 1. 按流水线上生产对象的种类划分 (1)单一对像流水线。它是固定生产一种产品或零件,也叫不变流水线。 (2)多对象流水线。固定生产几种结构上、工艺上相似的产品或零件。从劳动对象轮换方式看,多对象流水线又可分为可变流水线、成组流水线和混合流水线。可变流水线是成批轮番地生产固定在流水线上的几种加工对象,当变换生产对象时,流水线上的设备和工装需要调整。成组流水线是同时或者顺序地生产固定在流水线上的几种加工对象;变换生产对象时,不需要重新调整设备和工装。混合流水线是在同一时间内混合生产多个制品,单要遵循一定的投产顺序,变换品种时,基本上不需要重新调整设备和工装。

第三章指令系统及寻址方式

第三章指令系统及寻址方式 一、教学内容 1.指令格式 2.指令寻址方式 3.指令系统 二、要求掌握指令的书写格式、指令的寻址方式和每一条指令的作用。 三、重点掌握指令的寻址方式和每一条指令的功能作用。 四、难点在于理解和掌握指令的寻址方式,怎样找到操作数所在存储单元的存放地址以及运用指令编程的技巧等。 五、本章分为4讲,每讲2学时。 第一讲指令寻址方式 1.指令的书写格式 指令有两种书写格式: ?机器指令:由一串二进制数描述 ?符号指令:用英文字母缩写词描述。符号指令的书写格式如下: 标号:操作助记符 [目的操作数][,源操作数];注释 几点说明: 1)标号—表示某一条指令所在存储单元的首址。标号应由字母打头,后跟字母、数字及特殊字符均可,但不能用关键字。 标号的用法: ①标号一般放在子程序(子过程)的第一条指令的开头; ②标号一般放在转移指令要转去的目的地的第一条指令的开头。 ③标号一般放在其他符号定义的前面。 2)指令助记符(操作助记符):MOV;ADD;SUB;END。 3)操作数—有源操作数和目的操作数,他们之间用“,” 分隔。操作数也可有可无。 2.数据寻址方式 一般在指令中包含有操作码和操作数,怎样找到指令中的操作数和操作数所在的地址,这就是寻址方式。

1)立即寻址 操作数直接包含在代码段的指令中。 如: MOV EAX,H MOV BX,6688H MOV AX,1234H ?立即数只能作为源操作数 ?立即寻址主要用来给通用寄存器或存储器赋值 ?不允许给段寄存器直接赋值 2)寄存器寻址 操作数在寄存器中。 32位寄存器:EAX、EBX、ECX、EDX、 ESP、EBP、 ESI、EDI 16位寄存器:AX、BX、CX、DX、SP、BP、SI、 DI、CS、DS、SS、ES、FS、GS 8 位寄存器:AH、AL、BH、BL、 CH、CL、DH、DL 如: MOV AX,BX MOV EDI,ESI MOV AL,CL 3)存储器寻址 操作数在存储器中,其地址由指令以某种方式指出。 ① 16位指令模式下的存储器寻址 16位指令模式寻址结构由4部分组成:段基址×10H+基址+变址+偏移量基址:BX、BP ,变址:SI、DI ,偏移量:8位或16位 如果有效地址在BX,SI或DI中,则以DS寄存器内容为段基址; 如果有效地址在BP中,则以SS段寄存器的内容为段基址。 如果使用段超越(CS:ES:DS:SS:),前缀操作数可以放在冒号前指定的段。例如:MOV ES:[DI],AL MOV ES:2000H, AL

第三章 流水线技术

第3章流水线技术 3.1解释下列术语 流水线:将一个重复的时序过程,分解成为若干个子过程,而每一个子过程都可有效地在其专用功能段上与其它子过程同时执行。 单功能流水线:指流水线的各段之间的连接固定不变、只能完成一种固定功能的流水线。 多功能流水线:指各段可以进行不同的连接,以实现不同的功能的流水线。 静态流水线:指在同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作的流水线。当流水线要切换到另一种功能时,必须等前面的任务都流出流水线之后,才能改变连接。 动态流水线:指在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能的流水线。它允许在某些段正在实现某种运算时,另一些段却在实现另一种运算。 部件级流水线:把处理机中的部件进行分段,再把这些部件分段相互连接而成。它使得运算操作能够按流水方式进行。这种流水线也称为运算操作流水线。 处理机级流水线:又称指令流水线。它是把指令的执行过程按照流水方式进行处理,即把一条指令的执行过程分解为若干个子过程,每个子过程在独立的功能部件中执行。 处理机间流水线:又称为宏流水线。它是把多个处理机串行连接起来,对同一数据流进行处理,每个处理机完成整个任务中的一部分。前一个处理机的输出结果存入存储器中,作为后一个处理机的输入。 线性流水线:指各段串行连接、没有反馈回路的流水线。数据通过流水线中的各段时,每一个段最多只流过一次。 非线性流水线:指各段除了有串行的连接外,还有反馈回路的流水线。 顺序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同。 乱序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,允许后进入流水线的任务先完成。这种流水线又称为无序流水线、错序流水线、异步流水线。 吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。 流水线的加速比:使用顺序处理方式处理一批任务所用的时间与按流水处理方式处理同一批任务所用的时间之比。 流水线的效率:即流水线设备的利用率,它是指流水线中的设备实际使用时间与整个运行时间的比值。

采用流水线生产有什么优点

采用流水线生产有什么优点 流水线这个词相信大家都不陌生,什么INTEL的20级超长流水线之类的大家肯 定也能闭上眼睛说上来,那么大家对流水线的具体含义有没有理解呢,流水线 是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程并行进行。由于这种工作方式与工厂中的生产流水线十分相似,因此称为流水线技术。 比如说进行一个程序,最起码要进行取指令,分析指令,执行指令的操作,实际上,我们的计算机分化的要比这个要多的,上面那个分法就是一条3级流水线,比如说,我们的CPU在执行上面的分法的时候,每一时间要么是在取指令阶段,要么是在分析指令,要么是在执行指令,发现没有,他只有一部分在工作而其他大部分都在闲置,那么为解决这个问题,就发明了流水线技术,每取完一个指令后送到分析指令部分,取指令的部分就开始取新的指令,这样就形成了下面的状态:取指令指令1 指令2 指令3 指令4 时间方向分析指令1 指令2 指令 3 执行指令1 指令2 大家发现没有,这个时候CPU内同时执行的是3条指令,正如同一个流水线上,可能有N件产品,只有最后一件是完成的成品,虽然没有提高执行每一步的速度,但是整个CPU的速度增加了3倍,如果说,CPU执行 的程序是一条跳转语句,在没有进行分析指令前,CPU是不能知道他是要跳转的,那么在他分析指令的时候,取指令的部分把上面那条指令的下一条指令取了进来,由于跳转指令的存在,这条后取来的指令实际上是不应该被执行的,所以,他要从流水线上排掉,才能从跳转指令要跳转的地方重新开始,这样就造成整个流水线的等待,流水线越长,速度越快,这样的流水线的等待也就越明显,整个CPU 的利用率就越低。 采用流水线技术生产,极大的提高了流水线工作效率,为工厂,工人创造出更多的价值 流水线的特征是每一道工序都有特定的人去完成,一步一步地加工.每个人做一个特定的工作. 优点是这样生产起来会比较快,因为每个人只需要做一样事,对自己所做的事都非常熟悉. 缺点是工作的人会很觉得很乏味.

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