ARM异常与X86架构中断

合集下载

目标运行时x86不支持的原因

目标运行时x86不支持的原因

目标运行时x86不支持的原因目标运行时x86不支持的原因:1.架构不兼容:目标运行时(Target Runtime)是指程序的运行环境,而x86是一种常见的计算机处理器架构。

x86架构主要用于个人计算机和一些服务器上,而目标运行时可能针对其他架构进行优化,如ARM架构用于移动设备。

因此,由于架构不同,目标运行时可能无法在x86架构上运行。

2.指令集不支持:不同的处理器架构使用不同的指令集,这是处理器与计算机之间进行信息交流的方式。

目标运行时可能使用特定于某种架构的指令集,而x86架构只支持x86指令集。

如果目标运行时使用的指令集不在x86处理器支持的范围内,则无法在x86架构上运行。

3.编译器不支持:编译器负责将源代码转换为目标代码,供目标运行时使用。

某些目标运行时可能使用了特殊的编译器或编译器选项,以便针对特定架构进行优化。

如果编译器不支持x86架构或不具备为x86架构优化的能力,则无法生成可在x86架构上运行的目标代码。

4.硬件限制:目标运行时可能需要一些特定的硬件支持才能正常运行。

例如,某些目标运行时可能依赖于浮点数处理单元(Floating Point Unit,FPU)的支持,而某些低端的x86处理器可能没有集成FPU。

在这种情况下,目标运行时可能无法在这些处理器上运行。

5.依赖库不兼容:目标运行时可能依赖于某些特定的库或组件,用于提供特定的功能或支持某些特定的操作系统。

如果在x86架构上缺少所需的库或组件,目标运行时可能无法在x86架构上运行。

6.性能和效率问题:目标运行时可能根据针对特定架构的优化进行了深度修改和调整,以便提供较高的性能和效率。

如果将目标运行时移植到x86架构上,可能无法充分利用x86架构的优势,导致性能下降或效率低下。

7.可用性和市场需求:目标运行时的开发者可能将资源和精力投入到支持广泛使用的架构上,如ARM、x86_64等,因为这些架构具有更大的市场需求和用户基础。

工控主板x86和arm对比

工控主板x86和arm对比

X86的主板更好吧。

X86嵌入式工控主板——孰强孰弱,市场做主关键字:ATOM 工控主板X86 Intel 945GSE+ICH7M 嵌入式一、嵌入式系统发展脉络及趋势嵌入式系统诞生于微型机时代,并经历了从裁剪到应用延伸的发展过程。

70年代末,工业控制领域引入了智能控制,体积、功耗、价格过大的微型机被裁剪成只有某一特定用途的单片机,此时的嵌入式系统使用8位的CPU芯片来执行一些单线程的程序,系统并没有操作系统,只能通过汇编语言对其进行直接控制,运行结束后再清除内存,具有监测、伺服、设备指示等功能,通常应用于各类工业控制和飞机、导弹等武器装备中。

发展到80年代,简单的操作系统被移植到系统中,IC制造商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAM、ROM等部件统统集成到一片VLSI中,制造出面向I/O设计的微控制器。

此时系统内核的精巧性、兼容性、扩展性都得到大大的改进。

20世纪90年代,智能家用电器等消费类电子产品发展迅速,由于这类产品直接关系到终端消费者的利益,因此智能家电嵌入式系统被前所未有的关注起来。

除此之外,在分布控制、柔性制造、数字化通信方面,嵌入式系统也取得了飞速的发展。

此时的嵌入式操作系统已经具备了文件和目录管理、设备管理、多任务、网络、图形用户界面(GUI)等功能,应用已经得到了很大的延伸。

如今,互联网的发展给嵌入式系统注入了新的生机,网络实现了控制后台与应用终端的高速对接与通信,这有利于两大模块的明确分工和智能管理。

而数据存储的任务则由独立的存储模块承担起来。

在控制后台和存储模块的支持下,嵌入式应用终端可以实现更加灵活的应用延伸和更加强悍的环境适应能力,真正实现无处不在的嵌入式。

嵌入式市场的发展趋势给扩展灵活、功能移植能力强的X86结构产品提供了发展契机,然而目前ARM结构的主板仍然以其强势的姿态占据着嵌入式市场的绝大多数份额。

二、X86与ARM的对比X86与ARM产品的优劣势比较是很明显的,ARM的优势在于它是RISC体系,可以提供更高的抗干扰和更低的成本。

Linux 的异常处理

Linux 的异常处理
Linux 由此进入正常的运行状态,之后一段程序(用户空间的或者内核空间的)将一直 在 CPU 上执行,直到程序执行结束或发生任何 Exception。发生 Exception 时,CPU 自动进入 内核态(ARM 的 SVC 态),根据发生的 Exception 类型的不同,linux 内核将可能处理外设 IO、 切换进程、管理内存分配、提供系统服务等一系列操作。所以 Linux 的动态运行可以认为完 全是由 Exception 事件驱动的。
.endm
name:要生成的 vector_xxx 中的 xxx,比如 vector_stub irq, IRQ_MODE, 4,生成 vector_irq, 即 Exception 向量中 IRQ 对应的跳转地址。
mode:设定 CPU 模式位(CPSR 的 M[4:0]),从而可以操作对应模式的特殊寄存器。
图中显示,所有 7 种类型的 Exception 的跳转地址按顺序从基地址开始排列,被称
为 Exception 向 量 。 ARMv6 支 持 两 种 基 地 址 ( Normal:0x00000000,High vector:0xFFFF0000),具体使用哪个基地址,由 ARMv6 内部的 Control Register 的 bit13(V bit)设定。Linux 使用 High vector,需要注意的是,Exception 向量地址也是 虚拟地址(如果使用了虚拟地址机制)。
bl trace_hardirqs_off
#endif
get_thread_info tsk
#ifdef CONFIG_PREEMPT
ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
add r7, r8, #1

ARM的异常处理学习笔记转贴

ARM的异常处理学习笔记转贴

ARM 的异常处理学习笔记转贴ARM的异常处理这部分比较不好理解。

当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。

当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执行。

在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。

1、引起异常的原因(1)、指令执行引起的异常软件中断、未定义指令(包括所要求的协处理器不存在是的协处理器指令)、预取址中止(存储器故障)、数据中止。

(2)、外部产生的中断复位、FIQ、IRQ。

2、ARM中异常中断的种类(1)、复位(RESET)a、当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行,包括系统加电和系统复位。

b、通过设置PC跳转到复位中断向量处执行称为软复位。

(2)、未定义的指令当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。

(3)、软件中断这是一个由用户定义的中断指令(SWI)。

可用于用户模式下的程序调用特权操作指令。

在实时操作系统中可以通过该机制实现系统功能调用。

(4)、指令与取终止(Prefech Abort)如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。

(5)、数据访问终止(DATAABORT)如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断。

(6)、外部中断请求(IRQ)当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。

系统中个外设通过该异常中断请求处7)、快速中断请求(FIQ) 理服务。

(当处理器的外部快速中断请求引脚有效,而且CPSR的F控制位被清除时,处理器产生外部中断请求异常中断。

X86架构与ARM架构区别

X86架构与ARM架构区别

X86架构与ARM架构区别1.设计理念:-X86架构是传统的复杂指令集计算机(CISC)架构,它的设计目标是提供功能丰富和灵活的指令集,以支持多样化的计算任务。

-ARM架构则是精简指令集计算机(RISC)架构,它更注重的是简化指令集,提高整体效率和节省功耗。

2.指令集:-X86架构有一套复杂的指令集,包含大量的指令,可完成复杂的任务,支持多种操作模式和寻址模式。

这使得X86架构的处理器在处理大型软件和运算密集型任务时表现出色。

-ARM架构的指令集相对精简,仅有32位或64位的固定长度指令。

虽然指令集较少,但非常高效,适用于移动设备和嵌入式系统,可以提供较低的功耗和较高的性能。

3.功耗和性能:-X86架构的处理器通常具有较高的功耗,适用于高性能计算领域,如桌面电脑、工作站和服务器。

它们通常拥有更高的主频和更多的核心,能够处理更大的数据集和更多的并行任务。

-ARM架构的处理器功耗较低,适合用在移动设备和嵌入式系统中。

虽然单个处理核心的性能可能不如X86处理器高,但ARM架构的优势在于可以通过多核心并行处理来提高整体性能。

4.软件兼容性:- X86架构是PC领域的标准架构,几乎所有的桌面软件和操作系统都能够运行在基于X86架构的处理器上,例如Windows、MacOS和Linux。

这使得X86架构成为主流的计算平台。

-ARM架构则是移动设备领域的主流架构,大部分移动设备和嵌入式系统都采用ARM架构。

但是,由于指令集和结构的不同,ARM架构与X86架构不兼容,因此软件和操作系统需要适配才能在ARM处理器上运行。

5.生态系统:-X86架构具有非常庞大的生态系统,有大量的硬件设备和软件开发者支持,同时拥有成熟的工具链和开发环境,使得开发者能够更轻松地开发和优化软件。

-ARM架构经过近年来的迅速发展,也建立了庞大的生态系统,并且已经在移动设备和物联网领域得到了广泛应用。

随着ARM服务器和高性能计算的兴起,ARM架构的生态系统也在不断扩大。

一文看懂arm架构和x86架构有什么区别

一文看懂arm架构和x86架构有什么区别

一文看懂arm架构和x86架构有什么区别本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能、扩展能力、操作系统的兼容性、软件开发的方便性及可使用工具的多样性及功耗这五个方面详细的对比了arm架构和x86架构的区别,具体的跟随小编一起来了解一下。

什么叫arm架构ARM架构过去称作进阶精简指令集机器(AdvancedRISCMachine,更早称作:AcornRISCMachine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。

由于节能的特点,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。

在今日,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。

ARM处理器可以在很多消费性电子产品上看到,从可携式装置(PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机)到电脑外设(硬盘、桌上型路由器)甚至在导弹的弹载计算机等军用设施中都有他的存在。

在此还有一些基于ARM设计的派生产品,重要产品还包括Marvell的XScale架构和德州仪器的OMAP系列。

ARM架构图下图所示的是ARM构架图。

它由32位ALU、若干个32位通用寄存器以及状态寄存器、32&TImes;8位乘法器、32&TImes;32位桶形移位寄存器、指令译码以及控制逻辑、指令流水线和数据/地址寄存器组成。

1、ALU:它有两个操作数锁存器、加法器、逻辑功能、结果以及零检测逻辑构成。

2、桶形移位寄存器:ARM采用了32&TImes;32位的桶形移位寄存器,这样可以使在左移/右移n位、环移n位和算术右移n位等都可以一次完成。

3、高速乘法器:乘法器一般采用“加一移位”的方法来实现乘法。

ARM为了提高运算速度,则采用两位乘法的方法,根据乘数的2位来实现“加一移位”运算;ARM高速乘法器采用32&TImes;8位的结构,这样,可以降低集成度(其相应芯片面积不到并行乘法器的1/3)。

X86架构与ARM架构

X86架构与ARM架构X86架构是一种基于复杂指令集计算机(CISC)的处理器架构,最早由英特尔于1978年引入。

它主要用于个人电脑和服务器,包括英特尔的x86系列芯片和AMD的x86兼容芯片。

X86架构的主要特点是具有庞大而复杂的指令集,包括各种算术、逻辑、数据传输和控制指令。

这些指令可以直接执行复杂的操作,如浮点运算、字符串操作和操作系统调用,从而提供了灵活性和功能强大的计算能力。

X86架构在PC和服务器市场上占据了主导地位,这部分是由于它的兼容性非常好。

几乎所有的主流操作系统和软件都支持x86架构,这使得用户能够轻松地安装和运行各种软件。

此外,由于市场竞争的压力,x86架构的处理器在性能上也保持了快速的发展。

英特尔和AMD不断推出新款芯片,通过提高时钟速度、增加核心数和改进架构来提升性能。

然而,X86架构也存在一些缺点。

首先,由于其复杂的指令集,X86架构处理器的设计和生产成本相对较高。

其次,X86架构的处理器通常需要较高的功耗,这对于移动设备等对电池续航能力有较高要求的场景来说不太理想。

另外,X86架构的处理器通常较大,难以适应轻薄、紧凑的设备设计。

与X86相比,ARM架构是一种基于精简指令集计算机 (RISC) 的处理器架构,最早由英国公司ARM Holdings于1983年引入。

ARM架构的特点是指令集简洁,只包含最基本的指令,如加载和存储操作、算术和逻辑运算。

ARM架构的设计初衷是为了在资源有限的嵌入式设备上提供高效的计算能力。

由于其低功耗和高能效的特点,ARM架构在移动设备领域取得了巨大成功。

目前,几乎所有的智能手机和平板电脑都采用了ARM架构的处理器。

ARM架构的处理器还广泛应用于其他嵌入式设备,如物联网设备、医疗设备和汽车电子等。

另外,由于其较小的面积和低功耗要求,ARM架构的处理器在嵌入式设备中具有较高的灵活性和适应性。

然而,与X86相比,ARM架构在性能上较为有限。

虽然ARM架构的处理器性能在不断提升,但与X86架构的处理器相比仍然存在差距。

ARM异常中断以及对ARM异常返回地址的分析

处理器动作: 执行完当前指令后,进入中断异常 R14_irq = address of next instruction to be executed + 4; SPSR_irq = CPSR; …. …. If high vectors configured then PC = 0xFFFF0018 Else PC = 0x00000018
返回地址:SUBS PC,R14,#8 返回地址分析: 当进入异常时,R14_abt = address of the aborted instruction + 8
所以要返回到有问题的指令处重新执行,所以返回的地址为 R14-8 IRQ 中断异常:
产生原因: 当处理器的外部中断请求引脚有效,且 CPSR 寄存器的 I 控制位被清除 时,处理器产生外部中断 IRQ 异常。
是因为当前指令即引起软件异常中断的指令执行后所引起的,说明当前指令已近执行,当从
中断返回时,执行的指令应该是当前指令的下一条指令,即待执行指令的地址应该是 0x3004, 而 R14 中存放的即为 0x3004,所以返回时使用将 R14 的值直接赋给 PC 即可。
指令预期中止异常: 发生原因:若在指令预取阶段遇到无效指令时,系统存储器将该预取的指令标记为无
效指令,当处理器试图去执行这一条被标记为预取无效的指令时,将产生指令预取中止异常, 注意若处理器没有执行无效指令时将不会产生异常中断(在流水线中存在一条分支指令,导 致该非法指令没有执行,将不会产生该异常)。
处理器动作: R14_abt = address of the aborted instruction + 4 SPSR_abt = CPSR ….. …..
2、各异常分析
举个小例子,下面是一段 ARM 汇编代码: (后面的返回地址分析中将会用到此图)

浅谈ARM架构应用处理器与X86架构处理器

浅谈ARM架构应用处理器与X86架构处理器ARM架构应用处理器和x86架构处理器是目前市场上最常见的两种处理器架构。

虽然它们都用于计算机和移动设备,但在设计和使用上有一些重要的区别。

首先,ARM架构应用处理器主要用于移动设备和嵌入式系统,如智能手机、平板电脑和物联网设备。

它们通常采用低功耗设计,并具有较小的尺寸和散热要求。

ARM处理器的主要优点是能够提供出色的能效比,即在限制功耗的情况下,能够提供更高的性能。

这使得ARM处理器成为移动设备的首选。

与之相比,x86架构处理器主要用于桌面和服务器系统。

它们通常具有更高的性能,更强大的计算能力和更高的功耗要求。

x86处理器的主要优势是它们能够运行更广泛的软件和操作系统,包括Windows和一些高性能应用程序。

这使得x86处理器成为图形设计、游戏和大规模计算等需要更强大处理能力的领域的首选。

此外,ARM架构应用处理器通常采用的是RISC(精简指令集计算机)架构,而x86架构处理器采用复杂指令集计算机(CISC)架构。

RISC架构的优点是指令简单,执行速度快,但需要更多的指令来完成相同的任务。

CISC架构的优势在于单个指令执行的功能更多,但执行速度相对较慢。

然而,随着技术的进步,两种架构之间的差距在逐渐缩小。

此外,由于x86架构处理器的市场份额更大,更多的软件和工具支持x86架构。

这意味着在选择处理器架构时,x86处理器更容易满足各种软件和应用程序的需求。

而选择ARM架构的处理器意味着需要更多的定制和适应性开发。

最后,ARM架构处理器通常具有集成的图像、视频和音频硬件加速功能,这使得它们非常适合移动设备上的媒体处理和图形渲染。

而x86架构处理器则更适合需要更高的计算性能和大规模数据处理的任务。

综上所述,ARM架构应用处理器和x86架构处理器在应用场景、功耗、软件支持和具体功能等方面存在一些重要差异。

选择适合自己需求的处理器架构非常关键,需要根据所需的性能、功耗和软件兼容性等方面进行综合考量。

ARM与X86构架

ARM与X86构架我们要明⽩CPU是⼀个执⾏部件,它之所以能执⾏,也是因为⼈们在⾥⾯制作了执⾏各种功能的硬件电路,然后再⽤⼀定的逻辑让它按照⼀定的顺序⼯作,这样就能完成⼈们给它的任务。

也就是说,如果把CPU看作⼀个⼈,⾸先它要有正常的⼯作能⼒(既执⾏能⼒),然后⼜有⾜够的逻辑能⼒(能明⽩做事的顺序),最后还要听的懂别⼈的话(既指令集),才能正常⼯作。

⽽这些集中在⼀起就构成了所谓的“架构”,它可以理解为⼀套“⼯具”、“⽅法”和“规范”的集合。

不同的架构之间,⼯具可能不同,⽅法可能不同,规范也可能不同,这也造成了它们之间的不兼容——你给⼀个意⼤利泥⽡匠看⼀份中⽂写成的烹饪指南,他当然不知道应该⼲什么了。

如果还看不懂,没关系,我们继续。

从CPU发明到现在,有⾮常多种架构,从我们熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它们之间的差距都⾮常⼤。

但是如果从最基本的逻辑⾓度来分类的话,它们可以被分为两⼤类,即所谓的“复杂指令集”与“精简指令集”系统,也就是经常看到的“CISC”与“RISC”。

属于这两种类中的各种架构之间最⼤的区别,在于它们的设计者考虑问题⽅式的不同。

我们可以继续举个例⼦,⽐如说我们要命令⼀个⼈吃饭,那么我们应该怎么命令呢?我们可以直接对他下达“吃饭”的命令,也可以命令他“先拿勺⼦,然后舀起⼀勺饭,然后张嘴,然后送到嘴⾥,最后咽下去”。

从这⾥可以看到,对于命令别⼈做事这样⼀件事情,不同的⼈有不同的理解,有⼈认为,如果我⾸先给接受命令的⼈以⾜够的训练,让他掌握各种复杂技能(即在硬件中实现对应的复杂功能),那么以后就可以⽤⾮常简单的命令让他去做很复杂的事情——⽐如只要说⼀句“吃饭”,他就会吃饭。

但是也有⼈认为这样会让事情变的太复杂,毕竟接受命令的⼈要做的事情很复杂,如果你这时候想让他吃菜怎么办?难道继续训练他吃菜的⽅法?我们为什么不可以把事情分为许多⾮常基本的步骤,这样只需要接受命令的⼈懂得很少的基本技能,就可以完成同样的⼯作,⽆⾮是下达命令的⼈稍微累⼀点——⽐如现在我要他吃菜,只需要把刚刚吃饭命令⾥的“舀起⼀勺饭”改成“舀起⼀勺菜”,问题就解决了,多么简单。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.对x86架构而言,中断是由异步的部事件引起的。外 部事件及中断响应与正执行的指令没有关系。 异常是在执行指令期间检测到不正常的或非法的条件所 引起的。异常与正执行的指令有直接的联系。
2.ARM中,当正常的程序执行流程发生暂时的停止时,称 之为异常。中断包括在异常模式之内。
相同点:
1.ARM异常和X86中断一样,在执行时都会保护现场,在异常或中断 处理完之后会恢复现场,并且多个异常或中断会按照一定的优先级顺 序执行; 2.异常和中断的过程类似(请求、响应、处理、返回); 3.异常和中断可类似得分为软件和硬件两方面; 4.两者都提高了CPU的工作效率,能实现实时处理和故障处理;
不同点:
1.ARM异常的原因是正在执行的程序的暂停,而X86中断是由异步的 外部事件引起的,前者范围比后者要宽泛; 2.中断可以被屏蔽,而异常需要得到及时响应和处理,通常不能被屏 蔽。
相关文档
最新文档