嵌入式面试高频(ARM处理器)
ARM处理器
1 哈弗结构和冯诺依曼结构介绍和区别⭐⭐⭐⭐⭐
哈弗结构(Harvard Architecture)是一种分离存储器的计算机体系结构。在哈弗结构中,指令和数据存储在不同的物理存储器中,分别由指令存储器(Instruction Memory)和数据存储器(Data Memory)来处理。这种结构在处理器内部有两条并行的总线,一条用于访问指令存储器,一条用于访问数据存储器。哈弗结构因为可以同时访问指令和数据,因此在某些应用中可以提高计算机的性能。
冯诺依曼结构(Von Neumann Architecture)是一种存储程序的计算机体系结构。在冯诺依曼结构中,指令和数据存储在同一块物理存储器中,通过指令指针(Instruction Pointer)来区分指令和数据。由于指令和数据使用同一条总线传输,因此在执行程序时必须按照一定的顺序去执行。
区别:
存储器结构不同:哈弗结构中指令和数据存储在不同的物理存储器中,而冯诺依曼结构中指令和数据存储在同一块物理存储器中。
总线使用不同:哈弗结构中有两条并行的总线分别用于访问指令存储器和数据存储器,而冯诺依曼结构中使用同一条总线传输指令和数据。
处理器工作方式不同:由于存储器结构和总线使用不同,哈弗结构的处理器可以同时访问指令和数据,而冯诺依曼结构的处理器必须按照一定的顺序去执行程序。
应用场景不同:哈弗结构适用于需要高速访问指令和数据的应用,如数字信号处理、嵌入式系统等;而冯诺依曼结构则适用于通用计算机,如个人电脑、服务器等。
2 请说说CPU的内核态与用户态⭐⭐⭐⭐⭐
多数CPU都有两种模式,即内核态与用户态。通常,在PSW(Program Status Word,程序状态字寄存器)中有一个二进制位控制这两种模式。当在内核态运行时,CPU可以执行指令集中的每一条指令,并且使用硬件的每一种功能。相反的,用户程序在用户态下运行,仅允许执行整个指令集的一个子集和访问所有功能的一个子集。相对应的,内核态与用户态也是操作系统的两种运行级别。内核态拥有最高权限,可以访问所有系统指令;用户态则只能访问一部分指令。
在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等。所以区分内核态与用户态主要是出于安全的考虑。
3 什么是ARM流水线技术⭐⭐⭐⭐
ARM流水线技术是一种在ARM处理器内部实现指令并行执行的技术。采用流水线技术可以将指令执行过程分为多个阶段,每个阶段可以同时执行不同的指令,从而提高处理器的执行效率。
ARM流水线技术的基本结构如下:
1 指令取指(Instruction Fetch):从内存中取出指令并存储到指令缓存中。
2 指令译码(Instruction Decode):对指令进行解码并生成相应的操作控制信号。
3 操作数读取(Operand Read):根据操作控制信号从寄存器或内存中读取操作数。
4 执行(Execute):执行指令的操作,如加减运算、逻辑运算等。
5 存储器访问(Memory Access):如果指令需要访问内存,则进行内存读写操作。
6 结果写回(Write Back):将计算结果写回寄存器或内存中。
ARM流水线技术的优点是可以提高处理器的运算效率,因为在流水线中多个指令可以同时执行不同的操作。同时,ARM处理器的流水线技术还支持指令重排和预测执行等技术,进一步提高了处理器的性能。
然而,ARM流水线技术也有一些缺点。例如,数据冒险和控制冒险等问题可能会影响流水线的执行效率,因为一些指令的执行需要等待之前的指令执行完成。此外,流水线技术也可能会增加处理器的延迟和能耗,因为流水线需要更多的硬件资源和额外的时钟周期。
4 ARM有几种工作模式⭐⭐⭐⭐⭐
- 用户模式(User Mode):是最基本的工作模式,一般用于普通应用程序的执行,没有特殊的权限。在用户模式下,程序只能执行普通的指令,无法访问系统的关键资源,例如中断向量表、页表、控制寄存器等。
- 系统模式(System Mode):是ARM的特权模式,可以访问系统的关键资源,例如中断向量表、页表、控制寄存器等。系统模式下的程序可以执行所有指令,可以访问所有的硬件资源。一般操作系统内核会在系统模式下运行。
- 监控模式(Monitor Mode):是ARM Cortex-A系列处理器中的一种特殊模式。在监控模式下,CPU处于受限制的状态,无法访问所有的资源。用于实现安全的开机启动和固件升级等操作。
- 服务模式(Supervisor Mode):是ARM处理器最基本的特权模式之一,用于操作系统内核的执行。在服务模式下,程序可以访问所有的硬件资源,执行所有的指令,但是不能使用部分指令集扩展。
- 中断模式(Interrupt Mode):是ARM处理器最常用的工作模式之一,用于执行中断服务例程。在中断模式下,程序可以访问所有的寄存器和内存,但是无法执行一些特殊的指令,例如访问协处理器。
- 快速中断模式(Fast Interrupt Mode):与中断模式类似,但是在快速中断模式下,系统会自动禁用一些中断和系统保护机制,提高中断响应速度,适用于实时应用。
- 异常模式(Exception Mode):是一种特殊的工作模式,在出现某些异常情况时,例如除零、非法指令、内存访问错误等,CPU会跳转到异常模式,执行对应的异常服务例程。在异常模式下,程序无法访问一些寄存器和内存,但是可以执行一些特殊的指令。
5 ARM处理器几种模式切换的过程⭐⭐⭐⭐
1 执行软中断(SWI)或复位命令(Reset)指令。如果在用户模式下执行SWI指令,CPU就进入管理(Supervisor)模式。
2 有外部中断发生。如果发生了外部中断,CPU就会进入IRQ或FIQ模式。
3 CPU执行过程中产生异常。最典型的异常是由于MMU保护所引起的内存访问异常,此时CPU会切换到Abort模式。如果是无效指令,则会进入Undefined模式。
4 有一种模式是CPU无法自动进入的,这种模式就是System模式,要进入System模式必须由程序员编写指令来实现。因此一般情况下,操作系统在通过SWI进入Supervisor模式后,做一些操作后,就进入System模式。
6 特权模式有哪些?异常模式有哪些?⭐⭐⭐⭐
除了用户模式之外,其余六种模式都是特权模式。除了用户模式和系统模式之外,其余五种模式都是异常模式。
7 ARM指令集分为几类?
ARM指令集可以分为两类:ARM指令集和Thumb指令集。其中,ARM指令集是32位指令集,提供高性能,并且可以访问大量的内存,适合运行比较大的应用程序。Thumb指令集是16位指令集,可以更有效地使用有限的存储器资源,适合运行小型应用程序或者带有有限存储器的设备。另外,ARM还有一种混合指令集,称为Thumb-2指令集,它可以同时支持ARM和Thumb指令集,并且可以在运行时自动选择最佳的指令集来执行程序,以获得更高的性能和更低的能量消耗。
8 ARM寄存器⭐⭐⭐⭐⭐
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
该专栏面向嵌入式开发工程师、C++开发工程师,包括C语言、C++,操作系统,ARM架构、RTOS、Linux基础、Linux驱动、Linux系统移植、计算机网络、数据结构与算法、数电基础、模电基础、5篇面试题目、HR面试常见问题汇总和嵌入式面试简历模板等文章。超全的嵌入式软件工程师面试题目和高频知识点总结! 另外,专栏分为两个部分,大家可以各取所好,为了有更好的阅读体验,后面会持续更新!!!