ARM 架构.

Slides:



Advertisements
Similar presentations
1 I/O 设备访问方式和类型. 2 Overview n The two main jobs of a computer: l I/O (Input/Output) l processing n The control of devices connneted to the computer is.
Advertisements

教员信息 姓 名:仲崇权 单 位:电子与信息工程学院 电 话: 办公室:创新院大厦720房间 :
嵌入式系统 主讲人: 赵宏伟 学时: 32 吉林大学计算机科学与技术学院.
第 2 章 中央處理單元.
第二部分 嵌入式硬件系统 第2章 嵌入式处理器 第3章 ARM内核与ARM处理器 第4章 嵌入式系统的外围设备.
ARM 编程技巧.
嵌入式系统与结构 —基于ARM的体系结构和应用开发
NEUSOFT Institute of information Technology .ChengDu
第二章 嵌入式处理器.
微型计算机技术及应用 王 健 主讲 授课学时:40学时 大连理工大学计算机系.
第 5 章 乙太網路卡的分類方式 著作權所有 © 旗標出版股份有限公司.
最新計算機概論 第3章 計算機組織.
第3章 基于ARM的处理器体系结构1 主讲 马洪连.
微机原理与接口技术 第二章 ARM微处理器硬件结构
计算机与信息技术应用基础 徐东雨 计算机中心
单片机原理与应用.
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
單晶片原理與應用 魏兆煌 整理 南台科技大學 電機系 Sep
Hardware Chen Ching-Jung
第1章 程式語言與Visual Basic的基礎
CH.2 Introduction to Microprocessor-Based Control
第四章 BootLoader开发 附-s3c2410/s3c2440处理器介绍
ARM体系结构.
第 2 章 中央處理單元.
ARM 架构.
第一章 嵌入式系统开发基础 本章介绍了嵌入式系统开发的基础知识,从嵌入式计算机的历史由来、嵌入式系统的定义、嵌入式系统的基本特点、嵌入式系统的分类及应用、嵌入式系统软硬件各部分组成、嵌入式系统的开发流程、嵌入式技术的发展趋势等方面进行了介绍,涉及到嵌入式系统开发的基本内容,使读者系统地建立起的嵌入式系统整体概念。
第7章 中斷系統.
微处理器设计1 刘鹏 College of ISEE Zhejiang University
CPU資料處理 醫務管理暨醫療資訊學系 陳以德 副教授: 濟世CS 轉
ARM存储器结构 ARM架构的处理器的存储器寻址空间有4G字节 ,存储空间可以分为 :
PIC16F1827介紹 以微控器為基礎之電路設計實務-微處理器實驗室.
主講:王穎聰 電腦與通訊工程學系講師 銘傳大學資訊網路處
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
5 Computer Organization (計算機組織).
C H A P T E R 8 体系结构对系统开发的支持.
嵌入式系统设计与开发 第1章 概述 第2章 ARM及其编程模型 第3章 ARM指令集 第4章 嵌入式程序设计
Operating System Internals and Design principles
Game Boy Architecture 计算机体系结构课程报告 --刘继元.
微程序控制器 刘鹏 Dept. ISEE Zhejiang University
ARM CPU從高階語言到Machine Code
嵌入式微处理器系统 第二章 处理器技术(1) 北京大学软件与微电子学院.
第四章 BootLoader开发 附-s3c2410/s3c2440中断控制器介绍
嵌入式系統概論-以S3C2440核心為架構 第1章 嵌入式系統概念.
聊城大学物理科学与信息工程学院 微控制器原理 聊城大学物理科学与信息工程学院
嵌入式体系结构与应用 第三章-ARM指令系统(ARMv4T).
第2章 ARM微处理器硬件结构 计算机体系结构分类 ARM版本及系列 ARM处理器结构 存储系统机制.
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
第五章 C/C++及汇编语言的混合编程 5.1 ARM C/C++编译器 5.2 在C/C++程序中内嵌汇编指令
嵌入式系统教案 武汉创维特信息技术有限公司 2019/1/18.
(第2版).
第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块
第2章 ARM体系结构.
ARM 架构.
ARM及Thumb指令集 (练习).
第2章ARM/THUMB微处理器结构及指令系统
微机原理与接口技术 西安邮电大学计算机学院 王忠民.
第3章 ARM微處理器的指令集.
ARM Developer Suite 介 绍.
ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇
嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/29.
微處理機 Microprocessor (100上)
ARM處理器.
ARM简介及BootLoader介绍 黄大荣
第二章ADS1.2开发环境创建与简介.
微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理
第3章 目录 1.简介 2.ARM7TDMI 3.ARM7TDMI的模块和内部框图 4.体系结构直接支持的数据类型 5.处理器状态
FPPA 程式設計 這一章開始正式進入FPPA程式設計的世界,我會從一個簡單的程式開始解說,一邊介紹專案開發時最常應用的技巧還有程式控制的手段,一邊把系統規畫的概念導入給大家,讓大家對專案的規畫能有一個初步的概念。
嵌入式系统教案 武汉创维特信息技术有限公司 2019/10/1.
Presentation transcript:

ARM 架构

Agenda ARM公司简介 编程模式 指令集 系统设计

ARM Ltd 成立于1990年11月 主要设计ARM系列RISC处理器内核 授权ARM内核给生产和销售半导体的合作伙伴 前身为 Acorn计算机公司 Advance RISC Machine(ARM) 主要设计ARM系列RISC处理器内核 授权ARM内核给生产和销售半导体的合作伙伴 ARM 公司不生产芯片 IP(Intelligence Property) 另外也提供基于ARM架构的开发设计技术 软件工具, 评估板, 调试工具,应用软件, 总线架构, 外围设备单元,等等

ARM Offices Worldwide 800+ 雇员 全球 England US Cambridge, Maidenhead, Sheffield, Blackburn Germany Munich France Paris, Sophia Antipolis Korea Seoul US Seattle, Los Gatos, Walnut Creek, Austin, Boston, San Diego China Taiwan and Shanghai Japan Shin-Yokohama (Tokyo) 800+ 雇员 全球

ARM Partnership Model

目录 ARM公司简介 编程模式 指令集 系统设计

数据和指令类型 ARM 采用的是32位架构. ARM 约定: 大部分ARM core 提供: Byte : 8 bits Halfword :16 bits (2 byte) Word : 32 bits (4 byte) 大部分ARM core 提供: ARM 指令集(32-bit) Thumb 指令集(T变种)(16-bit ) Jazelle cores 支持 Java bytecode(J变种,4TEJ)

处理器工作模式 User:非特权模式,大部分任务执行在这种模式 FIQ:当一个高优先级(fast)中断产生时将会进入这种模式 ARM 有7个基本工作模式: User:非特权模式,大部分任务执行在这种模式 正常程序执行的模式 FIQ:当一个高优先级(fast)中断产生时将会进入这种模式 高速数据传输和通道处理 IRQ:当一个低优先级(normal)中断产生时将会进入这种模式 通常的中断处理 Supervisor:当复位或软中断指令执行时将会进入这种模式 供操作系统使用的一种保护模式 Abort: 当存取异常时将会进入这种模式 虚拟存储及存储保护 Undef: 当执行未定义指令时会进入这种模式 软件仿真硬件协处理器 System: 使用和User模式相同寄存器集的特权模式 特权级的操作系统任务

ARM 寄存器 Current Visible Registers Banked out Registers r15 (pc) cpsr r13 (sp) r14 (lr) spsr r8 r9 r10 r11 r12 Current Visible Registers Banked out Registers User IRQ SVC Undef Abort FIQ Mode SVC Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r15 (pc) cpsr r13 (sp) r14 (lr) spsr Current Visible Registers Banked out Registers User FIQ IRQ Undef Abort Abort Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r15 (pc) cpsr r13 (sp) r14 (lr) spsr 当前可见寄存器 备用寄存器 User FIQ IRQ SVC Undef Undef Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r15 (pc) cpsr r13 (sp) r14 (lr) spsr Current Visible Registers Banked out Registers User FIQ IRQ SVC Abort IRQ Mode r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r15 (pc) cpsr r13 (sp) r14 (lr) spsr Current Visible Registers Banked out Registers User FIQ SVC Undef Abort r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) cpsr spsr FIQ IRQ SVC Undef Abort User Mode Current Visible Registers Banked out Registers

寄存器组织概要 User FIQ IRQ SVC Undef Abort Note: System模式使用user模式寄存器集 r13 (sp) r14 (lr) r15 (pc) cpsr r0 r1 r2 r3 r4 r5 r6 r7 User mode r0-r7, r15, and cpsr User mode r0-r12, r15, and cpsr User mode r0-r12, r15, and cpsr User mode r0-r12, r15, and cpsr User mode r0-r12, r15, and cpsr Thumb state Low registers r8 r9 Thumb state High registers r10 r11 r12 r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) spsr spsr spsr spsr spsr Note: System模式使用user模式寄存器集

ARM 寄存器 ARM 有37个32-Bits长的寄存器. 当前处理器的模式决定着哪组寄存器可操作. 任何模式都可以存取: 1 个用作PC( program counter) 1个用作CPSR(current program status register) 5个用作SPSR(saved program status registers) 30 个通用寄存器 当前处理器的模式决定着哪组寄存器可操作. 任何模式都可以存取: 相应的r0-r12子集 相应的 r13 (the stack pointer, sp) and r14 (the link register, lr) 相应的 r15 ( the program counter, pc) 相应的CPSR(current program status register, cpsr) 特权模式 (除system模式) 还可以存取; 相应的 spsr (saved program status register)

程序状态寄存器 条件位: 中断禁止位: T Bit Q 位: Mode位(处理器模式位): J 位 N = 1-结果为负,0-结果为正或0 27 31 N Z C V Q 28 6 7 I F T mode 16 23 8 15 5 4 24 f s x c U n d e f i n e d J 条件位: N = 1-结果为负,0-结果为正或0 Z = 1-结果为0,0-结果不为0 C =1-进位,0-借位 V =1-结果溢出,0结果没溢出 Q 位: 仅ARM 5TE/J架构支持 指示增强型DSP指令是否溢出 J 位 J = 1: 处理器处于Jazelle状态 中断禁止位: I = 1: 禁止 IRQ. F = 1: 禁止 FIQ. T Bit 仅ARM xT架构支持 T = 0: 处理器处于 ARM 状态 T = 1: 处理器处于 Thumb 状态 Mode位(处理器模式位): 0b10000 User 0b10001 FIQ 0b10010 IRQ 0b10011 Supervisor 0b10111 Abort 0b11011 Undefined 0b11111 System

程序指针PC (r15) 当处理器执行在ARM状态: 当处理器执行在Thumb状态: 当处理器执行在Jazelle状态: 所有指令 32 bits 宽 所有指令必须 word 对齐 所以 pc值由bits [31:2]决定, bits [1:0] 未定义 (所以指令不能halfword / byte对齐). 当处理器执行在Thumb状态: 所有指令 16 bits 宽 所有指令必须 halfword 对齐 所以 pc值由bits [31:1]决定, bits [0] 未定义 (所以指令不能 byte对齐). 当处理器执行在Jazelle状态: 所有指令 8 bits 宽 处理器执行 word 存取一次取4条指令

Undefined Instruction 异常处理 当异常产生时, ARM core: 拷贝 CPSR 到 SPSR_<mode> 设置适当的 CPSR 位: 改变处理器状态进入 ARM 态 改变处理器模式进入相应的异常模式 设置中断禁止位禁止相应中断 (如果需要) 保存返回地址到 LR_<mode> 设置 PC 为相应的异常向量 返回时, 异常处理需要: 从 SPSR_<mode>恢复CPSR 从LR_<mode>恢复PC Note:这些操作只能在 ARM 态执行. 0x1C 0x18 0x14 0x10 0x0C 0x08 0x04 0x00 FIQ IRQ (Reserved) Data Abort Prefetch Abort Software Interrupt Undefined Instruction Reset Vector Table Vector table can be at 0xFFFF0000 on ARM720T and on ARM9/10 family devices

字节顺序 The ARM 可以用 little/big endian 格式存取数据. Little endian Big endian 31 24 23 16 15 8 7 r0 = 0x11223344 11 22 33 44 r1 = 0x100 STR r0, [r1] 3 2 1 0 Byte Lane 0 1 2 3 31 24 23 16 15 8 7 31 24 23 16 15 8 7 11 22 33 44 Memory 11 22 33 44 LDRB r2, [r1] 31 24 23 16 15 8 7 31 24 23 16 15 8 7 R2 = 0x44 00 00 00 44 00 00 00 11 R2 = 0x11 Little endian Big endian For more information, see: “Application Note 61: Big and Little Endian Byte Addressing”

ARM发展 SIMD 4 1 2 3 4T 6 5TEJ 5TE Jazelle 支持 Java字节码 支持Halfword 和signed halfword / byte 和System mode 改良的ARM/Thumb 交互作用 以及CLZ 指令 5TE 1 SA-110 2 ARM9EJ-S SA-1110 ARM7EJ-S 3 Saturated maths DSP multiply-accumulate instructions ARM926EJ-S 支持Thumb指令集 4T 6 SIMD SISIMDMD S 早期的ARMs SIMD ARM7TDMI ARM9TDMI ARM1020E ARM9E-S ARM720T ARM940T XScale ARM966E-S ARM11

测验1 1) 说出ARM可以工作的模式名字。 2) ARM核有多少个寄存器? 3) 什么寄存器用于存储PC和连接寄存器? 5) 哪种模式使用的寄存器最少? 6) 在Thumb 指令集中,哪些寄存器处于Low group? 7) CPSR的哪一位反映了处理器的状态? 8) 所有的Thumb指令采取什么对齐方式? 9) ARM有哪几个异常类型。 10) 为什么FIQ的服务程序地址要位于0X1C? 11) 在复位后,ARM处理器处于何种模式、何种状态?

Agenda ARM公司简介 编程模式 指令集 系统设计

ARM 指令集 所有ARM指令均为32-bits长 大部分为单周期指令 所有指令都可以条件执行 采用 Load/Store 架构 数据处理指令: SUB r0,r1,#5 ;r1-5->r0 ADD r2,r3,r3,LSL #2 ;R3x4+r3->r2 ANDS r4,r4,#0x20 ;r4+0x20->r4,更新条件码标志位 ADDEQ r5,r5,r6 ;r5+r6->r5(条件-相等) 存储器存取指令: LDR r0,[r1],#4 ;r1+4->r0 STRNEB r2,[r3,r4] ;NE符合-将r2低8位数写到[r3+r4]内存单元 LDRSH r5,[r6,#8]! ;[r6+8]->r5(半字节),r5中高16位设置成该字节的符号位 STMFD sp!,{r0,r2-r7,r10} ;出栈

ARM 跳转分支指令 func1 func2 B <label> BL <子程序> PC ±32 Mbyte . 保存返回地址到 LR 返回时从 LR 恢复 PC 对于 non-leaf 函数, LR 必须压栈保存 func1 func2 : BL func1 STMFD sp!,{regs,lr} : BL func2 LDMFD sp!,{regs,pc} : MOV pc, lr

协处理器 多达16个可定义协处理器,用唯一的ID来标示 扩充ARM指令集 Handshaking signals ARM core Coprocessor X Coprocessor Y Databus F D E 多达16个可定义协处理器,用唯一的ID来标示 扩充ARM指令集 通常用作ARM “internal functions” (例如:cp15通常 用作 ARM cache 控制器) 通常系统设计的时候最好用内存映射外设 容易实现

Thumb指令集 Thumb 是一个 16-bits 指令集 ARM / Thumb 转换使用 BX 指令 对于有编译器产生的绝大多数指令: 优化代码密度 (~65% of ARM ) 提高窄内存操作性能 是ARM指令集的一个功能子集 ARM / Thumb 转换使用 BX 指令 15 31 ADDS r2,r2,#1 ADD r2,#1 32-bits ARM 指令 16-bits Thumb 指令 对于有编译器产生的绝大多数指令: 条件执行不可用 源和目的寄存器相同 只有低端寄存器可用 常量大小受限制 内嵌的桶形移位不可用

