嵌入式面试高频(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流水线技术的基本结构如下:

指令取指(Instruction Fetch):从内存中取出指令并存储到指令缓存中。

指令译码(Instruction Decode):对指令进行解码并生成相应的操作控制信号。

操作数读取(Operand Read):根据操作控制信号从寄存器或内存中读取操作数。

执行(Execute):执行指令的操作,如加减运算、逻辑运算等。

存储器访问(Memory Access):如果指令需要访问内存,则进行内存读写操作。

结果写回(Write Back):将计算结果写回寄存器或内存中。

ARM流水线技术的优点是可以提高处理器的运算效率,因为在流水线中多个指令可以同时执行不同的操作。同时,ARM处理器的流水线技术还支持指令重排和预测执行等技术,进一步提高了处理器的性能。

然而,ARM流水线技术也有一些缺点。例如,数据冒险和控制冒险等问题可能会影响流水线的执行效率,因为一些指令的执行需要等待之前的指令执行完成。此外,流水线技术也可能会增加处理器的延迟和能耗,因为流水线需要更多的硬件资源和额外的时钟周期。

4 ARM有几种工作模式⭐⭐⭐⭐⭐

  1. 用户模式(User Mode):是最基本的工作模式,一般用于普通应用程序的执行,没有特殊的权限。在用户模式下,程序只能执行普通的指令,无法访问系统的关键资源,例如中断向量表、页表、控制寄存器等。
  2. 系统模式(System Mode):是ARM的特权模式,可以访问系统的关键资源,例如中断向量表、页表、控制寄存器等。系统模式下的程序可以执行所有指令,可以访问所有的硬件资源。一般操作系统内核会在系统模式下运行。
  3. 监控模式(Monitor Mode):是ARM Cortex-A系列处理器中的一种特殊模式。在监控模式下,CPU处于受限制的状态,无法访问所有的资源。用于实现安全的开机启动和固件升级等操作。
  4. 服务模式(Supervisor Mode):是ARM处理器最基本的特权模式之一,用于操作系统内核的执行。在服务模式下,程序可以访问所有的硬件资源,执行所有的指令,但是不能使用部分指令集扩展。
  5. 中断模式(Interrupt Mode):是ARM处理器最常用的工作模式之一,用于执行中断服务例程。在中断模式下,程序可以访问所有的寄存器和内存,但是无法执行一些特殊的指令,例如访问协处理器。
  6. 快速中断模式(Fast Interrupt Mode):与中断模式类似,但是在快速中断模式下,系统会自动禁用一些中断和系统保护机制,提高中断响应速度,适用于实时应用。
  7. 异常模式(Exception Mode):是一种特殊的工作模式,在出现某些异常情况时,例如除零、非法指令、内存访问错误等,CPU会跳转到异常模式,执行对应的异常服务例程。在异常模式下,程序无法访问一些寄存器和内存,但是可以执行一些特殊的指令。

5 ARM处理器几种模式切换的过程⭐⭐⭐⭐

执行软中断(SWI)或复位命令(Reset)指令。如果在用户模式下执行SWI指令,CPU就进入管理(Supervisor)模式。

2 有外部中断发生。如果发生了外部中断,CPU就会进入IRQ或FIQ模式。

3 CPU执行过程中产生异常。最典型的异常是由于MMU保护所引起的内存访问异常,此时CPU会切换到Abort模式。如果是无效指令,则会进入Undefined模式

有一种模式是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语言、C++,操作系统,ARM架构、RTOS、Linux基础、Linux驱动、Linux系统移植、计算机网络、数据结构与算法、数电基础、模电基础、5篇面试题目、HR面试常见问题汇总和嵌入式面试简历模板等文章。超全的嵌入式软件工程师面试题目和高频知识点总结! 另外,专栏分为两个部分,大家可以各取所好,为了有更好的阅读体验,后面会持续更新!!!

全部评论

相关推荐

🔥 2024春招必备 | 嵌入式开发面试八股文合集 📚亲爱的嵌入式开发小伙伴们,春招季即将到来!🌸 是时候武装自己的知识库,准备迎接面试挑战啦!我们精心整理了这份嵌入式开发面试八股文合集,帮助你在2024春招中脱颖而出!💪嵌入式面试八股文合集:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk📌 C语言基础篇1️⃣ 指针与内存- 指针常量vs常量指针的区别?- 野指针和悬空指针的成因及如何避免?- 内存对齐的原理及实际意义?- 如何实现一个安全的strcpy函数?- malloc/free与new/delete的区别?2️⃣ 预处理与编译- 宏定义的优缺点及注意事项?- static关键字的五种用法?- volatile关键字的作用及应用场景?- 程序的内存分布(代码段、数据段、BSS段、堆、栈)?- 编译过程的四个阶段及其作用?💻 数据结构与算法1️⃣ 基础数据结构- 链表:如何检测链表中的环?- 栈与队列:应用场景及区别?- 树:二叉树的遍历方式及应用?- 哈希表:解决冲突的方法?2️⃣ 常见算法- 排序算法的时间复杂度对比?- 二分查找的实现及优化?- 嵌入式系统中的内存优化算法?- 位操作在嵌入式中的应用?🐧 Linux系统编程1️⃣ 进程与线程- 进程与线程的区别?- 进程间通信的方式及优缺点?- 线程同步的方法?- 死锁的条件及预防措施?2️⃣ 文件与IO- 文件描述符的概念及管理?- 阻塞IO vs 非阻塞IO vs 异步IO?- select/poll/epoll的区别及应用场景?- Linux设备驱动的基本框架?🔌 嵌入式硬件与通信1️⃣ STM32开发- STM32启动过程详解?- 中断优先级管理及嵌套?- DMA工作原理及应用场景?- 定时器的工作模式及配置?2️⃣ 通信协议- I2C、SPI、UART的区别及应用场景?- CAN总线的特点及应用?- Modbus协议的帧格式及异常处理?- TCP/IP协议栈在嵌入式系统中的实现?⚡ 实时操作系统1️⃣ RTOS基础- 什么是实时操作系统?硬实时vs软实时?- FreeRTOS的任务调度机制?- 信号量、互斥量、消息队列的使用场景?- 优先级反转问题及解决方案?2️⃣ 系统设计- 嵌入式系统的启动流程设计?- 低功耗设计的关键技术?- 看门狗的工作原理及应用?- 嵌入式系统的可靠性设计?📝 实战经验分享1️⃣ 调试技巧- 如何高效定位内存泄漏问题?- 使用JTAG/SWD进行硬件调试的技巧?- 常见的嵌入式系统崩溃原因分析?- 性能瓶颈分析与优化方法?2️⃣ 项目经验- 如何设计一个可靠的通信协议栈?- 嵌入式产品的测试策略?- 固件升级(OTA)的实现方案?- 嵌入式系统安全性设计的关键点?---🎯 2024春招备战指南:1. 每天复习1-2个知识点,一个月就能覆盖全部重点!2. 结合实际项目经验,准备2-3个可深入讲解的案例3. 刷题平台上针对性练习算法题,提高编程能力4. 模拟面试,锻炼表达能力和逻辑思维💼 面试技巧:- 遇到不会的问题,坦诚表达并展示解决问题的思路- 主动展示自己的项目经验和技术亮点- 准备一些有深度的问题向面试官提问- 保持积极的学习态度和良好的沟通能力🌟 祝各位嵌入式开发者在2024春招中取得理想的offer!记住:机会总是留给有准备的人!加油!💯
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务