嵌入式系统基础知识
目录
一、冯·诺依曼结构与哈佛结构
(一)冯·诺依曼结构
(二)哈佛架构
二、ARM存储模式
(一)大端模式
(二)小端模式
(三)混合模式
三、CISC 与 RISC
(一)指令集特点
(二)硬件结构
(三)性能表现
(四)应用场景
四、流水线技术
(一)基本原理
(二)优点
(三)缺点
(四)应用领域
一、冯·诺依曼结构与哈佛结构
冯·诺依曼结构和哈佛结构是计算机体系结构中的两种重要类型,以下从其基本定义、特点、应用场景等方面进行介绍:
(一)冯·诺依曼结构
1、定义
也称为普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令和数据都存储在同一存储器中,并且通过同一组总线进行访问。
2、特点
(1)指令和数据共享存储器
程序和数据存放在相同的存储空间,可按地址访问,数据和指令在形式上无差别,指令可像数据一样被修改。
(2)分时复用总线
同一时刻只能进行取指令或数据读写操作,通过分时复用方式共享数据总线和地址总线,限制了数据传输带宽。
(3)易于实现
结构简单,设计和实现成本较低,通用性强,适用于多种类型的计算任务。
3、应用场景
广泛应用于早期的计算机系统以及一些通用型计算机中,如个人计算机、服务器等。
例如,x86 架构的计算机大多采用冯诺依曼结构,能很好地满足一般用户的多样化计算需求,包括办公、娱乐、编程等各种任务。
(二)哈佛架构
1、定义
是一种将程序指令存储和数据存储分开的存储器结构,有独立的程序存储器和数据存储器,分别有各自的地址总线和数据总线。
2、特点
(1)指令和数据分开存储
程序存储器和数据存储器相互独立,可同时进行指令读取和数据读写操作,提高了数据处理效率。
(2)独立的总线
具有独立的程序总线和数据总线,使指令和数据能并行传输,增加了数据传输带宽,适合高速数据处理。
(3)提高指令执行效率
由于取指令和取数据可同时进行,能更高效地执行指令,尤其适用于实时性要求高的任务
3、应用场景
常用于一些对实时性和处理速度要求较高的系统中,如数字信号处理器(DSP)、微控制器(MCU)以及一些专用的嵌入式系统。
例如,在音频、视频处理设备以及工业控制领域的嵌入式系统中,哈佛结构能快速处理大量数据,满足实时处理的要求。
二、ARM存储模式
ARM 处理器具有多种存储模式,以适应不同的应用场景和数据处理需求,主要包括大端模式、小端模式和混合模式,以下是具体介绍:
(一)大端模式
1、数据存储方式
数据的高位字节存于低地址,低位字节存于高地址。
例如,对于 32 位整数0x12345678,在大端模式下,0x12存于内存低地址,接着依次是0x34、0x56、0x78存于更高地址,就像按从左到右(高位在前)的顺序存储。
2、特点
符合人类正常思维习惯,先看到数据高位部分。
在处理文本、网络协议等以字节为单位且有明确高低位顺序的数据时,大端模式更方便,因为可以按顺序读取和处理字节,无需额外转换。
3、应用场景
常用于一些对数据存储格式有严格规范的场景,如网络协议栈、文件系统等。在网络传输中,数据通常以大端模式进行打包和传输,以确保不同设备和平台之间的数据一致性。
(二)小端模式
1、数据存储方式
与大端模式相反,数据的低位字节存于低地址,高位字节存于高地址。
对于0x12345678,在小端模式下,0x78存于内存低地址,接着是0x56、0x34、0x12存于更高地址,如同从右到左(低位在前)存储。
2、特点
计算机硬件按字节读取内存时,从小地址开始先读取到数据低位部分,无需额外转换操作,能提高数据处理效率,尤其在处理整数等基本数据类型时,CPU 可直接按字节读取和组合数据,无需调整字节顺序。
3、应用场景
在大多数微处理器和微控制器中,小端模式是默认存储模式,因为它更符合硬件的自然处理方式,能减少数据处理中的额外开销,提高系统性能。
许多嵌入式系统和实时操作系统也常采用小端模式,以充分利用硬件性能,快速处理数据。
(三)混合模式
1、数据存储方式
允许在同一系统或程序中同时使用大端模式和小端模式,根据具体数据类型、数据结构或应用需求灵活选择存储方式。
2、特点
具有较高灵活性,可根据不同数据特性选择最合适存储模式,以优化存储和访问效率。
但管理和维护数据存储格式的复杂性增加,需要开发者明确区分不同数据的存储模式,避免数据混淆和错误。
3、应用场景
在一些复杂的应用场景中,如同时处理多种不同格式数据 (如既有网络数据又有本地存储的整数数据) 的系统,或者需要与不同端模式设备进行交互的应用中,混合模式可提供更灵活的解决方案,使系统适应多种数据存储和传输要求。
三、CISC 与 RISC
CISC(复杂指令集计算机)和 RISC(精简指令集计算机)是两种不同的计算机指令集架构,以下从指令集特点、硬件结构、性能等方面对它们进行介绍:
(一)指令集特点
1、CISC
(1)指令数量多
包含大量不同功能的指令,指令长度可变,格式多样。例如,既有简单的加法指令,也有复杂的字符串处理指令等。
(2)指令功能复杂
一条指令可以完成多种操作,如在一条指令中实现内存访问、算术运算和逻辑运算等。
(3)寻址方式丰富
支持多种寻址方式,如直接寻址、间接寻址、变址寻址等,这使得指令能够灵活地访问内存中的数据。
2、RISC
(1)指令数量少
只包含一些最基本、常用的指令,指令长度通常固定,格式相对简单。例如,主要包括加法、减法、加载、存储等简单指令。
(2)指令功能简单
每条指令通常只完成一个基本操作,如一条指令只进行一次加法运算或一次内存加载操作。
(3)寻址方式简单
一般采用较少的寻址方式,通常以寄存器寻址为主,减少了指令执行时的复杂性。
(二)硬件结构
1、CISC
(1)硬件复杂
由于指令功能复杂,需要更多的硬件电路来实现指令的译码和执行,因此 CPU 内部结构复杂,包含多种专用的硬件单元,如乘法器、除法器等。
(2)指令执行单元多样
为了支持不同类型的指令,有多个不同功能的指令执行单元,这些单元的设计和控制较为复杂。
2、RISC
(1)硬件简单
指令简单使得硬件设计相对容易,CPU 内部结构较为规整,通常采用流水线技术,提高指令执行效率。
(2)强调寄存器使用
具有较多的通用寄存器,数据处理主要在寄存器之间进行,减少了对内存的访问,提高了数据处理速度。
(三)性能表现
1、CISC
(1)程序代码紧凑
对于一些复杂的任务,由于一条指令可以完成较多工作,因此编写的程序代码相对较短,占用的内存空间较小。
(2)执行效率不均衡
对于简单指令,执行速度可能较慢,因为硬件需要花费时间来译码和执行复杂的指令。而对于复杂任务,可能只需要较少的指令就能完成,执行效率较高。
2、RISC
(1)指令执行速度快
由于指令简单且长度固定,指令的译码和执行过程相对简单,能够在一个时钟周期内完成一条指令的执行,因此指令执行速度快。
(2)程序代码较长
因为每条指令功能单一,完成相同的任务可能需要更多的指令,所以程序代码相对较长,占用的内存空间较大。
(四)应用场景
1、CISC
(1)通用计算机
适用于需要处理多种不同类型任务的通用计算机系统,如个人计算机、服务器等。
这些系统需要运行各种不同的软件,包括操作系统、办公软件、数据库管理系统等,CISC 的复杂指令集能满足这些软件对各种功能的需求。
(2)早期计算机系统
在计算机发展的早期,由于硬件成本较高,人们希望通过复杂的指令集来减少程序代码的长度,提高计算机的性能。因此,早期的计算机大多采用 CISC 架构。
2、RISC
(1)嵌入式系统
在嵌入式系统中,如手机、平板电脑、智能家电等,对芯片的功耗、成本和实时性要求较高。RISC 架构的简单硬件结构使得芯片能够在较低的功耗下运行,并且能够快速响应外部事件,满足嵌入式系统的要求。
(2)高性能计算
在一些高性能计算领域,如超级计算机、图形处理单元(GPU)等,也采用 RISC 架构。通过大量的简单指令并行执行,可以实现很高的计算性能。
四、流水线技术
流水线技术是一种将指令执行过程分解为多个阶段,并让多个指令在不同阶段同时执行的技术,以提高计算机系统的指令执行效率和性能。以下从原理、特点和应用等方面进行介绍:
(一)基本原理
把指令执行过程划分为若干个相对独立的阶段,如取指令→指令译码→取操作数→执行指令→写回结果等。每个阶段由专门的硬件单元来完成,就像工厂生产线上的不同工序。
当一条指令进入流水线后,会依次经过各个阶段,在每个时钟周期,各阶段同时处理不同指令的不同部分。
例如,在第一个时钟周期,第一条指令进行取指令操作;第二个时钟周期,第一条指令进入指令译码阶段,同时第二条指令开始取指令操作,以此类推,实现多条指令的重叠执行。
(二)优点
1、提高指令执行效率
多条指令在流水线中同时处于不同的执行阶段,大大提高了单位时间内执行指令的数量,从而提高了整个系统的处理能力。
例如,若没有流水线技术,执行一条指令需要 5 个时钟周期,那么执行 5 条指令就需要 25 个时钟周期;而采用流水线技术,在理想情况下,5 条指令只需 9 个时钟周期(假设流水线有 5 个阶段)。
2、简化硬件设计
流水线技术将复杂的指令执行过程分解为多个简单的阶段,每个阶段的硬件设计相对简单,易于实现和优化。
同时,由于各阶段可以并行工作,也便于采用大规模集成电路技术实现,提高了硬件的可靠性和稳定性。
3、提高系统的吞吐率
系统能够持续不断地处理指令,就像流水一样源源不断,从而提高了系统的整体性能和响应速度,能够更好地满足实时性要求较高的应用场景。
(三)缺点
1、数据相关问题
如果相邻指令之间存在数据依赖关系,例如后一条指令需要使用前一条指令的执行结果,那么可能会导致流水线阻塞。因为后一条指令在相关数据未准备好之前,不能进入相应的执行阶段,从而影响流水线的效率。
2、指令相关问题
当程序中存在条件转移指令时,由于在指令执行到转移指令时才能确定是否转移以及转移的目标地址,这就可能导致流水线中的后续指令被错误地预取和执行。
一旦条件转移的结果与之前的预测不符,就需要清空流水线,重新取指令,从而造成流水线的停顿和性能损失。
3、硬件资源冲突
如果多个指令同时需要使用同一硬件资源,如多个指令同时需要访问内存或使用乘法器等,就会发生资源冲突,导致某些指令需要等待资源可用,进而影响流水线的连续性。
(四)应用领域
1、CPU 设计
几乎所有现代的微处理器都采用了流水线技术,如英特尔、AMD 的 x86 架构处理器,以及 ARM 架构处理器等。
通过不断优化流水线的深度和结构,提高了 CPU 的性能和运行频率,使其能够同时处理多个任务和复杂的计算。
2、数字信号处理(DSP)
在音频、视频处理,以及通信系统中的数字信号处理等领域,流水线技术被广泛应用于提高信号处理的速度和实时性。
例如,在音频编码和解码过程中,通过流水线技术可以快速地对音频数据进行采样、量化、编码等操作。
3、图形处理单元(GPU)
GPU 在处理图形渲染、图像识别等任务时,也采用流水线技术来提高处理效率。
例如,在图形渲染过程中,通过流水线技术可以依次完成顶点处理、光栅化、纹理映射、颜色计算等多个阶段的操作,从而快速生成高质量的图像。