ARM核流水线——ARM7,ARM9E,ARM11,Cortex-A系列处理器

发布者:学富五车最新更新时间:2016-07-13 来源: eefocus关键字:ARM核  流水线  处理器 手机看文章 扫描二维码
随时随地手机看文章
本文主要介绍ARM7,ARM9E,ARM11以及Cortex-A系列处理器的流水线,从指令读取fetch,指令解码decode到指令执行的各个阶段。

参考ARM的网站http://www.arm.com/about/company-profile/index.php,ARM公司成立于1990年,目前已经销售了超过150亿个芯片,并向超过200多加公司销售了超过600个处理器的授权,目前全世界有超过95%的手机以及超过25%的消费电子产品使用ARM作为处理器核心。

ARM(Advanced RISC Machines)是专注于RISC(Reduced Instruction Set computer)架构的处理器公司,最早的ARM1原型是1985年在英国剑桥的Acorn公司设计,并由VLSI生产,早期的ARM1,ARM2,ARM250,ARM3..的处理器都被Acorn这家公司作为计算机处理核心。

目前处理器架构中,主要有1940年代提出的Von Neumann提供的记忆体架构,让程序和数据共用总线,之后的Harvard架构则让程序和数据使用不同的架构,好处是可以让程序和数据同事从存储器内操作。早期的ARM7跟8051一般是采用Von Neumann架构,一块cache供指令与数据存取,而目前新的微处理器架构(例如:ARM11 or Cortex A)通常都采用Harvard架构,也就是处理器会支持I-Cache与D-Cache,区分指令和数据的总线操作,提高处理器效率。(参考文章:http://en.wikipedia.org/wiki/ARM7 and http://en.wikipedia.org/wiki/Harvard_architecture ).有关ARM处理器的冯诺依曼和哈佛架构可以参考网页http://stenlyho.blogspot.com/2008/08/armcpu.html ,如下所示

Processor Family

#of pipeline stages

Memory Organization

Clock Rate

MIPS/MHz

ARM6

3

Von Neumann

25MHz

 

ARM7

3

Von Neumann

66MHz

0.9

ARM8

5

Von Neumann

72MHz

1.2

ARM9

5

Harvard

200MHz

1.1

ARM10

6

Harvard

400MHz

1.25

StrongARM

5

Harvard

233MHz

1.15

ARM11

8

Von Neumann/Harvard

550MHz

1.2

ARM是采用RISC 精简指令集 (Reduced Instruction Set Computing)架构的处理器,RISC架构主要选择使用频率较高的简单指令,避免复杂指令,使用固定长度的指令编码(支持32bits,16bits或16/32bits混合),单周期指令,便于Pipeline的操作执行,并通过大量暂存器,让逻辑处理指令只对暂存器进行操作,只有特定载入/储存的指令可以存取存储器內容.相比CISC架构,会随着需求,不断的加入新的指令集,使得架构越来越复杂,实际应用中,也并非所有的指令都是常被使用的,如下以CSIC架构的x86 指令集为例,指令集呈现不固定长度的方式,如下例子有1,2,7与11 bytes的例子

(1bytes)0×48 = dec eax

(2bytes)0×89 F9= mov ecx,edi

(7bytes)0x8B BC 24 A4 01 00 00 = mov edi,dword ptr [esp+000001A4h]

(11bytes)0×81 BC 24 14 01 00 00 FF 00 00 00 = cmp dword ptr [esp+00000114h],0FFh

ARM通过Pipeline的方式加速指令集的处理,在Pipeline执行阶段,如果发生中断,也会把Pipeline中的指令执行完畢才进入中断,如下所示ARM7支持如下的3级Pipeline

Fetch → Decode → Execute

其中

Fetch

进行指令的读取动作

Decode

Thumb->ARM指令Decompress,ARM指令解码,暂存器选择

Execute

进行暂存器/存储器读取,算术逻辑运算与暂存器/存储器回写动作

每一个CPU周期,处理器都可以同时处理 'Fetch','Decode','Execute'這三个动作,而非把一个指令从Fetch开始到执行完后,才处理下一个指令周期,如下图所示

Time

Fetch

Decode

Execute

Cycle#1

Instruction#1

   

Cycle#2

Instruction#2

Instruction#1

 

Cycle#3

Instruction#3

Instruction#2

Instruction#1

Cycle#4

Instruction#4

Instruction#3

Instruction#2

Cycle#5

Instruction#5

Instruction#4

Instruction#3

Cycle#6

Instruction#6

Instruction#5

Instruction#4

为了避免在非载入存储器阶段,让运算指令进行存储器的存取,而导致Pipeline可重叠执行的能力被破坏,ARM只允许特定载入储存指令读写存储器的资料. 早期的ARM6,ARM7有3级的Pipeline,到了ARM8、ARM9时为5级的Pipeline;之后的ARM11则为8级的Pipeline;不过Pipeline过深不一定就能帶来更高的效益,如果程序流程中遇到分支(例如Branch到另一个程序块),就会导致Pipeline中的资料失效而要重新进行指令Fetch的动作.

简单来说,Pipeline就是把指令的处理分成几个不同的步驟,例如

ARM9支持如下的5级Pipeline

Fetch → Decode → Execute→ Memory→ Write Back

其中

Fetch

进行指令的读取(Fetch)动作

Decode

进行ARM/Thumb指令解码与暂存器的读取

Execute

进行逻辑运算与存储器存取位址计算动作

Memory

读取或写回存储器资料

Write Back

將运算或是Load结果回写暂存器中

ARM10之后有支持Branch Prediction以减少在Pipeline执行期间因为Branch动作导致Pipeline失效 Flush的机会,支持如下的6级Pipeline

Fetch→ Issue → Decode → Execute→ Memory→ Write Back

其中

Fetch

进行Branch Predictor指令分支预测,指令位址计算,与指令的读取(Fetch)动作

Issue

ARM/Thumb指令解码,若非ARM/Thumb有效指令,就通过Coprocessor Signal判断是否为Coprocessor指令

Decode

暂存器的读取,Result Forward,ScoreBoard

Execute

进行算术逻辑运算与Branch/Data存取存储器位址计算,乘法运算

Memory

读取或写回存储器资料,Coprocessor资料存取,乘法相加处理

Write Back

将运算或是Load结果回写暂存器中

ARM11采用Scalar架构的Pipeline,并在Issue阶段支持ALU(arithmetic logic unit),MAC(multiply/accumulate)与Load/Store分成Pipeline的流水线,可以在一个Cycle分发一个对应的处理器动作到一个Pipeline,如下所示的8级Scalar Pipeline (ARM1156T2-S支持9级的Pipeline,其中Fetch Pipeline扩充为3级,可以参考网页

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0338g/I1002919.html )

Fetch#1→ Fetch#2→ Decode→ISS (ALU Pipeline)→ Shifter→ALU→ SAT→ Write Back

______________________________(MAC Pipeline) → MAC1→MAC2→ MAC3→ Write Back

______________________________(Load/Store Pipeline)→ LS Add→DC1→ DC2→ Write Back

跟之前版本相比ARM11用了两个Fetch Pipeline阶段去支持两种指令分支预测(Branch Prediction)的机制,第一个Fetch Pipeline阶段会根据历史记录进行动态的指令分支预测(Dynamic Branch Prediction),总共记录64次,4种状态(Strongly taken,Weakly taken,Weakly not-taken and Strongly non-taken)的分支((Branch)目标存储器位址快取(BTAC,Branch-Target Address Cache)记录近期指令分支的情況. 第二个Fetch Pipeline阶段进行静态的指令分支预测(Static Branch Prediction),会处理不在第一阶段范围中的分支预测存储器位址, 命中率高的指令分支预测(Branch Prediction)可以避免Pipeline失效重置的问題,让处理器的运作效率更高。根据参考的资料ARM11的Dynamic与Static Branch Prediction在一般执行情況下可以有85%的命中率,大多數的情況可以介于80%-95%之间(取決于程序的大小)。

简介如下,

#1

Fetch#1

进行Dynamic Branch Prediction,指令位址计算,与指令的读取(Fetch)动作

#2

Fetch#2

进行Static Branch Prediction

#3

Decode

ARM/Thumb指令解码,若非ARM/Thumb有效指令,就通过Coprocessor Signal判断是否为Coprocessor指令

Static BPR Stack

#4

ISS
(Instruction Issue)

暂存器的读取,与指令执行路径分派,有三条路径逻辑运算ALU Pipeline,乘法累加MAC Pipeline,与资料存取Load/Store Pipeline.

ALU Pipeline

MAC Pipeline

Load/Store Pipeline

#5

Shifter

对逻辑运算指令操作单元(operand)进行Shift

MAC1

第1阶段乘法累加操作

LS Add

计算产生Load/Store操作的存储器位址

#6

ALU

进行整數算术逻辑运算

MAC2

第2阶段乘法累加操作

DC1

第1阶段Data Cache存取

#7

SAT

储存运算结果

MAC3

第3阶段乘法累加操作

DC2

第2阶段Data Cache存取

#8

Write Back

将运算或是Load结果回写暂存器中

ARM Cortext A系列的架构,在這架构下ARM导入了Superscalar 架构的Pipeline,让处理器可以在一个周期平行处理一个以上的指令集。以Cortex A8为例,支持13级的整數Pipeline与10级的NEON多媒体指令集Pipeline,以整數处理的指令集为例,Cortex A8支持Dual-Issue,In-Order Pipeline,不同于之前的ARM核心一次只能处理一个整数处理指令集,Cortex A8可以同时Issue两个整数处理指令集,并在一个周期中通过两个整数算术逻辑单元Pipeline平行处理这两个指令集.

13-Stage Integer Pipeline

10-Stage NEON Pipeline

F#0

F#1

F#2

D#0

D#1

D#2

D#3

D#4

E#0

E#1

E#2

E#3

E#4

E#5

M#0

M#1

M#2

M#3

N#1

N#2

N#3

N#4

N#5

N#6

Instruction Fetch

Instruction Decode

with Dual-Issues

Architectural

Register

File

ALU/MUL Pipeline 0

NEON
Instruction

Queue

NEON
Instruction

Decode

NEON
Register

File

Integer ALU Pipe

ALU Pipeline 1

Integer MUL Pipe

Load/Store Pipeline 0 or 1

Integer Shift Pipe

None-IEEE FP Add Pipe

None-IEEE FP Mul Pipe

IEEE FP Engine

Load/Store Permute Pipe

在Cortex A8架构下,有两个 ALU Pipeline,ALU 0与ALU1是对称的,可以同时处理两个逻辑运算,由于Pipeline的特性在使用上,乘法需求的指令会跟ALU 0成对 (也就是说在这条Pipeline 0连续处理有关整数逻辑运算与乘法相关的指令),而Load/Store 的指令则适合跟ALU 0或1两者任一一起成对操作。

其中

13-Stage Integer Pipeline

0-Stage

F#0

用来产生要Fetch指令的位址,在文件中这个阶段并不纳入13级的Pipeline中. (AGC,Address Generator Unit)

1-Stage

F#1

RAM+TLB ,

支持两个层级的全域历史指令分支预测(Global History Branch Preditor)分別为

1,BTB(Branch Target Buffer)

能用来判断目前所要Fetch的位址是否为分支(Branch)指令,以及所要调到的目标存储器位址,目前总共可以记录512笔资料,若BTB命中,接下来就会进行GHB的动作.

2,GHB(Global History Buffer)

包含4096个2bits计数器,用来编码分支预测的強度与方向。GHB会以10bits长度定址最近十次分支的位址,与4bits的PC(Program Counter)值.

此外,Return Stack(RS)会记录8次32bits Link Register的值,当发现有关于函式返回(Return)相对指令时,Return Stack中所记录的最近8次Link Register资料就可以帮助Dynamic Branch Predictor预测可能的分支結果.

2-Stage

F#2

提供12 次 Fetch Queue

3-Stage

D#0

Decode.

4-Stage

D#1

5-Stage

D#2

6-Stage

D#3

7-Stage

D#4

8-Stage

E#0

Architectural Register File

   

ALU/MUL Pipeline 0

ALU Pipeline 1

Load/Store Pipeline 0 or 1

9-Stage

E#1

Execution.

10-Stage

E#2

11-Stage

E#3

12-Stage

E#4

BP Update(to F#0)

BP Update(to F#0)

BP Update(to F#0)

13-Stage

E#5

     

10-Stage NEON Pipeline

   

Instruction Decode

Load and Store with Alignment

1-Stage

M#0

16-entry NEON Instruction Queue/Instruction Decode

Mux L1/MCR

2-Stage

M#1

Decode Queue and Read/Write Check

8-entry Load Queue

3-Stage

M#2

Score-Board and Issue-Logic

Load Align

4-Stage

M#3

NEON Register Read and M3 fwding muxes

Mux with NRF

   

Integer ALU Pipe

Integer MUL Pipe

Integer Shift Pipe

None-IEEE FP Add Pipe

None-IEEE FP Mul Pipe

IEEE Single/Double precision VFP

Load/Store and Permute Pipe

5-Stage

N#1

FMT

DUP

SHIFT#1

FFMT

FDUP

VFP

PERM#1

6-Stage

N#2

ALU

MUL#1

SHIFT#2

FADD#1

FMUL#1

Write Back

PERM#2

7-Stage

N#3

ABS

MUL#2

SHIFT#3

FADD#2

FMUL#2

 

Store Align

8-Stage

N#4

 

ACC#1

 

FADD#3

FMUL#3

 

8-entry Store Queue

9-Stage

N#5

 

ACC#2

 

FADD#4

FMUL#4

   

10-Stage

N#6

Write Back (Update to ARM/NEON Register File)

 

关键字:ARM核  流水线  处理器 引用地址:ARM核流水线——ARM7,ARM9E,ARM11,Cortex-A系列处理器

上一篇:ARM处理器NEON编程及优化技巧—左移右移等移位操作
下一篇:ARM Cortex系列(A8/A9/A15/A7) NEON多媒体处理SIMD引擎优化

推荐阅读最新更新时间:2024-03-16 15:00

单片DSP处理器功能系统的SOPC技术设计
  结合Altera公司推出的Nios II 嵌入式 软核处理器,提出一种具有常规DSP处理器功能的NiosII系统SOPC解决方案;利用NiosII可自定叉指令的特点。   通过Matlab和DSP Builder或直接用VHDL设计并生成复数乘法器、整数乘法器和浮点乘法器等硬件模块,将它们定制为相应的指令,从而将软件的灵活性和硬件的高速性结合起来,较好地解决了传统DSP处理器所面临的速度问题、硬件结构不可重构性问题、开发升级周期长和不可移植性等问题。   随着微电子技术和计算机工具软件的发展,可编程片上系统SOPC的设计理念和设计方法成为了一种趋势。为了解决传统DSP处理器所面临的速度问题、硬件结构不可重构性问题、开发升级
[嵌入式]
单片DSP<font color='red'>处理器</font>功能系统的SOPC技术设计
石墨烯研发新成果:超薄柔性微处理器
   微处理器 ,是当代电子工业的核心器件。无论是智能手表、智能手机、智能家电等消费电子产品,还是超级计算机、汽车引擎控制、数控机床、导弹精确制导等都高精尖技术产品,都离不开 微处理器 的作用。下面就随嵌入式小编一起来了解一下相关内容吧。    微处理器 ,一般由一片或几片大规模集成电路组成,能读取和执行指令,与外界存储器和逻辑部件交换数据,是微型计算机的核心运算控制部分。   如今,微处理器制造所用的材料基本上全是硅。而硅材料的瓶颈如主要有以下两方面:一是性能瓶颈,现在硅材料的半导体芯片,性能增速放缓,且接近物理极限。二是不具有柔性,硅材料无法应用于柔性电子领域。 石墨烯研发新成果:超薄柔性微处理器   二维材料是指电子
[嵌入式]
魅蓝E3发布 骁龙处理器+变焦双摄冲击两千元市场
   新浪手机讯 3月21日下午消息,魅蓝今日在北京召开发布会,正式推出其新品手机魅蓝E3,这款新机主打拍照与性能,搭载6GB运存及骁龙636处理器,并支持全像素双核对焦功能及变焦拍摄。(新浪众测第一时间为大家准备了二十台魅蓝E3免费试用,想体验的小伙伴儿戳→ 这里 ) 魅蓝E3发布会   一款在设计上“大改”的新品   魅蓝E3是魅蓝E系列的最新产品,它采用了5.99英寸的全面屏设计,屏幕比例为18:9,分辨率为2160*1080,支持黑屏手势解锁、湿手操作、手套操作等多种功能。   除了全面屏的搭载,魅蓝E3还延续了魅蓝S6的侧面指纹识别设计,使整机的一体化程度更高。魅蓝标志性的“小圆圈”这次被设计到了屏幕内部,支持隐藏,并加
[手机便携]
2007年度TI DSP大奖赛竞赛须知
参加2007年TI DSP 大奖赛必须具备下列条件: 参赛资格:凡在校大学生、研究生均可组队参加,每个队由1-5名队员和1名指导教师组成。鼓励学生自发组队、命题、报名参赛 填写报名表格:所有申请报名的参赛队伍,必须填写大奖赛参赛申请表格(报名表),同意所有的参赛条件(请访问TI中文网站中国大学计划2007 TI DSP大奖赛网页下载参赛申请表格)。所有递交的参赛申请,都应该确认每位参赛队员在项目设计中作出了具体的贡献。所有参赛队员都必须阅读和同意遵守本次的竞赛规则。 基于TI DSP的原创性设计:所有参赛队必须提交一份使用TI DSP处理器的硬件或软件系统。鼓励参赛者体验TI的模拟产品及MCU的广泛功能和持续创新。 一位指导教授
[焦点新闻]
基于ARM处理器的机器人手臂控制系统
近年来,随着MEMS及相关技术的发展,微机器人领域已越来越来受人关注。但由于零件的尺寸很小,微机器人组件的装配需要很高的精确度,一般的装配方法无法满足要求。本文介绍了一个可进行微零件装配工作的机器人手臂控制系统的控制方法。 1 系统结构 考虑到多机器人手臂的使用,整个机器人控制系统由上位机与多个下位机组成。下位机即是手臂控制器,每个下位机控制一个机械手臂的伸缩运动。上位机即为控制终端,通过不同配件组装方式生成每个手臂的位置数据,并通过数据线传输给各个下位机,由下位机控制手臂到达目标位置并进行目标操作。整个系统的结构框图如图1所示。 1.1 机械结构 如图2所示,手臂控制器的机械结构由直流减速电机、手臂、螺杆、减速齿轮
[工业控制]
揭秘TI移动应用处理器ARM的应用演变
约两年后,TI推出了其新一代OMAP系列移动应用处理器(AP)——备受关注的OMAP3530。广受欢迎的OMAP系列移动AP还包括OMAP2420,它已被用在诸如诺基亚N93和N95等多种移动消费应用中。TechInsight分支机构SemiconductorInsights最近进行了一个初步分析以比较OMAP3530与OMAP2420之间的异同。 OMAP平台是为包括手机、GPS系统和笔记本电脑等移动应用而设计的。OMAP移动AP在单芯片内整合了多种特性。其裸片内有四个可单独控制的独立模块、从而允许同时进行并行应用处理。这种设计还允许将不用的模块单独断电以降低功耗。这四个主要模块是:ARM核、图形加速器、成像和视频加速
[嵌入式]
揭秘TI移动应用<font color='red'>处理器</font>中<font color='red'>ARM</font><font color='red'>核</font>的应用演变
瞄准智能穿戴式装置发展 三星锁定生物处理器
三星电子(Samsung Electronics)系统LSI事业部研发出可监视心电图,进行日常健康管理的生物处理器(Bio-Processor)。将采45纳米制程生产的嵌入式快闪存储器、移动应用处理器(AP)、蓝牙等以系统级封装(SiP),缩减体积和厚度。 据ET News报导,三星系统LSI事业部感测器产品开发组专务朴龙仁(音译),在韩国庆尚北道庆州开幕的国际系统芯片设计研讨会(ISOCC) 2015的主题演讲中,公开展示自主研发的生物处理器。以 可帮助人并拯救生命的半导体 为主题,说明心电图监视(ECG)的重要性和应用范例。 三星的心电图感测器除监视个人健康外,也可利用固有资讯用来进行识别。每个人都有固定的心
[物联网]
基于ARM处理器和Linux的无线气象数据通
自动气象站数据采集器一般基于单片机或PC/104总线控制器设计,具有与PC兼容性好、功耗低、体积紧凑等特点,然而如何设计出功能强大,网络传输功能强的自动气象站数据采集器,满足现代气象检测的要求,是一个值得研究的课题。 文中基于ARM微处理器和Linux操作系统平台,借助前端无线传感器网络的数据输入,利用嵌入式Qt的开发优势并设计数据通信格式,完成无线气象数据通信系统的设计,实现了数据的可靠传输。为天气预报、科学研究、气象灾害预警等提供实时的气象观测数据。 1 无线气象数据通信系统的基本组成 如图1所示,无线气象数据通信系统主要由无线传感器网络节点、协调器、数据通信器(数据通信器以S3C2440AL为核心)、远程服务器
[单片机]
基于<font color='red'>ARM</font>微<font color='red'>处理器</font>和Linux的无线气象数据通
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved