嵌入式系统是市场上大多数电子产品的心脏和核心。这是工程学的实现,其中硬件与软件相遇。我们周围是嵌入式系统世界,里面有生物识别门锁,飞机,汽车,起搏器等中的微型计算机。这些资源受限,小巧,智能且功能强大的系统可以帮助我们完成日常工作。
曾经思考过我们的身体如何运转,神经系统,大脑和多任务能力。如果将所有这些功能结合在一起,您将大致了解生物嵌入式系统。我们的大脑隐藏了发生在其内部的功能的复杂细节,但允许我们将其控制为最大潜力。嵌入式系统中使用的处理器或控制器具有相同的复杂性。它们隐藏了复杂的细节,并为我们提供了一个可操作的高级界面。对于抽象级别,可以关联以高级编程语言将两个数字相加的代码如何导致芯片中的寄存器处理位并将输出返回给用户。
处理器架构
涉及微处理器和微控制器的中央处理单元在控制单元(CU)和算术逻辑单元(ALU)的帮助下执行特定任务。当指令从RAM发出时,CPU在其两个帮助单元的帮助下进行操作,方法是创建变量并为其分配值和存储器。了解CPU如何借助其架构执行所有这些操作非常重要。如果您想了解有关微控制器工作原理的更多信息,请阅读此基础的微控制器文章。
每个CPU都有一个与之关联的内存来存储程序和数据。程序和数据与CPU一起工作以获取输出。程序提供指令,而数据提供要处理的信息。要访问程序和数据CPU使用总线,这些总线是电线,更确切地说,这些是您在印刷电路板上可能看到的电线走线。近年来,微控制器和微处理器通过适应各种架构而发展,基于应用或设计要求,微控制器的选择受其所用架构的类型影响。让我们看一下流行的体系结构。
冯·诺依曼/普林斯顿建筑
CPU访问程序和数据的方式讲述了CPU的体系结构。早先使用一条总线来访问程序和数据。这种类型的体系结构被称为冯·诺依曼体系结构或更简单的普林斯顿体系结构。一条用于获取代码和数据的总线意味着它们互相干扰,并减慢了CPU的处理速度,因为彼此必须等待对方完成获取。此限制也称为Von-Neumann瓶颈条件。
哈佛建筑
为了加快这一过程,提出了哈佛建筑。在这种架构中,存在用于数据和程序的单独的数据总线。因此,这意味着该架构建议使用四个总线
- 一组数据总线,用于将数据传入和传出CPU。
- 一组用于访问数据的地址总线。
- 一组数据总线,用于将代码传送到CPU。
- 用于访问代码的地址总线。
使用单独的地址总线和数据总线意味着CPU的执行时间短,但这是以设计体系结构的复杂性为代价的。冯·诺伊曼(Von Neumann)的架构听起来有些懒惰,但它具有设计简单的优点。
当CPU和内存单元共享相同的空间或RAM和ROM与处理单元一起内置(在芯片上)时,例如在距离为微米和毫米的微控制器中,哈佛架构非常容易实现。但是,在存储代码的存储器位于处理单元外部的情况下(例如x86 IBM PC中的处理单元),很难实现相同的体系结构。主板上用于数据和地址的一组单独的导线走线会使该板复杂且昂贵。让我们以一个处理器示例来理解它。
具有64位数据总线和32位地址总线的处理器将需要约100条总线(数据和地址总线为96条,控制信号为少数总线)来实现Von-Neumann架构。如果采用哈佛架构实现相同的结构,则双线走线的成本约为200,而且有大量引脚从处理器中出来。出于同样的原因,我们没有看到用于PC和工作站的纯哈佛架构。取而代之的是,使用一种改进的哈佛体系结构,在该体系结构中,具有CPU高速缓存的内存层次结构用于分隔程序和数据。内存层次结构根据进程响应时间的层次结构分离存储。
指令集架构
当程序(代码)被加载到系统(RAM)的内存中时,它由CPU(指微处理器和微控制器)提取以对数据起作用,它与训练狗的指令非常相似。某些动作和命令。当这些指令作用于某些晶体管时,它们就会从一个逻辑级转到另一个逻辑级。因此,基本上,在指令的帮助下,程序员可以与处理器进行通信。每个CPU都有自己的指令集,这是基于其体系结构和功能的指令集。
CPU可以通过0和1的组合来理解这些指令,这些指令也称为操作码。对于人类程序员来说,要记住与CPU相关的每条指令的0和1的组合确实很困难。为了使人类程序员的工作变得容易,我们为这些指令提供了高级接口,并且编译器将其转换为0和1的形式以进行处理。同样,在每个CPU的指令集中,它只能理解的指令数量有限。
CPU性能
您可能听说过与CPU性能相关的术语CPU时钟速率。 CPU的时钟频率通常为25 GHz时钟频率,单位为MHz(兆赫兹)或GHz(Giga-Hertz)。与时钟速率相关的数字表明CPU内部时钟以每秒周期数跳动的次数。可以通过以下事实来理解时钟速率的实用性:基于CPU的时钟周期执行指令,该周期与CPU一次可以运行的程序数量成正比。
CPU的性能取决于程序中编写的指令数量,更多的指令,更多的时间由CPU执行。它还取决于执行每个指令的时钟周期数,某些指令需要比其他指令执行更多的时钟周期,因此它们落后于CPU的性能。程序中的指令和执行每个指令所需的周期彼此成反比。改变一个会影响另一个。这就是CPU行业分化的关键所在。
RISC和CISC指令集架构
如上所述,程序的执行和CPU的性能取决于程序中指令的数量,其中将指令作为指令集的一部分建议给该特定CPU,第二个因素是其中的时钟周期数。执行每条指令。基于这两个因素,当前有两个指令集可用。其中最早的是复杂指令集计算(CISC),而另一个是精简指令集计算(RISC)。让我们详细讨论每种架构,以了解RIC和CISC架构之间的区别。
复杂指令集计算(CISC)
CISC代表复杂指令集计算。 CISC的主要目的是减少程序执行的指令数量,这是通过组合许多简单的指令(例如地址模式,加载等)并形成一个复杂的指令来实现的。在CISC指令包括一系列简单指令,以及为需要超过一个时钟周期执行一些特殊指令。 CISC指令可以直接在内存上工作,而无需寄存器的干预,这意味着它不需要一些基本的指令,例如值的加载和内存(RAM)的需求。 CISC指令更注重硬件而不是软件,这意味着,与其将负担放在编译器上,CISC使用晶体管作为硬件来解码和实现指令。但是,由于指令很复杂并且由多个步骤组成,因此它们需要更多的时钟周期执行。
一个简单的类比是当您被告知要打开这本书并阅读第三章的第二页时。在这一系列的活动,你不喜欢从你的包比洗牌页第3章,然后要到2找到的书多步第二章的页面,然后开始阅读。如果将步骤的一系列步骤组合到阅读第44页的单个指令(这是第三章的第二页编号)中,我们将获得CISC指令。
精简指令集计算(RISC)
第一个集成芯片是由杰克·基尔比(Jack Kilby)在1958年设计的,它是一个振荡器,在1970年,第一个商用微处理器由英特尔公司推出。尽管在处理器启动时没有CISC。但是随着繁重的计算需求,CISC架构变得越来越复杂且难以处理。John Coke由IBM提出了重新设计的CISC体系结构,称为RISC 。因此,为了区分两种体系结构,引入了术语RISC和CISC。
RISC代表简化的指令集计算。 RISC的主要动机是在指令大小和执行方面引入统一性。这是通过引入可以在每个周期作为一条指令执行的简单指令集来完成的,这是通过将复杂的指令(如加载和存储到不同的指令中)分解来完成的,其中每条指令大约需要一个时钟周期来执行。的RISC体系结构包括能在单个时钟周期中执行相同的尺寸的简单的指令。基于RISC的计算机需要比CISC更多的RAM来保存值,因为它将每个指令加载到寄存器中。每个周期执行单个指令为基于RISC的机器提供流水线优势(流水处理是在执行第一条指令之前先加载下一条指令的过程,这样可以提高执行效率)。RISC体系结构强调