【嵌入式八股】一、语言篇(https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM【嵌入式八股】二、计算机基础篇(本专栏)https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM【嵌入式八股】四、嵌入式Linux篇https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0计算机系统概述01.什么是哈佛结构和冯诺依曼结构?冯诺依曼结构釆用指令和数据统一编址,使用同条总线传输,CPU读取指令和数据的操作无法重叠。哈佛结构釆用指令和数据独立编址,使用两条独立的总线传输,CPU读取指令和数据的操作可以重叠。哈佛结构的优点:可以同时进行指令和数据的访问,提高了处理器的效率;指令和数据使用不同的总线进行传输,避免了互相干扰;哈佛结构的缺点:硬件成本较高,需要额外的存储器和总线;存储器的分离可能会导致指令和数据的管理变得更加复杂;需要一些额外的机制来解决指令和数据之间的同步问题。冯诺依曼结构的优点:硬件成本较低,只需要一个存储器和一个总线即可;程序设计和管理相对简单,只需要一种地址寻址方式;可以通过缓存等技术提高存储器的访问效率。冯诺依曼结构的缺点:指令和数据使用同一个总线进行传输,可能会影响数据的访问效率;可能会发生指令和数据访问的竞争,影响处理器的效率;存储器管理比较复杂,需要一些额外的机制来实现程序的运行。哈佛结构适合需要高效访问指令和数据的应用场景,如嵌入式系统;而冯诺依曼结构适合通用计算机系统,由于硬件成本低和管理简单的优点,冯诺依曼结构在现代计算机中得到了广泛应用。02.CPU的内部结构?控制单元(Control Unit):控制单元是CPU的重要组成部分之一,它负责解释指令、控制数据流和计算机的操作。算术逻辑单元(Arithmetic Logic Unit,简称ALU):ALU是CPU的另一个重要组成部分,它负责执行算术运算和逻辑运算,如加、减、乘、除、与、或、非等运算。存储单元:包括CPU片内缓存和寄存器组。寄存器(Register):寄存器是CPU内部的一种存储设备,用于暂时存储数据或指令。CPU中有多种不同类型的寄存器,如通用寄存器、专用寄存器和状态寄存器等。缓存(Cache):缓存是一种高速存储器,用于存储最近使用的数据和指令,以提高CPU的访问速度。CPU通常具有多级缓存,其中级别越高,容量越小,速度越快。总线(Bus):总线是连接CPU和其他计算机组件的一组电线路,用于传输数据和指令。CPU包含多个总线,如数据总线、地址总线和控制总线等。时钟(Clock):时钟是CPU的一种基本组成部分,用于同步CPU的操作。向CPU发送脉冲信号,指示CPU何时执行下一步操作。数据的表示与运算03.负数和正数的反码、补码分别是什么?(1)负数的反码:对原码除符号位外的其余各位逐位取反就是反码。(2)负数的补码:负数的补码就是对反码加1。(3)正数的原码、反码、补码都一样。存储系统04.CPU跟内存、虚拟内存、硬盘的关系?CPU(中央处理器)是计算机中的主要处理器件,负责执行计算机指令并控制计算机的运行。内存(随机存取存储器)是一种暂时存储数据的硬件设备,用于存储当前正在运行的程序和数据。当CPU需要执行程序时,它会将程序和相关的数据从硬盘读入内存中。由于内存的容量有限,当内存中的空间不足以容纳所有需要执行的程序和数据时,操作系统就会使用虚拟内存来扩展内存容量。虚拟内存是一种将部分数据从内存中转移到硬盘上的技术,以便腾出内存空间给正在运行的程序使用。05.存储系统寄存器,缓存,RAM,ROM06.寄存器和内存的区别?寄存器(Registers)和内存(Memory)是计算机系统中两个重要的存储组件,它们在功能和特性上有一些区别。功能:寄存器是计算机处理器内部的一组高速存储单元,用于存储和操作指令、数据和地址。它们用于存储处理器的临时变量、计算结果和控制信息。寄存器的主要作用是提供高速访问和执行指令的能力。内存是计算机系统中用于存储数据和指令的主要存储区域。它是相对较慢的存储介质,但能够容纳更大量的数据。容量:寄存器的容量通常比较有限,每个寄存器可以存储少量的数据。内存的容量相对较大,可以容纳更多的数据。内存的大小通常以字节为单位进行度量,而寄存器的大小可以是几个字节或更小。访问速度:寄存器位于处理器内部,由于与处理器直接连接,因此可以以非常高的速度进行读取和写入操作。相比之下,内存位于处理器之外,因此访问速度较慢。成本:由于寄存器是处理器内部的组件,其成本相对较高。内存作为独立的存储设备,成本较低。层次结构:计算机系统中的存储通常以层次结构的方式组织。寄存器属于顶层,位于处理器内部,速度最快。内存属于中间层,位于处理器外部,速度较快。还可以有更大容量但速度较慢的辅助存储器,如硬盘驱动器。07.Cache一致性?缓存一致性是指在多个处理器或多个核心的计算机系统中,它们共享同一个内存区域时,保证每个处理器或核心的缓存中存储的数据是一致的。当一个处理器或核心修改共享内存中的数据时,它必须通知其他处理器或核心,以便它们更新自己的缓存。如果不进行缓存一致性处理,就可能导致不同处理器或核心看到不同的数据,这会引发程序错误,例如死锁、竞争条件等。缓存一致性可以通过硬件或软件实现。常见的缓存一致性协议包括MESI、MOESI和MESIF等。这些协议都通过一些机制来保证缓存数据的一致性,例如当一个处理器修改共享内存时,它会发送一个信号给其他处理器或核心,通知它们将缓存中的数据置为无效状态,从而保证了数据的一致性。在多核心和多处理器的计算机系统中,缓存一致性是一个非常重要的概念,它对于系统的性能和正确性都有着重要的影响。08.Cache的读写属性?在计算机科学中,"cache"(缓存)是一种临时存储设备,用于在处理器和主内存之间存储数据以提高访问速度。Cache具有两个主要的读写属性:读取(Read):当处理器需要访问内存中的数据时,它首先会检查cache中是否存在该数据。如果数据存在于cache中(命中),处理器可以直接从cache中读取数据,这比从主内存中读取速度更快。如果数据不在cache中(未命中),处理器必须从主内存中读取数据,这将会引入一定的延迟。写入(Write):对于写入操作,cache有不同的策略来管理数据的更新。一种常见的策略是写回(Write-back),其中当数据在cache中被修改后,只有在被替换出cache时才会被写回主内存。另一种策略是写通过(Write-through),其中数据在被写入cache的同时也会被写入主内存。这些读写属性的管理有助于提高处理器的性能,通过在处理器和主内存之间创建一个临时存储层,减少了频繁地访问主内存的开销。09.CPU要先对cache做什么,才能读取DMA数据?在CPU读取DMA数据之前,需要先进行缓存一致性操作,以确保DMA数据与CPU缓存中的数据是一致的。具体而言,需要进行以下操作:使CPU缓存失效:CPU将缓存中与DMA数据相关的数据标记为无效,以确保下一次访问这些数据时,能够从内存中读取最新的数据。禁用缓存:禁用CPU缓存,以确保CPU访问的是物理内存中的最新数据。刷新缓存:将缓存中的所有数据写回到内存中,以确保内存中的数据与CPU缓存中的数据一致。完成以上操作后,CPU就可以从内存中读取DMA数据了。读取完成后,需要重新启用缓存,并确保缓存中的数据是最新的,以便下一次访问时能够从缓存中读取数据,提高访问速度。10.CPU三级缓存,每级干什么?CPU三级缓存是指现代处理器中的三个层次的缓存:L1缓存、L2缓存和L3缓存。它们的作用是提供快速访问数据的能力,以减少CPU访问主内存的延迟。每级缓存的特点和功能如下:L1缓存(一级缓存):分为L1指令缓存(L1i缓存)和L1数据缓存(L1d缓存)两部分。L1i缓存用于存储CPU指令,提供快速的指令访问能力。L1d缓存用于存储CPU的数据,包括读取和写入的数据。L1缓存通常位于CPU核心内部,每个CPU核心都有自己的独立L1缓存。L1缓存的容量较小,但速度非常快,能够在几个时钟周期内响应CPU的访问请求。L2缓存(二级缓存):L2缓存是位于L1缓存和主内存之间的中间缓存。它的容量较大,速度相对于L1缓存来说稍慢,但仍然比主内存快得多。L2缓存可以被多个CPU核心共享,以提高缓存的利用率。L2缓存不仅用于存储指令和数据,还可以存储其他的CPU内部数据结构和缓冲区。L3缓存(三级缓存):L3缓存是位于L2缓存和主内存之间的更大容量的缓存。它通常位于CPU芯片上,被多个CPU核心共享。L3缓存的速度相对于L2缓存来说更慢,但仍然比主内存要快。L3缓存的目的是提供更大的容量和更高的命中率,以减少多个CPU核心之间的竞争。三级缓存的存在主要是为了解决CPU访问主内存的速度瓶颈。L1缓存作为最近和最快的缓存,可以快速响应CPU的访问请求;L2缓存容量更大,可以提供更多的数据存储;L3缓存则进一步扩展了容量,并且在多核处理器中实现了共享,以提高整体的性能。这种层次化的缓存设计可以在不同级别的访问延迟和容量之间做出权衡,以提供更好的性能和响应能力。11.NOR Flash与NAND Flash的区别?NORNAND单位字节页(一般为512字节)运行代码可以直接在NOR flash运行代码不可以直接在NAND flash运行(因为按块访问)需搬移到内存,即重定位。或者也可以按块放到芯片内iRAM运行容量一般为1~16MB一般为8~128M结构并行存储结构,每个存储单元都可以独立访问,适用于读取速度较快的应用串行存储结构,多个存储单元串联在一起,适用于存储容量大、读取速度相对较慢的应用成本较高较低性能读速度比NAND Flash稍快写入、擦除速度比NOR Flash快很多接口带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息耐用性最大擦写次数是十万次最大擦写次数是一百万次软件支持写入和擦除都需要MTD(Memory Technology Devices,内存技术驱动程序),运行代码不需要任何软件支持写入和擦除都需要MTD,运行代码也要需要MTD适用适用于需要快速读取、执行代码和数据的应用,如固件、引导程序和系统软件等适用于需要高存储容量、相对较慢读取速度的应用,如移动存储、数字相机、MP3等。注意:nandflash 和 norflash 的0地址是不冲突的,norflash占用BANK地址,而nandflash不占用BANK地址,它的0地址是内部的。在NOR Flash中,每个存储单元都可以独立访问,因此0地址可以映射到第一个存储单元。而在NAND Flash中,多个存储单元串联在一起,形成一个页(Page),每个页都有一个页地址。因此,0地址通常映射到第一个页的第一个存储单元,而不是直接映射到第一个存储单元。因此,尽管NAND Flash和NOR Flash的0地址不会直接冲突,但在使用中还是需要根据具体的芯片型号和数据手册来确定各个地址的具体映射关系。12.RAM是什么?RAM(Random Access Memory)即随机存储器,速度很快,可随机读写,但断电则丢失数据,一般用作内存。RAM的种类有很多,常见的有SRAM、DRAM、SDRAM。13.SRAM、DRAM、SDRAM的区别?RAM可分为两类,一类是动态随机存储器(Dynamic RAM,DRAM,电容实现),另一类是静态随机存储器(Static RAM,SRAM,双稳态触发器实现,更快更贵)。由于 DRAM 具有结构简单、高集成度、低功耗、低制造成本等优点,被大量地应用在计算机内存中。DRAM 又可根据工作原理中是否与系统时钟同步,分为同步动态随机存取存储器 SDRAM 和异步动态随机存取存储器 EDO DRAM。DDR SDRAM(简称“DDR”)的速度是 SDRAM 的 2 倍,也就是双倍速率 SDRAM。SDRAM 大体上经历了 5 个主流发展阶段:SDRAM、DDR、DDR2、DDR3、DDR4、DDR5。DDR5来了,这些新内存技术你掌握了吗? - 腾讯云开发者社区-腾讯云 (tencent.com)SRAM、DRAM、SDRAM的区别如下:(1)SRAM:静态的随机存储器,加电情况下,不需要刷新,数据不会丢失,CPU的缓存就是SRAM。(2)DRAM:动态随机存储器,加电情况下,也需要不断刷新,才能保存数据,最为常见的系统内存。(3)SDRAM:同步动态随机存储器,即数据的读取需要时钟来同步,也可用作内存。SRAMSRAMDRAM存储原理触发器电容是否刷新不需要需要运行速度快慢存储成本高低发热量大小送行列地址同时送分两次送破坏性读出否是集成度低高14.ROM是什么?(1)ROM是只读存储器,速度较慢,不能直接与CPU进行交互,断电后数据不丢失,一般用来保存断电不丢失的程序。(2)常见的ROM有PROM、EPROM、EEPROM。15.描述一下嵌入式基于ROM的运行方式和基于RAM的运行方式有什么区别?基于ROM的运行方式指的是程序被存储在ROM中,系统在启动时从ROM中加载程序并执行。由于ROM是只读存储器,程序不能被修改,因此在基于ROM的运行方式中,程序一旦被烧录到ROM中,就不能被修改。这种方式适合于需要长期运行、不需要频繁更新的应用程序,例如控制系统。基于RAM的运行方式指的是程序被存储在RAM中,系统在启动时从外部设备(如闪存)中加载程序并存储在RAM中,然后执行程序。由于RAM是可读写存储器,程序可以被修改。这种方式适合于需要频繁更新的应用程序,例如操作系统。16.磁盘跟硬盘的关系?磁盘(Magnetic Disk)和硬盘(Hard Disk)是两个不同的概念,但在计算机存储中常常会被混淆使用。磁盘是指一种通过在磁性材料表面记录和读取数据的存储设备,通常是指磁性硬盘驱动器或磁性软盘驱动器。磁性硬盘驱动器通常包括一个或多个旋转的磁性盘片和一个或多个磁头,用于读取和写入数据。而硬盘是指一种数据存储设备,通常是指磁性硬盘驱动器,包括一个或多个磁性盘片和磁头,用于读取和写入数据。硬盘是计算机系统中最常见的存储设备之一,通常用于存储操作系统、应用程序和用户数据等内容。因此,磁盘是一种数据存储介质,而硬盘则是一种包含磁盘等存储介质、读写磁头和其他机械和电子组件的数据存储设备。可以说,硬盘是一种磁盘驱动器,其中包含了磁盘等其他组件。指令系统17.RISC(精简指令集计算机)和CISC(复杂指令集计算机)的区别RISC(Reduced Instruction Set Computer,精简指令集计算机)和CISC(Complex Instruction Set Computer,复杂指令集计算机)是两种指令集架构,它们有以下几个方面的不同之处:指令集复杂度:CISC指令集的指令通常包含多个操作,而RISC指令集的指令通常只包含一个简单的操作,因此RISC指令集比CISC指令集更加简单。指令执行时间:由于RISC指令集只包含一个简单的操作,因此执行单个指令所需的时间更短,因此在相同的时钟频率下,RISC处理器通常比CISC处理器更快。硬件复杂度:由于CISC指令集包含多个操作,因此需要更多的硬件来支持这些操作,因此CISC处理器通常比RISC处理器更复杂。编译器复杂度:由于RISC指令集更加简单,因此编译器的设计和实现更容易,因此编译器的复杂度更低。内存访问方式:RISC处理器倾向于将数据存储在寄存器中进行操作,而CISC处理器倾向于将数据存储在内存中进行操作。总体而言,RISC处理器的设计更加简单,具有更快的执行速度和更低的成本,适用于需要高效处理大量数据的应用,例如图形处理和嵌入式系统。而CISC处理器则更加复杂,可以支持更多的操作,适用于需要处理复杂算法的应用,例如数据库和计算机辅助设计。中央处理器18.CPU,MPU,MCU,SOC,SOPC联系与差别?CPU、MPU、MCU、SOC、SOPC都是与计算机硬件相关的概念,但是它们的含义和应用场景不同。CPU(Central Processing Unit)中央处理器,是计算机系统中的核心部件,负责执行指令和处理数据。CPU通常是一块集成电路芯片,可以与其他硬件组件(例如存储器、输入输出设备)进行通信。MPU(Microprocessor Unit)微处理器,也是一种中央处理器,但是它通常是指集成在单片机或者其他系统中的处理器。MPU通常集成了许多其他硬件功能,例如存储器、时钟、计时器、通信接口等等,以便更好地满足嵌入式系统的需求。与MCU不同的是,MPU通常需要外部存储器和其他外设的支持,而MCU则通常将处理器、存储器和外设集成在一个芯片中,更适用于小型嵌入式系统。MCU(Microcontroller Unit)微控制器,是一种带有微处理器核心、存储器、输入输出接口和其他外设的单芯片计算机系统。与MPU不同,MCU通常被用于嵌入式系统,例如家用电器、汽车控制系统、工业自动化等等。SOC(System-on-a-Chip)芯片级系统,是一种集成了处理器核心、存储器、输入输出接口、通信接口、时钟等等功能的单个芯片。SOC通常被用于嵌入式系统、移动设备、网络设备等等。SOPC(System-on-a-Programmable-Chip)可编程芯片级系统,是一种将SOC的集成度提升到更高的水平,通过可编程逻辑芯片(例如FPGA)实现各种功能的集成。SOPC通常被用于需要定制化和高度集成的系统设计。在这些概念中,CPU是最基本的部件,而MPU和MCU则是对CPU的集成和定制化。SOC和SOPC则更加高度集成,提供更高效、灵活和可定制的解决方案。但是需要注意的是,这些概念之间并没有固定的分界线,不同的厂商和应用场景下,它们的含义和使用方式也可能会有所不同。19.什么是PLL(锁相环)?简单来说,输入时钟的存在是作为“参考源”。锁相环不是为了单纯产生同频同相信号,而是一般集成进某种“频率综合电路”,产生一个不同频,但锁相的信号。打个比方:某参考晶振10Mhz,频率综合器A使用该参考源产生了900Mhz时钟,而频率综合器B产生了1Ghz时钟。虽然两路频率不同,但由于使用的通一个参考源,他们俩仍然是同源信号。相反,如果不同源,那么即便同频他们也不可能一致,因为世界上没有两个钟能做到完全一样,总有微弱的频差,导致相位飘移。在PLL中,输入信号经过一个比例放大器和一个相移器,与参考信号进行比较,输出一个误差信号。该误差信号经过一个低通滤波器,再经过一个控制电压控制振荡器的频率和相位,使其与参考信号的频率和相位保持一致。这样,输出信号的频率和相位就会与参考信号相同。PLL常用于电子系统中的时钟同步和频率合成,例如数字信号处理、通信系统、音频设备等等。它可以将输入信号的频率和相位转换成与参考信号相同的频率和相位,从而实现时钟同步和频率合成。此外,PLL还可以进行频率和相位检测,相位调制等应用。20.缓冲技术的作用是?缓冲技术是一种通过引入缓冲区来减少数据传输或处理中间发生的错误或延迟的技术。其作用包括以下几个方面:提高数据传输效率:缓冲技术可以将需要传输的数据存储在缓冲区中,然后批量传输到目标设备,从而减少数据传输的次数,提高传输效率。减少对CPU中断的频率,放宽对中断响应时间的限制。提高CPU和I/O设备之间的并行性,提高系统的吞吐量和设备的利用率。减少数据传输错误:缓冲技术可以在数据传输过程中检测错误并进行纠正,从而减少数据传输过程中发生的错误。改善CPU与I/O设备间速度不匹配的矛盾减少数据处理延迟:缓冲技术可以将需要处理的数据存储在缓冲区中,然后在空闲时间进行处理,从而减少数据处理延迟。控制数据流量:缓冲技术可以通过调整缓冲区的大小和数据传输速率来控制数据流量,从而避免数据传输过程中发生的拥塞和阻塞。保护数据安全:缓冲技术可以对需要传输的数据进行加密和解密,并在传输过程中保护数据的安全性。21.缓冲技术的种类?缓冲技术可以按照不同的标准进行分类,以下是几种常见的分类方式和对应的缓冲技术种类:根据缓冲区的位置分类:(1) 输入缓冲区:将输入数据暂存储于缓冲区中,等待处理器处理。常见的输入缓冲区包括键盘缓冲区和网络数据包缓冲区。(2) 输出缓冲区:将处理器处理后的数据暂存储于缓冲区中,等待输出到目标设备。常见的输出缓冲区包括打印机缓冲区和磁盘缓冲区。根据缓冲区的大小分类:(1) 固定缓冲区:缓冲区大小固定,不能动态调整。常见的固定缓冲区包括数组缓冲区和环形缓冲区。(2) 可变缓冲区:缓冲区大小可以根据需要进行动态调整。常见的可变缓冲区包括链表缓冲区和哈希表缓冲区。根据缓冲区的工作方式分类:(1) 全局缓冲区:将整个数据流存储于缓冲区中,进行批量处理。常见的全局缓冲区包括图形处理器的帧缓冲区和音频处理器的音频缓冲区。(2) 局部缓冲区:只存储部分数据于缓冲区中,进行即时处理。常见的局部缓冲区包括网络传输中的流控缓冲区和视频编码中的帧缓冲区。以上是几种常见的缓冲技术分类方式和对应的缓冲技术种类,实际应用中缓冲技术还有其他分类方式和种类。单缓冲、双缓冲、多缓冲和缓冲池是常见的缓冲技术,它们的主要区别在于缓冲区的个数和使用方式。单缓冲:使用一个缓冲区进行数据传输或处理,通常只能实现一些简单的任务,如读取和写入文件等。双缓冲:使用两个缓冲区进行数据传输或处理,其中一个缓冲区用于输入数据,另一个缓冲区用于输出数据。当一个缓冲区正在使用时,另一个缓冲区可以同时进行输入和输出操作,从而提高数据传输的效率和稳定性。多缓冲:使用多个缓冲区进行数据传输或处理,通常适用于高速数据传输和实时数据处理等复杂任务。缓冲池:使用多个缓冲区组成的缓冲池进行数据传输或处理,缓冲区的个数可以根据任务需要动态调整。通常用于实现高效的内存管理和资源共享。22.什么是ARM流水线技术?流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一。通过增加流水线级数简化了流水线各级的逻辑,进一步提高了处理器的性能。ARM流水线技术是一种高效的指令执行方式,它将指令的执行过程划分成多个阶段,并同时处理多条指令。当一条指令在一个阶段执行时,下一条指令可以在前一条指令的后续阶段同时执行,从而提高了指令的执行速度。ARM处理器的流水线一般分为三个阶段:取指阶段、解码和执行阶段以及访存和写回阶段。在取指阶段,处理器从内存中读取指令;在解码和执行阶段,处理器解析指令并执行操作;在访存和写回阶段,处理器将结果写回内存中。由于每个阶段都可以同时执行不同的指令,所以处理器可以快速处理多条指令,从而提高了执行效率。输入输出系统23.异步IO和同步IO区别?同步I/O(Input/Output)是指,在进行读/写操作时,程序必须等待操作完成,才能进行下一步操作。这意味着程序会阻塞(block)在读/写操作上,直到操作完成为止。同步I/O 是传统的 I/O 模型,它在一个线程内完成所有的 I/O 操作,因此它的并发性和可扩展性较差。异步I/O 则不同,它的读/写操作是非阻塞的(non-blocking),也就是说,程序在进行读/写操作时,不必等待操作完成,而是继续执行下一步操作。当操作完成后,操作系统会通知程序,让它来获取数据或者继续下一步操作。异步I/O 不会阻塞程序,因此它具有良好的并发性和可扩展性。同步I/O适合于处理小量的数据,或者是数据传输时间较短的情况。而异步I/O适合于大量的数据处理,或者是网络传输等需要长时间等待的操作。计组总结
点赞 8
评论 1
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务