存储器宽度 (zero wait state) ARM / Thumb 性能分析 5000 10000 15000 20000 25000 30000 Dhrystone 2.1 / sec @20MHz ARM Thumb 32 bit 16 bit 16 bit with 32 bit stack 存储器宽度 (zero wait state)

Jazelle Jazelle 使得 ARM cores 执行 8-bit 的Java 字节码 95% 的字节码执行使用 hardware (typical) Normal JVM: 1.0 Caffeinemarks/MHz ARM9EJ: 5.5 Caffeinemarks/MHz 更高的性能 增加的门电路<12K (ARM9EJ-S 同 ARM9E-S比较) ARM JTEK (Java Technology Enabling Kit) 提供支持代码 ARM 指令流 Thumb 执行单元 Jazelle 预取阶段 解码阶段 执行阶段

Agenda 介绍 编程模式 指令集 系统设计

基于ARM的系统示例 32 bit RAM 16 bit RAM 外设 中断控制器 I/O ARM Core 8 bit ROM nIRQ nFIQ ARM Core 8 bit ROM

AMBA总线 AMBA Advanced Microcontroller Bus Architecture ADK ACT Arbiter Reset ARM TIC Timer Remap/ Pause External ROM External Bus Interface Bus Interface Bridge External RAM On-chip RAM Interrupt Controller Decoder AHB or ASB APB 系统总线 片内外设总线 AMBA Advanced Microcontroller Bus Architecture ADK Complete AMBA Design Kit ACT AMBA Compliance Testbench PrimeCell ARM’s AMBA compliant peripherals

ARM Developer Suite 1.2 ADS1.2是为嵌入式ARM开发而设计的一整套软件开发工具 从最初的软件原型到最终优化的ROM代码。 ADS1.2发布于2001的12月份 支持的主机系统 IBM compatible PCs with Windows 95, 98, 2000, ME or NT4 Sun workstations with Solaris 2.6, 2.7 or 2.8 HP workstations with HPUX 10.20, 11 Red Hat Linux 6.2 & 7.1 使用FLEXLM管理器,管理它的LICENSE 45天的评估版软件 第三方工具支持: http://www.arm.com/DevSupp/

使用 Multi-ICE 调试 ARM 被调试的系统可以是最终系统! 也可以使用第三方开发调试工具。 Debugger and Multi-ICE server (可以运行在不同的主机上) CPU Control Address Data EmbeddedICE Logic-RT BREAKPT 5线JTAG TAP ARM 被调试的系统可以是最终系统! 也可以使用第三方开发调试工具。

ARM 实时跟踪 Embedded Trace Macrocell (ETM) Serial/Ethernet 主机运行Trace Debug 工具 (Add-on for ADS) 并口l 5 wire JTAG port 9,13,21 wire Trace Port Embedded Trace Macrocell (ETM) 实时指令 (PC) 跟踪 实时数据访问跟踪 包含 ICE功能(trigger & filter logic) MultiTrace Trace Port Analyzer (TPA) 更深层次的追踪 Trace Debug Tools 通过 JTAG/Multi-ICE配置 ETM 跟踪 从ETM/MultiTrace接收跟踪信息 使用源代码镜像文件得到 ETM跟踪的数据 ARM core ETM TAP controller Trace Trigger / Filter 5 RAM ROM … …

Diamond Multimedia Rio 600 Nintendo Gameboy Advance ARM Powered Products 3Com 10/100 PCI NIC Diamond Multimedia Rio 600 Samsung ML5100A JVC "Pixstar" GC-X1 Alba Bush Internet TV Sony MZ-R90 MiniDisc Iomega HipZip Nintendo Gameboy Advance Ericsson R380 Lexmark Z52 Color Jetprinter HP CapShare HP Jornado 820 Nokia 8810 Nokia Mediamaster Psion Revo Plus

测验 2 1) 哪些ARM指令可以有条件的执行? 2) 下面的指令完成什么工作? MOVNES r2,r3,ASR #2 3) Thumb代码与ARM代码比较的两大优势? 4) AMBA代表是什么? 5) Multi-ICE为你完成什么工作?